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))
754static NODE *nd_set_loc(NODE *nd, const YYLTYPE *loc);
757parser_get_node_id(struct parser_params *p)
759 int node_id = p->node_id;
766set_line_body(NODE *body, int line)
769 switch (nd_type(body)) {
772 nd_set_line(body, line);
776#define yyparse ruby_yyparse
778static NODE* cond(struct parser_params *p, NODE *node, const YYLTYPE *loc);
779static NODE* method_cond(struct parser_params *p, NODE *node, const YYLTYPE *loc);
780#define new_nil(loc) NEW_NIL(loc)
781static NODE *new_nil_at(struct parser_params *p, const rb_code_position_t *pos);
782static NODE *new_if(struct parser_params*,NODE*,NODE*,NODE*,const YYLTYPE*);
783static NODE *new_unless(struct parser_params*,NODE*,NODE*,NODE*,const YYLTYPE*);
784static NODE *logop(struct parser_params*,ID,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
786static NODE *newline_node(NODE*);
787static void fixpos(NODE*,NODE*);
789static int value_expr_gen(struct parser_params*,NODE*);
790static void void_expr(struct parser_params*,NODE*);
791static NODE *remove_begin(NODE*);
792static NODE *remove_begin_all(NODE*);
793#define value_expr(node) value_expr_gen(p, (node))
794static NODE *void_stmts(struct parser_params*,NODE*);
795static void reduce_nodes(struct parser_params*,NODE**);
796static void block_dup_check(struct parser_params*,NODE*,NODE*);
798static NODE *block_append(struct parser_params*,NODE*,NODE*);
799static NODE *list_append(struct parser_params*,NODE*,NODE*);
800static NODE *list_concat(NODE*,NODE*);
801static NODE *arg_append(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
802static NODE *last_arg_append(struct parser_params *p, NODE *args, NODE *last_arg, const YYLTYPE *loc);
803static NODE *rest_arg_append(struct parser_params *p, NODE *args, NODE *rest_arg, const YYLTYPE *loc);
804static NODE *literal_concat(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
805static NODE *new_evstr(struct parser_params*,NODE*,const YYLTYPE*);
806static NODE *new_dstr(struct parser_params*,NODE*,const YYLTYPE*);
807static NODE *evstr2dstr(struct parser_params*,NODE*);
808static NODE *splat_array(NODE*);
809static void mark_lvar_used(struct parser_params *p, NODE *rhs);
811static NODE *call_bin_op(struct parser_params*,NODE*,ID,NODE*,const YYLTYPE*,const YYLTYPE*);
812static NODE *call_uni_op(struct parser_params*,NODE*,ID,const YYLTYPE*,const YYLTYPE*);
813static NODE *new_qcall(struct parser_params* p, ID atype, NODE *recv, ID mid, NODE *args, const YYLTYPE *op_loc, const YYLTYPE *loc);
814static 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);
815static 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;}
817static bool args_info_empty_p(struct rb_args_info *args);
818static NODE *new_args(struct parser_params*,NODE*,NODE*,ID,NODE*,NODE*,const YYLTYPE*);
819static NODE *new_args_tail(struct parser_params*,NODE*,ID,ID,const YYLTYPE*);
820static NODE *new_array_pattern(struct parser_params *p, NODE *constant, NODE *pre_arg, NODE *aryptn, const YYLTYPE *loc);
821static NODE *new_array_pattern_tail(struct parser_params *p, NODE *pre_args, int has_rest, ID rest_arg, NODE *post_args, const YYLTYPE *loc);
822static NODE *new_find_pattern(struct parser_params *p, NODE *constant, NODE *fndptn, const YYLTYPE *loc);
823static NODE *new_find_pattern_tail(struct parser_params *p, ID pre_rest_arg, NODE *args, ID post_rest_arg, const YYLTYPE *loc);
824static NODE *new_hash_pattern(struct parser_params *p, NODE *constant, NODE *hshptn, const YYLTYPE *loc);
825static NODE *new_hash_pattern_tail(struct parser_params *p, NODE *kw_args, ID kw_rest_arg, const YYLTYPE *loc);
827static NODE *new_kw_arg(struct parser_params *p, NODE *k, const YYLTYPE *loc);
828static NODE *args_with_numbered(struct parser_params*,NODE*,int);
830static VALUE negate_lit(struct parser_params*, VALUE);
831static NODE *ret_args(struct parser_params*,NODE*);
832static NODE *arg_blk_pass(NODE*,NODE*);
833static NODE *new_yield(struct parser_params*,NODE*,const YYLTYPE*);
834static NODE *dsym_node(struct parser_params*,NODE*,const YYLTYPE*);
836static NODE *gettable(struct parser_params*,ID,const YYLTYPE*);
837static NODE *assignable(struct parser_params*,ID,NODE*,const YYLTYPE*);
839static NODE *aryset(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
840static NODE *attrset(struct parser_params*,NODE*,ID,ID,const YYLTYPE*);
842static void rb_backref_error(struct parser_params*,NODE*);
843static NODE *node_assign(struct parser_params*,NODE*,NODE*,struct lex_context,const YYLTYPE*);
845static NODE *new_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
846static NODE *new_ary_op_assign(struct parser_params *p, NODE *ary, NODE *args, ID op, NODE *rhs, const YYLTYPE *args_loc, const YYLTYPE *loc);
847static NODE *new_attr_op_assign(struct parser_params *p, NODE *lhs, ID atype, ID attr, ID op, NODE *rhs, const YYLTYPE *loc);
848static NODE *new_const_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
849static NODE *new_bodystmt(struct parser_params *p, NODE *head, NODE *rescue, NODE *rescue_else, NODE *ensure, const YYLTYPE *loc);
851static NODE *const_decl(struct parser_params *p, NODE* path, const YYLTYPE *loc);
853static NODE *opt_arg_append(NODE*, NODE*);
854static NODE *kwd_append(NODE*, NODE*);
856static NODE *new_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
857static NODE *new_unique_key_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
859static NODE *new_defined(struct parser_params *p, NODE *expr, const YYLTYPE *loc);
861static NODE *new_regexp(struct parser_params *, NODE *, int, const YYLTYPE *);
863#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
865static NODE *new_xstring(struct parser_params *, NODE *, const YYLTYPE *loc);
867static NODE *symbol_append(struct parser_params *p, NODE *symbols, NODE *symbol);
869static NODE *match_op(struct parser_params*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
871static rb_ast_id_table_t *local_tbl(struct parser_params*);
873static VALUE reg_compile(struct parser_params*, VALUE, int);
874static void reg_fragment_setenc(struct parser_params*, VALUE, int);
875static int reg_fragment_check(struct parser_params*, VALUE, int);
876static NODE *reg_named_capture_assign(struct parser_params* p, VALUE regexp, const YYLTYPE *loc);
878static int literal_concat0(struct parser_params *p, VALUE head, VALUE tail);
879static NODE *heredoc_dedent(struct parser_params*,NODE*);
881static void check_literal_when(struct parser_params *p, NODE *args, const YYLTYPE *loc);
883#define get_id(id) (id)
884#define get_value(val) (val)
885#define get_num(num) (num)
887#define NODE_RIPPER NODE_CDECL
888#define NEW_RIPPER(a,b,c,loc) (VALUE)NEW_CDECL(a,b,c,loc)
890static inline int ripper_is_node_yylval(VALUE n);
893ripper_new_yylval(struct parser_params *p, ID a, VALUE b, VALUE c)
895 if (ripper_is_node_yylval(c)) c = RNODE(c)->nd_cval;
896 add_mark_object(p, b);
897 add_mark_object(p, c);
898 return NEW_RIPPER(a, b, c, &NULL_LOC);
902ripper_is_node_yylval(VALUE n)
904 return RB_TYPE_P(n, T_NODE) && nd_type_p(RNODE(n), NODE_RIPPER);
907#define value_expr(node) ((void)(node))
908#define remove_begin(node) (node)
909#define void_stmts(p,x) (x)
910#define rb_dvar_defined(id, base) 0
911#define rb_local_defined(id, base) 0
912static ID ripper_get_id(VALUE);
913#define get_id(id) ripper_get_id(id)
914static VALUE ripper_get_value(VALUE);
915#define get_value(val) ripper_get_value(val)
916#define get_num(num) (int)get_id(num)
917static VALUE assignable(struct parser_params*,VALUE);
918static int id_is_var(struct parser_params *p, ID id);
920#define method_cond(p,node,loc) (node)
921#define call_bin_op(p, recv,id,arg1,op_loc,loc) dispatch3(binary, (recv), STATIC_ID2SYM(id), (arg1))
922#define match_op(p,node1,node2,op_loc,loc) call_bin_op(0, (node1), idEqTilde, (node2), op_loc, loc)
923#define call_uni_op(p, recv,id,op_loc,loc) dispatch2(unary, STATIC_ID2SYM(id), (recv))
924#define logop(p,id,node1,node2,op_loc,loc) call_bin_op(0, (node1), (id), (node2), op_loc, loc)
926#define new_nil(loc) Qnil
928static VALUE new_regexp(struct parser_params *, VALUE, VALUE, const YYLTYPE *);
930static VALUE const_decl(struct parser_params *p, VALUE path);
932static VALUE var_field(struct parser_params *p, VALUE a);
933static VALUE assign_error(struct parser_params *p, const char *mesg, VALUE a);
935static VALUE parser_reg_compile(struct parser_params*, VALUE, int, VALUE *);
937static VALUE backref_error(struct parser_params*, NODE *, VALUE);
940/* forward declaration */
941typedef struct rb_strterm_heredoc_struct rb_strterm_heredoc_t;
943RUBY_SYMBOL_EXPORT_BEGIN
944VALUE rb_parser_reg_compile(struct parser_params* p, VALUE str, int options);
945int rb_reg_fragment_setenc(struct parser_params*, VALUE, int);
946enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_state_e, enum lex_state_e, int);
947VALUE rb_parser_lex_state_name(enum lex_state_e state);
948void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int);
949PRINTF_ARGS(void rb_parser_fatal(struct parser_params *p, const char *fmt, ...), 2, 3);
950YYLTYPE *rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc);
951YYLTYPE *rb_parser_set_location_of_delayed_token(struct parser_params *p, YYLTYPE *yylloc);
952YYLTYPE *rb_parser_set_location_of_heredoc_end(struct parser_params *p, YYLTYPE *yylloc);
953YYLTYPE *rb_parser_set_location_of_dummy_end(struct parser_params *p, YYLTYPE *yylloc);
954YYLTYPE *rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc);
955YYLTYPE *rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc);
956RUBY_SYMBOL_EXPORT_END
958static void error_duplicate_pattern_variable(struct parser_params *p, ID id, const YYLTYPE *loc);
959static void error_duplicate_pattern_key(struct parser_params *p, ID id, const YYLTYPE *loc);
961static ID formal_argument(struct parser_params*, ID);
963static ID formal_argument(struct parser_params*, VALUE);
965static ID shadowing_lvar(struct parser_params*,ID);
966static void new_bv(struct parser_params*,ID);
968static void local_push(struct parser_params*,int);
969static void local_pop(struct parser_params*);
970static void local_var(struct parser_params*, ID);
971static void arg_var(struct parser_params*, ID);
972static int local_id(struct parser_params *p, ID id);
973static int local_id_ref(struct parser_params*, ID, ID **);
975static ID internal_id(struct parser_params*);
976static NODE *new_args_forward_call(struct parser_params*, NODE*, const YYLTYPE*, const YYLTYPE*);
978static int check_forwarding_args(struct parser_params*);
979static void add_forwarding_args(struct parser_params *p);
981static const struct vtable *dyna_push(struct parser_params *);
982static void dyna_pop(struct parser_params*, const struct vtable *);
983static int dyna_in_block(struct parser_params*);
984#define dyna_var(p, id) local_var(p, id)
985static int dvar_defined(struct parser_params*, ID);
986static int dvar_defined_ref(struct parser_params*, ID, ID**);
987static int dvar_curr(struct parser_params*,ID);
989static int lvar_defined(struct parser_params*, ID);
991static NODE *numparam_push(struct parser_params *p);
992static void numparam_pop(struct parser_params *p, NODE *prev_inner);
995# define METHOD_NOT idNOT
997# define METHOD_NOT '!
'
1000#define idFWD_REST '*
'
1001#define idFWD_KWREST idPow /* Use simple "**", as tDSTAR is "**arg" */
1002#define idFWD_BLOCK '&
'
1003#define idFWD_ALL idDot3
1004#define FORWARD_ARGS_WITH_RUBY2_KEYWORDS
1006#define RE_OPTION_ONCE (1<<16)
1007#define RE_OPTION_ENCODING_SHIFT 8
1008#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
1009#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
1010#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
1011#define RE_OPTION_MASK 0xff
1012#define RE_OPTION_ARG_ENCODING_NONE 32
1014/* structs for managing terminator of string literal and heredocment */
1015typedef struct rb_strterm_literal_struct {
1022 long func; /* STR_FUNC_* (e.g., STR_FUNC_ESCAPE and STR_FUNC_EXPAND) */
1026 long paren; /* '(
' of `%q(...)` */
1030 long term; /* ')
' of `%q(...)` */
1032} rb_strterm_literal_t;
1034#define HERETERM_LENGTH_BITS ((SIZEOF_VALUE - 1) * CHAR_BIT - 1)
1036struct rb_strterm_heredoc_struct {
1037 VALUE lastline; /* the string of line that contains `<<"END"` */
1038 long offset; /* the column of END in `<<"END"` */
1039 int sourceline; /* lineno of the line that contains `<<"END"` */
1040 unsigned length /* the length of END in `<<"END"` */
1041#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
1042 : HERETERM_LENGTH_BITS
1043# define HERETERM_LENGTH_MAX ((1U << HERETERM_LENGTH_BITS) - 1)
1045# define HERETERM_LENGTH_MAX UINT_MAX
1048#if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
1056STATIC_ASSERT(rb_strterm_heredoc_t, sizeof(rb_strterm_heredoc_t) <= 4 * SIZEOF_VALUE);
1058#define STRTERM_HEREDOC IMEMO_FL_USER0
1060struct rb_strterm_struct {
1063 rb_strterm_literal_t literal;
1064 rb_strterm_heredoc_t heredoc;
1070rb_strterm_mark(VALUE obj)
1072 rb_strterm_t *strterm = (rb_strterm_t*)obj;
1073 if (RBASIC(obj)->flags & STRTERM_HEREDOC) {
1074 rb_strterm_heredoc_t *heredoc = &strterm->u.heredoc;
1075 rb_gc_mark(heredoc->lastline);
1080#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
1081size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr);
1083#define TOKEN2ID(tok) ( \
1084 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
1085 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
1086 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
1087 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
1088 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
1089 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
1090 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
1092/****** Ripper *******/
1095#define RIPPER_VERSION "0.1.0"
1097static inline VALUE intern_sym(const char *name);
1099#include "eventids1.c"
1100#include "eventids2.c"
1102static VALUE ripper_dispatch0(struct parser_params*,ID);
1103static VALUE ripper_dispatch1(struct parser_params*,ID,VALUE);
1104static VALUE ripper_dispatch2(struct parser_params*,ID,VALUE,VALUE);
1105static VALUE ripper_dispatch3(struct parser_params*,ID,VALUE,VALUE,VALUE);
1106static VALUE ripper_dispatch4(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE);
1107static VALUE ripper_dispatch5(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE);
1108static VALUE ripper_dispatch7(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE);
1109static void ripper_error(struct parser_params *p);
1111#define dispatch0(n) ripper_dispatch0(p, TOKEN_PASTE(ripper_id_, n))
1112#define dispatch1(n,a) ripper_dispatch1(p, TOKEN_PASTE(ripper_id_, n), (a))
1113#define dispatch2(n,a,b) ripper_dispatch2(p, TOKEN_PASTE(ripper_id_, n), (a), (b))
1114#define dispatch3(n,a,b,c) ripper_dispatch3(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
1115#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
1116#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
1117#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))
1119#define yyparse ripper_yyparse
1121#define ID2VAL(id) STATIC_ID2SYM(id)
1122#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
1123#define KWD2EID(t, v) ripper_new_yylval(p, keyword_##t, get_value(v), 0)
1125#define params_new(pars, opts, rest, pars2, kws, kwrest, blk) \
1126 dispatch7(params, (pars), (opts), (rest), (pars2), (kws), (kwrest), (blk))
1128#define escape_Qundef(x) ((x)==Qundef ? Qnil : (x))
1131new_args(struct parser_params *p, VALUE pre_args, VALUE opt_args, VALUE rest_arg, VALUE post_args, VALUE tail, YYLTYPE *loc)
1133 NODE *t = (NODE *)tail;
1134 VALUE kw_args = t->u1.value, kw_rest_arg = t->u2.value, block = t->u3.value;
1135 return params_new(pre_args, opt_args, rest_arg, post_args, kw_args, kw_rest_arg, escape_Qundef(block));
1139new_args_tail(struct parser_params *p, VALUE kw_args, VALUE kw_rest_arg, VALUE block, YYLTYPE *loc)
1141 NODE *t = rb_node_newnode(NODE_ARGS_AUX, kw_args, kw_rest_arg, block, &NULL_LOC);
1142 add_mark_object(p, kw_args);
1143 add_mark_object(p, kw_rest_arg);
1144 add_mark_object(p, block);
1149args_with_numbered(struct parser_params *p, VALUE args, int max_numparam)
1155new_array_pattern(struct parser_params *p, VALUE constant, VALUE pre_arg, VALUE aryptn, const YYLTYPE *loc)
1157 NODE *t = (NODE *)aryptn;
1158 VALUE pre_args = t->u1.value, rest_arg = t->u2.value, post_args = t->u3.value;
1160 if (!NIL_P(pre_arg)) {
1161 if (!NIL_P(pre_args)) {
1162 rb_ary_unshift(pre_args, pre_arg);
1165 pre_args = rb_ary_new_from_args(1, pre_arg);
1168 return dispatch4(aryptn, constant, pre_args, rest_arg, post_args);
1172new_array_pattern_tail(struct parser_params *p, VALUE pre_args, VALUE has_rest, VALUE rest_arg, VALUE post_args, const YYLTYPE *loc)
1177 rest_arg = dispatch1(var_field, rest_arg ? rest_arg : Qnil);
1183 t = rb_node_newnode(NODE_ARYPTN, pre_args, rest_arg, post_args, &NULL_LOC);
1184 add_mark_object(p, pre_args);
1185 add_mark_object(p, rest_arg);
1186 add_mark_object(p, post_args);
1191new_find_pattern(struct parser_params *p, VALUE constant, VALUE fndptn, const YYLTYPE *loc)
1193 NODE *t = (NODE *)fndptn;
1194 VALUE pre_rest_arg = t->u1.value, args = t->u2.value, post_rest_arg = t->u3.value;
1196 return dispatch4(fndptn, constant, pre_rest_arg, args, post_rest_arg);
1200new_find_pattern_tail(struct parser_params *p, VALUE pre_rest_arg, VALUE args, VALUE post_rest_arg, const YYLTYPE *loc)
1204 pre_rest_arg = dispatch1(var_field, pre_rest_arg ? pre_rest_arg : Qnil);
1205 post_rest_arg = dispatch1(var_field, post_rest_arg ? post_rest_arg : Qnil);
1207 t = rb_node_newnode(NODE_FNDPTN, pre_rest_arg, args, post_rest_arg, &NULL_LOC);
1208 add_mark_object(p, pre_rest_arg);
1209 add_mark_object(p, args);
1210 add_mark_object(p, post_rest_arg);
1214#define new_hash(p,h,l) rb_ary_new_from_args(0)
1217new_unique_key_hash(struct parser_params *p, VALUE ary, const YYLTYPE *loc)
1223new_hash_pattern(struct parser_params *p, VALUE constant, VALUE hshptn, const YYLTYPE *loc)
1225 NODE *t = (NODE *)hshptn;
1226 VALUE kw_args = t->u1.value, kw_rest_arg = t->u2.value;
1227 return dispatch3(hshptn, constant, kw_args, kw_rest_arg);
1231new_hash_pattern_tail(struct parser_params *p, VALUE kw_args, VALUE kw_rest_arg, const YYLTYPE *loc)
1235 kw_rest_arg = dispatch1(var_field, kw_rest_arg);
1240 t = rb_node_newnode(NODE_HSHPTN, kw_args, kw_rest_arg, 0, &NULL_LOC);
1242 add_mark_object(p, kw_args);
1243 add_mark_object(p, kw_rest_arg);
1247#define new_defined(p,expr,loc) dispatch1(defined, (expr))
1249static VALUE heredoc_dedent(struct parser_params*,VALUE);
1252#define ID2VAL(id) (id)
1253#define TOKEN2VAL(t) ID2VAL(t)
1254#define KWD2EID(t, v) keyword_##t
1257set_defun_body(struct parser_params *p, NODE *n, NODE *args, NODE *body, const YYLTYPE *loc)
1259 body = remove_begin(body);
1260 reduce_nodes(p, &body);
1261 n->nd_defn = NEW_SCOPE(args, body, loc);
1263 nd_set_line(n->nd_defn, loc->end_pos.lineno);
1264 set_line_body(body, loc->beg_pos.lineno);
1269rescued_expr(struct parser_params *p, NODE *arg, NODE *rescue,
1270 const YYLTYPE *arg_loc, const YYLTYPE *mod_loc, const YYLTYPE *res_loc)
1272 YYLTYPE loc = code_loc_gen(mod_loc, res_loc);
1273 rescue = NEW_RESBODY(0, remove_begin(rescue), 0, &loc);
1274 loc.beg_pos = arg_loc->beg_pos;
1275 return NEW_RESCUE(arg, rescue, 0, &loc);
1281restore_defun(struct parser_params *p, NODE *name)
1283 YYSTYPE c = {.val = name->nd_cval};
1284 p->cur_arg = name->nd_vid;
1285 p->ctxt.in_def = c.ctxt.in_def;
1286 p->ctxt.shareable_constant_value = c.ctxt.shareable_constant_value;
1290endless_method_name(struct parser_params *p, NODE *defn, const YYLTYPE *loc)
1293 defn = defn->nd_defn;
1295 ID mid = defn->nd_mid;
1296 if (is_attrset_id(mid)) {
1297 yyerror1(loc, "setter method cannot be defined in an endless method definition");
1299 token_info_drop(p, "def", loc->beg_pos);
1302#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)
1307# define ifndef_ripper(x) (x)
1310# define Qnull Qundef
1311# define ifndef_ripper(x)
1314# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
1315# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
1316# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
1317# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
1318# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
1319# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
1320# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
1321# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
1322# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
1323# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
1324# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1325# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
1326# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
1327# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
1328# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1329# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
1330# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
1331# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
1332# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
1333# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1335static ID id_warn, id_warning, id_gets, id_assoc;
1336# define ERR_MESG() STR_NEW2(mesg) /* to bypass Ripper DSL */
1337# define WARN_S_L(s,l) STR_NEW(s,l)
1338# define WARN_S(s) STR_NEW2(s)
1339# define WARN_I(i) INT2NUM(i)
1340# define WARN_ID(i) rb_id2str(i)
1341# define WARN_IVAL(i) i
1342# define PRIsWARN "s"
1343# define rb_warn0L_experimental(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1344# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
1345# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
1346# ifdef HAVE_VA_ARGS_MACRO
1347# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
1349# define WARN_CALL rb_funcall
1351# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
1352# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
1353# ifdef HAVE_VA_ARGS_MACRO
1354# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
1356# define WARNING_CALL rb_funcall
1358PRINTF_ARGS(static void ripper_compile_error(struct parser_params*, const char *fmt, ...), 2, 3);
1359# define compile_error ripper_compile_error
1361# define WARN_S_L(s,l) s
1364# define WARN_ID(i) rb_id2name(i)
1365# define WARN_IVAL(i) NUM2INT(i)
1366# define PRIsWARN PRIsVALUE
1367# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1368# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1369# define WARN_CALL rb_compile_warn
1370# define rb_warn0L_experimental(l,fmt) rb_category_compile_warn(RB_WARN_CATEGORY_EXPERIMENTAL, WARN_ARGS_L(l, fmt, 1))
1371# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1372# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1373# define WARNING_CALL rb_compile_warning
1374PRINTF_ARGS(static void parser_compile_error(struct parser_params*, const char *fmt, ...), 2, 3);
1375# define compile_error parser_compile_error
1378#define WARN_EOL(tok) \
1379 (looking_at_eol_p(p) ? \
1380 (void)rb_warning0("`" tok "' at the end of line without an expression
") : \
1382static int looking_at_eol_p(struct parser_params *p);
1388# define YY_CAST(Type, Val) static_cast<Type> (Val)
1389# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
1391# define YY_CAST(Type, Val) ((Type) (Val))
1392# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
1396# if defined __cplusplus
1397# if 201103L <= __cplusplus
1398# define YY_NULLPTR nullptr
1400# define YY_NULLPTR 0
1403# define YY_NULLPTR ((void*)0)
1407/* Use api.header.include to #include this header
1408 instead of duplicating it here. */
1409#ifndef YY_YY_Y_TAB_H_INCLUDED
1410# define YY_YY_Y_TAB_H_INCLUDED
1427 END_OF_INPUT = 0, /* "end-of-input
" */
1428 YYerror = 256, /* error */
1429 YYUNDEF = 257, /* "invalid token
" */
1430 keyword_class = 258, /* "`
class'" */
1431 keyword_module = 259, /* "`module'" */
1432 keyword_def = 260, /* "`def
'" */
1433 keyword_undef = 261, /* "`undef'" */
1434 keyword_begin = 262, /* "`begin
'" */
1435 keyword_rescue = 263, /* "`rescue'" */
1436 keyword_ensure = 264, /* "`ensure
'" */
1437 keyword_end = 265, /* "`end'" */
1438 keyword_if = 266, /* "`
if'" */
1439 keyword_unless = 267, /* "`unless'" */
1440 keyword_then = 268, /* "`then
'" */
1441 keyword_elsif = 269, /* "`elsif'" */
1442 keyword_else = 270, /* "`
else'" */
1443 keyword_case = 271, /* "`case'" */
1444 keyword_when = 272, /* "`when
'" */
1445 keyword_while = 273, /* "`while'" */
1446 keyword_until = 274, /* "`until
'" */
1447 keyword_for = 275, /* "`for'" */
1448 keyword_break = 276, /* "`
break'" */
1449 keyword_next = 277, /* "`next'" */
1450 keyword_redo = 278, /* "`redo
'" */
1451 keyword_retry = 279, /* "`retry'" */
1452 keyword_in = 280, /* "`in
'" */
1453 keyword_do = 281, /* "`do'" */
1454 keyword_do_cond = 282, /* "`
do' for condition" */
1455 keyword_do_block = 283, /* "`do' for block
" */
1456 keyword_do_LAMBDA = 284, /* "`
do' for lambda" */
1457 keyword_return = 285, /* "`return'" */
1458 keyword_yield = 286, /* "`yield
'" */
1459 keyword_super = 287, /* "`super'" */
1460 keyword_self = 288, /* "`self
'" */
1461 keyword_nil = 289, /* "`nil'" */
1462 keyword_true = 290, /* "`
true'" */
1463 keyword_false = 291, /* "`false'" */
1464 keyword_and = 292, /* "`and
'" */
1465 keyword_or = 293, /* "`or'" */
1466 keyword_not = 294, /* "`not
'" */
1467 modifier_if = 295, /* "`if' modifier
" */
1468 modifier_unless = 296, /* "`unless
' modifier" */
1469 modifier_while = 297, /* "`while' modifier
" */
1470 modifier_until = 298, /* "`until
' modifier" */
1471 modifier_rescue = 299, /* "`rescue' modifier
" */
1472 keyword_alias = 300, /* "`alias
'" */
1473 keyword_defined = 301, /* "`defined?'" */
1474 keyword_BEGIN = 302, /* "`BEGIN
'" */
1475 keyword_END = 303, /* "`END'" */
1476 keyword__LINE__ = 304, /* "`__LINE__
'" */
1477 keyword__FILE__ = 305, /* "`__FILE__'" */
1478 keyword__ENCODING__ = 306, /* "`__ENCODING__
'" */
1479 tIDENTIFIER = 307, /* "local variable or method" */
1480 tFID = 308, /* "method" */
1481 tGVAR = 309, /* "global variable" */
1482 tIVAR = 310, /* "instance variable" */
1483 tCONSTANT = 311, /* "constant" */
1484 tCVAR = 312, /* "class variable" */
1485 tLABEL = 313, /* "label" */
1486 tINTEGER = 314, /* "integer literal" */
1487 tFLOAT = 315, /* "float literal" */
1488 tRATIONAL = 316, /* "rational literal" */
1489 tIMAGINARY = 317, /* "imaginary literal" */
1490 tCHAR = 318, /* "char literal" */
1491 tNTH_REF = 319, /* "numbered reference" */
1492 tBACK_REF = 320, /* "back reference" */
1493 tSTRING_CONTENT = 321, /* "literal content" */
1494 tREGEXP_END = 322, /* tREGEXP_END */
1495 tDUMNY_END = 323, /* "dummy end" */
1496 tSP = 324, /* "escaped space" */
1497 tUPLUS = 132, /* "unary+" */
1498 tUMINUS = 133, /* "unary-" */
1499 tPOW = 134, /* "**" */
1500 tCMP = 135, /* "<=>" */
1501 tEQ = 140, /* "==" */
1502 tEQQ = 141, /* "===" */
1503 tNEQ = 142, /* "!=" */
1504 tGEQ = 139, /* ">=" */
1505 tLEQ = 138, /* "<=" */
1506 tANDOP = 148, /* "&&" */
1507 tOROP = 149, /* "||" */
1508 tMATCH = 143, /* "=~" */
1509 tNMATCH = 144, /* "!~" */
1510 tDOT2 = 128, /* ".." */
1511 tDOT3 = 129, /* "..." */
1512 tBDOT2 = 130, /* "(.." */
1513 tBDOT3 = 131, /* "(..." */
1514 tAREF = 145, /* "[]" */
1515 tASET = 146, /* "[]=" */
1516 tLSHFT = 136, /* "<<" */
1517 tRSHFT = 137, /* ">>" */
1518 tANDDOT = 150, /* "&." */
1519 tCOLON2 = 147, /* "::" */
1520 tCOLON3 = 325, /* ":: at EXPR_BEG" */
1521 tOP_ASGN = 326, /* "operator-assignment" */
1522 tASSOC = 327, /* "=>" */
1523 tLPAREN = 328, /* "(" */
1524 tLPAREN_ARG = 329, /* "( arg" */
1525 tRPAREN = 330, /* ")" */
1526 tLBRACK = 331, /* "[" */
1527 tLBRACE = 332, /* "{" */
1528 tLBRACE_ARG = 333, /* "{ arg" */
1529 tSTAR = 334, /* "*" */
1530 tDSTAR = 335, /* "**arg" */
1531 tAMPER = 336, /* "&" */
1532 tLAMBDA = 337, /* "->" */
1533 tSYMBEG = 338, /* "symbol literal" */
1534 tSTRING_BEG = 339, /* "string literal" */
1535 tXSTRING_BEG = 340, /* "backtick literal" */
1536 tREGEXP_BEG = 341, /* "regexp literal" */
1537 tWORDS_BEG = 342, /* "word list" */
1538 tQWORDS_BEG = 343, /* "verbatim word list" */
1539 tSYMBOLS_BEG = 344, /* "symbol list" */
1540 tQSYMBOLS_BEG = 345, /* "verbatim symbol list" */
1541 tSTRING_END = 346, /* "terminator" */
1542 tSTRING_DEND = 347, /* "'}
'" */
1543 tSTRING_DBEG = 348, /* tSTRING_DBEG */
1544 tSTRING_DVAR = 349, /* tSTRING_DVAR */
1545 tLAMBEG = 350, /* tLAMBEG */
1546 tLABEL_END = 351, /* tLABEL_END */
1547 tIGNORED_NL = 352, /* tIGNORED_NL */
1548 tCOMMENT = 353, /* tCOMMENT */
1549 tEMBDOC_BEG = 354, /* tEMBDOC_BEG */
1550 tEMBDOC = 355, /* tEMBDOC */
1551 tEMBDOC_END = 356, /* tEMBDOC_END */
1552 tHEREDOC_BEG = 357, /* tHEREDOC_BEG */
1553 tHEREDOC_END = 358, /* tHEREDOC_END */
1554 k__END__ = 359, /* k__END__ */
1555 tLOWEST = 360, /* tLOWEST */
1556 tUMINUS_NUM = 361, /* tUMINUS_NUM */
1557 tLAST_TOKEN = 362 /* tLAST_TOKEN */
1559 typedef enum yytokentype yytoken_kind_t;
1563#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1573 const struct vtable *vars;
1574 struct rb_strterm_struct *strterm;
1575 struct lex_context ctxt;
1580typedef union YYSTYPE YYSTYPE;
1581# define YYSTYPE_IS_TRIVIAL 1
1582# define YYSTYPE_IS_DECLARED 1
1586#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1587typedef struct YYLTYPE YYLTYPE;
1595# define YYLTYPE_IS_DECLARED 1
1596# define YYLTYPE_IS_TRIVIAL 1
1602int yyparse (struct parser_params *p);
1605#endif /* !YY_YY_Y_TAB_H_INCLUDED */
1609 YYSYMBOL_YYEMPTY = -2,
1610 YYSYMBOL_YYEOF = 0, /* "end-of-input" */
1611 YYSYMBOL_YYerror = 1, /* error */
1612 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
1613 YYSYMBOL_keyword_class = 3, /* "`class'" */
1614 YYSYMBOL_keyword_module = 4, /* "`
module'" */
1615 YYSYMBOL_keyword_def = 5,
1616 YYSYMBOL_keyword_undef = 6,
1617 YYSYMBOL_keyword_begin = 7,
1618 YYSYMBOL_keyword_rescue = 8,
1619 YYSYMBOL_keyword_ensure = 9,
1620 YYSYMBOL_keyword_end = 10,
1621 YYSYMBOL_keyword_if = 11,
1622 YYSYMBOL_keyword_unless = 12,
1623 YYSYMBOL_keyword_then = 13,
1624 YYSYMBOL_keyword_elsif = 14,
1625 YYSYMBOL_keyword_else = 15,
1626 YYSYMBOL_keyword_case = 16,
1627 YYSYMBOL_keyword_when = 17,
1628 YYSYMBOL_keyword_while = 18,
1629 YYSYMBOL_keyword_until = 19,
1630 YYSYMBOL_keyword_for = 20,
1631 YYSYMBOL_keyword_break = 21,
1632 YYSYMBOL_keyword_next = 22,
1633 YYSYMBOL_keyword_redo = 23,
1634 YYSYMBOL_keyword_retry = 24,
1635 YYSYMBOL_keyword_in = 25,
1636 YYSYMBOL_keyword_do = 26,
1637 YYSYMBOL_keyword_do_cond = 27,
1638 YYSYMBOL_keyword_do_block = 28,
1639 YYSYMBOL_keyword_do_LAMBDA = 29,
1640 YYSYMBOL_keyword_return = 30,
1641 YYSYMBOL_keyword_yield = 31,
1642 YYSYMBOL_keyword_super = 32,
1643 YYSYMBOL_keyword_self = 33,
1644 YYSYMBOL_keyword_nil = 34,
1645 YYSYMBOL_keyword_true = 35,
1646 YYSYMBOL_keyword_false = 36,
1647 YYSYMBOL_keyword_and = 37,
1648 YYSYMBOL_keyword_or = 38,
1649 YYSYMBOL_keyword_not = 39,
1650 YYSYMBOL_modifier_if = 40,
1651 YYSYMBOL_modifier_unless = 41,
1652 YYSYMBOL_modifier_while = 42,
1653 YYSYMBOL_modifier_until = 43,
1654 YYSYMBOL_modifier_rescue = 44,
1655 YYSYMBOL_keyword_alias = 45,
1656 YYSYMBOL_keyword_defined = 46,
1657 YYSYMBOL_keyword_BEGIN = 47,
1658 YYSYMBOL_keyword_END = 48,
1659 YYSYMBOL_keyword__LINE__ = 49,
1660 YYSYMBOL_keyword__FILE__ = 50,
1661 YYSYMBOL_keyword__ENCODING__ = 51,
1662 YYSYMBOL_tIDENTIFIER = 52,
1664 YYSYMBOL_tGVAR = 54,
1665 YYSYMBOL_tIVAR = 55,
1666 YYSYMBOL_tCONSTANT = 56,
1667 YYSYMBOL_tCVAR = 57,
1668 YYSYMBOL_tLABEL = 58,
1669 YYSYMBOL_tINTEGER = 59,
1670 YYSYMBOL_tFLOAT = 60,
1671 YYSYMBOL_tRATIONAL = 61,
1672 YYSYMBOL_tIMAGINARY = 62,
1673 YYSYMBOL_tCHAR = 63,
1674 YYSYMBOL_tNTH_REF = 64,
1675 YYSYMBOL_tBACK_REF = 65,
1676 YYSYMBOL_tSTRING_CONTENT = 66,
1677 YYSYMBOL_tREGEXP_END = 67,
1678 YYSYMBOL_tDUMNY_END = 68,
1680 YYSYMBOL_70_backslash_ = 70,
1682 YYSYMBOL_72_escaped_horizontal_tab_ = 72,
1683 YYSYMBOL_73_escaped_form_feed_ = 73,
1684 YYSYMBOL_74_escaped_carriage_return_ = 74,
1685 YYSYMBOL_75_escaped_vertical_tab_ = 75,
1686 YYSYMBOL_tUPLUS = 76,
1687 YYSYMBOL_tUMINUS = 77,
1695 YYSYMBOL_tANDOP = 85,
1696 YYSYMBOL_tOROP = 86,
1697 YYSYMBOL_tMATCH = 87,
1698 YYSYMBOL_tNMATCH = 88,
1699 YYSYMBOL_tDOT2 = 89,
1700 YYSYMBOL_tDOT3 = 90,
1701 YYSYMBOL_tBDOT2 = 91,
1702 YYSYMBOL_tBDOT3 = 92,
1703 YYSYMBOL_tAREF = 93,
1704 YYSYMBOL_tASET = 94,
1705 YYSYMBOL_tLSHFT = 95,
1706 YYSYMBOL_tRSHFT = 96,
1707 YYSYMBOL_tANDDOT = 97,
1708 YYSYMBOL_tCOLON2 = 98,
1709 YYSYMBOL_tCOLON3 = 99,
1710 YYSYMBOL_tOP_ASGN = 100,
1711 YYSYMBOL_tASSOC = 101,
1712 YYSYMBOL_tLPAREN = 102,
1713 YYSYMBOL_tLPAREN_ARG = 103,
1714 YYSYMBOL_tRPAREN = 104,
1715 YYSYMBOL_tLBRACK = 105,
1716 YYSYMBOL_tLBRACE = 106,
1717 YYSYMBOL_tLBRACE_ARG = 107,
1718 YYSYMBOL_tSTAR = 108,
1719 YYSYMBOL_tDSTAR = 109,
1720 YYSYMBOL_tAMPER = 110,
1721 YYSYMBOL_tLAMBDA = 111,
1722 YYSYMBOL_tSYMBEG = 112,
1723 YYSYMBOL_tSTRING_BEG = 113,
1724 YYSYMBOL_tXSTRING_BEG = 114,
1725 YYSYMBOL_tREGEXP_BEG = 115,
1726 YYSYMBOL_tWORDS_BEG = 116,
1727 YYSYMBOL_tQWORDS_BEG = 117,
1728 YYSYMBOL_tSYMBOLS_BEG = 118,
1729 YYSYMBOL_tQSYMBOLS_BEG = 119,
1730 YYSYMBOL_tSTRING_END = 120,
1731 YYSYMBOL_tSTRING_DEND = 121,
1732 YYSYMBOL_tSTRING_DBEG = 122,
1733 YYSYMBOL_tSTRING_DVAR = 123,
1734 YYSYMBOL_tLAMBEG = 124,
1735 YYSYMBOL_tLABEL_END = 125,
1736 YYSYMBOL_tIGNORED_NL = 126,
1737 YYSYMBOL_tCOMMENT = 127,
1738 YYSYMBOL_tEMBDOC_BEG = 128,
1739 YYSYMBOL_tEMBDOC = 129,
1740 YYSYMBOL_tEMBDOC_END = 130,
1741 YYSYMBOL_tHEREDOC_BEG = 131,
1742 YYSYMBOL_tHEREDOC_END = 132,
1743 YYSYMBOL_k__END__ = 133,
1744 YYSYMBOL_tLOWEST = 134,
1745 YYSYMBOL_135_ = 135,
1746 YYSYMBOL_136_ = 136,
1747 YYSYMBOL_137_ = 137,
1748 YYSYMBOL_138_ = 138,
1749 YYSYMBOL_139_ = 139,
1750 YYSYMBOL_140_ = 140,
1751 YYSYMBOL_141_ = 141,
1752 YYSYMBOL_142_ = 142,
1753 YYSYMBOL_143_ = 143,
1754 YYSYMBOL_144_ = 144,
1755 YYSYMBOL_145_ = 145,
1756 YYSYMBOL_146_ = 146,
1757 YYSYMBOL_147_ = 147,
1758 YYSYMBOL_tUMINUS_NUM = 148,
1759 YYSYMBOL_149_ = 149,
1760 YYSYMBOL_150_ = 150,
1761 YYSYMBOL_tLAST_TOKEN = 151,
1762 YYSYMBOL_152_ = 152,
1763 YYSYMBOL_153_ = 153,
1764 YYSYMBOL_154_ = 154,
1765 YYSYMBOL_155_ = 155,
1766 YYSYMBOL_156_ = 156,
1767 YYSYMBOL_157_ = 157,
1768 YYSYMBOL_158_ = 158,
1769 YYSYMBOL_159_ = 159,
1770 YYSYMBOL_160_ = 160,
1771 YYSYMBOL_161_ = 161,
1772 YYSYMBOL_162_n_ = 162,
1773 YYSYMBOL_YYACCEPT = 163,
1774 YYSYMBOL_program = 164,
1775 YYSYMBOL_165_1 = 165,
1776 YYSYMBOL_top_compstmt = 166,
1777 YYSYMBOL_top_stmts = 167,
1778 YYSYMBOL_top_stmt = 168,
1779 YYSYMBOL_begin_block = 169,
1780 YYSYMBOL_bodystmt = 170,
1781 YYSYMBOL_171_2 = 171,
1782 YYSYMBOL_compstmt = 172,
1783 YYSYMBOL_stmts = 173,
1784 YYSYMBOL_stmt_or_begin = 174,
1785 YYSYMBOL_175_3 = 175,
1786 YYSYMBOL_stmt = 176,
1787 YYSYMBOL_177_4 = 177,
1788 YYSYMBOL_command_asgn = 178,
1789 YYSYMBOL_command_rhs = 179,
1790 YYSYMBOL_expr = 180,
1791 YYSYMBOL_181_5 = 181,
1792 YYSYMBOL_182_6 = 182,
1793 YYSYMBOL_183_7 = 183,
1794 YYSYMBOL_184_8 = 184,
1795 YYSYMBOL_def_name = 185,
1796 YYSYMBOL_defn_head = 186,
1797 YYSYMBOL_defs_head = 187,
1798 YYSYMBOL_188_9 = 188,
1799 YYSYMBOL_expr_value = 189,
1800 YYSYMBOL_expr_value_do = 190,
1801 YYSYMBOL_191_10 = 191,
1802 YYSYMBOL_192_11 = 192,
1803 YYSYMBOL_command_call = 193,
1804 YYSYMBOL_block_command = 194,
1805 YYSYMBOL_cmd_brace_block = 195,
1806 YYSYMBOL_fcall = 196,
1807 YYSYMBOL_command = 197,
1808 YYSYMBOL_mlhs = 198,
1809 YYSYMBOL_mlhs_inner = 199,
1810 YYSYMBOL_mlhs_basic = 200,
1811 YYSYMBOL_mlhs_item = 201,
1812 YYSYMBOL_mlhs_head = 202,
1813 YYSYMBOL_mlhs_post = 203,
1814 YYSYMBOL_mlhs_node = 204,
1816 YYSYMBOL_cname = 206,
1817 YYSYMBOL_cpath = 207,
1818 YYSYMBOL_fname = 208,
1819 YYSYMBOL_fitem = 209,
1820 YYSYMBOL_undef_list = 210,
1821 YYSYMBOL_211_12 = 211,
1823 YYSYMBOL_reswords = 213,
1825 YYSYMBOL_215_13 = 215,
1826 YYSYMBOL_relop = 216,
1827 YYSYMBOL_rel_expr = 217,
1828 YYSYMBOL_lex_ctxt = 218,
1829 YYSYMBOL_arg_value = 219,
1830 YYSYMBOL_aref_args = 220,
1831 YYSYMBOL_arg_rhs = 221,
1832 YYSYMBOL_paren_args = 222,
1833 YYSYMBOL_opt_paren_args = 223,
1834 YYSYMBOL_opt_call_args = 224,
1835 YYSYMBOL_call_args = 225,
1836 YYSYMBOL_command_args = 226,
1837 YYSYMBOL_227_14 = 227,
1838 YYSYMBOL_block_arg = 228,
1839 YYSYMBOL_opt_block_arg = 229,
1840 YYSYMBOL_args = 230,
1841 YYSYMBOL_mrhs_arg = 231,
1842 YYSYMBOL_mrhs = 232,
1843 YYSYMBOL_primary = 233,
1844 YYSYMBOL_234_15 = 234,
1845 YYSYMBOL_235_16 = 235,
1846 YYSYMBOL_236_17 = 236,
1847 YYSYMBOL_237_18 = 237,
1848 YYSYMBOL_238_19 = 238,
1849 YYSYMBOL_239_20 = 239,
1850 YYSYMBOL_240_21 = 240,
1851 YYSYMBOL_241_22 = 241,
1852 YYSYMBOL_242_23 = 242,
1853 YYSYMBOL_243_24 = 243,
1854 YYSYMBOL_244_25 = 244,
1855 YYSYMBOL_primary_value = 245,
1856 YYSYMBOL_k_begin = 246,
1857 YYSYMBOL_k_if = 247,
1858 YYSYMBOL_k_unless = 248,
1859 YYSYMBOL_k_while = 249,
1860 YYSYMBOL_k_until = 250,
1861 YYSYMBOL_k_case = 251,
1862 YYSYMBOL_k_for = 252,
1863 YYSYMBOL_k_class = 253,
1864 YYSYMBOL_k_module = 254,
1865 YYSYMBOL_k_def = 255,
1866 YYSYMBOL_k_do = 256,
1867 YYSYMBOL_k_do_block = 257,
1868 YYSYMBOL_k_rescue = 258,
1869 YYSYMBOL_k_ensure = 259,
1870 YYSYMBOL_k_when = 260,
1871 YYSYMBOL_k_else = 261,
1872 YYSYMBOL_k_elsif = 262,
1873 YYSYMBOL_k_end = 263,
1874 YYSYMBOL_k_return = 264,
1875 YYSYMBOL_then = 265,
1877 YYSYMBOL_if_tail = 267,
1878 YYSYMBOL_opt_else = 268,
1879 YYSYMBOL_for_var = 269,
1880 YYSYMBOL_f_marg = 270,
1881 YYSYMBOL_f_marg_list = 271,
1882 YYSYMBOL_f_margs = 272,
1883 YYSYMBOL_f_rest_marg = 273,
1884 YYSYMBOL_f_any_kwrest = 274,
1885 YYSYMBOL_f_eq = 275,
1886 YYSYMBOL_276_26 = 276,
1887 YYSYMBOL_block_args_tail = 277,
1888 YYSYMBOL_opt_block_args_tail = 278,
1889 YYSYMBOL_excessed_comma = 279,
1890 YYSYMBOL_block_param = 280,
1891 YYSYMBOL_opt_block_param = 281,
1892 YYSYMBOL_block_param_def = 282,
1893 YYSYMBOL_opt_bv_decl = 283,
1894 YYSYMBOL_bv_decls = 284,
1895 YYSYMBOL_bvar = 285,
1896 YYSYMBOL_lambda = 286,
1897 YYSYMBOL_287_27 = 287,
1898 YYSYMBOL_288_28 = 288,
1899 YYSYMBOL_289_29 = 289,
1900 YYSYMBOL_290_30 = 290,
1901 YYSYMBOL_f_larglist = 291,
1902 YYSYMBOL_lambda_body = 292,
1903 YYSYMBOL_293_31 = 293,
1904 YYSYMBOL_do_block = 294,
1905 YYSYMBOL_block_call = 295,
1906 YYSYMBOL_method_call = 296,
1907 YYSYMBOL_brace_block = 297,
1908 YYSYMBOL_brace_body = 298,
1909 YYSYMBOL_299_32 = 299,
1910 YYSYMBOL_300_33 = 300,
1911 YYSYMBOL_301_34 = 301,
1912 YYSYMBOL_do_body = 302,
1913 YYSYMBOL_303_35 = 303,
1914 YYSYMBOL_304_36 = 304,
1915 YYSYMBOL_305_37 = 305,
1916 YYSYMBOL_case_args = 306,
1917 YYSYMBOL_case_body = 307,
1918 YYSYMBOL_cases = 308,
1919 YYSYMBOL_p_case_body = 309,
1920 YYSYMBOL_310_38 = 310,
1921 YYSYMBOL_311_39 = 311,
1922 YYSYMBOL_312_40 = 312,
1923 YYSYMBOL_p_cases = 313,
1924 YYSYMBOL_p_top_expr = 314,
1925 YYSYMBOL_p_top_expr_body = 315,
1926 YYSYMBOL_p_expr = 316,
1927 YYSYMBOL_p_as = 317,
1928 YYSYMBOL_p_alt = 318,
1929 YYSYMBOL_p_lparen = 319,
1930 YYSYMBOL_p_lbracket = 320,
1931 YYSYMBOL_p_expr_basic = 321,
1932 YYSYMBOL_322_41 = 322,
1933 YYSYMBOL_323_42 = 323,
1934 YYSYMBOL_p_args = 324,
1935 YYSYMBOL_p_args_head = 325,
1936 YYSYMBOL_p_args_tail = 326,
1937 YYSYMBOL_p_find = 327,
1938 YYSYMBOL_p_rest = 328,
1939 YYSYMBOL_p_args_post = 329,
1940 YYSYMBOL_p_arg = 330,
1941 YYSYMBOL_p_kwargs = 331,
1942 YYSYMBOL_p_kwarg = 332,
1943 YYSYMBOL_p_kw = 333,
1944 YYSYMBOL_p_kw_label = 334,
1945 YYSYMBOL_p_kwrest = 335,
1946 YYSYMBOL_p_kwnorest = 336,
1947 YYSYMBOL_p_any_kwrest = 337,
1948 YYSYMBOL_p_value = 338,
1949 YYSYMBOL_p_primitive = 339,
1950 YYSYMBOL_p_variable = 340,
1951 YYSYMBOL_p_var_ref = 341,
1952 YYSYMBOL_p_expr_ref = 342,
1953 YYSYMBOL_p_const = 343,
1954 YYSYMBOL_opt_rescue = 344,
1955 YYSYMBOL_exc_list = 345,
1956 YYSYMBOL_exc_var = 346,
1957 YYSYMBOL_opt_ensure = 347,
1958 YYSYMBOL_literal = 348,
1959 YYSYMBOL_strings = 349,
1960 YYSYMBOL_string = 350,
1961 YYSYMBOL_string1 = 351,
1962 YYSYMBOL_xstring = 352,
1963 YYSYMBOL_regexp = 353,
1964 YYSYMBOL_words = 354,
1965 YYSYMBOL_word_list = 355,
1966 YYSYMBOL_word = 356,
1967 YYSYMBOL_symbols = 357,
1968 YYSYMBOL_symbol_list = 358,
1969 YYSYMBOL_qwords = 359,
1970 YYSYMBOL_qsymbols = 360,
1971 YYSYMBOL_qword_list = 361,
1972 YYSYMBOL_qsym_list = 362,
1973 YYSYMBOL_string_contents = 363,
1974 YYSYMBOL_xstring_contents = 364,
1975 YYSYMBOL_regexp_contents = 365,
1976 YYSYMBOL_string_content = 366,
1977 YYSYMBOL_367_43 = 367,
1978 YYSYMBOL_368_44 = 368,
1979 YYSYMBOL_369_45 = 369,
1980 YYSYMBOL_370_46 = 370,
1981 YYSYMBOL_371_47 = 371,
1982 YYSYMBOL_372_48 = 372,
1983 YYSYMBOL_string_dvar = 373,
1984 YYSYMBOL_symbol = 374,
1985 YYSYMBOL_ssym = 375,
1987 YYSYMBOL_dsym = 377,
1988 YYSYMBOL_numeric = 378,
1989 YYSYMBOL_simple_numeric = 379,
1990 YYSYMBOL_nonlocal_var = 380,
1991 YYSYMBOL_user_variable = 381,
1992 YYSYMBOL_keyword_variable = 382,
1993 YYSYMBOL_var_ref = 383,
1994 YYSYMBOL_var_lhs = 384,
1995 YYSYMBOL_backref = 385,
1996 YYSYMBOL_superclass = 386,
1997 YYSYMBOL_387_49 = 387,
1998 YYSYMBOL_f_opt_paren_args = 388,
1999 YYSYMBOL_f_paren_args = 389,
2000 YYSYMBOL_f_arglist = 390,
2001 YYSYMBOL_391_50 = 391,
2002 YYSYMBOL_args_tail = 392,
2003 YYSYMBOL_opt_args_tail = 393,
2004 YYSYMBOL_f_args = 394,
2005 YYSYMBOL_args_forward = 395,
2006 YYSYMBOL_f_bad_arg = 396,
2007 YYSYMBOL_f_norm_arg = 397,
2008 YYSYMBOL_f_arg_asgn = 398,
2009 YYSYMBOL_f_arg_item = 399,
2010 YYSYMBOL_f_arg = 400,
2011 YYSYMBOL_f_label = 401,
2012 YYSYMBOL_f_kw = 402,
2013 YYSYMBOL_f_block_kw = 403,
2014 YYSYMBOL_f_block_kwarg = 404,
2015 YYSYMBOL_f_kwarg = 405,
2016 YYSYMBOL_kwrest_mark = 406,
2017 YYSYMBOL_f_no_kwarg = 407,
2018 YYSYMBOL_f_kwrest = 408,
2019 YYSYMBOL_f_opt = 409,
2020 YYSYMBOL_f_block_opt = 410,
2021 YYSYMBOL_f_block_optarg = 411,
2022 YYSYMBOL_f_optarg = 412,
2023 YYSYMBOL_restarg_mark = 413,
2024 YYSYMBOL_f_rest_arg = 414,
2025 YYSYMBOL_blkarg_mark = 415,
2026 YYSYMBOL_f_block_arg = 416,
2027 YYSYMBOL_opt_f_block_arg = 417,
2028 YYSYMBOL_singleton = 418,
2029 YYSYMBOL_419_51 = 419,
2030 YYSYMBOL_assoc_list = 420,
2031 YYSYMBOL_assocs = 421,
2032 YYSYMBOL_assoc = 422,
2033 YYSYMBOL_operation = 423,
2034 YYSYMBOL_operation2 = 424,
2035 YYSYMBOL_operation3 = 425,
2036 YYSYMBOL_dot_or_colon = 426,
2037 YYSYMBOL_call_op = 427,
2038 YYSYMBOL_call_op2 = 428,
2039 YYSYMBOL_opt_terms = 429,
2040 YYSYMBOL_opt_nl = 430,
2041 YYSYMBOL_rparen = 431,
2042 YYSYMBOL_rbracket = 432,
2043 YYSYMBOL_rbrace = 433,
2044 YYSYMBOL_trailer = 434,
2045 YYSYMBOL_term = 435,
2046 YYSYMBOL_terms = 436,
2049typedef enum yysymbol_kind_t yysymbol_kind_t;
2062#ifndef __PTRDIFF_MAX__
2064# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
2075#ifdef __INT_LEAST8_MAX__
2076typedef __INT_LEAST8_TYPE__ yytype_int8;
2077#elif defined YY_STDINT_H
2078typedef int_least8_t yytype_int8;
2080typedef signed char yytype_int8;
2083#ifdef __INT_LEAST16_MAX__
2084typedef __INT_LEAST16_TYPE__ yytype_int16;
2085#elif defined YY_STDINT_H
2086typedef int_least16_t yytype_int16;
2088typedef short yytype_int16;
2097# undef UINT_LEAST8_MAX
2098# undef UINT_LEAST16_MAX
2099# define UINT_LEAST8_MAX 255
2100# define UINT_LEAST16_MAX 65535
2103#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
2104typedef __UINT_LEAST8_TYPE__ yytype_uint8;
2105#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
2106 && UINT_LEAST8_MAX <= INT_MAX)
2107typedef uint_least8_t yytype_uint8;
2108#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
2109typedef unsigned char yytype_uint8;
2111typedef short yytype_uint8;
2114#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
2115typedef __UINT_LEAST16_TYPE__ yytype_uint16;
2116#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
2117 && UINT_LEAST16_MAX <= INT_MAX)
2118typedef uint_least16_t yytype_uint16;
2119#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
2120typedef unsigned short yytype_uint16;
2122typedef int yytype_uint16;
2126# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
2127# define YYPTRDIFF_T __PTRDIFF_TYPE__
2128# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
2129# elif defined PTRDIFF_MAX
2133# define YYPTRDIFF_T ptrdiff_t
2134# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
2136# define YYPTRDIFF_T long
2137# define YYPTRDIFF_MAXIMUM LONG_MAX
2142# ifdef __SIZE_TYPE__
2143# define YYSIZE_T __SIZE_TYPE__
2144# elif defined size_t
2145# define YYSIZE_T size_t
2146# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
2148# define YYSIZE_T size_t
2150# define YYSIZE_T unsigned
2154#define YYSIZE_MAXIMUM \
2155 YY_CAST (YYPTRDIFF_T, \
2156 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
2157 ? YYPTRDIFF_MAXIMUM \
2158 : YY_CAST (YYSIZE_T, -1)))
2160#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
2164typedef yytype_int16 yy_state_t;
2167typedef int yy_state_fast_t;
2170# if defined YYENABLE_NLS && YYENABLE_NLS
2172# include <libintl.h>
2173# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
2177# define YY_(Msgid) Msgid
2182#ifndef YY_ATTRIBUTE_PURE
2183# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
2184# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
2186# define YY_ATTRIBUTE_PURE
2190#ifndef YY_ATTRIBUTE_UNUSED
2191# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
2192# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
2194# define YY_ATTRIBUTE_UNUSED
2199#if ! defined lint || defined __GNUC__
2200# define YY_USE(E) ((void) (E))
2206#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
2207# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
2208# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
2209 _Pragma ("GCC diagnostic push") \
2210 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
2212# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
2213 _Pragma ("GCC diagnostic push") \
2214 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
2215 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
2217# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
2218 _Pragma ("GCC diagnostic pop")
2220# define YY_INITIAL_VALUE(Value) Value
2222#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2223# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2224# define YY_IGNORE_MAYBE_UNINITIALIZED_END
2226#ifndef YY_INITIAL_VALUE
2227# define YY_INITIAL_VALUE(Value)
2230#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
2231# define YY_IGNORE_USELESS_CAST_BEGIN \
2232 _Pragma ("GCC diagnostic push") \
2233 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
2234# define YY_IGNORE_USELESS_CAST_END \
2235 _Pragma ("GCC diagnostic pop")
2237#ifndef YY_IGNORE_USELESS_CAST_BEGIN
2238# define YY_IGNORE_USELESS_CAST_BEGIN
2239# define YY_IGNORE_USELESS_CAST_END
2243#define YY_ASSERT(E) ((void) (0 && (E)))
2249# ifdef YYSTACK_USE_ALLOCA
2250# if YYSTACK_USE_ALLOCA
2252# define YYSTACK_ALLOC __builtin_alloca
2253# elif defined __BUILTIN_VA_ARG_INCR
2256# define YYSTACK_ALLOC __alloca
2257# elif defined _MSC_VER
2259# define alloca _alloca
2261# define YYSTACK_ALLOC alloca
2262# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
2265# ifndef EXIT_SUCCESS
2266# define EXIT_SUCCESS 0
2273# ifdef YYSTACK_ALLOC
2275# define YYSTACK_FREE(Ptr) do { ; } while (0)
2276# ifndef YYSTACK_ALLOC_MAXIMUM
2281# define YYSTACK_ALLOC_MAXIMUM 4032
2284# define YYSTACK_ALLOC YYMALLOC
2285# define YYSTACK_FREE YYFREE
2286# ifndef YYSTACK_ALLOC_MAXIMUM
2287# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
2289# if (defined __cplusplus && ! defined EXIT_SUCCESS \
2290 && ! ((defined YYMALLOC || defined malloc) \
2291 && (defined YYFREE || defined free)))
2293# ifndef EXIT_SUCCESS
2294# define EXIT_SUCCESS 0
2298# define YYMALLOC malloc
2299# if ! defined malloc && ! defined EXIT_SUCCESS
2300void *malloc (YYSIZE_T);
2305# if ! defined free && ! defined EXIT_SUCCESS
2312#if (! defined yyoverflow \
2313 && (! defined __cplusplus \
2314 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
2315 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
2320 yy_state_t yyss_alloc;
2326# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
2330# define YYSTACK_BYTES(N) \
2331 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
2332 + YYSIZEOF (YYLTYPE)) \
2333 + 2 * YYSTACK_GAP_MAXIMUM)
2335# define YYCOPY_NEEDED 1
2342# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
2345 YYPTRDIFF_T yynewbytes; \
2346 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
2347 Stack = &yyptr->Stack_alloc; \
2348 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
2349 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
2355#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
2359# if defined __GNUC__ && 1 < __GNUC__
2360# define YYCOPY(Dst, Src, Count) \
2361 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
2363# define YYCOPY(Dst, Src, Count) \
2367 for (yyi = 0; yyi < (Count); yyi++) \
2368 (Dst)[yyi] = (Src)[yyi]; \
2381#define YYNTOKENS 163
2387#define YYNSTATES 1304
2390#define YYMAXUTOK 362
2395#define YYTRANSLATE(YYX) \
2396 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
2397 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
2402static const yytype_uint8 yytranslate[] =
2404 0, 2, 2, 2, 2, 2, 2, 2, 2, 72,
2405 162, 75, 73, 74, 2, 2, 2, 2, 2, 2,
2406 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2407 2, 2, 161, 149, 2, 2, 2, 147, 142, 2,
2408 157, 158, 145, 143, 155, 144, 69, 146, 2, 2,
2409 2, 2, 2, 2, 2, 2, 2, 2, 137, 160,
2410 139, 135, 138, 136, 2, 2, 2, 2, 2, 2,
2411 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2412 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2413 2, 154, 70, 159, 141, 2, 156, 2, 2, 2,
2414 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2415 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2416 2, 2, 2, 152, 140, 153, 150, 2, 89, 90,
2417 91, 92, 76, 77, 78, 79, 95, 96, 84, 83,
2418 80, 81, 82, 87, 88, 93, 94, 98, 85, 86,
2419 97, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2420 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2421 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2422 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2423 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2424 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2425 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2426 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2427 2, 2, 2, 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, 1, 2, 3, 4,
2430 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2431 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2432 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2433 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2434 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
2435 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
2436 65, 66, 67, 68, 71, 99, 100, 101, 102, 103,
2437 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
2438 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
2439 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
2445static const yytype_int16 yyrline[] =
2447 0, 1580, 1580, 1580, 1606, 1612, 1619, 1626, 1635, 1636,
2448 1642, 1655, 1653, 1664, 1675, 1681, 1688, 1695, 1704, 1709,
2449 1708, 1718, 1718, 1725, 1732, 1742, 1751, 1758, 1766, 1774,
2450 1786, 1798, 1808, 1822, 1823, 1831, 1838, 1846, 1853, 1854,
2451 1862, 1869, 1876, 1884, 1891, 1898, 1906, 1913, 1924, 1936,
2452 1949, 1963, 1973, 1978, 1987, 1990, 1991, 1995, 1999, 2003,
2453 2008, 2016, 2007, 2030, 2038, 2029, 2051, 2054, 2071, 2081,
2454 2080, 2099, 2104, 2112, 2112, 2112, 2118, 2119, 2122, 2123,
2455 2132, 2142, 2152, 2161, 2172, 2179, 2186, 2193, 2200, 2208,
2456 2216, 2223, 2230, 2239, 2240, 2249, 2250, 2259, 2266, 2273,
2457 2280, 2287, 2294, 2301, 2308, 2315, 2322, 2331, 2332, 2341,
2458 2348, 2357, 2364, 2373, 2380, 2387, 2394, 2404, 2411, 2421,
2459 2428, 2435, 2445, 2452, 2459, 2466, 2473, 2480, 2487, 2494,
2460 2501, 2511, 2519, 2522, 2529, 2536, 2545, 2546, 2547, 2548,
2461 2553, 2556, 2563, 2566, 2573, 2573, 2583, 2584, 2585, 2586,
2462 2587, 2588, 2589, 2590, 2591, 2592, 2593, 2594, 2595, 2596,
2463 2597, 2598, 2599, 2600, 2601, 2602, 2603, 2604, 2605, 2606,
2464 2607, 2608, 2609, 2610, 2611, 2612, 2615, 2615, 2615, 2616,
2465 2616, 2617, 2617, 2617, 2618, 2618, 2618, 2618, 2619, 2619,
2466 2619, 2619, 2620, 2620, 2620, 2621, 2621, 2621, 2621, 2622,
2467 2622, 2622, 2622, 2623, 2623, 2623, 2623, 2624, 2624, 2624,
2468 2624, 2625, 2625, 2625, 2625, 2626, 2626, 2629, 2636, 2643,
2469 2650, 2657, 2664, 2671, 2679, 2687, 2695, 2704, 2713, 2721,
2470 2729, 2737, 2745, 2749, 2753, 2757, 2761, 2765, 2769, 2773,
2471 2777, 2781, 2785, 2789, 2793, 2797, 2798, 2802, 2806, 2810,
2472 2814, 2818, 2822, 2826, 2830, 2834, 2838, 2842, 2842, 2847,
2473 2856, 2867, 2879, 2892, 2906, 2912, 2913, 2914, 2915, 2918,
2474 2922, 2929, 2935, 2942, 2943, 2947, 2954, 2963, 2968, 2978,
2475 2985, 2997, 3011, 3012, 3015, 3016, 3017, 3021, 3028, 3037,
2476 3045, 3052, 3060, 3068, 3072, 3072, 3109, 3116, 3128, 3132,
2477 3139, 3146, 3153, 3164, 3171, 3178, 3192, 3193, 3197, 3204,
2478 3211, 3220, 3221, 3222, 3223, 3224, 3225, 3226, 3227, 3228,
2479 3229, 3230, 3238, 3237, 3252, 3252, 3259, 3259, 3267, 3275,
2480 3282, 3289, 3296, 3304, 3311, 3318, 3325, 3332, 3332, 3337,
2481 3341, 3345, 3352, 3353, 3361, 3362, 3373, 3384, 3394, 3405,
2482 3404, 3421, 3420, 3435, 3444, 3487, 3486, 3510, 3509, 3532,
2483 3531, 3556, 3554, 3573, 3571, 3590, 3597, 3604, 3611, 3620,
2484 3627, 3636, 3656, 3665, 3674, 3683, 3692, 3701, 3711, 3721,
2485 3728, 3738, 3747, 3753, 3759, 3765, 3780, 3787, 3794, 3800,
2486 3807, 3808, 3809, 3812, 3813, 3816, 3817, 3829, 3830, 3839,
2487 3840, 3843, 3851, 3860, 3867, 3876, 3883, 3890, 3897, 3904,
2488 3913, 3921, 3930, 3931, 3934, 3934, 3936, 3940, 3944, 3948,
2489 3954, 3959, 3964, 3974, 3978, 3982, 3986, 3990, 3994, 3999,
2490 4003, 4007, 4011, 4015, 4019, 4023, 4027, 4031, 4037, 4038,
2491 4044, 4054, 4067, 4071, 4080, 4082, 4086, 4091, 4098, 4104,
2492 4108, 4112, 4097, 4137, 4146, 4157, 4163, 4162, 4174, 4184,
2493 4198, 4205, 4212, 4221, 4230, 4238, 4246, 4253, 4261, 4269,
2494 4276, 4283, 4296, 4304, 4314, 4315, 4319, 4314, 4336, 4337,
2495 4341, 4336, 4360, 4368, 4375, 4383, 4392, 4404, 4405, 4409,
2496 4416, 4420, 4408, 4435, 4436, 4439, 4440, 4448, 4458, 4459,
2497 4464, 4472, 4476, 4480, 4486, 4489, 4498, 4501, 4508, 4511,
2498 4512, 4514, 4515, 4516, 4525, 4534, 4543, 4548, 4557, 4566,
2499 4575, 4580, 4584, 4588, 4594, 4593, 4605, 4610, 4610, 4617,
2500 4626, 4630, 4639, 4643, 4647, 4650, 4654, 4663, 4667, 4673,
2501 4680, 4684, 4690, 4691, 4700, 4709, 4713, 4717, 4721, 4727,
2502 4729, 4738, 4746, 4760, 4761, 4784, 4788, 4794, 4800, 4801,
2503 4804, 4805, 4814, 4823, 4831, 4839, 4840, 4841, 4842, 4850,
2504 4860, 4861, 4862, 4863, 4864, 4865, 4866, 4867, 4868, 4875,
2505 4878, 4888, 4899, 4908, 4917, 4924, 4931, 4940, 4961, 4964,
2506 4971, 4978, 4981, 4985, 4988, 4995, 4998, 4999, 5002, 5019,
2507 5020, 5021, 5030, 5040, 5049, 5055, 5065, 5071, 5080, 5082,
2508 5091, 5101, 5107, 5116, 5125, 5135, 5141, 5151, 5157, 5167,
2509 5177, 5196, 5202, 5212, 5222, 5263, 5266, 5265, 5282, 5286,
2510 5291, 5295, 5299, 5281, 5320, 5327, 5334, 5341, 5344, 5345,
2511 5348, 5358, 5359, 5362, 5372, 5373, 5383, 5384, 5385, 5386,
2512 5389, 5390, 5391, 5394, 5395, 5396, 5399, 5400, 5401, 5402,
2513 5403, 5404, 5405, 5408, 5421, 5430, 5437, 5446, 5447, 5451,
2514 5450, 5460, 5468, 5469, 5477, 5489, 5490, 5490, 5506, 5510,
2515 5514, 5518, 5522, 5532, 5537, 5542, 5546, 5550, 5554, 5558,
2516 5562, 5566, 5570, 5574, 5578, 5582, 5586, 5590, 5594, 5599,
2517 5605, 5618, 5627, 5636, 5645, 5656, 5657, 5665, 5674, 5682,
2518 5703, 5705, 5718, 5728, 5737, 5748, 5756, 5766, 5773, 5783,
2519 5790, 5799, 5800, 5803, 5811, 5819, 5829, 5840, 5851, 5858,
2520 5867, 5874, 5883, 5884, 5887, 5895, 5905, 5906, 5909, 5917,
2521 5927, 5931, 5937, 5942, 5942, 5966, 5967, 5976, 5978, 6001,
2522 6012, 6019, 6028, 6036, 6053, 6067, 6068, 6069, 6072, 6073,
2523 6076, 6077, 6078, 6081, 6082, 6085, 6086, 6089, 6090, 6093,
2524 6094, 6097, 6098, 6101, 6104, 6107, 6110, 6111, 6114, 6115,
2530#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2535static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2539static const char *
const yytname[] =
2541 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"`class'\"",
2542 "\"`module'\"",
"\"`def'\"",
"\"`undef'\"",
"\"`begin'\"",
2543 "\"`rescue'\"",
"\"`ensure'\"",
"\"`end'\"",
"\"`if'\"",
"\"`unless'\"",
2544 "\"`then'\"",
"\"`elsif'\"",
"\"`else'\"",
"\"`case'\"",
"\"`when'\"",
2545 "\"`while'\"",
"\"`until'\"",
"\"`for'\"",
"\"`break'\"",
"\"`next'\"",
2546 "\"`redo'\"",
"\"`retry'\"",
"\"`in'\"",
"\"`do'\"",
2547 "\"`do' for condition\"",
"\"`do' for block\"",
"\"`do' for lambda\"",
2548 "\"`return'\"",
"\"`yield'\"",
"\"`super'\"",
"\"`self'\"",
"\"`nil'\"",
2549 "\"`true'\"",
"\"`false'\"",
"\"`and'\"",
"\"`or'\"",
"\"`not'\"",
2550 "\"`if' modifier\"",
"\"`unless' modifier\"",
"\"`while' modifier\"",
2551 "\"`until' modifier\"",
"\"`rescue' modifier\"",
"\"`alias'\"",
2552 "\"`defined?'\"",
"\"`BEGIN'\"",
"\"`END'\"",
"\"`__LINE__'\"",
2553 "\"`__FILE__'\"",
"\"`__ENCODING__'\"",
"\"local variable or method\"",
2554 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
2555 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
2556 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
2557 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
2558 "\"literal content\"",
"tREGEXP_END",
"\"dummy end\"",
"'.'",
2559 "\"backslash\"",
"\"escaped space\"",
"\"escaped horizontal tab\"",
2560 "\"escaped form feed\"",
"\"escaped carriage return\"",
2561 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
2562 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
2563 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
2564 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
2565 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
2566 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
2567 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
2568 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
2569 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
2570 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"tSTRING_DBEG",
2571 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tIGNORED_NL",
"tCOMMENT",
2572 "tEMBDOC_BEG",
"tEMBDOC",
"tEMBDOC_END",
"tHEREDOC_BEG",
"tHEREDOC_END",
2573 "k__END__",
"tLOWEST",
"'='",
"'?'",
"':'",
"'>'",
"'<'",
"'|'",
"'^'",
2574 "'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
"tUMINUS_NUM",
"'!'",
"'~'",
2575 "tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"','",
"'`'",
"'('",
"')'",
"']'",
2576 "';'",
"' '",
"'\\n'",
"$accept",
"program",
"$@1",
"top_compstmt",
2577 "top_stmts",
"top_stmt",
"begin_block",
"bodystmt",
"$@2",
"compstmt",
2578 "stmts",
"stmt_or_begin",
"$@3",
"stmt",
"$@4",
"command_asgn",
2579 "command_rhs",
"expr",
"@5",
"@6",
"@7",
"@8",
"def_name",
"defn_head",
2580 "defs_head",
"$@9",
"expr_value",
"expr_value_do",
"$@10",
"$@11",
2581 "command_call",
"block_command",
"cmd_brace_block",
"fcall",
"command",
2582 "mlhs",
"mlhs_inner",
"mlhs_basic",
"mlhs_item",
"mlhs_head",
2583 "mlhs_post",
"mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
"fitem",
2584 "undef_list",
"$@12",
"op",
"reswords",
"arg",
"$@13",
"relop",
2585 "rel_expr",
"lex_ctxt",
"arg_value",
"aref_args",
"arg_rhs",
2586 "paren_args",
"opt_paren_args",
"opt_call_args",
"call_args",
2587 "command_args",
"$@14",
"block_arg",
"opt_block_arg",
"args",
"mrhs_arg",
2588 "mrhs",
"primary",
"$@15",
"$@16",
"$@17",
"$@18",
"@19",
"@20",
"$@21",
2589 "$@22",
"$@23",
"$@24",
"$@25",
"primary_value",
"k_begin",
"k_if",
2590 "k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
2591 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
2592 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"then",
"do",
2593 "if_tail",
"opt_else",
"for_var",
"f_marg",
"f_marg_list",
"f_margs",
2594 "f_rest_marg",
"f_any_kwrest",
"f_eq",
"$@26",
"block_args_tail",
2595 "opt_block_args_tail",
"excessed_comma",
"block_param",
2596 "opt_block_param",
"block_param_def",
"opt_bv_decl",
"bv_decls",
"bvar",
2597 "lambda",
"@27",
"@28",
"@29",
"$@30",
"f_larglist",
"lambda_body",
2598 "$@31",
"do_block",
"block_call",
"method_call",
"brace_block",
2599 "brace_body",
"@32",
"@33",
"@34",
"do_body",
"@35",
"@36",
"@37",
2600 "case_args",
"case_body",
"cases",
"p_case_body",
"@38",
"@39",
"$@40",
2601 "p_cases",
"p_top_expr",
"p_top_expr_body",
"p_expr",
"p_as",
"p_alt",
2602 "p_lparen",
"p_lbracket",
"p_expr_basic",
"@41",
"@42",
"p_args",
2603 "p_args_head",
"p_args_tail",
"p_find",
"p_rest",
"p_args_post",
"p_arg",
2604 "p_kwargs",
"p_kwarg",
"p_kw",
"p_kw_label",
"p_kwrest",
"p_kwnorest",
2605 "p_any_kwrest",
"p_value",
"p_primitive",
"p_variable",
"p_var_ref",
2606 "p_expr_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
2607 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
2608 "regexp",
"words",
"word_list",
"word",
"symbols",
"symbol_list",
2609 "qwords",
"qsymbols",
"qword_list",
"qsym_list",
"string_contents",
2610 "xstring_contents",
"regexp_contents",
"string_content",
"@43",
"$@44",
2611 "@45",
"@46",
"@47",
"@48",
"string_dvar",
"symbol",
"ssym",
"sym",
2612 "dsym",
"numeric",
"simple_numeric",
"nonlocal_var",
"user_variable",
2613 "keyword_variable",
"var_ref",
"var_lhs",
"backref",
"superclass",
2614 "$@49",
"f_opt_paren_args",
"f_paren_args",
"f_arglist",
"@50",
2615 "args_tail",
"opt_args_tail",
"f_args",
"args_forward",
"f_bad_arg",
2616 "f_norm_arg",
"f_arg_asgn",
"f_arg_item",
"f_arg",
"f_label",
"f_kw",
2617 "f_block_kw",
"f_block_kwarg",
"f_kwarg",
"kwrest_mark",
"f_no_kwarg",
2618 "f_kwrest",
"f_opt",
"f_block_opt",
"f_block_optarg",
"f_optarg",
2619 "restarg_mark",
"f_rest_arg",
"blkarg_mark",
"f_block_arg",
2620 "opt_f_block_arg",
"singleton",
"$@51",
"assoc_list",
"assocs",
"assoc",
2621 "operation",
"operation2",
"operation3",
"dot_or_colon",
"call_op",
2622 "call_op2",
"opt_terms",
"opt_nl",
"rparen",
"rbracket",
"rbrace",
2623 "trailer",
"term",
"terms",
"none", YY_NULLPTR
2627yysymbol_name (yysymbol_kind_t yysymbol)
2629 return yytname[yysymbol];
2633#define YYPACT_NINF (-1065)
2635#define yypact_value_is_default(Yyn) \
2636 ((Yyn) == YYPACT_NINF)
2638#define YYTABLE_NINF (-783)
2640#define yytable_value_is_error(Yyn) \
2641 ((Yyn) == YYTABLE_NINF)
2645static const yytype_int16 yypact[] =
2647 -1065, 144, 4385, -1065, -1065, -1065, -1065, -1065, 9742, -1065,
2648 -1065, -1065, -1065, -1065, -1065, -1065, 10562, 10562, -1065, -1065,
2649 -1065, 6084, 5616, -1065, -1065, -1065, -1065, 32, 9588, 11,
2650 92, 197, -1065, -1065, -1065, 4824, 5772, -1065, -1065, 4992,
2651 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, 12135, 12135,
2652 12135, 12135, 351, 7722, 8484, 11046, 11409, 10044, -1065, 9434,
2653 -1065, -1065, -1065, 272, 284, 359, 362, 1229, 12256, 12135,
2654 -1065, 340, -1065, 1436, -1065, 551, 20, 20, -1065, -1065,
2655 194, 432, 406, -1065, 308, 12498, -1065, 442, 2224, 819,
2656 622, 676, -1065, 10441, 10441, -1065, -1065, 8605, 12617, 12736,
2657 12855, 9279, 10562, -1065, 582, 249, -1065, -1065, 373, -1065,
2658 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2659 -1065, -1065, 37, 299, -1065, 509, 342, -1065, -1065, -1065,
2660 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2661 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2662 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2663 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2664 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2665 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2666 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2667 -1065, -1065, -1065, -1065, -1065, 507, -1065, -1065, -1065, 528,
2668 12135, 637, 7882, 12135, 12135, 12135, -1065, 12135, 20, 20,
2669 -1065, 563, 4625, 603, -1065, -1065, 552, 754, 80, 302,
2670 615, 306, 569, -1065, -1065, 9037, -1065, 10562, 10683, -1065,
2671 -1065, 9158, -1065, 12377, 751, -1065, 575, 8042, -1065, 8202,
2672 -1065, -1065, 589, 602, 194, -1065, 758, -1065, 687, 4962,
2673 4962, 389, -1065, 7722, 612, 340, -1065, 1436, 11, 643,
2674 -1065, 1436, 11, 639, 601, 609, -1065, 603, 638, 609,
2675 -1065, 11, 744, 1229, 12974, 646, 646, 664, -1065, 774,
2676 858, 866, 871, -1065, -1065, 855, -1065, -1065, 1196, 1209,
2677 450, -1065, -1065, -1065, -1065, 753, -1065, -1065, -1065, -1065,
2678 -1065, -1065, -1065, 8727, 10441, 10441, 10441, 10441, 10320, 12377,
2679 12377, 2298, 705, 713, -1065, 2298, -1065, 718, -1065, -1065,
2680 -1065, -1065, 715, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2681 7722, 10182, 706, -1065, -1065, 12135, 12135, 12135, 12135, 12135,
2682 -1065, -1065, 12135, 12135, 12135, 12135, 12135, 12135, 12135, 12135,
2683 -1065, 12135, -1065, -1065, 12135, 12135, 12135, 12135, 12135, 12135,
2684 12135, 12135, 12135, 12135, -1065, -1065, 13553, 10562, 13652, 6868,
2685 -1065, 551, 185, 185, 7600, 10441, 7600, 340, -1065, 703,
2686 814, -1065, -1065, 935, 874, 77, 128, 132, 851, 883,
2687 12377, 119, -1065, 741, 1039, -1065, -1065, -1065, -1065, 83,
2688 325, 529, 534, 561, 568, 632, 633, 670, -1065, -1065,
2689 -1065, -1065, 679, -1065, -1065, -1065, 15038, -1065, -1065, -1065,
2690 -1065, -1065, -1065, 390, -1065, -1065, -1065, 1072, 748, 761,
2691 -1065, 12135, 10804, -1065, -1065, 13751, 10562, 13850, -1065, -1065,
2692 11167, -1065, 11, 733, -1065, -1065, 12135, 11, -1065, 750,
2693 11, 776, -1065, 352, -1065, -1065, -1065, -1065, -1065, 9742,
2694 -1065, 12135, 757, 786, 13751, 13850, -1065, 92, 11, -1065,
2695 -1065, 8885, 789, 11, -1065, -1065, 11288, -1065, -1065, 11409,
2696 -1065, -1065, -1065, 575, 1071, -1065, -1065, 805, -1065, 12974,
2697 13949, 10562, 14048, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2698 -1065, -1065, -1065, -1065, 1215, 85, 1233, 88, 12135, -1065,
2699 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2700 -1065, -1065, -1065, -1065, -1065, -1065, 1404, -1065, -1065, -1065,
2701 -1065, -1065, 817, -1065, -1065, 11, -1065, -1065, -1065, 806,
2702 -1065, 831, 12135, -1065, 833, 134, -1065, -1065, -1065, 834,
2703 938, 838, 942, -1065, 12256, 6868, 340, 12256, 6868, 843,
2704 -1065, -1065, -1065, 138, -1065, 138, 11530, -1065, 11, 12974,
2705 844, -1065, 11530, -1065, 687, 3311, 3311, 3311, 3311, 3382,
2706 2366, 3311, 3311, 4962, 4962, 771, 771, -1065, 4036, 1358,
2707 1358, 1227, 266, 266, 687, 687, 687, 1300, 1300, 6240,
2708 5148, 6552, 5304, -1065, -1065, 602, -1065, 11, 852, 412,
2709 -1065, 539, -1065, -1065, 5928, 138, 990, -1065, 6990, 993,
2710 7356, 138, 109, 138, 984, 1004, 175, 14147, 10562, 14246,
2711 -1065, 551, -1065, 1071, -1065, -1065, -1065, 14345, 10562, 14444,
2712 6868, 12377, -1065, -1065, -1065, -1065, -1065, 3687, 12256, 12256,
2713 9742, 12135, 12135, 12135, 12135, -1065, 12135, 603, -1065, 569,
2714 4540, 5460, 11, 451, 456, 12135, 12135, -1065, -1065, -1065,
2715 -1065, 10925, -1065, 11167, -1065, -1065, 12377, 4625, -1065, -1065,
2716 602, 602, 12135, -1065, 315, -1065, -1065, 609, 12974, 805,
2717 76, 660, 11, 300, 391, 2980, -1065, 1189, -1065, 526,
2718 -1065, 862, -1065, -1065, 535, 863, -1065, 687, 1404, 1062,
2719 -1065, 875, 11, 881, -1065, 40, -1065, -1065, -1065, 12135,
2720 878, 2298, -1065, -1065, 339, -1065, -1065, -1065, 2298, -1065,
2721 -1065, 1709, -1065, -1065, 982, 3514, 138, -1065, 994, 3654,
2722 138, -1065, -1065, 888, -1065, -1065, -1065, -1065, -1065, 12135,
2723 -1065, 889, 892, 999, -1065, -1065, 805, 12974, -1065, -1065,
2724 1005, 913, 3176, -1065, -1065, -1065, 1075, 461, 13379, 13379,
2725 914, -1065, -1065, -1065, 715, 896, 599, 10804, -1065, -1065,
2726 -1065, -1065, 715, -1065, -1065, -1065, 11651, 662, -1065, 723,
2727 -1065, 1047, -1065, -1065, -1065, -1065, -1065, -1065, 1004, 138,
2728 -1065, 11772, 138, 99, 139, 11, 179, 204, 7600, 340,
2729 10441, 6868, 996, 660, -1065, 11, 138, 352, 9896, 249,
2730 432, -1065, 3731, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2731 -1065, -1065, 480, -1065, -1065, 11, 911, 352, -1065, -1065,
2732 -1065, 471, 2298, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2733 -1065, -1065, -1065, -1065, -1065, -1065, 11, -1065, 1404, -1065,
2734 1333, -1065, -1065, -1065, -1065, -1065, 912, 919, -1065, 1016,
2735 817, 924, -1065, 932, -1065, 924, 12135, 12135, -1065, 12135,
2736 12135, -1065, 951, -1065, 951, 937, 11893, 10320, 805, 10320,
2737 -1065, 12135, 14543, 10562, 14642, -1065, -1065, -1065, 1928, 1928,
2738 565, -1065, 13286, 314, 1043, -1065, 1002, -1065, -1065, 28,
2739 -1065, 960, -1065, -1065, -1065, 969, -1065, 970, -1065, 13565,
2740 -1065, -1065, -1065, -1065, 756, -1065, -1065, -1065, 328, -1065,
2741 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, 136, -1065,
2742 12135, 12256, 12256, -1065, -1065, -1065, 12256, 12256, -1065, 889,
2743 -1065, 1026, -1065, -1065, -1065, 7600, -1065, -1065, -1065, -1065,
2744 7600, 10441, 138, -1065, -1065, 138, -1065, -1065, 138, -1065,
2745 12135, -1065, 146, -1065, 214, 138, 6868, 340, 138, -1065,
2746 -1065, -1065, -1065, -1065, -1065, 12135, 12135, -1065, 12135, 12135,
2747 -1065, 11167, -1065, 11, 75, -1065, -1065, -1065, 973, 975,
2748 2298, -1065, 1709, -1065, -1065, 1709, -1065, 1709, -1065, -1065,
2749 4625, 4625, 4625, 4625, 2064, 8202, -1065, -1065, 6868, 12135,
2750 977, -1065, -1065, 12256, 4625, 6396, 6708, 11, 485, 490,
2751 -1065, -1065, -1065, -1065, 13565, 41, 11, 13472, -1065, 11,
2752 978, -1065, 394, 953, -1065, -1065, 1162, -1065, 10441, -1065,
2753 1082, 13472, 13565, 13565, 394, 1038, 1928, 1928, 565, 60,
2754 696, 13379, 13379, -1065, 4625, -1065, -1065, -1065, -1065, 12256,
2755 -1065, -1065, -1065, -1065, 13093, 185, -1065, -1065, 7478, -1065,
2756 185, -1065, -1065, 13379, -1065, -1065, 12014, 7112, -1065, 138,
2757 -1065, -1065, 12135, 983, 986, -1065, 8202, -1065, -1065, 1333,
2758 1333, 924, 987, 924, 924, 817, -1065, 11, 1007, 806,
2759 1008, 13212, -1065, 1010, -1065, 1012, 1020, -1065, -1065, -1065,
2760 1022, 499, 29, -1065, 1038, 1023, 1024, -1065, -1065, -1065,
2761 11, -1065, -1065, 11, -1065, -1065, 1028, -1065, 1033, -1065,
2762 -1065, -1065, -1065, -1065, -1065, -1065, -1065, 11, 11, 11,
2763 11, 11, 11, -1065, -1065, 1093, -1065, 1102, 210, 224,
2764 259, 6868, 1142, 6990, 185, 884, 12135, -1065, 768, -1065,
2765 -1065, 1325, 6868, 1006, 8362, 975, -1065, 1709, -1065, -1065,
2766 -1065, -1065, 1017, -1065, 13212, 1252, -1065, -1065, 1125, 1117,
2767 339, -1065, 1252, -1065, 755, -1065, -1065, 13565, -1065, 472,
2768 -1065, -1065, 13565, 13472, -1065, -1065, -1065, -1065, -1065, -1065,
2769 291, 14741, 10562, 14840, 990, -1065, 723, -1065, 10441, 10441,
2770 -1065, -1065, -1065, -1065, -1065, 627, -1065, -1065, 138, -1065,
2771 1069, 924, -1065, 1117, -1065, 1052, 1054, -1065, 14939, -1065,
2772 817, 1055, -1065, 1056, 1055, 1058, 1058, -1065, -1065, 105,
2773 166, 11, 318, 367, -1065, -1065, 7234, -1065, -1065, 1325,
2774 -1065, -1065, -1065, -1065, 1252, -1065, 755, -1065, 1059, 1060,
2775 -1065, 755, -1065, 755, -1065, -1065, 13565, 374, 725, -1065,
2776 1055, 1063, 1055, 1055, -1065, -1065, -1065, -1065, 755, -1065,
2777 -1065, -1065, 1055, -1065
2783static const yytype_int16 yydefact[] =
2785 2, 0, 0, 1, 39, 377, 378, 379, 0, 370,
2786 371, 372, 375, 373, 374, 376, 365, 366, 367, 368,
2787 389, 294, 294, 657, 656, 658, 659, 771, 0, 771,
2788 0, 0, 661, 660, 662, 755, 757, 651, 650, 756,
2789 652, 646, 647, 648, 649, 599, 667, 668, 0, 0,
2790 0, 0, 0, 0, 0, 782, 782, 105, 448, 619,
2791 619, 621, 623, 0, 0, 0, 0, 0, 0, 0,
2792 3, 769, 6, 8, 33, 38, 676, 676, 55, 77,
2793 294, 76, 0, 93, 0, 97, 107, 0, 66, 245,
2794 264, 0, 322, 0, 0, 73, 73, 0, 0, 0,
2795 0, 0, 333, 344, 78, 342, 311, 312, 598, 600,
2796 313, 314, 315, 317, 316, 318, 597, 638, 639, 596,
2797 644, 655, 663, 664, 319, 0, 320, 81, 5, 186,
2798 197, 187, 210, 183, 203, 193, 192, 213, 214, 208,
2799 191, 190, 185, 211, 215, 216, 195, 184, 198, 202,
2800 204, 196, 189, 205, 212, 207, 206, 199, 209, 194,
2801 182, 201, 200, 181, 188, 179, 180, 176, 177, 178,
2802 136, 138, 137, 171, 172, 167, 149, 150, 151, 158,
2803 155, 157, 152, 153, 173, 174, 159, 160, 164, 168,
2804 154, 156, 146, 147, 148, 161, 162, 163, 165, 166,
2805 169, 170, 175, 141, 143, 26, 139, 140, 142, 0,
2806 751, 0, 0, 302, 754, 297, 619, 0, 676, 676,
2807 289, 0, 272, 300, 91, 293, 782, 0, 663, 664,
2808 0, 320, 782, 747, 92, 771, 89, 0, 782, 469,
2809 88, 771, 772, 0, 0, 21, 257, 0, 9, 0,
2810 365, 366, 336, 470, 0, 239, 0, 333, 240, 230,
2811 231, 330, 19, 0, 0, 769, 16, 18, 771, 95,
2812 15, 326, 771, 0, 771, 771, 273, 0, 0, 771,
2813 745, 771, 0, 0, 0, 676, 676, 103, 369, 0,
2814 113, 114, 121, 449, 641, 0, 640, 642, 0, 0,
2815 0, 606, 615, 611, 617, 645, 59, 251, 252, 778,
2816 779, 4, 780, 0, 0, 0, 0, 0, 0, 0,
2817 0, 699, 0, 675, 361, 699, 673, 0, 363, 380,
2818 474, 463, 82, 478, 341, 381, 478, 459, 782, 109,
2819 0, 101, 98, 782, 63, 0, 0, 0, 0, 0,
2820 267, 268, 0, 0, 0, 0, 228, 229, 0, 0,
2821 60, 0, 265, 266, 0, 0, 0, 0, 0, 0,
2822 0, 0, 0, 0, 765, 766, 0, 782, 0, 0,
2823 72, 71, 0, 0, 0, 0, 0, 769, 351, 770,
2824 0, 400, 399, 0, 0, 663, 664, 320, 131, 132,
2825 0, 0, 134, 671, 0, 663, 664, 320, 359, 206,
2826 199, 209, 194, 176, 177, 178, 136, 137, 743, 68,
2827 67, 742, 0, 90, 768, 767, 0, 343, 601, 782,
2828 782, 144, 750, 330, 301, 753, 296, 0, 0, 0,
2829 782, 0, 0, 290, 299, 0, 782, 0, 782, 782,
2830 0, 291, 771, 0, 335, 295, 700, 771, 285, 782,
2831 771, 782, 284, 771, 340, 58, 23, 25, 24, 0,
2832 337, 0, 0, 0, 0, 0, 782, 0, 771, 328,
2833 14, 0, 94, 771, 325, 331, 777, 776, 274, 777,
2834 276, 332, 746, 0, 120, 645, 111, 106, 675, 0,
2835 0, 782, 0, 450, 625, 643, 628, 626, 620, 602,
2836 603, 622, 604, 624, 0, 0, 0, 0, 0, 781,
2837 7, 27, 28, 29, 30, 31, 56, 57, 706, 703,
2838 702, 701, 704, 712, 721, 700, 0, 733, 722, 737,
2839 736, 732, 782, 723, 698, 771, 682, 705, 707, 708,
2840 710, 684, 714, 719, 782, 725, 413, 412, 730, 684,
2841 735, 684, 739, 681, 0, 0, 0, 0, 0, 0,
2842 475, 474, 83, 0, 479, 0, 0, 271, 771, 0,
2843 99, 110, 0, 64, 237, 244, 246, 247, 248, 255,
2844 256, 249, 250, 226, 227, 253, 254, 61, 771, 241,
2845 242, 243, 232, 233, 234, 235, 236, 269, 270, 755,
2846 757, 756, 759, 468, 758, 294, 466, 771, 782, 755,
2847 757, 756, 759, 467, 294, 0, 782, 391, 0, 390,
2848 0, 0, 0, 0, 349, 0, 330, 0, 782, 0,
2849 73, 357, 131, 132, 133, 669, 355, 0, 782, 0,
2850 0, 0, 763, 764, 69, 755, 756, 294, 0, 0,
2851 0, 0, 0, 0, 0, 749, 305, 303, 298, 782,
2852 755, 756, 771, 755, 756, 0, 0, 748, 334, 773,
2853 279, 286, 281, 288, 339, 22, 0, 258, 10, 32,
2854 0, 782, 0, 20, 96, 17, 327, 771, 0, 104,
2855 760, 119, 771, 755, 756, 699, 629, 0, 605, 0,
2856 608, 0, 613, 610, 0, 0, 614, 238, 0, 411,
2857 403, 405, 771, 408, 401, 0, 680, 741, 674, 0,
2858 0, 0, 691, 713, 0, 679, 557, 724, 0, 694,
2859 734, 0, 696, 738, 47, 260, 0, 677, 49, 262,
2860 0, 472, 476, 0, 387, 388, 473, 480, 458, 302,
2861 34, 307, 0, 37, 306, 108, 102, 0, 54, 40,
2862 52, 0, 277, 300, 217, 35, 0, 320, 0, 0,
2863 0, 782, 782, 465, 86, 0, 471, 286, 782, 782,
2864 283, 464, 84, 282, 323, 382, 782, 782, 588, 782,
2865 392, 782, 347, 394, 74, 393, 348, 489, 0, 0,
2866 384, 0, 0, 760, 329, 771, 755, 756, 0, 0,
2867 0, 0, 131, 132, 135, 771, 0, 771, 0, 460,
2868 79, 41, 277, 218, 51, 225, 145, 752, 304, 292,
2869 782, 782, 471, 782, 782, 771, 782, 771, 224, 275,
2870 112, 471, 699, 451, 454, 630, 634, 635, 636, 627,
2871 637, 607, 609, 616, 612, 618, 771, 410, 0, 709,
2872 0, 740, 726, 415, 683, 711, 684, 684, 720, 725,
2873 782, 684, 731, 684, 708, 684, 0, 0, 362, 0,
2874 0, 364, 782, 80, 782, 310, 0, 0, 100, 0,
2875 782, 0, 0, 782, 0, 580, 586, 553, 0, 0,
2876 0, 527, 771, 524, 541, 619, 0, 579, 65, 498,
2877 504, 506, 508, 502, 501, 537, 503, 546, 549, 552,
2878 558, 559, 548, 511, 560, 512, 565, 566, 567, 570,
2879 571, 572, 573, 574, 576, 575, 577, 578, 556, 62,
2880 0, 0, 0, 87, 774, 782, 0, 0, 85, 589,
2881 590, 782, 591, 383, 385, 0, 11, 13, 595, 386,
2882 0, 0, 0, 395, 397, 0, 75, 490, 0, 353,
2883 0, 482, 0, 352, 471, 0, 0, 0, 0, 471,
2884 360, 744, 70, 461, 462, 0, 0, 782, 0, 0,
2885 280, 287, 338, 771, 0, 631, 402, 404, 406, 409,
2886 0, 687, 0, 689, 678, 0, 695, 0, 692, 697,
2887 48, 261, 50, 263, 771, 0, 439, 438, 0, 305,
2888 308, 36, 53, 0, 278, 755, 756, 771, 755, 756,
2889 568, 569, 132, 584, 0, 529, 771, 530, 534, 771,
2890 0, 523, 0, 0, 526, 540, 0, 581, 0, 582,
2891 0, 499, 0, 0, 547, 551, 563, 564, 0, 510,
2892 509, 0, 0, 555, 259, 46, 222, 45, 223, 0,
2893 43, 220, 44, 221, 0, 0, 593, 594, 0, 398,
2894 0, 345, 346, 0, 350, 483, 0, 0, 354, 0,
2895 670, 356, 0, 0, 442, 456, 0, 452, 632, 0,
2896 0, 684, 684, 684, 684, 782, 437, 771, 0, 708,
2897 421, 716, 717, 782, 728, 421, 421, 419, 477, 481,
2898 309, 471, 771, 521, 544, 532, 531, 522, 535, 619,
2899 771, 775, 554, 771, 505, 500, 537, 507, 538, 542,
2900 550, 545, 561, 562, 585, 520, 516, 771, 771, 771,
2901 771, 771, 771, 42, 219, 0, 592, 0, 663, 664,
2902 320, 0, 782, 0, 0, 495, 0, 484, 782, 358,
2903 453, 0, 0, 0, 0, 407, 688, 0, 685, 690,
2904 693, 418, 0, 440, 0, 422, 430, 428, 0, 715,
2905 0, 417, 0, 433, 0, 435, 528, 0, 536, 0,
2906 525, 583, 0, 0, 513, 514, 515, 517, 518, 519,
2907 330, 0, 782, 0, 782, 12, 782, 491, 0, 0,
2908 485, 487, 488, 486, 446, 771, 444, 447, 0, 455,
2909 0, 684, 441, 727, 420, 421, 421, 330, 0, 718,
2910 782, 421, 729, 421, 421, 533, 538, 539, 543, 760,
2911 329, 771, 755, 756, 587, 396, 0, 496, 497, 0,
2912 443, 457, 633, 686, 0, 425, 0, 427, 760, 329,
2913 416, 0, 434, 0, 431, 436, 0, 471, 782, 445,
2914 421, 421, 421, 421, 493, 494, 492, 426, 0, 423,
2919static const yytype_int16 yypgoto[] =
2921 -1065, -1065, -1065, 976, -1065, 926, 763, -522, -1065, -28,
2922 -1065, 769, -1065, 39, -1065, -229, -542, -67, -1065, -1065,
2923 -1065, -1065, 414, 2325, 2587, -1065, -24, -77, -1065, -1065,
2924 -6, -1065, -424, 1029, -10, 1153, -153, 10, -75, -1065,
2925 -401, 7, 2986, -392, 1155, -56, -13, -1065, -1065, -4,
2926 -1065, 3847, -1065, 1171, -1065, 623, 2014, -1065, 675, 26,
2927 604, -360, 65, 16, -1065, -319, -203, 5, -1065, -457,
2928 -20, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2929 -1065, -1065, 917, -1065, -1065, -1065, -1065, -1065, -1065, -1065,
2930 -1065, -1065, -1065, -1065, -1065, -1065, -1065, -1065, 466, -1065,
2931 -430, 1837, -372, -1065, 42, -783, -1065, -799, -785, 547,
2932 401, -92, 154, -1065, 250, -417, -1065, -1065, 383, -1065,
2933 -905, -1065, 43, 519, -1065, -1065, -1065, -1065, -1065, -1065,
2934 -1065, 449, -1065, -1065, -104, 712, -1065, -1065, -1065, 959,
2935 -1065, -1065, -1065, -1065, -773, -1065, 23, -1065, -1065, -1065,
2936 -1065, -1065, -722, -43, -1065, -1065, -1065, -1065, 253, -1065,
2937 -1065, -177, -1065, -702, -812, -939, -966, -898, -909, -1065,
2938 256, -1065, -1065, -632, 257, -1065, -782, 264, -1065, -1065,
2939 -1065, 101, -1065, -1065, 156, 562, 631, -1065, 1218, 736,
2940 1173, 1370, -1065, 836, 1486, -1065, 1719, 1813, -1065, -1065,
2941 -55, -1065, -1065, -179, -1065, -1065, -1065, -1065, -1065, -1065,
2942 -1065, 24, -1065, -1065, -1065, -1065, 27, -57, 2864, 14,
2943 1256, 3061, 1912, -1065, -1065, 63, 697, 57, -1065, -274,
2944 -500, -302, -194, -1012, -505, -313, -673, 235, -514, 624,
2945 164, -1065, -1065, -246, -1065, -706, -672, -1064, 170, 635,
2946 -1065, -541, -1065, -532, -540, -1065, -1065, -1065, 33, -394,
2947 -342, -336, -1065, -1065, -71, -1065, -14, 290, 243, -294,
2948 228, -188, -58, 1, -2
2952static const yytype_int16 yydefgoto[] =
2954 0, 1, 2, 70, 71, 72, 248, 625, 1088, 626,
2955 265, 266, 477, 267, 469, 74, 769, 75, 597, 779,
2956 583, 778, 419, 218, 219, 828, 382, 384, 385, 976,
2957 78, 79, 572, 254, 81, 82, 268, 83, 84, 85,
2958 497, 86, 221, 402, 403, 203, 204, 205, 660, 612,
2959 207, 88, 471, 372, 89, 576, 223, 273, 774, 613,
2960 791, 457, 458, 236, 237, 225, 443, 618, 763, 764,
2961 90, 379, 272, 483, 686, 808, 635, 821, 819, 650,
2962 565, 568, 256, 92, 93, 94, 95, 96, 97, 98,
2963 99, 100, 101, 333, 336, 796, 965, 811, 970, 971,
2964 756, 257, 628, 804, 972, 973, 394, 720, 721, 722,
2965 723, 542, 729, 730, 1244, 1196, 1197, 1117, 1025, 1026,
2966 1103, 1235, 1236, 103, 293, 503, 705, 1004, 853, 1107,
2967 1182, 337, 104, 105, 334, 569, 570, 752, 892, 573,
2968 574, 757, 894, 982, 812, 1233, 809, 977, 1093, 1266,
2969 1296, 1174, 918, 1134, 920, 921, 1071, 1072, 922, 1052,
2970 1044, 1046, 1047, 1048, 924, 925, 1148, 1050, 926, 927,
2971 928, 929, 930, 543, 932, 933, 934, 935, 936, 937,
2972 938, 797, 961, 1085, 967, 106, 107, 108, 109, 110,
2973 111, 112, 514, 709, 113, 516, 114, 115, 515, 517,
2974 295, 299, 300, 508, 707, 706, 855, 1005, 1108, 1184,
2975 859, 116, 117, 296, 118, 119, 120, 121, 228, 229,
2976 124, 230, 231, 646, 820, 322, 323, 324, 325, 874,
2977 732, 545, 546, 547, 548, 884, 550, 551, 552, 553,
2978 1122, 1123, 554, 555, 556, 557, 558, 1124, 1125, 559,
2979 560, 561, 562, 563, 726, 422, 651, 278, 461, 233,
2980 127, 690, 616, 654, 649, 426, 311, 453, 454, 786,
2981 1054, 488, 629, 389, 270
2987static const yytype_int16 yytable[] =
2989 128, 427, 297, 294, 206, 298, 220, 220, 549, 644,
2990 342, 630, 549, 312, 735, 245, 123, 617, 975, 386,
2991 378, 226, 226, 566, 206, 264, 381, 381, 880, 451,
2992 381, 724, 208, 425, 614, 978, 614, 288, 240, 312,
2993 615, 73, 624, 746, 460, 420, 750, 544, 239, 232,
2994 232, 544, 208, 276, 280, 206, 677, 949, 875, 739,
2995 274, 742, 306, 269, 287, 288, 882, 123, 123, 1007,
2996 383, 291, 313, 387, 326, 326, 923, 923, 288, 288,
2997 288, 224, 234, 388, 614, 1009, 672, 490, 275, 279,
2998 657, 492, 220, 271, 305, 677, 332, 206, 699, 291,
2999 1049, -117, -122, 614, 1105, 614, 331, 226, 1135, 615,
3000 478, 624, 396, 406, 406, 406, 831, 834, -126, 1118,
3001 511, 513, 1146, 668, -126, 775, 1040, 1041, 826, 1060,
3002 1060, 668, 614, 614, 328, 232, 803, -665, 1252, 691,
3003 327, 702, 1060, 1140, 3, 758, 931, 931, 754, 1136,
3004 539, 711, -657, -123, 715, -782, 447, -130, 614, 627,
3005 614, 437, 1159, 1162, -128, 1149, 691, 423, 736, 1237,
3006 736, 642, -122, 242, 463, 643, 465, 321, 766, -128,
3007 -665, -657, 540, 1061, 264, 475, 737, 578, 1073, 241,
3008 877, 242, -113, 871, 242, 794, -544, 883, 627, 1106,
3009 -129, 802, 871, 806, -125, 712, 755, 312, 716, 496,
3010 1252, -117, 1192, 724, 867, -122, 326, 326, 502, -771,
3011 329, 473, 242, -122, 444, 220, 123, 220, 220, -127,
3012 444, -117, -113, -755, -117, 264, 462, -123, -117, -124,
3013 226, 1255, 226, 459, 247, 128, 1256, 381, 381, 381,
3014 381, 480, 526, 527, -117, 824, -755, 1237, 451, 1158,
3015 1161, 123, -755, 123, 288, -126, 481, -126, 232, 309,
3016 232, 310, -130, 269, 1257, 329, 328, 123, 815, 239,
3017 331, 438, 439, -114, 1152, 1153, 73, -121, 825, 677,
3018 521, 522, 523, 524, -119, 614, -756, 614, 291, 988,
3019 452, 1096, 455, 691, -129, 614, 309, 614, 310, 1149,
3020 495, 1007, 264, 691, 1149, 1258, 888, 243, 381, 246,
3021 891, 288, 639, -756, 1185, -116, -128, 123, -128, 312,
3022 -120, -125, 123, 641, -116, 710, 577, 710, 882, 960,
3023 1014, 577, 875, 328, 345, 309, 330, 310, 580, 249,
3024 269, 238, 73, 768, 123, 291, 631, 525, 633, -118,
3025 953, 632, 668, 724, 668, 724, 898, 220, 958, -115,
3026 -122, 1175, -122, 634, 622, 462, 1011, 1013, 842, 979,
3027 -127, 1016, 983, 1018, -123, 1019, -123, -124, 1258, 319,
3028 320, 923, 549, 123, -656, 1231, 990, 533, 123, -666,
3029 123, 330, -666, 854, 623, 1232, 449, 261, 851, 1075,
3030 1077, 369, 370, 371, 1080, 1082, -118, 534, 549, -130,
3031 931, -130, 622, -656, 496, 549, 1068, 577, 577, 768,
3032 768, 544, 931, 301, -123, -116, 220, -123, 577, 931,
3033 931, -130, 430, 622, 462, 302, 577, 577, 538, 539,
3034 -94, -129, 907, -129, -114, -116, 685, 444, -116, 444,
3035 335, 931, -116, 339, 1099, 206, 839, -771, 668, 1112,
3036 -108, 622, 534, 623, 577, 669, 242, -130, -125, 288,
3037 -125, 540, 1069, 1126, 464, 1070, 60, 845, 879, 476,
3038 476, 220, 1127, 208, 1250, 123, -115, -121, 622, 462,
3039 309, 623, 310, 538, 496, 1294, 1129, 1139, 747, 849,
3040 1121, 482, 788, 291, 242, 484, 504, 512, 1043, 697,
3041 303, 984, 875, 304, -129, -129, -118, -127, 623, -127,
3042 862, 989, 948, 948, -124, 862, -124, 1163, 504, 549,
3043 727, 338, 1091, 1037, -120, 1092, -118, -125, 1094, -118,
3044 1003, 843, 727, -118, 744, 1098, 844, 748, 1101, 288,
3045 614, 430, 614, 818, 487, 487, 615, -116, 624, 487,
3046 760, 493, 506, 507, 805, 1191, 770, 343, 544, 123,
3047 997, 762, 123, 1201, 827, 788, -125, 762, 319, 320,
3048 789, -127, 504, 291, 506, 507, -130, 1142, -658, 955,
3049 799, 504, 801, -659, 724, 724, -115, 677, 875, 429,
3050 1097, 1186, 1188, 1189, 1190, -124, 444, 642, 1051, 847,
3051 -125, 1042, 793, 850, 798, -127, -115, -658, 220, -115,
3052 -661, 784, -659, -115, -124, 622, 462, -660, 220, 789,
3053 792, 783, 123, 839, 123, 622, 462, 836, 506, 507,
3054 790, 374, 770, 770, 1246, 793, 206, 506, 507, -661,
3055 1238, 1253, 431, 1127, 123, 623, -660, 444, 871, 1179,
3056 1127, 963, 1127, 830, -127, 623, 1154, 964, 288, 375,
3057 424, 1121, 668, 790, 208, 241, 1121, 861, 1121, 793,
3058 1121, -369, 496, 433, -118, 678, 864, 549, 440, 955,
3059 680, -662, -653, 682, 441, 904, 684, 442, 1203, 1205,
3060 1280, 1119, 291, 1171, 846, 448, 783, 790, 1173, -369,
3061 -369, 694, 768, 768, 450, 993, 696, 768, 768, -329,
3062 -662, -653, 470, 1291, -124, 919, 919, 969, 964, -654,
3063 964, 1273, 1127, 1131, 1127, 374, 235, 288, 652, 1127,
3064 807, 1127, 1133, 381, -115, 1137, 486, -329, -329, 238,
3065 1121, 986, 1121, 242, 489, 345, 1127, 1121, -654, 1121,
3066 479, 242, 420, 375, 376, 1155, -369, 653, -93, 577,
3067 577, 291, 1269, 964, 1121, 810, 577, 577, 728, 242,
3068 985, 491, 947, 947, 962, 968, 987, 974, 485, 974,
3069 494, 762, 1227, 321, 768, 466, 948, 528, 1271, 529,
3070 530, 531, 532, 533, -329, 467, 468, -756, 948, 499,
3071 846, 765, 571, 374, 206, 948, 948, 374, 1275, 1277,
3072 377, 518, 123, 534, 1282, 123, 1284, 1285, 577, 577,
3073 564, 577, 577, 374, 444, 1066, 1067, 948, -672, 345,
3074 768, 375, 445, 567, -771, 375, 474, 536, 242, 1059,
3075 1056, 581, 1261, 519, 538, 539, 1217, 1218, 1219, 1045,
3076 636, 375, 500, 1297, 1299, 1300, 1301, -755, 727, 614,
3077 645, 614, 1119, 662, 1145, 1303, 1065, 691, 780, 1119,
3078 1027, 679, 1027, 220, 1157, 1160, 663, 540, 577, 640,
3079 622, 462, 350, 351, 381, 681, 614, 785, 446, -756,
3080 688, 123, 446, 123, 367, 368, 369, 370, 371, 91,
3081 -653, 504, 947, 947, 1228, 1229, 947, -663, 501, 1100,
3082 623, 683, 1115, 227, 227, -664, 1031, 1087, 1032, 689,
3083 -320, -414, 1089, 947, -108, 770, 770, 1090, -653, -653,
3084 770, 770, -654, 577, 879, -663, -663, 362, 363, 1086,
3085 698, 1119, 785, -664, -664, 869, 582, 1287, -320, -320,
3086 91, 91, 725, 881, 289, 505, 885, 506, 507, 123,
3087 -654, -654, 498, 498, 123, 227, 731, 487, 734, 738,
3088 740, 381, 785, 741, 743, 577, 751, 1128, 795, 767,
3089 123, 1132, 289, -755, 374, -653, 800, 787, -755, 807,
3090 227, 227, -663, 873, 227, 393, 404, 404, 1045, 227,
3091 -664, 810, -760, 863, 865, -320, 886, 770, 1045, 1045,
3092 868, 80, 375, 637, 1143, -756, 870, -654, 889, 123,
3093 -756, 893, 123, 897, -300, 80, 80, 896, 900, 899,
3094 919, 950, 658, 659, 1057, 954, 37, 38, 947, 40,
3095 1172, 947, 964, 664, 288, -760, 1001, 1010, 737, 1178,
3096 991, 675, 676, 770, 1012, 947, 947, 947, 1183, 1015,
3097 947, 947, 80, 80, 1209, 947, 947, 1017, 1000, 638,
3098 1002, 1024, -301, -760, -760, 1055, 1223, 80, 1169, 692,
3099 1062, 288, 123, 1115, 1058, 785, 1141, 947, 374, 1006,
3100 1115, 123, 1115, 727, 528, 785, 529, 530, 531, 532,
3101 123, 727, 80, 80, 1063, 1064, 80, 1084, 1109, 91,
3102 1110, 80, -303, 1138, 905, 406, 375, 647, 504, 1060,
3103 -330, 1180, 1187, 1224, 374, 1226, 1181, 1193, -760, 1220,
3104 -760, 963, 227, -755, 227, 227, 1240, 1242, 227, 1239,
3105 227, 381, 381, 1195, 91, 1200, 91, 1202, -330, -330,
3106 968, 374, 375, 902, 288, 1204, 974, -304, 1207, 1208,
3107 91, 1247, 1115, 1212, 1115, 123, 374, 123, 1213, 1115,
3108 1272, 1115, 509, 648, 506, 507, 123, 661, 123, 375,
3109 1221, 289, 785, 1053, 1267, 1268, 1115, 1274, 406, 1276,
3110 1281, 1283, 220, 1286, 375, 1248, -755, -756, 1298, 622,
3111 462, 947, 798, 472, 974, -330, 947, 947, 504, 903,
3112 91, 227, 227, 227, 227, 91, 227, 227, 1288, 520,
3113 693, 80, 992, 856, 857, 1111, 858, 1113, 727, 623,
3114 695, 391, 1114, 46, 47, 408, 1222, 91, 289, 1120,
3115 373, 829, 504, 966, 80, 866, 80, 80, 1265, 1008,
3116 80, 648, 80, 1194, 1116, 504, 80, 1028, 80, 994,
3117 123, 504, 509, 753, 506, 507, 974, 1142, 41, 42,
3118 43, 44, 80, 1104, 227, 575, 91, 917, 917, 504,
3119 947, 91, 227, 91, 528, 345, 529, 530, 531, 532,
3120 533, 1295, 1289, 1156, 1104, 1147, 509, 227, 506, 507,
3121 1150, 1151, 358, 359, 1144, 1264, 428, 785, 1225, 510,
3122 534, 506, 507, 833, 835, 708, 785, 506, 507, 785,
3123 939, 939, 80, 80, 80, 80, 80, 80, 80, 80,
3124 833, 835, 714, 713, 536, 506, 507, 421, 878, 785,
3125 537, 538, 539, 227, 1249, 1245, 876, 848, 1210, 80,
3126 367, 368, 369, 370, 371, 1206, 0, 1234, 345, 529,
3127 530, 531, 532, 0, 0, 528, 1211, 529, 530, 531,
3128 532, 0, 0, 0, 540, 358, 359, 541, 91, 0,
3129 1214, 1215, 1216, 0, 951, 952, 80, 1104, 80, 940,
3130 940, 956, 957, 80, 80, 80, 289, 0, 227, 0,
3131 0, 0, 1241, 0, 0, 0, 0, 917, 917, 80,
3132 1053, 917, 0, 0, 0, 718, 345, 1251, 0, 1254,
3133 364, 365, 366, 367, 368, 369, 370, 371, 917, 0,
3134 785, 785, 785, 358, 359, 0, 528, 0, 529, 530,
3135 531, 532, 0, 995, 996, 0, 998, 999, 0, 0,
3136 939, 939, 0, 0, 939, 80, 314, 315, 316, 317,
3137 318, 227, 91, 0, 227, 91, 0, 0, 0, 0,
3138 0, 939, 0, 227, 0, 0, 289, 0, 0, 776,
3139 366, 367, 368, 369, 370, 371, 718, 0, 0, 1290,
3140 80, 1292, 719, 0, 941, 941, 0, 0, 1293, 0,
3141 0, 0, 0, 1033, 0, 1270, 0, 0, 0, 0,
3142 80, 0, 0, 1302, 0, 0, 0, 0, 0, 940,
3143 940, 0, 0, 940, 0, 91, 0, 91, 0, 0,
3144 0, 785, 0, 0, 0, 227, 0, 0, 0, 0,
3145 940, 0, 0, 917, 0, 227, 917, 91, 227, 0,
3146 0, 0, 0, 0, 0, 776, 776, 0, 1079, 0,
3147 917, 917, 917, 0, 0, 917, 917, 0, 0, 0,
3148 917, 917, 0, 80, 80, 0, 80, 80, 0, 0,
3149 0, 0, 0, 227, 0, 80, 939, 0, 0, 939,
3150 0, 80, 917, 0, 0, 289, 0, 0, 0, 0,
3151 1102, 0, 0, 939, 939, 939, 1076, 1078, 939, 939,
3152 0, 1081, 1083, 939, 939, 0, 0, 0, 0, 0,
3153 0, 0, 0, 0, 941, 941, 0, 0, 941, 0,
3154 0, 0, 0, 0, 0, 939, 0, 80, 0, 80,
3155 0, 0, 0, 0, 0, 941, 0, 80, 0, 0,
3156 1076, 1078, 0, 1081, 1083, 940, 0, 80, 940, 80,
3157 80, 0, 0, 0, 289, 0, 0, 80, 80, 0,
3158 0, 0, 940, 940, 940, 0, 0, 940, 940, 0,
3159 0, 0, 940, 940, 0, 0, 0, 0, 0, 0,
3160 0, 0, 0, 0, 0, 80, 0, 0, 0, 0,
3161 0, 0, 0, 0, 940, 0, 917, 0, 0, 0,
3162 0, 917, 917, 0, 0, 91, 0, 227, 91, 0,
3163 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3164 0, 0, 0, 0, 1164, 0, 0, 0, 0, 0,
3165 0, 528, 0, 529, 530, 531, 532, 533, 0, 939,
3166 0, 0, 0, 0, 939, 939, 0, 1164, 0, 0,
3167 941, 0, 0, 941, 0, 0, 0, 534, 0, 0,
3168 0, 0, 0, 0, 0, 0, 0, 941, 941, 941,
3169 0, 535, 941, 941, 0, 917, 0, 941, 941, 0,
3170 0, 536, 0, 0, 91, 0, 91, 0, 538, 539,
3171 227, 0, 0, 0, 0, 0, 0, 0, 0, 941,
3172 0, 0, 0, 0, 0, 0, 0, 0, 940, 102,
3173 0, 0, 0, 940, 940, 0, 0, 80, 939, 80,
3174 80, 540, 0, 102, 102, 0, 0, 0, 0, 0,
3175 0, 0, 0, 0, 0, 0, 0, 0, 776, 776,
3176 0, 0, 0, 776, 776, 0, 0, 0, 0, 0,
3177 0, 0, 91, 0, 0, 0, 0, 91, 227, 0,
3178 102, 102, 0, 0, 0, 0, 0, 0, 0, 0,
3179 0, 0, 0, 91, 0, 102, 0, 0, 0, 0,
3180 0, 0, 0, 0, 126, 0, 0, 940, 0, 0,
3181 0, 0, 0, 0, 0, 0, 80, 0, 80, 0,
3182 102, 102, 80, 0, 102, 0, 0, 0, 0, 102,
3183 0, 0, 91, 941, 0, 91, 0, 0, 941, 941,
3184 776, 942, 942, 0, 0, 0, 0, 0, 0, 0,
3185 0, 23, 24, 25, 26, 126, 126, 0, 0, 292,
3186 0, 0, 0, 0, 0, 227, 0, 32, 33, 34,
3187 80, 80, 0, 0, 0, 80, 80, 41, 42, 43,
3188 44, 45, 0, 0, 80, 0, 776, 292, 0, 80,
3189 80, 1167, 0, 0, 0, 91, 0, 0, 0, 0,
3190 397, 407, 407, 0, 91, 80, 0, 0, 0, 0,
3191 0, 0, 941, 91, 0, 0, 0, 0, 0, 0,
3192 0, 0, 0, 0, 0, 0, 0, 0, 1199, 58,
3193 59, 60, 61, 62, 63, 64, 65, 66, 0, 102,
3194 0, 0, 0, 0, 80, 0, 0, 80, 0, 0,
3195 0, 0, 80, 0, 0, 0, 0, 0, 0, 0,
3196 277, 0, 102, 0, 102, 102, 283, 0, 102, 0,
3197 102, 942, 942, 0, 102, 942, 102, 80, 91, 0,
3198 91, 0, 0, 0, 0, 0, 0, 0, 0, 91,
3199 102, 91, 942, 0, 0, 0, 0, 0, 80, 0,
3200 0, 1243, 0, 0, 0, 0, 528, 80, 529, 530,
3201 531, 532, 533, 0, 126, 0, 80, 0, 0, 0,
3202 0, 0, 0, 0, 0, 80, 0, 0, 0, 227,
3203 0, 0, 534, 0, 0, 227, 227, 0, 943, 943,
3204 102, 102, 102, 102, 102, 102, 102, 102, 0, 126,
3205 0, 126, 0, 0, 0, 0, 536, 0, 0, 0,
3206 0, 0, 537, 538, 539, 126, 0, 102, 0, 0,
3207 0, 0, 0, 91, 0, 0, 0, 0, 0, 0,
3208 0, 0, 0, 0, 0, 0, 292, 0, 0, 0,
3209 80, 0, 80, 0, 0, 0, 540, 0, 0, 541,
3210 0, 80, 0, 80, 102, 0, 102, 942, 0, 0,
3211 942, 102, 102, 102, 432, 126, 242, 434, 435, 436,
3212 126, 0, 0, 0, 942, 942, 942, 102, 0, 942,
3213 942, 0, 0, 0, 942, 942, 0, 0, 0, 344,
3214 0, 80, 126, 292, 0, 0, 0, 80, 80, 0,
3215 0, 0, 0, 0, 944, 944, 942, 0, 0, 0,
3216 0, 0, 0, 0, 0, 0, 0, 0, 943, 943,
3217 0, 0, 943, 102, 0, 0, 0, 0, 0, 0,
3218 0, 126, 0, 0, 0, 80, 126, 0, 126, 943,
3219 0, 0, 345, 346, 347, 348, 349, 350, 351, 352,
3220 353, 354, 355, 356, 357, 0, 0, 0, 102, 358,
3221 359, 0, 0, 0, 0, 360, 0, 76, 0, 0,
3222 0, 0, 0, 0, 0, 0, 0, 0, 102, 0,
3223 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3224 528, 0, 529, 530, 531, 532, 533, 0, 0, 0,
3225 361, 0, 362, 363, 364, 365, 366, 367, 368, 369,
3226 370, 371, 0, 0, 0, 0, 534, 0, 76, 76,
3227 942, 0, 285, 0, 0, 942, 942, 0, 0, 0,
3228 535, 0, 0, 126, 944, 944, 0, 0, 944, 0,
3229 536, 102, 102, 0, 102, 102, 537, 538, 539, 0,
3230 285, 292, 0, 102, 943, 944, 0, 943, 0, 102,
3231 0, 0, 0, 285, 285, 285, 0, 0, 0, 0,
3232 0, 943, 943, 943, 0, 0, 943, 943, 0, 0,
3233 540, 943, 943, 541, 345, 346, 347, 348, 349, 350,
3234 351, 352, 0, 354, 355, 665, 667, 0, 0, 942,
3235 0, 358, 359, 943, 277, 102, 0, 102, 0, 0,
3236 0, 0, 0, 0, 0, 102, 0, 126, 0, 0,
3237 126, 0, 0, 0, 0, 102, 0, 102, 102, 0,
3238 0, 292, 0, 0, 777, 102, 102, 945, 945, 0,
3239 667, 0, 0, 277, 362, 363, 364, 365, 366, 367,
3240 368, 369, 370, 371, 0, 0, 0, 0, 0, 0,
3241 0, 0, 0, 102, 0, 0, 0, 0, 0, 0,
3242 944, 0, 0, 944, 0, 0, 0, 76, 0, 0,
3243 126, 0, 126, 0, 0, 0, 0, 944, 944, 944,
3244 0, 0, 944, 944, 0, 0, 0, 944, 944, 0,
3245 0, 0, 126, 0, 0, 0, 733, 0, 0, 0,
3246 777, 777, 76, 0, 76, 0, 0, 943, 0, 944,
3247 0, 0, 943, 943, 0, 0, 0, 0, 76, 77,
3248 761, 946, 946, 0, 0, 0, 773, 0, 0, 0,
3249 0, 0, 0, 0, 0, 0, 0, 0, 0, 285,
3250 292, 0, 0, 0, 0, 0, 0, 0, 0, 860,
3251 0, 0, 0, 0, 0, 0, 0, 945, 945, 0,
3252 0, 945, 0, 0, 0, 0, 0, 0, 76, 0,
3253 77, 77, 0, 76, 286, 0, 0, 0, 945, 0,
3254 0, 0, 0, 0, 0, 102, 943, 102, 102, 0,
3255 0, 0, 0, 0, 0, 76, 285, 0, 0, 0,
3256 0, 0, 286, 0, 0, 837, 0, 0, 0, 292,
3257 838, 0, 0, 0, 0, 286, 286, 286, 0, 0,
3258 0, 0, 0, 944, 0, 667, 0, 277, 944, 944,
3259 0, 0, 0, 0, 76, 0, 0, 0, 0, 76,
3260 0, 76, 0, 0, 0, 0, 0, 0, 0, 0,
3261 0, 946, 946, 0, 0, 946, 0, 0, 0, 0,
3262 126, 0, 0, 126, 102, 0, 102, 0, 0, 0,
3263 102, 0, 946, 872, 0, 0, 0, 0, 0, 0,
3264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3265 0, 0, 0, 945, 0, 0, 945, 0, 0, 0,
3266 0, 0, 944, 895, 0, 0, 0, 0, 0, 0,
3267 945, 945, 945, 0, 0, 945, 945, 0, 102, 102,
3268 945, 945, 0, 102, 102, 0, 0, 0, 0, 77,
3269 0, 667, 102, 0, 0, 0, 76, 102, 102, 126,
3270 959, 126, 945, 0, 0, 0, 0, 0, 0, 0,
3271 0, 0, 0, 102, 285, 981, 0, 0, 0, 0,
3272 0, 0, 0, 0, 77, 0, 77, 0, 0, 0,
3273 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3274 77, 0, 0, 0, 0, 0, 0, 946, 0, 0,
3275 946, 0, 102, 777, 777, 102, 122, 0, 777, 777,
3276 102, 286, 0, 0, 946, 946, 946, 126, 0, 946,
3277 946, 0, 126, 0, 946, 946, 0, 0, 0, 0,
3278 76, 0, 0, 76, 0, 102, 0, 0, 126, 0,
3279 77, 0, 0, 0, 285, 77, 946, 76, 0, 0,
3280 1030, 0, 0, 0, 0, 0, 102, 122, 122, 0,
3281 0, 290, 0, 0, 0, 102, 945, 77, 286, 0,
3282 0, 945, 945, 0, 102, 0, 0, 126, 0, 0,
3283 126, 0, 0, 102, 0, 777, 0, 0, 0, 290,
3284 0, 0, 0, 76, 0, 76, 0, 0, 0, 0,
3285 0, 0, 395, 405, 405, 405, 77, 0, 0, 0,
3286 0, 77, 0, 77, 0, 76, 0, 0, 0, 0,
3287 0, 0, 0, 76, 76, 0, 0, 0, 87, 0,
3288 0, 777, 0, 0, 1095, 0, 1170, 0, 0, 0,
3289 126, 0, 0, 0, 0, 945, 0, 0, 102, 126,
3290 102, 0, 0, 0, 0, 277, 0, 0, 126, 102,
3291 946, 102, 0, 285, 0, 946, 946, 0, 0, 0,
3292 0, 0, 528, 407, 529, 530, 531, 532, 533, 87,
3293 87, 0, 0, 1130, 0, 0, 0, 0, 0, 0,
3294 0, 0, 0, 0, 0, 0, 0, 0, 534, 102,
3295 0, 0, 0, 125, 0, 102, 102, 0, 77, 0,
3296 0, 0, 535, 0, 0, 0, 122, 0, 0, 0,
3297 0, 0, 536, 126, 392, 126, 286, 0, 537, 538,
3298 539, 0, 285, 0, 126, 0, 126, 0, 0, 946,
3299 0, 0, 0, 102, 0, 0, 407, 0, 0, 0,
3300 1177, 122, 0, 122, 125, 125, 0, 0, 0, 0,
3301 0, 0, 540, 0, 0, 541, 0, 122, 0, 0,
3302 0, 0, 0, 0, 0, 0, 0, 852, 0, 0,
3303 0, 0, 0, 76, 0, 0, 76, 0, 290, 0,
3304 0, 0, 77, 0, 0, 77, 0, 0, 0, 0,
3305 0, 0, 0, 0, 0, 0, 286, 0, 0, 77,
3306 0, 0, 0, 0, 0, 0, 0, 122, 126, 0,
3307 0, 0, 122, 0, 0, 0, 0, 0, 0, 0,
3308 1230, 0, 0, 0, 0, 0, 0, 0, 87, 0,
3309 0, 0, 0, 0, 122, 290, 0, 0, 0, 0,
3310 0, 0, 0, 0, 0, 77, 0, 77, 0, 0,
3311 901, 0, 76, 0, 76, 0, 0, 0, 0, 0,
3312 0, 0, 0, 87, 0, 87, 0, 77, 0, 0,
3313 0, 0, 0, 122, 0, 77, 77, 0, 122, 87,
3314 122, 0, 0, 0, 345, 346, 347, 348, 349, 350,
3315 351, 352, 353, 354, 355, 356, 357, 0, 0, 0,
3316 0, 358, 359, 125, 0, 0, 76, 76, 0, 0,
3317 0, 76, 76, 0, 0, 286, 0, 0, 0, 0,
3318 76, 0, 0, 0, 0, 76, 0, 0, 0, 87,
3319 0, 0, 0, 0, 87, 0, 0, 0, 125, 0,
3320 125, 76, 361, 0, 362, 363, 364, 365, 366, 367,
3321 368, 369, 370, 371, 125, 0, 87, 0, 0, 0,
3322 0, -272, 0, 0, 0, 0, 0, 0, 0, 0,
3323 0, 0, 0, 0, 0, 122, 0, 0, 0, 0,
3324 76, 0, 0, 76, 286, 0, 0, 0, 76, 0,
3325 0, 0, 0, 290, 0, 87, 0, 0, 0, 0,
3326 87, 0, 87, 0, 125, 0, 0, 0, 0, 125,
3327 0, 0, 0, 0, 0, 0, 0, 0, 0, 345,
3328 -783, -783, -783, -783, 350, 351, 0, 0, -783, -783,
3329 0, 125, 0, 0, 76, 77, 358, 359, 77, 285,
3330 0, 0, 0, 76, 0, 0, 0, 0, 0, 0,
3331 0, 0, 76, 0, 0, 0, 0, 0, 0, 122,
3332 0, 76, 122, 0, 0, 0, 0, 0, 0, 0,
3333 125, 0, 0, 290, 0, 125, 285, 125, 0, 362,
3334 363, 364, 365, 366, 367, 368, 369, 370, 371, 0,
3335 345, 346, 347, 348, 349, 350, 351, 87, 0, 354,
3336 355, 0, 0, 0, 0, 0, 0, 358, 359, 0,
3337 0, 0, 0, 0, 77, 0, 77, 0, 0, 0,
3338 0, 0, 122, 0, 122, 0, 76, 0, 76, 0,
3339 0, 0, 0, 0, 0, 0, 0, 76, 0, 76,
3340 0, 0, 0, 0, 122, 0, 0, 0, 0, 285,
3341 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
3342 0, 0, 0, 0, 0, 0, 0, 0, 77, 77,
3343 0, 0, 125, 77, 77, 0, 0, 0, 0, 0,
3344 0, 87, 77, 0, 87, 0, 0, 77, 887, 0,
3345 0, 0, 290, 0, 0, 0, 0, 0, 771, 0,
3346 0, 0, 0, 77, 0, 0, 0, 0, 0, 0,
3347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3348 0, 76, 345, 346, 347, 348, 349, 350, 351, 352,
3349 353, 354, 355, 356, 357, 0, 0, 0, 0, 358,
3350 359, 0, 77, 0, 87, 77, 87, 0, 0, 0,
3351 77, 0, 0, 0, 0, 0, 125, 0, 0, 125,
3352 0, 290, 0, 0, 0, 0, 87, 0, 0, 0,
3353 0, 0, 0, 125, 771, 771, 0, 0, 0, 0,
3354 361, 0, 362, 363, 364, 365, 366, 367, 368, 369,
3355 370, 371, 0, 0, 0, 0, 77, 0, 0, 0,
3356 0, 286, 0, 0, 0, 77, 0, 0, 0, 0,
3357 0, 0, 122, 0, 77, 122, 0, -782, 0, 125,
3358 0, 125, 0, 77, 0, -782, -782, -782, 890, 0,
3359 -782, -782, -782, 0, -782, 0, 0, 0, 286, 0,
3360 0, 125, -782, -782, -782, 0, 0, 0, 0, 125,
3361 125, 0, 0, 0, -782, -782, 0, -782, -782, -782,
3362 -782, -782, 345, 346, 347, 348, 349, 350, 351, 352,
3363 353, 354, 355, 356, 357, 0, 0, 0, 0, 358,
3364 359, 0, 0, 0, 0, -782, -782, 0, 77, 0,
3365 77, 122, 0, 122, 0, 0, 0, 0, 0, 77,
3366 0, 77, 0, 0, 0, 901, 0, 0, 0, 0,
3367 0, 286, 0, 0, -782, -782, 0, 0, 0, 0,
3368 361, 0, 362, 363, 364, 365, 366, 367, 368, 369,
3369 370, 371, 0, 0, 87, 0, 0, 87, -782, 345,
3370 346, 347, 348, 349, 350, 351, 352, 353, 354, 355,
3371 356, 357, 0, 0, 0, 0, 358, 359, 0, 122,
3372 0, 0, 0, 0, 122, 0, 0, 0, 0, -782,
3373 -782, 0, 0, 0, 238, -782, 0, -782, 0, -782,
3374 122, 0, 0, 77, 0, 0, 0, 0, 0, 0,
3375 0, 0, 0, 222, 222, 0, 0, 361, 0, 362,
3376 363, 364, 365, 366, 367, 368, 369, 370, 371, 125,
3377 0, 0, 125, 87, 0, 87, 0, 0, 0, 122,
3378 0, 0, 122, 0, 0, 255, 258, 259, 260, 0,
3379 0, 0, 222, 222, 0, 0, 0, 0, 0, 0,
3380 0, 0, 0, 0, 0, 307, 308, 0, 0, 0,
3381 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3382 0, 0, 0, 0, 0, 0, 0, 771, 771, 0,
3383 0, 0, 771, 771, 0, 0, 0, 0, 1168, 222,
3384 0, 87, 122, 0, 0, 0, 87, 0, 125, 0,
3385 125, 122, 0, 0, 0, 0, 0, 0, 0, 0,
3386 122, 0, 87, 0, 0, 0, 0, 0, 0, 0,
3387 0, 0, 0, 0, 0, 405, 0, 0, 0, 0,
3388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3389 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3390 0, 87, 125, 125, 87, 0, 0, 125, 125, 771,
3391 0, 0, 0, 0, 0, 0, 125, 0, 0, 0,
3392 0, 125, 0, 0, 0, 122, 0, 122, 0, 0,
3393 0, 0, 0, 0, 0, 0, 122, 125, 122, 0,
3394 0, 0, 0, 0, 0, 0, 0, 222, 405, 0,
3395 222, 222, 222, 0, 307, 771, 0, 0, 0, 0,
3396 1166, 0, 0, 0, 87, 0, 0, 0, 0, 0,
3397 0, 0, 222, 87, 222, 222, 125, 0, 0, 125,
3398 0, 0, 87, 0, 125, 0, 0, 0, 0, 0,
3399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3400 0, 0, 0, 0, 345, 346, 347, 348, 349, 350,
3401 351, 352, 353, 354, 355, 356, 357, 0, 0, 0,
3402 122, 358, 359, 0, 0, 0, 0, 0, 0, 0,
3403 125, 0, 0, 0, 0, 0, 0, 0, 0, 125,
3404 0, 0, 0, 0, 0, 0, 0, 87, 125, 87,
3405 0, 0, 0, 0, 0, 0, 0, 125, 87, 0,
3406 87, 0, 361, 0, 362, 363, 364, 365, 366, 367,
3407 368, 369, 370, 371, 0, 0, 0, 0, 0, 0,
3408 0, 0, 584, 585, 586, 587, 588, 0, 242, 589,
3409 590, 591, 592, 593, 594, 595, 596, 0, 598, 0,
3410 0, 599, 600, 601, 602, 603, 604, 605, 606, 607,
3411 608, 0, 0, 0, 222, 0, 0, 0, 0, 0,
3412 0, 0, 125, 0, 125, 0, 0, 0, 0, 0,
3413 0, 0, 0, 125, 0, 125, 0, 0, 0, 0,
3414 0, 0, 87, 0, 0, 0, 0, 0, 0, 0,
3415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3417 0, 0, 0, 0, 0, 0, 0, 0, 222, 222,
3418 0, 0, 0, 222, 0, 0, 0, 222, 0, 0,
3419 0, 0, 0, 260, 0, 0, 0, 0, 0, 0,
3420 0, 0, 0, 0, 0, 0, 0, 0, 687, 0,
3421 0, 0, 0, 0, 0, 0, 0, 125, 0, 0,
3422 0, 0, 0, 222, 0, 0, 222, 0, 0, 0,
3423 0, 0, 0, 0, 0, 0, 0, 0, 222, 0,
3424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3425 0, 0, 0, 0, 0, 717, 0, 0, 0, 0,
3426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3427 0, 0, 0, 0, 0, -782, 4, 0, 5, 6,
3428 7, 8, 9, 0, 0, 0, 10, 11, 0, 222,
3429 0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3430 0, 745, 0, 0, 749, 20, 21, 22, 23, 24,
3431 25, 26, 0, 222, 27, 0, 0, 0, 0, 772,
3432 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
3433 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3434 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3435 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3436 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3437 0, 0, 0, 0, 52, 222, 0, 53, 54, 0,
3438 55, 56, 0, 57, 0, 222, 58, 59, 60, 61,
3439 62, 63, 64, 65, 66, 832, 832, 0, 222, 745,
3440 749, 832, 0, 222, 0, 0, 0, 0, 0, 0,
3441 0, 0, 832, 832, 0, 0, 0, 0, 222, 0,
3442 222, 0, 0, 67, 68, 69, 0, 0, 0, 832,
3443 -760, 0, 0, 0, 0, -782, 0, -782, -760, -760,
3444 -760, 0, 0, -760, -760, -760, 0, -760, 0, 0,
3445 0, 0, 0, 0, 0, -760, -760, -760, -760, -760,
3446 0, 0, 0, 0, 0, 0, 222, -760, -760, 0,
3447 -760, -760, -760, -760, -760, 0, 0, 0, 0, 0,
3448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3449 0, 0, 0, 0, 0, 0, 222, 0, -760, -760,
3450 0, 0, 0, 0, 0, 0, 0, 0, -760, -760,
3451 -760, -760, -760, -760, -760, -760, -760, -760, -760, -760,
3452 -760, 0, 0, 0, 222, -760, -760, -760, -760, 0,
3453 840, -760, 0, 222, 0, 0, 0, -760, 0, 0,
3454 0, 0, 0, 0, 0, 0, 0, 0, 222, 0,
3455 0, -760, 0, 0, -760, 0, 0, 0, 0, 0,
3456 0, 0, 0, 0, 0, -126, -760, -760, -760, -760,
3457 -760, -760, -760, -760, -760, -760, -760, -760, 0, 0,
3458 0, 0, -760, -760, -760, -760, 0, 0, -760, -760,
3459 -760, 0, -760, 345, 346, 347, 348, 349, 350, 351,
3460 352, 353, 354, 355, 356, 357, 0, 0, 0, 0,
3461 358, 359, 0, 0, 0, 0, 0, 0, 0, 0,
3462 0, 0, 0, 1020, 1021, 0, 1022, 1023, 0, 0,
3463 0, 0, 0, 222, 0, 0, 0, 0, 1034, 0,
3464 222, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3465 0, 361, 0, 362, 363, 364, 365, 366, 367, 368,
3466 369, 370, 371, 0, 0, 0, 0, 0, 0, 0,
3467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3468 0, 0, 0, 0, 0, 0, 0, 1074, 832, 832,
3469 0, 0, 0, 832, 832, 0, 0, 0, 0, 0,
3470 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3471 0, 0, 0, 0, -653, 0, 0, 222, 0, 0,
3472 0, 0, -653, -653, -653, 0, 0, -653, -653, -653,
3473 0, -653, 832, 832, 0, 832, 832, 0, 222, -653,
3474 0, -653, -653, -653, 0, 0, 0, 0, 0, 0,
3475 0, -653, -653, 0, -653, -653, -653, -653, -653, 0,
3476 0, 0, 0, 0, 0, 0, 222, 0, 0, 0,
3477 832, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3478 0, 0, -653, -653, 0, 0, 0, 0, 0, 0,
3479 0, 0, -653, -653, -653, -653, -653, -653, -653, -653,
3480 -653, -653, -653, -653, -653, 0, 0, 0, 0, -653,
3481 -653, -653, -653, 0, -653, -653, 832, 0, 0, 0,
3482 0, -653, 0, 0, 0, 0, 0, 0, 0, 0,
3483 0, 0, 0, 222, 0, -653, 0, 0, -653, 832,
3484 0, 0, 0, 0, 0, 0, 0, 0, 0, -653,
3485 -653, -653, -653, -653, -653, -653, -653, -653, -653, -653,
3486 -653, -653, 0, 0, 0, 0, 0, -653, -653, -653,
3487 0, 0, -653, -653, -653, 0, -653, 0, 0, 0,
3488 0, 0, -654, 0, 0, 0, 0, 0, 0, 0,
3489 -654, -654, -654, 0, 0, -654, -654, -654, 0, -654,
3490 0, 0, 0, 0, 0, 0, 0, -654, 0, -654,
3491 -654, -654, 0, 222, 0, 0, 0, 0, 0, -654,
3492 -654, 0, -654, -654, -654, -654, -654, 0, 0, 0,
3493 345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
3494 355, -783, -783, 0, 0, 0, 0, 358, 359, 0,
3495 -654, -654, 0, 0, 0, 0, 0, 0, 0, 222,
3496 -654, -654, -654, -654, -654, -654, -654, -654, -654, -654,
3497 -654, -654, -654, 0, 0, 0, 0, -654, -654, -654,
3498 -654, 0, -654, -654, 0, 0, 0, 0, 0, -654,
3499 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
3500 0, 0, 0, -654, 0, 0, -654, 0, 0, 0,
3501 0, 0, 0, 0, 0, 0, 0, -654, -654, -654,
3502 -654, -654, -654, -654, -654, -654, -654, -654, -654, -654,
3503 0, 0, 0, 0, 0, -654, -654, -654, -761, 0,
3504 -654, -654, -654, 0, -654, 0, -761, -761, -761, 0,
3505 0, -761, -761, -761, 0, -761, 0, 0, 0, 0,
3506 0, 0, 0, -761, -761, -761, -761, -761, 0, 0,
3507 0, 0, 0, 0, 0, -761, -761, 0, -761, -761,
3508 -761, -761, -761, 0, 0, 0, 0, 0, 0, 0,
3509 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3510 0, 0, 0, 0, 0, 0, -761, -761, 0, 0,
3511 0, 0, 0, 0, 0, 0, -761, -761, -761, -761,
3512 -761, -761, -761, -761, -761, -761, -761, -761, -761, 0,
3513 0, 0, 0, -761, -761, -761, -761, 0, 0, -761,
3514 0, 0, 0, 0, 0, -761, 0, 0, 0, 0,
3515 0, 0, 0, 0, 0, 0, 0, 0, 0, -761,
3516 0, 0, -761, 0, 0, 0, 0, 0, 0, 0,
3517 0, 0, 0, 0, -761, -761, -761, -761, -761, -761,
3518 -761, -761, -761, -761, -761, -761, 0, 0, 0, 0,
3519 -761, -761, -761, -761, -762, 0, -761, -761, -761, 0,
3520 -761, 0, -762, -762, -762, 0, 0, -762, -762, -762,
3521 0, -762, 0, 0, 0, 0, 0, 0, 0, -762,
3522 -762, -762, -762, -762, 0, 0, 0, 0, 0, 0,
3523 0, -762, -762, 0, -762, -762, -762, -762, -762, 0,
3524 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3526 0, 0, -762, -762, 0, 0, 0, 0, 0, 0,
3527 0, 0, -762, -762, -762, -762, -762, -762, -762, -762,
3528 -762, -762, -762, -762, -762, 0, 0, 0, 0, -762,
3529 -762, -762, -762, 0, 0, -762, 0, 0, 0, 0,
3530 0, -762, 0, 0, 0, 0, 0, 0, 0, 0,
3531 0, 0, 0, 0, 0, -762, 0, 0, -762, 0,
3532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3533 -762, -762, -762, -762, -762, -762, -762, -762, -762, -762,
3534 -762, -762, 0, 0, 0, 0, -762, -762, -762, -762,
3535 -329, 0, -762, -762, -762, 0, -762, 0, -329, -329,
3536 -329, 0, 0, -329, -329, -329, 0, -329, 0, 0,
3537 0, 0, 0, 0, 0, -329, 0, -329, -329, -329,
3538 0, 0, 0, 0, 0, 0, 0, -329, -329, 0,
3539 -329, -329, -329, -329, -329, 0, 0, 0, 0, 0,
3540 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3541 0, 0, 0, 0, 0, 0, 0, 0, -329, -329,
3542 0, 0, 0, 0, 0, 0, 0, 0, -329, -329,
3543 -329, -329, -329, -329, -329, -329, -329, -329, -329, -329,
3544 -329, 0, 0, 0, 0, -329, -329, -329, -329, 0,
3545 841, -329, 0, 0, 0, 0, 0, -329, 0, 0,
3546 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3547 0, -329, 0, 0, -329, 0, 0, 0, 0, 0,
3548 0, 0, 0, 0, 0, -128, -329, -329, -329, -329,
3549 -329, -329, -329, -329, -329, -329, -329, -329, 0, 0,
3550 0, 0, 0, -329, -329, -329, -470, 0, -329, -329,
3551 -329, 0, -329, 0, -470, -470, -470, 0, 0, -470,
3552 -470, -470, 0, -470, 0, 0, 0, 0, 0, 0,
3553 0, -470, -470, -470, -470, 0, 0, 0, 0, 0,
3554 0, 0, 0, -470, -470, 0, -470, -470, -470, -470,
3555 -470, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3557 0, 0, 0, 0, -470, -470, 0, 0, 0, 0,
3558 0, 0, 0, 0, -470, -470, -470, -470, -470, -470,
3559 -470, -470, -470, -470, -470, -470, -470, 0, 0, 0,
3560 0, -470, -470, -470, -470, 0, 0, -470, 0, 0,
3561 0, 0, 0, -470, 0, 0, 0, 0, 0, 0,
3562 0, 0, 0, 0, 0, 0, 0, -470, 0, 0,
3563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3564 0, 0, -470, 0, -470, -470, -470, -470, -470, -470,
3565 -470, -470, -470, -470, 0, 0, 0, 0, -470, -470,
3566 -470, -470, -321, 238, -470, -470, -470, 0, -470, 0,
3567 -321, -321, -321, 0, 0, -321, -321, -321, 0, -321,
3568 0, 0, 0, 0, 0, 0, 0, -321, 0, -321,
3569 -321, -321, 0, 0, 0, 0, 0, 0, 0, -321,
3570 -321, 0, -321, -321, -321, -321, -321, 0, 0, 0,
3571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3573 -321, -321, 0, 0, 0, 0, 0, 0, 0, 0,
3574 -321, -321, -321, -321, -321, -321, -321, -321, -321, -321,
3575 -321, -321, -321, 0, 0, 0, 0, -321, -321, -321,
3576 -321, 0, 0, -321, 0, 0, 0, 0, 0, -321,
3577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3578 0, 0, 0, -321, 0, 0, -321, 0, 0, 0,
3579 0, 0, 0, 0, 0, 0, 0, 0, -321, -321,
3580 -321, -321, -321, -321, -321, -321, -321, -321, -321, -321,
3581 0, 0, 0, 0, 0, -321, -321, -321, -782, 0,
3582 -321, -321, -321, 0, -321, 0, -782, -782, -782, 0,
3583 0, -782, -782, -782, 0, -782, 0, 0, 0, 0,
3584 0, 0, 0, -782, -782, -782, -782, 0, 0, 0,
3585 0, 0, 0, 0, 0, -782, -782, 0, -782, -782,
3586 -782, -782, -782, 0, 0, 0, 0, 0, 0, 0,
3587 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3588 0, 0, 0, 0, 0, 0, -782, -782, 0, 0,
3589 0, 0, 0, 0, 0, 0, -782, -782, -782, -782,
3590 -782, -782, -782, -782, -782, -782, -782, -782, -782, 0,
3591 0, 0, 0, -782, -782, -782, -782, 0, 0, -782,
3592 0, 0, 0, 0, 0, -782, 0, 0, 0, 0,
3593 0, 0, 0, 0, 0, 0, 0, 0, 0, -782,
3594 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3595 0, 0, 0, 0, -782, 0, -782, -782, -782, -782,
3596 -782, -782, -782, -782, -782, -782, 0, 0, 0, 0,
3597 -782, -782, -782, -782, -336, 238, -782, -782, -782, 0,
3598 -782, 0, -336, -336, -336, 0, 0, -336, -336, -336,
3599 0, -336, 0, 0, 0, 0, 0, 0, 0, -336,
3600 0, -336, -336, 0, 0, 0, 0, 0, 0, 0,
3601 0, -336, -336, 0, -336, -336, -336, -336, -336, 0,
3602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3604 0, 0, -336, -336, 0, 0, 0, 0, 0, 0,
3605 0, 0, -336, -336, -336, -336, -336, -336, -336, -336,
3606 -336, -336, -336, -336, -336, 0, 0, 0, 0, -336,
3607 -336, -336, -336, 0, 0, -336, 0, 0, 0, 0,
3608 0, -336, 0, 0, 0, 0, 0, 0, 0, 0,
3609 0, 0, 0, 0, 0, -336, 0, 0, 0, 0,
3610 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3611 -336, 0, -336, -336, -336, -336, -336, -336, -336, -336,
3612 -336, -336, 0, 0, 0, 0, 0, -336, -336, -336,
3613 -760, 235, -336, -336, -336, 0, -336, 0, -760, -760,
3614 -760, 0, 0, 0, -760, -760, 0, -760, 0, 0,
3615 0, 0, 0, 0, 0, -760, -760, 0, 0, 0,
3616 0, 0, 0, 0, 0, 0, 0, -760, -760, 0,
3617 -760, -760, -760, -760, -760, 0, 0, 0, 0, 0,
3618 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3619 0, 0, 0, 0, 0, 0, 0, 0, -760, -760,
3620 0, 0, 0, 0, 0, 0, 0, 0, -760, -760,
3621 -760, -760, -760, -760, -760, -760, -760, -760, -760, -760,
3622 -760, 0, 0, 0, 0, -760, -760, -760, -760, 0,
3623 781, -760, 0, 0, 0, 0, 0, 0, 0, 0,
3624 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3625 0, -760, 0, 0, 0, 0, 0, 0, 0, 0,
3626 0, 0, 0, 0, 0, -126, -760, 0, -760, -760,
3627 -760, -760, -760, -760, -760, -760, -760, -760, 0, 0,
3628 0, 0, -760, -760, -760, -117, -760, 0, -760, 0,
3629 -760, 0, -760, 0, -760, -760, -760, 0, 0, 0,
3630 -760, -760, 0, -760, 0, 0, 0, 0, 0, 0,
3631 0, -760, -760, 0, 0, 0, 0, 0, 0, 0,
3632 0, 0, 0, -760, -760, 0, -760, -760, -760, -760,
3633 -760, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3634 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3635 0, 0, 0, 0, -760, -760, 0, 0, 0, 0,
3636 0, 0, 0, 0, -760, -760, -760, -760, -760, -760,
3637 -760, -760, -760, -760, -760, -760, -760, 0, 0, 0,
3638 0, -760, -760, -760, -760, 0, 781, -760, 0, 0,
3639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3640 0, 0, 0, 0, 0, 0, 0, -760, 0, 0,
3641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3642 0, -126, -760, 0, -760, -760, -760, -760, -760, -760,
3643 -760, -760, -760, -760, 0, 0, 0, 0, -760, -760,
3644 -760, -760, -329, 0, -760, 0, -760, 0, -760, 0,
3645 -329, -329, -329, 0, 0, 0, -329, -329, 0, -329,
3646 0, 0, 0, 0, 0, 0, 0, -329, 0, 0,
3647 0, 0, 0, 0, 0, 0, 0, 0, 0, -329,
3648 -329, 0, -329, -329, -329, -329, -329, 0, 0, 0,
3649 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3650 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3651 -329, -329, 0, 0, 0, 0, 0, 0, 0, 0,
3652 -329, -329, -329, -329, -329, -329, -329, -329, -329, -329,
3653 -329, -329, -329, 0, 0, 0, 0, -329, -329, -329,
3654 -329, 0, 782, -329, 0, 0, 0, 0, 0, 0,
3655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3656 0, 0, 0, -329, 0, 0, 0, 0, 0, 0,
3657 0, 0, 0, 0, 0, 0, 0, -128, -329, 0,
3658 -329, -329, -329, -329, -329, -329, -329, -329, -329, -329,
3659 0, 0, 0, 0, 0, -329, -329, -119, -329, 0,
3660 -329, 0, -329, 0, -329, 0, -329, -329, -329, 0,
3661 0, 0, -329, -329, 0, -329, 0, 0, 0, 0,
3662 0, 0, 0, -329, 0, 0, 0, 0, 0, 0,
3663 0, 0, 0, 0, 0, -329, -329, 0, -329, -329,
3664 -329, -329, -329, 0, 0, 0, 0, 0, 0, 0,
3665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3666 0, 0, 0, 0, 0, 0, -329, -329, 0, 0,
3667 0, 0, 0, 0, 0, 0, -329, -329, -329, -329,
3668 -329, -329, -329, -329, -329, -329, -329, -329, -329, 0,
3669 0, 0, 0, -329, -329, -329, -329, 0, 782, -329,
3670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3671 0, 0, 0, 0, 0, 0, 0, 0, 0, -329,
3672 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3673 0, 0, 0, -128, -329, 0, -329, -329, -329, -329,
3674 -329, -329, -329, -329, -329, -329, 0, 0, 0, 0,
3675 0, -329, -329, -329, 0, 0, -329, 0, -329, 4,
3676 -329, 5, 6, 7, 8, 9, -782, -782, -782, 10,
3677 11, 0, 0, -782, 12, 0, 13, 14, 15, 16,
3678 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3679 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3680 0, 0, 0, 28, 29, 262, 31, 32, 33, 34,
3681 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3682 44, 45, 46, 47, 0, 0, -782, 0, 0, 0,
3683 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3684 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3685 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
3686 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3687 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3688 0, 4, 0, 5, 6, 7, 8, 9, 0, 0,
3689 -782, 10, 11, 0, -782, -782, 12, 0, 13, 14,
3690 15, 16, 17, 18, 19, 0, 67, 68, 69, 0,
3691 20, 21, 22, 23, 24, 25, 26, 0, -782, 27,
3692 -782, 0, 0, 0, 0, 28, 29, 262, 31, 32,
3693 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3694 42, 43, 44, 45, 46, 47, 0, 0, -782, 0,
3695 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3696 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3697 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
3698 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
3699 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3700 0, 0, 0, 4, 0, 5, 6, 7, 8, 9,
3701 0, 0, -782, 10, 11, 0, 0, -782, 12, -782,
3702 13, 14, 15, 16, 17, 18, 19, 0, 67, 68,
3703 69, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3704 -782, 27, -782, 0, 0, 0, 0, 28, 29, 262,
3705 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3706 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3707 -782, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3708 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3709 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3710 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3711 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3712 65, 66, 0, 0, 0, 4, 0, 5, 6, 7,
3713 8, 9, 0, 0, -782, 10, 11, 0, 0, -782,
3714 12, 0, 13, 14, 15, 16, 17, 18, 19, -782,
3715 67, 68, 69, 0, 20, 21, 22, 23, 24, 25,
3716 26, 0, -782, 27, -782, 0, 0, 0, 0, 28,
3717 29, 262, 31, 32, 33, 34, 35, 36, 37, 38,
3718 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3719 0, 0, -782, 0, 0, 0, 0, 0, 0, 0,
3720 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3721 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3722 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
3723 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
3724 63, 64, 65, 66, 0, 0, 0, 4, 0, 5,
3725 6, 7, 8, 9, 0, 0, -782, 10, 11, 0,
3726 0, -782, 12, 0, 13, 14, 15, 16, 17, 18,
3727 19, 0, 67, 68, 69, 0, 20, 21, 22, 23,
3728 24, 25, 26, 0, -782, 27, -782, 0, 0, 0,
3729 0, 28, 29, 262, 31, 32, 33, 34, 35, 36,
3730 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3731 46, 47, 0, 0, -782, 0, 0, 0, 0, 0,
3732 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3733 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3734 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
3735 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
3736 61, 62, 63, 64, 65, 66, 0, 0, 0, 4,
3737 0, 5, 6, 7, 8, 9, 0, -782, -782, 10,
3738 11, 0, 0, 0, 12, 0, 13, 14, 15, 16,
3739 17, 18, 19, 0, 67, 68, 69, 0, 20, 21,
3740 22, 23, 24, 25, 26, 0, -782, 27, -782, 0,
3741 0, 0, 0, 28, 29, 262, 31, 32, 33, 34,
3742 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3743 44, 45, 46, 47, 0, 0, -782, 0, 0, 0,
3744 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3745 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3746 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
3747 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3748 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3749 0, 4, 0, 5, 6, 7, 8, 9, 0, 0,
3750 -782, 10, 11, 0, 0, 0, 12, 0, 13, 14,
3751 15, 16, 17, 18, 19, 0, 67, 68, 69, 0,
3752 20, 21, 22, 23, 24, 25, 26, 0, -782, 27,
3753 -782, 0, 0, 0, 0, 28, 29, 262, 31, 32,
3754 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3755 42, 43, 44, 45, 46, 47, 0, 0, -782, 0,
3756 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3757 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3758 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
3759 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
3760 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3761 0, 0, 0, 4, 0, 5, 6, 7, 8, 9,
3762 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
3763 13, 14, 15, 16, 17, 18, 19, 0, 67, 68,
3764 69, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3765 -782, 27, -782, 0, 0, 0, 0, 28, 29, 262,
3766 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3767 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3768 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3769 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3770 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3771 0, 52, 0, 0, 263, 54, 0, 55, 56, 0,
3772 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3773 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3774 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3775 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3776 67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
3777 -782, 0, -782, 4, -782, 5, 6, 7, 8, 9,
3778 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
3779 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3780 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3781 0, 27, 0, 0, 0, 0, 0, 28, 29, 262,
3782 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3783 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3784 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3785 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3786 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3787 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3788 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3789 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3790 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3791 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3792 67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
3793 -782, 0, -782, 4, -782, 5, 6, 7, 8, 9,
3794 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
3795 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3796 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3797 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
3798 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3799 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3800 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3801 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3802 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3803 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3804 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3805 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3806 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3807 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3808 67, 68, 69, 0, 0, -782, 0, 0, 0, 0,
3809 0, 0, -782, 4, -782, 5, 6, 7, 8, 9,
3810 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
3811 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3812 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3813 0, 27, 0, 0, 0, 0, 0, 28, 29, 262,
3814 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3815 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3816 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3817 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3818 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3819 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3820 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3821 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3822 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3823 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3824 67, 68, 69, 0, 0, -782, 0, 0, 0, 0,
3825 0, 0, -782, 4, -782, 5, 6, 7, 8, 9,
3826 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
3827 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3828 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3829 0, 27, 0, 0, 0, 0, 0, 28, 29, 262,
3830 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3831 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3832 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3833 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3834 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3835 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3836 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3837 65, 66, 0, -782, 0, 4, 0, 5, 6, 7,
3838 8, 9, 0, 0, 0, 10, 11, 0, 0, 0,
3839 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3840 67, 68, 69, 0, 20, 21, 22, 23, 24, 25,
3841 26, 0, -782, 27, -782, 0, 0, 0, 0, 28,
3842 29, 0, 31, 32, 33, 34, 35, 36, 37, 38,
3843 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3844 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3845 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3846 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3847 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
3848 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
3849 63, 64, 65, 66, 0, 0, 380, 0, 5, 6,
3850 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
3851 0, 12, -769, 13, 14, 15, 16, 17, 18, 19,
3852 0, 0, 67, 68, 69, 20, 21, 22, 23, 24,
3853 25, 26, -324, 0, 27, 0, -324, 0, 0, 0,
3854 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3855 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3856 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3857 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3858 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3859 0, 0, 0, 0, 211, 0, 0, 212, 54, 0,
3860 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
3861 62, 63, 64, 65, 66, 0, 0, -770, 4, 0,
3862 5, 6, 7, 8, 9, 0, 0, 0, 10, 11,
3863 0, 0, 0, 12, 0, 13, 14, 15, 16, 17,
3864 18, 19, 0, 67, 68, 69, 0, 20, 21, 22,
3865 23, 24, 25, 26, 0, 309, 27, 310, 0, 0,
3866 0, 0, 28, 29, 30, 31, 32, 33, 34, 35,
3867 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3868 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3869 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3870 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3871 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
3872 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
3873 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3874 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3875 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3876 0, 0, 0, 0, 0, 67, 68, 69, 0, 0,
3877 -770, 0, 0, 0, 0, 0, 4, 519, 5, 6,
3878 7, 8, 9, -770, -770, -770, 10, 11, 0, -770,
3879 -770, 12, -770, 13, 14, 15, 16, 17, 18, 19,
3880 -770, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3881 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
3882 28, 29, 262, 31, 32, 33, 34, 35, 36, 37,
3883 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3884 47, 0, 0, -770, 0, 0, 0, 0, 0, 0,
3885 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3886 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3887 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
3888 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3889 62, 63, 64, 65, 66, 0, -770, 0, 0, 0,
3890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3892 0, 0, 0, 67, 68, 69, 0, 0, -770, 0,
3893 5, 6, 7, -770, 9, 519, 0, 0, 10, 11,
3894 0, 0, 0, 12, 0, 13, 14, 15, 16, 17,
3895 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3896 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3897 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3898 36, 37, 38, 39, 40, 210, 41, 42, 43, 44,
3899 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3900 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3901 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3902 0, 0, 0, 0, 0, 0, 211, 0, 0, 212,
3903 54, 0, 55, 56, 0, 213, 214, 215, 58, 59,
3904 216, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3905 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
3906 11, 0, 0, 0, 12, 0, 13, 14, 15, 16,
3907 17, 18, 19, 0, 0, 67, 217, 69, 20, 21,
3908 22, 23, 24, 25, 26, 0, 0, 27, 0, 242,
3909 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
3910 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3911 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3912 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3913 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3914 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
3915 212, 54, 0, 55, 56, 0, 0, 0, 0, 58,
3916 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3917 0, 0, 129, 130, 131, 132, 133, 134, 135, 136,
3918 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
3919 147, 148, 149, 150, 151, 152, 67, 68, 69, 153,
3920 154, 155, 409, 410, 411, 412, 160, 161, 162, 0,
3921 242, 0, 0, 0, 163, 164, 165, 166, 413, 414,
3922 415, 416, 171, 37, 38, 417, 40, 0, 0, 0,
3923 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3924 0, 0, 0, 0, 0, 173, 174, 175, 176, 177,
3925 178, 179, 180, 181, 0, 0, 182, 183, 0, 0,
3926 0, 0, 184, 185, 186, 187, 0, 0, 0, 0,
3927 0, 0, 0, 0, 0, 0, 0, 188, 189, 0,
3928 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3930 0, 0, 0, 0, 0, 0, 0, 190, 191, 192,
3931 193, 194, 195, 196, 197, 198, 199, 0, 200, 201,
3932 0, 0, 0, 0, 0, 202, 418, 129, 130, 131,
3933 132, 133, 134, 135, 136, 137, 138, 139, 140, 141,
3934 142, 143, 144, 145, 146, 147, 148, 149, 150, 151,
3935 152, 0, 0, 0, 153, 154, 155, 156, 157, 158,
3936 159, 160, 161, 162, 0, 0, 0, 0, 0, 163,
3937 164, 165, 166, 167, 168, 169, 170, 171, 37, 38,
3938 172, 40, 0, 0, 0, 0, 0, 0, 0, 0,
3939 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3940 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
3941 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
3942 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3943 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
3944 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3946 0, 0, 190, 191, 192, 193, 194, 195, 196, 197,
3947 198, 199, 0, 200, 201, 0, 0, 0, 0, 0,
3948 202, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3949 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
3950 148, 149, 150, 151, 152, 0, 0, 0, 153, 154,
3951 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
3952 0, 0, 0, 163, 164, 165, 166, 167, 168, 169,
3953 170, 171, 244, 0, 172, 0, 0, 0, 0, 0,
3954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3955 0, 0, 0, 0, 173, 174, 175, 176, 177, 178,
3956 179, 180, 181, 0, 0, 182, 183, 0, 0, 0,
3957 0, 184, 185, 186, 187, 0, 0, 0, 0, 0,
3958 0, 0, 0, 0, 0, 0, 188, 189, 0, 0,
3959 59, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3960 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3961 0, 0, 0, 0, 0, 0, 190, 191, 192, 193,
3962 194, 195, 196, 197, 198, 199, 0, 200, 201, 0,
3963 0, 0, 0, 0, 202, 129, 130, 131, 132, 133,
3964 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
3965 144, 145, 146, 147, 148, 149, 150, 151, 152, 0,
3966 0, 0, 153, 154, 155, 156, 157, 158, 159, 160,
3967 161, 162, 0, 0, 0, 0, 0, 163, 164, 165,
3968 166, 167, 168, 169, 170, 171, 0, 0, 172, 0,
3969 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3970 0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
3971 175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
3972 183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
3973 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3974 188, 189, 0, 0, 59, 0, 0, 0, 0, 0,
3975 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3976 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3977 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
3978 0, 200, 201, 0, 0, 0, 0, 0, 202, 129,
3979 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
3980 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
3981 150, 151, 152, 0, 0, 0, 153, 154, 155, 156,
3982 157, 158, 159, 160, 161, 162, 0, 0, 0, 0,
3983 0, 163, 164, 165, 166, 167, 168, 169, 170, 171,
3984 0, 0, 172, 0, 0, 0, 0, 0, 0, 0,
3985 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3986 0, 0, 173, 174, 175, 176, 177, 178, 179, 180,
3987 181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
3988 185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
3989 0, 0, 0, 0, 188, 189, 0, 0, 0, 0,
3990 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3991 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3992 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
3993 196, 197, 198, 199, 0, 200, 201, 5, 6, 7,
3994 0, 9, 202, 0, 0, 10, 11, 0, 0, 0,
3995 12, 0, 13, 14, 15, 250, 251, 18, 19, 0,
3996 0, 0, 0, 0, 20, 252, 253, 23, 24, 25,
3997 26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
3998 281, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3999 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
4000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4001 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4002 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4003 0, 0, 0, 282, 0, 0, 212, 54, 0, 55,
4004 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
4005 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
4006 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4007 0, 0, 0, 0, 0, 5, 6, 7, 0, 9,
4008 0, 0, 283, 10, 11, 0, 0, 0, 12, 284,
4009 13, 14, 15, 250, 251, 18, 19, 0, 0, 0,
4010 0, 0, 20, 252, 253, 23, 24, 25, 26, 0,
4011 0, 209, 0, 0, 0, 0, 0, 0, 281, 0,
4012 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4013 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4014 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4016 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4017 0, 282, 0, 0, 212, 54, 0, 55, 56, 0,
4018 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4019 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
4020 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4021 0, 4, 0, 5, 6, 7, 8, 9, 0, 0,
4022 283, 10, 11, 0, 0, 0, 12, 579, 13, 14,
4023 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
4024 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
4025 0, 0, 0, 0, 0, 28, 29, 0, 31, 32,
4026 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
4027 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
4028 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
4029 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4030 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
4031 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
4032 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4033 0, 0, 380, 0, 5, 6, 7, 0, 9, 0,
4034 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
4035 14, 15, 16, 17, 18, 19, 0, 0, 67, 68,
4036 69, 20, 21, 22, 23, 24, 25, 26, 0, 0,
4037 27, 0, 0, 0, 0, 0, 0, 29, 0, 0,
4038 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
4039 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
4040 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
4041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4042 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
4043 211, 0, 0, 212, 54, 0, 55, 56, 0, 0,
4044 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
4045 66, 0, 0, 0, 0, 5, 6, 7, 0, 9,
4046 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4047 13, 14, 15, 16, 17, 18, 19, 0, 0, 67,
4048 68, 69, 20, 21, 22, 23, 24, 25, 26, 0,
4049 0, 209, 0, 0, 0, 0, 0, 0, 29, 0,
4050 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4051 210, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4052 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4053 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4054 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4055 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
4056 213, 214, 215, 58, 59, 216, 61, 62, 63, 64,
4057 65, 66, 0, 0, 0, 0, 5, 6, 7, 0,
4058 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
4059 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
4060 67, 217, 69, 20, 21, 22, 23, 24, 25, 26,
4061 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
4062 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
4063 40, 210, 41, 42, 43, 44, 45, 46, 47, 0,
4064 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
4065 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4066 0, 0, 0, 0, 50, 456, 0, 0, 0, 0,
4067 0, 0, 211, 0, 0, 212, 54, 0, 55, 56,
4068 0, 213, 214, 215, 58, 59, 216, 61, 62, 63,
4069 64, 65, 66, 0, 0, 0, 0, 5, 6, 7,
4070 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
4071 12, 0, 13, 14, 15, 250, 251, 18, 19, 0,
4072 0, 67, 217, 69, 20, 252, 253, 23, 24, 25,
4073 26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
4074 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
4075 39, 40, 210, 41, 42, 43, 44, 45, 46, 47,
4076 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4077 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
4078 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
4079 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
4080 56, 0, 666, 214, 215, 58, 59, 216, 61, 62,
4081 63, 64, 65, 66, 0, 0, 0, 0, 5, 6,
4082 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
4083 0, 12, 0, 13, 14, 15, 250, 251, 18, 19,
4084 0, 0, 67, 217, 69, 20, 252, 253, 23, 24,
4085 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
4086 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
4087 38, 39, 40, 210, 41, 42, 43, 44, 45, 46,
4088 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4089 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
4090 0, 0, 0, 0, 0, 0, 50, 456, 0, 0,
4091 0, 0, 0, 0, 211, 0, 0, 212, 54, 0,
4092 55, 56, 0, 666, 214, 215, 58, 59, 216, 61,
4093 62, 63, 64, 65, 66, 0, 0, 0, 0, 5,
4094 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
4095 0, 0, 12, 0, 13, 14, 15, 250, 251, 18,
4096 19, 0, 0, 67, 217, 69, 20, 252, 253, 23,
4097 24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
4098 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
4099 37, 38, 39, 40, 210, 41, 42, 43, 44, 45,
4100 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
4101 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
4102 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
4103 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
4104 0, 55, 56, 0, 213, 214, 0, 58, 59, 216,
4105 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
4106 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4107 0, 0, 0, 12, 0, 13, 14, 15, 250, 251,
4108 18, 19, 0, 0, 67, 217, 69, 20, 252, 253,
4109 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
4110 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
4111 36, 37, 38, 39, 40, 210, 41, 42, 43, 44,
4112 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4113 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
4114 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
4115 0, 0, 0, 0, 0, 0, 211, 0, 0, 212,
4116 54, 0, 55, 56, 0, 0, 214, 215, 58, 59,
4117 216, 61, 62, 63, 64, 65, 66, 0, 0, 0,
4118 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
4119 11, 0, 0, 0, 12, 0, 13, 14, 15, 250,
4120 251, 18, 19, 0, 0, 67, 217, 69, 20, 252,
4121 253, 23, 24, 25, 26, 0, 0, 209, 0, 0,
4122 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
4123 35, 36, 37, 38, 39, 40, 210, 41, 42, 43,
4124 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
4125 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
4126 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
4127 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
4128 212, 54, 0, 55, 56, 0, 666, 214, 0, 58,
4129 59, 216, 61, 62, 63, 64, 65, 66, 0, 0,
4130 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
4131 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
4132 250, 251, 18, 19, 0, 0, 67, 217, 69, 20,
4133 252, 253, 23, 24, 25, 26, 0, 0, 209, 0,
4134 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
4135 34, 35, 36, 37, 38, 39, 40, 210, 41, 42,
4136 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
4137 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
4138 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4139 50, 51, 0, 0, 0, 0, 0, 0, 211, 0,
4140 0, 212, 54, 0, 55, 56, 0, 0, 214, 0,
4141 58, 59, 216, 61, 62, 63, 64, 65, 66, 0,
4142 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
4143 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
4144 15, 16, 17, 18, 19, 0, 0, 67, 217, 69,
4145 20, 21, 22, 23, 24, 25, 26, 0, 0, 209,
4146 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
4147 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
4148 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
4149 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
4150 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4151 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
4152 0, 0, 212, 54, 0, 55, 56, 0, 759, 0,
4153 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4154 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
4155 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
4156 14, 15, 250, 251, 18, 19, 0, 0, 67, 217,
4157 69, 20, 252, 253, 23, 24, 25, 26, 0, 0,
4158 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
4159 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
4160 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
4161 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
4162 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4163 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
4164 211, 0, 0, 212, 54, 0, 55, 56, 0, 759,
4165 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
4166 66, 0, 0, 0, 0, 5, 6, 7, 0, 9,
4167 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4168 13, 14, 15, 250, 251, 18, 19, 0, 0, 67,
4169 217, 69, 20, 252, 253, 23, 24, 25, 26, 0,
4170 0, 209, 0, 0, 0, 0, 0, 0, 29, 0,
4171 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4172 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4173 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4174 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4175 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4176 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
4177 980, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4178 65, 66, 0, 0, 0, 0, 5, 6, 7, 0,
4179 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
4180 0, 13, 14, 15, 250, 251, 18, 19, 0, 0,
4181 67, 217, 69, 20, 252, 253, 23, 24, 25, 26,
4182 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
4183 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
4184 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
4185 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
4186 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4187 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
4188 0, 0, 211, 0, 0, 212, 54, 0, 55, 56,
4189 0, 1029, 0, 0, 58, 59, 60, 61, 62, 63,
4190 64, 65, 66, 0, 0, 0, 0, 5, 6, 7,
4191 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
4192 12, 0, 13, 14, 15, 250, 251, 18, 19, 0,
4193 0, 67, 217, 69, 20, 252, 253, 23, 24, 25,
4194 26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
4195 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
4196 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
4197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4198 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
4199 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
4200 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
4201 56, 0, 1176, 0, 0, 58, 59, 60, 61, 62,
4202 63, 64, 65, 66, 0, 0, 0, 0, 5, 6,
4203 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
4204 0, 12, 0, 13, 14, 15, 250, 251, 18, 19,
4205 0, 0, 67, 217, 69, 20, 252, 253, 23, 24,
4206 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
4207 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
4208 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
4209 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4210 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
4211 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
4212 0, 0, 0, 0, 211, 0, 0, 212, 54, 0,
4213 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
4214 62, 63, 64, 65, 66, 0, 0, 0, 0, 5,
4215 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
4216 0, 0, 12, 0, 13, 14, 15, 16, 17, 18,
4217 19, 0, 0, 67, 217, 69, 20, 21, 22, 23,
4218 24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
4219 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
4220 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
4221 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
4222 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
4223 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
4224 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
4225 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
4226 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
4227 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4228 0, 0, 0, 12, 0, 13, 14, 15, 16, 17,
4229 18, 19, 0, 0, 67, 217, 69, 20, 21, 22,
4230 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
4231 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
4232 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
4233 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4234 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
4235 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
4236 0, 0, 0, 0, 0, 0, 211, 0, 0, 212,
4237 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
4238 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
4239 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
4240 11, 0, 0, 0, 12, 0, 13, 14, 15, 250,
4241 251, 18, 19, 0, 0, 67, 68, 69, 20, 252,
4242 253, 23, 24, 25, 26, 0, 0, 209, 0, 0,
4243 0, 0, 0, 0, 281, 0, 0, 32, 33, 34,
4244 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
4245 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
4246 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4247 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4248 0, 0, 0, 0, 0, 0, 0, 282, 0, 0,
4249 340, 54, 0, 55, 56, 0, 341, 0, 0, 58,
4250 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
4251 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4252 0, 0, 0, 12, 0, 13, 14, 15, 250, 251,
4253 18, 19, 0, 0, 0, 0, 283, 20, 252, 253,
4254 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
4255 0, 0, 0, 281, 0, 0, 32, 33, 34, 35,
4256 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
4257 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4260 0, 0, 0, 0, 0, 0, 390, 0, 0, 53,
4261 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
4262 60, 61, 62, 63, 64, 65, 66, 0, 0, 5,
4263 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
4264 0, 0, 12, 0, 13, 14, 15, 250, 251, 18,
4265 19, 0, 0, 0, 0, 283, 20, 252, 253, 23,
4266 24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
4267 0, 0, 281, 0, 0, 32, 33, 34, 398, 36,
4268 37, 38, 399, 40, 0, 41, 42, 43, 44, 45,
4269 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
4270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4272 0, 400, 0, 0, 0, 401, 0, 0, 212, 54,
4273 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
4274 61, 62, 63, 64, 65, 66, 0, 0, 5, 6,
4275 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
4276 0, 12, 0, 13, 14, 15, 250, 251, 18, 19,
4277 0, 0, 0, 0, 283, 20, 252, 253, 23, 24,
4278 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
4279 0, 281, 0, 0, 32, 33, 34, 398, 36, 37,
4280 38, 399, 40, 0, 41, 42, 43, 44, 45, 46,
4281 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4282 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4283 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4284 0, 0, 0, 0, 401, 0, 0, 212, 54, 0,
4285 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
4286 62, 63, 64, 65, 66, 0, 0, 5, 6, 7,
4287 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
4288 12, 0, 13, 14, 15, 250, 251, 18, 19, 0,
4289 0, 0, 0, 283, 20, 252, 253, 23, 24, 25,
4290 26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
4291 281, 0, 0, 32, 33, 34, 35, 36, 37, 38,
4292 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
4293 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4294 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4296 0, 0, 0, 282, 0, 0, 340, 54, 0, 55,
4297 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
4298 63, 64, 65, 66, 0, 0, 5, 6, 7, 0,
4299 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
4300 0, 13, 14, 15, 250, 251, 18, 19, 0, 0,
4301 0, 0, 283, 20, 252, 253, 23, 24, 25, 26,
4302 0, 0, 209, 0, 0, 0, 0, 0, 0, 281,
4303 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
4304 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
4305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4306 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4307 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4308 0, 0, 1165, 0, 0, 212, 54, 0, 55, 56,
4309 0, 0, 0, 0, 58, 59, 60, 61, 62, 63,
4310 64, 65, 66, 0, 0, 5, 6, 7, 0, 9,
4311 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4312 13, 14, 15, 250, 251, 18, 19, 0, 0, 0,
4313 0, 283, 20, 252, 253, 23, 24, 25, 26, 0,
4314 0, 209, 0, 0, 0, 0, 0, 0, 281, 0,
4315 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4316 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4317 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4318 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4320 0, 1198, 0, 0, 212, 54, 0, 55, 56, 23,
4321 24, 25, 26, 58, 59, 60, 61, 62, 63, 64,
4322 65, 66, 0, 0, 0, 32, 33, 34, 905, 0,
4323 0, 0, 906, 0, 0, 41, 42, 43, 44, 45,
4324 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4325 283, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4326 0, 0, 0, 0, 0, 0, 0, 908, 909, 0,
4327 0, 0, 0, 0, 0, 910, 0, 0, 911, 0,
4328 0, 912, 913, 0, 914, 0, 0, 58, 59, 60,
4329 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
4330 0, 0, 23, 24, 25, 26, 0, 0, 0, 0,
4331 0, 0, 0, 0, 0, 0, 0, 916, 32, 33,
4332 34, 905, 0, 0, 283, 906, 0, 907, 41, 42,
4333 43, 44, 45, 0, 0, 0, 0, 0, 242, 0,
4334 0, 0, 0, 0, 0, 0, 0, 534, 0, 0,
4335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4336 908, 909, 0, 0, 0, 0, 0, 0, 910, 0,
4337 0, 911, 0, 0, 912, 913, 0, 914, 538, 0,
4338 58, 59, 915, 61, 62, 63, 64, 65, 66, 0,
4339 0, 0, 0, 0, 0, 23, 24, 25, 26, 0,
4340 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4341 916, 32, 33, 34, 905, 0, 0, 283, 906, 0,
4342 0, 41, 42, 43, 44, 45, 0, 0, 0, 0,
4343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4344 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4345 0, 0, 0, 908, 909, 0, 0, 0, 0, 0,
4346 0, 910, 0, 0, 911, 0, 0, 912, 913, 0,
4347 914, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4348 65, 66, 0, 0, 0, 0, 0, 0, 23, 24,
4349 25, 26, 0, 0, 0, 609, 610, 0, 0, 611,
4350 0, 0, 0, 916, 32, 33, 34, 905, 0, 0,
4351 283, 906, 0, 0, 41, 42, 43, 44, 45, 173,
4352 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4353 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4354 0, 0, 0, 0, 0, 0, 908, 909, 0, 0,
4355 0, 188, 189, 0, 910, 0, 0, 911, 0, 0,
4356 912, 913, 0, 0, 0, 0, 58, 59, 60, 61,
4357 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
4358 0, 190, 191, 192, 193, 194, 195, 196, 197, 198,
4359 199, 0, 200, 201, 619, 620, 916, 0, 621, 202,
4360 238, 0, 0, 283, 0, 0, 0, 0, 0, 0,
4361 0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
4362 175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
4363 183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
4364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4365 188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
4366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4368 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
4369 0, 200, 201, 670, 610, 0, 0, 671, 202, 238,
4370 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4371 0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
4372 176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
4373 0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
4374 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
4375 189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4377 0, 0, 0, 0, 0, 0, 0, 0, 0, 190,
4378 191, 192, 193, 194, 195, 196, 197, 198, 199, 0,
4379 200, 201, 673, 620, 0, 0, 674, 202, 238, 0,
4380 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4381 0, 0, 0, 0, 0, 0, 173, 174, 175, 176,
4382 177, 178, 179, 180, 181, 0, 0, 182, 183, 0,
4383 0, 0, 0, 184, 185, 186, 187, 0, 0, 0,
4384 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
4385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4386 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4387 0, 0, 0, 0, 0, 0, 0, 0, 190, 191,
4388 192, 193, 194, 195, 196, 197, 198, 199, 0, 200,
4389 201, 700, 610, 0, 0, 701, 202, 238, 0, 0,
4390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4391 0, 0, 0, 0, 0, 173, 174, 175, 176, 177,
4392 178, 179, 180, 181, 0, 0, 182, 183, 0, 0,
4393 0, 0, 184, 185, 186, 187, 0, 0, 0, 0,
4394 0, 0, 0, 0, 0, 0, 0, 188, 189, 0,
4395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4396 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4397 0, 0, 0, 0, 0, 0, 0, 190, 191, 192,
4398 193, 194, 195, 196, 197, 198, 199, 0, 200, 201,
4399 703, 620, 0, 0, 704, 202, 238, 0, 0, 0,
4400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4401 0, 0, 0, 0, 173, 174, 175, 176, 177, 178,
4402 179, 180, 181, 0, 0, 182, 183, 0, 0, 0,
4403 0, 184, 185, 186, 187, 0, 0, 0, 0, 0,
4404 0, 0, 0, 0, 0, 0, 188, 189, 0, 0,
4405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4407 0, 0, 0, 0, 0, 0, 190, 191, 192, 193,
4408 194, 195, 196, 197, 198, 199, 0, 200, 201, 813,
4409 610, 0, 0, 814, 202, 238, 0, 0, 0, 0,
4410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4411 0, 0, 0, 173, 174, 175, 176, 177, 178, 179,
4412 180, 181, 0, 0, 182, 183, 0, 0, 0, 0,
4413 184, 185, 186, 187, 0, 0, 0, 0, 0, 0,
4414 0, 0, 0, 0, 0, 188, 189, 0, 0, 0,
4415 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4417 0, 0, 0, 0, 0, 190, 191, 192, 193, 194,
4418 195, 196, 197, 198, 199, 0, 200, 201, 816, 620,
4419 0, 0, 817, 202, 238, 0, 0, 0, 0, 0,
4420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4421 0, 0, 173, 174, 175, 176, 177, 178, 179, 180,
4422 181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
4423 185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
4424 0, 0, 0, 0, 188, 189, 0, 0, 0, 0,
4425 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4427 0, 0, 0, 0, 190, 191, 192, 193, 194, 195,
4428 196, 197, 198, 199, 0, 200, 201, 822, 610, 0,
4429 0, 823, 202, 238, 0, 0, 0, 0, 0, 0,
4430 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4431 0, 173, 174, 175, 176, 177, 178, 179, 180, 181,
4432 0, 0, 182, 183, 0, 0, 0, 0, 184, 185,
4433 186, 187, 0, 0, 0, 0, 0, 0, 0, 0,
4434 0, 0, 0, 188, 189, 0, 0, 0, 0, 0,
4435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4437 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4438 197, 198, 199, 0, 200, 201, 655, 620, 0, 0,
4439 656, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4441 173, 174, 175, 176, 177, 178, 179, 180, 181, 0,
4442 0, 182, 183, 0, 0, 0, 0, 184, 185, 186,
4443 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4444 0, 0, 188, 189, 0, 0, 0, 0, 0, 0,
4445 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4447 0, 0, 190, 191, 192, 193, 194, 195, 196, 197,
4448 198, 199, 0, 200, 201, 1035, 610, 0, 0, 1036,
4449 202, 238, 0, 0, 0, 0, 0, 0, 0, 0,
4450 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4451 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4452 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4454 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4456 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4457 0, 190, 191, 192, 193, 194, 195, 196, 197, 198,
4458 199, 0, 200, 201, 1038, 620, 0, 0, 1039, 202,
4459 238, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4460 0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
4461 175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
4462 183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
4463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4464 188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
4465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4467 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
4468 0, 200, 201, 1259, 610, 0, 0, 1260, 202, 238,
4469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4470 0, 0, 0, 0, 0, 0, 0, 173, 174, 175,
4471 176, 177, 178, 179, 180, 181, 0, 0, 182, 183,
4472 0, 0, 0, 0, 184, 185, 186, 187, 0, 0,
4473 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
4474 189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4475 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4476 0, 0, 0, 0, 0, 0, 0, 0, 0, 190,
4477 191, 192, 193, 194, 195, 196, 197, 198, 199, 0,
4478 200, 201, 1262, 620, 0, 0, 1263, 202, 238, 0,
4479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4480 0, 0, 0, 0, 0, 0, 173, 174, 175, 176,
4481 177, 178, 179, 180, 181, 0, 0, 182, 183, 0,
4482 0, 0, 0, 184, 185, 186, 187, 0, 0, 0,
4483 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
4484 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4486 0, 0, 0, 0, 0, 0, 0, 0, 190, 191,
4487 192, 193, 194, 195, 196, 197, 198, 199, 0, 200,
4488 201, 1278, 610, 0, 0, 1279, 202, 238, 0, 0,
4489 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4490 0, 0, 0, 0, 0, 173, 174, 175, 176, 177,
4491 178, 179, 180, 181, 0, 0, 182, 183, 0, 0,
4492 0, 0, 184, 185, 186, 187, 0, 0, 0, 0,
4493 0, 0, 0, 0, 0, 0, 0, 188, 189, 0,
4494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4495 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4496 0, 0, 0, 0, 0, 0, 0, 190, 191, 192,
4497 193, 194, 195, 196, 197, 198, 199, 0, 200, 201,
4498 655, 620, 0, 0, 656, 202, 238, 0, 0, 0,
4499 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4500 0, 0, 0, 0, 173, 174, 175, 176, 177, 178,
4501 179, 180, 181, 0, 0, 182, 183, 0, 0, 0,
4502 0, 184, 185, 186, 187, 0, 0, 0, 0, 0,
4503 0, 0, 0, 0, 0, 0, 188, 189, 0, 0,
4504 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4505 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4506 0, 0, 0, 0, 0, 0, 190, 191, 192, 193,
4507 194, 195, 196, 197, 198, 199, 0, 200, 201, 0,
4511static const yytype_int16 yycheck[] =
4513 2, 105, 59, 59, 8, 60, 16, 17, 321, 401,
4514 85, 383, 325, 71, 554, 28, 2, 377, 801, 96,
4515 91, 16, 17, 325, 28, 53, 93, 94, 734, 232,
4516 97, 536, 8, 104, 376, 808, 378, 57, 22, 97,
4517 376, 2, 378, 565, 238, 101, 568, 321, 22, 16,
4518 17, 325, 28, 55, 56, 59, 450, 779, 731, 559,
4519 55, 561, 68, 53, 57, 85, 738, 53, 54, 868,
4520 94, 57, 71, 97, 76, 77, 778, 779, 98, 99,
4521 100, 16, 17, 97, 426, 870, 446, 275, 55, 56,
4522 426, 279, 102, 54, 67, 489, 80, 101, 499, 85,
4523 912, 25, 25, 445, 29, 447, 80, 102, 1047, 445,
4524 263, 447, 98, 99, 100, 101, 658, 659, 13, 1024,
4525 299, 300, 1061, 442, 25, 582, 908, 909, 650, 101,
4526 101, 450, 474, 475, 77, 102, 27, 100, 1202, 475,
4527 77, 501, 101, 1052, 0, 575, 778, 779, 10, 1047,
4528 110, 66, 69, 25, 66, 135, 227, 25, 500, 13,
4529 502, 216, 1071, 1072, 25, 1063, 502, 102, 34, 1181,
4530 34, 52, 135, 162, 241, 56, 243, 157, 579, 13,
4531 100, 98, 142, 155, 212, 256, 52, 340, 52, 157,
4532 731, 162, 155, 725, 162, 625, 155, 738, 13, 124,
4533 25, 631, 734, 633, 25, 120, 68, 265, 120, 284,
4534 1274, 135, 1117, 718, 719, 135, 218, 219, 289, 159,
4535 26, 249, 162, 13, 226, 235, 212, 237, 238, 25,
4536 232, 155, 155, 157, 158, 263, 238, 13, 162, 25,
4537 235, 1207, 237, 238, 152, 247, 1212, 314, 315, 316,
4538 317, 265, 319, 320, 155, 647, 157, 1269, 461, 1071,
4539 1072, 247, 157, 249, 284, 160, 265, 162, 235, 160,
4540 237, 162, 13, 263, 1213, 26, 219, 263, 638, 253,
4541 254, 218, 219, 155, 1066, 1067, 247, 155, 648, 683,
4542 314, 315, 316, 317, 155, 637, 157, 639, 284, 821,
4543 235, 155, 237, 639, 13, 647, 160, 649, 162, 1207,
4544 283, 1110, 340, 649, 1212, 1213, 746, 27, 385, 29,
4545 750, 341, 393, 157, 1109, 25, 160, 313, 162, 387,
4546 155, 13, 318, 400, 155, 514, 338, 516, 1010, 796,
4547 880, 343, 1015, 286, 78, 160, 152, 162, 341, 152,
4548 340, 157, 313, 582, 340, 341, 384, 318, 386, 155,
4549 784, 385, 681, 868, 683, 870, 767, 377, 792, 155,
4550 160, 1093, 162, 387, 378, 377, 876, 877, 672, 809,
4551 13, 881, 812, 883, 160, 885, 162, 13, 1286, 37,
4552 38, 1093, 705, 379, 69, 1178, 826, 58, 384, 100,
4553 386, 152, 100, 705, 378, 1178, 100, 56, 702, 951,
4554 952, 145, 146, 147, 956, 957, 25, 78, 731, 160,
4555 1052, 162, 426, 98, 499, 738, 98, 429, 430, 658,
4556 659, 705, 1064, 161, 135, 135, 446, 135, 440, 1071,
4557 1072, 135, 100, 447, 446, 161, 448, 449, 109, 110,
4558 135, 160, 58, 162, 155, 155, 469, 459, 158, 461,
4559 28, 1093, 162, 155, 986, 469, 669, 153, 787, 1010,
4560 155, 475, 78, 447, 476, 442, 162, 135, 160, 499,
4561 162, 142, 154, 1024, 241, 157, 113, 681, 734, 100,
4562 100, 501, 1024, 469, 1200, 481, 25, 155, 502, 501,
4563 160, 475, 162, 109, 579, 1288, 1028, 113, 566, 697,
4564 1024, 268, 100, 499, 162, 272, 66, 67, 910, 486,
4565 161, 815, 1195, 161, 135, 135, 135, 160, 502, 162,
4566 709, 825, 778, 779, 160, 714, 162, 1079, 66, 852,
4567 542, 135, 972, 903, 155, 975, 155, 135, 978, 158,
4568 852, 100, 554, 162, 564, 985, 100, 567, 988, 579,
4569 902, 100, 904, 640, 274, 275, 902, 155, 904, 279,
4570 576, 281, 122, 123, 632, 1115, 582, 135, 852, 565,
4571 100, 576, 568, 1123, 651, 100, 135, 582, 37, 38,
4572 100, 135, 66, 579, 122, 123, 135, 125, 69, 100,
4573 628, 66, 630, 69, 1109, 1110, 135, 1001, 1281, 100,
4574 982, 1111, 1112, 1113, 1114, 135, 618, 52, 912, 686,
4575 135, 56, 624, 698, 626, 135, 155, 98, 638, 158,
4576 69, 615, 98, 162, 135, 639, 638, 69, 648, 100,
4577 624, 615, 628, 846, 630, 649, 648, 660, 122, 123,
4578 624, 69, 658, 659, 1195, 657, 660, 122, 123, 98,
4579 1182, 1202, 155, 1195, 650, 639, 98, 669, 1200, 1099,
4580 1202, 9, 1204, 657, 135, 649, 1068, 15, 698, 97,
4581 98, 1195, 1001, 657, 660, 157, 1200, 161, 1202, 691,
4582 1204, 69, 767, 56, 155, 452, 161, 1010, 135, 100,
4583 457, 69, 69, 460, 101, 776, 463, 155, 1125, 1126,
4584 1250, 1024, 698, 1085, 681, 100, 690, 691, 1090, 97,
4585 98, 478, 951, 952, 155, 829, 483, 956, 957, 69,
4586 98, 98, 157, 1274, 135, 778, 779, 14, 15, 69,
4587 15, 1241, 1274, 1037, 1276, 69, 157, 767, 69, 1281,
4588 25, 1283, 1046, 820, 155, 1049, 155, 97, 98, 157,
4589 1274, 819, 1276, 162, 155, 78, 1298, 1281, 98, 1283,
4590 158, 162, 828, 97, 98, 1069, 154, 98, 135, 781,
4591 782, 767, 155, 15, 1298, 17, 788, 789, 545, 162,
4592 818, 153, 778, 779, 796, 797, 820, 799, 159, 801,
4593 56, 796, 1174, 157, 1033, 54, 1052, 52, 1238, 54,
4594 55, 56, 57, 58, 154, 64, 65, 157, 1064, 155,
4595 787, 578, 107, 69, 828, 1071, 1072, 69, 1245, 1246,
4596 154, 78, 818, 78, 1251, 821, 1253, 1254, 840, 841,
4597 135, 843, 844, 69, 846, 89, 90, 1093, 135, 78,
4598 1079, 97, 98, 135, 158, 97, 98, 102, 162, 916,
4599 915, 155, 1222, 160, 109, 110, 1160, 1161, 1162, 912,
4600 56, 97, 98, 1290, 1291, 1292, 1293, 26, 880, 1221,
4601 139, 1223, 1195, 135, 1061, 1302, 929, 1223, 598, 1202,
4602 892, 158, 894, 903, 1071, 1072, 135, 142, 900, 25,
4603 904, 903, 83, 84, 971, 155, 1248, 617, 154, 26,
4604 153, 897, 154, 899, 143, 144, 145, 146, 147, 2,
4605 69, 66, 908, 909, 40, 41, 912, 69, 154, 987,
4606 904, 155, 1024, 16, 17, 69, 897, 965, 899, 153,
4607 69, 135, 970, 929, 155, 951, 952, 971, 97, 98,
4608 956, 957, 69, 955, 1200, 97, 98, 138, 139, 961,
4609 155, 1274, 672, 97, 98, 722, 343, 1261, 97, 98,
4610 53, 54, 155, 738, 57, 120, 741, 122, 123, 965,
4611 97, 98, 285, 286, 970, 68, 155, 697, 155, 155,
4612 52, 1058, 702, 155, 52, 997, 153, 1025, 8, 155,
4613 986, 1044, 85, 152, 69, 154, 13, 155, 157, 25,
4614 93, 94, 154, 135, 97, 98, 99, 100, 1061, 102,
4615 154, 17, 26, 161, 161, 154, 44, 1033, 1071, 1072,
4616 155, 2, 97, 98, 1058, 152, 155, 154, 44, 1025,
4617 157, 153, 1028, 44, 155, 16, 17, 155, 135, 44,
4618 1093, 137, 429, 430, 52, 159, 54, 55, 1044, 57,
4619 1088, 1047, 15, 440, 1084, 69, 155, 155, 52, 1097,
4620 827, 448, 449, 1079, 155, 1061, 1062, 1063, 1106, 155,
4621 1066, 1067, 53, 54, 1139, 1071, 1072, 155, 845, 154,
4622 847, 140, 155, 97, 98, 52, 1167, 68, 1084, 476,
4623 140, 1121, 1088, 1195, 102, 815, 153, 1093, 69, 866,
4624 1202, 1097, 1204, 1115, 52, 825, 54, 55, 56, 57,
4625 1106, 1123, 93, 94, 155, 155, 97, 101, 155, 212,
4626 155, 102, 155, 155, 52, 1121, 97, 98, 66, 101,
4627 69, 158, 155, 1171, 69, 1173, 160, 140, 152, 56,
4628 154, 9, 235, 157, 237, 238, 1184, 140, 241, 153,
4629 243, 1228, 1229, 155, 247, 155, 249, 155, 97, 98,
4630 1172, 69, 97, 98, 1194, 155, 1178, 155, 155, 155,
4631 263, 56, 1274, 155, 1276, 1171, 69, 1173, 155, 1281,
4632 121, 1283, 120, 154, 122, 123, 1182, 125, 1184, 97,
4633 98, 284, 912, 913, 1228, 1229, 1298, 155, 1194, 155,
4634 155, 155, 1222, 155, 97, 98, 157, 157, 155, 1223,
4635 1222, 1207, 1224, 247, 1226, 154, 1212, 1213, 66, 154,
4636 313, 314, 315, 316, 317, 318, 319, 320, 1266, 313,
4637 477, 212, 828, 54, 55, 1010, 57, 1012, 1250, 1223,
4638 481, 98, 1017, 64, 65, 100, 154, 340, 341, 1024,
4639 89, 657, 66, 797, 235, 718, 237, 238, 1226, 868,
4640 241, 154, 243, 1119, 1024, 66, 247, 894, 249, 830,
4641 1266, 66, 120, 571, 122, 123, 1288, 125, 59, 60,
4642 61, 62, 263, 1003, 377, 336, 379, 778, 779, 66,
4643 1286, 384, 385, 386, 52, 78, 54, 55, 56, 57,
4644 58, 1288, 1269, 1070, 1024, 1062, 120, 400, 122, 123,
4645 1064, 1064, 95, 96, 1060, 1224, 108, 1037, 1172, 120,
4646 78, 122, 123, 658, 659, 120, 1046, 122, 123, 1049,
4647 778, 779, 313, 314, 315, 316, 317, 318, 319, 320,
4648 675, 676, 516, 120, 102, 122, 123, 101, 734, 1069,
4649 108, 109, 110, 446, 1200, 1195, 731, 692, 1140, 340,
4650 143, 144, 145, 146, 147, 1132, -1, 52, 78, 54,
4651 55, 56, 57, -1, -1, 52, 1143, 54, 55, 56,
4652 57, -1, -1, -1, 142, 95, 96, 145, 481, -1,
4653 1157, 1158, 1159, -1, 781, 782, 377, 1117, 379, 778,
4654 779, 788, 789, 384, 385, 386, 499, -1, 501, -1,
4655 -1, -1, 1187, -1, -1, -1, -1, 908, 909, 400,
4656 1140, 912, -1, -1, -1, 102, 78, 1202, -1, 1204,
4657 140, 141, 142, 143, 144, 145, 146, 147, 929, -1,
4658 1160, 1161, 1162, 95, 96, -1, 52, -1, 54, 55,
4659 56, 57, -1, 840, 841, -1, 843, 844, -1, -1,
4660 908, 909, -1, -1, 912, 446, 40, 41, 42, 43,
4661 44, 564, 565, -1, 567, 568, -1, -1, -1, -1,
4662 -1, 929, -1, 576, -1, -1, 579, -1, -1, 582,
4663 142, 143, 144, 145, 146, 147, 102, -1, -1, 1274,
4664 481, 1276, 108, -1, 778, 779, -1, -1, 1283, -1,
4665 -1, -1, -1, 900, -1, 1235, -1, -1, -1, -1,
4666 501, -1, -1, 1298, -1, -1, -1, -1, -1, 908,
4667 909, -1, -1, 912, -1, 628, -1, 630, -1, -1,
4668 -1, 1261, -1, -1, -1, 638, -1, -1, -1, -1,
4669 929, -1, -1, 1044, -1, 648, 1047, 650, 651, -1,
4670 -1, -1, -1, -1, -1, 658, 659, -1, 955, -1,
4671 1061, 1062, 1063, -1, -1, 1066, 1067, -1, -1, -1,
4672 1071, 1072, -1, 564, 565, -1, 567, 568, -1, -1,
4673 -1, -1, -1, 686, -1, 576, 1044, -1, -1, 1047,
4674 -1, 582, 1093, -1, -1, 698, -1, -1, -1, -1,
4675 997, -1, -1, 1061, 1062, 1063, 951, 952, 1066, 1067,
4676 -1, 956, 957, 1071, 1072, -1, -1, -1, -1, -1,
4677 -1, -1, -1, -1, 908, 909, -1, -1, 912, -1,
4678 -1, -1, -1, -1, -1, 1093, -1, 628, -1, 630,
4679 -1, -1, -1, -1, -1, 929, -1, 638, -1, -1,
4680 995, 996, -1, 998, 999, 1044, -1, 648, 1047, 650,
4681 651, -1, -1, -1, 767, -1, -1, 658, 659, -1,
4682 -1, -1, 1061, 1062, 1063, -1, -1, 1066, 1067, -1,
4683 -1, -1, 1071, 1072, -1, -1, -1, -1, -1, -1,
4684 -1, -1, -1, -1, -1, 686, -1, -1, -1, -1,
4685 -1, -1, -1, -1, 1093, -1, 1207, -1, -1, -1,
4686 -1, 1212, 1213, -1, -1, 818, -1, 820, 821, -1,
4687 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4688 -1, -1, -1, -1, 1079, -1, -1, -1, -1, -1,
4689 -1, 52, -1, 54, 55, 56, 57, 58, -1, 1207,
4690 -1, -1, -1, -1, 1212, 1213, -1, 1102, -1, -1,
4691 1044, -1, -1, 1047, -1, -1, -1, 78, -1, -1,
4692 -1, -1, -1, -1, -1, -1, -1, 1061, 1062, 1063,
4693 -1, 92, 1066, 1067, -1, 1286, -1, 1071, 1072, -1,
4694 -1, 102, -1, -1, 897, -1, 899, -1, 109, 110,
4695 903, -1, -1, -1, -1, -1, -1, -1, -1, 1093,
4696 -1, -1, -1, -1, -1, -1, -1, -1, 1207, 2,
4697 -1, -1, -1, 1212, 1213, -1, -1, 818, 1286, 820,
4698 821, 142, -1, 16, 17, -1, -1, -1, -1, -1,
4699 -1, -1, -1, -1, -1, -1, -1, -1, 951, 952,
4700 -1, -1, -1, 956, 957, -1, -1, -1, -1, -1,
4701 -1, -1, 965, -1, -1, -1, -1, 970, 971, -1,
4702 53, 54, -1, -1, -1, -1, -1, -1, -1, -1,
4703 -1, -1, -1, 986, -1, 68, -1, -1, -1, -1,
4704 -1, -1, -1, -1, 2, -1, -1, 1286, -1, -1,
4705 -1, -1, -1, -1, -1, -1, 897, -1, 899, -1,
4706 93, 94, 903, -1, 97, -1, -1, -1, -1, 102,
4707 -1, -1, 1025, 1207, -1, 1028, -1, -1, 1212, 1213,
4708 1033, 778, 779, -1, -1, -1, -1, -1, -1, -1,
4709 -1, 33, 34, 35, 36, 53, 54, -1, -1, 57,
4710 -1, -1, -1, -1, -1, 1058, -1, 49, 50, 51,
4711 951, 952, -1, -1, -1, 956, 957, 59, 60, 61,
4712 62, 63, -1, -1, 965, -1, 1079, 85, -1, 970,
4713 971, 1084, -1, -1, -1, 1088, -1, -1, -1, -1,
4714 98, 99, 100, -1, 1097, 986, -1, -1, -1, -1,
4715 -1, -1, 1286, 1106, -1, -1, -1, -1, -1, -1,
4716 -1, -1, -1, -1, -1, -1, -1, -1, 1121, 111,
4717 112, 113, 114, 115, 116, 117, 118, 119, -1, 212,
4718 -1, -1, -1, -1, 1025, -1, -1, 1028, -1, -1,
4719 -1, -1, 1033, -1, -1, -1, -1, -1, -1, -1,
4720 56, -1, 235, -1, 237, 238, 148, -1, 241, -1,
4721 243, 908, 909, -1, 247, 912, 249, 1058, 1171, -1,
4722 1173, -1, -1, -1, -1, -1, -1, -1, -1, 1182,
4723 263, 1184, 929, -1, -1, -1, -1, -1, 1079, -1,
4724 -1, 1194, -1, -1, -1, -1, 52, 1088, 54, 55,
4725 56, 57, 58, -1, 212, -1, 1097, -1, -1, -1,
4726 -1, -1, -1, -1, -1, 1106, -1, -1, -1, 1222,
4727 -1, -1, 78, -1, -1, 1228, 1229, -1, 778, 779,
4728 313, 314, 315, 316, 317, 318, 319, 320, -1, 247,
4729 -1, 249, -1, -1, -1, -1, 102, -1, -1, -1,
4730 -1, -1, 108, 109, 110, 263, -1, 340, -1, -1,
4731 -1, -1, -1, 1266, -1, -1, -1, -1, -1, -1,
4732 -1, -1, -1, -1, -1, -1, 284, -1, -1, -1,
4733 1171, -1, 1173, -1, -1, -1, 142, -1, -1, 145,
4734 -1, 1182, -1, 1184, 377, -1, 379, 1044, -1, -1,
4735 1047, 384, 385, 386, 210, 313, 162, 213, 214, 215,
4736 318, -1, -1, -1, 1061, 1062, 1063, 400, -1, 1066,
4737 1067, -1, -1, -1, 1071, 1072, -1, -1, -1, 25,
4738 -1, 1222, 340, 341, -1, -1, -1, 1228, 1229, -1,
4739 -1, -1, -1, -1, 778, 779, 1093, -1, -1, -1,
4740 -1, -1, -1, -1, -1, -1, -1, -1, 908, 909,
4741 -1, -1, 912, 446, -1, -1, -1, -1, -1, -1,
4742 -1, 379, -1, -1, -1, 1266, 384, -1, 386, 929,
4743 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
4744 86, 87, 88, 89, 90, -1, -1, -1, 481, 95,
4745 96, -1, -1, -1, -1, 101, -1, 2, -1, -1,
4746 -1, -1, -1, -1, -1, -1, -1, -1, 501, -1,
4747 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4748 52, -1, 54, 55, 56, 57, 58, -1, -1, -1,
4749 136, -1, 138, 139, 140, 141, 142, 143, 144, 145,
4750 146, 147, -1, -1, -1, -1, 78, -1, 53, 54,
4751 1207, -1, 57, -1, -1, 1212, 1213, -1, -1, -1,
4752 92, -1, -1, 481, 908, 909, -1, -1, 912, -1,
4753 102, 564, 565, -1, 567, 568, 108, 109, 110, -1,
4754 85, 499, -1, 576, 1044, 929, -1, 1047, -1, 582,
4755 -1, -1, -1, 98, 99, 100, -1, -1, -1, -1,
4756 -1, 1061, 1062, 1063, -1, -1, 1066, 1067, -1, -1,
4757 142, 1071, 1072, 145, 78, 79, 80, 81, 82, 83,
4758 84, 85, -1, 87, 88, 441, 442, -1, -1, 1286,
4759 -1, 95, 96, 1093, 450, 628, -1, 630, -1, -1,
4760 -1, -1, -1, -1, -1, 638, -1, 565, -1, -1,
4761 568, -1, -1, -1, -1, 648, -1, 650, 651, -1,
4762 -1, 579, -1, -1, 582, 658, 659, 778, 779, -1,
4763 486, -1, -1, 489, 138, 139, 140, 141, 142, 143,
4764 144, 145, 146, 147, -1, -1, -1, -1, -1, -1,
4765 -1, -1, -1, 686, -1, -1, -1, -1, -1, -1,
4766 1044, -1, -1, 1047, -1, -1, -1, 212, -1, -1,
4767 628, -1, 630, -1, -1, -1, -1, 1061, 1062, 1063,
4768 -1, -1, 1066, 1067, -1, -1, -1, 1071, 1072, -1,
4769 -1, -1, 650, -1, -1, -1, 552, -1, -1, -1,
4770 658, 659, 247, -1, 249, -1, -1, 1207, -1, 1093,
4771 -1, -1, 1212, 1213, -1, -1, -1, -1, 263, 2,
4772 576, 778, 779, -1, -1, -1, 582, -1, -1, -1,
4773 -1, -1, -1, -1, -1, -1, -1, -1, -1, 284,
4774 698, -1, -1, -1, -1, -1, -1, -1, -1, 707,
4775 -1, -1, -1, -1, -1, -1, -1, 908, 909, -1,
4776 -1, 912, -1, -1, -1, -1, -1, -1, 313, -1,
4777 53, 54, -1, 318, 57, -1, -1, -1, 929, -1,
4778 -1, -1, -1, -1, -1, 818, 1286, 820, 821, -1,
4779 -1, -1, -1, -1, -1, 340, 341, -1, -1, -1,
4780 -1, -1, 85, -1, -1, 661, -1, -1, -1, 767,
4781 666, -1, -1, -1, -1, 98, 99, 100, -1, -1,
4782 -1, -1, -1, 1207, -1, 681, -1, 683, 1212, 1213,
4783 -1, -1, -1, -1, 379, -1, -1, -1, -1, 384,
4784 -1, 386, -1, -1, -1, -1, -1, -1, -1, -1,
4785 -1, 908, 909, -1, -1, 912, -1, -1, -1, -1,
4786 818, -1, -1, 821, 897, -1, 899, -1, -1, -1,
4787 903, -1, 929, 729, -1, -1, -1, -1, -1, -1,
4788 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4789 -1, -1, -1, 1044, -1, -1, 1047, -1, -1, -1,
4790 -1, -1, 1286, 759, -1, -1, -1, -1, -1, -1,
4791 1061, 1062, 1063, -1, -1, 1066, 1067, -1, 951, 952,
4792 1071, 1072, -1, 956, 957, -1, -1, -1, -1, 212,
4793 -1, 787, 965, -1, -1, -1, 481, 970, 971, 897,
4794 796, 899, 1093, -1, -1, -1, -1, -1, -1, -1,
4795 -1, -1, -1, 986, 499, 811, -1, -1, -1, -1,
4796 -1, -1, -1, -1, 247, -1, 249, -1, -1, -1,
4797 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4798 263, -1, -1, -1, -1, -1, -1, 1044, -1, -1,
4799 1047, -1, 1025, 951, 952, 1028, 2, -1, 956, 957,
4800 1033, 284, -1, -1, 1061, 1062, 1063, 965, -1, 1066,
4801 1067, -1, 970, -1, 1071, 1072, -1, -1, -1, -1,
4802 565, -1, -1, 568, -1, 1058, -1, -1, 986, -1,
4803 313, -1, -1, -1, 579, 318, 1093, 582, -1, -1,
4804 896, -1, -1, -1, -1, -1, 1079, 53, 54, -1,
4805 -1, 57, -1, -1, -1, 1088, 1207, 340, 341, -1,
4806 -1, 1212, 1213, -1, 1097, -1, -1, 1025, -1, -1,
4807 1028, -1, -1, 1106, -1, 1033, -1, -1, -1, 85,
4808 -1, -1, -1, 628, -1, 630, -1, -1, -1, -1,
4809 -1, -1, 98, 99, 100, 101, 379, -1, -1, -1,
4810 -1, 384, -1, 386, -1, 650, -1, -1, -1, -1,
4811 -1, -1, -1, 658, 659, -1, -1, -1, 2, -1,
4812 -1, 1079, -1, -1, 980, -1, 1084, -1, -1, -1,
4813 1088, -1, -1, -1, -1, 1286, -1, -1, 1171, 1097,
4814 1173, -1, -1, -1, -1, 1001, -1, -1, 1106, 1182,
4815 1207, 1184, -1, 698, -1, 1212, 1213, -1, -1, -1,
4816 -1, -1, 52, 1121, 54, 55, 56, 57, 58, 53,
4817 54, -1, -1, 1029, -1, -1, -1, -1, -1, -1,
4818 -1, -1, -1, -1, -1, -1, -1, -1, 78, 1222,
4819 -1, -1, -1, 2, -1, 1228, 1229, -1, 481, -1,
4820 -1, -1, 92, -1, -1, -1, 212, -1, -1, -1,
4821 -1, -1, 102, 1171, 98, 1173, 499, -1, 108, 109,
4822 110, -1, 767, -1, 1182, -1, 1184, -1, -1, 1286,
4823 -1, -1, -1, 1266, -1, -1, 1194, -1, -1, -1,
4824 1096, 247, -1, 249, 53, 54, -1, -1, -1, -1,
4825 -1, -1, 142, -1, -1, 145, -1, 263, -1, -1,
4826 -1, -1, -1, -1, -1, -1, -1, 157, -1, -1,
4827 -1, -1, -1, 818, -1, -1, 821, -1, 284, -1,
4828 -1, -1, 565, -1, -1, 568, -1, -1, -1, -1,
4829 -1, -1, -1, -1, -1, -1, 579, -1, -1, 582,
4830 -1, -1, -1, -1, -1, -1, -1, 313, 1266, -1,
4831 -1, -1, 318, -1, -1, -1, -1, -1, -1, -1,
4832 1176, -1, -1, -1, -1, -1, -1, -1, 212, -1,
4833 -1, -1, -1, -1, 340, 341, -1, -1, -1, -1,
4834 -1, -1, -1, -1, -1, 628, -1, 630, -1, -1,
4835 44, -1, 897, -1, 899, -1, -1, -1, -1, -1,
4836 -1, -1, -1, 247, -1, 249, -1, 650, -1, -1,
4837 -1, -1, -1, 379, -1, 658, 659, -1, 384, 263,
4838 386, -1, -1, -1, 78, 79, 80, 81, 82, 83,
4839 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
4840 -1, 95, 96, 212, -1, -1, 951, 952, -1, -1,
4841 -1, 956, 957, -1, -1, 698, -1, -1, -1, -1,
4842 965, -1, -1, -1, -1, 970, -1, -1, -1, 313,
4843 -1, -1, -1, -1, 318, -1, -1, -1, 247, -1,
4844 249, 986, 136, -1, 138, 139, 140, 141, 142, 143,
4845 144, 145, 146, 147, 263, -1, 340, -1, -1, -1,
4846 -1, 155, -1, -1, -1, -1, -1, -1, -1, -1,
4847 -1, -1, -1, -1, -1, 481, -1, -1, -1, -1,
4848 1025, -1, -1, 1028, 767, -1, -1, -1, 1033, -1,
4849 -1, -1, -1, 499, -1, 379, -1, -1, -1, -1,
4850 384, -1, 386, -1, 313, -1, -1, -1, -1, 318,
4851 -1, -1, -1, -1, -1, -1, -1, -1, -1, 78,
4852 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
4853 -1, 340, -1, -1, 1079, 818, 95, 96, 821, 1084,
4854 -1, -1, -1, 1088, -1, -1, -1, -1, -1, -1,
4855 -1, -1, 1097, -1, -1, -1, -1, -1, -1, 565,
4856 -1, 1106, 568, -1, -1, -1, -1, -1, -1, -1,
4857 379, -1, -1, 579, -1, 384, 1121, 386, -1, 138,
4858 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
4859 78, 79, 80, 81, 82, 83, 84, 481, -1, 87,
4860 88, -1, -1, -1, -1, -1, -1, 95, 96, -1,
4861 -1, -1, -1, -1, 897, -1, 899, -1, -1, -1,
4862 -1, -1, 628, -1, 630, -1, 1171, -1, 1173, -1,
4863 -1, -1, -1, -1, -1, -1, -1, 1182, -1, 1184,
4864 -1, -1, -1, -1, 650, -1, -1, -1, -1, 1194,
4865 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
4866 -1, -1, -1, -1, -1, -1, -1, -1, 951, 952,
4867 -1, -1, 481, 956, 957, -1, -1, -1, -1, -1,
4868 -1, 565, 965, -1, 568, -1, -1, 970, 44, -1,
4869 -1, -1, 698, -1, -1, -1, -1, -1, 582, -1,
4870 -1, -1, -1, 986, -1, -1, -1, -1, -1, -1,
4871 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4872 -1, 1266, 78, 79, 80, 81, 82, 83, 84, 85,
4873 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
4874 96, -1, 1025, -1, 628, 1028, 630, -1, -1, -1,
4875 1033, -1, -1, -1, -1, -1, 565, -1, -1, 568,
4876 -1, 767, -1, -1, -1, -1, 650, -1, -1, -1,
4877 -1, -1, -1, 582, 658, 659, -1, -1, -1, -1,
4878 136, -1, 138, 139, 140, 141, 142, 143, 144, 145,
4879 146, 147, -1, -1, -1, -1, 1079, -1, -1, -1,
4880 -1, 1084, -1, -1, -1, 1088, -1, -1, -1, -1,
4881 -1, -1, 818, -1, 1097, 821, -1, 0, -1, 628,
4882 -1, 630, -1, 1106, -1, 8, 9, 10, 44, -1,
4883 13, 14, 15, -1, 17, -1, -1, -1, 1121, -1,
4884 -1, 650, 25, 26, 27, -1, -1, -1, -1, 658,
4885 659, -1, -1, -1, 37, 38, -1, 40, 41, 42,
4886 43, 44, 78, 79, 80, 81, 82, 83, 84, 85,
4887 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
4888 96, -1, -1, -1, -1, 68, 69, -1, 1171, -1,
4889 1173, 897, -1, 899, -1, -1, -1, -1, -1, 1182,
4890 -1, 1184, -1, -1, -1, 44, -1, -1, -1, -1,
4891 -1, 1194, -1, -1, 97, 98, -1, -1, -1, -1,
4892 136, -1, 138, 139, 140, 141, 142, 143, 144, 145,
4893 146, 147, -1, -1, 818, -1, -1, 821, 121, 78,
4894 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4895 89, 90, -1, -1, -1, -1, 95, 96, -1, 965,
4896 -1, -1, -1, -1, 970, -1, -1, -1, -1, 152,
4897 153, -1, -1, -1, 157, 158, -1, 160, -1, 162,
4898 986, -1, -1, 1266, -1, -1, -1, -1, -1, -1,
4899 -1, -1, -1, 16, 17, -1, -1, 136, -1, 138,
4900 139, 140, 141, 142, 143, 144, 145, 146, 147, 818,
4901 -1, -1, 821, 897, -1, 899, -1, -1, -1, 1025,
4902 -1, -1, 1028, -1, -1, 48, 49, 50, 51, -1,
4903 -1, -1, 55, 56, -1, -1, -1, -1, -1, -1,
4904 -1, -1, -1, -1, -1, 68, 69, -1, -1, -1,
4905 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4906 -1, -1, -1, -1, -1, -1, -1, 951, 952, -1,
4907 -1, -1, 956, 957, -1, -1, -1, -1, 1084, 102,
4908 -1, 965, 1088, -1, -1, -1, 970, -1, 897, -1,
4909 899, 1097, -1, -1, -1, -1, -1, -1, -1, -1,
4910 1106, -1, 986, -1, -1, -1, -1, -1, -1, -1,
4911 -1, -1, -1, -1, -1, 1121, -1, -1, -1, -1,
4912 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4913 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4914 -1, 1025, 951, 952, 1028, -1, -1, 956, 957, 1033,
4915 -1, -1, -1, -1, -1, -1, 965, -1, -1, -1,
4916 -1, 970, -1, -1, -1, 1171, -1, 1173, -1, -1,
4917 -1, -1, -1, -1, -1, -1, 1182, 986, 1184, -1,
4918 -1, -1, -1, -1, -1, -1, -1, 210, 1194, -1,
4919 213, 214, 215, -1, 217, 1079, -1, -1, -1, -1,
4920 1084, -1, -1, -1, 1088, -1, -1, -1, -1, -1,
4921 -1, -1, 235, 1097, 237, 238, 1025, -1, -1, 1028,
4922 -1, -1, 1106, -1, 1033, -1, -1, -1, -1, -1,
4923 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4924 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
4925 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
4926 1266, 95, 96, -1, -1, -1, -1, -1, -1, -1,
4927 1079, -1, -1, -1, -1, -1, -1, -1, -1, 1088,
4928 -1, -1, -1, -1, -1, -1, -1, 1171, 1097, 1173,
4929 -1, -1, -1, -1, -1, -1, -1, 1106, 1182, -1,
4930 1184, -1, 136, -1, 138, 139, 140, 141, 142, 143,
4931 144, 145, 146, 147, -1, -1, -1, -1, -1, -1,
4932 -1, -1, 345, 346, 347, 348, 349, -1, 162, 352,
4933 353, 354, 355, 356, 357, 358, 359, -1, 361, -1,
4934 -1, 364, 365, 366, 367, 368, 369, 370, 371, 372,
4935 373, -1, -1, -1, 377, -1, -1, -1, -1, -1,
4936 -1, -1, 1171, -1, 1173, -1, -1, -1, -1, -1,
4937 -1, -1, -1, 1182, -1, 1184, -1, -1, -1, -1,
4938 -1, -1, 1266, -1, -1, -1, -1, -1, -1, -1,
4939 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4940 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4941 -1, -1, -1, -1, -1, -1, -1, -1, 441, 442,
4942 -1, -1, -1, 446, -1, -1, -1, 450, -1, -1,
4943 -1, -1, -1, 456, -1, -1, -1, -1, -1, -1,
4944 -1, -1, -1, -1, -1, -1, -1, -1, 471, -1,
4945 -1, -1, -1, -1, -1, -1, -1, 1266, -1, -1,
4946 -1, -1, -1, 486, -1, -1, 489, -1, -1, -1,
4947 -1, -1, -1, -1, -1, -1, -1, -1, 501, -1,
4948 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4949 -1, -1, -1, -1, -1, 518, -1, -1, -1, -1,
4950 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4951 -1, -1, -1, -1, -1, 0, 1, -1, 3, 4,
4952 5, 6, 7, -1, -1, -1, 11, 12, -1, 552,
4953 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
4954 -1, 564, -1, -1, 567, 30, 31, 32, 33, 34,
4955 35, 36, -1, 576, 39, -1, -1, -1, -1, 582,
4956 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
4957 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
4958 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4959 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
4960 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
4961 -1, -1, -1, -1, 99, 638, -1, 102, 103, -1,
4962 105, 106, -1, 108, -1, 648, 111, 112, 113, 114,
4963 115, 116, 117, 118, 119, 658, 659, -1, 661, 662,
4964 663, 664, -1, 666, -1, -1, -1, -1, -1, -1,
4965 -1, -1, 675, 676, -1, -1, -1, -1, 681, -1,
4966 683, -1, -1, 148, 149, 150, -1, -1, -1, 692,
4967 0, -1, -1, -1, -1, 160, -1, 162, 8, 9,
4968 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
4969 -1, -1, -1, -1, -1, 25, 26, 27, 28, 29,
4970 -1, -1, -1, -1, -1, -1, 729, 37, 38, -1,
4971 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
4972 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4973 -1, -1, -1, -1, -1, -1, 759, -1, 68, 69,
4974 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
4975 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
4976 90, -1, -1, -1, 787, 95, 96, 97, 98, -1,
4977 100, 101, -1, 796, -1, -1, -1, 107, -1, -1,
4978 -1, -1, -1, -1, -1, -1, -1, -1, 811, -1,
4979 -1, 121, -1, -1, 124, -1, -1, -1, -1, -1,
4980 -1, -1, -1, -1, -1, 135, 136, 137, 138, 139,
4981 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
4982 -1, -1, 152, 153, 154, 155, -1, -1, 158, 159,
4983 160, -1, 162, 78, 79, 80, 81, 82, 83, 84,
4984 85, 86, 87, 88, 89, 90, -1, -1, -1, -1,
4985 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
4986 -1, -1, -1, 886, 887, -1, 889, 890, -1, -1,
4987 -1, -1, -1, 896, -1, -1, -1, -1, 901, -1,
4988 903, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4989 -1, 136, -1, 138, 139, 140, 141, 142, 143, 144,
4990 145, 146, 147, -1, -1, -1, -1, -1, -1, -1,
4991 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4992 -1, -1, -1, -1, -1, -1, -1, 950, 951, 952,
4993 -1, -1, -1, 956, 957, -1, -1, -1, -1, -1,
4994 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4995 -1, -1, -1, -1, 0, -1, -1, 980, -1, -1,
4996 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
4997 -1, 17, 995, 996, -1, 998, 999, -1, 1001, 25,
4998 -1, 27, 28, 29, -1, -1, -1, -1, -1, -1,
4999 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
5000 -1, -1, -1, -1, -1, -1, 1029, -1, -1, -1,
5001 1033, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5002 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
5003 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
5004 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
5005 96, 97, 98, -1, 100, 101, 1079, -1, -1, -1,
5006 -1, 107, -1, -1, -1, -1, -1, -1, -1, -1,
5007 -1, -1, -1, 1096, -1, 121, -1, -1, 124, 1102,
5008 -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
5009 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
5010 146, 147, -1, -1, -1, -1, -1, 153, 154, 155,
5011 -1, -1, 158, 159, 160, -1, 162, -1, -1, -1,
5012 -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
5013 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
5014 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
5015 28, 29, -1, 1176, -1, -1, -1, -1, -1, 37,
5016 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
5017 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5018 88, 89, 90, -1, -1, -1, -1, 95, 96, -1,
5019 68, 69, -1, -1, -1, -1, -1, -1, -1, 1222,
5020 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5021 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
5022 98, -1, 100, 101, -1, -1, -1, -1, -1, 107,
5023 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5024 -1, -1, -1, 121, -1, -1, 124, -1, -1, -1,
5025 -1, -1, -1, -1, -1, -1, -1, 135, 136, 137,
5026 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5027 -1, -1, -1, -1, -1, 153, 154, 155, 0, -1,
5028 158, 159, 160, -1, 162, -1, 8, 9, 10, -1,
5029 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
5030 -1, -1, -1, 25, 26, 27, 28, 29, -1, -1,
5031 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
5032 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
5033 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5034 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
5035 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
5036 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
5037 -1, -1, -1, 95, 96, 97, 98, -1, -1, 101,
5038 -1, -1, -1, -1, -1, 107, -1, -1, -1, -1,
5039 -1, -1, -1, -1, -1, -1, -1, -1, -1, 121,
5040 -1, -1, 124, -1, -1, -1, -1, -1, -1, -1,
5041 -1, -1, -1, -1, 136, 137, 138, 139, 140, 141,
5042 142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
5043 152, 153, 154, 155, 0, -1, 158, 159, 160, -1,
5044 162, -1, 8, 9, 10, -1, -1, 13, 14, 15,
5045 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
5046 26, 27, 28, 29, -1, -1, -1, -1, -1, -1,
5047 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
5048 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5049 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5050 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
5051 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
5052 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
5053 96, 97, 98, -1, -1, 101, -1, -1, -1, -1,
5054 -1, 107, -1, -1, -1, -1, -1, -1, -1, -1,
5055 -1, -1, -1, -1, -1, 121, -1, -1, 124, -1,
5056 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5057 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
5058 146, 147, -1, -1, -1, -1, 152, 153, 154, 155,
5059 0, -1, 158, 159, 160, -1, 162, -1, 8, 9,
5060 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
5061 -1, -1, -1, -1, -1, 25, -1, 27, 28, 29,
5062 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
5063 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
5064 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5065 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
5066 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
5067 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
5068 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
5069 100, 101, -1, -1, -1, -1, -1, 107, -1, -1,
5070 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5071 -1, 121, -1, -1, 124, -1, -1, -1, -1, -1,
5072 -1, -1, -1, -1, -1, 135, 136, 137, 138, 139,
5073 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
5074 -1, -1, -1, 153, 154, 155, 0, -1, 158, 159,
5075 160, -1, 162, -1, 8, 9, 10, -1, -1, 13,
5076 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
5077 -1, 25, 26, 27, 28, -1, -1, -1, -1, -1,
5078 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
5079 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5080 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5081 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
5082 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
5083 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
5084 -1, 95, 96, 97, 98, -1, -1, 101, -1, -1,
5085 -1, -1, -1, 107, -1, -1, -1, -1, -1, -1,
5086 -1, -1, -1, -1, -1, -1, -1, 121, -1, -1,
5087 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5088 -1, -1, 136, -1, 138, 139, 140, 141, 142, 143,
5089 144, 145, 146, 147, -1, -1, -1, -1, 152, 153,
5090 154, 155, 0, 157, 158, 159, 160, -1, 162, -1,
5091 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
5092 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
5093 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
5094 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
5095 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5096 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5097 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
5098 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5099 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
5100 98, -1, -1, 101, -1, -1, -1, -1, -1, 107,
5101 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5102 -1, -1, -1, 121, -1, -1, 124, -1, -1, -1,
5103 -1, -1, -1, -1, -1, -1, -1, -1, 136, 137,
5104 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5105 -1, -1, -1, -1, -1, 153, 154, 155, 0, -1,
5106 158, 159, 160, -1, 162, -1, 8, 9, 10, -1,
5107 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
5108 -1, -1, -1, 25, 26, 27, 28, -1, -1, -1,
5109 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
5110 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
5111 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5112 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
5113 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
5114 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
5115 -1, -1, -1, 95, 96, 97, 98, -1, -1, 101,
5116 -1, -1, -1, -1, -1, 107, -1, -1, -1, -1,
5117 -1, -1, -1, -1, -1, -1, -1, -1, -1, 121,
5118 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5119 -1, -1, -1, -1, 136, -1, 138, 139, 140, 141,
5120 142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
5121 152, 153, 154, 155, 0, 157, 158, 159, 160, -1,
5122 162, -1, 8, 9, 10, -1, -1, 13, 14, 15,
5123 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
5124 -1, 27, 28, -1, -1, -1, -1, -1, -1, -1,
5125 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
5126 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5127 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5128 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
5129 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
5130 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
5131 96, 97, 98, -1, -1, 101, -1, -1, -1, -1,
5132 -1, 107, -1, -1, -1, -1, -1, -1, -1, -1,
5133 -1, -1, -1, -1, -1, 121, -1, -1, -1, -1,
5134 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5135 136, -1, 138, 139, 140, 141, 142, 143, 144, 145,
5136 146, 147, -1, -1, -1, -1, -1, 153, 154, 155,
5137 0, 157, 158, 159, 160, -1, 162, -1, 8, 9,
5138 10, -1, -1, -1, 14, 15, -1, 17, -1, -1,
5139 -1, -1, -1, -1, -1, 25, 26, -1, -1, -1,
5140 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
5141 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
5142 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5143 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
5144 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
5145 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
5146 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
5147 100, 101, -1, -1, -1, -1, -1, -1, -1, -1,
5148 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5149 -1, 121, -1, -1, -1, -1, -1, -1, -1, -1,
5150 -1, -1, -1, -1, -1, 135, 136, -1, 138, 139,
5151 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
5152 -1, -1, 152, 153, 154, 155, 0, -1, 158, -1,
5153 160, -1, 162, -1, 8, 9, 10, -1, -1, -1,
5154 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
5155 -1, 25, 26, -1, -1, -1, -1, -1, -1, -1,
5156 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
5157 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5158 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5159 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
5160 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
5161 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
5162 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
5163 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5164 -1, -1, -1, -1, -1, -1, -1, 121, -1, -1,
5165 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5166 -1, 135, 136, -1, 138, 139, 140, 141, 142, 143,
5167 144, 145, 146, 147, -1, -1, -1, -1, 152, 153,
5168 154, 155, 0, -1, 158, -1, 160, -1, 162, -1,
5169 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
5170 -1, -1, -1, -1, -1, -1, -1, 25, -1, -1,
5171 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
5172 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
5173 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5174 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5175 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
5176 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5177 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
5178 98, -1, 100, 101, -1, -1, -1, -1, -1, -1,
5179 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5180 -1, -1, -1, 121, -1, -1, -1, -1, -1, -1,
5181 -1, -1, -1, -1, -1, -1, -1, 135, 136, -1,
5182 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5183 -1, -1, -1, -1, -1, 153, 154, 155, 0, -1,
5184 158, -1, 160, -1, 162, -1, 8, 9, 10, -1,
5185 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
5186 -1, -1, -1, 25, -1, -1, -1, -1, -1, -1,
5187 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
5188 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
5189 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5190 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
5191 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
5192 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
5193 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
5194 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5195 -1, -1, -1, -1, -1, -1, -1, -1, -1, 121,
5196 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5197 -1, -1, -1, 135, 136, -1, 138, 139, 140, 141,
5198 142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
5199 -1, 153, 154, 155, -1, -1, 158, -1, 160, 1,
5200 162, 3, 4, 5, 6, 7, 8, 9, 10, 11,
5201 12, -1, -1, 15, 16, -1, 18, 19, 20, 21,
5202 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
5203 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
5204 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5205 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5206 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
5207 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5208 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5209 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5210 102, 103, -1, 105, 106, -1, 108, -1, -1, 111,
5211 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
5212 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
5213 10, 11, 12, -1, 14, 15, 16, -1, 18, 19,
5214 20, 21, 22, 23, 24, -1, 148, 149, 150, -1,
5215 30, 31, 32, 33, 34, 35, 36, -1, 160, 39,
5216 162, -1, -1, -1, -1, 45, 46, 47, 48, 49,
5217 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5218 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
5219 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
5220 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5221 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
5222 -1, -1, 102, 103, -1, 105, 106, -1, 108, -1,
5223 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
5224 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
5225 -1, -1, 10, 11, 12, -1, -1, 15, 16, 17,
5226 18, 19, 20, 21, 22, 23, 24, -1, 148, 149,
5227 150, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5228 160, 39, 162, -1, -1, -1, -1, 45, 46, 47,
5229 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5230 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5231 68, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5232 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5233 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5234 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5235 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5236 118, 119, -1, -1, -1, 1, -1, 3, 4, 5,
5237 6, 7, -1, -1, 10, 11, 12, -1, -1, 15,
5238 16, -1, 18, 19, 20, 21, 22, 23, 24, 25,
5239 148, 149, 150, -1, 30, 31, 32, 33, 34, 35,
5240 36, -1, 160, 39, 162, -1, -1, -1, -1, 45,
5241 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
5242 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
5243 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
5244 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
5245 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
5246 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5247 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
5248 116, 117, 118, 119, -1, -1, -1, 1, -1, 3,
5249 4, 5, 6, 7, -1, -1, 10, 11, 12, -1,
5250 -1, 15, 16, -1, 18, 19, 20, 21, 22, 23,
5251 24, -1, 148, 149, 150, -1, 30, 31, 32, 33,
5252 34, 35, 36, -1, 160, 39, 162, -1, -1, -1,
5253 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
5254 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5255 64, 65, -1, -1, 68, -1, -1, -1, -1, -1,
5256 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
5257 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
5258 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
5259 -1, 105, 106, -1, 108, -1, -1, 111, 112, 113,
5260 114, 115, 116, 117, 118, 119, -1, -1, -1, 1,
5261 -1, 3, 4, 5, 6, 7, -1, 9, 10, 11,
5262 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
5263 22, 23, 24, -1, 148, 149, 150, -1, 30, 31,
5264 32, 33, 34, 35, 36, -1, 160, 39, 162, -1,
5265 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5266 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5267 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
5268 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5269 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5270 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5271 102, 103, -1, 105, 106, -1, 108, -1, -1, 111,
5272 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
5273 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
5274 10, 11, 12, -1, -1, -1, 16, -1, 18, 19,
5275 20, 21, 22, 23, 24, -1, 148, 149, 150, -1,
5276 30, 31, 32, 33, 34, 35, 36, -1, 160, 39,
5277 162, -1, -1, -1, -1, 45, 46, 47, 48, 49,
5278 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5279 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
5280 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
5281 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5282 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
5283 -1, -1, 102, 103, -1, 105, 106, -1, 108, -1,
5284 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
5285 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
5286 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5287 18, 19, 20, 21, 22, 23, 24, -1, 148, 149,
5288 150, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5289 160, 39, 162, -1, -1, -1, -1, 45, 46, 47,
5290 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5291 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5292 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5293 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5294 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5295 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5296 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5297 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5298 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5299 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5300 148, 149, 150, -1, -1, -1, -1, -1, -1, -1,
5301 158, -1, 160, 1, 162, 3, 4, 5, 6, 7,
5302 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5303 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5304 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5305 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5306 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5307 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5308 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5309 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5310 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5311 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5312 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5313 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5314 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5315 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5316 148, 149, 150, -1, -1, -1, -1, -1, -1, -1,
5317 158, -1, 160, 1, 162, 3, 4, 5, 6, 7,
5318 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5319 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5320 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5321 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5322 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5323 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5324 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5325 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5326 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5327 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5328 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5329 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5330 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5331 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5332 148, 149, 150, -1, -1, 153, -1, -1, -1, -1,
5333 -1, -1, 160, 1, 162, 3, 4, 5, 6, 7,
5334 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5335 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5336 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5337 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5338 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5339 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5340 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5341 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5342 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5343 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5344 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5345 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5346 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5347 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5348 148, 149, 150, -1, -1, 153, -1, -1, -1, -1,
5349 -1, -1, 160, 1, 162, 3, 4, 5, 6, 7,
5350 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5351 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5352 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5353 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5354 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5355 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5356 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5357 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5358 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5359 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5360 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5361 118, 119, -1, 121, -1, 1, -1, 3, 4, 5,
5362 6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
5363 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
5364 148, 149, 150, -1, 30, 31, 32, 33, 34, 35,
5365 36, -1, 160, 39, 162, -1, -1, -1, -1, 45,
5366 46, -1, 48, 49, 50, 51, 52, 53, 54, 55,
5367 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
5368 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5369 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
5370 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
5371 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5372 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
5373 116, 117, 118, 119, -1, -1, 1, -1, 3, 4,
5374 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5375 -1, 16, 17, 18, 19, 20, 21, 22, 23, 24,
5376 -1, -1, 148, 149, 150, 30, 31, 32, 33, 34,
5377 35, 36, 158, -1, 39, -1, 162, -1, -1, -1,
5378 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5379 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5380 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5381 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
5382 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
5383 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
5384 105, 106, -1, -1, -1, -1, 111, 112, 113, 114,
5385 115, 116, 117, 118, 119, -1, -1, 0, 1, -1,
5386 3, 4, 5, 6, 7, -1, -1, -1, 11, 12,
5387 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
5388 23, 24, -1, 148, 149, 150, -1, 30, 31, 32,
5389 33, 34, 35, 36, -1, 160, 39, 162, -1, -1,
5390 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
5391 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5392 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5393 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
5394 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
5395 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
5396 103, -1, 105, 106, -1, 108, -1, -1, 111, 112,
5397 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
5398 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5399 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5400 -1, -1, -1, -1, -1, 148, 149, 150, -1, -1,
5401 153, -1, -1, -1, -1, -1, 1, 160, 3, 4,
5402 5, 6, 7, 8, 9, 10, 11, 12, -1, 14,
5403 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
5404 25, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5405 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5406 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
5407 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5408 65, -1, -1, 68, -1, -1, -1, -1, -1, -1,
5409 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
5410 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
5411 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
5412 105, 106, -1, 108, -1, -1, 111, 112, 113, 114,
5413 115, 116, 117, 118, 119, -1, 121, -1, -1, -1,
5414 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5415 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5416 -1, -1, -1, 148, 149, 150, -1, -1, 153, -1,
5417 3, 4, 5, 158, 7, 160, -1, -1, 11, 12,
5418 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
5419 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5420 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5421 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5422 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
5423 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5424 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
5425 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
5426 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
5427 103, -1, 105, 106, -1, 108, 109, 110, 111, 112,
5428 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
5429 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
5430 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
5431 22, 23, 24, -1, -1, 148, 149, 150, 30, 31,
5432 32, 33, 34, 35, 36, -1, -1, 39, -1, 162,
5433 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
5434 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5435 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
5436 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5437 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5438 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5439 102, 103, -1, 105, 106, -1, -1, -1, -1, 111,
5440 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
5441 -1, -1, 3, 4, 5, 6, 7, 8, 9, 10,
5442 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
5443 21, 22, 23, 24, 25, 26, 148, 149, 150, 30,
5444 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
5445 162, -1, -1, -1, 45, 46, 47, 48, 49, 50,
5446 51, 52, 53, 54, 55, 56, 57, -1, -1, -1,
5447 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5448 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
5449 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
5450 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
5451 -1, -1, -1, -1, -1, -1, -1, 108, 109, -1,
5452 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5453 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5454 -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
5455 141, 142, 143, 144, 145, 146, 147, -1, 149, 150,
5456 -1, -1, -1, -1, -1, 156, 157, 3, 4, 5,
5457 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
5458 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
5459 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
5460 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
5461 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
5462 56, 57, -1, -1, -1, -1, -1, -1, -1, -1,
5463 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5464 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
5465 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
5466 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5467 -1, -1, 108, 109, -1, -1, -1, -1, -1, -1,
5468 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5469 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5470 -1, -1, 138, 139, 140, 141, 142, 143, 144, 145,
5471 146, 147, -1, 149, 150, -1, -1, -1, -1, -1,
5472 156, 3, 4, 5, 6, 7, 8, 9, 10, 11,
5473 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
5474 22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
5475 32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
5476 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5477 52, 53, 54, -1, 56, -1, -1, -1, -1, -1,
5478 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5479 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
5480 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
5481 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
5482 -1, -1, -1, -1, -1, -1, 108, 109, -1, -1,
5483 112, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5484 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5485 -1, -1, -1, -1, -1, -1, 138, 139, 140, 141,
5486 142, 143, 144, 145, 146, 147, -1, 149, 150, -1,
5487 -1, -1, -1, -1, 156, 3, 4, 5, 6, 7,
5488 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
5489 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
5490 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
5491 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5492 48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
5493 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5494 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5495 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
5496 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
5497 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5498 108, 109, -1, -1, 112, -1, -1, -1, -1, -1,
5499 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5500 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5501 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5502 -1, 149, 150, -1, -1, -1, -1, -1, 156, 3,
5503 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
5504 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
5505 24, 25, 26, -1, -1, -1, 30, 31, 32, 33,
5506 34, 35, 36, 37, 38, 39, -1, -1, -1, -1,
5507 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
5508 -1, -1, 56, -1, -1, -1, -1, -1, -1, -1,
5509 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5510 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
5511 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
5512 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
5513 -1, -1, -1, -1, 108, 109, -1, -1, -1, -1,
5514 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5515 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5516 -1, -1, -1, -1, 138, 139, 140, 141, 142, 143,
5517 144, 145, 146, 147, -1, 149, 150, 3, 4, 5,
5518 -1, 7, 156, -1, -1, 11, 12, -1, -1, -1,
5519 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
5520 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
5521 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
5522 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
5523 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
5524 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5525 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5526 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5527 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5528 106, -1, -1, -1, -1, 111, 112, 113, 114, 115,
5529 116, 117, 118, 119, -1, -1, -1, -1, -1, -1,
5530 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5531 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
5532 -1, -1, 148, 11, 12, -1, -1, -1, 16, 155,
5533 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5534 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5535 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
5536 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5537 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5538 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5539 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5540 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5541 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5542 -1, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5543 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5544 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5545 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
5546 148, 11, 12, -1, -1, -1, 16, 155, 18, 19,
5547 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
5548 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
5549 -1, -1, -1, -1, -1, 45, 46, -1, 48, 49,
5550 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5551 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
5552 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
5553 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5554 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
5555 -1, -1, 102, 103, -1, 105, 106, -1, 108, -1,
5556 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
5557 -1, -1, 1, -1, 3, 4, 5, -1, 7, -1,
5558 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
5559 19, 20, 21, 22, 23, 24, -1, -1, 148, 149,
5560 150, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5561 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5562 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5563 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5564 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
5565 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5566 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
5567 99, -1, -1, 102, 103, -1, 105, 106, -1, -1,
5568 -1, -1, 111, 112, 113, 114, 115, 116, 117, 118,
5569 119, -1, -1, -1, -1, 3, 4, 5, -1, 7,
5570 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5571 18, 19, 20, 21, 22, 23, 24, -1, -1, 148,
5572 149, 150, 30, 31, 32, 33, 34, 35, 36, -1,
5573 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
5574 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5575 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5576 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5577 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5578 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5579 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5580 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
5581 118, 119, -1, -1, -1, -1, 3, 4, 5, -1,
5582 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
5583 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5584 148, 149, 150, 30, 31, 32, 33, 34, 35, 36,
5585 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5586 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5587 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
5588 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
5589 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5590 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
5591 -1, -1, 99, -1, -1, 102, 103, -1, 105, 106,
5592 -1, 108, 109, 110, 111, 112, 113, 114, 115, 116,
5593 117, 118, 119, -1, -1, -1, -1, 3, 4, 5,
5594 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
5595 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
5596 -1, 148, 149, 150, 30, 31, 32, 33, 34, 35,
5597 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
5598 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
5599 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5600 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5601 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
5602 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
5603 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5604 106, -1, 108, 109, 110, 111, 112, 113, 114, 115,
5605 116, 117, 118, 119, -1, -1, -1, -1, 3, 4,
5606 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5607 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5608 -1, -1, 148, 149, 150, 30, 31, 32, 33, 34,
5609 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5610 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5611 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
5612 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5613 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
5614 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
5615 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
5616 105, 106, -1, 108, 109, 110, 111, 112, 113, 114,
5617 115, 116, 117, 118, 119, -1, -1, -1, -1, 3,
5618 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
5619 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
5620 24, -1, -1, 148, 149, 150, 30, 31, 32, 33,
5621 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
5622 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
5623 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
5624 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
5625 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
5626 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
5627 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
5628 -1, 105, 106, -1, 108, 109, -1, 111, 112, 113,
5629 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
5630 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5631 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
5632 23, 24, -1, -1, 148, 149, 150, 30, 31, 32,
5633 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5634 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5635 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
5636 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5637 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
5638 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
5639 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
5640 103, -1, 105, 106, -1, -1, 109, 110, 111, 112,
5641 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
5642 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
5643 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
5644 22, 23, 24, -1, -1, 148, 149, 150, 30, 31,
5645 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
5646 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
5647 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
5648 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
5649 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5650 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5651 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5652 102, 103, -1, 105, 106, -1, 108, 109, -1, 111,
5653 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
5654 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5655 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
5656 21, 22, 23, 24, -1, -1, 148, 149, 150, 30,
5657 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5658 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5659 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
5660 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5661 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
5662 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5663 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
5664 -1, 102, 103, -1, 105, 106, -1, -1, 109, -1,
5665 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
5666 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
5667 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
5668 20, 21, 22, 23, 24, -1, -1, 148, 149, 150,
5669 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
5670 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
5671 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5672 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
5673 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
5674 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5675 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
5676 -1, -1, 102, 103, -1, 105, 106, -1, 108, -1,
5677 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
5678 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5679 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
5680 19, 20, 21, 22, 23, 24, -1, -1, 148, 149,
5681 150, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5682 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5683 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5684 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5685 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
5686 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5687 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
5688 99, -1, -1, 102, 103, -1, 105, 106, -1, 108,
5689 -1, -1, 111, 112, 113, 114, 115, 116, 117, 118,
5690 119, -1, -1, -1, -1, 3, 4, 5, -1, 7,
5691 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5692 18, 19, 20, 21, 22, 23, 24, -1, -1, 148,
5693 149, 150, 30, 31, 32, 33, 34, 35, 36, -1,
5694 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
5695 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5696 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5697 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5698 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5699 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5700 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5701 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5702 118, 119, -1, -1, -1, -1, 3, 4, 5, -1,
5703 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
5704 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5705 148, 149, 150, 30, 31, 32, 33, 34, 35, 36,
5706 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5707 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5708 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5709 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
5710 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5711 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
5712 -1, -1, 99, -1, -1, 102, 103, -1, 105, 106,
5713 -1, 108, -1, -1, 111, 112, 113, 114, 115, 116,
5714 117, 118, 119, -1, -1, -1, -1, 3, 4, 5,
5715 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
5716 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
5717 -1, 148, 149, 150, 30, 31, 32, 33, 34, 35,
5718 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
5719 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
5720 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
5721 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5722 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
5723 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
5724 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5725 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
5726 116, 117, 118, 119, -1, -1, -1, -1, 3, 4,
5727 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5728 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5729 -1, -1, 148, 149, 150, 30, 31, 32, 33, 34,
5730 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5731 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5732 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5733 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5734 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
5735 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
5736 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
5737 105, 106, -1, -1, -1, -1, 111, 112, 113, 114,
5738 115, 116, 117, 118, 119, -1, -1, -1, -1, 3,
5739 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
5740 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
5741 24, -1, -1, 148, 149, 150, 30, 31, 32, 33,
5742 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
5743 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
5744 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5745 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
5746 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
5747 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
5748 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
5749 -1, 105, 106, -1, -1, -1, -1, 111, 112, 113,
5750 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
5751 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5752 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
5753 23, 24, -1, -1, 148, 149, 150, 30, 31, 32,
5754 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5755 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5756 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5757 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5758 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
5759 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
5760 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
5761 103, -1, 105, 106, -1, -1, -1, -1, 111, 112,
5762 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
5763 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
5764 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
5765 22, 23, 24, -1, -1, 148, 149, 150, 30, 31,
5766 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
5767 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
5768 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5769 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
5770 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5771 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5772 -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5773 102, 103, -1, 105, 106, -1, 108, -1, -1, 111,
5774 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
5775 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5776 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
5777 23, 24, -1, -1, -1, -1, 148, 30, 31, 32,
5778 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5779 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5780 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5781 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5782 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5783 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5784 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
5785 103, -1, 105, 106, -1, 108, -1, -1, 111, 112,
5786 113, 114, 115, 116, 117, 118, 119, -1, -1, 3,
5787 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
5788 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
5789 24, -1, -1, -1, -1, 148, 30, 31, 32, 33,
5790 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
5791 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
5792 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5793 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
5794 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5795 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5796 -1, 95, -1, -1, -1, 99, -1, -1, 102, 103,
5797 -1, 105, 106, -1, -1, -1, -1, 111, 112, 113,
5798 114, 115, 116, 117, 118, 119, -1, -1, 3, 4,
5799 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5800 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5801 -1, -1, -1, -1, 148, 30, 31, 32, 33, 34,
5802 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5803 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5804 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5805 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5806 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5807 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5808 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
5809 105, 106, -1, -1, -1, -1, 111, 112, 113, 114,
5810 115, 116, 117, 118, 119, -1, -1, 3, 4, 5,
5811 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
5812 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
5813 -1, -1, -1, 148, 30, 31, 32, 33, 34, 35,
5814 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
5815 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
5816 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
5817 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5818 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5819 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5820 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5821 106, -1, -1, -1, -1, 111, 112, 113, 114, 115,
5822 116, 117, 118, 119, -1, -1, 3, 4, 5, -1,
5823 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
5824 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5825 -1, -1, 148, 30, 31, 32, 33, 34, 35, 36,
5826 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5827 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5828 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5829 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5830 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5831 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5832 -1, -1, 99, -1, -1, 102, 103, -1, 105, 106,
5833 -1, -1, -1, -1, 111, 112, 113, 114, 115, 116,
5834 117, 118, 119, -1, -1, 3, 4, 5, -1, 7,
5835 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5836 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5837 -1, 148, 30, 31, 32, 33, 34, 35, 36, -1,
5838 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
5839 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5840 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5841 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5842 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5843 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5844 -1, 99, -1, -1, 102, 103, -1, 105, 106, 33,
5845 34, 35, 36, 111, 112, 113, 114, 115, 116, 117,
5846 118, 119, -1, -1, -1, 49, 50, 51, 52, -1,
5847 -1, -1, 56, -1, -1, 59, 60, 61, 62, 63,
5848 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5849 148, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5850 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
5851 -1, -1, -1, -1, -1, 99, -1, -1, 102, -1,
5852 -1, 105, 106, -1, 108, -1, -1, 111, 112, 113,
5853 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
5854 -1, -1, 33, 34, 35, 36, -1, -1, -1, -1,
5855 -1, -1, -1, -1, -1, -1, -1, 141, 49, 50,
5856 51, 52, -1, -1, 148, 56, -1, 58, 59, 60,
5857 61, 62, 63, -1, -1, -1, -1, -1, 162, -1,
5858 -1, -1, -1, -1, -1, -1, -1, 78, -1, -1,
5859 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5860 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
5861 -1, 102, -1, -1, 105, 106, -1, 108, 109, -1,
5862 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
5863 -1, -1, -1, -1, -1, 33, 34, 35, 36, -1,
5864 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5865 141, 49, 50, 51, 52, -1, -1, 148, 56, -1,
5866 -1, 59, 60, 61, 62, 63, -1, -1, -1, -1,
5867 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5868 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5869 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5870 -1, 99, -1, -1, 102, -1, -1, 105, 106, -1,
5871 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5872 118, 119, -1, -1, -1, -1, -1, -1, 33, 34,
5873 35, 36, -1, -1, -1, 52, 53, -1, -1, 56,
5874 -1, -1, -1, 141, 49, 50, 51, 52, -1, -1,
5875 148, 56, -1, -1, 59, 60, 61, 62, 63, 76,
5876 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
5877 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
5878 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
5879 -1, 108, 109, -1, 99, -1, -1, 102, -1, -1,
5880 105, 106, -1, -1, -1, -1, 111, 112, 113, 114,
5881 115, 116, 117, 118, 119, -1, -1, -1, -1, -1,
5882 -1, 138, 139, 140, 141, 142, 143, 144, 145, 146,
5883 147, -1, 149, 150, 52, 53, 141, -1, 56, 156,
5884 157, -1, -1, 148, -1, -1, -1, -1, -1, -1,
5885 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5886 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
5887 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
5888 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5889 108, 109, -1, -1, -1, -1, -1, -1, -1, -1,
5890 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5891 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5892 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5893 -1, 149, 150, 52, 53, -1, -1, 56, 156, 157,
5894 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5895 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
5896 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
5897 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
5898 -1, -1, -1, -1, -1, -1, -1, -1, -1, 108,
5899 109, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5900 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5901 -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
5902 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
5903 149, 150, 52, 53, -1, -1, 56, 156, 157, -1,
5904 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5905 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
5906 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
5907 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
5908 -1, -1, -1, -1, -1, -1, -1, -1, 108, 109,
5909 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5910 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5911 -1, -1, -1, -1, -1, -1, -1, -1, 138, 139,
5912 140, 141, 142, 143, 144, 145, 146, 147, -1, 149,
5913 150, 52, 53, -1, -1, 56, 156, 157, -1, -1,
5914 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5915 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
5916 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
5917 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
5918 -1, -1, -1, -1, -1, -1, -1, 108, 109, -1,
5919 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5920 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5921 -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
5922 141, 142, 143, 144, 145, 146, 147, -1, 149, 150,
5923 52, 53, -1, -1, 56, 156, 157, -1, -1, -1,
5924 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5925 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
5926 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
5927 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
5928 -1, -1, -1, -1, -1, -1, 108, 109, -1, -1,
5929 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5930 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5931 -1, -1, -1, -1, -1, -1, 138, 139, 140, 141,
5932 142, 143, 144, 145, 146, 147, -1, 149, 150, 52,
5933 53, -1, -1, 56, 156, 157, -1, -1, -1, -1,
5934 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5935 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
5936 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
5937 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
5938 -1, -1, -1, -1, -1, 108, 109, -1, -1, -1,
5939 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5940 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5941 -1, -1, -1, -1, -1, 138, 139, 140, 141, 142,
5942 143, 144, 145, 146, 147, -1, 149, 150, 52, 53,
5943 -1, -1, 56, 156, 157, -1, -1, -1, -1, -1,
5944 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5945 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
5946 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
5947 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
5948 -1, -1, -1, -1, 108, 109, -1, -1, -1, -1,
5949 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5950 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5951 -1, -1, -1, -1, 138, 139, 140, 141, 142, 143,
5952 144, 145, 146, 147, -1, 149, 150, 52, 53, -1,
5953 -1, 56, 156, 157, -1, -1, -1, -1, -1, -1,
5954 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5955 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
5956 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
5957 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
5958 -1, -1, -1, 108, 109, -1, -1, -1, -1, -1,
5959 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5960 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5961 -1, -1, -1, 138, 139, 140, 141, 142, 143, 144,
5962 145, 146, 147, -1, 149, 150, 52, 53, -1, -1,
5963 56, 156, 157, -1, -1, -1, -1, -1, -1, -1,
5964 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5965 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
5966 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
5967 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5968 -1, -1, 108, 109, -1, -1, -1, -1, -1, -1,
5969 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5970 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5971 -1, -1, 138, 139, 140, 141, 142, 143, 144, 145,
5972 146, 147, -1, 149, 150, 52, 53, -1, -1, 56,
5973 156, 157, -1, -1, -1, -1, -1, -1, -1, -1,
5974 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
5975 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
5976 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
5977 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5978 -1, 108, 109, -1, -1, -1, -1, -1, -1, -1,
5979 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5980 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5981 -1, 138, 139, 140, 141, 142, 143, 144, 145, 146,
5982 147, -1, 149, 150, 52, 53, -1, -1, 56, 156,
5983 157, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5984 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5985 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
5986 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
5987 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5988 108, 109, -1, -1, -1, -1, -1, -1, -1, -1,
5989 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5990 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5991 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5992 -1, 149, 150, 52, 53, -1, -1, 56, 156, 157,
5993 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5994 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
5995 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
5996 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
5997 -1, -1, -1, -1, -1, -1, -1, -1, -1, 108,
5998 109, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5999 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6000 -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
6001 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
6002 149, 150, 52, 53, -1, -1, 56, 156, 157, -1,
6003 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6004 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
6005 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
6006 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
6007 -1, -1, -1, -1, -1, -1, -1, -1, 108, 109,
6008 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6009 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6010 -1, -1, -1, -1, -1, -1, -1, -1, 138, 139,
6011 140, 141, 142, 143, 144, 145, 146, 147, -1, 149,
6012 150, 52, 53, -1, -1, 56, 156, 157, -1, -1,
6013 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6014 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
6015 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
6016 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
6017 -1, -1, -1, -1, -1, -1, -1, 108, 109, -1,
6018 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6019 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6020 -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
6021 141, 142, 143, 144, 145, 146, 147, -1, 149, 150,
6022 52, 53, -1, -1, 56, 156, 157, -1, -1, -1,
6023 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6024 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
6025 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
6026 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
6027 -1, -1, -1, -1, -1, -1, 108, 109, -1, -1,
6028 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6029 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6030 -1, -1, -1, -1, -1, -1, 138, 139, 140, 141,
6031 142, 143, 144, 145, 146, 147, -1, 149, 150, -1,
6037static const yytype_int16 yystos[] =
6039 0, 164, 165, 0, 1, 3, 4, 5, 6, 7,
6040 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
6041 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
6042 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6043 57, 59, 60, 61, 62, 63, 64, 65, 76, 77,
6044 91, 92, 99, 102, 103, 105, 106, 108, 111, 112,
6045 113, 114, 115, 116, 117, 118, 119, 148, 149, 150,
6046 166, 167, 168, 176, 178, 180, 186, 187, 193, 194,
6047 196, 197, 198, 200, 201, 202, 204, 205, 214, 217,
6048 233, 245, 246, 247, 248, 249, 250, 251, 252, 253,
6049 254, 255, 264, 286, 295, 296, 348, 349, 350, 351,
6050 352, 353, 354, 357, 359, 360, 374, 375, 377, 378,
6051 379, 380, 381, 382, 383, 384, 385, 423, 437, 3,
6052 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
6053 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
6054 24, 25, 26, 30, 31, 32, 33, 34, 35, 36,
6055 37, 38, 39, 45, 46, 47, 48, 49, 50, 51,
6056 52, 53, 56, 76, 77, 78, 79, 80, 81, 82,
6057 83, 84, 87, 88, 93, 94, 95, 96, 108, 109,
6058 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
6059 149, 150, 156, 208, 209, 210, 212, 213, 374, 39,
6060 58, 99, 102, 108, 109, 110, 113, 149, 186, 187,
6061 197, 205, 214, 219, 225, 228, 230, 245, 381, 382,
6062 384, 385, 421, 422, 225, 157, 226, 227, 157, 222,
6063 226, 157, 162, 430, 54, 209, 430, 152, 169, 152,
6064 21, 22, 31, 32, 196, 214, 245, 264, 214, 214,
6065 214, 56, 47, 102, 172, 173, 174, 176, 199, 200,
6066 437, 176, 235, 220, 230, 421, 437, 219, 420, 421,
6067 437, 46, 99, 148, 155, 186, 187, 204, 233, 245,
6068 381, 382, 385, 287, 208, 363, 376, 380, 363, 364,
6069 365, 161, 161, 161, 161, 379, 193, 214, 214, 160,
6070 162, 429, 435, 436, 40, 41, 42, 43, 44, 37,
6071 38, 157, 388, 389, 390, 391, 437, 388, 390, 26,
6072 152, 222, 226, 256, 297, 28, 257, 294, 135, 155,
6073 102, 108, 201, 135, 25, 78, 79, 80, 81, 82,
6074 83, 84, 85, 86, 87, 88, 89, 90, 95, 96,
6075 101, 136, 138, 139, 140, 141, 142, 143, 144, 145,
6076 146, 147, 216, 216, 69, 97, 98, 154, 427, 234,
6077 1, 180, 189, 189, 190, 191, 190, 189, 429, 436,
6078 99, 198, 205, 245, 269, 381, 382, 385, 52, 56,
6079 95, 99, 206, 207, 245, 381, 382, 385, 207, 33,
6080 34, 35, 36, 49, 50, 51, 52, 56, 157, 185,
6081 208, 383, 418, 225, 98, 427, 428, 297, 351, 100,
6082 100, 155, 219, 56, 219, 219, 219, 363, 388, 388,
6083 135, 101, 155, 229, 437, 98, 154, 427, 100, 100,
6084 155, 229, 225, 430, 431, 225, 92, 224, 225, 230,
6085 395, 421, 437, 180, 431, 180, 54, 64, 65, 177,
6086 157, 215, 166, 172, 98, 427, 100, 175, 199, 158,
6087 429, 436, 431, 236, 431, 159, 155, 430, 434, 155,
6088 434, 153, 434, 430, 56, 379, 201, 203, 389, 155,
6089 98, 154, 427, 288, 66, 120, 122, 123, 366, 120,
6090 120, 366, 67, 366, 355, 361, 358, 362, 78, 160,
6091 168, 189, 189, 189, 189, 176, 180, 180, 52, 54,
6092 55, 56, 57, 58, 78, 92, 102, 108, 109, 110,
6093 142, 145, 274, 336, 392, 394, 395, 396, 397, 398,
6094 399, 400, 401, 402, 405, 406, 407, 408, 409, 412,
6095 413, 414, 415, 416, 135, 243, 394, 135, 244, 298,
6096 299, 107, 195, 302, 303, 302, 218, 437, 199, 155,
6097 204, 155, 218, 183, 214, 214, 214, 214, 214, 214,
6098 214, 214, 214, 214, 214, 214, 214, 181, 214, 214,
6099 214, 214, 214, 214, 214, 214, 214, 214, 214, 52,
6100 53, 56, 212, 222, 423, 424, 425, 224, 230, 52,
6101 53, 56, 212, 222, 424, 170, 172, 13, 265, 435,
6102 265, 172, 189, 172, 429, 239, 56, 98, 154, 427,
6103 25, 180, 52, 56, 206, 139, 386, 98, 154, 427,
6104 242, 419, 69, 98, 426, 52, 56, 424, 218, 218,
6105 211, 125, 135, 135, 218, 219, 108, 219, 228, 421,
6106 52, 56, 224, 52, 56, 218, 218, 422, 431, 158,
6107 431, 155, 431, 155, 431, 209, 237, 214, 153, 153,
6108 424, 424, 218, 169, 431, 174, 431, 421, 155, 203,
6109 52, 56, 224, 52, 56, 289, 368, 367, 120, 356,
6110 366, 66, 120, 120, 356, 66, 120, 214, 102, 108,
6111 270, 271, 272, 273, 397, 155, 417, 437, 431, 275,
6112 276, 155, 393, 219, 155, 417, 34, 52, 155, 393,
6113 52, 155, 393, 52, 197, 214, 170, 435, 197, 214,
6114 170, 153, 300, 298, 10, 68, 263, 304, 263, 108,
6115 193, 219, 230, 231, 232, 431, 203, 155, 178, 179,
6116 193, 205, 214, 219, 221, 232, 245, 385, 184, 182,
6117 430, 100, 100, 222, 226, 430, 432, 155, 100, 100,
6118 222, 223, 226, 437, 263, 8, 258, 344, 437, 172,
6119 13, 172, 263, 27, 266, 435, 263, 25, 238, 309,
6120 17, 260, 307, 52, 56, 224, 52, 56, 190, 241,
6121 387, 240, 52, 56, 206, 224, 170, 180, 188, 223,
6122 226, 179, 214, 221, 179, 221, 209, 219, 219, 229,
6123 100, 100, 432, 100, 100, 395, 421, 180, 221, 434,
6124 201, 432, 157, 291, 394, 369, 54, 55, 57, 373,
6125 385, 161, 366, 161, 161, 161, 272, 397, 155, 431,
6126 155, 416, 219, 135, 392, 399, 412, 414, 402, 406,
6127 408, 400, 409, 414, 398, 400, 44, 44, 263, 44,
6128 44, 263, 301, 153, 305, 219, 155, 44, 203, 44,
6129 135, 44, 98, 154, 427, 52, 56, 58, 91, 92,
6130 99, 102, 105, 106, 108, 113, 141, 286, 315, 316,
6131 317, 318, 321, 326, 327, 328, 331, 332, 333, 334,
6132 335, 336, 337, 338, 339, 340, 341, 342, 343, 348,
6133 349, 352, 353, 354, 357, 359, 360, 382, 406, 315,
6134 137, 218, 218, 195, 159, 100, 218, 218, 195, 219,
6135 232, 345, 437, 9, 15, 259, 261, 347, 437, 14,
6136 261, 262, 267, 268, 437, 268, 192, 310, 307, 263,
6137 108, 219, 306, 263, 432, 172, 435, 189, 170, 432,
6138 263, 431, 185, 297, 294, 218, 218, 100, 218, 218,
6139 431, 155, 431, 394, 290, 370, 431, 270, 273, 271,
6140 155, 393, 155, 393, 417, 155, 393, 155, 393, 393,
6141 214, 214, 214, 214, 140, 281, 282, 437, 281, 108,
6142 219, 176, 176, 218, 214, 52, 56, 224, 52, 56,
6143 339, 339, 56, 206, 323, 316, 324, 325, 326, 327,
6144 330, 432, 322, 430, 433, 52, 363, 52, 102, 380,
6145 101, 155, 140, 155, 155, 316, 89, 90, 98, 154,
6146 157, 319, 320, 52, 214, 179, 221, 179, 221, 218,
6147 179, 221, 179, 221, 101, 346, 437, 172, 171, 172,
6148 189, 263, 263, 311, 263, 219, 155, 265, 263, 170,
6149 435, 263, 218, 283, 430, 29, 124, 292, 371, 155,
6150 155, 400, 414, 400, 400, 274, 277, 280, 283, 398,
6151 400, 401, 403, 404, 410, 411, 414, 416, 172, 170,
6152 219, 432, 316, 432, 316, 328, 330, 432, 155, 113,
6153 331, 153, 125, 189, 340, 324, 328, 321, 329, 330,
6154 333, 337, 339, 339, 206, 432, 431, 324, 327, 331,
6155 324, 327, 331, 179, 221, 99, 205, 245, 381, 382,
6156 385, 265, 172, 265, 314, 315, 108, 219, 172, 263,
6157 158, 160, 293, 172, 372, 271, 393, 155, 393, 393,
6158 393, 417, 283, 140, 275, 155, 278, 279, 99, 245,
6159 155, 417, 155, 278, 155, 278, 431, 155, 155, 363,
6160 433, 431, 155, 155, 431, 431, 431, 432, 432, 432,
6161 56, 98, 154, 427, 172, 347, 172, 265, 40, 41,
6162 219, 268, 307, 308, 52, 284, 285, 396, 170, 153,
6163 172, 400, 140, 245, 277, 411, 414, 56, 98, 403,
6164 408, 400, 410, 414, 400, 329, 329, 328, 330, 52,
6165 56, 224, 52, 56, 344, 267, 312, 189, 189, 155,
6166 430, 263, 121, 393, 155, 278, 155, 278, 52, 56,
6167 417, 155, 278, 155, 278, 278, 155, 432, 172, 285,
6168 400, 414, 400, 400, 268, 309, 313, 278, 155, 278,
6173static const yytype_int16 yyr1[] =
6175 0, 163, 165, 164, 166, 167, 167, 167, 168, 168,
6176 169, 171, 170, 170, 172, 173, 173, 173, 174, 175,
6177 174, 177, 176, 176, 176, 176, 176, 176, 176, 176,
6178 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
6179 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
6180 178, 178, 179, 179, 179, 180, 180, 180, 180, 180,
6181 181, 182, 180, 183, 184, 180, 180, 185, 186, 188,
6182 187, 189, 189, 191, 192, 190, 193, 193, 194, 194,
6183 195, 196, 197, 197, 197, 197, 197, 197, 197, 197,
6184 197, 197, 197, 198, 198, 199, 199, 200, 200, 200,
6185 200, 200, 200, 200, 200, 200, 200, 201, 201, 202,
6186 202, 203, 203, 204, 204, 204, 204, 204, 204, 204,
6187 204, 204, 205, 205, 205, 205, 205, 205, 205, 205,
6188 205, 206, 206, 207, 207, 207, 208, 208, 208, 208,
6189 208, 209, 209, 210, 211, 210, 212, 212, 212, 212,
6190 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
6191 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
6192 212, 212, 212, 212, 212, 212, 213, 213, 213, 213,
6193 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
6194 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
6195 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
6196 213, 213, 213, 213, 213, 213, 213, 214, 214, 214,
6197 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
6198 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
6199 214, 214, 214, 214, 214, 214, 214, 214, 214, 214,
6200 214, 214, 214, 214, 214, 214, 214, 215, 214, 214,
6201 214, 214, 214, 214, 214, 216, 216, 216, 216, 217,
6202 217, 218, 219, 220, 220, 220, 220, 221, 221, 222,
6203 222, 222, 223, 223, 224, 224, 224, 224, 224, 225,
6204 225, 225, 225, 225, 227, 226, 228, 228, 229, 229,
6205 230, 230, 230, 230, 230, 230, 231, 231, 232, 232,
6206 232, 233, 233, 233, 233, 233, 233, 233, 233, 233,
6207 233, 233, 234, 233, 235, 233, 236, 233, 233, 233,
6208 233, 233, 233, 233, 233, 233, 233, 237, 233, 233,
6209 233, 233, 233, 233, 233, 233, 233, 233, 233, 238,
6210 233, 239, 233, 233, 233, 240, 233, 241, 233, 242,
6211 233, 243, 233, 244, 233, 233, 233, 233, 233, 245,
6212 246, 247, 248, 249, 250, 251, 252, 253, 254, 255,
6213 256, 257, 258, 259, 260, 261, 262, 263, 263, 264,
6214 265, 265, 265, 266, 266, 267, 267, 268, 268, 269,
6215 269, 270, 270, 271, 271, 272, 272, 272, 272, 272,
6216 273, 273, 274, 274, 276, 275, 277, 277, 277, 277,
6217 278, 278, 279, 280, 280, 280, 280, 280, 280, 280,
6218 280, 280, 280, 280, 280, 280, 280, 280, 281, 281,
6219 282, 282, 283, 283, 284, 284, 285, 285, 287, 288,
6220 289, 290, 286, 291, 291, 292, 293, 292, 294, 295,
6221 295, 295, 295, 296, 296, 296, 296, 296, 296, 296,
6222 296, 296, 297, 297, 299, 300, 301, 298, 303, 304,
6223 305, 302, 306, 306, 306, 306, 307, 308, 308, 310,
6224 311, 312, 309, 313, 313, 314, 314, 314, 315, 315,
6225 315, 315, 315, 315, 316, 317, 317, 318, 318, 319,
6226 320, 321, 321, 321, 321, 321, 321, 321, 321, 321,
6227 321, 321, 321, 321, 322, 321, 321, 323, 321, 324,
6228 324, 324, 324, 324, 324, 325, 325, 326, 326, 327,
6229 328, 328, 329, 329, 330, 331, 331, 331, 331, 332,
6230 332, 333, 333, 334, 334, 335, 335, 336, 337, 337,
6231 338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
6232 339, 339, 339, 339, 339, 339, 339, 339, 339, 339,
6233 340, 341, 341, 342, 343, 343, 343, 344, 344, 345,
6234 345, 345, 346, 346, 347, 347, 348, 348, 349, 350,
6235 350, 350, 351, 352, 353, 354, 355, 355, 356, 356,
6236 357, 358, 358, 359, 360, 361, 361, 362, 362, 363,
6237 363, 364, 364, 365, 365, 366, 367, 366, 368, 369,
6238 370, 371, 372, 366, 373, 373, 373, 373, 374, 374,
6239 375, 376, 376, 377, 378, 378, 379, 379, 379, 379,
6240 380, 380, 380, 381, 381, 381, 382, 382, 382, 382,
6241 382, 382, 382, 383, 383, 384, 384, 385, 385, 387,
6242 386, 386, 388, 388, 389, 390, 391, 390, 392, 392,
6243 392, 392, 392, 393, 393, 394, 394, 394, 394, 394,
6244 394, 394, 394, 394, 394, 394, 394, 394, 394, 394,
6245 395, 396, 396, 396, 396, 397, 397, 398, 399, 399,
6246 400, 400, 401, 402, 402, 403, 403, 404, 404, 405,
6247 405, 406, 406, 407, 408, 408, 409, 410, 411, 411,
6248 412, 412, 413, 413, 414, 414, 415, 415, 416, 416,
6249 417, 417, 418, 419, 418, 420, 420, 421, 421, 422,
6250 422, 422, 422, 422, 422, 423, 423, 423, 424, 424,
6251 425, 425, 425, 426, 426, 427, 427, 428, 428, 429,
6252 429, 430, 430, 431, 432, 433, 434, 434, 435, 435,
6257static const yytype_int8 yyr2[] =
6259 0, 2, 0, 2, 2, 1, 1, 3, 1, 2,
6260 3, 0, 6, 3, 2, 1, 1, 3, 1, 0,
6261 3, 0, 4, 3, 3, 3, 2, 3, 3, 3,
6262 3, 3, 4, 1, 4, 4, 6, 4, 1, 1,
6263 4, 4, 7, 6, 6, 6, 6, 4, 6, 4,
6264 6, 4, 1, 3, 1, 1, 3, 3, 3, 2,
6265 0, 0, 5, 0, 0, 5, 1, 1, 2, 0,
6266 5, 1, 1, 0, 0, 4, 1, 1, 1, 4,
6267 3, 1, 2, 3, 4, 5, 4, 5, 2, 2,
6268 2, 2, 2, 1, 3, 1, 3, 1, 2, 3,
6269 5, 2, 4, 2, 4, 1, 3, 1, 3, 2,
6270 3, 1, 3, 1, 1, 4, 3, 3, 3, 3,
6271 2, 1, 1, 1, 4, 3, 3, 3, 3, 2,
6272 1, 1, 1, 2, 1, 3, 1, 1, 1, 1,
6273 1, 1, 1, 1, 0, 4, 1, 1, 1, 1,
6274 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6275 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6276 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6277 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6278 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6279 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6280 1, 1, 1, 1, 1, 1, 1, 4, 4, 7,
6281 6, 6, 6, 6, 5, 4, 3, 3, 2, 2,
6282 2, 2, 3, 3, 3, 3, 3, 3, 4, 2,
6283 2, 3, 3, 3, 3, 1, 3, 3, 3, 3,
6284 3, 2, 2, 3, 3, 3, 3, 0, 4, 6,
6285 4, 6, 4, 6, 1, 1, 1, 1, 1, 3,
6286 3, 1, 1, 1, 2, 4, 2, 1, 3, 3,
6287 5, 3, 1, 1, 1, 1, 2, 4, 2, 1,
6288 2, 2, 4, 1, 0, 2, 2, 1, 2, 1,
6289 1, 2, 1, 3, 4, 3, 1, 1, 3, 4,
6290 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6291 1, 1, 0, 4, 0, 3, 0, 4, 3, 3,
6292 2, 3, 3, 1, 4, 3, 1, 0, 6, 4,
6293 3, 2, 1, 2, 1, 6, 6, 4, 4, 0,
6294 6, 0, 5, 5, 6, 0, 6, 0, 7, 0,
6295 5, 0, 5, 0, 5, 1, 1, 1, 1, 1,
6296 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6297 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6298 1, 1, 2, 1, 1, 1, 5, 1, 2, 1,
6299 1, 1, 3, 1, 3, 1, 3, 5, 1, 3,
6300 2, 1, 1, 1, 0, 2, 4, 2, 2, 1,
6301 2, 0, 1, 6, 8, 4, 6, 4, 2, 6,
6302 2, 4, 6, 2, 4, 2, 4, 1, 1, 1,
6303 3, 4, 1, 4, 1, 3, 1, 1, 0, 0,
6304 0, 0, 7, 4, 1, 3, 0, 4, 3, 2,
6305 4, 5, 5, 2, 4, 4, 3, 3, 3, 2,
6306 1, 4, 3, 3, 0, 0, 0, 5, 0, 0,
6307 0, 5, 1, 2, 3, 4, 5, 1, 1, 0,
6308 0, 0, 8, 1, 1, 1, 3, 3, 1, 2,
6309 3, 1, 1, 1, 1, 3, 1, 3, 1, 1,
6310 1, 1, 1, 4, 4, 4, 3, 4, 4, 4,
6311 3, 3, 3, 2, 0, 4, 2, 0, 4, 1,
6312 1, 2, 2, 4, 1, 2, 3, 1, 3, 5,
6313 2, 1, 1, 3, 1, 3, 1, 2, 1, 1,
6314 3, 2, 1, 1, 3, 2, 1, 2, 1, 1,
6315 1, 3, 3, 2, 2, 1, 1, 1, 2, 2,
6316 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6317 1, 2, 2, 4, 2, 3, 1, 6, 1, 1,
6318 1, 1, 2, 1, 2, 1, 1, 1, 1, 1,
6319 1, 2, 3, 3, 3, 4, 0, 3, 1, 2,
6320 4, 0, 3, 4, 4, 0, 3, 0, 3, 0,
6321 2, 0, 2, 0, 2, 1, 0, 3, 0, 0,
6322 0, 0, 0, 8, 1, 1, 1, 1, 1, 1,
6323 2, 1, 1, 3, 1, 2, 1, 1, 1, 1,
6324 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6325 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
6326 4, 0, 1, 1, 3, 1, 0, 3, 4, 2,
6327 2, 1, 1, 2, 0, 6, 8, 4, 6, 4,
6328 6, 2, 4, 6, 2, 4, 2, 4, 1, 0,
6329 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
6330 1, 3, 1, 2, 1, 2, 1, 1, 3, 1,
6331 3, 1, 1, 1, 2, 1, 3, 3, 1, 3,
6332 1, 3, 1, 1, 2, 1, 1, 1, 2, 1,
6333 2, 1, 1, 0, 4, 1, 2, 1, 3, 3,
6334 2, 1, 4, 2, 1, 1, 1, 1, 1, 1,
6335 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
6336 1, 0, 1, 2, 2, 2, 1, 1, 1, 1,
6341enum { YYENOMEM = -2 };
6343#define yyerrok (yyerrstatus = 0)
6344#define yyclearin (yychar = YYEMPTY)
6346#define YYACCEPT goto yyacceptlab
6347#define YYABORT goto yyabortlab
6348#define YYERROR goto yyerrorlab
6349#define YYNOMEM goto yyexhaustedlab
6352#define YYRECOVERING() (!!yyerrstatus)
6354#define YYBACKUP(Token, Value) \
6356 if (yychar == YYEMPTY) \
6360 YYPOPSTACK (yylen); \
6366 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
6373#define YYERRCODE YYUNDEF
6379#ifndef YYLLOC_DEFAULT
6380# define YYLLOC_DEFAULT(Current, Rhs, N) \
6384 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
6385 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
6386 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
6387 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
6391 (Current).first_line = (Current).last_line = \
6392 YYRHSLOC (Rhs, 0).last_line; \
6393 (Current).first_column = (Current).last_column = \
6394 YYRHSLOC (Rhs, 0).last_column; \
6399#define YYRHSLOC(Rhs, K) ((Rhs)[K])
6407# define YYFPRINTF fprintf
6410# define YYDPRINTF(Args) \
6421# ifndef YYLOCATION_PRINT
6423# if defined YY_LOCATION_PRINT
6427# define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
6429# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
6435yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
6438 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
6439 if (0 <= yylocp->first_line)
6441 res += YYFPRINTF (p,
"%d", yylocp->first_line);
6442 if (0 <= yylocp->first_column)
6443 res += YYFPRINTF (p,
".%d", yylocp->first_column);
6445 if (0 <= yylocp->last_line)
6447 if (yylocp->first_line < yylocp->last_line)
6449 res += YYFPRINTF (p,
"-%d", yylocp->last_line);
6451 res += YYFPRINTF (p,
".%d", end_col);
6453 else if (0 <= end_col && yylocp->first_column < end_col)
6454 res += YYFPRINTF (p,
"-%d", end_col);
6459# define YYLOCATION_PRINT yy_location_print_
6463# define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
6467# define YYLOCATION_PRINT(File, Loc) ((void) 0)
6470# define YY_LOCATION_PRINT YYLOCATION_PRINT
6476# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
6480 YYFPRINTF (p, "%s ", Title); \
6481 yy_symbol_print (stderr, \
6482 Kind, Value, Location, p); \
6483 YYFPRINTF (p, "\n"); \
6493yy_symbol_value_print (
FILE *yyo,
6496 FILE *yyoutput = yyo;
6498 YY_USE (yylocationp);
6502 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6505 case YYSYMBOL_tIDENTIFIER:
6509 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6511 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6521 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6523 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6529 case YYSYMBOL_tGVAR:
6533 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6535 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6541 case YYSYMBOL_tIVAR:
6545 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6547 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6553 case YYSYMBOL_tCONSTANT:
6557 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6559 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6565 case YYSYMBOL_tCVAR:
6569 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6571 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6577 case YYSYMBOL_tLABEL:
6581 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6583 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6589 case YYSYMBOL_tINTEGER:
6593 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6595 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6601 case YYSYMBOL_tFLOAT:
6605 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6607 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6613 case YYSYMBOL_tRATIONAL:
6617 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6619 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6625 case YYSYMBOL_tIMAGINARY:
6629 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6631 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6637 case YYSYMBOL_tCHAR:
6641 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6643 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6649 case YYSYMBOL_tNTH_REF:
6653 rb_parser_printf(p,
"$%ld", ((*yyvaluep).node)->nd_nth);
6655 rb_parser_printf(p,
"%"PRIsVALUE, ((*yyvaluep).node));
6661 case YYSYMBOL_tBACK_REF:
6665 rb_parser_printf(p,
"$%c", (
int)((*yyvaluep).node)->nd_nth);
6667 rb_parser_printf(p,
"%"PRIsVALUE, ((*yyvaluep).node));
6673 case YYSYMBOL_tSTRING_CONTENT:
6677 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6679 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6685 case YYSYMBOL_tOP_ASGN:
6689 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6691 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6697 case YYSYMBOL_top_compstmt:
6701 if (((*yyvaluep).node)) {
6702 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6710 case YYSYMBOL_top_stmts:
6714 if (((*yyvaluep).node)) {
6715 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6723 case YYSYMBOL_top_stmt:
6727 if (((*yyvaluep).node)) {
6728 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6736 case YYSYMBOL_begin_block:
6740 if (((*yyvaluep).node)) {
6741 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6749 case YYSYMBOL_bodystmt:
6753 if (((*yyvaluep).node)) {
6754 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6762 case YYSYMBOL_compstmt:
6766 if (((*yyvaluep).node)) {
6767 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6775 case YYSYMBOL_stmts:
6779 if (((*yyvaluep).node)) {
6780 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6788 case YYSYMBOL_stmt_or_begin:
6792 if (((*yyvaluep).node)) {
6793 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6805 if (((*yyvaluep).node)) {
6806 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6814 case YYSYMBOL_command_asgn:
6818 if (((*yyvaluep).node)) {
6819 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6827 case YYSYMBOL_command_rhs:
6831 if (((*yyvaluep).node)) {
6832 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6844 if (((*yyvaluep).node)) {
6845 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6853 case YYSYMBOL_def_name:
6857 if (((*yyvaluep).node)) {
6858 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6866 case YYSYMBOL_defn_head:
6870 if (((*yyvaluep).node)) {
6871 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6879 case YYSYMBOL_defs_head:
6883 if (((*yyvaluep).node)) {
6884 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6892 case YYSYMBOL_expr_value:
6896 if (((*yyvaluep).node)) {
6897 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6905 case YYSYMBOL_expr_value_do:
6909 if (((*yyvaluep).node)) {
6910 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6918 case YYSYMBOL_command_call:
6922 if (((*yyvaluep).node)) {
6923 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6931 case YYSYMBOL_block_command:
6935 if (((*yyvaluep).node)) {
6936 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6944 case YYSYMBOL_cmd_brace_block:
6948 if (((*yyvaluep).node)) {
6949 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6957 case YYSYMBOL_fcall:
6961 if (((*yyvaluep).node)) {
6962 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6970 case YYSYMBOL_command:
6974 if (((*yyvaluep).node)) {
6975 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6987 if (((*yyvaluep).node)) {
6988 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
6996 case YYSYMBOL_mlhs_inner:
7000 if (((*yyvaluep).node)) {
7001 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7009 case YYSYMBOL_mlhs_basic:
7013 if (((*yyvaluep).node)) {
7014 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7022 case YYSYMBOL_mlhs_item:
7026 if (((*yyvaluep).node)) {
7027 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7035 case YYSYMBOL_mlhs_head:
7039 if (((*yyvaluep).node)) {
7040 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7048 case YYSYMBOL_mlhs_post:
7052 if (((*yyvaluep).node)) {
7053 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7061 case YYSYMBOL_mlhs_node:
7065 if (((*yyvaluep).node)) {
7066 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7078 if (((*yyvaluep).node)) {
7079 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7087 case YYSYMBOL_cpath:
7091 if (((*yyvaluep).node)) {
7092 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7100 case YYSYMBOL_fitem:
7104 if (((*yyvaluep).node)) {
7105 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7113 case YYSYMBOL_undef_list:
7117 if (((*yyvaluep).node)) {
7118 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7130 if (((*yyvaluep).node)) {
7131 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7139 case YYSYMBOL_rel_expr:
7143 if (((*yyvaluep).node)) {
7144 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7152 case YYSYMBOL_arg_value:
7156 if (((*yyvaluep).node)) {
7157 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7165 case YYSYMBOL_aref_args:
7169 if (((*yyvaluep).node)) {
7170 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7178 case YYSYMBOL_arg_rhs:
7182 if (((*yyvaluep).node)) {
7183 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7191 case YYSYMBOL_paren_args:
7195 if (((*yyvaluep).node)) {
7196 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7204 case YYSYMBOL_opt_paren_args:
7208 if (((*yyvaluep).node)) {
7209 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7217 case YYSYMBOL_opt_call_args:
7221 if (((*yyvaluep).node)) {
7222 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7230 case YYSYMBOL_call_args:
7234 if (((*yyvaluep).node)) {
7235 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7243 case YYSYMBOL_command_args:
7247 if (((*yyvaluep).node)) {
7248 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7256 case YYSYMBOL_block_arg:
7260 if (((*yyvaluep).node)) {
7261 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7269 case YYSYMBOL_opt_block_arg:
7273 if (((*yyvaluep).node)) {
7274 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7286 if (((*yyvaluep).node)) {
7287 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7295 case YYSYMBOL_mrhs_arg:
7299 if (((*yyvaluep).node)) {
7300 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7312 if (((*yyvaluep).node)) {
7313 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7321 case YYSYMBOL_primary:
7325 if (((*yyvaluep).node)) {
7326 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7334 case YYSYMBOL_primary_value:
7338 if (((*yyvaluep).node)) {
7339 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7347 case YYSYMBOL_if_tail:
7351 if (((*yyvaluep).node)) {
7352 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7360 case YYSYMBOL_opt_else:
7364 if (((*yyvaluep).node)) {
7365 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7373 case YYSYMBOL_for_var:
7377 if (((*yyvaluep).node)) {
7378 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7386 case YYSYMBOL_f_marg:
7390 if (((*yyvaluep).node)) {
7391 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7399 case YYSYMBOL_f_marg_list:
7403 if (((*yyvaluep).node)) {
7404 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7412 case YYSYMBOL_f_margs:
7416 if (((*yyvaluep).node)) {
7417 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7425 case YYSYMBOL_f_rest_marg:
7429 if (((*yyvaluep).node)) {
7430 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7438 case YYSYMBOL_block_args_tail:
7442 if (((*yyvaluep).node)) {
7443 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7451 case YYSYMBOL_opt_block_args_tail:
7455 if (((*yyvaluep).node)) {
7456 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7464 case YYSYMBOL_block_param:
7468 if (((*yyvaluep).node)) {
7469 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7477 case YYSYMBOL_opt_block_param:
7481 if (((*yyvaluep).node)) {
7482 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7490 case YYSYMBOL_block_param_def:
7494 if (((*yyvaluep).node)) {
7495 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7503 case YYSYMBOL_opt_bv_decl:
7507 if (((*yyvaluep).node)) {
7508 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7516 case YYSYMBOL_bv_decls:
7520 if (((*yyvaluep).node)) {
7521 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7533 if (((*yyvaluep).node)) {
7534 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7542 case YYSYMBOL_lambda:
7546 if (((*yyvaluep).node)) {
7547 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7555 case YYSYMBOL_f_larglist:
7559 if (((*yyvaluep).node)) {
7560 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7568 case YYSYMBOL_lambda_body:
7572 if (((*yyvaluep).node)) {
7573 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7581 case YYSYMBOL_do_block:
7585 if (((*yyvaluep).node)) {
7586 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7594 case YYSYMBOL_block_call:
7598 if (((*yyvaluep).node)) {
7599 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7607 case YYSYMBOL_method_call:
7611 if (((*yyvaluep).node)) {
7612 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7620 case YYSYMBOL_brace_block:
7624 if (((*yyvaluep).node)) {
7625 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7633 case YYSYMBOL_brace_body:
7637 if (((*yyvaluep).node)) {
7638 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7646 case YYSYMBOL_do_body:
7650 if (((*yyvaluep).node)) {
7651 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7659 case YYSYMBOL_case_args:
7663 if (((*yyvaluep).node)) {
7664 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7672 case YYSYMBOL_case_body:
7676 if (((*yyvaluep).node)) {
7677 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7685 case YYSYMBOL_cases:
7689 if (((*yyvaluep).node)) {
7690 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7698 case YYSYMBOL_p_case_body:
7702 if (((*yyvaluep).node)) {
7703 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7711 case YYSYMBOL_p_cases:
7715 if (((*yyvaluep).node)) {
7716 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7724 case YYSYMBOL_p_top_expr:
7728 if (((*yyvaluep).node)) {
7729 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7737 case YYSYMBOL_p_top_expr_body:
7741 if (((*yyvaluep).node)) {
7742 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7750 case YYSYMBOL_p_expr:
7754 if (((*yyvaluep).node)) {
7755 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7767 if (((*yyvaluep).node)) {
7768 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7776 case YYSYMBOL_p_alt:
7780 if (((*yyvaluep).node)) {
7781 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7789 case YYSYMBOL_p_expr_basic:
7793 if (((*yyvaluep).node)) {
7794 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7802 case YYSYMBOL_p_args:
7806 if (((*yyvaluep).node)) {
7807 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7815 case YYSYMBOL_p_args_head:
7819 if (((*yyvaluep).node)) {
7820 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7828 case YYSYMBOL_p_args_tail:
7832 if (((*yyvaluep).node)) {
7833 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7841 case YYSYMBOL_p_find:
7845 if (((*yyvaluep).node)) {
7846 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7854 case YYSYMBOL_p_args_post:
7858 if (((*yyvaluep).node)) {
7859 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7867 case YYSYMBOL_p_arg:
7871 if (((*yyvaluep).node)) {
7872 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7880 case YYSYMBOL_p_kwargs:
7884 if (((*yyvaluep).node)) {
7885 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7893 case YYSYMBOL_p_kwarg:
7897 if (((*yyvaluep).node)) {
7898 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7910 if (((*yyvaluep).node)) {
7911 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7919 case YYSYMBOL_p_value:
7923 if (((*yyvaluep).node)) {
7924 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7932 case YYSYMBOL_p_primitive:
7936 if (((*yyvaluep).node)) {
7937 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7945 case YYSYMBOL_p_variable:
7949 if (((*yyvaluep).node)) {
7950 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7958 case YYSYMBOL_p_var_ref:
7962 if (((*yyvaluep).node)) {
7963 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7971 case YYSYMBOL_p_expr_ref:
7975 if (((*yyvaluep).node)) {
7976 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7984 case YYSYMBOL_p_const:
7988 if (((*yyvaluep).node)) {
7989 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
7997 case YYSYMBOL_opt_rescue:
8001 if (((*yyvaluep).node)) {
8002 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8010 case YYSYMBOL_exc_list:
8014 if (((*yyvaluep).node)) {
8015 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8023 case YYSYMBOL_exc_var:
8027 if (((*yyvaluep).node)) {
8028 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8036 case YYSYMBOL_opt_ensure:
8040 if (((*yyvaluep).node)) {
8041 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8049 case YYSYMBOL_literal:
8053 if (((*yyvaluep).node)) {
8054 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8062 case YYSYMBOL_strings:
8066 if (((*yyvaluep).node)) {
8067 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8075 case YYSYMBOL_string:
8079 if (((*yyvaluep).node)) {
8080 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8088 case YYSYMBOL_string1:
8092 if (((*yyvaluep).node)) {
8093 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8101 case YYSYMBOL_xstring:
8105 if (((*yyvaluep).node)) {
8106 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8114 case YYSYMBOL_regexp:
8118 if (((*yyvaluep).node)) {
8119 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8127 case YYSYMBOL_words:
8131 if (((*yyvaluep).node)) {
8132 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8140 case YYSYMBOL_word_list:
8144 if (((*yyvaluep).node)) {
8145 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8157 if (((*yyvaluep).node)) {
8158 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8166 case YYSYMBOL_symbols:
8170 if (((*yyvaluep).node)) {
8171 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8179 case YYSYMBOL_symbol_list:
8183 if (((*yyvaluep).node)) {
8184 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8192 case YYSYMBOL_qwords:
8196 if (((*yyvaluep).node)) {
8197 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8205 case YYSYMBOL_qsymbols:
8209 if (((*yyvaluep).node)) {
8210 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8218 case YYSYMBOL_qword_list:
8222 if (((*yyvaluep).node)) {
8223 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8231 case YYSYMBOL_qsym_list:
8235 if (((*yyvaluep).node)) {
8236 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8244 case YYSYMBOL_string_contents:
8248 if (((*yyvaluep).node)) {
8249 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8257 case YYSYMBOL_xstring_contents:
8261 if (((*yyvaluep).node)) {
8262 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8270 case YYSYMBOL_regexp_contents:
8274 if (((*yyvaluep).node)) {
8275 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8283 case YYSYMBOL_string_content:
8287 if (((*yyvaluep).node)) {
8288 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8296 case YYSYMBOL_string_dvar:
8300 if (((*yyvaluep).node)) {
8301 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8309 case YYSYMBOL_symbol:
8313 if (((*yyvaluep).node)) {
8314 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8326 if (((*yyvaluep).node)) {
8327 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8339 if (((*yyvaluep).node)) {
8340 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8348 case YYSYMBOL_numeric:
8352 if (((*yyvaluep).node)) {
8353 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8361 case YYSYMBOL_simple_numeric:
8365 if (((*yyvaluep).node)) {
8366 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8374 case YYSYMBOL_var_ref:
8378 if (((*yyvaluep).node)) {
8379 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8387 case YYSYMBOL_var_lhs:
8391 if (((*yyvaluep).node)) {
8392 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8400 case YYSYMBOL_backref:
8404 if (((*yyvaluep).node)) {
8405 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8413 case YYSYMBOL_superclass:
8417 if (((*yyvaluep).node)) {
8418 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8426 case YYSYMBOL_f_opt_paren_args:
8430 if (((*yyvaluep).node)) {
8431 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8439 case YYSYMBOL_f_paren_args:
8443 if (((*yyvaluep).node)) {
8444 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8452 case YYSYMBOL_f_arglist:
8456 if (((*yyvaluep).node)) {
8457 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8465 case YYSYMBOL_args_tail:
8469 if (((*yyvaluep).node)) {
8470 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8478 case YYSYMBOL_opt_args_tail:
8482 if (((*yyvaluep).node)) {
8483 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8491 case YYSYMBOL_f_args:
8495 if (((*yyvaluep).node)) {
8496 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8504 case YYSYMBOL_f_arg_item:
8508 if (((*yyvaluep).node)) {
8509 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8517 case YYSYMBOL_f_arg:
8521 if (((*yyvaluep).node)) {
8522 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8534 if (((*yyvaluep).node)) {
8535 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8543 case YYSYMBOL_f_block_kw:
8547 if (((*yyvaluep).node)) {
8548 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8556 case YYSYMBOL_f_block_kwarg:
8560 if (((*yyvaluep).node)) {
8561 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8569 case YYSYMBOL_f_kwarg:
8573 if (((*yyvaluep).node)) {
8574 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8582 case YYSYMBOL_f_opt:
8586 if (((*yyvaluep).node)) {
8587 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8595 case YYSYMBOL_f_block_opt:
8599 if (((*yyvaluep).node)) {
8600 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8608 case YYSYMBOL_f_block_optarg:
8612 if (((*yyvaluep).node)) {
8613 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8621 case YYSYMBOL_f_optarg:
8625 if (((*yyvaluep).node)) {
8626 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8634 case YYSYMBOL_singleton:
8638 if (((*yyvaluep).node)) {
8639 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8647 case YYSYMBOL_assoc_list:
8651 if (((*yyvaluep).node)) {
8652 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8660 case YYSYMBOL_assocs:
8664 if (((*yyvaluep).node)) {
8665 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8673 case YYSYMBOL_assoc:
8677 if (((*yyvaluep).node)) {
8678 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8690 if (((*yyvaluep).node)) {
8691 rb_parser_printf(p,
"%s", ruby_node_name(nd_type(((*yyvaluep).node))));
8702 YY_IGNORE_MAYBE_UNINITIALIZED_END
8711yy_symbol_print (
FILE *yyo,
8714 YYFPRINTF (p,
"%s %s (",
8715 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
8717 YYLOCATION_PRINT (yyo, yylocationp);
8718 YYFPRINTF (p,
": ");
8719 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
8729ruby_parser_yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop,
struct parser_params *p)
8730#define yy_stack_print(b, t) ruby_parser_yy_stack_print(b, t, p)
8732 YYFPRINTF (p,
"Stack now");
8733 for (; yybottom <= yytop; yybottom++)
8735 int yybot = *yybottom;
8736 YYFPRINTF (p,
" %d", yybot);
8738 YYFPRINTF (p,
"\n");
8741# define YY_STACK_PRINT(Bottom, Top) \
8744 yy_stack_print ((Bottom), (Top)); \
8753yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp,
YYLTYPE *yylsp,
8756 int yylno = yyrline[yyrule];
8757 int yynrhs = yyr2[yyrule];
8759 YYFPRINTF (p,
"Reducing stack by rule %d (line %d):\n",
8762 for (yyi = 0; yyi < yynrhs; yyi++)
8764 YYFPRINTF (p,
" $%d = ", yyi + 1);
8765 yy_symbol_print (stderr,
8766 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
8767 &yyvsp[(yyi + 1) - (yynrhs)],
8768 &(yylsp[(yyi + 1) - (yynrhs)]), p);
8769 YYFPRINTF (p,
"\n");
8773# define YY_REDUCE_PRINT(Rule) \
8776 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
8785# define YYDPRINTF(Args) ((void) 0)
8786# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
8787# define YY_STACK_PRINT(Bottom, Top)
8788# define YY_REDUCE_PRINT(Rule)
8794# define YYINITDEPTH 200
8805# define YYMAXDEPTH 10000
8813 yysymbol_kind_t yytoken;
8825 yysymbol_kind_t yyarg[],
int yyargn)
8829 int yyn = yypact[+*yyctx->yyssp];
8830 if (!yypact_value_is_default (yyn))
8835 int yyxbegin = yyn < 0 ? -yyn : 0;
8837 int yychecklim = YYLAST - yyn + 1;
8838 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
8840 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
8841 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
8842 && !yytable_value_is_error (yytable[yyx + yyn]))
8846 else if (yycount == yyargn)
8849 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
8852 if (yyarg && yycount == 0 && 0 < yyargn)
8853 yyarg[0] = YYSYMBOL_YYEMPTY;
8861# if defined __GLIBC__ && defined _STRING_H
8862# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
8866yystrlen (
const char *yystr)
8869 for (yylen = 0; yystr[yylen]; yylen++)
8877# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
8878# define yystpcpy stpcpy
8883yystpcpy (
char *yydest,
const char *yysrc)
8886 const char *yys = yysrc;
8888 while ((*yyd++ = *yys++) !=
'\0')
8905yytnamerr (
char *yyres,
const char *yystr)
8909 YYPTRDIFF_T yyn = 0;
8910 char const *yyp = yystr;
8916 goto do_not_strip_quotes;
8920 goto do_not_strip_quotes;
8936 do_not_strip_quotes: ;
8940 return yystpcpy (yyres, yystr) - yyres;
8942 return yystrlen (yystr);
8949 yysymbol_kind_t yyarg[],
int yyargn)
8976 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
8980 yyarg[yycount] = yyctx->yytoken;
8982 yyn = yypcontext_expected_tokens (yyctx,
8983 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
8984 if (yyn == YYENOMEM)
9001yysyntax_error (
struct parser_params *p, YYPTRDIFF_T *yymsg_alloc,
char **yymsg,
9004 enum { YYARGS_MAX = 5 };
9006 const char *yyformat = YY_NULLPTR;
9009 yysymbol_kind_t yyarg[YYARGS_MAX];
9011 YYPTRDIFF_T yysize = 0;
9014 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
9015 if (yycount == YYENOMEM)
9020#define YYCASE_(N, S) \
9025 YYCASE_(0, YY_(
"syntax error"));
9026 YYCASE_(1, YY_(
"syntax error, unexpected %s"));
9027 YYCASE_(2, YY_(
"syntax error, unexpected %s, expecting %s"));
9028 YYCASE_(3, YY_(
"syntax error, unexpected %s, expecting %s or %s"));
9029 YYCASE_(4, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
9030 YYCASE_(5, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
9036 yysize = yystrlen (yyformat) - 2 * yycount + 1;
9039 for (yyi = 0; yyi < yycount; ++yyi)
9042 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
9043 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
9050 if (*yymsg_alloc < yysize)
9052 *yymsg_alloc = 2 * yysize;
9053 if (! (yysize <= *yymsg_alloc
9054 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
9055 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
9065 while ((*yyp = *yyformat) !=
'\0')
9066 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
9068 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
9086yydestruct (
const char *yymsg,
9090 YY_USE (yylocationp);
9094 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
9096 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
9098 YY_IGNORE_MAYBE_UNINITIALIZED_END
9120YY_INITIAL_VALUE (
static YYSTYPE yyval_default;)
9121YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
9125# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
9129YYLTYPE yylloc = yyloc_default;
9134 yy_state_fast_t yystate = 0;
9136 int yyerrstatus = 0;
9142 YYPTRDIFF_T yystacksize = YYINITDEPTH;
9145 yy_state_t yyssa[YYINITDEPTH];
9146 yy_state_t *yyss = yyssa;
9147 yy_state_t *yyssp = yyss;
9163 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
9174 char *yymsg = yymsgbuf;
9175 YYPTRDIFF_T yymsg_alloc =
sizeof yymsgbuf;
9177#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
9183 YYDPRINTF ((p,
"Starting parse\n"));
9191 RUBY_SET_YYLLOC_OF_NONE(yylloc);
9213 YYDPRINTF ((p,
"Entering state %d\n", yystate));
9214 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
9215 YY_IGNORE_USELESS_CAST_BEGIN
9216 *yyssp = YY_CAST (yy_state_t, yystate);
9217 YY_IGNORE_USELESS_CAST_END
9218 YY_STACK_PRINT (yyss, yyssp);
9220 if (yyss + yystacksize - 1 <= yyssp)
9221#if !defined yyoverflow && !defined YYSTACK_RELOCATE
9226 YYPTRDIFF_T yysize = yyssp - yyss + 1;
9228# if defined yyoverflow
9233 yy_state_t *yyss1 = yyss;
9241 yyoverflow (YY_(
"memory exhausted"),
9242 &yyss1, yysize * YYSIZEOF (*yyssp),
9243 &yyvs1, yysize * YYSIZEOF (*yyvsp),
9244 &yyls1, yysize * YYSIZEOF (*yylsp),
9252 if (YYMAXDEPTH <= yystacksize)
9255 if (YYMAXDEPTH < yystacksize)
9256 yystacksize = YYMAXDEPTH;
9259 yy_state_t *yyss1 = yyss;
9260 union yyalloc *yyptr =
9261 YY_CAST (
union yyalloc *,
9262 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
9265 YYSTACK_RELOCATE (yyss_alloc, yyss);
9266 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
9267 YYSTACK_RELOCATE (yyls_alloc, yyls);
9268# undef YYSTACK_RELOCATE
9270 YYSTACK_FREE (yyss1);
9274 yyssp = yyss + yysize - 1;
9275 yyvsp = yyvs + yysize - 1;
9276 yylsp = yyls + yysize - 1;
9278 YY_IGNORE_USELESS_CAST_BEGIN
9279 YYDPRINTF ((p,
"Stack size increased to %ld\n",
9280 YY_CAST (
long, yystacksize)));
9281 YY_IGNORE_USELESS_CAST_END
9283 if (yyss + yystacksize - 1 <= yyssp)
9289 if (yystate == YYFINAL)
9303 yyn = yypact[yystate];
9304 if (yypact_value_is_default (yyn))
9310 if (yychar == YYEMPTY)
9312 YYDPRINTF ((p,
"Reading a token\n"));
9313 yychar = yylex (&yylval, &yylloc, p);
9316 if (yychar <= END_OF_INPUT)
9318 yychar = END_OF_INPUT;
9319 yytoken = YYSYMBOL_YYEOF;
9320 YYDPRINTF ((p,
"Now at end of input.\n"));
9322 else if (yychar == YYerror)
9329 yytoken = YYSYMBOL_YYerror;
9330 yyerror_range[1] = yylloc;
9335 yytoken = YYTRANSLATE (yychar);
9336 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc);
9342 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
9347 if (yytable_value_is_error (yyn))
9359 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc);
9361 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
9363 YY_IGNORE_MAYBE_UNINITIALIZED_END
9375 yyn = yydefact[yystate];
9396 yyval = yyvsp[1-yylen];
9399 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
9400 yyerror_range[1] = yyloc;
9401 YY_REDUCE_PRINT (yyn);
9407 SET_LEX_STATE(EXPR_BEG);
9408 local_push(p, ifndef_ripper(1)+0);
9417 if ((yyvsp[0].node) && !compile_for_eval) {
9418 NODE *node = (yyvsp[0].node);
9420 if (nd_type_p(node, NODE_BLOCK)) {
9421 while (node->nd_next) {
9422 node = node->nd_next;
9424 node = node->nd_head;
9426 node = remove_begin(node);
9429 p->eval_tree = NEW_SCOPE(0, block_append(p, p->eval_tree, (yyvsp[0].node)), &(yyloc));
9440 (yyval.node) = void_stmts(p, (yyvsp[-1].node));
9449 (yyval.node) = NEW_BEGIN(0, &(yyloc));
9460 (yyval.node) = newline_node((yyvsp[0].node));
9471 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
9481 (yyval.node) = (yyvsp[0].node);
9490 p->eval_tree_begin = block_append(p, p->eval_tree_begin,
9491 NEW_BEGIN((yyvsp[-1].node), &(yyloc)));
9492 (yyval.node) = NEW_BEGIN(0, &(yyloc));
9501 {
if (!(yyvsp[-1].node)) {yyerror1(&(yylsp[0]),
"else without rescue is useless");}}
9509 (yyval.node) = new_bodystmt(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9520 (yyval.node) = new_bodystmt(p, (yyvsp[-2].node), (yyvsp[-1].node), 0, (yyvsp[0].node), &(yyloc));
9530 (yyval.node) = void_stmts(p, (yyvsp[-1].node));
9539 (yyval.node) = NEW_BEGIN(0, &(yyloc));
9550 (yyval.node) = newline_node((yyvsp[0].node));
9561 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
9571 (yyval.node) = (yyvsp[0].node);
9579 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
9587 (yyval.node) = (yyvsp[0].node);
9594 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
9602 (yyval.node) = NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9613 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].id), &(yyloc));
9626 buf[1] = (char)(yyvsp[0].node)->nd_nth;
9627 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id),
rb_intern2(buf, 2), &(yyloc));
9637 static const char mesg[] =
"can't make alias for the number variables";
9639 yyerror1(&(yylsp[0]), mesg);
9640 (yyval.node) = NEW_BEGIN(0, &(yyloc));
9651 (yyval.node) = (yyvsp[0].node);
9662 (yyval.node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
9663 fixpos((yyval.node), (yyvsp[0].node));
9674 (yyval.node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
9675 fixpos((yyval.node), (yyvsp[0].node));
9686 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
9687 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node)->nd_body, 0, &(yyloc));
9690 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
9702 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
9703 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node)->nd_body, 0, &(yyloc));
9706 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
9719 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
9720 resq = NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc);
9721 (yyval.node) = NEW_RESCUE(remove_begin((yyvsp[-2].node)), resq, 0, &(yyloc));
9731 if (p->ctxt.in_def) {
9732 rb_warn0(
"END in method; use at_exit");
9736 NODE *scope = NEW_NODE(
9737 NODE_SCOPE, 0 , (yyvsp[-1].node) , 0 , &(yyloc));
9738 (yyval.node) = NEW_POSTEXE(scope, &(yyloc));
9750 value_expr((yyvsp[0].node));
9751 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
9762 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
9773 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
9774 (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));
9785 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
9796 (yyval.node) = NEW_ERROR(&(yyloc));
9806 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
9817 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
9828 (yyval.node) = new_ary_op_assign(p, (yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[0].node), &(yylsp[-4]), &(yyloc));
9840 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
9851 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
9862 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
9863 (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));
9874 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), ID2VAL(idCOLON2), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
9884 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
9885 restore_defun(p, (yyvsp[-3].node)->nd_defn);
9887 (yyval.node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9899 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
9900 restore_defun(p, (yyvsp[-5].node)->nd_defn);
9902 (yyvsp[-2].node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
9903 (yyval.node) = set_defun_body(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-2].node), &(yyloc));
9915 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
9916 restore_defun(p, (yyvsp[-3].node)->nd_defn);
9918 (yyval.node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9932 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
9933 restore_defun(p, (yyvsp[-5].node)->nd_defn);
9935 (yyvsp[-2].node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
9936 (yyval.node) = set_defun_body(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-2].node), &(yyloc));
9951 rb_backref_error(p, (yyvsp[-3].node));
9952 (yyval.node) = NEW_BEGIN(0, &(yyloc));
9962 value_expr((yyvsp[0].node));
9963 (yyval.node) = (yyvsp[0].node);
9972 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
9973 value_expr((yyvsp[-2].node));
9974 (yyval.node) = NEW_RESCUE((yyvsp[-2].node), NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc));
9984 (yyval.node) = logop(p, idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9992 (yyval.node) = logop(p, idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
10000 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
10002#line 9998 "parse.c"
10006#line 2004 "parse.y"
10008 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
10010#line 10006 "parse.c"
10014#line 2008 "parse.y"
10016 value_expr((yyvsp[-1].node));
10017 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
10018 p->command_start = FALSE;
10019 (yyvsp[0].ctxt) = p->ctxt;
10020 p->ctxt.in_kwarg = 1;
10021 (yyval.tbl) = push_pvtbl(p);
10023#line 10019 "parse.c"
10027#line 2016 "parse.y"
10029 (yyval.tbl) = push_pktbl(p);
10031#line 10027 "parse.c"
10035#line 2020 "parse.y"
10037 pop_pktbl(p, (yyvsp[-1].tbl));
10038 pop_pvtbl(p, (yyvsp[-2].tbl));
10039 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
10041 (yyval.node) = NEW_CASE3((yyvsp[-4].node), NEW_IN((yyvsp[0].node), 0, 0, &(yylsp[0])), &(yyloc));
10045#line 10041 "parse.c"
10049#line 2030 "parse.y"
10051 value_expr((yyvsp[-1].node));
10052 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
10053 p->command_start = FALSE;
10054 (yyvsp[0].ctxt) = p->ctxt;
10055 p->ctxt.in_kwarg = 1;
10056 (yyval.tbl) = push_pvtbl(p);
10058#line 10054 "parse.c"
10062#line 2038 "parse.y"
10064 (yyval.tbl) = push_pktbl(p);
10066#line 10062 "parse.c"
10070#line 2042 "parse.y"
10072 pop_pktbl(p, (yyvsp[-1].tbl));
10073 pop_pvtbl(p, (yyvsp[-2].tbl));
10074 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
10076 (yyval.node) = NEW_CASE3((yyvsp[-4].node), NEW_IN((yyvsp[0].node), NEW_TRUE(&(yylsp[0])), NEW_FALSE(&(yylsp[0])), &(yylsp[0])), &(yyloc));
10080#line 10076 "parse.c"
10084#line 2055 "parse.y"
10086 ID fname = get_id((yyvsp[0].
id));
10087 ID cur_arg = p->cur_arg;
10088 YYSTYPE c = {.ctxt = p->ctxt};
10089 numparam_name(p, fname);
10092 p->ctxt.in_def = 1;
10093 (yyval.node) = NEW_NODE(NODE_SELF, cur_arg, fname, c.val, &(yyloc));
10099#line 10095 "parse.c"
10103#line 2072 "parse.y"
10105 (yyval.node) = (yyvsp[0].node);
10107 (yyval.node) = NEW_NODE(NODE_DEFN, 0, (yyval.node)->nd_mid, (yyval.node), &(yyloc));
10110#line 10106 "parse.c"
10114#line 2081 "parse.y"
10116 SET_LEX_STATE(EXPR_FNAME);
10117 p->ctxt.in_argdef = 1;
10119#line 10115 "parse.c"
10123#line 2086 "parse.y"
10125 SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL);
10126 (yyval.node) = (yyvsp[0].node);
10128 (yyval.node) = NEW_NODE(NODE_DEFS, (yyvsp[-3].node), (yyval.node)->nd_mid, (yyval.node), &(yyloc));
10135#line 10131 "parse.c"
10139#line 2100 "parse.y"
10141 value_expr((yyvsp[0].node));
10142 (yyval.node) = (yyvsp[0].node);
10144#line 10140 "parse.c"
10148#line 2105 "parse.y"
10151 (yyval.node) = NEW_ERROR(&(yyloc));
10154#line 10150 "parse.c"
10158#line 2112 "parse.y"
10160#line 10156 "parse.c"
10164#line 2112 "parse.y"
10166#line 10162 "parse.c"
10170#line 2113 "parse.y"
10172 (yyval.node) = (yyvsp[-2].node);
10174#line 10170 "parse.c"
10178#line 2124 "parse.y"
10181 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
10185#line 10181 "parse.c"
10189#line 2133 "parse.y"
10191 (yyval.node) = (yyvsp[-1].node);
10193 (yyval.node)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10194 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
10197#line 10193 "parse.c"
10201#line 2143 "parse.y"
10204 (yyval.node) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
10205 nd_set_line((yyval.node), p->tokline);
10209#line 10205 "parse.c"
10213#line 2153 "parse.y"
10216 (yyvsp[-1].node)->nd_args = (yyvsp[0].node);
10217 nd_set_last_loc((yyvsp[-1].node), (yylsp[0]).end_pos);
10218 (yyval.node) = (yyvsp[-1].node);
10222#line 10218 "parse.c"
10226#line 2162 "parse.y"
10229 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
10230 (yyvsp[-2].node)->nd_args = (yyvsp[-1].node);
10231 (yyval.node) = method_add_block(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
10232 fixpos((yyval.node), (yyvsp[-2].node));
10233 nd_set_last_loc((yyvsp[-2].node), (yylsp[-1]).end_pos);
10237#line 10233 "parse.c"
10241#line 2173 "parse.y"
10244 (yyval.node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), Qnull, &(yylsp[-1]), &(yyloc));
10248#line 10244 "parse.c"
10252#line 2180 "parse.y"
10255 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
10259#line 10255 "parse.c"
10263#line 2187 "parse.y"
10266 (yyval.node) = new_command_qcall(p, ID2VAL(idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), Qnull, &(yylsp[-1]), &(yyloc));
10270#line 10266 "parse.c"
10274#line 2194 "parse.y"
10277 (yyval.node) = new_command_qcall(p, ID2VAL(idCOLON2), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
10281#line 10277 "parse.c"
10285#line 2201 "parse.y"
10288 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc));
10289 fixpos((yyval.node), (yyvsp[0].node));
10293#line 10289 "parse.c"
10297#line 2209 "parse.y"
10300 (yyval.node) = new_yield(p, (yyvsp[0].node), &(yyloc));
10301 fixpos((yyval.node), (yyvsp[0].node));
10305#line 10301 "parse.c"
10309#line 2217 "parse.y"
10312 (yyval.node) = NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc));
10316#line 10312 "parse.c"
10320#line 2224 "parse.y"
10323 (yyval.node) = NEW_BREAK(ret_args(p, (yyvsp[0].node)), &(yyloc));
10327#line 10323 "parse.c"
10331#line 2231 "parse.y"
10334 (yyval.node) = NEW_NEXT(ret_args(p, (yyvsp[0].node)), &(yyloc));
10338#line 10334 "parse.c"
10342#line 2241 "parse.y"
10345 (yyval.node) = (yyvsp[-1].node);
10349#line 10345 "parse.c"
10353#line 2251 "parse.y"
10356 (yyval.node) = NEW_MASGN(NEW_LIST((yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
10360#line 10356 "parse.c"
10364#line 2260 "parse.y"
10367 (yyval.node) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
10371#line 10367 "parse.c"
10375#line 2267 "parse.y"
10378 (yyval.node) = NEW_MASGN(list_append(p, (yyvsp[-1].node),(yyvsp[0].node)), 0, &(yyloc));
10382#line 10378 "parse.c"
10386#line 2274 "parse.y"
10389 (yyval.node) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
10393#line 10389 "parse.c"
10397#line 2281 "parse.y"
10400 (yyval.node) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
10404#line 10400 "parse.c"
10408#line 2288 "parse.y"
10411 (yyval.node) = NEW_MASGN((yyvsp[-1].node), NODE_SPECIAL_NO_NAME_REST, &(yyloc));
10415#line 10411 "parse.c"
10419#line 2295 "parse.y"
10422 (yyval.node) = NEW_MASGN((yyvsp[-3].node), NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
10426#line 10422 "parse.c"
10430#line 2302 "parse.y"
10433 (yyval.node) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
10437#line 10433 "parse.c"
10441#line 2309 "parse.y"
10444 (yyval.node) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
10448#line 10444 "parse.c"
10452#line 2316 "parse.y"
10455 (yyval.node) = NEW_MASGN(0, NODE_SPECIAL_NO_NAME_REST, &(yyloc));
10459#line 10455 "parse.c"
10463#line 2323 "parse.y"
10466 (yyval.node) = NEW_MASGN(0, NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
10470#line 10466 "parse.c"
10474#line 2333 "parse.y"
10477 (yyval.node) = (yyvsp[-1].node);
10481#line 10477 "parse.c"
10485#line 2342 "parse.y"
10488 (yyval.node) = NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
10492#line 10488 "parse.c"
10496#line 2349 "parse.y"
10499 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
10503#line 10499 "parse.c"
10507#line 2358 "parse.y"
10510 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
10514#line 10510 "parse.c"
10518#line 2365 "parse.y"
10521 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
10525#line 10521 "parse.c"
10529#line 2374 "parse.y"
10532 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
10536#line 10532 "parse.c"
10540#line 2381 "parse.y"
10543 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
10547#line 10543 "parse.c"
10551#line 2388 "parse.y"
10554 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
10558#line 10554 "parse.c"
10562#line 2395 "parse.y"
10564 if ((yyvsp[-1].
id) == tANDDOT) {
10565 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
10568 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
10572#line 10568 "parse.c"
10576#line 2405 "parse.y"
10579 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
10583#line 10579 "parse.c"
10587#line 2412 "parse.y"
10589 if ((yyvsp[-1].
id) == tANDDOT) {
10590 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
10593 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
10597#line 10593 "parse.c"
10601#line 2422 "parse.y"
10604 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
10608#line 10604 "parse.c"
10612#line 2429 "parse.y"
10615 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
10619#line 10615 "parse.c"
10623#line 2436 "parse.y"
10626 rb_backref_error(p, (yyvsp[0].node));
10627 (yyval.node) = NEW_BEGIN(0, &(yyloc));
10631#line 10627 "parse.c"
10635#line 2446 "parse.y"
10638 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
10642#line 10638 "parse.c"
10646#line 2453 "parse.y"
10649 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
10653#line 10649 "parse.c"
10657#line 2460 "parse.y"
10660 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
10664#line 10660 "parse.c"
10668#line 2467 "parse.y"
10671 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
10675#line 10671 "parse.c"
10679#line 2474 "parse.y"
10682 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
10686#line 10682 "parse.c"
10690#line 2481 "parse.y"
10693 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
10697#line 10693 "parse.c"
10701#line 2488 "parse.y"
10704 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
10708#line 10704 "parse.c"
10712#line 2495 "parse.y"
10715 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
10719#line 10715 "parse.c"
10723#line 2502 "parse.y"
10726 rb_backref_error(p, (yyvsp[0].node));
10727 (yyval.node) = NEW_BEGIN(0, &(yyloc));
10731#line 10727 "parse.c"
10735#line 2512 "parse.y"
10737 static const char mesg[] =
"class/module name must be CONSTANT";
10739 yyerror1(&(yylsp[0]), mesg);
10743#line 10739 "parse.c"
10747#line 2523 "parse.y"
10750 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
10754#line 10750 "parse.c"
10758#line 2530 "parse.y"
10761 (yyval.node) = NEW_COLON2(0, (yyval.node), &(yyloc));
10765#line 10761 "parse.c"
10769#line 2537 "parse.y"
10772 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
10776#line 10772 "parse.c"
10780#line 2549 "parse.y"
10782 SET_LEX_STATE(EXPR_ENDFN);
10783 (yyval.id) = (yyvsp[0].
id);
10785#line 10781 "parse.c"
10789#line 2557 "parse.y"
10792 (yyval.node) = NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc));
10796#line 10792 "parse.c"
10800#line 2567 "parse.y"
10803 (yyval.node) = NEW_UNDEF((yyvsp[0].node), &(yyloc));
10807#line 10803 "parse.c"
10811#line 2573 "parse.y"
10812 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
10813#line 10809 "parse.c"
10817#line 2574 "parse.y"
10820 NODE *undef = NEW_UNDEF((yyvsp[0].node), &(yylsp[0]));
10821 (yyval.node) = block_append(p, (yyvsp[-3].node), undef);
10825#line 10821 "parse.c"
10829#line 2583 "parse.y"
10830 { ifndef_ripper((yyval.id) =
'|'); }
10831#line 10827 "parse.c"
10835#line 2584 "parse.y"
10836 { ifndef_ripper((yyval.id) =
'^'); }
10837#line 10833 "parse.c"
10841#line 2585 "parse.y"
10842 { ifndef_ripper((yyval.id) =
'&'); }
10843#line 10839 "parse.c"
10847#line 2586 "parse.y"
10848 { ifndef_ripper((yyval.id) = tCMP); }
10849#line 10845 "parse.c"
10853#line 2587 "parse.y"
10854 { ifndef_ripper((yyval.id) = tEQ); }
10855#line 10851 "parse.c"
10859#line 2588 "parse.y"
10860 { ifndef_ripper((yyval.id) = tEQQ); }
10861#line 10857 "parse.c"
10865#line 2589 "parse.y"
10866 { ifndef_ripper((yyval.id) = tMATCH); }
10867#line 10863 "parse.c"
10871#line 2590 "parse.y"
10872 { ifndef_ripper((yyval.id) = tNMATCH); }
10873#line 10869 "parse.c"
10877#line 2591 "parse.y"
10878 { ifndef_ripper((yyval.id) =
'>'); }
10879#line 10875 "parse.c"
10883#line 2592 "parse.y"
10884 { ifndef_ripper((yyval.id) = tGEQ); }
10885#line 10881 "parse.c"
10889#line 2593 "parse.y"
10890 { ifndef_ripper((yyval.id) =
'<'); }
10891#line 10887 "parse.c"
10895#line 2594 "parse.y"
10896 { ifndef_ripper((yyval.id) = tLEQ); }
10897#line 10893 "parse.c"
10901#line 2595 "parse.y"
10902 { ifndef_ripper((yyval.id) = tNEQ); }
10903#line 10899 "parse.c"
10907#line 2596 "parse.y"
10908 { ifndef_ripper((yyval.id) = tLSHFT); }
10909#line 10905 "parse.c"
10913#line 2597 "parse.y"
10914 { ifndef_ripper((yyval.id) = tRSHFT); }
10915#line 10911 "parse.c"
10919#line 2598 "parse.y"
10920 { ifndef_ripper((yyval.id) =
'+'); }
10921#line 10917 "parse.c"
10925#line 2599 "parse.y"
10926 { ifndef_ripper((yyval.id) =
'-'); }
10927#line 10923 "parse.c"
10931#line 2600 "parse.y"
10932 { ifndef_ripper((yyval.id) =
'*'); }
10933#line 10929 "parse.c"
10937#line 2601 "parse.y"
10938 { ifndef_ripper((yyval.id) =
'*'); }
10939#line 10935 "parse.c"
10943#line 2602 "parse.y"
10944 { ifndef_ripper((yyval.id) =
'/'); }
10945#line 10941 "parse.c"
10949#line 2603 "parse.y"
10950 { ifndef_ripper((yyval.id) =
'%'); }
10951#line 10947 "parse.c"
10955#line 2604 "parse.y"
10956 { ifndef_ripper((yyval.id) = tPOW); }
10957#line 10953 "parse.c"
10961#line 2605 "parse.y"
10962 { ifndef_ripper((yyval.id) = tDSTAR); }
10963#line 10959 "parse.c"
10967#line 2606 "parse.y"
10968 { ifndef_ripper((yyval.id) =
'!'); }
10969#line 10965 "parse.c"
10973#line 2607 "parse.y"
10974 { ifndef_ripper((yyval.id) =
'~'); }
10975#line 10971 "parse.c"
10979#line 2608 "parse.y"
10980 { ifndef_ripper((yyval.id) = tUPLUS); }
10981#line 10977 "parse.c"
10985#line 2609 "parse.y"
10986 { ifndef_ripper((yyval.id) = tUMINUS); }
10987#line 10983 "parse.c"
10991#line 2610 "parse.y"
10992 { ifndef_ripper((yyval.id) = tAREF); }
10993#line 10989 "parse.c"
10997#line 2611 "parse.y"
10998 { ifndef_ripper((yyval.id) = tASET); }
10999#line 10995 "parse.c"
11003#line 2612 "parse.y"
11004 { ifndef_ripper((yyval.id) =
'`'); }
11005#line 11001 "parse.c"
11009#line 2630 "parse.y"
11012 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11016#line 11012 "parse.c"
11020#line 2637 "parse.y"
11023 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11027#line 11023 "parse.c"
11031#line 2644 "parse.y"
11034 (yyval.node) = new_ary_op_assign(p, (yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[0].node), &(yylsp[-4]), &(yyloc));
11038#line 11034 "parse.c"
11042#line 2651 "parse.y"
11045 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
11049#line 11045 "parse.c"
11053#line 2658 "parse.y"
11056 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
11060#line 11056 "parse.c"
11064#line 2665 "parse.y"
11067 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), ID2VAL(idCOLON2), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
11071#line 11067 "parse.c"
11075#line 2672 "parse.y"
11078 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
11079 (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));
11083#line 11079 "parse.c"
11087#line 2680 "parse.y"
11090 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
11091 (yyval.node) = new_const_op_assign(p, NEW_COLON3((yyvsp[-3].
id), &loc), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11095#line 11091 "parse.c"
11099#line 2688 "parse.y"
11102 rb_backref_error(p, (yyvsp[-3].node));
11103 (yyval.node) = NEW_BEGIN(0, &(yyloc));
11107#line 11103 "parse.c"
11111#line 2696 "parse.y"
11114 value_expr((yyvsp[-2].node));
11115 value_expr((yyvsp[0].node));
11116 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11120#line 11116 "parse.c"
11124#line 2705 "parse.y"
11127 value_expr((yyvsp[-2].node));
11128 value_expr((yyvsp[0].node));
11129 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11133#line 11129 "parse.c"
11137#line 2714 "parse.y"
11140 value_expr((yyvsp[-1].node));
11141 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
11145#line 11141 "parse.c"
11149#line 2722 "parse.y"
11152 value_expr((yyvsp[-1].node));
11153 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
11157#line 11153 "parse.c"
11161#line 2730 "parse.y"
11164 value_expr((yyvsp[0].node));
11165 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
11169#line 11165 "parse.c"
11173#line 2738 "parse.y"
11176 value_expr((yyvsp[0].node));
11177 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
11181#line 11177 "parse.c"
11185#line 2746 "parse.y"
11187 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11189#line 11185 "parse.c"
11193#line 2750 "parse.y"
11195 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11197#line 11193 "parse.c"
11201#line 2754 "parse.y"
11203 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11205#line 11201 "parse.c"
11209#line 2758 "parse.y"
11211 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11213#line 11209 "parse.c"
11217#line 2762 "parse.y"
11219 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11221#line 11217 "parse.c"
11225#line 2766 "parse.y"
11227 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11229#line 11225 "parse.c"
11233#line 2770 "parse.y"
11235 (yyval.node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)), idUMinus, &(yylsp[-3]), &(yyloc));
11237#line 11233 "parse.c"
11241#line 2774 "parse.y"
11243 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUPlus, &(yylsp[-1]), &(yyloc));
11245#line 11241 "parse.c"
11249#line 2778 "parse.y"
11251 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUMinus, &(yylsp[-1]), &(yyloc));
11253#line 11249 "parse.c"
11257#line 2782 "parse.y"
11259 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11261#line 11257 "parse.c"
11265#line 2786 "parse.y"
11267 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11269#line 11265 "parse.c"
11273#line 2790 "parse.y"
11275 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11277#line 11273 "parse.c"
11281#line 2794 "parse.y"
11283 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11285#line 11281 "parse.c"
11289#line 2799 "parse.y"
11291 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11293#line 11289 "parse.c"
11297#line 2803 "parse.y"
11299 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11301#line 11297 "parse.c"
11305#line 2807 "parse.y"
11307 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11309#line 11305 "parse.c"
11313#line 2811 "parse.y"
11315 (yyval.node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11317#line 11313 "parse.c"
11321#line 2815 "parse.y"
11323 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11325#line 11321 "parse.c"
11329#line 2819 "parse.y"
11331 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
11333#line 11329 "parse.c"
11337#line 2823 "parse.y"
11339 (yyval.node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
11341#line 11337 "parse.c"
11345#line 2827 "parse.y"
11347 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11349#line 11345 "parse.c"
11353#line 2831 "parse.y"
11355 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11357#line 11353 "parse.c"
11361#line 2835 "parse.y"
11363 (yyval.node) = logop(p, idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11365#line 11361 "parse.c"
11369#line 2839 "parse.y"
11371 (yyval.node) = logop(p, idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11373#line 11369 "parse.c"
11377#line 2842 "parse.y"
11378 {p->ctxt.in_defined = 1;}
11379#line 11375 "parse.c"
11383#line 2843 "parse.y"
11385 p->ctxt.in_defined = 0;
11386 (yyval.node) = new_defined(p, (yyvsp[0].node), &(yyloc));
11388#line 11384 "parse.c"
11392#line 2848 "parse.y"
11395 value_expr((yyvsp[-5].node));
11396 (yyval.node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
11397 fixpos((yyval.node), (yyvsp[-5].node));
11401#line 11397 "parse.c"
11405#line 2857 "parse.y"
11407 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
11408 restore_defun(p, (yyvsp[-3].node)->nd_defn);
11410 (yyval.node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11416#line 11412 "parse.c"
11420#line 2868 "parse.y"
11422 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
11423 restore_defun(p, (yyvsp[-5].node)->nd_defn);
11425 (yyvsp[-2].node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
11426 (yyval.node) = set_defun_body(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-2].node), &(yyloc));
11432#line 11428 "parse.c"
11436#line 2880 "parse.y"
11438 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
11439 restore_defun(p, (yyvsp[-3].node)->nd_defn);
11441 (yyval.node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11449#line 11445 "parse.c"
11453#line 2893 "parse.y"
11455 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
11456 restore_defun(p, (yyvsp[-5].node)->nd_defn);
11458 (yyvsp[-2].node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
11459 (yyval.node) = set_defun_body(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-2].node), &(yyloc));
11467#line 11463 "parse.c"
11471#line 2907 "parse.y"
11473 (yyval.node) = (yyvsp[0].node);
11475#line 11471 "parse.c"
11479#line 2912 "parse.y"
11480 {(yyval.id) =
'>';}
11481#line 11477 "parse.c"
11485#line 2913 "parse.y"
11486 {(yyval.id) =
'<';}
11487#line 11483 "parse.c"
11491#line 2914 "parse.y"
11492 {(yyval.id) = idGE;}
11493#line 11489 "parse.c"
11497#line 2915 "parse.y"
11498 {(yyval.id) = idLE;}
11499#line 11495 "parse.c"
11503#line 2919 "parse.y"
11505 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11507#line 11503 "parse.c"
11511#line 2923 "parse.y"
11513 rb_warning1(
"comparison '%s' after comparison", WARN_ID((yyvsp[-1].
id)));
11514 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11516#line 11512 "parse.c"
11520#line 2930 "parse.y"
11522 (yyval.ctxt) = p->ctxt;
11524#line 11520 "parse.c"
11528#line 2936 "parse.y"
11530 value_expr((yyvsp[0].node));
11531 (yyval.node) = (yyvsp[0].node);
11533#line 11529 "parse.c"
11537#line 2944 "parse.y"
11539 (yyval.node) = (yyvsp[-1].node);
11541#line 11537 "parse.c"
11545#line 2948 "parse.y"
11548 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
11552#line 11548 "parse.c"
11556#line 2955 "parse.y"
11559 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
11563#line 11559 "parse.c"
11567#line 2964 "parse.y"
11569 value_expr((yyvsp[0].node));
11570 (yyval.node) = (yyvsp[0].node);
11572#line 11568 "parse.c"
11576#line 2969 "parse.y"
11579 value_expr((yyvsp[-2].node));
11580 (yyval.node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
11584#line 11580 "parse.c"
11588#line 2979 "parse.y"
11591 (yyval.node) = (yyvsp[-1].node);
11595#line 11591 "parse.c"
11599#line 2986 "parse.y"
11601 if (!check_forwarding_args(p)) {
11602 (yyval.node) = Qnone;
11606 (yyval.node) = new_args_forward_call(p, (yyvsp[-3].node), &(yylsp[-1]), &(yyloc));
11611#line 11607 "parse.c"
11615#line 2998 "parse.y"
11617 if (!check_forwarding_args(p)) {
11618 (yyval.node) = Qnone;
11622 (yyval.node) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
11627#line 11623 "parse.c"
11631#line 3018 "parse.y"
11633 (yyval.node) = (yyvsp[-1].node);
11635#line 11631 "parse.c"
11639#line 3022 "parse.y"
11642 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
11646#line 11642 "parse.c"
11650#line 3029 "parse.y"
11653 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
11657#line 11653 "parse.c"
11661#line 3038 "parse.y"
11664 value_expr((yyvsp[0].node));
11665 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
11669#line 11665 "parse.c"
11673#line 3046 "parse.y"
11676 (yyval.node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node));
11680#line 11676 "parse.c"
11684#line 3053 "parse.y"
11687 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
11688 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node));
11692#line 11688 "parse.c"
11696#line 3061 "parse.y"
11699 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
11700 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node));
11704#line 11700 "parse.c"
11708#line 3072 "parse.y"
11719 case '(':
case tLPAREN:
case tLPAREN_ARG:
case '[':
case tLBRACK:
11722 if (lookahead) CMDARG_POP();
11724 if (lookahead) CMDARG_PUSH(0);
11726#line 11722 "parse.c"
11730#line 3090 "parse.y"
11743 if (lookahead) CMDARG_POP();
11745 if (lookahead) CMDARG_PUSH(0);
11746 (yyval.node) = (yyvsp[0].node);
11748#line 11744 "parse.c"
11752#line 3110 "parse.y"
11755 (yyval.node) = NEW_BLOCK_PASS((yyvsp[0].node), &(yyloc));
11759#line 11755 "parse.c"
11763#line 3117 "parse.y"
11765 if (!local_id(p, idFWD_BLOCK)) {
11766 compile_error(p,
"no anonymous block parameter");
11769 (yyval.node) = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, &(yylsp[0])), &(yyloc));
11773#line 11769 "parse.c"
11777#line 3129 "parse.y"
11779 (yyval.node) = (yyvsp[0].node);
11781#line 11777 "parse.c"
11785#line 3133 "parse.y"
11789#line 11785 "parse.c"
11793#line 3140 "parse.y"
11796 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
11800#line 11796 "parse.c"
11804#line 3147 "parse.y"
11807 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc));
11811#line 11807 "parse.c"
11815#line 3154 "parse.y"
11817 if (!local_id(p, idFWD_REST) ||
11818 local_id(p, idFWD_ALL)) {
11819 compile_error(p,
"no anonymous rest parameter");
11822 (yyval.node) = NEW_SPLAT(NEW_LVAR(idFWD_REST, &(yylsp[0])), &(yyloc));
11826#line 11822 "parse.c"
11830#line 3165 "parse.y"
11833 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11837#line 11833 "parse.c"
11841#line 3172 "parse.y"
11844 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
11848#line 11844 "parse.c"
11852#line 3179 "parse.y"
11854 if (!local_id(p, idFWD_REST) ||
11855 local_id(p, idFWD_ALL)) {
11856 compile_error(p,
"no anonymous rest parameter");
11859 (yyval.node) = rest_arg_append(p, (yyvsp[-2].node), NEW_LVAR(idFWD_REST, &(yylsp[0])), &(yyloc));
11863#line 11859 "parse.c"
11867#line 3198 "parse.y"
11870 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11874#line 11870 "parse.c"
11878#line 3205 "parse.y"
11881 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
11885#line 11881 "parse.c"
11889#line 3212 "parse.y"
11892 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc));
11896#line 11892 "parse.c"
11900#line 3231 "parse.y"
11903 (yyval.node) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
11907#line 11903 "parse.c"
11911#line 3238 "parse.y"
11915#line 11911 "parse.c"
11919#line 3243 "parse.y"
11923 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
11924 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
11925 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
11929#line 11925 "parse.c"
11933#line 3252 "parse.y"
11934 {SET_LEX_STATE(EXPR_ENDARG);}
11935#line 11931 "parse.c"
11939#line 3253 "parse.y"
11942 (yyval.node) = NEW_BEGIN(0, &(yyloc));
11946#line 11942 "parse.c"
11950#line 3259 "parse.y"
11951 {SET_LEX_STATE(EXPR_ENDARG);}
11952#line 11948 "parse.c"
11956#line 3260 "parse.y"
11959 if (nd_type_p((yyvsp[-2].node), NODE_SELF)) (yyvsp[-2].node)->nd_state = 0;
11960 (yyval.node) = (yyvsp[-2].node);
11964#line 11960 "parse.c"
11968#line 3268 "parse.y"
11971 if (nd_type_p((yyvsp[-1].node), NODE_SELF)) (yyvsp[-1].node)->nd_state = 0;
11972 (yyval.node) = (yyvsp[-1].node);
11976#line 11972 "parse.c"
11980#line 3276 "parse.y"
11983 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
11987#line 11983 "parse.c"
11991#line 3283 "parse.y"
11994 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
11998#line 11994 "parse.c"
12002#line 3290 "parse.y"
12005 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
12009#line 12005 "parse.c"
12013#line 3297 "parse.y"
12016 (yyval.node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
12017 (yyval.node)->nd_brace = TRUE;
12021#line 12017 "parse.c"
12025#line 3305 "parse.y"
12028 (yyval.node) = NEW_RETURN(0, &(yyloc));
12032#line 12028 "parse.c"
12036#line 3312 "parse.y"
12039 (yyval.node) = new_yield(p, (yyvsp[-1].node), &(yyloc));
12043#line 12039 "parse.c"
12047#line 3319 "parse.y"
12050 (yyval.node) = NEW_YIELD(0, &(yyloc));
12054#line 12050 "parse.c"
12058#line 3326 "parse.y"
12061 (yyval.node) = NEW_YIELD(0, &(yyloc));
12065#line 12061 "parse.c"
12069#line 3332 "parse.y"
12070 {p->ctxt.in_defined = 1;}
12071#line 12067 "parse.c"
12075#line 3333 "parse.y"
12077 p->ctxt.in_defined = 0;
12078 (yyval.node) = new_defined(p, (yyvsp[-1].node), &(yyloc));
12080#line 12076 "parse.c"
12084#line 3338 "parse.y"
12086 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])), METHOD_NOT, &(yylsp[-3]), &(yyloc));
12088#line 12084 "parse.c"
12092#line 3342 "parse.y"
12094 (yyval.node) = call_uni_op(p, method_cond(p, new_nil(&(yylsp[-1])), &(yylsp[-1])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12096#line 12092 "parse.c"
12100#line 3346 "parse.y"
12103 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12107#line 12103 "parse.c"
12111#line 3354 "parse.y"
12114 block_dup_check(p, (yyvsp[-1].node)->nd_args, (yyvsp[0].node));
12115 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12119#line 12115 "parse.c"
12123#line 3366 "parse.y"
12126 (yyval.node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
12127 fixpos((yyval.node), (yyvsp[-4].node));
12131#line 12127 "parse.c"
12135#line 3377 "parse.y"
12138 (yyval.node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
12139 fixpos((yyval.node), (yyvsp[-4].node));
12143#line 12139 "parse.c"
12147#line 3387 "parse.y"
12150 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
12151 fixpos((yyval.node), (yyvsp[-2].node));
12155#line 12151 "parse.c"
12159#line 3397 "parse.y"
12162 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
12163 fixpos((yyval.node), (yyvsp[-2].node));
12167#line 12163 "parse.c"
12171#line 3405 "parse.y"
12173 (yyval.val) = p->case_labels;
12174 p->case_labels =
Qnil;
12176#line 12172 "parse.c"
12180#line 3411 "parse.y"
12182 if (
RTEST(p->case_labels)) rb_hash_clear(p->case_labels);
12183 p->case_labels = (yyvsp[-2].val);
12185 (yyval.node) = NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
12186 fixpos((yyval.node), (yyvsp[-4].node));
12190#line 12186 "parse.c"
12194#line 3421 "parse.y"
12196 (yyval.val) = p->case_labels;
12197 p->case_labels = 0;
12199#line 12195 "parse.c"
12203#line 3427 "parse.y"
12205 if (
RTEST(p->case_labels)) rb_hash_clear(p->case_labels);
12206 p->case_labels = (yyvsp[-2].val);
12208 (yyval.node) = NEW_CASE2((yyvsp[-1].node), &(yyloc));
12212#line 12208 "parse.c"
12216#line 3438 "parse.y"
12219 (yyval.node) = NEW_CASE3((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
12223#line 12219 "parse.c"
12227#line 3447 "parse.y"
12239 ID id = internal_id(p);
12240 NODE *m = NEW_ARGS_AUX(0, 0, &NULL_LOC);
12241 NODE *args, *scope, *internal_var = NEW_DVAR(
id, &(yylsp[-4]));
12245 switch (nd_type((yyvsp[-4].node))) {
12248 (yyvsp[-4].node)->nd_value = internal_var;
12251 m->nd_next = (yyvsp[-4].node);
12254 m->nd_next = node_assign(p, (yyvsp[-4].node), NEW_FOR_MASGN(internal_var, &(yylsp[-4])), NO_LEX_CTXT, &(yylsp[-4]));
12257 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]));
12260 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
12261 scope = NEW_NODE(NODE_SCOPE, tbl, (yyvsp[-1].node), args, &(yyloc));
12262 (yyval.node) = NEW_FOR((yyvsp[-2].node), scope, &(yyloc));
12263 fixpos((yyval.node), (yyvsp[-4].node));
12267#line 12263 "parse.c"
12271#line 3487 "parse.y"
12273 if (p->ctxt.in_def) {
12274 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[-1]));
12275 yyerror1(&loc,
"class definition in method body");
12277 p->ctxt.in_class = 1;
12280#line 12276 "parse.c"
12284#line 3497 "parse.y"
12287 (yyval.node) = NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc));
12288 nd_set_line((yyval.node)->nd_body, (yylsp[0]).end_pos.lineno);
12289 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
12290 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
12294 p->ctxt.in_class = (yyvsp[-5].ctxt).in_class;
12295 p->ctxt.shareable_constant_value = (yyvsp[-5].ctxt).shareable_constant_value;
12297#line 12293 "parse.c"
12301#line 3510 "parse.y"
12303 p->ctxt.in_def = 0;
12304 p->ctxt.in_class = 0;
12307#line 12303 "parse.c"
12311#line 3518 "parse.y"
12314 (yyval.node) = NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
12315 nd_set_line((yyval.node)->nd_body, (yylsp[0]).end_pos.lineno);
12316 set_line_body((yyvsp[-1].node), nd_line((yyvsp[-4].node)));
12317 fixpos((yyval.node), (yyvsp[-4].node));
12321 p->ctxt.in_def = (yyvsp[-6].ctxt).in_def;
12322 p->ctxt.in_class = (yyvsp[-6].ctxt).in_class;
12323 p->ctxt.shareable_constant_value = (yyvsp[-6].ctxt).shareable_constant_value;
12325#line 12321 "parse.c"
12329#line 3532 "parse.y"
12331 if (p->ctxt.in_def) {
12332 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
12333 yyerror1(&loc,
"module definition in method body");
12335 p->ctxt.in_class = 1;
12338#line 12334 "parse.c"
12342#line 3542 "parse.y"
12345 (yyval.node) = NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
12346 nd_set_line((yyval.node)->nd_body, (yylsp[0]).end_pos.lineno);
12347 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
12348 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
12352 p->ctxt.in_class = (yyvsp[-4].ctxt).in_class;
12353 p->ctxt.shareable_constant_value = (yyvsp[-4].ctxt).shareable_constant_value;
12355#line 12351 "parse.c"
12359#line 3556 "parse.y"
12362 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
12365#line 12361 "parse.c"
12369#line 3563 "parse.y"
12371 restore_defun(p, (yyvsp[-4].node)->nd_defn);
12373 (yyval.node) = set_defun_body(p, (yyvsp[-4].node), (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
12378#line 12374 "parse.c"
12382#line 3573 "parse.y"
12385 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
12388#line 12384 "parse.c"
12392#line 3580 "parse.y"
12394 restore_defun(p, (yyvsp[-4].node)->nd_defn);
12396 (yyval.node) = set_defun_body(p, (yyvsp[-4].node), (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
12403#line 12399 "parse.c"
12407#line 3591 "parse.y"
12410 (yyval.node) = NEW_BREAK(0, &(yyloc));
12414#line 12410 "parse.c"
12418#line 3598 "parse.y"
12421 (yyval.node) = NEW_NEXT(0, &(yyloc));
12425#line 12421 "parse.c"
12429#line 3605 "parse.y"
12432 (yyval.node) = NEW_REDO(&(yyloc));
12436#line 12432 "parse.c"
12440#line 3612 "parse.y"
12443 (yyval.node) = NEW_RETRY(&(yyloc));
12447#line 12443 "parse.c"
12451#line 3621 "parse.y"
12453 value_expr((yyvsp[0].node));
12454 (yyval.node) = (yyvsp[0].node);
12456#line 12452 "parse.c"
12460#line 3628 "parse.y"
12462 token_info_push(p,
"begin", &(yyloc));
12464 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12467#line 12463 "parse.c"
12471#line 3637 "parse.y"
12474 token_info_push(p,
"if", &(yyloc));
12475 if (p->token_info && p->token_info->nonspc &&
12476 p->token_info->next && !strcmp(p->token_info->next->token,
"else")) {
12478 const char *beg = p->lex.pbeg + p->token_info->next->beg.column;
12480 while (beg < tok &&
ISSPACE(*beg)) beg++;
12482 p->token_info->nonspc = 0;
12486 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12489#line 12485 "parse.c"
12493#line 3657 "parse.y"
12495 token_info_push(p,
"unless", &(yyloc));
12497 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12500#line 12496 "parse.c"
12504#line 3666 "parse.y"
12506 token_info_push(p,
"while", &(yyloc));
12508 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12511#line 12507 "parse.c"
12515#line 3675 "parse.y"
12517 token_info_push(p,
"until", &(yyloc));
12519 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12522#line 12518 "parse.c"
12526#line 3684 "parse.y"
12528 token_info_push(p,
"case", &(yyloc));
12530 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12533#line 12529 "parse.c"
12537#line 3693 "parse.y"
12539 token_info_push(p,
"for", &(yyloc));
12541 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12544#line 12540 "parse.c"
12548#line 3702 "parse.y"
12550 token_info_push(p,
"class", &(yyloc));
12551 (yyval.ctxt) = p->ctxt;
12553 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12556#line 12552 "parse.c"
12560#line 3712 "parse.y"
12562 token_info_push(p,
"module", &(yyloc));
12563 (yyval.ctxt) = p->ctxt;
12565 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12568#line 12564 "parse.c"
12572#line 3722 "parse.y"
12574 token_info_push(p,
"def", &(yyloc));
12575 p->ctxt.in_argdef = 1;
12577#line 12573 "parse.c"
12581#line 3729 "parse.y"
12583 token_info_push(p,
"do", &(yyloc));
12585 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12589#line 12585 "parse.c"
12593#line 3739 "parse.y"
12595 token_info_push(p,
"do", &(yyloc));
12597 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
12600#line 12596 "parse.c"
12604#line 3748 "parse.y"
12606 token_info_warn(p,
"rescue", p->token_info, 1, &(yyloc));
12608#line 12604 "parse.c"
12612#line 3754 "parse.y"
12614 token_info_warn(p,
"ensure", p->token_info, 1, &(yyloc));
12616#line 12612 "parse.c"
12620#line 3760 "parse.y"
12622 token_info_warn(p,
"when", p->token_info, 0, &(yyloc));
12624#line 12620 "parse.c"
12628#line 3766 "parse.y"
12631 int same = ptinfo_beg && strcmp(ptinfo_beg->token,
"case") != 0;
12632 token_info_warn(p,
"else", p->token_info, same, &(yyloc));
12635 e.next = ptinfo_beg->next;
12637 token_info_setup(&e, p->lex.pbeg, &(yyloc));
12638 if (!e.nonspc) *ptinfo_beg = e;
12641#line 12637 "parse.c"
12645#line 3781 "parse.y"
12648 token_info_warn(p,
"elsif", p->token_info, 1, &(yyloc));
12650#line 12646 "parse.c"
12654#line 3788 "parse.y"
12656 token_info_pop(p,
"end", &(yyloc));
12658 pop_end_expect_token_locations(p);
12661#line 12657 "parse.c"
12665#line 3795 "parse.y"
12667 compile_error(p,
"syntax error, unexpected end-of-input");
12669#line 12665 "parse.c"
12673#line 3801 "parse.y"
12675 if (p->ctxt.in_class && !p->ctxt.in_def && !dyna_in_block(p))
12676 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
12678#line 12674 "parse.c"
12682#line 3820 "parse.y"
12685 (yyval.node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12686 fixpos((yyval.node), (yyvsp[-3].node));
12690#line 12686 "parse.c"
12694#line 3831 "parse.y"
12697 (yyval.node) = (yyvsp[0].node);
12701#line 12697 "parse.c"
12705#line 3844 "parse.y"
12708 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
12709 mark_lvar_used(p, (yyval.node));
12713#line 12709 "parse.c"
12717#line 3852 "parse.y"
12720 (yyval.node) = (yyvsp[-1].node);
12724#line 12720 "parse.c"
12728#line 3861 "parse.y"
12731 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
12735#line 12731 "parse.c"
12739#line 3868 "parse.y"
12742 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
12746#line 12742 "parse.c"
12750#line 3877 "parse.y"
12753 (yyval.node) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
12757#line 12753 "parse.c"
12761#line 3884 "parse.y"
12764 (yyval.node) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12768#line 12764 "parse.c"
12772#line 3891 "parse.y"
12775 (yyval.node) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
12779#line 12775 "parse.c"
12783#line 3898 "parse.y"
12786 (yyval.node) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
12790#line 12786 "parse.c"
12794#line 3905 "parse.y"
12797 (yyval.node) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
12801#line 12797 "parse.c"
12805#line 3914 "parse.y"
12808 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
12809 mark_lvar_used(p, (yyval.node));
12813#line 12809 "parse.c"
12817#line 3922 "parse.y"
12820 (yyval.node) = NODE_SPECIAL_NO_NAME_REST;
12824#line 12820 "parse.c"
12828#line 3931 "parse.y"
12829 {(yyval.id) = ID2VAL(idNil);}
12830#line 12826 "parse.c"
12834#line 3934 "parse.y"
12835 {p->ctxt.in_argdef = 0;}
12836#line 12832 "parse.c"
12840#line 3937 "parse.y"
12842 (yyval.node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
12844#line 12840 "parse.c"
12848#line 3941 "parse.y"
12850 (yyval.node) = new_args_tail(p, (yyvsp[-1].node), Qnone, (yyvsp[0].id), &(yylsp[-1]));
12852#line 12848 "parse.c"
12856#line 3945 "parse.y"
12858 (yyval.node) = new_args_tail(p, Qnone, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
12860#line 12856 "parse.c"
12864#line 3949 "parse.y"
12866 (yyval.node) = new_args_tail(p, Qnone, Qnone, (yyvsp[0].
id), &(yylsp[0]));
12868#line 12864 "parse.c"
12872#line 3955 "parse.y"
12874 (yyval.node) = (yyvsp[0].node);
12876#line 12872 "parse.c"
12880#line 3959 "parse.y"
12882 (yyval.node) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
12884#line 12880 "parse.c"
12888#line 3965 "parse.y"
12892 (yyval.id) = NODE_SPECIAL_EXCESSIVE_COMMA;
12896#line 12892 "parse.c"
12900#line 3975 "parse.y"
12902 (yyval.node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
12904#line 12900 "parse.c"
12908#line 3979 "parse.y"
12910 (yyval.node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12912#line 12908 "parse.c"
12916#line 3983 "parse.y"
12918 (yyval.node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].node), Qnone, Qnone, (yyvsp[0].node), &(yyloc));
12920#line 12916 "parse.c"
12924#line 3987 "parse.y"
12926 (yyval.node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12928#line 12924 "parse.c"
12932#line 3991 "parse.y"
12934 (yyval.node) = new_args(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].id), Qnone, (yyvsp[0].node), &(yyloc));
12936#line 12932 "parse.c"
12940#line 3995 "parse.y"
12942 (yyval.node) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
12943 (yyval.node) = new_args(p, (yyvsp[-1].node), Qnone, (yyvsp[0].id), Qnone, (yyval.node), &(yyloc));
12945#line 12941 "parse.c"
12949#line 4000 "parse.y"
12951 (yyval.node) = new_args(p, (yyvsp[-5].node), Qnone, (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12953#line 12949 "parse.c"
12957#line 4004 "parse.y"
12959 (yyval.node) = new_args(p, (yyvsp[-1].node), Qnone, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
12961#line 12957 "parse.c"
12965#line 4008 "parse.y"
12967 (yyval.node) = new_args(p, Qnone, (yyvsp[-3].node), (yyvsp[-1].id), Qnone, (yyvsp[0].node), &(yyloc));
12969#line 12965 "parse.c"
12973#line 4012 "parse.y"
12975 (yyval.node) = new_args(p, Qnone, (yyvsp[-5].node), (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12977#line 12973 "parse.c"
12981#line 4016 "parse.y"
12983 (yyval.node) = new_args(p, Qnone, (yyvsp[-1].node), Qnone, Qnone, (yyvsp[0].node), &(yyloc));
12985#line 12981 "parse.c"
12989#line 4020 "parse.y"
12991 (yyval.node) = new_args(p, Qnone, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12993#line 12989 "parse.c"
12997#line 4024 "parse.y"
12999 (yyval.node) = new_args(p, Qnone, Qnone, (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
13001#line 12997 "parse.c"
13005#line 4028 "parse.y"
13007 (yyval.node) = new_args(p, Qnone, Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13009#line 13005 "parse.c"
13013#line 4032 "parse.y"
13015 (yyval.node) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
13017#line 13013 "parse.c"
13021#line 4039 "parse.y"
13023 p->command_start = TRUE;
13025#line 13021 "parse.c"
13029#line 4045 "parse.y"
13032 p->max_numparam = ORDINAL_PARAM;
13033 p->ctxt.in_argdef = 0;
13039#line 13035 "parse.c"
13043#line 4055 "parse.y"
13046 p->max_numparam = ORDINAL_PARAM;
13047 p->ctxt.in_argdef = 0;
13049 (yyval.node) = (yyvsp[-2].node);
13053#line 13049 "parse.c"
13057#line 4068 "parse.y"
13061#line 13057 "parse.c"
13065#line 4072 "parse.y"
13072#line 13068 "parse.c"
13076#line 4087 "parse.y"
13078 new_bv(p, get_id((yyvsp[0].
id)));
13081#line 13077 "parse.c"
13085#line 4092 "parse.y"
13089#line 13085 "parse.c"
13093#line 4098 "parse.y"
13095 token_info_push(p,
"->", &(yylsp[0]));
13096 (yyvsp[0].vars) = dyna_push(p);
13097 (yyval.num) = p->lex.lpar_beg;
13098 p->lex.lpar_beg = p->lex.paren_nest;
13100#line 13096 "parse.c"
13104#line 4104 "parse.y"
13106 (yyval.num) = p->max_numparam;
13107 p->max_numparam = 0;
13109#line 13105 "parse.c"
13113#line 4108 "parse.y"
13115 (yyval.node) = numparam_push(p);
13117#line 13113 "parse.c"
13121#line 4112 "parse.y"
13125#line 13121 "parse.c"
13129#line 4116 "parse.y"
13131 int max_numparam = p->max_numparam;
13132 p->lex.lpar_beg = (yyvsp[-5].num);
13133 p->max_numparam = (yyvsp[-4].num);
13135 (yyvsp[-2].node) = args_with_numbered(p, (yyvsp[-2].node), max_numparam);
13138 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
13139 (yyval.node) = NEW_LAMBDA((yyvsp[-2].node), (yyvsp[0].node), &loc);
13140 nd_set_line((yyval.node)->nd_body, (yylsp[0]).end_pos.lineno);
13141 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
13142 nd_set_first_loc((yyval.node), (yylsp[-6]).beg_pos);
13146 numparam_pop(p, (yyvsp[-3].node));
13147 dyna_pop(p, (yyvsp[-6].vars));
13149#line 13145 "parse.c"
13153#line 4138 "parse.y"
13155 p->ctxt.in_argdef = 0;
13157 (yyval.node) = (yyvsp[-2].node);
13158 p->max_numparam = ORDINAL_PARAM;
13162#line 13158 "parse.c"
13166#line 4147 "parse.y"
13168 p->ctxt.in_argdef = 0;
13170 if (!args_info_empty_p((yyvsp[0].node)->nd_ainfo))
13171 p->max_numparam = ORDINAL_PARAM;
13173 (yyval.node) = (yyvsp[0].node);
13175#line 13171 "parse.c"
13179#line 4158 "parse.y"
13181 token_info_pop(p,
"}", &(yylsp[0]));
13182 (yyval.node) = (yyvsp[-1].node);
13184#line 13180 "parse.c"
13188#line 4163 "parse.y"
13191 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13194#line 13190 "parse.c"
13198#line 4169 "parse.y"
13200 (yyval.node) = (yyvsp[-1].node);
13202#line 13198 "parse.c"
13206#line 4175 "parse.y"
13208 (yyval.node) = (yyvsp[-1].node);
13210 (yyval.node)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
13211 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
13214#line 13210 "parse.c"
13218#line 4185 "parse.y"
13221 if (nd_type_p((yyvsp[-1].node), NODE_YIELD)) {
13222 compile_error(p,
"block given to yield");
13225 block_dup_check(p, (yyvsp[-1].node)->nd_args, (yyvsp[0].node));
13227 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13228 fixpos((yyval.node), (yyvsp[-1].node));
13232#line 13228 "parse.c"
13236#line 4199 "parse.y"
13239 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13243#line 13239 "parse.c"
13247#line 4206 "parse.y"
13250 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
13254#line 13250 "parse.c"
13258#line 4213 "parse.y"
13261 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
13265#line 13261 "parse.c"
13269#line 4222 "parse.y"
13272 (yyval.node) = (yyvsp[-1].node);
13273 (yyval.node)->nd_args = (yyvsp[0].node);
13274 nd_set_last_loc((yyvsp[-1].node), (yylsp[0]).end_pos);
13278#line 13274 "parse.c"
13282#line 4231 "parse.y"
13285 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13286 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
13290#line 13286 "parse.c"
13294#line 4239 "parse.y"
13297 (yyval.node) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13298 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
13302#line 13298 "parse.c"
13306#line 4247 "parse.y"
13309 (yyval.node) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-2].node), (yyvsp[0].
id), Qnull, &(yylsp[0]), &(yyloc));
13313#line 13309 "parse.c"
13317#line 4254 "parse.y"
13320 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), ID2VAL(idCall), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13321 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
13325#line 13321 "parse.c"
13329#line 4262 "parse.y"
13332 (yyval.node) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-2].node), ID2VAL(idCall), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13333 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
13337#line 13333 "parse.c"
13341#line 4270 "parse.y"
13344 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc));
13348#line 13344 "parse.c"
13352#line 4277 "parse.y"
13355 (yyval.node) = NEW_ZSUPER(&(yyloc));
13359#line 13355 "parse.c"
13363#line 4284 "parse.y"
13366 if ((yyvsp[-3].node) && nd_type_p((yyvsp[-3].node), NODE_SELF))
13367 (yyval.node) = NEW_FCALL(tAREF, (yyvsp[-1].node), &(yyloc));
13369 (yyval.node) = NEW_CALL((yyvsp[-3].node), tAREF, (yyvsp[-1].node), &(yyloc));
13370 fixpos((yyval.node), (yyvsp[-3].node));
13374#line 13370 "parse.c"
13378#line 4297 "parse.y"
13380 (yyval.node) = (yyvsp[-1].node);
13382 (yyval.node)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
13383 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
13386#line 13382 "parse.c"
13390#line 4305 "parse.y"
13392 (yyval.node) = (yyvsp[-1].node);
13394 (yyval.node)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
13395 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
13398#line 13394 "parse.c"
13402#line 4314 "parse.y"
13403 {(yyval.vars) = dyna_push(p);}
13404#line 13400 "parse.c"
13408#line 4315 "parse.y"
13410 (yyval.num) = p->max_numparam;
13411 p->max_numparam = 0;
13413#line 13409 "parse.c"
13417#line 4319 "parse.y"
13419 (yyval.node) = numparam_push(p);
13421#line 13417 "parse.c"
13425#line 4323 "parse.y"
13427 int max_numparam = p->max_numparam;
13428 p->max_numparam = (yyvsp[-3].num);
13429 (yyvsp[-1].node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
13431 (yyval.node) = NEW_ITER((yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13434 numparam_pop(p, (yyvsp[-2].node));
13435 dyna_pop(p, (yyvsp[-4].vars));
13437#line 13433 "parse.c"
13441#line 4336 "parse.y"
13442 {(yyval.vars) = dyna_push(p);}
13443#line 13439 "parse.c"
13447#line 4337 "parse.y"
13449 (yyval.num) = p->max_numparam;
13450 p->max_numparam = 0;
13452#line 13448 "parse.c"
13456#line 4341 "parse.y"
13458 (yyval.node) = numparam_push(p);
13461#line 13457 "parse.c"
13465#line 4346 "parse.y"
13467 int max_numparam = p->max_numparam;
13468 p->max_numparam = (yyvsp[-3].num);
13469 (yyvsp[-1].node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
13471 (yyval.node) = NEW_ITER((yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13475 numparam_pop(p, (yyvsp[-2].node));
13476 dyna_pop(p, (yyvsp[-4].vars));
13478#line 13474 "parse.c"
13482#line 4361 "parse.y"
13485 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
13486 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
13490#line 13486 "parse.c"
13494#line 4369 "parse.y"
13497 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc));
13501#line 13497 "parse.c"
13505#line 4376 "parse.y"
13508 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
13509 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
13513#line 13509 "parse.c"
13517#line 4384 "parse.y"
13520 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
13524#line 13520 "parse.c"
13528#line 4395 "parse.y"
13531 (yyval.node) = NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13532 fixpos((yyval.node), (yyvsp[-3].node));
13536#line 13532 "parse.c"
13540#line 4409 "parse.y"
13542 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
13543 p->command_start = FALSE;
13544 (yyvsp[0].ctxt) = p->ctxt;
13545 p->ctxt.in_kwarg = 1;
13546 (yyval.tbl) = push_pvtbl(p);
13548#line 13544 "parse.c"
13552#line 4416 "parse.y"
13554 (yyval.tbl) = push_pktbl(p);
13556#line 13552 "parse.c"
13560#line 4420 "parse.y"
13562 pop_pktbl(p, (yyvsp[-2].tbl));
13563 pop_pvtbl(p, (yyvsp[-3].tbl));
13564 p->ctxt.in_kwarg = (yyvsp[-4].ctxt).in_kwarg;
13566#line 13562 "parse.c"
13570#line 4427 "parse.y"
13573 (yyval.node) = NEW_IN((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13577#line 13573 "parse.c"
13581#line 4441 "parse.y"
13584 (yyval.node) = new_if(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc));
13585 fixpos((yyval.node), (yyvsp[0].node));
13589#line 13585 "parse.c"
13593#line 4449 "parse.y"
13596 (yyval.node) = new_unless(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc));
13597 fixpos((yyval.node), (yyvsp[0].node));
13601#line 13597 "parse.c"
13605#line 4460 "parse.y"
13607 (yyval.node) = new_array_pattern_tail(p, Qnone, 1, 0, Qnone, &(yyloc));
13608 (yyval.node) = new_array_pattern(p, Qnone, get_value((yyvsp[-1].node)), (yyval.node), &(yyloc));
13610#line 13606 "parse.c"
13614#line 4465 "parse.y"
13616 (yyval.node) = new_array_pattern(p, Qnone, get_value((yyvsp[-2].node)), (yyvsp[0].node), &(yyloc));
13618 nd_set_first_loc((yyval.node), (yylsp[-2]).beg_pos);
13622#line 13618 "parse.c"
13626#line 4473 "parse.y"
13628 (yyval.node) = new_find_pattern(p, Qnone, (yyvsp[0].node), &(yyloc));
13630#line 13626 "parse.c"
13634#line 4477 "parse.y"
13636 (yyval.node) = new_array_pattern(p, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
13638#line 13634 "parse.c"
13642#line 4481 "parse.y"
13644 (yyval.node) = new_hash_pattern(p, Qnone, (yyvsp[0].node), &(yyloc));
13646#line 13642 "parse.c"
13650#line 4490 "parse.y"
13653 NODE *n = NEW_LIST((yyvsp[-2].node), &(yyloc));
13654 n = list_append(p, n, (yyvsp[0].node));
13655 (yyval.node) = new_hash(p, n, &(yyloc));
13659#line 13655 "parse.c"
13663#line 4502 "parse.y"
13666 (yyval.node) = NEW_NODE(NODE_OR, (yyvsp[-2].node), (yyvsp[0].node), 0, &(yyloc));
13670#line 13666 "parse.c"
13674#line 4511 "parse.y"
13675 {(yyval.tbl) = push_pktbl(p);}
13676#line 13672 "parse.c"
13680#line 4512 "parse.y"
13681 {(yyval.tbl) = push_pktbl(p);}
13682#line 13678 "parse.c"
13686#line 4517 "parse.y"
13688 pop_pktbl(p, (yyvsp[-2].tbl));
13689 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), &(yyloc));
13691 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
13695#line 13691 "parse.c"
13699#line 4526 "parse.y"
13701 pop_pktbl(p, (yyvsp[-2].tbl));
13702 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13704 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
13708#line 13704 "parse.c"
13712#line 4535 "parse.y"
13714 pop_pktbl(p, (yyvsp[-2].tbl));
13715 (yyval.node) = new_hash_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 4544 "parse.y"
13727 (yyval.node) = new_array_pattern_tail(p, Qnone, 0, 0, Qnone, &(yyloc));
13728 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), Qnone, (yyval.node), &(yyloc));
13730#line 13726 "parse.c"
13734#line 4549 "parse.y"
13736 pop_pktbl(p, (yyvsp[-2].tbl));
13737 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), &(yyloc));
13739 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
13743#line 13739 "parse.c"
13747#line 4558 "parse.y"
13749 pop_pktbl(p, (yyvsp[-2].tbl));
13750 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13752 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
13756#line 13752 "parse.c"
13760#line 4567 "parse.y"
13762 pop_pktbl(p, (yyvsp[-2].tbl));
13763 (yyval.node) = new_hash_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 4576 "parse.y"
13775 (yyval.node) = new_array_pattern_tail(p, Qnone, 0, 0, Qnone, &(yyloc));
13776 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), Qnone, (yyval.node), &(yyloc));
13778#line 13774 "parse.c"
13782#line 4581 "parse.y"
13784 (yyval.node) = new_array_pattern(p, Qnone, Qnone, (yyvsp[-1].node), &(yyloc));
13786#line 13782 "parse.c"
13790#line 4585 "parse.y"
13792 (yyval.node) = new_find_pattern(p, Qnone, (yyvsp[-1].node), &(yyloc));
13794#line 13790 "parse.c"
13798#line 4589 "parse.y"
13800 (yyval.node) = new_array_pattern_tail(p, Qnone, 0, 0, Qnone, &(yyloc));
13801 (yyval.node) = new_array_pattern(p, Qnone, Qnone, (yyval.node), &(yyloc));
13803#line 13799 "parse.c"
13807#line 4594 "parse.y"
13809 (yyval.tbl) = push_pktbl(p);
13810 (yyvsp[0].ctxt) = p->ctxt;
13811 p->ctxt.in_kwarg = 0;
13813#line 13809 "parse.c"
13817#line 4600 "parse.y"
13819 pop_pktbl(p, (yyvsp[-2].tbl));
13820 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
13821 (yyval.node) = new_hash_pattern(p, Qnone, (yyvsp[-1].node), &(yyloc));
13823#line 13819 "parse.c"
13827#line 4606 "parse.y"
13829 (yyval.node) = new_hash_pattern_tail(p, Qnone, 0, &(yyloc));
13830 (yyval.node) = new_hash_pattern(p, Qnone, (yyval.node), &(yyloc));
13832#line 13828 "parse.c"
13836#line 4610 "parse.y"
13837 {(yyval.tbl) = push_pktbl(p);}
13838#line 13834 "parse.c"
13842#line 4611 "parse.y"
13844 pop_pktbl(p, (yyvsp[-2].tbl));
13845 (yyval.node) = (yyvsp[-1].node);
13847#line 13843 "parse.c"
13851#line 4618 "parse.y"
13854 NODE *pre_args = NEW_LIST((yyvsp[0].node), &(yyloc));
13855 (yyval.node) = new_array_pattern_tail(p, pre_args, 0, 0, Qnone, &(yyloc));
13860#line 13856 "parse.c"
13864#line 4627 "parse.y"
13866 (yyval.node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0, Qnone, &(yyloc));
13868#line 13864 "parse.c"
13872#line 4631 "parse.y"
13875 (yyval.node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, 0, Qnone, &(yyloc));
13881#line 13877 "parse.c"
13885#line 4640 "parse.y"
13887 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, (yyvsp[0].id), Qnone, &(yyloc));
13889#line 13885 "parse.c"
13893#line 4644 "parse.y"
13895 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
13897#line 13893 "parse.c"
13901#line 4651 "parse.y"
13903 (yyval.node) = (yyvsp[-1].node);
13905#line 13901 "parse.c"
13909#line 4655 "parse.y"
13912 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
13916#line 13912 "parse.c"
13920#line 4664 "parse.y"
13922 (yyval.node) = new_array_pattern_tail(p, Qnone, 1, (yyvsp[0].
id), Qnone, &(yyloc));
13924#line 13920 "parse.c"
13928#line 4668 "parse.y"
13930 (yyval.node) = new_array_pattern_tail(p, Qnone, 1, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
13932#line 13928 "parse.c"
13936#line 4674 "parse.y"
13938 (yyval.node) = new_find_pattern_tail(p, (yyvsp[-4].
id), (yyvsp[-2].node), (yyvsp[0].
id), &(yyloc));
13940#line 13936 "parse.c"
13944#line 4681 "parse.y"
13946 (yyval.id) = (yyvsp[0].
id);
13948#line 13944 "parse.c"
13952#line 4685 "parse.y"
13956#line 13952 "parse.c"
13960#line 4692 "parse.y"
13963 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
13967#line 13963 "parse.c"
13971#line 4701 "parse.y"
13974 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
13978#line 13974 "parse.c"
13982#line 4710 "parse.y"
13984 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].id), &(yyloc));
13986#line 13982 "parse.c"
13990#line 4714 "parse.y"
13992 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
13994#line 13990 "parse.c"
13998#line 4718 "parse.y"
14000 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
14002#line 13998 "parse.c"
14006#line 4722 "parse.y"
14008 (yyval.node) = new_hash_pattern_tail(p, new_hash(p, Qnone, &(yyloc)), (yyvsp[0].
id), &(yyloc));
14010#line 14006 "parse.c"
14014#line 4730 "parse.y"
14017 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
14021#line 14017 "parse.c"
14025#line 4739 "parse.y"
14027 error_duplicate_pattern_key(p, get_id((yyvsp[-1].
id)), &(yylsp[-1]));
14029 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
14033#line 14029 "parse.c"
14037#line 4747 "parse.y"
14039 error_duplicate_pattern_key(p, get_id((yyvsp[0].
id)), &(yylsp[0]));
14040 if ((yyvsp[0].
id) && !is_local_id(get_id((yyvsp[0].
id)))) {
14041 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
14043 error_duplicate_pattern_variable(p, get_id((yyvsp[0].
id)), &(yylsp[0]));
14045 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
14049#line 14045 "parse.c"
14053#line 4762 "parse.y"
14055 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
14057 if (!(yyvsp[-1].node) || nd_type_p((yyvsp[-1].node), NODE_STR)) {
14058 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
14059 (yyval.id) =
SYM2ID(node->nd_lit);
14070 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
14074#line 14070 "parse.c"
14078#line 4785 "parse.y"
14080 (yyval.id) = (yyvsp[0].
id);
14082#line 14078 "parse.c"
14086#line 4789 "parse.y"
14090#line 14086 "parse.c"
14094#line 4795 "parse.y"
14098#line 14094 "parse.c"
14102#line 4801 "parse.y"
14103 {(yyval.id) = ID2VAL(idNil);}
14104#line 14100 "parse.c"
14108#line 4806 "parse.y"
14111 value_expr((yyvsp[-2].node));
14112 value_expr((yyvsp[0].node));
14113 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14117#line 14113 "parse.c"
14121#line 4815 "parse.y"
14124 value_expr((yyvsp[-2].node));
14125 value_expr((yyvsp[0].node));
14126 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14130#line 14126 "parse.c"
14134#line 4824 "parse.y"
14137 value_expr((yyvsp[-1].node));
14138 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
14142#line 14138 "parse.c"
14146#line 4832 "parse.y"
14149 value_expr((yyvsp[-1].node));
14150 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
14154#line 14150 "parse.c"
14158#line 4843 "parse.y"
14161 value_expr((yyvsp[0].node));
14162 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
14166#line 14162 "parse.c"
14170#line 4851 "parse.y"
14173 value_expr((yyvsp[0].node));
14174 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
14178#line 14174 "parse.c"
14182#line 4869 "parse.y"
14185 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
14189#line 14185 "parse.c"
14193#line 4879 "parse.y"
14196 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
14197 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
14201#line 14197 "parse.c"
14205#line 4889 "parse.y"
14208 NODE *n = gettable(p, (yyvsp[0].
id), &(yyloc));
14209 if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
14210 compile_error(p,
"%"PRIsVALUE
": no such local variable", rb_id2str((yyvsp[0].
id)));
14216#line 14212 "parse.c"
14220#line 4900 "parse.y"
14223 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
14227#line 14223 "parse.c"
14231#line 4909 "parse.y"
14234 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
14238#line 14234 "parse.c"
14242#line 4918 "parse.y"
14245 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
14249#line 14245 "parse.c"
14253#line 4925 "parse.y"
14256 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
14260#line 14256 "parse.c"
14264#line 4932 "parse.y"
14267 (yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc));
14271#line 14267 "parse.c"
14275#line 4943 "parse.y"
14278 (yyval.node) = NEW_RESBODY((yyvsp[-4].node),
14279 (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),
14280 (yyvsp[0].node), &(yyloc));
14282 if ((yyvsp[-4].node)) {
14283 fixpos((yyval.node), (yyvsp[-4].node));
14285 else if ((yyvsp[-3].node)) {
14286 fixpos((yyval.node), (yyvsp[-3].node));
14289 fixpos((yyval.node), (yyvsp[-1].node));
14294#line 14290 "parse.c"
14298#line 4965 "parse.y"
14301 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14305#line 14301 "parse.c"
14309#line 4972 "parse.y"
14312 if (!((yyval.node) = splat_array((yyvsp[0].node)))) (yyval.node) = (yyvsp[0].node);
14316#line 14312 "parse.c"
14320#line 4982 "parse.y"
14322 (yyval.node) = (yyvsp[0].node);
14324#line 14320 "parse.c"
14328#line 4989 "parse.y"
14331 (yyval.node) = (yyvsp[0].node);
14335#line 14331 "parse.c"
14339#line 5003 "parse.y"
14342 NODE *node = (yyvsp[0].node);
14344 node = NEW_STR(STR_NEW0(), &(yyloc));
14348 node = evstr2dstr(p, node);
14350 (yyval.node) = node;
14354#line 14350 "parse.c"
14358#line 5022 "parse.y"
14361 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14365#line 14361 "parse.c"
14369#line 5031 "parse.y"
14372 (yyval.node) = heredoc_dedent(p, (yyvsp[-1].node));
14373 if ((yyval.node)) nd_set_loc((yyval.node), &(yyloc));
14377#line 14373 "parse.c"
14381#line 5041 "parse.y"
14384 (yyval.node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
14388#line 14384 "parse.c"
14392#line 5050 "parse.y"
14394 (yyval.node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc));
14396#line 14392 "parse.c"
14400#line 5056 "parse.y"
14403 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14407#line 14403 "parse.c"
14411#line 5065 "parse.y"
14418#line 14414 "parse.c"
14422#line 5072 "parse.y"
14425 (yyval.node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
14429#line 14425 "parse.c"
14433#line 5083 "parse.y"
14436 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14440#line 14436 "parse.c"
14444#line 5092 "parse.y"
14447 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14451#line 14447 "parse.c"
14455#line 5101 "parse.y"
14462#line 14458 "parse.c"
14466#line 5108 "parse.y"
14469 (yyval.node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
14473#line 14469 "parse.c"
14477#line 5117 "parse.y"
14480 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14484#line 14480 "parse.c"
14488#line 5126 "parse.y"
14491 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14495#line 14491 "parse.c"
14499#line 5135 "parse.y"
14506#line 14502 "parse.c"
14510#line 5142 "parse.y"
14513 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
14517#line 14513 "parse.c"
14521#line 5151 "parse.y"
14528#line 14524 "parse.c"
14532#line 5158 "parse.y"
14535 (yyval.node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
14539#line 14535 "parse.c"
14543#line 5167 "parse.y"
14554#line 14550 "parse.c"
14558#line 5178 "parse.y"
14561 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14574#line 14570 "parse.c"
14578#line 5196 "parse.y"
14585#line 14581 "parse.c"
14589#line 5203 "parse.y"
14592 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14596#line 14592 "parse.c"
14600#line 5212 "parse.y"
14611#line 14607 "parse.c"
14615#line 5223 "parse.y"
14618 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
14620 (yyval.node) = tail;
14623 (yyval.node) = head;
14626 switch (nd_type(head)) {
14628 nd_set_type(head, NODE_DSTR);
14633 head = list_append(p, NEW_DSTR(
Qnil, &(yyloc)), head);
14636 (yyval.node) = list_append(p, head, tail);
14654#line 14650 "parse.c"
14658#line 5266 "parse.y"
14661 (yyval.strterm) = p->lex.strterm;
14662 p->lex.strterm = 0;
14663 SET_LEX_STATE(EXPR_BEG);
14665#line 14661 "parse.c"
14669#line 5273 "parse.y"
14671 p->lex.strterm = (yyvsp[-1].strterm);
14673 (yyval.node) = NEW_EVSTR((yyvsp[0].node), &(yyloc));
14674 nd_set_line((yyval.node), (yylsp[0]).end_pos.lineno);
14678#line 14674 "parse.c"
14682#line 5282 "parse.y"
14687#line 14683 "parse.c"
14691#line 5286 "parse.y"
14694 (yyval.strterm) = p->lex.strterm;
14695 p->lex.strterm = 0;
14697#line 14693 "parse.c"
14701#line 5291 "parse.y"
14703 (yyval.num) = p->lex.state;
14704 SET_LEX_STATE(EXPR_BEG);
14706#line 14702 "parse.c"
14710#line 5295 "parse.y"
14712 (yyval.num) = p->lex.brace_nest;
14713 p->lex.brace_nest = 0;
14715#line 14711 "parse.c"
14719#line 5299 "parse.y"
14721 (yyval.num) = p->heredoc_indent;
14722 p->heredoc_indent = 0;
14724#line 14720 "parse.c"
14728#line 5304 "parse.y"
14732 p->lex.strterm = (yyvsp[-5].strterm);
14733 SET_LEX_STATE((yyvsp[-4].num));
14734 p->lex.brace_nest = (yyvsp[-3].num);
14735 p->heredoc_indent = (yyvsp[-2].num);
14736 p->heredoc_line_indent = -1;
14738 if ((yyvsp[-1].node)) (yyvsp[-1].node)->flags &= ~NODE_FL_NEWLINE;
14739 (yyval.node) = new_evstr(p, (yyvsp[-1].node), &(yyloc));
14743#line 14739 "parse.c"
14747#line 5321 "parse.y"
14750 (yyval.node) = NEW_GVAR((yyvsp[0].
id), &(yyloc));
14754#line 14750 "parse.c"
14758#line 5328 "parse.y"
14761 (yyval.node) = NEW_IVAR((yyvsp[0].
id), &(yyloc));
14765#line 14761 "parse.c"
14769#line 5335 "parse.y"
14772 (yyval.node) = NEW_CVAR((yyvsp[0].
id), &(yyloc));
14776#line 14772 "parse.c"
14780#line 5349 "parse.y"
14782 SET_LEX_STATE(EXPR_END);
14784 (yyval.node) = NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc));
14788#line 14784 "parse.c"
14792#line 5363 "parse.y"
14794 SET_LEX_STATE(EXPR_END);
14796 (yyval.node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
14800#line 14796 "parse.c"
14804#line 5374 "parse.y"
14807 (yyval.node) = (yyvsp[0].node);
14808 RB_OBJ_WRITE(p->ast, &(yyval.node)->nd_lit, negate_lit(p, (yyval.node)->nd_lit));
14812#line 14808 "parse.c"
14816#line 5399 "parse.y"
14817 {(yyval.id) = KWD2EID(nil, (yyvsp[0].
id));}
14818#line 14814 "parse.c"
14822#line 5400 "parse.y"
14823 {(yyval.id) = KWD2EID(self, (yyvsp[0].
id));}
14824#line 14820 "parse.c"
14828#line 5401 "parse.y"
14829 {(yyval.id) = KWD2EID(
true, (yyvsp[0].
id));}
14830#line 14826 "parse.c"
14834#line 5402 "parse.y"
14835 {(yyval.id) = KWD2EID(
false, (yyvsp[0].
id));}
14836#line 14832 "parse.c"
14840#line 5403 "parse.y"
14841 {(yyval.id) = KWD2EID(_FILE__, (yyvsp[0].
id));}
14842#line 14838 "parse.c"
14846#line 5404 "parse.y"
14847 {(yyval.id) = KWD2EID(_LINE__, (yyvsp[0].
id));}
14848#line 14844 "parse.c"
14852#line 5405 "parse.y"
14853 {(yyval.id) = KWD2EID(_ENCODING__, (yyvsp[0].
id));}
14854#line 14850 "parse.c"
14858#line 5409 "parse.y"
14861 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
14871#line 14867 "parse.c"
14875#line 5422 "parse.y"
14878 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
14882#line 14878 "parse.c"
14886#line 5431 "parse.y"
14889 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
14893#line 14889 "parse.c"
14897#line 5438 "parse.y"
14900 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
14904#line 14900 "parse.c"
14908#line 5451 "parse.y"
14910 SET_LEX_STATE(EXPR_BEG);
14911 p->command_start = TRUE;
14913#line 14909 "parse.c"
14917#line 5456 "parse.y"
14919 (yyval.node) = (yyvsp[-1].node);
14921#line 14917 "parse.c"
14925#line 5460 "parse.y"
14932#line 14928 "parse.c"
14936#line 5470 "parse.y"
14938 p->ctxt.in_argdef = 0;
14939 (yyval.node) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[-1]));
14940 (yyval.node) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyval.node), &(yylsp[-1]));
14942#line 14938 "parse.c"
14946#line 5478 "parse.y"
14949 (yyval.node) = (yyvsp[-1].node);
14952 SET_LEX_STATE(EXPR_BEG);
14953 p->command_start = TRUE;
14954 p->ctxt.in_argdef = 0;
14956#line 14952 "parse.c"
14960#line 5490 "parse.y"
14962 (yyval.ctxt) = p->ctxt;
14963 p->ctxt.in_kwarg = 1;
14964 p->ctxt.in_argdef = 1;
14965 SET_LEX_STATE(p->lex.state|EXPR_LABEL);
14967#line 14963 "parse.c"
14971#line 5497 "parse.y"
14973 p->ctxt.in_kwarg = (yyvsp[-2].ctxt).in_kwarg;
14974 p->ctxt.in_argdef = 0;
14975 (yyval.node) = (yyvsp[-1].node);
14976 SET_LEX_STATE(EXPR_BEG);
14977 p->command_start = TRUE;
14979#line 14975 "parse.c"
14983#line 5507 "parse.y"
14985 (yyval.node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
14987#line 14983 "parse.c"
14991#line 5511 "parse.y"
14993 (yyval.node) = new_args_tail(p, (yyvsp[-1].node), Qnone, (yyvsp[0].id), &(yylsp[-1]));
14995#line 14991 "parse.c"
14999#line 5515 "parse.y"
15001 (yyval.node) = new_args_tail(p, Qnone, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
15003#line 14999 "parse.c"
15007#line 5519 "parse.y"
15009 (yyval.node) = new_args_tail(p, Qnone, Qnone, (yyvsp[0].
id), &(yylsp[0]));
15011#line 15007 "parse.c"
15015#line 5523 "parse.y"
15017 add_forwarding_args(p);
15018 (yyval.node) = new_args_tail(p, Qnone, (yyvsp[0].
id), ID2VAL(idFWD_BLOCK), &(yylsp[0]));
15020 ((yyval.node)->nd_ainfo)->forwarding = 1;
15023#line 15019 "parse.c"
15027#line 5533 "parse.y"
15029 (yyval.node) = (yyvsp[0].node);
15031#line 15027 "parse.c"
15035#line 5537 "parse.y"
15037 (yyval.node) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
15039#line 15035 "parse.c"
15043#line 5543 "parse.y"
15045 (yyval.node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
15047#line 15043 "parse.c"
15051#line 5547 "parse.y"
15053 (yyval.node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15055#line 15051 "parse.c"
15059#line 5551 "parse.y"
15061 (yyval.node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].node), Qnone, Qnone, (yyvsp[0].node), &(yyloc));
15063#line 15059 "parse.c"
15067#line 5555 "parse.y"
15069 (yyval.node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15071#line 15067 "parse.c"
15075#line 5559 "parse.y"
15077 (yyval.node) = new_args(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].id), Qnone, (yyvsp[0].node), &(yyloc));
15079#line 15075 "parse.c"
15083#line 5563 "parse.y"
15085 (yyval.node) = new_args(p, (yyvsp[-5].node), Qnone, (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15087#line 15083 "parse.c"
15091#line 5567 "parse.y"
15093 (yyval.node) = new_args(p, (yyvsp[-1].node), Qnone, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
15095#line 15091 "parse.c"
15099#line 5571 "parse.y"
15101 (yyval.node) = new_args(p, Qnone, (yyvsp[-3].node), (yyvsp[-1].id), Qnone, (yyvsp[0].node), &(yyloc));
15103#line 15099 "parse.c"
15107#line 5575 "parse.y"
15109 (yyval.node) = new_args(p, Qnone, (yyvsp[-5].node), (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15111#line 15107 "parse.c"
15115#line 5579 "parse.y"
15117 (yyval.node) = new_args(p, Qnone, (yyvsp[-1].node), Qnone, Qnone, (yyvsp[0].node), &(yyloc));
15119#line 15115 "parse.c"
15123#line 5583 "parse.y"
15125 (yyval.node) = new_args(p, Qnone, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15127#line 15123 "parse.c"
15131#line 5587 "parse.y"
15133 (yyval.node) = new_args(p, Qnone, Qnone, (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
15135#line 15131 "parse.c"
15139#line 5591 "parse.y"
15141 (yyval.node) = new_args(p, Qnone, Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15143#line 15139 "parse.c"
15147#line 5595 "parse.y"
15149 (yyval.node) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
15151#line 15147 "parse.c"
15155#line 5599 "parse.y"
15157 (yyval.node) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
15158 (yyval.node) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyval.node), &(yylsp[0]));
15160#line 15156 "parse.c"
15164#line 5606 "parse.y"
15167#ifdef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
15170 (yyval.id) = idFWD_KWREST;
15175#line 15171 "parse.c"
15179#line 5619 "parse.y"
15181 static const char mesg[] =
"formal argument cannot be a constant";
15183 yyerror1(&(yylsp[0]), mesg);
15188#line 15184 "parse.c"
15192#line 5628 "parse.y"
15194 static const char mesg[] =
"formal argument cannot be an instance variable";
15196 yyerror1(&(yylsp[0]), mesg);
15201#line 15197 "parse.c"
15205#line 5637 "parse.y"
15207 static const char mesg[] =
"formal argument cannot be a global variable";
15209 yyerror1(&(yylsp[0]), mesg);
15214#line 15210 "parse.c"
15218#line 5646 "parse.y"
15220 static const char mesg[] =
"formal argument cannot be a class variable";
15222 yyerror1(&(yylsp[0]), mesg);
15227#line 15223 "parse.c"
15231#line 5658 "parse.y"
15233 formal_argument(p, (yyvsp[0].
id));
15234 p->max_numparam = ORDINAL_PARAM;
15235 (yyval.id) = (yyvsp[0].
id);
15237#line 15233 "parse.c"
15241#line 5666 "parse.y"
15243 ID id = get_id((yyvsp[0].
id));
15246 (yyval.id) = (yyvsp[0].
id);
15248#line 15244 "parse.c"
15252#line 5675 "parse.y"
15256 (yyval.node) = NEW_ARGS_AUX((yyvsp[0].
id), 1, &NULL_LOC);
15260#line 15256 "parse.c"
15264#line 5683 "parse.y"
15267 ID tid = internal_id(p);
15269 loc.beg_pos = (yylsp[-1]).beg_pos;
15270 loc.end_pos = (yylsp[-1]).beg_pos;
15272 if (dyna_in_block(p)) {
15273 (yyvsp[-1].node)->nd_value = NEW_DVAR(tid, &loc);
15276 (yyvsp[-1].node)->nd_value = NEW_LVAR(tid, &loc);
15278 (yyval.node) = NEW_ARGS_AUX(tid, 1, &NULL_LOC);
15279 (yyval.node)->nd_next = (yyvsp[-1].node);
15283#line 15279 "parse.c"
15287#line 5706 "parse.y"
15290 (yyval.node) = (yyvsp[-2].node);
15291 (yyval.node)->nd_plen++;
15292 (yyval.node)->nd_next = block_append(p, (yyval.node)->nd_next, (yyvsp[0].node)->nd_next);
15293 rb_discard_node(p, (yyvsp[0].node));
15297#line 15293 "parse.c"
15301#line 5719 "parse.y"
15303 arg_var(p, formal_argument(p, (yyvsp[0].
id)));
15304 p->cur_arg = get_id((yyvsp[0].
id));
15305 p->max_numparam = ORDINAL_PARAM;
15306 p->ctxt.in_argdef = 0;
15307 (yyval.id) = (yyvsp[0].
id);
15309#line 15305 "parse.c"
15313#line 5729 "parse.y"
15316 p->ctxt.in_argdef = 1;
15318 (yyval.node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15322#line 15318 "parse.c"
15326#line 5738 "parse.y"
15329 p->ctxt.in_argdef = 1;
15331 (yyval.node) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
15335#line 15331 "parse.c"
15339#line 5749 "parse.y"
15341 p->ctxt.in_argdef = 1;
15343 (yyval.node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15347#line 15343 "parse.c"
15351#line 5757 "parse.y"
15353 p->ctxt.in_argdef = 1;
15355 (yyval.node) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
15359#line 15355 "parse.c"
15363#line 5767 "parse.y"
15366 (yyval.node) = (yyvsp[0].node);
15370#line 15366 "parse.c"
15374#line 5774 "parse.y"
15377 (yyval.node) = kwd_append((yyvsp[-2].node), (yyvsp[0].node));
15381#line 15377 "parse.c"
15385#line 5784 "parse.y"
15388 (yyval.node) = (yyvsp[0].node);
15392#line 15388 "parse.c"
15396#line 5791 "parse.y"
15399 (yyval.node) = kwd_append((yyvsp[-2].node), (yyvsp[0].node));
15403#line 15399 "parse.c"
15407#line 5804 "parse.y"
15413#line 15409 "parse.c"
15417#line 5812 "parse.y"
15419 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].
id))));
15421 (yyval.id) = (yyvsp[0].
id);
15425#line 15421 "parse.c"
15429#line 5820 "parse.y"
15431 arg_var(p, idFWD_KWREST);
15433 (yyval.id) = idFWD_KWREST;
15437#line 15433 "parse.c"
15441#line 5830 "parse.y"
15444 p->ctxt.in_argdef = 1;
15446 (yyval.node) = NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15450#line 15446 "parse.c"
15454#line 5841 "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 5852 "parse.y"
15470 (yyval.node) = (yyvsp[0].node);
15474#line 15470 "parse.c"
15478#line 5859 "parse.y"
15481 (yyval.node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].node));
15485#line 15481 "parse.c"
15489#line 5868 "parse.y"
15492 (yyval.node) = (yyvsp[0].node);
15496#line 15492 "parse.c"
15500#line 5875 "parse.y"
15503 (yyval.node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].node));
15507#line 15503 "parse.c"
15511#line 5888 "parse.y"
15513 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].
id))));
15515 (yyval.id) = (yyvsp[0].
id);
15519#line 15515 "parse.c"
15523#line 5896 "parse.y"
15525 arg_var(p, idFWD_REST);
15527 (yyval.id) = idFWD_REST;
15531#line 15527 "parse.c"
15535#line 5910 "parse.y"
15537 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].
id))));
15539 (yyval.id) = (yyvsp[0].
id);
15543#line 15539 "parse.c"
15547#line 5918 "parse.y"
15549 arg_var(p, idFWD_BLOCK);
15551 (yyval.id) = idFWD_BLOCK;
15555#line 15551 "parse.c"
15559#line 5928 "parse.y"
15561 (yyval.id) = (yyvsp[0].
id);
15563#line 15559 "parse.c"
15567#line 5932 "parse.y"
15569 (yyval.id) = Qnull;
15571#line 15567 "parse.c"
15575#line 5938 "parse.y"
15577 value_expr((yyvsp[0].node));
15578 (yyval.node) = (yyvsp[0].node);
15580#line 15576 "parse.c"
15584#line 5942 "parse.y"
15585 {SET_LEX_STATE(EXPR_BEG);}
15586#line 15582 "parse.c"
15590#line 5943 "parse.y"
15593 switch (nd_type((yyvsp[-1].node))) {
15602 yyerror1(&(yylsp[-1]),
"can't define singleton method for literals");
15605 value_expr((yyvsp[-1].node));
15608 (yyval.node) = (yyvsp[-1].node);
15612#line 15608 "parse.c"
15616#line 5968 "parse.y"
15619 (yyval.node) = (yyvsp[-1].node);
15623#line 15619 "parse.c"
15627#line 5979 "parse.y"
15630 NODE *assocs = (yyvsp[-2].node);
15631 NODE *tail = (yyvsp[0].node);
15636 if (assocs->nd_head &&
15637 !tail->nd_head && nd_type_p(tail->nd_next, NODE_LIST) &&
15638 nd_type_p(tail->nd_next->nd_head, NODE_HASH)) {
15640 tail = tail->nd_next->nd_head->nd_head;
15642 assocs = list_concat(assocs, tail);
15644 (yyval.node) = assocs;
15648#line 15644 "parse.c"
15652#line 6002 "parse.y"
15655 if (nd_type_p((yyvsp[-2].node), NODE_STR)) {
15656 nd_set_type((yyvsp[-2].node), NODE_LIT);
15657 RB_OBJ_WRITE(p->ast, &(yyvsp[-2].node)->nd_lit, rb_fstring((yyvsp[-2].node)->nd_lit));
15659 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
15663#line 15659 "parse.c"
15667#line 6013 "parse.y"
15670 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
15674#line 15670 "parse.c"
15678#line 6020 "parse.y"
15681 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
15682 if (!val) val = NEW_BEGIN(0, &(yyloc));
15683 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
15687#line 15683 "parse.c"
15691#line 6029 "parse.y"
15694 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
15695 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
15699#line 15695 "parse.c"
15703#line 6037 "parse.y"
15706 if (nd_type_p((yyvsp[0].node), NODE_HASH) &&
15707 !((yyvsp[0].node)->nd_head && (yyvsp[0].node)->nd_head->nd_alen)) {
15708 static VALUE empty_hash;
15711 rb_gc_register_mark_object(empty_hash);
15713 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), NEW_LIT(empty_hash, &(yyloc)));
15716 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
15720#line 15716 "parse.c"
15724#line 6054 "parse.y"
15726 if (!local_id(p, idFWD_KWREST) ||
15727 local_id(p, idFWD_ALL)) {
15728 compile_error(p,
"no anonymous keyword rest parameter");
15731 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)),
15732 NEW_LVAR(idFWD_KWREST, &(yyloc)));
15736#line 15732 "parse.c"
15740#line 6114 "parse.y"
15741 {yyerrok;token_flush(p);}
15742#line 15738 "parse.c"
15746#line 6116 "parse.y"
15748 (yyloc).end_pos = (yyloc).beg_pos;
15751#line 15747 "parse.c"
15755#line 6123 "parse.y"
15757#line 15753 "parse.c"
15761#line 6127 "parse.y"
15763 (yyval.node) = Qnull;
15765#line 15761 "parse.c"
15769#line 15765 "parse.c"
15784 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
15786 YYPOPSTACK (yylen);
15796 const int yylhs = yyr1[yyn] - YYNTOKENS;
15797 const int yyi = yypgoto[yylhs] + *yyssp;
15798 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
15800 : yydefgoto[yylhs]);
15812 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
15819 = {yyssp, yytoken, &yylloc};
15820 char const *yymsgp = YY_(
"syntax error");
15821 int yysyntax_error_status;
15822 yysyntax_error_status = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
15823 if (yysyntax_error_status == 0)
15825 else if (yysyntax_error_status == -1)
15827 if (yymsg != yymsgbuf)
15828 YYSTACK_FREE (yymsg);
15829 yymsg = YY_CAST (
char *,
15830 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
15833 yysyntax_error_status
15834 = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
15840 yymsg_alloc =
sizeof yymsgbuf;
15841 yysyntax_error_status = YYENOMEM;
15844 yyerror (&yylloc, p, yymsgp);
15845 if (yysyntax_error_status == YYENOMEM)
15850 yyerror_range[1] = yylloc;
15851 if (yyerrstatus == 3)
15856 if (yychar <= END_OF_INPUT)
15859 if (yychar == END_OF_INPUT)
15864 yydestruct (
"Error: discarding",
15865 yytoken, &yylval, &yylloc, p);
15887 YYPOPSTACK (yylen);
15889 YY_STACK_PRINT (yyss, yyssp);
15903 yyn = yypact[yystate];
15904 if (!yypact_value_is_default (yyn))
15906 yyn += YYSYMBOL_YYerror;
15907 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
15909 yyn = yytable[yyn];
15919 yyerror_range[1] = *yylsp;
15920 yydestruct (
"Error: popping",
15921 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
15924 YY_STACK_PRINT (yyss, yyssp);
15927 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
15929 YY_IGNORE_MAYBE_UNINITIALIZED_END
15931 yyerror_range[2] = yylloc;
15933 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
15936 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
15962 yyerror (&yylloc, p, YY_(
"memory exhausted"));
15971 if (yychar != YYEMPTY)
15975 yytoken = YYTRANSLATE (yychar);
15976 yydestruct (
"Cleanup: discarding lookahead",
15977 yytoken, &yylval, &yylloc, p);
15981 YYPOPSTACK (yylen);
15982 YY_STACK_PRINT (yyss, yyssp);
15983 while (yyssp != yyss)
15985 yydestruct (
"Cleanup: popping",
15986 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
15991 YYSTACK_FREE (yyss);
15993 if (yymsg != yymsgbuf)
15994 YYSTACK_FREE (yymsg);
15998#line 6131 "parse.y"
16003# define yylval (*p->lval)
16012# define set_yylval_node(x) { \
16013 YYLTYPE _cur_loc; \
16014 rb_parser_set_location(p, &_cur_loc); \
16015 yylval.node = (x); \
16017# define set_yylval_str(x) \
16019 set_yylval_node(NEW_STR(x, &_cur_loc)); \
16020 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
16022# define set_yylval_literal(x) \
16024 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
16025 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
16027# define set_yylval_num(x) (yylval.num = (x))
16028# define set_yylval_id(x) (yylval.id = (x))
16029# define set_yylval_name(x) (yylval.id = (x))
16030# define yylval_id() (yylval.id)
16035 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
16037# define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
16038# define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
16039# define set_yylval_id(x) (void)(x)
16040# define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
16041# define set_yylval_literal(x) add_mark_object(p, (x))
16042# define set_yylval_node(x) (yylval.val = ripper_new_yylval(p, 0, 0, STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)))
16043# define yylval_id() yylval.id
16044# define _cur_loc NULL_LOC
16047#define set_yylval_noname() set_yylval_id(keyword_nil)
16048#define has_delayed_token(p) (!NIL_P(p->delayed.token))
16051#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
16052#define dispatch_scan_event(p, t) parser_dispatch_scan_event(p, t, __LINE__)
16057 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);
16058 return p->lex.pcur > p->lex.ptok;
16064 VALUE ary = rb_ary_new_from_args(4,
16073parser_append_tokens(
struct parser_params *p,
VALUE str,
enum yytokentype t,
int line)
16079 token_id = p->token_id;
16080 rb_ary_push(ary,
INT2FIX(token_id));
16081 rb_ary_push(ary,
ID2SYM(parser_token2id(t)));
16082 rb_ary_push(ary, str);
16083 rb_ary_push(ary, code_loc_to_ary(p->yylloc));
16085 rb_ary_push(p->tokens, ary);
16089 rb_parser_printf(p,
"Append tokens (line: %d) %"PRIsVALUE
"\n", line, ary);
16094parser_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t,
int line)
16096 debug_token_line(p,
"parser_dispatch_scan_event", line);
16098 if (!parser_has_token(p))
return;
16100 RUBY_SET_YYLLOC(*p->yylloc);
16102 if (p->keep_tokens) {
16103 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
16104 parser_append_tokens(p, str, t, line);
16110#define dispatch_delayed_token(p, t) parser_dispatch_delayed_token(p, t, __LINE__)
16112parser_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t,
int line)
16114 int saved_line = p->ruby_sourceline;
16115 const char *saved_tokp = p->lex.ptok;
16117 debug_token_line(p,
"parser_dispatch_delayed_token", line);
16119 if (!has_delayed_token(p))
return;
16121 RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(*p->yylloc);
16123 if (p->keep_tokens) {
16124 p->ruby_sourceline = p->delayed.beg_line;
16125 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
16126 parser_append_tokens(p, p->delayed.token, t, line);
16127 p->ruby_sourceline = saved_line;
16128 p->lex.ptok = saved_tokp;
16131 p->delayed.token =
Qnil;
16134#define literal_flush(p, ptr) ((void)(ptr))
16136#define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
16139intern_sym(
const char *name)
16141 ID id = rb_intern_const(name);
16149 return p->lex.pcur > p->lex.ptok;
16153ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
16155 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
16156 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
16157 RUBY_SET_YYLLOC(*p->yylloc);
16163ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
16165 if (!ripper_has_scan_event(p))
return;
16166 add_mark_object(p, yylval_rval = ripper_scan_event_val(p, t));
16168#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
16171ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
16173 int saved_line = p->ruby_sourceline;
16174 const char *saved_tokp = p->lex.ptok;
16176 if (!has_delayed_token(p))
return;
16177 p->ruby_sourceline = p->delayed.beg_line;
16178 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
16179 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed.token));
16180 p->delayed.token =
Qnil;
16181 p->ruby_sourceline = saved_line;
16182 p->lex.ptok = saved_tokp;
16184#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
16188is_identchar(
const char *ptr,
const char *MAYBE_UNUSED(ptr_end),
rb_encoding *enc)
16190 return rb_enc_isalnum((
unsigned char)*ptr, enc) || *ptr ==
'_' || !
ISASCII(*ptr);
16196 return !(p)->eofp && is_identchar(p->lex.pcur-1, p->lex.pend, p->enc);
16202 return ISASCII(*(p->lex.pcur-1));
16208 int column = 1, nonspc = 0, i;
16209 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
16210 if (*ptr ==
'\t') {
16211 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
16214 if (*ptr !=
' ' && *ptr !=
'\t') {
16219 ptinfo->beg = loc->beg_pos;
16220 ptinfo->indent = column;
16221 ptinfo->nonspc = nonspc;
16229 if (!p->token_info_enabled)
return;
16231 ptinfo->token = token;
16232 ptinfo->next = p->token_info;
16233 token_info_setup(ptinfo, p->lex.pbeg, loc);
16235 p->token_info = ptinfo;
16243 if (!ptinfo_beg)
return;
16244 p->token_info = ptinfo_beg->next;
16247 token_info_warn(p, token, ptinfo_beg, 1, loc);
16248 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
16256 if (!ptinfo_beg)
return;
16257 p->token_info = ptinfo_beg->next;
16259 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
16260 ptinfo_beg->beg.column != beg_pos.column ||
16261 strcmp(ptinfo_beg->token, token)) {
16262 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
16263 beg_pos.lineno, beg_pos.column, token,
16264 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
16265 ptinfo_beg->token);
16268 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
16274 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
16275 if (!p->token_info_enabled)
return;
16276 if (!ptinfo_beg)
return;
16277 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
16278 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
16279 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
16280 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
16281 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
16282 rb_warn3L(ptinfo_end->beg.lineno,
16283 "mismatched indentations at '%s' with '%s' at %d",
16284 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
16288parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
16290 int len = rb_enc_precise_mbclen(ptr, p->lex.pend, p->enc);
16292 compile_error(p,
"invalid multibyte char (%s)", rb_enc_name(p->enc));
16299static void ruby_show_error_line(
VALUE errbuf,
const YYLTYPE *yylloc,
int lineno,
VALUE str);
16305 int lineno = p->ruby_sourceline;
16309 else if (yylloc->beg_pos.lineno == lineno) {
16310 str = p->lex.lastline;
16315 ruby_show_error_line(p->error_buffer, yylloc, lineno, str);
16325 yylloc = RUBY_SET_YYLLOC(current);
16327 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
16328 p->ruby_sourceline != yylloc->end_pos.lineno)) {
16332 compile_error(p,
"%s", msg);
16333 parser_show_error_line(p, yylloc);
16341 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
16345ruby_show_error_line(
VALUE errbuf,
const YYLTYPE *yylloc,
int lineno,
VALUE str)
16348 const int max_line_margin = 30;
16349 const char *ptr, *ptr_end, *pt, *pb;
16350 const char *pre =
"", *post =
"", *pend;
16351 const char *code =
"", *caret =
"";
16353 const char *
const pbeg = RSTRING_PTR(str);
16358 if (!yylloc)
return;
16359 pend = RSTRING_END(str);
16360 if (pend > pbeg && pend[-1] ==
'\n') {
16361 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
16365 if (lineno == yylloc->end_pos.lineno &&
16366 (pend - pbeg) > yylloc->end_pos.column) {
16367 pt = pbeg + yylloc->end_pos.column;
16370 ptr = ptr_end = pt;
16371 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
16372 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
16374 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
16375 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
16377 len = ptr_end - ptr;
16380 ptr = rb_enc_prev_char(pbeg, ptr, pt, rb_enc_get(str));
16381 if (ptr > pbeg) pre =
"...";
16383 if (ptr_end < pend) {
16384 ptr_end = rb_enc_prev_char(pt, ptr_end, pend, rb_enc_get(str));
16385 if (ptr_end < pend) post =
"...";
16389 if (lineno == yylloc->beg_pos.lineno) {
16390 pb += yylloc->beg_pos.column;
16391 if (pb > pt) pb = pt;
16393 if (pb < ptr) pb = ptr;
16394 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
16397 if (
RTEST(errbuf)) {
16399 if (RSTRING_LEN(mesg) > 0 && *(RSTRING_END(mesg)-1) !=
'\n')
16403 mesg = rb_enc_str_new(0, 0, rb_enc_get(str));
16405 if (!errbuf && rb_stderr_tty_p()) {
16406#define CSI_BEGIN "\033["
16409 CSI_BEGIN
""CSI_SGR
"%s"
16410 CSI_BEGIN
"1"CSI_SGR
"%.*s"
16411 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
16412 CSI_BEGIN
";1"CSI_SGR
"%.*s"
16413 CSI_BEGIN
""CSI_SGR
"%s"
16416 (
int)(pb - ptr), ptr,
16417 (
int)(pt - pb), pb,
16418 (
int)(ptr_end - pt), pt,
16424 len = ptr_end - ptr;
16425 lim = pt < pend ? pt : pend;
16426 i = (int)(lim - ptr);
16432 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
16438 memset(p2,
'~', (lim - ptr));
16443 pre, (
int)len, code, post,
16446 if (!errbuf) rb_write_error_str(mesg);
16452 const char *pcur = 0, *ptok = 0;
16453 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
16454 p->ruby_sourceline == yylloc->end_pos.lineno) {
16455 pcur = p->lex.pcur;
16456 ptok = p->lex.ptok;
16457 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
16458 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
16460 parser_yyerror0(p, msg);
16462 p->lex.ptok = ptok;
16463 p->lex.pcur = pcur;
16471 dispatch1(parse_error, STR_NEW2(msg));
16484vtable_size(
const struct vtable *tbl)
16486 if (!DVARS_TERMINAL_P(tbl)) {
16505 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
16510#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
16513vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
16518 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
16521 if (!DVARS_TERMINAL_P(tbl)) {
16523 ruby_sized_xfree(tbl->tbl, tbl->capa *
sizeof(
ID));
16525 ruby_sized_xfree(tbl,
sizeof(*tbl));
16528#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
16531vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
16536 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
16540 if (DVARS_TERMINAL_P(tbl)) {
16541 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
16544 if (tbl->pos == tbl->capa) {
16545 tbl->capa = tbl->capa * 2;
16546 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
16548 tbl->tbl[tbl->pos++] = id;
16550#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
16554vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
16555 struct vtable *tbl,
int n)
16558 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
16559 line, name, (
void *)tbl, n);
16561 if (tbl->pos < n) {
16562 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
16567#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
16571vtable_included(
const struct vtable * tbl,
ID id)
16575 if (!DVARS_TERMINAL_P(tbl)) {
16576 for (i = 0; i < tbl->pos; i++) {
16577 if (tbl->tbl[i] ==
id) {
16591debug_lines(
VALUE fname)
16594 CONST_ID(script_lines,
"SCRIPT_LINES__");
16597 if (RB_TYPE_P(hash,
T_HASH)) {
16598 VALUE lines = rb_ary_new();
16599 rb_hash_aset(hash, fname, lines);
16609 return strcmp(p->ruby_sourcefile,
"-e") == 0;
16613yycompile0(
VALUE arg)
16620 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string)) {
16621 p->debug_lines = debug_lines(p->ruby_sourcefile_string);
16622 if (p->debug_lines && p->ruby_sourceline > 0) {
16624 n = p->ruby_sourceline;
16626 rb_ary_push(p->debug_lines, str);
16630 if (!e_option_supplied(p)) {
16635 if (p->keep_script_lines || ruby_vm_keep_script_lines) {
16636 if (!p->debug_lines) {
16637 p->debug_lines = rb_ary_new();
16640 RB_OBJ_WRITE(p->ast, &p->ast->body.script_lines, p->debug_lines);
16644#define RUBY_DTRACE_PARSE_HOOK(name) \
16645 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
16646 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
16648 RUBY_DTRACE_PARSE_HOOK(BEGIN);
16650 RUBY_DTRACE_PARSE_HOOK(END);
16651 p->debug_lines = 0;
16653 p->lex.strterm = 0;
16654 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
16655 if (n || p->error_p) {
16656 VALUE mesg = p->error_buffer;
16660 if (!p->error_tolerant) {
16665 tree = p->eval_tree;
16667 tree = NEW_NIL(&NULL_LOC);
16670 VALUE opt = p->compile_option;
16671 VALUE tokens = p->tokens;
16673 NODE *body = parser_append_options(p, tree->nd_body);
16674 if (!opt) opt =
rb_obj_hide(rb_ident_hash_new());
16675 rb_hash_aset(opt, rb_sym_intern_ascii_cstr(
"coverage_enabled"), cov);
16676 prelude = block_append(p, p->eval_tree_begin, body);
16677 tree->nd_body = prelude;
16678 RB_OBJ_WRITE(p->ast, &p->ast->body.compile_option, opt);
16679 if (p->keep_tokens) {
16681 rb_ast_set_tokens(p->ast, tokens);
16684 p->ast->body.root = tree;
16685 if (!p->ast->body.script_lines) p->ast->body.script_lines =
INT2FIX(p->line_count);
16693 if (
NIL_P(fname)) {
16694 p->ruby_sourcefile_string =
Qnil;
16695 p->ruby_sourcefile =
"(none)";
16698 p->ruby_sourcefile_string = rb_fstring(fname);
16701 p->ruby_sourceline = line - 1;
16705 p->ast = ast = rb_ast_new();
16706 rb_suppress_tracing(yycompile0, (
VALUE)p);
16719must_be_ascii_compatible(
VALUE s)
16722 if (!rb_enc_asciicompat(enc)) {
16731 char *beg, *end, *start;
16734 beg = RSTRING_PTR(s);
16735 len = RSTRING_LEN(s);
16737 if (p->lex.gets_.ptr) {
16738 if (len == p->lex.gets_.ptr)
return Qnil;
16739 beg += p->lex.gets_.ptr;
16740 len -= p->lex.gets_.ptr;
16742 end = memchr(beg,
'\n', len);
16743 if (end) len = ++end - beg;
16744 p->lex.gets_.ptr += len;
16751 VALUE line = (*p->lex.gets)(p, p->lex.input);
16752 if (
NIL_P(line))
return line;
16753 must_be_ascii_compatible(line);
16754 if (RB_OBJ_FROZEN(line)) line =
rb_str_dup(line);
16769 p->lex.gets = lex_get_str;
16770 p->lex.gets_.ptr = 0;
16772 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
16774 return yycompile(vparser, p, fname, line);
16778rb_parser_compile_string(
VALUE vparser,
const char *f,
VALUE s,
int line)
16784rb_parser_compile_string_path(
VALUE vparser,
VALUE f,
VALUE s,
int line)
16786 must_be_ascii_compatible(s);
16787 return parser_compile_string(vparser, f, s, line);
16795 return rb_io_gets_internal(io);
16799rb_parser_compile_file_path(
VALUE vparser,
VALUE fname,
VALUE file,
int start)
16805 p->lex.gets = lex_io_gets;
16806 p->lex.input = file;
16807 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
16809 return yycompile(vparser, p, fname, start);
16815 return (*p->lex.gets_.call)(input, p->line_count);
16825 p->lex.gets = lex_generic_gets;
16826 p->lex.gets_.call = lex_gets;
16827 p->lex.input = input;
16828 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
16830 return yycompile(vparser, p, fname, start);
16834#define STR_FUNC_ESCAPE 0x01
16835#define STR_FUNC_EXPAND 0x02
16836#define STR_FUNC_REGEXP 0x04
16837#define STR_FUNC_QWORDS 0x08
16838#define STR_FUNC_SYMBOL 0x10
16839#define STR_FUNC_INDENT 0x20
16840#define STR_FUNC_LABEL 0x40
16841#define STR_FUNC_LIST 0x4000
16842#define STR_FUNC_TERM 0x8000
16845 str_label = STR_FUNC_LABEL,
16847 str_dquote = (STR_FUNC_EXPAND),
16848 str_xquote = (STR_FUNC_EXPAND),
16849 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
16850 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
16851 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
16852 str_ssym = (STR_FUNC_SYMBOL),
16853 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
16861 str = rb_enc_str_new(ptr, len, enc);
16862 if (!(func & STR_FUNC_REGEXP) && rb_enc_asciicompat(enc)) {
16863 if (is_ascii_string(str)) {
16865 else if (rb_is_usascii_enc(enc0) && enc != rb_utf8_encoding()) {
16866 rb_enc_associate(str, rb_ascii8bit_encoding());
16873#define peek(p,c) peek_n(p, (c), 0)
16874#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
16875#define peekc(p) peekc_n(p, 0)
16876#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
16879add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end,
int line)
16882 debug_token_line(p,
"add_delayed_token", line);
16886 if (!has_delayed_token(p)) {
16888 rb_enc_associate(p->delayed.token, p->enc);
16889 p->delayed.beg_line = p->ruby_sourceline;
16890 p->delayed.beg_col =
rb_long2int(tok - p->lex.pbeg);
16893 p->delayed.end_line = p->ruby_sourceline;
16894 p->delayed.end_col =
rb_long2int(end - p->lex.pbeg);
16902 VALUE v = p->lex.nextline;
16903 p->lex.nextline = 0;
16908 if (p->lex.pend > p->lex.pbeg && *(p->lex.pend-1) !=
'\n') {
16912 if (!p->lex.input ||
NIL_P(v = lex_getline(p))) {
16919 if (p->debug_lines) {
16920 if (set_encoding) rb_enc_associate(v, p->enc);
16921 rb_ary_push(p->debug_lines, v);
16924 p->cr_seen = FALSE;
16926 else if (
NIL_P(v)) {
16930 add_delayed_token(p, p->lex.ptok, p->lex.pend, __LINE__);
16931 if (p->heredoc_end > 0) {
16932 p->ruby_sourceline = p->heredoc_end;
16933 p->heredoc_end = 0;
16935 p->ruby_sourceline++;
16936 p->lex.pbeg = p->lex.pcur = RSTRING_PTR(v);
16937 p->lex.pend = p->lex.pcur + RSTRING_LEN(v);
16939 p->lex.lastline = v;
16946 if (peek(p,
'\n')) {
16958 if (UNLIKELY((p->lex.pcur == p->lex.pend) || p->eofp ||
RTEST(p->lex.nextline))) {
16959 if (nextline(p, set_encoding))
return -1;
16961 c = (
unsigned char)*p->lex.pcur++;
16962 if (UNLIKELY(c ==
'\r')) {
16963 c = parser_cr(p, c);
16968#define nextc(p) nextc0(p, TRUE)
16973 if (c == -1)
return;
16975 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
16980#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
16982#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
16983#define tok(p) (p)->tokenbuf
16984#define toklen(p) (p)->tokidx
16989 const char *ptr = p->lex.pcur;
16990 while (ptr < p->lex.pend) {
16991 int c = (
unsigned char)*ptr++;
16992 int eol = (c ==
'\n' || c ==
'#');
17004 p->tokline = p->ruby_sourceline;
17005 if (!p->tokenbuf) {
17007 p->tokenbuf =
ALLOC_N(
char, 60);
17009 if (p->toksiz > 4096) {
17013 return p->tokenbuf;
17021 if (p->tokidx >= p->toksiz) {
17022 do {p->toksiz *= 2;}
while (p->toksiz < p->tokidx);
17023 REALLOC_N(p->tokenbuf,
char, p->toksiz);
17025 return &p->tokenbuf[p->tokidx-n];
17031 p->tokenbuf[p->tokidx++] = (char)c;
17032 if (p->tokidx >= p->toksiz) {
17034 REALLOC_N(p->tokenbuf,
char, p->toksiz);
17043 c =
scan_hex(p->lex.pcur, 2, numlen);
17045 yyerror0(
"invalid hex escape");
17049 p->lex.pcur += *numlen;
17053#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
17056escaped_control_code(
int c)
17082#define WARN_SPACE_CHAR(c, prefix) \
17083 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
17087 int regexp_literal,
int wide)
17090 int codepoint =
scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
17091 p->lex.pcur += numlen;
17092 if (p->lex.strterm == NULL ||
17093 (p->lex.strterm->flags & STRTERM_HEREDOC) ||
17094 (p->lex.strterm->u.literal.u1.func != str_regexp)) {
17095 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
17096 literal_flush(p, p->lex.pcur);
17097 yyerror0(
"invalid Unicode escape");
17098 return wide && numlen > 0;
17100 if (codepoint > 0x10ffff) {
17101 literal_flush(p, p->lex.pcur);
17102 yyerror0(
"invalid Unicode codepoint (too large)");
17105 if ((codepoint & 0xfffff800) == 0xd800) {
17106 literal_flush(p, p->lex.pcur);
17107 yyerror0(
"invalid Unicode codepoint");
17111 if (regexp_literal) {
17112 tokcopy(p, (
int)numlen);
17114 else if (codepoint >= 0x80) {
17116 if (*encp && utf8 != *encp) {
17117 YYLTYPE loc = RUBY_INIT_YYLLOC();
17118 compile_error(p,
"UTF-8 mixed within %s source", rb_enc_name(*encp));
17119 parser_show_error_line(p, &loc);
17123 tokaddmbc(p, codepoint, *encp);
17126 tokadd(p, codepoint);
17134 int term,
int symbol_literal,
int regexp_literal)
17141 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
17143 const int open_brace =
'{', close_brace =
'}';
17145 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
17147 if (peek(p, open_brace)) {
17148 const char *second = NULL;
17149 int c, last = nextc(p);
17150 if (p->lex.pcur >= p->lex.pend)
goto unterminated;
17151 while (
ISSPACE(c = *p->lex.pcur) && ++p->lex.pcur < p->lex.pend);
17152 while (c != close_brace) {
17153 if (c == term)
goto unterminated;
17154 if (second == multiple_codepoints)
17155 second = p->lex.pcur;
17156 if (regexp_literal) tokadd(p, last);
17157 if (!tokadd_codepoint(p, encp, regexp_literal, TRUE)) {
17160 while (
ISSPACE(c = *p->lex.pcur)) {
17161 if (++p->lex.pcur >= p->lex.pend)
goto unterminated;
17164 if (term == -1 && !second)
17165 second = multiple_codepoints;
17168 if (c != close_brace) {
17171 yyerror0(
"unterminated Unicode escape");
17174 if (second && second != multiple_codepoints) {
17175 const char *pcur = p->lex.pcur;
17176 p->lex.pcur = second;
17177 dispatch_scan_event(p, tSTRING_CONTENT);
17179 p->lex.pcur = pcur;
17180 yyerror0(multiple_codepoints);
17184 if (regexp_literal) tokadd(p, close_brace);
17188 if (!tokadd_codepoint(p, encp, regexp_literal, FALSE)) {
17195#define ESCAPE_CONTROL 1
17196#define ESCAPE_META 2
17204 switch (c = nextc(p)) {
17229 case '0':
case '1':
case '2':
case '3':
17230 case '4':
case '5':
case '6':
case '7':
17232 c =
scan_oct(p->lex.pcur, 3, &numlen);
17233 p->lex.pcur += numlen;
17237 c = tok_hex(p, &numlen);
17238 if (numlen == 0)
return 0;
17248 if (flags & ESCAPE_META)
goto eof;
17249 if ((c = nextc(p)) !=
'-') {
17252 if ((c = nextc(p)) ==
'\\') {
17253 switch (peekc(p)) {
17254 case 'u':
case 'U':
17258 return read_escape(p, flags|ESCAPE_META, encp) | 0x80;
17260 else if (c == -1 || !
ISASCII(c))
goto eof;
17262 int c2 = escaped_control_code(c);
17264 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
17265 WARN_SPACE_CHAR(c2,
"\\M-");
17268 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
17271 else if (
ISCNTRL(c))
goto eof;
17272 return ((c & 0xff) | 0x80);
17276 if ((c = nextc(p)) !=
'-') {
17280 if (flags & ESCAPE_CONTROL)
goto eof;
17281 if ((c = nextc(p))==
'\\') {
17282 switch (peekc(p)) {
17283 case 'u':
case 'U':
17287 c = read_escape(p, flags|ESCAPE_CONTROL, encp);
17291 else if (c == -1 || !
ISASCII(c))
goto eof;
17293 int c2 = escaped_control_code(c);
17296 if (flags & ESCAPE_META) {
17297 WARN_SPACE_CHAR(c2,
"\\M-");
17300 WARN_SPACE_CHAR(c2,
"");
17304 if (flags & ESCAPE_META) {
17305 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
17308 WARN_SPACE_CHAR(c2,
"\\C-");
17312 else if (
ISCNTRL(c))
goto eof;
17318 yyerror0(
"Invalid escape character syntax");
17330 int len = rb_enc_codelen(c, enc);
17331 rb_enc_mbcput(c, tokspace(p, len), enc);
17340 switch (c = nextc(p)) {
17344 case '0':
case '1':
case '2':
case '3':
17345 case '4':
case '5':
case '6':
case '7':
17348 if (numlen == 0)
goto eof;
17349 p->lex.pcur += numlen;
17350 tokcopy(p, (
int)numlen + 1);
17356 tok_hex(p, &numlen);
17357 if (numlen == 0)
return -1;
17358 tokcopy(p, (
int)numlen + 2);
17364 yyerror0(
"Invalid escape character syntax");
17384 while (c = nextc(p),
ISALPHA(c)) {
17386 options |= RE_OPTION_ONCE;
17390 if (kc != rb_ascii8bit_encindex()) kcode = c;
17404 YYLTYPE loc = RUBY_INIT_YYLLOC();
17406 compile_error(p,
"unknown regexp option%s - %*s",
17407 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
17408 parser_show_error_line(p, &loc);
17410 return options | RE_OPTION_ENCODING(kcode);
17416 int len = parser_precise_mbclen(p, p->lex.pcur-1);
17417 if (len < 0)
return -1;
17419 p->lex.pcur += --len;
17420 if (len > 0) tokcopy(p, len);
17425simple_re_meta(
int c)
17428 case '$':
case '*':
case '+':
case '.':
17429 case '?':
case '^':
case '|':
17430 case ')':
case ']':
case '}':
case '>':
17438parser_update_heredoc_indent(
struct parser_params *p,
int c)
17440 if (p->heredoc_line_indent == -1) {
17441 if (c ==
'\n') p->heredoc_line_indent = 0;
17445 p->heredoc_line_indent++;
17448 else if (c ==
'\t') {
17449 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
17450 p->heredoc_line_indent = w * TAB_WIDTH;
17453 else if (c !=
'\n') {
17454 if (p->heredoc_indent > p->heredoc_line_indent) {
17455 p->heredoc_indent = p->heredoc_line_indent;
17457 p->heredoc_line_indent = -1;
17466 YYLTYPE loc = RUBY_INIT_YYLLOC();
17467 const char *n1 = rb_enc_name(enc1), *n2 = rb_enc_name(enc2);
17468 compile_error(p,
"%s mixed within %s source", n1, n2);
17469 parser_show_error_line(p, &loc);
17475 const char *pos = p->lex.pcur;
17477 parser_mixed_error(p, enc1, enc2);
17483 int func,
int term,
int paren,
long *nest,
17487 bool erred =
false;
17489 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
17490 int top_of_line = FALSE;
17493#define mixed_error(enc1, enc2) \
17494 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
17495#define mixed_escape(beg, enc1, enc2) \
17496 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
17498 while ((c = nextc(p)) != -1) {
17499 if (p->heredoc_indent > 0) {
17500 parser_update_heredoc_indent(p, c);
17503 if (top_of_line && heredoc_end == p->ruby_sourceline) {
17509 if (paren && c == paren) {
17512 else if (c == term) {
17513 if (!nest || !*nest) {
17519 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && p->lex.pcur < p->lex.pend) {
17520 int c2 = *p->lex.pcur;
17521 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
17526 else if (c ==
'\\') {
17530 if (func & STR_FUNC_QWORDS)
break;
17531 if (func & STR_FUNC_EXPAND) {
17532 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
17543 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
17547 if ((func & STR_FUNC_EXPAND) == 0) {
17551 tokadd_utf8(p, enc, term,
17552 func & STR_FUNC_SYMBOL,
17553 func & STR_FUNC_REGEXP);
17557 if (c == -1)
return -1;
17559 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
17562 if (func & STR_FUNC_REGEXP) {
17568 c = read_escape(p, 0, enc);
17572 snprintf(escbuf,
sizeof(escbuf),
"\\x%02X", c);
17573 for (i = 0; i < 4; i++) {
17574 tokadd(p, escbuf[i]);
17580 if (c == term && !simple_re_meta(c)) {
17585 if ((c = tokadd_escape(p, enc)) < 0)
17587 if (*enc && *enc != *encp) {
17588 mixed_escape(p->lex.ptok+2, *enc, *encp);
17592 else if (func & STR_FUNC_EXPAND) {
17594 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
17595 c = read_escape(p, 0, enc);
17597 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
17600 else if (c != term && !(paren && c == paren)) {
17607 else if (!parser_isascii(p)) {
17612 else if (*enc != *encp) {
17613 mixed_error(*enc, *encp);
17616 if (tokadd_mbchar(p, c) == -1)
return -1;
17619 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
17627 else if (*enc != *encp) {
17628 mixed_error(*enc, *encp);
17634 top_of_line = (c ==
'\n');
17638 if (*enc) *encp = *enc;
17645 return (
rb_strterm_t*)rb_imemo_new(imemo_parser_strterm, v1, v2, v3, v0);
17649#define NEW_STRTERM(func, term, paren) \
17650 new_strterm((VALUE)(func), (VALUE)(paren), (VALUE)(term), 0)
17656 VALUE content = yylval.val;
17657 if (!ripper_is_node_yylval(content))
17658 content = ripper_new_yylval(p, 0, 0, content);
17659 if (has_delayed_token(p)) {
17660 ptrdiff_t len = p->lex.pcur - p->lex.ptok;
17664 dispatch_delayed_token(p, tSTRING_CONTENT);
17665 p->lex.ptok = p->lex.pcur;
17666 RNODE(content)->nd_rval = yylval.val;
17668 dispatch_scan_event(p, tSTRING_CONTENT);
17669 if (yylval.val != content)
17670 RNODE(content)->nd_rval = yylval.val;
17671 yylval.val = content;
17677 if (has_delayed_token(p)) {
17678 ptrdiff_t len = p->lex.pcur - p->lex.ptok;
17681 p->delayed.end_line = p->ruby_sourceline;
17682 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
17684 dispatch_delayed_token(p, tSTRING_CONTENT);
17685 p->lex.ptok = p->lex.pcur;
17687 dispatch_scan_event(p, tSTRING_CONTENT);
17691RUBY_FUNC_EXPORTED
const unsigned int ruby_global_name_punct_bits[(0x7e - 0x20 + 31) / 32];
17695#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
17696#define SPECIAL_PUNCT(idx) ( \
17697 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
17698 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
17699 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
17700 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
17701 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
17703const unsigned int ruby_global_name_punct_bits[] = {
17709#undef SPECIAL_PUNCT
17712static enum yytokentype
17713parser_peek_variable_name(struct parser_params *p)
17716 const char *ptr = p->lex.pcur;
17718 if (ptr + 1 >= p->lex.pend) return 0;
17722 if ((c = *ptr) == '-') {
17723 if (++ptr >= p->lex.pend) return 0;
17726 else if (is_global_name_punct(c) || ISDIGIT(c)) {
17727 return tSTRING_DVAR;
17731 if ((c = *ptr) == '@') {
17732 if (++ptr >= p->lex.pend) return 0;
17738 p->command_start = TRUE;
17739 return tSTRING_DBEG;
17743 if (!ISASCII(c) || c == '_' || ISALPHA(c))
17744 return tSTRING_DVAR;
17748#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
17749#define IS_END() IS_lex_state(EXPR_END_ANY)
17750#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
17751#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
17752#define IS_LABEL_POSSIBLE() (\
17753 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
17755#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
17756#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
17758static inline enum yytokentype
17759parser_string_term(struct parser_params *p, int func)
17761 p->lex.strterm = 0;
17762 if (func & STR_FUNC_REGEXP) {
17763 set_yylval_num(regx_options(p));
17764 dispatch_scan_event(p, tREGEXP_END);
17765 SET_LEX_STATE(EXPR_END);
17766 return tREGEXP_END;
17768 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
17770 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
17773 SET_LEX_STATE(EXPR_END);
17774 return tSTRING_END;
17777static enum yytokentype
17778parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
17780 int func = (int)quote->u1.func;
17781 int term = (int)quote->u3.term;
17782 int paren = (int)quote->u2.paren;
17784 rb_encoding *enc = p->enc;
17785 rb_encoding *base_enc = 0;
17788 if (func & STR_FUNC_TERM) {
17789 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
17790 SET_LEX_STATE(EXPR_END);
17791 p->lex.strterm = 0;
17792 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
17795 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
17796 do {c = nextc(p);} while (ISSPACE(c));
17799 if (func & STR_FUNC_LIST) {
17800 quote->u1.func &= ~STR_FUNC_LIST;
17803 if (c == term && !quote->u0.nest) {
17804 if (func & STR_FUNC_QWORDS) {
17805 quote->u1.func |= STR_FUNC_TERM;
17806 pushback(p, c); /* dispatch the term at tSTRING_END */
17807 add_delayed_token(p, p->lex.ptok, p->lex.pcur, __LINE__);
17810 return parser_string_term(p, func);
17814 add_delayed_token(p, p->lex.ptok, p->lex.pcur, __LINE__);
17818 if ((func & STR_FUNC_EXPAND) && c == '#') {
17819 int t = parser_peek_variable_name(p);
17825 if (tokadd_string(p, func, term, paren, "e->u0.nest,
17826 &enc, &base_enc) == -1) {
17829# define unterminated_literal(mesg) yyerror0(mesg)
17831# define unterminated_literal(mesg) compile_error(p, mesg)
17833 literal_flush(p, p->lex.pcur);
17834 if (func & STR_FUNC_QWORDS) {
17835 /* no content to add, bailing out here */
17836 unterminated_literal("unterminated list meets end of file");
17837 p->lex.strterm = 0;
17838 return tSTRING_END;
17840 if (func & STR_FUNC_REGEXP) {
17841 unterminated_literal("unterminated regexp meets end of file");
17844 unterminated_literal("unterminated string meets end of file");
17846 quote->u1.func |= STR_FUNC_TERM;
17851 lit = STR_NEW3(tok(p), toklen(p), enc, func);
17852 set_yylval_str(lit);
17853 flush_string_content(p, enc);
17855 return tSTRING_CONTENT;
17858static enum yytokentype
17859heredoc_identifier(struct parser_params *p)
17862 * term_len is length of `<<"END"` except `END`,
17863 * in this case term_len is 4 (<, <, " and ").
17865 long len, offset = p->lex.pcur - p->lex.pbeg;
17866 int c = nextc(p), term, func = 0, quote = 0;
17867 enum yytokentype token = tSTRING_BEG;
17872 func = STR_FUNC_INDENT;
17875 else if (c == '~') {
17877 func = STR_FUNC_INDENT;
17883 func |= str_squote; goto quoted;
17885 func |= str_dquote;
goto quoted;
17887 token = tXSTRING_BEG;
17888 func |= str_xquote;
goto quoted;
17895 while ((c = nextc(p)) != term) {
17896 if (c == -1 || c ==
'\r' || c ==
'\n') {
17897 yyerror0(
"unterminated here document identifier");
17904 if (!parser_is_identchar(p)) {
17906 if (func & STR_FUNC_INDENT) {
17907 pushback(p, indent > 0 ?
'~' :
'-');
17911 func |= str_dquote;
17913 int n = parser_precise_mbclen(p, p->lex.pcur-1);
17914 if (n < 0)
return 0;
17915 p->lex.pcur += --n;
17916 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
17921 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
17922 if ((
unsigned long)len >= HERETERM_LENGTH_MAX)
17923 yyerror0(
"too long here document identifier");
17924 dispatch_scan_event(p, tHEREDOC_BEG);
17927 p->lex.strterm = new_strterm(0, 0, 0, p->lex.lastline);
17928 p->lex.strterm->flags |= STRTERM_HEREDOC;
17930 here->offset = offset;
17931 here->sourceline = p->ruby_sourceline;
17932 here->length = (int)len;
17933 here->quote = quote;
17937 p->heredoc_indent = indent;
17938 p->heredoc_line_indent = 0;
17947 p->lex.strterm = 0;
17948 line = here->lastline;
17949 p->lex.lastline = line;
17950 p->lex.pbeg = RSTRING_PTR(line);
17951 p->lex.pend = p->lex.pbeg + RSTRING_LEN(line);
17952 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
17953 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
17954 p->heredoc_end = p->ruby_sourceline;
17955 p->ruby_sourceline = (int)here->sourceline;
17956 if (p->eofp) p->lex.nextline =
Qnil;
17961dedent_string(
VALUE string,
int width)
17968 for (i = 0; i < len && col < width; i++) {
17969 if (str[i] ==
' ') {
17972 else if (str[i] ==
'\t') {
17973 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
17974 if (n > width)
break;
17983 str = RSTRING_PTR(
string);
17984 if (RSTRING_LEN(
string) != len)
17985 rb_fatal(
"literal string changed: %+"PRIsVALUE,
string);
17986 MEMMOVE(str, str + i,
char, len - i);
17995 NODE *node, *str_node, *prev_node;
17996 int indent = p->heredoc_indent;
17997 VALUE prev_lit = 0;
17999 if (indent <= 0)
return root;
18000 p->heredoc_indent = 0;
18001 if (!root)
return root;
18003 prev_node = node = str_node = root;
18004 if (nd_type_p(root, NODE_LIST)) str_node = root->nd_head;
18007 VALUE lit = str_node->nd_lit;
18008 if (str_node->flags & NODE_FL_NEWLINE) {
18009 dedent_string(lit, indent);
18014 else if (!literal_concat0(p, prev_lit, lit)) {
18018 NODE *end = node->nd_end;
18019 node = prev_node->nd_next = node->nd_next;
18021 if (nd_type_p(prev_node, NODE_DSTR))
18022 nd_set_type(prev_node, NODE_STR);
18025 node->nd_end = end;
18030 while ((node = (prev_node = node)->nd_next) != 0) {
18032 if (!nd_type_p(node, NODE_LIST))
break;
18033 if ((str_node = node->nd_head) != 0) {
18034 enum node_type
type = nd_type(str_node);
18035 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
18047 int indent = p->heredoc_indent;
18049 if (indent <= 0)
return array;
18050 p->heredoc_indent = 0;
18051 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
18071 col = dedent_string(input, wid);
18077whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
18079 const char *ptr = p->lex.pbeg;
18083 while (*ptr &&
ISSPACE(*ptr)) ptr++;
18085 n = p->lex.pend - (ptr + len);
18086 if (n < 0)
return FALSE;
18087 if (n > 0 && ptr[len] !=
'\n') {
18088 if (ptr[len] !=
'\r')
return FALSE;
18089 if (n <= 1 || ptr[len+1] !=
'\n')
return FALSE;
18091 return strncmp(eos, ptr, len) == 0;
18095word_match_p(
struct parser_params *p,
const char *word,
long len)
18097 if (strncmp(p->lex.pcur, word, len))
return 0;
18098 if (p->lex.pcur + len == p->lex.pend)
return 1;
18099 int c = (
unsigned char)p->lex.pcur[len];
18102 case '\0':
case '\004':
case '\032':
return 1;
18107#define NUM_SUFFIX_R (1<<0)
18108#define NUM_SUFFIX_I (1<<1)
18109#define NUM_SUFFIX_ALL 3
18115 const char *lastp = p->lex.pcur;
18117 while ((c = nextc(p)) != -1) {
18118 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
18119 result |= (mask & NUM_SUFFIX_I);
18120 mask &= ~NUM_SUFFIX_I;
18122 mask &= ~NUM_SUFFIX_R;
18125 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
18126 result |= (mask & NUM_SUFFIX_R);
18127 mask &= ~NUM_SUFFIX_R;
18131 p->lex.pcur = lastp;
18132 literal_flush(p, p->lex.pcur);
18141static enum yytokentype
18143 enum yytokentype
type,
int suffix)
18145 if (suffix & NUM_SUFFIX_I) {
18146 v = rb_complex_raw(
INT2FIX(0), v);
18149 set_yylval_literal(v);
18150 SET_LEX_STATE(EXPR_END);
18154static enum yytokentype
18157 enum yytokentype
type = tINTEGER;
18158 if (suffix & NUM_SUFFIX_R) {
18162 return set_number_literal(p, v,
type, suffix);
18170 if (has_delayed_token(p))
18171 dispatch_delayed_token(p, tSTRING_CONTENT);
18172 str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
18173 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
18174 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
18180#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
18182parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
18184 if (has_delayed_token(p))
18185 dispatch_delayed_token(p, tSTRING_CONTENT);
18187 if (p->keep_tokens) {
18188 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
18189 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
18190 parser_append_tokens(p, str, tHEREDOC_END, line);
18193 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
18199static enum yytokentype
18202 int c, func, indent = 0;
18203 const char *eos, *ptr, *ptr_end;
18210 eos = RSTRING_PTR(here->lastline) + here->offset;
18211 len = here->length;
18212 indent = (func = here->func) & STR_FUNC_INDENT;
18214 if ((c = nextc(p)) == -1) {
18217 if (!has_delayed_token(p)) {
18218 dispatch_scan_event(p, tSTRING_CONTENT);
18221 if ((len = p->lex.pcur - p->lex.ptok) > 0) {
18222 if (!(func & STR_FUNC_REGEXP) && rb_enc_asciicompat(enc)) {
18226 rb_is_usascii_enc(p->enc) &&
18227 enc != rb_utf8_encoding()) {
18228 enc = rb_ascii8bit_encoding();
18233 dispatch_delayed_token(p, tSTRING_CONTENT);
18237 heredoc_restore(p, &p->lex.strterm->u.heredoc);
18238 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
18241 p->lex.strterm = 0;
18242 SET_LEX_STATE(EXPR_END);
18243 return tSTRING_END;
18249 else if (p->heredoc_line_indent == -1) {
18254 p->heredoc_line_indent = 0;
18256 else if (whole_match_p(p, eos, len, indent)) {
18257 dispatch_heredoc_end(p);
18259 heredoc_restore(p, &p->lex.strterm->u.heredoc);
18261 p->lex.strterm = 0;
18262 SET_LEX_STATE(EXPR_END);
18263 return tSTRING_END;
18266 if (!(func & STR_FUNC_EXPAND)) {
18268 ptr = RSTRING_PTR(p->lex.lastline);
18269 ptr_end = p->lex.pend;
18270 if (ptr_end > ptr) {
18271 switch (ptr_end[-1]) {
18273 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
18282 if (p->heredoc_indent > 0) {
18284 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
18286 p->heredoc_line_indent = 0;
18292 str = STR_NEW(ptr, ptr_end - ptr);
18293 if (ptr_end < p->lex.pend)
rb_str_cat(str,
"\n", 1);
18295 if (p->heredoc_indent > 0) {
18298 if (nextc(p) == -1) {
18304 }
while (!whole_match_p(p, eos, len, indent));
18310 int t = parser_peek_variable_name(p);
18311 if (p->heredoc_line_indent != -1) {
18312 if (p->heredoc_indent > p->heredoc_line_indent) {
18313 p->heredoc_indent = p->heredoc_line_indent;
18315 p->heredoc_line_indent = -1;
18324 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
18325 if (p->eofp)
goto error;
18329 if (c ==
'\\') p->heredoc_line_indent = -1;
18331 str = STR_NEW3(tok(p), toklen(p), enc, func);
18333 set_yylval_str(str);
18335 if (bol) yylval.node->flags |= NODE_FL_NEWLINE;
18337 flush_string_content(p, enc);
18338 return tSTRING_CONTENT;
18340 tokadd(p, nextc(p));
18341 if (p->heredoc_indent > 0) {
18346 if ((c = nextc(p)) == -1)
goto error;
18347 }
while (!whole_match_p(p, eos, len, indent));
18348 str = STR_NEW3(tok(p), toklen(p), enc, func);
18350 dispatch_heredoc_end(p);
18352 str = ripper_new_yylval(p, ripper_token2eventid(tSTRING_CONTENT),
18355 heredoc_restore(p, &p->lex.strterm->u.heredoc);
18357 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
18358 set_yylval_str(str);
18360 if (bol) yylval.node->flags |= NODE_FL_NEWLINE;
18362 return tSTRING_CONTENT;
18372 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `%c' operator", WARN_I(c));
18375 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator", WARN_I(c));
18390 ID id = get_id(lhs);
18392 switch (id_type(
id)) {
18396# define ERR(mesg) yyerror0(mesg)
18398# define ERR(mesg) (dispatch2(param_error, WARN_S(mesg), lhs), ripper_error(p))
18401 ERR(
"formal argument cannot be a constant");
18404 ERR(
"formal argument cannot be an instance variable");
18407 ERR(
"formal argument cannot be a global variable");
18410 ERR(
"formal argument cannot be a class variable");
18413 ERR(
"formal argument must be local variable");
18417 shadowing_lvar(p,
id);
18424 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
18429parser_encode_length(
struct parser_params *p,
const char *name,
long len)
18433 if (len > 5 && name[nlen = len - 5] ==
'-') {
18434 if (
rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
18437 if (len > 4 && name[nlen = len - 4] ==
'-') {
18440 if (
rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
18441 !(len == 8 &&
rb_memcicmp(name,
"utf8-mac", len) == 0))
18449parser_set_encode(
struct parser_params *p,
const char *name)
18451 int idx = rb_enc_find_index(name);
18456 excargs[1] =
rb_sprintf(
"unknown encoding name: %s", name);
18460 rb_ary_unshift(excargs[2],
rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
18463 enc = rb_enc_from_index(idx);
18464 if (!rb_enc_asciicompat(enc)) {
18465 excargs[1] =
rb_sprintf(
"%s is not ASCII compatible", rb_enc_name(enc));
18470 if (p->debug_lines) {
18471 VALUE lines = p->debug_lines;
18473 for (i = 0; i < n; ++i) {
18474 rb_enc_associate_index(
RARRAY_AREF(lines, i), idx);
18483 const char *ptr = p->lex.pbeg, *ptr_end = p->lex.pcur - 1;
18484 if (p->line_count != (p->has_shebang ? 2 : 1)) return 0;
18485 while (ptr < ptr_end) {
18486 if (!
ISSPACE(*ptr))
return 0;
18492typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
18493typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
18495static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
18498magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
18500 if (!comment_at_top(p)) {
18503 parser_set_encode(p, val);
18507parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
18510 case 't':
case 'T':
18515 case 'f':
case 'F':
18521 return parser_invalid_pragma_value(p, name, val);
18525parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
18527 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
18532parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
18534 int b = parser_get_bool(p, name, val);
18535 if (b >= 0) p->token_info_enabled = b;
18539parser_set_compile_option_flag(
struct parser_params *p,
const char *name,
const char *val)
18543 if (p->token_seen) {
18544 rb_warning1(
"`%s' is ignored after any tokens", WARN_S(name));
18548 b = parser_get_bool(p, name, val);
18551 if (!p->compile_option)
18552 p->compile_option =
rb_obj_hide(rb_ident_hash_new());
18553 rb_hash_aset(p->compile_option,
ID2SYM(rb_intern(name)),
18558parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
18560 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
18561 if (*s ==
' ' || *s ==
'\t')
continue;
18562 if (*s ==
'#')
break;
18563 rb_warning1(
"`%s' is ignored unless in comment-only line", WARN_S(name));
18568 case 'n':
case 'N':
18570 p->ctxt.shareable_constant_value = shareable_none;
18574 case 'l':
case 'L':
18576 p->ctxt.shareable_constant_value = shareable_literal;
18580 case 'e':
case 'E':
18581 if (
STRCASECMP(val,
"experimental_copy") == 0) {
18582 p->ctxt.shareable_constant_value = shareable_copy;
18585 if (
STRCASECMP(val,
"experimental_everything") == 0) {
18586 p->ctxt.shareable_constant_value = shareable_everything;
18591 parser_invalid_pragma_value(p, name, val);
18594# if WARN_PAST_SCOPE
18596parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
18598 int b = parser_get_bool(p, name, val);
18599 if (b >= 0) p->past_scope_enabled = b;
18605 rb_magic_comment_setter_t func;
18606 rb_magic_comment_length_t length;
18610 {
"coding", magic_comment_encoding, parser_encode_length},
18611 {
"encoding", magic_comment_encoding, parser_encode_length},
18612 {
"frozen_string_literal", parser_set_compile_option_flag},
18613 {
"shareable_constant_value", parser_set_shareable_constant_value},
18614 {
"warn_indent", parser_set_token_info},
18615# if WARN_PAST_SCOPE
18616 {
"warn_past_scope", parser_set_past_scope},
18621magic_comment_marker(
const char *str,
long len)
18628 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
18629 return str + i + 1;
18634 if (i + 1 >= len)
return 0;
18635 if (str[i+1] !=
'-') {
18638 else if (str[i-1] !=
'-') {
18642 return str + i + 2;
18654parser_magic_comment(
struct parser_params *p,
const char *str,
long len)
18657 VALUE name = 0, val = 0;
18658 const char *beg, *end, *vbeg, *vend;
18659#define str_copy(_s, _p, _n) ((_s) \
18660 ? (void)(rb_str_resize((_s), (_n)), \
18661 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
18662 : (void)((_s) = STR_NEW((_p), (_n))))
18664 if (len <= 7)
return FALSE;
18665 if (!!(beg = magic_comment_marker(str, len))) {
18666 if (!(end = magic_comment_marker(beg, str + len - beg)))
18670 len = end - beg - 3;
18680 for (; len > 0 && *str; str++, --len) {
18682 case '\'':
case '"':
case ':':
case ';':
18687 for (beg = str; len > 0; str++, --len) {
18689 case '\'':
case '"':
case ':':
case ';':
18697 for (end = str; len > 0 &&
ISSPACE(*str); str++, --len);
18700 if (!indicator)
return FALSE;
18704 do str++;
while (--len > 0 &&
ISSPACE(*str));
18707 for (vbeg = ++str; --len > 0 && *str !=
'"'; str++) {
18708 if (*str ==
'\\') {
18720 for (vbeg = str; len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --len, str++);
18724 while (len > 0 && (*str ==
';' ||
ISSPACE(*str))) --len, str++;
18727 while (len > 0 && (
ISSPACE(*str))) --len, str++;
18728 if (len)
return FALSE;
18732 str_copy(name, beg, n);
18733 s = RSTRING_PTR(name);
18734 for (i = 0; i < n; ++i) {
18735 if (s[i] ==
'-') s[i] =
'_';
18738 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
18741 n = (*mc->length)(p, vbeg, n);
18743 str_copy(val, vbeg, n);
18744 (*mc->func)(p, mc->name, RSTRING_PTR(val));
18747 }
while (++mc < magic_comments + numberof(magic_comments));
18749 str_copy(val, vbeg, vend - vbeg);
18758set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
18761 const char *beg = str;
18765 if (send - str <= 6)
return;
18767 case 'C':
case 'c': str += 6;
continue;
18768 case 'O':
case 'o': str += 5;
continue;
18769 case 'D':
case 'd': str += 4;
continue;
18770 case 'I':
case 'i': str += 3;
continue;
18771 case 'N':
case 'n': str += 2;
continue;
18772 case 'G':
case 'g': str += 1;
continue;
18773 case '=':
case ':':
18787 if (++str >= send)
return;
18790 if (*str !=
'=' && *str !=
':')
return;
18795 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
18796 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
18797 parser_set_encode(p, RSTRING_PTR(s));
18804 int c = nextc0(p, FALSE);
18808 if (peek(p,
'!')) p->has_shebang = 1;
18811 if (p->lex.pend - p->lex.pcur >= 2 &&
18812 (
unsigned char)p->lex.pcur[0] == 0xbb &&
18813 (
unsigned char)p->lex.pcur[1] == 0xbf) {
18814 p->enc = rb_utf8_encoding();
18817 if (p->debug_lines) {
18818 rb_enc_associate(p->lex.lastline, p->enc);
18821 p->lex.pbeg = p->lex.pcur;
18829 p->enc = rb_enc_get(p->lex.lastline);
18833#define ambiguous_operator(tok, op, syn) ( \
18834 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
18835 rb_warning0("even though it seems like "syn""))
18837#define ambiguous_operator(tok, op, syn) \
18838 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
18840#define warn_balanced(tok, op, syn) ((void) \
18841 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
18842 space_seen && !ISSPACE(c) && \
18843 (ambiguous_operator(tok, op, syn), 0)), \
18844 (enum yytokentype)(tok))
18847parse_rational(
struct parser_params *p,
char *str,
int len,
int seen_point)
18850 char *point = &str[seen_point];
18851 size_t fraclen = len-seen_point-1;
18852 memmove(point, point+1, fraclen+1);
18853 v = rb_cstr_to_inum(str, 10, FALSE);
18857static enum yytokentype
18860 yyerror0(
"numeric literal without digits");
18861 if (peek(p,
'_')) nextc(p);
18863 return set_integer_literal(p,
INT2FIX(0), 0);
18866static enum yytokentype
18869 int is_float, seen_point, seen_e, nondigit;
18872 is_float = seen_point = seen_e = nondigit = 0;
18873 SET_LEX_STATE(EXPR_END);
18875 if (c ==
'-' || c ==
'+') {
18880 int start = toklen(p);
18882 if (c ==
'x' || c ==
'X') {
18888 if (nondigit)
break;
18895 }
while ((c = nextc(p)) != -1);
18899 if (toklen(p) == start) {
18900 return no_digits(p);
18902 else if (nondigit)
goto trailing_uc;
18903 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
18904 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 16, FALSE), suffix);
18906 if (c ==
'b' || c ==
'B') {
18909 if (c ==
'0' || c ==
'1') {
18912 if (nondigit)
break;
18916 if (c !=
'0' && c !=
'1')
break;
18919 }
while ((c = nextc(p)) != -1);
18923 if (toklen(p) == start) {
18924 return no_digits(p);
18926 else if (nondigit)
goto trailing_uc;
18927 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
18928 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 2, FALSE), suffix);
18930 if (c ==
'd' || c ==
'D') {
18936 if (nondigit)
break;
18943 }
while ((c = nextc(p)) != -1);
18947 if (toklen(p) == start) {
18948 return no_digits(p);
18950 else if (nondigit)
goto trailing_uc;
18951 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
18952 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 10, FALSE), suffix);
18958 if (c ==
'o' || c ==
'O') {
18961 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
18962 return no_digits(p);
18965 if (c >=
'0' && c <=
'7') {
18970 if (nondigit)
break;
18974 if (c <
'0' || c >
'9')
break;
18975 if (c >
'7')
goto invalid_octal;
18978 }
while ((c = nextc(p)) != -1);
18979 if (toklen(p) > start) {
18982 if (nondigit)
goto trailing_uc;
18983 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
18984 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 8, FALSE), suffix);
18991 if (c >
'7' && c <=
'9') {
18993 yyerror0(
"Invalid octal digit");
18995 else if (c ==
'.' || c ==
'e' || c ==
'E') {
19000 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19001 return set_integer_literal(p,
INT2FIX(0), suffix);
19007 case '0':
case '1':
case '2':
case '3':
case '4':
19008 case '5':
case '6':
case '7':
case '8':
case '9':
19014 if (nondigit)
goto trailing_uc;
19015 if (seen_point || seen_e) {
19020 if (c0 == -1 || !
ISDIGIT(c0)) {
19026 seen_point = toklen(p);
19045 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
19050 tokadd(p, nondigit);
19054 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
19058 if (nondigit)
goto decode_num;
19072 literal_flush(p, p->lex.pcur - 1);
19073 YYLTYPE loc = RUBY_INIT_YYLLOC();
19074 compile_error(p,
"trailing `%c' in number", nondigit);
19075 parser_show_error_line(p, &loc);
19079 enum yytokentype
type = tFLOAT;
19082 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
19083 if (suffix & NUM_SUFFIX_R) {
19085 v = parse_rational(p, tok(p), toklen(p), seen_point);
19088 double d =
strtod(tok(p), 0);
19089 if (errno == ERANGE) {
19090 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
19095 return set_number_literal(p, v,
type, suffix);
19097 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19098 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 10, FALSE), suffix);
19101static enum yytokentype
19109 SET_LEX_STATE(EXPR_VALUE);
19114 compile_error(p,
"incomplete character syntax");
19117 if (rb_enc_isspace(c, p->enc)) {
19119 int c2 = escaped_control_code(c);
19121 WARN_SPACE_CHAR(c2,
"?");
19126 SET_LEX_STATE(EXPR_VALUE);
19131 if (!parser_isascii(p)) {
19132 if (tokadd_mbchar(p, c) == -1)
return 0;
19134 else if ((rb_enc_isalnum(c, p->enc) || c ==
'_') &&
19135 p->lex.pcur < p->lex.pend && is_identchar(p->lex.pcur, p->lex.pend, p->enc)) {
19137 const char *start = p->lex.pcur - 1, *ptr = start;
19139 int n = parser_precise_mbclen(p, ptr);
19140 if (n < 0)
return -1;
19142 }
while (ptr < p->lex.pend && is_identchar(ptr, p->lex.pend, p->enc));
19143 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
19144 " a conditional operator, put a space after `?'",
19145 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
19149 else if (c ==
'\\') {
19150 if (peek(p,
'u')) {
19152 enc = rb_utf8_encoding();
19153 tokadd_utf8(p, &enc, -1, 0, 0);
19155 else if (!lex_eol_p(p) && !(c = *p->lex.pcur,
ISASCII(c))) {
19157 if (tokadd_mbchar(p, c) == -1)
return 0;
19160 c = read_escape(p, 0, &enc);
19168 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
19169 set_yylval_str(lit);
19170 SET_LEX_STATE(EXPR_END);
19174static enum yytokentype
19175parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
19178 const char *ptok = p->lex.pcur;
19186 if (c == -1)
goto unterminated;
19189 if (!
ISASCII(c))
goto unknown;
19194 if (rb_enc_isalnum(term, p->enc) || !parser_isascii(p)) {
19197 c = parser_precise_mbclen(p, p->lex.pcur);
19198 if (c < 0)
return 0;
19200 yyerror0(
"unknown type of %string");
19206 compile_error(p,
"unterminated quoted string meets end of file");
19210 if (term ==
'(') term =
')';
19211 else if (term ==
'[') term =
']';
19212 else if (term ==
'{') term =
'}';
19213 else if (term ==
'<') term =
'>';
19216 p->lex.ptok = ptok-1;
19219 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
19220 return tSTRING_BEG;
19223 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
19224 return tSTRING_BEG;
19227 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
19231 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
19232 return tQWORDS_BEG;
19235 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
19236 return tSYMBOLS_BEG;
19239 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
19240 return tQSYMBOLS_BEG;
19243 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
19244 return tXSTRING_BEG;
19247 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
19248 return tREGEXP_BEG;
19251 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
19252 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
19256 yyerror0(
"unknown type of %string");
19260 if ((c = nextc(p)) ==
'=') {
19261 set_yylval_id(
'%');
19262 SET_LEX_STATE(EXPR_BEG);
19265 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
19268 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
19270 return warn_balanced(
'%',
"%%",
"string literal");
19277 if (tokadd_mbchar(p, c) == -1)
return -1;
19279 }
while (parser_is_identchar(p));
19285tokenize_ident(
struct parser_params *p,
const enum lex_state_e last_state)
19287 ID ident = TOK_INTERN();
19289 set_yylval_name(ident);
19299 unsigned long n =
ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &len, &overflow);
19300 const unsigned long nth_ref_max =
19301 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
19305 if (overflow || n > nth_ref_max) {
19307 rb_warn1(
"`%s' is too big for a number variable, always nil", WARN_S(tok(p)));
19315static enum yytokentype
19316parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
19318 const char *ptr = p->lex.pcur;
19321 SET_LEX_STATE(EXPR_END);
19322 p->lex.ptok = ptr - 1;
19328 if (parser_is_identchar(p)) {
19360 if (parser_is_identchar(p)) {
19361 if (tokadd_mbchar(p, c) == -1)
return 0;
19369 set_yylval_name(TOK_INTERN());
19376 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
19381 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
19384 case '1':
case '2':
case '3':
19385 case '4':
case '5':
case '6':
19386 case '7':
case '8':
case '9':
19391 }
while (c != -1 &&
ISDIGIT(c));
19393 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
19395 c = parse_numvar(p);
19396 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
19400 if (!parser_is_identchar(p)) {
19401 YYLTYPE loc = RUBY_INIT_YYLLOC();
19403 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
19407 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
19409 parser_show_error_line(p, &loc);
19410 set_yylval_noname();
19418 if (tokadd_ident(p, c))
return 0;
19419 SET_LEX_STATE(EXPR_END);
19420 tokenize_ident(p, last_state);
19428 if (n < 0)
return false;
19430 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
19433 if (p->max_numparam == ORDINAL_PARAM) {
19434 compile_error(p,
"ordinary parameter is defined");
19437 struct vtable *args = p->lvtbl->args;
19438 if (p->max_numparam < n) {
19439 p->max_numparam = n;
19441 while (n > args->pos) {
19442 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
19448static enum yytokentype
19449parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
19451 const char *ptr = p->lex.pcur;
19452 enum yytokentype result = tIVAR;
19453 register int c = nextc(p);
19456 p->lex.ptok = ptr - 1;
19464 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
19465 if (c == -1 || !parser_is_identchar(p)) {
19467 RUBY_SET_YYLLOC(loc);
19468 if (result == tIVAR) {
19469 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
19472 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
19474 parser_show_error_line(p, &loc);
19475 set_yylval_noname();
19476 SET_LEX_STATE(EXPR_END);
19481 RUBY_SET_YYLLOC(loc);
19482 if (result == tIVAR) {
19483 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
19486 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
19488 parser_show_error_line(p, &loc);
19489 set_yylval_noname();
19490 SET_LEX_STATE(EXPR_END);
19494 if (tokadd_ident(p, c))
return 0;
19495 tokenize_ident(p, last_state);
19499static enum yytokentype
19502 enum yytokentype result;
19504 const enum lex_state_e last_state = p->lex.state;
19506 int enforce_keyword_end = 0;
19510 if (tokadd_mbchar(p, c) == -1)
return 0;
19512 }
while (parser_is_identchar(p));
19513 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
19517 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
19518 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
19519 result = tIDENTIFIER;
19523 result = tCONSTANT;
19528 if (IS_LABEL_POSSIBLE()) {
19529 if (IS_LABEL_SUFFIX(0)) {
19530 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
19532 set_yylval_name(TOK_INTERN());
19538 if (!
NIL_P(peek_end_expect_token_locations(p))) {
19540 int lineno, column;
19541 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
19543 end_loc = peek_end_expect_token_locations(p);
19544 lineno =
NUM2INT(rb_ary_entry(end_loc, 0));
19545 column =
NUM2INT(rb_ary_entry(end_loc, 1));
19548 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
19549 p->ruby_sourceline, beg_pos, lineno, column);
19552 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
19555 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
19556 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
19557 enforce_keyword_end = 1;
19567 kw = rb_reserved_word(tok(p), toklen(p));
19569 enum lex_state_e state = p->lex.state;
19570 if (IS_lex_state_for(state, EXPR_FNAME)) {
19571 SET_LEX_STATE(EXPR_ENDFN);
19572 set_yylval_name(
rb_intern2(tok(p), toklen(p)));
19575 SET_LEX_STATE(kw->state);
19576 if (IS_lex_state(EXPR_BEG)) {
19577 p->command_start = TRUE;
19579 if (kw->id[0] == keyword_do) {
19580 if (lambda_beginning_p()) {
19581 p->lex.lpar_beg = -1;
19582 return keyword_do_LAMBDA;
19584 if (COND_P())
return keyword_do_cond;
19585 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
19586 return keyword_do_block;
19589 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
19592 if (kw->id[0] != kw->id[1])
19593 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
19599 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
19601 SET_LEX_STATE(EXPR_CMDARG);
19604 SET_LEX_STATE(EXPR_ARG);
19607 else if (p->lex.state == EXPR_FNAME) {
19608 SET_LEX_STATE(EXPR_ENDFN);
19611 SET_LEX_STATE(EXPR_END);
19614 ident = tokenize_ident(p, last_state);
19615 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
19616 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
19617 (result == tIDENTIFIER) &&
19618 lvar_defined(p, ident)) {
19619 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
19630 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
19634static enum yytokentype
19638 int space_seen = 0;
19641 enum lex_state_e last_state;
19642 int fallthru = FALSE;
19643 int token_seen = p->token_seen;
19645 if (p->lex.strterm) {
19646 if (p->lex.strterm->flags & STRTERM_HEREDOC) {
19648 return here_document(p, &p->lex.strterm->u.heredoc);
19652 return parse_string(p, &p->lex.strterm->u.literal);
19655 cmd_state = p->command_start;
19656 p->command_start = FALSE;
19657 p->token_seen = TRUE;
19662 last_state = p->lex.state;
19663 switch (c = nextc(p)) {
19670 if (!
NIL_P(p->end_expect_token_locations) &&
RARRAY_LEN(p->end_expect_token_locations) > 0) {
19671 pop_end_expect_token_locations(p);
19672 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
19677 RUBY_SET_YYLLOC(*p->yylloc);
19684 case ' ':
case '\t':
case '\f':
19687 while ((c = nextc(p))) {
19692 case ' ':
case '\t':
case '\f':
19701 dispatch_scan_event(p, tSP);
19708 p->token_seen = token_seen;
19710 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
19711 if (comment_at_top(p)) {
19712 set_file_encoding(p, p->lex.pcur, p->lex.pend);
19716 dispatch_scan_event(p, tCOMMENT);
19720 p->token_seen = token_seen;
19721 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
19722 !IS_lex_state(EXPR_LABELED));
19723 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
19725 dispatch_scan_event(p, tIGNORED_NL);
19728 if (!c && p->ctxt.in_kwarg) {
19729 goto normal_newline;
19734 switch (c = nextc(p)) {
19735 case ' ':
case '\t':
case '\f':
case '\r':
19742 dispatch_scan_event(p, tSP);
19748 dispatch_delayed_token(p, tIGNORED_NL);
19749 if (peek(p,
'.') == (c ==
'&')) {
19751 dispatch_scan_event(p, tSP);
19756 p->ruby_sourceline--;
19757 p->lex.nextline = p->lex.lastline;
19761 p->lex.ptok = p->lex.pcur;
19763 goto normal_newline;
19767 p->command_start = TRUE;
19768 SET_LEX_STATE(EXPR_BEG);
19772 if ((c = nextc(p)) ==
'*') {
19773 if ((c = nextc(p)) ==
'=') {
19774 set_yylval_id(idPow);
19775 SET_LEX_STATE(EXPR_BEG);
19779 if (IS_SPCARG(c)) {
19780 rb_warning0(
"`**' interpreted as argument prefix");
19783 else if (IS_BEG()) {
19787 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
19792 set_yylval_id(
'*');
19793 SET_LEX_STATE(EXPR_BEG);
19797 if (IS_SPCARG(c)) {
19798 rb_warning0(
"`*' interpreted as argument prefix");
19801 else if (IS_BEG()) {
19805 c = warn_balanced(
'*',
"*",
"argument prefix");
19808 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
19813 if (IS_AFTER_OPERATOR()) {
19814 SET_LEX_STATE(EXPR_ARG);
19820 SET_LEX_STATE(EXPR_BEG);
19834 if (word_match_p(p,
"begin", 5)) {
19835 int first_p = TRUE;
19838 dispatch_scan_event(p, tEMBDOC_BEG);
19842 dispatch_scan_event(p, tEMBDOC);
19847 compile_error(p,
"embedded document meets end of file");
19850 if (c ==
'=' && word_match_p(p,
"end", 3)) {
19856 dispatch_scan_event(p, tEMBDOC_END);
19861 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
19862 if ((c = nextc(p)) ==
'=') {
19863 if ((c = nextc(p)) ==
'=') {
19872 else if (c ==
'>') {
19881 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
19883 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
19884 int token = heredoc_identifier(p);
19885 if (token)
return token < 0 ? 0 : token;
19887 if (IS_AFTER_OPERATOR()) {
19888 SET_LEX_STATE(EXPR_ARG);
19891 if (IS_lex_state(EXPR_CLASS))
19892 p->command_start = TRUE;
19893 SET_LEX_STATE(EXPR_BEG);
19896 if ((c = nextc(p)) ==
'>') {
19903 if ((c = nextc(p)) ==
'=') {
19904 set_yylval_id(idLTLT);
19905 SET_LEX_STATE(EXPR_BEG);
19909 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
19915 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
19916 if ((c = nextc(p)) ==
'=') {
19920 if ((c = nextc(p)) ==
'=') {
19921 set_yylval_id(idGTGT);
19922 SET_LEX_STATE(EXPR_BEG);
19932 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
19933 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
19934 p->lex.ptok = p->lex.pcur-1;
19935 return tSTRING_BEG;
19938 if (IS_lex_state(EXPR_FNAME)) {
19939 SET_LEX_STATE(EXPR_ENDFN);
19942 if (IS_lex_state(EXPR_DOT)) {
19944 SET_LEX_STATE(EXPR_CMDARG);
19946 SET_LEX_STATE(EXPR_ARG);
19949 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
19950 return tXSTRING_BEG;
19953 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
19954 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
19955 p->lex.ptok = p->lex.pcur-1;
19956 return tSTRING_BEG;
19959 return parse_qmark(p, space_seen);
19962 if ((c = nextc(p)) ==
'&') {
19963 SET_LEX_STATE(EXPR_BEG);
19964 if ((c = nextc(p)) ==
'=') {
19965 set_yylval_id(idANDOP);
19966 SET_LEX_STATE(EXPR_BEG);
19972 else if (c ==
'=') {
19973 set_yylval_id(
'&');
19974 SET_LEX_STATE(EXPR_BEG);
19977 else if (c ==
'.') {
19978 set_yylval_id(idANDDOT);
19979 SET_LEX_STATE(EXPR_DOT);
19983 if (IS_SPCARG(c)) {
19985 (c = peekc_n(p, 1)) == -1 ||
19986 !(c ==
'\'' || c ==
'"' ||
19987 is_identchar((p->lex.pcur+1), p->lex.pend, p->enc))) {
19988 rb_warning0(
"`&' interpreted as argument prefix");
19992 else if (IS_BEG()) {
19996 c = warn_balanced(
'&',
"&",
"argument prefix");
19998 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20002 if ((c = nextc(p)) ==
'|') {
20003 SET_LEX_STATE(EXPR_BEG);
20004 if ((c = nextc(p)) ==
'=') {
20005 set_yylval_id(idOROP);
20006 SET_LEX_STATE(EXPR_BEG);
20010 if (IS_lex_state_for(last_state, EXPR_BEG)) {
20018 set_yylval_id(
'|');
20019 SET_LEX_STATE(EXPR_BEG);
20022 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
20028 if (IS_AFTER_OPERATOR()) {
20029 SET_LEX_STATE(EXPR_ARG);
20037 set_yylval_id(
'+');
20038 SET_LEX_STATE(EXPR_BEG);
20041 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
20042 SET_LEX_STATE(EXPR_BEG);
20045 return parse_numeric(p,
'+');
20049 SET_LEX_STATE(EXPR_BEG);
20051 return warn_balanced(
'+',
"+",
"unary operator");
20055 if (IS_AFTER_OPERATOR()) {
20056 SET_LEX_STATE(EXPR_ARG);
20064 set_yylval_id(
'-');
20065 SET_LEX_STATE(EXPR_BEG);
20069 SET_LEX_STATE(EXPR_ENDFN);
20072 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
20073 SET_LEX_STATE(EXPR_BEG);
20076 return tUMINUS_NUM;
20080 SET_LEX_STATE(EXPR_BEG);
20082 return warn_balanced(
'-',
"-",
"unary operator");
20085 int is_beg = IS_BEG();
20086 SET_LEX_STATE(EXPR_BEG);
20087 if ((c = nextc(p)) ==
'.') {
20088 if ((c = nextc(p)) ==
'.') {
20089 if (p->ctxt.in_argdef) {
20090 SET_LEX_STATE(EXPR_ENDARG);
20093 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
20094 rb_warn0(
"... at EOL, should be parenthesized?");
20096 else if (p->lex.lpar_beg >= 0 && p->lex.lpar_beg+1 == p->lex.paren_nest) {
20097 if (IS_lex_state_for(last_state, EXPR_LABEL))
20100 return is_beg ? tBDOT3 : tDOT3;
20103 return is_beg ? tBDOT2 : tDOT2;
20107 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
20108 parse_numeric(p,
'.');
20110 yyerror0(
"unexpected fraction part after numeric literal");
20113 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
20115 SET_LEX_STATE(EXPR_END);
20116 p->lex.ptok = p->lex.pcur;
20119 set_yylval_id(
'.');
20120 SET_LEX_STATE(EXPR_DOT);
20124 case '0':
case '1':
case '2':
case '3':
case '4':
20125 case '5':
case '6':
case '7':
case '8':
case '9':
20126 return parse_numeric(p, c);
20131 SET_LEX_STATE(EXPR_ENDFN);
20132 p->lex.paren_nest--;
20138 SET_LEX_STATE(EXPR_END);
20139 p->lex.paren_nest--;
20144 if (!p->lex.brace_nest--)
return tSTRING_DEND;
20147 SET_LEX_STATE(EXPR_END);
20148 p->lex.paren_nest--;
20154 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
20155 SET_LEX_STATE(EXPR_BEG);
20158 set_yylval_id(idCOLON2);
20159 SET_LEX_STATE(EXPR_DOT);
20162 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
20164 c = warn_balanced(
':',
":",
"symbol literal");
20165 SET_LEX_STATE(EXPR_BEG);
20170 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
20173 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
20179 SET_LEX_STATE(EXPR_FNAME);
20184 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
20185 return tREGEXP_BEG;
20187 if ((c = nextc(p)) ==
'=') {
20188 set_yylval_id(
'/');
20189 SET_LEX_STATE(EXPR_BEG);
20193 if (IS_SPCARG(c)) {
20194 arg_ambiguous(p,
'/');
20195 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
20196 return tREGEXP_BEG;
20198 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20199 return warn_balanced(
'/',
"/",
"regexp literal");
20202 if ((c = nextc(p)) ==
'=') {
20203 set_yylval_id(
'^');
20204 SET_LEX_STATE(EXPR_BEG);
20207 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20212 SET_LEX_STATE(EXPR_BEG);
20213 p->command_start = TRUE;
20217 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
20221 if (IS_AFTER_OPERATOR()) {
20222 if ((c = nextc(p)) !=
'@') {
20225 SET_LEX_STATE(EXPR_ARG);
20228 SET_LEX_STATE(EXPR_BEG);
20236 else if (!space_seen) {
20239 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
20242 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
20243 rb_warning0(
"parentheses after method name is interpreted as "
20244 "an argument list, not a decomposed argument");
20246 p->lex.paren_nest++;
20249 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
20253 p->lex.paren_nest++;
20254 if (IS_AFTER_OPERATOR()) {
20255 if ((c = nextc(p)) ==
']') {
20256 p->lex.paren_nest--;
20257 SET_LEX_STATE(EXPR_ARG);
20258 if ((c = nextc(p)) ==
'=') {
20265 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
20268 else if (IS_BEG()) {
20271 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
20274 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
20280 ++p->lex.brace_nest;
20281 if (lambda_beginning_p())
20283 else if (IS_lex_state(EXPR_LABELED))
20285 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
20287 else if (IS_lex_state(EXPR_ENDARG))
20291 if (c != tLBRACE) {
20292 p->command_start = TRUE;
20293 SET_LEX_STATE(EXPR_BEG);
20296 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
20298 ++p->lex.paren_nest;
20307 dispatch_scan_event(p, tSP);
20310 if (c ==
' ')
return tSP;
20316 return parse_percent(p, space_seen, last_state);
20319 return parse_gvar(p, last_state);
20322 return parse_atmark(p, last_state);
20325 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
20326 p->ruby__end__seen = 1;
20332 dispatch_scan_event(p, k__END__);
20340 if (!parser_is_identchar(p)) {
20341 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
20350 return parse_ident(p, c, cmd_state);
20353static enum yytokentype
20356 enum yytokentype t;
20360 p->yylloc = yylloc;
20362 t = parser_yylex(p);
20364 if (has_delayed_token(p))
20365 dispatch_delayed_token(p, t);
20367 dispatch_scan_event(p, t);
20372#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
20377 NODE *n = rb_ast_newnode(p->ast,
type);
20379 rb_node_init(n,
type, a0, a1, a2);
20381 nd_set_loc(n, loc);
20382 nd_set_node_id(n, parser_get_node_id(p));
20390 nd_set_line(nd, loc->beg_pos.lineno);
20395static enum node_type
20396nodetype(
NODE *node)
20398 return (
enum node_type)nd_type(node);
20402nodeline(
NODE *node)
20404 return nd_line(node);
20408newline_node(
NODE *node)
20411 node = remove_begin(node);
20412 node->flags |= NODE_FL_NEWLINE;
20422 nd_set_line(node, nd_line(orig));
20440 NODE *end, *h = head, *nd;
20442 if (tail == 0)
return head;
20444 if (h == 0)
return tail;
20445 switch (nd_type(h)) {
20452 parser_warning(p, h,
"unused literal ignored");
20455 h = end = NEW_BLOCK(head, &head->nd_loc);
20465 switch (nd_type(nd)) {
20472 parser_warning(p, tail,
"statement not reached");
20480 if (!nd_type_p(tail, NODE_BLOCK)) {
20481 tail = NEW_BLOCK(tail, &tail->nd_loc);
20482 tail->nd_end = tail;
20484 end->nd_next = tail;
20485 h->nd_end = tail->nd_end;
20486 nd_set_last_loc(head, nd_last_loc(tail));
20496 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
20497 if (list->nd_next) {
20498 last = list->nd_next->nd_end;
20504 list->nd_alen += 1;
20505 last->nd_next = NEW_LIST(item, &item->nd_loc);
20506 list->nd_next->nd_end = last->nd_next;
20508 nd_set_last_loc(list, nd_last_loc(item));
20515list_concat(
NODE *head,
NODE *tail)
20519 if (head->nd_next) {
20520 last = head->nd_next->nd_end;
20526 head->nd_alen += tail->nd_alen;
20527 last->nd_next = tail;
20528 if (tail->nd_next) {
20529 head->nd_next->nd_end = tail->nd_next->nd_end;
20532 head->nd_next->nd_end = tail;
20535 nd_set_last_loc(head, nd_last_loc(tail));
20543 if (
NIL_P(tail))
return 1;
20544 if (!rb_enc_compatible(head, tail)) {
20545 compile_error(p,
"string literal encodings differ (%s / %s)",
20546 rb_enc_name(rb_enc_get(head)),
20547 rb_enc_name(rb_enc_get(tail)));
20557string_literal_head(
enum node_type htype,
NODE *head)
20559 if (htype != NODE_DSTR)
return Qfalse;
20560 if (head->nd_next) {
20561 head = head->nd_next->nd_end->nd_head;
20562 if (!head || !nd_type_p(head, NODE_STR))
return Qfalse;
20564 const VALUE lit = head->nd_lit;
20573 enum node_type htype;
20576 if (!head)
return tail;
20577 if (!tail)
return head;
20579 htype = nd_type(head);
20580 if (htype == NODE_EVSTR) {
20581 head = new_dstr(p, head, loc);
20584 if (p->heredoc_indent > 0) {
20587 nd_set_type(head, NODE_DSTR);
20589 return list_append(p, head, tail);
20594 switch (nd_type(tail)) {
20596 if ((lit = string_literal_head(htype, head)) !=
Qfalse) {
20600 lit = head->nd_lit;
20602 if (htype == NODE_STR) {
20603 if (!literal_concat0(p, lit, tail->nd_lit)) {
20605 rb_discard_node(p, head);
20606 rb_discard_node(p, tail);
20609 rb_discard_node(p, tail);
20612 list_append(p, head, tail);
20617 if (htype == NODE_STR) {
20618 if (!literal_concat0(p, head->nd_lit, tail->nd_lit))
20620 tail->nd_lit = head->nd_lit;
20621 rb_discard_node(p, head);
20624 else if (
NIL_P(tail->nd_lit)) {
20626 head->nd_alen += tail->nd_alen - 1;
20627 if (!head->nd_next) {
20628 head->nd_next = tail->nd_next;
20630 else if (tail->nd_next) {
20631 head->nd_next->nd_end->nd_next = tail->nd_next;
20632 head->nd_next->nd_end = tail->nd_next->nd_end;
20634 rb_discard_node(p, tail);
20636 else if ((lit = string_literal_head(htype, head)) !=
Qfalse) {
20637 if (!literal_concat0(p, lit, tail->nd_lit))
20639 tail->nd_lit =
Qnil;
20643 list_concat(head, NEW_NODE(NODE_LIST, NEW_STR(tail->nd_lit, loc), tail->nd_alen, tail->nd_next, loc));
20648 if (htype == NODE_STR) {
20649 nd_set_type(head, NODE_DSTR);
20652 list_append(p, head, tail);
20661 if (nd_type_p(node, NODE_EVSTR)) {
20662 node = new_dstr(p, node, &node->nd_loc);
20673 switch (nd_type(node)) {
20675 nd_set_type(node, NODE_DSTR);
20683 return NEW_EVSTR(head, loc);
20689 VALUE lit = STR_NEW0();
20690 NODE *dstr = NEW_DSTR(lit, loc);
20692 return list_append(p, dstr, node);
20702 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
20703 nd_set_line(expr, op_loc->beg_pos.lineno);
20712 opcall = NEW_OPCALL(recv,
id, 0, loc);
20713 nd_set_line(opcall, op_loc->beg_pos.lineno);
20720 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
20721 nd_set_line(qcall, op_loc->beg_pos.lineno);
20729 if (block) block_dup_check(p, args, block);
20730 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
20731 if (block) ret = method_add_block(p, ret, block, loc);
20736#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? (node)->nd_body : node)
20741 int line = op_loc->beg_pos.lineno;
20745 if (node1 && (n = nd_once_body(node1)) != 0) {
20746 switch (nd_type(n)) {
20749 NODE *match = NEW_MATCH2(node1, node2, loc);
20750 nd_set_line(match, line);
20755 if (RB_TYPE_P(n->nd_lit,
T_REGEXP)) {
20756 const VALUE lit = n->nd_lit;
20757 NODE *match = NEW_MATCH2(node1, node2, loc);
20758 match->nd_args = reg_named_capture_assign(p, lit, loc);
20759 nd_set_line(match, line);
20765 if (node2 && (n = nd_once_body(node2)) != 0) {
20768 switch (nd_type(n)) {
20770 if (!RB_TYPE_P(n->nd_lit,
T_REGEXP))
break;
20773 match3 = NEW_MATCH3(node2, node1, loc);
20778 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
20779 nd_set_line(n, line);
20783# if WARN_PAST_SCOPE
20787 struct vtable *past = p->lvtbl->past;
20789 if (vtable_included(past,
id))
return 1;
20800 NODE *outer = local->numparam.outer;
20801 NODE *inner = local->numparam.inner;
20802 if (outer || inner) {
20803 NODE *used = outer ? outer : inner;
20804 compile_error(p,
"numbered parameter is already used in\n"
20805 "%s:%d: %s block here",
20806 p->ruby_sourcefile, nd_line(used),
20807 outer ?
"outer" :
"inner");
20808 parser_show_error_line(p, &used->nd_loc);
20821 return NEW_SELF(loc);
20823 return NEW_NIL(loc);
20825 return NEW_TRUE(loc);
20826 case keyword_false:
20827 return NEW_FALSE(loc);
20828 case keyword__FILE__:
20830 VALUE file = p->ruby_sourcefile_string;
20835 node = NEW_STR(file, loc);
20839 case keyword__LINE__:
20840 return NEW_LIT(
INT2FIX(p->tokline), loc);
20841 case keyword__ENCODING__:
20842 node = NEW_LIT(rb_enc_from_encoding(p->enc), loc);
20847 switch (id_type(
id)) {
20849 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
20850 if (NUMPARAM_ID_P(
id) && numparam_nested_p(p))
return 0;
20851 if (
id == p->cur_arg) {
20852 compile_error(p,
"circular argument reference - %"PRIsWARN, rb_id2str(
id));
20855 if (vidp) *vidp |= LVAR_USED;
20856 node = NEW_DVAR(
id, loc);
20859 if (local_id_ref(p,
id, &vidp)) {
20860 if (
id == p->cur_arg) {
20861 compile_error(p,
"circular argument reference - %"PRIsWARN, rb_id2str(
id));
20864 if (vidp) *vidp |= LVAR_USED;
20865 node = NEW_LVAR(
id, loc);
20868 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
20869 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
20870 if (numparam_nested_p(p))
return 0;
20871 node = NEW_DVAR(
id, loc);
20873 if (!local->numparam.current) local->numparam.current = node;
20876# if WARN_PAST_SCOPE
20878 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
20882 return NEW_VCALL(
id, loc);
20884 return NEW_GVAR(
id, loc);
20886 return NEW_IVAR(
id, loc);
20888 return NEW_CONST(
id, loc);
20890 return NEW_CVAR(
id, loc);
20892 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
20897opt_arg_append(
NODE *opt_list,
NODE *opt)
20899 NODE *opts = opt_list;
20900 opts->nd_loc.end_pos = opt->nd_loc.end_pos;
20902 while (opts->nd_next) {
20903 opts = opts->nd_next;
20904 opts->nd_loc.end_pos = opt->nd_loc.end_pos;
20906 opts->nd_next = opt;
20915 opt_arg_append(kwlist, kw);
20923 return NEW_DEFINED(remove_begin_all(expr), loc);
20929 enum node_type
type = nd_type(symbol);
20932 nd_set_type(symbol, NODE_DSYM);
20935 nd_set_type(symbol, NODE_LIT);
20939 compile_error(p,
"unexpected node as symbol: %s", ruby_node_name(
type));
20941 return list_append(p, symbols, symbol);
20951 node = NEW_LIT(reg_compile(p, STR_NEW0(), options), loc);
20955 switch (nd_type(node)) {
20958 VALUE src = node->nd_lit;
20959 nd_set_type(node, NODE_LIT);
20960 nd_set_loc(node, loc);
20966 node = NEW_NODE(NODE_DSTR, lit, 1, NEW_LIST(node, loc), loc);
20970 nd_set_type(node, NODE_DREGX);
20971 nd_set_loc(node, loc);
20972 node->nd_cflag = options & RE_OPTION_MASK;
20973 if (!
NIL_P(node->nd_lit)) reg_fragment_check(p, node->nd_lit, options);
20974 for (list = (prev = node)->nd_next; list; list = list->nd_next) {
20975 NODE *frag = list->nd_head;
20976 enum node_type
type = nd_type(frag);
20977 if (
type == NODE_STR || (
type == NODE_DSTR && !frag->nd_next)) {
20978 VALUE tail = frag->nd_lit;
20979 if (reg_fragment_check(p, tail, options) && prev && !
NIL_P(prev->nd_lit)) {
20980 VALUE lit = prev == node ? prev->nd_lit : prev->nd_head->nd_lit;
20981 if (!literal_concat0(p, lit, tail)) {
20982 return NEW_NIL(loc);
20985 prev->nd_next = list->nd_next;
20986 rb_discard_node(p, list->nd_head);
20987 rb_discard_node(p, list);
20998 if (!node->nd_next) {
20999 VALUE src = node->nd_lit;
21000 nd_set_type(node, NODE_LIT);
21003 if (options & RE_OPTION_ONCE) {
21004 node = NEW_NODE(NODE_ONCE, 0, node, 0, loc);
21015 return NEW_KW_ARG(0, (k), loc);
21022 VALUE lit = STR_NEW0();
21023 NODE *xstr = NEW_XSTR(lit, loc);
21027 switch (nd_type(node)) {
21029 nd_set_type(node, NODE_XSTR);
21030 nd_set_loc(node, loc);
21033 nd_set_type(node, NODE_DXSTR);
21034 nd_set_loc(node, loc);
21037 node = NEW_NODE(NODE_DXSTR,
Qnil, 1, NEW_LIST(node, loc), loc);
21048 if (!arg || !p->case_labels)
return;
21050 lit = rb_node_case_when_optimizable_literal(arg);
21051 if (UNDEF_P(lit))
return;
21052 if (nd_type_p(arg, NODE_STR)) {
21056 if (
NIL_P(p->case_labels)) {
21060 VALUE line = rb_hash_lookup(p->case_labels, lit);
21061 if (!
NIL_P(line)) {
21062 rb_warning1(
"duplicated `when' clause with line %d is ignored",
21067 rb_hash_aset(p->case_labels, lit,
INT2NUM(p->ruby_sourceline));
21074 if (is_notop_id(
id)) {
21075 switch (
id & ID_SCOPE_MASK) {
21076 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
21079 if (dyna_in_block(p)) {
21080 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
21082 if (local_id(p,
id))
return 1;
21087 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
21094 VALUE src = 0, err;
21096 if (ripper_is_node_yylval(re)) {
21097 src = RNODE(re)->nd_cval;
21098 re = RNODE(re)->nd_rval;
21100 if (ripper_is_node_yylval(opt)) {
21101 options = (int)RNODE(opt)->nd_tag;
21102 opt = RNODE(opt)->nd_rval;
21104 if (src &&
NIL_P(parser_reg_compile(p, src, options, &err))) {
21105 compile_error(p,
"%"PRIsVALUE, err);
21107 return dispatch2(regexp_literal, re, opt);
21111static inline enum lex_state_e
21112parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
21115 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
21117 return p->lex.state = ls;
21121static const char rb_parser_lex_state_names[][8] = {
21122 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
21123 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
21124 "LABEL",
"LABELED",
"FITEM",
21128append_lex_state_name(
enum lex_state_e state,
VALUE buf)
21131 unsigned int mask = 1;
21132 static const char none[] =
"NONE";
21134 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
21135 if ((
unsigned)state & mask) {
21152 VALUE mesg = p->debug_buffer;
21154 if (!
NIL_P(mesg) && RSTRING_LEN(mesg)) {
21155 p->debug_buffer =
Qnil;
21158 if (!
NIL_P(str) && RSTRING_LEN(str)) {
21164rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
21165 enum lex_state_e to,
int line)
21169 append_lex_state_name(from, mesg);
21171 append_lex_state_name(to, mesg);
21173 flush_debug_buffer(p, p->debug_output, mesg);
21178rb_parser_lex_state_name(
enum lex_state_e state)
21180 return rb_fstring(append_lex_state_name(state,
rb_str_new(0, 0)));
21184append_bitstack_value(stack_type stack,
VALUE mesg)
21190 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
21191 for (; mask && !(stack & mask); mask >>= 1)
continue;
21192 for (; mask; mask >>= 1)
rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
21197rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
21198 const char *name,
int line)
21201 append_bitstack_value(stack, mesg);
21203 flush_debug_buffer(p, p->debug_output, mesg);
21207rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
21215 yyerror0(RSTRING_PTR(mesg));
21219 append_lex_state_name(p->lex.state, mesg);
21220 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
21222 append_bitstack_value(p->cond_stack, mesg);
21223 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
21225 append_bitstack_value(p->cmdarg_stack, mesg);
21226 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
21233rb_parser_set_pos(
YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
21235 yylloc->beg_pos.lineno = sourceline;
21236 yylloc->beg_pos.column = beg_pos;
21237 yylloc->end_pos.lineno = sourceline;
21238 yylloc->end_pos.column = end_pos;
21245 int sourceline = here->sourceline;
21246 int beg_pos = (int)here->offset - here->quote
21247 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
21248 int end_pos = (int)here->offset + here->length + here->quote;
21250 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
21256 yylloc->beg_pos.lineno = p->delayed.beg_line;
21257 yylloc->beg_pos.column = p->delayed.beg_col;
21258 yylloc->end_pos.lineno = p->delayed.end_line;
21259 yylloc->end_pos.column = p->delayed.end_col;
21267 int sourceline = p->ruby_sourceline;
21268 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
21269 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
21270 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
21276 yylloc->end_pos = yylloc->beg_pos;
21284 int sourceline = p->ruby_sourceline;
21285 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
21286 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
21287 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
21293 int sourceline = p->ruby_sourceline;
21294 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
21295 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
21296 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
21303 if (!
id)
return -1;
21306 *err =
"Can't change the value of self";
21309 *err =
"Can't assign to nil";
21312 *err =
"Can't assign to true";
21314 case keyword_false:
21315 *err =
"Can't assign to false";
21317 case keyword__FILE__:
21318 *err =
"Can't assign to __FILE__";
21320 case keyword__LINE__:
21321 *err =
"Can't assign to __LINE__";
21323 case keyword__ENCODING__:
21324 *err =
"Can't assign to __ENCODING__";
21327 switch (id_type(
id)) {
21329 if (dyna_in_block(p)) {
21330 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
21331 compile_error(p,
"Can't assign to numbered parameter _%d",
21332 NUMPARAM_ID_TO_IDX(
id));
21335 if (dvar_curr(p,
id))
return NODE_DASGN;
21336 if (dvar_defined(p,
id))
return NODE_DASGN;
21337 if (local_id(p,
id))
return NODE_LASGN;
21342 if (!local_id(p,
id)) local_var(p,
id);
21346 case ID_GLOBAL:
return NODE_GASGN;
21347 case ID_INSTANCE:
return NODE_IASGN;
21349 if (!p->ctxt.in_def)
return NODE_CDECL;
21350 *err =
"dynamic constant assignment";
21352 case ID_CLASS:
return NODE_CVASGN;
21354 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
21363 const char *err = 0;
21364 int node_type = assignable0(p,
id, &err);
21365 switch (node_type) {
21366 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
21367 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
21368 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
21369 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
21370 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, loc);
21371 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
21373 if (err) yyerror1(loc, err);
21374 return NEW_BEGIN(0, loc);
21380 const char *err = 0;
21381 assignable0(p, get_id(lhs), &err);
21382 if (err) lhs = assign_error(p, err, lhs);
21388is_private_local_id(
ID name)
21391 if (name == idUScore)
return 1;
21392 if (!is_local_id(name))
return 0;
21393 s = rb_id2str(name);
21395 return RSTRING_PTR(s)[0] ==
'_';
21401 if (dyna_in_block(p)) {
21402 if (dvar_curr(p, name)) {
21403 if (is_private_local_id(name))
return 1;
21404 yyerror0(
"duplicated argument name");
21406 else if (dvar_defined(p, name) || local_id(p, name)) {
21407 vtable_add(p->lvtbl->vars, name);
21408 if (p->lvtbl->used) {
21409 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
21415 if (local_id(p, name)) {
21416 if (is_private_local_id(name))
return 1;
21417 yyerror0(
"duplicated argument name");
21426 shadowing_lvar_0(p, name);
21434 if (!is_local_id(name)) {
21435 compile_error(p,
"invalid local variable - %"PRIsVALUE,
21439 if (!shadowing_lvar_0(p, name))
return;
21447 return NEW_ATTRASGN(recv, tASET, idx, loc);
21453 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
21454 compile_error(p,
"both block arg and actual block given");
21462 return NEW_ATTRASGN(recv,
id, 0, loc);
21468 switch (nd_type(node)) {
21470 compile_error(p,
"Can't set variable $%ld", node->nd_nth);
21472 case NODE_BACK_REF:
21473 compile_error(p,
"Can't set variable $%c", (
int)node->nd_nth);
21483 return dispatch2(assign_error, mesg, expr);
21491 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
21492 switch (nd_type(node1)) {
21494 return list_append(p, node1, node2);
21495 case NODE_BLOCK_PASS:
21496 node1->nd_head = arg_append(p, node1->nd_head, node2, loc);
21497 node1->nd_loc.end_pos = node1->nd_head->nd_loc.end_pos;
21499 case NODE_ARGSPUSH:
21500 node1->nd_body = list_append(p, NEW_LIST(node1->nd_body, &node1->nd_body->nd_loc), node2);
21501 node1->nd_loc.end_pos = node1->nd_body->nd_loc.end_pos;
21502 nd_set_type(node1, NODE_ARGSCAT);
21505 if (!nd_type_p(node1->nd_body, NODE_LIST))
break;
21506 node1->nd_body = list_append(p, node1->nd_body, node2);
21507 node1->nd_loc.end_pos = node1->nd_body->nd_loc.end_pos;
21510 return NEW_ARGSPUSH(node1, node2, loc);
21516 if (!node2)
return node1;
21517 switch (nd_type(node1)) {
21518 case NODE_BLOCK_PASS:
21519 if (node1->nd_head)
21520 node1->nd_head = arg_concat(p, node1->nd_head, node2, loc);
21522 node1->nd_head = NEW_LIST(node2, loc);
21524 case NODE_ARGSPUSH:
21525 if (!nd_type_p(node2, NODE_LIST))
break;
21526 node1->nd_body = list_concat(NEW_LIST(node1->nd_body, loc), node2);
21527 nd_set_type(node1, NODE_ARGSCAT);
21530 if (!nd_type_p(node2, NODE_LIST) ||
21531 !nd_type_p(node1->nd_body, NODE_LIST))
break;
21532 node1->nd_body = list_concat(node1->nd_body, node2);
21535 return NEW_ARGSCAT(node1, node2, loc);
21542 if ((n1 = splat_array(args)) != 0) {
21543 return list_append(p, n1, last_arg);
21545 return arg_append(p, args, last_arg, loc);
21552 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
21553 return list_concat(n1, rest_arg);
21555 return arg_concat(p, args, rest_arg, loc);
21559splat_array(
NODE* node)
21561 if (nd_type_p(node, NODE_SPLAT)) node = node->nd_head;
21562 if (nd_type_p(node, NODE_LIST))
return node;
21571 switch (nd_type(rhs)) {
21573 if (local_id_ref(p, rhs->nd_vid, &vidp)) {
21574 if (vidp) *vidp |= LVAR_USED;
21578 if (dvar_defined_ref(p, rhs->nd_vid, &vidp)) {
21579 if (vidp) *vidp |= LVAR_USED;
21584 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
21585 mark_lvar_used(p, rhs->nd_head);
21596 if (!nd_type_p(n, NODE_CALL)) {
21597 const YYLTYPE *loc = &n->nd_loc;
21600 path = rb_id2str(n->nd_vid);
21604 path = rb_ary_new();
21605 for (; n && nd_type_p(n, NODE_COLON2); n = n->nd_head) {
21606 rb_ary_push(path, rb_id2str(n->nd_mid));
21608 if (n && nd_type_p(n, NODE_CONST)) {
21610 rb_ary_push(path, rb_id2str(n->nd_vid));
21612 else if (n && nd_type_p(n, NODE_COLON3)) {
21621 path = rb_fstring(path);
21623 *dest = n = NEW_LIT(path, loc);
21629extern VALUE rb_mRubyVMFrozenCore;
21634 NODE *fcore = NEW_LIT(rb_mRubyVMFrozenCore, loc);
21637 return NEW_CALL(fcore, rb_intern(
"make_shareable_copy"),
21638 NEW_LIST(value, loc), loc);
21641 return NEW_CALL(fcore, rb_intern(
"make_shareable"),
21642 NEW_LIST(value, loc), loc);
21649 NODE *fcore = NEW_LIT(rb_mRubyVMFrozenCore, loc);
21650 NODE *args = NEW_LIST(value, loc);
21651 args = list_append(p, args, const_decl_path(p, dest));
21652 return NEW_CALL(fcore, rb_intern(
"ensure_shareable"), args, loc);
21655static int is_static_content(
NODE *node);
21658shareable_literal_value(
NODE *node)
21660 if (!node)
return Qnil;
21661 enum node_type
type = nd_type(node);
21670 return node->nd_lit;
21676#ifndef SHAREABLE_BARE_EXPRESSION
21677#define SHAREABLE_BARE_EXPRESSION 1
21681shareable_literal_constant(
struct parser_params *p,
enum shareability shareable,
21684# define shareable_literal_constant_next(n) \
21685 shareable_literal_constant(p, shareable, dest, (n), &(n)->nd_loc, level+1)
21688 if (!value)
return 0;
21689 enum node_type
type = nd_type(value);
21698 if (shareable == shareable_literal) {
21699 value = NEW_CALL(value, idUMinus, 0, loc);
21704 lit = rb_fstring(value->nd_lit);
21705 nd_set_type(value, NODE_LIT);
21710 lit = rb_ary_new();
21712 NODE *n = NEW_LIT(lit, loc);
21717 lit = rb_ary_new();
21718 for (
NODE *n = value; n; n = n->nd_next) {
21719 NODE *elt = n->nd_head;
21721 elt = shareable_literal_constant_next(elt);
21725 else if (
RTEST(lit)) {
21731 VALUE e = shareable_literal_value(elt);
21733 rb_ary_push(lit, e);
21744 if (!value->nd_brace)
return 0;
21745 lit = rb_hash_new();
21746 for (
NODE *n = value->nd_head; n; n = n->nd_next->nd_next) {
21747 NODE *key = n->nd_head;
21748 NODE *val = n->nd_next->nd_head;
21750 key = shareable_literal_constant_next(key);
21754 else if (
RTEST(lit)) {
21755 rb_hash_clear(lit);
21760 val = shareable_literal_constant_next(val);
21762 n->nd_next->nd_head = val;
21764 else if (
RTEST(lit)) {
21765 rb_hash_clear(lit);
21770 VALUE k = shareable_literal_value(key);
21771 VALUE v = shareable_literal_value(val);
21772 if (!UNDEF_P(k) && !UNDEF_P(v)) {
21773 rb_hash_aset(lit, k, v);
21776 rb_hash_clear(lit);
21784 if (shareable == shareable_literal &&
21785 (SHAREABLE_BARE_EXPRESSION || level > 0)) {
21786 return ensure_shareable_node(p, dest, value, loc);
21792 if (!lit)
return 0;
21796 value = make_shareable_node(p, value,
false, loc);
21804# undef shareable_literal_constant_next
21808shareable_constant_value(
struct parser_params *p,
enum shareability shareable,
21811 if (!value)
return 0;
21812 switch (shareable) {
21813 case shareable_none:
21816 case shareable_literal:
21818 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
21819 if (lit)
return lit;
21824 case shareable_copy:
21825 case shareable_everything:
21827 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
21828 if (lit)
return lit;
21829 return make_shareable_node(p, value, shareable == shareable_copy, loc);
21841 if (!lhs)
return 0;
21843 switch (nd_type(lhs)) {
21845 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
21854 lhs->nd_value = rhs;
21855 nd_set_loc(lhs, loc);
21858 case NODE_ATTRASGN:
21859 lhs->nd_args = arg_append(p, lhs->nd_args, rhs, loc);
21860 nd_set_loc(lhs, loc);
21874 NODE *void_node = 0, *vn;
21877 rb_warning0(
"empty expression");
21880 switch (nd_type(node)) {
21886 return void_node ? void_node : node;
21889 if (!node->nd_body || !nd_type_p(node->nd_body, NODE_IN)) {
21890 compile_error(p,
"unexpected node");
21893 if (node->nd_body->nd_body) {
21897 return void_node ? void_node : node;
21900 while (node->nd_next) {
21901 node = node->nd_next;
21903 node = node->nd_head;
21907 node = node->nd_body;
21912 if (!node->nd_body) {
21915 else if (!node->nd_else) {
21918 vn = value_expr_check(p, node->nd_body);
21919 if (!vn)
return NULL;
21920 if (!void_node) void_node = vn;
21921 node = node->nd_else;
21926 node = node->nd_1st;
21932 mark_lvar_used(p, node);
21946 NODE *void_node = value_expr_check(p, node);
21948 yyerror1(&void_node->nd_loc,
"void value expression");
21957 const char *useless = 0;
21961 if (!node || !(node = nd_once_body(node)))
return;
21962 switch (nd_type(node)) {
21964 switch (node->nd_mid) {
21994 case NODE_BACK_REF:
21995 useless =
"a variable";
21998 useless =
"a constant";
22004 useless =
"a literal";
22029 useless =
"defined?";
22034 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
22041 NODE *
const n = node;
22043 if (!node)
return n;
22044 if (!nd_type_p(node, NODE_BLOCK))
return n;
22046 while (node->nd_next) {
22047 void_expr(p, node->nd_head);
22048 node = node->nd_next;
22054remove_begin(
NODE *node)
22056 NODE **n = &node, *n1 = node;
22057 while (n1 && nd_type_p(n1, NODE_BEGIN) && n1->nd_body) {
22058 *n = n1 = n1->nd_body;
22064remove_begin_all(
NODE *node)
22066 NODE **n = &node, *n1 = node;
22067 while (n1 && nd_type_p(n1, NODE_BEGIN)) {
22068 *n = n1 = n1->nd_body;
22076 NODE *node = *body;
22079 *body = NEW_NIL(&NULL_LOC);
22082#define subnodes(n1, n2) \
22083 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
22084 (!node->n2) ? (body = &node->n1, 1) : \
22085 (reduce_nodes(p, &node->n1), body = &node->n2, 1))
22088 int newline = (int)(node->flags & NODE_FL_NEWLINE);
22089 switch (nd_type(node)) {
22095 *body = node = node->nd_stts;
22096 if (newline && node) node->flags |= NODE_FL_NEWLINE;
22099 *body = node = node->nd_body;
22100 if (newline && node) node->flags |= NODE_FL_NEWLINE;
22103 body = &node->nd_end->nd_head;
22107 if (subnodes(nd_body, nd_else))
break;
22110 body = &node->nd_body;
22113 if (!subnodes(nd_body, nd_next))
goto end;
22116 if (!subnodes(nd_head, nd_resq))
goto end;
22119 if (node->nd_else) {
22120 body = &node->nd_resq;
22123 if (!subnodes(nd_head, nd_resq))
goto end;
22129 if (newline && node) node->flags |= NODE_FL_NEWLINE;
22136is_static_content(
NODE *node)
22138 if (!node)
return 1;
22139 switch (nd_type(node)) {
22141 if (!(node = node->nd_head))
break;
22144 if (!is_static_content(node->nd_head))
return 0;
22145 }
while ((node = node->nd_next) != 0);
22162 switch (nd_type(node)) {
22174 if (!node->nd_value)
return 1;
22175 if (is_static_content(node->nd_value)) {
22177 parser_warn(p, node->nd_value,
"found `= literal' in conditional, should be ==");
22188#define SWITCH_BY_COND_TYPE(t, w, arg) \
22190 case COND_IN_OP: break; \
22191 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
22192 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
22200 enum node_type
type;
22202 if (node == 0)
return 0;
22204 type = nd_type(node);
22207 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
22208 ID lineno = rb_intern(
"$.");
22209 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
22211 return cond0(p, node, COND_IN_FF, loc);
22217 if (node == 0)
return 0;
22218 if (!(node = nd_once_body(node)))
return 0;
22219 assign_in_cond(p, node);
22221 switch (nd_type(node)) {
22225 SWITCH_BY_COND_TYPE(
type, warn,
"string ")
22229 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning, "regex ")
22231 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
22235 node->nd_1st = cond0(p, node->nd_1st, COND_IN_COND, loc);
22236 node->nd_2nd = cond0(p, node->nd_2nd, COND_IN_COND, loc);
22241 node->nd_beg = range_op(p, node->nd_beg, loc);
22242 node->nd_end = range_op(p, node->nd_end, loc);
22243 if (nd_type_p(node, NODE_DOT2)) nd_set_type(node,NODE_FLIP2);
22244 else if (nd_type_p(node, NODE_DOT3)) nd_set_type(node, NODE_FLIP3);
22249 SWITCH_BY_COND_TYPE(
type, warning, "symbol ")
22253 if (RB_TYPE_P(node->nd_lit,
T_REGEXP)) {
22254 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ")
22255 nd_set_type(node, NODE_MATCH);
22257 else if (node->nd_lit ==
Qtrue ||
22258 node->nd_lit ==
Qfalse) {
22261 else if (
SYMBOL_P(node->nd_lit)) {
22265 SWITCH_BY_COND_TYPE(
type, warning,
"")
22276 if (node == 0)
return 0;
22277 return cond0(p, node, COND_IN_COND, loc);
22283 if (node == 0)
return 0;
22284 return cond0(p, node, COND_IN_OP, loc);
22291 return NEW_NIL(&loc);
22297 if (!cc)
return right;
22298 cc = cond0(p, cc, COND_IN_COND, loc);
22299 return newline_node(NEW_IF(cc, left, right, loc));
22305 if (!cc)
return right;
22306 cc = cond0(p, cc, COND_IN_COND, loc);
22307 return newline_node(NEW_UNLESS(cc, left, right, loc));
22314 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
22317 if (left && nd_type_p(left,
type)) {
22318 NODE *node = left, *second;
22319 while ((second = node->nd_2nd) != 0 && nd_type_p(second,
type)) {
22322 node->nd_2nd = NEW_NODE(
type, second, right, 0, loc);
22323 nd_set_line(node->nd_2nd, op_loc->beg_pos.lineno);
22324 left->nd_loc.end_pos = loc->end_pos;
22327 op = NEW_NODE(
type, left, right, 0, loc);
22328 nd_set_line(op, op_loc->beg_pos.lineno);
22335 if (nd_type_p(node, NODE_BLOCK_PASS)) {
22336 compile_error(p,
"block argument should not be given");
22344 no_blockarg(p, node);
22345 if (nd_type_p(node, NODE_LIST)) {
22346 if (node->nd_next == 0) {
22347 node = node->nd_head;
22350 nd_set_type(node, NODE_VALUES);
22360 if (node) no_blockarg(p, node);
22362 return NEW_YIELD(node, loc);
22381 BIGNUM_NEGATE(lit);
22382 lit = rb_big_norm(lit);
22385 RATIONAL_SET_NUM(lit, negate_lit(p, RRATIONAL(lit)->num));
22388 RCOMPLEX_SET_REAL(lit, negate_lit(p, RCOMPLEX(lit)->real));
22389 RCOMPLEX_SET_IMAG(lit, negate_lit(p, RCOMPLEX(lit)->imag));
22396 rb_parser_fatal(p,
"unknown literal type (%s) passed to negate_lit",
22397 rb_builtin_class_name(lit));
22404arg_blk_pass(
NODE *node1,
NODE *node2)
22407 if (!node1)
return node2;
22408 node2->nd_head = node1;
22409 nd_set_first_lineno(node2, nd_first_lineno(node1));
22410 nd_set_first_column(node2, nd_first_column(node1));
22419 if (args->pre_args_num)
return false;
22420 if (args->post_args_num)
return false;
22421 if (args->rest_arg)
return false;
22422 if (args->opt_args)
return false;
22423 if (args->block_arg)
return false;
22424 if (args->kw_args)
return false;
22425 if (args->kw_rest_arg)
return false;
22432 int saved_line = p->ruby_sourceline;
22435 if (args->forwarding) {
22437 yyerror1(&tail->nd_loc,
"... after rest argument");
22440 rest_arg = idFWD_REST;
22443 args->pre_args_num = pre_args ?
rb_long2int(pre_args->nd_plen) : 0;
22444 args->pre_init = pre_args ? pre_args->nd_next : 0;
22446 args->post_args_num = post_args ?
rb_long2int(post_args->nd_plen) : 0;
22447 args->post_init = post_args ? post_args->nd_next : 0;
22448 args->first_post_arg = post_args ? post_args->nd_pid : 0;
22450 args->rest_arg = rest_arg;
22452 args->opt_args = opt_args;
22454#ifdef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
22455 args->ruby2_keywords = args->forwarding;
22457 args->ruby2_keywords = 0;
22460 p->ruby_sourceline = saved_line;
22461 nd_set_loc(tail, loc);
22469 int saved_line = p->ruby_sourceline;
22471 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
22473 rb_imemo_tmpbuf_set_ptr(tmpbuf, args);
22474 args->imemo = tmpbuf;
22475 node = NEW_NODE(NODE_ARGS, 0, 0, args, &NULL_LOC);
22477 if (p->error_p)
return node;
22479 args->block_arg = block;
22480 args->kw_args = kw_args;
22489 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
22490 struct vtable *vtargs = p->lvtbl->args;
22491 NODE *kwn = kw_args;
22493 if (block) block = vtargs->tbl[vtargs->pos-1];
22494 vtable_pop(vtargs, !!block + !!kw_rest_arg);
22495 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
22497 if (!NODE_REQUIRED_KEYWORD_P(kwn->nd_body))
22499 --required_kw_vars;
22500 kwn = kwn->nd_next;
22503 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
22504 ID vid = kwn->nd_body->nd_vid;
22505 if (NODE_REQUIRED_KEYWORD_P(kwn->nd_body)) {
22506 *required_kw_vars++ = vid;
22513 arg_var(p, kw_bits);
22514 if (kw_rest_arg) arg_var(p, kw_rest_arg);
22515 if (block) arg_var(p, block);
22517 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
22518 args->kw_rest_arg->nd_cflag = kw_bits;
22520 else if (kw_rest_arg == idNil) {
22521 args->no_kwarg = 1;
22523 else if (kw_rest_arg) {
22524 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
22527 p->ruby_sourceline = saved_line;
22534 if (max_numparam > NO_PARAM) {
22536 YYLTYPE loc = RUBY_INIT_YYLLOC();
22537 args = new_args_tail(p, 0, 0, 0, 0);
22538 nd_set_loc(args, &loc);
22540 args->nd_ainfo->pre_args_num = max_numparam;
22550 aryptn->nd_pconst = constant;
22553 NODE *pre_args = NEW_LIST(pre_arg, loc);
22554 if (apinfo->pre_args) {
22555 apinfo->pre_args = list_concat(pre_args, apinfo->pre_args);
22558 apinfo->pre_args = pre_args;
22567 int saved_line = p->ruby_sourceline;
22569 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
22571 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
22572 node = NEW_NODE(NODE_ARYPTN, 0, tmpbuf, apinfo, loc);
22575 apinfo->pre_args = pre_args;
22579 apinfo->rest_arg = assignable(p, rest_arg, 0, loc);
22582 apinfo->rest_arg = NODE_SPECIAL_NO_NAME_REST;
22586 apinfo->rest_arg = NULL;
22589 apinfo->post_args = post_args;
22591 p->ruby_sourceline = saved_line;
22598 fndptn->nd_pconst = constant;
22606 int saved_line = p->ruby_sourceline;
22608 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
22610 rb_imemo_tmpbuf_set_ptr(tmpbuf, fpinfo);
22611 node = NEW_NODE(NODE_FNDPTN, 0, tmpbuf, fpinfo, loc);
22614 fpinfo->pre_rest_arg = pre_rest_arg ? assignable(p, pre_rest_arg, 0, loc) : NODE_SPECIAL_NO_NAME_REST;
22615 fpinfo->args = args;
22616 fpinfo->post_rest_arg = post_rest_arg ? assignable(p, post_rest_arg, 0, loc) : NODE_SPECIAL_NO_NAME_REST;
22618 p->ruby_sourceline = saved_line;
22625 hshptn->nd_pconst = constant;
22632 int saved_line = p->ruby_sourceline;
22633 NODE *node, *kw_rest_arg_node;
22635 if (kw_rest_arg == idNil) {
22636 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
22638 else if (kw_rest_arg) {
22639 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
22642 kw_rest_arg_node = NULL;
22645 node = NEW_NODE(NODE_HSHPTN, 0, kw_args, kw_rest_arg_node, loc);
22647 p->ruby_sourceline = saved_line;
22657 return NEW_LIT(
ID2SYM(idNULL), loc);
22660 switch (nd_type(node)) {
22662 nd_set_type(node, NODE_DSYM);
22663 nd_set_loc(node, loc);
22666 lit = node->nd_lit;
22668 nd_set_type(node, NODE_LIT);
22669 nd_set_loc(node, loc);
22672 node = NEW_NODE(NODE_DSYM,
Qnil, 1, NEW_LIST(node, loc), loc);
22679append_literal_keys(st_data_t k, st_data_t v, st_data_t h)
22684 node->nd_next->nd_end = node->nd_next;
22685 node->nd_next->nd_next = 0;
22687 list_concat(*result, node);
22690 return ST_CONTINUE;
22694hash_literal_key_p(
VALUE k)
22696 switch (OBJ_BUILTIN_TYPE(k)) {
22707 if (val == lit)
return 0;
22708 if (!hash_literal_key_p(val) || !hash_literal_key_p(lit))
return -1;
22709 return rb_iseq_cdhash_cmp(val, lit);
22713literal_hash(
VALUE a)
22715 if (!hash_literal_key_p(a))
return (st_index_t)a;
22716 return rb_iseq_cdhash_hash(a);
22727 st_table *literal_keys = st_init_table_with_size(&literal_type, hash->nd_alen / 2);
22729 NODE *last_expr = 0;
22731 while (hash && hash->nd_head && hash->nd_next) {
22732 NODE *head = hash->nd_head;
22733 NODE *value = hash->nd_next;
22734 NODE *next = value->nd_next;
22735 st_data_t key = (st_data_t)head;
22737 value->nd_next = 0;
22738 if (nd_type_p(head, NODE_LIT) &&
22739 st_delete(literal_keys, (key = (st_data_t)head->nd_lit, &key), &data)) {
22740 NODE *dup_value = ((
NODE *)data)->nd_next;
22742 "key %+"PRIsVALUE
" is duplicated and overwritten on line %d",
22743 head->nd_lit, nd_line(head));
22744 if (dup_value == last_expr) {
22745 value->nd_head = block_append(p, dup_value->nd_head, value->nd_head);
22748 last_expr->nd_head = block_append(p, dup_value->nd_head, last_expr->nd_head);
22751 st_insert(literal_keys, (st_data_t)key, (st_data_t)hash);
22752 last_expr = nd_type_p(head, NODE_LIT) ? value : head;
22755 st_foreach(literal_keys, append_literal_keys, (st_data_t)&result);
22756 st_free_table(literal_keys);
22758 if (!result) result = hash;
22759 else list_concat(result, hash);
22761 result->nd_loc = loc;
22768 if (hash) hash = remove_duplicate_keys(p, hash);
22769 return NEW_HASH(hash, loc);
22776 if (is_private_local_id(
id)) {
22779 if (st_is_member(p->pvtbl,
id)) {
22780 yyerror1(loc,
"duplicated variable name");
22783 st_insert(p->pvtbl, (st_data_t)
id, 0);
22791 p->pktbl = st_init_numtable();
22793 else if (st_is_member(p->pktbl, key)) {
22794 yyerror1(loc,
"duplicated key name");
22797 st_insert(p->pktbl, (st_data_t)key, 0);
22804 return NEW_HASH(hash, loc);
22815 ID vid = lhs->nd_vid;
22816 YYLTYPE lhs_loc = lhs->nd_loc;
22817 int shareable = ctxt.shareable_constant_value;
22819 switch (nd_type(lhs)) {
22830 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
22831 lhs->nd_value = rhs;
22832 nd_set_loc(lhs, loc);
22833 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
22834 if (is_notop_id(vid)) {
22835 switch (id_type(vid)) {
22839 asgn->nd_aid = vid;
22843 else if (op == tANDOP) {
22845 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
22847 lhs->nd_value = rhs;
22848 nd_set_loc(lhs, loc);
22849 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
22853 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
22855 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
22857 asgn->nd_value = rhs;
22858 nd_set_loc(asgn, loc);
22862 asgn = NEW_BEGIN(0, loc);
22873 args = make_list(args, args_loc);
22874 if (nd_type_p(args, NODE_BLOCK_PASS)) {
22875 args = NEW_ARGSCAT(args, rhs, loc);
22878 args = arg_concat(p, args, rhs, loc);
22880 asgn = NEW_OP_ASGN1(ary, op, args, loc);
22891 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc);
22902 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
22903 asgn = NEW_OP_CDECL(lhs, op, rhs, loc);
22906 asgn = NEW_BEGIN(0, loc);
22915 if (p->ctxt.in_def) {
22916 yyerror1(loc,
"dynamic constant assignment");
22918 return NEW_CDECL(0, 0, (path), loc);
22924 if (p->ctxt.in_def) {
22925 path = assign_error(p,
"dynamic constant assignment", path);
22933 a = dispatch2(assign_error, ERR_MESG(), a);
22941 return ripper_new_yylval(p, get_id(a), dispatch1(var_field, a), 0);
22949 NODE *result = head;
22951 NODE *tmp = rescue_else ? rescue_else : rescue;
22952 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
22954 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
22955 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
22957 else if (rescue_else) {
22958 result = block_append(p, result, rescue_else);
22961 result = NEW_ENSURE(result, ensure, loc);
22963 fixpos(result, head);
22973 if (!local->used)
return;
22974 cnt = local->used->pos;
22975 if (cnt != local->vars->pos) {
22976 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
22979 ID *v = local->vars->tbl;
22980 ID *u = local->used->tbl;
22981 for (
int i = 0; i < cnt; ++i) {
22982 if (!v[i] || (u[i] & LVAR_USED))
continue;
22983 if (is_private_local_id(v[i]))
continue;
22984 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
22993 int inherits_dvars = toplevel_scope && compile_for_eval;
22997 local->prev = p->lvtbl;
22998 local->args = vtable_alloc(0);
22999 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
23001 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
23002 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
23003 local->numparam.outer = 0;
23004 local->numparam.inner = 0;
23005 local->numparam.current = 0;
23007 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
23009# if WARN_PAST_SCOPE
23021 if (p->lvtbl->used) {
23022 warn_unused_var(p, p->lvtbl);
23023 vtable_free(p->lvtbl->used);
23025# if WARN_PAST_SCOPE
23026 while (p->lvtbl->past) {
23027 struct vtable *past = p->lvtbl->past;
23028 p->lvtbl->past = past->prev;
23032 vtable_free(p->lvtbl->args);
23033 vtable_free(p->lvtbl->vars);
23036 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
23044 int cnt_args = vtable_size(p->lvtbl->args);
23045 int cnt_vars = vtable_size(p->lvtbl->vars);
23046 int cnt = cnt_args + cnt_vars;
23050 if (cnt <= 0)
return 0;
23051 tbl = rb_ast_new_local_table(p->ast, cnt);
23052 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
23054 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
23055 ID id = p->lvtbl->vars->tbl[i];
23056 if (!vtable_included(p->lvtbl->args,
id)) {
23057 tbl->ids[j++] = id;
23061 tbl = rb_ast_resize_latest_local_table(p->ast, j);
23074 n = NEW_NODE(
type, a0, a1, a2, loc);
23083 if (!NUMPARAM_ID_P(
id))
return;
23084 compile_error(p,
"_%d is reserved for numbered parameter",
23085 NUMPARAM_ID_TO_IDX(
id));
23091 numparam_name(p,
id);
23092 vtable_add(p->lvtbl->args,
id);
23098 numparam_name(p,
id);
23099 vtable_add(p->lvtbl->vars,
id);
23100 if (p->lvtbl->used) {
23101 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
23108 struct vtable *vars, *args, *used;
23110 vars = p->lvtbl->vars;
23111 args = p->lvtbl->args;
23112 used = p->lvtbl->used;
23114 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
23117 if (used) used = used->prev;
23120 if (vars && vars->prev == DVARS_INHERIT) {
23121 return rb_local_defined(
id, p->parent_iseq);
23123 else if (vtable_included(args,
id)) {
23127 int i = vtable_included(vars,
id);
23128 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
23136 return local_id_ref(p,
id, NULL);
23142 if (local_id(p, idFWD_ALL))
return TRUE;
23143 compile_error(p,
"unexpected ...");
23150 arg_var(p, idFWD_REST);
23151#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
23152 arg_var(p, idFWD_KWREST);
23154 arg_var(p, idFWD_BLOCK);
23155 arg_var(p, idFWD_ALL);
23162 NODE *rest = NEW_LVAR(idFWD_REST, loc);
23163#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
23164 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
23166 NODE *block = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, loc), loc);
23167 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc);
23168#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
23169 args = arg_append(p, args, new_hash(p, kwrest, loc), loc);
23171 return arg_blk_pass(args, block);
23180 NODE *inner = local->numparam.inner;
23181 if (!local->numparam.outer) {
23182 local->numparam.outer = local->numparam.current;
23184 local->numparam.inner = 0;
23185 local->numparam.current = 0;
23199 local->numparam.inner = prev_inner;
23201 else if (local->numparam.current) {
23203 local->numparam.inner = local->numparam.current;
23205 if (p->max_numparam > NO_PARAM) {
23207 local->numparam.current = local->numparam.outer;
23208 local->numparam.outer = 0;
23212 local->numparam.current = 0;
23217static const struct vtable *
23220 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
23221 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
23222 if (p->lvtbl->used) {
23223 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
23225 return p->lvtbl->args;
23231 struct vtable *tmp = *vtblp;
23232 *vtblp = tmp->prev;
23233# if WARN_PAST_SCOPE
23234 if (p->past_scope_enabled) {
23235 tmp->prev = p->lvtbl->past;
23236 p->lvtbl->past = tmp;
23248 if ((tmp = p->lvtbl->used) != 0) {
23249 warn_unused_var(p, p->lvtbl);
23250 p->lvtbl->used = p->lvtbl->used->prev;
23253 dyna_pop_vtable(p, &p->lvtbl->args);
23254 dyna_pop_vtable(p, &p->lvtbl->vars);
23260 while (p->lvtbl->args != lvargs) {
23262 if (!p->lvtbl->args) {
23264 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
23274 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
23280 struct vtable *vars, *args, *used;
23283 args = p->lvtbl->args;
23284 vars = p->lvtbl->vars;
23285 used = p->lvtbl->used;
23287 while (!DVARS_TERMINAL_P(vars)) {
23288 if (vtable_included(args,
id)) {
23291 if ((i = vtable_included(vars,
id)) != 0) {
23292 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
23297 if (!vidrefp) used = 0;
23298 if (used) used = used->prev;
23301 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
23302 return rb_dvar_defined(
id, p->parent_iseq);
23311 return dvar_defined_ref(p,
id, NULL);
23317 return (vtable_included(p->lvtbl->args,
id) ||
23318 vtable_included(p->lvtbl->vars,
id));
23325 "regexp encoding option '%c' differs from source encoding '%s'",
23326 c, rb_enc_name(rb_enc_get(str)));
23333 int c = RE_OPTION_ENCODING_IDX(options);
23339 !is_ascii_string(str)) {
23344 else if (RE_OPTION_ENCODING_NONE(options)) {
23346 !is_ascii_string(str)) {
23350 rb_enc_associate(str, rb_ascii8bit_encoding());
23352 else if (rb_is_usascii_enc(p->enc)) {
23353 if (!is_ascii_string(str)) {
23355 rb_enc_associate(str, rb_usascii_encoding());
23358 rb_enc_associate(str, rb_ascii8bit_encoding());
23370 int c = rb_reg_fragment_setenc(p, str, options);
23371 if (c) reg_fragment_enc_error(p, str, c);
23378 reg_fragment_setenc(p, str, options);
23379 err = rb_reg_check_preprocess(str);
23382 compile_error(p,
"%"PRIsVALUE, err);
23396reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
23397 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
23402 long len = name_end - name;
23403 const char *s = (
const char *)name;
23407 if (!len)
return ST_CONTINUE;
23408 if (rb_enc_symname_type(s, len, enc, (1U<<ID_LOCAL)) != ID_LOCAL)
23409 return ST_CONTINUE;
23411 var = intern_cstr(s, len, enc);
23412 if (len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)len)) {
23413 if (!lvar_defined(p, var))
return ST_CONTINUE;
23415 node = node_assign(p, assignable(p, var, 0, arg->loc), NEW_LIT(
ID2SYM(var), arg->loc), NO_LEX_CTXT, arg->loc);
23416 succ = arg->succ_block;
23417 if (!succ) succ = NEW_BEGIN(0, arg->loc);
23418 succ = block_append(p, succ, node);
23419 arg->succ_block = succ;
23420 return ST_CONTINUE;
23429 arg.enc = rb_enc_get(regexp);
23430 arg.succ_block = 0;
23432 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
23434 if (!arg.succ_block)
return 0;
23435 return arg.succ_block->nd_next;
23441 reg_fragment_setenc(p, str, options);
23442 return rb_parser_reg_compile(p, str, options);
23448 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
23458 re = parser_reg_compile(p, str, options);
23462 compile_error(p,
"%"PRIsVALUE, m);
23473 str = ripper_is_node_yylval(str) ? RNODE(str)->nd_cval : str;
23474 int c = rb_reg_fragment_setenc(p, str, options);
23475 if (c) reg_fragment_enc_error(p, str, c);
23476 re = rb_parser_reg_compile(p, str, options);
23487rb_parser_set_options(
VALUE vparser,
int print,
int loop,
int chomp,
int split)
23491 p->do_print = print;
23493 p->do_chomp = chomp;
23494 p->do_split = split;
23500 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
23501 const YYLTYPE *
const LOC = &default_location;
23504 NODE *print = NEW_FCALL(rb_intern(
"print"),
23505 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
23507 node = block_append(p, node, print);
23511 NODE *irs = NEW_LIST(NEW_GVAR(rb_intern(
"$/"), LOC), LOC);
23514 ID ifs = rb_intern(
"$;");
23515 ID fields = rb_intern(
"$F");
23516 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
23517 NODE *split = NEW_GASGN(fields,
23518 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
23519 rb_intern(
"split"), args, LOC),
23521 node = block_append(p, split, node);
23524 NODE *chomp = NEW_LIT(
ID2SYM(rb_intern(
"chomp")), LOC);
23525 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
23526 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
23529 node = NEW_WHILE(NEW_FCALL(idGets, irs, LOC), node, 1, LOC);
23546 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
23554 p->command_start = TRUE;
23555 p->ruby_sourcefile_string =
Qnil;
23556 p->lex.lpar_beg = -1;
23558 p->delayed.token =
Qnil;
23561 p->parsing_thread =
Qnil;
23563 p->error_buffer =
Qfalse;
23564 p->end_expect_token_locations =
Qnil;
23568 p->debug_buffer =
Qnil;
23570 p->enc = rb_utf8_encoding();
23574#define parser_mark ripper_parser_mark
23575#define parser_free ripper_parser_free
23579parser_mark(
void *ptr)
23583 rb_gc_mark(p->lex.input);
23584 rb_gc_mark(p->lex.lastline);
23585 rb_gc_mark(p->lex.nextline);
23586 rb_gc_mark(p->ruby_sourcefile_string);
23587 rb_gc_mark((
VALUE)p->lex.strterm);
23588 rb_gc_mark((
VALUE)p->ast);
23589 rb_gc_mark(p->case_labels);
23590 rb_gc_mark(p->delayed.token);
23592 rb_gc_mark(p->debug_lines);
23593 rb_gc_mark(p->compile_option);
23594 rb_gc_mark(p->error_buffer);
23595 rb_gc_mark(p->end_expect_token_locations);
23596 rb_gc_mark(p->tokens);
23598 rb_gc_mark(p->value);
23599 rb_gc_mark(p->result);
23600 rb_gc_mark(p->parsing_thread);
23602 rb_gc_mark(p->debug_buffer);
23603 rb_gc_mark(p->debug_output);
23605 rb_gc_mark((
VALUE)p->heap);
23610parser_free(
void *ptr)
23616 ruby_sized_xfree(p->tokenbuf, p->toksiz);
23618 for (local = p->lvtbl; local; local = prev) {
23619 if (local->vars)
xfree(local->vars);
23620 prev = local->prev;
23625 while ((ptinfo = p->token_info) != 0) {
23626 p->token_info = ptinfo->next;
23634parser_memsize(
const void *ptr)
23638 size_t size =
sizeof(*p);
23641 for (local = p->lvtbl; local; local = local->prev) {
23642 size +=
sizeof(*local);
23643 if (local->vars) size += local->vars->capa *
sizeof(
ID);
23659 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
23663#undef rb_reserved_word
23666rb_reserved_word(
const char *str,
unsigned int len)
23668 return reserved_word(str, len);
23676 &parser_data_type, p);
23677 parser_initialize(p);
23688 p->parent_iseq = base;
23693rb_parser_keep_script_lines(
VALUE vparser)
23698 p->keep_script_lines = 1;
23702rb_parser_error_tolerant(
VALUE vparser)
23707 p->error_tolerant = 1;
23708 p->end_expect_token_locations = rb_ary_new();
23712rb_parser_keep_tokens(
VALUE vparser)
23717 p->keep_tokens = 1;
23718 p->tokens = rb_ary_new();
23724#define rb_parser_end_seen_p ripper_parser_end_seen_p
23725#define rb_parser_encoding ripper_parser_encoding
23726#define rb_parser_get_yydebug ripper_parser_get_yydebug
23727#define rb_parser_set_yydebug ripper_parser_set_yydebug
23728#define rb_parser_get_debug_output ripper_parser_get_debug_output
23729#define rb_parser_set_debug_output ripper_parser_set_debug_output
23730static VALUE ripper_parser_end_seen_p(
VALUE vparser);
23731static VALUE ripper_parser_encoding(
VALUE vparser);
23732static VALUE ripper_parser_get_yydebug(
VALUE self);
23734static VALUE ripper_parser_get_debug_output(
VALUE self);
23735static VALUE ripper_parser_set_debug_output(
VALUE self,
VALUE output);
23744ripper_error_p(
VALUE vparser)
23749 return RBOOL(p->error_p);
23760rb_parser_end_seen_p(
VALUE vparser)
23765 return RBOOL(p->ruby__end__seen);
23775rb_parser_encoding(
VALUE vparser)
23780 return rb_enc_from_encoding(p->enc);
23791rb_parser_get_yydebug(
VALUE self)
23796 return RBOOL(p->debug);
23807rb_parser_set_yydebug(
VALUE self,
VALUE flag)
23812 p->debug =
RTEST(flag);
23823rb_parser_get_debug_output(
VALUE self)
23828 return p->debug_output;
23838rb_parser_set_debug_output(
VALUE self,
VALUE output)
23843 return p->debug_output = output;
23848#define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
23851#define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
23852#define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
23853 (new)->cnt = (cnt), (ptr))
23858 size_t cnt = HEAPCNT(1, size);
23862 return ADD2HEAP(n, cnt, ptr);
23866rb_parser_calloc(
struct parser_params *p,
size_t nelem,
size_t size)
23868 size_t cnt = HEAPCNT(nelem, size);
23870 void *ptr =
xcalloc(nelem, size);
23872 return ADD2HEAP(n, cnt, ptr);
23876rb_parser_realloc(
struct parser_params *p,
void *ptr,
size_t size)
23879 size_t cnt = HEAPCNT(1, size);
23881 if (ptr && (n = p->heap) != NULL) {
23883 if (n->ptr == ptr) {
23884 n->ptr = ptr =
xrealloc(ptr, size);
23885 if (n->cnt) n->cnt = cnt;
23888 }
while ((n = n->next) != NULL);
23892 return ADD2HEAP(n, cnt, ptr);
23900 while ((n = *prev) != NULL) {
23901 if (n->ptr == ptr) {
23911rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
23914 VALUE mesg = p->debug_buffer;
23920 if (RSTRING_END(mesg)[-1] ==
'\n') {
23922 p->debug_buffer =
Qnil;
23927parser_compile_error(
struct parser_params *p,
const char *fmt, ...)
23935 rb_syntax_error_append(p->error_buffer,
23936 p->ruby_sourcefile_string,
23937 p->ruby_sourceline,
23944count_char(
const char *str,
int c)
23947 while (str[n] == c) ++n;
23957RUBY_FUNC_EXPORTED
size_t
23958rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
23960 if (*yystr ==
'"') {
23961 size_t yyn = 0, bquote = 0;
23962 const char *yyp = yystr;
23968 bquote = count_char(yyp+1,
'`') + 1;
23969 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
23977 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
23978 if (yyres) memcpy(yyres + yyn, yyp, bquote);
23984 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
23985 if (yyres) memcpy(yyres + yyn, yyp, 3);
23990 goto do_not_strip_quotes;
23993 goto do_not_strip_quotes;
23996 if (*++yyp !=
'\\')
23997 goto do_not_strip_quotes;
24013 do_not_strip_quotes: ;
24016 if (!yyres)
return strlen(yystr);
24018 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
24028 if (x ==
Qfalse)
return x;
24029 if (x ==
Qtrue)
return x;
24030 if (
NIL_P(x))
return x;
24045 if (!nd_type_p((
NODE *)x, NODE_RIPPER)) {
24048 x = ((
NODE *)x)->nd_rval;
24054 if (!RBASIC_CLASS(x)) {
24056 (
void *)x, rb_builtin_type_name(
TYPE(x)));
24062#define validate(x) ((x) = get_value(x))
24067 return rb_funcall(p->value, mid, 0);
24074 return rb_funcall(p->value, mid, 1, a);
24082 return rb_funcall(p->value, mid, 2, a, b);
24091 return rb_funcall(p->value, mid, 3, a, b, c);
24101 return rb_funcall(p->value, mid, 4, a, b, c, d);
24112 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
24125 return rb_funcall(p->value, mid, 7, a, b, c, d, e, f, g);
24129ripper_get_id(
VALUE v)
24132 if (!RB_TYPE_P(v,
T_NODE))
return 0;
24134 if (!nd_type_p(nd, NODE_RIPPER))
return 0;
24139ripper_get_value(
VALUE v)
24142 if (UNDEF_P(v))
return Qnil;
24143 if (!RB_TYPE_P(v,
T_NODE))
return v;
24145 if (!nd_type_p(nd, NODE_RIPPER))
return Qnil;
24146 return nd->nd_rval;
24156ripper_compile_error(
struct parser_params *p,
const char *fmt, ...)
24161 va_start(args, fmt);
24164 rb_funcall(p->value, rb_intern(
"compile_error"), 1, str);
24174 "gets returned %"PRIsVALUE
" (expected String or nil)",
24187ripper_s_allocate(
VALUE klass)
24191 &parser_data_type, p);
24196#define ripper_initialized_p(r) ((r)->lex.input != 0)
24209ripper_initialize(
int argc,
VALUE *argv,
VALUE self)
24212 VALUE src, fname, lineno;
24215 rb_scan_args(argc, argv,
"12", &src, &fname, &lineno);
24216 if (RB_TYPE_P(src,
T_FILE)) {
24217 p->lex.gets = ripper_lex_io_get;
24220 p->lex.gets = ripper_lex_get_generic;
24224 p->lex.gets = lex_get_str;
24226 p->lex.input = src;
24228 if (
NIL_P(fname)) {
24229 fname = STR_NEW2(
"(ripper)");
24236 parser_initialize(p);
24238 p->ruby_sourcefile_string = fname;
24239 p->ruby_sourcefile = RSTRING_PTR(fname);
24240 p->ruby_sourceline =
NIL_P(lineno) ? 0 :
NUM2INT(lineno) - 1;
24246ripper_parse0(
VALUE parser_v)
24252 p->ast = rb_ast_new();
24253 ripper_yyparse((
void*)p);
24254 rb_ast_dispose(p->ast);
24260ripper_ensure(
VALUE parser_v)
24265 p->parsing_thread =
Qnil;
24276ripper_parse(
VALUE self)
24281 if (!ripper_initialized_p(p)) {
24284 if (!
NIL_P(p->parsing_thread)) {
24291 rb_ensure(ripper_parse0, self, ripper_ensure, self);
24304ripper_column(
VALUE self)
24310 if (!ripper_initialized_p(p)) {
24313 if (
NIL_P(p->parsing_thread))
return Qnil;
24314 col = p->lex.ptok - p->lex.pbeg;
24325ripper_filename(
VALUE self)
24330 if (!ripper_initialized_p(p)) {
24333 return p->ruby_sourcefile_string;
24344ripper_lineno(
VALUE self)
24349 if (!ripper_initialized_p(p)) {
24352 if (
NIL_P(p->parsing_thread))
return Qnil;
24353 return INT2NUM(p->ruby_sourceline);
24363ripper_state(
VALUE self)
24368 if (!ripper_initialized_p(p)) {
24371 if (
NIL_P(p->parsing_thread))
return Qnil;
24372 return INT2NUM(p->lex.state);
24382ripper_token(
VALUE self)
24388 if (!ripper_initialized_p(p)) {
24391 if (
NIL_P(p->parsing_thread))
return Qnil;
24392 pos = p->lex.ptok - p->lex.pbeg;
24393 len = p->lex.pcur - p->lex.ptok;
24403 if (UNDEF_P(obj)) {
24424ripper_lex_state_name(
VALUE self,
VALUE state)
24426 return rb_parser_lex_state_name(
NUM2INT(state));
24432 ripper_init_eventids1();
24433 ripper_init_eventids2();
24434 id_warn = rb_intern_const(
"warn");
24435 id_warning = rb_intern_const(
"warning");
24436 id_gets = rb_intern_const(
"gets");
24437 id_assoc = rb_intern_const(
"=>");
24478<% @exprs.each
do |expr, desc| -%>
24482 ripper_init_eventids1_table(Ripper);
24483 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.
VALUE rb_define_class(const char *name, VALUE super)
Defines a top-level class.
#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 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.
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.
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_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.
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)
#define RREGEXP_PTR(obj)
Convenient accessor macro.
#define StringValue(v)
Ensures that the parameter object is a String.
#define RSTRING_GETMEM(str, ptrvar, lenvar)
Convenient macro to obtain the contents and length at once.
#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.
uintptr_t VALUE
Type that represents a Ruby object.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
#define RBIMPL_WARNING_IGNORED(flag)
Suppresses a warning.
#define RBIMPL_WARNING_PUSH()
Pushes compiler warning state.
#define RBIMPL_WARNING_POP()
Pops compiler warning state.