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/error.h"
95 #include "internal/hash.h"
96 #include "internal/imemo.h"
97 #include "internal/io.h"
98 #include "internal/numeric.h"
99 #include "internal/parse.h"
100 #include "internal/rational.h"
101 #include "internal/re.h"
102 #include "internal/symbol.h"
103 #include "internal/thread.h"
104 #include "internal/variable.h"
109 #include "ruby/regex.h"
120 shareable_everything,
124 unsigned int in_defined: 1;
125 unsigned int in_kwarg: 1;
126 unsigned int in_argdef: 1;
127 unsigned int in_def: 1;
128 unsigned int in_class: 1;
129 BITFIELD(
enum shareability, shareable_constant_value, 2);
134 #define NO_LEX_CTXT (struct lex_context){0}
136 #define AREF(ary, i) RARRAY_AREF(ary, i)
138 #ifndef WARN_PAST_SCOPE
139 # define WARN_PAST_SCOPE 0
144 #define yydebug (p->debug)
146 #define YYMALLOC(size) rb_parser_malloc(p, (size))
147 #define YYREALLOC(ptr, size) rb_parser_realloc(p, (ptr), (size))
148 #define YYCALLOC(nelem, size) rb_parser_calloc(p, (nelem), (size))
149 #define YYFREE(ptr) rb_parser_free(p, (ptr))
150 #define YYFPRINTF rb_parser_printf
151 #define YY_LOCATION_PRINT(File, loc) \
152 rb_parser_printf(p, "%d.%d-%d.%d", \
153 (loc).beg_pos.lineno, (loc).beg_pos.column,\
154 (loc).end_pos.lineno, (loc).end_pos.column)
155 #define YYLLOC_DEFAULT(Current, Rhs, N) \
159 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
160 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
164 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
165 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
169 (((Msgid)[0] == 'm') && (strcmp((Msgid), "memory exhausted") == 0) ? \
170 "nesting too deep" : (Msgid))
172 #define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
173 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
174 #define RUBY_SET_YYLLOC_OF_NONE(Current) \
175 rb_parser_set_location_of_none(p, &(Current))
176 #define RUBY_SET_YYLLOC(Current) \
177 rb_parser_set_location(p, &(Current))
178 #define RUBY_INIT_YYLLOC() \
180 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
181 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
184 enum lex_state_bits {
202 #define DEF_EXPR(n) EXPR_##n = (1 << EXPR_##n##_bit)
216 EXPR_VALUE = EXPR_BEG,
217 EXPR_BEG_ANY = (EXPR_BEG | EXPR_MID | EXPR_CLASS),
218 EXPR_ARG_ANY = (EXPR_ARG | EXPR_CMDARG),
219 EXPR_END_ANY = (EXPR_END | EXPR_ENDARG | EXPR_ENDFN),
222 #define IS_lex_state_for(x, ls) ((x) & (ls))
223 #define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
224 #define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
225 #define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
227 # define SET_LEX_STATE(ls) \
228 parser_set_lex_state(p, ls, __LINE__)
229 static inline enum lex_state_e parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line);
231 typedef VALUE stack_type;
235 # define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
236 # define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
237 # define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
238 # define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
239 # define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
243 #define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
244 #define COND_POP() BITSTACK_POP(cond_stack)
245 #define COND_P() BITSTACK_SET_P(cond_stack)
246 #define COND_SET(n) BITSTACK_SET(cond_stack, (n))
250 #define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
251 #define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
252 #define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
253 #define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
272 NODE *outer, *inner, *current;
283 #define NUMPARAM_ID_P(id) numparam_id_p(id)
284 #define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - tNUMPARAM_1 + 1)
285 #define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 + (idx) - 1))
289 if (!is_local_id(
id))
return 0;
290 unsigned int idx = NUMPARAM_ID_TO_IDX(
id);
291 return idx > 0 && idx <= NUMPARAM_MAX;
295 #define DVARS_INHERIT ((void*)1)
296 #define DVARS_TOPSCOPE NULL
297 #define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
338 enum lex_state_e state;
346 stack_type cond_stack;
347 stack_type cmdarg_stack;
353 int heredoc_line_indent;
360 const char *ruby_sourcefile;
361 VALUE ruby_sourcefile_string;
365 VALUE compile_option;
379 unsigned int command_start:1;
380 unsigned int eofp: 1;
381 unsigned int ruby__end__seen: 1;
382 unsigned int debug: 1;
383 unsigned int has_shebang: 1;
384 unsigned int token_seen: 1;
385 unsigned int token_info_enabled: 1;
387 unsigned int past_scope_enabled: 1;
389 unsigned int error_p: 1;
390 unsigned int cr_seen: 1;
395 unsigned int do_print: 1;
396 unsigned int do_loop: 1;
397 unsigned int do_chomp: 1;
398 unsigned int do_split: 1;
399 unsigned int keep_script_lines: 1;
401 NODE *eval_tree_begin;
417 VALUE parsing_thread;
421 #define intern_cstr(n,l,en) rb_intern3(n,l,en)
423 #define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
424 #define STR_NEW0() rb_enc_str_new(0,0,p->enc)
425 #define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
426 #define STR_NEW3(ptr,len,e,func) parser_str_new((ptr),(len),(e),(func),p->enc)
427 #define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
433 p->pvtbl = st_init_numtable();
440 st_free_table(p->pvtbl);
455 if (p->pktbl) st_free_table(p->pktbl);
462 static
int parser_yyerror0(struct
parser_params*, const
char*);
463 #define yyerror0(msg) parser_yyerror0(p, (msg))
464 #define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
465 #define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
466 #define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
475 #define compile_for_eval (0)
477 #define compile_for_eval (p->parent_iseq != 0)
480 #define token_column ((int)(p->lex.ptok - p->lex.pbeg))
482 #define CALL_Q_P(q) ((q) == TOKEN2VAL(tANDDOT))
483 #define NODE_CALL_Q(q) (CALL_Q_P(q) ? NODE_QCALL : NODE_CALL)
484 #define NEW_QCALL(q,r,m,a,loc) NEW_NODE(NODE_CALL_Q(q),r,m,a,loc)
486 #define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
488 #define ANON_BLOCK_ID '&'
496 rb_ast_delete_node(p->ast, n);
507 rb_ast_add_mark_object(p->ast, obj);
516 #define rb_node_newnode(type, a1, a2, a3, loc) node_newnode(p, (type), (a1), (a2), (a3), (loc))
523 int node_id = p->node_id;
530 set_line_body(
NODE *body,
int line)
533 switch (nd_type(body)) {
536 nd_set_line(body, line);
540 #define yyparse ruby_yyparse
544 #define new_nil(loc) NEW_NIL(loc)
556 static NODE *remove_begin_all(
NODE*);
557 #define value_expr(node) value_expr_gen(p, (node))
581 static bool args_info_empty_p(
struct rb_args_info *args);
627 #define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
647 #define get_id(id) (id)
648 #define get_value(val) (val)
649 #define get_num(num) (num)
651 #define NODE_RIPPER NODE_CDECL
652 #define NEW_RIPPER(a,b,c,loc) (VALUE)NEW_CDECL(a,b,c,loc)
654 static inline int ripper_is_node_yylval(
VALUE n);
659 if (ripper_is_node_yylval(c)) c = RNODE(c)->nd_cval;
660 add_mark_object(p, b);
661 add_mark_object(p, c);
662 return NEW_RIPPER(a, b, c, &NULL_LOC);
666 ripper_is_node_yylval(
VALUE n)
671 #define value_expr(node) ((void)(node))
672 #define remove_begin(node) (node)
673 #define void_stmts(p,x) (x)
674 #define rb_dvar_defined(id, base) 0
675 #define rb_local_defined(id, base) 0
676 static ID ripper_get_id(
VALUE);
677 #define get_id(id) ripper_get_id(id)
679 #define get_value(val) ripper_get_value(val)
680 #define get_num(num) (int)get_id(num)
684 #define method_cond(p,node,loc) (node)
685 #define call_bin_op(p, recv,id,arg1,op_loc,loc) dispatch3(binary, (recv), STATIC_ID2SYM(id), (arg1))
686 #define match_op(p,node1,node2,op_loc,loc) call_bin_op(0, (node1), idEqTilde, (node2), op_loc, loc)
687 #define call_uni_op(p, recv,id,op_loc,loc) dispatch2(unary, STATIC_ID2SYM(id), (recv))
688 #define logop(p,id,node1,node2,op_loc,loc) call_bin_op(0, (node1), (id), (node2), op_loc, loc)
690 #define new_nil(loc) Qnil
707 RUBY_SYMBOL_EXPORT_BEGIN
710 enum lex_state_e rb_parser_trace_lex_state(
struct parser_params *,
enum lex_state_e,
enum lex_state_e,
int);
711 VALUE rb_parser_lex_state_name(
enum lex_state_e state);
712 void rb_parser_show_bitstack(
struct parser_params *, stack_type,
const char *,
int);
713 PRINTF_ARGS(
void rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...), 2, 3);
717 RUBY_SYMBOL_EXPORT_END
745 #define dyna_var(p, id) local_var(p, id)
756 # define METHOD_NOT idNOT
758 # define METHOD_NOT '!'
761 #define idFWD_REST '*'
762 #ifdef RUBY3_KEYWORDS
763 #define idFWD_KWREST idPow
765 #define idFWD_KWREST 0
767 #define idFWD_BLOCK '&'
769 #define RE_OPTION_ONCE (1<<16)
770 #define RE_OPTION_ENCODING_SHIFT 8
771 #define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
772 #define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
773 #define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
774 #define RE_OPTION_MASK 0xff
775 #define RE_OPTION_ARG_ENCODING_NONE 32
797 #define HERETERM_LENGTH_BITS ((SIZEOF_VALUE - 1) * CHAR_BIT - 1)
804 #if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
805 : HERETERM_LENGTH_BITS
806 # define HERETERM_LENGTH_MAX ((1U << HERETERM_LENGTH_BITS) - 1)
808 # define HERETERM_LENGTH_MAX UINT_MAX
811 #if HERETERM_LENGTH_BITS < SIZEOF_INT * CHAR_BIT
821 #define STRTERM_HEREDOC IMEMO_FL_USER0
833 rb_strterm_mark(
VALUE obj)
836 if (
RBASIC(obj)->flags & STRTERM_HEREDOC) {
843 #define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
844 size_t rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr);
846 #define TOKEN2ID(tok) ( \
847 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
848 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
849 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
850 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
851 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
852 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
853 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
858 #define RIPPER_VERSION "0.1.0"
860 static inline VALUE intern_sym(
const char *name);
862 #include "eventids1.c"
863 #include "eventids2.c"
874 #define dispatch0(n) ripper_dispatch0(p, TOKEN_PASTE(ripper_id_, n))
875 #define dispatch1(n,a) ripper_dispatch1(p, TOKEN_PASTE(ripper_id_, n), (a))
876 #define dispatch2(n,a,b) ripper_dispatch2(p, TOKEN_PASTE(ripper_id_, n), (a), (b))
877 #define dispatch3(n,a,b,c) ripper_dispatch3(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
878 #define dispatch4(n,a,b,c,d) ripper_dispatch4(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
879 #define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
880 #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))
882 #define yyparse ripper_yyparse
884 #define ID2VAL(id) STATIC_ID2SYM(id)
885 #define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
886 #define KWD2EID(t, v) ripper_new_yylval(p, keyword_##t, get_value(v), 0)
888 #define params_new(pars, opts, rest, pars2, kws, kwrest, blk) \
889 dispatch7(params, (pars), (opts), (rest), (pars2), (kws), (kwrest), (blk))
891 #define escape_Qundef(x) ((x)==Qundef ? Qnil : (x))
897 VALUE kw_args = t->u1.value, kw_rest_arg = t->u2.value, block = t->u3.value;
898 return params_new(pre_args, opt_args, rest_arg, post_args, kw_args, kw_rest_arg, escape_Qundef(block));
904 NODE *t = rb_node_newnode(NODE_ARGS_AUX, kw_args, kw_rest_arg, block, &NULL_LOC);
905 add_mark_object(p, kw_args);
906 add_mark_object(p, kw_rest_arg);
907 add_mark_object(p, block);
921 VALUE pre_args = t->u1.value, rest_arg = t->u2.value, post_args = t->u3.value;
923 if (!
NIL_P(pre_arg)) {
924 if (!
NIL_P(pre_args)) {
931 return dispatch4(aryptn, constant, pre_args, rest_arg, post_args);
940 rest_arg = dispatch1(var_field, rest_arg ? rest_arg :
Qnil);
946 t = rb_node_newnode(NODE_ARYPTN, pre_args, rest_arg, post_args, &NULL_LOC);
947 add_mark_object(p, pre_args);
948 add_mark_object(p, rest_arg);
949 add_mark_object(p, post_args);
957 VALUE pre_rest_arg = t->u1.value, args = t->u2.value, post_rest_arg = t->u3.value;
959 return dispatch4(fndptn, constant, pre_rest_arg, args, post_rest_arg);
967 pre_rest_arg = dispatch1(var_field, pre_rest_arg ? pre_rest_arg :
Qnil);
968 post_rest_arg = dispatch1(var_field, post_rest_arg ? post_rest_arg :
Qnil);
970 t = rb_node_newnode(NODE_FNDPTN, pre_rest_arg, args, post_rest_arg, &NULL_LOC);
971 add_mark_object(p, pre_rest_arg);
972 add_mark_object(p, args);
973 add_mark_object(p, post_rest_arg);
977 #define new_hash(p,h,l) rb_ary_new_from_args(0)
989 VALUE kw_args = t->u1.value, kw_rest_arg = t->u2.value;
990 return dispatch3(hshptn, constant, kw_args, kw_rest_arg);
998 kw_rest_arg = dispatch1(var_field, kw_rest_arg);
1003 t = rb_node_newnode(NODE_HSHPTN, kw_args, kw_rest_arg, 0, &NULL_LOC);
1005 add_mark_object(p, kw_args);
1006 add_mark_object(p, kw_rest_arg);
1010 #define new_defined(p,expr,loc) dispatch1(defined, (expr))
1015 #define ID2VAL(id) (id)
1016 #define TOKEN2VAL(t) ID2VAL(t)
1017 #define KWD2EID(t, v) keyword_##t
1022 body = remove_begin(body);
1023 reduce_nodes(p, &body);
1024 n->nd_defn = NEW_SCOPE(args, body, loc);
1026 nd_set_line(n->nd_defn, loc->end_pos.lineno);
1027 set_line_body(body, loc->beg_pos.lineno);
1035 YYLTYPE loc = code_loc_gen(mod_loc, res_loc);
1036 rescue = NEW_RESBODY(0, remove_begin(rescue), 0, &loc);
1037 loc.beg_pos = arg_loc->beg_pos;
1038 return NEW_RESCUE(arg, rescue, 0, &loc);
1046 YYSTYPE c = {.val = name->nd_cval};
1047 p->cur_arg = name->nd_vid;
1048 p->ctxt.in_def = c.ctxt.in_def;
1049 p->ctxt.shareable_constant_value = c.ctxt.shareable_constant_value;
1056 defn = defn->nd_defn;
1058 ID mid = defn->nd_mid;
1059 if (is_attrset_id(mid)) {
1060 yyerror1(loc,
"setter method cannot be defined in an endless method definition");
1062 token_info_drop(p,
"def", loc->beg_pos);
1068 # define ifndef_ripper(x) (x)
1071 # define Qnull Qundef
1072 # define ifndef_ripper(x)
1075 # define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
1076 # define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
1077 # define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
1078 # define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
1079 # define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
1080 # define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
1081 # define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
1082 # define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
1083 # define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
1084 # define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
1085 # define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1086 # define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
1087 # define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
1088 # define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
1089 # define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1090 # define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
1091 # define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
1092 # define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
1093 # define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
1094 # define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1096 static ID id_warn, id_warning, id_gets, id_assoc;
1097 # define ERR_MESG() STR_NEW2(mesg)
1098 # define WARN_S_L(s,l) STR_NEW(s,l)
1099 # define WARN_S(s) STR_NEW2(s)
1100 # define WARN_I(i) INT2NUM(i)
1101 # define WARN_ID(i) rb_id2str(i)
1102 # define WARN_IVAL(i) i
1103 # define PRIsWARN "s"
1104 # define rb_warn0L_experimental(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1105 # define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
1106 # define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
1107 # ifdef HAVE_VA_ARGS_MACRO
1108 # define WARN_CALL(...) rb_funcall(__VA_ARGS__)
1110 # define WARN_CALL rb_funcall
1112 # define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
1113 # define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
1114 # ifdef HAVE_VA_ARGS_MACRO
1115 # define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
1117 # define WARNING_CALL rb_funcall
1119 PRINTF_ARGS(
static void ripper_compile_error(
struct parser_params*,
const char *fmt, ...), 2, 3);
1120 # define compile_error ripper_compile_error
1122 # define WARN_S_L(s,l) s
1123 # define WARN_S(s) s
1124 # define WARN_I(i) i
1125 # define WARN_ID(i) rb_id2name(i)
1126 # define WARN_IVAL(i) NUM2INT(i)
1127 # define PRIsWARN PRIsVALUE
1128 # define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1129 # define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1130 # define WARN_CALL rb_compile_warn
1131 # define rb_warn0L_experimental(l,fmt) rb_category_compile_warn(RB_WARN_CATEGORY_EXPERIMENTAL, WARN_ARGS_L(l, fmt, 1))
1132 # define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1133 # define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1134 # define WARNING_CALL rb_compile_warning
1135 PRINTF_ARGS(
static void parser_compile_error(
struct parser_params*,
const char *fmt, ...), 2, 3);
1136 # define compile_error parser_compile_error
1139 #define WARN_EOL(tok) \
1140 (looking_at_eol_p(p) ? \
1141 (void)rb_warning0("`" tok "' at the end of line without an expression") : \
1145 #line 1146 "ripper.c"
1149 # define YY_CAST(Type, Val) static_cast<Type> (Val)
1150 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
1152 # define YY_CAST(Type, Val) ((Type) (Val))
1153 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
1157 # if defined __cplusplus
1158 # if 201103L <= __cplusplus
1159 # define YY_NULLPTR nullptr
1161 # define YY_NULLPTR 0
1164 # define YY_NULLPTR ((void*)0)
1181 # define YYTOKENTYPE
1188 keyword_class = 258,
1189 keyword_module = 259,
1191 keyword_undef = 261,
1192 keyword_begin = 262,
1193 keyword_rescue = 263,
1194 keyword_ensure = 264,
1197 keyword_unless = 267,
1199 keyword_elsif = 269,
1203 keyword_while = 273,
1204 keyword_until = 274,
1206 keyword_break = 276,
1209 keyword_retry = 279,
1212 keyword_do_cond = 282,
1213 keyword_do_block = 283,
1214 keyword_do_LAMBDA = 284,
1215 keyword_return = 285,
1216 keyword_yield = 286,
1217 keyword_super = 287,
1221 keyword_false = 291,
1226 modifier_unless = 296,
1227 modifier_while = 297,
1228 modifier_until = 298,
1229 modifier_rescue = 299,
1230 keyword_alias = 300,
1231 keyword_defined = 301,
1232 keyword_BEGIN = 302,
1234 keyword__LINE__ = 304,
1235 keyword__FILE__ = 305,
1236 keyword__ENCODING__ = 306,
1251 tSTRING_CONTENT = 321,
1297 tQSYMBOLS_BEG = 344,
1308 typedef enum yytokentype yytoken_kind_t;
1312 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1315 #line 1126 "ripper.y"
1322 const struct vtable *vars;
1326 #line 1325 "ripper.c"
1330 # define YYSTYPE_IS_TRIVIAL 1
1331 # define YYSTYPE_IS_DECLARED 1
1335 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1344 # define YYLTYPE_IS_DECLARED 1
1345 # define YYLTYPE_IS_TRIVIAL 1
1356 enum yysymbol_kind_t
1358 YYSYMBOL_YYEMPTY = -2,
1360 YYSYMBOL_YYerror = 1,
1361 YYSYMBOL_YYUNDEF = 2,
1362 YYSYMBOL_keyword_class = 3,
1363 YYSYMBOL_keyword_module = 4,
1364 YYSYMBOL_keyword_def = 5,
1365 YYSYMBOL_keyword_undef = 6,
1366 YYSYMBOL_keyword_begin = 7,
1367 YYSYMBOL_keyword_rescue = 8,
1368 YYSYMBOL_keyword_ensure = 9,
1369 YYSYMBOL_keyword_end = 10,
1370 YYSYMBOL_keyword_if = 11,
1371 YYSYMBOL_keyword_unless = 12,
1372 YYSYMBOL_keyword_then = 13,
1373 YYSYMBOL_keyword_elsif = 14,
1374 YYSYMBOL_keyword_else = 15,
1375 YYSYMBOL_keyword_case = 16,
1376 YYSYMBOL_keyword_when = 17,
1377 YYSYMBOL_keyword_while = 18,
1378 YYSYMBOL_keyword_until = 19,
1379 YYSYMBOL_keyword_for = 20,
1380 YYSYMBOL_keyword_break = 21,
1381 YYSYMBOL_keyword_next = 22,
1382 YYSYMBOL_keyword_redo = 23,
1383 YYSYMBOL_keyword_retry = 24,
1384 YYSYMBOL_keyword_in = 25,
1385 YYSYMBOL_keyword_do = 26,
1386 YYSYMBOL_keyword_do_cond = 27,
1387 YYSYMBOL_keyword_do_block = 28,
1388 YYSYMBOL_keyword_do_LAMBDA = 29,
1389 YYSYMBOL_keyword_return = 30,
1390 YYSYMBOL_keyword_yield = 31,
1391 YYSYMBOL_keyword_super = 32,
1392 YYSYMBOL_keyword_self = 33,
1393 YYSYMBOL_keyword_nil = 34,
1394 YYSYMBOL_keyword_true = 35,
1395 YYSYMBOL_keyword_false = 36,
1396 YYSYMBOL_keyword_and = 37,
1397 YYSYMBOL_keyword_or = 38,
1398 YYSYMBOL_keyword_not = 39,
1399 YYSYMBOL_modifier_if = 40,
1400 YYSYMBOL_modifier_unless = 41,
1401 YYSYMBOL_modifier_while = 42,
1402 YYSYMBOL_modifier_until = 43,
1403 YYSYMBOL_modifier_rescue = 44,
1404 YYSYMBOL_keyword_alias = 45,
1405 YYSYMBOL_keyword_defined = 46,
1406 YYSYMBOL_keyword_BEGIN = 47,
1407 YYSYMBOL_keyword_END = 48,
1408 YYSYMBOL_keyword__LINE__ = 49,
1409 YYSYMBOL_keyword__FILE__ = 50,
1410 YYSYMBOL_keyword__ENCODING__ = 51,
1411 YYSYMBOL_tIDENTIFIER = 52,
1413 YYSYMBOL_tGVAR = 54,
1414 YYSYMBOL_tIVAR = 55,
1415 YYSYMBOL_tCONSTANT = 56,
1416 YYSYMBOL_tCVAR = 57,
1417 YYSYMBOL_tLABEL = 58,
1418 YYSYMBOL_tINTEGER = 59,
1419 YYSYMBOL_tFLOAT = 60,
1420 YYSYMBOL_tRATIONAL = 61,
1421 YYSYMBOL_tIMAGINARY = 62,
1422 YYSYMBOL_tCHAR = 63,
1423 YYSYMBOL_tNTH_REF = 64,
1424 YYSYMBOL_tBACK_REF = 65,
1425 YYSYMBOL_tSTRING_CONTENT = 66,
1426 YYSYMBOL_tREGEXP_END = 67,
1428 YYSYMBOL_69_backslash_ = 69,
1430 YYSYMBOL_71_escaped_horizontal_tab_ = 71,
1431 YYSYMBOL_72_escaped_form_feed_ = 72,
1432 YYSYMBOL_73_escaped_carriage_return_ = 73,
1433 YYSYMBOL_74_escaped_vertical_tab_ = 74,
1434 YYSYMBOL_tUPLUS = 75,
1435 YYSYMBOL_tUMINUS = 76,
1443 YYSYMBOL_tANDOP = 84,
1444 YYSYMBOL_tOROP = 85,
1445 YYSYMBOL_tMATCH = 86,
1446 YYSYMBOL_tNMATCH = 87,
1447 YYSYMBOL_tDOT2 = 88,
1448 YYSYMBOL_tDOT3 = 89,
1449 YYSYMBOL_tBDOT2 = 90,
1450 YYSYMBOL_tBDOT3 = 91,
1451 YYSYMBOL_tAREF = 92,
1452 YYSYMBOL_tASET = 93,
1453 YYSYMBOL_tLSHFT = 94,
1454 YYSYMBOL_tRSHFT = 95,
1455 YYSYMBOL_tANDDOT = 96,
1456 YYSYMBOL_tCOLON2 = 97,
1457 YYSYMBOL_tCOLON3 = 98,
1458 YYSYMBOL_tOP_ASGN = 99,
1459 YYSYMBOL_tASSOC = 100,
1460 YYSYMBOL_tLPAREN = 101,
1461 YYSYMBOL_tLPAREN_ARG = 102,
1462 YYSYMBOL_tRPAREN = 103,
1463 YYSYMBOL_tLBRACK = 104,
1464 YYSYMBOL_tLBRACE = 105,
1465 YYSYMBOL_tLBRACE_ARG = 106,
1466 YYSYMBOL_tSTAR = 107,
1467 YYSYMBOL_tDSTAR = 108,
1468 YYSYMBOL_tAMPER = 109,
1469 YYSYMBOL_tLAMBDA = 110,
1470 YYSYMBOL_tSYMBEG = 111,
1471 YYSYMBOL_tSTRING_BEG = 112,
1472 YYSYMBOL_tXSTRING_BEG = 113,
1473 YYSYMBOL_tREGEXP_BEG = 114,
1474 YYSYMBOL_tWORDS_BEG = 115,
1475 YYSYMBOL_tQWORDS_BEG = 116,
1476 YYSYMBOL_tSYMBOLS_BEG = 117,
1477 YYSYMBOL_tQSYMBOLS_BEG = 118,
1478 YYSYMBOL_tSTRING_END = 119,
1479 YYSYMBOL_tSTRING_DEND = 120,
1480 YYSYMBOL_tSTRING_DBEG = 121,
1481 YYSYMBOL_tSTRING_DVAR = 122,
1482 YYSYMBOL_tLAMBEG = 123,
1483 YYSYMBOL_tLABEL_END = 124,
1484 YYSYMBOL_tLOWEST = 125,
1485 YYSYMBOL_126_ = 126,
1486 YYSYMBOL_127_ = 127,
1487 YYSYMBOL_128_ = 128,
1488 YYSYMBOL_129_ = 129,
1489 YYSYMBOL_130_ = 130,
1490 YYSYMBOL_131_ = 131,
1491 YYSYMBOL_132_ = 132,
1492 YYSYMBOL_133_ = 133,
1493 YYSYMBOL_134_ = 134,
1494 YYSYMBOL_135_ = 135,
1495 YYSYMBOL_136_ = 136,
1496 YYSYMBOL_137_ = 137,
1497 YYSYMBOL_138_ = 138,
1498 YYSYMBOL_tUMINUS_NUM = 139,
1499 YYSYMBOL_140_ = 140,
1500 YYSYMBOL_141_ = 141,
1501 YYSYMBOL_tLAST_TOKEN = 142,
1502 YYSYMBOL_143_ = 143,
1503 YYSYMBOL_144_ = 144,
1504 YYSYMBOL_145_ = 145,
1505 YYSYMBOL_146_ = 146,
1506 YYSYMBOL_147_ = 147,
1507 YYSYMBOL_148_ = 148,
1508 YYSYMBOL_149_ = 149,
1509 YYSYMBOL_150_ = 150,
1510 YYSYMBOL_151_ = 151,
1511 YYSYMBOL_152_ = 152,
1512 YYSYMBOL_153_n_ = 153,
1513 YYSYMBOL_YYACCEPT = 154,
1514 YYSYMBOL_program = 155,
1515 YYSYMBOL_156_1 = 156,
1516 YYSYMBOL_top_compstmt = 157,
1517 YYSYMBOL_top_stmts = 158,
1518 YYSYMBOL_top_stmt = 159,
1519 YYSYMBOL_begin_block = 160,
1520 YYSYMBOL_bodystmt = 161,
1521 YYSYMBOL_162_2 = 162,
1522 YYSYMBOL_compstmt = 163,
1523 YYSYMBOL_stmts = 164,
1524 YYSYMBOL_stmt_or_begin = 165,
1525 YYSYMBOL_166_3 = 166,
1526 YYSYMBOL_stmt = 167,
1527 YYSYMBOL_168_4 = 168,
1528 YYSYMBOL_command_asgn = 169,
1529 YYSYMBOL_command_rhs = 170,
1530 YYSYMBOL_expr = 171,
1531 YYSYMBOL_172_5 = 172,
1532 YYSYMBOL_173_6 = 173,
1533 YYSYMBOL_174_7 = 174,
1534 YYSYMBOL_175_8 = 175,
1535 YYSYMBOL_def_name = 176,
1536 YYSYMBOL_defn_head = 177,
1537 YYSYMBOL_defs_head = 178,
1538 YYSYMBOL_179_9 = 179,
1539 YYSYMBOL_expr_value = 180,
1540 YYSYMBOL_expr_value_do = 181,
1541 YYSYMBOL_182_10 = 182,
1542 YYSYMBOL_183_11 = 183,
1543 YYSYMBOL_command_call = 184,
1544 YYSYMBOL_block_command = 185,
1545 YYSYMBOL_cmd_brace_block = 186,
1546 YYSYMBOL_fcall = 187,
1547 YYSYMBOL_command = 188,
1548 YYSYMBOL_mlhs = 189,
1549 YYSYMBOL_mlhs_inner = 190,
1550 YYSYMBOL_mlhs_basic = 191,
1551 YYSYMBOL_mlhs_item = 192,
1552 YYSYMBOL_mlhs_head = 193,
1553 YYSYMBOL_mlhs_post = 194,
1554 YYSYMBOL_mlhs_node = 195,
1556 YYSYMBOL_cname = 197,
1557 YYSYMBOL_cpath = 198,
1558 YYSYMBOL_fname = 199,
1559 YYSYMBOL_fitem = 200,
1560 YYSYMBOL_undef_list = 201,
1561 YYSYMBOL_202_12 = 202,
1563 YYSYMBOL_reswords = 204,
1565 YYSYMBOL_206_13 = 206,
1566 YYSYMBOL_relop = 207,
1567 YYSYMBOL_rel_expr = 208,
1568 YYSYMBOL_lex_ctxt = 209,
1569 YYSYMBOL_arg_value = 210,
1570 YYSYMBOL_aref_args = 211,
1571 YYSYMBOL_arg_rhs = 212,
1572 YYSYMBOL_paren_args = 213,
1573 YYSYMBOL_opt_paren_args = 214,
1574 YYSYMBOL_opt_call_args = 215,
1575 YYSYMBOL_call_args = 216,
1576 YYSYMBOL_command_args = 217,
1577 YYSYMBOL_218_14 = 218,
1578 YYSYMBOL_block_arg = 219,
1579 YYSYMBOL_opt_block_arg = 220,
1580 YYSYMBOL_args = 221,
1581 YYSYMBOL_mrhs_arg = 222,
1582 YYSYMBOL_mrhs = 223,
1583 YYSYMBOL_primary = 224,
1584 YYSYMBOL_225_15 = 225,
1585 YYSYMBOL_226_16 = 226,
1586 YYSYMBOL_227_17 = 227,
1587 YYSYMBOL_228_18 = 228,
1588 YYSYMBOL_229_19 = 229,
1589 YYSYMBOL_230_20 = 230,
1590 YYSYMBOL_231_21 = 231,
1591 YYSYMBOL_232_22 = 232,
1592 YYSYMBOL_233_23 = 233,
1593 YYSYMBOL_primary_value = 234,
1594 YYSYMBOL_k_begin = 235,
1595 YYSYMBOL_k_if = 236,
1596 YYSYMBOL_k_unless = 237,
1597 YYSYMBOL_k_while = 238,
1598 YYSYMBOL_k_until = 239,
1599 YYSYMBOL_k_case = 240,
1600 YYSYMBOL_k_for = 241,
1601 YYSYMBOL_k_class = 242,
1602 YYSYMBOL_k_module = 243,
1603 YYSYMBOL_k_def = 244,
1604 YYSYMBOL_k_do = 245,
1605 YYSYMBOL_k_do_block = 246,
1606 YYSYMBOL_k_rescue = 247,
1607 YYSYMBOL_k_ensure = 248,
1608 YYSYMBOL_k_when = 249,
1609 YYSYMBOL_k_else = 250,
1610 YYSYMBOL_k_elsif = 251,
1611 YYSYMBOL_k_end = 252,
1612 YYSYMBOL_k_return = 253,
1613 YYSYMBOL_then = 254,
1615 YYSYMBOL_if_tail = 256,
1616 YYSYMBOL_opt_else = 257,
1617 YYSYMBOL_for_var = 258,
1618 YYSYMBOL_f_marg = 259,
1619 YYSYMBOL_f_marg_list = 260,
1620 YYSYMBOL_f_margs = 261,
1621 YYSYMBOL_f_rest_marg = 262,
1622 YYSYMBOL_f_any_kwrest = 263,
1623 YYSYMBOL_f_eq = 264,
1624 YYSYMBOL_265_24 = 265,
1625 YYSYMBOL_block_args_tail = 266,
1626 YYSYMBOL_opt_block_args_tail = 267,
1627 YYSYMBOL_excessed_comma = 268,
1628 YYSYMBOL_block_param = 269,
1629 YYSYMBOL_opt_block_param = 270,
1630 YYSYMBOL_block_param_def = 271,
1631 YYSYMBOL_opt_bv_decl = 272,
1632 YYSYMBOL_bv_decls = 273,
1633 YYSYMBOL_bvar = 274,
1634 YYSYMBOL_lambda = 275,
1635 YYSYMBOL_276_25 = 276,
1636 YYSYMBOL_277_26 = 277,
1637 YYSYMBOL_278_27 = 278,
1638 YYSYMBOL_279_28 = 279,
1639 YYSYMBOL_f_larglist = 280,
1640 YYSYMBOL_lambda_body = 281,
1641 YYSYMBOL_do_block = 282,
1642 YYSYMBOL_block_call = 283,
1643 YYSYMBOL_method_call = 284,
1644 YYSYMBOL_brace_block = 285,
1645 YYSYMBOL_brace_body = 286,
1646 YYSYMBOL_287_29 = 287,
1647 YYSYMBOL_288_30 = 288,
1648 YYSYMBOL_289_31 = 289,
1649 YYSYMBOL_do_body = 290,
1650 YYSYMBOL_291_32 = 291,
1651 YYSYMBOL_292_33 = 292,
1652 YYSYMBOL_293_34 = 293,
1653 YYSYMBOL_case_args = 294,
1654 YYSYMBOL_case_body = 295,
1655 YYSYMBOL_cases = 296,
1656 YYSYMBOL_p_case_body = 297,
1657 YYSYMBOL_298_35 = 298,
1658 YYSYMBOL_299_36 = 299,
1659 YYSYMBOL_300_37 = 300,
1660 YYSYMBOL_p_cases = 301,
1661 YYSYMBOL_p_top_expr = 302,
1662 YYSYMBOL_p_top_expr_body = 303,
1663 YYSYMBOL_p_expr = 304,
1664 YYSYMBOL_p_as = 305,
1665 YYSYMBOL_p_alt = 306,
1666 YYSYMBOL_p_lparen = 307,
1667 YYSYMBOL_p_lbracket = 308,
1668 YYSYMBOL_p_expr_basic = 309,
1669 YYSYMBOL_310_38 = 310,
1670 YYSYMBOL_311_39 = 311,
1671 YYSYMBOL_p_args = 312,
1672 YYSYMBOL_p_args_head = 313,
1673 YYSYMBOL_p_args_tail = 314,
1674 YYSYMBOL_p_find = 315,
1675 YYSYMBOL_p_rest = 316,
1676 YYSYMBOL_p_args_post = 317,
1677 YYSYMBOL_p_arg = 318,
1678 YYSYMBOL_p_kwargs = 319,
1679 YYSYMBOL_p_kwarg = 320,
1680 YYSYMBOL_p_kw = 321,
1681 YYSYMBOL_p_kw_label = 322,
1682 YYSYMBOL_p_kwrest = 323,
1683 YYSYMBOL_p_kwnorest = 324,
1684 YYSYMBOL_p_any_kwrest = 325,
1685 YYSYMBOL_p_value = 326,
1686 YYSYMBOL_p_primitive = 327,
1687 YYSYMBOL_p_variable = 328,
1688 YYSYMBOL_p_var_ref = 329,
1689 YYSYMBOL_p_expr_ref = 330,
1690 YYSYMBOL_p_const = 331,
1691 YYSYMBOL_opt_rescue = 332,
1692 YYSYMBOL_exc_list = 333,
1693 YYSYMBOL_exc_var = 334,
1694 YYSYMBOL_opt_ensure = 335,
1695 YYSYMBOL_literal = 336,
1696 YYSYMBOL_strings = 337,
1697 YYSYMBOL_string = 338,
1698 YYSYMBOL_string1 = 339,
1699 YYSYMBOL_xstring = 340,
1700 YYSYMBOL_regexp = 341,
1701 YYSYMBOL_words = 342,
1702 YYSYMBOL_word_list = 343,
1703 YYSYMBOL_word = 344,
1704 YYSYMBOL_symbols = 345,
1705 YYSYMBOL_symbol_list = 346,
1706 YYSYMBOL_qwords = 347,
1707 YYSYMBOL_qsymbols = 348,
1708 YYSYMBOL_qword_list = 349,
1709 YYSYMBOL_qsym_list = 350,
1710 YYSYMBOL_string_contents = 351,
1711 YYSYMBOL_xstring_contents = 352,
1712 YYSYMBOL_regexp_contents = 353,
1713 YYSYMBOL_string_content = 354,
1714 YYSYMBOL_355_40 = 355,
1715 YYSYMBOL_356_41 = 356,
1716 YYSYMBOL_357_42 = 357,
1717 YYSYMBOL_358_43 = 358,
1718 YYSYMBOL_359_44 = 359,
1719 YYSYMBOL_360_45 = 360,
1720 YYSYMBOL_string_dvar = 361,
1721 YYSYMBOL_symbol = 362,
1722 YYSYMBOL_ssym = 363,
1724 YYSYMBOL_dsym = 365,
1725 YYSYMBOL_numeric = 366,
1726 YYSYMBOL_simple_numeric = 367,
1727 YYSYMBOL_nonlocal_var = 368,
1728 YYSYMBOL_user_variable = 369,
1729 YYSYMBOL_keyword_variable = 370,
1730 YYSYMBOL_var_ref = 371,
1731 YYSYMBOL_var_lhs = 372,
1732 YYSYMBOL_backref = 373,
1733 YYSYMBOL_superclass = 374,
1734 YYSYMBOL_375_46 = 375,
1735 YYSYMBOL_f_opt_paren_args = 376,
1736 YYSYMBOL_f_paren_args = 377,
1737 YYSYMBOL_f_arglist = 378,
1738 YYSYMBOL_379_47 = 379,
1739 YYSYMBOL_args_tail = 380,
1740 YYSYMBOL_opt_args_tail = 381,
1741 YYSYMBOL_f_args = 382,
1742 YYSYMBOL_args_forward = 383,
1743 YYSYMBOL_f_bad_arg = 384,
1744 YYSYMBOL_f_norm_arg = 385,
1745 YYSYMBOL_f_arg_asgn = 386,
1746 YYSYMBOL_f_arg_item = 387,
1747 YYSYMBOL_f_arg = 388,
1748 YYSYMBOL_f_label = 389,
1749 YYSYMBOL_f_kw = 390,
1750 YYSYMBOL_f_block_kw = 391,
1751 YYSYMBOL_f_block_kwarg = 392,
1752 YYSYMBOL_f_kwarg = 393,
1753 YYSYMBOL_kwrest_mark = 394,
1754 YYSYMBOL_f_no_kwarg = 395,
1755 YYSYMBOL_f_kwrest = 396,
1756 YYSYMBOL_f_opt = 397,
1757 YYSYMBOL_f_block_opt = 398,
1758 YYSYMBOL_f_block_optarg = 399,
1759 YYSYMBOL_f_optarg = 400,
1760 YYSYMBOL_restarg_mark = 401,
1761 YYSYMBOL_f_rest_arg = 402,
1762 YYSYMBOL_blkarg_mark = 403,
1763 YYSYMBOL_f_block_arg = 404,
1764 YYSYMBOL_opt_f_block_arg = 405,
1765 YYSYMBOL_singleton = 406,
1766 YYSYMBOL_407_48 = 407,
1767 YYSYMBOL_assoc_list = 408,
1768 YYSYMBOL_assocs = 409,
1769 YYSYMBOL_assoc = 410,
1770 YYSYMBOL_operation = 411,
1771 YYSYMBOL_operation2 = 412,
1772 YYSYMBOL_operation3 = 413,
1773 YYSYMBOL_dot_or_colon = 414,
1774 YYSYMBOL_call_op = 415,
1775 YYSYMBOL_call_op2 = 416,
1776 YYSYMBOL_opt_terms = 417,
1777 YYSYMBOL_opt_nl = 418,
1778 YYSYMBOL_rparen = 419,
1779 YYSYMBOL_rbracket = 420,
1780 YYSYMBOL_rbrace = 421,
1781 YYSYMBOL_trailer = 422,
1782 YYSYMBOL_term = 423,
1783 YYSYMBOL_terms = 424,
1786 typedef enum yysymbol_kind_t yysymbol_kind_t;
1799 #ifndef __PTRDIFF_MAX__
1800 # include <limits.h>
1801 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1802 # include <stdint.h>
1803 # define YY_STDINT_H
1812 #ifdef __INT_LEAST8_MAX__
1813 typedef __INT_LEAST8_TYPE__ yytype_int8;
1814 #elif defined YY_STDINT_H
1815 typedef int_least8_t yytype_int8;
1817 typedef signed char yytype_int8;
1820 #ifdef __INT_LEAST16_MAX__
1821 typedef __INT_LEAST16_TYPE__ yytype_int16;
1822 #elif defined YY_STDINT_H
1823 typedef int_least16_t yytype_int16;
1825 typedef short yytype_int16;
1834 # undef UINT_LEAST8_MAX
1835 # undef UINT_LEAST16_MAX
1836 # define UINT_LEAST8_MAX 255
1837 # define UINT_LEAST16_MAX 65535
1840 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
1841 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
1842 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
1843 && UINT_LEAST8_MAX <= INT_MAX)
1844 typedef uint_least8_t yytype_uint8;
1845 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
1846 typedef unsigned char yytype_uint8;
1848 typedef short yytype_uint8;
1851 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
1852 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
1853 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
1854 && UINT_LEAST16_MAX <= INT_MAX)
1855 typedef uint_least16_t yytype_uint16;
1856 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
1857 typedef unsigned short yytype_uint16;
1859 typedef int yytype_uint16;
1863 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
1864 # define YYPTRDIFF_T __PTRDIFF_TYPE__
1865 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
1866 # elif defined PTRDIFF_MAX
1868 # include <stddef.h>
1870 # define YYPTRDIFF_T ptrdiff_t
1871 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
1873 # define YYPTRDIFF_T long
1874 # define YYPTRDIFF_MAXIMUM LONG_MAX
1879 # ifdef __SIZE_TYPE__
1880 # define YYSIZE_T __SIZE_TYPE__
1881 # elif defined size_t
1882 # define YYSIZE_T size_t
1883 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1884 # include <stddef.h>
1885 # define YYSIZE_T size_t
1887 # define YYSIZE_T unsigned
1891 #define YYSIZE_MAXIMUM \
1892 YY_CAST (YYPTRDIFF_T, \
1893 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
1894 ? YYPTRDIFF_MAXIMUM \
1895 : YY_CAST (YYSIZE_T, -1)))
1897 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
1901 typedef yytype_int16 yy_state_t;
1904 typedef int yy_state_fast_t;
1907 # if defined YYENABLE_NLS && YYENABLE_NLS
1909 # include <libintl.h>
1910 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1914 # define YY_(Msgid) Msgid
1919 #ifndef YY_ATTRIBUTE_PURE
1920 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
1921 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
1923 # define YY_ATTRIBUTE_PURE
1927 #ifndef YY_ATTRIBUTE_UNUSED
1928 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
1929 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1931 # define YY_ATTRIBUTE_UNUSED
1936 #if ! defined lint || defined __GNUC__
1937 # define YY_USE(E) ((void) (E))
1943 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
1944 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
1945 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1946 _Pragma ("GCC diagnostic push") \
1947 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
1949 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1950 _Pragma ("GCC diagnostic push") \
1951 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
1952 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1954 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1955 _Pragma ("GCC diagnostic pop")
1957 # define YY_INITIAL_VALUE(Value) Value
1959 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1960 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1961 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
1963 #ifndef YY_INITIAL_VALUE
1964 # define YY_INITIAL_VALUE(Value)
1967 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1968 # define YY_IGNORE_USELESS_CAST_BEGIN \
1969 _Pragma ("GCC diagnostic push") \
1970 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1971 # define YY_IGNORE_USELESS_CAST_END \
1972 _Pragma ("GCC diagnostic pop")
1974 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
1975 # define YY_IGNORE_USELESS_CAST_BEGIN
1976 # define YY_IGNORE_USELESS_CAST_END
1980 #define YY_ASSERT(E) ((void) (0 && (E)))
1986 # ifdef YYSTACK_USE_ALLOCA
1987 # if YYSTACK_USE_ALLOCA
1989 # define YYSTACK_ALLOC __builtin_alloca
1990 # elif defined __BUILTIN_VA_ARG_INCR
1991 # include <alloca.h>
1993 # define YYSTACK_ALLOC __alloca
1994 # elif defined _MSC_VER
1995 # include <malloc.h>
1996 # define alloca _alloca
1998 # define YYSTACK_ALLOC alloca
1999 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
2000 # include <stdlib.h>
2002 # ifndef EXIT_SUCCESS
2003 # define EXIT_SUCCESS 0
2010 # ifdef YYSTACK_ALLOC
2012 # define YYSTACK_FREE(Ptr) do { ; } while (0)
2013 # ifndef YYSTACK_ALLOC_MAXIMUM
2018 # define YYSTACK_ALLOC_MAXIMUM 4032
2021 # define YYSTACK_ALLOC YYMALLOC
2022 # define YYSTACK_FREE YYFREE
2023 # ifndef YYSTACK_ALLOC_MAXIMUM
2024 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
2026 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
2027 && ! ((defined YYMALLOC || defined malloc) \
2028 && (defined YYFREE || defined free)))
2029 # include <stdlib.h>
2030 # ifndef EXIT_SUCCESS
2031 # define EXIT_SUCCESS 0
2035 # define YYMALLOC malloc
2036 # if ! defined malloc && ! defined EXIT_SUCCESS
2037 void *malloc (YYSIZE_T);
2041 # define YYFREE free
2042 # if ! defined free && ! defined EXIT_SUCCESS
2049 #if (! defined yyoverflow \
2050 && (! defined __cplusplus \
2051 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
2052 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
2057 yy_state_t yyss_alloc;
2063 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
2067 # define YYSTACK_BYTES(N) \
2068 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
2069 + YYSIZEOF (YYLTYPE)) \
2070 + 2 * YYSTACK_GAP_MAXIMUM)
2072 # define YYCOPY_NEEDED 1
2079 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
2082 YYPTRDIFF_T yynewbytes; \
2083 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
2084 Stack = &yyptr->Stack_alloc; \
2085 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
2086 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
2092 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
2096 # if defined __GNUC__ && 1 < __GNUC__
2097 # define YYCOPY(Dst, Src, Count) \
2098 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
2100 # define YYCOPY(Dst, Src, Count) \
2104 for (yyi = 0; yyi < (Count); yyi++) \
2105 (Dst)[yyi] = (Src)[yyi]; \
2115 #define YYLAST 15161
2118 #define YYNTOKENS 154
2122 #define YYNRULES 785
2124 #define YYNSTATES 1309
2127 #define YYMAXUTOK 353
2132 #define YYTRANSLATE(YYX) \
2133 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
2134 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
2139 static const yytype_uint8 yytranslate[] =
2141 0, 2, 2, 2, 2, 2, 2, 2, 2, 71,
2142 153, 74, 72, 73, 2, 2, 2, 2, 2, 2,
2143 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2144 2, 2, 152, 140, 2, 2, 2, 138, 133, 2,
2145 148, 149, 136, 134, 146, 135, 68, 137, 2, 2,
2146 2, 2, 2, 2, 2, 2, 2, 2, 128, 151,
2147 130, 126, 129, 127, 2, 2, 2, 2, 2, 2,
2148 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2149 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2150 2, 145, 69, 150, 132, 2, 147, 2, 2, 2,
2151 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2152 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2153 2, 2, 2, 143, 131, 144, 141, 2, 88, 89,
2154 90, 91, 75, 76, 77, 78, 94, 95, 83, 82,
2155 79, 80, 81, 86, 87, 92, 93, 97, 84, 85,
2156 96, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2157 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2158 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2159 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2160 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2161 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2162 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2163 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2164 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2165 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2166 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
2167 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2168 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2169 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2170 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2171 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
2172 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
2173 65, 66, 67, 70, 98, 99, 100, 101, 102, 103,
2174 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
2175 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
2181 static const yytype_int16 yyrline[] =
2183 0, 1327, 1327, 1327, 1353, 1359, 1366, 1373, 1380, 1386,
2184 1387, 1393, 1406, 1404, 1415, 1426, 1432, 1439, 1446, 1453,
2185 1459, 1464, 1463, 1473, 1473, 1480, 1487, 1497, 1506, 1513,
2186 1521, 1529, 1541, 1553, 1563, 1577, 1578, 1586, 1593, 1601,
2187 1608, 1611, 1618, 1625, 1633, 1640, 1647, 1655, 1662, 1673,
2188 1685, 1698, 1712, 1722, 1727, 1736, 1739, 1740, 1744, 1748,
2189 1752, 1757, 1765, 1756, 1779, 1787, 1778, 1800, 1803, 1820,
2190 1830, 1829, 1848, 1855, 1855, 1855, 1861, 1862, 1865, 1866,
2191 1875, 1885, 1895, 1904, 1915, 1922, 1929, 1936, 1943, 1951,
2192 1959, 1966, 1973, 1982, 1983, 1992, 1993, 2002, 2009, 2016,
2193 2023, 2030, 2037, 2044, 2051, 2058, 2065, 2074, 2075, 2084,
2194 2091, 2100, 2107, 2116, 2123, 2130, 2137, 2147, 2154, 2164,
2195 2171, 2178, 2188, 2195, 2202, 2209, 2216, 2223, 2230, 2237,
2196 2244, 2254, 2262, 2265, 2272, 2279, 2288, 2289, 2290, 2291,
2197 2296, 2299, 2306, 2309, 2316, 2316, 2326, 2327, 2328, 2329,
2198 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339,
2199 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349,
2200 2350, 2351, 2352, 2353, 2354, 2355, 2358, 2358, 2358, 2359,
2201 2359, 2360, 2360, 2360, 2361, 2361, 2361, 2361, 2362, 2362,
2202 2362, 2362, 2363, 2363, 2363, 2364, 2364, 2364, 2364, 2365,
2203 2365, 2365, 2365, 2366, 2366, 2366, 2366, 2367, 2367, 2367,
2204 2367, 2368, 2368, 2368, 2368, 2369, 2369, 2372, 2379, 2386,
2205 2393, 2400, 2407, 2414, 2422, 2430, 2438, 2447, 2456, 2464,
2206 2472, 2480, 2488, 2492, 2496, 2500, 2504, 2508, 2512, 2516,
2207 2520, 2524, 2528, 2532, 2536, 2540, 2541, 2545, 2549, 2553,
2208 2557, 2561, 2565, 2569, 2573, 2577, 2581, 2585, 2585, 2590,
2209 2599, 2610, 2622, 2635, 2649, 2655, 2656, 2657, 2658, 2661,
2210 2665, 2672, 2676, 2682, 2689, 2690, 2694, 2701, 2710, 2715,
2211 2725, 2732, 2744, 2758, 2759, 2762, 2763, 2764, 2768, 2775,
2212 2784, 2792, 2799, 2807, 2815, 2819, 2819, 2856, 2863, 2876,
2213 2880, 2887, 2894, 2901, 2908, 2918, 2919, 2923, 2930, 2937,
2214 2946, 2947, 2948, 2949, 2950, 2951, 2952, 2953, 2954, 2955,
2215 2956, 2964, 2963, 2978, 2978, 2985, 2985, 2993, 3001, 3008,
2216 3015, 3022, 3030, 3037, 3044, 3051, 3058, 3058, 3063, 3067,
2217 3071, 3078, 3079, 3087, 3088, 3099, 3110, 3120, 3131, 3130,
2218 3147, 3146, 3161, 3170, 3213, 3212, 3236, 3235, 3258, 3257,
2219 3280, 3292, 3306, 3313, 3320, 3327, 3336, 3343, 3349, 3366,
2220 3372, 3378, 3384, 3390, 3396, 3403, 3410, 3417, 3423, 3429,
2221 3435, 3441, 3447, 3462, 3469, 3475, 3482, 3483, 3484, 3487,
2222 3488, 3491, 3492, 3504, 3505, 3514, 3515, 3518, 3526, 3535,
2223 3542, 3551, 3558, 3565, 3572, 3579, 3588, 3596, 3605, 3606,
2224 3609, 3609, 3611, 3615, 3619, 3623, 3629, 3634, 3639, 3649,
2225 3653, 3657, 3661, 3665, 3669, 3674, 3678, 3682, 3686, 3690,
2226 3694, 3698, 3702, 3706, 3712, 3713, 3719, 3729, 3742, 3746,
2227 3755, 3757, 3761, 3766, 3773, 3779, 3783, 3787, 3772, 3812,
2228 3821, 3832, 3837, 3843, 3853, 3867, 3874, 3881, 3890, 3899,
2229 3907, 3915, 3922, 3930, 3938, 3945, 3952, 3965, 3973, 3983,
2230 3984, 3988, 3983, 4005, 4006, 4010, 4005, 4029, 4037, 4044,
2231 4052, 4061, 4073, 4074, 4078, 4085, 4089, 4077, 4104, 4105,
2232 4108, 4109, 4117, 4127, 4128, 4133, 4141, 4145, 4149, 4155,
2233 4158, 4167, 4170, 4177, 4180, 4181, 4183, 4184, 4185, 4194,
2234 4203, 4212, 4217, 4226, 4235, 4244, 4249, 4253, 4257, 4263,
2235 4262, 4274, 4279, 4279, 4286, 4295, 4299, 4308, 4312, 4316,
2236 4320, 4324, 4327, 4331, 4340, 4344, 4350, 4360, 4364, 4370,
2237 4371, 4380, 4389, 4393, 4397, 4401, 4407, 4409, 4418, 4426,
2238 4440, 4441, 4464, 4468, 4474, 4480, 4481, 4484, 4485, 4494,
2239 4503, 4511, 4519, 4520, 4521, 4522, 4530, 4540, 4541, 4542,
2240 4543, 4544, 4545, 4546, 4547, 4548, 4555, 4558, 4568, 4579,
2241 4588, 4597, 4604, 4611, 4620, 4632, 4635, 4642, 4649, 4652,
2242 4656, 4659, 4666, 4669, 4670, 4673, 4690, 4691, 4692, 4701,
2243 4711, 4720, 4726, 4736, 4742, 4751, 4753, 4762, 4772, 4778,
2244 4787, 4796, 4806, 4812, 4822, 4828, 4838, 4848, 4867, 4873,
2245 4883, 4893, 4934, 4937, 4936, 4953, 4957, 4962, 4966, 4970,
2246 4952, 4991, 4998, 5005, 5012, 5015, 5016, 5019, 5029, 5030,
2247 5031, 5032, 5035, 5045, 5046, 5056, 5057, 5058, 5059, 5062,
2248 5063, 5064, 5067, 5068, 5069, 5070, 5071, 5074, 5075, 5076,
2249 5077, 5078, 5079, 5080, 5083, 5096, 5105, 5112, 5121, 5122,
2250 5126, 5125, 5135, 5143, 5144, 5152, 5164, 5165, 5165, 5181,
2251 5185, 5189, 5193, 5197, 5204, 5209, 5214, 5218, 5222, 5226,
2252 5230, 5234, 5238, 5242, 5246, 5250, 5254, 5258, 5262, 5266,
2253 5271, 5277, 5286, 5295, 5304, 5313, 5324, 5325, 5333, 5342,
2254 5350, 5371, 5373, 5386, 5396, 5405, 5416, 5424, 5434, 5441,
2255 5451, 5458, 5467, 5468, 5471, 5479, 5487, 5497, 5508, 5519,
2256 5526, 5535, 5542, 5551, 5552, 5555, 5563, 5573, 5574, 5577,
2257 5585, 5595, 5599, 5605, 5610, 5610, 5634, 5635, 5644, 5646,
2258 5669, 5680, 5687, 5696, 5704, 5723, 5724, 5725, 5728, 5729,
2259 5730, 5731, 5734, 5735, 5736, 5739, 5740, 5743, 5744, 5747,
2260 5748, 5751, 5752, 5755, 5756, 5759, 5762, 5765, 5768, 5769,
2261 5770, 5773, 5774, 5777, 5778, 5782
2266 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2271 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2275 static const char *
const yytname[] =
2277 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"`class'\"",
2278 "\"`module'\"",
"\"`def'\"",
"\"`undef'\"",
"\"`begin'\"",
2279 "\"`rescue'\"",
"\"`ensure'\"",
"\"`end'\"",
"\"`if'\"",
"\"`unless'\"",
2280 "\"`then'\"",
"\"`elsif'\"",
"\"`else'\"",
"\"`case'\"",
"\"`when'\"",
2281 "\"`while'\"",
"\"`until'\"",
"\"`for'\"",
"\"`break'\"",
"\"`next'\"",
2282 "\"`redo'\"",
"\"`retry'\"",
"\"`in'\"",
"\"`do'\"",
2283 "\"`do' for condition\"",
"\"`do' for block\"",
"\"`do' for lambda\"",
2284 "\"`return'\"",
"\"`yield'\"",
"\"`super'\"",
"\"`self'\"",
"\"`nil'\"",
2285 "\"`true'\"",
"\"`false'\"",
"\"`and'\"",
"\"`or'\"",
"\"`not'\"",
2286 "\"`if' modifier\"",
"\"`unless' modifier\"",
"\"`while' modifier\"",
2287 "\"`until' modifier\"",
"\"`rescue' modifier\"",
"\"`alias'\"",
2288 "\"`defined?'\"",
"\"`BEGIN'\"",
"\"`END'\"",
"\"`__LINE__'\"",
2289 "\"`__FILE__'\"",
"\"`__ENCODING__'\"",
"\"local variable or method\"",
2290 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
2291 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
2292 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
2293 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
2294 "\"literal content\"",
"tREGEXP_END",
"'.'",
"\"backslash\"",
2295 "\"escaped space\"",
"\"escaped horizontal tab\"",
2296 "\"escaped form feed\"",
"\"escaped carriage return\"",
2297 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
2298 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
2299 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
2300 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
2301 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
2302 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
2303 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
2304 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
2305 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
2306 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"tSTRING_DBEG",
2307 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tLOWEST",
"'='",
"'?'",
"':'",
2308 "'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
2309 "tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"','",
2310 "'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
"'\\n'",
"$accept",
"program",
2311 "$@1",
"top_compstmt",
"top_stmts",
"top_stmt",
"begin_block",
2312 "bodystmt",
"$@2",
"compstmt",
"stmts",
"stmt_or_begin",
"$@3",
"stmt",
2313 "$@4",
"command_asgn",
"command_rhs",
"expr",
"@5",
"@6",
"@7",
"@8",
2314 "def_name",
"defn_head",
"defs_head",
"$@9",
"expr_value",
2315 "expr_value_do",
"$@10",
"$@11",
"command_call",
"block_command",
2316 "cmd_brace_block",
"fcall",
"command",
"mlhs",
"mlhs_inner",
2317 "mlhs_basic",
"mlhs_item",
"mlhs_head",
"mlhs_post",
"mlhs_node",
"lhs",
2318 "cname",
"cpath",
"fname",
"fitem",
"undef_list",
"$@12",
"op",
2319 "reswords",
"arg",
"$@13",
"relop",
"rel_expr",
"lex_ctxt",
"arg_value",
2320 "aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
"opt_call_args",
2321 "call_args",
"command_args",
"$@14",
"block_arg",
"opt_block_arg",
2322 "args",
"mrhs_arg",
"mrhs",
"primary",
"$@15",
"$@16",
"$@17",
"$@18",
2323 "@19",
"@20",
"$@21",
"$@22",
"$@23",
"primary_value",
"k_begin",
"k_if",
2324 "k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
2325 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
2326 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"then",
"do",
2327 "if_tail",
"opt_else",
"for_var",
"f_marg",
"f_marg_list",
"f_margs",
2328 "f_rest_marg",
"f_any_kwrest",
"f_eq",
"$@24",
"block_args_tail",
2329 "opt_block_args_tail",
"excessed_comma",
"block_param",
2330 "opt_block_param",
"block_param_def",
"opt_bv_decl",
"bv_decls",
"bvar",
2331 "lambda",
"@25",
"@26",
"@27",
"$@28",
"f_larglist",
"lambda_body",
2332 "do_block",
"block_call",
"method_call",
"brace_block",
"brace_body",
2333 "@29",
"@30",
"@31",
"do_body",
"@32",
"@33",
"@34",
"case_args",
2334 "case_body",
"cases",
"p_case_body",
"@35",
"@36",
"$@37",
"p_cases",
2335 "p_top_expr",
"p_top_expr_body",
"p_expr",
"p_as",
"p_alt",
"p_lparen",
2336 "p_lbracket",
"p_expr_basic",
"@38",
"@39",
"p_args",
"p_args_head",
2337 "p_args_tail",
"p_find",
"p_rest",
"p_args_post",
"p_arg",
"p_kwargs",
2338 "p_kwarg",
"p_kw",
"p_kw_label",
"p_kwrest",
"p_kwnorest",
2339 "p_any_kwrest",
"p_value",
"p_primitive",
"p_variable",
"p_var_ref",
2340 "p_expr_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
2341 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
2342 "regexp",
"words",
"word_list",
"word",
"symbols",
"symbol_list",
2343 "qwords",
"qsymbols",
"qword_list",
"qsym_list",
"string_contents",
2344 "xstring_contents",
"regexp_contents",
"string_content",
"@40",
"$@41",
2345 "@42",
"@43",
"@44",
"@45",
"string_dvar",
"symbol",
"ssym",
"sym",
2346 "dsym",
"numeric",
"simple_numeric",
"nonlocal_var",
"user_variable",
2347 "keyword_variable",
"var_ref",
"var_lhs",
"backref",
"superclass",
2348 "$@46",
"f_opt_paren_args",
"f_paren_args",
"f_arglist",
"@47",
2349 "args_tail",
"opt_args_tail",
"f_args",
"args_forward",
"f_bad_arg",
2350 "f_norm_arg",
"f_arg_asgn",
"f_arg_item",
"f_arg",
"f_label",
"f_kw",
2351 "f_block_kw",
"f_block_kwarg",
"f_kwarg",
"kwrest_mark",
"f_no_kwarg",
2352 "f_kwrest",
"f_opt",
"f_block_opt",
"f_block_optarg",
"f_optarg",
2353 "restarg_mark",
"f_rest_arg",
"blkarg_mark",
"f_block_arg",
2354 "opt_f_block_arg",
"singleton",
"$@48",
"assoc_list",
"assocs",
"assoc",
2355 "operation",
"operation2",
"operation3",
"dot_or_colon",
"call_op",
2356 "call_op2",
"opt_terms",
"opt_nl",
"rparen",
"rbracket",
"rbrace",
2357 "trailer",
"term",
"terms",
"none", YY_NULLPTR
2361 yysymbol_name (yysymbol_kind_t yysymbol)
2363 return yytname[yysymbol];
2367 #define YYPACT_NINF (-1086)
2369 #define yypact_value_is_default(Yyn) \
2370 ((Yyn) == YYPACT_NINF)
2372 #define YYTABLE_NINF (-786)
2374 #define yytable_value_is_error(Yyn) \
2375 ((Yyn) == YYTABLE_NINF)
2379 static const yytype_int16 yypact[] =
2381 -1086, 168, 4730, -1086, 10445, -1086, -1086, -1086, 9903, -1086,
2382 -1086, -1086, -1086, -1086, -1086, -1086, 10571, 10571, -1086, -1086,
2383 -1086, 6363, 5922, -1086, -1086, -1086, -1086, 574, 9758, 26,
2384 48, 92, -1086, -1086, -1086, 5187, 6069, -1086, -1086, 5334,
2385 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, 12335, 12335,
2386 12335, 12335, 273, 7958, 10697, 11201, 11579, 10187, -1086, 9613,
2387 -1086, -1086, -1086, 196, 239, 259, 302, 1067, 12461, 12335,
2388 -1086, 418, -1086, 1061, -1086, 774, 345, 345, -1086, -1086,
2389 195, 441, 364, -1086, 404, 12713, -1086, 405, 3899, 546,
2390 317, 329, -1086, 12587, 12587, -1086, -1086, 8940, 12835, 12957,
2391 13079, 9467, 10571, -1086, 70, 122, -1086, -1086, 471, -1086,
2392 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2393 -1086, 52, 353, -1086, 518, 678, -1086, -1086, -1086, -1086,
2394 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2395 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2396 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2397 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2398 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2399 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2400 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2401 -1086, -1086, -1086, -1086, -1086, 486, -1086, -1086, -1086, 505,
2402 12335, 610, 8109, 12335, 12335, 12335, -1086, 12335, 345, 345,
2403 -1086, 552, 5753, 602, -1086, -1086, 592, 369, 274, 454,
2404 641, 464, 615, -1086, -1086, 8814, -1086, 10571, 10823, -1086,
2405 -1086, 9066, -1086, 12587, 618, -1086, 616, 8260, -1086, 8411,
2406 -1086, -1086, 621, 651, 195, -1086, 385, -1086, 736, 5900,
2407 5900, 742, 10697, -1086, 7958, 682, 418, -1086, 1061, 26,
2408 707, -1086, 1061, 26, 699, 85, 617, -1086, 602, 692,
2409 617, -1086, 26, 798, 1067, 13201, 713, 713, 719, -1086,
2410 516, 596, 609, 611, -1086, -1086, -1086, -1086, -1086, 81,
2411 -1086, 453, 501, 470, -1086, -1086, -1086, -1086, 795, -1086,
2412 -1086, -1086, -1086, -1086, -1086, -1086, 9192, 12587, 12587, 12587,
2413 12587, 10697, 12587, 12587, 1785, 748, 754, 7102, 1785, -1086,
2414 761, 7102, -1086, -1086, -1086, 784, -1086, -1086, -1086, -1086,
2415 -1086, 823, -1086, 7958, 10316, 749, 823, -1086, 12335, 12335,
2416 12335, 12335, 12335, -1086, -1086, 12335, 12335, 12335, 12335, 12335,
2417 12335, 12335, 12335, -1086, 12335, -1086, -1086, 12335, 12335, 12335,
2418 12335, 12335, 12335, 12335, 12335, 12335, 12335, -1086, -1086, 13664,
2419 10571, 13754, 7102, 774, 151, 151, 8562, 12587, 8562, 418,
2420 -1086, 753, 844, -1086, -1086, 622, 884, 91, 121, 129,
2421 951, 1040, 12587, 379, -1086, 782, 661, -1086, -1086, -1086,
2422 -1086, 72, 304, 341, 344, 407, 420, 424, 510, 517,
2423 -1086, -1086, -1086, -1086, 548, -1086, -1086, -1086, 15014, -1086,
2424 -1086, 823, 823, -1086, -1086, 544, -1086, -1086, -1086, 904,
2425 804, 806, 823, 12335, 10949, -1086, -1086, 13844, 10571, 13934,
2426 823, 823, 11327, -1086, 26, 791, -1086, -1086, 12335, 26,
2427 -1086, 796, 26, 800, -1086, 159, -1086, -1086, -1086, -1086,
2428 -1086, 9903, -1086, 12335, 808, 813, 13844, 13934, 823, 1061,
2429 48, 26, -1086, -1086, 9318, 815, 26, -1086, -1086, 11453,
2430 -1086, -1086, 11579, -1086, -1086, -1086, 616, 669, -1086, -1086,
2431 821, -1086, 13201, 14024, 10571, 14114, -1086, -1086, -1086, -1086,
2432 -1086, -1086, -1086, -1086, -1086, -1086, -1086, 623, 56, 686,
2433 68, 12335, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2434 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, 1015,
2435 -1086, -1086, -1086, -1086, -1086, 828, -1086, 26, -1086, -1086,
2436 -1086, 843, -1086, 830, 12335, -1086, 832, 108, -1086, -1086,
2437 -1086, 835, 932, 841, 941, -1086, 12461, 987, 992, 418,
2438 12461, 987, 862, -1086, -1086, -1086, 987, -1086, 987, -1086,
2439 11705, -1086, 26, 13201, 875, -1086, 11705, -1086, 736, 6047,
2440 6047, 6047, 6047, 6194, 4208, 6047, 6047, 5900, 5900, 550,
2441 550, -1086, 6485, 1260, 1260, 1391, 386, 386, 736, 736,
2442 736, 1376, 1376, 6510, 5481, 6804, 5628, -1086, 651, -1086,
2443 26, 878, 751, -1086, 768, -1086, -1086, 6216, 987, -1086,
2444 7253, 1009, 7706, 987, 88, 987, 1007, 1020, 130, 14204,
2445 10571, 14294, -1086, 774, -1086, 669, -1086, -1086, -1086, 14384,
2446 10571, 14474, 7102, 12587, -1086, -1086, -1086, -1086, -1086, 3812,
2447 12461, 12461, 9903, 12335, 12335, 12335, 12335, -1086, 12335, 602,
2448 -1086, 615, 5039, 5775, 26, 595, 647, 12335, 12335, -1086,
2449 -1086, -1086, -1086, 11075, -1086, 11327, -1086, -1086, 12587, 5753,
2450 -1086, -1086, 651, 651, 12335, -1086, 261, -1086, -1086, 617,
2451 13201, 821, 403, 65, 26, 257, 298, 1528, -1086, 934,
2452 -1086, 63, -1086, 886, -1086, -1086, 71, 891, -1086, 736,
2453 1015, 1114, -1086, 890, 26, 900, -1086, 209, -1086, -1086,
2454 -1086, 12335, 924, 1785, -1086, -1086, 639, -1086, -1086, -1086,
2455 1785, -1086, -1086, 1696, -1086, -1086, 1011, 5312, -1086, -1086,
2456 -1086, 11831, 659, -1086, -1086, 1012, 5459, -1086, -1086, -1086,
2457 913, -1086, -1086, -1086, 12335, -1086, 914, 916, 1021, -1086,
2458 -1086, 821, 13201, -1086, -1086, 1024, 933, 5165, -1086, -1086,
2459 -1086, 766, 676, 4880, 4880, 935, 823, 823, -1086, 784,
2460 923, 797, 10949, 823, 823, -1086, -1086, 784, -1086, -1086,
2461 801, -1086, 1059, -1086, -1086, -1086, -1086, -1086, -1086, 1020,
2462 987, -1086, 11957, 987, 105, 297, 26, 138, 147, 8562,
2463 418, 12587, 7102, 1081, 65, -1086, 26, 987, 159, 10048,
2464 122, 441, -1086, 5606, -1086, -1086, -1086, -1086, -1086, -1086,
2465 -1086, 823, 823, 787, 823, 823, 26, 929, 159, -1086,
2466 -1086, -1086, 433, 1785, -1086, -1086, -1086, -1086, -1086, -1086,
2467 -1086, -1086, -1086, -1086, -1086, -1086, -1086, 26, -1086, 1015,
2468 -1086, 1091, -1086, -1086, -1086, -1086, -1086, 936, 940, -1086,
2469 1029, 828, 944, -1086, 945, -1086, 944, 12335, 12335, 914,
2470 -1086, 993, -1086, -1086, -1086, 8562, -1086, -1086, -1086, 12335,
2471 12335, 956, -1086, 956, 949, 12083, 10697, 821, 10697, 823,
2472 12335, 14564, 10571, 14654, -1086, -1086, -1086, 4593, 4593, 455,
2473 -1086, 4442, 12, 1045, -1086, 119, -1086, -1086, 215, -1086,
2474 967, -1086, -1086, -1086, 963, -1086, 971, -1086, 13597, -1086,
2475 -1086, -1086, -1086, 876, -1086, -1086, -1086, 38, -1086, -1086,
2476 -1086, -1086, -1086, -1086, -1086, -1086, -1086, 475, -1086, 12335,
2477 12461, 12461, -1086, -1086, 823, 12461, 12461, -1086, -1086, 8562,
2478 12587, 987, -1086, -1086, 987, -1086, -1086, 987, -1086, 12335,
2479 -1086, 118, -1086, 165, 987, 7102, 418, 987, -1086, -1086,
2480 -1086, -1086, -1086, -1086, 12335, 12335, 823, 12335, 12335, -1086,
2481 11327, -1086, 26, 78, -1086, -1086, -1086, 975, 985, 1785,
2482 -1086, 1696, -1086, -1086, 1696, -1086, 1696, -1086, -1086, 5753,
2483 5753, 13323, 151, -1086, -1086, 7832, 5753, 5753, 1232, 8411,
2484 -1086, -1086, 7102, 12335, 989, -1086, -1086, 12461, 5753, 6657,
2485 6951, 26, 793, 803, -1086, -1086, -1086, -1086, 13597, 286,
2486 26, 13478, -1086, 26, 994, -1086, 896, 995, -1086, -1086,
2487 930, -1086, -1086, -1086, -1086, 12587, -1086, 1063, 13564, 13597,
2488 13597, 896, 1033, 4593, 4593, 455, 465, 634, 4880, 4880,
2489 -1086, -1086, 5753, -1086, -1086, -1086, -1086, 12461, -1086, -1086,
2490 -1086, -1086, -1086, 151, -1086, -1086, 4880, -1086, -1086, 12209,
2491 7404, -1086, 987, -1086, -1086, 12335, 1001, 990, 7102, 8411,
2492 -1086, -1086, 1091, 1091, 944, 1008, 944, 944, 1082, -1086,
2493 779, 206, 214, 231, 7102, 1149, 828, -1086, 26, 1031,
2494 843, 1026, 13445, -1086, 1028, -1086, 1035, 1043, -1086, -1086,
2495 -1086, 1047, 827, 36, -1086, 60, 1033, 1049, -1086, -1086,
2496 -1086, 26, -1086, -1086, 1042, -1086, -1086, 1052, -1086, 1056,
2497 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, 26, 26,
2498 26, 26, 26, 26, -1086, -1086, 7253, 151, 969, 12335,
2499 -1086, 697, -1086, -1086, 1155, 987, 1060, 8688, 985, -1086,
2500 1696, -1086, -1086, -1086, 283, 14744, 10571, 14834, 992, -1086,
2501 -1086, 1044, -1086, 13445, 1358, -1086, -1086, 1152, 788, 639,
2502 -1086, 1358, -1086, 1466, -1086, -1086, 1068, 13597, -1086, 515,
2503 -1086, -1086, 13597, 13564, -1086, -1086, -1086, -1086, -1086, -1086,
2504 801, -1086, 12587, 12587, -1086, -1086, -1086, -1086, -1086, 698,
2505 -1086, -1086, -1086, -1086, 1095, 944, 182, 199, 26, 333,
2506 338, -1086, -1086, 788, -1086, 1071, 1073, -1086, 14924, -1086,
2507 828, 1077, -1086, 1079, 1077, 13597, 1096, 1096, -1086, -1086,
2508 -1086, 7555, -1086, -1086, 1155, -1086, -1086, -1086, 367, 1358,
2509 -1086, 1466, -1086, 1098, 1102, -1086, 1466, -1086, 1466, -1086,
2510 -1086, 1096, 13597, 586, -1086, 1077, 1097, 1077, 1077, -1086,
2511 -1086, -1086, -1086, 1466, -1086, -1086, -1086, 1077, -1086
2517 static const yytype_int16 yydefact[] =
2519 2, 0, 0, 1, 0, 374, 375, 376, 0, 367,
2520 368, 369, 372, 370, 371, 373, 362, 363, 364, 365,
2521 385, 295, 295, 658, 657, 659, 660, 773, 0, 773,
2522 0, 0, 662, 661, 663, 755, 757, 654, 653, 756,
2523 656, 645, 646, 647, 648, 596, 668, 669, 0, 0,
2524 0, 0, 0, 0, 323, 785, 785, 105, 444, 616,
2525 616, 618, 620, 0, 0, 0, 0, 0, 0, 0,
2526 3, 771, 6, 9, 35, 40, 677, 677, 56, 77,
2527 295, 76, 0, 93, 0, 97, 107, 0, 67, 245,
2528 264, 0, 321, 0, 0, 73, 73, 771, 0, 0,
2529 0, 0, 332, 343, 78, 341, 310, 311, 595, 597,
2530 312, 313, 314, 316, 315, 317, 594, 635, 636, 593,
2531 643, 664, 665, 318, 0, 319, 81, 5, 8, 186,
2532 197, 187, 210, 183, 203, 193, 192, 213, 214, 208,
2533 191, 190, 185, 211, 215, 216, 195, 184, 198, 202,
2534 204, 196, 189, 205, 212, 207, 206, 199, 209, 194,
2535 182, 201, 200, 181, 188, 179, 180, 176, 177, 178,
2536 136, 138, 137, 171, 172, 167, 149, 150, 151, 158,
2537 155, 157, 152, 153, 173, 174, 159, 160, 164, 168,
2538 154, 156, 146, 147, 148, 161, 162, 163, 165, 166,
2539 169, 170, 175, 141, 143, 28, 139, 140, 142, 0,
2540 752, 0, 0, 0, 0, 298, 616, 0, 677, 677,
2541 290, 0, 273, 301, 91, 294, 785, 0, 664, 665,
2542 0, 319, 785, 748, 92, 773, 89, 0, 785, 464,
2543 88, 773, 774, 0, 0, 23, 257, 0, 10, 0,
2544 362, 363, 335, 465, 0, 239, 0, 332, 240, 230,
2545 231, 329, 0, 21, 0, 0, 771, 17, 20, 773,
2546 95, 16, 325, 773, 0, 778, 778, 274, 0, 0,
2547 778, 746, 773, 0, 0, 0, 677, 677, 103, 366,
2548 0, 113, 114, 121, 445, 640, 639, 641, 638, 0,
2549 637, 0, 0, 0, 603, 612, 608, 614, 644, 60,
2550 251, 252, 781, 782, 4, 783, 772, 0, 0, 0,
2551 0, 0, 0, 0, 700, 0, 676, 0, 700, 674,
2552 0, 0, 377, 469, 458, 82, 473, 340, 378, 473,
2553 454, 785, 109, 0, 101, 98, 785, 64, 0, 0,
2554 0, 0, 0, 267, 268, 0, 0, 0, 0, 228,
2555 229, 0, 0, 61, 0, 265, 266, 0, 0, 0,
2556 0, 0, 0, 0, 0, 0, 0, 767, 768, 0,
2557 785, 0, 0, 72, 0, 0, 0, 0, 0, 771,
2558 350, 772, 0, 396, 395, 0, 0, 664, 665, 319,
2559 131, 132, 0, 0, 134, 672, 0, 664, 665, 319,
2560 358, 206, 199, 209, 194, 176, 177, 178, 136, 137,
2561 744, 69, 68, 743, 0, 90, 770, 769, 0, 342,
2562 598, 785, 785, 144, 751, 329, 302, 754, 297, 0,
2563 0, 0, 785, 0, 0, 291, 300, 0, 785, 0,
2564 785, 785, 0, 292, 773, 0, 334, 296, 701, 773,
2565 286, 785, 773, 785, 285, 773, 339, 59, 25, 27,
2566 26, 0, 336, 0, 0, 0, 0, 0, 785, 19,
2567 0, 773, 327, 15, 772, 94, 773, 324, 330, 780,
2568 779, 275, 780, 277, 331, 747, 0, 120, 644, 111,
2569 106, 676, 0, 0, 785, 0, 446, 622, 642, 625,
2570 623, 617, 599, 600, 619, 601, 621, 0, 0, 0,
2571 0, 0, 784, 7, 29, 30, 31, 32, 33, 57,
2572 58, 707, 704, 703, 702, 705, 713, 722, 701, 0,
2573 734, 723, 738, 737, 733, 785, 699, 773, 683, 706,
2574 708, 709, 711, 685, 715, 720, 785, 726, 409, 408,
2575 731, 685, 736, 685, 740, 682, 0, 0, 785, 0,
2576 0, 0, 0, 470, 469, 83, 0, 474, 0, 271,
2577 0, 272, 773, 0, 99, 110, 0, 65, 237, 244,
2578 246, 247, 248, 255, 256, 249, 250, 226, 227, 253,
2579 254, 62, 773, 241, 242, 243, 232, 233, 234, 235,
2580 236, 269, 270, 758, 760, 759, 761, 463, 295, 461,
2581 773, 785, 758, 760, 759, 761, 462, 295, 0, 387,
2582 0, 386, 0, 0, 0, 0, 348, 0, 329, 0,
2583 785, 0, 73, 356, 131, 132, 133, 670, 354, 0,
2584 785, 0, 0, 0, 765, 766, 70, 758, 759, 295,
2585 0, 0, 0, 0, 0, 0, 0, 750, 0, 303,
2586 299, 785, 758, 759, 773, 758, 759, 0, 0, 749,
2587 333, 775, 280, 287, 282, 289, 338, 24, 0, 258,
2588 11, 34, 0, 785, 0, 22, 96, 18, 326, 778,
2589 0, 104, 762, 119, 773, 758, 759, 700, 626, 0,
2590 602, 0, 605, 0, 610, 607, 0, 0, 611, 238,
2591 0, 407, 399, 401, 773, 404, 397, 0, 681, 742,
2592 675, 0, 0, 0, 692, 714, 0, 680, 724, 725,
2593 0, 695, 735, 0, 697, 739, 48, 260, 384, 360,
2594 379, 785, 785, 585, 678, 50, 262, 361, 467, 471,
2595 0, 468, 475, 453, 0, 36, 306, 0, 39, 305,
2596 108, 102, 0, 55, 41, 53, 0, 278, 301, 217,
2597 37, 0, 319, 0, 0, 0, 785, 785, 460, 86,
2598 0, 466, 287, 785, 785, 284, 459, 84, 283, 322,
2599 785, 388, 785, 346, 390, 74, 389, 347, 484, 0,
2600 0, 381, 0, 0, 762, 328, 773, 758, 759, 0,
2601 0, 0, 0, 131, 132, 135, 773, 0, 773, 0,
2602 455, 79, 42, 278, 218, 52, 225, 145, 753, 304,
2603 293, 785, 785, 466, 785, 785, 773, 785, 773, 224,
2604 276, 112, 466, 700, 447, 450, 627, 631, 632, 633,
2605 624, 634, 604, 606, 613, 609, 615, 773, 406, 0,
2606 710, 0, 741, 727, 411, 684, 712, 685, 685, 721,
2607 726, 785, 685, 732, 685, 709, 685, 0, 0, 586,
2608 587, 785, 588, 380, 382, 0, 12, 14, 592, 0,
2609 0, 785, 80, 785, 309, 0, 0, 100, 0, 785,
2610 0, 0, 785, 0, 577, 583, 550, 0, 0, 0,
2611 522, 773, 519, 538, 616, 0, 576, 66, 493, 499,
2612 501, 503, 497, 496, 534, 498, 543, 546, 549, 555,
2613 556, 545, 506, 557, 507, 562, 563, 564, 567, 568,
2614 569, 570, 571, 573, 572, 574, 575, 553, 63, 0,
2615 0, 0, 87, 776, 785, 0, 0, 85, 383, 0,
2616 0, 0, 391, 393, 0, 75, 485, 0, 352, 0,
2617 477, 0, 351, 466, 0, 0, 0, 0, 466, 359,
2618 745, 71, 456, 457, 0, 0, 785, 0, 0, 281,
2619 288, 337, 773, 0, 628, 398, 400, 402, 405, 0,
2620 688, 0, 690, 679, 0, 696, 0, 693, 698, 49,
2621 261, 0, 0, 590, 591, 0, 51, 263, 773, 0,
2622 435, 434, 0, 0, 307, 38, 54, 0, 279, 758,
2623 759, 773, 758, 759, 565, 566, 132, 581, 0, 524,
2624 773, 525, 531, 773, 0, 518, 0, 0, 521, 537,
2625 0, 578, 650, 649, 651, 0, 579, 0, 494, 0,
2626 0, 544, 548, 560, 561, 0, 505, 504, 0, 0,
2627 554, 552, 259, 47, 222, 46, 223, 0, 44, 220,
2628 45, 221, 394, 0, 344, 345, 0, 349, 478, 0,
2629 0, 353, 0, 671, 355, 0, 0, 438, 0, 0,
2630 448, 629, 0, 0, 685, 685, 685, 685, 0, 589,
2631 0, 664, 665, 319, 0, 785, 785, 433, 773, 0,
2632 709, 417, 717, 718, 785, 729, 417, 417, 415, 472,
2633 476, 308, 466, 773, 516, 529, 541, 526, 517, 532,
2634 616, 773, 777, 551, 0, 500, 495, 534, 502, 535,
2635 539, 547, 542, 558, 559, 582, 515, 511, 773, 773,
2636 773, 773, 773, 773, 43, 219, 0, 0, 490, 0,
2637 479, 785, 357, 449, 0, 0, 0, 0, 403, 689,
2638 0, 686, 691, 694, 329, 0, 785, 0, 785, 13,
2639 414, 0, 436, 0, 418, 426, 424, 0, 716, 0,
2640 413, 0, 429, 0, 431, 523, 527, 0, 533, 0,
2641 520, 580, 0, 0, 508, 509, 510, 512, 513, 514,
2642 785, 486, 0, 0, 480, 482, 483, 481, 442, 773,
2643 440, 443, 452, 451, 0, 685, 762, 328, 773, 758,
2644 759, 584, 437, 728, 416, 417, 417, 329, 0, 719,
2645 785, 417, 730, 417, 417, 0, 530, 535, 536, 540,
2646 392, 0, 491, 492, 0, 439, 630, 687, 466, 0,
2647 421, 0, 423, 762, 328, 412, 0, 430, 0, 427,
2648 432, 528, 0, 785, 441, 417, 417, 417, 417, 488,
2649 489, 487, 422, 0, 419, 425, 428, 417, 420
2653 static const yytype_int16 yypgoto[] =
2655 -1086, -1086, -1086, 997, -1086, 47, 772, -312, -1086, -24,
2656 -1086, 769, -1086, 74, -1086, -427, -543, -32, -1086, -1086,
2657 -1086, -1086, 426, 2327, 2557, -1086, -12, -74, -1086, -1086,
2658 -10, -1086, -640, 1214, -9, 1159, -125, 34, -42, -1086,
2659 -406, 32, 3056, -372, 1160, -55, -15, -1086, -1086, -7,
2660 -1086, 4007, -1086, 1170, -1086, 927, 668, -1086, 714, 8,
2661 604, -377, 97, 6, -1086, -404, -193, 17, -1086, -483,
2662 -19, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2663 918, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2664 -1086, -1086, -1086, -1086, -1086, -1086, 512, -1086, 811, 1895,
2665 -376, -1086, 35, -777, -1086, -768, -788, 549, 401, -296,
2666 141, -1086, 244, -438, -1086, -1086, 373, -1086, -896, -1086,
2667 3, 1019, -1086, -1086, -1086, -1086, -1086, -1086, 447, -1086,
2668 -1086, -99, 705, -1086, -1086, -1086, 946, -1086, -1086, -1086,
2669 -1086, -762, -1086, -13, -1086, -1086, -1086, -1086, -1086, -728,
2670 -258, -1086, -1086, -1086, -1086, 223, -1086, -1086, -38, -1086,
2671 -715, -829, -963, -613, -750, -119, -1086, 212, -1086, -1086,
2672 -1086, 222, -1086, -774, 230, -1086, -1086, -1086, 101, -1086,
2673 -1086, 176, 1381, 1652, -1086, 1195, 1974, 2151, 2180, -1086,
2674 794, 2262, -1086, 2645, 2678, -1086, -1086, -58, -1086, -1086,
2675 -261, -1086, -1086, -1086, -1086, -1086, -1086, -1086, 9, -1086,
2676 -1086, -1086, -1086, 30, -1086, 3022, 10, 1211, 3297, 1722,
2677 -1086, -1086, 29, 727, 23, -1086, -308, -381, -305, -206,
2678 -1060, -513, -313, -698, -451, -500, 578, 106, -1086, -1086,
2679 -663, -1086, -709, -696, -1085, 113, 585, -1086, -649, -1086,
2680 -433, -532, -1086, -1086, -1086, 43, -402, -1086, -324, -1086,
2681 -1086, -86, -1086, -20, 123, 482, 440, 170, -231, -61,
2686 static const yytype_int16 yydefgoto[] =
2688 0, 1, 2, 70, 71, 72, 248, 567, 1025, 568,
2689 266, 267, 480, 268, 471, 74, 774, 75, 601, 784,
2690 587, 783, 421, 218, 219, 829, 384, 386, 387, 975,
2691 78, 79, 575, 254, 81, 82, 269, 83, 84, 85,
2692 500, 86, 221, 404, 405, 203, 204, 205, 662, 616,
2693 207, 88, 473, 375, 89, 580, 223, 274, 779, 617,
2694 796, 459, 460, 236, 237, 225, 445, 621, 768, 769,
2695 90, 382, 273, 486, 688, 809, 637, 822, 820, 652,
2696 256, 92, 93, 94, 95, 96, 97, 98, 99, 100,
2697 101, 336, 339, 751, 895, 812, 969, 970, 749, 257,
2698 630, 805, 971, 972, 396, 722, 723, 724, 725, 545,
2699 731, 732, 1254, 1205, 1206, 1128, 1029, 1030, 1106, 1239,
2700 1240, 103, 294, 506, 707, 1003, 854, 1110, 340, 104,
2701 105, 337, 572, 573, 759, 901, 576, 577, 762, 903,
2702 981, 813, 1237, 810, 976, 1096, 1271, 1301, 1177, 927,
2703 1146, 929, 930, 1078, 1079, 931, 1056, 1048, 1050, 1051,
2704 1052, 933, 934, 1159, 1054, 935, 936, 937, 938, 939,
2705 940, 941, 942, 943, 944, 945, 946, 947, 752, 891,
2706 1022, 897, 106, 107, 108, 109, 110, 111, 112, 517,
2707 711, 113, 519, 114, 115, 518, 520, 299, 302, 303,
2708 511, 709, 708, 856, 1004, 1111, 1187, 860, 116, 117,
2709 300, 118, 119, 120, 1066, 228, 229, 123, 230, 231,
2710 648, 821, 325, 326, 327, 328, 875, 734, 547, 548,
2711 549, 550, 885, 552, 553, 554, 555, 1133, 1134, 556,
2712 557, 558, 559, 560, 1135, 1136, 561, 562, 563, 564,
2713 565, 728, 424, 653, 279, 463, 233, 126, 692, 619,
2714 656, 651, 428, 314, 455, 456, 791, 1058, 491, 631,
2721 static const yytype_int16 yytable[] =
2723 127, 206, 301, 620, 298, 381, 429, 220, 220, 632,
2724 315, 551, 122, 245, 122, 551, 546, 208, 427, 571,
2725 546, 206, 388, 569, 737, 974, 726, 881, 240, 265,
2726 239, 646, 462, 226, 226, 876, 315, 208, 289, 453,
2727 670, 514, 516, 345, 883, 493, 422, 977, 670, 495,
2728 679, 128, 206, 277, 281, 618, 958, 627, 309, 232,
2729 232, 383, 383, 122, 122, 383, 289, 292, 932, 932,
2730 628, 674, 275, 880, 329, 329, 73, 390, 73, 289,
2731 289, 289, 385, 1008, 878, 389, 335, 270, 334, 288,
2732 679, 884, 1053, 220, 206, 292, 701, 308, 276, 280,
2733 331, 1006, 316, 780, 659, 1157, 330, 1108, 398, 408,
2734 408, 408, 1216, 224, 234, 804, -122, 832, 835, 226,
2735 957, 957, 713, 618, 1241, 627, 1262, 704, 272, 507,
2736 -126, 629, 1129, -328, 717, 1075, 1067, 507, 377, 481,
2737 -658, 449, 738, 1044, 1045, 232, -123, 507, 332, 962,
2738 243, -666, 246, 693, -130, -129, -773, 967, 439, 773,
2739 739, -328, -328, -125, 629, 242, 378, 426, 3, -658,
2740 477, 1061, -127, 1062, 1063, 714, 1064, 771, -122, 242,
2741 741, 693, 744, 1076, 509, 510, 1077, 718, 265, 242,
2742 -124, 247, 509, 510, 1262, -126, 322, 323, -113, 425,
2743 508, 1109, 509, 510, 505, 315, 1217, 726, 868, 465,
2744 -328, 467, -128, -759, 1241, 862, 329, 329, 582, -122,
2745 1065, 332, 122, 865, 446, 475, 220, -123, 220, 220,
2746 446, 489, 1201, 773, 773, 249, 464, -113, 490, 312,
2747 265, 313, 331, 499, -130, 127, 483, 440, 441, 1169,
2748 1172, -117, 226, -758, 226, 461, 712, 122, 712, 122,
2749 1268, 239, 334, 816, 1099, 333, 289, -114, 890, 312,
2750 453, 313, 122, 826, 122, -121, -120, 825, 232, 670,
2751 232, 670, -116, 679, -116, 383, 383, 383, 383, 882,
2752 529, 530, 886, -118, 872, 292, -129, 484, 270, 1163,
2753 1164, 1147, 312, 872, 313, 524, 525, 526, 527, 641,
2754 331, -115, 242, 883, 498, 1067, 876, 693, 542, 265,
2755 1160, 73, -128, -118, 1188, 289, 122, 693, 315, 261,
2756 -758, 122, 454, -126, 457, -126, 479, 122, 333, 581,
2757 827, 122, 543, 238, 581, 1006, -125, -759, 304, 1013,
2758 -128, -127, -128, 122, 292, 383, 726, -122, 726, -122,
2759 1115, 1068, 633, 523, 635, -123, 907, -123, 1178, 636,
2760 643, 220, -657, -666, 625, 634, 584, 270, 464, 1137,
2761 -124, 932, -130, -116, -130, -366, 1067, -94, 670, 626,
2762 73, 305, 122, 957, 551, 528, 122, 377, 122, 546,
2763 -122, -657, 855, -116, 1235, 496, -116, -108, 957, -659,
2764 -116, 306, -660, -366, -366, 957, 957, 1083, 1085, 1236,
2765 551, 625, 1088, 1090, -118, 378, 379, 551, -117, 581,
2766 581, 644, -541, 957, -129, 645, -129, 377, -659, 220,
2767 581, -660, 625, -119, -118, -759, 464, -118, 581, 581,
2768 863, -118, -667, 377, 307, 863, 687, 626, -115, 446,
2769 499, 446, -366, 348, 206, 378, 447, 1160, 850, 338,
2770 625, -785, 1160, 1269, 380, -662, 581, 846, 840, -123,
2771 208, 378, 476, 289, -125, 626, -125, 671, -661, -127,
2772 341, -127, -663, 324, 122, 220, 1010, 1012, 625, -114,
2773 1260, 1015, 464, 1017, -662, 1018, 876, 644, 754, 1080,
2774 987, 1046, 292, 626, 448, 1160, 1299, -661, -124, 507,
2775 -124, -663, 372, 373, 374, 928, 928, 1081, 1132, -117,
2776 448, 346, 699, 773, 773, 1041, 507, 515, 773, 773,
2777 551, 499, 1269, 729, 1174, 546, 880, 1047, 1002, -117,
2778 342, -758, -117, -667, 729, 1256, -117, 746, 1114, -115,
2779 1116, 755, 1263, 451, 289, 1117, 753, 507, 819, 312,
2780 765, 313, 512, 806, 509, 510, 775, 1131, -652, -115,
2781 -123, 507, -115, 60, 377, -655, -115, 618, 876, 627,
2782 -130, 509, 510, 292, 1200, 1138, 670, 767, 679, 726,
2783 726, 894, 1210, 767, 1266, 1100, 800, -652, 802, 1267,
2784 773, 808, 378, 503, -655, -773, 654, 431, 242, 446,
2785 513, 828, 509, 510, 789, 798, 788, 348, 353, 354,
2786 1296, 220, 433, 797, 625, 795, 509, 510, 464, 1153,
2787 122, 220, 122, 478, 625, 655, 1124, 837, 464, 626,
2788 775, 775, 1291, 241, 840, 206, 848, 798, 851, 626,
2789 773, 504, 122, 1049, -664, 831, 435, 795, 893, 446,
2790 -129, 208, 468, 1102, 894, 365, 366, -665, 442, -319,
2791 1072, 289, 469, 470, 370, 371, 372, 373, 374, 507,
2792 377, 798, -664, -664, 844, 913, 551, 536, 1212, 1214,
2793 788, 795, 443, 1165, 1132, -665, -665, -319, -319, 1132,
2794 292, 1132, 894, 1132, 811, 1130, 537, 1176, 378, 639,
2795 1140, -125, 241, 466, 278, 785, 847, 242, 1285, 377,
2796 499, 992, 1126, 1189, 1191, 1192, 1193, -329, 444, 1245,
2797 450, -664, 710, 790, 509, 510, 845, 541, 542, 892,
2798 898, 485, 507, 289, -665, 487, -319, 378, 649, 985,
2799 1261, 452, 1264, 492, 472, -329, -329, 640, 767, 235,
2800 490, 1138, 543, -127, 422, 432, 872, 432, 1138, 1132,
2801 1138, 1132, 292, -773, 581, 581, 1132, 242, 1132, 383,
2802 1143, 581, 581, 956, 956, 984, 1185, 790, 973, 238,
2803 973, 1231, -130, 1132, -130, 715, 650, 509, 510, 986,
2804 1049, 322, 323, 348, -329, 968, 894, 1280, 1282, 1248,
2805 1049, 1049, 206, 1287, -121, 1289, 1290, 790, 1295, 122,
2806 1297, 482, 122, -93, 377, 847, 494, 1298, 928, 581,
2807 581, 478, 581, 581, 1274, 446, 1138, 377, 1138, 488,
2808 793, 242, 1307, 1138, 497, 1138, 377, 1302, 1304, 1305,
2809 1306, 324, 378, 911, 1277, 502, 1060, 794, -129, 1308,
2810 1138, 1024, 521, 693, 566, 378, 1195, -125, 434, 729,
2811 -673, 436, 437, 438, 378, 1258, 996, 570, -120, 1023,
2812 574, 1130, 793, 579, -127, 585, 964, -116, 1130, 1031,
2813 638, 1031, 794, 220, 522, 122, 625, 581, 1126, 642,
2814 464, 912, 647, -124, -118, 1126, 122, 1126, 122, -125,
2815 91, 626, 91, -124, 1196, 1103, 964, 956, 956, -127,
2816 664, 956, 665, 650, 227, 227, 680, 1151, 383, 790,
2817 681, 682, 683, -115, 684, 1092, 685, 686, 956, 790,
2818 775, 775, 690, -124, 916, 775, 775, 691, 1093, 1170,
2819 1173, -108, 581, 696, 1073, 1074, 1130, 700, 698, -410,
2820 507, 91, 91, 537, 727, 290, 733, -755, 736, 122,
2821 1035, 740, 1036, 1126, 742, 1126, 227, 743, 857, 858,
2822 1126, 859, 1126, 745, 581, 122, 507, 748, 46, 47,
2823 750, 1125, 289, 290, 541, 1139, 758, 1126, 1150, 1232,
2824 1233, 227, 227, 501, 501, 227, 395, 406, 406, -652,
2825 227, 772, 801, 512, 792, 509, 510, 775, 663, 730,
2826 1156, 1122, 808, 383, 1197, 122, 869, 811, 864, 122,
2827 1168, 1171, 122, 866, 790, 1057, 871, -652, -652, 512,
2828 874, 509, 510, 1154, 1153, 887, 899, 902, 956, 909,
2829 -301, 956, 905, 959, 770, 906, -756, 531, 908, 532,
2830 533, 534, 535, 963, 894, 1000, 1181, 775, 956, 956,
2831 956, 739, 1009, 956, 956, 1186, 1011, 1028, 956, 956,
2832 1014, 1016, 1219, 1021, -755, -302, -652, 1059, 1069, -755,
2833 1198, 317, 318, 319, 320, 321, 956, -762, -655, 1070,
2834 122, 667, 669, 289, 843, 914, 720, 1071, 122, 122,
2835 278, 1112, 721, 898, 729, 1107, 41, 42, 43, 44,
2836 91, 1113, 729, 1067, 122, -303, -655, -655, 1194, 1152,
2837 1149, 1184, 408, 531, 852, 532, 533, 534, 535, -762,
2838 1183, 1107, 1230, 227, 1190, 227, 227, 669, 893, 227,
2839 278, 227, 1202, 1244, 790, 91, 531, 91, 532, 533,
2840 534, 535, 1204, 790, 1209, 1252, 790, -762, -762, 973,
2841 91, 1211, 91, -756, 289, -655, 122, 220, -756, 1213,
2842 625, 1221, 720, -304, 464, 1218, 753, 122, 1222, 790,
2843 383, 383, 1223, 290, 1243, 626, 870, 1238, 1257, 532,
2844 533, 534, 535, 408, 1265, 1276, 80, 1279, 80, 1281,
2845 1272, 1273, 735, 1286, -762, 1288, -762, 956, 973, -758,
2846 80, 80, 956, 956, 91, 227, 227, 227, 227, 91,
2847 227, 227, 1292, 1303, 474, 91, -758, 1293, 766, 91,
2848 -759, 1107, 695, 697, 778, 991, 983, 393, 729, 376,
2849 410, 91, 290, 830, 896, 1270, 988, 80, 80, 867,
2850 1007, 1203, 1127, 586, 1057, 956, 1032, 1294, 993, 760,
2851 1300, 122, 80, 1161, 531, 578, 532, 533, 534, 535,
2852 536, 973, 1158, 1162, 790, 790, 790, 1155, 227, 1251,
2853 91, 1199, 956, 430, 91, 227, 91, 80, 80, 537,
2854 990, 80, 423, 716, 879, 1259, 80, 1255, 877, 0,
2855 227, 1220, 0, 0, 0, 0, 0, 0, 999, 0,
2856 1001, 838, 0, 539, 0, 0, 839, 348, 0, 540,
2857 541, 542, 0, 0, 0, 0, 0, 0, 0, 1005,
2858 0, 669, 0, 278, 361, 362, 0, 0, 660, 661,
2859 0, 1055, 1275, 0, 0, 543, 227, 0, 544, 666,
2860 0, 790, 0, 0, 834, 836, 0, 677, 678, 0,
2861 0, 0, 757, 0, 0, 242, 0, 761, 0, 763,
2862 0, 834, 836, 369, 370, 371, 372, 373, 374, 873,
2863 0, 0, 91, 0, 0, 694, 0, 0, 849, 0,
2864 531, 0, 532, 533, 534, 535, 536, 0, 0, 889,
2865 290, 0, 227, 0, 0, 0, 80, 0, 0, 0,
2866 0, 0, 904, 0, 0, 537, 0, 0, 0, 799,
2867 0, 0, 0, 0, 803, 0, 807, 0, 0, 80,
2868 0, 80, 80, 348, 0, 80, 0, 80, 0, 539,
2869 669, 80, 0, 80, 0, 540, 541, 542, 348, 0,
2870 361, 362, 0, 0, 0, 0, 80, 0, 80, 0,
2871 980, 1142, 0, 0, 227, 361, 362, 0, 227, 0,
2872 1144, 543, 0, 1148, 544, 0, 0, 0, 227, 0,
2873 0, 290, 0, 0, 781, 0, 0, 367, 368, 369,
2874 370, 371, 372, 373, 374, 0, 1166, 0, 531, 0,
2875 532, 533, 534, 535, 536, 370, 371, 372, 373, 374,
2876 80, 80, 80, 80, 80, 80, 80, 80, 0, 0,
2877 0, 80, 0, 537, 0, 80, 0, 0, 91, 0,
2878 91, 0, 0, 0, 0, 0, 0, 80, 227, 1167,
2879 0, 0, 0, 0, 0, 0, 0, 539, 227, 0,
2880 91, 227, 0, 1034, 541, 542, 0, 0, 781, 781,
2881 531, 0, 532, 533, 534, 535, 536, 0, 0, 0,
2882 0, 0, 0, 0, 80, 0, 80, 0, 0, 543,
2883 80, 80, 80, 0, 0, 537, 227, 0, 0, 0,
2884 0, 1227, 1228, 1229, 0, 0, 80, 0, 290, 538,
2885 0, 978, 0, 0, 982, 1215, 0, 0, 0, 539,
2886 0, 0, 0, 0, 0, 540, 541, 542, 989, 0,
2887 0, 0, 0, 0, 0, 0, 0, 1098, 0, 0,
2888 1224, 1225, 1226, 0, 0, 0, 0, 0, 0, 0,
2889 0, 543, 80, 0, 544, 0, 0, 0, 278, 0,
2890 0, 0, 0, 0, 1084, 1086, 853, 0, 0, 1089,
2891 1091, 0, 0, 0, 0, 0, 0, 0, 1278, 0,
2892 290, 0, 0, 0, 0, 0, 0, 0, 80, 0,
2893 0, 1141, 0, 0, 0, 0, 0, 0, 1084, 1086,
2894 0, 1089, 1091, 960, 961, 0, 0, 0, 80, 0,
2895 965, 966, 0, 0, 125, 0, 125, 0, 0, 0,
2896 0, 0, 0, 0, 0, 0, 0, 91, 0, 227,
2897 91, 0, 0, 0, 0, 0, 0, 0, 531, 0,
2898 532, 533, 534, 535, 536, 0, 0, 0, 0, 0,
2899 0, 0, 0, 0, 0, 0, 0, 1180, 994, 995,
2900 0, 997, 998, 537, 0, 125, 125, 0, 0, 293,
2901 80, 0, 1094, 0, 80, 1095, 0, 538, 1097, 0,
2902 0, 0, 0, 0, 80, 1101, 0, 539, 1104, 0,
2903 80, 1175, 926, 926, 541, 542, 0, 293, 0, 0,
2904 0, 0, 0, 91, 0, 0, 0, 0, 0, 1175,
2905 399, 409, 409, 0, 91, 0, 91, 0, 0, 543,
2906 227, 0, 0, 0, 0, 0, 1037, 531, 0, 532,
2907 533, 534, 535, 536, 80, 0, 80, 1234, 0, 0,
2908 0, 0, 0, 0, 80, 0, 0, 0, 0, 0,
2909 0, 0, 537, 0, 80, 0, 80, 80, 0, 0,
2910 0, 0, 0, 0, 80, 80, 538, 0, 781, 781,
2911 0, 0, 0, 781, 781, 0, 539, 91, 227, 0,
2912 0, 1087, 540, 541, 542, 0, 0, 102, 0, 102,
2913 0, 0, 80, 91, 0, 0, 0, 0, 0, 0,
2914 0, 102, 102, 1182, 0, 0, 0, 0, 543, 0,
2915 0, 544, 0, 1105, 0, 0, 0, 0, 0, 0,
2916 0, 0, 0, 0, 125, 0, 926, 926, 0, 1120,
2917 926, 0, 0, 91, 0, 0, 0, 91, 102, 102,
2918 91, 0, 0, 0, 0, 781, 0, 926, 0, 0,
2919 0, 0, 0, 102, 0, 0, 0, 0, 0, 125,
2920 0, 125, 0, 0, 0, 0, 0, 0, 0, 0,
2921 0, 0, 0, 227, 125, 0, 125, 0, 102, 102,
2922 0, 0, 102, 0, 0, 0, 1242, 102, 0, 0,
2923 0, 0, 0, 0, 0, 781, 0, 293, 0, 0,
2924 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
2925 0, 0, 0, 0, 0, 0, 91, 91, 0, 0,
2926 0, 0, 0, 80, 0, 80, 80, 0, 125, 0,
2927 0, 0, 91, 125, 0, 0, 0, 0, 0, 125,
2928 1208, 0, 0, 125, 0, 0, 0, 0, 0, 0,
2929 0, 0, 0, 0, 0, 125, 293, 926, 0, 0,
2930 926, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2931 0, 0, 0, 0, 0, 0, 0, 926, 926, 926,
2932 0, 0, 926, 926, 91, 0, 0, 926, 926, 0,
2933 0, 0, 0, 0, 125, 91, 0, 102, 125, 80,
2934 125, 0, 0, 0, 227, 926, 0, 0, 0, 0,
2935 80, 1253, 80, 0, 0, 0, 80, 0, 0, 0,
2936 102, 0, 102, 102, 0, 0, 102, 0, 102, 0,
2937 0, 0, 102, 0, 102, 0, 0, 0, 0, 0,
2938 227, 227, 0, 0, 0, 0, 0, 102, 0, 102,
2939 0, 0, 0, 0, 948, 948, 0, 0, 0, 0,
2940 0, 0, 0, 0, 80, 80, 0, 0, 0, 80,
2941 80, 0, 0, 80, 80, 0, 0, 0, 0, 91,
2942 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,
2943 0, 0, 0, 0, 0, 0, 125, 0, 0, 0,
2944 0, 102, 102, 102, 102, 102, 102, 102, 102, 0,
2945 0, 0, 102, 0, 293, 0, 102, 0, 0, 0,
2946 0, 0, 0, 0, 0, 0, 926, 0, 102, 80,
2947 0, 926, 926, 80, 0, 0, 80, 0, 0, 0,
2948 0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
2949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2950 0, 0, 0, 0, 0, 102, 0, 102, 0, 80,
2951 0, 102, 102, 102, 926, 0, 0, 0, 0, 0,
2952 0, 0, 0, 0, 0, 0, 0, 102, 948, 948,
2953 0, 80, 948, 0, 0, 293, 0, 0, 782, 0,
2954 0, 926, 0, 0, 80, 0, 0, 0, 0, 948,
2955 0, 0, 80, 80, 0, 0, 0, 0, 0, 76,
2956 0, 76, 0, 0, 0, 0, 0, 0, 80, 0,
2957 0, 0, 0, 102, 0, 0, 0, 0, 0, 0,
2958 0, 0, 125, 0, 125, 0, 0, 0, 0, 0,
2959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2960 0, 0, 0, 0, 125, 0, 0, 0, 0, 102,
2961 76, 76, 782, 782, 286, 0, 0, 0, 0, 0,
2962 80, 0, 0, 0, 0, 0, 0, 0, 0, 102,
2963 0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
2964 80, 0, 286, 0, 0, 0, 0, 0, 0, 0,
2965 0, 0, 293, 0, 0, 286, 286, 286, 0, 948,
2966 0, 861, 948, 0, 0, 949, 949, 0, 0, 0,
2967 0, 0, 0, 0, 0, 0, 80, 80, 0, 948,
2968 948, 948, 0, 0, 948, 948, 0, 0, 0, 948,
2969 948, 102, 0, 0, 0, 102, 0, 0, 0, 0,
2970 0, 0, 0, 0, 0, 102, 0, 948, 0, 0,
2971 0, 102, 0, 0, 0, 80, 0, 0, 0, 0,
2972 0, 0, 0, 0, 293, 0, 0, 0, 0, 0,
2973 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2974 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2975 0, 0, 0, 0, 0, 102, 0, 102, 0, 0,
2976 0, 0, 0, 0, 0, 102, 0, 0, 0, 76,
2977 0, 125, 0, 0, 125, 102, 0, 102, 102, 0,
2978 0, 0, 0, 0, 0, 102, 102, 0, 0, 77,
2979 0, 77, 0, 0, 0, 0, 0, 0, 0, 949,
2980 949, 0, 0, 949, 76, 0, 76, 0, 0, 0,
2981 0, 0, 0, 102, 0, 0, 0, 0, 0, 76,
2982 949, 76, 0, 0, 0, 0, 0, 0, 948, 0,
2983 0, 0, 0, 948, 948, 0, 0, 0, 0, 0,
2984 77, 77, 286, 0, 287, 0, 0, 125, 0, 0,
2985 0, 0, 0, 0, 0, 0, 0, 0, 125, 0,
2986 125, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2987 0, 0, 287, 76, 0, 0, 948, 0, 76, 0,
2988 0, 0, 0, 0, 76, 287, 287, 287, 76, 0,
2989 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2990 76, 286, 0, 948, 0, 0, 0, 0, 0, 0,
2991 0, 0, 782, 782, 0, 0, 0, 782, 782, 0,
2992 0, 125, 0, 0, 0, 0, 0, 0, 0, 0,
2993 949, 0, 0, 949, 0, 0, 0, 125, 0, 76,
2994 0, 0, 0, 76, 102, 76, 102, 102, 0, 0,
2995 949, 949, 949, 0, 0, 949, 949, 0, 0, 0,
2996 949, 949, 0, 0, 0, 0, 0, 0, 0, 0,
2997 0, 0, 0, 1123, 0, 0, 0, 125, 949, 0,
2998 0, 125, 0, 0, 125, 0, 0, 950, 950, 782,
2999 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,
3000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3001 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3002 102, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3003 0, 102, 0, 102, 77, 0, 77, 102, 0, 782,
3004 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
3005 0, 77, 125, 0, 0, 0, 0, 0, 0, 286,
3006 125, 125, 0, 0, 0, 0, 0, 0, 0, 0,
3007 0, 0, 287, 0, 0, 0, 125, 0, 0, 0,
3008 0, 0, 0, 0, 409, 102, 102, 0, 0, 0,
3009 102, 102, 0, 0, 102, 102, 0, 0, 0, 949,
3010 0, 0, 0, 77, 949, 949, 0, 0, 77, 0,
3011 102, 0, 0, 0, 77, 0, 0, 0, 77, 0,
3012 0, 950, 950, 0, 0, 950, 0, 0, 125, 0,
3013 77, 287, 0, 0, 0, 0, 0, 0, 0, 125,
3014 286, 0, 950, 76, 0, 0, 0, 949, 0, 0,
3015 102, 0, 0, 0, 102, 409, 0, 102, 0, 0,
3016 0, 0, 102, 0, 951, 951, 0, 0, 0, 77,
3017 0, 0, 0, 77, 949, 77, 0, 0, 0, 0,
3018 0, 0, 0, 0, 0, 0, 0, 76, 0, 76,
3019 102, 0, 0, 952, 952, 0, 0, 0, 0, 0,
3020 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,
3021 0, 0, 102, 0, 0, 0, 0, 76, 76, 0,
3022 0, 0, 0, 125, 0, 102, 0, 0, 0, 0,
3023 0, 0, 0, 102, 102, 0, 0, 0, 0, 0,
3024 0, 0, 0, 0, 0, 0, 0, 0, 0, 102,
3025 0, 0, 950, 0, 121, 950, 121, 286, 0, 0,
3026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3027 0, 77, 950, 950, 950, 953, 953, 950, 950, 0,
3028 0, 0, 950, 950, 0, 0, 0, 0, 87, 287,
3029 87, 0, 0, 0, 0, 0, 0, 0, 951, 951,
3030 950, 102, 951, 0, 0, 121, 121, 0, 0, 291,
3031 0, 0, 102, 0, 0, 0, 0, 0, 0, 951,
3032 0, 102, 0, 0, 0, 0, 0, 952, 952, 286,
3033 0, 952, 0, 0, 0, 0, 0, 291, 0, 87,
3034 87, 0, 0, 0, 0, 0, 0, 0, 952, 0,
3035 397, 407, 407, 407, 0, 0, 0, 102, 102, 0,
3036 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3037 287, 0, 0, 77, 0, 0, 76, 0, 0, 76,
3038 0, 0, 0, 0, 394, 0, 0, 0, 0, 0,
3039 0, 0, 0, 0, 0, 0, 102, 0, 0, 0,
3040 0, 0, 0, 0, 0, 0, 0, 0, 0, 953,
3041 953, 0, 0, 953, 0, 0, 0, 77, 0, 77,
3042 0, 950, 0, 0, 0, 0, 950, 950, 0, 951,
3043 953, 0, 951, 0, 0, 0, 0, 0, 0, 77,
3044 0, 0, 0, 0, 0, 0, 0, 77, 77, 951,
3045 951, 951, 76, 0, 951, 951, 0, 0, 952, 951,
3046 951, 952, 0, 76, 121, 76, 0, 0, 0, 950,
3047 0, 0, 0, 0, 0, 0, 0, 951, 952, 952,
3048 952, 0, 0, 952, 952, 0, 0, 287, 952, 952,
3049 0, 0, 0, 0, 0, 0, 950, 0, 87, 121,
3050 0, 121, 0, 0, 0, 0, 952, 0, 0, 0,
3051 0, 0, 0, 0, 121, 0, 121, 76, 76, 0,
3052 0, 0, 76, 76, 0, 0, 76, 0, 0, 124,
3053 0, 124, 0, 87, 0, 87, 0, 291, 0, 0,
3054 953, 0, 76, 953, 0, 0, 0, 0, 87, 0,
3055 87, 0, 0, 0, 0, 0, 0, 0, 0, 287,
3056 953, 953, 953, 0, 0, 953, 953, 0, 121, 0,
3057 953, 953, 0, 121, 0, 0, 0, 0, 286, 121,
3058 124, 124, 76, 121, 0, 0, 76, 0, 953, 76,
3059 0, 0, 0, 0, 76, 121, 291, 0, 951, 0,
3060 0, 0, 87, 951, 951, 0, 77, 87, 0, 77,
3061 0, 0, 0, 87, 0, 0, 0, 87, 0, 0,
3062 0, 0, 0, 0, 0, 0, 0, 952, 0, 87,
3063 0, 0, 952, 952, 121, 0, 0, 0, 121, 0,
3064 121, 0, 0, 0, 76, 0, 951, 0, 0, 0,
3065 0, 0, 0, 0, 0, 0, 0, 76, 954, 954,
3066 0, 0, 0, 0, 0, 76, 76, 0, 87, 0,
3067 0, 0, 87, 951, 87, 952, 0, 0, 0, 0,
3068 0, 76, 77, 0, 0, 0, 0, 0, 0, 286,
3069 0, 955, 955, 77, 0, 77, 0, 0, 0, 0,
3070 0, 0, 952, 0, 0, 0, 0, 0, 0, 953,
3071 0, 0, 0, 0, 953, 953, 0, 0, 0, 0,
3072 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3073 0, 0, 0, 76, 0, 0, 121, 0, 0, 124,
3074 0, 0, 0, 0, 76, 0, 0, 77, 77, 0,
3075 0, 0, 77, 77, 291, 0, 77, 953, 0, 0,
3076 286, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3077 87, 0, 77, 0, 124, 0, 124, 0, 0, 0,
3078 0, 0, 0, 0, 953, 0, 0, 0, 0, 124,
3079 0, 124, 954, 954, 0, 0, 954, 0, 0, 0,
3080 0, 0, 0, 0, 0, 0, 0, 0, 287, 0,
3081 0, 0, 77, 954, 0, 0, 77, 0, 0, 77,
3082 0, 0, 0, 0, 77, 955, 955, 0, 76, 955,
3083 0, 0, 0, 0, 0, 291, 0, 0, 0, 0,
3084 0, 0, 0, 124, 0, 0, 955, 0, 124, 0,
3085 0, 0, 0, 0, 124, 0, 0, 0, 124, 0,
3086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3087 124, 0, 776, 0, 77, 0, 0, 0, 0, 0,
3088 0, 0, 121, 0, 121, 0, 0, 77, 0, 0,
3089 0, 0, 0, 0, 0, 77, 77, 0, 0, 0,
3090 0, 0, 0, 0, 121, 0, 0, 0, 0, 124,
3091 0, 77, 0, 124, 0, 124, 87, 0, 87, 287,
3092 0, 0, 0, 954, 0, 0, 954, 0, 0, 0,
3093 0, 0, 0, 0, 0, 0, 0, 0, 87, 0,
3094 0, 0, 0, 954, 954, 954, 776, 776, 954, 954,
3095 0, 0, 291, 954, 954, 0, 955, 0, 0, 955,
3096 0, 0, 0, 77, 0, 0, 0, 0, 0, 0,
3097 0, 954, 0, 0, 77, 0, 955, 955, 955, 0,
3098 0, 955, 955, 0, 0, 0, 955, 955, 0, 0,
3099 287, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3100 0, 0, 0, 0, 955, 0, 0, 0, 0, 0,
3101 0, 124, 0, 0, 0, 0, 0, 0, 0, 0,
3102 0, 0, 0, 0, 291, 0, 0, 0, 0, 0,
3103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3104 0, 0, -785, 0, 0, 0, 0, 0, 0, 0,
3105 -785, -785, -785, 0, 0, -785, -785, -785, 77, -785,
3106 0, 0, 0, 0, 0, 0, 0, -785, -785, -785,
3107 0, 121, 0, 0, 121, 0, 0, 0, 0, -785,
3108 -785, 0, -785, -785, -785, -785, -785, 0, 0, 0,
3109 0, 0, 954, 0, 0, 0, 0, 954, 954, 0,
3110 0, 0, 0, 0, 0, 87, 0, 0, 87, 0,
3111 -785, 0, 0, 124, 0, 0, 0, 0, 0, 0,
3112 0, 0, 0, 0, 0, 955, 0, 0, 0, 0,
3113 955, 955, 0, 0, 0, 0, 0, 0, -785, -785,
3114 954, 0, 0, 0, 0, 0, 0, 121, 0, 0,
3115 0, 0, 0, 0, 347, 0, 0, 124, 121, 124,
3116 121, 0, -785, 0, 0, 0, 0, 954, 0, 0,
3117 0, 0, 0, 955, 0, 0, 0, 0, 0, 124,
3118 0, 87, 0, 0, 0, -785, -785, 124, 124, 0,
3119 238, -785, 87, -785, 87, -785, 0, 0, 0, 0,
3120 955, 0, 0, 0, 0, 0, 348, 349, 350, 351,
3121 352, 353, 354, 355, 356, 357, 358, 359, 360, 0,
3122 0, 121, 0, 361, 362, 0, 0, 0, 0, 363,
3123 0, 0, 0, 0, 0, 0, 0, 121, 0, 0,
3124 0, 0, 0, 0, 0, 0, 776, 776, 0, 0,
3125 0, 776, 776, 222, 222, 87, 364, 0, 365, 366,
3126 367, 368, 369, 370, 371, 372, 373, 374, 0, 0,
3127 0, 87, 0, 1121, 0, 0, 0, 121, 0, 0,
3128 0, 121, 0, 0, 121, 255, 258, 259, 260, 0,
3129 0, 0, 222, 222, 0, 0, 0, 0, 0, 0,
3130 0, 0, 0, 0, 0, 310, 311, 1119, 0, 0,
3131 0, 87, 0, 0, 0, 87, 0, 0, 87, 0,
3132 0, 0, 0, 776, 0, 0, 0, 0, 0, 0,
3133 0, 0, 0, 0, 0, 0, 0, 0, 0, 222,
3134 0, 0, 0, 0, 0, 0, 124, 0, 0, 124,
3135 0, 0, 121, 0, 0, 0, 0, 0, 0, 0,
3136 121, 121, 0, 0, 0, 0, 0, 0, 0, 0,
3137 0, 0, 0, 776, 0, 0, 121, 0, 0, 0,
3138 0, 0, 0, 0, 407, 0, 87, 0, 0, 0,
3139 0, 0, 0, 0, 87, 87, 0, 0, 0, 0,
3140 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3141 87, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3142 0, 0, 124, 0, 0, 0, 0, 0, 121, 0,
3143 0, 0, 0, 124, 0, 124, 0, 0, 0, 121,
3144 0, 0, 0, 0, 0, 0, 0, 222, 0, 0,
3145 222, 222, 222, 0, 310, 407, 0, 0, 0, 0,
3146 0, 0, 87, 0, 0, 0, 0, 0, 0, 0,
3147 0, 0, 222, 87, 222, 222, 0, 0, 0, 0,
3148 0, 0, 0, 0, 0, 0, 0, 124, 124, 0,
3149 0, 0, 124, 124, 0, 0, 124, 0, 0, 0,
3150 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3151 0, 0, 124, 0, 0, 348, 349, 350, 351, 352,
3152 353, 354, 355, 121, 357, 358, 0, 0, 0, 0,
3153 0, 0, 361, 362, 0, 0, 0, 0, 0, 0,
3154 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3155 0, 0, 124, 0, 0, 0, 124, 87, 0, 124,
3156 0, 0, 0, 0, 124, 0, 0, 365, 366, 367,
3157 368, 369, 370, 371, 372, 373, 374, 0, 0, 0,
3158 0, 0, 0, 0, 0, 588, 589, 590, 591, 592,
3159 0, 0, 593, 594, 595, 596, 597, 598, 599, 600,
3160 0, 602, 0, 0, 603, 604, 605, 606, 607, 608,
3161 609, 610, 611, 612, 124, 0, 0, 222, 0, 0,
3162 0, 0, 0, 0, 0, 0, 0, 124, 0, 0,
3163 0, 0, 0, 0, 0, 124, 124, 0, 0, 0,
3164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3165 0, 124, 0, 0, 0, 0, 0, 0, 0, 0,
3166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3168 222, 222, 0, 0, 0, 222, 0, 0, 0, 222,
3169 0, 0, 0, 0, 0, 260, 0, 0, 0, 0,
3170 0, 0, 0, 124, 0, 23, 24, 25, 26, 0,
3171 689, 0, 0, 0, 124, 0, 0, 0, 0, 0,
3172 0, 32, 33, 34, 914, 0, 222, 0, 915, 222,
3173 0, 41, 42, 43, 44, 45, 0, 0, 0, 0,
3174 0, 222, 0, 0, 0, 0, 0, 0, 0, 0,
3175 0, 0, 0, 0, 0, 0, 0, 0, 719, 0,
3176 0, 0, 917, 918, 0, 0, 0, 0, 0, 0,
3177 919, 0, 0, 920, 0, 0, 921, 922, 0, 923,
3178 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3179 66, 222, 0, 0, 0, 0, 0, 0, 124, 0,
3180 0, 0, 0, 747, 925, 0, 0, 756, 0, 0,
3181 0, 284, 0, 0, 0, 0, 0, 222, 0, 0,
3182 0, 0, 0, 777, 0, 242, 0, 0, 0, 0,
3183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3184 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3185 0, 0, 0, 0, 0, 0, 23, 24, 25, 26,
3186 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3187 0, 0, 32, 33, 34, 0, 0, 222, 0, 0,
3188 0, 0, 41, 42, 43, 44, 45, 222, 0, 0,
3189 0, 0, 0, 0, 0, 0, 0, 833, 833, 0,
3190 222, 747, 756, 833, 0, 222, 0, 0, 0, 0,
3191 0, 0, 0, 0, 833, 833, 0, 0, 0, 0,
3192 222, 0, 222, 0, 0, 0, 0, 0, 0, 0,
3193 0, 833, 0, 58, 59, 60, 61, 62, 63, 64,
3194 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3196 -785, 4, 284, 5, 6, 7, 8, 9, 222, 0,
3197 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
3198 15, 16, 17, 18, 19, 0, 0, 0, 222, 0,
3199 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3200 0, 222, 0, 0, 0, 28, 29, 30, 31, 32,
3201 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3202 42, 43, 44, 45, 46, 47, 0, 0, 0, 222,
3203 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3204 0, 0, 0, 0, 0, 0, 0, 0, 0, 222,
3205 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
3206 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
3207 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3209 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
3210 68, 69, 0, 0, 0, 0, 0, 0, 0, 0,
3211 0, -785, 0, -785, 0, 0, 0, 0, 0, 0,
3212 0, 0, 0, 0, 1019, 1020, 0, 0, 0, 0,
3213 0, 0, 0, 0, 0, 0, 1026, 1027, 0, 0,
3214 0, 0, 222, 23, 24, 25, 26, 1038, 0, 222,
3215 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,
3216 33, 34, 914, 0, 0, 0, 915, 0, 916, 41,
3217 42, 43, 44, 45, 0, 0, 0, 0, 0, 0,
3218 0, 0, 0, 0, 0, 0, 0, 537, 0, 0,
3219 0, 0, 0, 0, 0, 0, 1082, 833, 833, 0,
3220 917, 918, 833, 833, 0, 0, 0, 0, 919, 0,
3221 0, 920, 0, 0, 921, 922, 222, 923, 541, 0,
3222 58, 59, 924, 61, 62, 63, 64, 65, 66, 0,
3223 0, 833, 833, 0, 833, 833, 0, 222, 0, 0,
3224 0, 0, 925, 0, 0, 0, 0, 0, 0, 284,
3225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3226 0, 0, 0, 0, 0, 0, 0, 0, 0, -762,
3227 222, 0, 0, 0, 833, 0, 0, -762, -762, -762,
3228 0, 0, -762, -762, -762, 0, -762, 0, 0, 0,
3229 0, 0, 0, 0, -762, -762, -762, -762, -762, 0,
3230 0, 0, 0, 0, 0, 0, -762, -762, 0, -762,
3231 -762, -762, -762, -762, 0, 0, 0, 0, 0, 0,
3232 0, 0, 0, 0, 833, 0, 0, 0, 0, 0,
3233 0, 0, 0, 0, 0, 0, 222, -762, 0, 0,
3234 0, 0, 833, 0, 0, 0, -762, -762, -762, -762,
3235 -762, -762, -762, -762, -762, -762, -762, -762, -762, 0,
3236 0, 0, 0, -762, -762, -762, -762, 0, 841, -762,
3237 0, 0, 0, 0, 0, -762, 0, 0, 0, 0,
3238 0, 0, 0, 0, 0, 0, 0, 0, 0, -762,
3239 0, 0, -762, 0, 0, -126, -762, -762, -762, -762,
3240 -762, -762, -762, -762, -762, -762, -762, -762, 0, 0,
3241 0, 0, -762, -762, -762, -762, 222, -652, -762, -762,
3242 -762, 0, -762, 0, 0, -652, -652, -652, 0, 0,
3243 -652, -652, -652, 222, -652, 0, 0, 0, 0, 910,
3244 0, 0, -652, 0, -652, -652, -652, 0, 0, 0,
3245 0, 0, 0, 0, -652, -652, 0, -652, -652, -652,
3246 -652, -652, 0, 0, 0, 0, 0, 0, 0, 0,
3247 0, 0, 348, 349, 350, 351, 352, 353, 354, 355,
3248 356, 357, 358, 359, 360, -652, 0, 0, 0, 361,
3249 362, 0, 0, 0, -652, -652, -652, -652, -652, -652,
3250 -652, -652, -652, -652, -652, -652, -652, 0, 0, 0,
3251 0, -652, -652, -652, -652, 0, -652, -652, 0, 0,
3252 0, 0, 364, -652, 365, 366, 367, 368, 369, 370,
3253 371, 372, 373, 374, 0, 0, 0, -652, 0, 0,
3254 -652, -273, 0, -652, -652, -652, -652, -652, -652, -652,
3255 -652, -652, -652, -652, -652, -652, 0, 0, 0, 0,
3256 0, -652, -652, -652, -655, 0, -652, -652, -652, 0,
3257 -652, 0, -655, -655, -655, 0, 0, -655, -655, -655,
3258 0, -655, 0, 0, 0, 0, 888, 0, 0, -655,
3259 0, -655, -655, -655, 0, 0, 0, 0, 0, 0,
3260 0, -655, -655, 0, -655, -655, -655, -655, -655, 0,
3261 0, 0, 0, 0, 0, 0, 0, 0, 0, 348,
3262 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
3263 359, 360, -655, 0, 0, 0, 361, 362, 0, 0,
3264 0, -655, -655, -655, -655, -655, -655, -655, -655, -655,
3265 -655, -655, -655, -655, 0, 0, 0, 0, -655, -655,
3266 -655, -655, 0, -655, -655, 0, 0, 0, 0, 364,
3267 -655, 365, 366, 367, 368, 369, 370, 371, 372, 373,
3268 374, 0, 0, 0, -655, 0, 0, -655, 0, 0,
3269 -655, -655, -655, -655, -655, -655, -655, -655, -655, -655,
3270 -655, -655, -655, 0, 0, 0, 0, 0, -655, -655,
3271 -655, -763, 0, -655, -655, -655, 0, -655, 0, -763,
3272 -763, -763, 0, 0, -763, -763, -763, 0, -763, 0,
3273 0, 0, 0, 900, 0, 0, -763, -763, -763, -763,
3274 -763, 0, 0, 0, 0, 0, 0, 0, -763, -763,
3275 0, -763, -763, -763, -763, -763, 0, 0, 0, 0,
3276 0, 0, 0, 0, 0, 0, 348, 349, 350, 351,
3277 352, 353, 354, 355, 356, 357, 358, 359, 360, -763,
3278 0, 0, 0, 361, 362, 0, 0, 0, -763, -763,
3279 -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
3280 -763, 0, 0, 0, 0, -763, -763, -763, -763, 0,
3281 0, -763, 0, 0, 0, 0, 364, -763, 365, 366,
3282 367, 368, 369, 370, 371, 372, 373, 374, 0, 0,
3283 0, -763, 0, 0, -763, 0, 0, 0, -763, -763,
3284 -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
3285 0, 0, 0, 0, -763, -763, -763, -763, -764, 0,
3286 -763, -763, -763, 0, -763, 0, -764, -764, -764, 0,
3287 0, -764, -764, -764, 0, -764, 0, 0, 0, 0,
3288 910, 0, 0, -764, -764, -764, -764, -764, 0, 0,
3289 0, 0, 0, 0, 0, -764, -764, 0, -764, -764,
3290 -764, -764, -764, 0, 0, 0, 0, 0, 0, 0,
3291 0, 0, 0, 348, 349, 350, 351, 352, 353, 354,
3292 355, 356, 357, 358, 359, 360, -764, 0, 0, 0,
3293 361, 362, 0, 0, 0, -764, -764, -764, -764, -764,
3294 -764, -764, -764, -764, -764, -764, -764, -764, 0, 0,
3295 0, 0, -764, -764, -764, -764, 0, 0, -764, 0,
3296 0, 0, 0, 364, -764, 365, 366, 367, 368, 369,
3297 370, 371, 372, 373, 374, 0, 0, 0, -764, 0,
3298 0, -764, 0, 0, 0, -764, -764, -764, -764, -764,
3299 -764, -764, -764, -764, -764, -764, -764, 0, 0, 0,
3300 0, -764, -764, -764, -764, -328, 0, -764, -764, -764,
3301 0, -764, 0, -328, -328, -328, 0, 0, -328, -328,
3302 -328, 0, -328, 0, 0, 0, 0, 0, 0, 0,
3303 -328, 0, -328, -328, -328, 0, 0, 0, 0, 0,
3304 0, 0, -328, -328, 0, -328, -328, -328, -328, -328,
3305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3306 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
3307 358, 359, 360, -328, 0, 0, 0, 361, 362, 0,
3308 0, 0, -328, -328, -328, -328, -328, -328, -328, -328,
3309 -328, -328, -328, -328, -328, 0, 0, 0, 0, -328,
3310 -328, -328, -328, 0, 842, -328, 0, 0, 0, 0,
3311 364, -328, 365, 366, 367, 368, 369, 370, 371, 372,
3312 373, 374, 0, 0, 0, -328, 0, 0, -328, 0,
3313 0, -128, -328, -328, -328, -328, -328, -328, -328, -328,
3314 -328, -328, -328, -328, 0, 0, 0, 0, 0, -328,
3315 -328, -328, -465, 0, -328, -328, -328, 0, -328, 0,
3316 -465, -465, -465, 0, 0, -465, -465, -465, 0, -465,
3317 0, 0, 0, 0, 0, 0, 0, -465, -465, -465,
3318 -465, 0, 0, 0, 0, 0, 0, 0, 0, -465,
3319 -465, 0, -465, -465, -465, -465, -465, 0, 0, 0,
3320 0, 0, 0, 0, 0, 0, 0, 348, 349, 350,
3321 351, 352, 353, 354, 355, 356, 357, 358, -786, -786,
3322 -465, 0, 0, 0, 361, 362, 0, 0, 0, -465,
3323 -465, -465, -465, -465, -465, -465, -465, -465, -465, -465,
3324 -465, -465, 0, 0, 0, 0, -465, -465, -465, -465,
3325 0, 0, -465, 0, 0, 0, 0, 0, -465, 365,
3326 366, 367, 368, 369, 370, 371, 372, 373, 374, 0,
3327 0, 0, -465, 0, 0, 0, 0, 0, 0, -465,
3328 0, -465, -465, -465, -465, -465, -465, -465, -465, -465,
3329 -465, 0, 0, 0, 0, -465, -465, -465, -465, -320,
3330 238, -465, -465, -465, 0, -465, 0, -320, -320, -320,
3331 0, 0, -320, -320, -320, 0, -320, 0, 0, 0,
3332 0, 0, 0, 0, -320, 0, -320, -320, -320, 0,
3333 0, 0, 0, 0, 0, 0, -320, -320, 0, -320,
3334 -320, -320, -320, -320, 0, 0, 0, 0, 0, 0,
3335 0, 0, 0, 0, 348, -786, -786, -786, -786, 353,
3336 354, 0, 0, -786, -786, 0, 0, -320, 0, 0,
3337 0, 361, 362, 0, 0, 0, -320, -320, -320, -320,
3338 -320, -320, -320, -320, -320, -320, -320, -320, -320, 0,
3339 0, 0, 0, -320, -320, -320, -320, 0, 0, -320,
3340 0, 0, 0, 0, 0, -320, 365, 366, 367, 368,
3341 369, 370, 371, 372, 373, 374, 0, 0, 0, -320,
3342 0, 0, -320, 0, 0, 0, -320, -320, -320, -320,
3343 -320, -320, -320, -320, -320, -320, -320, -320, 0, 0,
3344 0, 0, 0, -320, -320, -320, -785, 0, -320, -320,
3345 -320, 0, -320, 0, -785, -785, -785, 0, 0, -785,
3346 -785, -785, 0, -785, 0, 0, 0, 0, 0, 0,
3347 0, -785, -785, -785, -785, 0, 0, 0, 0, 0,
3348 0, 0, 0, -785, -785, 0, -785, -785, -785, -785,
3349 -785, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3350 0, 348, 349, 350, 351, 352, 353, 354, 0, 0,
3351 357, 358, 0, 0, -785, 0, 0, 0, 361, 362,
3352 0, 0, 0, -785, -785, -785, -785, -785, -785, -785,
3353 -785, -785, -785, -785, -785, -785, 0, 0, 0, 0,
3354 -785, -785, -785, -785, 0, 0, -785, 0, 0, 0,
3355 0, 0, -785, 365, 366, 367, 368, 369, 370, 371,
3356 372, 373, 374, 0, 0, 0, -785, 0, 0, 0,
3357 0, 0, 0, -785, 0, -785, -785, -785, -785, -785,
3358 -785, -785, -785, -785, -785, 0, 0, 0, 0, -785,
3359 -785, -785, -785, -335, 238, -785, -785, -785, 0, -785,
3360 0, -335, -335, -335, 0, 0, -335, -335, -335, 0,
3361 -335, 0, 0, 0, 0, 0, 0, 0, -335, 0,
3362 -335, -335, 0, 0, 0, 0, 0, 0, 0, 0,
3363 -335, -335, 0, -335, -335, -335, -335, -335, 0, 0,
3364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3366 0, -335, 0, 0, 0, 0, 0, 0, 0, 0,
3367 -335, -335, -335, -335, -335, -335, -335, -335, -335, -335,
3368 -335, -335, -335, 0, 0, 0, 0, -335, -335, -335,
3369 -335, 0, 0, -335, 0, 0, 0, 0, 0, -335,
3370 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3371 0, 0, 0, -335, 0, 0, 0, 0, 0, 0,
3372 -335, 0, -335, -335, -335, -335, -335, -335, -335, -335,
3373 -335, -335, 0, 0, 0, 0, 0, -335, -335, -335,
3374 -762, 235, -335, -335, -335, 0, -335, 0, -762, -762,
3375 -762, 0, 0, 0, -762, -762, 0, -762, 0, 0,
3376 0, 0, 0, 0, 0, -762, -762, 0, 0, 0,
3377 0, 0, 0, 0, 0, 0, 0, -762, -762, 0,
3378 -762, -762, -762, -762, -762, 0, 0, 0, 0, 0,
3379 0, 0, 348, 349, 350, 351, 352, 353, 354, 355,
3380 356, 357, 358, 359, 360, 0, 0, 0, -762, 361,
3381 362, 0, 0, 0, 0, 0, 0, -762, -762, -762,
3382 -762, -762, -762, -762, -762, -762, -762, -762, -762, -762,
3383 0, 0, 0, 0, -762, -762, -762, -762, 0, 786,
3384 -762, 0, 364, 0, 365, 366, 367, 368, 369, 370,
3385 371, 372, 373, 374, 0, 0, 0, 0, 0, 0,
3386 -762, 0, 0, 0, 0, 0, -126, -762, 242, -762,
3387 -762, -762, -762, -762, -762, -762, -762, -762, -762, 0,
3388 0, 0, 0, -762, -762, -762, -117, -762, 0, -762,
3389 0, -762, 0, -762, 0, -762, -762, -762, 0, 0,
3390 0, -762, -762, 0, -762, 0, 0, 0, 0, 0,
3391 0, 0, -762, -762, 0, 0, 0, 0, 0, 0,
3392 0, 0, 0, 0, -762, -762, 0, -762, -762, -762,
3393 -762, -762, 0, 0, 0, 0, 0, 0, 0, 0,
3394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3395 0, 0, 0, 0, 0, -762, 0, 0, 0, 0,
3396 0, 0, 0, 0, -762, -762, -762, -762, -762, -762,
3397 -762, -762, -762, -762, -762, -762, -762, 0, 0, 0,
3398 0, -762, -762, -762, -762, 0, 786, -762, 0, 0,
3399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3400 0, 0, 0, 0, 0, 0, 0, -762, 0, 0,
3401 0, 0, 0, -126, -762, 0, -762, -762, -762, -762,
3402 -762, -762, -762, -762, -762, -762, 0, 0, 0, 0,
3403 -762, -762, -762, -762, -328, 0, -762, 0, -762, 0,
3404 -762, 0, -328, -328, -328, 0, 0, 0, -328, -328,
3405 0, -328, 0, 0, 0, 0, 0, 0, 0, -328,
3406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3407 0, -328, -328, 0, -328, -328, -328, -328, -328, 0,
3408 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3410 0, 0, -328, 0, 0, 0, 0, 0, 0, 0,
3411 0, -328, -328, -328, -328, -328, -328, -328, -328, -328,
3412 -328, -328, -328, -328, 0, 0, 0, 0, -328, -328,
3413 -328, -328, 0, 787, -328, 0, 0, 0, 0, 0,
3414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3415 0, 0, 0, 0, -328, 0, 0, 0, 0, 0,
3416 -128, -328, 0, -328, -328, -328, -328, -328, -328, -328,
3417 -328, -328, -328, 0, 0, 0, 0, 0, -328, -328,
3418 -119, -328, 0, -328, 0, -328, 0, -328, 0, -328,
3419 -328, -328, 0, 0, 0, -328, -328, 0, -328, 0,
3420 0, 0, 0, 0, 0, 0, -328, 0, 0, 0,
3421 0, 0, 0, 0, 0, 0, 0, 0, -328, -328,
3422 0, -328, -328, -328, -328, -328, 0, 0, 0, 0,
3423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3424 0, 0, 0, 0, 0, 0, 0, 0, 0, -328,
3425 0, 0, 0, 0, 0, 0, 0, 0, -328, -328,
3426 -328, -328, -328, -328, -328, -328, -328, -328, -328, -328,
3427 -328, 0, 0, 0, 0, -328, -328, -328, -328, 0,
3428 787, -328, 0, 0, 0, 0, 0, 0, 0, 0,
3429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3430 0, -328, 0, 0, 0, 0, 0, -128, -328, 0,
3431 -328, -328, -328, -328, -328, -328, -328, -328, -328, -328,
3432 0, 0, 0, 0, 0, -328, -328, -328, 0, 0,
3433 -328, 0, -328, 262, -328, 5, 6, 7, 8, 9,
3434 -785, -785, -785, 10, 11, 0, 0, -785, 12, 0,
3435 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3436 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3437 0, 27, 0, 0, 0, 0, 0, 28, 29, 263,
3438 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3439 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3440 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3442 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3443 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
3444 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3445 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3447 0, 67, 68, 69, 0, 0, 0, 0, 0, 0,
3448 0, 0, 0, -785, 262, -785, 5, 6, 7, 8,
3449 9, 0, 0, -785, 10, 11, 0, -785, -785, 12,
3450 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3451 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3452 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
3453 263, 31, 32, 33, 34, 35, 36, 37, 38, 39,
3454 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3455 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3456 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3457 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3458 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3459 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3460 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3462 0, 0, 67, 68, 69, 0, 0, 0, 0, 0,
3463 0, 0, 0, 0, -785, 262, -785, 5, 6, 7,
3464 8, 9, 0, 0, -785, 10, 11, 0, 0, -785,
3465 12, -785, 13, 14, 15, 16, 17, 18, 19, 0,
3466 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
3467 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3468 29, 263, 31, 32, 33, 34, 35, 36, 37, 38,
3469 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3470 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3471 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3472 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3473 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
3474 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
3475 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3476 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3477 0, 0, 0, 67, 68, 69, 0, 0, 0, 0,
3478 0, 0, 0, 0, 0, -785, 262, -785, 5, 6,
3479 7, 8, 9, 0, 0, -785, 10, 11, 0, 0,
3480 -785, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3481 -785, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3482 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
3483 28, 29, 263, 31, 32, 33, 34, 35, 36, 37,
3484 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3485 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3486 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3487 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3488 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
3489 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
3490 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3491 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3492 0, 0, 0, 0, 67, 68, 69, 0, 0, 0,
3493 0, 0, 0, 0, 0, 0, -785, 262, -785, 5,
3494 6, 7, 8, 9, 0, 0, -785, 10, 11, 0,
3495 0, -785, 12, 0, 13, 14, 15, 16, 17, 18,
3496 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
3497 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
3498 0, 28, 29, 263, 31, 32, 33, 34, 35, 36,
3499 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3500 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3501 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3502 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3503 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
3504 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3505 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3506 0, 0, 0, 262, 0, 5, 6, 7, 8, 9,
3507 0, -785, -785, 10, 11, 67, 68, 69, 12, 0,
3508 13, 14, 15, 16, 17, 18, 19, -785, 0, -785,
3509 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3510 0, 27, 0, 0, 0, 0, 0, 28, 29, 263,
3511 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3512 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3513 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3514 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3515 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3516 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
3517 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3518 66, 0, 0, 0, 0, 0, 0, 0, 0, 262,
3519 0, 5, 6, 7, 8, 9, 0, 0, 0, 10,
3520 11, 67, 68, 69, 12, 0, 13, 14, 15, 16,
3521 17, 18, 19, -785, 0, -785, 0, 0, 20, 21,
3522 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3523 0, 0, 0, 28, 29, 263, 31, 32, 33, 34,
3524 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3525 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3526 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3527 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3528 0, 0, 0, 0, 0, 0, 52, 0, 0, 264,
3529 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
3530 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3531 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3532 0, 0, 0, 0, 0, 0, 0, 67, 68, 69,
3533 0, 0, 0, 0, 0, 0, 0, -785, 0, -785,
3534 262, -785, 5, 6, 7, 8, 9, 0, 0, 0,
3535 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
3536 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
3537 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
3538 0, 0, 0, 0, 28, 29, 263, 31, 32, 33,
3539 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3540 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3541 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3542 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3543 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
3544 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3545 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3546 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3547 0, 0, 0, 0, 0, 0, 0, 0, 67, 68,
3548 69, 0, 0, 0, 0, 0, 0, 0, -785, 0,
3549 -785, 4, -785, 5, 6, 7, 8, 9, 0, 0,
3550 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
3551 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
3552 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3553 0, 0, 0, 0, 0, 28, 29, 30, 31, 32,
3554 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3555 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3556 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3557 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3558 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
3559 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
3560 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3561 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3562 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
3563 68, 69, 0, 0, -785, 0, 0, 0, 0, 0,
3564 0, -785, 262, -785, 5, 6, 7, 8, 9, 0,
3565 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
3566 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
3567 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
3568 27, 0, 0, 0, 0, 0, 28, 29, 263, 31,
3569 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3570 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3571 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3573 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
3574 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
3575 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3576 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3578 67, 68, 69, 0, 0, -785, 0, 0, 0, 0,
3579 0, 0, -785, 262, -785, 5, 6, 7, 8, 9,
3580 0, 0, -785, 10, 11, 0, 0, 0, 12, 0,
3581 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3582 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3583 0, 27, 0, 0, 0, 0, 0, 28, 29, 263,
3584 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3585 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3586 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3587 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3588 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3589 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
3590 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3591 66, 0, 0, 0, 0, 0, 0, 0, 0, 262,
3592 0, 5, 6, 7, 8, 9, 0, 0, 0, 10,
3593 11, 67, 68, 69, 12, 0, 13, 14, 15, 16,
3594 17, 18, 19, -785, 0, -785, 0, 0, 20, 21,
3595 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3596 0, 0, 0, 28, 29, 263, 31, 32, 33, 34,
3597 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3598 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3599 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3600 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3601 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
3602 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
3603 60, 61, 62, 63, 64, 65, 66, 0, -785, 0,
3604 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3605 0, 9, 0, 0, 0, 10, 11, 67, 68, 69,
3606 12, 0, 13, 14, 15, 16, 17, 18, 19, -785,
3607 0, -785, 0, 0, 20, 21, 22, 23, 24, 25,
3608 26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
3609 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3610 39, 40, 210, 41, 42, 43, 44, 45, 46, 47,
3611 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3612 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3613 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3614 0, 0, 211, 0, 0, 212, 54, 0, 55, 56,
3615 0, 213, 214, 215, 58, 59, 216, 61, 62, 63,
3616 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3617 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3618 0, 10, 11, 67, 217, 69, 12, 0, 13, 14,
3619 15, 16, 17, 18, 19, 0, 0, 242, 0, 0,
3620 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3621 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3622 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3623 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3624 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3625 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3626 50, 51, 0, 0, 0, 0, 0, 0, 211, 0,
3627 0, 212, 54, 0, 55, 56, 0, 0, 0, 0,
3628 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3629 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3630 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3631 68, 69, 12, 0, 13, 14, 15, 16, 17, 18,
3632 19, 312, 0, 313, 0, 0, 20, 21, 22, 23,
3633 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
3634 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3635 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3636 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3637 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3638 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3639 0, 0, 0, 0, 211, 0, 0, 212, 54, 0,
3640 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
3641 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3642 0, 0, 0, 0, 0, 5, 6, 7, 8, 9,
3643 0, 0, 0, 10, 11, 67, 68, 69, 12, 0,
3644 13, 14, 15, 16, 17, 18, 19, 0, 0, 242,
3645 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3646 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
3647 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3648 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3649 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3650 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3651 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3652 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
3653 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3654 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3655 0, 5, 6, 7, 8, 9, 0, 0, 0, 10,
3656 11, 67, 68, 69, 12, 0, 13, 14, 15, 16,
3657 17, 18, 19, 522, 0, 0, 0, 0, 20, 21,
3658 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3659 0, 0, 0, 28, 29, 263, 31, 32, 33, 34,
3660 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3661 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3662 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3663 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3664 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
3665 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
3666 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3667 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3668 0, 0, 0, 0, 0, 0, 0, 67, 68, 69,
3669 0, 0, 0, 0, 0, 0, 0, 0, 0, 522,
3670 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
3671 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
3672 149, 150, 151, 152, 0, 0, 0, 153, 154, 155,
3673 411, 412, 413, 414, 160, 161, 162, 0, 0, 0,
3674 0, 0, 163, 164, 165, 166, 415, 416, 417, 418,
3675 171, 37, 38, 419, 40, 0, 0, 0, 0, 0,
3676 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3677 0, 0, 173, 174, 175, 176, 177, 178, 179, 180,
3678 181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
3679 185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
3680 0, 0, 0, 0, 188, 189, 0, 0, 0, 0,
3681 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3682 0, 0, 0, 0, 0, 0, 190, 191, 192, 193,
3683 194, 195, 196, 197, 198, 199, 0, 200, 201, 0,
3684 0, 0, 0, 0, 202, 420, 129, 130, 131, 132,
3685 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
3686 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
3687 0, 0, 0, 153, 154, 155, 156, 157, 158, 159,
3688 160, 161, 162, 0, 0, 0, 0, 0, 163, 164,
3689 165, 166, 167, 168, 169, 170, 171, 295, 296, 172,
3690 297, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3691 0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
3692 175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
3693 183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
3694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3695 188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
3696 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3697 0, 0, 190, 191, 192, 193, 194, 195, 196, 197,
3698 198, 199, 0, 200, 201, 0, 0, 0, 0, 0,
3699 202, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3700 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
3701 148, 149, 150, 151, 152, 0, 0, 0, 153, 154,
3702 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
3703 0, 0, 0, 163, 164, 165, 166, 167, 168, 169,
3704 170, 171, 244, 0, 172, 0, 0, 0, 0, 0,
3705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3706 0, 0, 0, 173, 174, 175, 176, 177, 178, 179,
3707 180, 181, 0, 0, 182, 183, 0, 0, 0, 0,
3708 184, 185, 186, 187, 0, 0, 0, 0, 0, 0,
3709 0, 0, 0, 0, 0, 188, 189, 0, 0, 59,
3710 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3711 0, 0, 0, 0, 0, 0, 0, 190, 191, 192,
3712 193, 194, 195, 196, 197, 198, 199, 0, 200, 201,
3713 0, 0, 0, 0, 0, 202, 129, 130, 131, 132,
3714 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
3715 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
3716 0, 0, 0, 153, 154, 155, 156, 157, 158, 159,
3717 160, 161, 162, 0, 0, 0, 0, 0, 163, 164,
3718 165, 166, 167, 168, 169, 170, 171, 0, 0, 172,
3719 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3720 0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
3721 175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
3722 183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
3723 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3724 188, 189, 0, 0, 59, 0, 0, 0, 0, 0,
3725 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3726 0, 0, 190, 191, 192, 193, 194, 195, 196, 197,
3727 198, 199, 0, 200, 201, 0, 0, 0, 0, 0,
3728 202, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3729 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
3730 148, 149, 150, 151, 152, 0, 0, 0, 153, 154,
3731 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
3732 0, 0, 0, 163, 164, 165, 166, 167, 168, 169,
3733 170, 171, 0, 0, 172, 0, 0, 0, 0, 0,
3734 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3735 0, 0, 0, 173, 174, 175, 176, 177, 178, 179,
3736 180, 181, 0, 0, 182, 183, 0, 0, 0, 0,
3737 184, 185, 186, 187, 0, 0, 0, 0, 0, 0,
3738 0, 0, 0, 0, 0, 188, 189, 0, 0, 0,
3739 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3740 0, 0, 0, 0, 0, 0, 0, 190, 191, 192,
3741 193, 194, 195, 196, 197, 198, 199, 0, 200, 201,
3742 5, 6, 7, 0, 9, 202, 0, 0, 10, 11,
3743 0, 0, 0, 12, 0, 13, 14, 15, 250, 251,
3744 18, 19, 0, 0, 0, 0, 0, 20, 252, 253,
3745 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3746 0, 0, 0, 282, 0, 0, 32, 33, 34, 35,
3747 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3748 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3750 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3751 0, 0, 0, 0, 0, 283, 0, 0, 212, 54,
3752 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
3753 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3754 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3755 6, 7, 0, 9, 0, 0, 284, 10, 11, 0,
3756 0, 0, 12, 285, 13, 14, 15, 250, 251, 18,
3757 19, 0, 0, 0, 0, 0, 20, 252, 253, 23,
3758 24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
3759 0, 0, 282, 0, 0, 32, 33, 34, 35, 36,
3760 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3761 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3762 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3763 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3764 0, 0, 0, 0, 283, 0, 0, 212, 54, 0,
3765 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
3766 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3767 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3768 7, 8, 9, 0, 0, 284, 10, 11, 0, 0,
3769 0, 12, 583, 13, 14, 15, 16, 17, 18, 19,
3770 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3771 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
3772 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
3773 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3774 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3775 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3776 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3777 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
3778 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
3779 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3780 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3781 0, 0, 10, 11, 67, 68, 69, 12, 0, 13,
3782 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
3783 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
3784 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3785 32, 33, 34, 35, 36, 37, 38, 39, 40, 210,
3786 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3787 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3788 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3789 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
3790 0, 0, 212, 54, 0, 55, 56, 0, 213, 214,
3791 215, 58, 59, 216, 61, 62, 63, 64, 65, 66,
3792 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3793 5, 6, 7, 8, 9, 0, 0, 0, 10, 11,
3794 67, 217, 69, 12, 0, 13, 14, 15, 16, 17,
3795 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3796 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
3797 0, 0, 28, 29, 0, 31, 32, 33, 34, 35,
3798 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3799 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3800 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3801 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3802 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
3803 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
3804 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3805 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3806 9, 0, 0, 0, 10, 11, 67, 68, 69, 12,
3807 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3808 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3809 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
3810 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3811 40, 210, 41, 42, 43, 44, 45, 46, 47, 0,
3812 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3813 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3814 0, 0, 0, 50, 458, 0, 0, 0, 0, 0,
3815 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
3816 213, 214, 215, 58, 59, 216, 61, 62, 63, 64,
3817 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3818 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3819 10, 11, 67, 217, 69, 12, 0, 13, 14, 15,
3820 250, 251, 18, 19, 0, 0, 0, 0, 0, 20,
3821 252, 253, 23, 24, 25, 26, 0, 0, 209, 0,
3822 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3823 34, 35, 36, 37, 38, 39, 40, 210, 41, 42,
3824 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3825 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3826 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3827 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
3828 212, 54, 0, 55, 56, 0, 668, 214, 215, 58,
3829 59, 216, 61, 62, 63, 64, 65, 66, 0, 0,
3830 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3831 7, 0, 9, 0, 0, 0, 10, 11, 67, 217,
3832 69, 12, 0, 13, 14, 15, 250, 251, 18, 19,
3833 0, 0, 0, 0, 0, 20, 252, 253, 23, 24,
3834 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3835 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3836 38, 39, 40, 210, 41, 42, 43, 44, 45, 46,
3837 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3838 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3839 0, 0, 0, 0, 0, 50, 458, 0, 0, 0,
3840 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
3841 56, 0, 668, 214, 215, 58, 59, 216, 61, 62,
3842 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3843 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3844 0, 0, 10, 11, 67, 217, 69, 12, 0, 13,
3845 14, 15, 250, 251, 18, 19, 0, 0, 0, 0,
3846 0, 20, 252, 253, 23, 24, 25, 26, 0, 0,
3847 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3848 32, 33, 34, 35, 36, 37, 38, 39, 40, 210,
3849 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3850 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3851 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3852 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
3853 0, 0, 212, 54, 0, 55, 56, 0, 213, 214,
3854 0, 58, 59, 216, 61, 62, 63, 64, 65, 66,
3855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3856 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3857 67, 217, 69, 12, 0, 13, 14, 15, 250, 251,
3858 18, 19, 0, 0, 0, 0, 0, 20, 252, 253,
3859 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3860 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3861 36, 37, 38, 39, 40, 210, 41, 42, 43, 44,
3862 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3863 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3864 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3865 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
3866 0, 55, 56, 0, 0, 214, 215, 58, 59, 216,
3867 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3868 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3869 9, 0, 0, 0, 10, 11, 67, 217, 69, 12,
3870 0, 13, 14, 15, 250, 251, 18, 19, 0, 0,
3871 0, 0, 0, 20, 252, 253, 23, 24, 25, 26,
3872 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
3873 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3874 40, 210, 41, 42, 43, 44, 45, 46, 47, 0,
3875 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3876 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3877 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3878 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
3879 668, 214, 0, 58, 59, 216, 61, 62, 63, 64,
3880 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3881 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3882 10, 11, 67, 217, 69, 12, 0, 13, 14, 15,
3883 250, 251, 18, 19, 0, 0, 0, 0, 0, 20,
3884 252, 253, 23, 24, 25, 26, 0, 0, 209, 0,
3885 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3886 34, 35, 36, 37, 38, 39, 40, 210, 41, 42,
3887 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3888 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3889 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3890 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
3891 212, 54, 0, 55, 56, 0, 0, 214, 0, 58,
3892 59, 216, 61, 62, 63, 64, 65, 66, 0, 0,
3893 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3894 7, 0, 9, 0, 0, 0, 10, 11, 67, 217,
3895 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3896 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3897 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3898 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3899 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3900 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3901 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3902 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3903 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
3904 56, 0, 764, 0, 0, 58, 59, 60, 61, 62,
3905 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3906 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3907 0, 0, 10, 11, 67, 217, 69, 12, 0, 13,
3908 14, 15, 250, 251, 18, 19, 0, 0, 0, 0,
3909 0, 20, 252, 253, 23, 24, 25, 26, 0, 0,
3910 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3911 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3912 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3913 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3914 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3915 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
3916 0, 0, 212, 54, 0, 55, 56, 0, 764, 0,
3917 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3919 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3920 67, 217, 69, 12, 0, 13, 14, 15, 250, 251,
3921 18, 19, 0, 0, 0, 0, 0, 20, 252, 253,
3922 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3923 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3924 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3925 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3926 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3927 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3928 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
3929 0, 55, 56, 0, 979, 0, 0, 58, 59, 60,
3930 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3931 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3932 9, 0, 0, 0, 10, 11, 67, 217, 69, 12,
3933 0, 13, 14, 15, 250, 251, 18, 19, 0, 0,
3934 0, 0, 0, 20, 252, 253, 23, 24, 25, 26,
3935 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
3936 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3937 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3938 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3939 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3940 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3941 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
3942 1033, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3943 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3944 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3945 10, 11, 67, 217, 69, 12, 0, 13, 14, 15,
3946 250, 251, 18, 19, 0, 0, 0, 0, 0, 20,
3947 252, 253, 23, 24, 25, 26, 0, 0, 209, 0,
3948 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3949 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3950 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3951 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3952 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3953 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
3954 212, 54, 0, 55, 56, 0, 1179, 0, 0, 58,
3955 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3956 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3957 7, 0, 9, 0, 0, 0, 10, 11, 67, 217,
3958 69, 12, 0, 13, 14, 15, 250, 251, 18, 19,
3959 0, 0, 0, 0, 0, 20, 252, 253, 23, 24,
3960 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3961 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3962 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3963 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3964 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3965 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3966 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
3967 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
3968 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3969 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3970 0, 0, 10, 11, 67, 217, 69, 12, 0, 13,
3971 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
3972 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
3973 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3974 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3975 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3976 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3977 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3978 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
3979 0, 0, 212, 54, 0, 55, 56, 0, 0, 0,
3980 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3981 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3982 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3983 67, 217, 69, 12, 0, 13, 14, 15, 16, 17,
3984 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3985 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
3986 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3987 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3988 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3989 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3990 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3991 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
3992 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
3993 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3994 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3995 9, 0, 0, 0, 10, 11, 67, 68, 69, 12,
3996 0, 13, 14, 15, 250, 251, 18, 19, 0, 0,
3997 0, 0, 0, 20, 252, 253, 23, 24, 25, 26,
3998 0, 0, 209, 0, 0, 0, 0, 0, 0, 282,
3999 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
4000 40, 0, 41, 42, 43, 44, 45, 46, 47, 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, 0, 0, 0, 0, 0, 0, 0,
4004 0, 283, 0, 0, 343, 54, 0, 55, 56, 0,
4005 344, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4006 65, 66, 0, 0, 0, 0, 0, 0, 5, 6,
4007 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
4008 0, 12, 284, 13, 14, 15, 250, 251, 18, 19,
4009 0, 0, 0, 0, 0, 20, 252, 253, 23, 24,
4010 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
4011 0, 282, 0, 0, 32, 33, 34, 35, 36, 37,
4012 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
4013 47, 0, 0, 0, 0, 0, 0, 0, 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, 392, 0, 0, 53, 54, 0, 55,
4017 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
4018 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
4019 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4020 0, 0, 0, 12, 284, 13, 14, 15, 250, 251,
4021 18, 19, 0, 0, 0, 0, 0, 20, 252, 253,
4022 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
4023 0, 0, 0, 282, 0, 0, 32, 33, 34, 400,
4024 36, 37, 38, 401, 40, 0, 41, 42, 43, 44,
4025 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4028 0, 402, 0, 0, 0, 403, 0, 0, 212, 54,
4029 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
4030 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
4031 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
4032 10, 11, 0, 0, 0, 12, 284, 13, 14, 15,
4033 250, 251, 18, 19, 0, 0, 0, 0, 0, 20,
4034 252, 253, 23, 24, 25, 26, 0, 0, 209, 0,
4035 0, 0, 0, 0, 0, 282, 0, 0, 32, 33,
4036 34, 400, 36, 37, 38, 401, 40, 0, 41, 42,
4037 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
4038 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4040 0, 0, 0, 0, 0, 0, 0, 403, 0, 0,
4041 212, 54, 0, 55, 56, 0, 0, 0, 0, 58,
4042 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
4043 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
4044 0, 0, 10, 11, 0, 0, 0, 12, 284, 13,
4045 14, 15, 250, 251, 18, 19, 0, 0, 0, 0,
4046 0, 20, 252, 253, 23, 24, 25, 26, 0, 0,
4047 209, 0, 0, 0, 0, 0, 0, 282, 0, 0,
4048 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
4049 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
4050 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4052 0, 0, 0, 0, 0, 0, 0, 0, 0, 283,
4053 0, 0, 343, 54, 0, 55, 56, 0, 0, 0,
4054 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4055 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
4056 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
4057 284, 13, 14, 15, 250, 251, 18, 19, 0, 0,
4058 0, 0, 0, 20, 252, 253, 23, 24, 25, 26,
4059 0, 0, 209, 0, 0, 0, 0, 0, 0, 282,
4060 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
4061 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
4062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4065 0, 1118, 0, 0, 212, 54, 0, 55, 56, 0,
4066 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4067 65, 66, 0, 0, 0, 0, 0, 0, 5, 6,
4068 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
4069 0, 12, 284, 13, 14, 15, 250, 251, 18, 19,
4070 0, 0, 0, 0, 0, 20, 252, 253, 23, 24,
4071 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
4072 0, 282, 0, 0, 32, 33, 34, 35, 36, 37,
4073 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
4074 47, 23, 24, 25, 26, 0, 0, 0, 0, 0,
4075 0, 0, 0, 0, 0, 0, 0, 32, 33, 34,
4076 914, 0, 0, 0, 915, 0, 0, 41, 42, 43,
4077 44, 45, 0, 1207, 0, 0, 212, 54, 0, 55,
4078 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
4079 63, 64, 65, 66, 0, 0, 0, 0, 917, 918,
4080 0, 0, 0, 0, 0, 0, 919, 0, 0, 920,
4081 0, 0, 921, 922, 284, 1145, 0, 0, 58, 59,
4082 60, 61, 62, 63, 64, 65, 66, 23, 24, 25,
4083 26, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4084 925, 0, 0, 32, 33, 34, 914, 284, 0, 0,
4085 915, 0, 0, 41, 42, 43, 44, 45, 0, 0,
4086 23, 24, 25, 26, 0, 0, 0, 0, 0, 0,
4087 0, 0, 0, 0, 0, 0, 32, 33, 34, 914,
4088 0, 0, 0, 915, 917, 918, 41, 42, 43, 44,
4089 45, 0, 919, 0, 0, 920, 0, 0, 921, 922,
4090 0, 923, 0, 0, 58, 59, 60, 61, 62, 63,
4091 64, 65, 66, 0, 0, 0, 0, 917, 918, 0,
4092 0, 0, 0, 0, 0, 919, 925, 0, 920, 0,
4093 0, 921, 922, 284, 0, 0, 0, 58, 59, 60,
4094 61, 62, 63, 64, 65, 66, 613, 614, 0, 0,
4095 615, 0, 0, 0, 0, 0, 0, 0, 0, 925,
4096 0, 0, 0, 0, 0, 0, 284, 0, 0, 173,
4097 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4098 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4099 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4100 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4102 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4103 197, 198, 199, 0, 200, 201, 622, 623, 0, 0,
4104 624, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4105 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4106 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4107 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4108 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4109 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4110 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4111 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4112 197, 198, 199, 0, 200, 201, 672, 614, 0, 0,
4113 673, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4114 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4115 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4116 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4118 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4119 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4120 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4121 197, 198, 199, 0, 200, 201, 675, 623, 0, 0,
4122 676, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4123 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4124 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4125 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4127 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4128 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4129 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4130 197, 198, 199, 0, 200, 201, 702, 614, 0, 0,
4131 703, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4132 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4133 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4134 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4135 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4136 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4138 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4139 197, 198, 199, 0, 200, 201, 705, 623, 0, 0,
4140 706, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4141 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4142 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4143 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4144 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4145 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4147 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4148 197, 198, 199, 0, 200, 201, 814, 614, 0, 0,
4149 815, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4150 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4151 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4152 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4154 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4156 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4157 197, 198, 199, 0, 200, 201, 817, 623, 0, 0,
4158 818, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4159 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4160 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4161 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4162 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4163 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4165 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4166 197, 198, 199, 0, 200, 201, 823, 614, 0, 0,
4167 824, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4168 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4169 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4170 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4172 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4173 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4174 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4175 197, 198, 199, 0, 200, 201, 657, 623, 0, 0,
4176 658, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4177 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4178 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4179 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4180 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4181 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4183 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4184 197, 198, 199, 0, 200, 201, 1039, 614, 0, 0,
4185 1040, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4186 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4187 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4188 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4190 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4191 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4192 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4193 197, 198, 199, 0, 200, 201, 1042, 623, 0, 0,
4194 1043, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4195 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4196 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4197 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4198 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4199 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4201 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4202 197, 198, 199, 0, 200, 201, 1246, 614, 0, 0,
4203 1247, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4204 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4205 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4206 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4207 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4208 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4210 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4211 197, 198, 199, 0, 200, 201, 1249, 623, 0, 0,
4212 1250, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4213 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4214 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4215 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4216 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4217 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4219 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4220 197, 198, 199, 0, 200, 201, 1283, 614, 0, 0,
4221 1284, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4222 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4223 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4224 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4225 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4226 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4227 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4228 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4229 197, 198, 199, 0, 200, 201, 657, 623, 0, 0,
4230 658, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4231 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4232 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4233 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4235 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4236 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4237 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4238 197, 198, 199, 0, 200, 201, 0, 0, 0, 0,
4242 static const yytype_int16 yycheck[] =
4244 2, 8, 60, 380, 59, 91, 105, 16, 17, 385,
4245 71, 324, 2, 28, 4, 328, 324, 8, 104, 331,
4246 328, 28, 96, 328, 556, 802, 539, 736, 22, 53,
4247 22, 403, 238, 16, 17, 733, 97, 28, 57, 232,
4248 444, 302, 303, 85, 740, 276, 101, 809, 452, 280,
4249 452, 4, 59, 55, 56, 379, 784, 381, 68, 16,
4250 17, 93, 94, 53, 54, 97, 85, 57, 783, 784,
4251 382, 448, 55, 736, 76, 77, 2, 97, 4, 98,
4252 99, 100, 94, 871, 733, 97, 80, 53, 80, 57,
4253 492, 740, 921, 102, 101, 85, 502, 67, 55, 56,
4254 77, 869, 71, 586, 428, 1068, 77, 29, 98, 99,
4255 100, 101, 52, 16, 17, 27, 25, 660, 661, 102,
4256 783, 784, 66, 447, 1184, 449, 1211, 504, 54, 66,
4257 25, 13, 1028, 68, 66, 97, 100, 66, 68, 264,
4258 68, 227, 34, 917, 918, 102, 25, 66, 26, 789,
4259 27, 99, 29, 477, 25, 25, 144, 797, 216, 586,
4260 52, 96, 97, 25, 13, 153, 96, 97, 0, 97,
4261 256, 52, 25, 54, 55, 119, 57, 583, 126, 153,
4262 561, 505, 563, 145, 121, 122, 148, 119, 212, 153,
4263 25, 143, 121, 122, 1279, 13, 37, 38, 146, 102,
4264 119, 123, 121, 122, 290, 266, 146, 720, 721, 241,
4265 145, 243, 13, 148, 1274, 152, 218, 219, 343, 13,
4266 101, 26, 212, 152, 226, 249, 235, 13, 237, 238,
4267 232, 146, 1128, 660, 661, 143, 238, 146, 153, 151,
4268 264, 153, 219, 285, 13, 247, 266, 218, 219, 1078,
4269 1079, 146, 235, 148, 237, 238, 517, 247, 519, 249,
4270 1223, 253, 254, 640, 146, 143, 285, 146, 751, 151,
4271 463, 153, 262, 650, 264, 146, 146, 649, 235, 683,
4272 237, 685, 25, 685, 146, 317, 318, 319, 320, 740,
4273 322, 323, 743, 146, 727, 285, 13, 266, 264, 1073,
4274 1074, 1051, 151, 736, 153, 317, 318, 319, 320, 395,
4275 287, 146, 153, 1009, 284, 100, 1014, 641, 109, 343,
4276 1070, 247, 25, 25, 1112, 344, 316, 651, 389, 56,
4277 148, 321, 235, 151, 237, 153, 262, 327, 143, 341,
4278 652, 331, 133, 148, 346, 1113, 13, 148, 152, 881,
4279 151, 13, 153, 343, 344, 387, 869, 151, 871, 153,
4280 1009, 146, 386, 316, 388, 151, 772, 153, 1096, 389,
4281 402, 380, 68, 99, 381, 387, 344, 343, 380, 1028,
4282 13, 1096, 151, 126, 153, 68, 100, 126, 792, 381,
4283 316, 152, 382, 1056, 707, 321, 386, 68, 388, 707,
4284 126, 97, 707, 146, 1181, 282, 149, 146, 1071, 68,
4285 153, 152, 68, 96, 97, 1078, 1079, 960, 961, 1181,
4286 733, 428, 965, 966, 126, 96, 97, 740, 25, 431,
4287 432, 52, 146, 1096, 151, 56, 153, 68, 97, 448,
4288 442, 97, 449, 146, 146, 148, 448, 149, 450, 451,
4289 711, 153, 99, 68, 152, 716, 471, 449, 25, 461,
4290 502, 463, 145, 77, 471, 96, 97, 1217, 699, 28,
4291 477, 126, 1222, 1223, 145, 68, 478, 683, 671, 126,
4292 471, 96, 97, 502, 151, 477, 153, 444, 68, 151,
4293 126, 153, 68, 148, 484, 504, 877, 878, 505, 146,
4294 1209, 882, 504, 884, 97, 886, 1204, 52, 569, 34,
4295 822, 56, 502, 505, 145, 1265, 1293, 97, 151, 66,
4296 153, 97, 136, 137, 138, 783, 784, 52, 1028, 126,
4297 145, 126, 489, 960, 961, 912, 66, 67, 965, 966,
4298 853, 583, 1292, 545, 1087, 853, 1209, 919, 853, 146,
4299 146, 148, 149, 99, 556, 1204, 153, 566, 1009, 126,
4300 1011, 570, 1211, 99, 583, 1016, 568, 66, 642, 151,
4301 580, 153, 119, 634, 121, 122, 586, 1028, 68, 146,
4302 126, 66, 149, 112, 68, 68, 153, 911, 1286, 913,
4303 126, 121, 122, 583, 1126, 1028, 1000, 580, 1000, 1112,
4304 1113, 15, 1134, 586, 1217, 981, 630, 97, 632, 1222,
4305 1037, 25, 96, 97, 97, 150, 68, 99, 153, 621,
4306 119, 653, 121, 122, 618, 627, 618, 77, 82, 83,
4307 1279, 640, 146, 627, 641, 627, 121, 122, 640, 124,
4308 630, 650, 632, 99, 651, 97, 1022, 662, 650, 641,
4309 660, 661, 1265, 148, 847, 662, 688, 659, 700, 651,
4310 1087, 145, 652, 921, 68, 659, 56, 659, 9, 671,
4311 126, 662, 54, 985, 15, 129, 130, 68, 126, 68,
4312 938, 700, 64, 65, 134, 135, 136, 137, 138, 66,
4313 68, 693, 96, 97, 99, 781, 1009, 58, 1136, 1137,
4314 692, 693, 100, 1075, 1204, 96, 97, 96, 97, 1209,
4315 700, 1211, 15, 1213, 17, 1028, 77, 1093, 96, 97,
4316 1032, 126, 148, 241, 56, 602, 683, 153, 1260, 68,
4317 772, 830, 1028, 1114, 1115, 1116, 1117, 68, 146, 1190,
4318 99, 145, 119, 620, 121, 122, 99, 108, 109, 751,
4319 752, 269, 66, 772, 145, 273, 145, 96, 97, 820,
4320 1211, 146, 1213, 146, 148, 96, 97, 145, 751, 148,
4321 153, 1204, 133, 126, 829, 99, 1209, 99, 1211, 1279,
4322 1213, 1281, 772, 149, 786, 787, 1286, 153, 1288, 821,
4323 1048, 793, 794, 783, 784, 819, 1108, 674, 800, 148,
4324 802, 1177, 126, 1303, 126, 119, 145, 121, 122, 821,
4325 1068, 37, 38, 77, 145, 14, 15, 1255, 1256, 1196,
4326 1078, 1079, 829, 1261, 146, 1263, 1264, 704, 1279, 819,
4327 1281, 149, 822, 126, 68, 792, 144, 1288, 1096, 841,
4328 842, 99, 844, 845, 146, 847, 1279, 68, 1281, 150,
4329 99, 153, 1303, 1286, 56, 1288, 68, 1295, 1296, 1297,
4330 1298, 148, 96, 97, 1245, 146, 924, 99, 126, 1307,
4331 1303, 895, 77, 1197, 126, 96, 97, 126, 210, 881,
4332 126, 213, 214, 215, 96, 97, 99, 126, 146, 891,
4333 106, 1204, 99, 70, 126, 146, 99, 146, 1211, 901,
4334 56, 903, 99, 912, 151, 895, 913, 909, 1204, 25,
4335 912, 145, 130, 126, 146, 1211, 906, 1213, 908, 126,
4336 2, 913, 4, 126, 145, 986, 99, 917, 918, 126,
4337 126, 921, 126, 145, 16, 17, 454, 1056, 970, 816,
4338 149, 459, 146, 146, 462, 969, 146, 465, 938, 826,
4339 960, 961, 144, 126, 58, 965, 966, 144, 970, 1078,
4340 1079, 146, 964, 481, 88, 89, 1279, 146, 486, 126,
4341 66, 53, 54, 77, 146, 57, 146, 26, 146, 969,
4342 906, 146, 908, 1279, 52, 1281, 68, 146, 54, 55,
4343 1286, 57, 1288, 52, 996, 985, 66, 10, 64, 65,
4344 8, 1025, 1021, 85, 108, 1029, 144, 1303, 112, 40,
4345 41, 93, 94, 286, 287, 97, 98, 99, 100, 68,
4346 102, 146, 13, 119, 146, 121, 122, 1037, 124, 547,
4347 1068, 1021, 25, 1065, 1120, 1025, 146, 17, 152, 1029,
4348 1078, 1079, 1032, 152, 921, 922, 146, 96, 97, 119,
4349 126, 121, 122, 1065, 124, 44, 44, 144, 1048, 126,
4350 146, 1051, 146, 128, 582, 44, 26, 52, 44, 54,
4351 55, 56, 57, 150, 15, 146, 1100, 1087, 1068, 1069,
4352 1070, 52, 146, 1073, 1074, 1109, 146, 131, 1078, 1079,
4353 146, 146, 1150, 100, 143, 146, 145, 52, 131, 148,
4354 1124, 40, 41, 42, 43, 44, 1096, 26, 68, 146,
4355 1100, 443, 444, 1132, 674, 52, 101, 146, 1108, 1109,
4356 452, 146, 107, 1125, 1126, 1002, 59, 60, 61, 62,
4357 212, 146, 1134, 100, 1124, 146, 96, 97, 56, 144,
4358 146, 151, 1132, 52, 704, 54, 55, 56, 57, 68,
4359 149, 1028, 1176, 235, 146, 237, 238, 489, 9, 241,
4360 492, 243, 131, 1187, 1041, 247, 52, 249, 54, 55,
4361 56, 57, 146, 1050, 146, 131, 1053, 96, 97, 1181,
4362 262, 146, 264, 143, 1203, 145, 1176, 1196, 148, 146,
4363 1197, 149, 101, 146, 1196, 146, 1198, 1187, 146, 1076,
4364 1232, 1233, 146, 285, 144, 1197, 724, 52, 56, 54,
4365 55, 56, 57, 1203, 146, 120, 2, 146, 4, 146,
4366 1232, 1233, 554, 146, 143, 146, 145, 1217, 1230, 148,
4367 16, 17, 1222, 1223, 316, 317, 318, 319, 320, 321,
4368 322, 323, 146, 146, 247, 327, 148, 1271, 580, 331,
4369 148, 1128, 480, 484, 586, 829, 816, 98, 1260, 89,
4370 100, 343, 344, 659, 752, 1230, 826, 53, 54, 720,
4371 869, 1130, 1028, 346, 1151, 1265, 903, 1274, 831, 574,
4372 1293, 1271, 68, 1071, 52, 339, 54, 55, 56, 57,
4373 58, 1293, 1069, 1071, 1171, 1172, 1173, 1067, 380, 1198,
4374 382, 1125, 1292, 108, 386, 387, 388, 93, 94, 77,
4375 828, 97, 101, 519, 736, 1209, 102, 1204, 733, -1,
4376 402, 1151, -1, -1, -1, -1, -1, -1, 846, -1,
4377 848, 663, -1, 101, -1, -1, 668, 77, -1, 107,
4378 108, 109, -1, -1, -1, -1, -1, -1, -1, 867,
4379 -1, 683, -1, 685, 94, 95, -1, -1, 431, 432,
4380 -1, 921, 1239, -1, -1, 133, 448, -1, 136, 442,
4381 -1, 1248, -1, -1, 660, 661, -1, 450, 451, -1,
4382 -1, -1, 571, -1, -1, 153, -1, 576, -1, 578,
4383 -1, 677, 678, 133, 134, 135, 136, 137, 138, 731,
4384 -1, -1, 484, -1, -1, 478, -1, -1, 694, -1,
4385 52, -1, 54, 55, 56, 57, 58, -1, -1, 751,
4386 502, -1, 504, -1, -1, -1, 212, -1, -1, -1,
4387 -1, -1, 764, -1, -1, 77, -1, -1, -1, 628,
4388 -1, -1, -1, -1, 633, -1, 635, -1, -1, 235,
4389 -1, 237, 238, 77, -1, 241, -1, 243, -1, 101,
4390 792, 247, -1, 249, -1, 107, 108, 109, 77, -1,
4391 94, 95, -1, -1, -1, -1, 262, -1, 264, -1,
4392 812, 1041, -1, -1, 566, 94, 95, -1, 570, -1,
4393 1050, 133, -1, 1053, 136, -1, -1, -1, 580, -1,
4394 -1, 583, -1, -1, 586, -1, -1, 131, 132, 133,
4395 134, 135, 136, 137, 138, -1, 1076, -1, 52, -1,
4396 54, 55, 56, 57, 58, 134, 135, 136, 137, 138,
4397 316, 317, 318, 319, 320, 321, 322, 323, -1, -1,
4398 -1, 327, -1, 77, -1, 331, -1, -1, 630, -1,
4399 632, -1, -1, -1, -1, -1, -1, 343, 640, 1077,
4400 -1, -1, -1, -1, -1, -1, -1, 101, 650, -1,
4401 652, 653, -1, 905, 108, 109, -1, -1, 660, 661,
4402 52, -1, 54, 55, 56, 57, 58, -1, -1, -1,
4403 -1, -1, -1, -1, 380, -1, 382, -1, -1, 133,
4404 386, 387, 388, -1, -1, 77, 688, -1, -1, -1,
4405 -1, 1171, 1172, 1173, -1, -1, 402, -1, 700, 91,
4406 -1, 810, -1, -1, 813, 1143, -1, -1, -1, 101,
4407 -1, -1, -1, -1, -1, 107, 108, 109, 827, -1,
4408 -1, -1, -1, -1, -1, -1, -1, 979, -1, -1,
4409 1168, 1169, 1170, -1, -1, -1, -1, -1, -1, -1,
4410 -1, 133, 448, -1, 136, -1, -1, -1, 1000, -1,
4411 -1, -1, -1, -1, 960, 961, 148, -1, -1, 965,
4412 966, -1, -1, -1, -1, -1, -1, -1, 1248, -1,
4413 772, -1, -1, -1, -1, -1, -1, -1, 484, -1,
4414 -1, 1033, -1, -1, -1, -1, -1, -1, 994, 995,
4415 -1, 997, 998, 786, 787, -1, -1, -1, 504, -1,
4416 793, 794, -1, -1, 2, -1, 4, -1, -1, -1,
4417 -1, -1, -1, -1, -1, -1, -1, 819, -1, 821,
4418 822, -1, -1, -1, -1, -1, -1, -1, 52, -1,
4419 54, 55, 56, 57, 58, -1, -1, -1, -1, -1,
4420 -1, -1, -1, -1, -1, -1, -1, 1099, 841, 842,
4421 -1, 844, 845, 77, -1, 53, 54, -1, -1, 57,
4422 566, -1, 971, -1, 570, 974, -1, 91, 977, -1,
4423 -1, -1, -1, -1, 580, 984, -1, 101, 987, -1,
4424 586, 1087, 783, 784, 108, 109, -1, 85, -1, -1,
4425 -1, -1, -1, 895, -1, -1, -1, -1, -1, 1105,
4426 98, 99, 100, -1, 906, -1, 908, -1, -1, 133,
4427 912, -1, -1, -1, -1, -1, 909, 52, -1, 54,
4428 55, 56, 57, 58, 630, -1, 632, 1179, -1, -1,
4429 -1, -1, -1, -1, 640, -1, -1, -1, -1, -1,
4430 -1, -1, 77, -1, 650, -1, 652, 653, -1, -1,
4431 -1, -1, -1, -1, 660, 661, 91, -1, 960, 961,
4432 -1, -1, -1, 965, 966, -1, 101, 969, 970, -1,
4433 -1, 964, 107, 108, 109, -1, -1, 2, -1, 4,
4434 -1, -1, 688, 985, -1, -1, -1, -1, -1, -1,
4435 -1, 16, 17, 1102, -1, -1, -1, -1, 133, -1,
4436 -1, 136, -1, 996, -1, -1, -1, -1, -1, -1,
4437 -1, -1, -1, -1, 212, -1, 917, 918, -1, 1021,
4438 921, -1, -1, 1025, -1, -1, -1, 1029, 53, 54,
4439 1032, -1, -1, -1, -1, 1037, -1, 938, -1, -1,
4440 -1, -1, -1, 68, -1, -1, -1, -1, -1, 247,
4441 -1, 249, -1, -1, -1, -1, -1, -1, -1, -1,
4442 -1, -1, -1, 1065, 262, -1, 264, -1, 93, 94,
4443 -1, -1, 97, -1, -1, -1, 1185, 102, -1, -1,
4444 -1, -1, -1, -1, -1, 1087, -1, 285, -1, -1,
4445 -1, -1, -1, -1, -1, -1, -1, -1, 1100, -1,
4446 -1, -1, -1, -1, -1, -1, 1108, 1109, -1, -1,
4447 -1, -1, -1, 819, -1, 821, 822, -1, 316, -1,
4448 -1, -1, 1124, 321, -1, -1, -1, -1, -1, 327,
4449 1132, -1, -1, 331, -1, -1, -1, -1, -1, -1,
4450 -1, -1, -1, -1, -1, 343, 344, 1048, -1, -1,
4451 1051, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4452 -1, -1, -1, -1, -1, -1, -1, 1068, 1069, 1070,
4453 -1, -1, 1073, 1074, 1176, -1, -1, 1078, 1079, -1,
4454 -1, -1, -1, -1, 382, 1187, -1, 212, 386, 895,
4455 388, -1, -1, -1, 1196, 1096, -1, -1, -1, -1,
4456 906, 1203, 908, -1, -1, -1, 912, -1, -1, -1,
4457 235, -1, 237, 238, -1, -1, 241, -1, 243, -1,
4458 -1, -1, 247, -1, 249, -1, -1, -1, -1, -1,
4459 1232, 1233, -1, -1, -1, -1, -1, 262, -1, 264,
4460 -1, -1, -1, -1, 783, 784, -1, -1, -1, -1,
4461 -1, -1, -1, -1, 960, 961, -1, -1, -1, 965,
4462 966, -1, -1, 969, 970, -1, -1, -1, -1, 1271,
4463 -1, -1, -1, -1, -1, -1, -1, -1, -1, 985,
4464 -1, -1, -1, -1, -1, -1, 484, -1, -1, -1,
4465 -1, 316, 317, 318, 319, 320, 321, 322, 323, -1,
4466 -1, -1, 327, -1, 502, -1, 331, -1, -1, -1,
4467 -1, -1, -1, -1, -1, -1, 1217, -1, 343, 1025,
4468 -1, 1222, 1223, 1029, -1, -1, 1032, -1, -1, -1,
4469 -1, 1037, -1, -1, -1, -1, -1, -1, -1, -1,
4470 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4471 -1, -1, -1, -1, -1, 380, -1, 382, -1, 1065,
4472 -1, 386, 387, 388, 1265, -1, -1, -1, -1, -1,
4473 -1, -1, -1, -1, -1, -1, -1, 402, 917, 918,
4474 -1, 1087, 921, -1, -1, 583, -1, -1, 586, -1,
4475 -1, 1292, -1, -1, 1100, -1, -1, -1, -1, 938,
4476 -1, -1, 1108, 1109, -1, -1, -1, -1, -1, 2,
4477 -1, 4, -1, -1, -1, -1, -1, -1, 1124, -1,
4478 -1, -1, -1, 448, -1, -1, -1, -1, -1, -1,
4479 -1, -1, 630, -1, 632, -1, -1, -1, -1, -1,
4480 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4481 -1, -1, -1, -1, 652, -1, -1, -1, -1, 484,
4482 53, 54, 660, 661, 57, -1, -1, -1, -1, -1,
4483 1176, -1, -1, -1, -1, -1, -1, -1, -1, 504,
4484 -1, 1187, -1, -1, -1, -1, -1, -1, -1, -1,
4485 1196, -1, 85, -1, -1, -1, -1, -1, -1, -1,
4486 -1, -1, 700, -1, -1, 98, 99, 100, -1, 1048,
4487 -1, 709, 1051, -1, -1, 783, 784, -1, -1, -1,
4488 -1, -1, -1, -1, -1, -1, 1232, 1233, -1, 1068,
4489 1069, 1070, -1, -1, 1073, 1074, -1, -1, -1, 1078,
4490 1079, 566, -1, -1, -1, 570, -1, -1, -1, -1,
4491 -1, -1, -1, -1, -1, 580, -1, 1096, -1, -1,
4492 -1, 586, -1, -1, -1, 1271, -1, -1, -1, -1,
4493 -1, -1, -1, -1, 772, -1, -1, -1, -1, -1,
4494 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4495 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4496 -1, -1, -1, -1, -1, 630, -1, 632, -1, -1,
4497 -1, -1, -1, -1, -1, 640, -1, -1, -1, 212,
4498 -1, 819, -1, -1, 822, 650, -1, 652, 653, -1,
4499 -1, -1, -1, -1, -1, 660, 661, -1, -1, 2,
4500 -1, 4, -1, -1, -1, -1, -1, -1, -1, 917,
4501 918, -1, -1, 921, 247, -1, 249, -1, -1, -1,
4502 -1, -1, -1, 688, -1, -1, -1, -1, -1, 262,
4503 938, 264, -1, -1, -1, -1, -1, -1, 1217, -1,
4504 -1, -1, -1, 1222, 1223, -1, -1, -1, -1, -1,
4505 53, 54, 285, -1, 57, -1, -1, 895, -1, -1,
4506 -1, -1, -1, -1, -1, -1, -1, -1, 906, -1,
4507 908, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4508 -1, -1, 85, 316, -1, -1, 1265, -1, 321, -1,
4509 -1, -1, -1, -1, 327, 98, 99, 100, 331, -1,
4510 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4511 343, 344, -1, 1292, -1, -1, -1, -1, -1, -1,
4512 -1, -1, 960, 961, -1, -1, -1, 965, 966, -1,
4513 -1, 969, -1, -1, -1, -1, -1, -1, -1, -1,
4514 1048, -1, -1, 1051, -1, -1, -1, 985, -1, 382,
4515 -1, -1, -1, 386, 819, 388, 821, 822, -1, -1,
4516 1068, 1069, 1070, -1, -1, 1073, 1074, -1, -1, -1,
4517 1078, 1079, -1, -1, -1, -1, -1, -1, -1, -1,
4518 -1, -1, -1, 1021, -1, -1, -1, 1025, 1096, -1,
4519 -1, 1029, -1, -1, 1032, -1, -1, 783, 784, 1037,
4520 -1, -1, -1, -1, -1, -1, -1, -1, -1, 212,
4521 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4522 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4523 895, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4524 -1, 906, -1, 908, 247, -1, 249, 912, -1, 1087,
4525 -1, 484, -1, -1, -1, -1, -1, -1, -1, 262,
4526 -1, 264, 1100, -1, -1, -1, -1, -1, -1, 502,
4527 1108, 1109, -1, -1, -1, -1, -1, -1, -1, -1,
4528 -1, -1, 285, -1, -1, -1, 1124, -1, -1, -1,
4529 -1, -1, -1, -1, 1132, 960, 961, -1, -1, -1,
4530 965, 966, -1, -1, 969, 970, -1, -1, -1, 1217,
4531 -1, -1, -1, 316, 1222, 1223, -1, -1, 321, -1,
4532 985, -1, -1, -1, 327, -1, -1, -1, 331, -1,
4533 -1, 917, 918, -1, -1, 921, -1, -1, 1176, -1,
4534 343, 344, -1, -1, -1, -1, -1, -1, -1, 1187,
4535 583, -1, 938, 586, -1, -1, -1, 1265, -1, -1,
4536 1025, -1, -1, -1, 1029, 1203, -1, 1032, -1, -1,
4537 -1, -1, 1037, -1, 783, 784, -1, -1, -1, 382,
4538 -1, -1, -1, 386, 1292, 388, -1, -1, -1, -1,
4539 -1, -1, -1, -1, -1, -1, -1, 630, -1, 632,
4540 1065, -1, -1, 783, 784, -1, -1, -1, -1, -1,
4541 -1, -1, -1, -1, -1, -1, -1, -1, -1, 652,
4542 -1, -1, 1087, -1, -1, -1, -1, 660, 661, -1,
4543 -1, -1, -1, 1271, -1, 1100, -1, -1, -1, -1,
4544 -1, -1, -1, 1108, 1109, -1, -1, -1, -1, -1,
4545 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1124,
4546 -1, -1, 1048, -1, 2, 1051, 4, 700, -1, -1,
4547 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4548 -1, 484, 1068, 1069, 1070, 783, 784, 1073, 1074, -1,
4549 -1, -1, 1078, 1079, -1, -1, -1, -1, 2, 502,
4550 4, -1, -1, -1, -1, -1, -1, -1, 917, 918,
4551 1096, 1176, 921, -1, -1, 53, 54, -1, -1, 57,
4552 -1, -1, 1187, -1, -1, -1, -1, -1, -1, 938,
4553 -1, 1196, -1, -1, -1, -1, -1, 917, 918, 772,
4554 -1, 921, -1, -1, -1, -1, -1, 85, -1, 53,
4555 54, -1, -1, -1, -1, -1, -1, -1, 938, -1,
4556 98, 99, 100, 101, -1, -1, -1, 1232, 1233, -1,
4557 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4558 583, -1, -1, 586, -1, -1, 819, -1, -1, 822,
4559 -1, -1, -1, -1, 98, -1, -1, -1, -1, -1,
4560 -1, -1, -1, -1, -1, -1, 1271, -1, -1, -1,
4561 -1, -1, -1, -1, -1, -1, -1, -1, -1, 917,
4562 918, -1, -1, 921, -1, -1, -1, 630, -1, 632,
4563 -1, 1217, -1, -1, -1, -1, 1222, 1223, -1, 1048,
4564 938, -1, 1051, -1, -1, -1, -1, -1, -1, 652,
4565 -1, -1, -1, -1, -1, -1, -1, 660, 661, 1068,
4566 1069, 1070, 895, -1, 1073, 1074, -1, -1, 1048, 1078,
4567 1079, 1051, -1, 906, 212, 908, -1, -1, -1, 1265,
4568 -1, -1, -1, -1, -1, -1, -1, 1096, 1068, 1069,
4569 1070, -1, -1, 1073, 1074, -1, -1, 700, 1078, 1079,
4570 -1, -1, -1, -1, -1, -1, 1292, -1, 212, 247,
4571 -1, 249, -1, -1, -1, -1, 1096, -1, -1, -1,
4572 -1, -1, -1, -1, 262, -1, 264, 960, 961, -1,
4573 -1, -1, 965, 966, -1, -1, 969, -1, -1, 2,
4574 -1, 4, -1, 247, -1, 249, -1, 285, -1, -1,
4575 1048, -1, 985, 1051, -1, -1, -1, -1, 262, -1,
4576 264, -1, -1, -1, -1, -1, -1, -1, -1, 772,
4577 1068, 1069, 1070, -1, -1, 1073, 1074, -1, 316, -1,
4578 1078, 1079, -1, 321, -1, -1, -1, -1, 1021, 327,
4579 53, 54, 1025, 331, -1, -1, 1029, -1, 1096, 1032,
4580 -1, -1, -1, -1, 1037, 343, 344, -1, 1217, -1,
4581 -1, -1, 316, 1222, 1223, -1, 819, 321, -1, 822,
4582 -1, -1, -1, 327, -1, -1, -1, 331, -1, -1,
4583 -1, -1, -1, -1, -1, -1, -1, 1217, -1, 343,
4584 -1, -1, 1222, 1223, 382, -1, -1, -1, 386, -1,
4585 388, -1, -1, -1, 1087, -1, 1265, -1, -1, -1,
4586 -1, -1, -1, -1, -1, -1, -1, 1100, 783, 784,
4587 -1, -1, -1, -1, -1, 1108, 1109, -1, 382, -1,
4588 -1, -1, 386, 1292, 388, 1265, -1, -1, -1, -1,
4589 -1, 1124, 895, -1, -1, -1, -1, -1, -1, 1132,
4590 -1, 783, 784, 906, -1, 908, -1, -1, -1, -1,
4591 -1, -1, 1292, -1, -1, -1, -1, -1, -1, 1217,
4592 -1, -1, -1, -1, 1222, 1223, -1, -1, -1, -1,
4593 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4594 -1, -1, -1, 1176, -1, -1, 484, -1, -1, 212,
4595 -1, -1, -1, -1, 1187, -1, -1, 960, 961, -1,
4596 -1, -1, 965, 966, 502, -1, 969, 1265, -1, -1,
4597 1203, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4598 484, -1, 985, -1, 247, -1, 249, -1, -1, -1,
4599 -1, -1, -1, -1, 1292, -1, -1, -1, -1, 262,
4600 -1, 264, 917, 918, -1, -1, 921, -1, -1, -1,
4601 -1, -1, -1, -1, -1, -1, -1, -1, 1021, -1,
4602 -1, -1, 1025, 938, -1, -1, 1029, -1, -1, 1032,
4603 -1, -1, -1, -1, 1037, 917, 918, -1, 1271, 921,
4604 -1, -1, -1, -1, -1, 583, -1, -1, -1, -1,
4605 -1, -1, -1, 316, -1, -1, 938, -1, 321, -1,
4606 -1, -1, -1, -1, 327, -1, -1, -1, 331, -1,
4607 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4608 343, -1, 586, -1, 1087, -1, -1, -1, -1, -1,
4609 -1, -1, 630, -1, 632, -1, -1, 1100, -1, -1,
4610 -1, -1, -1, -1, -1, 1108, 1109, -1, -1, -1,
4611 -1, -1, -1, -1, 652, -1, -1, -1, -1, 382,
4612 -1, 1124, -1, 386, -1, 388, 630, -1, 632, 1132,
4613 -1, -1, -1, 1048, -1, -1, 1051, -1, -1, -1,
4614 -1, -1, -1, -1, -1, -1, -1, -1, 652, -1,
4615 -1, -1, -1, 1068, 1069, 1070, 660, 661, 1073, 1074,
4616 -1, -1, 700, 1078, 1079, -1, 1048, -1, -1, 1051,
4617 -1, -1, -1, 1176, -1, -1, -1, -1, -1, -1,
4618 -1, 1096, -1, -1, 1187, -1, 1068, 1069, 1070, -1,
4619 -1, 1073, 1074, -1, -1, -1, 1078, 1079, -1, -1,
4620 1203, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4621 -1, -1, -1, -1, 1096, -1, -1, -1, -1, -1,
4622 -1, 484, -1, -1, -1, -1, -1, -1, -1, -1,
4623 -1, -1, -1, -1, 772, -1, -1, -1, -1, -1,
4624 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4625 -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
4626 8, 9, 10, -1, -1, 13, 14, 15, 1271, 17,
4627 -1, -1, -1, -1, -1, -1, -1, 25, 26, 27,
4628 -1, 819, -1, -1, 822, -1, -1, -1, -1, 37,
4629 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
4630 -1, -1, 1217, -1, -1, -1, -1, 1222, 1223, -1,
4631 -1, -1, -1, -1, -1, 819, -1, -1, 822, -1,
4632 68, -1, -1, 586, -1, -1, -1, -1, -1, -1,
4633 -1, -1, -1, -1, -1, 1217, -1, -1, -1, -1,
4634 1222, 1223, -1, -1, -1, -1, -1, -1, 96, 97,
4635 1265, -1, -1, -1, -1, -1, -1, 895, -1, -1,
4636 -1, -1, -1, -1, 25, -1, -1, 630, 906, 632,
4637 908, -1, 120, -1, -1, -1, -1, 1292, -1, -1,
4638 -1, -1, -1, 1265, -1, -1, -1, -1, -1, 652,
4639 -1, 895, -1, -1, -1, 143, 144, 660, 661, -1,
4640 148, 149, 906, 151, 908, 153, -1, -1, -1, -1,
4641 1292, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4642 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4643 -1, 969, -1, 94, 95, -1, -1, -1, -1, 100,
4644 -1, -1, -1, -1, -1, -1, -1, 985, -1, -1,
4645 -1, -1, -1, -1, -1, -1, 960, 961, -1, -1,
4646 -1, 965, 966, 16, 17, 969, 127, -1, 129, 130,
4647 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4648 -1, 985, -1, 1021, -1, -1, -1, 1025, -1, -1,
4649 -1, 1029, -1, -1, 1032, 48, 49, 50, 51, -1,
4650 -1, -1, 55, 56, -1, -1, -1, -1, -1, -1,
4651 -1, -1, -1, -1, -1, 68, 69, 1021, -1, -1,
4652 -1, 1025, -1, -1, -1, 1029, -1, -1, 1032, -1,
4653 -1, -1, -1, 1037, -1, -1, -1, -1, -1, -1,
4654 -1, -1, -1, -1, -1, -1, -1, -1, -1, 102,
4655 -1, -1, -1, -1, -1, -1, 819, -1, -1, 822,
4656 -1, -1, 1100, -1, -1, -1, -1, -1, -1, -1,
4657 1108, 1109, -1, -1, -1, -1, -1, -1, -1, -1,
4658 -1, -1, -1, 1087, -1, -1, 1124, -1, -1, -1,
4659 -1, -1, -1, -1, 1132, -1, 1100, -1, -1, -1,
4660 -1, -1, -1, -1, 1108, 1109, -1, -1, -1, -1,
4661 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4662 1124, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4663 -1, -1, 895, -1, -1, -1, -1, -1, 1176, -1,
4664 -1, -1, -1, 906, -1, 908, -1, -1, -1, 1187,
4665 -1, -1, -1, -1, -1, -1, -1, 210, -1, -1,
4666 213, 214, 215, -1, 217, 1203, -1, -1, -1, -1,
4667 -1, -1, 1176, -1, -1, -1, -1, -1, -1, -1,
4668 -1, -1, 235, 1187, 237, 238, -1, -1, -1, -1,
4669 -1, -1, -1, -1, -1, -1, -1, 960, 961, -1,
4670 -1, -1, 965, 966, -1, -1, 969, -1, -1, -1,
4671 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4672 -1, -1, 985, -1, -1, 77, 78, 79, 80, 81,
4673 82, 83, 84, 1271, 86, 87, -1, -1, -1, -1,
4674 -1, -1, 94, 95, -1, -1, -1, -1, -1, -1,
4675 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4676 -1, -1, 1025, -1, -1, -1, 1029, 1271, -1, 1032,
4677 -1, -1, -1, -1, 1037, -1, -1, 129, 130, 131,
4678 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4679 -1, -1, -1, -1, -1, 348, 349, 350, 351, 352,
4680 -1, -1, 355, 356, 357, 358, 359, 360, 361, 362,
4681 -1, 364, -1, -1, 367, 368, 369, 370, 371, 372,
4682 373, 374, 375, 376, 1087, -1, -1, 380, -1, -1,
4683 -1, -1, -1, -1, -1, -1, -1, 1100, -1, -1,
4684 -1, -1, -1, -1, -1, 1108, 1109, -1, -1, -1,
4685 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4686 -1, 1124, -1, -1, -1, -1, -1, -1, -1, -1,
4687 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4688 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4689 443, 444, -1, -1, -1, 448, -1, -1, -1, 452,
4690 -1, -1, -1, -1, -1, 458, -1, -1, -1, -1,
4691 -1, -1, -1, 1176, -1, 33, 34, 35, 36, -1,
4692 473, -1, -1, -1, 1187, -1, -1, -1, -1, -1,
4693 -1, 49, 50, 51, 52, -1, 489, -1, 56, 492,
4694 -1, 59, 60, 61, 62, 63, -1, -1, -1, -1,
4695 -1, 504, -1, -1, -1, -1, -1, -1, -1, -1,
4696 -1, -1, -1, -1, -1, -1, -1, -1, 521, -1,
4697 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4698 98, -1, -1, 101, -1, -1, 104, 105, -1, 107,
4699 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4700 118, 554, -1, -1, -1, -1, -1, -1, 1271, -1,
4701 -1, -1, -1, 566, 132, -1, -1, 570, -1, -1,
4702 -1, 139, -1, -1, -1, -1, -1, 580, -1, -1,
4703 -1, -1, -1, 586, -1, 153, -1, -1, -1, -1,
4704 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4705 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4706 -1, -1, -1, -1, -1, -1, 33, 34, 35, 36,
4707 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4708 -1, -1, 49, 50, 51, -1, -1, 640, -1, -1,
4709 -1, -1, 59, 60, 61, 62, 63, 650, -1, -1,
4710 -1, -1, -1, -1, -1, -1, -1, 660, 661, -1,
4711 663, 664, 665, 666, -1, 668, -1, -1, -1, -1,
4712 -1, -1, -1, -1, 677, 678, -1, -1, -1, -1,
4713 683, -1, 685, -1, -1, -1, -1, -1, -1, -1,
4714 -1, 694, -1, 110, 111, 112, 113, 114, 115, 116,
4715 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4716 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4717 0, 1, 139, 3, 4, 5, 6, 7, 731, -1,
4718 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
4719 20, 21, 22, 23, 24, -1, -1, -1, 751, -1,
4720 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4721 -1, 764, -1, -1, -1, 45, 46, 47, 48, 49,
4722 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4723 60, 61, 62, 63, 64, 65, -1, -1, -1, 792,
4724 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4725 -1, -1, -1, -1, -1, -1, -1, -1, -1, 812,
4726 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4727 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4728 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4729 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4730 -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
4731 140, 141, -1, -1, -1, -1, -1, -1, -1, -1,
4732 -1, 151, -1, 153, -1, -1, -1, -1, -1, -1,
4733 -1, -1, -1, -1, 887, 888, -1, -1, -1, -1,
4734 -1, -1, -1, -1, -1, -1, 899, 900, -1, -1,
4735 -1, -1, 905, 33, 34, 35, 36, 910, -1, 912,
4736 -1, -1, -1, -1, -1, -1, -1, -1, -1, 49,
4737 50, 51, 52, -1, -1, -1, 56, -1, 58, 59,
4738 60, 61, 62, 63, -1, -1, -1, -1, -1, -1,
4739 -1, -1, -1, -1, -1, -1, -1, 77, -1, -1,
4740 -1, -1, -1, -1, -1, -1, 959, 960, 961, -1,
4741 90, 91, 965, 966, -1, -1, -1, -1, 98, -1,
4742 -1, 101, -1, -1, 104, 105, 979, 107, 108, -1,
4743 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4744 -1, 994, 995, -1, 997, 998, -1, 1000, -1, -1,
4745 -1, -1, 132, -1, -1, -1, -1, -1, -1, 139,
4746 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4747 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
4748 1033, -1, -1, -1, 1037, -1, -1, 8, 9, 10,
4749 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
4750 -1, -1, -1, -1, 25, 26, 27, 28, 29, -1,
4751 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
4752 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
4753 -1, -1, -1, -1, 1087, -1, -1, -1, -1, -1,
4754 -1, -1, -1, -1, -1, -1, 1099, 68, -1, -1,
4755 -1, -1, 1105, -1, -1, -1, 77, 78, 79, 80,
4756 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4757 -1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
4758 -1, -1, -1, -1, -1, 106, -1, -1, -1, -1,
4759 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
4760 -1, -1, 123, -1, -1, 126, 127, 128, 129, 130,
4761 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4762 -1, -1, 143, 144, 145, 146, 1179, 0, 149, 150,
4763 151, -1, 153, -1, -1, 8, 9, 10, -1, -1,
4764 13, 14, 15, 1196, 17, -1, -1, -1, -1, 44,
4765 -1, -1, 25, -1, 27, 28, 29, -1, -1, -1,
4766 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
4767 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
4768 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4769 85, 86, 87, 88, 89, 68, -1, -1, -1, 94,
4770 95, -1, -1, -1, 77, 78, 79, 80, 81, 82,
4771 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
4772 -1, 94, 95, 96, 97, -1, 99, 100, -1, -1,
4773 -1, -1, 127, 106, 129, 130, 131, 132, 133, 134,
4774 135, 136, 137, 138, -1, -1, -1, 120, -1, -1,
4775 123, 146, -1, 126, 127, 128, 129, 130, 131, 132,
4776 133, 134, 135, 136, 137, 138, -1, -1, -1, -1,
4777 -1, 144, 145, 146, 0, -1, 149, 150, 151, -1,
4778 153, -1, 8, 9, 10, -1, -1, 13, 14, 15,
4779 -1, 17, -1, -1, -1, -1, 44, -1, -1, 25,
4780 -1, 27, 28, 29, -1, -1, -1, -1, -1, -1,
4781 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
4782 -1, -1, -1, -1, -1, -1, -1, -1, -1, 77,
4783 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
4784 88, 89, 68, -1, -1, -1, 94, 95, -1, -1,
4785 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
4786 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
4787 96, 97, -1, 99, 100, -1, -1, -1, -1, 127,
4788 106, 129, 130, 131, 132, 133, 134, 135, 136, 137,
4789 138, -1, -1, -1, 120, -1, -1, 123, -1, -1,
4790 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
4791 136, 137, 138, -1, -1, -1, -1, -1, 144, 145,
4792 146, 0, -1, 149, 150, 151, -1, 153, -1, 8,
4793 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
4794 -1, -1, -1, 44, -1, -1, 25, 26, 27, 28,
4795 29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
4796 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
4797 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4798 81, 82, 83, 84, 85, 86, 87, 88, 89, 68,
4799 -1, -1, -1, 94, 95, -1, -1, -1, 77, 78,
4800 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4801 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
4802 -1, 100, -1, -1, -1, -1, 127, 106, 129, 130,
4803 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4804 -1, 120, -1, -1, 123, -1, -1, -1, 127, 128,
4805 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4806 -1, -1, -1, -1, 143, 144, 145, 146, 0, -1,
4807 149, 150, 151, -1, 153, -1, 8, 9, 10, -1,
4808 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
4809 44, -1, -1, 25, 26, 27, 28, 29, -1, -1,
4810 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
4811 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
4812 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
4813 84, 85, 86, 87, 88, 89, 68, -1, -1, -1,
4814 94, 95, -1, -1, -1, 77, 78, 79, 80, 81,
4815 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
4816 -1, -1, 94, 95, 96, 97, -1, -1, 100, -1,
4817 -1, -1, -1, 127, 106, 129, 130, 131, 132, 133,
4818 134, 135, 136, 137, 138, -1, -1, -1, 120, -1,
4819 -1, 123, -1, -1, -1, 127, 128, 129, 130, 131,
4820 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4821 -1, 143, 144, 145, 146, 0, -1, 149, 150, 151,
4822 -1, 153, -1, 8, 9, 10, -1, -1, 13, 14,
4823 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
4824 25, -1, 27, 28, 29, -1, -1, -1, -1, -1,
4825 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
4826 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4827 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
4828 87, 88, 89, 68, -1, -1, -1, 94, 95, -1,
4829 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4830 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
4831 95, 96, 97, -1, 99, 100, -1, -1, -1, -1,
4832 127, 106, 129, 130, 131, 132, 133, 134, 135, 136,
4833 137, 138, -1, -1, -1, 120, -1, -1, 123, -1,
4834 -1, 126, 127, 128, 129, 130, 131, 132, 133, 134,
4835 135, 136, 137, 138, -1, -1, -1, -1, -1, 144,
4836 145, 146, 0, -1, 149, 150, 151, -1, 153, -1,
4837 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
4838 -1, -1, -1, -1, -1, -1, -1, 25, 26, 27,
4839 28, -1, -1, -1, -1, -1, -1, -1, -1, 37,
4840 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
4841 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
4842 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
4843 68, -1, -1, -1, 94, 95, -1, -1, -1, 77,
4844 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
4845 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
4846 -1, -1, 100, -1, -1, -1, -1, -1, 106, 129,
4847 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4848 -1, -1, 120, -1, -1, -1, -1, -1, -1, 127,
4849 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
4850 138, -1, -1, -1, -1, 143, 144, 145, 146, 0,
4851 148, 149, 150, 151, -1, 153, -1, 8, 9, 10,
4852 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
4853 -1, -1, -1, -1, 25, -1, 27, 28, 29, -1,
4854 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
4855 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
4856 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
4857 83, -1, -1, 86, 87, -1, -1, 68, -1, -1,
4858 -1, 94, 95, -1, -1, -1, 77, 78, 79, 80,
4859 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4860 -1, -1, -1, 94, 95, 96, 97, -1, -1, 100,
4861 -1, -1, -1, -1, -1, 106, 129, 130, 131, 132,
4862 133, 134, 135, 136, 137, 138, -1, -1, -1, 120,
4863 -1, -1, 123, -1, -1, -1, 127, 128, 129, 130,
4864 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4865 -1, -1, -1, 144, 145, 146, 0, -1, 149, 150,
4866 151, -1, 153, -1, 8, 9, 10, -1, -1, 13,
4867 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
4868 -1, 25, 26, 27, 28, -1, -1, -1, -1, -1,
4869 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
4870 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4871 -1, 77, 78, 79, 80, 81, 82, 83, -1, -1,
4872 86, 87, -1, -1, 68, -1, -1, -1, 94, 95,
4873 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
4874 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
4875 94, 95, 96, 97, -1, -1, 100, -1, -1, -1,
4876 -1, -1, 106, 129, 130, 131, 132, 133, 134, 135,
4877 136, 137, 138, -1, -1, -1, 120, -1, -1, -1,
4878 -1, -1, -1, 127, -1, 129, 130, 131, 132, 133,
4879 134, 135, 136, 137, 138, -1, -1, -1, -1, 143,
4880 144, 145, 146, 0, 148, 149, 150, 151, -1, 153,
4881 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
4882 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
4883 27, 28, -1, -1, -1, -1, -1, -1, -1, -1,
4884 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
4885 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4886 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4887 -1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
4888 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
4889 87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
4890 97, -1, -1, 100, -1, -1, -1, -1, -1, 106,
4891 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4892 -1, -1, -1, 120, -1, -1, -1, -1, -1, -1,
4893 127, -1, 129, 130, 131, 132, 133, 134, 135, 136,
4894 137, 138, -1, -1, -1, -1, -1, 144, 145, 146,
4895 0, 148, 149, 150, 151, -1, 153, -1, 8, 9,
4896 10, -1, -1, -1, 14, 15, -1, 17, -1, -1,
4897 -1, -1, -1, -1, -1, 25, 26, -1, -1, -1,
4898 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
4899 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
4900 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4901 85, 86, 87, 88, 89, -1, -1, -1, 68, 94,
4902 95, -1, -1, -1, -1, -1, -1, 77, 78, 79,
4903 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
4904 -1, -1, -1, -1, 94, 95, 96, 97, -1, 99,
4905 100, -1, 127, -1, 129, 130, 131, 132, 133, 134,
4906 135, 136, 137, 138, -1, -1, -1, -1, -1, -1,
4907 120, -1, -1, -1, -1, -1, 126, 127, 153, 129,
4908 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4909 -1, -1, -1, 143, 144, 145, 146, 0, -1, 149,
4910 -1, 151, -1, 153, -1, 8, 9, 10, -1, -1,
4911 -1, 14, 15, -1, 17, -1, -1, -1, -1, -1,
4912 -1, -1, 25, 26, -1, -1, -1, -1, -1, -1,
4913 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
4914 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
4915 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4916 -1, -1, -1, -1, -1, 68, -1, -1, -1, -1,
4917 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
4918 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
4919 -1, 94, 95, 96, 97, -1, 99, 100, -1, -1,
4920 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4921 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
4922 -1, -1, -1, 126, 127, -1, 129, 130, 131, 132,
4923 133, 134, 135, 136, 137, 138, -1, -1, -1, -1,
4924 143, 144, 145, 146, 0, -1, 149, -1, 151, -1,
4925 153, -1, 8, 9, 10, -1, -1, -1, 14, 15,
4926 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
4927 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4928 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
4929 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4930 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4931 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
4932 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
4933 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
4934 96, 97, -1, 99, 100, -1, -1, -1, -1, -1,
4935 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4936 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
4937 126, 127, -1, 129, 130, 131, 132, 133, 134, 135,
4938 136, 137, 138, -1, -1, -1, -1, -1, 144, 145,
4939 146, 0, -1, 149, -1, 151, -1, 153, -1, 8,
4940 9, 10, -1, -1, -1, 14, 15, -1, 17, -1,
4941 -1, -1, -1, -1, -1, -1, 25, -1, -1, -1,
4942 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
4943 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
4944 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4945 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
4946 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
4947 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4948 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
4949 99, 100, -1, -1, -1, -1, -1, -1, -1, -1,
4950 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4951 -1, 120, -1, -1, -1, -1, -1, 126, 127, -1,
4952 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4953 -1, -1, -1, -1, -1, 144, 145, 146, -1, -1,
4954 149, -1, 151, 1, 153, 3, 4, 5, 6, 7,
4955 8, 9, 10, 11, 12, -1, -1, 15, 16, -1,
4956 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4957 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4958 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4959 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4960 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4961 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4962 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4963 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4964 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4965 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4966 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4967 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4968 -1, 139, 140, 141, -1, -1, -1, -1, -1, -1,
4969 -1, -1, -1, 151, 1, 153, 3, 4, 5, 6,
4970 7, -1, -1, 10, 11, 12, -1, 14, 15, 16,
4971 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4972 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4973 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4974 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4975 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4976 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4977 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4978 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4979 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4980 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4981 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4982 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4983 -1, -1, 139, 140, 141, -1, -1, -1, -1, -1,
4984 -1, -1, -1, -1, 151, 1, 153, 3, 4, 5,
4985 6, 7, -1, -1, 10, 11, 12, -1, -1, 15,
4986 16, 17, 18, 19, 20, 21, 22, 23, 24, -1,
4987 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4988 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4989 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4990 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4991 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4992 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4993 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4994 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4995 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4996 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
4997 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4998 -1, -1, -1, 139, 140, 141, -1, -1, -1, -1,
4999 -1, -1, -1, -1, -1, 151, 1, 153, 3, 4,
5000 5, 6, 7, -1, -1, 10, 11, 12, -1, -1,
5001 15, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5002 25, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5003 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5004 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
5005 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5006 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5007 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5008 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5009 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5010 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
5011 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5012 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5013 -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
5014 -1, -1, -1, -1, -1, -1, 151, 1, 153, 3,
5015 4, 5, 6, 7, -1, -1, 10, 11, 12, -1,
5016 -1, 15, 16, -1, 18, 19, 20, 21, 22, 23,
5017 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
5018 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
5019 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
5020 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5021 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
5022 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
5023 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
5024 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
5025 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
5026 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
5027 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
5028 -1, 9, 10, 11, 12, 139, 140, 141, 16, -1,
5029 18, 19, 20, 21, 22, 23, 24, 151, -1, 153,
5030 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5031 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5032 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5033 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5034 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
5035 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5036 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
5037 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
5038 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
5039 118, -1, -1, -1, -1, -1, -1, -1, -1, 1,
5040 -1, 3, 4, 5, 6, 7, -1, -1, -1, 11,
5041 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
5042 22, 23, 24, 151, -1, 153, -1, -1, 30, 31,
5043 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
5044 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5045 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5046 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
5047 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
5048 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
5049 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
5050 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
5051 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
5052 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5053 -1, -1, -1, -1, -1, -1, -1, 139, 140, 141,
5054 -1, -1, -1, -1, -1, -1, -1, 149, -1, 151,
5055 1, 153, 3, 4, 5, 6, 7, -1, -1, -1,
5056 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
5057 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5058 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5059 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
5060 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5061 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5062 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5063 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5064 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5065 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
5066 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5067 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5068 -1, -1, -1, -1, -1, -1, -1, -1, 139, 140,
5069 141, -1, -1, -1, -1, -1, -1, -1, 149, -1,
5070 151, 1, 153, 3, 4, 5, 6, 7, -1, -1,
5071 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
5072 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
5073 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
5074 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
5075 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5076 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
5077 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
5078 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5079 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
5080 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
5081 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
5082 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5083 -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
5084 140, 141, -1, -1, 144, -1, -1, -1, -1, -1,
5085 -1, 151, 1, 153, 3, 4, 5, 6, 7, -1,
5086 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
5087 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5088 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5089 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
5090 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5091 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5092 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5093 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5094 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5095 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
5096 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5097 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5098 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5099 139, 140, 141, -1, -1, 144, -1, -1, -1, -1,
5100 -1, -1, 151, 1, 153, 3, 4, 5, 6, 7,
5101 -1, -1, 10, 11, 12, -1, -1, -1, 16, -1,
5102 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5103 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5104 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5105 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5106 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5107 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
5108 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5109 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
5110 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
5111 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
5112 118, -1, -1, -1, -1, -1, -1, -1, -1, 1,
5113 -1, 3, 4, 5, 6, 7, -1, -1, -1, 11,
5114 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
5115 22, 23, 24, 151, -1, 153, -1, -1, 30, 31,
5116 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
5117 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5118 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5119 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
5120 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
5121 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
5122 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
5123 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
5124 112, 113, 114, 115, 116, 117, 118, -1, 120, -1,
5125 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
5126 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
5127 16, -1, 18, 19, 20, 21, 22, 23, 24, 151,
5128 -1, 153, -1, -1, 30, 31, 32, 33, 34, 35,
5129 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
5130 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
5131 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5132 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5133 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5134 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
5135 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
5136 -1, 107, 108, 109, 110, 111, 112, 113, 114, 115,
5137 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
5138 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
5139 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
5140 20, 21, 22, 23, 24, -1, -1, 153, -1, -1,
5141 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
5142 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
5143 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5144 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
5145 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
5146 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5147 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
5148 -1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
5149 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
5150 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
5151 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
5152 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
5153 24, 151, -1, 153, -1, -1, 30, 31, 32, 33,
5154 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
5155 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
5156 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5157 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
5158 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
5159 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
5160 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
5161 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
5162 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
5163 -1, -1, -1, -1, -1, 3, 4, 5, 6, 7,
5164 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
5165 18, 19, 20, 21, 22, 23, 24, -1, -1, 153,
5166 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5167 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5168 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5169 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5170 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
5171 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5172 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
5173 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
5174 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
5175 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5176 -1, 3, 4, 5, 6, 7, -1, -1, -1, 11,
5177 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
5178 22, 23, 24, 151, -1, -1, -1, -1, 30, 31,
5179 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
5180 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5181 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5182 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
5183 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
5184 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
5185 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
5186 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
5187 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
5188 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5189 -1, -1, -1, -1, -1, -1, -1, 139, 140, 141,
5190 -1, -1, -1, -1, -1, -1, -1, -1, -1, 151,
5191 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
5192 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
5193 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
5194 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
5195 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
5196 53, 54, 55, 56, 57, -1, -1, -1, -1, -1,
5197 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5198 -1, -1, 75, 76, 77, 78, 79, 80, 81, 82,
5199 83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
5200 93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
5201 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
5202 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5203 -1, -1, -1, -1, -1, -1, 129, 130, 131, 132,
5204 133, 134, 135, 136, 137, 138, -1, 140, 141, -1,
5205 -1, -1, -1, -1, 147, 148, 3, 4, 5, 6,
5206 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
5207 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
5208 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5209 37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
5210 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
5211 57, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5212 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5213 77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
5214 87, -1, -1, -1, -1, 92, 93, 94, 95, -1,
5215 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5216 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
5217 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5218 -1, -1, 129, 130, 131, 132, 133, 134, 135, 136,
5219 137, 138, -1, 140, 141, -1, -1, -1, -1, -1,
5220 147, 3, 4, 5, 6, 7, 8, 9, 10, 11,
5221 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
5222 22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
5223 32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
5224 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5225 52, 53, 54, -1, 56, -1, -1, -1, -1, -1,
5226 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5227 -1, -1, -1, 75, 76, 77, 78, 79, 80, 81,
5228 82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
5229 92, 93, 94, 95, -1, -1, -1, -1, -1, -1,
5230 -1, -1, -1, -1, -1, 107, 108, -1, -1, 111,
5231 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5232 -1, -1, -1, -1, -1, -1, -1, 129, 130, 131,
5233 132, 133, 134, 135, 136, 137, 138, -1, 140, 141,
5234 -1, -1, -1, -1, -1, 147, 3, 4, 5, 6,
5235 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
5236 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
5237 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5238 37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
5239 47, 48, 49, 50, 51, 52, 53, -1, -1, 56,
5240 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5241 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5242 77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
5243 87, -1, -1, -1, -1, 92, 93, 94, 95, -1,
5244 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5245 107, 108, -1, -1, 111, -1, -1, -1, -1, -1,
5246 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5247 -1, -1, 129, 130, 131, 132, 133, 134, 135, 136,
5248 137, 138, -1, 140, 141, -1, -1, -1, -1, -1,
5249 147, 3, 4, 5, 6, 7, 8, 9, 10, 11,
5250 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
5251 22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
5252 32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
5253 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5254 52, 53, -1, -1, 56, -1, -1, -1, -1, -1,
5255 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5256 -1, -1, -1, 75, 76, 77, 78, 79, 80, 81,
5257 82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
5258 92, 93, 94, 95, -1, -1, -1, -1, -1, -1,
5259 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
5260 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5261 -1, -1, -1, -1, -1, -1, -1, 129, 130, 131,
5262 132, 133, 134, 135, 136, 137, 138, -1, 140, 141,
5263 3, 4, 5, -1, 7, 147, -1, -1, 11, 12,
5264 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
5265 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5266 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5267 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5268 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5269 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5270 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5271 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5272 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5273 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
5274 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5275 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
5276 4, 5, -1, 7, -1, -1, 139, 11, 12, -1,
5277 -1, -1, 16, 146, 18, 19, 20, 21, 22, 23,
5278 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
5279 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
5280 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
5281 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5282 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
5283 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5284 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5285 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
5286 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
5287 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
5288 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5289 5, 6, 7, -1, -1, 139, 11, 12, -1, -1,
5290 -1, 16, 146, 18, 19, 20, 21, 22, 23, 24,
5291 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5292 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5293 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
5294 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5295 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5296 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5297 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5298 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5299 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
5300 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5301 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5302 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5303 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5304 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5305 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5306 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
5307 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5308 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5309 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5310 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5311 -1, -1, 101, 102, -1, 104, 105, -1, 107, 108,
5312 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5313 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5314 3, 4, 5, 6, 7, -1, -1, -1, 11, 12,
5315 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5316 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5317 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5318 -1, -1, 45, 46, -1, 48, 49, 50, 51, 52,
5319 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5320 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5321 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5322 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5323 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5324 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
5325 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5326 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5327 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5328 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5329 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5330 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5331 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5332 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
5333 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5334 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5335 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5336 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5337 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
5338 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5339 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5340 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5341 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5342 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5343 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5344 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
5345 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5346 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5347 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5348 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5349 101, 102, -1, 104, 105, -1, 107, 108, 109, 110,
5350 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5351 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5352 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5353 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5354 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5355 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5356 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5357 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
5358 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5359 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5360 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5361 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5362 105, -1, 107, 108, 109, 110, 111, 112, 113, 114,
5363 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5364 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5365 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5366 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5367 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5368 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5369 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
5370 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5371 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5372 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5373 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5374 -1, -1, 101, 102, -1, 104, 105, -1, 107, 108,
5375 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5376 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5377 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5378 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5379 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5380 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5381 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5382 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
5383 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5384 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5385 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5386 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5387 -1, 104, 105, -1, -1, 108, 109, 110, 111, 112,
5388 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5389 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5390 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5391 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5392 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5393 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5394 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5395 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
5396 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5397 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5398 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5399 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5400 107, 108, -1, 110, 111, 112, 113, 114, 115, 116,
5401 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5402 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5403 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5404 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5405 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5406 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5407 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
5408 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5409 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5410 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5411 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5412 101, 102, -1, 104, 105, -1, -1, 108, -1, 110,
5413 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5414 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5415 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5416 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5417 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5418 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5419 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5420 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5421 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5422 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5423 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5424 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5425 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
5426 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5427 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5428 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5429 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5430 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5431 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5432 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5433 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5434 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5435 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5436 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5437 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
5438 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5439 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5440 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5441 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5442 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5443 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5444 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5445 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5446 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5447 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5448 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5449 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5450 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
5451 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5452 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5453 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5454 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5455 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5456 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5457 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5458 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5459 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5460 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5461 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5462 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5463 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5464 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5465 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5466 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5467 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5468 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5469 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5470 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5471 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5472 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5473 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5474 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5475 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
5476 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5477 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5478 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5479 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5480 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5481 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5482 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5483 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5484 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5485 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5486 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5487 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5488 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
5489 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5490 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5491 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5492 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5493 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5494 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5495 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5496 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5497 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5498 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5499 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5500 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
5501 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5502 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5503 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5504 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5505 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5506 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5507 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5508 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5509 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5510 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5511 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5512 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5513 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
5514 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5515 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5516 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5517 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5518 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5519 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5520 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5521 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5522 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5523 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5524 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5525 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5526 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5527 117, 118, -1, -1, -1, -1, -1, -1, 3, 4,
5528 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5529 -1, 16, 139, 18, 19, 20, 21, 22, 23, 24,
5530 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5531 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5532 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5533 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5534 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5535 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5536 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5537 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5538 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
5539 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5540 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5541 -1, -1, -1, 16, 139, 18, 19, 20, 21, 22,
5542 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5543 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5544 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5545 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5546 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5547 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5548 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5549 -1, 94, -1, -1, -1, 98, -1, -1, 101, 102,
5550 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
5551 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5552 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5553 11, 12, -1, -1, -1, 16, 139, 18, 19, 20,
5554 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5555 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5556 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5557 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5558 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5559 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5560 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5561 -1, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5562 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
5563 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5564 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5565 -1, -1, 11, 12, -1, -1, -1, 16, 139, 18,
5566 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5567 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5568 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5569 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5570 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5571 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5572 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5573 -1, -1, -1, -1, -1, -1, -1, -1, -1, 98,
5574 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
5575 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5576 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5577 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
5578 139, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5579 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5580 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5581 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5582 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5583 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5584 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5585 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5586 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5587 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5588 117, 118, -1, -1, -1, -1, -1, -1, 3, 4,
5589 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5590 -1, 16, 139, 18, 19, 20, 21, 22, 23, 24,
5591 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5592 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5593 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5594 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5595 65, 33, 34, 35, 36, -1, -1, -1, -1, -1,
5596 -1, -1, -1, -1, -1, -1, -1, 49, 50, 51,
5597 52, -1, -1, -1, 56, -1, -1, 59, 60, 61,
5598 62, 63, -1, 98, -1, -1, 101, 102, -1, 104,
5599 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
5600 115, 116, 117, 118, -1, -1, -1, -1, 90, 91,
5601 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
5602 -1, -1, 104, 105, 139, 107, -1, -1, 110, 111,
5603 112, 113, 114, 115, 116, 117, 118, 33, 34, 35,
5604 36, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5605 132, -1, -1, 49, 50, 51, 52, 139, -1, -1,
5606 56, -1, -1, 59, 60, 61, 62, 63, -1, -1,
5607 33, 34, 35, 36, -1, -1, -1, -1, -1, -1,
5608 -1, -1, -1, -1, -1, -1, 49, 50, 51, 52,
5609 -1, -1, -1, 56, 90, 91, 59, 60, 61, 62,
5610 63, -1, 98, -1, -1, 101, -1, -1, 104, 105,
5611 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
5612 116, 117, 118, -1, -1, -1, -1, 90, 91, -1,
5613 -1, -1, -1, -1, -1, 98, 132, -1, 101, -1,
5614 -1, 104, 105, 139, -1, -1, -1, 110, 111, 112,
5615 113, 114, 115, 116, 117, 118, 52, 53, -1, -1,
5616 56, -1, -1, -1, -1, -1, -1, -1, -1, 132,
5617 -1, -1, -1, -1, -1, -1, 139, -1, -1, 75,
5618 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5619 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5620 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5621 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5622 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5623 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5624 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5625 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5626 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5627 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5628 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5629 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5630 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5631 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5632 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5633 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5634 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5635 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5636 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5637 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5638 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5639 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5640 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5641 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5642 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5643 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5644 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5645 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5646 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5647 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5648 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5649 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5650 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5651 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5652 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5653 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5654 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5655 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5656 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5657 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5658 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5659 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5660 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5661 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5662 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5663 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5664 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5665 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5666 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5667 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5668 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5669 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5670 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5671 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5672 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5673 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5674 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5675 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5676 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5677 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5678 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5679 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5680 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5681 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5682 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5683 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5684 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5685 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5686 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5687 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5688 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5689 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5690 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5691 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5692 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5693 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5694 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5695 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5696 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5697 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5698 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5699 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5700 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5701 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5702 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5703 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5704 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5705 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5706 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5707 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5708 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5709 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5710 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5711 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5712 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5713 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5714 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5715 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5716 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5717 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5718 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5719 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5720 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5721 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5722 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5723 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5724 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5725 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5726 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5727 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5728 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5729 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5730 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5731 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5732 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5733 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5734 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5735 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5736 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5737 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5738 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5739 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5740 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5741 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5742 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5743 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5744 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5745 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5746 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5747 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5748 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5749 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5750 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5751 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5752 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5753 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5754 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5755 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5756 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5757 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5758 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5759 136, 137, 138, -1, 140, 141, -1, -1, -1, -1,
5765 static const yytype_int16 yystos[] =
5767 0, 155, 156, 0, 1, 3, 4, 5, 6, 7,
5768 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
5769 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
5770 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
5771 57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
5772 90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
5773 112, 113, 114, 115, 116, 117, 118, 139, 140, 141,
5774 157, 158, 159, 167, 169, 171, 177, 178, 184, 185,
5775 187, 188, 189, 191, 192, 193, 195, 196, 205, 208,
5776 224, 234, 235, 236, 237, 238, 239, 240, 241, 242,
5777 243, 244, 253, 275, 283, 284, 336, 337, 338, 339,
5778 340, 341, 342, 345, 347, 348, 362, 363, 365, 366,
5779 367, 369, 370, 371, 372, 373, 411, 425, 159, 3,
5780 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
5781 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
5782 24, 25, 26, 30, 31, 32, 33, 34, 35, 36,
5783 37, 38, 39, 45, 46, 47, 48, 49, 50, 51,
5784 52, 53, 56, 75, 76, 77, 78, 79, 80, 81,
5785 82, 83, 86, 87, 92, 93, 94, 95, 107, 108,
5786 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
5787 140, 141, 147, 199, 200, 201, 203, 204, 362, 39,
5788 58, 98, 101, 107, 108, 109, 112, 140, 177, 178,
5789 188, 196, 205, 210, 216, 219, 221, 234, 369, 370,
5790 372, 373, 409, 410, 216, 148, 217, 218, 148, 213,
5791 217, 148, 153, 418, 54, 200, 418, 143, 160, 143,
5792 21, 22, 31, 32, 187, 205, 234, 253, 205, 205,
5793 205, 56, 1, 47, 101, 163, 164, 165, 167, 190,
5794 191, 425, 167, 226, 211, 221, 409, 425, 210, 408,
5795 409, 425, 46, 98, 139, 146, 177, 178, 195, 224,
5796 234, 369, 370, 373, 276, 54, 55, 57, 199, 351,
5797 364, 351, 352, 353, 152, 152, 152, 152, 367, 184,
5798 205, 205, 151, 153, 417, 423, 424, 40, 41, 42,
5799 43, 44, 37, 38, 148, 376, 377, 378, 379, 425,
5800 376, 378, 26, 143, 213, 217, 245, 285, 28, 246,
5801 282, 126, 146, 101, 107, 192, 126, 25, 77, 78,
5802 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
5803 89, 94, 95, 100, 127, 129, 130, 131, 132, 133,
5804 134, 135, 136, 137, 138, 207, 207, 68, 96, 97,
5805 145, 415, 225, 171, 180, 180, 181, 182, 181, 180,
5806 417, 424, 98, 189, 196, 234, 258, 369, 370, 373,
5807 52, 56, 94, 98, 197, 198, 234, 369, 370, 373,
5808 198, 33, 34, 35, 36, 49, 50, 51, 52, 56,
5809 148, 176, 199, 371, 406, 216, 97, 415, 416, 285,
5810 339, 99, 99, 146, 210, 56, 210, 210, 210, 351,
5811 376, 376, 126, 100, 146, 220, 425, 97, 145, 415,
5812 99, 99, 146, 220, 216, 418, 419, 216, 91, 215,
5813 216, 221, 383, 409, 425, 171, 419, 171, 54, 64,
5814 65, 168, 148, 206, 157, 163, 97, 415, 99, 167,
5815 166, 190, 149, 417, 424, 419, 227, 419, 150, 146,
5816 153, 422, 146, 422, 144, 422, 418, 56, 367, 192,
5817 194, 377, 146, 97, 145, 415, 277, 66, 119, 121,
5818 122, 354, 119, 119, 354, 67, 354, 343, 349, 346,
5819 350, 77, 151, 159, 180, 180, 180, 180, 167, 171,
5820 171, 52, 54, 55, 56, 57, 58, 77, 91, 101,
5821 107, 108, 109, 133, 136, 263, 380, 382, 383, 384,
5822 385, 386, 387, 388, 389, 390, 393, 394, 395, 396,
5823 397, 400, 401, 402, 403, 404, 126, 161, 163, 382,
5824 126, 161, 286, 287, 106, 186, 290, 291, 290, 70,
5825 209, 425, 190, 146, 195, 146, 209, 174, 205, 205,
5826 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
5827 205, 172, 205, 205, 205, 205, 205, 205, 205, 205,
5828 205, 205, 205, 52, 53, 56, 203, 213, 412, 413,
5829 215, 221, 52, 53, 56, 203, 213, 412, 161, 13,
5830 254, 423, 254, 163, 180, 163, 417, 230, 56, 97,
5831 145, 415, 25, 171, 52, 56, 197, 130, 374, 97,
5832 145, 415, 233, 407, 68, 97, 414, 52, 56, 412,
5833 209, 209, 202, 124, 126, 126, 209, 210, 107, 210,
5834 219, 409, 52, 56, 215, 52, 56, 209, 209, 410,
5835 419, 149, 419, 146, 419, 146, 419, 200, 228, 205,
5836 144, 144, 412, 412, 209, 160, 419, 165, 419, 409,
5837 146, 194, 52, 56, 215, 52, 56, 278, 356, 355,
5838 119, 344, 354, 66, 119, 119, 344, 66, 119, 205,
5839 101, 107, 259, 260, 261, 262, 385, 146, 405, 425,
5840 419, 264, 265, 146, 381, 210, 146, 405, 34, 52,
5841 146, 381, 52, 146, 381, 52, 188, 205, 10, 252,
5842 8, 247, 332, 425, 423, 188, 205, 252, 144, 288,
5843 286, 252, 292, 252, 107, 184, 210, 221, 222, 223,
5844 419, 194, 146, 169, 170, 184, 196, 205, 210, 212,
5845 223, 234, 373, 175, 173, 418, 99, 99, 213, 217,
5846 418, 420, 146, 99, 99, 213, 214, 217, 425, 252,
5847 163, 13, 163, 252, 27, 255, 423, 252, 25, 229,
5848 297, 17, 249, 295, 52, 56, 215, 52, 56, 181,
5849 232, 375, 231, 52, 56, 197, 215, 161, 171, 179,
5850 214, 217, 170, 205, 212, 170, 212, 200, 210, 210,
5851 220, 99, 99, 420, 99, 99, 383, 409, 171, 212,
5852 422, 192, 420, 148, 280, 382, 357, 54, 55, 57,
5853 361, 373, 152, 354, 152, 152, 152, 261, 385, 146,
5854 419, 146, 404, 210, 126, 380, 387, 400, 402, 390,
5855 394, 396, 388, 397, 402, 386, 388, 44, 44, 210,
5856 223, 333, 425, 9, 15, 248, 250, 335, 425, 44,
5857 44, 289, 144, 293, 210, 146, 44, 194, 44, 126,
5858 44, 97, 145, 415, 52, 56, 58, 90, 91, 98,
5859 101, 104, 105, 107, 112, 132, 275, 303, 304, 305,
5860 306, 309, 314, 315, 316, 319, 320, 321, 322, 323,
5861 324, 325, 326, 327, 328, 329, 330, 331, 336, 337,
5862 340, 341, 342, 345, 347, 348, 370, 394, 303, 128,
5863 209, 209, 186, 150, 99, 209, 209, 186, 14, 250,
5864 251, 256, 257, 425, 257, 183, 298, 295, 252, 107,
5865 210, 294, 252, 420, 163, 423, 180, 161, 420, 252,
5866 419, 176, 285, 282, 209, 209, 99, 209, 209, 419,
5867 146, 419, 382, 279, 358, 419, 259, 262, 260, 146,
5868 381, 146, 381, 405, 146, 381, 146, 381, 381, 205,
5869 205, 100, 334, 425, 163, 162, 205, 205, 131, 270,
5870 271, 425, 270, 107, 210, 167, 167, 209, 205, 52,
5871 56, 215, 52, 56, 327, 327, 56, 197, 311, 304,
5872 312, 313, 314, 315, 318, 420, 310, 418, 421, 52,
5873 351, 52, 54, 55, 57, 101, 368, 100, 146, 131,
5874 146, 146, 304, 88, 89, 97, 145, 148, 307, 308,
5875 34, 52, 205, 170, 212, 170, 212, 209, 170, 212,
5876 170, 212, 163, 180, 252, 252, 299, 252, 210, 146,
5877 254, 252, 161, 423, 252, 209, 272, 418, 29, 123,
5878 281, 359, 146, 146, 388, 402, 388, 388, 98, 196,
5879 234, 369, 370, 373, 254, 163, 263, 266, 269, 272,
5880 386, 388, 389, 391, 392, 398, 399, 402, 404, 163,
5881 161, 210, 420, 304, 420, 107, 304, 318, 420, 146,
5882 112, 319, 144, 124, 180, 328, 312, 316, 309, 317,
5883 318, 321, 325, 327, 327, 197, 420, 419, 312, 315,
5884 319, 312, 315, 319, 170, 212, 254, 302, 303, 107,
5885 210, 163, 252, 149, 151, 161, 163, 360, 260, 381,
5886 146, 381, 381, 381, 56, 97, 145, 415, 163, 335,
5887 405, 272, 131, 264, 146, 267, 268, 98, 234, 146,
5888 405, 146, 267, 146, 267, 419, 52, 146, 146, 351,
5889 421, 149, 146, 146, 419, 419, 419, 420, 420, 420,
5890 163, 254, 40, 41, 210, 257, 295, 296, 52, 273,
5891 274, 384, 252, 144, 163, 388, 52, 56, 215, 52,
5892 56, 332, 131, 234, 266, 399, 402, 56, 97, 391,
5893 396, 388, 398, 402, 388, 146, 317, 317, 316, 318,
5894 256, 300, 180, 180, 146, 418, 120, 381, 420, 146,
5895 267, 146, 267, 52, 56, 405, 146, 267, 146, 267,
5896 267, 317, 146, 163, 274, 388, 402, 388, 388, 257,
5897 297, 301, 267, 146, 267, 267, 267, 388, 267
5901 static const yytype_int16 yyr1[] =
5903 0, 154, 156, 155, 157, 158, 158, 158, 158, 159,
5904 159, 160, 162, 161, 161, 163, 164, 164, 164, 164,
5905 165, 166, 165, 168, 167, 167, 167, 167, 167, 167,
5906 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
5907 167, 169, 169, 169, 169, 169, 169, 169, 169, 169,
5908 169, 169, 169, 170, 170, 170, 171, 171, 171, 171,
5909 171, 172, 173, 171, 174, 175, 171, 171, 176, 177,
5910 179, 178, 180, 182, 183, 181, 184, 184, 185, 185,
5911 186, 187, 188, 188, 188, 188, 188, 188, 188, 188,
5912 188, 188, 188, 189, 189, 190, 190, 191, 191, 191,
5913 191, 191, 191, 191, 191, 191, 191, 192, 192, 193,
5914 193, 194, 194, 195, 195, 195, 195, 195, 195, 195,
5915 195, 195, 196, 196, 196, 196, 196, 196, 196, 196,
5916 196, 197, 197, 198, 198, 198, 199, 199, 199, 199,
5917 199, 200, 200, 201, 202, 201, 203, 203, 203, 203,
5918 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
5919 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
5920 203, 203, 203, 203, 203, 203, 204, 204, 204, 204,
5921 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
5922 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
5923 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
5924 204, 204, 204, 204, 204, 204, 204, 205, 205, 205,
5925 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
5926 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
5927 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
5928 205, 205, 205, 205, 205, 205, 205, 206, 205, 205,
5929 205, 205, 205, 205, 205, 207, 207, 207, 207, 208,
5930 208, 209, 209, 210, 211, 211, 211, 211, 212, 212,
5931 213, 213, 213, 214, 214, 215, 215, 215, 215, 215,
5932 216, 216, 216, 216, 216, 218, 217, 219, 219, 220,
5933 220, 221, 221, 221, 221, 222, 222, 223, 223, 223,
5934 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
5935 224, 225, 224, 226, 224, 227, 224, 224, 224, 224,
5936 224, 224, 224, 224, 224, 224, 228, 224, 224, 224,
5937 224, 224, 224, 224, 224, 224, 224, 224, 229, 224,
5938 230, 224, 224, 224, 231, 224, 232, 224, 233, 224,
5939 224, 224, 224, 224, 224, 224, 234, 235, 236, 237,
5940 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
5941 248, 249, 250, 251, 252, 253, 254, 254, 254, 255,
5942 255, 256, 256, 257, 257, 258, 258, 259, 259, 260,
5943 260, 261, 261, 261, 261, 261, 262, 262, 263, 263,
5944 265, 264, 266, 266, 266, 266, 267, 267, 268, 269,
5945 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
5946 269, 269, 269, 269, 270, 270, 271, 271, 272, 272,
5947 273, 273, 274, 274, 276, 277, 278, 279, 275, 280,
5948 280, 281, 281, 282, 283, 283, 283, 283, 284, 284,
5949 284, 284, 284, 284, 284, 284, 284, 285, 285, 287,
5950 288, 289, 286, 291, 292, 293, 290, 294, 294, 294,
5951 294, 295, 296, 296, 298, 299, 300, 297, 301, 301,
5952 302, 302, 302, 303, 303, 303, 303, 303, 303, 304,
5953 305, 305, 306, 306, 307, 308, 309, 309, 309, 309,
5954 309, 309, 309, 309, 309, 309, 309, 309, 309, 310,
5955 309, 309, 311, 309, 312, 312, 312, 312, 312, 312,
5956 312, 312, 313, 313, 314, 314, 315, 316, 316, 317,
5957 317, 318, 319, 319, 319, 319, 320, 320, 321, 321,
5958 322, 322, 323, 323, 324, 325, 325, 326, 326, 326,
5959 326, 326, 326, 326, 326, 326, 326, 327, 327, 327,
5960 327, 327, 327, 327, 327, 327, 327, 328, 329, 329,
5961 330, 331, 331, 331, 332, 332, 333, 333, 333, 334,
5962 334, 335, 335, 336, 336, 337, 338, 338, 338, 339,
5963 340, 341, 342, 343, 343, 344, 344, 345, 346, 346,
5964 347, 348, 349, 349, 350, 350, 351, 351, 352, 352,
5965 353, 353, 354, 355, 354, 356, 357, 358, 359, 360,
5966 354, 361, 361, 361, 361, 362, 362, 363, 364, 364,
5967 364, 364, 365, 366, 366, 367, 367, 367, 367, 368,
5968 368, 368, 369, 369, 369, 369, 369, 370, 370, 370,
5969 370, 370, 370, 370, 371, 371, 372, 372, 373, 373,
5970 375, 374, 374, 376, 376, 377, 378, 379, 378, 380,
5971 380, 380, 380, 380, 381, 381, 382, 382, 382, 382,
5972 382, 382, 382, 382, 382, 382, 382, 382, 382, 382,
5973 382, 383, 384, 384, 384, 384, 385, 385, 386, 387,
5974 387, 388, 388, 389, 390, 390, 391, 391, 392, 392,
5975 393, 393, 394, 394, 395, 396, 396, 397, 398, 399,
5976 399, 400, 400, 401, 401, 402, 402, 403, 403, 404,
5977 404, 405, 405, 406, 407, 406, 408, 408, 409, 409,
5978 410, 410, 410, 410, 410, 411, 411, 411, 412, 412,
5979 412, 412, 413, 413, 413, 414, 414, 415, 415, 416,
5980 416, 417, 417, 418, 418, 419, 420, 421, 422, 422,
5981 422, 423, 423, 424, 424, 425
5985 static const yytype_int8 yyr2[] =
5987 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
5988 2, 3, 0, 6, 3, 2, 1, 1, 3, 2,
5989 1, 0, 3, 0, 4, 3, 3, 3, 2, 3,
5990 3, 3, 3, 3, 4, 1, 4, 4, 6, 4,
5991 1, 4, 4, 7, 6, 6, 6, 6, 4, 6,
5992 4, 6, 4, 1, 3, 1, 1, 3, 3, 3,
5993 2, 0, 0, 5, 0, 0, 5, 1, 1, 2,
5994 0, 5, 1, 0, 0, 4, 1, 1, 1, 4,
5995 3, 1, 2, 3, 4, 5, 4, 5, 2, 2,
5996 2, 2, 2, 1, 3, 1, 3, 1, 2, 3,
5997 5, 2, 4, 2, 4, 1, 3, 1, 3, 2,
5998 3, 1, 3, 1, 1, 4, 3, 3, 3, 3,
5999 2, 1, 1, 1, 4, 3, 3, 3, 3, 2,
6000 1, 1, 1, 2, 1, 3, 1, 1, 1, 1,
6001 1, 1, 1, 1, 0, 4, 1, 1, 1, 1,
6002 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6003 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6004 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6005 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6006 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6007 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6008 1, 1, 1, 1, 1, 1, 1, 4, 4, 7,
6009 6, 6, 6, 6, 5, 4, 3, 3, 2, 2,
6010 2, 2, 3, 3, 3, 3, 3, 3, 4, 2,
6011 2, 3, 3, 3, 3, 1, 3, 3, 3, 3,
6012 3, 2, 2, 3, 3, 3, 3, 0, 4, 6,
6013 4, 6, 4, 6, 1, 1, 1, 1, 1, 3,
6014 3, 1, 1, 1, 1, 2, 4, 2, 1, 3,
6015 3, 5, 3, 1, 1, 1, 1, 2, 4, 2,
6016 1, 2, 2, 4, 1, 0, 2, 2, 1, 2,
6017 1, 1, 2, 3, 4, 1, 1, 3, 4, 2,
6018 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6019 1, 0, 4, 0, 3, 0, 4, 3, 3, 2,
6020 3, 3, 1, 4, 3, 1, 0, 6, 4, 3,
6021 2, 1, 2, 1, 6, 6, 4, 4, 0, 6,
6022 0, 5, 5, 6, 0, 6, 0, 7, 0, 5,
6023 4, 4, 1, 1, 1, 1, 1, 1, 1, 1,
6024 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6025 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
6026 1, 1, 5, 1, 2, 1, 1, 1, 3, 1,
6027 3, 1, 3, 5, 1, 3, 2, 1, 1, 1,
6028 0, 2, 4, 2, 2, 1, 2, 0, 1, 6,
6029 8, 4, 6, 4, 2, 6, 2, 4, 6, 2,
6030 4, 2, 4, 1, 1, 1, 3, 4, 1, 4,
6031 1, 3, 1, 1, 0, 0, 0, 0, 7, 4,
6032 1, 3, 3, 3, 2, 4, 5, 5, 2, 4,
6033 4, 3, 3, 3, 2, 1, 4, 3, 3, 0,
6034 0, 0, 5, 0, 0, 0, 5, 1, 2, 3,
6035 4, 5, 1, 1, 0, 0, 0, 8, 1, 1,
6036 1, 3, 3, 1, 2, 3, 1, 1, 1, 1,
6037 3, 1, 3, 1, 1, 1, 1, 1, 4, 4,
6038 4, 3, 4, 4, 4, 3, 3, 3, 2, 0,
6039 4, 2, 0, 4, 1, 1, 2, 3, 5, 2,
6040 4, 1, 2, 3, 1, 3, 5, 2, 1, 1,
6041 3, 1, 3, 1, 2, 1, 1, 3, 2, 1,
6042 1, 3, 2, 1, 2, 1, 1, 1, 3, 3,
6043 2, 2, 1, 1, 1, 2, 2, 1, 1, 1,
6044 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
6045 4, 2, 3, 1, 6, 1, 1, 1, 1, 2,
6046 1, 2, 1, 1, 1, 1, 1, 1, 2, 3,
6047 3, 3, 4, 0, 3, 1, 2, 4, 0, 3,
6048 4, 4, 0, 3, 0, 3, 0, 2, 0, 2,
6049 0, 2, 1, 0, 3, 0, 0, 0, 0, 0,
6050 8, 1, 1, 1, 1, 1, 1, 2, 1, 1,
6051 1, 1, 3, 1, 2, 1, 1, 1, 1, 1,
6052 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6053 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6054 0, 4, 0, 1, 1, 3, 1, 0, 3, 4,
6055 2, 2, 1, 1, 2, 0, 6, 8, 4, 6,
6056 4, 6, 2, 4, 6, 2, 4, 2, 4, 1,
6057 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6058 3, 1, 3, 1, 2, 1, 2, 1, 1, 3,
6059 1, 3, 1, 1, 2, 2, 1, 3, 3, 1,
6060 3, 1, 3, 1, 1, 2, 1, 1, 1, 2,
6061 1, 2, 1, 1, 0, 4, 1, 2, 1, 3,
6062 3, 2, 1, 4, 2, 1, 1, 1, 1, 1,
6063 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6064 1, 0, 1, 0, 1, 2, 2, 2, 0, 1,
6069 enum { YYENOMEM = -2 };
6071 #define yyerrok (yyerrstatus = 0)
6072 #define yyclearin (yychar = YYEMPTY)
6074 #define YYACCEPT goto yyacceptlab
6075 #define YYABORT goto yyabortlab
6076 #define YYERROR goto yyerrorlab
6077 #define YYNOMEM goto yyexhaustedlab
6080 #define YYRECOVERING() (!!yyerrstatus)
6082 #define YYBACKUP(Token, Value) \
6084 if (yychar == YYEMPTY) \
6088 YYPOPSTACK (yylen); \
6094 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
6101 #define YYERRCODE YYUNDEF
6107 #ifndef YYLLOC_DEFAULT
6108 # define YYLLOC_DEFAULT(Current, Rhs, N) \
6112 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
6113 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
6114 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
6115 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
6119 (Current).first_line = (Current).last_line = \
6120 YYRHSLOC (Rhs, 0).last_line; \
6121 (Current).first_column = (Current).last_column = \
6122 YYRHSLOC (Rhs, 0).last_column; \
6127 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
6135 # define YYFPRINTF fprintf
6138 # define YYDPRINTF(Args) \
6149 # ifndef YYLOCATION_PRINT
6151 # if defined YY_LOCATION_PRINT
6155 # define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
6157 # elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
6163 yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
6166 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
6167 if (0 <= yylocp->first_line)
6169 res += YYFPRINTF (p,
"%d", yylocp->first_line);
6170 if (0 <= yylocp->first_column)
6171 res += YYFPRINTF (p,
".%d", yylocp->first_column);
6173 if (0 <= yylocp->last_line)
6175 if (yylocp->first_line < yylocp->last_line)
6177 res += YYFPRINTF (p,
"-%d", yylocp->last_line);
6179 res += YYFPRINTF (p,
".%d", end_col);
6181 else if (0 <= end_col && yylocp->first_column < end_col)
6182 res += YYFPRINTF (p,
"-%d", end_col);
6187 # define YYLOCATION_PRINT yy_location_print_
6191 # define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
6195 # define YYLOCATION_PRINT(File, Loc) ((void) 0)
6198 # define YY_LOCATION_PRINT YYLOCATION_PRINT
6204 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
6208 YYFPRINTF (p, "%s ", Title); \
6209 yy_symbol_print (stderr, \
6210 Kind, Value, Location, p); \
6211 YYFPRINTF (p, "\n"); \
6221 yy_symbol_value_print (
FILE *yyo,
6224 FILE *yyoutput = yyo;
6226 YY_USE (yylocationp);
6230 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6233 case YYSYMBOL_tIDENTIFIER:
6234 #line 1090 "ripper.y"
6237 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).val)));
6239 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).val))->nd_rval);
6242 #line 6241 "ripper.c"
6246 #line 1090 "ripper.y"
6249 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).val)));
6251 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).val))->nd_rval);
6254 #line 6253 "ripper.c"
6257 case YYSYMBOL_tGVAR:
6258 #line 1090 "ripper.y"
6261 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).val)));
6263 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).val))->nd_rval);
6266 #line 6265 "ripper.c"
6269 case YYSYMBOL_tIVAR:
6270 #line 1090 "ripper.y"
6273 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).val)));
6275 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).val))->nd_rval);
6278 #line 6277 "ripper.c"
6281 case YYSYMBOL_tCONSTANT:
6282 #line 1090 "ripper.y"
6285 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).val)));
6287 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).val))->nd_rval);
6290 #line 6289 "ripper.c"
6293 case YYSYMBOL_tCVAR:
6294 #line 1090 "ripper.y"
6297 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).val)));
6299 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).val))->nd_rval);
6302 #line 6301 "ripper.c"
6305 case YYSYMBOL_tLABEL:
6306 #line 1090 "ripper.y"
6309 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).val)));
6311 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).val))->nd_rval);
6314 #line 6313 "ripper.c"
6317 case YYSYMBOL_tINTEGER:
6318 #line 1097 "ripper.y"
6321 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).val)->nd_lit);
6323 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).val)));
6326 #line 6325 "ripper.c"
6329 case YYSYMBOL_tFLOAT:
6330 #line 1097 "ripper.y"
6333 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).val)->nd_lit);
6335 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).val)));
6338 #line 6337 "ripper.c"
6341 case YYSYMBOL_tRATIONAL:
6342 #line 1097 "ripper.y"
6345 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).val)->nd_lit);
6347 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).val)));
6350 #line 6349 "ripper.c"
6353 case YYSYMBOL_tIMAGINARY:
6354 #line 1097 "ripper.y"
6357 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).val)->nd_lit);
6359 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).val)));
6362 #line 6361 "ripper.c"
6365 case YYSYMBOL_tCHAR:
6366 #line 1097 "ripper.y"
6369 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).val)->nd_lit);
6371 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).val)));
6374 #line 6373 "ripper.c"
6377 case YYSYMBOL_tNTH_REF:
6378 #line 1104 "ripper.y"
6381 rb_parser_printf(p,
"$%ld", ((*yyvaluep).val)->nd_nth);
6383 rb_parser_printf(p,
"%"PRIsVALUE, ((*yyvaluep).val));
6386 #line 6385 "ripper.c"
6389 case YYSYMBOL_tBACK_REF:
6390 #line 1111 "ripper.y"
6393 rb_parser_printf(p,
"$%c", (
int)((*yyvaluep).val)->nd_nth);
6395 rb_parser_printf(p,
"%"PRIsVALUE, ((*yyvaluep).val));
6398 #line 6397 "ripper.c"
6401 case YYSYMBOL_tSTRING_CONTENT:
6402 #line 1097 "ripper.y"
6405 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).val)->nd_lit);
6407 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).val)));
6410 #line 6409 "ripper.c"
6413 case YYSYMBOL_tOP_ASGN:
6414 #line 1090 "ripper.y"
6417 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).val)));
6419 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).val))->nd_rval);
6422 #line 6421 "ripper.c"
6428 YY_IGNORE_MAYBE_UNINITIALIZED_END
6437 yy_symbol_print (
FILE *yyo,
6440 YYFPRINTF (p,
"%s %s (",
6441 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
6443 YYLOCATION_PRINT (yyo, yylocationp);
6444 YYFPRINTF (p,
": ");
6445 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
6455 ruby_parser_yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop,
struct parser_params *p)
6456 #define yy_stack_print(b, t) ruby_parser_yy_stack_print(b, t, p)
6458 YYFPRINTF (p,
"Stack now");
6459 for (; yybottom <= yytop; yybottom++)
6461 int yybot = *yybottom;
6462 YYFPRINTF (p,
" %d", yybot);
6464 YYFPRINTF (p,
"\n");
6467 # define YY_STACK_PRINT(Bottom, Top) \
6470 yy_stack_print ((Bottom), (Top)); \
6479 yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp,
YYLTYPE *yylsp,
6482 int yylno = yyrline[yyrule];
6483 int yynrhs = yyr2[yyrule];
6485 YYFPRINTF (p,
"Reducing stack by rule %d (line %d):\n",
6488 for (yyi = 0; yyi < yynrhs; yyi++)
6490 YYFPRINTF (p,
" $%d = ", yyi + 1);
6491 yy_symbol_print (stderr,
6492 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
6493 &yyvsp[(yyi + 1) - (yynrhs)],
6494 &(yylsp[(yyi + 1) - (yynrhs)]), p);
6495 YYFPRINTF (p,
"\n");
6499 # define YY_REDUCE_PRINT(Rule) \
6502 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
6511 # define YYDPRINTF(Args) ((void) 0)
6512 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
6513 # define YY_STACK_PRINT(Bottom, Top)
6514 # define YY_REDUCE_PRINT(Rule)
6520 # define YYINITDEPTH 200
6531 # define YYMAXDEPTH 10000
6539 yysymbol_kind_t yytoken;
6551 yysymbol_kind_t yyarg[],
int yyargn)
6555 int yyn = yypact[+*yyctx->yyssp];
6556 if (!yypact_value_is_default (yyn))
6561 int yyxbegin = yyn < 0 ? -yyn : 0;
6563 int yychecklim = YYLAST - yyn + 1;
6564 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
6566 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
6567 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
6568 && !yytable_value_is_error (yytable[yyx + yyn]))
6572 else if (yycount == yyargn)
6575 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
6578 if (yyarg && yycount == 0 && 0 < yyargn)
6579 yyarg[0] = YYSYMBOL_YYEMPTY;
6587 # if defined __GLIBC__ && defined _STRING_H
6588 # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
6592 yystrlen (
const char *yystr)
6595 for (yylen = 0; yystr[yylen]; yylen++)
6603 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
6604 # define yystpcpy stpcpy
6609 yystpcpy (
char *yydest,
const char *yysrc)
6612 const char *yys = yysrc;
6614 while ((*yyd++ = *yys++) !=
'\0')
6631 yytnamerr (
char *yyres,
const char *yystr)
6635 YYPTRDIFF_T yyn = 0;
6636 char const *yyp = yystr;
6642 goto do_not_strip_quotes;
6646 goto do_not_strip_quotes;
6662 do_not_strip_quotes: ;
6666 return yystpcpy (yyres, yystr) - yyres;
6668 return yystrlen (yystr);
6675 yysymbol_kind_t yyarg[],
int yyargn)
6702 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
6706 yyarg[yycount] = yyctx->yytoken;
6708 yyn = yypcontext_expected_tokens (yyctx,
6709 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
6710 if (yyn == YYENOMEM)
6727 yysyntax_error (
struct parser_params *p, YYPTRDIFF_T *yymsg_alloc,
char **yymsg,
6730 enum { YYARGS_MAX = 5 };
6732 const char *yyformat = YY_NULLPTR;
6735 yysymbol_kind_t yyarg[YYARGS_MAX];
6737 YYPTRDIFF_T yysize = 0;
6740 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
6741 if (yycount == YYENOMEM)
6746 #define YYCASE_(N, S) \
6751 YYCASE_(0, YY_(
"syntax error"));
6752 YYCASE_(1, YY_(
"syntax error, unexpected %s"));
6753 YYCASE_(2, YY_(
"syntax error, unexpected %s, expecting %s"));
6754 YYCASE_(3, YY_(
"syntax error, unexpected %s, expecting %s or %s"));
6755 YYCASE_(4, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
6756 YYCASE_(5, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
6762 yysize = yystrlen (yyformat) - 2 * yycount + 1;
6765 for (yyi = 0; yyi < yycount; ++yyi)
6768 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
6769 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
6776 if (*yymsg_alloc < yysize)
6778 *yymsg_alloc = 2 * yysize;
6779 if (! (yysize <= *yymsg_alloc
6780 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
6781 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
6791 while ((*yyp = *yyformat) !=
'\0')
6792 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
6794 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
6812 yydestruct (
const char *yymsg,
6816 YY_USE (yylocationp);
6820 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
6822 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6824 YY_IGNORE_MAYBE_UNINITIALIZED_END
6846 YY_INITIAL_VALUE (
static YYSTYPE yyval_default;)
6847 YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
6851 # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
6855 YYLTYPE yylloc = yyloc_default;
6860 yy_state_fast_t yystate = 0;
6862 int yyerrstatus = 0;
6868 YYPTRDIFF_T yystacksize = YYINITDEPTH;
6871 yy_state_t yyssa[YYINITDEPTH];
6872 yy_state_t *yyss = yyssa;
6873 yy_state_t *yyssp = yyss;
6889 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
6900 char *yymsg = yymsgbuf;
6901 YYPTRDIFF_T yymsg_alloc =
sizeof yymsgbuf;
6903 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
6909 YYDPRINTF ((p,
"Starting parse\n"));
6915 #line 1122 "ripper.y"
6917 RUBY_SET_YYLLOC_OF_NONE(yylloc);
6920 #line 6916 "ripper.c"
6939 YYDPRINTF ((p,
"Entering state %d\n", yystate));
6940 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
6941 YY_IGNORE_USELESS_CAST_BEGIN
6942 *yyssp = YY_CAST (yy_state_t, yystate);
6943 YY_IGNORE_USELESS_CAST_END
6944 YY_STACK_PRINT (yyss, yyssp);
6946 if (yyss + yystacksize - 1 <= yyssp)
6947 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
6952 YYPTRDIFF_T yysize = yyssp - yyss + 1;
6954 # if defined yyoverflow
6959 yy_state_t *yyss1 = yyss;
6967 yyoverflow (YY_(
"memory exhausted"),
6968 &yyss1, yysize * YYSIZEOF (*yyssp),
6969 &yyvs1, yysize * YYSIZEOF (*yyvsp),
6970 &yyls1, yysize * YYSIZEOF (*yylsp),
6978 if (YYMAXDEPTH <= yystacksize)
6981 if (YYMAXDEPTH < yystacksize)
6982 yystacksize = YYMAXDEPTH;
6985 yy_state_t *yyss1 = yyss;
6986 union yyalloc *yyptr =
6987 YY_CAST (
union yyalloc *,
6988 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
6991 YYSTACK_RELOCATE (yyss_alloc, yyss);
6992 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
6993 YYSTACK_RELOCATE (yyls_alloc, yyls);
6994 # undef YYSTACK_RELOCATE
6996 YYSTACK_FREE (yyss1);
7000 yyssp = yyss + yysize - 1;
7001 yyvsp = yyvs + yysize - 1;
7002 yylsp = yyls + yysize - 1;
7004 YY_IGNORE_USELESS_CAST_BEGIN
7005 YYDPRINTF ((p,
"Stack size increased to %ld\n",
7006 YY_CAST (
long, yystacksize)));
7007 YY_IGNORE_USELESS_CAST_END
7009 if (yyss + yystacksize - 1 <= yyssp)
7015 if (yystate == YYFINAL)
7029 yyn = yypact[yystate];
7030 if (yypact_value_is_default (yyn))
7036 if (yychar == YYEMPTY)
7038 YYDPRINTF ((p,
"Reading a token\n"));
7039 yychar = yylex (&yylval, &yylloc, p);
7042 if (yychar <= END_OF_INPUT)
7044 yychar = END_OF_INPUT;
7045 yytoken = YYSYMBOL_YYEOF;
7046 YYDPRINTF ((p,
"Now at end of input.\n"));
7048 else if (yychar == YYerror)
7055 yytoken = YYSYMBOL_YYerror;
7056 yyerror_range[1] = yylloc;
7061 yytoken = YYTRANSLATE (yychar);
7062 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc);
7068 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
7073 if (yytable_value_is_error (yyn))
7085 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc);
7087 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
7089 YY_IGNORE_MAYBE_UNINITIALIZED_END
7101 yyn = yydefact[yystate];
7122 yyval = yyvsp[1-yylen];
7125 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
7126 yyerror_range[1] = yyloc;
7127 YY_REDUCE_PRINT (yyn);
7131 #line 1327 "ripper.y"
7133 SET_LEX_STATE(EXPR_BEG);
7134 local_push(p, ifndef_ripper(1)+0);
7136 #line 7132 "ripper.c"
7140 #line 1332 "ripper.y"
7143 if ((yyvsp[0].val) && !compile_for_eval) {
7144 NODE *node = (yyvsp[0].val);
7146 if (nd_type_p(node, NODE_BLOCK)) {
7147 while (node->nd_next) {
7148 node = node->nd_next;
7150 node = node->nd_head;
7152 node = remove_begin(node);
7155 p->eval_tree = NEW_SCOPE(0, block_append(p, p->eval_tree, (yyvsp[0].val)), &(yyloc));
7157 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(program,v1);p->result=v2;}
7160 #line 7156 "ripper.c"
7164 #line 1354 "ripper.y"
7166 (yyval.val) = void_stmts(p, (yyvsp[-1].val));
7168 #line 7164 "ripper.c"
7172 #line 1360 "ripper.y"
7175 (yyval.val) = NEW_BEGIN(0, &(yyloc));
7177 {
VALUE v1,v2,v3,v4,v5;v1=dispatch0(stmts_new);v2=dispatch0(void_stmt);v3=v1;v4=v2;v5=dispatch2(stmts_add,v3,v4);(yyval.val)=v5;}
7179 #line 7175 "ripper.c"
7183 #line 1367 "ripper.y"
7186 (yyval.val) = newline_node((yyvsp[0].val));
7188 {
VALUE v1,v2,v3,v4;v1=dispatch0(stmts_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(stmts_add,v2,v3);(yyval.val)=v4;}
7190 #line 7186 "ripper.c"
7194 #line 1374 "ripper.y"
7197 (yyval.val) = block_append(p, (yyvsp[-2].val), newline_node((yyvsp[0].val)));
7199 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(stmts_add,v1,v2);(yyval.val)=v3;}
7201 #line 7197 "ripper.c"
7205 #line 1381 "ripper.y"
7207 (yyval.val) = remove_begin((yyvsp[0].val));
7209 #line 7205 "ripper.c"
7213 #line 1388 "ripper.y"
7215 (yyval.val) = (yyvsp[0].val);
7217 #line 7213 "ripper.c"
7221 #line 1394 "ripper.y"
7224 p->eval_tree_begin = block_append(p, p->eval_tree_begin,
7225 NEW_BEGIN((yyvsp[-1].val), &(yyloc)));
7226 (yyval.val) = NEW_BEGIN(0, &(yyloc));
7228 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(BEGIN,v1);(yyval.val)=v2;}
7230 #line 7226 "ripper.c"
7234 #line 1406 "ripper.y"
7235 {
if (!(yyvsp[-1].val)) {yyerror1(&(yylsp[0]),
"else without rescue is useless");}}
7236 #line 7232 "ripper.c"
7240 #line 1409 "ripper.y"
7243 (yyval.val) = new_bodystmt(p, (yyvsp[-5].val), (yyvsp[-4].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7245 {
VALUE v1,v2,v3,v4,v5;v1=escape_Qundef((yyvsp[-5].val));v2=escape_Qundef((yyvsp[-4].val));v3=escape_Qundef((yyvsp[-1].val));v4=escape_Qundef((yyvsp[0].val));v5=dispatch4(bodystmt,v1,v2,v3,v4);(yyval.val)=v5;}
7247 #line 7243 "ripper.c"
7251 #line 1418 "ripper.y"
7254 (yyval.val) = new_bodystmt(p, (yyvsp[-2].val), (yyvsp[-1].val), 0, (yyvsp[0].val), &(yyloc));
7256 {
VALUE v1,v2,v3,v4,v5;v1=escape_Qundef((yyvsp[-2].val));v2=escape_Qundef((yyvsp[-1].val));v3=
Qnil;v4=escape_Qundef((yyvsp[0].val));v5=dispatch4(bodystmt,v1,v2,v3,v4);(yyval.val)=v5;}
7258 #line 7254 "ripper.c"
7262 #line 1427 "ripper.y"
7264 (yyval.val) = void_stmts(p, (yyvsp[-1].val));
7266 #line 7262 "ripper.c"
7270 #line 1433 "ripper.y"
7273 (yyval.val) = NEW_BEGIN(0, &(yyloc));
7275 {
VALUE v1,v2,v3,v4,v5;v1=dispatch0(stmts_new);v2=dispatch0(void_stmt);v3=v1;v4=v2;v5=dispatch2(stmts_add,v3,v4);(yyval.val)=v5;}
7277 #line 7273 "ripper.c"
7281 #line 1440 "ripper.y"
7284 (yyval.val) = newline_node((yyvsp[0].val));
7286 {
VALUE v1,v2,v3,v4;v1=dispatch0(stmts_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(stmts_add,v2,v3);(yyval.val)=v4;}
7288 #line 7284 "ripper.c"
7292 #line 1447 "ripper.y"
7295 (yyval.val) = block_append(p, (yyvsp[-2].val), newline_node((yyvsp[0].val)));
7297 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(stmts_add,v1,v2);(yyval.val)=v3;}
7299 #line 7295 "ripper.c"
7303 #line 1454 "ripper.y"
7305 (yyval.val) = remove_begin((yyvsp[0].val));
7307 #line 7303 "ripper.c"
7311 #line 1460 "ripper.y"
7313 (yyval.val) = (yyvsp[0].val);
7315 #line 7311 "ripper.c"
7319 #line 1464 "ripper.y"
7321 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
7323 #line 7319 "ripper.c"
7327 #line 1468 "ripper.y"
7329 (yyval.val) = (yyvsp[0].val);
7331 #line 7327 "ripper.c"
7335 #line 1473 "ripper.y"
7336 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
7337 #line 7333 "ripper.c"
7341 #line 1474 "ripper.y"
7344 (yyval.val) = NEW_ALIAS((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
7346 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(alias,v1,v2);(yyval.val)=v3;}
7348 #line 7344 "ripper.c"
7352 #line 1481 "ripper.y"
7355 (yyval.val) = NEW_VALIAS((yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
7357 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(var_alias,v1,v2);(yyval.val)=v3;}
7359 #line 7355 "ripper.c"
7363 #line 1488 "ripper.y"
7368 buf[1] = (char)(yyvsp[0].val)->nd_nth;
7369 (yyval.val) = NEW_VALIAS((yyvsp[-1].val),
rb_intern2(buf, 2), &(yyloc));
7371 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(var_alias,v1,v2);(yyval.val)=v3;}
7373 #line 7369 "ripper.c"
7377 #line 1498 "ripper.y"
7379 static const char mesg[] =
"can't make alias for the number variables";
7381 yyerror1(&(yylsp[0]), mesg);
7382 (yyval.val) = NEW_BEGIN(0, &(yyloc));
7384 {
VALUE v1,v2,v3;v1=ERR_MESG();v2=(yyvsp[0].val);v3=dispatch2(alias_error,v1,v2);(yyval.val)=v3;}ripper_error(p);
7386 #line 7382 "ripper.c"
7390 #line 1507 "ripper.y"
7393 (yyval.val) = (yyvsp[0].val);
7395 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(undef,v1);(yyval.val)=v2;}
7397 #line 7393 "ripper.c"
7401 #line 1514 "ripper.y"
7404 (yyval.val) = new_if(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
7405 fixpos((yyval.val), (yyvsp[0].val));
7407 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(if_mod,v1,v2);(yyval.val)=v3;}
7409 #line 7405 "ripper.c"
7413 #line 1522 "ripper.y"
7416 (yyval.val) = new_unless(p, (yyvsp[0].val), remove_begin((yyvsp[-2].val)), 0, &(yyloc));
7417 fixpos((yyval.val), (yyvsp[0].val));
7419 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(unless_mod,v1,v2);(yyval.val)=v3;}
7421 #line 7417 "ripper.c"
7425 #line 1530 "ripper.y"
7428 if ((yyvsp[-2].val) && nd_type_p((yyvsp[-2].val), NODE_BEGIN)) {
7429 (yyval.val) = NEW_WHILE(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].val)->nd_body, 0, &(yyloc));
7432 (yyval.val) = NEW_WHILE(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].val), 1, &(yyloc));
7435 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(while_mod,v1,v2);(yyval.val)=v3;}
7437 #line 7433 "ripper.c"
7441 #line 1542 "ripper.y"
7444 if ((yyvsp[-2].val) && nd_type_p((yyvsp[-2].val), NODE_BEGIN)) {
7445 (yyval.val) = NEW_UNTIL(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].val)->nd_body, 0, &(yyloc));
7448 (yyval.val) = NEW_UNTIL(cond(p, (yyvsp[0].val), &(yylsp[0])), (yyvsp[-2].val), 1, &(yyloc));
7451 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(until_mod,v1,v2);(yyval.val)=v3;}
7453 #line 7449 "ripper.c"
7457 #line 1554 "ripper.y"
7461 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7462 resq = NEW_RESBODY(0, remove_begin((yyvsp[0].val)), 0, &loc);
7463 (yyval.val) = NEW_RESCUE(remove_begin((yyvsp[-2].val)), resq, 0, &(yyloc));
7465 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);(yyval.val)=v3;}
7467 #line 7463 "ripper.c"
7471 #line 1564 "ripper.y"
7473 if (p->ctxt.in_def) {
7474 rb_warn0(
"END in method; use at_exit");
7478 NODE *scope = NEW_NODE(
7479 NODE_SCOPE, 0 , (yyvsp[-1].val) , 0 , &(yyloc));
7480 (yyval.val) = NEW_POSTEXE(scope, &(yyloc));
7483 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(END,v1);(yyval.val)=v2;}
7485 #line 7481 "ripper.c"
7489 #line 1579 "ripper.y"
7492 value_expr((yyvsp[0].val));
7493 (yyval.val) = node_assign(p, (yyvsp[-3].val), (yyvsp[0].val), (yyvsp[-1].ctxt), &(yyloc));
7495 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[0].val);v3=dispatch2(massign,v1,v2);(yyval.val)=v3;}
7497 #line 7493 "ripper.c"
7501 #line 1587 "ripper.y"
7504 (yyval.val) = node_assign(p, (yyvsp[-3].val), (yyvsp[0].val), (yyvsp[-1].ctxt), &(yyloc));
7506 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[0].val);v3=dispatch2(assign,v1,v2);(yyval.val)=v3;}
7508 #line 7504 "ripper.c"
7512 #line 1594 "ripper.y"
7515 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7516 (yyval.val) = node_assign(p, (yyvsp[-5].val), NEW_RESCUE((yyvsp[-2].val), NEW_RESBODY(0, remove_begin((yyvsp[0].val)), 0, &loc), 0, &(yyloc)), (yyvsp[-3].ctxt), &(yyloc));
7518 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);v4=(yyvsp[-5].val);v5=v3;v6=dispatch2(massign,v4,v5);(yyval.val)=v6;}
7520 #line 7516 "ripper.c"
7524 #line 1602 "ripper.y"
7527 (yyval.val) = node_assign(p, (yyvsp[-3].val), (yyvsp[0].val), (yyvsp[-1].ctxt), &(yyloc));
7529 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[0].val);v3=dispatch2(massign,v1,v2);(yyval.val)=v3;}
7531 #line 7527 "ripper.c"
7535 #line 1612 "ripper.y"
7538 (yyval.val) = node_assign(p, (yyvsp[-3].val), (yyvsp[0].val), (yyvsp[-1].ctxt), &(yyloc));
7540 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[0].val);v3=dispatch2(assign,v1,v2);(yyval.val)=v3;}
7542 #line 7538 "ripper.c"
7546 #line 1619 "ripper.y"
7549 (yyval.val) = new_op_assign(p, (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[0].val), (yyvsp[-1].ctxt), &(yyloc));
7551 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-3].val);v2=(yyvsp[-2].val);v3=(yyvsp[0].val);v4=dispatch3(opassign,v1,v2,v3);(yyval.val)=v4;}
7553 #line 7549 "ripper.c"
7557 #line 1626 "ripper.y"
7560 (yyval.val) = new_ary_op_assign(p, (yyvsp[-6].val), (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-4]), &(yyloc));
7562 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-6].val);v2=escape_Qundef((yyvsp[-4].val));v3=dispatch2(aref_field,v1,v2);v4=v3;v5=(yyvsp[-2].val);v6=(yyvsp[0].val);v7=dispatch3(opassign,v4,v5,v6);(yyval.val)=v7;}
7565 #line 7561 "ripper.c"
7569 #line 1634 "ripper.y"
7572 (yyval.val) = new_attr_op_assign(p, (yyvsp[-5].val), (yyvsp[-4].val), (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
7574 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-5].val);v2=(yyvsp[-4].val);v3=(yyvsp[-3].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-2].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.val)=v8;}
7576 #line 7572 "ripper.c"
7580 #line 1641 "ripper.y"
7583 (yyval.val) = new_attr_op_assign(p, (yyvsp[-5].val), (yyvsp[-4].val), (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
7585 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-5].val);v2=(yyvsp[-4].val);v3=(yyvsp[-3].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-2].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.val)=v8;}
7587 #line 7583 "ripper.c"
7591 #line 1648 "ripper.y"
7594 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
7595 (yyval.val) = new_const_op_assign(p, NEW_COLON2((yyvsp[-5].val), (yyvsp[-3].val), &loc), (yyvsp[-2].val), (yyvsp[0].val), (yyvsp[-1].ctxt), &(yyloc));
7597 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-5].val);v2=(yyvsp[-3].val);v3=dispatch2(const_path_field,v1,v2);v4=v3;v5=(yyvsp[-2].val);v6=(yyvsp[0].val);v7=dispatch3(opassign,v4,v5,v6);(yyval.val)=v7;}
7599 #line 7595 "ripper.c"
7603 #line 1656 "ripper.y"
7606 (yyval.val) = new_attr_op_assign(p, (yyvsp[-5].val), ID2VAL(idCOLON2), (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
7608 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-5].val);v2=ID2VAL(idCOLON2);v3=(yyvsp[-3].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-2].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.val)=v8;}
7610 #line 7606 "ripper.c"
7614 #line 1663 "ripper.y"
7616 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
7617 restore_defun(p, (yyvsp[-3].node)->nd_defn);
7619 (yyval.val) = set_defun_body(p, (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
7621 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[0].val);v2=
Qnil;v3=
Qnil;v4=
Qnil;v5=dispatch4(bodystmt,v1,v2,v3,v4);(yyvsp[0].val)=v5;}
7622 {
VALUE v1,v2,v3,v4;v1=get_value((yyvsp[-3].val));v2=(yyvsp[-2].val);v3=(yyvsp[0].val);v4=dispatch3(def,v1,v2,v3);(yyval.val)=v4;}
7625 #line 7621 "ripper.c"
7629 #line 1674 "ripper.y"
7631 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
7632 restore_defun(p, (yyvsp[-5].node)->nd_defn);
7634 (yyvsp[-2].val) = rescued_expr(p, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
7635 (yyval.val) = set_defun_body(p, (yyvsp[-5].val), (yyvsp[-4].val), (yyvsp[-2].val), &(yyloc));
7637 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);v4=v3;v5=
Qnil;v6=
Qnil;v7=
Qnil;v8=dispatch4(bodystmt,v4,v5,v6,v7);(yyvsp[-2].val)=v8;}
7638 {
VALUE v1,v2,v3,v4;v1=get_value((yyvsp[-5].val));v2=(yyvsp[-4].val);v3=(yyvsp[-2].val);v4=dispatch3(def,v1,v2,v3);(yyval.val)=v4;}
7641 #line 7637 "ripper.c"
7645 #line 1686 "ripper.y"
7647 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
7648 restore_defun(p, (yyvsp[-3].node)->nd_defn);
7650 (yyval.val) = set_defun_body(p, (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
7652 (yyvsp[-3].val) = get_value((yyvsp[-3].val));
7654 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[0].val);v2=
Qnil;v3=
Qnil;v4=
Qnil;v5=dispatch4(bodystmt,v1,v2,v3,v4);(yyvsp[0].val)=v5;}
7655 {
VALUE v1,v2,v3,v4,v5,v6;v1=AREF((yyvsp[-3].val), 0);v2=AREF((yyvsp[-3].val), 1);v3=AREF((yyvsp[-3].val), 2);v4=(yyvsp[-2].val);v5=(yyvsp[0].val);v6=dispatch5(defs,v1,v2,v3,v4,v5);(yyval.val)=v6;}
7658 #line 7654 "ripper.c"
7662 #line 1699 "ripper.y"
7664 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
7665 restore_defun(p, (yyvsp[-5].node)->nd_defn);
7667 (yyvsp[-2].val) = rescued_expr(p, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
7668 (yyval.val) = set_defun_body(p, (yyvsp[-5].val), (yyvsp[-4].val), (yyvsp[-2].val), &(yyloc));
7670 (yyvsp[-5].val) = get_value((yyvsp[-5].val));
7672 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);v4=v3;v5=
Qnil;v6=
Qnil;v7=
Qnil;v8=dispatch4(bodystmt,v4,v5,v6,v7);(yyvsp[-2].val)=v8;}
7673 {
VALUE v1,v2,v3,v4,v5,v6;v1=AREF((yyvsp[-5].val), 0);v2=AREF((yyvsp[-5].val), 1);v3=AREF((yyvsp[-5].val), 2);v4=(yyvsp[-4].val);v5=(yyvsp[-2].val);v6=dispatch5(defs,v1,v2,v3,v4,v5);(yyval.val)=v6;}
7676 #line 7672 "ripper.c"
7680 #line 1713 "ripper.y"
7683 rb_backref_error(p, (yyvsp[-3].val));
7684 (yyval.val) = NEW_BEGIN(0, &(yyloc));
7686 {
VALUE v1,v2,v3;v1=var_field(p, (yyvsp[-3].val));v2=(yyvsp[0].val);v3=dispatch2(assign,v1,v2);(yyval.val)=backref_error(p, RNODE((yyvsp[-3].val)), v3);}ripper_error(p);
7688 #line 7684 "ripper.c"
7692 #line 1723 "ripper.y"
7694 value_expr((yyvsp[0].val));
7695 (yyval.val) = (yyvsp[0].val);
7697 #line 7693 "ripper.c"
7701 #line 1728 "ripper.y"
7704 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7705 value_expr((yyvsp[-2].val));
7706 (yyval.val) = NEW_RESCUE((yyvsp[-2].val), NEW_RESBODY(0, remove_begin((yyvsp[0].val)), 0, &loc), 0, &(yyloc));
7708 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);(yyval.val)=v3;}
7710 #line 7706 "ripper.c"
7714 #line 1741 "ripper.y"
7716 (yyval.val) = logop(p, idAND, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7718 #line 7714 "ripper.c"
7722 #line 1745 "ripper.y"
7724 (yyval.val) = logop(p, idOR, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7726 #line 7722 "ripper.c"
7730 #line 1749 "ripper.y"
7732 (yyval.val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
7734 #line 7730 "ripper.c"
7738 #line 1753 "ripper.y"
7740 (yyval.val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
7742 #line 7738 "ripper.c"
7746 #line 1757 "ripper.y"
7748 value_expr((yyvsp[-1].val));
7749 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
7750 p->command_start = FALSE;
7751 (yyvsp[0].ctxt) = p->ctxt;
7752 p->ctxt.in_kwarg = 1;
7753 (yyval.tbl) = push_pvtbl(p);
7755 #line 7751 "ripper.c"
7759 #line 1765 "ripper.y"
7761 (yyval.tbl) = push_pktbl(p);
7763 #line 7759 "ripper.c"
7767 #line 1769 "ripper.y"
7769 pop_pktbl(p, (yyvsp[-1].tbl));
7770 pop_pvtbl(p, (yyvsp[-2].tbl));
7771 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
7773 (yyval.val) = NEW_CASE3((yyvsp[-4].val), NEW_IN((yyvsp[0].val), 0, 0, &(yylsp[0])), &(yyloc));
7775 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[0].val);v2=
Qnil;v3=
Qnil;v4=dispatch3(in,v1,v2,v3);v5=(yyvsp[-4].val);v6=v4;v7=dispatch2(
case,v5,v6);(yyval.val)=v7;}
7777 #line 7773 "ripper.c"
7781 #line 1779 "ripper.y"
7783 value_expr((yyvsp[-1].val));
7784 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
7785 p->command_start = FALSE;
7786 (yyvsp[0].ctxt) = p->ctxt;
7787 p->ctxt.in_kwarg = 1;
7788 (yyval.tbl) = push_pvtbl(p);
7790 #line 7786 "ripper.c"
7794 #line 1787 "ripper.y"
7796 (yyval.tbl) = push_pktbl(p);
7798 #line 7794 "ripper.c"
7802 #line 1791 "ripper.y"
7804 pop_pktbl(p, (yyvsp[-1].tbl));
7805 pop_pvtbl(p, (yyvsp[-2].tbl));
7806 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
7808 (yyval.val) = NEW_CASE3((yyvsp[-4].val), NEW_IN((yyvsp[0].val), NEW_TRUE(&(yylsp[0])), NEW_FALSE(&(yylsp[0])), &(yylsp[0])), &(yyloc));
7810 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[0].val);v2=
Qnil;v3=
Qnil;v4=dispatch3(in,v1,v2,v3);v5=(yyvsp[-4].val);v6=v4;v7=dispatch2(
case,v5,v6);(yyval.val)=v7;}
7812 #line 7808 "ripper.c"
7816 #line 1804 "ripper.y"
7818 ID fname = get_id((yyvsp[0].val));
7819 ID cur_arg = p->cur_arg;
7820 YYSTYPE c = {.ctxt = p->ctxt};
7821 numparam_name(p, fname);
7825 (yyval.node) = NEW_NODE(NODE_SELF, cur_arg, fname, c.val, &(yyloc));
7828 (yyval.val) = NEW_RIPPER(fname, get_value((yyvsp[0].val)), (yyval.val), &NULL_LOC);
7831 #line 7827 "ripper.c"
7835 #line 1821 "ripper.y"
7837 (yyval.val) = (yyvsp[0].val);
7839 (yyval.val) = NEW_NODE(NODE_DEFN, 0, (yyval.val)->nd_mid, (yyval.val), &(yyloc));
7842 #line 7838 "ripper.c"
7846 #line 1830 "ripper.y"
7848 SET_LEX_STATE(EXPR_FNAME);
7849 p->ctxt.in_argdef = 1;
7851 #line 7847 "ripper.c"
7855 #line 1835 "ripper.y"
7857 SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL);
7858 (yyval.val) = (yyvsp[0].val);
7860 (yyval.val) = NEW_NODE(NODE_DEFS, (yyvsp[-3].val), (yyval.val)->nd_mid, (yyval.val), &(yyloc));
7863 add_mark_object(p, ary);
7864 (yyval.node)->nd_rval = ary;
7867 #line 7863 "ripper.c"
7871 #line 1849 "ripper.y"
7873 value_expr((yyvsp[0].val));
7874 (yyval.val) = (yyvsp[0].val);
7876 #line 7872 "ripper.c"
7880 #line 1855 "ripper.y"
7882 #line 7878 "ripper.c"
7886 #line 1855 "ripper.y"
7888 #line 7884 "ripper.c"
7892 #line 1856 "ripper.y"
7894 (yyval.val) = (yyvsp[-2].val);
7896 #line 7892 "ripper.c"
7900 #line 1867 "ripper.y"
7903 (yyval.val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
7905 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=dispatch3(call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(method_add_arg,v5,v6);(yyval.val)=v7;}
7907 #line 7903 "ripper.c"
7911 #line 1876 "ripper.y"
7913 (yyval.val) = (yyvsp[-1].val);
7915 (yyval.val)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
7916 nd_set_line((yyval.val), (yylsp[-2]).end_pos.lineno);
7919 #line 7915 "ripper.c"
7923 #line 1886 "ripper.y"
7926 (yyval.val) = NEW_FCALL((yyvsp[0].val), 0, &(yyloc));
7927 nd_set_line((yyval.val), p->tokline);
7929 (yyval.val)=(yyvsp[0].val);
7931 #line 7927 "ripper.c"
7935 #line 1896 "ripper.y"
7938 (yyvsp[-1].val)->nd_args = (yyvsp[0].val);
7939 nd_set_last_loc((yyvsp[-1].val), (yylsp[0]).end_pos);
7940 (yyval.val) = (yyvsp[-1].val);
7942 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(command,v1,v2);(yyval.val)=v3;}
7944 #line 7940 "ripper.c"
7948 #line 1905 "ripper.y"
7951 block_dup_check(p, (yyvsp[-1].val), (yyvsp[0].val));
7952 (yyvsp[-2].val)->nd_args = (yyvsp[-1].val);
7953 (yyval.val) = method_add_block(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
7954 fixpos((yyval.val), (yyvsp[-2].val));
7955 nd_set_last_loc((yyvsp[-2].val), (yylsp[-1]).end_pos);
7957 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(command,v1,v2);v4=v3;v5=(yyvsp[0].val);v6=dispatch2(method_add_block,v4,v5);(yyval.val)=v6;}
7959 #line 7955 "ripper.c"
7963 #line 1916 "ripper.y"
7966 (yyval.val) = new_command_qcall(p, (yyvsp[-2].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), Qnull, &(yylsp[-1]), &(yyloc));
7968 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=(yyvsp[0].val);v5=dispatch4(command_call,v1,v2,v3,v4);(yyval.val)=v5;}
7970 #line 7966 "ripper.c"
7974 #line 1923 "ripper.y"
7977 (yyval.val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
7979 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=(yyvsp[-1].val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].val);v8=dispatch2(method_add_block,v6,v7);(yyval.val)=v8;}
7981 #line 7977 "ripper.c"
7985 #line 1930 "ripper.y"
7988 (yyval.val) = new_command_qcall(p, ID2VAL(idCOLON2), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), Qnull, &(yylsp[-1]), &(yyloc));
7990 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].val);v2=ID2VAL(idCOLON2);v3=(yyvsp[-1].val);v4=(yyvsp[0].val);v5=dispatch4(command_call,v1,v2,v3,v4);(yyval.val)=v5;}
7992 #line 7988 "ripper.c"
7996 #line 1937 "ripper.y"
7999 (yyval.val) = new_command_qcall(p, ID2VAL(idCOLON2), (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
8001 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=ID2VAL(idCOLON2);v3=(yyvsp[-2].val);v4=(yyvsp[-1].val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].val);v8=dispatch2(method_add_block,v6,v7);(yyval.val)=v8;}
8003 #line 7999 "ripper.c"
8007 #line 1944 "ripper.y"
8010 (yyval.val) = NEW_SUPER((yyvsp[0].val), &(yyloc));
8011 fixpos((yyval.val), (yyvsp[0].val));
8013 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(super,v1);(yyval.val)=v2;}
8015 #line 8011 "ripper.c"
8019 #line 1952 "ripper.y"
8022 (yyval.val) = new_yield(p, (yyvsp[0].val), &(yyloc));
8023 fixpos((yyval.val), (yyvsp[0].val));
8025 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(yield,v1);(yyval.val)=v2;}
8027 #line 8023 "ripper.c"
8031 #line 1960 "ripper.y"
8034 (yyval.val) = NEW_RETURN(ret_args(p, (yyvsp[0].val)), &(yyloc));
8036 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(
return,v1);(yyval.val)=v2;}
8038 #line 8034 "ripper.c"
8042 #line 1967 "ripper.y"
8045 (yyval.val) = NEW_BREAK(ret_args(p, (yyvsp[0].val)), &(yyloc));
8047 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(
break,v1);(yyval.val)=v2;}
8049 #line 8045 "ripper.c"
8053 #line 1974 "ripper.y"
8056 (yyval.val) = NEW_NEXT(ret_args(p, (yyvsp[0].val)), &(yyloc));
8058 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(next,v1);(yyval.val)=v2;}
8060 #line 8056 "ripper.c"
8064 #line 1984 "ripper.y"
8067 (yyval.val) = (yyvsp[-1].val);
8069 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(mlhs_paren,v1);(yyval.val)=v2;}
8071 #line 8067 "ripper.c"
8075 #line 1994 "ripper.y"
8078 (yyval.val) = NEW_MASGN(NEW_LIST((yyvsp[-1].val), &(yyloc)), 0, &(yyloc));
8080 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(mlhs_paren,v1);(yyval.val)=v2;}
8082 #line 8078 "ripper.c"
8086 #line 2003 "ripper.y"
8089 (yyval.val) = NEW_MASGN((yyvsp[0].val), 0, &(yyloc));
8091 (yyval.val)=(yyvsp[0].val);
8093 #line 8089 "ripper.c"
8097 #line 2010 "ripper.y"
8100 (yyval.val) = NEW_MASGN(list_append(p, (yyvsp[-1].val),(yyvsp[0].val)), 0, &(yyloc));
8102 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(mlhs_add,v1,v2);(yyval.val)=v3;}
8104 #line 8100 "ripper.c"
8108 #line 2017 "ripper.y"
8111 (yyval.val) = NEW_MASGN((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
8113 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(mlhs_add_star,v1,v2);(yyval.val)=v3;}
8115 #line 8111 "ripper.c"
8119 #line 2024 "ripper.y"
8122 (yyval.val) = NEW_MASGN((yyvsp[-4].val), NEW_POSTARG((yyvsp[-2].val),(yyvsp[0].val),&(yyloc)), &(yyloc));
8124 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=dispatch2(mlhs_add_star,v1,v2);v4=v3;v5=(yyvsp[0].val);v6=dispatch2(mlhs_add_post,v4,v5);(yyval.val)=v6;}
8126 #line 8122 "ripper.c"
8130 #line 2031 "ripper.y"
8133 (yyval.val) = NEW_MASGN((yyvsp[-1].val), NODE_SPECIAL_NO_NAME_REST, &(yyloc));
8135 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=
Qnil;v3=dispatch2(mlhs_add_star,v1,v2);(yyval.val)=v3;}
8137 #line 8133 "ripper.c"
8141 #line 2038 "ripper.y"
8144 (yyval.val) = NEW_MASGN((yyvsp[-3].val), NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].val), &(yyloc)), &(yyloc));
8146 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-3].val);v2=
Qnil;v3=dispatch2(mlhs_add_star,v1,v2);v4=v3;v5=(yyvsp[0].val);v6=dispatch2(mlhs_add_post,v4,v5);(yyval.val)=v6;}
8148 #line 8144 "ripper.c"
8152 #line 2045 "ripper.y"
8155 (yyval.val) = NEW_MASGN(0, (yyvsp[0].val), &(yyloc));
8157 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(mlhs_add_star,v2,v3);(yyval.val)=v4;}
8159 #line 8155 "ripper.c"
8163 #line 2052 "ripper.y"
8166 (yyval.val) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].val),(yyvsp[0].val),&(yyloc)), &(yyloc));
8168 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-2].val);v4=dispatch2(mlhs_add_star,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(mlhs_add_post,v5,v6);(yyval.val)=v7;}
8170 #line 8166 "ripper.c"
8174 #line 2059 "ripper.y"
8177 (yyval.val) = NEW_MASGN(0, NODE_SPECIAL_NO_NAME_REST, &(yyloc));
8179 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=
Qnil;v4=dispatch2(mlhs_add_star,v2,v3);(yyval.val)=v4;}
8181 #line 8177 "ripper.c"
8185 #line 2066 "ripper.y"
8188 (yyval.val) = NEW_MASGN(0, NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].val), &(yyloc)), &(yyloc));
8190 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=dispatch0(mlhs_new);v2=v1;v3=
Qnil;v4=dispatch2(mlhs_add_star,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(mlhs_add_post,v5,v6);(yyval.val)=v7;}
8192 #line 8188 "ripper.c"
8196 #line 2076 "ripper.y"
8199 (yyval.val) = (yyvsp[-1].val);
8201 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(mlhs_paren,v1);(yyval.val)=v2;}
8203 #line 8199 "ripper.c"
8207 #line 2085 "ripper.y"
8210 (yyval.val) = NEW_LIST((yyvsp[-1].val), &(yylsp[-1]));
8212 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-1].val);v4=dispatch2(mlhs_add,v2,v3);(yyval.val)=v4;}
8214 #line 8210 "ripper.c"
8218 #line 2092 "ripper.y"
8221 (yyval.val) = list_append(p, (yyvsp[-2].val), (yyvsp[-1].val));
8223 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(mlhs_add,v1,v2);(yyval.val)=v3;}
8225 #line 8221 "ripper.c"
8229 #line 2101 "ripper.y"
8232 (yyval.val) = NEW_LIST((yyvsp[0].val), &(yyloc));
8234 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(mlhs_add,v2,v3);(yyval.val)=v4;}
8236 #line 8232 "ripper.c"
8240 #line 2108 "ripper.y"
8243 (yyval.val) = list_append(p, (yyvsp[-2].val), (yyvsp[0].val));
8245 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(mlhs_add,v1,v2);(yyval.val)=v3;}
8247 #line 8243 "ripper.c"
8251 #line 2117 "ripper.y"
8254 (yyval.val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
8256 (yyval.val)=assignable(p, var_field(p, (yyvsp[0].val)));
8258 #line 8254 "ripper.c"
8262 #line 2124 "ripper.y"
8265 (yyval.val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
8267 (yyval.val)=assignable(p, var_field(p, (yyvsp[0].val)));
8269 #line 8265 "ripper.c"
8273 #line 2131 "ripper.y"
8276 (yyval.val) = aryset(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
8278 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref_field,v1,v2);(yyval.val)=v3;}
8280 #line 8276 "ripper.c"
8284 #line 2138 "ripper.y"
8286 if ((yyvsp[-1].val) == tANDDOT) {
8287 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
8290 (yyval.val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
8292 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(field,v1,v2,v3);(yyval.val)=v4;}
8294 #line 8290 "ripper.c"
8298 #line 2148 "ripper.y"
8301 (yyval.val) = attrset(p, (yyvsp[-2].val), idCOLON2, (yyvsp[0].val), &(yyloc));
8303 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_field,v1,v2);(yyval.val)=v3;}
8305 #line 8301 "ripper.c"
8309 #line 2155 "ripper.y"
8311 if ((yyvsp[-1].val) == tANDDOT) {
8312 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
8315 (yyval.val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
8317 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(field,v1,v2,v3);(yyval.val)=v4;}
8319 #line 8315 "ripper.c"
8323 #line 2165 "ripper.y"
8326 (yyval.val) = const_decl(p, NEW_COLON2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
8328 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_field,v1,v2);(yyval.val)=const_decl(p, v3);}
8330 #line 8326 "ripper.c"
8334 #line 2172 "ripper.y"
8337 (yyval.val) = const_decl(p, NEW_COLON3((yyvsp[0].val), &(yyloc)), &(yyloc));
8339 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(top_const_field,v1);(yyval.val)=const_decl(p, v2);}
8341 #line 8337 "ripper.c"
8345 #line 2179 "ripper.y"
8348 rb_backref_error(p, (yyvsp[0].val));
8349 (yyval.val) = NEW_BEGIN(0, &(yyloc));
8351 (yyval.val)=backref_error(p, RNODE((yyvsp[0].val)), var_field(p, (yyvsp[0].val)));ripper_error(p);
8353 #line 8349 "ripper.c"
8357 #line 2189 "ripper.y"
8360 (yyval.val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
8362 (yyval.val)=assignable(p, var_field(p, (yyvsp[0].val)));
8364 #line 8360 "ripper.c"
8368 #line 2196 "ripper.y"
8371 (yyval.val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
8373 (yyval.val)=assignable(p, var_field(p, (yyvsp[0].val)));
8375 #line 8371 "ripper.c"
8379 #line 2203 "ripper.y"
8382 (yyval.val) = aryset(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
8384 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref_field,v1,v2);(yyval.val)=v3;}
8386 #line 8382 "ripper.c"
8390 #line 2210 "ripper.y"
8393 (yyval.val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
8395 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(field,v1,v2,v3);(yyval.val)=v4;}
8397 #line 8393 "ripper.c"
8401 #line 2217 "ripper.y"
8404 (yyval.val) = attrset(p, (yyvsp[-2].val), idCOLON2, (yyvsp[0].val), &(yyloc));
8406 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=ID2VAL(idCOLON2);v3=(yyvsp[0].val);v4=dispatch3(field,v1,v2,v3);(yyval.val)=v4;}
8408 #line 8404 "ripper.c"
8412 #line 2224 "ripper.y"
8415 (yyval.val) = attrset(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
8417 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=(yyvsp[0].val);v4=dispatch3(field,v1,v2,v3);(yyval.val)=v4;}
8419 #line 8415 "ripper.c"
8423 #line 2231 "ripper.y"
8426 (yyval.val) = const_decl(p, NEW_COLON2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
8428 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_field,v1,v2);(yyval.val)=const_decl(p, v3);}
8430 #line 8426 "ripper.c"
8434 #line 2238 "ripper.y"
8437 (yyval.val) = const_decl(p, NEW_COLON3((yyvsp[0].val), &(yyloc)), &(yyloc));
8439 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(top_const_field,v1);(yyval.val)=const_decl(p, v2);}
8441 #line 8437 "ripper.c"
8445 #line 2245 "ripper.y"
8448 rb_backref_error(p, (yyvsp[0].val));
8449 (yyval.val) = NEW_BEGIN(0, &(yyloc));
8451 (yyval.val)=backref_error(p, RNODE((yyvsp[0].val)), var_field(p, (yyvsp[0].val)));ripper_error(p);
8453 #line 8449 "ripper.c"
8457 #line 2255 "ripper.y"
8459 static const char mesg[] =
"class/module name must be CONSTANT";
8461 yyerror1(&(yylsp[0]), mesg);
8463 {
VALUE v1,v2,v3;v1=ERR_MESG();v2=(yyvsp[0].val);v3=dispatch2(class_name_error,v1,v2);(yyval.val)=v3;}ripper_error(p);
8465 #line 8461 "ripper.c"
8469 #line 2266 "ripper.y"
8472 (yyval.val) = NEW_COLON3((yyvsp[0].val), &(yyloc));
8474 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(top_const_ref,v1);(yyval.val)=v2;}
8476 #line 8472 "ripper.c"
8480 #line 2273 "ripper.y"
8483 (yyval.val) = NEW_COLON2(0, (yyval.val), &(yyloc));
8485 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(const_ref,v1);(yyval.val)=v2;}
8487 #line 8483 "ripper.c"
8491 #line 2280 "ripper.y"
8494 (yyval.val) = NEW_COLON2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
8496 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_ref,v1,v2);(yyval.val)=v3;}
8498 #line 8494 "ripper.c"
8502 #line 2292 "ripper.y"
8504 SET_LEX_STATE(EXPR_ENDFN);
8505 (yyval.val) = (yyvsp[0].val);
8507 #line 8503 "ripper.c"
8511 #line 2300 "ripper.y"
8514 (yyval.val) = NEW_LIT(
ID2SYM((yyvsp[0].val)), &(yyloc));
8516 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(symbol_literal,v1);(yyval.val)=v2;}
8518 #line 8514 "ripper.c"
8522 #line 2310 "ripper.y"
8525 (yyval.val) = NEW_UNDEF((yyvsp[0].val), &(yyloc));
8527 (yyval.val)=
rb_ary_new3(1, get_value((yyvsp[0].val)));
8529 #line 8525 "ripper.c"
8533 #line 2316 "ripper.y"
8534 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
8535 #line 8531 "ripper.c"
8539 #line 2317 "ripper.y"
8542 NODE *undef = NEW_UNDEF((yyvsp[0].val), &(yylsp[0]));
8543 (yyval.val) = block_append(p, (yyvsp[-3].val), undef);
8545 (yyval.val)=
rb_ary_push((yyvsp[-3].val), get_value((yyvsp[0].val)));
8547 #line 8543 "ripper.c"
8551 #line 2326 "ripper.y"
8552 { ifndef_ripper((yyval.val) =
'|'); }
8553 #line 8549 "ripper.c"
8557 #line 2327 "ripper.y"
8558 { ifndef_ripper((yyval.val) =
'^'); }
8559 #line 8555 "ripper.c"
8563 #line 2328 "ripper.y"
8564 { ifndef_ripper((yyval.val) =
'&'); }
8565 #line 8561 "ripper.c"
8569 #line 2329 "ripper.y"
8570 { ifndef_ripper((yyval.val) = tCMP); }
8571 #line 8567 "ripper.c"
8575 #line 2330 "ripper.y"
8576 { ifndef_ripper((yyval.val) = tEQ); }
8577 #line 8573 "ripper.c"
8581 #line 2331 "ripper.y"
8582 { ifndef_ripper((yyval.val) = tEQQ); }
8583 #line 8579 "ripper.c"
8587 #line 2332 "ripper.y"
8588 { ifndef_ripper((yyval.val) = tMATCH); }
8589 #line 8585 "ripper.c"
8593 #line 2333 "ripper.y"
8594 { ifndef_ripper((yyval.val) = tNMATCH); }
8595 #line 8591 "ripper.c"
8599 #line 2334 "ripper.y"
8600 { ifndef_ripper((yyval.val) =
'>'); }
8601 #line 8597 "ripper.c"
8605 #line 2335 "ripper.y"
8606 { ifndef_ripper((yyval.val) = tGEQ); }
8607 #line 8603 "ripper.c"
8611 #line 2336 "ripper.y"
8612 { ifndef_ripper((yyval.val) =
'<'); }
8613 #line 8609 "ripper.c"
8617 #line 2337 "ripper.y"
8618 { ifndef_ripper((yyval.val) = tLEQ); }
8619 #line 8615 "ripper.c"
8623 #line 2338 "ripper.y"
8624 { ifndef_ripper((yyval.val) = tNEQ); }
8625 #line 8621 "ripper.c"
8629 #line 2339 "ripper.y"
8630 { ifndef_ripper((yyval.val) = tLSHFT); }
8631 #line 8627 "ripper.c"
8635 #line 2340 "ripper.y"
8636 { ifndef_ripper((yyval.val) = tRSHFT); }
8637 #line 8633 "ripper.c"
8641 #line 2341 "ripper.y"
8642 { ifndef_ripper((yyval.val) =
'+'); }
8643 #line 8639 "ripper.c"
8647 #line 2342 "ripper.y"
8648 { ifndef_ripper((yyval.val) =
'-'); }
8649 #line 8645 "ripper.c"
8653 #line 2343 "ripper.y"
8654 { ifndef_ripper((yyval.val) =
'*'); }
8655 #line 8651 "ripper.c"
8659 #line 2344 "ripper.y"
8660 { ifndef_ripper((yyval.val) =
'*'); }
8661 #line 8657 "ripper.c"
8665 #line 2345 "ripper.y"
8666 { ifndef_ripper((yyval.val) =
'/'); }
8667 #line 8663 "ripper.c"
8671 #line 2346 "ripper.y"
8672 { ifndef_ripper((yyval.val) =
'%'); }
8673 #line 8669 "ripper.c"
8677 #line 2347 "ripper.y"
8678 { ifndef_ripper((yyval.val) = tPOW); }
8679 #line 8675 "ripper.c"
8683 #line 2348 "ripper.y"
8684 { ifndef_ripper((yyval.val) = tDSTAR); }
8685 #line 8681 "ripper.c"
8689 #line 2349 "ripper.y"
8690 { ifndef_ripper((yyval.val) =
'!'); }
8691 #line 8687 "ripper.c"
8695 #line 2350 "ripper.y"
8696 { ifndef_ripper((yyval.val) =
'~'); }
8697 #line 8693 "ripper.c"
8701 #line 2351 "ripper.y"
8702 { ifndef_ripper((yyval.val) = tUPLUS); }
8703 #line 8699 "ripper.c"
8707 #line 2352 "ripper.y"
8708 { ifndef_ripper((yyval.val) = tUMINUS); }
8709 #line 8705 "ripper.c"
8713 #line 2353 "ripper.y"
8714 { ifndef_ripper((yyval.val) = tAREF); }
8715 #line 8711 "ripper.c"
8719 #line 2354 "ripper.y"
8720 { ifndef_ripper((yyval.val) = tASET); }
8721 #line 8717 "ripper.c"
8725 #line 2355 "ripper.y"
8726 { ifndef_ripper((yyval.val) =
'`'); }
8727 #line 8723 "ripper.c"
8731 #line 2373 "ripper.y"
8734 (yyval.val) = node_assign(p, (yyvsp[-3].val), (yyvsp[0].val), (yyvsp[-1].ctxt), &(yyloc));
8736 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[0].val);v3=dispatch2(assign,v1,v2);(yyval.val)=v3;}
8738 #line 8734 "ripper.c"
8742 #line 2380 "ripper.y"
8745 (yyval.val) = new_op_assign(p, (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[0].val), (yyvsp[-1].ctxt), &(yyloc));
8747 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-3].val);v2=(yyvsp[-2].val);v3=(yyvsp[0].val);v4=dispatch3(opassign,v1,v2,v3);(yyval.val)=v4;}
8749 #line 8745 "ripper.c"
8753 #line 2387 "ripper.y"
8756 (yyval.val) = new_ary_op_assign(p, (yyvsp[-6].val), (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-4]), &(yyloc));
8758 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-6].val);v2=escape_Qundef((yyvsp[-4].val));v3=dispatch2(aref_field,v1,v2);v4=v3;v5=(yyvsp[-2].val);v6=(yyvsp[0].val);v7=dispatch3(opassign,v4,v5,v6);(yyval.val)=v7;}
8760 #line 8756 "ripper.c"
8764 #line 2394 "ripper.y"
8767 (yyval.val) = new_attr_op_assign(p, (yyvsp[-5].val), (yyvsp[-4].val), (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
8769 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-5].val);v2=(yyvsp[-4].val);v3=(yyvsp[-3].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-2].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.val)=v8;}
8771 #line 8767 "ripper.c"
8775 #line 2401 "ripper.y"
8778 (yyval.val) = new_attr_op_assign(p, (yyvsp[-5].val), (yyvsp[-4].val), (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
8780 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-5].val);v2=(yyvsp[-4].val);v3=(yyvsp[-3].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-2].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.val)=v8;}
8782 #line 8778 "ripper.c"
8786 #line 2408 "ripper.y"
8789 (yyval.val) = new_attr_op_assign(p, (yyvsp[-5].val), ID2VAL(idCOLON2), (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
8791 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-5].val);v2=ID2VAL(idCOLON2);v3=(yyvsp[-3].val);v4=dispatch3(field,v1,v2,v3);v5=v4;v6=(yyvsp[-2].val);v7=(yyvsp[0].val);v8=dispatch3(opassign,v5,v6,v7);(yyval.val)=v8;}
8793 #line 8789 "ripper.c"
8797 #line 2415 "ripper.y"
8800 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
8801 (yyval.val) = new_const_op_assign(p, NEW_COLON2((yyvsp[-5].val), (yyvsp[-3].val), &loc), (yyvsp[-2].val), (yyvsp[0].val), (yyvsp[-1].ctxt), &(yyloc));
8803 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-5].val);v2=(yyvsp[-3].val);v3=dispatch2(const_path_field,v1,v2);v4=v3;v5=(yyvsp[-2].val);v6=(yyvsp[0].val);v7=dispatch3(opassign,v4,v5,v6);(yyval.val)=v7;}
8805 #line 8801 "ripper.c"
8809 #line 2423 "ripper.y"
8812 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
8813 (yyval.val) = new_const_op_assign(p, NEW_COLON3((yyvsp[-3].val), &loc), (yyvsp[-2].val), (yyvsp[0].val), (yyvsp[-1].ctxt), &(yyloc));
8815 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-3].val);v2=dispatch1(top_const_field,v1);v3=v2;v4=(yyvsp[-2].val);v5=(yyvsp[0].val);v6=dispatch3(opassign,v3,v4,v5);(yyval.val)=v6;}
8817 #line 8813 "ripper.c"
8821 #line 2431 "ripper.y"
8824 rb_backref_error(p, (yyvsp[-3].val));
8825 (yyval.val) = NEW_BEGIN(0, &(yyloc));
8827 {
VALUE v1,v2,v3,v4;v1=var_field(p, (yyvsp[-3].val));v2=(yyvsp[-2].val);v3=(yyvsp[0].val);v4=dispatch3(opassign,v1,v2,v3);(yyval.val)=backref_error(p, RNODE((yyvsp[-3].val)), v4);}ripper_error(p);
8829 #line 8825 "ripper.c"
8833 #line 2439 "ripper.y"
8836 value_expr((yyvsp[-2].val));
8837 value_expr((yyvsp[0].val));
8838 (yyval.val) = NEW_DOT2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
8840 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(dot2,v1,v2);(yyval.val)=v3;}
8842 #line 8838 "ripper.c"
8846 #line 2448 "ripper.y"
8849 value_expr((yyvsp[-2].val));
8850 value_expr((yyvsp[0].val));
8851 (yyval.val) = NEW_DOT3((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
8853 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(dot3,v1,v2);(yyval.val)=v3;}
8855 #line 8851 "ripper.c"
8859 #line 2457 "ripper.y"
8862 value_expr((yyvsp[-1].val));
8863 (yyval.val) = NEW_DOT2((yyvsp[-1].val), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
8865 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=
Qnil;v3=dispatch2(dot2,v1,v2);(yyval.val)=v3;}
8867 #line 8863 "ripper.c"
8871 #line 2465 "ripper.y"
8874 value_expr((yyvsp[-1].val));
8875 (yyval.val) = NEW_DOT3((yyvsp[-1].val), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
8877 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=
Qnil;v3=dispatch2(dot3,v1,v2);(yyval.val)=v3;}
8879 #line 8875 "ripper.c"
8883 #line 2473 "ripper.y"
8886 value_expr((yyvsp[0].val));
8887 (yyval.val) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].val), &(yyloc));
8889 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].val);v3=dispatch2(dot2,v1,v2);(yyval.val)=v3;}
8891 #line 8887 "ripper.c"
8895 #line 2481 "ripper.y"
8898 value_expr((yyvsp[0].val));
8899 (yyval.val) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].val), &(yyloc));
8901 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].val);v3=dispatch2(dot3,v1,v2);(yyval.val)=v3;}
8903 #line 8899 "ripper.c"
8907 #line 2489 "ripper.y"
8909 (yyval.val) = call_bin_op(p, (yyvsp[-2].val),
'+', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
8911 #line 8907 "ripper.c"
8915 #line 2493 "ripper.y"
8917 (yyval.val) = call_bin_op(p, (yyvsp[-2].val),
'-', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
8919 #line 8915 "ripper.c"
8923 #line 2497 "ripper.y"
8925 (yyval.val) = call_bin_op(p, (yyvsp[-2].val),
'*', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
8927 #line 8923 "ripper.c"
8931 #line 2501 "ripper.y"
8933 (yyval.val) = call_bin_op(p, (yyvsp[-2].val),
'/', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
8935 #line 8931 "ripper.c"
8939 #line 2505 "ripper.y"
8941 (yyval.val) = call_bin_op(p, (yyvsp[-2].val),
'%', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
8943 #line 8939 "ripper.c"
8947 #line 2509 "ripper.y"
8949 (yyval.val) = call_bin_op(p, (yyvsp[-2].val), idPow, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
8951 #line 8947 "ripper.c"
8955 #line 2513 "ripper.y"
8957 (yyval.val) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].val), idPow, (yyvsp[0].val), &(yylsp[-2]), &(yyloc)), idUMinus, &(yylsp[-3]), &(yyloc));
8959 #line 8955 "ripper.c"
8963 #line 2517 "ripper.y"
8965 (yyval.val) = call_uni_op(p, (yyvsp[0].val), idUPlus, &(yylsp[-1]), &(yyloc));
8967 #line 8963 "ripper.c"
8971 #line 2521 "ripper.y"
8973 (yyval.val) = call_uni_op(p, (yyvsp[0].val), idUMinus, &(yylsp[-1]), &(yyloc));
8975 #line 8971 "ripper.c"
8979 #line 2525 "ripper.y"
8981 (yyval.val) = call_bin_op(p, (yyvsp[-2].val),
'|', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
8983 #line 8979 "ripper.c"
8987 #line 2529 "ripper.y"
8989 (yyval.val) = call_bin_op(p, (yyvsp[-2].val),
'^', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
8991 #line 8987 "ripper.c"
8995 #line 2533 "ripper.y"
8997 (yyval.val) = call_bin_op(p, (yyvsp[-2].val),
'&', (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
8999 #line 8995 "ripper.c"
9003 #line 2537 "ripper.y"
9005 (yyval.val) = call_bin_op(p, (yyvsp[-2].val), idCmp, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9007 #line 9003 "ripper.c"
9011 #line 2542 "ripper.y"
9013 (yyval.val) = call_bin_op(p, (yyvsp[-2].val), idEq, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9015 #line 9011 "ripper.c"
9019 #line 2546 "ripper.y"
9021 (yyval.val) = call_bin_op(p, (yyvsp[-2].val), idEqq, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9023 #line 9019 "ripper.c"
9027 #line 2550 "ripper.y"
9029 (yyval.val) = call_bin_op(p, (yyvsp[-2].val), idNeq, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9031 #line 9027 "ripper.c"
9035 #line 2554 "ripper.y"
9037 (yyval.val) = match_op(p, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9039 #line 9035 "ripper.c"
9043 #line 2558 "ripper.y"
9045 (yyval.val) = call_bin_op(p, (yyvsp[-2].val), idNeqTilde, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9047 #line 9043 "ripper.c"
9051 #line 2562 "ripper.y"
9053 (yyval.val) = call_uni_op(p, method_cond(p, (yyvsp[0].val), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
9055 #line 9051 "ripper.c"
9059 #line 2566 "ripper.y"
9061 (yyval.val) = call_uni_op(p, (yyvsp[0].val),
'~', &(yylsp[-1]), &(yyloc));
9063 #line 9059 "ripper.c"
9067 #line 2570 "ripper.y"
9069 (yyval.val) = call_bin_op(p, (yyvsp[-2].val), idLTLT, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9071 #line 9067 "ripper.c"
9075 #line 2574 "ripper.y"
9077 (yyval.val) = call_bin_op(p, (yyvsp[-2].val), idGTGT, (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9079 #line 9075 "ripper.c"
9083 #line 2578 "ripper.y"
9085 (yyval.val) = logop(p, idANDOP, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9087 #line 9083 "ripper.c"
9091 #line 2582 "ripper.y"
9093 (yyval.val) = logop(p, idOROP, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9095 #line 9091 "ripper.c"
9099 #line 2585 "ripper.y"
9100 {p->ctxt.in_defined = 1;}
9101 #line 9097 "ripper.c"
9105 #line 2586 "ripper.y"
9107 p->ctxt.in_defined = 0;
9108 (yyval.val) = new_defined(p, (yyvsp[0].val), &(yyloc));
9110 #line 9106 "ripper.c"
9114 #line 2591 "ripper.y"
9117 value_expr((yyvsp[-5].val));
9118 (yyval.val) = new_if(p, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[0].val), &(yyloc));
9119 fixpos((yyval.val), (yyvsp[-5].val));
9121 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-5].val);v2=(yyvsp[-3].val);v3=(yyvsp[0].val);v4=dispatch3(ifop,v1,v2,v3);(yyval.val)=v4;}
9123 #line 9119 "ripper.c"
9127 #line 2600 "ripper.y"
9129 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
9130 restore_defun(p, (yyvsp[-3].node)->nd_defn);
9132 (yyval.val) = set_defun_body(p, (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
9134 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[0].val);v2=
Qnil;v3=
Qnil;v4=
Qnil;v5=dispatch4(bodystmt,v1,v2,v3,v4);(yyvsp[0].val)=v5;}
9135 {
VALUE v1,v2,v3,v4;v1=get_value((yyvsp[-3].val));v2=(yyvsp[-2].val);v3=(yyvsp[0].val);v4=dispatch3(def,v1,v2,v3);(yyval.val)=v4;}
9138 #line 9134 "ripper.c"
9142 #line 2611 "ripper.y"
9144 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
9145 restore_defun(p, (yyvsp[-5].node)->nd_defn);
9147 (yyvsp[-2].val) = rescued_expr(p, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
9148 (yyval.val) = set_defun_body(p, (yyvsp[-5].val), (yyvsp[-4].val), (yyvsp[-2].val), &(yyloc));
9150 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);v4=v3;v5=
Qnil;v6=
Qnil;v7=
Qnil;v8=dispatch4(bodystmt,v4,v5,v6,v7);(yyvsp[-2].val)=v8;}
9151 {
VALUE v1,v2,v3,v4;v1=get_value((yyvsp[-5].val));v2=(yyvsp[-4].val);v3=(yyvsp[-2].val);v4=dispatch3(def,v1,v2,v3);(yyval.val)=v4;}
9154 #line 9150 "ripper.c"
9158 #line 2623 "ripper.y"
9160 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
9161 restore_defun(p, (yyvsp[-3].node)->nd_defn);
9163 (yyval.val) = set_defun_body(p, (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
9165 (yyvsp[-3].val) = get_value((yyvsp[-3].val));
9167 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[0].val);v2=
Qnil;v3=
Qnil;v4=
Qnil;v5=dispatch4(bodystmt,v1,v2,v3,v4);(yyvsp[0].val)=v5;}
9168 {
VALUE v1,v2,v3,v4,v5,v6;v1=AREF((yyvsp[-3].val), 0);v2=AREF((yyvsp[-3].val), 1);v3=AREF((yyvsp[-3].val), 2);v4=(yyvsp[-2].val);v5=(yyvsp[0].val);v6=dispatch5(defs,v1,v2,v3,v4,v5);(yyval.val)=v6;}
9171 #line 9167 "ripper.c"
9175 #line 2636 "ripper.y"
9177 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
9178 restore_defun(p, (yyvsp[-5].node)->nd_defn);
9180 (yyvsp[-2].val) = rescued_expr(p, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
9181 (yyval.val) = set_defun_body(p, (yyvsp[-5].val), (yyvsp[-4].val), (yyvsp[-2].val), &(yyloc));
9183 (yyvsp[-5].val) = get_value((yyvsp[-5].val));
9185 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);v4=v3;v5=
Qnil;v6=
Qnil;v7=
Qnil;v8=dispatch4(bodystmt,v4,v5,v6,v7);(yyvsp[-2].val)=v8;}
9186 {
VALUE v1,v2,v3,v4,v5,v6;v1=AREF((yyvsp[-5].val), 0);v2=AREF((yyvsp[-5].val), 1);v3=AREF((yyvsp[-5].val), 2);v4=(yyvsp[-4].val);v5=(yyvsp[-2].val);v6=dispatch5(defs,v1,v2,v3,v4,v5);(yyval.val)=v6;}
9189 #line 9185 "ripper.c"
9193 #line 2650 "ripper.y"
9195 (yyval.val) = (yyvsp[0].val);
9197 #line 9193 "ripper.c"
9201 #line 2655 "ripper.y"
9202 {(yyval.val) =
'>';}
9203 #line 9199 "ripper.c"
9207 #line 2656 "ripper.y"
9208 {(yyval.val) =
'<';}
9209 #line 9205 "ripper.c"
9213 #line 2657 "ripper.y"
9214 {(yyval.val) = idGE;}
9215 #line 9211 "ripper.c"
9219 #line 2658 "ripper.y"
9220 {(yyval.val) = idLE;}
9221 #line 9217 "ripper.c"
9225 #line 2662 "ripper.y"
9227 (yyval.val) = call_bin_op(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9229 #line 9225 "ripper.c"
9233 #line 2666 "ripper.y"
9235 rb_warning1(
"comparison '%s' after comparison", WARN_ID((yyvsp[-1].val)));
9236 (yyval.val) = call_bin_op(p, (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
9238 #line 9234 "ripper.c"
9242 #line 2673 "ripper.y"
9244 (yyval.ctxt) = p->ctxt;
9246 #line 9242 "ripper.c"
9250 #line 2677 "ripper.y"
9252 (yyval.ctxt) = p->ctxt;
9254 #line 9250 "ripper.c"
9258 #line 2683 "ripper.y"
9260 value_expr((yyvsp[0].val));
9261 (yyval.val) = (yyvsp[0].val);
9263 #line 9259 "ripper.c"
9267 #line 2691 "ripper.y"
9269 (yyval.val) = (yyvsp[-1].val);
9271 #line 9267 "ripper.c"
9275 #line 2695 "ripper.y"
9278 (yyval.val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].val);
9280 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].val);v2=dispatch1(bare_assoc_hash,v1);v3=(yyvsp[-3].val);v4=v2;v5=dispatch2(args_add,v3,v4);(yyval.val)=v5;}
9282 #line 9278 "ripper.c"
9286 #line 2702 "ripper.y"
9289 (yyval.val) = (yyvsp[-1].val) ? NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : 0;
9291 {
VALUE v1,v2,v3,v4,v5,v6;v1=dispatch0(args_new);v2=(yyvsp[-1].val);v3=dispatch1(bare_assoc_hash,v2);v4=v1;v5=v3;v6=dispatch2(args_add,v4,v5);(yyval.val)=v6;}
9293 #line 9289 "ripper.c"
9297 #line 2711 "ripper.y"
9299 value_expr((yyvsp[0].val));
9300 (yyval.val) = (yyvsp[0].val);
9302 #line 9298 "ripper.c"
9306 #line 2716 "ripper.y"
9309 value_expr((yyvsp[-2].val));
9310 (yyval.val) = rescued_expr(p, (yyvsp[-2].val), (yyvsp[0].val), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
9312 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(rescue_mod,v1,v2);(yyval.val)=v3;}
9314 #line 9310 "ripper.c"
9318 #line 2726 "ripper.y"
9321 (yyval.val) = (yyvsp[-1].val);
9323 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(arg_paren,v1);(yyval.val)=v2;}
9325 #line 9321 "ripper.c"
9329 #line 2733 "ripper.y"
9331 if (!check_forwarding_args(p)) {
9332 (yyval.val) = Qnone;
9336 (yyval.val) = new_args_forward_call(p, (yyvsp[-3].val), &(yylsp[-1]), &(yyloc));
9338 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].val);v2=(yyvsp[-1].val);v3=dispatch2(args_add,v1,v2);v4=v3;v5=dispatch1(arg_paren,v4);(yyval.val)=v5;}
9341 #line 9337 "ripper.c"
9345 #line 2745 "ripper.y"
9347 if (!check_forwarding_args(p)) {
9348 (yyval.val) = Qnone;
9352 (yyval.val) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
9354 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(arg_paren,v1);(yyval.val)=v2;}
9357 #line 9353 "ripper.c"
9361 #line 2765 "ripper.y"
9363 (yyval.val) = (yyvsp[-1].val);
9365 #line 9361 "ripper.c"
9369 #line 2769 "ripper.y"
9372 (yyval.val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].val);
9374 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].val);v2=dispatch1(bare_assoc_hash,v1);v3=(yyvsp[-3].val);v4=v2;v5=dispatch2(args_add,v3,v4);(yyval.val)=v5;}
9376 #line 9372 "ripper.c"
9380 #line 2776 "ripper.y"
9383 (yyval.val) = (yyvsp[-1].val) ? NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yylsp[-1])) : 0;
9385 {
VALUE v1,v2,v3,v4,v5,v6;v1=dispatch0(args_new);v2=(yyvsp[-1].val);v3=dispatch1(bare_assoc_hash,v2);v4=v1;v5=v3;v6=dispatch2(args_add,v4,v5);(yyval.val)=v6;}
9387 #line 9383 "ripper.c"
9391 #line 2785 "ripper.y"
9394 value_expr((yyvsp[0].val));
9395 (yyval.val) = NEW_LIST((yyvsp[0].val), &(yyloc));
9397 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add,v2,v3);(yyval.val)=v4;}
9399 #line 9395 "ripper.c"
9403 #line 2793 "ripper.y"
9406 (yyval.val) = arg_blk_pass((yyvsp[-1].val), (yyvsp[0].val));
9408 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(args_add_block,v1,v2);(yyval.val)=v3;}
9410 #line 9406 "ripper.c"
9414 #line 2800 "ripper.y"
9417 (yyval.val) = (yyvsp[-1].val) ? NEW_LIST(new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yylsp[-1])) : 0;
9418 (yyval.val) = arg_blk_pass((yyval.val), (yyvsp[0].val));
9420 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9;v1=dispatch0(args_new);v2=(yyvsp[-1].val);v3=dispatch1(bare_assoc_hash,v2);v4=v1;v5=v3;v6=dispatch2(args_add,v4,v5);v7=v6;v8=(yyvsp[0].val);v9=dispatch2(args_add_block,v7,v8);(yyval.val)=v9;}
9422 #line 9418 "ripper.c"
9426 #line 2808 "ripper.y"
9429 (yyval.val) = (yyvsp[-1].val) ? arg_append(p, (yyvsp[-3].val), new_hash(p, (yyvsp[-1].val), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].val);
9430 (yyval.val) = arg_blk_pass((yyval.val), (yyvsp[0].val));
9432 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-1].val);v2=dispatch1(bare_assoc_hash,v1);v3=(yyvsp[-3].val);v4=v2;v5=dispatch2(args_add,v3,v4);v6=v5;v7=(yyvsp[0].val);v8=dispatch2(args_add_block,v6,v7);(yyval.val)=v8;}
9434 #line 9430 "ripper.c"
9438 #line 2816 "ripper.y"
9439 {{
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add_block,v2,v3);(yyval.val)=v4;}}
9440 #line 9436 "ripper.c"
9444 #line 2819 "ripper.y"
9455 case '(':
case tLPAREN:
case tLPAREN_ARG:
case '[':
case tLBRACK:
9458 if (lookahead) CMDARG_POP();
9460 if (lookahead) CMDARG_PUSH(0);
9462 #line 9458 "ripper.c"
9466 #line 2837 "ripper.y"
9479 if (lookahead) CMDARG_POP();
9481 if (lookahead) CMDARG_PUSH(0);
9482 (yyval.val) = (yyvsp[0].val);
9484 #line 9480 "ripper.c"
9488 #line 2857 "ripper.y"
9491 (yyval.val) = NEW_BLOCK_PASS((yyvsp[0].val), &(yyloc));
9493 (yyval.val)=(yyvsp[0].val);
9495 #line 9491 "ripper.c"
9499 #line 2864 "ripper.y"
9502 if (!local_id(p, ANON_BLOCK_ID)) {
9503 compile_error(p,
"no anonymous block parameter");
9505 (yyval.val) = NEW_BLOCK_PASS(NEW_LVAR(ANON_BLOCK_ID, &(yylsp[0])), &(yyloc));
9510 #line 9506 "ripper.c"
9514 #line 2877 "ripper.y"
9516 (yyval.val) = (yyvsp[0].val);
9518 #line 9514 "ripper.c"
9522 #line 2881 "ripper.y"
9526 #line 9522 "ripper.c"
9530 #line 2888 "ripper.y"
9533 (yyval.val) = NEW_LIST((yyvsp[0].val), &(yyloc));
9535 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add,v2,v3);(yyval.val)=v4;}
9537 #line 9533 "ripper.c"
9541 #line 2895 "ripper.y"
9544 (yyval.val) = NEW_SPLAT((yyvsp[0].val), &(yyloc));
9546 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add_star,v2,v3);(yyval.val)=v4;}
9548 #line 9544 "ripper.c"
9552 #line 2902 "ripper.y"
9555 (yyval.val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
9557 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(args_add,v1,v2);(yyval.val)=v3;}
9559 #line 9555 "ripper.c"
9563 #line 2909 "ripper.y"
9566 (yyval.val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].val), &(yyloc));
9568 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[0].val);v3=dispatch2(args_add_star,v1,v2);(yyval.val)=v3;}
9570 #line 9566 "ripper.c"
9574 #line 2924 "ripper.y"
9577 (yyval.val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
9579 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-2].val);v2=dispatch1(mrhs_new_from_args,v1);v3=v2;v4=(yyvsp[0].val);v5=dispatch2(mrhs_add,v3,v4);(yyval.val)=v5;}
9581 #line 9577 "ripper.c"
9585 #line 2931 "ripper.y"
9588 (yyval.val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].val), &(yyloc));
9590 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-3].val);v2=dispatch1(mrhs_new_from_args,v1);v3=v2;v4=(yyvsp[0].val);v5=dispatch2(mrhs_add_star,v3,v4);(yyval.val)=v5;}
9592 #line 9588 "ripper.c"
9596 #line 2938 "ripper.y"
9599 (yyval.val) = NEW_SPLAT((yyvsp[0].val), &(yyloc));
9601 {
VALUE v1,v2,v3,v4;v1=dispatch0(mrhs_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(mrhs_add_star,v2,v3);(yyval.val)=v4;}
9603 #line 9599 "ripper.c"
9607 #line 2957 "ripper.y"
9610 (yyval.val) = NEW_FCALL((yyvsp[0].val), 0, &(yyloc));
9612 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[0].val);v2=dispatch1(fcall,v1);v3=dispatch0(args_new);v4=v2;v5=v3;v6=dispatch2(method_add_arg,v4,v5);(yyval.val)=v6;}
9614 #line 9610 "ripper.c"
9618 #line 2964 "ripper.y"
9622 #line 9618 "ripper.c"
9626 #line 2969 "ripper.y"
9630 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
9631 (yyval.val) = NEW_BEGIN((yyvsp[-1].val), &(yyloc));
9632 nd_set_line((yyval.val), (yylsp[-3]).end_pos.lineno);
9634 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(begin,v1);(yyval.val)=v2;}
9636 #line 9632 "ripper.c"
9640 #line 2978 "ripper.y"
9641 {SET_LEX_STATE(EXPR_ENDARG);}
9642 #line 9638 "ripper.c"
9646 #line 2979 "ripper.y"
9649 (yyval.val) = NEW_BEGIN(0, &(yyloc));
9651 {
VALUE v1,v2;v1=0;v2=dispatch1(paren,v1);(yyval.val)=v2;}
9653 #line 9649 "ripper.c"
9657 #line 2985 "ripper.y"
9658 {SET_LEX_STATE(EXPR_ENDARG);}
9659 #line 9655 "ripper.c"
9663 #line 2986 "ripper.y"
9666 if (nd_type_p((yyvsp[-2].val), NODE_SELF)) (yyvsp[-2].val)->nd_state = 0;
9667 (yyval.val) = (yyvsp[-2].val);
9669 {
VALUE v1,v2;v1=(yyvsp[-2].val);v2=dispatch1(paren,v1);(yyval.val)=v2;}
9671 #line 9667 "ripper.c"
9675 #line 2994 "ripper.y"
9678 if (nd_type_p((yyvsp[-1].val), NODE_SELF)) (yyvsp[-1].val)->nd_state = 0;
9679 (yyval.val) = (yyvsp[-1].val);
9681 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(paren,v1);(yyval.val)=v2;}
9683 #line 9679 "ripper.c"
9687 #line 3002 "ripper.y"
9690 (yyval.val) = NEW_COLON2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
9692 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_ref,v1,v2);(yyval.val)=v3;}
9694 #line 9690 "ripper.c"
9698 #line 3009 "ripper.y"
9701 (yyval.val) = NEW_COLON3((yyvsp[0].val), &(yyloc));
9703 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(top_const_ref,v1);(yyval.val)=v2;}
9705 #line 9701 "ripper.c"
9709 #line 3016 "ripper.y"
9712 (yyval.val) = make_list((yyvsp[-1].val), &(yyloc));
9714 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(array,v1);(yyval.val)=v2;}
9716 #line 9712 "ripper.c"
9720 #line 3023 "ripper.y"
9723 (yyval.val) = new_hash(p, (yyvsp[-1].val), &(yyloc));
9724 (yyval.val)->nd_brace = TRUE;
9726 {
VALUE v1,v2;v1=escape_Qundef((yyvsp[-1].val));v2=dispatch1(hash,v1);(yyval.val)=v2;}
9728 #line 9724 "ripper.c"
9732 #line 3031 "ripper.y"
9735 (yyval.val) = NEW_RETURN(0, &(yyloc));
9737 {
VALUE v1;v1=dispatch0(return0);(yyval.val)=v1;}
9739 #line 9735 "ripper.c"
9743 #line 3038 "ripper.y"
9746 (yyval.val) = new_yield(p, (yyvsp[-1].val), &(yyloc));
9748 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-1].val);v2=dispatch1(paren,v1);v3=v2;v4=dispatch1(yield,v3);(yyval.val)=v4;}
9750 #line 9746 "ripper.c"
9754 #line 3045 "ripper.y"
9757 (yyval.val) = NEW_YIELD(0, &(yyloc));
9759 {
VALUE v1,v2,v3,v4,v5;v1=dispatch0(args_new);v2=v1;v3=dispatch1(paren,v2);v4=v3;v5=dispatch1(yield,v4);(yyval.val)=v5;}
9761 #line 9757 "ripper.c"
9765 #line 3052 "ripper.y"
9768 (yyval.val) = NEW_YIELD(0, &(yyloc));
9770 {
VALUE v1;v1=dispatch0(yield0);(yyval.val)=v1;}
9772 #line 9768 "ripper.c"
9776 #line 3058 "ripper.y"
9777 {p->ctxt.in_defined = 1;}
9778 #line 9774 "ripper.c"
9782 #line 3059 "ripper.y"
9784 p->ctxt.in_defined = 0;
9785 (yyval.val) = new_defined(p, (yyvsp[-1].val), &(yyloc));
9787 #line 9783 "ripper.c"
9791 #line 3064 "ripper.y"
9793 (yyval.val) = call_uni_op(p, method_cond(p, (yyvsp[-1].val), &(yylsp[-1])), METHOD_NOT, &(yylsp[-3]), &(yyloc));
9795 #line 9791 "ripper.c"
9799 #line 3068 "ripper.y"
9801 (yyval.val) = call_uni_op(p, method_cond(p, new_nil(&(yylsp[-1])), &(yylsp[-1])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
9803 #line 9799 "ripper.c"
9807 #line 3072 "ripper.y"
9810 (yyval.val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9812 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9;v1=(yyvsp[-1].val);v2=dispatch1(fcall,v1);v3=dispatch0(args_new);v4=v2;v5=v3;v6=dispatch2(method_add_arg,v4,v5);v7=v6;v8=(yyvsp[0].val);v9=dispatch2(method_add_block,v7,v8);(yyval.val)=v9;}
9814 #line 9810 "ripper.c"
9818 #line 3080 "ripper.y"
9821 block_dup_check(p, (yyvsp[-1].val)->nd_args, (yyvsp[0].val));
9822 (yyval.val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
9824 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(method_add_block,v1,v2);(yyval.val)=v3;}
9826 #line 9822 "ripper.c"
9830 #line 3092 "ripper.y"
9833 (yyval.val) = new_if(p, (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), &(yyloc));
9834 fixpos((yyval.val), (yyvsp[-4].val));
9836 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=escape_Qundef((yyvsp[-1].val));v4=dispatch3(
if,v1,v2,v3);(yyval.val)=v4;}
9838 #line 9834 "ripper.c"
9842 #line 3103 "ripper.y"
9845 (yyval.val) = new_unless(p, (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), &(yyloc));
9846 fixpos((yyval.val), (yyvsp[-4].val));
9848 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=escape_Qundef((yyvsp[-1].val));v4=dispatch3(unless,v1,v2,v3);(yyval.val)=v4;}
9850 #line 9846 "ripper.c"
9854 #line 3113 "ripper.y"
9857 (yyval.val) = NEW_WHILE(cond(p, (yyvsp[-2].val), &(yylsp[-2])), (yyvsp[-1].val), 1, &(yyloc));
9858 fixpos((yyval.val), (yyvsp[-2].val));
9860 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(
while,v1,v2);(yyval.val)=v3;}
9862 #line 9858 "ripper.c"
9866 #line 3123 "ripper.y"
9869 (yyval.val) = NEW_UNTIL(cond(p, (yyvsp[-2].val), &(yylsp[-2])), (yyvsp[-1].val), 1, &(yyloc));
9870 fixpos((yyval.val), (yyvsp[-2].val));
9872 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(until,v1,v2);(yyval.val)=v3;}
9874 #line 9870 "ripper.c"
9878 #line 3131 "ripper.y"
9880 (yyval.val) = p->case_labels;
9881 p->case_labels =
Qnil;
9883 #line 9879 "ripper.c"
9887 #line 3137 "ripper.y"
9890 p->case_labels = (yyvsp[-2].val);
9892 (yyval.val) = NEW_CASE((yyvsp[-4].val), (yyvsp[-1].val), &(yyloc));
9893 fixpos((yyval.val), (yyvsp[-4].val));
9895 {
VALUE v1,v2,v3;v1=(yyvsp[-4].val);v2=(yyvsp[-1].val);v3=dispatch2(
case,v1,v2);(yyval.val)=v3;}
9897 #line 9893 "ripper.c"
9901 #line 3147 "ripper.y"
9903 (yyval.val) = p->case_labels;
9906 #line 9902 "ripper.c"
9910 #line 3153 "ripper.y"
9913 p->case_labels = (yyvsp[-2].val);
9915 (yyval.val) = NEW_CASE2((yyvsp[-1].val), &(yyloc));
9917 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[-1].val);v3=dispatch2(
case,v1,v2);(yyval.val)=v3;}
9919 #line 9915 "ripper.c"
9923 #line 3164 "ripper.y"
9926 (yyval.val) = NEW_CASE3((yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
9928 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[-1].val);v3=dispatch2(
case,v1,v2);(yyval.val)=v3;}
9930 #line 9926 "ripper.c"
9934 #line 3173 "ripper.y"
9946 ID id = internal_id(p);
9947 NODE *m = NEW_ARGS_AUX(0, 0, &NULL_LOC);
9948 NODE *args, *scope, *internal_var = NEW_DVAR(
id, &(yylsp[-4]));
9952 switch (nd_type((yyvsp[-4].val))) {
9955 (yyvsp[-4].val)->nd_value = internal_var;
9958 m->nd_next = (yyvsp[-4].val);
9961 m->nd_next = node_assign(p, (yyvsp[-4].val), NEW_FOR_MASGN(internal_var, &(yylsp[-4])), NO_LEX_CTXT, &(yylsp[-4]));
9964 m->nd_next = node_assign(p, NEW_MASGN(NEW_LIST((yyvsp[-4].val), &(yylsp[-4])), 0, &(yylsp[-4])), internal_var, NO_LEX_CTXT, &(yylsp[-4]));
9967 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
9968 scope = NEW_NODE(NODE_SCOPE, tbl, (yyvsp[-1].val), args, &(yyloc));
9969 (yyval.val) = NEW_FOR((yyvsp[-2].val), scope, &(yyloc));
9970 fixpos((yyval.val), (yyvsp[-4].val));
9972 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=dispatch3(
for,v1,v2,v3);(yyval.val)=v4;}
9974 #line 9970 "ripper.c"
9978 #line 3213 "ripper.y"
9980 if (p->ctxt.in_def) {
9981 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[-1]));
9982 yyerror1(&loc,
"class definition in method body");
9984 p->ctxt.in_class = 1;
9987 #line 9983 "ripper.c"
9991 #line 3223 "ripper.y"
9994 (yyval.val) = NEW_CLASS((yyvsp[-4].val), (yyvsp[-1].val), (yyvsp[-3].val), &(yyloc));
9995 nd_set_line((yyval.val)->nd_body, (yylsp[0]).end_pos.lineno);
9996 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
9997 nd_set_line((yyval.val), (yylsp[-3]).end_pos.lineno);
9999 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-1].val);v4=dispatch3(
class,v1,v2,v3);(yyval.val)=v4;}
10001 p->ctxt.in_class = (yyvsp[-5].ctxt).in_class;
10002 p->ctxt.shareable_constant_value = (yyvsp[-5].ctxt).shareable_constant_value;
10004 #line 10000 "ripper.c"
10008 #line 3236 "ripper.y"
10010 p->ctxt.in_def = 0;
10011 p->ctxt.in_class = 0;
10014 #line 10010 "ripper.c"
10018 #line 3244 "ripper.y"
10021 (yyval.val) = NEW_SCLASS((yyvsp[-4].val), (yyvsp[-1].val), &(yyloc));
10022 nd_set_line((yyval.val)->nd_body, (yylsp[0]).end_pos.lineno);
10023 set_line_body((yyvsp[-1].val), nd_line((yyvsp[-4].val)));
10024 fixpos((yyval.val), (yyvsp[-4].val));
10026 {
VALUE v1,v2,v3;v1=(yyvsp[-4].val);v2=(yyvsp[-1].val);v3=dispatch2(sclass,v1,v2);(yyval.val)=v3;}
10028 p->ctxt.in_def = (yyvsp[-6].ctxt).in_def;
10029 p->ctxt.in_class = (yyvsp[-6].ctxt).in_class;
10030 p->ctxt.shareable_constant_value = (yyvsp[-6].ctxt).shareable_constant_value;
10032 #line 10028 "ripper.c"
10036 #line 3258 "ripper.y"
10038 if (p->ctxt.in_def) {
10039 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
10040 yyerror1(&loc,
"module definition in method body");
10042 p->ctxt.in_class = 1;
10045 #line 10041 "ripper.c"
10049 #line 3268 "ripper.y"
10052 (yyval.val) = NEW_MODULE((yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
10053 nd_set_line((yyval.val)->nd_body, (yylsp[0]).end_pos.lineno);
10054 set_line_body((yyvsp[-1].val), (yylsp[-3]).end_pos.lineno);
10055 nd_set_line((yyval.val), (yylsp[-3]).end_pos.lineno);
10057 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[-1].val);v3=dispatch2(module,v1,v2);(yyval.val)=v3;}
10059 p->ctxt.in_class = (yyvsp[-4].ctxt).in_class;
10060 p->ctxt.shareable_constant_value = (yyvsp[-4].ctxt).shareable_constant_value;
10062 #line 10058 "ripper.c"
10066 #line 3284 "ripper.y"
10068 restore_defun(p, (yyvsp[-3].node)->nd_defn);
10070 (yyval.val) = set_defun_body(p, (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[-1].val), &(yyloc));
10072 {
VALUE v1,v2,v3,v4;v1=get_value((yyvsp[-3].val));v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=dispatch3(def,v1,v2,v3);(yyval.val)=v4;}
10075 #line 10071 "ripper.c"
10079 #line 3296 "ripper.y"
10081 restore_defun(p, (yyvsp[-3].node)->nd_defn);
10083 (yyval.val) = set_defun_body(p, (yyvsp[-3].val), (yyvsp[-2].val), (yyvsp[-1].val), &(yyloc));
10085 (yyvsp[-3].val) = get_value((yyvsp[-3].val));
10087 {
VALUE v1,v2,v3,v4,v5,v6;v1=AREF((yyvsp[-3].val), 0);v2=AREF((yyvsp[-3].val), 1);v3=AREF((yyvsp[-3].val), 2);v4=(yyvsp[-2].val);v5=(yyvsp[-1].val);v6=dispatch5(defs,v1,v2,v3,v4,v5);(yyval.val)=v6;}
10090 #line 10086 "ripper.c"
10094 #line 3307 "ripper.y"
10097 (yyval.val) = NEW_BREAK(0, &(yyloc));
10099 {
VALUE v1,v2,v3;v1=dispatch0(args_new);v2=v1;v3=dispatch1(
break,v2);(yyval.val)=v3;}
10101 #line 10097 "ripper.c"
10105 #line 3314 "ripper.y"
10108 (yyval.val) = NEW_NEXT(0, &(yyloc));
10110 {
VALUE v1,v2,v3;v1=dispatch0(args_new);v2=v1;v3=dispatch1(next,v2);(yyval.val)=v3;}
10112 #line 10108 "ripper.c"
10116 #line 3321 "ripper.y"
10119 (yyval.val) = NEW_REDO(&(yyloc));
10121 {
VALUE v1;v1=dispatch0(redo);(yyval.val)=v1;}
10123 #line 10119 "ripper.c"
10127 #line 3328 "ripper.y"
10130 (yyval.val) = NEW_RETRY(&(yyloc));
10132 {
VALUE v1;v1=dispatch0(retry);(yyval.val)=v1;}
10134 #line 10130 "ripper.c"
10138 #line 3337 "ripper.y"
10140 value_expr((yyvsp[0].val));
10141 (yyval.val) = (yyvsp[0].val);
10143 #line 10139 "ripper.c"
10147 #line 3344 "ripper.y"
10149 token_info_push(p,
"begin", &(yyloc));
10151 #line 10147 "ripper.c"
10155 #line 3350 "ripper.y"
10158 token_info_push(p,
"if", &(yyloc));
10159 if (p->token_info && p->token_info->nonspc &&
10160 p->token_info->next && !strcmp(p->token_info->next->token,
"else")) {
10161 const char *tok = p->lex.ptok;
10162 const char *beg = p->lex.pbeg + p->token_info->next->beg.column;
10164 while (beg < tok &&
ISSPACE(*beg)) beg++;
10166 p->token_info->nonspc = 0;
10170 #line 10166 "ripper.c"
10174 #line 3367 "ripper.y"
10176 token_info_push(p,
"unless", &(yyloc));
10178 #line 10174 "ripper.c"
10182 #line 3373 "ripper.y"
10184 token_info_push(p,
"while", &(yyloc));
10186 #line 10182 "ripper.c"
10190 #line 3379 "ripper.y"
10192 token_info_push(p,
"until", &(yyloc));
10194 #line 10190 "ripper.c"
10198 #line 3385 "ripper.y"
10200 token_info_push(p,
"case", &(yyloc));
10202 #line 10198 "ripper.c"
10206 #line 3391 "ripper.y"
10208 token_info_push(p,
"for", &(yyloc));
10210 #line 10206 "ripper.c"
10214 #line 3397 "ripper.y"
10216 token_info_push(p,
"class", &(yyloc));
10217 (yyval.ctxt) = p->ctxt;
10219 #line 10215 "ripper.c"
10223 #line 3404 "ripper.y"
10225 token_info_push(p,
"module", &(yyloc));
10226 (yyval.ctxt) = p->ctxt;
10228 #line 10224 "ripper.c"
10232 #line 3411 "ripper.y"
10234 token_info_push(p,
"def", &(yyloc));
10235 p->ctxt.in_argdef = 1;
10237 #line 10233 "ripper.c"
10241 #line 3418 "ripper.y"
10243 token_info_push(p,
"do", &(yyloc));
10245 #line 10241 "ripper.c"
10249 #line 3424 "ripper.y"
10251 token_info_push(p,
"do", &(yyloc));
10253 #line 10249 "ripper.c"
10257 #line 3430 "ripper.y"
10259 token_info_warn(p,
"rescue", p->token_info, 1, &(yyloc));
10261 #line 10257 "ripper.c"
10265 #line 3436 "ripper.y"
10267 token_info_warn(p,
"ensure", p->token_info, 1, &(yyloc));
10269 #line 10265 "ripper.c"
10273 #line 3442 "ripper.y"
10275 token_info_warn(p,
"when", p->token_info, 0, &(yyloc));
10277 #line 10273 "ripper.c"
10281 #line 3448 "ripper.y"
10284 int same = ptinfo_beg && strcmp(ptinfo_beg->token,
"case") != 0;
10285 token_info_warn(p,
"else", p->token_info, same, &(yyloc));
10288 e.next = ptinfo_beg->next;
10290 token_info_setup(&e, p->lex.pbeg, &(yyloc));
10291 if (!e.nonspc) *ptinfo_beg = e;
10294 #line 10290 "ripper.c"
10298 #line 3463 "ripper.y"
10301 token_info_warn(p,
"elsif", p->token_info, 1, &(yyloc));
10303 #line 10299 "ripper.c"
10307 #line 3470 "ripper.y"
10309 token_info_pop(p,
"end", &(yyloc));
10311 #line 10307 "ripper.c"
10315 #line 3476 "ripper.y"
10317 if (p->ctxt.in_class && !p->ctxt.in_def && !dyna_in_block(p))
10318 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
10320 #line 10316 "ripper.c"
10324 #line 3495 "ripper.y"
10327 (yyval.val) = new_if(p, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10328 fixpos((yyval.val), (yyvsp[-3].val));
10330 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-3].val);v2=(yyvsp[-1].val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(elsif,v1,v2,v3);(yyval.val)=v4;}
10332 #line 10328 "ripper.c"
10336 #line 3506 "ripper.y"
10339 (yyval.val) = (yyvsp[0].val);
10341 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(
else,v1);(yyval.val)=v2;}
10343 #line 10339 "ripper.c"
10347 #line 3519 "ripper.y"
10350 (yyval.val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
10351 mark_lvar_used(p, (yyval.val));
10353 (yyval.val)=assignable(p, (yyvsp[0].val));
10355 #line 10351 "ripper.c"
10359 #line 3527 "ripper.y"
10362 (yyval.val) = (yyvsp[-1].val);
10364 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(mlhs_paren,v1);(yyval.val)=v2;}
10366 #line 10362 "ripper.c"
10370 #line 3536 "ripper.y"
10373 (yyval.val) = NEW_LIST((yyvsp[0].val), &(yyloc));
10375 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(mlhs_add,v2,v3);(yyval.val)=v4;}
10377 #line 10373 "ripper.c"
10381 #line 3543 "ripper.y"
10384 (yyval.val) = list_append(p, (yyvsp[-2].val), (yyvsp[0].val));
10386 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(mlhs_add,v1,v2);(yyval.val)=v3;}
10388 #line 10384 "ripper.c"
10392 #line 3552 "ripper.y"
10395 (yyval.val) = NEW_MASGN((yyvsp[0].val), 0, &(yyloc));
10397 (yyval.val)=(yyvsp[0].val);
10399 #line 10395 "ripper.c"
10403 #line 3559 "ripper.y"
10406 (yyval.val) = NEW_MASGN((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
10408 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(mlhs_add_star,v1,v2);(yyval.val)=v3;}
10410 #line 10406 "ripper.c"
10414 #line 3566 "ripper.y"
10417 (yyval.val) = NEW_MASGN((yyvsp[-4].val), NEW_POSTARG((yyvsp[-2].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
10419 {
VALUE v1,v2,v3,v4,v5,v6;v1=(yyvsp[-4].val);v2=(yyvsp[-2].val);v3=dispatch2(mlhs_add_star,v1,v2);v4=v3;v5=(yyvsp[0].val);v6=dispatch2(mlhs_add_post,v4,v5);(yyval.val)=v6;}
10421 #line 10417 "ripper.c"
10425 #line 3573 "ripper.y"
10428 (yyval.val) = NEW_MASGN(0, (yyvsp[0].val), &(yyloc));
10430 {
VALUE v1,v2,v3,v4;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(mlhs_add_star,v2,v3);(yyval.val)=v4;}
10432 #line 10428 "ripper.c"
10436 #line 3580 "ripper.y"
10439 (yyval.val) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
10441 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=dispatch0(mlhs_new);v2=v1;v3=(yyvsp[-2].val);v4=dispatch2(mlhs_add_star,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(mlhs_add_post,v5,v6);(yyval.val)=v7;}
10443 #line 10439 "ripper.c"
10447 #line 3589 "ripper.y"
10450 (yyval.val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
10451 mark_lvar_used(p, (yyval.val));
10453 (yyval.val)=assignable(p, (yyvsp[0].val));
10455 #line 10451 "ripper.c"
10459 #line 3597 "ripper.y"
10462 (yyval.val) = NODE_SPECIAL_NO_NAME_REST;
10466 #line 10462 "ripper.c"
10470 #line 3606 "ripper.y"
10471 {(yyval.val) = ID2VAL(idNil);}
10472 #line 10468 "ripper.c"
10476 #line 3609 "ripper.y"
10477 {p->ctxt.in_argdef = 0;}
10478 #line 10474 "ripper.c"
10482 #line 3612 "ripper.y"
10484 (yyval.val) = new_args_tail(p, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]));
10486 #line 10482 "ripper.c"
10490 #line 3616 "ripper.y"
10492 (yyval.val) = new_args_tail(p, (yyvsp[-1].val), Qnone, (yyvsp[0].val), &(yylsp[-1]));
10494 #line 10490 "ripper.c"
10498 #line 3620 "ripper.y"
10500 (yyval.val) = new_args_tail(p, Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]));
10502 #line 10498 "ripper.c"
10506 #line 3624 "ripper.y"
10508 (yyval.val) = new_args_tail(p, Qnone, Qnone, (yyvsp[0].val), &(yylsp[0]));
10510 #line 10506 "ripper.c"
10514 #line 3630 "ripper.y"
10516 (yyval.val) = (yyvsp[0].val);
10518 #line 10514 "ripper.c"
10522 #line 3634 "ripper.y"
10524 (yyval.val) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
10526 #line 10522 "ripper.c"
10530 #line 3640 "ripper.y"
10534 (yyval.val) = NODE_SPECIAL_EXCESSIVE_COMMA;
10536 {
VALUE v1;v1=dispatch0(excessed_comma);(yyval.val)=v1;}
10538 #line 10534 "ripper.c"
10542 #line 3650 "ripper.y"
10544 (yyval.val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), Qnone, (yyvsp[0].val), &(yyloc));
10546 #line 10542 "ripper.c"
10550 #line 3654 "ripper.y"
10552 (yyval.val) = new_args(p, (yyvsp[-7].val), (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10554 #line 10550 "ripper.c"
10558 #line 3658 "ripper.y"
10560 (yyval.val) = new_args(p, (yyvsp[-3].val), (yyvsp[-1].val), Qnone, Qnone, (yyvsp[0].val), &(yyloc));
10562 #line 10558 "ripper.c"
10566 #line 3662 "ripper.y"
10568 (yyval.val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].val), Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10570 #line 10566 "ripper.c"
10574 #line 3666 "ripper.y"
10576 (yyval.val) = new_args(p, (yyvsp[-3].val), Qnone, (yyvsp[-1].val), Qnone, (yyvsp[0].val), &(yyloc));
10578 #line 10574 "ripper.c"
10582 #line 3670 "ripper.y"
10584 (yyval.val) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
10585 (yyval.val) = new_args(p, (yyvsp[-1].val), Qnone, (yyvsp[0].val), Qnone, (yyval.val), &(yyloc));
10587 #line 10583 "ripper.c"
10591 #line 3675 "ripper.y"
10593 (yyval.val) = new_args(p, (yyvsp[-5].val), Qnone, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10595 #line 10591 "ripper.c"
10599 #line 3679 "ripper.y"
10601 (yyval.val) = new_args(p, (yyvsp[-1].val), Qnone, Qnone, Qnone, (yyvsp[0].val), &(yyloc));
10603 #line 10599 "ripper.c"
10607 #line 3683 "ripper.y"
10609 (yyval.val) = new_args(p, Qnone, (yyvsp[-3].val), (yyvsp[-1].val), Qnone, (yyvsp[0].val), &(yyloc));
10611 #line 10607 "ripper.c"
10615 #line 3687 "ripper.y"
10617 (yyval.val) = new_args(p, Qnone, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10619 #line 10615 "ripper.c"
10623 #line 3691 "ripper.y"
10625 (yyval.val) = new_args(p, Qnone, (yyvsp[-1].val), Qnone, Qnone, (yyvsp[0].val), &(yyloc));
10627 #line 10623 "ripper.c"
10631 #line 3695 "ripper.y"
10633 (yyval.val) = new_args(p, Qnone, (yyvsp[-3].val), Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10635 #line 10631 "ripper.c"
10639 #line 3699 "ripper.y"
10641 (yyval.val) = new_args(p, Qnone, Qnone, (yyvsp[-1].val), Qnone, (yyvsp[0].val), &(yyloc));
10643 #line 10639 "ripper.c"
10647 #line 3703 "ripper.y"
10649 (yyval.val) = new_args(p, Qnone, Qnone, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10651 #line 10647 "ripper.c"
10655 #line 3707 "ripper.y"
10657 (yyval.val) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyvsp[0].val), &(yyloc));
10659 #line 10655 "ripper.c"
10663 #line 3714 "ripper.y"
10665 p->command_start = TRUE;
10667 #line 10663 "ripper.c"
10671 #line 3720 "ripper.y"
10674 p->max_numparam = ORDINAL_PARAM;
10675 p->ctxt.in_argdef = 0;
10679 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8,v9,v10,v11;v1=
Qnil;v2=
Qnil;v3=
Qnil;v4=
Qnil;v5=
Qnil;v6=
Qnil;v7=
Qnil;v8=dispatch7(params,v1,v2,v3,v4,v5,v6,v7);v9=v8;v10=escape_Qundef((yyvsp[-1].val));v11=dispatch2(block_var,v9,v10);(yyval.val)=v11;}
10681 #line 10677 "ripper.c"
10685 #line 3730 "ripper.y"
10688 p->max_numparam = ORDINAL_PARAM;
10689 p->ctxt.in_argdef = 0;
10691 (yyval.val) = (yyvsp[-2].val);
10693 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-2].val));v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(block_var,v1,v2);(yyval.val)=v3;}
10695 #line 10691 "ripper.c"
10699 #line 3743 "ripper.y"
10703 #line 10699 "ripper.c"
10707 #line 3747 "ripper.y"
10712 (yyval.val)=(yyvsp[-1].val);
10714 #line 10710 "ripper.c"
10718 #line 3756 "ripper.y"
10719 {(yyval.val)=
rb_ary_new3(1, get_value((yyvsp[0].val)));}
10720 #line 10716 "ripper.c"
10724 #line 3758 "ripper.y"
10725 {(yyval.val)=
rb_ary_push((yyvsp[-2].val), get_value((yyvsp[0].val)));}
10726 #line 10722 "ripper.c"
10730 #line 3762 "ripper.y"
10732 new_bv(p, get_id((yyvsp[0].val)));
10733 (yyval.val)=get_value((yyvsp[0].val));
10735 #line 10731 "ripper.c"
10739 #line 3767 "ripper.y"
10743 #line 10739 "ripper.c"
10747 #line 3773 "ripper.y"
10749 token_info_push(p,
"->", &(yylsp[0]));
10750 (yyvsp[0].vars) = dyna_push(p);
10751 (yyval.num) = p->lex.lpar_beg;
10752 p->lex.lpar_beg = p->lex.paren_nest;
10754 #line 10750 "ripper.c"
10758 #line 3779 "ripper.y"
10760 (yyval.num) = p->max_numparam;
10761 p->max_numparam = 0;
10763 #line 10759 "ripper.c"
10767 #line 3783 "ripper.y"
10769 (yyval.node) = numparam_push(p);
10771 #line 10767 "ripper.c"
10775 #line 3787 "ripper.y"
10779 #line 10775 "ripper.c"
10783 #line 3791 "ripper.y"
10785 int max_numparam = p->max_numparam;
10786 p->lex.lpar_beg = (yyvsp[-5].num);
10787 p->max_numparam = (yyvsp[-4].num);
10789 (yyvsp[-2].val) = args_with_numbered(p, (yyvsp[-2].val), max_numparam);
10792 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10793 (yyval.val) = NEW_LAMBDA((yyvsp[-2].val), (yyvsp[0].val), &loc);
10794 nd_set_line((yyval.val)->nd_body, (yylsp[0]).end_pos.lineno);
10795 nd_set_line((yyval.val), (yylsp[-2]).end_pos.lineno);
10796 nd_set_first_loc((yyval.val), (yylsp[-6]).beg_pos);
10799 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(lambda,v1,v2);(yyval.val)=v3;}
10800 numparam_pop(p, (yyvsp[-3].node));
10801 dyna_pop(p, (yyvsp[-6].vars));
10803 #line 10799 "ripper.c"
10807 #line 3813 "ripper.y"
10809 p->ctxt.in_argdef = 0;
10811 (yyval.val) = (yyvsp[-2].val);
10812 p->max_numparam = ORDINAL_PARAM;
10814 {
VALUE v1,v2;v1=(yyvsp[-2].val);v2=dispatch1(paren,v1);(yyval.val)=v2;}
10816 #line 10812 "ripper.c"
10820 #line 3822 "ripper.y"
10822 p->ctxt.in_argdef = 0;
10824 if (!args_info_empty_p((yyvsp[0].val)->nd_ainfo))
10825 p->max_numparam = ORDINAL_PARAM;
10827 (yyval.val) = (yyvsp[0].val);
10829 #line 10825 "ripper.c"
10833 #line 3833 "ripper.y"
10835 token_info_pop(p,
"}", &(yylsp[0]));
10836 (yyval.val) = (yyvsp[-1].val);
10838 #line 10834 "ripper.c"
10842 #line 3838 "ripper.y"
10844 (yyval.val) = (yyvsp[-1].val);
10846 #line 10842 "ripper.c"
10850 #line 3844 "ripper.y"
10852 (yyval.val) = (yyvsp[-1].val);
10854 (yyval.val)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10855 nd_set_line((yyval.val), (yylsp[-2]).end_pos.lineno);
10858 #line 10854 "ripper.c"
10862 #line 3854 "ripper.y"
10865 if (nd_type_p((yyvsp[-1].val), NODE_YIELD)) {
10866 compile_error(p,
"block given to yield");
10869 block_dup_check(p, (yyvsp[-1].val)->nd_args, (yyvsp[0].val));
10871 (yyval.val) = method_add_block(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
10872 fixpos((yyval.val), (yyvsp[-1].val));
10874 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(method_add_block,v1,v2);(yyval.val)=v3;}
10876 #line 10872 "ripper.c"
10880 #line 3868 "ripper.y"
10883 (yyval.val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
10885 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=dispatch3(call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=v6==
Qundef ? v5 : dispatch2(method_add_arg,v5,v6);(yyval.val)=v7;}
10887 #line 10883 "ripper.c"
10891 #line 3875 "ripper.y"
10894 (yyval.val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
10896 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=(yyvsp[-1].val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].val);v8=v7==
Qundef ? v6 : dispatch2(method_add_block,v6,v7);(yyval.val)=v8;}
10898 #line 10894 "ripper.c"
10902 #line 3882 "ripper.y"
10905 (yyval.val) = new_command_qcall(p, (yyvsp[-3].val), (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-2]), &(yyloc));
10907 {
VALUE v1,v2,v3,v4,v5,v6,v7,v8;v1=(yyvsp[-4].val);v2=(yyvsp[-3].val);v3=(yyvsp[-2].val);v4=(yyvsp[-1].val);v5=dispatch4(command_call,v1,v2,v3,v4);v6=v5;v7=(yyvsp[0].val);v8=dispatch2(method_add_block,v6,v7);(yyval.val)=v8;}
10909 #line 10905 "ripper.c"
10913 #line 3891 "ripper.y"
10916 (yyval.val) = (yyvsp[-1].val);
10917 (yyval.val)->nd_args = (yyvsp[0].val);
10918 nd_set_last_loc((yyvsp[-1].val), (yylsp[0]).end_pos);
10920 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-1].val);v2=dispatch1(fcall,v1);v3=v2;v4=(yyvsp[0].val);v5=dispatch2(method_add_arg,v3,v4);(yyval.val)=v5;}
10922 #line 10918 "ripper.c"
10926 #line 3900 "ripper.y"
10929 (yyval.val) = new_qcall(p, (yyvsp[-2].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
10930 nd_set_line((yyval.val), (yylsp[-1]).end_pos.lineno);
10932 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].val);v2=(yyvsp[-2].val);v3=(yyvsp[-1].val);v4=dispatch3(call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=v6==
Qundef ? v5 : dispatch2(method_add_arg,v5,v6);(yyval.val)=v7;}
10934 #line 10930 "ripper.c"
10938 #line 3908 "ripper.y"
10941 (yyval.val) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
10942 nd_set_line((yyval.val), (yylsp[-1]).end_pos.lineno);
10944 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-3].val);v2=ID2VAL(idCOLON2);v3=(yyvsp[-1].val);v4=dispatch3(call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(method_add_arg,v5,v6);(yyval.val)=v7;}
10946 #line 10942 "ripper.c"
10950 #line 3916 "ripper.y"
10953 (yyval.val) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-2].val), (yyvsp[0].val), Qnull, &(yylsp[0]), &(yyloc));
10955 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=ID2VAL(idCOLON2);v3=(yyvsp[0].val);v4=dispatch3(call,v1,v2,v3);(yyval.val)=v4;}
10957 #line 10953 "ripper.c"
10961 #line 3923 "ripper.y"
10964 (yyval.val) = new_qcall(p, (yyvsp[-1].val), (yyvsp[-2].val), ID2VAL(idCall), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
10965 nd_set_line((yyval.val), (yylsp[-1]).end_pos.lineno);
10967 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=ID2VAL(idCall);v4=dispatch3(call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(method_add_arg,v5,v6);(yyval.val)=v7;}
10969 #line 10965 "ripper.c"
10973 #line 3931 "ripper.y"
10976 (yyval.val) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-2].val), ID2VAL(idCall), (yyvsp[0].val), &(yylsp[-1]), &(yyloc));
10977 nd_set_line((yyval.val), (yylsp[-1]).end_pos.lineno);
10979 {
VALUE v1,v2,v3,v4,v5,v6,v7;v1=(yyvsp[-2].val);v2=ID2VAL(idCOLON2);v3=ID2VAL(idCall);v4=dispatch3(call,v1,v2,v3);v5=v4;v6=(yyvsp[0].val);v7=dispatch2(method_add_arg,v5,v6);(yyval.val)=v7;}
10981 #line 10977 "ripper.c"
10985 #line 3939 "ripper.y"
10988 (yyval.val) = NEW_SUPER((yyvsp[0].val), &(yyloc));
10990 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(super,v1);(yyval.val)=v2;}
10992 #line 10988 "ripper.c"
10996 #line 3946 "ripper.y"
10999 (yyval.val) = NEW_ZSUPER(&(yyloc));
11001 {
VALUE v1;v1=dispatch0(zsuper);(yyval.val)=v1;}
11003 #line 10999 "ripper.c"
11007 #line 3953 "ripper.y"
11010 if ((yyvsp[-3].val) && nd_type_p((yyvsp[-3].val), NODE_SELF))
11011 (yyval.val) = NEW_FCALL(tAREF, (yyvsp[-1].val), &(yyloc));
11013 (yyval.val) = NEW_CALL((yyvsp[-3].val), tAREF, (yyvsp[-1].val), &(yyloc));
11014 fixpos((yyval.val), (yyvsp[-3].val));
11016 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=escape_Qundef((yyvsp[-1].val));v3=dispatch2(aref,v1,v2);(yyval.val)=v3;}
11018 #line 11014 "ripper.c"
11022 #line 3966 "ripper.y"
11024 (yyval.val) = (yyvsp[-1].val);
11026 (yyval.val)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
11027 nd_set_line((yyval.val), (yylsp[-2]).end_pos.lineno);
11030 #line 11026 "ripper.c"
11034 #line 3974 "ripper.y"
11036 (yyval.val) = (yyvsp[-1].val);
11038 (yyval.val)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
11039 nd_set_line((yyval.val), (yylsp[-2]).end_pos.lineno);
11042 #line 11038 "ripper.c"
11046 #line 3983 "ripper.y"
11047 {(yyval.vars) = dyna_push(p);}
11048 #line 11044 "ripper.c"
11052 #line 3984 "ripper.y"
11054 (yyval.num) = p->max_numparam;
11055 p->max_numparam = 0;
11057 #line 11053 "ripper.c"
11061 #line 3988 "ripper.y"
11063 (yyval.node) = numparam_push(p);
11065 #line 11061 "ripper.c"
11069 #line 3992 "ripper.y"
11071 int max_numparam = p->max_numparam;
11072 p->max_numparam = (yyvsp[-3].num);
11073 (yyvsp[-1].val) = args_with_numbered(p, (yyvsp[-1].val), max_numparam);
11075 (yyval.val) = NEW_ITER((yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11077 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-1].val));v2=(yyvsp[0].val);v3=dispatch2(brace_block,v1,v2);(yyval.val)=v3;}
11078 numparam_pop(p, (yyvsp[-2].node));
11079 dyna_pop(p, (yyvsp[-4].vars));
11081 #line 11077 "ripper.c"
11085 #line 4005 "ripper.y"
11086 {(yyval.vars) = dyna_push(p);}
11087 #line 11083 "ripper.c"
11091 #line 4006 "ripper.y"
11093 (yyval.num) = p->max_numparam;
11094 p->max_numparam = 0;
11096 #line 11092 "ripper.c"
11100 #line 4010 "ripper.y"
11102 (yyval.node) = numparam_push(p);
11105 #line 11101 "ripper.c"
11109 #line 4015 "ripper.y"
11111 int max_numparam = p->max_numparam;
11112 p->max_numparam = (yyvsp[-3].num);
11113 (yyvsp[-1].val) = args_with_numbered(p, (yyvsp[-1].val), max_numparam);
11115 (yyval.val) = NEW_ITER((yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11117 {
VALUE v1,v2,v3;v1=escape_Qundef((yyvsp[-1].val));v2=(yyvsp[0].val);v3=dispatch2(do_block,v1,v2);(yyval.val)=v3;}
11119 numparam_pop(p, (yyvsp[-2].node));
11120 dyna_pop(p, (yyvsp[-4].vars));
11122 #line 11118 "ripper.c"
11126 #line 4030 "ripper.y"
11129 check_literal_when(p, (yyvsp[0].val), &(yylsp[0]));
11130 (yyval.val) = NEW_LIST((yyvsp[0].val), &(yyloc));
11132 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add,v2,v3);(yyval.val)=v4;}
11134 #line 11130 "ripper.c"
11138 #line 4038 "ripper.y"
11141 (yyval.val) = NEW_SPLAT((yyvsp[0].val), &(yyloc));
11143 {
VALUE v1,v2,v3,v4;v1=dispatch0(args_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(args_add_star,v2,v3);(yyval.val)=v4;}
11145 #line 11141 "ripper.c"
11149 #line 4045 "ripper.y"
11152 check_literal_when(p, (yyvsp[0].val), &(yylsp[0]));
11153 (yyval.val) = last_arg_append(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
11155 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(args_add,v1,v2);(yyval.val)=v3;}
11157 #line 11153 "ripper.c"
11161 #line 4053 "ripper.y"
11164 (yyval.val) = rest_arg_append(p, (yyvsp[-3].val), (yyvsp[0].val), &(yyloc));
11166 {
VALUE v1,v2,v3;v1=(yyvsp[-3].val);v2=(yyvsp[0].val);v3=dispatch2(args_add_star,v1,v2);(yyval.val)=v3;}
11168 #line 11164 "ripper.c"
11172 #line 4064 "ripper.y"
11175 (yyval.val) = NEW_WHEN((yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11176 fixpos((yyval.val), (yyvsp[-3].val));
11178 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-3].val);v2=(yyvsp[-1].val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(when,v1,v2,v3);(yyval.val)=v4;}
11180 #line 11176 "ripper.c"
11184 #line 4078 "ripper.y"
11186 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
11187 p->command_start = FALSE;
11188 (yyvsp[0].ctxt) = p->ctxt;
11189 p->ctxt.in_kwarg = 1;
11190 (yyval.tbl) = push_pvtbl(p);
11192 #line 11188 "ripper.c"
11196 #line 4085 "ripper.y"
11198 (yyval.tbl) = push_pktbl(p);
11200 #line 11196 "ripper.c"
11204 #line 4089 "ripper.y"
11206 pop_pktbl(p, (yyvsp[-2].tbl));
11207 pop_pvtbl(p, (yyvsp[-3].tbl));
11208 p->ctxt.in_kwarg = (yyvsp[-4].ctxt).in_kwarg;
11210 #line 11206 "ripper.c"
11214 #line 4096 "ripper.y"
11217 (yyval.val) = NEW_IN((yyvsp[-4].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
11219 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-4].val);v2=(yyvsp[-1].val);v3=escape_Qundef((yyvsp[0].val));v4=dispatch3(in,v1,v2,v3);(yyval.val)=v4;}
11221 #line 11217 "ripper.c"
11225 #line 4110 "ripper.y"
11228 (yyval.val) = new_if(p, (yyvsp[0].val), (yyvsp[-2].val), 0, &(yyloc));
11229 fixpos((yyval.val), (yyvsp[0].val));
11231 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(if_mod,v1,v2);(yyval.val)=v3;}
11233 #line 11229 "ripper.c"
11237 #line 4118 "ripper.y"
11240 (yyval.val) = new_unless(p, (yyvsp[0].val), (yyvsp[-2].val), 0, &(yyloc));
11241 fixpos((yyval.val), (yyvsp[0].val));
11243 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=(yyvsp[-2].val);v3=dispatch2(unless_mod,v1,v2);(yyval.val)=v3;}
11245 #line 11241 "ripper.c"
11249 #line 4129 "ripper.y"
11251 (yyval.val) = new_array_pattern_tail(p, Qnone, 1, 0, Qnone, &(yyloc));
11252 (yyval.val) = new_array_pattern(p, Qnone, get_value((yyvsp[-1].val)), (yyval.val), &(yyloc));
11254 #line 11250 "ripper.c"
11258 #line 4134 "ripper.y"
11260 (yyval.val) = new_array_pattern(p, Qnone, get_value((yyvsp[-2].val)), (yyvsp[0].val), &(yyloc));
11262 nd_set_first_loc((yyval.val), (yylsp[-2]).beg_pos);
11266 #line 11262 "ripper.c"
11270 #line 4142 "ripper.y"
11272 (yyval.val) = new_find_pattern(p, Qnone, (yyvsp[0].val), &(yyloc));
11274 #line 11270 "ripper.c"
11278 #line 4146 "ripper.y"
11280 (yyval.val) = new_array_pattern(p, Qnone, Qnone, (yyvsp[0].val), &(yyloc));
11282 #line 11278 "ripper.c"
11286 #line 4150 "ripper.y"
11288 (yyval.val) = new_hash_pattern(p, Qnone, (yyvsp[0].val), &(yyloc));
11290 #line 11286 "ripper.c"
11294 #line 4159 "ripper.y"
11297 NODE *n = NEW_LIST((yyvsp[-2].val), &(yyloc));
11298 n = list_append(p, n, (yyvsp[0].val));
11299 (yyval.val) = new_hash(p, n, &(yyloc));
11301 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=STATIC_ID2SYM(id_assoc);v3=(yyvsp[0].val);v4=dispatch3(binary,v1,v2,v3);(yyval.val)=v4;}
11303 #line 11299 "ripper.c"
11307 #line 4171 "ripper.y"
11310 (yyval.val) = NEW_NODE(NODE_OR, (yyvsp[-2].val), (yyvsp[0].val), 0, &(yyloc));
11312 {
VALUE v1,v2,v3,v4;v1=(yyvsp[-2].val);v2=STATIC_ID2SYM(idOr);v3=(yyvsp[0].val);v4=dispatch3(binary,v1,v2,v3);(yyval.val)=v4;}
11314 #line 11310 "ripper.c"
11318 #line 4180 "ripper.y"
11319 {(yyval.tbl) = push_pktbl(p);}
11320 #line 11316 "ripper.c"
11324 #line 4181 "ripper.y"
11325 {(yyval.tbl) = push_pktbl(p);}
11326 #line 11322 "ripper.c"
11330 #line 4186 "ripper.y"
11332 pop_pktbl(p, (yyvsp[-2].tbl));
11333 (yyval.val) = new_array_pattern(p, (yyvsp[-3].val), Qnone, (yyvsp[-1].val), &(yyloc));
11335 nd_set_first_loc((yyval.val), (yylsp[-3]).beg_pos);
11339 #line 11335 "ripper.c"
11343 #line 4195 "ripper.y"
11345 pop_pktbl(p, (yyvsp[-2].tbl));
11346 (yyval.val) = new_find_pattern(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
11348 nd_set_first_loc((yyval.val), (yylsp[-3]).beg_pos);
11352 #line 11348 "ripper.c"
11356 #line 4204 "ripper.y"
11358 pop_pktbl(p, (yyvsp[-2].tbl));
11359 (yyval.val) = new_hash_pattern(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
11361 nd_set_first_loc((yyval.val), (yylsp[-3]).beg_pos);
11365 #line 11361 "ripper.c"
11369 #line 4213 "ripper.y"
11371 (yyval.val) = new_array_pattern_tail(p, Qnone, 0, 0, Qnone, &(yyloc));
11372 (yyval.val) = new_array_pattern(p, (yyvsp[-2].val), Qnone, (yyval.val), &(yyloc));
11374 #line 11370 "ripper.c"
11378 #line 4218 "ripper.y"
11380 pop_pktbl(p, (yyvsp[-2].tbl));
11381 (yyval.val) = new_array_pattern(p, (yyvsp[-3].val), Qnone, (yyvsp[-1].val), &(yyloc));
11383 nd_set_first_loc((yyval.val), (yylsp[-3]).beg_pos);
11387 #line 11383 "ripper.c"
11391 #line 4227 "ripper.y"
11393 pop_pktbl(p, (yyvsp[-2].tbl));
11394 (yyval.val) = new_find_pattern(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
11396 nd_set_first_loc((yyval.val), (yylsp[-3]).beg_pos);
11400 #line 11396 "ripper.c"
11404 #line 4236 "ripper.y"
11406 pop_pktbl(p, (yyvsp[-2].tbl));
11407 (yyval.val) = new_hash_pattern(p, (yyvsp[-3].val), (yyvsp[-1].val), &(yyloc));
11409 nd_set_first_loc((yyval.val), (yylsp[-3]).beg_pos);
11413 #line 11409 "ripper.c"
11417 #line 4245 "ripper.y"
11419 (yyval.val) = new_array_pattern_tail(p, Qnone, 0, 0, Qnone, &(yyloc));
11420 (yyval.val) = new_array_pattern(p, (yyvsp[-2].val), Qnone, (yyval.val), &(yyloc));
11422 #line 11418 "ripper.c"
11426 #line 4250 "ripper.y"
11428 (yyval.val) = new_array_pattern(p, Qnone, Qnone, (yyvsp[-1].val), &(yyloc));
11430 #line 11426 "ripper.c"
11434 #line 4254 "ripper.y"
11436 (yyval.val) = new_find_pattern(p, Qnone, (yyvsp[-1].val), &(yyloc));
11438 #line 11434 "ripper.c"
11442 #line 4258 "ripper.y"
11444 (yyval.val) = new_array_pattern_tail(p, Qnone, 0, 0, Qnone, &(yyloc));
11445 (yyval.val) = new_array_pattern(p, Qnone, Qnone, (yyval.val), &(yyloc));
11447 #line 11443 "ripper.c"
11451 #line 4263 "ripper.y"
11453 (yyval.tbl) = push_pktbl(p);
11454 (yyvsp[0].ctxt) = p->ctxt;
11455 p->ctxt.in_kwarg = 0;
11457 #line 11453 "ripper.c"
11461 #line 4269 "ripper.y"
11463 pop_pktbl(p, (yyvsp[-2].tbl));
11464 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
11465 (yyval.val) = new_hash_pattern(p, Qnone, (yyvsp[-1].val), &(yyloc));
11467 #line 11463 "ripper.c"
11471 #line 4275 "ripper.y"
11473 (yyval.val) = new_hash_pattern_tail(p, Qnone, 0, &(yyloc));
11474 (yyval.val) = new_hash_pattern(p, Qnone, (yyval.val), &(yyloc));
11476 #line 11472 "ripper.c"
11480 #line 4279 "ripper.y"
11481 {(yyval.tbl) = push_pktbl(p);}
11482 #line 11478 "ripper.c"
11486 #line 4280 "ripper.y"
11488 pop_pktbl(p, (yyvsp[-2].tbl));
11489 (yyval.val) = (yyvsp[-1].val);
11491 #line 11487 "ripper.c"
11495 #line 4287 "ripper.y"
11498 NODE *pre_args = NEW_LIST((yyvsp[0].val), &(yyloc));
11499 (yyval.val) = new_array_pattern_tail(p, pre_args, 0, 0, Qnone, &(yyloc));
11501 (yyval.val) = new_array_pattern_tail(p,
rb_ary_new_from_args(1, get_value((yyvsp[0].val))), 0, 0, Qnone, &(yyloc));
11504 #line 11500 "ripper.c"
11508 #line 4296 "ripper.y"
11510 (yyval.val) = new_array_pattern_tail(p, (yyvsp[0].val), 1, 0, Qnone, &(yyloc));
11512 #line 11508 "ripper.c"
11516 #line 4300 "ripper.y"
11519 (yyval.val) = new_array_pattern_tail(p, list_concat((yyvsp[-1].val), (yyvsp[0].val)), 0, 0, Qnone, &(yyloc));
11522 (yyval.val) = new_array_pattern_tail(p, pre_args, 0, 0, Qnone, &(yyloc));
11525 #line 11521 "ripper.c"
11529 #line 4309 "ripper.y"
11531 (yyval.val) = new_array_pattern_tail(p, (yyvsp[-2].val), 1, (yyvsp[0].val), Qnone, &(yyloc));
11533 #line 11529 "ripper.c"
11537 #line 4313 "ripper.y"
11539 (yyval.val) = new_array_pattern_tail(p, (yyvsp[-4].val), 1, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
11541 #line 11537 "ripper.c"
11545 #line 4317 "ripper.y"
11547 (yyval.val) = new_array_pattern_tail(p, (yyvsp[-1].val), 1, 0, Qnone, &(yyloc));
11549 #line 11545 "ripper.c"
11553 #line 4321 "ripper.y"
11555 (yyval.val) = new_array_pattern_tail(p, (yyvsp[-3].val), 1, 0, (yyvsp[0].val), &(yyloc));
11557 #line 11553 "ripper.c"
11561 #line 4328 "ripper.y"
11563 (yyval.val) = (yyvsp[-1].val);
11565 #line 11561 "ripper.c"
11569 #line 4332 "ripper.y"
11572 (yyval.val) = list_concat((yyvsp[-2].val), (yyvsp[-1].val));
11574 (yyval.val)=
rb_ary_concat((yyvsp[-2].val), get_value((yyvsp[-1].val)));
11576 #line 11572 "ripper.c"
11580 #line 4341 "ripper.y"
11582 (yyval.val) = new_array_pattern_tail(p, Qnone, 1, (yyvsp[0].val), Qnone, &(yyloc));
11584 #line 11580 "ripper.c"
11588 #line 4345 "ripper.y"
11590 (yyval.val) = new_array_pattern_tail(p, Qnone, 1, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
11592 #line 11588 "ripper.c"
11596 #line 4351 "ripper.y"
11598 (yyval.val) = new_find_pattern_tail(p, (yyvsp[-4].val), (yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
11601 rb_warn0L_experimental(nd_line((yyval.val)),
"Find pattern is experimental, and the behavior may change in future versions of Ruby!");
11603 #line 11599 "ripper.c"
11607 #line 4361 "ripper.y"
11609 (yyval.val) = (yyvsp[0].val);
11611 #line 11607 "ripper.c"
11615 #line 4365 "ripper.y"
11619 #line 11615 "ripper.c"
11623 #line 4372 "ripper.y"
11626 (yyval.val) = list_concat((yyvsp[-2].val), (yyvsp[0].val));
11628 (yyval.val)=
rb_ary_concat((yyvsp[-2].val), get_value((yyvsp[0].val)));
11630 #line 11626 "ripper.c"
11634 #line 4381 "ripper.y"
11637 (yyval.val) = NEW_LIST((yyvsp[0].val), &(yyloc));
11641 #line 11637 "ripper.c"
11645 #line 4390 "ripper.y"
11647 (yyval.val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].val), &(yyloc)), (yyvsp[0].val), &(yyloc));
11649 #line 11645 "ripper.c"
11653 #line 4394 "ripper.y"
11655 (yyval.val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].val), &(yyloc)), 0, &(yyloc));
11657 #line 11653 "ripper.c"
11661 #line 4398 "ripper.y"
11663 (yyval.val) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].val), &(yyloc)), 0, &(yyloc));
11665 #line 11661 "ripper.c"
11669 #line 4402 "ripper.y"
11671 (yyval.val) = new_hash_pattern_tail(p, new_hash(p, Qnone, &(yyloc)), (yyvsp[0].val), &(yyloc));
11673 #line 11669 "ripper.c"
11677 #line 4408 "ripper.y"
11679 #line 11675 "ripper.c"
11683 #line 4410 "ripper.y"
11686 (yyval.val) = list_concat((yyvsp[-2].val), (yyvsp[0].val));
11688 (yyval.val)=
rb_ary_push((yyvsp[-2].val), (yyvsp[0].val));
11690 #line 11686 "ripper.c"
11694 #line 4419 "ripper.y"
11696 error_duplicate_pattern_key(p, get_id((yyvsp[-1].val)), &(yylsp[-1]));
11698 (yyval.val) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[-1].val)), &(yyloc)), &(yyloc)), (yyvsp[0].val));
11702 #line 11698 "ripper.c"
11706 #line 4427 "ripper.y"
11708 error_duplicate_pattern_key(p, get_id((yyvsp[0].val)), &(yylsp[0]));
11709 if ((yyvsp[0].val) && !is_local_id(get_id((yyvsp[0].val)))) {
11710 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
11712 error_duplicate_pattern_variable(p, get_id((yyvsp[0].val)), &(yylsp[0]));
11714 (yyval.val) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[0].val)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].val), 0, &(yyloc)));
11718 #line 11714 "ripper.c"
11722 #line 4442 "ripper.y"
11724 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
11726 if (!(yyvsp[-1].val) || nd_type_p((yyvsp[-1].val), NODE_STR)) {
11727 NODE *node = dsym_node(p, (yyvsp[-1].val), &loc);
11728 (yyval.val) =
SYM2ID(node->nd_lit);
11731 if (ripper_is_node_yylval((yyvsp[-1].val)) && RNODE((yyvsp[-1].val))->nd_cval) {
11732 VALUE label = RNODE((yyvsp[-1].val))->nd_cval;
11733 VALUE rval = RNODE((yyvsp[-1].val))->nd_rval;
11734 (yyval.val) = ripper_new_yylval(p,
rb_intern_str(label), rval, label);
11735 RNODE((yyval.val))->nd_loc = loc;
11739 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
11743 #line 11739 "ripper.c"
11747 #line 4465 "ripper.y"
11749 (yyval.val) = (yyvsp[0].val);
11751 #line 11747 "ripper.c"
11755 #line 4469 "ripper.y"
11759 #line 11755 "ripper.c"
11763 #line 4475 "ripper.y"
11767 #line 11763 "ripper.c"
11771 #line 4481 "ripper.y"
11772 {(yyval.val) = ID2VAL(idNil);}
11773 #line 11769 "ripper.c"
11777 #line 4486 "ripper.y"
11780 value_expr((yyvsp[-2].val));
11781 value_expr((yyvsp[0].val));
11782 (yyval.val) = NEW_DOT2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
11784 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(dot2,v1,v2);(yyval.val)=v3;}
11786 #line 11782 "ripper.c"
11790 #line 4495 "ripper.y"
11793 value_expr((yyvsp[-2].val));
11794 value_expr((yyvsp[0].val));
11795 (yyval.val) = NEW_DOT3((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
11797 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(dot3,v1,v2);(yyval.val)=v3;}
11799 #line 11795 "ripper.c"
11803 #line 4504 "ripper.y"
11806 value_expr((yyvsp[-1].val));
11807 (yyval.val) = NEW_DOT2((yyvsp[-1].val), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
11809 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=
Qnil;v3=dispatch2(dot2,v1,v2);(yyval.val)=v3;}
11811 #line 11807 "ripper.c"
11815 #line 4512 "ripper.y"
11818 value_expr((yyvsp[-1].val));
11819 (yyval.val) = NEW_DOT3((yyvsp[-1].val), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
11821 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=
Qnil;v3=dispatch2(dot3,v1,v2);(yyval.val)=v3;}
11823 #line 11819 "ripper.c"
11827 #line 4523 "ripper.y"
11830 value_expr((yyvsp[0].val));
11831 (yyval.val) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].val), &(yyloc));
11833 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].val);v3=dispatch2(dot2,v1,v2);(yyval.val)=v3;}
11835 #line 11831 "ripper.c"
11839 #line 4531 "ripper.y"
11842 value_expr((yyvsp[0].val));
11843 (yyval.val) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].val), &(yyloc));
11845 {
VALUE v1,v2,v3;v1=
Qnil;v2=(yyvsp[0].val);v3=dispatch2(dot3,v1,v2);(yyval.val)=v3;}
11847 #line 11843 "ripper.c"
11851 #line 4549 "ripper.y"
11854 if (!((yyval.val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.val) = NEW_BEGIN(0, &(yyloc));
11856 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.val)=v2;}
11858 #line 11854 "ripper.c"
11862 #line 4559 "ripper.y"
11865 error_duplicate_pattern_variable(p, (yyvsp[0].val), &(yylsp[0]));
11866 (yyval.val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
11868 (yyval.val)=assignable(p, var_field(p, (yyvsp[0].val)));
11870 #line 11866 "ripper.c"
11874 #line 4569 "ripper.y"
11877 NODE *n = gettable(p, (yyvsp[0].val), &(yyloc));
11878 if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
11879 compile_error(p,
"%"PRIsVALUE
": no such local variable",
rb_id2str((yyvsp[0].val)));
11883 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.val)=v2;}
11885 #line 11881 "ripper.c"
11889 #line 4580 "ripper.y"
11892 if (!((yyval.val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.val) = NEW_BEGIN(0, &(yyloc));
11894 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.val)=v2;}
11896 #line 11892 "ripper.c"
11900 #line 4589 "ripper.y"
11903 (yyval.val) = NEW_BEGIN((yyvsp[-1].val), &(yyloc));
11905 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(begin,v1);(yyval.val)=v2;}
11907 #line 11903 "ripper.c"
11911 #line 4598 "ripper.y"
11914 (yyval.val) = NEW_COLON3((yyvsp[0].val), &(yyloc));
11916 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(top_const_ref,v1);(yyval.val)=v2;}
11918 #line 11914 "ripper.c"
11922 #line 4605 "ripper.y"
11925 (yyval.val) = NEW_COLON2((yyvsp[-2].val), (yyvsp[0].val), &(yyloc));
11927 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(const_path_ref,v1,v2);(yyval.val)=v3;}
11929 #line 11925 "ripper.c"
11933 #line 4612 "ripper.y"
11936 (yyval.val) = gettable(p, (yyvsp[0].val), &(yyloc));
11938 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.val)=v2;}
11940 #line 11936 "ripper.c"
11944 #line 4623 "ripper.y"
11947 (yyval.val) = NEW_RESBODY((yyvsp[-4].val),
11948 (yyvsp[-3].val) ? block_append(p, node_assign(p, (yyvsp[-3].val), NEW_ERRINFO(&(yylsp[-3])), NO_LEX_CTXT, &(yylsp[-3])), (yyvsp[-1].val)) : (yyvsp[-1].val),
11949 (yyvsp[0].val), &(yyloc));
11950 fixpos((yyval.val), (yyvsp[-4].val)?(yyvsp[-4].val):(yyvsp[-1].val));
11952 {
VALUE v1,v2,v3,v4,v5;v1=escape_Qundef((yyvsp[-4].val));v2=escape_Qundef((yyvsp[-3].val));v3=escape_Qundef((yyvsp[-1].val));v4=escape_Qundef((yyvsp[0].val));v5=dispatch4(rescue,v1,v2,v3,v4);(yyval.val)=v5;}
11954 #line 11950 "ripper.c"
11958 #line 4636 "ripper.y"
11961 (yyval.val) = NEW_LIST((yyvsp[0].val), &(yyloc));
11963 (yyval.val)=
rb_ary_new3(1, get_value((yyvsp[0].val)));
11965 #line 11961 "ripper.c"
11969 #line 4643 "ripper.y"
11972 if (!((yyval.val) = splat_array((yyvsp[0].val)))) (yyval.val) = (yyvsp[0].val);
11974 (yyval.val)=(yyvsp[0].val);
11976 #line 11972 "ripper.c"
11980 #line 4653 "ripper.y"
11982 (yyval.val) = (yyvsp[0].val);
11984 #line 11980 "ripper.c"
11988 #line 4660 "ripper.y"
11991 (yyval.val) = (yyvsp[0].val);
11993 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(ensure,v1);(yyval.val)=v2;}
11995 #line 11991 "ripper.c"
11999 #line 4674 "ripper.y"
12002 NODE *node = (yyvsp[0].val);
12004 node = NEW_STR(STR_NEW0(), &(yyloc));
12008 node = evstr2dstr(p, node);
12010 (yyval.val) = node;
12012 (yyval.val)=(yyvsp[0].val);
12014 #line 12010 "ripper.c"
12018 #line 4693 "ripper.y"
12021 (yyval.val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
12023 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(string_concat,v1,v2);(yyval.val)=v3;}
12025 #line 12021 "ripper.c"
12029 #line 4702 "ripper.y"
12032 (yyval.val) = heredoc_dedent(p, (yyvsp[-1].val));
12033 if ((yyval.val)) nd_set_loc((yyval.val), &(yyloc));
12035 {
VALUE v1,v2;v1=heredoc_dedent(p, (yyvsp[-1].val));v2=dispatch1(string_literal,v1);(yyval.val)=v2;}
12037 #line 12033 "ripper.c"
12041 #line 4712 "ripper.y"
12044 (yyval.val) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].val)), &(yyloc));
12046 {
VALUE v1,v2;v1=heredoc_dedent(p, (yyvsp[-1].val));v2=dispatch1(xstring_literal,v1);(yyval.val)=v2;}
12048 #line 12044 "ripper.c"
12052 #line 4721 "ripper.y"
12054 (yyval.val) = new_regexp(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
12056 #line 12052 "ripper.c"
12060 #line 4727 "ripper.y"
12063 (yyval.val) = make_list((yyvsp[-1].val), &(yyloc));
12065 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(array,v1);(yyval.val)=v2;}
12067 #line 12063 "ripper.c"
12071 #line 4736 "ripper.y"
12076 {
VALUE v1;v1=dispatch0(words_new);(yyval.val)=v1;}
12078 #line 12074 "ripper.c"
12082 #line 4743 "ripper.y"
12085 (yyval.val) = list_append(p, (yyvsp[-2].val), evstr2dstr(p, (yyvsp[-1].val)));
12087 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(words_add,v1,v2);(yyval.val)=v3;}
12089 #line 12085 "ripper.c"
12093 #line 4752 "ripper.y"
12094 {{
VALUE v1,v2,v3,v4;v1=dispatch0(word_new);v2=v1;v3=(yyvsp[0].val);v4=dispatch2(word_add,v2,v3);(yyval.val)=v4;}}
12095 #line 12091 "ripper.c"
12099 #line 4754 "ripper.y"
12102 (yyval.val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
12104 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(word_add,v1,v2);(yyval.val)=v3;}
12106 #line 12102 "ripper.c"
12110 #line 4763 "ripper.y"
12113 (yyval.val) = make_list((yyvsp[-1].val), &(yyloc));
12115 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(array,v1);(yyval.val)=v2;}
12117 #line 12113 "ripper.c"
12121 #line 4772 "ripper.y"
12126 {
VALUE v1;v1=dispatch0(symbols_new);(yyval.val)=v1;}
12128 #line 12124 "ripper.c"
12132 #line 4779 "ripper.y"
12135 (yyval.val) = symbol_append(p, (yyvsp[-2].val), evstr2dstr(p, (yyvsp[-1].val)));
12137 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(symbols_add,v1,v2);(yyval.val)=v3;}
12139 #line 12135 "ripper.c"
12143 #line 4788 "ripper.y"
12146 (yyval.val) = make_list((yyvsp[-1].val), &(yyloc));
12148 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(array,v1);(yyval.val)=v2;}
12150 #line 12146 "ripper.c"
12154 #line 4797 "ripper.y"
12157 (yyval.val) = make_list((yyvsp[-1].val), &(yyloc));
12159 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(array,v1);(yyval.val)=v2;}
12161 #line 12157 "ripper.c"
12165 #line 4806 "ripper.y"
12170 {
VALUE v1;v1=dispatch0(qwords_new);(yyval.val)=v1;}
12172 #line 12168 "ripper.c"
12176 #line 4813 "ripper.y"
12179 (yyval.val) = list_append(p, (yyvsp[-2].val), (yyvsp[-1].val));
12181 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(qwords_add,v1,v2);(yyval.val)=v3;}
12183 #line 12179 "ripper.c"
12187 #line 4822 "ripper.y"
12192 {
VALUE v1;v1=dispatch0(qsymbols_new);(yyval.val)=v1;}
12194 #line 12190 "ripper.c"
12198 #line 4829 "ripper.y"
12201 (yyval.val) = symbol_append(p, (yyvsp[-2].val), (yyvsp[-1].val));
12203 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[-1].val);v3=dispatch2(qsymbols_add,v1,v2);(yyval.val)=v3;}
12205 #line 12201 "ripper.c"
12209 #line 4838 "ripper.y"
12214 {
VALUE v1;v1=dispatch0(string_content);(yyval.val)=v1;}
12217 (yyval.val) = ripper_new_yylval(p, 0, (yyval.val), 0);
12220 #line 12216 "ripper.c"
12224 #line 4849 "ripper.y"
12227 (yyval.val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
12229 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(string_add,v1,v2);(yyval.val)=v3;}
12232 if (ripper_is_node_yylval((yyvsp[-1].val)) && ripper_is_node_yylval((yyvsp[0].val)) &&
12233 !RNODE((yyvsp[-1].val))->nd_cval) {
12234 RNODE((yyvsp[-1].val))->nd_cval = RNODE((yyvsp[0].val))->nd_cval;
12235 RNODE((yyvsp[-1].val))->nd_rval = add_mark_object(p, (yyval.val));
12236 (yyval.val) = (yyvsp[-1].val);
12240 #line 12236 "ripper.c"
12244 #line 4867 "ripper.y"
12249 {
VALUE v1;v1=dispatch0(xstring_new);(yyval.val)=v1;}
12251 #line 12247 "ripper.c"
12255 #line 4874 "ripper.y"
12258 (yyval.val) = literal_concat(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
12260 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(xstring_add,v1,v2);(yyval.val)=v3;}
12262 #line 12258 "ripper.c"
12266 #line 4883 "ripper.y"
12271 {
VALUE v1;v1=dispatch0(regexp_new);(yyval.val)=v1;}
12274 (yyval.val) = ripper_new_yylval(p, 0, (yyval.val), 0);
12277 #line 12273 "ripper.c"
12281 #line 4894 "ripper.y"
12284 NODE *head = (yyvsp[-1].val), *tail = (yyvsp[0].val);
12286 (yyval.val) = tail;
12289 (yyval.val) = head;
12292 switch (nd_type(head)) {
12294 nd_set_type(head, NODE_DSTR);
12299 head = list_append(p, NEW_DSTR(
Qnil, &(yyloc)), head);
12302 (yyval.val) = list_append(p, head, tail);
12305 VALUE s1 = 1, s2 = 0, n1 = (yyvsp[-1].val), n2 = (yyvsp[0].val);
12306 if (ripper_is_node_yylval(n1)) {
12307 s1 = RNODE(n1)->nd_cval;
12308 n1 = RNODE(n1)->nd_rval;
12310 if (ripper_is_node_yylval(n2)) {
12311 s2 = RNODE(n2)->nd_cval;
12312 n2 = RNODE(n2)->nd_rval;
12314 (yyval.val) = dispatch2(regexp_add, n1, n2);
12316 (yyval.val) = ripper_new_yylval(p, 0, (yyval.val), s2);
12320 #line 12316 "ripper.c"
12324 #line 4935 "ripper.y"
12325 {(yyval.val)=ripper_new_yylval(p, 0, get_value((yyvsp[0].val)), (yyvsp[0].val));}
12326 #line 12322 "ripper.c"
12330 #line 4937 "ripper.y"
12333 (yyval.strterm) = p->lex.strterm;
12334 p->lex.strterm = 0;
12335 SET_LEX_STATE(EXPR_BEG);
12337 #line 12333 "ripper.c"
12341 #line 4944 "ripper.y"
12343 p->lex.strterm = (yyvsp[-1].strterm);
12345 (yyval.val) = NEW_EVSTR((yyvsp[0].val), &(yyloc));
12346 nd_set_line((yyval.val), (yylsp[0]).end_pos.lineno);
12348 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(string_dvar,v1);(yyval.val)=v2;}
12350 #line 12346 "ripper.c"
12354 #line 4953 "ripper.y"
12359 #line 12355 "ripper.c"
12363 #line 4957 "ripper.y"
12366 (yyval.strterm) = p->lex.strterm;
12367 p->lex.strterm = 0;
12369 #line 12365 "ripper.c"
12373 #line 4962 "ripper.y"
12375 (yyval.num) = p->lex.state;
12376 SET_LEX_STATE(EXPR_BEG);
12378 #line 12374 "ripper.c"
12382 #line 4966 "ripper.y"
12384 (yyval.num) = p->lex.brace_nest;
12385 p->lex.brace_nest = 0;
12387 #line 12383 "ripper.c"
12391 #line 4970 "ripper.y"
12393 (yyval.num) = p->heredoc_indent;
12394 p->heredoc_indent = 0;
12396 #line 12392 "ripper.c"
12400 #line 4975 "ripper.y"
12404 p->lex.strterm = (yyvsp[-5].strterm);
12405 SET_LEX_STATE((yyvsp[-4].num));
12406 p->lex.brace_nest = (yyvsp[-3].num);
12407 p->heredoc_indent = (yyvsp[-2].num);
12408 p->heredoc_line_indent = -1;
12410 if ((yyvsp[-1].val)) (yyvsp[-1].val)->flags &= ~NODE_FL_NEWLINE;
12411 (yyval.val) = new_evstr(p, (yyvsp[-1].val), &(yyloc));
12413 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(string_embexpr,v1);(yyval.val)=v2;}
12415 #line 12411 "ripper.c"
12419 #line 4992 "ripper.y"
12422 (yyval.val) = NEW_GVAR((yyvsp[0].val), &(yyloc));
12424 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.val)=v2;}
12426 #line 12422 "ripper.c"
12430 #line 4999 "ripper.y"
12433 (yyval.val) = NEW_IVAR((yyvsp[0].val), &(yyloc));
12435 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.val)=v2;}
12437 #line 12433 "ripper.c"
12441 #line 5006 "ripper.y"
12444 (yyval.val) = NEW_CVAR((yyvsp[0].val), &(yyloc));
12446 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.val)=v2;}
12448 #line 12444 "ripper.c"
12452 #line 5020 "ripper.y"
12454 SET_LEX_STATE(EXPR_END);
12456 (yyval.val) = NEW_LIT(
ID2SYM((yyvsp[0].val)), &(yyloc));
12458 {
VALUE v1,v2,v3,v4;v1=(yyvsp[0].val);v2=dispatch1(symbol,v1);v3=v2;v4=dispatch1(symbol_literal,v3);(yyval.val)=v4;}
12460 #line 12456 "ripper.c"
12464 #line 5036 "ripper.y"
12466 SET_LEX_STATE(EXPR_END);
12468 (yyval.val) = dsym_node(p, (yyvsp[-1].val), &(yyloc));
12470 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(dyna_symbol,v1);(yyval.val)=v2;}
12472 #line 12468 "ripper.c"
12476 #line 5047 "ripper.y"
12479 (yyval.val) = (yyvsp[0].val);
12480 RB_OBJ_WRITE(p->ast, &(yyval.val)->nd_lit, negate_lit(p, (yyval.val)->nd_lit));
12482 {
VALUE v1,v2,v3;v1=ID2VAL(idUMinus);v2=(yyvsp[0].val);v3=dispatch2(unary,v1,v2);(yyval.val)=v3;}
12484 #line 12480 "ripper.c"
12488 #line 5074 "ripper.y"
12489 {(yyval.val) = KWD2EID(nil, (yyvsp[0].val));}
12490 #line 12486 "ripper.c"
12494 #line 5075 "ripper.y"
12495 {(yyval.val) = KWD2EID(
self, (yyvsp[0].val));}
12496 #line 12492 "ripper.c"
12500 #line 5076 "ripper.y"
12501 {(yyval.val) = KWD2EID(
true, (yyvsp[0].val));}
12502 #line 12498 "ripper.c"
12506 #line 5077 "ripper.y"
12507 {(yyval.val) = KWD2EID(
false, (yyvsp[0].val));}
12508 #line 12504 "ripper.c"
12512 #line 5078 "ripper.y"
12513 {(yyval.val) = KWD2EID(_FILE__, (yyvsp[0].val));}
12514 #line 12510 "ripper.c"
12518 #line 5079 "ripper.y"
12519 {(yyval.val) = KWD2EID(_LINE__, (yyvsp[0].val));}
12520 #line 12516 "ripper.c"
12524 #line 5080 "ripper.y"
12525 {(yyval.val) = KWD2EID(_ENCODING__, (yyvsp[0].val));}
12526 #line 12522 "ripper.c"
12530 #line 5084 "ripper.y"
12533 if (!((yyval.val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.val) = NEW_BEGIN(0, &(yyloc));
12535 if (id_is_var(p, get_id((yyvsp[0].val)))) {
12536 (yyval.val) = dispatch1(var_ref, (yyvsp[0].val));
12539 (yyval.val) = dispatch1(vcall, (yyvsp[0].val));
12543 #line 12539 "ripper.c"
12547 #line 5097 "ripper.y"
12550 if (!((yyval.val) = gettable(p, (yyvsp[0].val), &(yyloc)))) (yyval.val) = NEW_BEGIN(0, &(yyloc));
12552 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(var_ref,v1);(yyval.val)=v2;}
12554 #line 12550 "ripper.c"
12558 #line 5106 "ripper.y"
12561 (yyval.val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
12563 (yyval.val)=assignable(p, var_field(p, (yyvsp[0].val)));
12565 #line 12561 "ripper.c"
12569 #line 5113 "ripper.y"
12572 (yyval.val) = assignable(p, (yyvsp[0].val), 0, &(yyloc));
12574 (yyval.val)=assignable(p, var_field(p, (yyvsp[0].val)));
12576 #line 12572 "ripper.c"
12580 #line 5126 "ripper.y"
12582 SET_LEX_STATE(EXPR_BEG);
12583 p->command_start = TRUE;
12585 #line 12581 "ripper.c"
12589 #line 5131 "ripper.y"
12591 (yyval.val) = (yyvsp[-1].val);
12593 #line 12589 "ripper.c"
12597 #line 5135 "ripper.y"
12604 #line 12600 "ripper.c"
12608 #line 5145 "ripper.y"
12610 p->ctxt.in_argdef = 0;
12611 (yyval.val) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[-1]));
12612 (yyval.val) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyval.val), &(yylsp[-1]));
12614 #line 12610 "ripper.c"
12618 #line 5153 "ripper.y"
12621 (yyval.val) = (yyvsp[-1].val);
12623 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(paren,v1);(yyval.val)=v2;}
12624 SET_LEX_STATE(EXPR_BEG);
12625 p->command_start = TRUE;
12626 p->ctxt.in_argdef = 0;
12628 #line 12624 "ripper.c"
12632 #line 5165 "ripper.y"
12634 (yyval.ctxt) = p->ctxt;
12635 p->ctxt.in_kwarg = 1;
12636 p->ctxt.in_argdef = 1;
12637 SET_LEX_STATE(p->lex.state|EXPR_LABEL);
12639 #line 12635 "ripper.c"
12643 #line 5172 "ripper.y"
12645 p->ctxt.in_kwarg = (yyvsp[-2].ctxt).in_kwarg;
12646 p->ctxt.in_argdef = 0;
12647 (yyval.val) = (yyvsp[-1].val);
12648 SET_LEX_STATE(EXPR_BEG);
12649 p->command_start = TRUE;
12651 #line 12647 "ripper.c"
12655 #line 5182 "ripper.y"
12657 (yyval.val) = new_args_tail(p, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]));
12659 #line 12655 "ripper.c"
12663 #line 5186 "ripper.y"
12665 (yyval.val) = new_args_tail(p, (yyvsp[-1].val), Qnone, (yyvsp[0].val), &(yylsp[-1]));
12667 #line 12663 "ripper.c"
12671 #line 5190 "ripper.y"
12673 (yyval.val) = new_args_tail(p, Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yylsp[-1]));
12675 #line 12671 "ripper.c"
12679 #line 5194 "ripper.y"
12681 (yyval.val) = new_args_tail(p, Qnone, Qnone, (yyvsp[0].val), &(yylsp[0]));
12683 #line 12679 "ripper.c"
12687 #line 5198 "ripper.y"
12689 add_forwarding_args(p);
12690 (yyval.val) = new_args_tail(p, Qnone, (yyvsp[0].val), ID2VAL(idFWD_BLOCK), &(yylsp[0]));
12692 #line 12688 "ripper.c"
12696 #line 5205 "ripper.y"
12698 (yyval.val) = (yyvsp[0].val);
12700 #line 12696 "ripper.c"
12704 #line 5209 "ripper.y"
12706 (yyval.val) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
12708 #line 12704 "ripper.c"
12712 #line 5215 "ripper.y"
12714 (yyval.val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), Qnone, (yyvsp[0].val), &(yyloc));
12716 #line 12712 "ripper.c"
12720 #line 5219 "ripper.y"
12722 (yyval.val) = new_args(p, (yyvsp[-7].val), (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
12724 #line 12720 "ripper.c"
12728 #line 5223 "ripper.y"
12730 (yyval.val) = new_args(p, (yyvsp[-3].val), (yyvsp[-1].val), Qnone, Qnone, (yyvsp[0].val), &(yyloc));
12732 #line 12728 "ripper.c"
12736 #line 5227 "ripper.y"
12738 (yyval.val) = new_args(p, (yyvsp[-5].val), (yyvsp[-3].val), Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
12740 #line 12736 "ripper.c"
12744 #line 5231 "ripper.y"
12746 (yyval.val) = new_args(p, (yyvsp[-3].val), Qnone, (yyvsp[-1].val), Qnone, (yyvsp[0].val), &(yyloc));
12748 #line 12744 "ripper.c"
12752 #line 5235 "ripper.y"
12754 (yyval.val) = new_args(p, (yyvsp[-5].val), Qnone, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
12756 #line 12752 "ripper.c"
12760 #line 5239 "ripper.y"
12762 (yyval.val) = new_args(p, (yyvsp[-1].val), Qnone, Qnone, Qnone, (yyvsp[0].val), &(yyloc));
12764 #line 12760 "ripper.c"
12768 #line 5243 "ripper.y"
12770 (yyval.val) = new_args(p, Qnone, (yyvsp[-3].val), (yyvsp[-1].val), Qnone, (yyvsp[0].val), &(yyloc));
12772 #line 12768 "ripper.c"
12776 #line 5247 "ripper.y"
12778 (yyval.val) = new_args(p, Qnone, (yyvsp[-5].val), (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
12780 #line 12776 "ripper.c"
12784 #line 5251 "ripper.y"
12786 (yyval.val) = new_args(p, Qnone, (yyvsp[-1].val), Qnone, Qnone, (yyvsp[0].val), &(yyloc));
12788 #line 12784 "ripper.c"
12792 #line 5255 "ripper.y"
12794 (yyval.val) = new_args(p, Qnone, (yyvsp[-3].val), Qnone, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
12796 #line 12792 "ripper.c"
12800 #line 5259 "ripper.y"
12802 (yyval.val) = new_args(p, Qnone, Qnone, (yyvsp[-1].val), Qnone, (yyvsp[0].val), &(yyloc));
12804 #line 12800 "ripper.c"
12808 #line 5263 "ripper.y"
12810 (yyval.val) = new_args(p, Qnone, Qnone, (yyvsp[-3].val), (yyvsp[-1].val), (yyvsp[0].val), &(yyloc));
12812 #line 12808 "ripper.c"
12816 #line 5267 "ripper.y"
12818 (yyval.val) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyvsp[0].val), &(yyloc));
12820 #line 12816 "ripper.c"
12824 #line 5271 "ripper.y"
12826 (yyval.val) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
12827 (yyval.val) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyval.val), &(yylsp[0]));
12829 #line 12825 "ripper.c"
12833 #line 5278 "ripper.y"
12836 (yyval.val) = idFWD_KWREST;
12838 {
VALUE v1;v1=dispatch0(args_forward);(yyval.val)=v1;}
12840 #line 12836 "ripper.c"
12844 #line 5287 "ripper.y"
12846 static const char mesg[] =
"formal argument cannot be a constant";
12848 yyerror1(&(yylsp[0]), mesg);
12851 {
VALUE v1,v2,v3;v1=ERR_MESG();v2=(yyvsp[0].val);v3=dispatch2(param_error,v1,v2);(yyval.val)=v3;}ripper_error(p);
12853 #line 12849 "ripper.c"
12857 #line 5296 "ripper.y"
12859 static const char mesg[] =
"formal argument cannot be an instance variable";
12861 yyerror1(&(yylsp[0]), mesg);
12864 {
VALUE v1,v2,v3;v1=ERR_MESG();v2=(yyvsp[0].val);v3=dispatch2(param_error,v1,v2);(yyval.val)=v3;}ripper_error(p);
12866 #line 12862 "ripper.c"
12870 #line 5305 "ripper.y"
12872 static const char mesg[] =
"formal argument cannot be a global variable";
12874 yyerror1(&(yylsp[0]), mesg);
12877 {
VALUE v1,v2,v3;v1=ERR_MESG();v2=(yyvsp[0].val);v3=dispatch2(param_error,v1,v2);(yyval.val)=v3;}ripper_error(p);
12879 #line 12875 "ripper.c"
12883 #line 5314 "ripper.y"
12885 static const char mesg[] =
"formal argument cannot be a class variable";
12887 yyerror1(&(yylsp[0]), mesg);
12890 {
VALUE v1,v2,v3;v1=ERR_MESG();v2=(yyvsp[0].val);v3=dispatch2(param_error,v1,v2);(yyval.val)=v3;}ripper_error(p);
12892 #line 12888 "ripper.c"
12896 #line 5326 "ripper.y"
12898 formal_argument(p, (yyvsp[0].val));
12899 p->max_numparam = ORDINAL_PARAM;
12900 (yyval.val) = (yyvsp[0].val);
12902 #line 12898 "ripper.c"
12906 #line 5334 "ripper.y"
12908 ID id = get_id((yyvsp[0].val));
12911 (yyval.val) = (yyvsp[0].val);
12913 #line 12909 "ripper.c"
12917 #line 5343 "ripper.y"
12921 (yyval.val) = NEW_ARGS_AUX((yyvsp[0].val), 1, &NULL_LOC);
12923 (yyval.val)=get_value((yyvsp[0].val));
12925 #line 12921 "ripper.c"
12929 #line 5351 "ripper.y"
12932 ID tid = internal_id(p);
12934 loc.beg_pos = (yylsp[-1]).beg_pos;
12935 loc.end_pos = (yylsp[-1]).beg_pos;
12937 if (dyna_in_block(p)) {
12938 (yyvsp[-1].val)->nd_value = NEW_DVAR(tid, &loc);
12941 (yyvsp[-1].val)->nd_value = NEW_LVAR(tid, &loc);
12943 (yyval.val) = NEW_ARGS_AUX(tid, 1, &NULL_LOC);
12944 (yyval.val)->nd_next = (yyvsp[-1].val);
12946 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(mlhs_paren,v1);(yyval.val)=v2;}
12948 #line 12944 "ripper.c"
12952 #line 5372 "ripper.y"
12953 {(yyval.val)=
rb_ary_new3(1, get_value((yyvsp[0].val)));}
12954 #line 12950 "ripper.c"
12958 #line 5374 "ripper.y"
12961 (yyval.val) = (yyvsp[-2].val);
12962 (yyval.val)->nd_plen++;
12963 (yyval.val)->nd_next = block_append(p, (yyval.val)->nd_next, (yyvsp[0].val)->nd_next);
12964 rb_discard_node(p, (yyvsp[0].val));
12966 (yyval.val)=
rb_ary_push((yyvsp[-2].val), get_value((yyvsp[0].val)));
12968 #line 12964 "ripper.c"
12972 #line 5387 "ripper.y"
12974 arg_var(p, formal_argument(p, (yyvsp[0].val)));
12975 p->cur_arg = get_id((yyvsp[0].val));
12976 p->max_numparam = ORDINAL_PARAM;
12977 p->ctxt.in_argdef = 0;
12978 (yyval.val) = (yyvsp[0].val);
12980 #line 12976 "ripper.c"
12984 #line 5397 "ripper.y"
12987 p->ctxt.in_argdef = 1;
12989 (yyval.val) = new_kw_arg(p, assignable(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
12991 (yyval.val)=
rb_assoc_new(get_value(assignable(p, (yyvsp[-1].val))), get_value((yyvsp[0].val)));
12993 #line 12989 "ripper.c"
12997 #line 5406 "ripper.y"
13000 p->ctxt.in_argdef = 1;
13002 (yyval.val) = new_kw_arg(p, assignable(p, (yyvsp[0].val), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
13004 (yyval.val)=
rb_assoc_new(get_value(assignable(p, (yyvsp[0].val))), 0);
13006 #line 13002 "ripper.c"
13010 #line 5417 "ripper.y"
13012 p->ctxt.in_argdef = 1;
13014 (yyval.val) = new_kw_arg(p, assignable(p, (yyvsp[-1].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
13016 (yyval.val)=
rb_assoc_new(get_value(assignable(p, (yyvsp[-1].val))), get_value((yyvsp[0].val)));
13018 #line 13014 "ripper.c"
13022 #line 5425 "ripper.y"
13024 p->ctxt.in_argdef = 1;
13026 (yyval.val) = new_kw_arg(p, assignable(p, (yyvsp[0].val), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
13028 (yyval.val)=
rb_assoc_new(get_value(assignable(p, (yyvsp[0].val))), 0);
13030 #line 13026 "ripper.c"
13034 #line 5435 "ripper.y"
13037 (yyval.val) = (yyvsp[0].val);
13039 (yyval.val)=
rb_ary_new3(1, get_value((yyvsp[0].val)));
13041 #line 13037 "ripper.c"
13045 #line 5442 "ripper.y"
13048 (yyval.val) = kwd_append((yyvsp[-2].val), (yyvsp[0].val));
13050 (yyval.val)=
rb_ary_push((yyvsp[-2].val), get_value((yyvsp[0].val)));
13052 #line 13048 "ripper.c"
13056 #line 5452 "ripper.y"
13059 (yyval.val) = (yyvsp[0].val);
13061 (yyval.val)=
rb_ary_new3(1, get_value((yyvsp[0].val)));
13063 #line 13059 "ripper.c"
13067 #line 5459 "ripper.y"
13070 (yyval.val) = kwd_append((yyvsp[-2].val), (yyvsp[0].val));
13072 (yyval.val)=
rb_ary_push((yyvsp[-2].val), get_value((yyvsp[0].val)));
13074 #line 13070 "ripper.c"
13078 #line 5472 "ripper.y"
13082 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(nokw_param,v1);(yyval.val)=v2;}
13084 #line 13080 "ripper.c"
13088 #line 5480 "ripper.y"
13090 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].val))));
13092 (yyval.val) = (yyvsp[0].val);
13094 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(kwrest_param,v1);(yyval.val)=v2;}
13096 #line 13092 "ripper.c"
13100 #line 5488 "ripper.y"
13103 (yyval.val) = internal_id(p);
13104 arg_var(p, (yyval.val));
13106 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(kwrest_param,v1);(yyval.val)=v2;}
13108 #line 13104 "ripper.c"
13112 #line 5498 "ripper.y"
13115 p->ctxt.in_argdef = 1;
13117 (yyval.val) = NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
13119 (yyval.val)=
rb_assoc_new(get_value(assignable(p, (yyvsp[-2].val))), get_value((yyvsp[0].val)));
13121 #line 13117 "ripper.c"
13125 #line 5509 "ripper.y"
13128 p->ctxt.in_argdef = 1;
13130 (yyval.val) = NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].val), (yyvsp[0].val), &(yyloc)), &(yyloc));
13132 (yyval.val)=
rb_assoc_new(get_value(assignable(p, (yyvsp[-2].val))), get_value((yyvsp[0].val)));
13134 #line 13130 "ripper.c"
13138 #line 5520 "ripper.y"
13141 (yyval.val) = (yyvsp[0].val);
13143 (yyval.val)=
rb_ary_new3(1, get_value((yyvsp[0].val)));
13145 #line 13141 "ripper.c"
13149 #line 5527 "ripper.y"
13152 (yyval.val) = opt_arg_append((yyvsp[-2].val), (yyvsp[0].val));
13154 (yyval.val)=
rb_ary_push((yyvsp[-2].val), get_value((yyvsp[0].val)));
13156 #line 13152 "ripper.c"
13160 #line 5536 "ripper.y"
13163 (yyval.val) = (yyvsp[0].val);
13165 (yyval.val)=
rb_ary_new3(1, get_value((yyvsp[0].val)));
13167 #line 13163 "ripper.c"
13171 #line 5543 "ripper.y"
13174 (yyval.val) = opt_arg_append((yyvsp[-2].val), (yyvsp[0].val));
13176 (yyval.val)=
rb_ary_push((yyvsp[-2].val), get_value((yyvsp[0].val)));
13178 #line 13174 "ripper.c"
13182 #line 5556 "ripper.y"
13184 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].val))));
13186 (yyval.val) = (yyvsp[0].val);
13188 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(rest_param,v1);(yyval.val)=v2;}
13190 #line 13186 "ripper.c"
13194 #line 5564 "ripper.y"
13197 (yyval.val) = internal_id(p);
13198 arg_var(p, (yyval.val));
13200 {
VALUE v1,v2;v1=
Qnil;v2=dispatch1(rest_param,v1);(yyval.val)=v2;}
13202 #line 13198 "ripper.c"
13206 #line 5578 "ripper.y"
13208 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].val))));
13210 (yyval.val) = (yyvsp[0].val);
13212 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(blockarg,v1);(yyval.val)=v2;}
13214 #line 13210 "ripper.c"
13218 #line 5586 "ripper.y"
13221 arg_var(p, shadowing_lvar(p, get_id(ANON_BLOCK_ID)));
13223 (yyval.val) = dispatch1(blockarg,
Qnil);
13226 #line 13222 "ripper.c"
13230 #line 5596 "ripper.y"
13232 (yyval.val) = (yyvsp[0].val);
13234 #line 13230 "ripper.c"
13238 #line 5600 "ripper.y"
13240 (yyval.val) = Qnull;
13242 #line 13238 "ripper.c"
13246 #line 5606 "ripper.y"
13248 value_expr((yyvsp[0].val));
13249 (yyval.val) = (yyvsp[0].val);
13251 #line 13247 "ripper.c"
13255 #line 5610 "ripper.y"
13256 {SET_LEX_STATE(EXPR_BEG);}
13257 #line 13253 "ripper.c"
13261 #line 5611 "ripper.y"
13264 switch (nd_type((yyvsp[-1].val))) {
13273 yyerror1(&(yylsp[-1]),
"can't define singleton method for literals");
13276 value_expr((yyvsp[-1].val));
13279 (yyval.val) = (yyvsp[-1].val);
13281 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(paren,v1);(yyval.val)=v2;}
13283 #line 13279 "ripper.c"
13287 #line 5636 "ripper.y"
13290 (yyval.val) = (yyvsp[-1].val);
13292 {
VALUE v1,v2;v1=(yyvsp[-1].val);v2=dispatch1(assoclist_from_args,v1);(yyval.val)=v2;}
13294 #line 13290 "ripper.c"
13298 #line 5645 "ripper.y"
13299 {(yyval.val)=
rb_ary_new3(1, get_value((yyvsp[0].val)));}
13300 #line 13296 "ripper.c"
13304 #line 5647 "ripper.y"
13307 NODE *assocs = (yyvsp[-2].val);
13308 NODE *tail = (yyvsp[0].val);
13313 if (assocs->nd_head &&
13314 !tail->nd_head && nd_type_p(tail->nd_next, NODE_LIST) &&
13315 nd_type_p(tail->nd_next->nd_head, NODE_HASH)) {
13317 tail = tail->nd_next->nd_head->nd_head;
13319 assocs = list_concat(assocs, tail);
13321 (yyval.val) = assocs;
13323 (yyval.val)=
rb_ary_push((yyvsp[-2].val), get_value((yyvsp[0].val)));
13325 #line 13321 "ripper.c"
13329 #line 5670 "ripper.y"
13332 if (nd_type_p((yyvsp[-2].val), NODE_STR)) {
13333 nd_set_type((yyvsp[-2].val), NODE_LIT);
13334 RB_OBJ_WRITE(p->ast, &(yyvsp[-2].val)->nd_lit, rb_fstring((yyvsp[-2].val)->nd_lit));
13336 (yyval.val) = list_append(p, NEW_LIST((yyvsp[-2].val), &(yyloc)), (yyvsp[0].val));
13338 {
VALUE v1,v2,v3;v1=(yyvsp[-2].val);v2=(yyvsp[0].val);v3=dispatch2(assoc_new,v1,v2);(yyval.val)=v3;}
13340 #line 13336 "ripper.c"
13344 #line 5681 "ripper.y"
13347 (yyval.val) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[-1].val)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].val));
13349 {
VALUE v1,v2,v3;v1=(yyvsp[-1].val);v2=(yyvsp[0].val);v3=dispatch2(assoc_new,v1,v2);(yyval.val)=v3;}
13351 #line 13347 "ripper.c"
13355 #line 5688 "ripper.y"
13358 NODE *val = gettable(p, (yyvsp[0].val), &(yyloc));
13359 if (!val) val = NEW_BEGIN(0, &(yyloc));
13360 (yyval.val) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[0].val)), &(yylsp[0])), &(yyloc)), val);
13362 {
VALUE v1,v2,v3;v1=(yyvsp[0].val);v2=
Qnil;v3=dispatch2(assoc_new,v1,v2);(yyval.val)=v3;}
13364 #line 13360 "ripper.c"
13368 #line 5697 "ripper.y"
13371 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
13372 (yyval.val) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].val), &loc), &loc), (yyvsp[0].val));
13374 {
VALUE v1,v2,v3,v4,v5;v1=(yyvsp[-2].val);v2=dispatch1(dyna_symbol,v1);v3=v2;v4=(yyvsp[0].val);v5=dispatch2(assoc_new,v3,v4);(yyval.val)=v5;}
13376 #line 13372 "ripper.c"
13380 #line 5705 "ripper.y"
13383 if (nd_type_p((yyvsp[0].val), NODE_HASH) &&
13384 !((yyvsp[0].val)->nd_head && (yyvsp[0].val)->nd_head->nd_alen)) {
13385 static VALUE empty_hash;
13390 (yyval.val) = list_append(p, NEW_LIST(0, &(yyloc)), NEW_LIT(empty_hash, &(yyloc)));
13393 (yyval.val) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].val));
13395 {
VALUE v1,v2;v1=(yyvsp[0].val);v2=dispatch1(assoc_splat,v1);(yyval.val)=v2;}
13397 #line 13393 "ripper.c"
13401 #line 5773 "ripper.y"
13402 {yyerrok;token_flush(p);}
13403 #line 13399 "ripper.c"
13407 #line 5774 "ripper.y"
13409 #line 13405 "ripper.c"
13413 #line 5778 "ripper.y"
13415 #line 13411 "ripper.c"
13419 #line 5782 "ripper.y"
13421 (yyval.val) = Qnull;
13423 #line 13419 "ripper.c"
13427 #line 13423 "ripper.c"
13442 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
13444 YYPOPSTACK (yylen);
13454 const int yylhs = yyr1[yyn] - YYNTOKENS;
13455 const int yyi = yypgoto[yylhs] + *yyssp;
13456 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
13458 : yydefgoto[yylhs]);
13470 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
13477 = {yyssp, yytoken, &yylloc};
13478 char const *yymsgp = YY_(
"syntax error");
13479 int yysyntax_error_status;
13480 yysyntax_error_status = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
13481 if (yysyntax_error_status == 0)
13483 else if (yysyntax_error_status == -1)
13485 if (yymsg != yymsgbuf)
13486 YYSTACK_FREE (yymsg);
13487 yymsg = YY_CAST (
char *,
13488 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
13491 yysyntax_error_status
13492 = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
13498 yymsg_alloc =
sizeof yymsgbuf;
13499 yysyntax_error_status = YYENOMEM;
13502 yyerror (&yylloc, p, yymsgp);
13503 if (yysyntax_error_status == YYENOMEM)
13508 yyerror_range[1] = yylloc;
13509 if (yyerrstatus == 3)
13514 if (yychar <= END_OF_INPUT)
13517 if (yychar == END_OF_INPUT)
13522 yydestruct (
"Error: discarding",
13523 yytoken, &yylval, &yylloc, p);
13545 YYPOPSTACK (yylen);
13547 YY_STACK_PRINT (yyss, yyssp);
13561 yyn = yypact[yystate];
13562 if (!yypact_value_is_default (yyn))
13564 yyn += YYSYMBOL_YYerror;
13565 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
13567 yyn = yytable[yyn];
13577 yyerror_range[1] = *yylsp;
13578 yydestruct (
"Error: popping",
13579 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
13582 YY_STACK_PRINT (yyss, yyssp);
13585 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
13587 YY_IGNORE_MAYBE_UNINITIALIZED_END
13589 yyerror_range[2] = yylloc;
13591 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
13594 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
13620 yyerror (&yylloc, p, YY_(
"memory exhausted"));
13629 if (yychar != YYEMPTY)
13633 yytoken = YYTRANSLATE (yychar);
13634 yydestruct (
"Cleanup: discarding lookahead",
13635 yytoken, &yylval, &yylloc, p);
13639 YYPOPSTACK (yylen);
13640 YY_STACK_PRINT (yyss, yyssp);
13641 while (yyssp != yyss)
13643 yydestruct (
"Cleanup: popping",
13644 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
13649 YYSTACK_FREE (yyss);
13651 if (yymsg != yymsgbuf)
13652 YYSTACK_FREE (yymsg);
13656 #line 5786 "ripper.y"
13661 # define yylval (*p->lval)
13670 # define set_yylval_node(x) { \
13671 YYLTYPE _cur_loc; \
13672 rb_parser_set_location(p, &_cur_loc); \
13673 yylval.node = (x); \
13675 # define set_yylval_str(x) \
13677 set_yylval_node(NEW_STR(x, &_cur_loc)); \
13678 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
13680 # define set_yylval_literal(x) \
13682 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
13683 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
13685 # define set_yylval_num(x) (yylval.num = (x))
13686 # define set_yylval_id(x) (yylval.id = (x))
13687 # define set_yylval_name(x) (yylval.id = (x))
13688 # define yylval_id() (yylval.id)
13690 static inline VALUE
13693 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
13695 # define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
13696 # define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
13697 # define set_yylval_id(x) (void)(x)
13698 # define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
13699 # define set_yylval_literal(x) add_mark_object(p, (x))
13700 # define set_yylval_node(x) (yylval.val = ripper_new_yylval(p, 0, 0, STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)))
13701 # define yylval_id() yylval.id
13702 # define _cur_loc NULL_LOC
13705 #define set_yylval_noname() set_yylval_id(keyword_nil)
13708 #define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
13709 #define dispatch_scan_event(p, t) ((void)0)
13710 #define dispatch_delayed_token(p, t) ((void)0)
13711 #define has_delayed_token(p) (0)
13713 #define literal_flush(p, ptr) ((void)(ptr))
13715 #define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
13717 static inline VALUE
13718 intern_sym(
const char *name)
13728 return p->lex.pcur > p->lex.ptok;
13732 ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
13734 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
13735 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
13741 ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
13743 if (!ripper_has_scan_event(p))
return;
13744 add_mark_object(p, yylval_rval = ripper_scan_event_val(p, t));
13746 #define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
13749 ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
13751 int saved_line = p->ruby_sourceline;
13752 const char *saved_tokp = p->lex.ptok;
13754 if (
NIL_P(p->delayed.token))
return;
13755 p->ruby_sourceline = p->delayed.line;
13756 p->lex.ptok = p->lex.pbeg + p->delayed.col;
13757 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed.token));
13758 p->delayed.token =
Qnil;
13759 p->ruby_sourceline = saved_line;
13760 p->lex.ptok = saved_tokp;
13762 #define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
13763 #define has_delayed_token(p) (!NIL_P(p->delayed.token))
13767 is_identchar(
const char *ptr,
const char *MAYBE_UNUSED(ptr_end),
rb_encoding *enc)
13775 return !(p)->eofp && is_identchar(p->lex.pcur-1, p->lex.pend, p->enc);
13781 return ISASCII(*(p->lex.pcur-1));
13787 int column = 1, nonspc = 0, i;
13788 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
13789 if (*ptr ==
'\t') {
13790 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
13793 if (*ptr !=
' ' && *ptr !=
'\t') {
13798 ptinfo->beg = loc->beg_pos;
13799 ptinfo->indent = column;
13800 ptinfo->nonspc = nonspc;
13808 if (!p->token_info_enabled)
return;
13810 ptinfo->token = token;
13811 ptinfo->next = p->token_info;
13812 token_info_setup(ptinfo, p->lex.pbeg, loc);
13814 p->token_info = ptinfo;
13822 if (!ptinfo_beg)
return;
13823 p->token_info = ptinfo_beg->next;
13826 token_info_warn(p, token, ptinfo_beg, 1, loc);
13827 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
13835 if (!ptinfo_beg)
return;
13836 p->token_info = ptinfo_beg->next;
13838 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
13839 ptinfo_beg->beg.column != beg_pos.column ||
13840 strcmp(ptinfo_beg->token, token)) {
13841 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
13842 beg_pos.lineno, beg_pos.column, token,
13843 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
13844 ptinfo_beg->token);
13847 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
13853 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
13854 if (!p->token_info_enabled)
return;
13855 if (!ptinfo_beg)
return;
13856 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
13857 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
13858 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
13859 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
13860 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
13861 rb_warn3L(ptinfo_end->beg.lineno,
13862 "mismatched indentations at '%s' with '%s' at %d",
13863 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
13867 parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
13871 compile_error(p,
"invalid multibyte char (%s)",
rb_enc_name(p->enc));
13878 static void ruby_show_error_line(
VALUE errbuf,
const YYLTYPE *yylloc,
int lineno,
VALUE str);
13884 int lineno = p->ruby_sourceline;
13888 else if (yylloc->beg_pos.lineno == lineno) {
13889 str = p->lex.lastline;
13894 ruby_show_error_line(p->error_buffer, yylloc, lineno, str);
13904 yylloc = RUBY_SET_YYLLOC(current);
13906 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
13907 p->ruby_sourceline != yylloc->end_pos.lineno)) {
13911 compile_error(p,
"%s", msg);
13912 parser_show_error_line(p, yylloc);
13920 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
13924 ruby_show_error_line(
VALUE errbuf,
const YYLTYPE *yylloc,
int lineno,
VALUE str)
13927 const int max_line_margin = 30;
13928 const char *ptr, *ptr_end, *pt, *pb;
13929 const char *pre =
"", *post =
"", *pend;
13930 const char *code =
"", *caret =
"";
13937 if (!yylloc)
return;
13939 if (pend > pbeg && pend[-1] ==
'\n') {
13940 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
13944 if (lineno == yylloc->end_pos.lineno &&
13945 (pend - pbeg) > yylloc->end_pos.column) {
13946 pt = pbeg + yylloc->end_pos.column;
13949 ptr = ptr_end = pt;
13950 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
13951 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
13953 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
13954 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
13956 len = ptr_end - ptr;
13960 if (ptr > pbeg) pre =
"...";
13962 if (ptr_end < pend) {
13964 if (ptr_end < pend) post =
"...";
13968 if (lineno == yylloc->beg_pos.lineno) {
13969 pb += yylloc->beg_pos.column;
13970 if (pb > pt) pb = pt;
13972 if (pb < ptr) pb = ptr;
13973 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
13976 if (
RTEST(errbuf)) {
13984 if (!errbuf && rb_stderr_tty_p()) {
13985 #define CSI_BEGIN "\033["
13986 #define CSI_SGR "m"
13988 CSI_BEGIN
""CSI_SGR
"%s"
13989 CSI_BEGIN
"1"CSI_SGR
"%.*s"
13990 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
13991 CSI_BEGIN
";1"CSI_SGR
"%.*s"
13992 CSI_BEGIN
""CSI_SGR
"%s"
13995 (
int)(pb - ptr), ptr,
13996 (
int)(pt - pb), pb,
13997 (
int)(ptr_end - pt), pt,
14003 len = ptr_end - ptr;
14004 lim = pt < pend ? pt : pend;
14005 i = (int)(lim - ptr);
14011 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
14017 memset(p2,
'~', (lim - ptr));
14022 pre, (
int)len, code, post,
14025 if (!errbuf) rb_write_error_str(mesg);
14031 const char *pcur = 0, *ptok = 0;
14032 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
14033 p->ruby_sourceline == yylloc->end_pos.lineno) {
14034 pcur = p->lex.pcur;
14035 ptok = p->lex.ptok;
14036 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
14037 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
14039 parser_yyerror0(p, msg);
14041 p->lex.ptok = ptok;
14042 p->lex.pcur = pcur;
14050 dispatch1(parse_error, STR_NEW2(msg));
14063 vtable_size(
const struct vtable *tbl)
14065 if (!DVARS_TERMINAL_P(tbl)) {
14084 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
14089 #define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
14092 vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
14097 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
14100 if (!DVARS_TERMINAL_P(tbl)) {
14102 ruby_sized_xfree(tbl->tbl, tbl->capa *
sizeof(
ID));
14104 ruby_sized_xfree(tbl,
sizeof(*tbl));
14107 #define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
14110 vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
14115 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
14119 if (DVARS_TERMINAL_P(tbl)) {
14120 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
14123 if (tbl->pos == tbl->capa) {
14124 tbl->capa = tbl->capa * 2;
14125 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
14127 tbl->tbl[tbl->pos++] = id;
14129 #define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
14133 vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
14134 struct vtable *tbl,
int n)
14137 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
14138 line, name, (
void *)tbl, n);
14140 if (tbl->pos < n) {
14141 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
14146 #define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
14150 vtable_included(
const struct vtable * tbl,
ID id)
14154 if (!DVARS_TERMINAL_P(tbl)) {
14155 for (i = 0; i < tbl->pos; i++) {
14156 if (tbl->tbl[i] ==
id) {
14170 debug_lines(
VALUE fname)
14173 CONST_ID(script_lines,
"SCRIPT_LINES__");
14188 return strcmp(p->ruby_sourcefile,
"-e") == 0;
14192 yycompile0(
VALUE arg)
14199 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string)) {
14200 p->debug_lines = debug_lines(p->ruby_sourcefile_string);
14201 if (p->debug_lines && p->ruby_sourceline > 0) {
14203 n = p->ruby_sourceline;
14209 if (!e_option_supplied(p)) {
14214 if (p->keep_script_lines || ruby_vm_keep_script_lines) {
14215 if (!p->debug_lines) {
14219 RB_OBJ_WRITE(p->ast, &p->ast->body.script_lines, p->debug_lines);
14223 #define RUBY_DTRACE_PARSE_HOOK(name) \
14224 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
14225 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
14227 RUBY_DTRACE_PARSE_HOOK(BEGIN);
14229 RUBY_DTRACE_PARSE_HOOK(END);
14230 p->debug_lines = 0;
14232 p->lex.strterm = 0;
14233 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
14234 p->lex.prevline = p->lex.lastline = p->lex.nextline = 0;
14235 if (n || p->error_p) {
14236 VALUE mesg = p->error_buffer;
14243 tree = p->eval_tree;
14245 tree = NEW_NIL(&NULL_LOC);
14248 VALUE opt = p->compile_option;
14250 NODE *body = parser_append_options(p, tree->nd_body);
14251 if (!opt) opt =
rb_obj_hide(rb_ident_hash_new());
14252 rb_hash_aset(opt, rb_sym_intern_ascii_cstr(
"coverage_enabled"), cov);
14253 prelude = block_append(p, p->eval_tree_begin, body);
14254 tree->nd_body = prelude;
14255 RB_OBJ_WRITE(p->ast, &p->ast->body.compile_option, opt);
14257 p->ast->body.root = tree;
14258 if (!p->ast->body.script_lines) p->ast->body.script_lines =
INT2FIX(p->line_count);
14266 if (
NIL_P(fname)) {
14267 p->ruby_sourcefile_string =
Qnil;
14268 p->ruby_sourcefile =
"(none)";
14271 p->ruby_sourcefile_string = rb_fstring(fname);
14274 p->ruby_sourceline = line - 1;
14278 p->ast = ast = rb_ast_new();
14279 rb_suppress_tracing(yycompile0, (
VALUE)p);
14292 must_be_ascii_compatible(
VALUE s)
14304 char *beg, *end, *start;
14310 if (p->lex.gets_.ptr) {
14311 if (len == p->lex.gets_.ptr)
return Qnil;
14312 beg += p->lex.gets_.ptr;
14313 len -= p->lex.gets_.ptr;
14315 end = memchr(beg,
'\n', len);
14316 if (end) len = ++end - beg;
14317 p->lex.gets_.ptr += len;
14324 VALUE line = (*p->lex.gets)(p, p->lex.input);
14325 if (
NIL_P(line))
return line;
14326 must_be_ascii_compatible(line);
14342 p->lex.gets = lex_get_str;
14343 p->lex.gets_.ptr = 0;
14345 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
14347 return yycompile(vparser, p, fname, line);
14351 rb_parser_compile_string(
VALUE vparser,
const char *f,
VALUE s,
int line)
14357 rb_parser_compile_string_path(
VALUE vparser,
VALUE f,
VALUE s,
int line)
14359 must_be_ascii_compatible(s);
14360 return parser_compile_string(vparser, f, s, line);
14368 return rb_io_gets_internal(io);
14372 rb_parser_compile_file_path(
VALUE vparser,
VALUE fname,
VALUE file,
int start)
14378 p->lex.gets = lex_io_gets;
14379 p->lex.input = file;
14380 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
14382 return yycompile(vparser, p, fname, start);
14388 return (*p->lex.gets_.call)(input, p->line_count);
14398 p->lex.gets = lex_generic_gets;
14399 p->lex.gets_.call = lex_gets;
14400 p->lex.input = input;
14401 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
14403 return yycompile(vparser, p, fname, start);
14407 #define STR_FUNC_ESCAPE 0x01
14408 #define STR_FUNC_EXPAND 0x02
14409 #define STR_FUNC_REGEXP 0x04
14410 #define STR_FUNC_QWORDS 0x08
14411 #define STR_FUNC_SYMBOL 0x10
14412 #define STR_FUNC_INDENT 0x20
14413 #define STR_FUNC_LABEL 0x40
14414 #define STR_FUNC_LIST 0x4000
14415 #define STR_FUNC_TERM 0x8000
14418 str_label = STR_FUNC_LABEL,
14420 str_dquote = (STR_FUNC_EXPAND),
14421 str_xquote = (STR_FUNC_EXPAND),
14422 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
14423 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
14424 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
14425 str_ssym = (STR_FUNC_SYMBOL),
14426 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
14446 #define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
14447 #define lex_eol_p(p) ((p)->lex.pcur >= (p)->lex.pend)
14448 #define lex_eol_n_p(p,n) ((p)->lex.pcur+(n) >= (p)->lex.pend)
14449 #define peek(p,c) peek_n(p, (c), 0)
14450 #define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
14451 #define peekc(p) peekc_n(p, 0)
14452 #define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
14456 add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end)
14459 if (!has_delayed_token(p)) {
14462 p->delayed.line = p->ruby_sourceline;
14470 #define add_delayed_token(p, tok, end) ((void)(tok), (void)(end))
14476 VALUE v = p->lex.nextline;
14477 p->lex.nextline = 0;
14482 if (p->lex.pend > p->lex.pbeg && *(p->lex.pend-1) !=
'\n') {
14486 if (!p->lex.input ||
NIL_P(v = lex_getline(p))) {
14493 if (p->debug_lines) {
14498 p->cr_seen = FALSE;
14500 else if (
NIL_P(v)) {
14504 add_delayed_token(p, p->lex.ptok, p->lex.pend);
14505 if (p->heredoc_end > 0) {
14506 p->ruby_sourceline = p->heredoc_end;
14507 p->heredoc_end = 0;
14509 p->ruby_sourceline++;
14513 p->lex.prevline = p->lex.lastline;
14514 p->lex.lastline = v;
14521 if (peek(p,
'\n')) {
14533 if (UNLIKELY((p->lex.pcur == p->lex.pend) || p->eofp ||
RTEST(p->lex.nextline))) {
14534 if (nextline(p, set_encoding))
return -1;
14536 c = (
unsigned char)*p->lex.pcur++;
14537 if (UNLIKELY(c ==
'\r')) {
14538 c = parser_cr(p, c);
14543 #define nextc(p) nextc0(p, TRUE)
14548 if (c == -1)
return;
14550 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
14555 #define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
14557 #define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
14558 #define tok(p) (p)->tokenbuf
14559 #define toklen(p) (p)->tokidx
14564 const char *ptr = p->lex.pcur;
14565 while (ptr < p->lex.pend) {
14566 int c = (
unsigned char)*ptr++;
14567 int eol = (c ==
'\n' || c ==
'#');
14579 p->tokline = p->ruby_sourceline;
14580 if (!p->tokenbuf) {
14582 p->tokenbuf =
ALLOC_N(
char, 60);
14584 if (p->toksiz > 4096) {
14588 return p->tokenbuf;
14596 if (p->tokidx >= p->toksiz) {
14597 do {p->toksiz *= 2;}
while (p->toksiz < p->tokidx);
14598 REALLOC_N(p->tokenbuf,
char, p->toksiz);
14600 return &p->tokenbuf[p->tokidx-n];
14606 p->tokenbuf[p->tokidx++] = (char)c;
14607 if (p->tokidx >= p->toksiz) {
14609 REALLOC_N(p->tokenbuf,
char, p->toksiz);
14618 c =
scan_hex(p->lex.pcur, 2, numlen);
14620 yyerror0(
"invalid hex escape");
14624 p->lex.pcur += *numlen;
14628 #define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
14631 escaped_control_code(
int c)
14657 #define WARN_SPACE_CHAR(c, prefix) \
14658 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
14662 int regexp_literal,
int wide)
14665 int codepoint =
scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
14666 literal_flush(p, p->lex.pcur);
14667 p->lex.pcur += numlen;
14668 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
14669 yyerror0(
"invalid Unicode escape");
14670 return wide && numlen > 0;
14672 if (codepoint > 0x10ffff) {
14673 yyerror0(
"invalid Unicode codepoint (too large)");
14676 if ((codepoint & 0xfffff800) == 0xd800) {
14677 yyerror0(
"invalid Unicode codepoint");
14680 if (regexp_literal) {
14681 tokcopy(p, (
int)numlen);
14683 else if (codepoint >= 0x80) {
14685 if (*encp && utf8 != *encp) {
14686 YYLTYPE loc = RUBY_INIT_YYLLOC();
14687 compile_error(p,
"UTF-8 mixed within %s source",
rb_enc_name(*encp));
14688 parser_show_error_line(p, &loc);
14692 tokaddmbc(p, codepoint, *encp);
14695 tokadd(p, codepoint);
14703 int term,
int symbol_literal,
int regexp_literal)
14710 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
14712 const int open_brace =
'{', close_brace =
'}';
14714 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
14716 if (peek(p, open_brace)) {
14717 const char *second = NULL;
14718 int c, last = nextc(p);
14719 if (p->lex.pcur >= p->lex.pend)
goto unterminated;
14720 while (
ISSPACE(c = *p->lex.pcur) && ++p->lex.pcur < p->lex.pend);
14721 while (c != close_brace) {
14722 if (c == term)
goto unterminated;
14723 if (second == multiple_codepoints)
14724 second = p->lex.pcur;
14725 if (regexp_literal) tokadd(p, last);
14726 if (!tokadd_codepoint(p, encp, regexp_literal, TRUE)) {
14729 while (
ISSPACE(c = *p->lex.pcur)) {
14730 if (++p->lex.pcur >= p->lex.pend)
goto unterminated;
14733 if (term == -1 && !second)
14734 second = multiple_codepoints;
14737 if (c != close_brace) {
14740 yyerror0(
"unterminated Unicode escape");
14743 if (second && second != multiple_codepoints) {
14744 const char *pcur = p->lex.pcur;
14745 p->lex.pcur = second;
14746 dispatch_scan_event(p, tSTRING_CONTENT);
14748 p->lex.pcur = pcur;
14749 yyerror0(multiple_codepoints);
14753 if (regexp_literal) tokadd(p, close_brace);
14757 if (!tokadd_codepoint(p, encp, regexp_literal, FALSE)) {
14764 #define ESCAPE_CONTROL 1
14765 #define ESCAPE_META 2
14773 switch (c = nextc(p)) {
14798 case '0':
case '1':
case '2':
case '3':
14799 case '4':
case '5':
case '6':
case '7':
14801 c =
scan_oct(p->lex.pcur, 3, &numlen);
14802 p->lex.pcur += numlen;
14806 c = tok_hex(p, &numlen);
14807 if (numlen == 0)
return 0;
14817 if (flags & ESCAPE_META)
goto eof;
14818 if ((c = nextc(p)) !=
'-') {
14821 if ((c = nextc(p)) ==
'\\') {
14822 switch (peekc(p)) {
14823 case 'u':
case 'U':
14827 return read_escape(p, flags|ESCAPE_META, encp) | 0x80;
14829 else if (c == -1 || !
ISASCII(c))
goto eof;
14831 int c2 = escaped_control_code(c);
14833 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
14834 WARN_SPACE_CHAR(c2,
"\\M-");
14837 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
14840 else if (
ISCNTRL(c))
goto eof;
14841 return ((c & 0xff) | 0x80);
14845 if ((c = nextc(p)) !=
'-') {
14849 if (flags & ESCAPE_CONTROL)
goto eof;
14850 if ((c = nextc(p))==
'\\') {
14851 switch (peekc(p)) {
14852 case 'u':
case 'U':
14856 c = read_escape(p, flags|ESCAPE_CONTROL, encp);
14860 else if (c == -1 || !
ISASCII(c))
goto eof;
14862 int c2 = escaped_control_code(c);
14865 if (flags & ESCAPE_META) {
14866 WARN_SPACE_CHAR(c2,
"\\M-");
14869 WARN_SPACE_CHAR(c2,
"");
14873 if (flags & ESCAPE_META) {
14874 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
14877 WARN_SPACE_CHAR(c2,
"\\C-");
14881 else if (
ISCNTRL(c))
goto eof;
14887 yyerror0(
"Invalid escape character syntax");
14909 switch (c = nextc(p)) {
14913 case '0':
case '1':
case '2':
case '3':
14914 case '4':
case '5':
case '6':
case '7':
14917 if (numlen == 0)
goto eof;
14918 p->lex.pcur += numlen;
14919 tokcopy(p, (
int)numlen + 1);
14925 tok_hex(p, &numlen);
14926 if (numlen == 0)
return -1;
14927 tokcopy(p, (
int)numlen + 2);
14933 yyerror0(
"Invalid escape character syntax");
14953 while (c = nextc(p),
ISALPHA(c)) {
14955 options |= RE_OPTION_ONCE;
14973 YYLTYPE loc = RUBY_INIT_YYLLOC();
14975 compile_error(p,
"unknown regexp option%s - %*s",
14976 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
14977 parser_show_error_line(p, &loc);
14979 return options | RE_OPTION_ENCODING(kcode);
14985 int len = parser_precise_mbclen(p, p->lex.pcur-1);
14986 if (len < 0)
return -1;
14988 p->lex.pcur += --len;
14989 if (len > 0) tokcopy(p, len);
14994 simple_re_meta(
int c)
14997 case '$':
case '*':
case '+':
case '.':
14998 case '?':
case '^':
case '|':
14999 case ')':
case ']':
case '}':
case '>':
15007 parser_update_heredoc_indent(
struct parser_params *p,
int c)
15009 if (p->heredoc_line_indent == -1) {
15010 if (c ==
'\n') p->heredoc_line_indent = 0;
15014 p->heredoc_line_indent++;
15017 else if (c ==
'\t') {
15018 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
15019 p->heredoc_line_indent = w * TAB_WIDTH;
15022 else if (c !=
'\n') {
15023 if (p->heredoc_indent > p->heredoc_line_indent) {
15024 p->heredoc_indent = p->heredoc_line_indent;
15026 p->heredoc_line_indent = -1;
15035 YYLTYPE loc = RUBY_INIT_YYLLOC();
15037 compile_error(p,
"%s mixed within %s source", n1, n2);
15038 parser_show_error_line(p, &loc);
15044 const char *pos = p->lex.pcur;
15046 parser_mixed_error(p, enc1, enc2);
15052 int func,
int term,
int paren,
long *nest,
15056 bool erred =
false;
15058 #define mixed_error(enc1, enc2) \
15059 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
15060 #define mixed_escape(beg, enc1, enc2) \
15061 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
15063 while ((c = nextc(p)) != -1) {
15064 if (p->heredoc_indent > 0) {
15065 parser_update_heredoc_indent(p, c);
15068 if (paren && c == paren) {
15071 else if (c == term) {
15072 if (!nest || !*nest) {
15078 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && p->lex.pcur < p->lex.pend) {
15079 int c2 = *p->lex.pcur;
15080 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
15085 else if (c ==
'\\') {
15086 literal_flush(p, p->lex.pcur - 1);
15090 if (func & STR_FUNC_QWORDS)
break;
15091 if (func & STR_FUNC_EXPAND) {
15092 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
15103 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
15107 if ((func & STR_FUNC_EXPAND) == 0) {
15111 tokadd_utf8(p, enc, term,
15112 func & STR_FUNC_SYMBOL,
15113 func & STR_FUNC_REGEXP);
15117 if (c == -1)
return -1;
15119 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
15122 if (func & STR_FUNC_REGEXP) {
15128 c = read_escape(p, 0, enc);
15132 snprintf(escbuf,
sizeof(escbuf),
"\\x%02X", c);
15133 for (i = 0; i < 4; i++) {
15134 tokadd(p, escbuf[i]);
15140 if (c == term && !simple_re_meta(c)) {
15145 if ((c = tokadd_escape(p, enc)) < 0)
15147 if (*enc && *enc != *encp) {
15148 mixed_escape(p->lex.ptok+2, *enc, *encp);
15152 else if (func & STR_FUNC_EXPAND) {
15154 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
15155 c = read_escape(p, 0, enc);
15157 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
15160 else if (c != term && !(paren && c == paren)) {
15167 else if (!parser_isascii(p)) {
15172 else if (*enc != *encp) {
15173 mixed_error(*enc, *encp);
15176 if (tokadd_mbchar(p, c) == -1)
return -1;
15179 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
15187 else if (*enc != *encp) {
15188 mixed_error(*enc, *encp);
15195 if (*enc) *encp = *enc;
15202 return (
rb_strterm_t*)rb_imemo_new(imemo_parser_strterm, v1, v2, v3, v0);
15206 #define NEW_STRTERM(func, term, paren) \
15207 new_strterm((VALUE)(func), (VALUE)(paren), (VALUE)(term), 0)
15213 VALUE content = yylval.val;
15214 if (!ripper_is_node_yylval(content))
15215 content = ripper_new_yylval(p, 0, 0, content);
15216 if (has_delayed_token(p)) {
15217 ptrdiff_t len = p->lex.pcur - p->lex.ptok;
15221 dispatch_delayed_token(p, tSTRING_CONTENT);
15222 p->lex.ptok = p->lex.pcur;
15223 RNODE(content)->nd_rval = yylval.val;
15225 dispatch_scan_event(p, tSTRING_CONTENT);
15226 if (yylval.val != content)
15227 RNODE(content)->nd_rval = yylval.val;
15228 yylval.val = content;
15231 #define flush_string_content(p, enc) ((void)(enc))
15234 RUBY_FUNC_EXPORTED
const unsigned int ruby_global_name_punct_bits[(0x7e - 0x20 + 31) / 32];
15238 #define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
15239 #define SPECIAL_PUNCT(idx) ( \
15240 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
15241 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
15242 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
15243 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
15244 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
15246 const unsigned int ruby_global_name_punct_bits[] = {
15252 #undef SPECIAL_PUNCT
15255 static enum yytokentype
15256 parser_peek_variable_name(struct parser_params *p)
15259 const char *ptr = p->lex.pcur;
15261 if (ptr + 1 >= p->lex.pend) return 0;
15265 if ((c = *ptr) == '-') {
15266 if (++ptr >= p->lex.pend) return 0;
15269 else if (is_global_name_punct(c) || ISDIGIT(c)) {
15270 return tSTRING_DVAR;
15274 if ((c = *ptr) == '@') {
15275 if (++ptr >= p->lex.pend) return 0;
15281 p->command_start = TRUE;
15282 return tSTRING_DBEG;
15286 if (!ISASCII(c) || c == '_' || ISALPHA(c))
15287 return tSTRING_DVAR;
15291 #define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
15292 #define IS_END() IS_lex_state(EXPR_END_ANY)
15293 #define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
15294 #define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
15295 #define IS_LABEL_POSSIBLE() (\
15296 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
15298 #define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
15299 #define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
15301 static inline enum yytokentype
15302 parser_string_term(struct parser_params *p, int func)
15304 p->lex.strterm = 0;
15305 if (func & STR_FUNC_REGEXP) {
15306 set_yylval_num(regx_options(p));
15307 dispatch_scan_event(p, tREGEXP_END);
15308 SET_LEX_STATE(EXPR_END);
15309 return tREGEXP_END;
15311 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
15313 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
15316 SET_LEX_STATE(EXPR_END);
15317 return tSTRING_END;
15320 static enum yytokentype
15321 parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
15323 int func = (int)quote->u1.func;
15324 int term = (int)quote->u3.term;
15325 int paren = (int)quote->u2.paren;
15327 rb_encoding *enc = p->enc;
15328 rb_encoding *base_enc = 0;
15331 if (func & STR_FUNC_TERM) {
15332 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
15333 SET_LEX_STATE(EXPR_END);
15334 p->lex.strterm = 0;
15335 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
15338 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
15339 do {c = nextc(p);} while (ISSPACE(c));
15342 if (func & STR_FUNC_LIST) {
15343 quote->u1.func &= ~STR_FUNC_LIST;
15346 if (c == term && !quote->u0.nest) {
15347 if (func & STR_FUNC_QWORDS) {
15348 quote->u1.func |= STR_FUNC_TERM;
15349 pushback(p, c); /* dispatch the term at tSTRING_END */
15350 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
15353 return parser_string_term(p, func);
15357 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
15361 if ((func & STR_FUNC_EXPAND) && c == '#') {
15362 int t = parser_peek_variable_name(p);
15368 if (tokadd_string(p, func, term, paren, "e->u0.nest,
15369 &enc, &base_enc) == -1) {
15372 # define unterminated_literal(mesg) yyerror0(mesg)
15374 # define unterminated_literal(mesg) compile_error(p, mesg)
15376 literal_flush(p, p->lex.pcur);
15377 if (func & STR_FUNC_QWORDS) {
15378 /* no content to add, bailing out here */
15379 unterminated_literal("unterminated list meets end of file");
15380 p->lex.strterm = 0;
15381 return tSTRING_END;
15383 if (func & STR_FUNC_REGEXP) {
15384 unterminated_literal("unterminated regexp meets end of file");
15387 unterminated_literal("unterminated string meets end of file");
15389 quote->u1.func |= STR_FUNC_TERM;
15394 lit = STR_NEW3(tok(p), toklen(p), enc, func);
15395 set_yylval_str(lit);
15396 flush_string_content(p, enc);
15398 return tSTRING_CONTENT;
15401 static enum yytokentype
15402 heredoc_identifier(struct parser_params *p)
15405 * term_len is length of `<<"END"` except `END`,
15406 * in this case term_len is 4 (<, <, " and ").
15408 long len, offset = p->lex.pcur - p->lex.pbeg;
15409 int c = nextc(p), term, func = 0, quote = 0;
15410 enum yytokentype token = tSTRING_BEG;
15415 func = STR_FUNC_INDENT;
15418 else if (c == '~') {
15420 func = STR_FUNC_INDENT;
15426 func |= str_squote; goto quoted;
15428 func |= str_dquote;
goto quoted;
15430 token = tXSTRING_BEG;
15431 func |= str_xquote;
goto quoted;
15438 while ((c = nextc(p)) != term) {
15439 if (c == -1 || c ==
'\r' || c ==
'\n') {
15440 yyerror0(
"unterminated here document identifier");
15447 if (!parser_is_identchar(p)) {
15449 if (func & STR_FUNC_INDENT) {
15450 pushback(p, indent > 0 ?
'~' :
'-');
15454 func |= str_dquote;
15456 int n = parser_precise_mbclen(p, p->lex.pcur-1);
15457 if (n < 0)
return 0;
15458 p->lex.pcur += --n;
15459 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
15464 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
15465 if ((
unsigned long)len >= HERETERM_LENGTH_MAX)
15466 yyerror0(
"too long here document identifier");
15467 dispatch_scan_event(p, tHEREDOC_BEG);
15470 p->lex.strterm = new_strterm(0, 0, 0, p->lex.lastline);
15471 p->lex.strterm->flags |= STRTERM_HEREDOC;
15473 here->offset = offset;
15474 here->sourceline = p->ruby_sourceline;
15475 here->length = (int)len;
15476 here->quote = quote;
15480 p->heredoc_indent = indent;
15481 p->heredoc_line_indent = 0;
15490 p->lex.strterm = 0;
15491 line = here->lastline;
15492 p->lex.lastline = line;
15495 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
15496 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
15497 p->heredoc_end = p->ruby_sourceline;
15498 p->ruby_sourceline = (int)here->sourceline;
15499 if (p->eofp) p->lex.nextline =
Qnil;
15504 dedent_string(
VALUE string,
int width)
15511 for (i = 0; i < len && col < width; i++) {
15512 if (str[i] ==
' ') {
15515 else if (str[i] ==
'\t') {
15516 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
15517 if (n > width)
break;
15528 rb_fatal(
"literal string changed: %+"PRIsVALUE,
string);
15529 MEMMOVE(str, str + i,
char, len - i);
15538 NODE *node, *str_node, *prev_node;
15539 int indent = p->heredoc_indent;
15540 VALUE prev_lit = 0;
15542 if (indent <= 0)
return root;
15543 p->heredoc_indent = 0;
15544 if (!root)
return root;
15546 prev_node = node = str_node = root;
15547 if (nd_type_p(root, NODE_LIST)) str_node = root->nd_head;
15550 VALUE lit = str_node->nd_lit;
15551 if (str_node->flags & NODE_FL_NEWLINE) {
15552 dedent_string(lit, indent);
15557 else if (!literal_concat0(p, prev_lit, lit)) {
15561 NODE *end = node->nd_end;
15562 node = prev_node->nd_next = node->nd_next;
15564 if (nd_type_p(prev_node, NODE_DSTR))
15565 nd_set_type(prev_node, NODE_STR);
15568 node->nd_end = end;
15573 while ((node = (prev_node = node)->nd_next) != 0) {
15575 if (!nd_type_p(node, NODE_LIST))
break;
15576 if ((str_node = node->nd_head) != 0) {
15577 enum node_type
type = nd_type(str_node);
15578 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
15590 int indent = p->heredoc_indent;
15592 if (indent <= 0)
return array;
15593 p->heredoc_indent = 0;
15594 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
15614 col = dedent_string(input, wid);
15620 whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
15622 const char *ptr = p->lex.pbeg;
15626 while (*ptr &&
ISSPACE(*ptr)) ptr++;
15628 n = p->lex.pend - (ptr + len);
15629 if (n < 0)
return FALSE;
15630 if (n > 0 && ptr[len] !=
'\n') {
15631 if (ptr[len] !=
'\r')
return FALSE;
15632 if (n <= 1 || ptr[len+1] !=
'\n')
return FALSE;
15634 return strncmp(eos, ptr, len) == 0;
15638 word_match_p(
struct parser_params *p,
const char *word,
long len)
15640 if (strncmp(p->lex.pcur, word, len))
return 0;
15641 if (p->lex.pcur + len == p->lex.pend)
return 1;
15642 int c = (
unsigned char)p->lex.pcur[len];
15645 case '\0':
case '\004':
case '\032':
return 1;
15650 #define NUM_SUFFIX_R (1<<0)
15651 #define NUM_SUFFIX_I (1<<1)
15652 #define NUM_SUFFIX_ALL 3
15658 const char *lastp = p->lex.pcur;
15660 while ((c = nextc(p)) != -1) {
15661 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
15662 result |= (mask & NUM_SUFFIX_I);
15663 mask &= ~NUM_SUFFIX_I;
15665 mask &= ~NUM_SUFFIX_R;
15668 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
15669 result |= (mask & NUM_SUFFIX_R);
15670 mask &= ~NUM_SUFFIX_R;
15674 p->lex.pcur = lastp;
15675 literal_flush(p, p->lex.pcur);
15684 static enum yytokentype
15686 enum yytokentype
type,
int suffix)
15688 if (suffix & NUM_SUFFIX_I) {
15692 set_yylval_literal(v);
15693 SET_LEX_STATE(EXPR_END);
15697 static enum yytokentype
15700 enum yytokentype
type = tINTEGER;
15701 if (suffix & NUM_SUFFIX_R) {
15705 return set_number_literal(p, v,
type, suffix);
15713 if (has_delayed_token(p))
15714 dispatch_delayed_token(p, tSTRING_CONTENT);
15715 str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
15716 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
15722 #define dispatch_heredoc_end(p) ((void)0)
15725 static enum yytokentype
15728 int c, func, indent = 0;
15729 const char *eos, *ptr, *ptr_end;
15736 eos =
RSTRING_PTR(here->lastline) + here->offset;
15737 len = here->length;
15738 indent = (func = here->func) & STR_FUNC_INDENT;
15740 if ((c = nextc(p)) == -1) {
15743 if (!has_delayed_token(p)) {
15744 dispatch_scan_event(p, tSTRING_CONTENT);
15747 if ((len = p->lex.pcur - p->lex.ptok) > 0) {
15759 dispatch_delayed_token(p, tSTRING_CONTENT);
15763 heredoc_restore(p, &p->lex.strterm->u.heredoc);
15764 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
15767 p->lex.strterm = 0;
15768 SET_LEX_STATE(EXPR_END);
15769 return tSTRING_END;
15775 else if (p->heredoc_line_indent == -1) {
15780 p->heredoc_line_indent = 0;
15782 else if (whole_match_p(p, eos, len, indent)) {
15783 dispatch_heredoc_end(p);
15785 heredoc_restore(p, &p->lex.strterm->u.heredoc);
15787 p->lex.strterm = 0;
15788 SET_LEX_STATE(EXPR_END);
15789 return tSTRING_END;
15792 if (!(func & STR_FUNC_EXPAND)) {
15795 ptr_end = p->lex.pend;
15796 if (ptr_end > ptr) {
15797 switch (ptr_end[-1]) {
15799 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
15808 if (p->heredoc_indent > 0) {
15810 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
15812 p->heredoc_line_indent = 0;
15818 str = STR_NEW(ptr, ptr_end - ptr);
15819 if (ptr_end < p->lex.pend)
rb_str_cat(str,
"\n", 1);
15821 if (p->heredoc_indent > 0) {
15824 if (nextc(p) == -1) {
15830 }
while (!whole_match_p(p, eos, len, indent));
15836 int t = parser_peek_variable_name(p);
15837 if (p->heredoc_line_indent != -1) {
15838 if (p->heredoc_indent > p->heredoc_line_indent) {
15839 p->heredoc_indent = p->heredoc_line_indent;
15841 p->heredoc_line_indent = -1;
15850 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
15851 if (p->eofp)
goto error;
15855 if (c ==
'\\') p->heredoc_line_indent = -1;
15857 str = STR_NEW3(tok(p), toklen(p), enc, func);
15859 set_yylval_str(str);
15861 if (bol) yylval.node->flags |= NODE_FL_NEWLINE;
15863 flush_string_content(p, enc);
15864 return tSTRING_CONTENT;
15866 tokadd(p, nextc(p));
15867 if (p->heredoc_indent > 0) {
15872 if ((c = nextc(p)) == -1)
goto error;
15873 }
while (!whole_match_p(p, eos, len, indent));
15874 str = STR_NEW3(tok(p), toklen(p), enc, func);
15876 dispatch_heredoc_end(p);
15878 str = ripper_new_yylval(p, ripper_token2eventid(tSTRING_CONTENT),
15881 heredoc_restore(p, &p->lex.strterm->u.heredoc);
15883 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
15884 set_yylval_str(str);
15886 if (bol) yylval.node->flags |= NODE_FL_NEWLINE;
15888 return tSTRING_CONTENT;
15898 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `%c' operator", WARN_I(c));
15901 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator", WARN_I(c));
15916 ID id = get_id(lhs);
15918 switch (id_type(
id)) {
15922 # define ERR(mesg) yyerror0(mesg)
15924 # define ERR(mesg) (dispatch2(param_error, WARN_S(mesg), lhs), ripper_error(p))
15927 ERR(
"formal argument cannot be a constant");
15930 ERR(
"formal argument cannot be an instance variable");
15933 ERR(
"formal argument cannot be a global variable");
15936 ERR(
"formal argument cannot be a class variable");
15939 ERR(
"formal argument must be local variable");
15943 shadowing_lvar(p,
id);
15950 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
15955 parser_encode_length(
struct parser_params *p,
const char *name,
long len)
15959 if (len > 5 && name[nlen = len - 5] ==
'-') {
15960 if (
rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
15963 if (len > 4 && name[nlen = len - 4] ==
'-') {
15966 if (
rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
15967 !(len == 8 &&
rb_memcicmp(name,
"utf8-mac", len) == 0))
15975 parser_set_encode(
struct parser_params *p,
const char *name)
15982 excargs[1] =
rb_sprintf(
"unknown encoding name: %s", name);
15996 if (p->debug_lines) {
15997 VALUE lines = p->debug_lines;
15999 for (i = 0; i < n; ++i) {
16009 const char *ptr = p->lex.pbeg, *ptr_end = p->lex.pcur - 1;
16010 if (p->line_count != (p->has_shebang ? 2 : 1))
return 0;
16011 while (ptr < ptr_end) {
16012 if (!
ISSPACE(*ptr))
return 0;
16018 typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
16019 typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
16021 static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
16024 magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
16026 if (!comment_at_top(p)) {
16029 parser_set_encode(p, val);
16033 parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
16036 case 't':
case 'T':
16041 case 'f':
case 'F':
16047 return parser_invalid_pragma_value(p, name, val);
16051 parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
16053 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
16058 parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
16060 int b = parser_get_bool(p, name, val);
16061 if (b >= 0) p->token_info_enabled = b;
16065 parser_set_compile_option_flag(
struct parser_params *p,
const char *name,
const char *val)
16069 if (p->token_seen) {
16070 rb_warning1(
"`%s' is ignored after any tokens", WARN_S(name));
16074 b = parser_get_bool(p, name, val);
16077 if (!p->compile_option)
16078 p->compile_option =
rb_obj_hide(rb_ident_hash_new());
16084 parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
16086 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
16087 if (*s ==
' ' || *s ==
'\t')
continue;
16088 if (*s ==
'#')
break;
16089 rb_warning1(
"`%s' is ignored unless in comment-only line", WARN_S(name));
16094 case 'n':
case 'N':
16096 p->ctxt.shareable_constant_value = shareable_none;
16100 case 'l':
case 'L':
16102 p->ctxt.shareable_constant_value = shareable_literal;
16106 case 'e':
case 'E':
16107 if (
STRCASECMP(val,
"experimental_copy") == 0) {
16108 p->ctxt.shareable_constant_value = shareable_copy;
16111 if (
STRCASECMP(val,
"experimental_everything") == 0) {
16112 p->ctxt.shareable_constant_value = shareable_everything;
16117 parser_invalid_pragma_value(p, name, val);
16120 # if WARN_PAST_SCOPE
16122 parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
16124 int b = parser_get_bool(p, name, val);
16125 if (b >= 0) p->past_scope_enabled = b;
16131 rb_magic_comment_setter_t func;
16132 rb_magic_comment_length_t length;
16136 {
"coding", magic_comment_encoding, parser_encode_length},
16137 {
"encoding", magic_comment_encoding, parser_encode_length},
16138 {
"frozen_string_literal", parser_set_compile_option_flag},
16139 {
"shareable_constant_value", parser_set_shareable_constant_value},
16140 {
"warn_indent", parser_set_token_info},
16141 # if WARN_PAST_SCOPE
16142 {
"warn_past_scope", parser_set_past_scope},
16146 static const char *
16147 magic_comment_marker(
const char *str,
long len)
16154 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
16155 return str + i + 1;
16160 if (i + 1 >= len)
return 0;
16161 if (str[i+1] !=
'-') {
16164 else if (str[i-1] !=
'-') {
16168 return str + i + 2;
16180 parser_magic_comment(
struct parser_params *p,
const char *str,
long len)
16183 VALUE name = 0, val = 0;
16184 const char *beg, *end, *vbeg, *vend;
16185 #define str_copy(_s, _p, _n) ((_s) \
16186 ? (void)(rb_str_resize((_s), (_n)), \
16187 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
16188 : (void)((_s) = STR_NEW((_p), (_n))))
16190 if (len <= 7)
return FALSE;
16191 if (!!(beg = magic_comment_marker(str, len))) {
16192 if (!(end = magic_comment_marker(beg, str + len - beg)))
16196 len = end - beg - 3;
16206 for (; len > 0 && *str; str++, --len) {
16208 case '\'':
case '"':
case ':':
case ';':
16213 for (beg = str; len > 0; str++, --len) {
16215 case '\'':
case '"':
case ':':
case ';':
16223 for (end = str; len > 0 &&
ISSPACE(*str); str++, --len);
16226 if (!indicator)
return FALSE;
16230 do str++;
while (--len > 0 &&
ISSPACE(*str));
16233 for (vbeg = ++str; --len > 0 && *str !=
'"'; str++) {
16234 if (*str ==
'\\') {
16246 for (vbeg = str; len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --len, str++);
16250 while (len > 0 && (*str ==
';' ||
ISSPACE(*str))) --len, str++;
16253 while (len > 0 && (
ISSPACE(*str))) --len, str++;
16254 if (len)
return FALSE;
16258 str_copy(name, beg, n);
16260 for (i = 0; i < n; ++i) {
16261 if (s[i] ==
'-') s[i] =
'_';
16264 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
16267 n = (*mc->length)(p, vbeg, n);
16269 str_copy(val, vbeg, n);
16273 }
while (++mc < magic_comments + numberof(magic_comments));
16275 str_copy(val, vbeg, vend - vbeg);
16284 set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
16287 const char *beg = str;
16291 if (send - str <= 6)
return;
16293 case 'C':
case 'c': str += 6;
continue;
16294 case 'O':
case 'o': str += 5;
continue;
16295 case 'D':
case 'd': str += 4;
continue;
16296 case 'I':
case 'i': str += 3;
continue;
16297 case 'N':
case 'n': str += 2;
continue;
16298 case 'G':
case 'g': str += 1;
continue;
16299 case '=':
case ':':
16313 if (++str >= send)
return;
16316 if (*str !=
'=' && *str !=
':')
return;
16321 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
16322 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
16330 int c = nextc0(p, FALSE);
16334 if (peek(p,
'!')) p->has_shebang = 1;
16337 if (p->lex.pend - p->lex.pcur >= 2 &&
16338 (
unsigned char)p->lex.pcur[0] == 0xbb &&
16339 (
unsigned char)p->lex.pcur[1] == 0xbf) {
16343 if (p->debug_lines) {
16347 p->lex.pbeg = p->lex.pcur;
16359 #define ambiguous_operator(tok, op, syn) ( \
16360 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
16361 rb_warning0("even though it seems like "syn""))
16363 #define ambiguous_operator(tok, op, syn) \
16364 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
16366 #define warn_balanced(tok, op, syn) ((void) \
16367 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
16368 space_seen && !ISSPACE(c) && \
16369 (ambiguous_operator(tok, op, syn), 0)), \
16370 (enum yytokentype)(tok))
16373 parse_rational(
struct parser_params *p,
char *str,
int len,
int seen_point)
16376 char *point = &str[seen_point];
16377 size_t fraclen = len-seen_point-1;
16378 memmove(point, point+1, fraclen+1);
16383 static enum yytokentype
16386 yyerror0(
"numeric literal without digits");
16387 if (peek(p,
'_')) nextc(p);
16389 return set_integer_literal(p,
INT2FIX(0), 0);
16392 static enum yytokentype
16395 int is_float, seen_point, seen_e, nondigit;
16398 is_float = seen_point = seen_e = nondigit = 0;
16399 SET_LEX_STATE(EXPR_END);
16401 if (c ==
'-' || c ==
'+') {
16406 int start = toklen(p);
16408 if (c ==
'x' || c ==
'X') {
16414 if (nondigit)
break;
16421 }
while ((c = nextc(p)) != -1);
16425 if (toklen(p) == start) {
16426 return no_digits(p);
16428 else if (nondigit)
goto trailing_uc;
16429 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
16430 return set_integer_literal(p,
rb_cstr_to_inum(tok(p), 16, FALSE), suffix);
16432 if (c ==
'b' || c ==
'B') {
16435 if (c ==
'0' || c ==
'1') {
16438 if (nondigit)
break;
16442 if (c !=
'0' && c !=
'1')
break;
16445 }
while ((c = nextc(p)) != -1);
16449 if (toklen(p) == start) {
16450 return no_digits(p);
16452 else if (nondigit)
goto trailing_uc;
16453 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
16454 return set_integer_literal(p,
rb_cstr_to_inum(tok(p), 2, FALSE), suffix);
16456 if (c ==
'd' || c ==
'D') {
16462 if (nondigit)
break;
16469 }
while ((c = nextc(p)) != -1);
16473 if (toklen(p) == start) {
16474 return no_digits(p);
16476 else if (nondigit)
goto trailing_uc;
16477 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
16478 return set_integer_literal(p,
rb_cstr_to_inum(tok(p), 10, FALSE), suffix);
16484 if (c ==
'o' || c ==
'O') {
16487 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
16488 return no_digits(p);
16491 if (c >=
'0' && c <=
'7') {
16496 if (nondigit)
break;
16500 if (c < '0' || c >
'9')
break;
16501 if (c >
'7')
goto invalid_octal;
16504 }
while ((c = nextc(p)) != -1);
16505 if (toklen(p) > start) {
16508 if (nondigit)
goto trailing_uc;
16509 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
16510 return set_integer_literal(p,
rb_cstr_to_inum(tok(p), 8, FALSE), suffix);
16517 if (c >
'7' && c <=
'9') {
16519 yyerror0(
"Invalid octal digit");
16521 else if (c ==
'.' || c ==
'e' || c ==
'E') {
16526 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
16527 return set_integer_literal(p,
INT2FIX(0), suffix);
16533 case '0':
case '1':
case '2':
case '3':
case '4':
16534 case '5':
case '6':
case '7':
case '8':
case '9':
16540 if (nondigit)
goto trailing_uc;
16541 if (seen_point || seen_e) {
16546 if (c0 == -1 || !
ISDIGIT(c0)) {
16552 seen_point = toklen(p);
16571 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
16576 tokadd(p, nondigit);
16580 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
16584 if (nondigit)
goto decode_num;
16598 literal_flush(p, p->lex.pcur - 1);
16599 YYLTYPE loc = RUBY_INIT_YYLLOC();
16600 compile_error(p,
"trailing `%c' in number", nondigit);
16601 parser_show_error_line(p, &loc);
16605 enum yytokentype
type = tFLOAT;
16608 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
16609 if (suffix & NUM_SUFFIX_R) {
16611 v = parse_rational(p, tok(p), toklen(p), seen_point);
16614 double d =
strtod(tok(p), 0);
16615 if (errno == ERANGE) {
16616 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
16621 return set_number_literal(p, v,
type, suffix);
16623 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
16624 return set_integer_literal(p,
rb_cstr_to_inum(tok(p), 10, FALSE), suffix);
16627 static enum yytokentype
16635 SET_LEX_STATE(EXPR_VALUE);
16640 compile_error(p,
"incomplete character syntax");
16645 int c2 = escaped_control_code(c);
16647 WARN_SPACE_CHAR(c2,
"?");
16652 SET_LEX_STATE(EXPR_VALUE);
16657 if (!parser_isascii(p)) {
16658 if (tokadd_mbchar(p, c) == -1)
return 0;
16661 p->lex.pcur < p->lex.pend && is_identchar(p->lex.pcur, p->lex.pend, p->enc)) {
16663 const char *start = p->lex.pcur - 1, *ptr = start;
16665 int n = parser_precise_mbclen(p, ptr);
16666 if (n < 0)
return -1;
16668 }
while (ptr < p->lex.pend && is_identchar(ptr, p->lex.pend, p->enc));
16669 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
16670 " a conditional operator, put a space after `?'",
16671 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
16675 else if (c ==
'\\') {
16676 if (peek(p,
'u')) {
16679 tokadd_utf8(p, &enc, -1, 0, 0);
16681 else if (!lex_eol_p(p) && !(c = *p->lex.pcur,
ISASCII(c))) {
16683 if (tokadd_mbchar(p, c) == -1)
return 0;
16686 c = read_escape(p, 0, &enc);
16694 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
16695 set_yylval_str(lit);
16696 SET_LEX_STATE(EXPR_END);
16700 static enum yytokentype
16701 parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
16704 const char *ptok = p->lex.pcur;
16712 if (c == -1)
goto unterminated;
16715 if (!
ISASCII(c))
goto unknown;
16723 c = parser_precise_mbclen(p, p->lex.pcur);
16724 if (c < 0)
return 0;
16726 yyerror0(
"unknown type of %string");
16732 compile_error(p,
"unterminated quoted string meets end of file");
16736 if (term ==
'(') term =
')';
16737 else if (term ==
'[') term =
']';
16738 else if (term ==
'{') term =
'}';
16739 else if (term ==
'<') term =
'>';
16742 p->lex.ptok = ptok-1;
16745 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
16746 return tSTRING_BEG;
16749 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
16750 return tSTRING_BEG;
16753 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
16757 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
16758 return tQWORDS_BEG;
16761 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
16762 return tSYMBOLS_BEG;
16765 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
16766 return tQSYMBOLS_BEG;
16769 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
16770 return tXSTRING_BEG;
16773 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
16774 return tREGEXP_BEG;
16777 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
16778 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
16782 yyerror0(
"unknown type of %string");
16786 if ((c = nextc(p)) ==
'=') {
16787 set_yylval_id(
'%');
16788 SET_LEX_STATE(EXPR_BEG);
16791 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
16794 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
16796 return warn_balanced(
'%',
"%%",
"string literal");
16803 if (tokadd_mbchar(p, c) == -1)
return -1;
16805 }
while (parser_is_identchar(p));
16811 tokenize_ident(
struct parser_params *p,
const enum lex_state_e last_state)
16813 ID ident = TOK_INTERN();
16815 set_yylval_name(ident);
16825 unsigned long n =
ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &len, &overflow);
16826 const unsigned long nth_ref_max =
16827 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
16831 if (overflow || n > nth_ref_max) {
16833 rb_warn1(
"`%s' is too big for a number variable, always nil", WARN_S(tok(p)));
16841 static enum yytokentype
16842 parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
16844 const char *ptr = p->lex.pcur;
16847 SET_LEX_STATE(EXPR_END);
16848 p->lex.ptok = ptr - 1;
16854 if (parser_is_identchar(p)) {
16886 if (parser_is_identchar(p)) {
16887 if (tokadd_mbchar(p, c) == -1)
return 0;
16895 set_yylval_name(TOK_INTERN());
16902 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
16907 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
16910 case '1':
case '2':
case '3':
16911 case '4':
case '5':
case '6':
16912 case '7':
case '8':
case '9':
16917 }
while (c != -1 &&
ISDIGIT(c));
16919 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
16921 c = parse_numvar(p);
16922 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
16926 if (!parser_is_identchar(p)) {
16927 YYLTYPE loc = RUBY_INIT_YYLLOC();
16929 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
16933 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
16935 parser_show_error_line(p, &loc);
16936 set_yylval_noname();
16944 if (tokadd_ident(p, c))
return 0;
16945 SET_LEX_STATE(EXPR_END);
16946 tokenize_ident(p, last_state);
16954 if (n < 0)
return false;
16956 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
16959 if (p->max_numparam == ORDINAL_PARAM) {
16960 compile_error(p,
"ordinary parameter is defined");
16963 struct vtable *args = p->lvtbl->args;
16964 if (p->max_numparam < n) {
16965 p->max_numparam = n;
16967 while (n > args->pos) {
16968 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
16974 static enum yytokentype
16975 parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
16977 const char *ptr = p->lex.pcur;
16978 enum yytokentype result = tIVAR;
16979 register int c = nextc(p);
16982 p->lex.ptok = ptr - 1;
16990 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
16991 if (c == -1 || !parser_is_identchar(p)) {
16993 RUBY_SET_YYLLOC(loc);
16994 if (result == tIVAR) {
16995 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
16998 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
17000 parser_show_error_line(p, &loc);
17001 set_yylval_noname();
17002 SET_LEX_STATE(EXPR_END);
17007 RUBY_SET_YYLLOC(loc);
17008 if (result == tIVAR) {
17009 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
17012 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
17014 parser_show_error_line(p, &loc);
17015 set_yylval_noname();
17016 SET_LEX_STATE(EXPR_END);
17020 if (tokadd_ident(p, c))
return 0;
17021 tokenize_ident(p, last_state);
17025 static enum yytokentype
17028 enum yytokentype result;
17030 const enum lex_state_e last_state = p->lex.state;
17035 if (tokadd_mbchar(p, c) == -1)
return 0;
17037 }
while (parser_is_identchar(p));
17038 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
17042 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
17043 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
17044 result = tIDENTIFIER;
17048 result = tCONSTANT;
17053 if (IS_LABEL_POSSIBLE()) {
17054 if (IS_LABEL_SUFFIX(0)) {
17055 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
17057 set_yylval_name(TOK_INTERN());
17065 kw = rb_reserved_word(tok(p), toklen(p));
17067 enum lex_state_e state = p->lex.state;
17068 if (IS_lex_state_for(state, EXPR_FNAME)) {
17069 SET_LEX_STATE(EXPR_ENDFN);
17070 set_yylval_name(
rb_intern2(tok(p), toklen(p)));
17073 SET_LEX_STATE(kw->state);
17074 if (IS_lex_state(EXPR_BEG)) {
17075 p->command_start = TRUE;
17077 if (kw->id[0] == keyword_do) {
17078 if (lambda_beginning_p()) {
17079 p->lex.lpar_beg = -1;
17080 return keyword_do_LAMBDA;
17082 if (COND_P())
return keyword_do_cond;
17083 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
17084 return keyword_do_block;
17087 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED)))
17090 if (kw->id[0] != kw->id[1])
17091 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
17097 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
17099 SET_LEX_STATE(EXPR_CMDARG);
17102 SET_LEX_STATE(EXPR_ARG);
17105 else if (p->lex.state == EXPR_FNAME) {
17106 SET_LEX_STATE(EXPR_ENDFN);
17109 SET_LEX_STATE(EXPR_END);
17112 ident = tokenize_ident(p, last_state);
17113 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
17114 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
17115 (result == tIDENTIFIER) &&
17116 lvar_defined(p, ident)) {
17117 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
17122 static enum yytokentype
17126 int space_seen = 0;
17129 enum lex_state_e last_state;
17130 int fallthru = FALSE;
17131 int token_seen = p->token_seen;
17133 if (p->lex.strterm) {
17134 if (p->lex.strterm->flags & STRTERM_HEREDOC) {
17135 return here_document(p, &p->lex.strterm->u.heredoc);
17139 return parse_string(p, &p->lex.strterm->u.literal);
17142 cmd_state = p->command_start;
17143 p->command_start = FALSE;
17144 p->token_seen = TRUE;
17146 last_state = p->lex.state;
17150 switch (c = nextc(p)) {
17162 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
17165 case ' ':
case '\t':
case '\f':
17169 while ((c = nextc(p))) {
17171 case ' ':
case '\t':
case '\f':
case '\r':
17180 dispatch_scan_event(p, tSP);
17185 p->token_seen = token_seen;
17187 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
17188 if (comment_at_top(p)) {
17189 set_file_encoding(p, p->lex.pcur, p->lex.pend);
17193 dispatch_scan_event(p, tCOMMENT);
17197 p->token_seen = token_seen;
17198 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
17199 !IS_lex_state(EXPR_LABELED));
17200 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
17202 dispatch_scan_event(p, tIGNORED_NL);
17205 if (!c && p->ctxt.in_kwarg) {
17206 goto normal_newline;
17211 switch (c = nextc(p)) {
17212 case ' ':
case '\t':
case '\f':
case '\r':
17218 if (space_seen) dispatch_scan_event(p, tSP);
17222 dispatch_delayed_token(p, tIGNORED_NL);
17223 if (peek(p,
'.') == (c ==
'&')) {
17225 dispatch_scan_event(p, tSP);
17230 p->ruby_sourceline--;
17231 p->lex.nextline = p->lex.lastline;
17234 if (p->lex.prevline && !p->eofp) p->lex.lastline = p->lex.prevline;
17236 p->lex.pend = p->lex.pcur = p->lex.pbeg +
RSTRING_LEN(p->lex.lastline);
17238 p->lex.ptok = p->lex.pcur;
17242 p->lex.ptok = p->lex.pcur;
17245 goto normal_newline;
17249 p->command_start = TRUE;
17250 SET_LEX_STATE(EXPR_BEG);
17254 if ((c = nextc(p)) ==
'*') {
17255 if ((c = nextc(p)) ==
'=') {
17256 set_yylval_id(idPow);
17257 SET_LEX_STATE(EXPR_BEG);
17261 if (IS_SPCARG(c)) {
17262 rb_warning0(
"`**' interpreted as argument prefix");
17265 else if (IS_BEG()) {
17269 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
17274 set_yylval_id(
'*');
17275 SET_LEX_STATE(EXPR_BEG);
17279 if (IS_SPCARG(c)) {
17280 rb_warning0(
"`*' interpreted as argument prefix");
17283 else if (IS_BEG()) {
17287 c = warn_balanced(
'*',
"*",
"argument prefix");
17290 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
17295 if (IS_AFTER_OPERATOR()) {
17296 SET_LEX_STATE(EXPR_ARG);
17302 SET_LEX_STATE(EXPR_BEG);
17316 if (word_match_p(p,
"begin", 5)) {
17317 int first_p = TRUE;
17320 dispatch_scan_event(p, tEMBDOC_BEG);
17324 dispatch_scan_event(p, tEMBDOC);
17329 compile_error(p,
"embedded document meets end of file");
17332 if (c ==
'=' && word_match_p(p,
"end", 3)) {
17338 dispatch_scan_event(p, tEMBDOC_END);
17343 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
17344 if ((c = nextc(p)) ==
'=') {
17345 if ((c = nextc(p)) ==
'=') {
17354 else if (c ==
'>') {
17363 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
17365 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
17366 int token = heredoc_identifier(p);
17367 if (token)
return token < 0 ? 0 : token;
17369 if (IS_AFTER_OPERATOR()) {
17370 SET_LEX_STATE(EXPR_ARG);
17373 if (IS_lex_state(EXPR_CLASS))
17374 p->command_start = TRUE;
17375 SET_LEX_STATE(EXPR_BEG);
17378 if ((c = nextc(p)) ==
'>') {
17385 if ((c = nextc(p)) ==
'=') {
17386 set_yylval_id(idLTLT);
17387 SET_LEX_STATE(EXPR_BEG);
17391 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
17397 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
17398 if ((c = nextc(p)) ==
'=') {
17402 if ((c = nextc(p)) ==
'=') {
17403 set_yylval_id(idGTGT);
17404 SET_LEX_STATE(EXPR_BEG);
17414 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
17415 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
17416 p->lex.ptok = p->lex.pcur-1;
17417 return tSTRING_BEG;
17420 if (IS_lex_state(EXPR_FNAME)) {
17421 SET_LEX_STATE(EXPR_ENDFN);
17424 if (IS_lex_state(EXPR_DOT)) {
17426 SET_LEX_STATE(EXPR_CMDARG);
17428 SET_LEX_STATE(EXPR_ARG);
17431 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
17432 return tXSTRING_BEG;
17435 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
17436 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
17437 p->lex.ptok = p->lex.pcur-1;
17438 return tSTRING_BEG;
17441 return parse_qmark(p, space_seen);
17444 if ((c = nextc(p)) ==
'&') {
17445 SET_LEX_STATE(EXPR_BEG);
17446 if ((c = nextc(p)) ==
'=') {
17447 set_yylval_id(idANDOP);
17448 SET_LEX_STATE(EXPR_BEG);
17454 else if (c ==
'=') {
17455 set_yylval_id(
'&');
17456 SET_LEX_STATE(EXPR_BEG);
17459 else if (c ==
'.') {
17460 set_yylval_id(idANDDOT);
17461 SET_LEX_STATE(EXPR_DOT);
17465 if (IS_SPCARG(c)) {
17467 (c = peekc_n(p, 1)) == -1 ||
17468 !(c ==
'\'' || c ==
'"' ||
17469 is_identchar((p->lex.pcur+1), p->lex.pend, p->enc))) {
17470 rb_warning0(
"`&' interpreted as argument prefix");
17474 else if (IS_BEG()) {
17478 c = warn_balanced(
'&',
"&",
"argument prefix");
17480 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
17484 if ((c = nextc(p)) ==
'|') {
17485 SET_LEX_STATE(EXPR_BEG);
17486 if ((c = nextc(p)) ==
'=') {
17487 set_yylval_id(idOROP);
17488 SET_LEX_STATE(EXPR_BEG);
17492 if (IS_lex_state_for(last_state, EXPR_BEG)) {
17500 set_yylval_id(
'|');
17501 SET_LEX_STATE(EXPR_BEG);
17504 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
17510 if (IS_AFTER_OPERATOR()) {
17511 SET_LEX_STATE(EXPR_ARG);
17519 set_yylval_id(
'+');
17520 SET_LEX_STATE(EXPR_BEG);
17523 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
17524 SET_LEX_STATE(EXPR_BEG);
17527 return parse_numeric(p,
'+');
17531 SET_LEX_STATE(EXPR_BEG);
17533 return warn_balanced(
'+',
"+",
"unary operator");
17537 if (IS_AFTER_OPERATOR()) {
17538 SET_LEX_STATE(EXPR_ARG);
17546 set_yylval_id(
'-');
17547 SET_LEX_STATE(EXPR_BEG);
17551 SET_LEX_STATE(EXPR_ENDFN);
17554 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
17555 SET_LEX_STATE(EXPR_BEG);
17558 return tUMINUS_NUM;
17562 SET_LEX_STATE(EXPR_BEG);
17564 return warn_balanced(
'-',
"-",
"unary operator");
17567 int is_beg = IS_BEG();
17568 SET_LEX_STATE(EXPR_BEG);
17569 if ((c = nextc(p)) ==
'.') {
17570 if ((c = nextc(p)) ==
'.') {
17571 if (p->ctxt.in_argdef) {
17572 SET_LEX_STATE(EXPR_ENDARG);
17575 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
17576 rb_warn0(
"... at EOL, should be parenthesized?");
17578 else if (p->lex.lpar_beg >= 0 && p->lex.lpar_beg+1 == p->lex.paren_nest) {
17579 if (IS_lex_state_for(last_state, EXPR_LABEL))
17582 return is_beg ? tBDOT3 : tDOT3;
17585 return is_beg ? tBDOT2 : tDOT2;
17589 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
17590 parse_numeric(p,
'.');
17592 yyerror0(
"unexpected fraction part after numeric literal");
17595 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
17597 SET_LEX_STATE(EXPR_END);
17598 p->lex.ptok = p->lex.pcur;
17601 set_yylval_id(
'.');
17602 SET_LEX_STATE(EXPR_DOT);
17606 case '0':
case '1':
case '2':
case '3':
case '4':
17607 case '5':
case '6':
case '7':
case '8':
case '9':
17608 return parse_numeric(p, c);
17613 SET_LEX_STATE(EXPR_ENDFN);
17614 p->lex.paren_nest--;
17620 SET_LEX_STATE(EXPR_END);
17621 p->lex.paren_nest--;
17626 if (!p->lex.brace_nest--)
return tSTRING_DEND;
17629 SET_LEX_STATE(EXPR_END);
17630 p->lex.paren_nest--;
17636 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
17637 SET_LEX_STATE(EXPR_BEG);
17640 set_yylval_id(idCOLON2);
17641 SET_LEX_STATE(EXPR_DOT);
17644 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
17646 c = warn_balanced(
':',
":",
"symbol literal");
17647 SET_LEX_STATE(EXPR_BEG);
17652 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
17655 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
17661 SET_LEX_STATE(EXPR_FNAME);
17666 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
17667 return tREGEXP_BEG;
17669 if ((c = nextc(p)) ==
'=') {
17670 set_yylval_id(
'/');
17671 SET_LEX_STATE(EXPR_BEG);
17675 if (IS_SPCARG(c)) {
17676 arg_ambiguous(p,
'/');
17677 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
17678 return tREGEXP_BEG;
17680 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
17681 return warn_balanced(
'/',
"/",
"regexp literal");
17684 if ((c = nextc(p)) ==
'=') {
17685 set_yylval_id(
'^');
17686 SET_LEX_STATE(EXPR_BEG);
17689 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
17694 SET_LEX_STATE(EXPR_BEG);
17695 p->command_start = TRUE;
17699 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
17703 if (IS_AFTER_OPERATOR()) {
17704 if ((c = nextc(p)) !=
'@') {
17707 SET_LEX_STATE(EXPR_ARG);
17710 SET_LEX_STATE(EXPR_BEG);
17718 else if (!space_seen) {
17721 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
17724 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
17725 rb_warning0(
"parentheses after method name is interpreted as "
17726 "an argument list, not a decomposed argument");
17728 p->lex.paren_nest++;
17731 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
17735 p->lex.paren_nest++;
17736 if (IS_AFTER_OPERATOR()) {
17737 if ((c = nextc(p)) ==
']') {
17738 p->lex.paren_nest--;
17739 SET_LEX_STATE(EXPR_ARG);
17740 if ((c = nextc(p)) ==
'=') {
17747 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
17750 else if (IS_BEG()) {
17753 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
17756 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
17762 ++p->lex.brace_nest;
17763 if (lambda_beginning_p())
17765 else if (IS_lex_state(EXPR_LABELED))
17767 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
17769 else if (IS_lex_state(EXPR_ENDARG))
17773 if (c != tLBRACE) {
17774 p->command_start = TRUE;
17775 SET_LEX_STATE(EXPR_BEG);
17778 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
17780 ++p->lex.paren_nest;
17789 dispatch_scan_event(p, tSP);
17792 if (c ==
' ')
return tSP;
17798 return parse_percent(p, space_seen, last_state);
17801 return parse_gvar(p, last_state);
17804 return parse_atmark(p, last_state);
17807 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
17808 p->ruby__end__seen = 1;
17814 dispatch_scan_event(p, k__END__);
17822 if (!parser_is_identchar(p)) {
17823 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
17832 return parse_ident(p, c, cmd_state);
17835 static enum yytokentype
17838 enum yytokentype t;
17842 t = parser_yylex(p);
17844 if (p->lex.strterm && (p->lex.strterm->flags & STRTERM_HEREDOC))
17845 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*yylloc);
17847 RUBY_SET_YYLLOC(*yylloc);
17849 if (has_delayed_token(p))
17850 dispatch_delayed_token(p, t);
17852 dispatch_scan_event(p, t);
17857 #define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
17862 NODE *n = rb_ast_newnode(p->ast,
type);
17864 rb_node_init(n,
type, a0, a1, a2);
17866 nd_set_loc(n, loc);
17867 nd_set_node_id(n, parser_get_node_id(p));
17875 nd_set_line(nd, loc->beg_pos.lineno);
17880 static enum node_type
17881 nodetype(
NODE *node)
17883 return (
enum node_type)nd_type(node);
17887 nodeline(
NODE *node)
17889 return nd_line(node);
17893 newline_node(
NODE *node)
17896 node = remove_begin(node);
17897 node->flags |= NODE_FL_NEWLINE;
17907 nd_set_line(node, nd_line(orig));
17925 NODE *end, *h = head, *nd;
17927 if (tail == 0)
return head;
17929 if (h == 0)
return tail;
17930 switch (nd_type(h)) {
17937 parser_warning(p, h,
"unused literal ignored");
17940 h = end = NEW_BLOCK(head, &head->nd_loc);
17950 switch (nd_type(nd)) {
17957 parser_warning(p, tail,
"statement not reached");
17965 if (!nd_type_p(tail, NODE_BLOCK)) {
17966 tail = NEW_BLOCK(tail, &tail->nd_loc);
17967 tail->nd_end = tail;
17969 end->nd_next = tail;
17970 h->nd_end = tail->nd_end;
17971 nd_set_last_loc(head, nd_last_loc(tail));
17981 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
17982 if (list->nd_next) {
17983 last = list->nd_next->nd_end;
17989 list->nd_alen += 1;
17990 last->nd_next = NEW_LIST(item, &item->nd_loc);
17991 list->nd_next->nd_end = last->nd_next;
17993 nd_set_last_loc(list, nd_last_loc(item));
18000 list_concat(
NODE *head,
NODE *tail)
18004 if (head->nd_next) {
18005 last = head->nd_next->nd_end;
18011 head->nd_alen += tail->nd_alen;
18012 last->nd_next = tail;
18013 if (tail->nd_next) {
18014 head->nd_next->nd_end = tail->nd_next->nd_end;
18017 head->nd_next->nd_end = tail;
18020 nd_set_last_loc(head, nd_last_loc(tail));
18028 if (
NIL_P(tail))
return 1;
18030 compile_error(p,
"string literal encodings differ (%s / %s)",
18042 string_literal_head(
enum node_type htype,
NODE *head)
18044 if (htype != NODE_DSTR)
return Qfalse;
18045 if (head->nd_next) {
18046 head = head->nd_next->nd_end->nd_head;
18047 if (!head || !nd_type_p(head, NODE_STR))
return Qfalse;
18049 const VALUE lit = head->nd_lit;
18058 enum node_type htype;
18061 if (!head)
return tail;
18062 if (!tail)
return head;
18064 htype = nd_type(head);
18065 if (htype == NODE_EVSTR) {
18066 head = new_dstr(p, head, loc);
18069 if (p->heredoc_indent > 0) {
18072 nd_set_type(head, NODE_DSTR);
18074 return list_append(p, head, tail);
18079 switch (nd_type(tail)) {
18081 if ((lit = string_literal_head(htype, head)) !=
Qfalse) {
18085 lit = head->nd_lit;
18087 if (htype == NODE_STR) {
18088 if (!literal_concat0(p, lit, tail->nd_lit)) {
18090 rb_discard_node(p, head);
18091 rb_discard_node(p, tail);
18094 rb_discard_node(p, tail);
18097 list_append(p, head, tail);
18102 if (htype == NODE_STR) {
18103 if (!literal_concat0(p, head->nd_lit, tail->nd_lit))
18105 tail->nd_lit = head->nd_lit;
18106 rb_discard_node(p, head);
18109 else if (
NIL_P(tail->nd_lit)) {
18111 head->nd_alen += tail->nd_alen - 1;
18112 if (!head->nd_next) {
18113 head->nd_next = tail->nd_next;
18115 else if (tail->nd_next) {
18116 head->nd_next->nd_end->nd_next = tail->nd_next;
18117 head->nd_next->nd_end = tail->nd_next->nd_end;
18119 rb_discard_node(p, tail);
18121 else if ((lit = string_literal_head(htype, head)) !=
Qfalse) {
18122 if (!literal_concat0(p, lit, tail->nd_lit))
18124 tail->nd_lit =
Qnil;
18128 list_concat(head, NEW_NODE(NODE_LIST, NEW_STR(tail->nd_lit, loc), tail->nd_alen, tail->nd_next, loc));
18133 if (htype == NODE_STR) {
18134 nd_set_type(head, NODE_DSTR);
18137 list_append(p, head, tail);
18146 if (nd_type_p(node, NODE_EVSTR)) {
18147 node = new_dstr(p, node, &node->nd_loc);
18158 switch (nd_type(node)) {
18160 nd_set_type(node, NODE_DSTR);
18168 return NEW_EVSTR(head, loc);
18174 VALUE lit = STR_NEW0();
18175 NODE *dstr = NEW_DSTR(lit, loc);
18177 return list_append(p, dstr, node);
18187 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
18188 nd_set_line(expr, op_loc->beg_pos.lineno);
18197 opcall = NEW_OPCALL(recv,
id, 0, loc);
18198 nd_set_line(opcall, op_loc->beg_pos.lineno);
18205 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
18206 nd_set_line(qcall, op_loc->beg_pos.lineno);
18214 if (block) block_dup_check(p, args, block);
18215 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
18216 if (block) ret = method_add_block(p, ret, block, loc);
18221 #define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? (node)->nd_body : node)
18226 int line = op_loc->beg_pos.lineno;
18230 if (node1 && (n = nd_once_body(node1)) != 0) {
18231 switch (nd_type(n)) {
18234 NODE *match = NEW_MATCH2(node1, node2, loc);
18235 nd_set_line(match, line);
18241 const VALUE lit = n->nd_lit;
18242 NODE *match = NEW_MATCH2(node1, node2, loc);
18243 match->nd_args = reg_named_capture_assign(p, lit, loc);
18244 nd_set_line(match, line);
18250 if (node2 && (n = nd_once_body(node2)) != 0) {
18253 switch (nd_type(n)) {
18258 match3 = NEW_MATCH3(node2, node1, loc);
18263 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
18264 nd_set_line(n, line);
18268 # if WARN_PAST_SCOPE
18272 struct vtable *past = p->lvtbl->past;
18274 if (vtable_included(past,
id))
return 1;
18285 NODE *outer = local->numparam.outer;
18286 NODE *inner = local->numparam.inner;
18287 if (outer || inner) {
18288 NODE *used = outer ? outer : inner;
18289 compile_error(p,
"numbered parameter is already used in\n"
18290 "%s:%d: %s block here",
18291 p->ruby_sourcefile, nd_line(used),
18292 outer ?
"outer" :
"inner");
18293 parser_show_error_line(p, &used->nd_loc);
18306 return NEW_SELF(loc);
18308 return NEW_NIL(loc);
18310 return NEW_TRUE(loc);
18311 case keyword_false:
18312 return NEW_FALSE(loc);
18313 case keyword__FILE__:
18315 VALUE file = p->ruby_sourcefile_string;
18320 node = NEW_STR(file, loc);
18324 case keyword__LINE__:
18325 return NEW_LIT(
INT2FIX(p->tokline), loc);
18326 case keyword__ENCODING__:
18332 switch (id_type(
id)) {
18334 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
18335 if (NUMPARAM_ID_P(
id) && numparam_nested_p(p))
return 0;
18336 if (
id == p->cur_arg) {
18337 compile_error(p,
"circular argument reference - %"PRIsWARN,
rb_id2str(
id));
18340 if (vidp) *vidp |= LVAR_USED;
18341 node = NEW_DVAR(
id, loc);
18344 if (local_id_ref(p,
id, &vidp)) {
18345 if (
id == p->cur_arg) {
18346 compile_error(p,
"circular argument reference - %"PRIsWARN,
rb_id2str(
id));
18349 if (vidp) *vidp |= LVAR_USED;
18350 node = NEW_LVAR(
id, loc);
18353 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
18354 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
18355 if (numparam_nested_p(p))
return 0;
18356 node = NEW_DVAR(
id, loc);
18358 if (!local->numparam.current) local->numparam.current = node;
18361 # if WARN_PAST_SCOPE
18363 rb_warning1(
"possible reference to past scope - %"PRIsWARN,
rb_id2str(
id));
18367 return NEW_VCALL(
id, loc);
18369 return NEW_GVAR(
id, loc);
18371 return NEW_IVAR(
id, loc);
18373 return NEW_CONST(
id, loc);
18375 return NEW_CVAR(
id, loc);
18377 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get",
rb_id2str(
id));
18382 opt_arg_append(
NODE *opt_list,
NODE *opt)
18384 NODE *opts = opt_list;
18385 opts->nd_loc.end_pos = opt->nd_loc.end_pos;
18387 while (opts->nd_next) {
18388 opts = opts->nd_next;
18389 opts->nd_loc.end_pos = opt->nd_loc.end_pos;
18391 opts->nd_next = opt;
18397 kwd_append(
NODE *kwlist,
NODE *kw)
18400 NODE *kws = kwlist;
18401 kws->nd_loc.end_pos = kw->nd_loc.end_pos;
18402 while (kws->nd_next) {
18403 kws = kws->nd_next;
18404 kws->nd_loc.end_pos = kw->nd_loc.end_pos;
18414 return NEW_DEFINED(remove_begin_all(expr), loc);
18420 enum node_type
type = nd_type(symbol);
18423 nd_set_type(symbol, NODE_DSYM);
18426 nd_set_type(symbol, NODE_LIT);
18430 compile_error(p,
"unexpected node as symbol: %s", ruby_node_name(
type));
18432 return list_append(p, symbols, symbol);
18442 node = NEW_LIT(reg_compile(p, STR_NEW0(), options), loc);
18446 switch (nd_type(node)) {
18449 VALUE src = node->nd_lit;
18450 nd_set_type(node, NODE_LIT);
18451 nd_set_loc(node, loc);
18457 node = NEW_NODE(NODE_DSTR, lit, 1, NEW_LIST(node, loc), loc);
18461 nd_set_type(node, NODE_DREGX);
18462 nd_set_loc(node, loc);
18463 node->nd_cflag = options & RE_OPTION_MASK;
18464 if (!
NIL_P(node->nd_lit)) reg_fragment_check(p, node->nd_lit, options);
18465 for (list = (prev = node)->nd_next; list; list = list->nd_next) {
18466 NODE *frag = list->nd_head;
18467 enum node_type
type = nd_type(frag);
18468 if (
type == NODE_STR || (
type == NODE_DSTR && !frag->nd_next)) {
18469 VALUE tail = frag->nd_lit;
18470 if (reg_fragment_check(p, tail, options) && prev && !
NIL_P(prev->nd_lit)) {
18471 VALUE lit = prev == node ? prev->nd_lit : prev->nd_head->nd_lit;
18472 if (!literal_concat0(p, lit, tail)) {
18473 return NEW_NIL(loc);
18476 prev->nd_next = list->nd_next;
18477 rb_discard_node(p, list->nd_head);
18478 rb_discard_node(p, list);
18489 if (!node->nd_next) {
18490 VALUE src = node->nd_lit;
18491 nd_set_type(node, NODE_LIT);
18494 if (options & RE_OPTION_ONCE) {
18495 node = NEW_NODE(NODE_ONCE, 0, node, 0, loc);
18506 return NEW_KW_ARG(0, (k), loc);
18513 VALUE lit = STR_NEW0();
18514 NODE *xstr = NEW_XSTR(lit, loc);
18518 switch (nd_type(node)) {
18520 nd_set_type(node, NODE_XSTR);
18521 nd_set_loc(node, loc);
18524 nd_set_type(node, NODE_DXSTR);
18525 nd_set_loc(node, loc);
18528 node = NEW_NODE(NODE_DXSTR,
Qnil, 1, NEW_LIST(node, loc), loc);
18539 if (!arg || !p->case_labels)
return;
18541 lit = rb_node_case_when_optimizable_literal(arg);
18542 if (lit ==
Qundef)
return;
18543 if (nd_type_p(arg, NODE_STR)) {
18547 if (
NIL_P(p->case_labels)) {
18552 if (!
NIL_P(line)) {
18553 rb_warning1(
"duplicated `when' clause with line %d is ignored",
18565 if (is_notop_id(
id)) {
18566 switch (
id & ID_SCOPE_MASK) {
18567 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
18570 if (dyna_in_block(p)) {
18571 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
18573 if (local_id(p,
id))
return 1;
18578 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get",
rb_id2str(
id));
18585 VALUE src = 0, err;
18587 if (ripper_is_node_yylval(re)) {
18588 src = RNODE(re)->nd_cval;
18589 re = RNODE(re)->nd_rval;
18591 if (ripper_is_node_yylval(opt)) {
18592 options = (int)RNODE(opt)->nd_tag;
18593 opt = RNODE(opt)->nd_rval;
18595 if (src &&
NIL_P(parser_reg_compile(p, src, options, &err))) {
18596 compile_error(p,
"%"PRIsVALUE, err);
18598 return dispatch2(regexp_literal, re, opt);
18602 static inline enum lex_state_e
18603 parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
18606 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
18608 return p->lex.state = ls;
18612 static const char rb_parser_lex_state_names[][8] = {
18613 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
18614 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
18615 "LABEL",
"LABELED",
"FITEM",
18619 append_lex_state_name(
enum lex_state_e state,
VALUE buf)
18622 unsigned int mask = 1;
18623 static const char none[] =
"NONE";
18625 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
18626 if ((
unsigned)state & mask) {
18643 VALUE mesg = p->debug_buffer;
18646 p->debug_buffer =
Qnil;
18655 rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
18656 enum lex_state_e to,
int line)
18660 append_lex_state_name(from, mesg);
18662 append_lex_state_name(to, mesg);
18664 flush_debug_buffer(p, p->debug_output, mesg);
18669 rb_parser_lex_state_name(
enum lex_state_e state)
18671 return rb_fstring(append_lex_state_name(state,
rb_str_new(0, 0)));
18675 append_bitstack_value(stack_type stack,
VALUE mesg)
18681 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
18682 for (; mask && !(stack & mask); mask >>= 1)
continue;
18683 for (; mask; mask >>= 1)
rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
18688 rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
18689 const char *name,
int line)
18692 append_bitstack_value(stack, mesg);
18694 flush_debug_buffer(p, p->debug_output, mesg);
18698 rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
18710 append_lex_state_name(p->lex.state, mesg);
18711 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
18713 append_bitstack_value(p->cond_stack, mesg);
18714 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
18716 append_bitstack_value(p->cmdarg_stack, mesg);
18717 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
18724 rb_parser_set_pos(
YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
18726 yylloc->beg_pos.lineno = sourceline;
18727 yylloc->beg_pos.column = beg_pos;
18728 yylloc->end_pos.lineno = sourceline;
18729 yylloc->end_pos.column = end_pos;
18736 int sourceline = here->sourceline;
18737 int beg_pos = (int)here->offset - here->quote
18738 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
18739 int end_pos = (int)here->offset + here->length + here->quote;
18741 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
18747 int sourceline = p->ruby_sourceline;
18748 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
18749 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
18750 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
18756 int sourceline = p->ruby_sourceline;
18757 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
18758 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
18759 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
18766 if (!
id)
return -1;
18769 *err =
"Can't change the value of self";
18772 *err =
"Can't assign to nil";
18775 *err =
"Can't assign to true";
18777 case keyword_false:
18778 *err =
"Can't assign to false";
18780 case keyword__FILE__:
18781 *err =
"Can't assign to __FILE__";
18783 case keyword__LINE__:
18784 *err =
"Can't assign to __LINE__";
18786 case keyword__ENCODING__:
18787 *err =
"Can't assign to __ENCODING__";
18790 switch (id_type(
id)) {
18792 if (dyna_in_block(p)) {
18793 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
18794 compile_error(p,
"Can't assign to numbered parameter _%d",
18795 NUMPARAM_ID_TO_IDX(
id));
18798 if (dvar_curr(p,
id))
return NODE_DASGN;
18799 if (dvar_defined(p,
id))
return NODE_DASGN;
18800 if (local_id(p,
id))
return NODE_LASGN;
18805 if (!local_id(p,
id)) local_var(p,
id);
18809 case ID_GLOBAL:
return NODE_GASGN;
18810 case ID_INSTANCE:
return NODE_IASGN;
18812 if (!p->ctxt.in_def)
return NODE_CDECL;
18813 *err =
"dynamic constant assignment";
18815 case ID_CLASS:
return NODE_CVASGN;
18817 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set",
rb_id2str(
id));
18826 const char *err = 0;
18827 int node_type = assignable0(p,
id, &err);
18828 switch (node_type) {
18829 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
18830 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
18831 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
18832 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
18833 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, loc);
18834 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
18836 if (err) yyerror1(loc, err);
18837 return NEW_BEGIN(0, loc);
18843 const char *err = 0;
18844 assignable0(p, get_id(lhs), &err);
18845 if (err) lhs = assign_error(p, err, lhs);
18851 is_private_local_id(
ID name)
18854 if (name == idUScore)
return 1;
18855 if (!is_local_id(name))
return 0;
18864 if (dyna_in_block(p)) {
18865 if (dvar_curr(p, name)) {
18866 if (is_private_local_id(name))
return 1;
18867 yyerror0(
"duplicated argument name");
18869 else if (dvar_defined(p, name) || local_id(p, name)) {
18870 vtable_add(p->lvtbl->vars, name);
18871 if (p->lvtbl->used) {
18872 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
18878 if (local_id(p, name)) {
18879 if (is_private_local_id(name))
return 1;
18880 yyerror0(
"duplicated argument name");
18889 shadowing_lvar_0(p, name);
18897 if (!is_local_id(name)) {
18898 compile_error(p,
"invalid local variable - %"PRIsVALUE,
18902 if (!shadowing_lvar_0(p, name))
return;
18910 return NEW_ATTRASGN(recv, tASET, idx, loc);
18916 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
18917 compile_error(p,
"both block arg and actual block given");
18925 return NEW_ATTRASGN(recv,
id, 0, loc);
18931 switch (nd_type(node)) {
18933 compile_error(p,
"Can't set variable $%ld", node->nd_nth);
18935 case NODE_BACK_REF:
18936 compile_error(p,
"Can't set variable $%c", (
int)node->nd_nth);
18946 return dispatch2(assign_error, mesg, expr);
18954 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
18955 switch (nd_type(node1)) {
18957 return list_append(p, node1, node2);
18958 case NODE_BLOCK_PASS:
18959 node1->nd_head = arg_append(p, node1->nd_head, node2, loc);
18960 node1->nd_loc.end_pos = node1->nd_head->nd_loc.end_pos;
18962 case NODE_ARGSPUSH:
18963 node1->nd_body = list_append(p, NEW_LIST(node1->nd_body, &node1->nd_body->nd_loc), node2);
18964 node1->nd_loc.end_pos = node1->nd_body->nd_loc.end_pos;
18965 nd_set_type(node1, NODE_ARGSCAT);
18968 if (!nd_type_p(node1->nd_body, NODE_LIST))
break;
18969 node1->nd_body = list_append(p, node1->nd_body, node2);
18970 node1->nd_loc.end_pos = node1->nd_body->nd_loc.end_pos;
18973 return NEW_ARGSPUSH(node1, node2, loc);
18979 if (!node2)
return node1;
18980 switch (nd_type(node1)) {
18981 case NODE_BLOCK_PASS:
18982 if (node1->nd_head)
18983 node1->nd_head = arg_concat(p, node1->nd_head, node2, loc);
18985 node1->nd_head = NEW_LIST(node2, loc);
18987 case NODE_ARGSPUSH:
18988 if (!nd_type_p(node2, NODE_LIST))
break;
18989 node1->nd_body = list_concat(NEW_LIST(node1->nd_body, loc), node2);
18990 nd_set_type(node1, NODE_ARGSCAT);
18993 if (!nd_type_p(node2, NODE_LIST) ||
18994 !nd_type_p(node1->nd_body, NODE_LIST))
break;
18995 node1->nd_body = list_concat(node1->nd_body, node2);
18998 return NEW_ARGSCAT(node1, node2, loc);
19005 if ((n1 = splat_array(args)) != 0) {
19006 return list_append(p, n1, last_arg);
19008 return arg_append(p, args, last_arg, loc);
19015 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
19016 return list_concat(n1, rest_arg);
19018 return arg_concat(p, args, rest_arg, loc);
19022 splat_array(
NODE* node)
19024 if (nd_type_p(node, NODE_SPLAT)) node = node->nd_head;
19025 if (nd_type_p(node, NODE_LIST))
return node;
19034 switch (nd_type(rhs)) {
19036 if (local_id_ref(p, rhs->nd_vid, &vidp)) {
19037 if (vidp) *vidp |= LVAR_USED;
19041 if (dvar_defined_ref(p, rhs->nd_vid, &vidp)) {
19042 if (vidp) *vidp |= LVAR_USED;
19047 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
19048 mark_lvar_used(p, rhs->nd_head);
19059 if (!nd_type_p(n, NODE_CALL)) {
19060 const YYLTYPE *loc = &n->nd_loc;
19068 for (; n && nd_type_p(n, NODE_COLON2); n = n->nd_head) {
19071 if (n && nd_type_p(n, NODE_CONST)) {
19075 else if (n && nd_type_p(n, NODE_COLON3)) {
19084 path = rb_fstring(path);
19086 *dest = n = NEW_LIT(path, loc);
19092 extern VALUE rb_mRubyVMFrozenCore;
19097 NODE *fcore = NEW_LIT(rb_mRubyVMFrozenCore, loc);
19100 return NEW_CALL(fcore,
rb_intern(
"make_shareable_copy"),
19101 NEW_LIST(value, loc), loc);
19104 return NEW_CALL(fcore,
rb_intern(
"make_shareable"),
19105 NEW_LIST(value, loc), loc);
19112 NODE *fcore = NEW_LIT(rb_mRubyVMFrozenCore, loc);
19113 NODE *args = NEW_LIST(value, loc);
19114 args = list_append(p, args, const_decl_path(p, dest));
19115 return NEW_CALL(fcore,
rb_intern(
"ensure_shareable"), args, loc);
19118 static int is_static_content(
NODE *node);
19121 shareable_literal_value(
NODE *node)
19123 if (!node)
return Qnil;
19124 enum node_type
type = nd_type(node);
19133 return node->nd_lit;
19139 #ifndef SHAREABLE_BARE_EXPRESSION
19140 #define SHAREABLE_BARE_EXPRESSION 1
19144 shareable_literal_constant(
struct parser_params *p,
enum shareability shareable,
19147 # define shareable_literal_constant_next(n) \
19148 shareable_literal_constant(p, shareable, dest, (n), &(n)->nd_loc, level+1)
19151 if (!value)
return 0;
19152 enum node_type
type = nd_type(value);
19161 if (shareable == shareable_literal) {
19162 value = NEW_CALL(value, idUMinus, 0, loc);
19167 lit = rb_fstring(value->nd_lit);
19168 nd_set_type(value, NODE_LIT);
19175 NODE *n = NEW_LIT(lit, loc);
19181 for (
NODE *n = value; n; n = n->nd_next) {
19182 NODE *elt = n->nd_head;
19184 elt = shareable_literal_constant_next(elt);
19188 else if (
RTEST(lit)) {
19194 VALUE e = shareable_literal_value(elt);
19207 if (!value->nd_brace)
return 0;
19209 for (
NODE *n = value->nd_head; n; n = n->nd_next->nd_next) {
19210 NODE *key = n->nd_head;
19211 NODE *val = n->nd_next->nd_head;
19213 key = shareable_literal_constant_next(key);
19217 else if (
RTEST(lit)) {
19223 val = shareable_literal_constant_next(val);
19225 n->nd_next->nd_head = val;
19227 else if (
RTEST(lit)) {
19233 VALUE k = shareable_literal_value(key);
19234 VALUE v = shareable_literal_value(val);
19247 if (shareable == shareable_literal &&
19248 (SHAREABLE_BARE_EXPRESSION || level > 0)) {
19249 return ensure_shareable_node(p, dest, value, loc);
19255 if (!lit)
return 0;
19259 value = make_shareable_node(p, value,
false, loc);
19267 # undef shareable_literal_constant_next
19271 shareable_constant_value(
struct parser_params *p,
enum shareability shareable,
19274 if (!value)
return 0;
19275 switch (shareable) {
19276 case shareable_none:
19279 case shareable_literal:
19281 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
19282 if (lit)
return lit;
19287 case shareable_copy:
19288 case shareable_everything:
19290 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
19291 if (lit)
return lit;
19292 return make_shareable_node(p, value, shareable == shareable_copy, loc);
19304 if (!lhs)
return 0;
19306 switch (nd_type(lhs)) {
19308 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
19317 lhs->nd_value = rhs;
19318 nd_set_loc(lhs, loc);
19321 case NODE_ATTRASGN:
19322 lhs->nd_args = arg_append(p, lhs->nd_args, rhs, loc);
19323 nd_set_loc(lhs, loc);
19337 NODE *void_node = 0, *vn;
19340 rb_warning0(
"empty expression");
19343 switch (nd_type(node)) {
19349 return void_node ? void_node : node;
19352 if (!node->nd_body || !nd_type_p(node->nd_body, NODE_IN)) {
19353 compile_error(p,
"unexpected node");
19356 if (node->nd_body->nd_body) {
19360 return void_node ? void_node : node;
19363 while (node->nd_next) {
19364 node = node->nd_next;
19366 node = node->nd_head;
19370 node = node->nd_body;
19375 if (!node->nd_body) {
19378 else if (!node->nd_else) {
19381 vn = value_expr_check(p, node->nd_body);
19382 if (!vn)
return NULL;
19383 if (!void_node) void_node = vn;
19384 node = node->nd_else;
19389 node = node->nd_1st;
19395 mark_lvar_used(p, node);
19409 NODE *void_node = value_expr_check(p, node);
19411 yyerror1(&void_node->nd_loc,
"void value expression");
19420 const char *useless = 0;
19424 if (!node || !(node = nd_once_body(node)))
return;
19425 switch (nd_type(node)) {
19427 switch (node->nd_mid) {
19457 case NODE_BACK_REF:
19458 useless =
"a variable";
19461 useless =
"a constant";
19467 useless =
"a literal";
19492 useless =
"defined?";
19497 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
19504 NODE *
const n = node;
19506 if (!node)
return n;
19507 if (!nd_type_p(node, NODE_BLOCK))
return n;
19509 while (node->nd_next) {
19510 void_expr(p, node->nd_head);
19511 node = node->nd_next;
19517 remove_begin(
NODE *node)
19519 NODE **n = &node, *n1 = node;
19520 while (n1 && nd_type_p(n1, NODE_BEGIN) && n1->nd_body) {
19521 *n = n1 = n1->nd_body;
19527 remove_begin_all(
NODE *node)
19529 NODE **n = &node, *n1 = node;
19530 while (n1 && nd_type_p(n1, NODE_BEGIN)) {
19531 *n = n1 = n1->nd_body;
19539 NODE *node = *body;
19542 *body = NEW_NIL(&NULL_LOC);
19545 #define subnodes(n1, n2) \
19546 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
19547 (!node->n2) ? (body = &node->n1, 1) : \
19548 (reduce_nodes(p, &node->n1), body = &node->n2, 1))
19551 int newline = (int)(node->flags & NODE_FL_NEWLINE);
19552 switch (nd_type(node)) {
19558 *body = node = node->nd_stts;
19559 if (newline && node) node->flags |= NODE_FL_NEWLINE;
19562 *body = node = node->nd_body;
19563 if (newline && node) node->flags |= NODE_FL_NEWLINE;
19566 body = &node->nd_end->nd_head;
19570 if (subnodes(nd_body, nd_else))
break;
19573 body = &node->nd_body;
19576 if (!subnodes(nd_body, nd_next))
goto end;
19579 if (!subnodes(nd_head, nd_resq))
goto end;
19582 if (node->nd_else) {
19583 body = &node->nd_resq;
19586 if (!subnodes(nd_head, nd_resq))
goto end;
19592 if (newline && node) node->flags |= NODE_FL_NEWLINE;
19599 is_static_content(
NODE *node)
19601 if (!node)
return 1;
19602 switch (nd_type(node)) {
19604 if (!(node = node->nd_head))
break;
19607 if (!is_static_content(node->nd_head))
return 0;
19608 }
while ((node = node->nd_next) != 0);
19625 switch (nd_type(node)) {
19637 if (!node->nd_value)
return 1;
19638 if (is_static_content(node->nd_value)) {
19640 parser_warn(p, node->nd_value,
"found `= literal' in conditional, should be ==");
19651 #define SWITCH_BY_COND_TYPE(t, w, arg) \
19653 case COND_IN_OP: break; \
19654 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
19655 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
19663 enum node_type
type;
19665 if (node == 0)
return 0;
19667 type = nd_type(node);
19670 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
19672 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
19674 return cond0(p, node, COND_IN_FF, loc);
19680 if (node == 0)
return 0;
19681 if (!(node = nd_once_body(node)))
return 0;
19682 assign_in_cond(p, node);
19684 switch (nd_type(node)) {
19688 SWITCH_BY_COND_TYPE(
type, warn,
"string ")
19692 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning, "regex ")
19694 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
19698 node->nd_1st = cond0(p, node->nd_1st, COND_IN_COND, loc);
19699 node->nd_2nd = cond0(p, node->nd_2nd, COND_IN_COND, loc);
19704 node->nd_beg = range_op(p, node->nd_beg, loc);
19705 node->nd_end = range_op(p, node->nd_end, loc);
19706 if (nd_type_p(node, NODE_DOT2)) nd_set_type(node,NODE_FLIP2);
19707 else if (nd_type_p(node, NODE_DOT3)) nd_set_type(node, NODE_FLIP3);
19712 SWITCH_BY_COND_TYPE(
type, warning, "symbol ")
19717 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ")
19718 nd_set_type(node, NODE_MATCH);
19720 else if (node->nd_lit ==
Qtrue ||
19721 node->nd_lit ==
Qfalse) {
19724 else if (
SYMBOL_P(node->nd_lit)) {
19728 SWITCH_BY_COND_TYPE(
type, warning,
"")
19739 if (node == 0)
return 0;
19740 return cond0(p, node, COND_IN_COND, loc);
19746 if (node == 0)
return 0;
19747 return cond0(p, node, COND_IN_OP, loc);
19754 return NEW_NIL(&loc);
19760 if (!cc)
return right;
19761 cc = cond0(p, cc, COND_IN_COND, loc);
19762 return newline_node(NEW_IF(cc, left, right, loc));
19768 if (!cc)
return right;
19769 cc = cond0(p, cc, COND_IN_COND, loc);
19770 return newline_node(NEW_UNLESS(cc, left, right, loc));
19777 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
19780 if (left && nd_type_p(left,
type)) {
19781 NODE *node = left, *second;
19782 while ((second = node->nd_2nd) != 0 && nd_type_p(second,
type)) {
19785 node->nd_2nd = NEW_NODE(
type, second, right, 0, loc);
19786 nd_set_line(node->nd_2nd, op_loc->beg_pos.lineno);
19787 left->nd_loc.end_pos = loc->end_pos;
19790 op = NEW_NODE(
type, left, right, 0, loc);
19791 nd_set_line(op, op_loc->beg_pos.lineno);
19798 if (node && nd_type_p(node, NODE_BLOCK_PASS)) {
19799 compile_error(p,
"block argument should not be given");
19807 no_blockarg(p, node);
19808 if (nd_type_p(node, NODE_LIST)) {
19809 if (node->nd_next == 0) {
19810 node = node->nd_head;
19813 nd_set_type(node, NODE_VALUES);
19823 if (node) no_blockarg(p, node);
19825 return NEW_YIELD(node, loc);
19844 BIGNUM_NEGATE(lit);
19848 RATIONAL_SET_NUM(lit, negate_lit(p, RRATIONAL(lit)->num));
19851 RCOMPLEX_SET_REAL(lit, negate_lit(p, RCOMPLEX(lit)->real));
19852 RCOMPLEX_SET_IMAG(lit, negate_lit(p, RCOMPLEX(lit)->imag));
19859 rb_parser_fatal(p,
"unknown literal type (%s) passed to negate_lit",
19860 rb_builtin_class_name(lit));
19867 arg_blk_pass(
NODE *node1,
NODE *node2)
19870 if (!node1)
return node2;
19871 node2->nd_head = node1;
19872 nd_set_first_lineno(node2, nd_first_lineno(node1));
19873 nd_set_first_column(node2, nd_first_column(node1));
19882 if (args->pre_args_num)
return false;
19883 if (args->post_args_num)
return false;
19884 if (args->rest_arg)
return false;
19885 if (args->opt_args)
return false;
19886 if (args->block_arg)
return false;
19887 if (args->kw_args)
return false;
19888 if (args->kw_rest_arg)
return false;
19895 int saved_line = p->ruby_sourceline;
19898 if (args->block_arg == idFWD_BLOCK) {
19900 yyerror1(&tail->nd_loc,
"... after rest argument");
19903 rest_arg = idFWD_REST;
19906 args->pre_args_num = pre_args ?
rb_long2int(pre_args->nd_plen) : 0;
19907 args->pre_init = pre_args ? pre_args->nd_next : 0;
19909 args->post_args_num = post_args ?
rb_long2int(post_args->nd_plen) : 0;
19910 args->post_init = post_args ? post_args->nd_next : 0;
19911 args->first_post_arg = post_args ? post_args->nd_pid : 0;
19913 args->rest_arg = rest_arg;
19915 args->opt_args = opt_args;
19917 args->ruby2_keywords = rest_arg == idFWD_REST;
19919 p->ruby_sourceline = saved_line;
19920 nd_set_loc(tail, loc);
19928 int saved_line = p->ruby_sourceline;
19930 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
19932 rb_imemo_tmpbuf_set_ptr(tmpbuf, args);
19933 args->imemo = tmpbuf;
19934 node = NEW_NODE(NODE_ARGS, 0, 0, args, &NULL_LOC);
19936 if (p->error_p)
return node;
19938 args->block_arg = block;
19939 args->kw_args = kw_args;
19948 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
19949 struct vtable *vtargs = p->lvtbl->args;
19950 NODE *kwn = kw_args;
19952 if (block) block = vtargs->tbl[vtargs->pos-1];
19953 vtable_pop(vtargs, !!block + !!kw_rest_arg);
19954 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
19956 if (!NODE_REQUIRED_KEYWORD_P(kwn->nd_body))
19958 --required_kw_vars;
19959 kwn = kwn->nd_next;
19962 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
19963 ID vid = kwn->nd_body->nd_vid;
19964 if (NODE_REQUIRED_KEYWORD_P(kwn->nd_body)) {
19965 *required_kw_vars++ = vid;
19972 arg_var(p, kw_bits);
19973 if (kw_rest_arg) arg_var(p, kw_rest_arg);
19974 if (block) arg_var(p, block);
19976 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
19977 args->kw_rest_arg->nd_cflag = kw_bits;
19979 else if (kw_rest_arg == idNil) {
19980 args->no_kwarg = 1;
19982 else if (kw_rest_arg) {
19983 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
19986 p->ruby_sourceline = saved_line;
19993 if (max_numparam > NO_PARAM) {
19995 YYLTYPE loc = RUBY_INIT_YYLLOC();
19996 args = new_args_tail(p, 0, 0, 0, 0);
19997 nd_set_loc(args, &loc);
19999 args->nd_ainfo->pre_args_num = max_numparam;
20009 aryptn->nd_pconst = constant;
20012 NODE *pre_args = NEW_LIST(pre_arg, loc);
20013 if (apinfo->pre_args) {
20014 apinfo->pre_args = list_concat(pre_args, apinfo->pre_args);
20017 apinfo->pre_args = pre_args;
20026 int saved_line = p->ruby_sourceline;
20028 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
20030 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
20031 node = NEW_NODE(NODE_ARYPTN, 0, tmpbuf, apinfo, loc);
20034 apinfo->pre_args = pre_args;
20038 apinfo->rest_arg = assignable(p, rest_arg, 0, loc);
20041 apinfo->rest_arg = NODE_SPECIAL_NO_NAME_REST;
20045 apinfo->rest_arg = NULL;
20048 apinfo->post_args = post_args;
20050 p->ruby_sourceline = saved_line;
20057 fndptn->nd_pconst = constant;
20065 int saved_line = p->ruby_sourceline;
20067 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
20069 rb_imemo_tmpbuf_set_ptr(tmpbuf, fpinfo);
20070 node = NEW_NODE(NODE_FNDPTN, 0, tmpbuf, fpinfo, loc);
20073 fpinfo->pre_rest_arg = pre_rest_arg ? assignable(p, pre_rest_arg, 0, loc) : NODE_SPECIAL_NO_NAME_REST;
20074 fpinfo->args = args;
20075 fpinfo->post_rest_arg = post_rest_arg ? assignable(p, post_rest_arg, 0, loc) : NODE_SPECIAL_NO_NAME_REST;
20077 p->ruby_sourceline = saved_line;
20084 hshptn->nd_pconst = constant;
20091 int saved_line = p->ruby_sourceline;
20092 NODE *node, *kw_rest_arg_node;
20094 if (kw_rest_arg == idNil) {
20095 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
20097 else if (kw_rest_arg) {
20098 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
20101 kw_rest_arg_node = NULL;
20104 node = NEW_NODE(NODE_HSHPTN, 0, kw_args, kw_rest_arg_node, loc);
20106 p->ruby_sourceline = saved_line;
20116 return NEW_LIT(
ID2SYM(idNULL), loc);
20119 switch (nd_type(node)) {
20121 nd_set_type(node, NODE_DSYM);
20122 nd_set_loc(node, loc);
20125 lit = node->nd_lit;
20127 nd_set_type(node, NODE_LIT);
20128 nd_set_loc(node, loc);
20131 node = NEW_NODE(NODE_DSYM,
Qnil, 1, NEW_LIST(node, loc), loc);
20138 append_literal_keys(st_data_t k, st_data_t v, st_data_t h)
20143 node->nd_next->nd_end = node->nd_next;
20144 node->nd_next->nd_next = 0;
20146 list_concat(*result, node);
20149 return ST_CONTINUE;
20153 hash_literal_key_p(
VALUE k)
20155 switch (OBJ_BUILTIN_TYPE(k)) {
20166 if (val == lit)
return 0;
20167 if (!hash_literal_key_p(val) || !hash_literal_key_p(lit))
return -1;
20168 return rb_iseq_cdhash_cmp(val, lit);
20172 literal_hash(
VALUE a)
20174 if (!hash_literal_key_p(a))
return (st_index_t)a;
20175 return rb_iseq_cdhash_hash(a);
20186 st_table *literal_keys = st_init_table_with_size(&literal_type, hash->nd_alen / 2);
20188 NODE *last_expr = 0;
20190 while (hash && hash->nd_head && hash->nd_next) {
20191 NODE *head = hash->nd_head;
20192 NODE *value = hash->nd_next;
20193 NODE *next = value->nd_next;
20194 st_data_t key = (st_data_t)head;
20196 value->nd_next = 0;
20197 if (nd_type_p(head, NODE_LIT) &&
20198 st_delete(literal_keys, (key = (st_data_t)head->nd_lit, &key), &data)) {
20199 NODE *dup_value = ((
NODE *)data)->nd_next;
20201 "key %+"PRIsVALUE
" is duplicated and overwritten on line %d",
20202 head->nd_lit, nd_line(head));
20203 if (dup_value == last_expr) {
20204 value->nd_head = block_append(p, dup_value->nd_head, value->nd_head);
20207 last_expr->nd_head = block_append(p, dup_value->nd_head, last_expr->nd_head);
20210 st_insert(literal_keys, (st_data_t)key, (st_data_t)hash);
20211 last_expr = nd_type_p(head, NODE_LIT) ? value : head;
20214 st_foreach(literal_keys, append_literal_keys, (st_data_t)&result);
20215 st_free_table(literal_keys);
20217 if (!result) result = hash;
20218 else list_concat(result, hash);
20220 result->nd_loc = loc;
20227 if (hash) hash = remove_duplicate_keys(p, hash);
20228 return NEW_HASH(hash, loc);
20235 if (is_private_local_id(
id)) {
20238 if (st_is_member(p->pvtbl,
id)) {
20239 yyerror1(loc,
"duplicated variable name");
20242 st_insert(p->pvtbl, (st_data_t)
id, 0);
20250 p->pktbl = st_init_numtable();
20252 else if (st_is_member(p->pktbl, key)) {
20253 yyerror1(loc,
"duplicated key name");
20256 st_insert(p->pktbl, (st_data_t)key, 0);
20263 return NEW_HASH(hash, loc);
20274 ID vid = lhs->nd_vid;
20275 YYLTYPE lhs_loc = lhs->nd_loc;
20276 int shareable = ctxt.shareable_constant_value;
20278 switch (nd_type(lhs)) {
20289 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
20290 lhs->nd_value = rhs;
20291 nd_set_loc(lhs, loc);
20292 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
20293 if (is_notop_id(vid)) {
20294 switch (id_type(vid)) {
20298 asgn->nd_aid = vid;
20302 else if (op == tANDOP) {
20304 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
20306 lhs->nd_value = rhs;
20307 nd_set_loc(lhs, loc);
20308 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
20312 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
20314 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
20316 asgn->nd_value = rhs;
20317 nd_set_loc(asgn, loc);
20321 asgn = NEW_BEGIN(0, loc);
20332 args = make_list(args, args_loc);
20333 if (nd_type_p(args, NODE_BLOCK_PASS)) {
20334 args = NEW_ARGSCAT(args, rhs, loc);
20337 args = arg_concat(p, args, rhs, loc);
20339 asgn = NEW_OP_ASGN1(ary, op, args, loc);
20350 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc);
20361 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
20362 asgn = NEW_OP_CDECL(lhs, op, rhs, loc);
20365 asgn = NEW_BEGIN(0, loc);
20374 if (p->ctxt.in_def) {
20375 yyerror1(loc,
"dynamic constant assignment");
20377 return NEW_CDECL(0, 0, (path), loc);
20383 if (p->ctxt.in_def) {
20384 path = assign_error(p,
"dynamic constant assignment", path);
20392 a = dispatch2(assign_error, ERR_MESG(), a);
20400 return ripper_new_yylval(p, get_id(a), dispatch1(var_field, a), 0);
20408 NODE *result = head;
20410 NODE *tmp = rescue_else ? rescue_else : rescue;
20411 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
20413 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
20414 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
20416 else if (rescue_else) {
20417 result = block_append(p, result, rescue_else);
20420 result = NEW_ENSURE(result, ensure, loc);
20422 fixpos(result, head);
20432 if (!local->used)
return;
20433 cnt = local->used->pos;
20434 if (cnt != local->vars->pos) {
20435 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
20438 ID *v = local->vars->tbl;
20439 ID *u = local->used->tbl;
20440 for (
int i = 0; i < cnt; ++i) {
20441 if (!v[i] || (u[i] & LVAR_USED))
continue;
20442 if (is_private_local_id(v[i]))
continue;
20443 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN,
rb_id2str(v[i]));
20452 int inherits_dvars = toplevel_scope && compile_for_eval;
20456 local->prev = p->lvtbl;
20457 local->args = vtable_alloc(0);
20458 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
20460 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
20461 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
20462 local->numparam.outer = 0;
20463 local->numparam.inner = 0;
20464 local->numparam.current = 0;
20466 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
20468 # if WARN_PAST_SCOPE
20480 if (p->lvtbl->used) {
20481 warn_unused_var(p, p->lvtbl);
20482 vtable_free(p->lvtbl->used);
20484 # if WARN_PAST_SCOPE
20485 while (p->lvtbl->past) {
20486 struct vtable *past = p->lvtbl->past;
20487 p->lvtbl->past = past->prev;
20491 vtable_free(p->lvtbl->args);
20492 vtable_free(p->lvtbl->vars);
20495 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
20503 int cnt_args = vtable_size(p->lvtbl->args);
20504 int cnt_vars = vtable_size(p->lvtbl->vars);
20505 int cnt = cnt_args + cnt_vars;
20509 if (cnt <= 0)
return 0;
20510 tbl = rb_ast_new_local_table(p->ast, cnt);
20511 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
20513 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
20514 ID id = p->lvtbl->vars->tbl[i];
20515 if (!vtable_included(p->lvtbl->args,
id)) {
20516 tbl->ids[j++] = id;
20520 tbl = rb_ast_resize_latest_local_table(p->ast, j);
20533 n = NEW_NODE(
type, a0, a1, a2, loc);
20542 if (!NUMPARAM_ID_P(
id))
return;
20543 compile_error(p,
"_%d is reserved for numbered parameter",
20544 NUMPARAM_ID_TO_IDX(
id));
20550 numparam_name(p,
id);
20551 vtable_add(p->lvtbl->args,
id);
20557 numparam_name(p,
id);
20558 vtable_add(p->lvtbl->vars,
id);
20559 if (p->lvtbl->used) {
20560 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
20567 struct vtable *vars, *args, *used;
20569 vars = p->lvtbl->vars;
20570 args = p->lvtbl->args;
20571 used = p->lvtbl->used;
20573 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
20576 if (used) used = used->prev;
20579 if (vars && vars->prev == DVARS_INHERIT) {
20580 return rb_local_defined(
id, p->parent_iseq);
20582 else if (vtable_included(args,
id)) {
20586 int i = vtable_included(vars,
id);
20587 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
20595 return local_id_ref(p,
id, NULL);
20601 if (local_id(p, idFWD_REST) &&
20603 local_id(p, idFWD_KWREST) &&
20605 local_id(p, idFWD_BLOCK))
return TRUE;
20606 compile_error(p,
"unexpected ...");
20613 arg_var(p, idFWD_REST);
20615 arg_var(p, idFWD_KWREST);
20617 arg_var(p, idFWD_BLOCK);
20624 NODE *splat = NEW_SPLAT(NEW_LVAR(idFWD_REST, loc), loc);
20626 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
20628 NODE *block = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, loc), loc);
20629 NODE *args = leading ? rest_arg_append(p, leading, splat, argsloc) : splat;
20631 args = arg_append(p, splat, new_hash(p, kwrest, loc), loc);
20633 return arg_blk_pass(args, block);
20642 NODE *inner = local->numparam.inner;
20643 if (!local->numparam.outer) {
20644 local->numparam.outer = local->numparam.current;
20646 local->numparam.inner = 0;
20647 local->numparam.current = 0;
20661 local->numparam.inner = prev_inner;
20663 else if (local->numparam.current) {
20665 local->numparam.inner = local->numparam.current;
20667 if (p->max_numparam > NO_PARAM) {
20669 local->numparam.current = local->numparam.outer;
20670 local->numparam.outer = 0;
20674 local->numparam.current = 0;
20679 static const struct vtable *
20682 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
20683 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
20684 if (p->lvtbl->used) {
20685 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
20687 return p->lvtbl->args;
20693 struct vtable *tmp = *vtblp;
20694 *vtblp = tmp->prev;
20695 # if WARN_PAST_SCOPE
20696 if (p->past_scope_enabled) {
20697 tmp->prev = p->lvtbl->past;
20698 p->lvtbl->past = tmp;
20710 if ((tmp = p->lvtbl->used) != 0) {
20711 warn_unused_var(p, p->lvtbl);
20712 p->lvtbl->used = p->lvtbl->used->prev;
20715 dyna_pop_vtable(p, &p->lvtbl->args);
20716 dyna_pop_vtable(p, &p->lvtbl->vars);
20722 while (p->lvtbl->args != lvargs) {
20724 if (!p->lvtbl->args) {
20726 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
20736 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
20742 struct vtable *vars, *args, *used;
20745 args = p->lvtbl->args;
20746 vars = p->lvtbl->vars;
20747 used = p->lvtbl->used;
20749 while (!DVARS_TERMINAL_P(vars)) {
20750 if (vtable_included(args,
id)) {
20753 if ((i = vtable_included(vars,
id)) != 0) {
20754 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
20759 if (!vidrefp) used = 0;
20760 if (used) used = used->prev;
20763 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
20764 return rb_dvar_defined(
id, p->parent_iseq);
20773 return dvar_defined_ref(p,
id, NULL);
20779 return (vtable_included(p->lvtbl->args,
id) ||
20780 vtable_included(p->lvtbl->vars,
id));
20787 "regexp encoding option '%c' differs from source encoding '%s'",
20795 int c = RE_OPTION_ENCODING_IDX(options);
20806 else if (RE_OPTION_ENCODING_NONE(options)) {
20832 int c = rb_reg_fragment_setenc(p, str, options);
20833 if (c) reg_fragment_enc_error(p, str, c);
20840 reg_fragment_setenc(p, str, options);
20841 err = rb_reg_check_preprocess(str);
20844 compile_error(p,
"%"PRIsVALUE, err);
20858 reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
20859 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
20864 long len = name_end - name;
20865 const char *s = (
const char *)name;
20869 if (!len)
return ST_CONTINUE;
20870 if (rb_enc_symname_type(s, len, enc, (1U<<ID_LOCAL)) != ID_LOCAL)
20871 return ST_CONTINUE;
20873 var = intern_cstr(s, len, enc);
20874 if (len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)len)) {
20875 if (!lvar_defined(p, var))
return ST_CONTINUE;
20877 node = node_assign(p, assignable(p, var, 0, arg->loc), NEW_LIT(
ID2SYM(var), arg->loc), NO_LEX_CTXT, arg->loc);
20878 succ = arg->succ_block;
20879 if (!succ) succ = NEW_BEGIN(0, arg->loc);
20880 succ = block_append(p, succ, node);
20881 arg->succ_block = succ;
20882 return ST_CONTINUE;
20892 arg.succ_block = 0;
20894 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
20896 if (!arg.succ_block)
return 0;
20897 return arg.succ_block->nd_next;
20903 reg_fragment_setenc(p, str, options);
20904 return rb_parser_reg_compile(p, str, options);
20910 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
20920 re = parser_reg_compile(p, str, options);
20924 compile_error(p,
"%"PRIsVALUE, m);
20935 str = ripper_is_node_yylval(str) ? RNODE(str)->nd_cval : str;
20936 int c = rb_reg_fragment_setenc(p, str, options);
20937 if (c) reg_fragment_enc_error(p, str, c);
20938 re = rb_parser_reg_compile(p, str, options);
20949 rb_parser_set_options(
VALUE vparser,
int print,
int loop,
int chomp,
int split)
20953 p->do_print = print;
20955 p->do_chomp = chomp;
20956 p->do_split = split;
20962 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
20963 const YYLTYPE *
const LOC = &default_location;
20967 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
20969 node = block_append(p, node, print);
20976 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
20977 NODE *split = NEW_GASGN(fields,
20978 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
20981 node = block_append(p, split, node);
20984 NODE *chomp = NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
20986 node = block_append(p, chomp, node);
20989 node = NEW_WHILE(NEW_VCALL(idGets, LOC), node, 1, LOC);
20996 rb_init_parse(
void)
21006 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
21014 p->command_start = TRUE;
21015 p->ruby_sourcefile_string =
Qnil;
21016 p->lex.lpar_beg = -1;
21019 p->delayed.token =
Qnil;
21021 p->parsing_thread =
Qnil;
21023 p->error_buffer =
Qfalse;
21025 p->debug_buffer =
Qnil;
21031 #define parser_mark ripper_parser_mark
21032 #define parser_free ripper_parser_free
21036 parser_mark(
void *ptr)
21066 parser_free(
void *ptr)
21072 ruby_sized_xfree(p->tokenbuf, p->toksiz);
21074 for (local = p->lvtbl; local; local = prev) {
21075 if (local->vars)
xfree(local->vars);
21076 prev = local->prev;
21081 while ((ptinfo = p->token_info) != 0) {
21082 p->token_info = ptinfo->next;
21090 parser_memsize(
const void *ptr)
21094 size_t size =
sizeof(*p);
21097 for (local = p->lvtbl; local; local = local->prev) {
21098 size +=
sizeof(*local);
21099 if (local->vars) size += local->vars->capa *
sizeof(
ID);
21115 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
21119 #undef rb_reserved_word
21122 rb_reserved_word(
const char *str,
unsigned int len)
21124 return reserved_word(str, len);
21128 rb_parser_new(
void)
21132 &parser_data_type, p);
21133 parser_initialize(p);
21144 p->parent_iseq = base;
21149 rb_parser_keep_script_lines(
VALUE vparser)
21154 p->keep_script_lines = 1;
21159 #define rb_parser_end_seen_p ripper_parser_end_seen_p
21160 #define rb_parser_encoding ripper_parser_encoding
21161 #define rb_parser_get_yydebug ripper_parser_get_yydebug
21162 #define rb_parser_set_yydebug ripper_parser_set_yydebug
21163 #define rb_parser_get_debug_output ripper_parser_get_debug_output
21164 #define rb_parser_set_debug_output ripper_parser_set_debug_output
21165 static VALUE ripper_parser_end_seen_p(
VALUE vparser);
21166 static VALUE ripper_parser_encoding(
VALUE vparser);
21167 static VALUE ripper_parser_get_yydebug(
VALUE self);
21169 static VALUE ripper_parser_get_debug_output(
VALUE self);
21170 static VALUE ripper_parser_set_debug_output(
VALUE self,
VALUE output);
21179 ripper_error_p(
VALUE vparser)
21184 return RBOOL(p->error_p);
21195 rb_parser_end_seen_p(
VALUE vparser)
21200 return RBOOL(p->ruby__end__seen);
21210 rb_parser_encoding(
VALUE vparser)
21226 rb_parser_get_yydebug(
VALUE self)
21231 return RBOOL(p->debug);
21242 rb_parser_set_yydebug(
VALUE self,
VALUE flag)
21247 p->debug =
RTEST(flag);
21258 rb_parser_get_debug_output(
VALUE self)
21263 return p->debug_output;
21273 rb_parser_set_debug_output(
VALUE self,
VALUE output)
21278 return p->debug_output = output;
21283 #define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
21286 #define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
21287 #define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
21288 (new)->cnt = (cnt), (ptr))
21293 size_t cnt = HEAPCNT(1, size);
21297 return ADD2HEAP(n, cnt, ptr);
21301 rb_parser_calloc(
struct parser_params *p,
size_t nelem,
size_t size)
21303 size_t cnt = HEAPCNT(nelem, size);
21305 void *ptr =
xcalloc(nelem, size);
21307 return ADD2HEAP(n, cnt, ptr);
21311 rb_parser_realloc(
struct parser_params *p,
void *ptr,
size_t size)
21314 size_t cnt = HEAPCNT(1, size);
21316 if (ptr && (n = p->heap) != NULL) {
21318 if (n->ptr == ptr) {
21319 n->ptr = ptr =
xrealloc(ptr, size);
21320 if (n->cnt) n->cnt = cnt;
21323 }
while ((n = n->next) != NULL);
21327 return ADD2HEAP(n, cnt, ptr);
21335 while ((n = *prev) != NULL) {
21336 if (n->ptr == ptr) {
21346 rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
21349 VALUE mesg = p->debug_buffer;
21357 p->debug_buffer =
Qnil;
21362 parser_compile_error(
struct parser_params *p,
const char *fmt, ...)
21370 rb_syntax_error_append(p->error_buffer,
21371 p->ruby_sourcefile_string,
21372 p->ruby_sourceline,
21379 count_char(
const char *str,
int c)
21382 while (str[n] == c) ++n;
21392 RUBY_FUNC_EXPORTED
size_t
21393 rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
21395 if (*yystr ==
'"') {
21396 size_t yyn = 0, bquote = 0;
21397 const char *yyp = yystr;
21403 bquote = count_char(yyp+1,
'`') + 1;
21404 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
21412 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
21413 if (yyres) memcpy(yyres + yyn, yyp, bquote);
21419 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
21420 if (yyres) memcpy(yyres + yyn, yyp, 3);
21425 goto do_not_strip_quotes;
21428 goto do_not_strip_quotes;
21431 if (*++yyp !=
'\\')
21432 goto do_not_strip_quotes;
21448 do_not_strip_quotes: ;
21451 if (!yyres)
return strlen(yystr);
21453 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
21458 #ifdef RIPPER_DEBUG
21463 if (x ==
Qfalse)
return x;
21464 if (x ==
Qtrue)
return x;
21465 if (x ==
Qnil)
return x;
21480 if (!nd_type_p((
NODE *)x, NODE_RIPPER)) {
21483 x = ((
NODE *)x)->nd_rval;
21491 (
void *)x, rb_builtin_type_name(
TYPE(x)));
21497 #define validate(x) ((x) = get_value(x))
21526 return rb_funcall(p->value, mid, 3, a, b, c);
21536 return rb_funcall(p->value, mid, 4, a, b, c, d);
21547 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
21560 return rb_funcall(p->value, mid, 7, a, b, c, d, e, f, g);
21564 ripper_get_id(
VALUE v)
21569 if (!nd_type_p(nd, NODE_RIPPER))
return 0;
21574 ripper_get_value(
VALUE v)
21580 if (!nd_type_p(nd, NODE_RIPPER))
return Qnil;
21581 return nd->nd_rval;
21591 ripper_compile_error(
struct parser_params *p,
const char *fmt, ...)
21596 va_start(args, fmt);
21609 "gets returned %"PRIsVALUE
" (expected String or nil)",
21622 ripper_s_allocate(
VALUE klass)
21626 &parser_data_type, p);
21631 #define ripper_initialized_p(r) ((r)->lex.input != 0)
21644 ripper_initialize(
int argc,
VALUE *argv,
VALUE self)
21647 VALUE src, fname, lineno;
21650 rb_scan_args(argc, argv,
"12", &src, &fname, &lineno);
21652 p->lex.gets = ripper_lex_io_get;
21655 p->lex.gets = ripper_lex_get_generic;
21659 p->lex.gets = lex_get_str;
21661 p->lex.input = src;
21663 if (
NIL_P(fname)) {
21664 fname = STR_NEW2(
"(ripper)");
21671 parser_initialize(p);
21673 p->ruby_sourcefile_string = fname;
21675 p->ruby_sourceline =
NIL_P(lineno) ? 0 :
NUM2INT(lineno) - 1;
21681 ripper_parse0(
VALUE parser_v)
21687 p->ast = rb_ast_new();
21688 ripper_yyparse((
void*)p);
21689 rb_ast_dispose(p->ast);
21695 ripper_ensure(
VALUE parser_v)
21700 p->parsing_thread =
Qnil;
21711 ripper_parse(
VALUE self)
21716 if (!ripper_initialized_p(p)) {
21719 if (!
NIL_P(p->parsing_thread)) {
21726 rb_ensure(ripper_parse0,
self, ripper_ensure,
self);
21739 ripper_column(
VALUE self)
21745 if (!ripper_initialized_p(p)) {
21748 if (
NIL_P(p->parsing_thread))
return Qnil;
21749 col = p->lex.ptok - p->lex.pbeg;
21760 ripper_filename(
VALUE self)
21765 if (!ripper_initialized_p(p)) {
21768 return p->ruby_sourcefile_string;
21779 ripper_lineno(
VALUE self)
21784 if (!ripper_initialized_p(p)) {
21787 if (
NIL_P(p->parsing_thread))
return Qnil;
21788 return INT2NUM(p->ruby_sourceline);
21798 ripper_state(
VALUE self)
21803 if (!ripper_initialized_p(p)) {
21806 if (
NIL_P(p->parsing_thread))
return Qnil;
21807 return INT2NUM(p->lex.state);
21817 ripper_token(
VALUE self)
21823 if (!ripper_initialized_p(p)) {
21826 if (
NIL_P(p->parsing_thread))
return Qnil;
21827 pos = p->lex.ptok - p->lex.pbeg;
21828 len = p->lex.pcur - p->lex.ptok;
21832 #ifdef RIPPER_DEBUG
21859 ripper_lex_state_name(
VALUE self,
VALUE state)
21861 return rb_parser_lex_state_name(
NUM2INT(state));
21867 ripper_init_eventids1();
21868 ripper_init_eventids2();
21880 InitVM_ripper(
void)
21902 #ifdef RIPPER_DEBUG
21950 ripper_init_eventids1_table(Ripper);
21951 ripper_init_eventids2_table(Ripper);
#define rb_define_singleton_method(klass, mid, func, arity)
Defines klass.mid.
#define rb_define_private_method(klass, mid, func, arity)
Defines klass#mid and makes it private.
static bool rb_enc_isspace(OnigCodePoint c, rb_encoding *enc)
Identical to rb_isspace(), except it additionally takes an encoding.
static bool rb_enc_isalnum(OnigCodePoint c, rb_encoding *enc)
Identical to rb_isalnum(), except it additionally takes an encoding.
static bool RB_OBJ_FROZEN(VALUE obj)
Checks if an object is frozen.
VALUE rb_define_class(const char *name, VALUE super)
Defines a top-level class.
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
Retrieves argument from argc and argv to given VALUE references according to the format string.
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
Defines a method.
#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 rb_ary_new3
Old name of rb_ary_new_from_args.
#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 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_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_ensure(VALUE(*b_proc)(VALUE), VALUE data1, VALUE(*e_proc)(VALUE), VALUE data2)
An equivalent to ensure clause.
VALUE rb_errinfo(void)
This is the same as $! in Ruby.
VALUE rb_eSyntaxError
SyntaxError exception.
@ RB_WARN_CATEGORY_EXPERIMENTAL
Warning is for experimental features.
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_enc_precise_mbclen(const char *p, const char *e, rb_encoding *enc)
Queries the number of bytes of the character at the passed pointer.
VALUE rb_enc_associate(VALUE obj, rb_encoding *enc)
Identical to rb_enc_associate(), except it takes an encoding itself instead of its index.
rb_encoding * rb_usascii_encoding(void)
Queries the encoding that represents US-ASCII.
int rb_enc_codelen(int code, rb_encoding *enc)
Queries the number of bytes requested to represent the passed code point using the passed encoding.
int rb_ascii8bit_encindex(void)
Identical to rb_ascii8bit_encoding(), except it returns the encoding's index instead of the encoding ...
rb_encoding * rb_enc_compatible(VALUE str1, VALUE str2)
Look for the "common" encoding between the two.
rb_encoding * rb_ascii8bit_encoding(void)
Queries the encoding that represents ASCII-8BIT a.k.a.
VALUE rb_enc_from_encoding(rb_encoding *enc)
Queries the Ruby-level counterpart instance of rb_cEncoding that corresponds to the passed encoding.
static bool rb_enc_asciicompat(rb_encoding *enc)
Queries if the passed encoding is in some sense compatible with ASCII.
rb_encoding * rb_utf8_encoding(void)
Queries the encoding that represents UTF-8.
static char * rb_enc_prev_char(const char *s, const char *p, const char *e, rb_encoding *enc)
Queries the previous (left) character.
static int rb_enc_mbcput(unsigned int c, void *buf, rb_encoding *enc)
Identical to rb_enc_uint_chr(), except it writes back to the passed buffer instead of allocating one.
int rb_char_to_option_kcode(int c, int *option, int *kcode)
Converts a character option to its encoding.
rb_encoding * rb_enc_from_index(int idx)
Identical to rb_find_encoding(), except it takes an encoding index instead of a Ruby object.
VALUE rb_enc_associate_index(VALUE obj, int encindex)
Identical to rb_enc_set_index(), except it additionally does contents fix-up depending on the passed ...
rb_encoding * rb_enc_get(VALUE obj)
Identical to rb_enc_get_index(), except the return type.
static const char * rb_enc_name(rb_encoding *enc)
Queries the (canonical) name of the passed encoding.
int rb_enc_find_index(const char *name)
Queries the index of the encoding.
int rb_enc_str_coderange(VALUE str)
Scans the passed string to collect its code range.
VALUE rb_enc_str_buf_cat(VALUE str, const char *ptr, long len, rb_encoding *enc)
Identical to rb_str_cat(), except it additionally takes an encoding.
VALUE rb_enc_str_new(const char *ptr, long len, rb_encoding *enc)
Identical to rb_enc_str_new(), except it additionally takes an encoding.
long rb_str_coderange_scan_restartable(const char *str, const char *end, rb_encoding *enc, int *cr)
Scans the passed string until it finds something odd.
VALUE rb_funcall(VALUE recv, ID mid, int n,...)
Calls a method.
VALUE rb_funcallv_public(VALUE recv, ID mid, int argc, const VALUE *argv)
Identical to rb_funcallv(), except it only takes public methods into account.
void rb_gc_register_mark_object(VALUE object)
Inform the garbage collector that object is a live Ruby object that should not be moved.
VALUE rb_ary_concat(VALUE lhs, VALUE rhs)
Destructively appends the contents of latter into the end of former.
VALUE rb_ary_reverse(VALUE ary)
Destructively reverses the passed array in-place.
VALUE rb_ary_unshift(VALUE ary, VALUE elem)
Destructively prepends the passed item at the beginning of the passed array.
VALUE rb_ary_new(void)
Allocates a new, empty array.
VALUE rb_ary_clear(VALUE ary)
Destructively removes everything form an array.
VALUE rb_ary_push(VALUE ary, VALUE elem)
Special case of rb_ary_cat() that it adds only one element.
VALUE rb_ary_new_from_args(long n,...)
Constructs an array from the passed objects.
VALUE rb_assoc_new(VALUE car, VALUE cdr)
Identical to rb_ary_new_from_values(), except it expects exactly two parameters.
VALUE rb_ary_join(VALUE ary, VALUE sep)
Recursively stringises the elements of the passed array, flattens that result, then joins the sequenc...
VALUE rb_big_norm(VALUE x)
Normalises the passed bignum.
VALUE rb_cstr_to_inum(const char *str, int base, int badcheck)
Parses C's string to convert into a Ruby's integer.
VALUE rb_complex_raw(VALUE real, VALUE imag)
Identical to rb_complex_new(), except it assumes both arguments are not instances of rb_cComplex.
VALUE rb_make_exception(int argc, const VALUE *argv)
Constructs an exception object from the list of arguments, in a manner similar to Ruby's raise.
void rb_gc_mark(VALUE obj)
Marks an object.
VALUE rb_hash_aset(VALUE hash, VALUE key, VALUE val)
Inserts or replaces ("upsert"s) the objects into the given hash table.
VALUE rb_hash_lookup(VALUE hash, VALUE key)
Identical to rb_hash_aref(), except it always returns RUBY_Qnil for misshits.
VALUE rb_hash_clear(VALUE hash)
Swipes everything out of the passed hash table.
VALUE rb_hash_new(void)
Creates a new, empty hash object.
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...
VALUE rb_str_buf_cat(VALUE, const char *, long)
Just another name of rb_str_cat.
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_usascii_str_new(const char *ptr, long len)
Identical to rb_str_new(), except it generates a string of "US ASCII" encoding.
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.
VALUE rb_str_new(const char *ptr, long len)
Allocates an instance of rb_cString.
VALUE rb_str_new_cstr(const char *ptr)
Identical to rb_str_new(), 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".
VALUE rb_str_cat_cstr(VALUE dst, const char *src)
Identical to rb_str_cat(), except it assumes the passed pointer is a pointer to a C string.
VALUE rb_str_intern(VALUE str)
Identical to rb_to_symbol(), except it assumes the receiver being an instance of RString.
VALUE rb_obj_as_string(VALUE obj)
Try converting an object to its stringised representation using its to_s method, if any.
VALUE rb_thread_current(void)
Obtains the "current" thread.
VALUE rb_attr_get(VALUE obj, ID name)
Identical to rb_ivar_get()
VALUE rb_const_get_at(VALUE space, ID name)
Identical to rb_const_defined_at(), except it returns the actual defined value.
int rb_const_defined_at(VALUE space, ID name)
Identical to rb_const_defined(), except it doesn't look for parent classes.
int rb_respond_to(VALUE obj, ID mid)
Queries if the object responds to the method.
void rb_define_alloc_func(VALUE klass, rb_alloc_func_t func)
Sets the allocator function of a class.
VALUE rb_make_backtrace(void)
Creates the good old fashioned array-of-strings style backtrace info.
ID rb_intern2(const char *name, long len)
Identical to rb_intern(), except it additionally takes the length of the string.
static ID rb_intern_const(const char *str)
This is a "tiny optimisation" over rb_intern().
const char * rb_id2name(ID id)
Retrieves the name mapped to the given id.
ID rb_intern(const char *name)
Finds or creates a symbol of the given name.
ID rb_intern_str(VALUE str)
Identical to rb_intern(), except it takes an instance of rb_cString.
VALUE rb_id2str(ID id)
Identical to rb_id2name(), except it returns a Ruby's String instead of C's.
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.
#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.
int st_foreach(st_table *q, int_type *w, st_data_t e)
Iteration over the given table.
#define RBIMPL_ATTR_NONNULL(list)
Wraps (or simulates) __attribute__((nonnull))
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 RARRAY_LEN
Just another name of rb_array_len.
#define RARRAY_AREF(a, i)
static VALUE RBASIC_CLASS(VALUE obj)
Queries the class of an object.
#define RBASIC(obj)
Convenient casting macro.
#define RREGEXP_PTR(obj)
Convenient accessor macro.
#define StringValue(v)
Ensures that the parameter object is a String.
static char * RSTRING_END(VALUE str)
Queries the end of the contents pointer of the string.
static char * RSTRING_PTR(VALUE str)
Queries the contents pointer of the string.
#define RSTRING_GETMEM(str, ptrvar, lenvar)
Convenient macro to obtain the contents and length at once.
static long RSTRING_LEN(VALUE str)
Queries the length of the string.
#define StringValueCStr(v)
Identical to StringValuePtr, except it additionally checks for the contents for viability as a C stri...
#define TypedData_Get_Struct(obj, type, data_type, sval)
Obtains a C struct from inside of a wrapper Ruby object.
#define TypedData_Make_Struct(klass, type, data_type, sval)
Identical to TypedData_Wrap_Struct, except it allocates a new data region internally instead of takin...
const char * rb_obj_classname(VALUE obj)
Queries the name of the class of the passed object.
#define InitVM(ext)
This macro is for internal use.
#define RTEST
This is an old name of RB_TEST.
This is the struct that holds necessary info for a struct.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
#define SIZEOF_VALUE
Identical to sizeof(VALUE), except it is a macro that can also be used inside of preprocessor directi...
uintptr_t VALUE
Type that represents a Ruby object.
static bool RB_TYPE_P(VALUE obj, enum ruby_value_type t)
Queries if the given object is of given type.