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)}, \
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__)
229static inline enum lex_state_e parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line);
231typedef 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);
462static
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;
530set_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)
556static NODE *remove_begin_all(
NODE*);
557#define value_expr(node) value_expr_gen(p, (node))
581static 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))
638static void reg_fragment_setenc(
struct parser_params*, VALUE,
int);
639static int reg_fragment_check(
struct parser_params*, VALUE,
int);
642static int literal_concat0(
struct parser_params *p, VALUE head, VALUE tail);
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)
654static inline int ripper_is_node_yylval(VALUE n);
657ripper_new_yylval(
struct parser_params *p, ID a, VALUE b, VALUE c)
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);
666ripper_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
676static ID ripper_get_id(VALUE);
677#define get_id(id) ripper_get_id(id)
678static VALUE ripper_get_value(VALUE);
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
697static VALUE assign_error(
struct parser_params *p,
const char *mesg, VALUE a);
699static VALUE parser_reg_compile(
struct parser_params*, VALUE,
int, VALUE *);
707RUBY_SYMBOL_EXPORT_BEGIN
708VALUE rb_parser_reg_compile(
struct parser_params* p, VALUE str,
int options);
709int rb_reg_fragment_setenc(
struct parser_params*, VALUE,
int);
710enum lex_state_e rb_parser_trace_lex_state(
struct parser_params *,
enum lex_state_e,
enum lex_state_e,
int);
711VALUE rb_parser_lex_state_name(
enum lex_state_e state);
712void rb_parser_show_bitstack(
struct parser_params *, stack_type,
const char *,
int);
713PRINTF_ARGS(
void rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...), 2, 3);
717RUBY_SYMBOL_EXPORT_END
719static void error_duplicate_pattern_variable(
struct parser_params *p, ID
id,
const YYLTYPE *loc);
745#define dyna_var(p, id) local_var(p, id)
756# define METHOD_NOT idNOT
758# define METHOD_NOT '!'
761#define idFWD_REST '*'
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
833rb_strterm_mark(VALUE obj)
836 if (
RBASIC(obj)->flags & STRTERM_HEREDOC) {
843#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
844size_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"
860static inline VALUE intern_sym(
const char *name);
862#include "eventids1.c"
863#include "eventids2.c"
866static VALUE ripper_dispatch1(
struct parser_params*,ID,VALUE);
867static VALUE ripper_dispatch2(
struct parser_params*,ID,VALUE,VALUE);
868static VALUE ripper_dispatch3(
struct parser_params*,ID,VALUE,VALUE,VALUE);
869static VALUE ripper_dispatch4(
struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE);
870static VALUE ripper_dispatch5(
struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE);
871static VALUE ripper_dispatch7(
struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE);
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))
894new_args(
struct parser_params *p, VALUE pre_args, VALUE opt_args, VALUE rest_arg, VALUE post_args, VALUE tail,
YYLTYPE *loc)
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));
902new_args_tail(
struct parser_params *p, VALUE kw_args, VALUE kw_rest_arg, VALUE block,
YYLTYPE *loc)
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);
912args_with_numbered(
struct parser_params *p, VALUE args,
int max_numparam)
918new_array_pattern(
struct parser_params *p, VALUE constant, VALUE pre_arg, VALUE aryptn,
const YYLTYPE *loc)
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);
935new_array_pattern_tail(
struct parser_params *p, VALUE pre_args, VALUE has_rest, VALUE rest_arg, VALUE post_args,
const YYLTYPE *loc)
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);
963new_find_pattern_tail(
struct parser_params *p, VALUE pre_rest_arg, VALUE args, VALUE post_rest_arg,
const YYLTYPE *loc)
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);
994new_hash_pattern_tail(
struct parser_params *p, VALUE kw_args, VALUE kw_rest_arg,
const YYLTYPE *loc)
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))
1096static 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
1119PRINTF_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
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
1135PRINTF_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") : \
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)
1170#ifndef YY_YY_Y_TAB_H_INCLUDED
1171# define YY_YY_Y_TAB_H_INCLUDED
1191 keyword_class = 258,
1192 keyword_module = 259,
1194 keyword_undef = 261,
1195 keyword_begin = 262,
1196 keyword_rescue = 263,
1197 keyword_ensure = 264,
1200 keyword_unless = 267,
1202 keyword_elsif = 269,
1206 keyword_while = 273,
1207 keyword_until = 274,
1209 keyword_break = 276,
1212 keyword_retry = 279,
1215 keyword_do_cond = 282,
1216 keyword_do_block = 283,
1217 keyword_do_LAMBDA = 284,
1218 keyword_return = 285,
1219 keyword_yield = 286,
1220 keyword_super = 287,
1224 keyword_false = 291,
1229 modifier_unless = 296,
1230 modifier_while = 297,
1231 modifier_until = 298,
1232 modifier_rescue = 299,
1233 keyword_alias = 300,
1234 keyword_defined = 301,
1235 keyword_BEGIN = 302,
1237 keyword__LINE__ = 304,
1238 keyword__FILE__ = 305,
1239 keyword__ENCODING__ = 306,
1254 tSTRING_CONTENT = 321,
1300 tQSYMBOLS_BEG = 344,
1311 typedef enum yytokentype yytoken_kind_t;
1315#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
1325 const struct vtable *vars;
1333# define YYSTYPE_IS_TRIVIAL 1
1334# define YYSTYPE_IS_DECLARED 1
1338#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
1347# define YYLTYPE_IS_DECLARED 1
1348# define YYLTYPE_IS_TRIVIAL 1
1361 YYSYMBOL_YYEMPTY = -2,
1363 YYSYMBOL_YYerror = 1,
1364 YYSYMBOL_YYUNDEF = 2,
1365 YYSYMBOL_keyword_class = 3,
1366 YYSYMBOL_keyword_module = 4,
1367 YYSYMBOL_keyword_def = 5,
1368 YYSYMBOL_keyword_undef = 6,
1369 YYSYMBOL_keyword_begin = 7,
1370 YYSYMBOL_keyword_rescue = 8,
1371 YYSYMBOL_keyword_ensure = 9,
1372 YYSYMBOL_keyword_end = 10,
1373 YYSYMBOL_keyword_if = 11,
1374 YYSYMBOL_keyword_unless = 12,
1375 YYSYMBOL_keyword_then = 13,
1376 YYSYMBOL_keyword_elsif = 14,
1377 YYSYMBOL_keyword_else = 15,
1378 YYSYMBOL_keyword_case = 16,
1379 YYSYMBOL_keyword_when = 17,
1380 YYSYMBOL_keyword_while = 18,
1381 YYSYMBOL_keyword_until = 19,
1382 YYSYMBOL_keyword_for = 20,
1383 YYSYMBOL_keyword_break = 21,
1384 YYSYMBOL_keyword_next = 22,
1385 YYSYMBOL_keyword_redo = 23,
1386 YYSYMBOL_keyword_retry = 24,
1387 YYSYMBOL_keyword_in = 25,
1388 YYSYMBOL_keyword_do = 26,
1389 YYSYMBOL_keyword_do_cond = 27,
1390 YYSYMBOL_keyword_do_block = 28,
1391 YYSYMBOL_keyword_do_LAMBDA = 29,
1392 YYSYMBOL_keyword_return = 30,
1393 YYSYMBOL_keyword_yield = 31,
1394 YYSYMBOL_keyword_super = 32,
1395 YYSYMBOL_keyword_self = 33,
1396 YYSYMBOL_keyword_nil = 34,
1397 YYSYMBOL_keyword_true = 35,
1398 YYSYMBOL_keyword_false = 36,
1399 YYSYMBOL_keyword_and = 37,
1400 YYSYMBOL_keyword_or = 38,
1401 YYSYMBOL_keyword_not = 39,
1402 YYSYMBOL_modifier_if = 40,
1403 YYSYMBOL_modifier_unless = 41,
1404 YYSYMBOL_modifier_while = 42,
1405 YYSYMBOL_modifier_until = 43,
1406 YYSYMBOL_modifier_rescue = 44,
1407 YYSYMBOL_keyword_alias = 45,
1408 YYSYMBOL_keyword_defined = 46,
1409 YYSYMBOL_keyword_BEGIN = 47,
1410 YYSYMBOL_keyword_END = 48,
1411 YYSYMBOL_keyword__LINE__ = 49,
1412 YYSYMBOL_keyword__FILE__ = 50,
1413 YYSYMBOL_keyword__ENCODING__ = 51,
1414 YYSYMBOL_tIDENTIFIER = 52,
1416 YYSYMBOL_tGVAR = 54,
1417 YYSYMBOL_tIVAR = 55,
1418 YYSYMBOL_tCONSTANT = 56,
1419 YYSYMBOL_tCVAR = 57,
1420 YYSYMBOL_tLABEL = 58,
1421 YYSYMBOL_tINTEGER = 59,
1422 YYSYMBOL_tFLOAT = 60,
1423 YYSYMBOL_tRATIONAL = 61,
1424 YYSYMBOL_tIMAGINARY = 62,
1425 YYSYMBOL_tCHAR = 63,
1426 YYSYMBOL_tNTH_REF = 64,
1427 YYSYMBOL_tBACK_REF = 65,
1428 YYSYMBOL_tSTRING_CONTENT = 66,
1429 YYSYMBOL_tREGEXP_END = 67,
1431 YYSYMBOL_69_backslash_ = 69,
1433 YYSYMBOL_71_escaped_horizontal_tab_ = 71,
1434 YYSYMBOL_72_escaped_form_feed_ = 72,
1435 YYSYMBOL_73_escaped_carriage_return_ = 73,
1436 YYSYMBOL_74_escaped_vertical_tab_ = 74,
1437 YYSYMBOL_tUPLUS = 75,
1438 YYSYMBOL_tUMINUS = 76,
1446 YYSYMBOL_tANDOP = 84,
1447 YYSYMBOL_tOROP = 85,
1448 YYSYMBOL_tMATCH = 86,
1449 YYSYMBOL_tNMATCH = 87,
1450 YYSYMBOL_tDOT2 = 88,
1451 YYSYMBOL_tDOT3 = 89,
1452 YYSYMBOL_tBDOT2 = 90,
1453 YYSYMBOL_tBDOT3 = 91,
1454 YYSYMBOL_tAREF = 92,
1455 YYSYMBOL_tASET = 93,
1456 YYSYMBOL_tLSHFT = 94,
1457 YYSYMBOL_tRSHFT = 95,
1458 YYSYMBOL_tANDDOT = 96,
1459 YYSYMBOL_tCOLON2 = 97,
1460 YYSYMBOL_tCOLON3 = 98,
1461 YYSYMBOL_tOP_ASGN = 99,
1462 YYSYMBOL_tASSOC = 100,
1463 YYSYMBOL_tLPAREN = 101,
1464 YYSYMBOL_tLPAREN_ARG = 102,
1465 YYSYMBOL_tRPAREN = 103,
1466 YYSYMBOL_tLBRACK = 104,
1467 YYSYMBOL_tLBRACE = 105,
1468 YYSYMBOL_tLBRACE_ARG = 106,
1469 YYSYMBOL_tSTAR = 107,
1470 YYSYMBOL_tDSTAR = 108,
1471 YYSYMBOL_tAMPER = 109,
1472 YYSYMBOL_tLAMBDA = 110,
1473 YYSYMBOL_tSYMBEG = 111,
1474 YYSYMBOL_tSTRING_BEG = 112,
1475 YYSYMBOL_tXSTRING_BEG = 113,
1476 YYSYMBOL_tREGEXP_BEG = 114,
1477 YYSYMBOL_tWORDS_BEG = 115,
1478 YYSYMBOL_tQWORDS_BEG = 116,
1479 YYSYMBOL_tSYMBOLS_BEG = 117,
1480 YYSYMBOL_tQSYMBOLS_BEG = 118,
1481 YYSYMBOL_tSTRING_END = 119,
1482 YYSYMBOL_tSTRING_DEND = 120,
1483 YYSYMBOL_tSTRING_DBEG = 121,
1484 YYSYMBOL_tSTRING_DVAR = 122,
1485 YYSYMBOL_tLAMBEG = 123,
1486 YYSYMBOL_tLABEL_END = 124,
1487 YYSYMBOL_tLOWEST = 125,
1488 YYSYMBOL_126_ = 126,
1489 YYSYMBOL_127_ = 127,
1490 YYSYMBOL_128_ = 128,
1491 YYSYMBOL_129_ = 129,
1492 YYSYMBOL_130_ = 130,
1493 YYSYMBOL_131_ = 131,
1494 YYSYMBOL_132_ = 132,
1495 YYSYMBOL_133_ = 133,
1496 YYSYMBOL_134_ = 134,
1497 YYSYMBOL_135_ = 135,
1498 YYSYMBOL_136_ = 136,
1499 YYSYMBOL_137_ = 137,
1500 YYSYMBOL_138_ = 138,
1501 YYSYMBOL_tUMINUS_NUM = 139,
1502 YYSYMBOL_140_ = 140,
1503 YYSYMBOL_141_ = 141,
1504 YYSYMBOL_tLAST_TOKEN = 142,
1505 YYSYMBOL_143_ = 143,
1506 YYSYMBOL_144_ = 144,
1507 YYSYMBOL_145_ = 145,
1508 YYSYMBOL_146_ = 146,
1509 YYSYMBOL_147_ = 147,
1510 YYSYMBOL_148_ = 148,
1511 YYSYMBOL_149_ = 149,
1512 YYSYMBOL_150_ = 150,
1513 YYSYMBOL_151_ = 151,
1514 YYSYMBOL_152_ = 152,
1515 YYSYMBOL_153_n_ = 153,
1516 YYSYMBOL_YYACCEPT = 154,
1517 YYSYMBOL_program = 155,
1518 YYSYMBOL_156_1 = 156,
1519 YYSYMBOL_top_compstmt = 157,
1520 YYSYMBOL_top_stmts = 158,
1521 YYSYMBOL_top_stmt = 159,
1522 YYSYMBOL_begin_block = 160,
1523 YYSYMBOL_bodystmt = 161,
1524 YYSYMBOL_162_2 = 162,
1525 YYSYMBOL_compstmt = 163,
1526 YYSYMBOL_stmts = 164,
1527 YYSYMBOL_stmt_or_begin = 165,
1528 YYSYMBOL_166_3 = 166,
1529 YYSYMBOL_stmt = 167,
1530 YYSYMBOL_168_4 = 168,
1531 YYSYMBOL_command_asgn = 169,
1532 YYSYMBOL_command_rhs = 170,
1533 YYSYMBOL_expr = 171,
1534 YYSYMBOL_172_5 = 172,
1535 YYSYMBOL_173_6 = 173,
1536 YYSYMBOL_174_7 = 174,
1537 YYSYMBOL_175_8 = 175,
1538 YYSYMBOL_def_name = 176,
1539 YYSYMBOL_defn_head = 177,
1540 YYSYMBOL_defs_head = 178,
1541 YYSYMBOL_179_9 = 179,
1542 YYSYMBOL_expr_value = 180,
1543 YYSYMBOL_expr_value_do = 181,
1544 YYSYMBOL_182_10 = 182,
1545 YYSYMBOL_183_11 = 183,
1546 YYSYMBOL_command_call = 184,
1547 YYSYMBOL_block_command = 185,
1548 YYSYMBOL_cmd_brace_block = 186,
1549 YYSYMBOL_fcall = 187,
1550 YYSYMBOL_command = 188,
1551 YYSYMBOL_mlhs = 189,
1552 YYSYMBOL_mlhs_inner = 190,
1553 YYSYMBOL_mlhs_basic = 191,
1554 YYSYMBOL_mlhs_item = 192,
1555 YYSYMBOL_mlhs_head = 193,
1556 YYSYMBOL_mlhs_post = 194,
1557 YYSYMBOL_mlhs_node = 195,
1559 YYSYMBOL_cname = 197,
1560 YYSYMBOL_cpath = 198,
1561 YYSYMBOL_fname = 199,
1562 YYSYMBOL_fitem = 200,
1563 YYSYMBOL_undef_list = 201,
1564 YYSYMBOL_202_12 = 202,
1566 YYSYMBOL_reswords = 204,
1568 YYSYMBOL_206_13 = 206,
1569 YYSYMBOL_relop = 207,
1570 YYSYMBOL_rel_expr = 208,
1571 YYSYMBOL_lex_ctxt = 209,
1572 YYSYMBOL_arg_value = 210,
1573 YYSYMBOL_aref_args = 211,
1574 YYSYMBOL_arg_rhs = 212,
1575 YYSYMBOL_paren_args = 213,
1576 YYSYMBOL_opt_paren_args = 214,
1577 YYSYMBOL_opt_call_args = 215,
1578 YYSYMBOL_call_args = 216,
1579 YYSYMBOL_command_args = 217,
1580 YYSYMBOL_218_14 = 218,
1581 YYSYMBOL_block_arg = 219,
1582 YYSYMBOL_opt_block_arg = 220,
1583 YYSYMBOL_args = 221,
1584 YYSYMBOL_mrhs_arg = 222,
1585 YYSYMBOL_mrhs = 223,
1586 YYSYMBOL_primary = 224,
1587 YYSYMBOL_225_15 = 225,
1588 YYSYMBOL_226_16 = 226,
1589 YYSYMBOL_227_17 = 227,
1590 YYSYMBOL_228_18 = 228,
1591 YYSYMBOL_229_19 = 229,
1592 YYSYMBOL_230_20 = 230,
1593 YYSYMBOL_231_21 = 231,
1594 YYSYMBOL_232_22 = 232,
1595 YYSYMBOL_233_23 = 233,
1596 YYSYMBOL_primary_value = 234,
1597 YYSYMBOL_k_begin = 235,
1598 YYSYMBOL_k_if = 236,
1599 YYSYMBOL_k_unless = 237,
1600 YYSYMBOL_k_while = 238,
1601 YYSYMBOL_k_until = 239,
1602 YYSYMBOL_k_case = 240,
1603 YYSYMBOL_k_for = 241,
1604 YYSYMBOL_k_class = 242,
1605 YYSYMBOL_k_module = 243,
1606 YYSYMBOL_k_def = 244,
1607 YYSYMBOL_k_do = 245,
1608 YYSYMBOL_k_do_block = 246,
1609 YYSYMBOL_k_rescue = 247,
1610 YYSYMBOL_k_ensure = 248,
1611 YYSYMBOL_k_when = 249,
1612 YYSYMBOL_k_else = 250,
1613 YYSYMBOL_k_elsif = 251,
1614 YYSYMBOL_k_end = 252,
1615 YYSYMBOL_k_return = 253,
1616 YYSYMBOL_then = 254,
1618 YYSYMBOL_if_tail = 256,
1619 YYSYMBOL_opt_else = 257,
1620 YYSYMBOL_for_var = 258,
1621 YYSYMBOL_f_marg = 259,
1622 YYSYMBOL_f_marg_list = 260,
1623 YYSYMBOL_f_margs = 261,
1624 YYSYMBOL_f_rest_marg = 262,
1625 YYSYMBOL_f_any_kwrest = 263,
1626 YYSYMBOL_f_eq = 264,
1627 YYSYMBOL_265_24 = 265,
1628 YYSYMBOL_block_args_tail = 266,
1629 YYSYMBOL_opt_block_args_tail = 267,
1630 YYSYMBOL_excessed_comma = 268,
1631 YYSYMBOL_block_param = 269,
1632 YYSYMBOL_opt_block_param = 270,
1633 YYSYMBOL_block_param_def = 271,
1634 YYSYMBOL_opt_bv_decl = 272,
1635 YYSYMBOL_bv_decls = 273,
1636 YYSYMBOL_bvar = 274,
1637 YYSYMBOL_lambda = 275,
1638 YYSYMBOL_276_25 = 276,
1639 YYSYMBOL_277_26 = 277,
1640 YYSYMBOL_278_27 = 278,
1641 YYSYMBOL_279_28 = 279,
1642 YYSYMBOL_f_larglist = 280,
1643 YYSYMBOL_lambda_body = 281,
1644 YYSYMBOL_do_block = 282,
1645 YYSYMBOL_block_call = 283,
1646 YYSYMBOL_method_call = 284,
1647 YYSYMBOL_brace_block = 285,
1648 YYSYMBOL_brace_body = 286,
1649 YYSYMBOL_287_29 = 287,
1650 YYSYMBOL_288_30 = 288,
1651 YYSYMBOL_289_31 = 289,
1652 YYSYMBOL_do_body = 290,
1653 YYSYMBOL_291_32 = 291,
1654 YYSYMBOL_292_33 = 292,
1655 YYSYMBOL_293_34 = 293,
1656 YYSYMBOL_case_args = 294,
1657 YYSYMBOL_case_body = 295,
1658 YYSYMBOL_cases = 296,
1659 YYSYMBOL_p_case_body = 297,
1660 YYSYMBOL_298_35 = 298,
1661 YYSYMBOL_299_36 = 299,
1662 YYSYMBOL_300_37 = 300,
1663 YYSYMBOL_p_cases = 301,
1664 YYSYMBOL_p_top_expr = 302,
1665 YYSYMBOL_p_top_expr_body = 303,
1666 YYSYMBOL_p_expr = 304,
1667 YYSYMBOL_p_as = 305,
1668 YYSYMBOL_p_alt = 306,
1669 YYSYMBOL_p_lparen = 307,
1670 YYSYMBOL_p_lbracket = 308,
1671 YYSYMBOL_p_expr_basic = 309,
1672 YYSYMBOL_310_38 = 310,
1673 YYSYMBOL_311_39 = 311,
1674 YYSYMBOL_p_args = 312,
1675 YYSYMBOL_p_args_head = 313,
1676 YYSYMBOL_p_args_tail = 314,
1677 YYSYMBOL_p_find = 315,
1678 YYSYMBOL_p_rest = 316,
1679 YYSYMBOL_p_args_post = 317,
1680 YYSYMBOL_p_arg = 318,
1681 YYSYMBOL_p_kwargs = 319,
1682 YYSYMBOL_p_kwarg = 320,
1683 YYSYMBOL_p_kw = 321,
1684 YYSYMBOL_p_kw_label = 322,
1685 YYSYMBOL_p_kwrest = 323,
1686 YYSYMBOL_p_kwnorest = 324,
1687 YYSYMBOL_p_any_kwrest = 325,
1688 YYSYMBOL_p_value = 326,
1689 YYSYMBOL_p_primitive = 327,
1690 YYSYMBOL_p_variable = 328,
1691 YYSYMBOL_p_var_ref = 329,
1692 YYSYMBOL_p_expr_ref = 330,
1693 YYSYMBOL_p_const = 331,
1694 YYSYMBOL_opt_rescue = 332,
1695 YYSYMBOL_exc_list = 333,
1696 YYSYMBOL_exc_var = 334,
1697 YYSYMBOL_opt_ensure = 335,
1698 YYSYMBOL_literal = 336,
1699 YYSYMBOL_strings = 337,
1700 YYSYMBOL_string = 338,
1701 YYSYMBOL_string1 = 339,
1702 YYSYMBOL_xstring = 340,
1703 YYSYMBOL_regexp = 341,
1704 YYSYMBOL_words = 342,
1705 YYSYMBOL_word_list = 343,
1706 YYSYMBOL_word = 344,
1707 YYSYMBOL_symbols = 345,
1708 YYSYMBOL_symbol_list = 346,
1709 YYSYMBOL_qwords = 347,
1710 YYSYMBOL_qsymbols = 348,
1711 YYSYMBOL_qword_list = 349,
1712 YYSYMBOL_qsym_list = 350,
1713 YYSYMBOL_string_contents = 351,
1714 YYSYMBOL_xstring_contents = 352,
1715 YYSYMBOL_regexp_contents = 353,
1716 YYSYMBOL_string_content = 354,
1717 YYSYMBOL_355_40 = 355,
1718 YYSYMBOL_356_41 = 356,
1719 YYSYMBOL_357_42 = 357,
1720 YYSYMBOL_358_43 = 358,
1721 YYSYMBOL_359_44 = 359,
1722 YYSYMBOL_360_45 = 360,
1723 YYSYMBOL_string_dvar = 361,
1724 YYSYMBOL_symbol = 362,
1725 YYSYMBOL_ssym = 363,
1727 YYSYMBOL_dsym = 365,
1728 YYSYMBOL_numeric = 366,
1729 YYSYMBOL_simple_numeric = 367,
1730 YYSYMBOL_nonlocal_var = 368,
1731 YYSYMBOL_user_variable = 369,
1732 YYSYMBOL_keyword_variable = 370,
1733 YYSYMBOL_var_ref = 371,
1734 YYSYMBOL_var_lhs = 372,
1735 YYSYMBOL_backref = 373,
1736 YYSYMBOL_superclass = 374,
1737 YYSYMBOL_375_46 = 375,
1738 YYSYMBOL_f_opt_paren_args = 376,
1739 YYSYMBOL_f_paren_args = 377,
1740 YYSYMBOL_f_arglist = 378,
1741 YYSYMBOL_379_47 = 379,
1742 YYSYMBOL_args_tail = 380,
1743 YYSYMBOL_opt_args_tail = 381,
1744 YYSYMBOL_f_args = 382,
1745 YYSYMBOL_args_forward = 383,
1746 YYSYMBOL_f_bad_arg = 384,
1747 YYSYMBOL_f_norm_arg = 385,
1748 YYSYMBOL_f_arg_asgn = 386,
1749 YYSYMBOL_f_arg_item = 387,
1750 YYSYMBOL_f_arg = 388,
1751 YYSYMBOL_f_label = 389,
1752 YYSYMBOL_f_kw = 390,
1753 YYSYMBOL_f_block_kw = 391,
1754 YYSYMBOL_f_block_kwarg = 392,
1755 YYSYMBOL_f_kwarg = 393,
1756 YYSYMBOL_kwrest_mark = 394,
1757 YYSYMBOL_f_no_kwarg = 395,
1758 YYSYMBOL_f_kwrest = 396,
1759 YYSYMBOL_f_opt = 397,
1760 YYSYMBOL_f_block_opt = 398,
1761 YYSYMBOL_f_block_optarg = 399,
1762 YYSYMBOL_f_optarg = 400,
1763 YYSYMBOL_restarg_mark = 401,
1764 YYSYMBOL_f_rest_arg = 402,
1765 YYSYMBOL_blkarg_mark = 403,
1766 YYSYMBOL_f_block_arg = 404,
1767 YYSYMBOL_opt_f_block_arg = 405,
1768 YYSYMBOL_singleton = 406,
1769 YYSYMBOL_407_48 = 407,
1770 YYSYMBOL_assoc_list = 408,
1771 YYSYMBOL_assocs = 409,
1772 YYSYMBOL_assoc = 410,
1773 YYSYMBOL_operation = 411,
1774 YYSYMBOL_operation2 = 412,
1775 YYSYMBOL_operation3 = 413,
1776 YYSYMBOL_dot_or_colon = 414,
1777 YYSYMBOL_call_op = 415,
1778 YYSYMBOL_call_op2 = 416,
1779 YYSYMBOL_opt_terms = 417,
1780 YYSYMBOL_opt_nl = 418,
1781 YYSYMBOL_rparen = 419,
1782 YYSYMBOL_rbracket = 420,
1783 YYSYMBOL_rbrace = 421,
1784 YYSYMBOL_trailer = 422,
1785 YYSYMBOL_term = 423,
1786 YYSYMBOL_terms = 424,
1789typedef enum yysymbol_kind_t yysymbol_kind_t;
1802#ifndef __PTRDIFF_MAX__
1804# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1815#ifdef __INT_LEAST8_MAX__
1816typedef __INT_LEAST8_TYPE__ yytype_int8;
1817#elif defined YY_STDINT_H
1818typedef int_least8_t yytype_int8;
1820typedef signed char yytype_int8;
1823#ifdef __INT_LEAST16_MAX__
1824typedef __INT_LEAST16_TYPE__ yytype_int16;
1825#elif defined YY_STDINT_H
1826typedef int_least16_t yytype_int16;
1828typedef short yytype_int16;
1837# undef UINT_LEAST8_MAX
1838# undef UINT_LEAST16_MAX
1839# define UINT_LEAST8_MAX 255
1840# define UINT_LEAST16_MAX 65535
1843#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
1844typedef __UINT_LEAST8_TYPE__ yytype_uint8;
1845#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
1846 && UINT_LEAST8_MAX <= INT_MAX)
1847typedef uint_least8_t yytype_uint8;
1848#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
1849typedef unsigned char yytype_uint8;
1851typedef short yytype_uint8;
1854#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
1855typedef __UINT_LEAST16_TYPE__ yytype_uint16;
1856#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
1857 && UINT_LEAST16_MAX <= INT_MAX)
1858typedef uint_least16_t yytype_uint16;
1859#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
1860typedef unsigned short yytype_uint16;
1862typedef int yytype_uint16;
1866# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
1867# define YYPTRDIFF_T __PTRDIFF_TYPE__
1868# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
1869# elif defined PTRDIFF_MAX
1873# define YYPTRDIFF_T ptrdiff_t
1874# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
1876# define YYPTRDIFF_T long
1877# define YYPTRDIFF_MAXIMUM LONG_MAX
1882# ifdef __SIZE_TYPE__
1883# define YYSIZE_T __SIZE_TYPE__
1884# elif defined size_t
1885# define YYSIZE_T size_t
1886# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
1888# define YYSIZE_T size_t
1890# define YYSIZE_T unsigned
1894#define YYSIZE_MAXIMUM \
1895 YY_CAST (YYPTRDIFF_T, \
1896 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
1897 ? YYPTRDIFF_MAXIMUM \
1898 : YY_CAST (YYSIZE_T, -1)))
1900#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
1904typedef yytype_int16 yy_state_t;
1907typedef int yy_state_fast_t;
1910# if defined YYENABLE_NLS && YYENABLE_NLS
1912# include <libintl.h>
1913# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
1917# define YY_(Msgid) Msgid
1922#ifndef YY_ATTRIBUTE_PURE
1923# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
1924# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
1926# define YY_ATTRIBUTE_PURE
1930#ifndef YY_ATTRIBUTE_UNUSED
1931# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
1932# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
1934# define YY_ATTRIBUTE_UNUSED
1939#if ! defined lint || defined __GNUC__
1940# define YY_USE(E) ((void) (E))
1946#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
1947# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
1948# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1949 _Pragma ("GCC diagnostic push") \
1950 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
1952# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
1953 _Pragma ("GCC diagnostic push") \
1954 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
1955 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
1957# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
1958 _Pragma ("GCC diagnostic pop")
1960# define YY_INITIAL_VALUE(Value) Value
1962#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1963# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1964# define YY_IGNORE_MAYBE_UNINITIALIZED_END
1966#ifndef YY_INITIAL_VALUE
1967# define YY_INITIAL_VALUE(Value)
1970#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
1971# define YY_IGNORE_USELESS_CAST_BEGIN \
1972 _Pragma ("GCC diagnostic push") \
1973 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
1974# define YY_IGNORE_USELESS_CAST_END \
1975 _Pragma ("GCC diagnostic pop")
1977#ifndef YY_IGNORE_USELESS_CAST_BEGIN
1978# define YY_IGNORE_USELESS_CAST_BEGIN
1979# define YY_IGNORE_USELESS_CAST_END
1983#define YY_ASSERT(E) ((void) (0 && (E)))
1989# ifdef YYSTACK_USE_ALLOCA
1990# if YYSTACK_USE_ALLOCA
1992# define YYSTACK_ALLOC __builtin_alloca
1993# elif defined __BUILTIN_VA_ARG_INCR
1996# define YYSTACK_ALLOC __alloca
1997# elif defined _MSC_VER
1999# define alloca _alloca
2001# define YYSTACK_ALLOC alloca
2002# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
2005# ifndef EXIT_SUCCESS
2006# define EXIT_SUCCESS 0
2013# ifdef YYSTACK_ALLOC
2015# define YYSTACK_FREE(Ptr) do { ; } while (0)
2016# ifndef YYSTACK_ALLOC_MAXIMUM
2021# define YYSTACK_ALLOC_MAXIMUM 4032
2024# define YYSTACK_ALLOC YYMALLOC
2025# define YYSTACK_FREE YYFREE
2026# ifndef YYSTACK_ALLOC_MAXIMUM
2027# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
2029# if (defined __cplusplus && ! defined EXIT_SUCCESS \
2030 && ! ((defined YYMALLOC || defined malloc) \
2031 && (defined YYFREE || defined free)))
2033# ifndef EXIT_SUCCESS
2034# define EXIT_SUCCESS 0
2038# define YYMALLOC malloc
2039# if ! defined malloc && ! defined EXIT_SUCCESS
2040void *malloc (YYSIZE_T);
2045# if ! defined free && ! defined EXIT_SUCCESS
2052#if (! defined yyoverflow \
2053 && (! defined __cplusplus \
2054 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
2055 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
2060 yy_state_t yyss_alloc;
2066# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
2070# define YYSTACK_BYTES(N) \
2071 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
2072 + YYSIZEOF (YYLTYPE)) \
2073 + 2 * YYSTACK_GAP_MAXIMUM)
2075# define YYCOPY_NEEDED 1
2082# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
2085 YYPTRDIFF_T yynewbytes; \
2086 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
2087 Stack = &yyptr->Stack_alloc; \
2088 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
2089 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
2095#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
2099# if defined __GNUC__ && 1 < __GNUC__
2100# define YYCOPY(Dst, Src, Count) \
2101 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
2103# define YYCOPY(Dst, Src, Count) \
2107 for (yyi = 0; yyi < (Count); yyi++) \
2108 (Dst)[yyi] = (Src)[yyi]; \
2121#define YYNTOKENS 154
2127#define YYNSTATES 1309
2130#define YYMAXUTOK 353
2135#define YYTRANSLATE(YYX) \
2136 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
2137 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
2142static const yytype_uint8 yytranslate[] =
2144 0, 2, 2, 2, 2, 2, 2, 2, 2, 71,
2145 153, 74, 72, 73, 2, 2, 2, 2, 2, 2,
2146 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2147 2, 2, 152, 140, 2, 2, 2, 138, 133, 2,
2148 148, 149, 136, 134, 146, 135, 68, 137, 2, 2,
2149 2, 2, 2, 2, 2, 2, 2, 2, 128, 151,
2150 130, 126, 129, 127, 2, 2, 2, 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, 145, 69, 150, 132, 2, 147, 2, 2, 2,
2154 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2155 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2156 2, 2, 2, 143, 131, 144, 141, 2, 88, 89,
2157 90, 91, 75, 76, 77, 78, 94, 95, 83, 82,
2158 79, 80, 81, 86, 87, 92, 93, 97, 84, 85,
2159 96, 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, 2, 2, 2, 2,
2167 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2168 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2169 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
2170 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2171 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2172 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2173 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2174 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
2175 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
2176 65, 66, 67, 70, 98, 99, 100, 101, 102, 103,
2177 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
2178 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
2184static const yytype_int16 yyrline[] =
2186 0, 1327, 1327, 1327, 1353, 1359, 1366, 1373, 1380, 1386,
2187 1387, 1393, 1406, 1404, 1415, 1426, 1432, 1439, 1446, 1453,
2188 1459, 1464, 1463, 1473, 1473, 1480, 1487, 1497, 1506, 1513,
2189 1521, 1529, 1541, 1553, 1563, 1577, 1578, 1586, 1593, 1601,
2190 1608, 1611, 1618, 1625, 1633, 1640, 1647, 1655, 1662, 1673,
2191 1685, 1698, 1712, 1722, 1727, 1736, 1739, 1740, 1744, 1748,
2192 1752, 1757, 1765, 1756, 1779, 1787, 1778, 1800, 1803, 1820,
2193 1830, 1829, 1848, 1855, 1855, 1855, 1861, 1862, 1865, 1866,
2194 1875, 1885, 1895, 1904, 1915, 1922, 1929, 1936, 1943, 1951,
2195 1959, 1966, 1973, 1982, 1983, 1992, 1993, 2002, 2009, 2016,
2196 2023, 2030, 2037, 2044, 2051, 2058, 2065, 2074, 2075, 2084,
2197 2091, 2100, 2107, 2116, 2123, 2130, 2137, 2147, 2154, 2164,
2198 2171, 2178, 2188, 2195, 2202, 2209, 2216, 2223, 2230, 2237,
2199 2244, 2254, 2262, 2265, 2272, 2279, 2288, 2289, 2290, 2291,
2200 2296, 2299, 2306, 2309, 2316, 2316, 2326, 2327, 2328, 2329,
2201 2330, 2331, 2332, 2333, 2334, 2335, 2336, 2337, 2338, 2339,
2202 2340, 2341, 2342, 2343, 2344, 2345, 2346, 2347, 2348, 2349,
2203 2350, 2351, 2352, 2353, 2354, 2355, 2358, 2358, 2358, 2359,
2204 2359, 2360, 2360, 2360, 2361, 2361, 2361, 2361, 2362, 2362,
2205 2362, 2362, 2363, 2363, 2363, 2364, 2364, 2364, 2364, 2365,
2206 2365, 2365, 2365, 2366, 2366, 2366, 2366, 2367, 2367, 2367,
2207 2367, 2368, 2368, 2368, 2368, 2369, 2369, 2372, 2379, 2386,
2208 2393, 2400, 2407, 2414, 2422, 2430, 2438, 2447, 2456, 2464,
2209 2472, 2480, 2488, 2492, 2496, 2500, 2504, 2508, 2512, 2516,
2210 2520, 2524, 2528, 2532, 2536, 2540, 2541, 2545, 2549, 2553,
2211 2557, 2561, 2565, 2569, 2573, 2577, 2581, 2585, 2585, 2590,
2212 2599, 2610, 2622, 2635, 2649, 2655, 2656, 2657, 2658, 2661,
2213 2665, 2672, 2676, 2682, 2689, 2690, 2694, 2701, 2710, 2715,
2214 2725, 2732, 2744, 2758, 2759, 2762, 2763, 2764, 2768, 2775,
2215 2784, 2792, 2799, 2807, 2815, 2819, 2819, 2856, 2863, 2876,
2216 2880, 2887, 2894, 2901, 2908, 2918, 2919, 2923, 2930, 2937,
2217 2946, 2947, 2948, 2949, 2950, 2951, 2952, 2953, 2954, 2955,
2218 2956, 2964, 2963, 2978, 2978, 2985, 2985, 2993, 3001, 3008,
2219 3015, 3022, 3030, 3037, 3044, 3051, 3058, 3058, 3063, 3067,
2220 3071, 3078, 3079, 3087, 3088, 3099, 3110, 3120, 3131, 3130,
2221 3147, 3146, 3161, 3170, 3213, 3212, 3236, 3235, 3258, 3257,
2222 3280, 3292, 3306, 3313, 3320, 3327, 3336, 3343, 3349, 3366,
2223 3372, 3378, 3384, 3390, 3396, 3403, 3410, 3417, 3423, 3429,
2224 3435, 3441, 3447, 3462, 3469, 3475, 3482, 3483, 3484, 3487,
2225 3488, 3491, 3492, 3504, 3505, 3514, 3515, 3518, 3526, 3535,
2226 3542, 3551, 3558, 3565, 3572, 3579, 3588, 3596, 3605, 3606,
2227 3609, 3609, 3611, 3615, 3619, 3623, 3629, 3634, 3639, 3649,
2228 3653, 3657, 3661, 3665, 3669, 3674, 3678, 3682, 3686, 3690,
2229 3694, 3698, 3702, 3706, 3712, 3713, 3719, 3729, 3742, 3746,
2230 3755, 3757, 3761, 3766, 3773, 3779, 3783, 3787, 3772, 3812,
2231 3821, 3832, 3837, 3843, 3853, 3867, 3874, 3881, 3890, 3899,
2232 3907, 3915, 3922, 3930, 3938, 3945, 3952, 3965, 3973, 3983,
2233 3984, 3988, 3983, 4005, 4006, 4010, 4005, 4029, 4037, 4044,
2234 4052, 4061, 4073, 4074, 4078, 4085, 4089, 4077, 4104, 4105,
2235 4108, 4109, 4117, 4127, 4128, 4133, 4141, 4145, 4149, 4155,
2236 4158, 4167, 4170, 4177, 4180, 4181, 4183, 4184, 4185, 4194,
2237 4203, 4212, 4217, 4226, 4235, 4244, 4249, 4253, 4257, 4263,
2238 4262, 4274, 4279, 4279, 4286, 4295, 4299, 4308, 4312, 4316,
2239 4320, 4324, 4327, 4331, 4340, 4344, 4350, 4360, 4364, 4370,
2240 4371, 4380, 4389, 4393, 4397, 4401, 4407, 4409, 4418, 4426,
2241 4440, 4441, 4464, 4468, 4474, 4480, 4481, 4484, 4485, 4494,
2242 4503, 4511, 4519, 4520, 4521, 4522, 4530, 4540, 4541, 4542,
2243 4543, 4544, 4545, 4546, 4547, 4548, 4555, 4558, 4568, 4579,
2244 4588, 4597, 4604, 4611, 4620, 4632, 4635, 4642, 4649, 4652,
2245 4656, 4659, 4666, 4669, 4670, 4673, 4690, 4691, 4692, 4701,
2246 4711, 4720, 4726, 4736, 4742, 4751, 4753, 4762, 4772, 4778,
2247 4787, 4796, 4806, 4812, 4822, 4828, 4838, 4848, 4867, 4873,
2248 4883, 4893, 4934, 4937, 4936, 4953, 4957, 4962, 4966, 4970,
2249 4952, 4991, 4998, 5005, 5012, 5015, 5016, 5019, 5029, 5030,
2250 5031, 5032, 5035, 5045, 5046, 5056, 5057, 5058, 5059, 5062,
2251 5063, 5064, 5067, 5068, 5069, 5070, 5071, 5074, 5075, 5076,
2252 5077, 5078, 5079, 5080, 5083, 5096, 5105, 5112, 5121, 5122,
2253 5126, 5125, 5135, 5143, 5144, 5152, 5164, 5165, 5165, 5181,
2254 5185, 5189, 5193, 5197, 5204, 5209, 5214, 5218, 5222, 5226,
2255 5230, 5234, 5238, 5242, 5246, 5250, 5254, 5258, 5262, 5266,
2256 5271, 5277, 5286, 5295, 5304, 5313, 5324, 5325, 5333, 5342,
2257 5350, 5371, 5373, 5386, 5396, 5405, 5416, 5424, 5434, 5441,
2258 5451, 5458, 5467, 5468, 5471, 5479, 5487, 5497, 5508, 5519,
2259 5526, 5535, 5542, 5551, 5552, 5555, 5563, 5573, 5574, 5577,
2260 5585, 5595, 5599, 5605, 5610, 5610, 5634, 5635, 5644, 5646,
2261 5669, 5680, 5687, 5696, 5704, 5723, 5724, 5725, 5728, 5729,
2262 5730, 5731, 5734, 5735, 5736, 5739, 5740, 5743, 5744, 5747,
2263 5748, 5751, 5752, 5755, 5756, 5759, 5762, 5765, 5768, 5769,
2264 5770, 5773, 5774, 5777, 5778, 5782
2269#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2274static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2278static const char *
const yytname[] =
2280 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"`class'\"",
2281 "\"`module'\"",
"\"`def'\"",
"\"`undef'\"",
"\"`begin'\"",
2282 "\"`rescue'\"",
"\"`ensure'\"",
"\"`end'\"",
"\"`if'\"",
"\"`unless'\"",
2283 "\"`then'\"",
"\"`elsif'\"",
"\"`else'\"",
"\"`case'\"",
"\"`when'\"",
2284 "\"`while'\"",
"\"`until'\"",
"\"`for'\"",
"\"`break'\"",
"\"`next'\"",
2285 "\"`redo'\"",
"\"`retry'\"",
"\"`in'\"",
"\"`do'\"",
2286 "\"`do' for condition\"",
"\"`do' for block\"",
"\"`do' for lambda\"",
2287 "\"`return'\"",
"\"`yield'\"",
"\"`super'\"",
"\"`self'\"",
"\"`nil'\"",
2288 "\"`true'\"",
"\"`false'\"",
"\"`and'\"",
"\"`or'\"",
"\"`not'\"",
2289 "\"`if' modifier\"",
"\"`unless' modifier\"",
"\"`while' modifier\"",
2290 "\"`until' modifier\"",
"\"`rescue' modifier\"",
"\"`alias'\"",
2291 "\"`defined?'\"",
"\"`BEGIN'\"",
"\"`END'\"",
"\"`__LINE__'\"",
2292 "\"`__FILE__'\"",
"\"`__ENCODING__'\"",
"\"local variable or method\"",
2293 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
2294 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
2295 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
2296 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
2297 "\"literal content\"",
"tREGEXP_END",
"'.'",
"\"backslash\"",
2298 "\"escaped space\"",
"\"escaped horizontal tab\"",
2299 "\"escaped form feed\"",
"\"escaped carriage return\"",
2300 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
2301 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
2302 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
2303 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
2304 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
2305 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
2306 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
2307 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
2308 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
2309 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"tSTRING_DBEG",
2310 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tLOWEST",
"'='",
"'?'",
"':'",
2311 "'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
2312 "tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"','",
2313 "'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
"'\\n'",
"$accept",
"program",
2314 "$@1",
"top_compstmt",
"top_stmts",
"top_stmt",
"begin_block",
2315 "bodystmt",
"$@2",
"compstmt",
"stmts",
"stmt_or_begin",
"$@3",
"stmt",
2316 "$@4",
"command_asgn",
"command_rhs",
"expr",
"@5",
"@6",
"@7",
"@8",
2317 "def_name",
"defn_head",
"defs_head",
"$@9",
"expr_value",
2318 "expr_value_do",
"$@10",
"$@11",
"command_call",
"block_command",
2319 "cmd_brace_block",
"fcall",
"command",
"mlhs",
"mlhs_inner",
2320 "mlhs_basic",
"mlhs_item",
"mlhs_head",
"mlhs_post",
"mlhs_node",
"lhs",
2321 "cname",
"cpath",
"fname",
"fitem",
"undef_list",
"$@12",
"op",
2322 "reswords",
"arg",
"$@13",
"relop",
"rel_expr",
"lex_ctxt",
"arg_value",
2323 "aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
"opt_call_args",
2324 "call_args",
"command_args",
"$@14",
"block_arg",
"opt_block_arg",
2325 "args",
"mrhs_arg",
"mrhs",
"primary",
"$@15",
"$@16",
"$@17",
"$@18",
2326 "@19",
"@20",
"$@21",
"$@22",
"$@23",
"primary_value",
"k_begin",
"k_if",
2327 "k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
2328 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
2329 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"then",
"do",
2330 "if_tail",
"opt_else",
"for_var",
"f_marg",
"f_marg_list",
"f_margs",
2331 "f_rest_marg",
"f_any_kwrest",
"f_eq",
"$@24",
"block_args_tail",
2332 "opt_block_args_tail",
"excessed_comma",
"block_param",
2333 "opt_block_param",
"block_param_def",
"opt_bv_decl",
"bv_decls",
"bvar",
2334 "lambda",
"@25",
"@26",
"@27",
"$@28",
"f_larglist",
"lambda_body",
2335 "do_block",
"block_call",
"method_call",
"brace_block",
"brace_body",
2336 "@29",
"@30",
"@31",
"do_body",
"@32",
"@33",
"@34",
"case_args",
2337 "case_body",
"cases",
"p_case_body",
"@35",
"@36",
"$@37",
"p_cases",
2338 "p_top_expr",
"p_top_expr_body",
"p_expr",
"p_as",
"p_alt",
"p_lparen",
2339 "p_lbracket",
"p_expr_basic",
"@38",
"@39",
"p_args",
"p_args_head",
2340 "p_args_tail",
"p_find",
"p_rest",
"p_args_post",
"p_arg",
"p_kwargs",
2341 "p_kwarg",
"p_kw",
"p_kw_label",
"p_kwrest",
"p_kwnorest",
2342 "p_any_kwrest",
"p_value",
"p_primitive",
"p_variable",
"p_var_ref",
2343 "p_expr_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
2344 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
2345 "regexp",
"words",
"word_list",
"word",
"symbols",
"symbol_list",
2346 "qwords",
"qsymbols",
"qword_list",
"qsym_list",
"string_contents",
2347 "xstring_contents",
"regexp_contents",
"string_content",
"@40",
"$@41",
2348 "@42",
"@43",
"@44",
"@45",
"string_dvar",
"symbol",
"ssym",
"sym",
2349 "dsym",
"numeric",
"simple_numeric",
"nonlocal_var",
"user_variable",
2350 "keyword_variable",
"var_ref",
"var_lhs",
"backref",
"superclass",
2351 "$@46",
"f_opt_paren_args",
"f_paren_args",
"f_arglist",
"@47",
2352 "args_tail",
"opt_args_tail",
"f_args",
"args_forward",
"f_bad_arg",
2353 "f_norm_arg",
"f_arg_asgn",
"f_arg_item",
"f_arg",
"f_label",
"f_kw",
2354 "f_block_kw",
"f_block_kwarg",
"f_kwarg",
"kwrest_mark",
"f_no_kwarg",
2355 "f_kwrest",
"f_opt",
"f_block_opt",
"f_block_optarg",
"f_optarg",
2356 "restarg_mark",
"f_rest_arg",
"blkarg_mark",
"f_block_arg",
2357 "opt_f_block_arg",
"singleton",
"$@48",
"assoc_list",
"assocs",
"assoc",
2358 "operation",
"operation2",
"operation3",
"dot_or_colon",
"call_op",
2359 "call_op2",
"opt_terms",
"opt_nl",
"rparen",
"rbracket",
"rbrace",
2360 "trailer",
"term",
"terms",
"none", YY_NULLPTR
2364yysymbol_name (yysymbol_kind_t yysymbol)
2366 return yytname[yysymbol];
2370#define YYPACT_NINF (-1086)
2372#define yypact_value_is_default(Yyn) \
2373 ((Yyn) == YYPACT_NINF)
2375#define YYTABLE_NINF (-786)
2377#define yytable_value_is_error(Yyn) \
2378 ((Yyn) == YYTABLE_NINF)
2382static const yytype_int16 yypact[] =
2384 -1086, 168, 4730, -1086, 10445, -1086, -1086, -1086, 9903, -1086,
2385 -1086, -1086, -1086, -1086, -1086, -1086, 10571, 10571, -1086, -1086,
2386 -1086, 6363, 5922, -1086, -1086, -1086, -1086, 574, 9758, 26,
2387 48, 92, -1086, -1086, -1086, 5187, 6069, -1086, -1086, 5334,
2388 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, 12335, 12335,
2389 12335, 12335, 273, 7958, 10697, 11201, 11579, 10187, -1086, 9613,
2390 -1086, -1086, -1086, 196, 239, 259, 302, 1067, 12461, 12335,
2391 -1086, 418, -1086, 1061, -1086, 774, 345, 345, -1086, -1086,
2392 195, 441, 364, -1086, 404, 12713, -1086, 405, 3899, 546,
2393 317, 329, -1086, 12587, 12587, -1086, -1086, 8940, 12835, 12957,
2394 13079, 9467, 10571, -1086, 70, 122, -1086, -1086, 471, -1086,
2395 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2396 -1086, 52, 353, -1086, 518, 678, -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, -1086, -1086, -1086, -1086, -1086,
2402 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2403 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2404 -1086, -1086, -1086, -1086, -1086, 486, -1086, -1086, -1086, 505,
2405 12335, 610, 8109, 12335, 12335, 12335, -1086, 12335, 345, 345,
2406 -1086, 552, 5753, 602, -1086, -1086, 592, 369, 274, 454,
2407 641, 464, 615, -1086, -1086, 8814, -1086, 10571, 10823, -1086,
2408 -1086, 9066, -1086, 12587, 618, -1086, 616, 8260, -1086, 8411,
2409 -1086, -1086, 621, 651, 195, -1086, 385, -1086, 736, 5900,
2410 5900, 742, 10697, -1086, 7958, 682, 418, -1086, 1061, 26,
2411 707, -1086, 1061, 26, 699, 85, 617, -1086, 602, 692,
2412 617, -1086, 26, 798, 1067, 13201, 713, 713, 719, -1086,
2413 516, 596, 609, 611, -1086, -1086, -1086, -1086, -1086, 81,
2414 -1086, 453, 501, 470, -1086, -1086, -1086, -1086, 795, -1086,
2415 -1086, -1086, -1086, -1086, -1086, -1086, 9192, 12587, 12587, 12587,
2416 12587, 10697, 12587, 12587, 1785, 748, 754, 7102, 1785, -1086,
2417 761, 7102, -1086, -1086, -1086, 784, -1086, -1086, -1086, -1086,
2418 -1086, 823, -1086, 7958, 10316, 749, 823, -1086, 12335, 12335,
2419 12335, 12335, 12335, -1086, -1086, 12335, 12335, 12335, 12335, 12335,
2420 12335, 12335, 12335, -1086, 12335, -1086, -1086, 12335, 12335, 12335,
2421 12335, 12335, 12335, 12335, 12335, 12335, 12335, -1086, -1086, 13664,
2422 10571, 13754, 7102, 774, 151, 151, 8562, 12587, 8562, 418,
2423 -1086, 753, 844, -1086, -1086, 622, 884, 91, 121, 129,
2424 951, 1040, 12587, 379, -1086, 782, 661, -1086, -1086, -1086,
2425 -1086, 72, 304, 341, 344, 407, 420, 424, 510, 517,
2426 -1086, -1086, -1086, -1086, 548, -1086, -1086, -1086, 15014, -1086,
2427 -1086, 823, 823, -1086, -1086, 544, -1086, -1086, -1086, 904,
2428 804, 806, 823, 12335, 10949, -1086, -1086, 13844, 10571, 13934,
2429 823, 823, 11327, -1086, 26, 791, -1086, -1086, 12335, 26,
2430 -1086, 796, 26, 800, -1086, 159, -1086, -1086, -1086, -1086,
2431 -1086, 9903, -1086, 12335, 808, 813, 13844, 13934, 823, 1061,
2432 48, 26, -1086, -1086, 9318, 815, 26, -1086, -1086, 11453,
2433 -1086, -1086, 11579, -1086, -1086, -1086, 616, 669, -1086, -1086,
2434 821, -1086, 13201, 14024, 10571, 14114, -1086, -1086, -1086, -1086,
2435 -1086, -1086, -1086, -1086, -1086, -1086, -1086, 623, 56, 686,
2436 68, 12335, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2437 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, 1015,
2438 -1086, -1086, -1086, -1086, -1086, 828, -1086, 26, -1086, -1086,
2439 -1086, 843, -1086, 830, 12335, -1086, 832, 108, -1086, -1086,
2440 -1086, 835, 932, 841, 941, -1086, 12461, 987, 992, 418,
2441 12461, 987, 862, -1086, -1086, -1086, 987, -1086, 987, -1086,
2442 11705, -1086, 26, 13201, 875, -1086, 11705, -1086, 736, 6047,
2443 6047, 6047, 6047, 6194, 4208, 6047, 6047, 5900, 5900, 550,
2444 550, -1086, 6485, 1260, 1260, 1391, 386, 386, 736, 736,
2445 736, 1376, 1376, 6510, 5481, 6804, 5628, -1086, 651, -1086,
2446 26, 878, 751, -1086, 768, -1086, -1086, 6216, 987, -1086,
2447 7253, 1009, 7706, 987, 88, 987, 1007, 1020, 130, 14204,
2448 10571, 14294, -1086, 774, -1086, 669, -1086, -1086, -1086, 14384,
2449 10571, 14474, 7102, 12587, -1086, -1086, -1086, -1086, -1086, 3812,
2450 12461, 12461, 9903, 12335, 12335, 12335, 12335, -1086, 12335, 602,
2451 -1086, 615, 5039, 5775, 26, 595, 647, 12335, 12335, -1086,
2452 -1086, -1086, -1086, 11075, -1086, 11327, -1086, -1086, 12587, 5753,
2453 -1086, -1086, 651, 651, 12335, -1086, 261, -1086, -1086, 617,
2454 13201, 821, 403, 65, 26, 257, 298, 1528, -1086, 934,
2455 -1086, 63, -1086, 886, -1086, -1086, 71, 891, -1086, 736,
2456 1015, 1114, -1086, 890, 26, 900, -1086, 209, -1086, -1086,
2457 -1086, 12335, 924, 1785, -1086, -1086, 639, -1086, -1086, -1086,
2458 1785, -1086, -1086, 1696, -1086, -1086, 1011, 5312, -1086, -1086,
2459 -1086, 11831, 659, -1086, -1086, 1012, 5459, -1086, -1086, -1086,
2460 913, -1086, -1086, -1086, 12335, -1086, 914, 916, 1021, -1086,
2461 -1086, 821, 13201, -1086, -1086, 1024, 933, 5165, -1086, -1086,
2462 -1086, 766, 676, 4880, 4880, 935, 823, 823, -1086, 784,
2463 923, 797, 10949, 823, 823, -1086, -1086, 784, -1086, -1086,
2464 801, -1086, 1059, -1086, -1086, -1086, -1086, -1086, -1086, 1020,
2465 987, -1086, 11957, 987, 105, 297, 26, 138, 147, 8562,
2466 418, 12587, 7102, 1081, 65, -1086, 26, 987, 159, 10048,
2467 122, 441, -1086, 5606, -1086, -1086, -1086, -1086, -1086, -1086,
2468 -1086, 823, 823, 787, 823, 823, 26, 929, 159, -1086,
2469 -1086, -1086, 433, 1785, -1086, -1086, -1086, -1086, -1086, -1086,
2470 -1086, -1086, -1086, -1086, -1086, -1086, -1086, 26, -1086, 1015,
2471 -1086, 1091, -1086, -1086, -1086, -1086, -1086, 936, 940, -1086,
2472 1029, 828, 944, -1086, 945, -1086, 944, 12335, 12335, 914,
2473 -1086, 993, -1086, -1086, -1086, 8562, -1086, -1086, -1086, 12335,
2474 12335, 956, -1086, 956, 949, 12083, 10697, 821, 10697, 823,
2475 12335, 14564, 10571, 14654, -1086, -1086, -1086, 4593, 4593, 455,
2476 -1086, 4442, 12, 1045, -1086, 119, -1086, -1086, 215, -1086,
2477 967, -1086, -1086, -1086, 963, -1086, 971, -1086, 13597, -1086,
2478 -1086, -1086, -1086, 876, -1086, -1086, -1086, 38, -1086, -1086,
2479 -1086, -1086, -1086, -1086, -1086, -1086, -1086, 475, -1086, 12335,
2480 12461, 12461, -1086, -1086, 823, 12461, 12461, -1086, -1086, 8562,
2481 12587, 987, -1086, -1086, 987, -1086, -1086, 987, -1086, 12335,
2482 -1086, 118, -1086, 165, 987, 7102, 418, 987, -1086, -1086,
2483 -1086, -1086, -1086, -1086, 12335, 12335, 823, 12335, 12335, -1086,
2484 11327, -1086, 26, 78, -1086, -1086, -1086, 975, 985, 1785,
2485 -1086, 1696, -1086, -1086, 1696, -1086, 1696, -1086, -1086, 5753,
2486 5753, 13323, 151, -1086, -1086, 7832, 5753, 5753, 1232, 8411,
2487 -1086, -1086, 7102, 12335, 989, -1086, -1086, 12461, 5753, 6657,
2488 6951, 26, 793, 803, -1086, -1086, -1086, -1086, 13597, 286,
2489 26, 13478, -1086, 26, 994, -1086, 896, 995, -1086, -1086,
2490 930, -1086, -1086, -1086, -1086, 12587, -1086, 1063, 13564, 13597,
2491 13597, 896, 1033, 4593, 4593, 455, 465, 634, 4880, 4880,
2492 -1086, -1086, 5753, -1086, -1086, -1086, -1086, 12461, -1086, -1086,
2493 -1086, -1086, -1086, 151, -1086, -1086, 4880, -1086, -1086, 12209,
2494 7404, -1086, 987, -1086, -1086, 12335, 1001, 990, 7102, 8411,
2495 -1086, -1086, 1091, 1091, 944, 1008, 944, 944, 1082, -1086,
2496 779, 206, 214, 231, 7102, 1149, 828, -1086, 26, 1031,
2497 843, 1026, 13445, -1086, 1028, -1086, 1035, 1043, -1086, -1086,
2498 -1086, 1047, 827, 36, -1086, 60, 1033, 1049, -1086, -1086,
2499 -1086, 26, -1086, -1086, 1042, -1086, -1086, 1052, -1086, 1056,
2500 -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, 26, 26,
2501 26, 26, 26, 26, -1086, -1086, 7253, 151, 969, 12335,
2502 -1086, 697, -1086, -1086, 1155, 987, 1060, 8688, 985, -1086,
2503 1696, -1086, -1086, -1086, 283, 14744, 10571, 14834, 992, -1086,
2504 -1086, 1044, -1086, 13445, 1358, -1086, -1086, 1152, 788, 639,
2505 -1086, 1358, -1086, 1466, -1086, -1086, 1068, 13597, -1086, 515,
2506 -1086, -1086, 13597, 13564, -1086, -1086, -1086, -1086, -1086, -1086,
2507 801, -1086, 12587, 12587, -1086, -1086, -1086, -1086, -1086, 698,
2508 -1086, -1086, -1086, -1086, 1095, 944, 182, 199, 26, 333,
2509 338, -1086, -1086, 788, -1086, 1071, 1073, -1086, 14924, -1086,
2510 828, 1077, -1086, 1079, 1077, 13597, 1096, 1096, -1086, -1086,
2511 -1086, 7555, -1086, -1086, 1155, -1086, -1086, -1086, 367, 1358,
2512 -1086, 1466, -1086, 1098, 1102, -1086, 1466, -1086, 1466, -1086,
2513 -1086, 1096, 13597, 586, -1086, 1077, 1097, 1077, 1077, -1086,
2514 -1086, -1086, -1086, 1466, -1086, -1086, -1086, 1077, -1086
2520static const yytype_int16 yydefact[] =
2522 2, 0, 0, 1, 0, 374, 375, 376, 0, 367,
2523 368, 369, 372, 370, 371, 373, 362, 363, 364, 365,
2524 385, 295, 295, 658, 657, 659, 660, 773, 0, 773,
2525 0, 0, 662, 661, 663, 755, 757, 654, 653, 756,
2526 656, 645, 646, 647, 648, 596, 668, 669, 0, 0,
2527 0, 0, 0, 0, 323, 785, 785, 105, 444, 616,
2528 616, 618, 620, 0, 0, 0, 0, 0, 0, 0,
2529 3, 771, 6, 9, 35, 40, 677, 677, 56, 77,
2530 295, 76, 0, 93, 0, 97, 107, 0, 67, 245,
2531 264, 0, 321, 0, 0, 73, 73, 771, 0, 0,
2532 0, 0, 332, 343, 78, 341, 310, 311, 595, 597,
2533 312, 313, 314, 316, 315, 317, 594, 635, 636, 593,
2534 643, 664, 665, 318, 0, 319, 81, 5, 8, 186,
2535 197, 187, 210, 183, 203, 193, 192, 213, 214, 208,
2536 191, 190, 185, 211, 215, 216, 195, 184, 198, 202,
2537 204, 196, 189, 205, 212, 207, 206, 199, 209, 194,
2538 182, 201, 200, 181, 188, 179, 180, 176, 177, 178,
2539 136, 138, 137, 171, 172, 167, 149, 150, 151, 158,
2540 155, 157, 152, 153, 173, 174, 159, 160, 164, 168,
2541 154, 156, 146, 147, 148, 161, 162, 163, 165, 166,
2542 169, 170, 175, 141, 143, 28, 139, 140, 142, 0,
2543 752, 0, 0, 0, 0, 298, 616, 0, 677, 677,
2544 290, 0, 273, 301, 91, 294, 785, 0, 664, 665,
2545 0, 319, 785, 748, 92, 773, 89, 0, 785, 464,
2546 88, 773, 774, 0, 0, 23, 257, 0, 10, 0,
2547 362, 363, 335, 465, 0, 239, 0, 332, 240, 230,
2548 231, 329, 0, 21, 0, 0, 771, 17, 20, 773,
2549 95, 16, 325, 773, 0, 778, 778, 274, 0, 0,
2550 778, 746, 773, 0, 0, 0, 677, 677, 103, 366,
2551 0, 113, 114, 121, 445, 640, 639, 641, 638, 0,
2552 637, 0, 0, 0, 603, 612, 608, 614, 644, 60,
2553 251, 252, 781, 782, 4, 783, 772, 0, 0, 0,
2554 0, 0, 0, 0, 700, 0, 676, 0, 700, 674,
2555 0, 0, 377, 469, 458, 82, 473, 340, 378, 473,
2556 454, 785, 109, 0, 101, 98, 785, 64, 0, 0,
2557 0, 0, 0, 267, 268, 0, 0, 0, 0, 228,
2558 229, 0, 0, 61, 0, 265, 266, 0, 0, 0,
2559 0, 0, 0, 0, 0, 0, 0, 767, 768, 0,
2560 785, 0, 0, 72, 0, 0, 0, 0, 0, 771,
2561 350, 772, 0, 396, 395, 0, 0, 664, 665, 319,
2562 131, 132, 0, 0, 134, 672, 0, 664, 665, 319,
2563 358, 206, 199, 209, 194, 176, 177, 178, 136, 137,
2564 744, 69, 68, 743, 0, 90, 770, 769, 0, 342,
2565 598, 785, 785, 144, 751, 329, 302, 754, 297, 0,
2566 0, 0, 785, 0, 0, 291, 300, 0, 785, 0,
2567 785, 785, 0, 292, 773, 0, 334, 296, 701, 773,
2568 286, 785, 773, 785, 285, 773, 339, 59, 25, 27,
2569 26, 0, 336, 0, 0, 0, 0, 0, 785, 19,
2570 0, 773, 327, 15, 772, 94, 773, 324, 330, 780,
2571 779, 275, 780, 277, 331, 747, 0, 120, 644, 111,
2572 106, 676, 0, 0, 785, 0, 446, 622, 642, 625,
2573 623, 617, 599, 600, 619, 601, 621, 0, 0, 0,
2574 0, 0, 784, 7, 29, 30, 31, 32, 33, 57,
2575 58, 707, 704, 703, 702, 705, 713, 722, 701, 0,
2576 734, 723, 738, 737, 733, 785, 699, 773, 683, 706,
2577 708, 709, 711, 685, 715, 720, 785, 726, 409, 408,
2578 731, 685, 736, 685, 740, 682, 0, 0, 785, 0,
2579 0, 0, 0, 470, 469, 83, 0, 474, 0, 271,
2580 0, 272, 773, 0, 99, 110, 0, 65, 237, 244,
2581 246, 247, 248, 255, 256, 249, 250, 226, 227, 253,
2582 254, 62, 773, 241, 242, 243, 232, 233, 234, 235,
2583 236, 269, 270, 758, 760, 759, 761, 463, 295, 461,
2584 773, 785, 758, 760, 759, 761, 462, 295, 0, 387,
2585 0, 386, 0, 0, 0, 0, 348, 0, 329, 0,
2586 785, 0, 73, 356, 131, 132, 133, 670, 354, 0,
2587 785, 0, 0, 0, 765, 766, 70, 758, 759, 295,
2588 0, 0, 0, 0, 0, 0, 0, 750, 0, 303,
2589 299, 785, 758, 759, 773, 758, 759, 0, 0, 749,
2590 333, 775, 280, 287, 282, 289, 338, 24, 0, 258,
2591 11, 34, 0, 785, 0, 22, 96, 18, 326, 778,
2592 0, 104, 762, 119, 773, 758, 759, 700, 626, 0,
2593 602, 0, 605, 0, 610, 607, 0, 0, 611, 238,
2594 0, 407, 399, 401, 773, 404, 397, 0, 681, 742,
2595 675, 0, 0, 0, 692, 714, 0, 680, 724, 725,
2596 0, 695, 735, 0, 697, 739, 48, 260, 384, 360,
2597 379, 785, 785, 585, 678, 50, 262, 361, 467, 471,
2598 0, 468, 475, 453, 0, 36, 306, 0, 39, 305,
2599 108, 102, 0, 55, 41, 53, 0, 278, 301, 217,
2600 37, 0, 319, 0, 0, 0, 785, 785, 460, 86,
2601 0, 466, 287, 785, 785, 284, 459, 84, 283, 322,
2602 785, 388, 785, 346, 390, 74, 389, 347, 484, 0,
2603 0, 381, 0, 0, 762, 328, 773, 758, 759, 0,
2604 0, 0, 0, 131, 132, 135, 773, 0, 773, 0,
2605 455, 79, 42, 278, 218, 52, 225, 145, 753, 304,
2606 293, 785, 785, 466, 785, 785, 773, 785, 773, 224,
2607 276, 112, 466, 700, 447, 450, 627, 631, 632, 633,
2608 624, 634, 604, 606, 613, 609, 615, 773, 406, 0,
2609 710, 0, 741, 727, 411, 684, 712, 685, 685, 721,
2610 726, 785, 685, 732, 685, 709, 685, 0, 0, 586,
2611 587, 785, 588, 380, 382, 0, 12, 14, 592, 0,
2612 0, 785, 80, 785, 309, 0, 0, 100, 0, 785,
2613 0, 0, 785, 0, 577, 583, 550, 0, 0, 0,
2614 522, 773, 519, 538, 616, 0, 576, 66, 493, 499,
2615 501, 503, 497, 496, 534, 498, 543, 546, 549, 555,
2616 556, 545, 506, 557, 507, 562, 563, 564, 567, 568,
2617 569, 570, 571, 573, 572, 574, 575, 553, 63, 0,
2618 0, 0, 87, 776, 785, 0, 0, 85, 383, 0,
2619 0, 0, 391, 393, 0, 75, 485, 0, 352, 0,
2620 477, 0, 351, 466, 0, 0, 0, 0, 466, 359,
2621 745, 71, 456, 457, 0, 0, 785, 0, 0, 281,
2622 288, 337, 773, 0, 628, 398, 400, 402, 405, 0,
2623 688, 0, 690, 679, 0, 696, 0, 693, 698, 49,
2624 261, 0, 0, 590, 591, 0, 51, 263, 773, 0,
2625 435, 434, 0, 0, 307, 38, 54, 0, 279, 758,
2626 759, 773, 758, 759, 565, 566, 132, 581, 0, 524,
2627 773, 525, 531, 773, 0, 518, 0, 0, 521, 537,
2628 0, 578, 650, 649, 651, 0, 579, 0, 494, 0,
2629 0, 544, 548, 560, 561, 0, 505, 504, 0, 0,
2630 554, 552, 259, 47, 222, 46, 223, 0, 44, 220,
2631 45, 221, 394, 0, 344, 345, 0, 349, 478, 0,
2632 0, 353, 0, 671, 355, 0, 0, 438, 0, 0,
2633 448, 629, 0, 0, 685, 685, 685, 685, 0, 589,
2634 0, 664, 665, 319, 0, 785, 785, 433, 773, 0,
2635 709, 417, 717, 718, 785, 729, 417, 417, 415, 472,
2636 476, 308, 466, 773, 516, 529, 541, 526, 517, 532,
2637 616, 773, 777, 551, 0, 500, 495, 534, 502, 535,
2638 539, 547, 542, 558, 559, 582, 515, 511, 773, 773,
2639 773, 773, 773, 773, 43, 219, 0, 0, 490, 0,
2640 479, 785, 357, 449, 0, 0, 0, 0, 403, 689,
2641 0, 686, 691, 694, 329, 0, 785, 0, 785, 13,
2642 414, 0, 436, 0, 418, 426, 424, 0, 716, 0,
2643 413, 0, 429, 0, 431, 523, 527, 0, 533, 0,
2644 520, 580, 0, 0, 508, 509, 510, 512, 513, 514,
2645 785, 486, 0, 0, 480, 482, 483, 481, 442, 773,
2646 440, 443, 452, 451, 0, 685, 762, 328, 773, 758,
2647 759, 584, 437, 728, 416, 417, 417, 329, 0, 719,
2648 785, 417, 730, 417, 417, 0, 530, 535, 536, 540,
2649 392, 0, 491, 492, 0, 439, 630, 687, 466, 0,
2650 421, 0, 423, 762, 328, 412, 0, 430, 0, 427,
2651 432, 528, 0, 785, 441, 417, 417, 417, 417, 488,
2652 489, 487, 422, 0, 419, 425, 428, 417, 420
2656static const yytype_int16 yypgoto[] =
2658 -1086, -1086, -1086, 997, -1086, 47, 772, -312, -1086, -24,
2659 -1086, 769, -1086, 74, -1086, -427, -543, -32, -1086, -1086,
2660 -1086, -1086, 426, 2327, 2557, -1086, -12, -74, -1086, -1086,
2661 -10, -1086, -640, 1214, -9, 1159, -125, 34, -42, -1086,
2662 -406, 32, 3056, -372, 1160, -55, -15, -1086, -1086, -7,
2663 -1086, 4007, -1086, 1170, -1086, 927, 668, -1086, 714, 8,
2664 604, -377, 97, 6, -1086, -404, -193, 17, -1086, -483,
2665 -19, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2666 918, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086, -1086,
2667 -1086, -1086, -1086, -1086, -1086, -1086, 512, -1086, 811, 1895,
2668 -376, -1086, 35, -777, -1086, -768, -788, 549, 401, -296,
2669 141, -1086, 244, -438, -1086, -1086, 373, -1086, -896, -1086,
2670 3, 1019, -1086, -1086, -1086, -1086, -1086, -1086, 447, -1086,
2671 -1086, -99, 705, -1086, -1086, -1086, 946, -1086, -1086, -1086,
2672 -1086, -762, -1086, -13, -1086, -1086, -1086, -1086, -1086, -728,
2673 -258, -1086, -1086, -1086, -1086, 223, -1086, -1086, -38, -1086,
2674 -715, -829, -963, -613, -750, -119, -1086, 212, -1086, -1086,
2675 -1086, 222, -1086, -774, 230, -1086, -1086, -1086, 101, -1086,
2676 -1086, 176, 1381, 1652, -1086, 1195, 1974, 2151, 2180, -1086,
2677 794, 2262, -1086, 2645, 2678, -1086, -1086, -58, -1086, -1086,
2678 -261, -1086, -1086, -1086, -1086, -1086, -1086, -1086, 9, -1086,
2679 -1086, -1086, -1086, 30, -1086, 3022, 10, 1211, 3297, 1722,
2680 -1086, -1086, 29, 727, 23, -1086, -308, -381, -305, -206,
2681 -1060, -513, -313, -698, -451, -500, 578, 106, -1086, -1086,
2682 -663, -1086, -709, -696, -1085, 113, 585, -1086, -649, -1086,
2683 -433, -532, -1086, -1086, -1086, 43, -402, -1086, -324, -1086,
2684 -1086, -86, -1086, -20, 123, 482, 440, 170, -231, -61,
2689static const yytype_int16 yydefgoto[] =
2691 0, 1, 2, 70, 71, 72, 248, 567, 1025, 568,
2692 266, 267, 480, 268, 471, 74, 774, 75, 601, 784,
2693 587, 783, 421, 218, 219, 829, 384, 386, 387, 975,
2694 78, 79, 575, 254, 81, 82, 269, 83, 84, 85,
2695 500, 86, 221, 404, 405, 203, 204, 205, 662, 616,
2696 207, 88, 473, 375, 89, 580, 223, 274, 779, 617,
2697 796, 459, 460, 236, 237, 225, 445, 621, 768, 769,
2698 90, 382, 273, 486, 688, 809, 637, 822, 820, 652,
2699 256, 92, 93, 94, 95, 96, 97, 98, 99, 100,
2700 101, 336, 339, 751, 895, 812, 969, 970, 749, 257,
2701 630, 805, 971, 972, 396, 722, 723, 724, 725, 545,
2702 731, 732, 1254, 1205, 1206, 1128, 1029, 1030, 1106, 1239,
2703 1240, 103, 294, 506, 707, 1003, 854, 1110, 340, 104,
2704 105, 337, 572, 573, 759, 901, 576, 577, 762, 903,
2705 981, 813, 1237, 810, 976, 1096, 1271, 1301, 1177, 927,
2706 1146, 929, 930, 1078, 1079, 931, 1056, 1048, 1050, 1051,
2707 1052, 933, 934, 1159, 1054, 935, 936, 937, 938, 939,
2708 940, 941, 942, 943, 944, 945, 946, 947, 752, 891,
2709 1022, 897, 106, 107, 108, 109, 110, 111, 112, 517,
2710 711, 113, 519, 114, 115, 518, 520, 299, 302, 303,
2711 511, 709, 708, 856, 1004, 1111, 1187, 860, 116, 117,
2712 300, 118, 119, 120, 1066, 228, 229, 123, 230, 231,
2713 648, 821, 325, 326, 327, 328, 875, 734, 547, 548,
2714 549, 550, 885, 552, 553, 554, 555, 1133, 1134, 556,
2715 557, 558, 559, 560, 1135, 1136, 561, 562, 563, 564,
2716 565, 728, 424, 653, 279, 463, 233, 126, 692, 619,
2717 656, 651, 428, 314, 455, 456, 791, 1058, 491, 631,
2724static const yytype_int16 yytable[] =
2726 127, 206, 301, 620, 298, 381, 429, 220, 220, 632,
2727 315, 551, 122, 245, 122, 551, 546, 208, 427, 571,
2728 546, 206, 388, 569, 737, 974, 726, 881, 240, 265,
2729 239, 646, 462, 226, 226, 876, 315, 208, 289, 453,
2730 670, 514, 516, 345, 883, 493, 422, 977, 670, 495,
2731 679, 128, 206, 277, 281, 618, 958, 627, 309, 232,
2732 232, 383, 383, 122, 122, 383, 289, 292, 932, 932,
2733 628, 674, 275, 880, 329, 329, 73, 390, 73, 289,
2734 289, 289, 385, 1008, 878, 389, 335, 270, 334, 288,
2735 679, 884, 1053, 220, 206, 292, 701, 308, 276, 280,
2736 331, 1006, 316, 780, 659, 1157, 330, 1108, 398, 408,
2737 408, 408, 1216, 224, 234, 804, -122, 832, 835, 226,
2738 957, 957, 713, 618, 1241, 627, 1262, 704, 272, 507,
2739 -126, 629, 1129, -328, 717, 1075, 1067, 507, 377, 481,
2740 -658, 449, 738, 1044, 1045, 232, -123, 507, 332, 962,
2741 243, -666, 246, 693, -130, -129, -773, 967, 439, 773,
2742 739, -328, -328, -125, 629, 242, 378, 426, 3, -658,
2743 477, 1061, -127, 1062, 1063, 714, 1064, 771, -122, 242,
2744 741, 693, 744, 1076, 509, 510, 1077, 718, 265, 242,
2745 -124, 247, 509, 510, 1262, -126, 322, 323, -113, 425,
2746 508, 1109, 509, 510, 505, 315, 1217, 726, 868, 465,
2747 -328, 467, -128, -759, 1241, 862, 329, 329, 582, -122,
2748 1065, 332, 122, 865, 446, 475, 220, -123, 220, 220,
2749 446, 489, 1201, 773, 773, 249, 464, -113, 490, 312,
2750 265, 313, 331, 499, -130, 127, 483, 440, 441, 1169,
2751 1172, -117, 226, -758, 226, 461, 712, 122, 712, 122,
2752 1268, 239, 334, 816, 1099, 333, 289, -114, 890, 312,
2753 453, 313, 122, 826, 122, -121, -120, 825, 232, 670,
2754 232, 670, -116, 679, -116, 383, 383, 383, 383, 882,
2755 529, 530, 886, -118, 872, 292, -129, 484, 270, 1163,
2756 1164, 1147, 312, 872, 313, 524, 525, 526, 527, 641,
2757 331, -115, 242, 883, 498, 1067, 876, 693, 542, 265,
2758 1160, 73, -128, -118, 1188, 289, 122, 693, 315, 261,
2759 -758, 122, 454, -126, 457, -126, 479, 122, 333, 581,
2760 827, 122, 543, 238, 581, 1006, -125, -759, 304, 1013,
2761 -128, -127, -128, 122, 292, 383, 726, -122, 726, -122,
2762 1115, 1068, 633, 523, 635, -123, 907, -123, 1178, 636,
2763 643, 220, -657, -666, 625, 634, 584, 270, 464, 1137,
2764 -124, 932, -130, -116, -130, -366, 1067, -94, 670, 626,
2765 73, 305, 122, 957, 551, 528, 122, 377, 122, 546,
2766 -122, -657, 855, -116, 1235, 496, -116, -108, 957, -659,
2767 -116, 306, -660, -366, -366, 957, 957, 1083, 1085, 1236,
2768 551, 625, 1088, 1090, -118, 378, 379, 551, -117, 581,
2769 581, 644, -541, 957, -129, 645, -129, 377, -659, 220,
2770 581, -660, 625, -119, -118, -759, 464, -118, 581, 581,
2771 863, -118, -667, 377, 307, 863, 687, 626, -115, 446,
2772 499, 446, -366, 348, 206, 378, 447, 1160, 850, 338,
2773 625, -785, 1160, 1269, 380, -662, 581, 846, 840, -123,
2774 208, 378, 476, 289, -125, 626, -125, 671, -661, -127,
2775 341, -127, -663, 324, 122, 220, 1010, 1012, 625, -114,
2776 1260, 1015, 464, 1017, -662, 1018, 876, 644, 754, 1080,
2777 987, 1046, 292, 626, 448, 1160, 1299, -661, -124, 507,
2778 -124, -663, 372, 373, 374, 928, 928, 1081, 1132, -117,
2779 448, 346, 699, 773, 773, 1041, 507, 515, 773, 773,
2780 551, 499, 1269, 729, 1174, 546, 880, 1047, 1002, -117,
2781 342, -758, -117, -667, 729, 1256, -117, 746, 1114, -115,
2782 1116, 755, 1263, 451, 289, 1117, 753, 507, 819, 312,
2783 765, 313, 512, 806, 509, 510, 775, 1131, -652, -115,
2784 -123, 507, -115, 60, 377, -655, -115, 618, 876, 627,
2785 -130, 509, 510, 292, 1200, 1138, 670, 767, 679, 726,
2786 726, 894, 1210, 767, 1266, 1100, 800, -652, 802, 1267,
2787 773, 808, 378, 503, -655, -773, 654, 431, 242, 446,
2788 513, 828, 509, 510, 789, 798, 788, 348, 353, 354,
2789 1296, 220, 433, 797, 625, 795, 509, 510, 464, 1153,
2790 122, 220, 122, 478, 625, 655, 1124, 837, 464, 626,
2791 775, 775, 1291, 241, 840, 206, 848, 798, 851, 626,
2792 773, 504, 122, 1049, -664, 831, 435, 795, 893, 446,
2793 -129, 208, 468, 1102, 894, 365, 366, -665, 442, -319,
2794 1072, 289, 469, 470, 370, 371, 372, 373, 374, 507,
2795 377, 798, -664, -664, 844, 913, 551, 536, 1212, 1214,
2796 788, 795, 443, 1165, 1132, -665, -665, -319, -319, 1132,
2797 292, 1132, 894, 1132, 811, 1130, 537, 1176, 378, 639,
2798 1140, -125, 241, 466, 278, 785, 847, 242, 1285, 377,
2799 499, 992, 1126, 1189, 1191, 1192, 1193, -329, 444, 1245,
2800 450, -664, 710, 790, 509, 510, 845, 541, 542, 892,
2801 898, 485, 507, 289, -665, 487, -319, 378, 649, 985,
2802 1261, 452, 1264, 492, 472, -329, -329, 640, 767, 235,
2803 490, 1138, 543, -127, 422, 432, 872, 432, 1138, 1132,
2804 1138, 1132, 292, -773, 581, 581, 1132, 242, 1132, 383,
2805 1143, 581, 581, 956, 956, 984, 1185, 790, 973, 238,
2806 973, 1231, -130, 1132, -130, 715, 650, 509, 510, 986,
2807 1049, 322, 323, 348, -329, 968, 894, 1280, 1282, 1248,
2808 1049, 1049, 206, 1287, -121, 1289, 1290, 790, 1295, 122,
2809 1297, 482, 122, -93, 377, 847, 494, 1298, 928, 581,
2810 581, 478, 581, 581, 1274, 446, 1138, 377, 1138, 488,
2811 793, 242, 1307, 1138, 497, 1138, 377, 1302, 1304, 1305,
2812 1306, 324, 378, 911, 1277, 502, 1060, 794, -129, 1308,
2813 1138, 1024, 521, 693, 566, 378, 1195, -125, 434, 729,
2814 -673, 436, 437, 438, 378, 1258, 996, 570, -120, 1023,
2815 574, 1130, 793, 579, -127, 585, 964, -116, 1130, 1031,
2816 638, 1031, 794, 220, 522, 122, 625, 581, 1126, 642,
2817 464, 912, 647, -124, -118, 1126, 122, 1126, 122, -125,
2818 91, 626, 91, -124, 1196, 1103, 964, 956, 956, -127,
2819 664, 956, 665, 650, 227, 227, 680, 1151, 383, 790,
2820 681, 682, 683, -115, 684, 1092, 685, 686, 956, 790,
2821 775, 775, 690, -124, 916, 775, 775, 691, 1093, 1170,
2822 1173, -108, 581, 696, 1073, 1074, 1130, 700, 698, -410,
2823 507, 91, 91, 537, 727, 290, 733, -755, 736, 122,
2824 1035, 740, 1036, 1126, 742, 1126, 227, 743, 857, 858,
2825 1126, 859, 1126, 745, 581, 122, 507, 748, 46, 47,
2826 750, 1125, 289, 290, 541, 1139, 758, 1126, 1150, 1232,
2827 1233, 227, 227, 501, 501, 227, 395, 406, 406, -652,
2828 227, 772, 801, 512, 792, 509, 510, 775, 663, 730,
2829 1156, 1122, 808, 383, 1197, 122, 869, 811, 864, 122,
2830 1168, 1171, 122, 866, 790, 1057, 871, -652, -652, 512,
2831 874, 509, 510, 1154, 1153, 887, 899, 902, 956, 909,
2832 -301, 956, 905, 959, 770, 906, -756, 531, 908, 532,
2833 533, 534, 535, 963, 894, 1000, 1181, 775, 956, 956,
2834 956, 739, 1009, 956, 956, 1186, 1011, 1028, 956, 956,
2835 1014, 1016, 1219, 1021, -755, -302, -652, 1059, 1069, -755,
2836 1198, 317, 318, 319, 320, 321, 956, -762, -655, 1070,
2837 122, 667, 669, 289, 843, 914, 720, 1071, 122, 122,
2838 278, 1112, 721, 898, 729, 1107, 41, 42, 43, 44,
2839 91, 1113, 729, 1067, 122, -303, -655, -655, 1194, 1152,
2840 1149, 1184, 408, 531, 852, 532, 533, 534, 535, -762,
2841 1183, 1107, 1230, 227, 1190, 227, 227, 669, 893, 227,
2842 278, 227, 1202, 1244, 790, 91, 531, 91, 532, 533,
2843 534, 535, 1204, 790, 1209, 1252, 790, -762, -762, 973,
2844 91, 1211, 91, -756, 289, -655, 122, 220, -756, 1213,
2845 625, 1221, 720, -304, 464, 1218, 753, 122, 1222, 790,
2846 383, 383, 1223, 290, 1243, 626, 870, 1238, 1257, 532,
2847 533, 534, 535, 408, 1265, 1276, 80, 1279, 80, 1281,
2848 1272, 1273, 735, 1286, -762, 1288, -762, 956, 973, -758,
2849 80, 80, 956, 956, 91, 227, 227, 227, 227, 91,
2850 227, 227, 1292, 1303, 474, 91, -758, 1293, 766, 91,
2851 -759, 1107, 695, 697, 778, 991, 983, 393, 729, 376,
2852 410, 91, 290, 830, 896, 1270, 988, 80, 80, 867,
2853 1007, 1203, 1127, 586, 1057, 956, 1032, 1294, 993, 760,
2854 1300, 122, 80, 1161, 531, 578, 532, 533, 534, 535,
2855 536, 973, 1158, 1162, 790, 790, 790, 1155, 227, 1251,
2856 91, 1199, 956, 430, 91, 227, 91, 80, 80, 537,
2857 990, 80, 423, 716, 879, 1259, 80, 1255, 877, 0,
2858 227, 1220, 0, 0, 0, 0, 0, 0, 999, 0,
2859 1001, 838, 0, 539, 0, 0, 839, 348, 0, 540,
2860 541, 542, 0, 0, 0, 0, 0, 0, 0, 1005,
2861 0, 669, 0, 278, 361, 362, 0, 0, 660, 661,
2862 0, 1055, 1275, 0, 0, 543, 227, 0, 544, 666,
2863 0, 790, 0, 0, 834, 836, 0, 677, 678, 0,
2864 0, 0, 757, 0, 0, 242, 0, 761, 0, 763,
2865 0, 834, 836, 369, 370, 371, 372, 373, 374, 873,
2866 0, 0, 91, 0, 0, 694, 0, 0, 849, 0,
2867 531, 0, 532, 533, 534, 535, 536, 0, 0, 889,
2868 290, 0, 227, 0, 0, 0, 80, 0, 0, 0,
2869 0, 0, 904, 0, 0, 537, 0, 0, 0, 799,
2870 0, 0, 0, 0, 803, 0, 807, 0, 0, 80,
2871 0, 80, 80, 348, 0, 80, 0, 80, 0, 539,
2872 669, 80, 0, 80, 0, 540, 541, 542, 348, 0,
2873 361, 362, 0, 0, 0, 0, 80, 0, 80, 0,
2874 980, 1142, 0, 0, 227, 361, 362, 0, 227, 0,
2875 1144, 543, 0, 1148, 544, 0, 0, 0, 227, 0,
2876 0, 290, 0, 0, 781, 0, 0, 367, 368, 369,
2877 370, 371, 372, 373, 374, 0, 1166, 0, 531, 0,
2878 532, 533, 534, 535, 536, 370, 371, 372, 373, 374,
2879 80, 80, 80, 80, 80, 80, 80, 80, 0, 0,
2880 0, 80, 0, 537, 0, 80, 0, 0, 91, 0,
2881 91, 0, 0, 0, 0, 0, 0, 80, 227, 1167,
2882 0, 0, 0, 0, 0, 0, 0, 539, 227, 0,
2883 91, 227, 0, 1034, 541, 542, 0, 0, 781, 781,
2884 531, 0, 532, 533, 534, 535, 536, 0, 0, 0,
2885 0, 0, 0, 0, 80, 0, 80, 0, 0, 543,
2886 80, 80, 80, 0, 0, 537, 227, 0, 0, 0,
2887 0, 1227, 1228, 1229, 0, 0, 80, 0, 290, 538,
2888 0, 978, 0, 0, 982, 1215, 0, 0, 0, 539,
2889 0, 0, 0, 0, 0, 540, 541, 542, 989, 0,
2890 0, 0, 0, 0, 0, 0, 0, 1098, 0, 0,
2891 1224, 1225, 1226, 0, 0, 0, 0, 0, 0, 0,
2892 0, 543, 80, 0, 544, 0, 0, 0, 278, 0,
2893 0, 0, 0, 0, 1084, 1086, 853, 0, 0, 1089,
2894 1091, 0, 0, 0, 0, 0, 0, 0, 1278, 0,
2895 290, 0, 0, 0, 0, 0, 0, 0, 80, 0,
2896 0, 1141, 0, 0, 0, 0, 0, 0, 1084, 1086,
2897 0, 1089, 1091, 960, 961, 0, 0, 0, 80, 0,
2898 965, 966, 0, 0, 125, 0, 125, 0, 0, 0,
2899 0, 0, 0, 0, 0, 0, 0, 91, 0, 227,
2900 91, 0, 0, 0, 0, 0, 0, 0, 531, 0,
2901 532, 533, 534, 535, 536, 0, 0, 0, 0, 0,
2902 0, 0, 0, 0, 0, 0, 0, 1180, 994, 995,
2903 0, 997, 998, 537, 0, 125, 125, 0, 0, 293,
2904 80, 0, 1094, 0, 80, 1095, 0, 538, 1097, 0,
2905 0, 0, 0, 0, 80, 1101, 0, 539, 1104, 0,
2906 80, 1175, 926, 926, 541, 542, 0, 293, 0, 0,
2907 0, 0, 0, 91, 0, 0, 0, 0, 0, 1175,
2908 399, 409, 409, 0, 91, 0, 91, 0, 0, 543,
2909 227, 0, 0, 0, 0, 0, 1037, 531, 0, 532,
2910 533, 534, 535, 536, 80, 0, 80, 1234, 0, 0,
2911 0, 0, 0, 0, 80, 0, 0, 0, 0, 0,
2912 0, 0, 537, 0, 80, 0, 80, 80, 0, 0,
2913 0, 0, 0, 0, 80, 80, 538, 0, 781, 781,
2914 0, 0, 0, 781, 781, 0, 539, 91, 227, 0,
2915 0, 1087, 540, 541, 542, 0, 0, 102, 0, 102,
2916 0, 0, 80, 91, 0, 0, 0, 0, 0, 0,
2917 0, 102, 102, 1182, 0, 0, 0, 0, 543, 0,
2918 0, 544, 0, 1105, 0, 0, 0, 0, 0, 0,
2919 0, 0, 0, 0, 125, 0, 926, 926, 0, 1120,
2920 926, 0, 0, 91, 0, 0, 0, 91, 102, 102,
2921 91, 0, 0, 0, 0, 781, 0, 926, 0, 0,
2922 0, 0, 0, 102, 0, 0, 0, 0, 0, 125,
2923 0, 125, 0, 0, 0, 0, 0, 0, 0, 0,
2924 0, 0, 0, 227, 125, 0, 125, 0, 102, 102,
2925 0, 0, 102, 0, 0, 0, 1242, 102, 0, 0,
2926 0, 0, 0, 0, 0, 781, 0, 293, 0, 0,
2927 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
2928 0, 0, 0, 0, 0, 0, 91, 91, 0, 0,
2929 0, 0, 0, 80, 0, 80, 80, 0, 125, 0,
2930 0, 0, 91, 125, 0, 0, 0, 0, 0, 125,
2931 1208, 0, 0, 125, 0, 0, 0, 0, 0, 0,
2932 0, 0, 0, 0, 0, 125, 293, 926, 0, 0,
2933 926, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2934 0, 0, 0, 0, 0, 0, 0, 926, 926, 926,
2935 0, 0, 926, 926, 91, 0, 0, 926, 926, 0,
2936 0, 0, 0, 0, 125, 91, 0, 102, 125, 80,
2937 125, 0, 0, 0, 227, 926, 0, 0, 0, 0,
2938 80, 1253, 80, 0, 0, 0, 80, 0, 0, 0,
2939 102, 0, 102, 102, 0, 0, 102, 0, 102, 0,
2940 0, 0, 102, 0, 102, 0, 0, 0, 0, 0,
2941 227, 227, 0, 0, 0, 0, 0, 102, 0, 102,
2942 0, 0, 0, 0, 948, 948, 0, 0, 0, 0,
2943 0, 0, 0, 0, 80, 80, 0, 0, 0, 80,
2944 80, 0, 0, 80, 80, 0, 0, 0, 0, 91,
2945 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,
2946 0, 0, 0, 0, 0, 0, 125, 0, 0, 0,
2947 0, 102, 102, 102, 102, 102, 102, 102, 102, 0,
2948 0, 0, 102, 0, 293, 0, 102, 0, 0, 0,
2949 0, 0, 0, 0, 0, 0, 926, 0, 102, 80,
2950 0, 926, 926, 80, 0, 0, 80, 0, 0, 0,
2951 0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
2952 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2953 0, 0, 0, 0, 0, 102, 0, 102, 0, 80,
2954 0, 102, 102, 102, 926, 0, 0, 0, 0, 0,
2955 0, 0, 0, 0, 0, 0, 0, 102, 948, 948,
2956 0, 80, 948, 0, 0, 293, 0, 0, 782, 0,
2957 0, 926, 0, 0, 80, 0, 0, 0, 0, 948,
2958 0, 0, 80, 80, 0, 0, 0, 0, 0, 76,
2959 0, 76, 0, 0, 0, 0, 0, 0, 80, 0,
2960 0, 0, 0, 102, 0, 0, 0, 0, 0, 0,
2961 0, 0, 125, 0, 125, 0, 0, 0, 0, 0,
2962 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2963 0, 0, 0, 0, 125, 0, 0, 0, 0, 102,
2964 76, 76, 782, 782, 286, 0, 0, 0, 0, 0,
2965 80, 0, 0, 0, 0, 0, 0, 0, 0, 102,
2966 0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
2967 80, 0, 286, 0, 0, 0, 0, 0, 0, 0,
2968 0, 0, 293, 0, 0, 286, 286, 286, 0, 948,
2969 0, 861, 948, 0, 0, 949, 949, 0, 0, 0,
2970 0, 0, 0, 0, 0, 0, 80, 80, 0, 948,
2971 948, 948, 0, 0, 948, 948, 0, 0, 0, 948,
2972 948, 102, 0, 0, 0, 102, 0, 0, 0, 0,
2973 0, 0, 0, 0, 0, 102, 0, 948, 0, 0,
2974 0, 102, 0, 0, 0, 80, 0, 0, 0, 0,
2975 0, 0, 0, 0, 293, 0, 0, 0, 0, 0,
2976 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2977 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2978 0, 0, 0, 0, 0, 102, 0, 102, 0, 0,
2979 0, 0, 0, 0, 0, 102, 0, 0, 0, 76,
2980 0, 125, 0, 0, 125, 102, 0, 102, 102, 0,
2981 0, 0, 0, 0, 0, 102, 102, 0, 0, 77,
2982 0, 77, 0, 0, 0, 0, 0, 0, 0, 949,
2983 949, 0, 0, 949, 76, 0, 76, 0, 0, 0,
2984 0, 0, 0, 102, 0, 0, 0, 0, 0, 76,
2985 949, 76, 0, 0, 0, 0, 0, 0, 948, 0,
2986 0, 0, 0, 948, 948, 0, 0, 0, 0, 0,
2987 77, 77, 286, 0, 287, 0, 0, 125, 0, 0,
2988 0, 0, 0, 0, 0, 0, 0, 0, 125, 0,
2989 125, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2990 0, 0, 287, 76, 0, 0, 948, 0, 76, 0,
2991 0, 0, 0, 0, 76, 287, 287, 287, 76, 0,
2992 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2993 76, 286, 0, 948, 0, 0, 0, 0, 0, 0,
2994 0, 0, 782, 782, 0, 0, 0, 782, 782, 0,
2995 0, 125, 0, 0, 0, 0, 0, 0, 0, 0,
2996 949, 0, 0, 949, 0, 0, 0, 125, 0, 76,
2997 0, 0, 0, 76, 102, 76, 102, 102, 0, 0,
2998 949, 949, 949, 0, 0, 949, 949, 0, 0, 0,
2999 949, 949, 0, 0, 0, 0, 0, 0, 0, 0,
3000 0, 0, 0, 1123, 0, 0, 0, 125, 949, 0,
3001 0, 125, 0, 0, 125, 0, 0, 950, 950, 782,
3002 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,
3003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3004 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3005 102, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3006 0, 102, 0, 102, 77, 0, 77, 102, 0, 782,
3007 0, 76, 0, 0, 0, 0, 0, 0, 0, 77,
3008 0, 77, 125, 0, 0, 0, 0, 0, 0, 286,
3009 125, 125, 0, 0, 0, 0, 0, 0, 0, 0,
3010 0, 0, 287, 0, 0, 0, 125, 0, 0, 0,
3011 0, 0, 0, 0, 409, 102, 102, 0, 0, 0,
3012 102, 102, 0, 0, 102, 102, 0, 0, 0, 949,
3013 0, 0, 0, 77, 949, 949, 0, 0, 77, 0,
3014 102, 0, 0, 0, 77, 0, 0, 0, 77, 0,
3015 0, 950, 950, 0, 0, 950, 0, 0, 125, 0,
3016 77, 287, 0, 0, 0, 0, 0, 0, 0, 125,
3017 286, 0, 950, 76, 0, 0, 0, 949, 0, 0,
3018 102, 0, 0, 0, 102, 409, 0, 102, 0, 0,
3019 0, 0, 102, 0, 951, 951, 0, 0, 0, 77,
3020 0, 0, 0, 77, 949, 77, 0, 0, 0, 0,
3021 0, 0, 0, 0, 0, 0, 0, 76, 0, 76,
3022 102, 0, 0, 952, 952, 0, 0, 0, 0, 0,
3023 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,
3024 0, 0, 102, 0, 0, 0, 0, 76, 76, 0,
3025 0, 0, 0, 125, 0, 102, 0, 0, 0, 0,
3026 0, 0, 0, 102, 102, 0, 0, 0, 0, 0,
3027 0, 0, 0, 0, 0, 0, 0, 0, 0, 102,
3028 0, 0, 950, 0, 121, 950, 121, 286, 0, 0,
3029 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3030 0, 77, 950, 950, 950, 953, 953, 950, 950, 0,
3031 0, 0, 950, 950, 0, 0, 0, 0, 87, 287,
3032 87, 0, 0, 0, 0, 0, 0, 0, 951, 951,
3033 950, 102, 951, 0, 0, 121, 121, 0, 0, 291,
3034 0, 0, 102, 0, 0, 0, 0, 0, 0, 951,
3035 0, 102, 0, 0, 0, 0, 0, 952, 952, 286,
3036 0, 952, 0, 0, 0, 0, 0, 291, 0, 87,
3037 87, 0, 0, 0, 0, 0, 0, 0, 952, 0,
3038 397, 407, 407, 407, 0, 0, 0, 102, 102, 0,
3039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3040 287, 0, 0, 77, 0, 0, 76, 0, 0, 76,
3041 0, 0, 0, 0, 394, 0, 0, 0, 0, 0,
3042 0, 0, 0, 0, 0, 0, 102, 0, 0, 0,
3043 0, 0, 0, 0, 0, 0, 0, 0, 0, 953,
3044 953, 0, 0, 953, 0, 0, 0, 77, 0, 77,
3045 0, 950, 0, 0, 0, 0, 950, 950, 0, 951,
3046 953, 0, 951, 0, 0, 0, 0, 0, 0, 77,
3047 0, 0, 0, 0, 0, 0, 0, 77, 77, 951,
3048 951, 951, 76, 0, 951, 951, 0, 0, 952, 951,
3049 951, 952, 0, 76, 121, 76, 0, 0, 0, 950,
3050 0, 0, 0, 0, 0, 0, 0, 951, 952, 952,
3051 952, 0, 0, 952, 952, 0, 0, 287, 952, 952,
3052 0, 0, 0, 0, 0, 0, 950, 0, 87, 121,
3053 0, 121, 0, 0, 0, 0, 952, 0, 0, 0,
3054 0, 0, 0, 0, 121, 0, 121, 76, 76, 0,
3055 0, 0, 76, 76, 0, 0, 76, 0, 0, 124,
3056 0, 124, 0, 87, 0, 87, 0, 291, 0, 0,
3057 953, 0, 76, 953, 0, 0, 0, 0, 87, 0,
3058 87, 0, 0, 0, 0, 0, 0, 0, 0, 287,
3059 953, 953, 953, 0, 0, 953, 953, 0, 121, 0,
3060 953, 953, 0, 121, 0, 0, 0, 0, 286, 121,
3061 124, 124, 76, 121, 0, 0, 76, 0, 953, 76,
3062 0, 0, 0, 0, 76, 121, 291, 0, 951, 0,
3063 0, 0, 87, 951, 951, 0, 77, 87, 0, 77,
3064 0, 0, 0, 87, 0, 0, 0, 87, 0, 0,
3065 0, 0, 0, 0, 0, 0, 0, 952, 0, 87,
3066 0, 0, 952, 952, 121, 0, 0, 0, 121, 0,
3067 121, 0, 0, 0, 76, 0, 951, 0, 0, 0,
3068 0, 0, 0, 0, 0, 0, 0, 76, 954, 954,
3069 0, 0, 0, 0, 0, 76, 76, 0, 87, 0,
3070 0, 0, 87, 951, 87, 952, 0, 0, 0, 0,
3071 0, 76, 77, 0, 0, 0, 0, 0, 0, 286,
3072 0, 955, 955, 77, 0, 77, 0, 0, 0, 0,
3073 0, 0, 952, 0, 0, 0, 0, 0, 0, 953,
3074 0, 0, 0, 0, 953, 953, 0, 0, 0, 0,
3075 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3076 0, 0, 0, 76, 0, 0, 121, 0, 0, 124,
3077 0, 0, 0, 0, 76, 0, 0, 77, 77, 0,
3078 0, 0, 77, 77, 291, 0, 77, 953, 0, 0,
3079 286, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3080 87, 0, 77, 0, 124, 0, 124, 0, 0, 0,
3081 0, 0, 0, 0, 953, 0, 0, 0, 0, 124,
3082 0, 124, 954, 954, 0, 0, 954, 0, 0, 0,
3083 0, 0, 0, 0, 0, 0, 0, 0, 287, 0,
3084 0, 0, 77, 954, 0, 0, 77, 0, 0, 77,
3085 0, 0, 0, 0, 77, 955, 955, 0, 76, 955,
3086 0, 0, 0, 0, 0, 291, 0, 0, 0, 0,
3087 0, 0, 0, 124, 0, 0, 955, 0, 124, 0,
3088 0, 0, 0, 0, 124, 0, 0, 0, 124, 0,
3089 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3090 124, 0, 776, 0, 77, 0, 0, 0, 0, 0,
3091 0, 0, 121, 0, 121, 0, 0, 77, 0, 0,
3092 0, 0, 0, 0, 0, 77, 77, 0, 0, 0,
3093 0, 0, 0, 0, 121, 0, 0, 0, 0, 124,
3094 0, 77, 0, 124, 0, 124, 87, 0, 87, 287,
3095 0, 0, 0, 954, 0, 0, 954, 0, 0, 0,
3096 0, 0, 0, 0, 0, 0, 0, 0, 87, 0,
3097 0, 0, 0, 954, 954, 954, 776, 776, 954, 954,
3098 0, 0, 291, 954, 954, 0, 955, 0, 0, 955,
3099 0, 0, 0, 77, 0, 0, 0, 0, 0, 0,
3100 0, 954, 0, 0, 77, 0, 955, 955, 955, 0,
3101 0, 955, 955, 0, 0, 0, 955, 955, 0, 0,
3102 287, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3103 0, 0, 0, 0, 955, 0, 0, 0, 0, 0,
3104 0, 124, 0, 0, 0, 0, 0, 0, 0, 0,
3105 0, 0, 0, 0, 291, 0, 0, 0, 0, 0,
3106 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3107 0, 0, -785, 0, 0, 0, 0, 0, 0, 0,
3108 -785, -785, -785, 0, 0, -785, -785, -785, 77, -785,
3109 0, 0, 0, 0, 0, 0, 0, -785, -785, -785,
3110 0, 121, 0, 0, 121, 0, 0, 0, 0, -785,
3111 -785, 0, -785, -785, -785, -785, -785, 0, 0, 0,
3112 0, 0, 954, 0, 0, 0, 0, 954, 954, 0,
3113 0, 0, 0, 0, 0, 87, 0, 0, 87, 0,
3114 -785, 0, 0, 124, 0, 0, 0, 0, 0, 0,
3115 0, 0, 0, 0, 0, 955, 0, 0, 0, 0,
3116 955, 955, 0, 0, 0, 0, 0, 0, -785, -785,
3117 954, 0, 0, 0, 0, 0, 0, 121, 0, 0,
3118 0, 0, 0, 0, 347, 0, 0, 124, 121, 124,
3119 121, 0, -785, 0, 0, 0, 0, 954, 0, 0,
3120 0, 0, 0, 955, 0, 0, 0, 0, 0, 124,
3121 0, 87, 0, 0, 0, -785, -785, 124, 124, 0,
3122 238, -785, 87, -785, 87, -785, 0, 0, 0, 0,
3123 955, 0, 0, 0, 0, 0, 348, 349, 350, 351,
3124 352, 353, 354, 355, 356, 357, 358, 359, 360, 0,
3125 0, 121, 0, 361, 362, 0, 0, 0, 0, 363,
3126 0, 0, 0, 0, 0, 0, 0, 121, 0, 0,
3127 0, 0, 0, 0, 0, 0, 776, 776, 0, 0,
3128 0, 776, 776, 222, 222, 87, 364, 0, 365, 366,
3129 367, 368, 369, 370, 371, 372, 373, 374, 0, 0,
3130 0, 87, 0, 1121, 0, 0, 0, 121, 0, 0,
3131 0, 121, 0, 0, 121, 255, 258, 259, 260, 0,
3132 0, 0, 222, 222, 0, 0, 0, 0, 0, 0,
3133 0, 0, 0, 0, 0, 310, 311, 1119, 0, 0,
3134 0, 87, 0, 0, 0, 87, 0, 0, 87, 0,
3135 0, 0, 0, 776, 0, 0, 0, 0, 0, 0,
3136 0, 0, 0, 0, 0, 0, 0, 0, 0, 222,
3137 0, 0, 0, 0, 0, 0, 124, 0, 0, 124,
3138 0, 0, 121, 0, 0, 0, 0, 0, 0, 0,
3139 121, 121, 0, 0, 0, 0, 0, 0, 0, 0,
3140 0, 0, 0, 776, 0, 0, 121, 0, 0, 0,
3141 0, 0, 0, 0, 407, 0, 87, 0, 0, 0,
3142 0, 0, 0, 0, 87, 87, 0, 0, 0, 0,
3143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3144 87, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3145 0, 0, 124, 0, 0, 0, 0, 0, 121, 0,
3146 0, 0, 0, 124, 0, 124, 0, 0, 0, 121,
3147 0, 0, 0, 0, 0, 0, 0, 222, 0, 0,
3148 222, 222, 222, 0, 310, 407, 0, 0, 0, 0,
3149 0, 0, 87, 0, 0, 0, 0, 0, 0, 0,
3150 0, 0, 222, 87, 222, 222, 0, 0, 0, 0,
3151 0, 0, 0, 0, 0, 0, 0, 124, 124, 0,
3152 0, 0, 124, 124, 0, 0, 124, 0, 0, 0,
3153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3154 0, 0, 124, 0, 0, 348, 349, 350, 351, 352,
3155 353, 354, 355, 121, 357, 358, 0, 0, 0, 0,
3156 0, 0, 361, 362, 0, 0, 0, 0, 0, 0,
3157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3158 0, 0, 124, 0, 0, 0, 124, 87, 0, 124,
3159 0, 0, 0, 0, 124, 0, 0, 365, 366, 367,
3160 368, 369, 370, 371, 372, 373, 374, 0, 0, 0,
3161 0, 0, 0, 0, 0, 588, 589, 590, 591, 592,
3162 0, 0, 593, 594, 595, 596, 597, 598, 599, 600,
3163 0, 602, 0, 0, 603, 604, 605, 606, 607, 608,
3164 609, 610, 611, 612, 124, 0, 0, 222, 0, 0,
3165 0, 0, 0, 0, 0, 0, 0, 124, 0, 0,
3166 0, 0, 0, 0, 0, 124, 124, 0, 0, 0,
3167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3168 0, 124, 0, 0, 0, 0, 0, 0, 0, 0,
3169 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3170 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3171 222, 222, 0, 0, 0, 222, 0, 0, 0, 222,
3172 0, 0, 0, 0, 0, 260, 0, 0, 0, 0,
3173 0, 0, 0, 124, 0, 23, 24, 25, 26, 0,
3174 689, 0, 0, 0, 124, 0, 0, 0, 0, 0,
3175 0, 32, 33, 34, 914, 0, 222, 0, 915, 222,
3176 0, 41, 42, 43, 44, 45, 0, 0, 0, 0,
3177 0, 222, 0, 0, 0, 0, 0, 0, 0, 0,
3178 0, 0, 0, 0, 0, 0, 0, 0, 719, 0,
3179 0, 0, 917, 918, 0, 0, 0, 0, 0, 0,
3180 919, 0, 0, 920, 0, 0, 921, 922, 0, 923,
3181 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3182 66, 222, 0, 0, 0, 0, 0, 0, 124, 0,
3183 0, 0, 0, 747, 925, 0, 0, 756, 0, 0,
3184 0, 284, 0, 0, 0, 0, 0, 222, 0, 0,
3185 0, 0, 0, 777, 0, 242, 0, 0, 0, 0,
3186 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3188 0, 0, 0, 0, 0, 0, 23, 24, 25, 26,
3189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3190 0, 0, 32, 33, 34, 0, 0, 222, 0, 0,
3191 0, 0, 41, 42, 43, 44, 45, 222, 0, 0,
3192 0, 0, 0, 0, 0, 0, 0, 833, 833, 0,
3193 222, 747, 756, 833, 0, 222, 0, 0, 0, 0,
3194 0, 0, 0, 0, 833, 833, 0, 0, 0, 0,
3195 222, 0, 222, 0, 0, 0, 0, 0, 0, 0,
3196 0, 833, 0, 58, 59, 60, 61, 62, 63, 64,
3197 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3198 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3199 -785, 4, 284, 5, 6, 7, 8, 9, 222, 0,
3200 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
3201 15, 16, 17, 18, 19, 0, 0, 0, 222, 0,
3202 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3203 0, 222, 0, 0, 0, 28, 29, 30, 31, 32,
3204 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3205 42, 43, 44, 45, 46, 47, 0, 0, 0, 222,
3206 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3207 0, 0, 0, 0, 0, 0, 0, 0, 0, 222,
3208 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
3209 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
3210 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3212 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
3213 68, 69, 0, 0, 0, 0, 0, 0, 0, 0,
3214 0, -785, 0, -785, 0, 0, 0, 0, 0, 0,
3215 0, 0, 0, 0, 1019, 1020, 0, 0, 0, 0,
3216 0, 0, 0, 0, 0, 0, 1026, 1027, 0, 0,
3217 0, 0, 222, 23, 24, 25, 26, 1038, 0, 222,
3218 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,
3219 33, 34, 914, 0, 0, 0, 915, 0, 916, 41,
3220 42, 43, 44, 45, 0, 0, 0, 0, 0, 0,
3221 0, 0, 0, 0, 0, 0, 0, 537, 0, 0,
3222 0, 0, 0, 0, 0, 0, 1082, 833, 833, 0,
3223 917, 918, 833, 833, 0, 0, 0, 0, 919, 0,
3224 0, 920, 0, 0, 921, 922, 222, 923, 541, 0,
3225 58, 59, 924, 61, 62, 63, 64, 65, 66, 0,
3226 0, 833, 833, 0, 833, 833, 0, 222, 0, 0,
3227 0, 0, 925, 0, 0, 0, 0, 0, 0, 284,
3228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3229 0, 0, 0, 0, 0, 0, 0, 0, 0, -762,
3230 222, 0, 0, 0, 833, 0, 0, -762, -762, -762,
3231 0, 0, -762, -762, -762, 0, -762, 0, 0, 0,
3232 0, 0, 0, 0, -762, -762, -762, -762, -762, 0,
3233 0, 0, 0, 0, 0, 0, -762, -762, 0, -762,
3234 -762, -762, -762, -762, 0, 0, 0, 0, 0, 0,
3235 0, 0, 0, 0, 833, 0, 0, 0, 0, 0,
3236 0, 0, 0, 0, 0, 0, 222, -762, 0, 0,
3237 0, 0, 833, 0, 0, 0, -762, -762, -762, -762,
3238 -762, -762, -762, -762, -762, -762, -762, -762, -762, 0,
3239 0, 0, 0, -762, -762, -762, -762, 0, 841, -762,
3240 0, 0, 0, 0, 0, -762, 0, 0, 0, 0,
3241 0, 0, 0, 0, 0, 0, 0, 0, 0, -762,
3242 0, 0, -762, 0, 0, -126, -762, -762, -762, -762,
3243 -762, -762, -762, -762, -762, -762, -762, -762, 0, 0,
3244 0, 0, -762, -762, -762, -762, 222, -652, -762, -762,
3245 -762, 0, -762, 0, 0, -652, -652, -652, 0, 0,
3246 -652, -652, -652, 222, -652, 0, 0, 0, 0, 910,
3247 0, 0, -652, 0, -652, -652, -652, 0, 0, 0,
3248 0, 0, 0, 0, -652, -652, 0, -652, -652, -652,
3249 -652, -652, 0, 0, 0, 0, 0, 0, 0, 0,
3250 0, 0, 348, 349, 350, 351, 352, 353, 354, 355,
3251 356, 357, 358, 359, 360, -652, 0, 0, 0, 361,
3252 362, 0, 0, 0, -652, -652, -652, -652, -652, -652,
3253 -652, -652, -652, -652, -652, -652, -652, 0, 0, 0,
3254 0, -652, -652, -652, -652, 0, -652, -652, 0, 0,
3255 0, 0, 364, -652, 365, 366, 367, 368, 369, 370,
3256 371, 372, 373, 374, 0, 0, 0, -652, 0, 0,
3257 -652, -273, 0, -652, -652, -652, -652, -652, -652, -652,
3258 -652, -652, -652, -652, -652, -652, 0, 0, 0, 0,
3259 0, -652, -652, -652, -655, 0, -652, -652, -652, 0,
3260 -652, 0, -655, -655, -655, 0, 0, -655, -655, -655,
3261 0, -655, 0, 0, 0, 0, 888, 0, 0, -655,
3262 0, -655, -655, -655, 0, 0, 0, 0, 0, 0,
3263 0, -655, -655, 0, -655, -655, -655, -655, -655, 0,
3264 0, 0, 0, 0, 0, 0, 0, 0, 0, 348,
3265 349, 350, 351, 352, 353, 354, 355, 356, 357, 358,
3266 359, 360, -655, 0, 0, 0, 361, 362, 0, 0,
3267 0, -655, -655, -655, -655, -655, -655, -655, -655, -655,
3268 -655, -655, -655, -655, 0, 0, 0, 0, -655, -655,
3269 -655, -655, 0, -655, -655, 0, 0, 0, 0, 364,
3270 -655, 365, 366, 367, 368, 369, 370, 371, 372, 373,
3271 374, 0, 0, 0, -655, 0, 0, -655, 0, 0,
3272 -655, -655, -655, -655, -655, -655, -655, -655, -655, -655,
3273 -655, -655, -655, 0, 0, 0, 0, 0, -655, -655,
3274 -655, -763, 0, -655, -655, -655, 0, -655, 0, -763,
3275 -763, -763, 0, 0, -763, -763, -763, 0, -763, 0,
3276 0, 0, 0, 900, 0, 0, -763, -763, -763, -763,
3277 -763, 0, 0, 0, 0, 0, 0, 0, -763, -763,
3278 0, -763, -763, -763, -763, -763, 0, 0, 0, 0,
3279 0, 0, 0, 0, 0, 0, 348, 349, 350, 351,
3280 352, 353, 354, 355, 356, 357, 358, 359, 360, -763,
3281 0, 0, 0, 361, 362, 0, 0, 0, -763, -763,
3282 -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
3283 -763, 0, 0, 0, 0, -763, -763, -763, -763, 0,
3284 0, -763, 0, 0, 0, 0, 364, -763, 365, 366,
3285 367, 368, 369, 370, 371, 372, 373, 374, 0, 0,
3286 0, -763, 0, 0, -763, 0, 0, 0, -763, -763,
3287 -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
3288 0, 0, 0, 0, -763, -763, -763, -763, -764, 0,
3289 -763, -763, -763, 0, -763, 0, -764, -764, -764, 0,
3290 0, -764, -764, -764, 0, -764, 0, 0, 0, 0,
3291 910, 0, 0, -764, -764, -764, -764, -764, 0, 0,
3292 0, 0, 0, 0, 0, -764, -764, 0, -764, -764,
3293 -764, -764, -764, 0, 0, 0, 0, 0, 0, 0,
3294 0, 0, 0, 348, 349, 350, 351, 352, 353, 354,
3295 355, 356, 357, 358, 359, 360, -764, 0, 0, 0,
3296 361, 362, 0, 0, 0, -764, -764, -764, -764, -764,
3297 -764, -764, -764, -764, -764, -764, -764, -764, 0, 0,
3298 0, 0, -764, -764, -764, -764, 0, 0, -764, 0,
3299 0, 0, 0, 364, -764, 365, 366, 367, 368, 369,
3300 370, 371, 372, 373, 374, 0, 0, 0, -764, 0,
3301 0, -764, 0, 0, 0, -764, -764, -764, -764, -764,
3302 -764, -764, -764, -764, -764, -764, -764, 0, 0, 0,
3303 0, -764, -764, -764, -764, -328, 0, -764, -764, -764,
3304 0, -764, 0, -328, -328, -328, 0, 0, -328, -328,
3305 -328, 0, -328, 0, 0, 0, 0, 0, 0, 0,
3306 -328, 0, -328, -328, -328, 0, 0, 0, 0, 0,
3307 0, 0, -328, -328, 0, -328, -328, -328, -328, -328,
3308 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3309 348, 349, 350, 351, 352, 353, 354, 355, 356, 357,
3310 358, 359, 360, -328, 0, 0, 0, 361, 362, 0,
3311 0, 0, -328, -328, -328, -328, -328, -328, -328, -328,
3312 -328, -328, -328, -328, -328, 0, 0, 0, 0, -328,
3313 -328, -328, -328, 0, 842, -328, 0, 0, 0, 0,
3314 364, -328, 365, 366, 367, 368, 369, 370, 371, 372,
3315 373, 374, 0, 0, 0, -328, 0, 0, -328, 0,
3316 0, -128, -328, -328, -328, -328, -328, -328, -328, -328,
3317 -328, -328, -328, -328, 0, 0, 0, 0, 0, -328,
3318 -328, -328, -465, 0, -328, -328, -328, 0, -328, 0,
3319 -465, -465, -465, 0, 0, -465, -465, -465, 0, -465,
3320 0, 0, 0, 0, 0, 0, 0, -465, -465, -465,
3321 -465, 0, 0, 0, 0, 0, 0, 0, 0, -465,
3322 -465, 0, -465, -465, -465, -465, -465, 0, 0, 0,
3323 0, 0, 0, 0, 0, 0, 0, 348, 349, 350,
3324 351, 352, 353, 354, 355, 356, 357, 358, -786, -786,
3325 -465, 0, 0, 0, 361, 362, 0, 0, 0, -465,
3326 -465, -465, -465, -465, -465, -465, -465, -465, -465, -465,
3327 -465, -465, 0, 0, 0, 0, -465, -465, -465, -465,
3328 0, 0, -465, 0, 0, 0, 0, 0, -465, 365,
3329 366, 367, 368, 369, 370, 371, 372, 373, 374, 0,
3330 0, 0, -465, 0, 0, 0, 0, 0, 0, -465,
3331 0, -465, -465, -465, -465, -465, -465, -465, -465, -465,
3332 -465, 0, 0, 0, 0, -465, -465, -465, -465, -320,
3333 238, -465, -465, -465, 0, -465, 0, -320, -320, -320,
3334 0, 0, -320, -320, -320, 0, -320, 0, 0, 0,
3335 0, 0, 0, 0, -320, 0, -320, -320, -320, 0,
3336 0, 0, 0, 0, 0, 0, -320, -320, 0, -320,
3337 -320, -320, -320, -320, 0, 0, 0, 0, 0, 0,
3338 0, 0, 0, 0, 348, -786, -786, -786, -786, 353,
3339 354, 0, 0, -786, -786, 0, 0, -320, 0, 0,
3340 0, 361, 362, 0, 0, 0, -320, -320, -320, -320,
3341 -320, -320, -320, -320, -320, -320, -320, -320, -320, 0,
3342 0, 0, 0, -320, -320, -320, -320, 0, 0, -320,
3343 0, 0, 0, 0, 0, -320, 365, 366, 367, 368,
3344 369, 370, 371, 372, 373, 374, 0, 0, 0, -320,
3345 0, 0, -320, 0, 0, 0, -320, -320, -320, -320,
3346 -320, -320, -320, -320, -320, -320, -320, -320, 0, 0,
3347 0, 0, 0, -320, -320, -320, -785, 0, -320, -320,
3348 -320, 0, -320, 0, -785, -785, -785, 0, 0, -785,
3349 -785, -785, 0, -785, 0, 0, 0, 0, 0, 0,
3350 0, -785, -785, -785, -785, 0, 0, 0, 0, 0,
3351 0, 0, 0, -785, -785, 0, -785, -785, -785, -785,
3352 -785, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3353 0, 348, 349, 350, 351, 352, 353, 354, 0, 0,
3354 357, 358, 0, 0, -785, 0, 0, 0, 361, 362,
3355 0, 0, 0, -785, -785, -785, -785, -785, -785, -785,
3356 -785, -785, -785, -785, -785, -785, 0, 0, 0, 0,
3357 -785, -785, -785, -785, 0, 0, -785, 0, 0, 0,
3358 0, 0, -785, 365, 366, 367, 368, 369, 370, 371,
3359 372, 373, 374, 0, 0, 0, -785, 0, 0, 0,
3360 0, 0, 0, -785, 0, -785, -785, -785, -785, -785,
3361 -785, -785, -785, -785, -785, 0, 0, 0, 0, -785,
3362 -785, -785, -785, -335, 238, -785, -785, -785, 0, -785,
3363 0, -335, -335, -335, 0, 0, -335, -335, -335, 0,
3364 -335, 0, 0, 0, 0, 0, 0, 0, -335, 0,
3365 -335, -335, 0, 0, 0, 0, 0, 0, 0, 0,
3366 -335, -335, 0, -335, -335, -335, -335, -335, 0, 0,
3367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3368 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3369 0, -335, 0, 0, 0, 0, 0, 0, 0, 0,
3370 -335, -335, -335, -335, -335, -335, -335, -335, -335, -335,
3371 -335, -335, -335, 0, 0, 0, 0, -335, -335, -335,
3372 -335, 0, 0, -335, 0, 0, 0, 0, 0, -335,
3373 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3374 0, 0, 0, -335, 0, 0, 0, 0, 0, 0,
3375 -335, 0, -335, -335, -335, -335, -335, -335, -335, -335,
3376 -335, -335, 0, 0, 0, 0, 0, -335, -335, -335,
3377 -762, 235, -335, -335, -335, 0, -335, 0, -762, -762,
3378 -762, 0, 0, 0, -762, -762, 0, -762, 0, 0,
3379 0, 0, 0, 0, 0, -762, -762, 0, 0, 0,
3380 0, 0, 0, 0, 0, 0, 0, -762, -762, 0,
3381 -762, -762, -762, -762, -762, 0, 0, 0, 0, 0,
3382 0, 0, 348, 349, 350, 351, 352, 353, 354, 355,
3383 356, 357, 358, 359, 360, 0, 0, 0, -762, 361,
3384 362, 0, 0, 0, 0, 0, 0, -762, -762, -762,
3385 -762, -762, -762, -762, -762, -762, -762, -762, -762, -762,
3386 0, 0, 0, 0, -762, -762, -762, -762, 0, 786,
3387 -762, 0, 364, 0, 365, 366, 367, 368, 369, 370,
3388 371, 372, 373, 374, 0, 0, 0, 0, 0, 0,
3389 -762, 0, 0, 0, 0, 0, -126, -762, 242, -762,
3390 -762, -762, -762, -762, -762, -762, -762, -762, -762, 0,
3391 0, 0, 0, -762, -762, -762, -117, -762, 0, -762,
3392 0, -762, 0, -762, 0, -762, -762, -762, 0, 0,
3393 0, -762, -762, 0, -762, 0, 0, 0, 0, 0,
3394 0, 0, -762, -762, 0, 0, 0, 0, 0, 0,
3395 0, 0, 0, 0, -762, -762, 0, -762, -762, -762,
3396 -762, -762, 0, 0, 0, 0, 0, 0, 0, 0,
3397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3398 0, 0, 0, 0, 0, -762, 0, 0, 0, 0,
3399 0, 0, 0, 0, -762, -762, -762, -762, -762, -762,
3400 -762, -762, -762, -762, -762, -762, -762, 0, 0, 0,
3401 0, -762, -762, -762, -762, 0, 786, -762, 0, 0,
3402 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3403 0, 0, 0, 0, 0, 0, 0, -762, 0, 0,
3404 0, 0, 0, -126, -762, 0, -762, -762, -762, -762,
3405 -762, -762, -762, -762, -762, -762, 0, 0, 0, 0,
3406 -762, -762, -762, -762, -328, 0, -762, 0, -762, 0,
3407 -762, 0, -328, -328, -328, 0, 0, 0, -328, -328,
3408 0, -328, 0, 0, 0, 0, 0, 0, 0, -328,
3409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3410 0, -328, -328, 0, -328, -328, -328, -328, -328, 0,
3411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3413 0, 0, -328, 0, 0, 0, 0, 0, 0, 0,
3414 0, -328, -328, -328, -328, -328, -328, -328, -328, -328,
3415 -328, -328, -328, -328, 0, 0, 0, 0, -328, -328,
3416 -328, -328, 0, 787, -328, 0, 0, 0, 0, 0,
3417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3418 0, 0, 0, 0, -328, 0, 0, 0, 0, 0,
3419 -128, -328, 0, -328, -328, -328, -328, -328, -328, -328,
3420 -328, -328, -328, 0, 0, 0, 0, 0, -328, -328,
3421 -119, -328, 0, -328, 0, -328, 0, -328, 0, -328,
3422 -328, -328, 0, 0, 0, -328, -328, 0, -328, 0,
3423 0, 0, 0, 0, 0, 0, -328, 0, 0, 0,
3424 0, 0, 0, 0, 0, 0, 0, 0, -328, -328,
3425 0, -328, -328, -328, -328, -328, 0, 0, 0, 0,
3426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3427 0, 0, 0, 0, 0, 0, 0, 0, 0, -328,
3428 0, 0, 0, 0, 0, 0, 0, 0, -328, -328,
3429 -328, -328, -328, -328, -328, -328, -328, -328, -328, -328,
3430 -328, 0, 0, 0, 0, -328, -328, -328, -328, 0,
3431 787, -328, 0, 0, 0, 0, 0, 0, 0, 0,
3432 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3433 0, -328, 0, 0, 0, 0, 0, -128, -328, 0,
3434 -328, -328, -328, -328, -328, -328, -328, -328, -328, -328,
3435 0, 0, 0, 0, 0, -328, -328, -328, 0, 0,
3436 -328, 0, -328, 262, -328, 5, 6, 7, 8, 9,
3437 -785, -785, -785, 10, 11, 0, 0, -785, 12, 0,
3438 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3439 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3440 0, 27, 0, 0, 0, 0, 0, 28, 29, 263,
3441 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3442 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3443 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3444 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3445 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3446 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
3447 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3448 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3449 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3450 0, 67, 68, 69, 0, 0, 0, 0, 0, 0,
3451 0, 0, 0, -785, 262, -785, 5, 6, 7, 8,
3452 9, 0, 0, -785, 10, 11, 0, -785, -785, 12,
3453 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3454 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3455 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
3456 263, 31, 32, 33, 34, 35, 36, 37, 38, 39,
3457 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3458 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3460 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3461 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
3462 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3463 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3464 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3465 0, 0, 67, 68, 69, 0, 0, 0, 0, 0,
3466 0, 0, 0, 0, -785, 262, -785, 5, 6, 7,
3467 8, 9, 0, 0, -785, 10, 11, 0, 0, -785,
3468 12, -785, 13, 14, 15, 16, 17, 18, 19, 0,
3469 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
3470 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3471 29, 263, 31, 32, 33, 34, 35, 36, 37, 38,
3472 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3473 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3474 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3475 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3476 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
3477 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
3478 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3479 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3480 0, 0, 0, 67, 68, 69, 0, 0, 0, 0,
3481 0, 0, 0, 0, 0, -785, 262, -785, 5, 6,
3482 7, 8, 9, 0, 0, -785, 10, 11, 0, 0,
3483 -785, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3484 -785, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3485 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
3486 28, 29, 263, 31, 32, 33, 34, 35, 36, 37,
3487 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3488 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3489 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3490 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3491 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
3492 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
3493 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3495 0, 0, 0, 0, 67, 68, 69, 0, 0, 0,
3496 0, 0, 0, 0, 0, 0, -785, 262, -785, 5,
3497 6, 7, 8, 9, 0, 0, -785, 10, 11, 0,
3498 0, -785, 12, 0, 13, 14, 15, 16, 17, 18,
3499 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
3500 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
3501 0, 28, 29, 263, 31, 32, 33, 34, 35, 36,
3502 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3503 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3504 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3505 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3506 0, 0, 0, 0, 52, 0, 0, 53, 54, 0,
3507 55, 56, 0, 57, 0, 0, 58, 59, 60, 61,
3508 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3509 0, 0, 0, 262, 0, 5, 6, 7, 8, 9,
3510 0, -785, -785, 10, 11, 67, 68, 69, 12, 0,
3511 13, 14, 15, 16, 17, 18, 19, -785, 0, -785,
3512 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3513 0, 27, 0, 0, 0, 0, 0, 28, 29, 263,
3514 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3515 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3516 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3517 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3518 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3519 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
3520 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3521 66, 0, 0, 0, 0, 0, 0, 0, 0, 262,
3522 0, 5, 6, 7, 8, 9, 0, 0, 0, 10,
3523 11, 67, 68, 69, 12, 0, 13, 14, 15, 16,
3524 17, 18, 19, -785, 0, -785, 0, 0, 20, 21,
3525 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3526 0, 0, 0, 28, 29, 263, 31, 32, 33, 34,
3527 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3528 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3529 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3530 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3531 0, 0, 0, 0, 0, 0, 52, 0, 0, 264,
3532 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
3533 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3535 0, 0, 0, 0, 0, 0, 0, 67, 68, 69,
3536 0, 0, 0, 0, 0, 0, 0, -785, 0, -785,
3537 262, -785, 5, 6, 7, 8, 9, 0, 0, 0,
3538 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
3539 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
3540 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
3541 0, 0, 0, 0, 28, 29, 263, 31, 32, 33,
3542 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3543 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3544 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3545 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3546 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
3547 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3548 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3550 0, 0, 0, 0, 0, 0, 0, 0, 67, 68,
3551 69, 0, 0, 0, 0, 0, 0, 0, -785, 0,
3552 -785, 4, -785, 5, 6, 7, 8, 9, 0, 0,
3553 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
3554 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
3555 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3556 0, 0, 0, 0, 0, 28, 29, 30, 31, 32,
3557 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3558 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3559 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3561 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
3562 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
3563 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3565 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
3566 68, 69, 0, 0, -785, 0, 0, 0, 0, 0,
3567 0, -785, 262, -785, 5, 6, 7, 8, 9, 0,
3568 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
3569 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
3570 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
3571 27, 0, 0, 0, 0, 0, 28, 29, 263, 31,
3572 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3573 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3574 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3575 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3576 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
3577 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
3578 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3579 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3581 67, 68, 69, 0, 0, -785, 0, 0, 0, 0,
3582 0, 0, -785, 262, -785, 5, 6, 7, 8, 9,
3583 0, 0, -785, 10, 11, 0, 0, 0, 12, 0,
3584 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
3585 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3586 0, 27, 0, 0, 0, 0, 0, 28, 29, 263,
3587 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3588 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3589 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3591 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3592 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
3593 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3594 66, 0, 0, 0, 0, 0, 0, 0, 0, 262,
3595 0, 5, 6, 7, 8, 9, 0, 0, 0, 10,
3596 11, 67, 68, 69, 12, 0, 13, 14, 15, 16,
3597 17, 18, 19, -785, 0, -785, 0, 0, 20, 21,
3598 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3599 0, 0, 0, 28, 29, 263, 31, 32, 33, 34,
3600 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3601 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3602 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3603 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3604 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
3605 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
3606 60, 61, 62, 63, 64, 65, 66, 0, -785, 0,
3607 0, 0, 0, 0, 0, 0, 0, 5, 6, 7,
3608 0, 9, 0, 0, 0, 10, 11, 67, 68, 69,
3609 12, 0, 13, 14, 15, 16, 17, 18, 19, -785,
3610 0, -785, 0, 0, 20, 21, 22, 23, 24, 25,
3611 26, 0, 0, 209, 0, 0, 0, 0, 0, 0,
3612 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
3613 39, 40, 210, 41, 42, 43, 44, 45, 46, 47,
3614 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
3615 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3616 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
3617 0, 0, 211, 0, 0, 212, 54, 0, 55, 56,
3618 0, 213, 214, 215, 58, 59, 216, 61, 62, 63,
3619 64, 65, 66, 0, 0, 0, 0, 0, 0, 0,
3620 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
3621 0, 10, 11, 67, 217, 69, 12, 0, 13, 14,
3622 15, 16, 17, 18, 19, 0, 0, 242, 0, 0,
3623 20, 21, 22, 23, 24, 25, 26, 0, 0, 27,
3624 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
3625 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
3626 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
3627 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
3628 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3629 50, 51, 0, 0, 0, 0, 0, 0, 211, 0,
3630 0, 212, 54, 0, 55, 56, 0, 0, 0, 0,
3631 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
3632 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3633 6, 7, 0, 9, 0, 0, 0, 10, 11, 67,
3634 68, 69, 12, 0, 13, 14, 15, 16, 17, 18,
3635 19, 312, 0, 313, 0, 0, 20, 21, 22, 23,
3636 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
3637 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
3638 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3639 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3640 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
3641 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
3642 0, 0, 0, 0, 211, 0, 0, 212, 54, 0,
3643 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
3644 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3645 0, 0, 0, 0, 0, 5, 6, 7, 8, 9,
3646 0, 0, 0, 10, 11, 67, 68, 69, 12, 0,
3647 13, 14, 15, 16, 17, 18, 19, 0, 0, 242,
3648 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
3649 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
3650 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
3651 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
3652 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
3653 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3654 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
3655 52, 0, 0, 53, 54, 0, 55, 56, 0, 57,
3656 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
3657 66, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3658 0, 5, 6, 7, 8, 9, 0, 0, 0, 10,
3659 11, 67, 68, 69, 12, 0, 13, 14, 15, 16,
3660 17, 18, 19, 522, 0, 0, 0, 0, 20, 21,
3661 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
3662 0, 0, 0, 28, 29, 263, 31, 32, 33, 34,
3663 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3664 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
3665 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
3666 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
3667 0, 0, 0, 0, 0, 0, 52, 0, 0, 53,
3668 54, 0, 55, 56, 0, 57, 0, 0, 58, 59,
3669 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
3670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3671 0, 0, 0, 0, 0, 0, 0, 67, 68, 69,
3672 0, 0, 0, 0, 0, 0, 0, 0, 0, 522,
3673 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
3674 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
3675 149, 150, 151, 152, 0, 0, 0, 153, 154, 155,
3676 411, 412, 413, 414, 160, 161, 162, 0, 0, 0,
3677 0, 0, 163, 164, 165, 166, 415, 416, 417, 418,
3678 171, 37, 38, 419, 40, 0, 0, 0, 0, 0,
3679 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3680 0, 0, 173, 174, 175, 176, 177, 178, 179, 180,
3681 181, 0, 0, 182, 183, 0, 0, 0, 0, 184,
3682 185, 186, 187, 0, 0, 0, 0, 0, 0, 0,
3683 0, 0, 0, 0, 188, 189, 0, 0, 0, 0,
3684 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3685 0, 0, 0, 0, 0, 0, 190, 191, 192, 193,
3686 194, 195, 196, 197, 198, 199, 0, 200, 201, 0,
3687 0, 0, 0, 0, 202, 420, 129, 130, 131, 132,
3688 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
3689 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
3690 0, 0, 0, 153, 154, 155, 156, 157, 158, 159,
3691 160, 161, 162, 0, 0, 0, 0, 0, 163, 164,
3692 165, 166, 167, 168, 169, 170, 171, 295, 296, 172,
3693 297, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3694 0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
3695 175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
3696 183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
3697 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3698 188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
3699 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3700 0, 0, 190, 191, 192, 193, 194, 195, 196, 197,
3701 198, 199, 0, 200, 201, 0, 0, 0, 0, 0,
3702 202, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3703 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
3704 148, 149, 150, 151, 152, 0, 0, 0, 153, 154,
3705 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
3706 0, 0, 0, 163, 164, 165, 166, 167, 168, 169,
3707 170, 171, 244, 0, 172, 0, 0, 0, 0, 0,
3708 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3709 0, 0, 0, 173, 174, 175, 176, 177, 178, 179,
3710 180, 181, 0, 0, 182, 183, 0, 0, 0, 0,
3711 184, 185, 186, 187, 0, 0, 0, 0, 0, 0,
3712 0, 0, 0, 0, 0, 188, 189, 0, 0, 59,
3713 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3714 0, 0, 0, 0, 0, 0, 0, 190, 191, 192,
3715 193, 194, 195, 196, 197, 198, 199, 0, 200, 201,
3716 0, 0, 0, 0, 0, 202, 129, 130, 131, 132,
3717 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
3718 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
3719 0, 0, 0, 153, 154, 155, 156, 157, 158, 159,
3720 160, 161, 162, 0, 0, 0, 0, 0, 163, 164,
3721 165, 166, 167, 168, 169, 170, 171, 0, 0, 172,
3722 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3723 0, 0, 0, 0, 0, 0, 0, 0, 173, 174,
3724 175, 176, 177, 178, 179, 180, 181, 0, 0, 182,
3725 183, 0, 0, 0, 0, 184, 185, 186, 187, 0,
3726 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3727 188, 189, 0, 0, 59, 0, 0, 0, 0, 0,
3728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3729 0, 0, 190, 191, 192, 193, 194, 195, 196, 197,
3730 198, 199, 0, 200, 201, 0, 0, 0, 0, 0,
3731 202, 129, 130, 131, 132, 133, 134, 135, 136, 137,
3732 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
3733 148, 149, 150, 151, 152, 0, 0, 0, 153, 154,
3734 155, 156, 157, 158, 159, 160, 161, 162, 0, 0,
3735 0, 0, 0, 163, 164, 165, 166, 167, 168, 169,
3736 170, 171, 0, 0, 172, 0, 0, 0, 0, 0,
3737 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3738 0, 0, 0, 173, 174, 175, 176, 177, 178, 179,
3739 180, 181, 0, 0, 182, 183, 0, 0, 0, 0,
3740 184, 185, 186, 187, 0, 0, 0, 0, 0, 0,
3741 0, 0, 0, 0, 0, 188, 189, 0, 0, 0,
3742 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3743 0, 0, 0, 0, 0, 0, 0, 190, 191, 192,
3744 193, 194, 195, 196, 197, 198, 199, 0, 200, 201,
3745 5, 6, 7, 0, 9, 202, 0, 0, 10, 11,
3746 0, 0, 0, 12, 0, 13, 14, 15, 250, 251,
3747 18, 19, 0, 0, 0, 0, 0, 20, 252, 253,
3748 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3749 0, 0, 0, 282, 0, 0, 32, 33, 34, 35,
3750 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3751 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3753 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3754 0, 0, 0, 0, 0, 283, 0, 0, 212, 54,
3755 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
3756 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3757 0, 0, 0, 0, 0, 0, 0, 0, 0, 5,
3758 6, 7, 0, 9, 0, 0, 284, 10, 11, 0,
3759 0, 0, 12, 285, 13, 14, 15, 250, 251, 18,
3760 19, 0, 0, 0, 0, 0, 20, 252, 253, 23,
3761 24, 25, 26, 0, 0, 209, 0, 0, 0, 0,
3762 0, 0, 282, 0, 0, 32, 33, 34, 35, 36,
3763 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
3764 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
3765 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3766 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3767 0, 0, 0, 0, 283, 0, 0, 212, 54, 0,
3768 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
3769 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
3770 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3771 7, 8, 9, 0, 0, 284, 10, 11, 0, 0,
3772 0, 12, 583, 13, 14, 15, 16, 17, 18, 19,
3773 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3774 25, 26, 0, 0, 27, 0, 0, 0, 0, 0,
3775 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
3776 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3777 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3778 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3779 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3780 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
3781 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
3782 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3783 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3784 0, 0, 10, 11, 67, 68, 69, 12, 0, 13,
3785 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
3786 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
3787 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3788 32, 33, 34, 35, 36, 37, 38, 39, 40, 210,
3789 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3790 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3791 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3792 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
3793 0, 0, 212, 54, 0, 55, 56, 0, 213, 214,
3794 215, 58, 59, 216, 61, 62, 63, 64, 65, 66,
3795 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3796 5, 6, 7, 8, 9, 0, 0, 0, 10, 11,
3797 67, 217, 69, 12, 0, 13, 14, 15, 16, 17,
3798 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3799 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
3800 0, 0, 28, 29, 0, 31, 32, 33, 34, 35,
3801 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3802 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3803 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3804 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3805 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
3806 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
3807 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3808 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3809 9, 0, 0, 0, 10, 11, 67, 68, 69, 12,
3810 0, 13, 14, 15, 16, 17, 18, 19, 0, 0,
3811 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
3812 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
3813 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3814 40, 210, 41, 42, 43, 44, 45, 46, 47, 0,
3815 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3816 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3817 0, 0, 0, 50, 458, 0, 0, 0, 0, 0,
3818 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
3819 213, 214, 215, 58, 59, 216, 61, 62, 63, 64,
3820 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3821 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3822 10, 11, 67, 217, 69, 12, 0, 13, 14, 15,
3823 250, 251, 18, 19, 0, 0, 0, 0, 0, 20,
3824 252, 253, 23, 24, 25, 26, 0, 0, 209, 0,
3825 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3826 34, 35, 36, 37, 38, 39, 40, 210, 41, 42,
3827 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3828 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3829 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3830 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
3831 212, 54, 0, 55, 56, 0, 668, 214, 215, 58,
3832 59, 216, 61, 62, 63, 64, 65, 66, 0, 0,
3833 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3834 7, 0, 9, 0, 0, 0, 10, 11, 67, 217,
3835 69, 12, 0, 13, 14, 15, 250, 251, 18, 19,
3836 0, 0, 0, 0, 0, 20, 252, 253, 23, 24,
3837 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3838 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3839 38, 39, 40, 210, 41, 42, 43, 44, 45, 46,
3840 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3841 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3842 0, 0, 0, 0, 0, 50, 458, 0, 0, 0,
3843 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
3844 56, 0, 668, 214, 215, 58, 59, 216, 61, 62,
3845 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3846 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3847 0, 0, 10, 11, 67, 217, 69, 12, 0, 13,
3848 14, 15, 250, 251, 18, 19, 0, 0, 0, 0,
3849 0, 20, 252, 253, 23, 24, 25, 26, 0, 0,
3850 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3851 32, 33, 34, 35, 36, 37, 38, 39, 40, 210,
3852 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3853 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3854 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3855 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
3856 0, 0, 212, 54, 0, 55, 56, 0, 213, 214,
3857 0, 58, 59, 216, 61, 62, 63, 64, 65, 66,
3858 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3859 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3860 67, 217, 69, 12, 0, 13, 14, 15, 250, 251,
3861 18, 19, 0, 0, 0, 0, 0, 20, 252, 253,
3862 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3863 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3864 36, 37, 38, 39, 40, 210, 41, 42, 43, 44,
3865 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3866 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3867 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3868 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
3869 0, 55, 56, 0, 0, 214, 215, 58, 59, 216,
3870 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3871 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3872 9, 0, 0, 0, 10, 11, 67, 217, 69, 12,
3873 0, 13, 14, 15, 250, 251, 18, 19, 0, 0,
3874 0, 0, 0, 20, 252, 253, 23, 24, 25, 26,
3875 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
3876 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3877 40, 210, 41, 42, 43, 44, 45, 46, 47, 0,
3878 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3879 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3880 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3881 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
3882 668, 214, 0, 58, 59, 216, 61, 62, 63, 64,
3883 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3884 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3885 10, 11, 67, 217, 69, 12, 0, 13, 14, 15,
3886 250, 251, 18, 19, 0, 0, 0, 0, 0, 20,
3887 252, 253, 23, 24, 25, 26, 0, 0, 209, 0,
3888 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3889 34, 35, 36, 37, 38, 39, 40, 210, 41, 42,
3890 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3891 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3892 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3893 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
3894 212, 54, 0, 55, 56, 0, 0, 214, 0, 58,
3895 59, 216, 61, 62, 63, 64, 65, 66, 0, 0,
3896 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3897 7, 0, 9, 0, 0, 0, 10, 11, 67, 217,
3898 69, 12, 0, 13, 14, 15, 16, 17, 18, 19,
3899 0, 0, 0, 0, 0, 20, 21, 22, 23, 24,
3900 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3901 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3902 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3903 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3904 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3905 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3906 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
3907 56, 0, 764, 0, 0, 58, 59, 60, 61, 62,
3908 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3909 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3910 0, 0, 10, 11, 67, 217, 69, 12, 0, 13,
3911 14, 15, 250, 251, 18, 19, 0, 0, 0, 0,
3912 0, 20, 252, 253, 23, 24, 25, 26, 0, 0,
3913 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3914 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3915 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3916 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3917 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3918 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
3919 0, 0, 212, 54, 0, 55, 56, 0, 764, 0,
3920 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3921 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3922 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3923 67, 217, 69, 12, 0, 13, 14, 15, 250, 251,
3924 18, 19, 0, 0, 0, 0, 0, 20, 252, 253,
3925 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
3926 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3927 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3928 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3929 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3930 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3931 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
3932 0, 55, 56, 0, 979, 0, 0, 58, 59, 60,
3933 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3934 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3935 9, 0, 0, 0, 10, 11, 67, 217, 69, 12,
3936 0, 13, 14, 15, 250, 251, 18, 19, 0, 0,
3937 0, 0, 0, 20, 252, 253, 23, 24, 25, 26,
3938 0, 0, 209, 0, 0, 0, 0, 0, 0, 29,
3939 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
3940 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
3941 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
3942 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3943 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
3944 0, 211, 0, 0, 212, 54, 0, 55, 56, 0,
3945 1033, 0, 0, 58, 59, 60, 61, 62, 63, 64,
3946 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
3947 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
3948 10, 11, 67, 217, 69, 12, 0, 13, 14, 15,
3949 250, 251, 18, 19, 0, 0, 0, 0, 0, 20,
3950 252, 253, 23, 24, 25, 26, 0, 0, 209, 0,
3951 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
3952 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
3953 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
3954 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3955 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3956 51, 0, 0, 0, 0, 0, 0, 211, 0, 0,
3957 212, 54, 0, 55, 56, 0, 1179, 0, 0, 58,
3958 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
3959 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
3960 7, 0, 9, 0, 0, 0, 10, 11, 67, 217,
3961 69, 12, 0, 13, 14, 15, 250, 251, 18, 19,
3962 0, 0, 0, 0, 0, 20, 252, 253, 23, 24,
3963 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
3964 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
3965 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
3966 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3967 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3968 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
3969 0, 0, 0, 211, 0, 0, 212, 54, 0, 55,
3970 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
3971 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
3972 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
3973 0, 0, 10, 11, 67, 217, 69, 12, 0, 13,
3974 14, 15, 16, 17, 18, 19, 0, 0, 0, 0,
3975 0, 20, 21, 22, 23, 24, 25, 26, 0, 0,
3976 209, 0, 0, 0, 0, 0, 0, 29, 0, 0,
3977 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
3978 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
3979 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
3980 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3981 0, 50, 51, 0, 0, 0, 0, 0, 0, 211,
3982 0, 0, 212, 54, 0, 55, 56, 0, 0, 0,
3983 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
3984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3985 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
3986 67, 217, 69, 12, 0, 13, 14, 15, 16, 17,
3987 18, 19, 0, 0, 0, 0, 0, 20, 21, 22,
3988 23, 24, 25, 26, 0, 0, 27, 0, 0, 0,
3989 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
3990 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
3991 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
3992 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
3993 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
3994 0, 0, 0, 0, 0, 211, 0, 0, 212, 54,
3995 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
3996 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3997 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
3998 9, 0, 0, 0, 10, 11, 67, 68, 69, 12,
3999 0, 13, 14, 15, 250, 251, 18, 19, 0, 0,
4000 0, 0, 0, 20, 252, 253, 23, 24, 25, 26,
4001 0, 0, 209, 0, 0, 0, 0, 0, 0, 282,
4002 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
4003 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
4004 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4005 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4006 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4007 0, 283, 0, 0, 343, 54, 0, 55, 56, 0,
4008 344, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4009 65, 66, 0, 0, 0, 0, 0, 0, 5, 6,
4010 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
4011 0, 12, 284, 13, 14, 15, 250, 251, 18, 19,
4012 0, 0, 0, 0, 0, 20, 252, 253, 23, 24,
4013 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
4014 0, 282, 0, 0, 32, 33, 34, 35, 36, 37,
4015 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
4016 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4018 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4019 0, 0, 0, 392, 0, 0, 53, 54, 0, 55,
4020 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
4021 63, 64, 65, 66, 0, 0, 0, 0, 0, 0,
4022 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4023 0, 0, 0, 12, 284, 13, 14, 15, 250, 251,
4024 18, 19, 0, 0, 0, 0, 0, 20, 252, 253,
4025 23, 24, 25, 26, 0, 0, 209, 0, 0, 0,
4026 0, 0, 0, 282, 0, 0, 32, 33, 34, 400,
4027 36, 37, 38, 401, 40, 0, 41, 42, 43, 44,
4028 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4029 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4030 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4031 0, 402, 0, 0, 0, 403, 0, 0, 212, 54,
4032 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
4033 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
4034 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
4035 10, 11, 0, 0, 0, 12, 284, 13, 14, 15,
4036 250, 251, 18, 19, 0, 0, 0, 0, 0, 20,
4037 252, 253, 23, 24, 25, 26, 0, 0, 209, 0,
4038 0, 0, 0, 0, 0, 282, 0, 0, 32, 33,
4039 34, 400, 36, 37, 38, 401, 40, 0, 41, 42,
4040 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
4041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4043 0, 0, 0, 0, 0, 0, 0, 403, 0, 0,
4044 212, 54, 0, 55, 56, 0, 0, 0, 0, 58,
4045 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
4046 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
4047 0, 0, 10, 11, 0, 0, 0, 12, 284, 13,
4048 14, 15, 250, 251, 18, 19, 0, 0, 0, 0,
4049 0, 20, 252, 253, 23, 24, 25, 26, 0, 0,
4050 209, 0, 0, 0, 0, 0, 0, 282, 0, 0,
4051 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
4052 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
4053 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4054 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4055 0, 0, 0, 0, 0, 0, 0, 0, 0, 283,
4056 0, 0, 343, 54, 0, 55, 56, 0, 0, 0,
4057 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4058 0, 0, 0, 0, 0, 0, 5, 6, 7, 0,
4059 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
4060 284, 13, 14, 15, 250, 251, 18, 19, 0, 0,
4061 0, 0, 0, 20, 252, 253, 23, 24, 25, 26,
4062 0, 0, 209, 0, 0, 0, 0, 0, 0, 282,
4063 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
4064 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
4065 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4066 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4067 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4068 0, 1118, 0, 0, 212, 54, 0, 55, 56, 0,
4069 0, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4070 65, 66, 0, 0, 0, 0, 0, 0, 5, 6,
4071 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
4072 0, 12, 284, 13, 14, 15, 250, 251, 18, 19,
4073 0, 0, 0, 0, 0, 20, 252, 253, 23, 24,
4074 25, 26, 0, 0, 209, 0, 0, 0, 0, 0,
4075 0, 282, 0, 0, 32, 33, 34, 35, 36, 37,
4076 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
4077 47, 23, 24, 25, 26, 0, 0, 0, 0, 0,
4078 0, 0, 0, 0, 0, 0, 0, 32, 33, 34,
4079 914, 0, 0, 0, 915, 0, 0, 41, 42, 43,
4080 44, 45, 0, 1207, 0, 0, 212, 54, 0, 55,
4081 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
4082 63, 64, 65, 66, 0, 0, 0, 0, 917, 918,
4083 0, 0, 0, 0, 0, 0, 919, 0, 0, 920,
4084 0, 0, 921, 922, 284, 1145, 0, 0, 58, 59,
4085 60, 61, 62, 63, 64, 65, 66, 23, 24, 25,
4086 26, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4087 925, 0, 0, 32, 33, 34, 914, 284, 0, 0,
4088 915, 0, 0, 41, 42, 43, 44, 45, 0, 0,
4089 23, 24, 25, 26, 0, 0, 0, 0, 0, 0,
4090 0, 0, 0, 0, 0, 0, 32, 33, 34, 914,
4091 0, 0, 0, 915, 917, 918, 41, 42, 43, 44,
4092 45, 0, 919, 0, 0, 920, 0, 0, 921, 922,
4093 0, 923, 0, 0, 58, 59, 60, 61, 62, 63,
4094 64, 65, 66, 0, 0, 0, 0, 917, 918, 0,
4095 0, 0, 0, 0, 0, 919, 925, 0, 920, 0,
4096 0, 921, 922, 284, 0, 0, 0, 58, 59, 60,
4097 61, 62, 63, 64, 65, 66, 613, 614, 0, 0,
4098 615, 0, 0, 0, 0, 0, 0, 0, 0, 925,
4099 0, 0, 0, 0, 0, 0, 284, 0, 0, 173,
4100 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4101 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4103 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4105 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4106 197, 198, 199, 0, 200, 201, 622, 623, 0, 0,
4107 624, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4108 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4109 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4110 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4111 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4112 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4113 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4114 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4115 197, 198, 199, 0, 200, 201, 672, 614, 0, 0,
4116 673, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4117 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4118 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4119 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4120 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4121 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4123 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4124 197, 198, 199, 0, 200, 201, 675, 623, 0, 0,
4125 676, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4126 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4127 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4128 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4130 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4132 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4133 197, 198, 199, 0, 200, 201, 702, 614, 0, 0,
4134 703, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4135 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4136 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4137 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4138 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4139 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4140 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4141 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4142 197, 198, 199, 0, 200, 201, 705, 623, 0, 0,
4143 706, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4144 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4145 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4146 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4148 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4149 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4150 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4151 197, 198, 199, 0, 200, 201, 814, 614, 0, 0,
4152 815, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4153 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4154 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4155 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4156 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4157 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4158 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4159 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4160 197, 198, 199, 0, 200, 201, 817, 623, 0, 0,
4161 818, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4162 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4163 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4164 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4165 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4166 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4168 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4169 197, 198, 199, 0, 200, 201, 823, 614, 0, 0,
4170 824, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4171 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4172 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4173 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4174 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4175 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4176 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4177 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4178 197, 198, 199, 0, 200, 201, 657, 623, 0, 0,
4179 658, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4180 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4181 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4182 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4184 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4185 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4186 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4187 197, 198, 199, 0, 200, 201, 1039, 614, 0, 0,
4188 1040, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4189 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4190 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4191 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4193 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4195 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4196 197, 198, 199, 0, 200, 201, 1042, 623, 0, 0,
4197 1043, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4198 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4199 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4200 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4202 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4204 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4205 197, 198, 199, 0, 200, 201, 1246, 614, 0, 0,
4206 1247, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4207 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4208 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4209 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4210 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4211 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4213 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4214 197, 198, 199, 0, 200, 201, 1249, 623, 0, 0,
4215 1250, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4216 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4217 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4218 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4220 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4221 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4222 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4223 197, 198, 199, 0, 200, 201, 1283, 614, 0, 0,
4224 1284, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4225 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4226 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4227 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4229 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4230 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4231 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4232 197, 198, 199, 0, 200, 201, 657, 623, 0, 0,
4233 658, 202, 238, 0, 0, 0, 0, 0, 0, 0,
4234 0, 0, 0, 0, 0, 0, 0, 0, 0, 173,
4235 174, 175, 176, 177, 178, 179, 180, 181, 0, 0,
4236 182, 183, 0, 0, 0, 0, 184, 185, 186, 187,
4237 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4238 0, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4240 0, 0, 0, 190, 191, 192, 193, 194, 195, 196,
4241 197, 198, 199, 0, 200, 201, 0, 0, 0, 0,
4245static const yytype_int16 yycheck[] =
4247 2, 8, 60, 380, 59, 91, 105, 16, 17, 385,
4248 71, 324, 2, 28, 4, 328, 324, 8, 104, 331,
4249 328, 28, 96, 328, 556, 802, 539, 736, 22, 53,
4250 22, 403, 238, 16, 17, 733, 97, 28, 57, 232,
4251 444, 302, 303, 85, 740, 276, 101, 809, 452, 280,
4252 452, 4, 59, 55, 56, 379, 784, 381, 68, 16,
4253 17, 93, 94, 53, 54, 97, 85, 57, 783, 784,
4254 382, 448, 55, 736, 76, 77, 2, 97, 4, 98,
4255 99, 100, 94, 871, 733, 97, 80, 53, 80, 57,
4256 492, 740, 921, 102, 101, 85, 502, 67, 55, 56,
4257 77, 869, 71, 586, 428, 1068, 77, 29, 98, 99,
4258 100, 101, 52, 16, 17, 27, 25, 660, 661, 102,
4259 783, 784, 66, 447, 1184, 449, 1211, 504, 54, 66,
4260 25, 13, 1028, 68, 66, 97, 100, 66, 68, 264,
4261 68, 227, 34, 917, 918, 102, 25, 66, 26, 789,
4262 27, 99, 29, 477, 25, 25, 144, 797, 216, 586,
4263 52, 96, 97, 25, 13, 153, 96, 97, 0, 97,
4264 256, 52, 25, 54, 55, 119, 57, 583, 126, 153,
4265 561, 505, 563, 145, 121, 122, 148, 119, 212, 153,
4266 25, 143, 121, 122, 1279, 13, 37, 38, 146, 102,
4267 119, 123, 121, 122, 290, 266, 146, 720, 721, 241,
4268 145, 243, 13, 148, 1274, 152, 218, 219, 343, 13,
4269 101, 26, 212, 152, 226, 249, 235, 13, 237, 238,
4270 232, 146, 1128, 660, 661, 143, 238, 146, 153, 151,
4271 264, 153, 219, 285, 13, 247, 266, 218, 219, 1078,
4272 1079, 146, 235, 148, 237, 238, 517, 247, 519, 249,
4273 1223, 253, 254, 640, 146, 143, 285, 146, 751, 151,
4274 463, 153, 262, 650, 264, 146, 146, 649, 235, 683,
4275 237, 685, 25, 685, 146, 317, 318, 319, 320, 740,
4276 322, 323, 743, 146, 727, 285, 13, 266, 264, 1073,
4277 1074, 1051, 151, 736, 153, 317, 318, 319, 320, 395,
4278 287, 146, 153, 1009, 284, 100, 1014, 641, 109, 343,
4279 1070, 247, 25, 25, 1112, 344, 316, 651, 389, 56,
4280 148, 321, 235, 151, 237, 153, 262, 327, 143, 341,
4281 652, 331, 133, 148, 346, 1113, 13, 148, 152, 881,
4282 151, 13, 153, 343, 344, 387, 869, 151, 871, 153,
4283 1009, 146, 386, 316, 388, 151, 772, 153, 1096, 389,
4284 402, 380, 68, 99, 381, 387, 344, 343, 380, 1028,
4285 13, 1096, 151, 126, 153, 68, 100, 126, 792, 381,
4286 316, 152, 382, 1056, 707, 321, 386, 68, 388, 707,
4287 126, 97, 707, 146, 1181, 282, 149, 146, 1071, 68,
4288 153, 152, 68, 96, 97, 1078, 1079, 960, 961, 1181,
4289 733, 428, 965, 966, 126, 96, 97, 740, 25, 431,
4290 432, 52, 146, 1096, 151, 56, 153, 68, 97, 448,
4291 442, 97, 449, 146, 146, 148, 448, 149, 450, 451,
4292 711, 153, 99, 68, 152, 716, 471, 449, 25, 461,
4293 502, 463, 145, 77, 471, 96, 97, 1217, 699, 28,
4294 477, 126, 1222, 1223, 145, 68, 478, 683, 671, 126,
4295 471, 96, 97, 502, 151, 477, 153, 444, 68, 151,
4296 126, 153, 68, 148, 484, 504, 877, 878, 505, 146,
4297 1209, 882, 504, 884, 97, 886, 1204, 52, 569, 34,
4298 822, 56, 502, 505, 145, 1265, 1293, 97, 151, 66,
4299 153, 97, 136, 137, 138, 783, 784, 52, 1028, 126,
4300 145, 126, 489, 960, 961, 912, 66, 67, 965, 966,
4301 853, 583, 1292, 545, 1087, 853, 1209, 919, 853, 146,
4302 146, 148, 149, 99, 556, 1204, 153, 566, 1009, 126,
4303 1011, 570, 1211, 99, 583, 1016, 568, 66, 642, 151,
4304 580, 153, 119, 634, 121, 122, 586, 1028, 68, 146,
4305 126, 66, 149, 112, 68, 68, 153, 911, 1286, 913,
4306 126, 121, 122, 583, 1126, 1028, 1000, 580, 1000, 1112,
4307 1113, 15, 1134, 586, 1217, 981, 630, 97, 632, 1222,
4308 1037, 25, 96, 97, 97, 150, 68, 99, 153, 621,
4309 119, 653, 121, 122, 618, 627, 618, 77, 82, 83,
4310 1279, 640, 146, 627, 641, 627, 121, 122, 640, 124,
4311 630, 650, 632, 99, 651, 97, 1022, 662, 650, 641,
4312 660, 661, 1265, 148, 847, 662, 688, 659, 700, 651,
4313 1087, 145, 652, 921, 68, 659, 56, 659, 9, 671,
4314 126, 662, 54, 985, 15, 129, 130, 68, 126, 68,
4315 938, 700, 64, 65, 134, 135, 136, 137, 138, 66,
4316 68, 693, 96, 97, 99, 781, 1009, 58, 1136, 1137,
4317 692, 693, 100, 1075, 1204, 96, 97, 96, 97, 1209,
4318 700, 1211, 15, 1213, 17, 1028, 77, 1093, 96, 97,
4319 1032, 126, 148, 241, 56, 602, 683, 153, 1260, 68,
4320 772, 830, 1028, 1114, 1115, 1116, 1117, 68, 146, 1190,
4321 99, 145, 119, 620, 121, 122, 99, 108, 109, 751,
4322 752, 269, 66, 772, 145, 273, 145, 96, 97, 820,
4323 1211, 146, 1213, 146, 148, 96, 97, 145, 751, 148,
4324 153, 1204, 133, 126, 829, 99, 1209, 99, 1211, 1279,
4325 1213, 1281, 772, 149, 786, 787, 1286, 153, 1288, 821,
4326 1048, 793, 794, 783, 784, 819, 1108, 674, 800, 148,
4327 802, 1177, 126, 1303, 126, 119, 145, 121, 122, 821,
4328 1068, 37, 38, 77, 145, 14, 15, 1255, 1256, 1196,
4329 1078, 1079, 829, 1261, 146, 1263, 1264, 704, 1279, 819,
4330 1281, 149, 822, 126, 68, 792, 144, 1288, 1096, 841,
4331 842, 99, 844, 845, 146, 847, 1279, 68, 1281, 150,
4332 99, 153, 1303, 1286, 56, 1288, 68, 1295, 1296, 1297,
4333 1298, 148, 96, 97, 1245, 146, 924, 99, 126, 1307,
4334 1303, 895, 77, 1197, 126, 96, 97, 126, 210, 881,
4335 126, 213, 214, 215, 96, 97, 99, 126, 146, 891,
4336 106, 1204, 99, 70, 126, 146, 99, 146, 1211, 901,
4337 56, 903, 99, 912, 151, 895, 913, 909, 1204, 25,
4338 912, 145, 130, 126, 146, 1211, 906, 1213, 908, 126,
4339 2, 913, 4, 126, 145, 986, 99, 917, 918, 126,
4340 126, 921, 126, 145, 16, 17, 454, 1056, 970, 816,
4341 149, 459, 146, 146, 462, 969, 146, 465, 938, 826,
4342 960, 961, 144, 126, 58, 965, 966, 144, 970, 1078,
4343 1079, 146, 964, 481, 88, 89, 1279, 146, 486, 126,
4344 66, 53, 54, 77, 146, 57, 146, 26, 146, 969,
4345 906, 146, 908, 1279, 52, 1281, 68, 146, 54, 55,
4346 1286, 57, 1288, 52, 996, 985, 66, 10, 64, 65,
4347 8, 1025, 1021, 85, 108, 1029, 144, 1303, 112, 40,
4348 41, 93, 94, 286, 287, 97, 98, 99, 100, 68,
4349 102, 146, 13, 119, 146, 121, 122, 1037, 124, 547,
4350 1068, 1021, 25, 1065, 1120, 1025, 146, 17, 152, 1029,
4351 1078, 1079, 1032, 152, 921, 922, 146, 96, 97, 119,
4352 126, 121, 122, 1065, 124, 44, 44, 144, 1048, 126,
4353 146, 1051, 146, 128, 582, 44, 26, 52, 44, 54,
4354 55, 56, 57, 150, 15, 146, 1100, 1087, 1068, 1069,
4355 1070, 52, 146, 1073, 1074, 1109, 146, 131, 1078, 1079,
4356 146, 146, 1150, 100, 143, 146, 145, 52, 131, 148,
4357 1124, 40, 41, 42, 43, 44, 1096, 26, 68, 146,
4358 1100, 443, 444, 1132, 674, 52, 101, 146, 1108, 1109,
4359 452, 146, 107, 1125, 1126, 1002, 59, 60, 61, 62,
4360 212, 146, 1134, 100, 1124, 146, 96, 97, 56, 144,
4361 146, 151, 1132, 52, 704, 54, 55, 56, 57, 68,
4362 149, 1028, 1176, 235, 146, 237, 238, 489, 9, 241,
4363 492, 243, 131, 1187, 1041, 247, 52, 249, 54, 55,
4364 56, 57, 146, 1050, 146, 131, 1053, 96, 97, 1181,
4365 262, 146, 264, 143, 1203, 145, 1176, 1196, 148, 146,
4366 1197, 149, 101, 146, 1196, 146, 1198, 1187, 146, 1076,
4367 1232, 1233, 146, 285, 144, 1197, 724, 52, 56, 54,
4368 55, 56, 57, 1203, 146, 120, 2, 146, 4, 146,
4369 1232, 1233, 554, 146, 143, 146, 145, 1217, 1230, 148,
4370 16, 17, 1222, 1223, 316, 317, 318, 319, 320, 321,
4371 322, 323, 146, 146, 247, 327, 148, 1271, 580, 331,
4372 148, 1128, 480, 484, 586, 829, 816, 98, 1260, 89,
4373 100, 343, 344, 659, 752, 1230, 826, 53, 54, 720,
4374 869, 1130, 1028, 346, 1151, 1265, 903, 1274, 831, 574,
4375 1293, 1271, 68, 1071, 52, 339, 54, 55, 56, 57,
4376 58, 1293, 1069, 1071, 1171, 1172, 1173, 1067, 380, 1198,
4377 382, 1125, 1292, 108, 386, 387, 388, 93, 94, 77,
4378 828, 97, 101, 519, 736, 1209, 102, 1204, 733, -1,
4379 402, 1151, -1, -1, -1, -1, -1, -1, 846, -1,
4380 848, 663, -1, 101, -1, -1, 668, 77, -1, 107,
4381 108, 109, -1, -1, -1, -1, -1, -1, -1, 867,
4382 -1, 683, -1, 685, 94, 95, -1, -1, 431, 432,
4383 -1, 921, 1239, -1, -1, 133, 448, -1, 136, 442,
4384 -1, 1248, -1, -1, 660, 661, -1, 450, 451, -1,
4385 -1, -1, 571, -1, -1, 153, -1, 576, -1, 578,
4386 -1, 677, 678, 133, 134, 135, 136, 137, 138, 731,
4387 -1, -1, 484, -1, -1, 478, -1, -1, 694, -1,
4388 52, -1, 54, 55, 56, 57, 58, -1, -1, 751,
4389 502, -1, 504, -1, -1, -1, 212, -1, -1, -1,
4390 -1, -1, 764, -1, -1, 77, -1, -1, -1, 628,
4391 -1, -1, -1, -1, 633, -1, 635, -1, -1, 235,
4392 -1, 237, 238, 77, -1, 241, -1, 243, -1, 101,
4393 792, 247, -1, 249, -1, 107, 108, 109, 77, -1,
4394 94, 95, -1, -1, -1, -1, 262, -1, 264, -1,
4395 812, 1041, -1, -1, 566, 94, 95, -1, 570, -1,
4396 1050, 133, -1, 1053, 136, -1, -1, -1, 580, -1,
4397 -1, 583, -1, -1, 586, -1, -1, 131, 132, 133,
4398 134, 135, 136, 137, 138, -1, 1076, -1, 52, -1,
4399 54, 55, 56, 57, 58, 134, 135, 136, 137, 138,
4400 316, 317, 318, 319, 320, 321, 322, 323, -1, -1,
4401 -1, 327, -1, 77, -1, 331, -1, -1, 630, -1,
4402 632, -1, -1, -1, -1, -1, -1, 343, 640, 1077,
4403 -1, -1, -1, -1, -1, -1, -1, 101, 650, -1,
4404 652, 653, -1, 905, 108, 109, -1, -1, 660, 661,
4405 52, -1, 54, 55, 56, 57, 58, -1, -1, -1,
4406 -1, -1, -1, -1, 380, -1, 382, -1, -1, 133,
4407 386, 387, 388, -1, -1, 77, 688, -1, -1, -1,
4408 -1, 1171, 1172, 1173, -1, -1, 402, -1, 700, 91,
4409 -1, 810, -1, -1, 813, 1143, -1, -1, -1, 101,
4410 -1, -1, -1, -1, -1, 107, 108, 109, 827, -1,
4411 -1, -1, -1, -1, -1, -1, -1, 979, -1, -1,
4412 1168, 1169, 1170, -1, -1, -1, -1, -1, -1, -1,
4413 -1, 133, 448, -1, 136, -1, -1, -1, 1000, -1,
4414 -1, -1, -1, -1, 960, 961, 148, -1, -1, 965,
4415 966, -1, -1, -1, -1, -1, -1, -1, 1248, -1,
4416 772, -1, -1, -1, -1, -1, -1, -1, 484, -1,
4417 -1, 1033, -1, -1, -1, -1, -1, -1, 994, 995,
4418 -1, 997, 998, 786, 787, -1, -1, -1, 504, -1,
4419 793, 794, -1, -1, 2, -1, 4, -1, -1, -1,
4420 -1, -1, -1, -1, -1, -1, -1, 819, -1, 821,
4421 822, -1, -1, -1, -1, -1, -1, -1, 52, -1,
4422 54, 55, 56, 57, 58, -1, -1, -1, -1, -1,
4423 -1, -1, -1, -1, -1, -1, -1, 1099, 841, 842,
4424 -1, 844, 845, 77, -1, 53, 54, -1, -1, 57,
4425 566, -1, 971, -1, 570, 974, -1, 91, 977, -1,
4426 -1, -1, -1, -1, 580, 984, -1, 101, 987, -1,
4427 586, 1087, 783, 784, 108, 109, -1, 85, -1, -1,
4428 -1, -1, -1, 895, -1, -1, -1, -1, -1, 1105,
4429 98, 99, 100, -1, 906, -1, 908, -1, -1, 133,
4430 912, -1, -1, -1, -1, -1, 909, 52, -1, 54,
4431 55, 56, 57, 58, 630, -1, 632, 1179, -1, -1,
4432 -1, -1, -1, -1, 640, -1, -1, -1, -1, -1,
4433 -1, -1, 77, -1, 650, -1, 652, 653, -1, -1,
4434 -1, -1, -1, -1, 660, 661, 91, -1, 960, 961,
4435 -1, -1, -1, 965, 966, -1, 101, 969, 970, -1,
4436 -1, 964, 107, 108, 109, -1, -1, 2, -1, 4,
4437 -1, -1, 688, 985, -1, -1, -1, -1, -1, -1,
4438 -1, 16, 17, 1102, -1, -1, -1, -1, 133, -1,
4439 -1, 136, -1, 996, -1, -1, -1, -1, -1, -1,
4440 -1, -1, -1, -1, 212, -1, 917, 918, -1, 1021,
4441 921, -1, -1, 1025, -1, -1, -1, 1029, 53, 54,
4442 1032, -1, -1, -1, -1, 1037, -1, 938, -1, -1,
4443 -1, -1, -1, 68, -1, -1, -1, -1, -1, 247,
4444 -1, 249, -1, -1, -1, -1, -1, -1, -1, -1,
4445 -1, -1, -1, 1065, 262, -1, 264, -1, 93, 94,
4446 -1, -1, 97, -1, -1, -1, 1185, 102, -1, -1,
4447 -1, -1, -1, -1, -1, 1087, -1, 285, -1, -1,
4448 -1, -1, -1, -1, -1, -1, -1, -1, 1100, -1,
4449 -1, -1, -1, -1, -1, -1, 1108, 1109, -1, -1,
4450 -1, -1, -1, 819, -1, 821, 822, -1, 316, -1,
4451 -1, -1, 1124, 321, -1, -1, -1, -1, -1, 327,
4452 1132, -1, -1, 331, -1, -1, -1, -1, -1, -1,
4453 -1, -1, -1, -1, -1, 343, 344, 1048, -1, -1,
4454 1051, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4455 -1, -1, -1, -1, -1, -1, -1, 1068, 1069, 1070,
4456 -1, -1, 1073, 1074, 1176, -1, -1, 1078, 1079, -1,
4457 -1, -1, -1, -1, 382, 1187, -1, 212, 386, 895,
4458 388, -1, -1, -1, 1196, 1096, -1, -1, -1, -1,
4459 906, 1203, 908, -1, -1, -1, 912, -1, -1, -1,
4460 235, -1, 237, 238, -1, -1, 241, -1, 243, -1,
4461 -1, -1, 247, -1, 249, -1, -1, -1, -1, -1,
4462 1232, 1233, -1, -1, -1, -1, -1, 262, -1, 264,
4463 -1, -1, -1, -1, 783, 784, -1, -1, -1, -1,
4464 -1, -1, -1, -1, 960, 961, -1, -1, -1, 965,
4465 966, -1, -1, 969, 970, -1, -1, -1, -1, 1271,
4466 -1, -1, -1, -1, -1, -1, -1, -1, -1, 985,
4467 -1, -1, -1, -1, -1, -1, 484, -1, -1, -1,
4468 -1, 316, 317, 318, 319, 320, 321, 322, 323, -1,
4469 -1, -1, 327, -1, 502, -1, 331, -1, -1, -1,
4470 -1, -1, -1, -1, -1, -1, 1217, -1, 343, 1025,
4471 -1, 1222, 1223, 1029, -1, -1, 1032, -1, -1, -1,
4472 -1, 1037, -1, -1, -1, -1, -1, -1, -1, -1,
4473 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4474 -1, -1, -1, -1, -1, 380, -1, 382, -1, 1065,
4475 -1, 386, 387, 388, 1265, -1, -1, -1, -1, -1,
4476 -1, -1, -1, -1, -1, -1, -1, 402, 917, 918,
4477 -1, 1087, 921, -1, -1, 583, -1, -1, 586, -1,
4478 -1, 1292, -1, -1, 1100, -1, -1, -1, -1, 938,
4479 -1, -1, 1108, 1109, -1, -1, -1, -1, -1, 2,
4480 -1, 4, -1, -1, -1, -1, -1, -1, 1124, -1,
4481 -1, -1, -1, 448, -1, -1, -1, -1, -1, -1,
4482 -1, -1, 630, -1, 632, -1, -1, -1, -1, -1,
4483 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4484 -1, -1, -1, -1, 652, -1, -1, -1, -1, 484,
4485 53, 54, 660, 661, 57, -1, -1, -1, -1, -1,
4486 1176, -1, -1, -1, -1, -1, -1, -1, -1, 504,
4487 -1, 1187, -1, -1, -1, -1, -1, -1, -1, -1,
4488 1196, -1, 85, -1, -1, -1, -1, -1, -1, -1,
4489 -1, -1, 700, -1, -1, 98, 99, 100, -1, 1048,
4490 -1, 709, 1051, -1, -1, 783, 784, -1, -1, -1,
4491 -1, -1, -1, -1, -1, -1, 1232, 1233, -1, 1068,
4492 1069, 1070, -1, -1, 1073, 1074, -1, -1, -1, 1078,
4493 1079, 566, -1, -1, -1, 570, -1, -1, -1, -1,
4494 -1, -1, -1, -1, -1, 580, -1, 1096, -1, -1,
4495 -1, 586, -1, -1, -1, 1271, -1, -1, -1, -1,
4496 -1, -1, -1, -1, 772, -1, -1, -1, -1, -1,
4497 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4498 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4499 -1, -1, -1, -1, -1, 630, -1, 632, -1, -1,
4500 -1, -1, -1, -1, -1, 640, -1, -1, -1, 212,
4501 -1, 819, -1, -1, 822, 650, -1, 652, 653, -1,
4502 -1, -1, -1, -1, -1, 660, 661, -1, -1, 2,
4503 -1, 4, -1, -1, -1, -1, -1, -1, -1, 917,
4504 918, -1, -1, 921, 247, -1, 249, -1, -1, -1,
4505 -1, -1, -1, 688, -1, -1, -1, -1, -1, 262,
4506 938, 264, -1, -1, -1, -1, -1, -1, 1217, -1,
4507 -1, -1, -1, 1222, 1223, -1, -1, -1, -1, -1,
4508 53, 54, 285, -1, 57, -1, -1, 895, -1, -1,
4509 -1, -1, -1, -1, -1, -1, -1, -1, 906, -1,
4510 908, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4511 -1, -1, 85, 316, -1, -1, 1265, -1, 321, -1,
4512 -1, -1, -1, -1, 327, 98, 99, 100, 331, -1,
4513 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4514 343, 344, -1, 1292, -1, -1, -1, -1, -1, -1,
4515 -1, -1, 960, 961, -1, -1, -1, 965, 966, -1,
4516 -1, 969, -1, -1, -1, -1, -1, -1, -1, -1,
4517 1048, -1, -1, 1051, -1, -1, -1, 985, -1, 382,
4518 -1, -1, -1, 386, 819, 388, 821, 822, -1, -1,
4519 1068, 1069, 1070, -1, -1, 1073, 1074, -1, -1, -1,
4520 1078, 1079, -1, -1, -1, -1, -1, -1, -1, -1,
4521 -1, -1, -1, 1021, -1, -1, -1, 1025, 1096, -1,
4522 -1, 1029, -1, -1, 1032, -1, -1, 783, 784, 1037,
4523 -1, -1, -1, -1, -1, -1, -1, -1, -1, 212,
4524 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4525 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4526 895, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4527 -1, 906, -1, 908, 247, -1, 249, 912, -1, 1087,
4528 -1, 484, -1, -1, -1, -1, -1, -1, -1, 262,
4529 -1, 264, 1100, -1, -1, -1, -1, -1, -1, 502,
4530 1108, 1109, -1, -1, -1, -1, -1, -1, -1, -1,
4531 -1, -1, 285, -1, -1, -1, 1124, -1, -1, -1,
4532 -1, -1, -1, -1, 1132, 960, 961, -1, -1, -1,
4533 965, 966, -1, -1, 969, 970, -1, -1, -1, 1217,
4534 -1, -1, -1, 316, 1222, 1223, -1, -1, 321, -1,
4535 985, -1, -1, -1, 327, -1, -1, -1, 331, -1,
4536 -1, 917, 918, -1, -1, 921, -1, -1, 1176, -1,
4537 343, 344, -1, -1, -1, -1, -1, -1, -1, 1187,
4538 583, -1, 938, 586, -1, -1, -1, 1265, -1, -1,
4539 1025, -1, -1, -1, 1029, 1203, -1, 1032, -1, -1,
4540 -1, -1, 1037, -1, 783, 784, -1, -1, -1, 382,
4541 -1, -1, -1, 386, 1292, 388, -1, -1, -1, -1,
4542 -1, -1, -1, -1, -1, -1, -1, 630, -1, 632,
4543 1065, -1, -1, 783, 784, -1, -1, -1, -1, -1,
4544 -1, -1, -1, -1, -1, -1, -1, -1, -1, 652,
4545 -1, -1, 1087, -1, -1, -1, -1, 660, 661, -1,
4546 -1, -1, -1, 1271, -1, 1100, -1, -1, -1, -1,
4547 -1, -1, -1, 1108, 1109, -1, -1, -1, -1, -1,
4548 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1124,
4549 -1, -1, 1048, -1, 2, 1051, 4, 700, -1, -1,
4550 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4551 -1, 484, 1068, 1069, 1070, 783, 784, 1073, 1074, -1,
4552 -1, -1, 1078, 1079, -1, -1, -1, -1, 2, 502,
4553 4, -1, -1, -1, -1, -1, -1, -1, 917, 918,
4554 1096, 1176, 921, -1, -1, 53, 54, -1, -1, 57,
4555 -1, -1, 1187, -1, -1, -1, -1, -1, -1, 938,
4556 -1, 1196, -1, -1, -1, -1, -1, 917, 918, 772,
4557 -1, 921, -1, -1, -1, -1, -1, 85, -1, 53,
4558 54, -1, -1, -1, -1, -1, -1, -1, 938, -1,
4559 98, 99, 100, 101, -1, -1, -1, 1232, 1233, -1,
4560 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4561 583, -1, -1, 586, -1, -1, 819, -1, -1, 822,
4562 -1, -1, -1, -1, 98, -1, -1, -1, -1, -1,
4563 -1, -1, -1, -1, -1, -1, 1271, -1, -1, -1,
4564 -1, -1, -1, -1, -1, -1, -1, -1, -1, 917,
4565 918, -1, -1, 921, -1, -1, -1, 630, -1, 632,
4566 -1, 1217, -1, -1, -1, -1, 1222, 1223, -1, 1048,
4567 938, -1, 1051, -1, -1, -1, -1, -1, -1, 652,
4568 -1, -1, -1, -1, -1, -1, -1, 660, 661, 1068,
4569 1069, 1070, 895, -1, 1073, 1074, -1, -1, 1048, 1078,
4570 1079, 1051, -1, 906, 212, 908, -1, -1, -1, 1265,
4571 -1, -1, -1, -1, -1, -1, -1, 1096, 1068, 1069,
4572 1070, -1, -1, 1073, 1074, -1, -1, 700, 1078, 1079,
4573 -1, -1, -1, -1, -1, -1, 1292, -1, 212, 247,
4574 -1, 249, -1, -1, -1, -1, 1096, -1, -1, -1,
4575 -1, -1, -1, -1, 262, -1, 264, 960, 961, -1,
4576 -1, -1, 965, 966, -1, -1, 969, -1, -1, 2,
4577 -1, 4, -1, 247, -1, 249, -1, 285, -1, -1,
4578 1048, -1, 985, 1051, -1, -1, -1, -1, 262, -1,
4579 264, -1, -1, -1, -1, -1, -1, -1, -1, 772,
4580 1068, 1069, 1070, -1, -1, 1073, 1074, -1, 316, -1,
4581 1078, 1079, -1, 321, -1, -1, -1, -1, 1021, 327,
4582 53, 54, 1025, 331, -1, -1, 1029, -1, 1096, 1032,
4583 -1, -1, -1, -1, 1037, 343, 344, -1, 1217, -1,
4584 -1, -1, 316, 1222, 1223, -1, 819, 321, -1, 822,
4585 -1, -1, -1, 327, -1, -1, -1, 331, -1, -1,
4586 -1, -1, -1, -1, -1, -1, -1, 1217, -1, 343,
4587 -1, -1, 1222, 1223, 382, -1, -1, -1, 386, -1,
4588 388, -1, -1, -1, 1087, -1, 1265, -1, -1, -1,
4589 -1, -1, -1, -1, -1, -1, -1, 1100, 783, 784,
4590 -1, -1, -1, -1, -1, 1108, 1109, -1, 382, -1,
4591 -1, -1, 386, 1292, 388, 1265, -1, -1, -1, -1,
4592 -1, 1124, 895, -1, -1, -1, -1, -1, -1, 1132,
4593 -1, 783, 784, 906, -1, 908, -1, -1, -1, -1,
4594 -1, -1, 1292, -1, -1, -1, -1, -1, -1, 1217,
4595 -1, -1, -1, -1, 1222, 1223, -1, -1, -1, -1,
4596 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4597 -1, -1, -1, 1176, -1, -1, 484, -1, -1, 212,
4598 -1, -1, -1, -1, 1187, -1, -1, 960, 961, -1,
4599 -1, -1, 965, 966, 502, -1, 969, 1265, -1, -1,
4600 1203, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4601 484, -1, 985, -1, 247, -1, 249, -1, -1, -1,
4602 -1, -1, -1, -1, 1292, -1, -1, -1, -1, 262,
4603 -1, 264, 917, 918, -1, -1, 921, -1, -1, -1,
4604 -1, -1, -1, -1, -1, -1, -1, -1, 1021, -1,
4605 -1, -1, 1025, 938, -1, -1, 1029, -1, -1, 1032,
4606 -1, -1, -1, -1, 1037, 917, 918, -1, 1271, 921,
4607 -1, -1, -1, -1, -1, 583, -1, -1, -1, -1,
4608 -1, -1, -1, 316, -1, -1, 938, -1, 321, -1,
4609 -1, -1, -1, -1, 327, -1, -1, -1, 331, -1,
4610 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4611 343, -1, 586, -1, 1087, -1, -1, -1, -1, -1,
4612 -1, -1, 630, -1, 632, -1, -1, 1100, -1, -1,
4613 -1, -1, -1, -1, -1, 1108, 1109, -1, -1, -1,
4614 -1, -1, -1, -1, 652, -1, -1, -1, -1, 382,
4615 -1, 1124, -1, 386, -1, 388, 630, -1, 632, 1132,
4616 -1, -1, -1, 1048, -1, -1, 1051, -1, -1, -1,
4617 -1, -1, -1, -1, -1, -1, -1, -1, 652, -1,
4618 -1, -1, -1, 1068, 1069, 1070, 660, 661, 1073, 1074,
4619 -1, -1, 700, 1078, 1079, -1, 1048, -1, -1, 1051,
4620 -1, -1, -1, 1176, -1, -1, -1, -1, -1, -1,
4621 -1, 1096, -1, -1, 1187, -1, 1068, 1069, 1070, -1,
4622 -1, 1073, 1074, -1, -1, -1, 1078, 1079, -1, -1,
4623 1203, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4624 -1, -1, -1, -1, 1096, -1, -1, -1, -1, -1,
4625 -1, 484, -1, -1, -1, -1, -1, -1, -1, -1,
4626 -1, -1, -1, -1, 772, -1, -1, -1, -1, -1,
4627 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4628 -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
4629 8, 9, 10, -1, -1, 13, 14, 15, 1271, 17,
4630 -1, -1, -1, -1, -1, -1, -1, 25, 26, 27,
4631 -1, 819, -1, -1, 822, -1, -1, -1, -1, 37,
4632 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
4633 -1, -1, 1217, -1, -1, -1, -1, 1222, 1223, -1,
4634 -1, -1, -1, -1, -1, 819, -1, -1, 822, -1,
4635 68, -1, -1, 586, -1, -1, -1, -1, -1, -1,
4636 -1, -1, -1, -1, -1, 1217, -1, -1, -1, -1,
4637 1222, 1223, -1, -1, -1, -1, -1, -1, 96, 97,
4638 1265, -1, -1, -1, -1, -1, -1, 895, -1, -1,
4639 -1, -1, -1, -1, 25, -1, -1, 630, 906, 632,
4640 908, -1, 120, -1, -1, -1, -1, 1292, -1, -1,
4641 -1, -1, -1, 1265, -1, -1, -1, -1, -1, 652,
4642 -1, 895, -1, -1, -1, 143, 144, 660, 661, -1,
4643 148, 149, 906, 151, 908, 153, -1, -1, -1, -1,
4644 1292, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4645 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4646 -1, 969, -1, 94, 95, -1, -1, -1, -1, 100,
4647 -1, -1, -1, -1, -1, -1, -1, 985, -1, -1,
4648 -1, -1, -1, -1, -1, -1, 960, 961, -1, -1,
4649 -1, 965, 966, 16, 17, 969, 127, -1, 129, 130,
4650 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4651 -1, 985, -1, 1021, -1, -1, -1, 1025, -1, -1,
4652 -1, 1029, -1, -1, 1032, 48, 49, 50, 51, -1,
4653 -1, -1, 55, 56, -1, -1, -1, -1, -1, -1,
4654 -1, -1, -1, -1, -1, 68, 69, 1021, -1, -1,
4655 -1, 1025, -1, -1, -1, 1029, -1, -1, 1032, -1,
4656 -1, -1, -1, 1037, -1, -1, -1, -1, -1, -1,
4657 -1, -1, -1, -1, -1, -1, -1, -1, -1, 102,
4658 -1, -1, -1, -1, -1, -1, 819, -1, -1, 822,
4659 -1, -1, 1100, -1, -1, -1, -1, -1, -1, -1,
4660 1108, 1109, -1, -1, -1, -1, -1, -1, -1, -1,
4661 -1, -1, -1, 1087, -1, -1, 1124, -1, -1, -1,
4662 -1, -1, -1, -1, 1132, -1, 1100, -1, -1, -1,
4663 -1, -1, -1, -1, 1108, 1109, -1, -1, -1, -1,
4664 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4665 1124, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4666 -1, -1, 895, -1, -1, -1, -1, -1, 1176, -1,
4667 -1, -1, -1, 906, -1, 908, -1, -1, -1, 1187,
4668 -1, -1, -1, -1, -1, -1, -1, 210, -1, -1,
4669 213, 214, 215, -1, 217, 1203, -1, -1, -1, -1,
4670 -1, -1, 1176, -1, -1, -1, -1, -1, -1, -1,
4671 -1, -1, 235, 1187, 237, 238, -1, -1, -1, -1,
4672 -1, -1, -1, -1, -1, -1, -1, 960, 961, -1,
4673 -1, -1, 965, 966, -1, -1, 969, -1, -1, -1,
4674 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4675 -1, -1, 985, -1, -1, 77, 78, 79, 80, 81,
4676 82, 83, 84, 1271, 86, 87, -1, -1, -1, -1,
4677 -1, -1, 94, 95, -1, -1, -1, -1, -1, -1,
4678 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4679 -1, -1, 1025, -1, -1, -1, 1029, 1271, -1, 1032,
4680 -1, -1, -1, -1, 1037, -1, -1, 129, 130, 131,
4681 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4682 -1, -1, -1, -1, -1, 348, 349, 350, 351, 352,
4683 -1, -1, 355, 356, 357, 358, 359, 360, 361, 362,
4684 -1, 364, -1, -1, 367, 368, 369, 370, 371, 372,
4685 373, 374, 375, 376, 1087, -1, -1, 380, -1, -1,
4686 -1, -1, -1, -1, -1, -1, -1, 1100, -1, -1,
4687 -1, -1, -1, -1, -1, 1108, 1109, -1, -1, -1,
4688 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4689 -1, 1124, -1, -1, -1, -1, -1, -1, -1, -1,
4690 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4691 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4692 443, 444, -1, -1, -1, 448, -1, -1, -1, 452,
4693 -1, -1, -1, -1, -1, 458, -1, -1, -1, -1,
4694 -1, -1, -1, 1176, -1, 33, 34, 35, 36, -1,
4695 473, -1, -1, -1, 1187, -1, -1, -1, -1, -1,
4696 -1, 49, 50, 51, 52, -1, 489, -1, 56, 492,
4697 -1, 59, 60, 61, 62, 63, -1, -1, -1, -1,
4698 -1, 504, -1, -1, -1, -1, -1, -1, -1, -1,
4699 -1, -1, -1, -1, -1, -1, -1, -1, 521, -1,
4700 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4701 98, -1, -1, 101, -1, -1, 104, 105, -1, 107,
4702 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4703 118, 554, -1, -1, -1, -1, -1, -1, 1271, -1,
4704 -1, -1, -1, 566, 132, -1, -1, 570, -1, -1,
4705 -1, 139, -1, -1, -1, -1, -1, 580, -1, -1,
4706 -1, -1, -1, 586, -1, 153, -1, -1, -1, -1,
4707 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4708 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4709 -1, -1, -1, -1, -1, -1, 33, 34, 35, 36,
4710 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4711 -1, -1, 49, 50, 51, -1, -1, 640, -1, -1,
4712 -1, -1, 59, 60, 61, 62, 63, 650, -1, -1,
4713 -1, -1, -1, -1, -1, -1, -1, 660, 661, -1,
4714 663, 664, 665, 666, -1, 668, -1, -1, -1, -1,
4715 -1, -1, -1, -1, 677, 678, -1, -1, -1, -1,
4716 683, -1, 685, -1, -1, -1, -1, -1, -1, -1,
4717 -1, 694, -1, 110, 111, 112, 113, 114, 115, 116,
4718 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4719 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4720 0, 1, 139, 3, 4, 5, 6, 7, 731, -1,
4721 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
4722 20, 21, 22, 23, 24, -1, -1, -1, 751, -1,
4723 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
4724 -1, 764, -1, -1, -1, 45, 46, 47, 48, 49,
4725 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
4726 60, 61, 62, 63, 64, 65, -1, -1, -1, 792,
4727 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
4728 -1, -1, -1, -1, -1, -1, -1, -1, -1, 812,
4729 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
4730 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
4731 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4732 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4733 -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
4734 140, 141, -1, -1, -1, -1, -1, -1, -1, -1,
4735 -1, 151, -1, 153, -1, -1, -1, -1, -1, -1,
4736 -1, -1, -1, -1, 887, 888, -1, -1, -1, -1,
4737 -1, -1, -1, -1, -1, -1, 899, 900, -1, -1,
4738 -1, -1, 905, 33, 34, 35, 36, 910, -1, 912,
4739 -1, -1, -1, -1, -1, -1, -1, -1, -1, 49,
4740 50, 51, 52, -1, -1, -1, 56, -1, 58, 59,
4741 60, 61, 62, 63, -1, -1, -1, -1, -1, -1,
4742 -1, -1, -1, -1, -1, -1, -1, 77, -1, -1,
4743 -1, -1, -1, -1, -1, -1, 959, 960, 961, -1,
4744 90, 91, 965, 966, -1, -1, -1, -1, 98, -1,
4745 -1, 101, -1, -1, 104, 105, 979, 107, 108, -1,
4746 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
4747 -1, 994, 995, -1, 997, 998, -1, 1000, -1, -1,
4748 -1, -1, 132, -1, -1, -1, -1, -1, -1, 139,
4749 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4750 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
4751 1033, -1, -1, -1, 1037, -1, -1, 8, 9, 10,
4752 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
4753 -1, -1, -1, -1, 25, 26, 27, 28, 29, -1,
4754 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
4755 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
4756 -1, -1, -1, -1, 1087, -1, -1, -1, -1, -1,
4757 -1, -1, -1, -1, -1, -1, 1099, 68, -1, -1,
4758 -1, -1, 1105, -1, -1, -1, 77, 78, 79, 80,
4759 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4760 -1, -1, -1, 94, 95, 96, 97, -1, 99, 100,
4761 -1, -1, -1, -1, -1, 106, -1, -1, -1, -1,
4762 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
4763 -1, -1, 123, -1, -1, 126, 127, 128, 129, 130,
4764 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4765 -1, -1, 143, 144, 145, 146, 1179, 0, 149, 150,
4766 151, -1, 153, -1, -1, 8, 9, 10, -1, -1,
4767 13, 14, 15, 1196, 17, -1, -1, -1, -1, 44,
4768 -1, -1, 25, -1, 27, 28, 29, -1, -1, -1,
4769 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
4770 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
4771 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4772 85, 86, 87, 88, 89, 68, -1, -1, -1, 94,
4773 95, -1, -1, -1, 77, 78, 79, 80, 81, 82,
4774 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
4775 -1, 94, 95, 96, 97, -1, 99, 100, -1, -1,
4776 -1, -1, 127, 106, 129, 130, 131, 132, 133, 134,
4777 135, 136, 137, 138, -1, -1, -1, 120, -1, -1,
4778 123, 146, -1, 126, 127, 128, 129, 130, 131, 132,
4779 133, 134, 135, 136, 137, 138, -1, -1, -1, -1,
4780 -1, 144, 145, 146, 0, -1, 149, 150, 151, -1,
4781 153, -1, 8, 9, 10, -1, -1, 13, 14, 15,
4782 -1, 17, -1, -1, -1, -1, 44, -1, -1, 25,
4783 -1, 27, 28, 29, -1, -1, -1, -1, -1, -1,
4784 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
4785 -1, -1, -1, -1, -1, -1, -1, -1, -1, 77,
4786 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
4787 88, 89, 68, -1, -1, -1, 94, 95, -1, -1,
4788 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
4789 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
4790 96, 97, -1, 99, 100, -1, -1, -1, -1, 127,
4791 106, 129, 130, 131, 132, 133, 134, 135, 136, 137,
4792 138, -1, -1, -1, 120, -1, -1, 123, -1, -1,
4793 126, 127, 128, 129, 130, 131, 132, 133, 134, 135,
4794 136, 137, 138, -1, -1, -1, -1, -1, 144, 145,
4795 146, 0, -1, 149, 150, 151, -1, 153, -1, 8,
4796 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
4797 -1, -1, -1, 44, -1, -1, 25, 26, 27, 28,
4798 29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
4799 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
4800 -1, -1, -1, -1, -1, -1, 77, 78, 79, 80,
4801 81, 82, 83, 84, 85, 86, 87, 88, 89, 68,
4802 -1, -1, -1, 94, 95, -1, -1, -1, 77, 78,
4803 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4804 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
4805 -1, 100, -1, -1, -1, -1, 127, 106, 129, 130,
4806 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4807 -1, 120, -1, -1, 123, -1, -1, -1, 127, 128,
4808 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4809 -1, -1, -1, -1, 143, 144, 145, 146, 0, -1,
4810 149, 150, 151, -1, 153, -1, 8, 9, 10, -1,
4811 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
4812 44, -1, -1, 25, 26, 27, 28, 29, -1, -1,
4813 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
4814 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
4815 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
4816 84, 85, 86, 87, 88, 89, 68, -1, -1, -1,
4817 94, 95, -1, -1, -1, 77, 78, 79, 80, 81,
4818 82, 83, 84, 85, 86, 87, 88, 89, -1, -1,
4819 -1, -1, 94, 95, 96, 97, -1, -1, 100, -1,
4820 -1, -1, -1, 127, 106, 129, 130, 131, 132, 133,
4821 134, 135, 136, 137, 138, -1, -1, -1, 120, -1,
4822 -1, 123, -1, -1, -1, 127, 128, 129, 130, 131,
4823 132, 133, 134, 135, 136, 137, 138, -1, -1, -1,
4824 -1, 143, 144, 145, 146, 0, -1, 149, 150, 151,
4825 -1, 153, -1, 8, 9, 10, -1, -1, 13, 14,
4826 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
4827 25, -1, 27, 28, 29, -1, -1, -1, -1, -1,
4828 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
4829 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4830 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
4831 87, 88, 89, 68, -1, -1, -1, 94, 95, -1,
4832 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4833 85, 86, 87, 88, 89, -1, -1, -1, -1, 94,
4834 95, 96, 97, -1, 99, 100, -1, -1, -1, -1,
4835 127, 106, 129, 130, 131, 132, 133, 134, 135, 136,
4836 137, 138, -1, -1, -1, 120, -1, -1, 123, -1,
4837 -1, 126, 127, 128, 129, 130, 131, 132, 133, 134,
4838 135, 136, 137, 138, -1, -1, -1, -1, -1, 144,
4839 145, 146, 0, -1, 149, 150, 151, -1, 153, -1,
4840 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
4841 -1, -1, -1, -1, -1, -1, -1, 25, 26, 27,
4842 28, -1, -1, -1, -1, -1, -1, -1, -1, 37,
4843 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
4844 -1, -1, -1, -1, -1, -1, -1, 77, 78, 79,
4845 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
4846 68, -1, -1, -1, 94, 95, -1, -1, -1, 77,
4847 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
4848 88, 89, -1, -1, -1, -1, 94, 95, 96, 97,
4849 -1, -1, 100, -1, -1, -1, -1, -1, 106, 129,
4850 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4851 -1, -1, 120, -1, -1, -1, -1, -1, -1, 127,
4852 -1, 129, 130, 131, 132, 133, 134, 135, 136, 137,
4853 138, -1, -1, -1, -1, 143, 144, 145, 146, 0,
4854 148, 149, 150, 151, -1, 153, -1, 8, 9, 10,
4855 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
4856 -1, -1, -1, -1, 25, -1, 27, 28, 29, -1,
4857 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
4858 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
4859 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
4860 83, -1, -1, 86, 87, -1, -1, 68, -1, -1,
4861 -1, 94, 95, -1, -1, -1, 77, 78, 79, 80,
4862 81, 82, 83, 84, 85, 86, 87, 88, 89, -1,
4863 -1, -1, -1, 94, 95, 96, 97, -1, -1, 100,
4864 -1, -1, -1, -1, -1, 106, 129, 130, 131, 132,
4865 133, 134, 135, 136, 137, 138, -1, -1, -1, 120,
4866 -1, -1, 123, -1, -1, -1, 127, 128, 129, 130,
4867 131, 132, 133, 134, 135, 136, 137, 138, -1, -1,
4868 -1, -1, -1, 144, 145, 146, 0, -1, 149, 150,
4869 151, -1, 153, -1, 8, 9, 10, -1, -1, 13,
4870 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
4871 -1, 25, 26, 27, 28, -1, -1, -1, -1, -1,
4872 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
4873 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4874 -1, 77, 78, 79, 80, 81, 82, 83, -1, -1,
4875 86, 87, -1, -1, 68, -1, -1, -1, 94, 95,
4876 -1, -1, -1, 77, 78, 79, 80, 81, 82, 83,
4877 84, 85, 86, 87, 88, 89, -1, -1, -1, -1,
4878 94, 95, 96, 97, -1, -1, 100, -1, -1, -1,
4879 -1, -1, 106, 129, 130, 131, 132, 133, 134, 135,
4880 136, 137, 138, -1, -1, -1, 120, -1, -1, -1,
4881 -1, -1, -1, 127, -1, 129, 130, 131, 132, 133,
4882 134, 135, 136, 137, 138, -1, -1, -1, -1, 143,
4883 144, 145, 146, 0, 148, 149, 150, 151, -1, 153,
4884 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
4885 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
4886 27, 28, -1, -1, -1, -1, -1, -1, -1, -1,
4887 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
4888 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4889 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4890 -1, 68, -1, -1, -1, -1, -1, -1, -1, -1,
4891 77, 78, 79, 80, 81, 82, 83, 84, 85, 86,
4892 87, 88, 89, -1, -1, -1, -1, 94, 95, 96,
4893 97, -1, -1, 100, -1, -1, -1, -1, -1, 106,
4894 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4895 -1, -1, -1, 120, -1, -1, -1, -1, -1, -1,
4896 127, -1, 129, 130, 131, 132, 133, 134, 135, 136,
4897 137, 138, -1, -1, -1, -1, -1, 144, 145, 146,
4898 0, 148, 149, 150, 151, -1, 153, -1, 8, 9,
4899 10, -1, -1, -1, 14, 15, -1, 17, -1, -1,
4900 -1, -1, -1, -1, -1, 25, 26, -1, -1, -1,
4901 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
4902 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
4903 -1, -1, 77, 78, 79, 80, 81, 82, 83, 84,
4904 85, 86, 87, 88, 89, -1, -1, -1, 68, 94,
4905 95, -1, -1, -1, -1, -1, -1, 77, 78, 79,
4906 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
4907 -1, -1, -1, -1, 94, 95, 96, 97, -1, 99,
4908 100, -1, 127, -1, 129, 130, 131, 132, 133, 134,
4909 135, 136, 137, 138, -1, -1, -1, -1, -1, -1,
4910 120, -1, -1, -1, -1, -1, 126, 127, 153, 129,
4911 130, 131, 132, 133, 134, 135, 136, 137, 138, -1,
4912 -1, -1, -1, 143, 144, 145, 146, 0, -1, 149,
4913 -1, 151, -1, 153, -1, 8, 9, 10, -1, -1,
4914 -1, 14, 15, -1, 17, -1, -1, -1, -1, -1,
4915 -1, -1, 25, 26, -1, -1, -1, -1, -1, -1,
4916 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
4917 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
4918 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4919 -1, -1, -1, -1, -1, 68, -1, -1, -1, -1,
4920 -1, -1, -1, -1, 77, 78, 79, 80, 81, 82,
4921 83, 84, 85, 86, 87, 88, 89, -1, -1, -1,
4922 -1, 94, 95, 96, 97, -1, 99, 100, -1, -1,
4923 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4924 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
4925 -1, -1, -1, 126, 127, -1, 129, 130, 131, 132,
4926 133, 134, 135, 136, 137, 138, -1, -1, -1, -1,
4927 143, 144, 145, 146, 0, -1, 149, -1, 151, -1,
4928 153, -1, 8, 9, 10, -1, -1, -1, 14, 15,
4929 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
4930 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4931 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
4932 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4933 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4934 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
4935 -1, 77, 78, 79, 80, 81, 82, 83, 84, 85,
4936 86, 87, 88, 89, -1, -1, -1, -1, 94, 95,
4937 96, 97, -1, 99, 100, -1, -1, -1, -1, -1,
4938 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4939 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
4940 126, 127, -1, 129, 130, 131, 132, 133, 134, 135,
4941 136, 137, 138, -1, -1, -1, -1, -1, 144, 145,
4942 146, 0, -1, 149, -1, 151, -1, 153, -1, 8,
4943 9, 10, -1, -1, -1, 14, 15, -1, 17, -1,
4944 -1, -1, -1, -1, -1, -1, 25, -1, -1, -1,
4945 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
4946 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
4947 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4948 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
4949 -1, -1, -1, -1, -1, -1, -1, -1, 77, 78,
4950 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
4951 89, -1, -1, -1, -1, 94, 95, 96, 97, -1,
4952 99, 100, -1, -1, -1, -1, -1, -1, -1, -1,
4953 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4954 -1, 120, -1, -1, -1, -1, -1, 126, 127, -1,
4955 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
4956 -1, -1, -1, -1, -1, 144, 145, 146, -1, -1,
4957 149, -1, 151, 1, 153, 3, 4, 5, 6, 7,
4958 8, 9, 10, 11, 12, -1, -1, 15, 16, -1,
4959 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
4960 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
4961 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
4962 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
4963 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
4964 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
4965 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4966 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
4967 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
4968 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
4969 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4970 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4971 -1, 139, 140, 141, -1, -1, -1, -1, -1, -1,
4972 -1, -1, -1, 151, 1, 153, 3, 4, 5, 6,
4973 7, -1, -1, 10, 11, 12, -1, 14, 15, 16,
4974 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
4975 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
4976 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
4977 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
4978 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
4979 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
4980 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4981 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
4982 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
4983 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
4984 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
4985 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4986 -1, -1, 139, 140, 141, -1, -1, -1, -1, -1,
4987 -1, -1, -1, -1, 151, 1, 153, 3, 4, 5,
4988 6, 7, -1, -1, 10, 11, 12, -1, -1, 15,
4989 16, 17, 18, 19, 20, 21, 22, 23, 24, -1,
4990 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
4991 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
4992 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
4993 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
4994 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
4995 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
4996 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
4997 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
4998 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
4999 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
5000 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5001 -1, -1, -1, 139, 140, 141, -1, -1, -1, -1,
5002 -1, -1, -1, -1, -1, 151, 1, 153, 3, 4,
5003 5, 6, 7, -1, -1, 10, 11, 12, -1, -1,
5004 15, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5005 25, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5006 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5007 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
5008 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5009 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5010 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5011 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5012 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5013 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
5014 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5015 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5016 -1, -1, -1, -1, 139, 140, 141, -1, -1, -1,
5017 -1, -1, -1, -1, -1, -1, 151, 1, 153, 3,
5018 4, 5, 6, 7, -1, -1, 10, 11, 12, -1,
5019 -1, 15, 16, -1, 18, 19, 20, 21, 22, 23,
5020 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
5021 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
5022 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
5023 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5024 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
5025 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
5026 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
5027 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
5028 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
5029 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
5030 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
5031 -1, 9, 10, 11, 12, 139, 140, 141, 16, -1,
5032 18, 19, 20, 21, 22, 23, 24, 151, -1, 153,
5033 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5034 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5035 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5036 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5037 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
5038 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5039 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
5040 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
5041 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
5042 118, -1, -1, -1, -1, -1, -1, -1, -1, 1,
5043 -1, 3, 4, 5, 6, 7, -1, -1, -1, 11,
5044 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
5045 22, 23, 24, 151, -1, 153, -1, -1, 30, 31,
5046 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
5047 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5048 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5049 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
5050 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
5051 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
5052 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
5053 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
5054 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
5055 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5056 -1, -1, -1, -1, -1, -1, -1, 139, 140, 141,
5057 -1, -1, -1, -1, -1, -1, -1, 149, -1, 151,
5058 1, 153, 3, 4, 5, 6, 7, -1, -1, -1,
5059 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
5060 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5061 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5062 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
5063 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5064 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5065 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5066 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5067 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5068 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
5069 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5070 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5071 -1, -1, -1, -1, -1, -1, -1, -1, 139, 140,
5072 141, -1, -1, -1, -1, -1, -1, -1, 149, -1,
5073 151, 1, 153, 3, 4, 5, 6, 7, -1, -1,
5074 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
5075 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
5076 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
5077 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
5078 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5079 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
5080 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
5081 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5082 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
5083 -1, 101, 102, -1, 104, 105, -1, 107, -1, -1,
5084 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
5085 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5086 -1, -1, -1, -1, -1, -1, -1, -1, -1, 139,
5087 140, 141, -1, -1, 144, -1, -1, -1, -1, -1,
5088 -1, 151, 1, 153, 3, 4, 5, 6, 7, -1,
5089 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
5090 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5091 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5092 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
5093 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5094 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5095 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5096 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5097 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5098 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
5099 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5100 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5101 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5102 139, 140, 141, -1, -1, 144, -1, -1, -1, -1,
5103 -1, -1, 151, 1, 153, 3, 4, 5, 6, 7,
5104 -1, -1, 10, 11, 12, -1, -1, -1, 16, -1,
5105 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5106 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5107 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5108 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5109 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5110 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
5111 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5112 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
5113 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
5114 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
5115 118, -1, -1, -1, -1, -1, -1, -1, -1, 1,
5116 -1, 3, 4, 5, 6, 7, -1, -1, -1, 11,
5117 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
5118 22, 23, 24, 151, -1, 153, -1, -1, 30, 31,
5119 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
5120 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5121 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5122 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
5123 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
5124 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
5125 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
5126 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
5127 112, 113, 114, 115, 116, 117, 118, -1, 120, -1,
5128 -1, -1, -1, -1, -1, -1, -1, 3, 4, 5,
5129 -1, 7, -1, -1, -1, 11, 12, 139, 140, 141,
5130 16, -1, 18, 19, 20, 21, 22, 23, 24, 151,
5131 -1, 153, -1, -1, 30, 31, 32, 33, 34, 35,
5132 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
5133 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
5134 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5135 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5136 76, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5137 -1, -1, -1, -1, 90, 91, -1, -1, -1, -1,
5138 -1, -1, 98, -1, -1, 101, 102, -1, 104, 105,
5139 -1, 107, 108, 109, 110, 111, 112, 113, 114, 115,
5140 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
5141 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
5142 -1, 11, 12, 139, 140, 141, 16, -1, 18, 19,
5143 20, 21, 22, 23, 24, -1, -1, 153, -1, -1,
5144 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
5145 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
5146 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5147 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
5148 -1, -1, -1, -1, -1, 75, 76, -1, -1, -1,
5149 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5150 90, 91, -1, -1, -1, -1, -1, -1, 98, -1,
5151 -1, 101, 102, -1, 104, 105, -1, -1, -1, -1,
5152 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
5153 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
5154 4, 5, -1, 7, -1, -1, -1, 11, 12, 139,
5155 140, 141, 16, -1, 18, 19, 20, 21, 22, 23,
5156 24, 151, -1, 153, -1, -1, 30, 31, 32, 33,
5157 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
5158 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
5159 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5160 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
5161 -1, 75, 76, -1, -1, -1, -1, -1, -1, -1,
5162 -1, -1, -1, -1, -1, -1, 90, 91, -1, -1,
5163 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
5164 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
5165 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
5166 -1, -1, -1, -1, -1, 3, 4, 5, 6, 7,
5167 -1, -1, -1, 11, 12, 139, 140, 141, 16, -1,
5168 18, 19, 20, 21, 22, 23, 24, -1, -1, 153,
5169 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5170 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5171 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5172 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5173 -1, -1, -1, -1, -1, -1, -1, 75, 76, -1,
5174 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5175 -1, -1, 90, 91, -1, -1, -1, -1, -1, -1,
5176 98, -1, -1, 101, 102, -1, 104, 105, -1, 107,
5177 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
5178 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5179 -1, 3, 4, 5, 6, 7, -1, -1, -1, 11,
5180 12, 139, 140, 141, 16, -1, 18, 19, 20, 21,
5181 22, 23, 24, 151, -1, -1, -1, -1, 30, 31,
5182 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
5183 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5184 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5185 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
5186 -1, -1, -1, 75, 76, -1, -1, -1, -1, -1,
5187 -1, -1, -1, -1, -1, -1, -1, -1, 90, 91,
5188 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
5189 102, -1, 104, 105, -1, 107, -1, -1, 110, 111,
5190 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
5191 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5192 -1, -1, -1, -1, -1, -1, -1, 139, 140, 141,
5193 -1, -1, -1, -1, -1, -1, -1, -1, -1, 151,
5194 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
5195 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
5196 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
5197 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
5198 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
5199 53, 54, 55, 56, 57, -1, -1, -1, -1, -1,
5200 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5201 -1, -1, 75, 76, 77, 78, 79, 80, 81, 82,
5202 83, -1, -1, 86, 87, -1, -1, -1, -1, 92,
5203 93, 94, 95, -1, -1, -1, -1, -1, -1, -1,
5204 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
5205 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5206 -1, -1, -1, -1, -1, -1, 129, 130, 131, 132,
5207 133, 134, 135, 136, 137, 138, -1, 140, 141, -1,
5208 -1, -1, -1, -1, 147, 148, 3, 4, 5, 6,
5209 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
5210 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
5211 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5212 37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
5213 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
5214 57, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5215 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5216 77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
5217 87, -1, -1, -1, -1, 92, 93, 94, 95, -1,
5218 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5219 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
5220 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5221 -1, -1, 129, 130, 131, 132, 133, 134, 135, 136,
5222 137, 138, -1, 140, 141, -1, -1, -1, -1, -1,
5223 147, 3, 4, 5, 6, 7, 8, 9, 10, 11,
5224 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
5225 22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
5226 32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
5227 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5228 52, 53, 54, -1, 56, -1, -1, -1, -1, -1,
5229 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5230 -1, -1, -1, 75, 76, 77, 78, 79, 80, 81,
5231 82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
5232 92, 93, 94, 95, -1, -1, -1, -1, -1, -1,
5233 -1, -1, -1, -1, -1, 107, 108, -1, -1, 111,
5234 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5235 -1, -1, -1, -1, -1, -1, -1, 129, 130, 131,
5236 132, 133, 134, 135, 136, 137, 138, -1, 140, 141,
5237 -1, -1, -1, -1, -1, 147, 3, 4, 5, 6,
5238 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
5239 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
5240 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5241 37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
5242 47, 48, 49, 50, 51, 52, 53, -1, -1, 56,
5243 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5244 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5245 77, 78, 79, 80, 81, 82, 83, -1, -1, 86,
5246 87, -1, -1, -1, -1, 92, 93, 94, 95, -1,
5247 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5248 107, 108, -1, -1, 111, -1, -1, -1, -1, -1,
5249 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5250 -1, -1, 129, 130, 131, 132, 133, 134, 135, 136,
5251 137, 138, -1, 140, 141, -1, -1, -1, -1, -1,
5252 147, 3, 4, 5, 6, 7, 8, 9, 10, 11,
5253 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
5254 22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
5255 32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
5256 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5257 52, 53, -1, -1, 56, -1, -1, -1, -1, -1,
5258 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5259 -1, -1, -1, 75, 76, 77, 78, 79, 80, 81,
5260 82, 83, -1, -1, 86, 87, -1, -1, -1, -1,
5261 92, 93, 94, 95, -1, -1, -1, -1, -1, -1,
5262 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
5263 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5264 -1, -1, -1, -1, -1, -1, -1, 129, 130, 131,
5265 132, 133, 134, 135, 136, 137, 138, -1, 140, 141,
5266 3, 4, 5, -1, 7, 147, -1, -1, 11, 12,
5267 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
5268 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5269 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5270 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5271 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5272 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5273 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5274 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5275 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5276 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
5277 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5278 -1, -1, -1, -1, -1, -1, -1, -1, -1, 3,
5279 4, 5, -1, 7, -1, -1, 139, 11, 12, -1,
5280 -1, -1, 16, 146, 18, 19, 20, 21, 22, 23,
5281 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
5282 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
5283 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
5284 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5285 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
5286 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5287 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5288 -1, -1, -1, -1, 98, -1, -1, 101, 102, -1,
5289 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
5290 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
5291 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5292 5, 6, 7, -1, -1, 139, 11, 12, -1, -1,
5293 -1, 16, 146, 18, 19, 20, 21, 22, 23, 24,
5294 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5295 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5296 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
5297 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5298 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5299 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5300 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5301 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5302 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
5303 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5304 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5305 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5306 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5307 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5308 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5309 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
5310 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5311 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5312 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5313 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5314 -1, -1, 101, 102, -1, 104, 105, -1, 107, 108,
5315 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5316 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5317 3, 4, 5, 6, 7, -1, -1, -1, 11, 12,
5318 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5319 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5320 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5321 -1, -1, 45, 46, -1, 48, 49, 50, 51, 52,
5322 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5323 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5324 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5325 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5326 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5327 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
5328 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5329 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5330 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5331 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5332 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5333 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5334 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5335 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
5336 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5337 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5338 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5339 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5340 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
5341 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5342 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5343 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5344 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5345 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5346 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5347 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
5348 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5349 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5350 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5351 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5352 101, 102, -1, 104, 105, -1, 107, 108, 109, 110,
5353 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5354 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5355 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5356 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5357 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5358 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5359 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5360 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
5361 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5362 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5363 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5364 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5365 105, -1, 107, 108, 109, 110, 111, 112, 113, 114,
5366 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5367 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5368 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5369 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5370 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5371 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5372 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
5373 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5374 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5375 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5376 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5377 -1, -1, 101, 102, -1, 104, 105, -1, 107, 108,
5378 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5379 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5380 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5381 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5382 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5383 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5384 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5385 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
5386 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5387 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5388 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5389 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5390 -1, 104, 105, -1, -1, 108, 109, 110, 111, 112,
5391 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5392 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5393 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5394 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5395 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5396 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5397 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5398 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
5399 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5400 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5401 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5402 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5403 107, 108, -1, 110, 111, 112, 113, 114, 115, 116,
5404 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5405 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5406 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5407 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5408 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5409 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5410 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
5411 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5412 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5413 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5414 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5415 101, 102, -1, 104, 105, -1, -1, 108, -1, 110,
5416 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5417 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5418 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5419 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5420 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5421 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5422 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5423 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5424 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5425 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5426 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5427 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5428 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
5429 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5430 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5431 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5432 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5433 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5434 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5435 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5436 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5437 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5438 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5439 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5440 -1, -1, 101, 102, -1, 104, 105, -1, 107, -1,
5441 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5442 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5443 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5444 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5445 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5446 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5447 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5448 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5449 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5450 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5451 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5452 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5453 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
5454 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5455 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5456 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5457 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5458 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5459 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5460 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5461 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5462 -1, -1, -1, -1, -1, -1, -1, -1, 75, 76,
5463 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5464 -1, -1, -1, 90, 91, -1, -1, -1, -1, -1,
5465 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5466 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5467 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5468 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5469 11, 12, 139, 140, 141, 16, -1, 18, 19, 20,
5470 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5471 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5472 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5473 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5474 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5475 -1, -1, -1, -1, 75, 76, -1, -1, -1, -1,
5476 -1, -1, -1, -1, -1, -1, -1, -1, -1, 90,
5477 91, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5478 101, 102, -1, 104, 105, -1, 107, -1, -1, 110,
5479 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5480 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
5481 5, -1, 7, -1, -1, -1, 11, 12, 139, 140,
5482 141, 16, -1, 18, 19, 20, 21, 22, 23, 24,
5483 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5484 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5485 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5486 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5487 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5488 75, 76, -1, -1, -1, -1, -1, -1, -1, -1,
5489 -1, -1, -1, -1, -1, 90, 91, -1, -1, -1,
5490 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5491 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
5492 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5493 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5494 -1, -1, 11, 12, 139, 140, 141, 16, -1, 18,
5495 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5496 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5497 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5498 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5499 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5500 -1, -1, -1, -1, -1, -1, 75, 76, -1, -1,
5501 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5502 -1, 90, 91, -1, -1, -1, -1, -1, -1, 98,
5503 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
5504 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5505 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5506 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5507 139, 140, 141, 16, -1, 18, 19, 20, 21, 22,
5508 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5509 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5510 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5511 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5512 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5513 -1, -1, 75, 76, -1, -1, -1, -1, -1, -1,
5514 -1, -1, -1, -1, -1, -1, -1, 90, 91, -1,
5515 -1, -1, -1, -1, -1, 98, -1, -1, 101, 102,
5516 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
5517 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5518 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5519 7, -1, -1, -1, 11, 12, 139, 140, 141, 16,
5520 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5521 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5522 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5523 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5524 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5525 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5526 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5527 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5528 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5529 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5530 117, 118, -1, -1, -1, -1, -1, -1, 3, 4,
5531 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5532 -1, 16, 139, 18, 19, 20, 21, 22, 23, 24,
5533 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5534 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5535 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5536 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5537 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5538 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5539 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5540 -1, -1, -1, 98, -1, -1, 101, 102, -1, 104,
5541 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
5542 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
5543 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
5544 -1, -1, -1, 16, 139, 18, 19, 20, 21, 22,
5545 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5546 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5547 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5548 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5549 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
5550 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5551 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5552 -1, 94, -1, -1, -1, 98, -1, -1, 101, 102,
5553 -1, 104, 105, -1, -1, -1, -1, 110, 111, 112,
5554 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
5555 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
5556 11, 12, -1, -1, -1, 16, 139, 18, 19, 20,
5557 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5558 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5559 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
5560 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5561 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5562 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5563 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5564 -1, -1, -1, -1, -1, -1, -1, 98, -1, -1,
5565 101, 102, -1, 104, 105, -1, -1, -1, -1, 110,
5566 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
5567 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5568 -1, -1, 11, 12, -1, -1, -1, 16, 139, 18,
5569 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
5570 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5571 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
5572 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5573 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5574 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5575 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5576 -1, -1, -1, -1, -1, -1, -1, -1, -1, 98,
5577 -1, -1, 101, 102, -1, 104, 105, -1, -1, -1,
5578 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
5579 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
5580 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
5581 139, 18, 19, 20, 21, 22, 23, 24, -1, -1,
5582 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
5583 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
5584 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
5585 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
5586 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5587 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5588 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5589 -1, 98, -1, -1, 101, 102, -1, 104, 105, -1,
5590 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
5591 117, 118, -1, -1, -1, -1, -1, -1, 3, 4,
5592 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
5593 -1, 16, 139, 18, 19, 20, 21, 22, 23, 24,
5594 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
5595 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
5596 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
5597 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
5598 65, 33, 34, 35, 36, -1, -1, -1, -1, -1,
5599 -1, -1, -1, -1, -1, -1, -1, 49, 50, 51,
5600 52, -1, -1, -1, 56, -1, -1, 59, 60, 61,
5601 62, 63, -1, 98, -1, -1, 101, 102, -1, 104,
5602 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
5603 115, 116, 117, 118, -1, -1, -1, -1, 90, 91,
5604 -1, -1, -1, -1, -1, -1, 98, -1, -1, 101,
5605 -1, -1, 104, 105, 139, 107, -1, -1, 110, 111,
5606 112, 113, 114, 115, 116, 117, 118, 33, 34, 35,
5607 36, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5608 132, -1, -1, 49, 50, 51, 52, 139, -1, -1,
5609 56, -1, -1, 59, 60, 61, 62, 63, -1, -1,
5610 33, 34, 35, 36, -1, -1, -1, -1, -1, -1,
5611 -1, -1, -1, -1, -1, -1, 49, 50, 51, 52,
5612 -1, -1, -1, 56, 90, 91, 59, 60, 61, 62,
5613 63, -1, 98, -1, -1, 101, -1, -1, 104, 105,
5614 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
5615 116, 117, 118, -1, -1, -1, -1, 90, 91, -1,
5616 -1, -1, -1, -1, -1, 98, 132, -1, 101, -1,
5617 -1, 104, 105, 139, -1, -1, -1, 110, 111, 112,
5618 113, 114, 115, 116, 117, 118, 52, 53, -1, -1,
5619 56, -1, -1, -1, -1, -1, -1, -1, -1, 132,
5620 -1, -1, -1, -1, -1, -1, 139, -1, -1, 75,
5621 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5622 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5623 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5624 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5625 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5626 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5627 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5628 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5629 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5630 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5631 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5632 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5633 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5634 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5635 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5636 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5637 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5638 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5639 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5640 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5641 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5642 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5643 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5644 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5645 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5646 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5647 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5648 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5649 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5650 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5651 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5652 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5653 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5654 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5655 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5656 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5657 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5658 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5659 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5660 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5661 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5662 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5663 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5664 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5665 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5666 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5667 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5668 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5669 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5670 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5671 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5672 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5673 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5674 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5675 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5676 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5677 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5678 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5679 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5680 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5681 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5682 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5683 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5684 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5685 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5686 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5687 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5688 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5689 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5690 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5691 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5692 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5693 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5694 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5695 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5696 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5697 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5698 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5699 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5700 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5701 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5702 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5703 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5704 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5705 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5706 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5707 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5708 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5709 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5710 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5711 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5712 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5713 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5714 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5715 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5716 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5717 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5718 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5719 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5720 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5721 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5722 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5723 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5724 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5725 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5726 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5727 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5728 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5729 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5730 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5731 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5732 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5733 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5734 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5735 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5736 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5737 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5738 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5739 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5740 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5741 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5742 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5743 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5744 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5745 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5746 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5747 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5748 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5749 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5750 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5751 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5752 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5753 136, 137, 138, -1, 140, 141, 52, 53, -1, -1,
5754 56, 147, 148, -1, -1, -1, -1, -1, -1, -1,
5755 -1, -1, -1, -1, -1, -1, -1, -1, -1, 75,
5756 76, 77, 78, 79, 80, 81, 82, 83, -1, -1,
5757 86, 87, -1, -1, -1, -1, 92, 93, 94, 95,
5758 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5759 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
5760 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5761 -1, -1, -1, 129, 130, 131, 132, 133, 134, 135,
5762 136, 137, 138, -1, 140, 141, -1, -1, -1, -1,
5768static const yytype_int16 yystos[] =
5770 0, 155, 156, 0, 1, 3, 4, 5, 6, 7,
5771 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
5772 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
5773 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
5774 57, 59, 60, 61, 62, 63, 64, 65, 75, 76,
5775 90, 91, 98, 101, 102, 104, 105, 107, 110, 111,
5776 112, 113, 114, 115, 116, 117, 118, 139, 140, 141,
5777 157, 158, 159, 167, 169, 171, 177, 178, 184, 185,
5778 187, 188, 189, 191, 192, 193, 195, 196, 205, 208,
5779 224, 234, 235, 236, 237, 238, 239, 240, 241, 242,
5780 243, 244, 253, 275, 283, 284, 336, 337, 338, 339,
5781 340, 341, 342, 345, 347, 348, 362, 363, 365, 366,
5782 367, 369, 370, 371, 372, 373, 411, 425, 159, 3,
5783 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
5784 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
5785 24, 25, 26, 30, 31, 32, 33, 34, 35, 36,
5786 37, 38, 39, 45, 46, 47, 48, 49, 50, 51,
5787 52, 53, 56, 75, 76, 77, 78, 79, 80, 81,
5788 82, 83, 86, 87, 92, 93, 94, 95, 107, 108,
5789 129, 130, 131, 132, 133, 134, 135, 136, 137, 138,
5790 140, 141, 147, 199, 200, 201, 203, 204, 362, 39,
5791 58, 98, 101, 107, 108, 109, 112, 140, 177, 178,
5792 188, 196, 205, 210, 216, 219, 221, 234, 369, 370,
5793 372, 373, 409, 410, 216, 148, 217, 218, 148, 213,
5794 217, 148, 153, 418, 54, 200, 418, 143, 160, 143,
5795 21, 22, 31, 32, 187, 205, 234, 253, 205, 205,
5796 205, 56, 1, 47, 101, 163, 164, 165, 167, 190,
5797 191, 425, 167, 226, 211, 221, 409, 425, 210, 408,
5798 409, 425, 46, 98, 139, 146, 177, 178, 195, 224,
5799 234, 369, 370, 373, 276, 54, 55, 57, 199, 351,
5800 364, 351, 352, 353, 152, 152, 152, 152, 367, 184,
5801 205, 205, 151, 153, 417, 423, 424, 40, 41, 42,
5802 43, 44, 37, 38, 148, 376, 377, 378, 379, 425,
5803 376, 378, 26, 143, 213, 217, 245, 285, 28, 246,
5804 282, 126, 146, 101, 107, 192, 126, 25, 77, 78,
5805 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
5806 89, 94, 95, 100, 127, 129, 130, 131, 132, 133,
5807 134, 135, 136, 137, 138, 207, 207, 68, 96, 97,
5808 145, 415, 225, 171, 180, 180, 181, 182, 181, 180,
5809 417, 424, 98, 189, 196, 234, 258, 369, 370, 373,
5810 52, 56, 94, 98, 197, 198, 234, 369, 370, 373,
5811 198, 33, 34, 35, 36, 49, 50, 51, 52, 56,
5812 148, 176, 199, 371, 406, 216, 97, 415, 416, 285,
5813 339, 99, 99, 146, 210, 56, 210, 210, 210, 351,
5814 376, 376, 126, 100, 146, 220, 425, 97, 145, 415,
5815 99, 99, 146, 220, 216, 418, 419, 216, 91, 215,
5816 216, 221, 383, 409, 425, 171, 419, 171, 54, 64,
5817 65, 168, 148, 206, 157, 163, 97, 415, 99, 167,
5818 166, 190, 149, 417, 424, 419, 227, 419, 150, 146,
5819 153, 422, 146, 422, 144, 422, 418, 56, 367, 192,
5820 194, 377, 146, 97, 145, 415, 277, 66, 119, 121,
5821 122, 354, 119, 119, 354, 67, 354, 343, 349, 346,
5822 350, 77, 151, 159, 180, 180, 180, 180, 167, 171,
5823 171, 52, 54, 55, 56, 57, 58, 77, 91, 101,
5824 107, 108, 109, 133, 136, 263, 380, 382, 383, 384,
5825 385, 386, 387, 388, 389, 390, 393, 394, 395, 396,
5826 397, 400, 401, 402, 403, 404, 126, 161, 163, 382,
5827 126, 161, 286, 287, 106, 186, 290, 291, 290, 70,
5828 209, 425, 190, 146, 195, 146, 209, 174, 205, 205,
5829 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
5830 205, 172, 205, 205, 205, 205, 205, 205, 205, 205,
5831 205, 205, 205, 52, 53, 56, 203, 213, 412, 413,
5832 215, 221, 52, 53, 56, 203, 213, 412, 161, 13,
5833 254, 423, 254, 163, 180, 163, 417, 230, 56, 97,
5834 145, 415, 25, 171, 52, 56, 197, 130, 374, 97,
5835 145, 415, 233, 407, 68, 97, 414, 52, 56, 412,
5836 209, 209, 202, 124, 126, 126, 209, 210, 107, 210,
5837 219, 409, 52, 56, 215, 52, 56, 209, 209, 410,
5838 419, 149, 419, 146, 419, 146, 419, 200, 228, 205,
5839 144, 144, 412, 412, 209, 160, 419, 165, 419, 409,
5840 146, 194, 52, 56, 215, 52, 56, 278, 356, 355,
5841 119, 344, 354, 66, 119, 119, 344, 66, 119, 205,
5842 101, 107, 259, 260, 261, 262, 385, 146, 405, 425,
5843 419, 264, 265, 146, 381, 210, 146, 405, 34, 52,
5844 146, 381, 52, 146, 381, 52, 188, 205, 10, 252,
5845 8, 247, 332, 425, 423, 188, 205, 252, 144, 288,
5846 286, 252, 292, 252, 107, 184, 210, 221, 222, 223,
5847 419, 194, 146, 169, 170, 184, 196, 205, 210, 212,
5848 223, 234, 373, 175, 173, 418, 99, 99, 213, 217,
5849 418, 420, 146, 99, 99, 213, 214, 217, 425, 252,
5850 163, 13, 163, 252, 27, 255, 423, 252, 25, 229,
5851 297, 17, 249, 295, 52, 56, 215, 52, 56, 181,
5852 232, 375, 231, 52, 56, 197, 215, 161, 171, 179,
5853 214, 217, 170, 205, 212, 170, 212, 200, 210, 210,
5854 220, 99, 99, 420, 99, 99, 383, 409, 171, 212,
5855 422, 192, 420, 148, 280, 382, 357, 54, 55, 57,
5856 361, 373, 152, 354, 152, 152, 152, 261, 385, 146,
5857 419, 146, 404, 210, 126, 380, 387, 400, 402, 390,
5858 394, 396, 388, 397, 402, 386, 388, 44, 44, 210,
5859 223, 333, 425, 9, 15, 248, 250, 335, 425, 44,
5860 44, 289, 144, 293, 210, 146, 44, 194, 44, 126,
5861 44, 97, 145, 415, 52, 56, 58, 90, 91, 98,
5862 101, 104, 105, 107, 112, 132, 275, 303, 304, 305,
5863 306, 309, 314, 315, 316, 319, 320, 321, 322, 323,
5864 324, 325, 326, 327, 328, 329, 330, 331, 336, 337,
5865 340, 341, 342, 345, 347, 348, 370, 394, 303, 128,
5866 209, 209, 186, 150, 99, 209, 209, 186, 14, 250,
5867 251, 256, 257, 425, 257, 183, 298, 295, 252, 107,
5868 210, 294, 252, 420, 163, 423, 180, 161, 420, 252,
5869 419, 176, 285, 282, 209, 209, 99, 209, 209, 419,
5870 146, 419, 382, 279, 358, 419, 259, 262, 260, 146,
5871 381, 146, 381, 405, 146, 381, 146, 381, 381, 205,
5872 205, 100, 334, 425, 163, 162, 205, 205, 131, 270,
5873 271, 425, 270, 107, 210, 167, 167, 209, 205, 52,
5874 56, 215, 52, 56, 327, 327, 56, 197, 311, 304,
5875 312, 313, 314, 315, 318, 420, 310, 418, 421, 52,
5876 351, 52, 54, 55, 57, 101, 368, 100, 146, 131,
5877 146, 146, 304, 88, 89, 97, 145, 148, 307, 308,
5878 34, 52, 205, 170, 212, 170, 212, 209, 170, 212,
5879 170, 212, 163, 180, 252, 252, 299, 252, 210, 146,
5880 254, 252, 161, 423, 252, 209, 272, 418, 29, 123,
5881 281, 359, 146, 146, 388, 402, 388, 388, 98, 196,
5882 234, 369, 370, 373, 254, 163, 263, 266, 269, 272,
5883 386, 388, 389, 391, 392, 398, 399, 402, 404, 163,
5884 161, 210, 420, 304, 420, 107, 304, 318, 420, 146,
5885 112, 319, 144, 124, 180, 328, 312, 316, 309, 317,
5886 318, 321, 325, 327, 327, 197, 420, 419, 312, 315,
5887 319, 312, 315, 319, 170, 212, 254, 302, 303, 107,
5888 210, 163, 252, 149, 151, 161, 163, 360, 260, 381,
5889 146, 381, 381, 381, 56, 97, 145, 415, 163, 335,
5890 405, 272, 131, 264, 146, 267, 268, 98, 234, 146,
5891 405, 146, 267, 146, 267, 419, 52, 146, 146, 351,
5892 421, 149, 146, 146, 419, 419, 419, 420, 420, 420,
5893 163, 254, 40, 41, 210, 257, 295, 296, 52, 273,
5894 274, 384, 252, 144, 163, 388, 52, 56, 215, 52,
5895 56, 332, 131, 234, 266, 399, 402, 56, 97, 391,
5896 396, 388, 398, 402, 388, 146, 317, 317, 316, 318,
5897 256, 300, 180, 180, 146, 418, 120, 381, 420, 146,
5898 267, 146, 267, 52, 56, 405, 146, 267, 146, 267,
5899 267, 317, 146, 163, 274, 388, 402, 388, 388, 257,
5900 297, 301, 267, 146, 267, 267, 267, 388, 267
5904static const yytype_int16 yyr1[] =
5906 0, 154, 156, 155, 157, 158, 158, 158, 158, 159,
5907 159, 160, 162, 161, 161, 163, 164, 164, 164, 164,
5908 165, 166, 165, 168, 167, 167, 167, 167, 167, 167,
5909 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
5910 167, 169, 169, 169, 169, 169, 169, 169, 169, 169,
5911 169, 169, 169, 170, 170, 170, 171, 171, 171, 171,
5912 171, 172, 173, 171, 174, 175, 171, 171, 176, 177,
5913 179, 178, 180, 182, 183, 181, 184, 184, 185, 185,
5914 186, 187, 188, 188, 188, 188, 188, 188, 188, 188,
5915 188, 188, 188, 189, 189, 190, 190, 191, 191, 191,
5916 191, 191, 191, 191, 191, 191, 191, 192, 192, 193,
5917 193, 194, 194, 195, 195, 195, 195, 195, 195, 195,
5918 195, 195, 196, 196, 196, 196, 196, 196, 196, 196,
5919 196, 197, 197, 198, 198, 198, 199, 199, 199, 199,
5920 199, 200, 200, 201, 202, 201, 203, 203, 203, 203,
5921 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
5922 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
5923 203, 203, 203, 203, 203, 203, 204, 204, 204, 204,
5924 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
5925 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
5926 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
5927 204, 204, 204, 204, 204, 204, 204, 205, 205, 205,
5928 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
5929 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
5930 205, 205, 205, 205, 205, 205, 205, 205, 205, 205,
5931 205, 205, 205, 205, 205, 205, 205, 206, 205, 205,
5932 205, 205, 205, 205, 205, 207, 207, 207, 207, 208,
5933 208, 209, 209, 210, 211, 211, 211, 211, 212, 212,
5934 213, 213, 213, 214, 214, 215, 215, 215, 215, 215,
5935 216, 216, 216, 216, 216, 218, 217, 219, 219, 220,
5936 220, 221, 221, 221, 221, 222, 222, 223, 223, 223,
5937 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
5938 224, 225, 224, 226, 224, 227, 224, 224, 224, 224,
5939 224, 224, 224, 224, 224, 224, 228, 224, 224, 224,
5940 224, 224, 224, 224, 224, 224, 224, 224, 229, 224,
5941 230, 224, 224, 224, 231, 224, 232, 224, 233, 224,
5942 224, 224, 224, 224, 224, 224, 234, 235, 236, 237,
5943 238, 239, 240, 241, 242, 243, 244, 245, 246, 247,
5944 248, 249, 250, 251, 252, 253, 254, 254, 254, 255,
5945 255, 256, 256, 257, 257, 258, 258, 259, 259, 260,
5946 260, 261, 261, 261, 261, 261, 262, 262, 263, 263,
5947 265, 264, 266, 266, 266, 266, 267, 267, 268, 269,
5948 269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
5949 269, 269, 269, 269, 270, 270, 271, 271, 272, 272,
5950 273, 273, 274, 274, 276, 277, 278, 279, 275, 280,
5951 280, 281, 281, 282, 283, 283, 283, 283, 284, 284,
5952 284, 284, 284, 284, 284, 284, 284, 285, 285, 287,
5953 288, 289, 286, 291, 292, 293, 290, 294, 294, 294,
5954 294, 295, 296, 296, 298, 299, 300, 297, 301, 301,
5955 302, 302, 302, 303, 303, 303, 303, 303, 303, 304,
5956 305, 305, 306, 306, 307, 308, 309, 309, 309, 309,
5957 309, 309, 309, 309, 309, 309, 309, 309, 309, 310,
5958 309, 309, 311, 309, 312, 312, 312, 312, 312, 312,
5959 312, 312, 313, 313, 314, 314, 315, 316, 316, 317,
5960 317, 318, 319, 319, 319, 319, 320, 320, 321, 321,
5961 322, 322, 323, 323, 324, 325, 325, 326, 326, 326,
5962 326, 326, 326, 326, 326, 326, 326, 327, 327, 327,
5963 327, 327, 327, 327, 327, 327, 327, 328, 329, 329,
5964 330, 331, 331, 331, 332, 332, 333, 333, 333, 334,
5965 334, 335, 335, 336, 336, 337, 338, 338, 338, 339,
5966 340, 341, 342, 343, 343, 344, 344, 345, 346, 346,
5967 347, 348, 349, 349, 350, 350, 351, 351, 352, 352,
5968 353, 353, 354, 355, 354, 356, 357, 358, 359, 360,
5969 354, 361, 361, 361, 361, 362, 362, 363, 364, 364,
5970 364, 364, 365, 366, 366, 367, 367, 367, 367, 368,
5971 368, 368, 369, 369, 369, 369, 369, 370, 370, 370,
5972 370, 370, 370, 370, 371, 371, 372, 372, 373, 373,
5973 375, 374, 374, 376, 376, 377, 378, 379, 378, 380,
5974 380, 380, 380, 380, 381, 381, 382, 382, 382, 382,
5975 382, 382, 382, 382, 382, 382, 382, 382, 382, 382,
5976 382, 383, 384, 384, 384, 384, 385, 385, 386, 387,
5977 387, 388, 388, 389, 390, 390, 391, 391, 392, 392,
5978 393, 393, 394, 394, 395, 396, 396, 397, 398, 399,
5979 399, 400, 400, 401, 401, 402, 402, 403, 403, 404,
5980 404, 405, 405, 406, 407, 406, 408, 408, 409, 409,
5981 410, 410, 410, 410, 410, 411, 411, 411, 412, 412,
5982 412, 412, 413, 413, 413, 414, 414, 415, 415, 416,
5983 416, 417, 417, 418, 418, 419, 420, 421, 422, 422,
5984 422, 423, 423, 424, 424, 425
5988static const yytype_int8 yyr2[] =
5990 0, 2, 0, 2, 2, 1, 1, 3, 2, 1,
5991 2, 3, 0, 6, 3, 2, 1, 1, 3, 2,
5992 1, 0, 3, 0, 4, 3, 3, 3, 2, 3,
5993 3, 3, 3, 3, 4, 1, 4, 4, 6, 4,
5994 1, 4, 4, 7, 6, 6, 6, 6, 4, 6,
5995 4, 6, 4, 1, 3, 1, 1, 3, 3, 3,
5996 2, 0, 0, 5, 0, 0, 5, 1, 1, 2,
5997 0, 5, 1, 0, 0, 4, 1, 1, 1, 4,
5998 3, 1, 2, 3, 4, 5, 4, 5, 2, 2,
5999 2, 2, 2, 1, 3, 1, 3, 1, 2, 3,
6000 5, 2, 4, 2, 4, 1, 3, 1, 3, 2,
6001 3, 1, 3, 1, 1, 4, 3, 3, 3, 3,
6002 2, 1, 1, 1, 4, 3, 3, 3, 3, 2,
6003 1, 1, 1, 2, 1, 3, 1, 1, 1, 1,
6004 1, 1, 1, 1, 0, 4, 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, 1, 1, 1,
6009 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6010 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6011 1, 1, 1, 1, 1, 1, 1, 4, 4, 7,
6012 6, 6, 6, 6, 5, 4, 3, 3, 2, 2,
6013 2, 2, 3, 3, 3, 3, 3, 3, 4, 2,
6014 2, 3, 3, 3, 3, 1, 3, 3, 3, 3,
6015 3, 2, 2, 3, 3, 3, 3, 0, 4, 6,
6016 4, 6, 4, 6, 1, 1, 1, 1, 1, 3,
6017 3, 1, 1, 1, 1, 2, 4, 2, 1, 3,
6018 3, 5, 3, 1, 1, 1, 1, 2, 4, 2,
6019 1, 2, 2, 4, 1, 0, 2, 2, 1, 2,
6020 1, 1, 2, 3, 4, 1, 1, 3, 4, 2,
6021 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6022 1, 0, 4, 0, 3, 0, 4, 3, 3, 2,
6023 3, 3, 1, 4, 3, 1, 0, 6, 4, 3,
6024 2, 1, 2, 1, 6, 6, 4, 4, 0, 6,
6025 0, 5, 5, 6, 0, 6, 0, 7, 0, 5,
6026 4, 4, 1, 1, 1, 1, 1, 1, 1, 1,
6027 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6028 1, 1, 1, 1, 1, 1, 1, 1, 2, 1,
6029 1, 1, 5, 1, 2, 1, 1, 1, 3, 1,
6030 3, 1, 3, 5, 1, 3, 2, 1, 1, 1,
6031 0, 2, 4, 2, 2, 1, 2, 0, 1, 6,
6032 8, 4, 6, 4, 2, 6, 2, 4, 6, 2,
6033 4, 2, 4, 1, 1, 1, 3, 4, 1, 4,
6034 1, 3, 1, 1, 0, 0, 0, 0, 7, 4,
6035 1, 3, 3, 3, 2, 4, 5, 5, 2, 4,
6036 4, 3, 3, 3, 2, 1, 4, 3, 3, 0,
6037 0, 0, 5, 0, 0, 0, 5, 1, 2, 3,
6038 4, 5, 1, 1, 0, 0, 0, 8, 1, 1,
6039 1, 3, 3, 1, 2, 3, 1, 1, 1, 1,
6040 3, 1, 3, 1, 1, 1, 1, 1, 4, 4,
6041 4, 3, 4, 4, 4, 3, 3, 3, 2, 0,
6042 4, 2, 0, 4, 1, 1, 2, 3, 5, 2,
6043 4, 1, 2, 3, 1, 3, 5, 2, 1, 1,
6044 3, 1, 3, 1, 2, 1, 1, 3, 2, 1,
6045 1, 3, 2, 1, 2, 1, 1, 1, 3, 3,
6046 2, 2, 1, 1, 1, 2, 2, 1, 1, 1,
6047 1, 1, 1, 1, 1, 1, 1, 1, 2, 2,
6048 4, 2, 3, 1, 6, 1, 1, 1, 1, 2,
6049 1, 2, 1, 1, 1, 1, 1, 1, 2, 3,
6050 3, 3, 4, 0, 3, 1, 2, 4, 0, 3,
6051 4, 4, 0, 3, 0, 3, 0, 2, 0, 2,
6052 0, 2, 1, 0, 3, 0, 0, 0, 0, 0,
6053 8, 1, 1, 1, 1, 1, 1, 2, 1, 1,
6054 1, 1, 3, 1, 2, 1, 1, 1, 1, 1,
6055 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6056 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6057 0, 4, 0, 1, 1, 3, 1, 0, 3, 4,
6058 2, 2, 1, 1, 2, 0, 6, 8, 4, 6,
6059 4, 6, 2, 4, 6, 2, 4, 2, 4, 1,
6060 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6061 3, 1, 3, 1, 2, 1, 2, 1, 1, 3,
6062 1, 3, 1, 1, 2, 2, 1, 3, 3, 1,
6063 3, 1, 3, 1, 1, 2, 1, 1, 1, 2,
6064 1, 2, 1, 1, 0, 4, 1, 2, 1, 3,
6065 3, 2, 1, 4, 2, 1, 1, 1, 1, 1,
6066 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6067 1, 0, 1, 0, 1, 2, 2, 2, 0, 1,
6072enum { YYENOMEM = -2 };
6074#define yyerrok (yyerrstatus = 0)
6075#define yyclearin (yychar = YYEMPTY)
6077#define YYACCEPT goto yyacceptlab
6078#define YYABORT goto yyabortlab
6079#define YYERROR goto yyerrorlab
6080#define YYNOMEM goto yyexhaustedlab
6083#define YYRECOVERING() (!!yyerrstatus)
6085#define YYBACKUP(Token, Value) \
6087 if (yychar == YYEMPTY) \
6091 YYPOPSTACK (yylen); \
6097 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
6104#define YYERRCODE YYUNDEF
6110#ifndef YYLLOC_DEFAULT
6111# define YYLLOC_DEFAULT(Current, Rhs, N) \
6115 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
6116 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
6117 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
6118 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
6122 (Current).first_line = (Current).last_line = \
6123 YYRHSLOC (Rhs, 0).last_line; \
6124 (Current).first_column = (Current).last_column = \
6125 YYRHSLOC (Rhs, 0).last_column; \
6130#define YYRHSLOC(Rhs, K) ((Rhs)[K])
6138# define YYFPRINTF fprintf
6141# define YYDPRINTF(Args) \
6152# ifndef YYLOCATION_PRINT
6154# if defined YY_LOCATION_PRINT
6158# define YYLOCATION_PRINT(File, Loc) YY_LOCATION_PRINT(File, *(Loc))
6160# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
6166yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
6169 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
6170 if (0 <= yylocp->first_line)
6172 res += YYFPRINTF (p,
"%d", yylocp->first_line);
6173 if (0 <= yylocp->first_column)
6174 res += YYFPRINTF (p,
".%d", yylocp->first_column);
6176 if (0 <= yylocp->last_line)
6178 if (yylocp->first_line < yylocp->last_line)
6180 res += YYFPRINTF (p,
"-%d", yylocp->last_line);
6182 res += YYFPRINTF (p,
".%d", end_col);
6184 else if (0 <= end_col && yylocp->first_column < end_col)
6185 res += YYFPRINTF (p,
"-%d", end_col);
6190# define YYLOCATION_PRINT yy_location_print_
6194# define YY_LOCATION_PRINT(File, Loc) YYLOCATION_PRINT(File, &(Loc))
6198# define YYLOCATION_PRINT(File, Loc) ((void) 0)
6201# define YY_LOCATION_PRINT YYLOCATION_PRINT
6207# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
6211 YYFPRINTF (p, "%s ", Title); \
6212 yy_symbol_print (stderr, \
6213 Kind, Value, Location, p); \
6214 YYFPRINTF (p, "\n"); \
6224yy_symbol_value_print (
FILE *yyo,
6227 FILE *yyoutput = yyo;
6229 YY_USE (yylocationp);
6233 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6236 case YYSYMBOL_tIDENTIFIER:
6240 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).id)));
6242 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6252 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).id)));
6254 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6260 case YYSYMBOL_tGVAR:
6264 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).id)));
6266 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6272 case YYSYMBOL_tIVAR:
6276 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).id)));
6278 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6284 case YYSYMBOL_tCONSTANT:
6288 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).id)));
6290 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6296 case YYSYMBOL_tCVAR:
6300 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).id)));
6302 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6308 case YYSYMBOL_tLABEL:
6312 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).id)));
6314 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6320 case YYSYMBOL_tINTEGER:
6324 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6326 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6332 case YYSYMBOL_tFLOAT:
6336 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6338 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6344 case YYSYMBOL_tRATIONAL:
6348 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6350 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6356 case YYSYMBOL_tIMAGINARY:
6360 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6362 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6368 case YYSYMBOL_tCHAR:
6372 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6374 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6380 case YYSYMBOL_tNTH_REF:
6384 rb_parser_printf(p,
"$%ld", ((*yyvaluep).node)->nd_nth);
6386 rb_parser_printf(p,
"%"PRIsVALUE, ((*yyvaluep).node));
6392 case YYSYMBOL_tBACK_REF:
6396 rb_parser_printf(p,
"$%c", (
int)((*yyvaluep).node)->nd_nth);
6398 rb_parser_printf(p,
"%"PRIsVALUE, ((*yyvaluep).node));
6404 case YYSYMBOL_tSTRING_CONTENT:
6408 rb_parser_printf(p,
"%+"PRIsVALUE, ((*yyvaluep).node)->nd_lit);
6410 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
6416 case YYSYMBOL_tOP_ASGN:
6420 rb_parser_printf(p,
"%"PRIsVALUE,
rb_id2str(((*yyvaluep).id)));
6422 rb_parser_printf(p,
"%"PRIsVALUE, RNODE(((*yyvaluep).id))->nd_rval);
6431 YY_IGNORE_MAYBE_UNINITIALIZED_END
6440yy_symbol_print (
FILE *yyo,
6443 YYFPRINTF (p,
"%s %s (",
6444 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
6446 YYLOCATION_PRINT (yyo, yylocationp);
6447 YYFPRINTF (p,
": ");
6448 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
6458ruby_parser_yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop,
struct parser_params *p)
6459#define yy_stack_print(b, t) ruby_parser_yy_stack_print(b, t, p)
6461 YYFPRINTF (p,
"Stack now");
6462 for (; yybottom <= yytop; yybottom++)
6464 int yybot = *yybottom;
6465 YYFPRINTF (p,
" %d", yybot);
6467 YYFPRINTF (p,
"\n");
6470# define YY_STACK_PRINT(Bottom, Top) \
6473 yy_stack_print ((Bottom), (Top)); \
6482yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp,
YYLTYPE *yylsp,
6485 int yylno = yyrline[yyrule];
6486 int yynrhs = yyr2[yyrule];
6488 YYFPRINTF (p,
"Reducing stack by rule %d (line %d):\n",
6491 for (yyi = 0; yyi < yynrhs; yyi++)
6493 YYFPRINTF (p,
" $%d = ", yyi + 1);
6494 yy_symbol_print (stderr,
6495 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
6496 &yyvsp[(yyi + 1) - (yynrhs)],
6497 &(yylsp[(yyi + 1) - (yynrhs)]), p);
6498 YYFPRINTF (p,
"\n");
6502# define YY_REDUCE_PRINT(Rule) \
6505 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
6514# define YYDPRINTF(Args) ((void) 0)
6515# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
6516# define YY_STACK_PRINT(Bottom, Top)
6517# define YY_REDUCE_PRINT(Rule)
6523# define YYINITDEPTH 200
6534# define YYMAXDEPTH 10000
6542 yysymbol_kind_t yytoken;
6554 yysymbol_kind_t yyarg[],
int yyargn)
6558 int yyn = yypact[+*yyctx->yyssp];
6559 if (!yypact_value_is_default (yyn))
6564 int yyxbegin = yyn < 0 ? -yyn : 0;
6566 int yychecklim = YYLAST - yyn + 1;
6567 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
6569 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
6570 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
6571 && !yytable_value_is_error (yytable[yyx + yyn]))
6575 else if (yycount == yyargn)
6578 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
6581 if (yyarg && yycount == 0 && 0 < yyargn)
6582 yyarg[0] = YYSYMBOL_YYEMPTY;
6590# if defined __GLIBC__ && defined _STRING_H
6591# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
6595yystrlen (
const char *yystr)
6598 for (yylen = 0; yystr[yylen]; yylen++)
6606# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
6607# define yystpcpy stpcpy
6612yystpcpy (
char *yydest,
const char *yysrc)
6615 const char *yys = yysrc;
6617 while ((*yyd++ = *yys++) !=
'\0')
6634yytnamerr (
char *yyres,
const char *yystr)
6638 YYPTRDIFF_T yyn = 0;
6639 char const *yyp = yystr;
6645 goto do_not_strip_quotes;
6649 goto do_not_strip_quotes;
6665 do_not_strip_quotes: ;
6669 return yystpcpy (yyres, yystr) - yyres;
6671 return yystrlen (yystr);
6678 yysymbol_kind_t yyarg[],
int yyargn)
6705 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
6709 yyarg[yycount] = yyctx->yytoken;
6711 yyn = yypcontext_expected_tokens (yyctx,
6712 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
6713 if (yyn == YYENOMEM)
6730yysyntax_error (
struct parser_params *p, YYPTRDIFF_T *yymsg_alloc,
char **yymsg,
6733 enum { YYARGS_MAX = 5 };
6735 const char *yyformat = YY_NULLPTR;
6738 yysymbol_kind_t yyarg[YYARGS_MAX];
6740 YYPTRDIFF_T yysize = 0;
6743 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
6744 if (yycount == YYENOMEM)
6749#define YYCASE_(N, S) \
6754 YYCASE_(0, YY_(
"syntax error"));
6755 YYCASE_(1, YY_(
"syntax error, unexpected %s"));
6756 YYCASE_(2, YY_(
"syntax error, unexpected %s, expecting %s"));
6757 YYCASE_(3, YY_(
"syntax error, unexpected %s, expecting %s or %s"));
6758 YYCASE_(4, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
6759 YYCASE_(5, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
6765 yysize = yystrlen (yyformat) - 2 * yycount + 1;
6768 for (yyi = 0; yyi < yycount; ++yyi)
6771 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
6772 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
6779 if (*yymsg_alloc < yysize)
6781 *yymsg_alloc = 2 * yysize;
6782 if (! (yysize <= *yymsg_alloc
6783 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
6784 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
6794 while ((*yyp = *yyformat) !=
'\0')
6795 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
6797 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
6815yydestruct (
const char *yymsg,
6819 YY_USE (yylocationp);
6823 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
6825 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6827 YY_IGNORE_MAYBE_UNINITIALIZED_END
6849YY_INITIAL_VALUE (
static YYSTYPE yyval_default;)
6850YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
6854# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
6858YYLTYPE yylloc = yyloc_default;
6863 yy_state_fast_t yystate = 0;
6865 int yyerrstatus = 0;
6871 YYPTRDIFF_T yystacksize = YYINITDEPTH;
6874 yy_state_t yyssa[YYINITDEPTH];
6875 yy_state_t *yyss = yyssa;
6876 yy_state_t *yyssp = yyss;
6892 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
6903 char *yymsg = yymsgbuf;
6904 YYPTRDIFF_T yymsg_alloc =
sizeof yymsgbuf;
6906#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
6912 YYDPRINTF ((p,
"Starting parse\n"));
6920 RUBY_SET_YYLLOC_OF_NONE(yylloc);
6942 YYDPRINTF ((p,
"Entering state %d\n", yystate));
6943 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
6944 YY_IGNORE_USELESS_CAST_BEGIN
6945 *yyssp = YY_CAST (yy_state_t, yystate);
6946 YY_IGNORE_USELESS_CAST_END
6947 YY_STACK_PRINT (yyss, yyssp);
6949 if (yyss + yystacksize - 1 <= yyssp)
6950#if !defined yyoverflow && !defined YYSTACK_RELOCATE
6955 YYPTRDIFF_T yysize = yyssp - yyss + 1;
6957# if defined yyoverflow
6962 yy_state_t *yyss1 = yyss;
6970 yyoverflow (YY_(
"memory exhausted"),
6971 &yyss1, yysize * YYSIZEOF (*yyssp),
6972 &yyvs1, yysize * YYSIZEOF (*yyvsp),
6973 &yyls1, yysize * YYSIZEOF (*yylsp),
6981 if (YYMAXDEPTH <= yystacksize)
6984 if (YYMAXDEPTH < yystacksize)
6985 yystacksize = YYMAXDEPTH;
6988 yy_state_t *yyss1 = yyss;
6989 union yyalloc *yyptr =
6990 YY_CAST (
union yyalloc *,
6991 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
6994 YYSTACK_RELOCATE (yyss_alloc, yyss);
6995 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
6996 YYSTACK_RELOCATE (yyls_alloc, yyls);
6997# undef YYSTACK_RELOCATE
6999 YYSTACK_FREE (yyss1);
7003 yyssp = yyss + yysize - 1;
7004 yyvsp = yyvs + yysize - 1;
7005 yylsp = yyls + yysize - 1;
7007 YY_IGNORE_USELESS_CAST_BEGIN
7008 YYDPRINTF ((p,
"Stack size increased to %ld\n",
7009 YY_CAST (
long, yystacksize)));
7010 YY_IGNORE_USELESS_CAST_END
7012 if (yyss + yystacksize - 1 <= yyssp)
7018 if (yystate == YYFINAL)
7032 yyn = yypact[yystate];
7033 if (yypact_value_is_default (yyn))
7039 if (yychar == YYEMPTY)
7041 YYDPRINTF ((p,
"Reading a token\n"));
7042 yychar = yylex (&yylval, &yylloc, p);
7045 if (yychar <= END_OF_INPUT)
7047 yychar = END_OF_INPUT;
7048 yytoken = YYSYMBOL_YYEOF;
7049 YYDPRINTF ((p,
"Now at end of input.\n"));
7051 else if (yychar == YYerror)
7058 yytoken = YYSYMBOL_YYerror;
7059 yyerror_range[1] = yylloc;
7064 yytoken = YYTRANSLATE (yychar);
7065 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc);
7071 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
7076 if (yytable_value_is_error (yyn))
7088 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc);
7090 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
7092 YY_IGNORE_MAYBE_UNINITIALIZED_END
7104 yyn = yydefact[yystate];
7125 yyval = yyvsp[1-yylen];
7128 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
7129 yyerror_range[1] = yyloc;
7130 YY_REDUCE_PRINT (yyn);
7136 SET_LEX_STATE(EXPR_BEG);
7137 local_push(p, ifndef_ripper(1)+0);
7146 if ((yyvsp[0].node) && !compile_for_eval) {
7147 NODE *node = (yyvsp[0].node);
7149 if (nd_type_p(node, NODE_BLOCK)) {
7150 while (node->nd_next) {
7151 node = node->nd_next;
7153 node = node->nd_head;
7155 node = remove_begin(node);
7158 p->eval_tree = NEW_SCOPE(0, block_append(p, p->eval_tree, (yyvsp[0].node)), &(yyloc));
7169 (yyval.node) = void_stmts(p, (yyvsp[-1].node));
7178 (yyval.node) = NEW_BEGIN(0, &(yyloc));
7189 (yyval.node) = newline_node((yyvsp[0].node));
7200 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
7210 (yyval.node) = remove_begin((yyvsp[0].node));
7218 (yyval.node) = (yyvsp[0].node);
7227 p->eval_tree_begin = block_append(p, p->eval_tree_begin,
7228 NEW_BEGIN((yyvsp[-1].node), &(yyloc)));
7229 (yyval.node) = NEW_BEGIN(0, &(yyloc));
7238 {
if (!(yyvsp[-1].node)) {yyerror1(&(yylsp[0]),
"else without rescue is useless");}}
7246 (yyval.node) = new_bodystmt(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
7257 (yyval.node) = new_bodystmt(p, (yyvsp[-2].node), (yyvsp[-1].node), 0, (yyvsp[0].node), &(yyloc));
7267 (yyval.node) = void_stmts(p, (yyvsp[-1].node));
7276 (yyval.node) = NEW_BEGIN(0, &(yyloc));
7287 (yyval.node) = newline_node((yyvsp[0].node));
7298 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
7308 (yyval.node) = remove_begin((yyvsp[0].node));
7316 (yyval.node) = (yyvsp[0].node);
7324 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
7332 (yyval.node) = (yyvsp[0].node);
7339 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
7347 (yyval.node) = NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
7358 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].id), &(yyloc));
7371 buf[1] = (char)(yyvsp[0].node)->nd_nth;
7372 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id),
rb_intern2(buf, 2), &(yyloc));
7382 static const char mesg[] =
"can't make alias for the number variables";
7384 yyerror1(&(yylsp[0]), mesg);
7385 (yyval.node) = NEW_BEGIN(0, &(yyloc));
7396 (yyval.node) = (yyvsp[0].node);
7407 (yyval.node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
7408 fixpos((yyval.node), (yyvsp[0].node));
7419 (yyval.node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
7420 fixpos((yyval.node), (yyvsp[0].node));
7431 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
7432 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node)->nd_body, 0, &(yyloc));
7435 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
7447 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
7448 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node)->nd_body, 0, &(yyloc));
7451 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
7464 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7465 resq = NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc);
7466 (yyval.node) = NEW_RESCUE(remove_begin((yyvsp[-2].node)), resq, 0, &(yyloc));
7476 if (p->ctxt.in_def) {
7477 rb_warn0(
"END in method; use at_exit");
7481 NODE *scope = NEW_NODE(
7482 NODE_SCOPE, 0 , (yyvsp[-1].node) , 0 , &(yyloc));
7483 (yyval.node) = NEW_POSTEXE(scope, &(yyloc));
7495 value_expr((yyvsp[0].node));
7496 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
7507 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
7518 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7519 (yyval.node) = node_assign(p, (yyvsp[-5].node), NEW_RESCUE((yyvsp[-2].node), NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc)), (yyvsp[-3].ctxt), &(yyloc));
7530 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
7541 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
7552 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
7563 (yyval.node) = new_ary_op_assign(p, (yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[0].node), &(yylsp[-4]), &(yyloc));
7575 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
7586 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
7597 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
7598 (yyval.node) = new_const_op_assign(p, NEW_COLON2((yyvsp[-5].node), (yyvsp[-3].
id), &loc), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
7609 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), ID2VAL(idCOLON2), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
7619 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
7620 restore_defun(p, (yyvsp[-3].node)->nd_defn);
7622 (yyval.node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
7634 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
7635 restore_defun(p, (yyvsp[-5].node)->nd_defn);
7637 (yyvsp[-2].node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
7638 (yyval.node) = set_defun_body(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-2].node), &(yyloc));
7650 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
7651 restore_defun(p, (yyvsp[-3].node)->nd_defn);
7653 (yyval.node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
7667 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
7668 restore_defun(p, (yyvsp[-5].node)->nd_defn);
7670 (yyvsp[-2].node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
7671 (yyval.node) = set_defun_body(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-2].node), &(yyloc));
7686 rb_backref_error(p, (yyvsp[-3].node));
7687 (yyval.node) = NEW_BEGIN(0, &(yyloc));
7697 value_expr((yyvsp[0].node));
7698 (yyval.node) = (yyvsp[0].node);
7707 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
7708 value_expr((yyvsp[-2].node));
7709 (yyval.node) = NEW_RESCUE((yyvsp[-2].node), NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc));
7719 (yyval.node) = logop(p, idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7727 (yyval.node) = logop(p, idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7735 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
7743 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
7751 value_expr((yyvsp[-1].node));
7752 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
7753 p->command_start = FALSE;
7754 (yyvsp[0].ctxt) = p->ctxt;
7755 p->ctxt.in_kwarg = 1;
7756 (yyval.tbl) = push_pvtbl(p);
7764 (yyval.tbl) = push_pktbl(p);
7772 pop_pktbl(p, (yyvsp[-1].tbl));
7773 pop_pvtbl(p, (yyvsp[-2].tbl));
7774 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
7776 (yyval.node) = NEW_CASE3((yyvsp[-4].node), NEW_IN((yyvsp[0].node), 0, 0, &(yylsp[0])), &(yyloc));
7786 value_expr((yyvsp[-1].node));
7787 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
7788 p->command_start = FALSE;
7789 (yyvsp[0].ctxt) = p->ctxt;
7790 p->ctxt.in_kwarg = 1;
7791 (yyval.tbl) = push_pvtbl(p);
7799 (yyval.tbl) = push_pktbl(p);
7807 pop_pktbl(p, (yyvsp[-1].tbl));
7808 pop_pvtbl(p, (yyvsp[-2].tbl));
7809 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
7811 (yyval.node) = NEW_CASE3((yyvsp[-4].node), NEW_IN((yyvsp[0].node), NEW_TRUE(&(yylsp[0])), NEW_FALSE(&(yylsp[0])), &(yylsp[0])), &(yyloc));
7821 ID fname = get_id((yyvsp[0].
id));
7822 ID cur_arg = p->cur_arg;
7823 YYSTYPE c = {.ctxt = p->ctxt};
7824 numparam_name(p, fname);
7828 (yyval.node) = NEW_NODE(NODE_SELF, cur_arg, fname, c.val, &(yyloc));
7840 (yyval.node) = (yyvsp[0].node);
7842 (yyval.node) = NEW_NODE(NODE_DEFN, 0, (yyval.node)->nd_mid, (yyval.node), &(yyloc));
7851 SET_LEX_STATE(EXPR_FNAME);
7852 p->ctxt.in_argdef = 1;
7860 SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL);
7861 (yyval.node) = (yyvsp[0].node);
7863 (yyval.node) = NEW_NODE(NODE_DEFS, (yyvsp[-3].node), (yyval.node)->nd_mid, (yyval.node), &(yyloc));
7876 value_expr((yyvsp[0].node));
7877 (yyval.node) = (yyvsp[0].node);
7897 (yyval.node) = (yyvsp[-2].node);
7906 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
7916 (yyval.node) = (yyvsp[-1].node);
7918 (yyval.node)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
7919 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
7929 (yyval.node) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
7930 nd_set_line((yyval.node), p->tokline);
7941 (yyvsp[-1].node)->nd_args = (yyvsp[0].node);
7942 nd_set_last_loc((yyvsp[-1].node), (yylsp[0]).end_pos);
7943 (yyval.node) = (yyvsp[-1].node);
7954 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
7955 (yyvsp[-2].node)->nd_args = (yyvsp[-1].node);
7956 (yyval.node) = method_add_block(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
7957 fixpos((yyval.node), (yyvsp[-2].node));
7958 nd_set_last_loc((yyvsp[-2].node), (yylsp[-1]).end_pos);
7969 (yyval.node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), Qnull, &(yylsp[-1]), &(yyloc));
7980 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
7991 (yyval.node) = new_command_qcall(p, ID2VAL(idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), Qnull, &(yylsp[-1]), &(yyloc));
8002 (yyval.node) = new_command_qcall(p, ID2VAL(idCOLON2), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
8013 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc));
8014 fixpos((yyval.node), (yyvsp[0].node));
8025 (yyval.node) = new_yield(p, (yyvsp[0].node), &(yyloc));
8026 fixpos((yyval.node), (yyvsp[0].node));
8037 (yyval.node) = NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc));
8048 (yyval.node) = NEW_BREAK(ret_args(p, (yyvsp[0].node)), &(yyloc));
8059 (yyval.node) = NEW_NEXT(ret_args(p, (yyvsp[0].node)), &(yyloc));
8070 (yyval.node) = (yyvsp[-1].node);
8081 (yyval.node) = NEW_MASGN(NEW_LIST((yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
8092 (yyval.node) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
8103 (yyval.node) = NEW_MASGN(list_append(p, (yyvsp[-1].node),(yyvsp[0].node)), 0, &(yyloc));
8114 (yyval.node) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
8125 (yyval.node) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
8136 (yyval.node) = NEW_MASGN((yyvsp[-1].node), NODE_SPECIAL_NO_NAME_REST, &(yyloc));
8147 (yyval.node) = NEW_MASGN((yyvsp[-3].node), NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
8158 (yyval.node) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
8169 (yyval.node) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
8180 (yyval.node) = NEW_MASGN(0, NODE_SPECIAL_NO_NAME_REST, &(yyloc));
8191 (yyval.node) = NEW_MASGN(0, NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
8202 (yyval.node) = (yyvsp[-1].node);
8213 (yyval.node) = NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
8224 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
8235 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
8246 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
8257 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
8268 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
8279 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
8289 if ((yyvsp[-1].
id) == tANDDOT) {
8290 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
8293 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
8304 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
8314 if ((yyvsp[-1].
id) == tANDDOT) {
8315 yyerror1(&(yylsp[-1]),
"&. inside multiple assignment destination");
8318 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
8329 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
8340 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
8351 rb_backref_error(p, (yyvsp[0].node));
8352 (yyval.node) = NEW_BEGIN(0, &(yyloc));
8363 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
8374 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
8385 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
8396 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
8407 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
8418 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
8429 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
8440 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
8451 rb_backref_error(p, (yyvsp[0].node));
8452 (yyval.node) = NEW_BEGIN(0, &(yyloc));
8462 static const char mesg[] =
"class/module name must be CONSTANT";
8464 yyerror1(&(yylsp[0]), mesg);
8475 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
8486 (yyval.node) = NEW_COLON2(0, (yyval.node), &(yyloc));
8497 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
8507 SET_LEX_STATE(EXPR_ENDFN);
8508 (yyval.id) = (yyvsp[0].
id);
8517 (yyval.node) = NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc));
8528 (yyval.node) = NEW_UNDEF((yyvsp[0].node), &(yyloc));
8537 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
8545 NODE *undef = NEW_UNDEF((yyvsp[0].node), &(yylsp[0]));
8546 (yyval.node) = block_append(p, (yyvsp[-3].node), undef);
8555 { ifndef_ripper((yyval.id) =
'|'); }
8561 { ifndef_ripper((yyval.id) =
'^'); }
8567 { ifndef_ripper((yyval.id) =
'&'); }
8573 { ifndef_ripper((yyval.id) = tCMP); }
8579 { ifndef_ripper((yyval.id) = tEQ); }
8585 { ifndef_ripper((yyval.id) = tEQQ); }
8591 { ifndef_ripper((yyval.id) = tMATCH); }
8597 { ifndef_ripper((yyval.id) = tNMATCH); }
8603 { ifndef_ripper((yyval.id) =
'>'); }
8609 { ifndef_ripper((yyval.id) = tGEQ); }
8615 { ifndef_ripper((yyval.id) =
'<'); }
8621 { ifndef_ripper((yyval.id) = tLEQ); }
8627 { ifndef_ripper((yyval.id) = tNEQ); }
8633 { ifndef_ripper((yyval.id) = tLSHFT); }
8639 { ifndef_ripper((yyval.id) = tRSHFT); }
8645 { ifndef_ripper((yyval.id) =
'+'); }
8651 { ifndef_ripper((yyval.id) =
'-'); }
8657 { ifndef_ripper((yyval.id) =
'*'); }
8663 { ifndef_ripper((yyval.id) =
'*'); }
8669 { ifndef_ripper((yyval.id) =
'/'); }
8675 { ifndef_ripper((yyval.id) =
'%'); }
8681 { ifndef_ripper((yyval.id) = tPOW); }
8687 { ifndef_ripper((yyval.id) = tDSTAR); }
8693 { ifndef_ripper((yyval.id) =
'!'); }
8699 { ifndef_ripper((yyval.id) =
'~'); }
8705 { ifndef_ripper((yyval.id) = tUPLUS); }
8711 { ifndef_ripper((yyval.id) = tUMINUS); }
8717 { ifndef_ripper((yyval.id) = tAREF); }
8723 { ifndef_ripper((yyval.id) = tASET); }
8729 { ifndef_ripper((yyval.id) =
'`'); }
8737 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
8748 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
8759 (yyval.node) = new_ary_op_assign(p, (yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[0].node), &(yylsp[-4]), &(yyloc));
8770 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
8781 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
8792 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), ID2VAL(idCOLON2), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
8803 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
8804 (yyval.node) = new_const_op_assign(p, NEW_COLON2((yyvsp[-5].node), (yyvsp[-3].
id), &loc), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
8815 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
8816 (yyval.node) = new_const_op_assign(p, NEW_COLON3((yyvsp[-3].
id), &loc), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
8827 rb_backref_error(p, (yyvsp[-3].node));
8828 (yyval.node) = NEW_BEGIN(0, &(yyloc));
8839 value_expr((yyvsp[-2].node));
8840 value_expr((yyvsp[0].node));
8841 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
8852 value_expr((yyvsp[-2].node));
8853 value_expr((yyvsp[0].node));
8854 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
8865 value_expr((yyvsp[-1].node));
8866 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
8877 value_expr((yyvsp[-1].node));
8878 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
8889 value_expr((yyvsp[0].node));
8890 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
8901 value_expr((yyvsp[0].node));
8902 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
8912 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
8920 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
8928 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
8936 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
8944 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
8952 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
8960 (yyval.node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)), idUMinus, &(yylsp[-3]), &(yyloc));
8968 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUPlus, &(yylsp[-1]), &(yyloc));
8976 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUMinus, &(yylsp[-1]), &(yyloc));
8984 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
8992 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9000 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9008 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9016 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9024 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9032 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9040 (yyval.node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9048 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9056 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
9064 (yyval.node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
9072 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9080 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9088 (yyval.node) = logop(p, idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9096 (yyval.node) = logop(p, idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9103 {p->ctxt.in_defined = 1;}
9110 p->ctxt.in_defined = 0;
9111 (yyval.node) = new_defined(p, (yyvsp[0].node), &(yyloc));
9120 value_expr((yyvsp[-5].node));
9121 (yyval.node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
9122 fixpos((yyval.node), (yyvsp[-5].node));
9132 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
9133 restore_defun(p, (yyvsp[-3].node)->nd_defn);
9135 (yyval.node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9147 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
9148 restore_defun(p, (yyvsp[-5].node)->nd_defn);
9150 (yyvsp[-2].node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
9151 (yyval.node) = set_defun_body(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-2].node), &(yyloc));
9163 endless_method_name(p, (yyvsp[-3].node), &(yylsp[-3]));
9164 restore_defun(p, (yyvsp[-3].node)->nd_defn);
9166 (yyval.node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9180 endless_method_name(p, (yyvsp[-5].node), &(yylsp[-5]));
9181 restore_defun(p, (yyvsp[-5].node)->nd_defn);
9183 (yyvsp[-2].node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
9184 (yyval.node) = set_defun_body(p, (yyvsp[-5].node), (yyvsp[-4].node), (yyvsp[-2].node), &(yyloc));
9198 (yyval.node) = (yyvsp[0].node);
9217 {(yyval.id) = idGE;}
9223 {(yyval.id) = idLE;}
9230 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9238 rb_warning1(
"comparison '%s' after comparison", WARN_ID((yyvsp[-1].
id)));
9239 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
9247 (yyval.ctxt) = p->ctxt;
9255 (yyval.ctxt) = p->ctxt;
9263 value_expr((yyvsp[0].node));
9264 (yyval.node) = (yyvsp[0].node);
9272 (yyval.node) = (yyvsp[-1].node);
9281 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
9292 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
9302 value_expr((yyvsp[0].node));
9303 (yyval.node) = (yyvsp[0].node);
9312 value_expr((yyvsp[-2].node));
9313 (yyval.node) = rescued_expr(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
9324 (yyval.node) = (yyvsp[-1].node);
9334 if (!check_forwarding_args(p)) {
9335 (yyval.node) = Qnone;
9339 (yyval.node) = new_args_forward_call(p, (yyvsp[-3].node), &(yylsp[-1]), &(yyloc));
9350 if (!check_forwarding_args(p)) {
9351 (yyval.node) = Qnone;
9355 (yyval.node) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
9366 (yyval.node) = (yyvsp[-1].node);
9375 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
9386 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
9397 value_expr((yyvsp[0].node));
9398 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
9409 (yyval.node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node));
9420 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
9421 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node));
9432 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
9433 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node));
9452 case '(':
case tLPAREN:
case tLPAREN_ARG:
case '[':
case tLBRACK:
9455 if (lookahead) CMDARG_POP();
9457 if (lookahead) CMDARG_PUSH(0);
9476 if (lookahead) CMDARG_POP();
9478 if (lookahead) CMDARG_PUSH(0);
9479 (yyval.node) = (yyvsp[0].node);
9488 (yyval.node) = NEW_BLOCK_PASS((yyvsp[0].node), &(yyloc));
9499 if (!local_id(p, ANON_BLOCK_ID)) {
9500 compile_error(p,
"no anonymous block parameter");
9502 (yyval.node) = NEW_BLOCK_PASS(NEW_LVAR(ANON_BLOCK_ID, &(yylsp[0])), &(yyloc));
9513 (yyval.node) = (yyvsp[0].node);
9530 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
9541 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc));
9552 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9563 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
9574 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
9585 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
9596 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc));
9607 (yyval.node) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
9627 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
9628 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
9629 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
9638 {SET_LEX_STATE(EXPR_ENDARG);}
9646 (yyval.node) = NEW_BEGIN(0, &(yyloc));
9655 {SET_LEX_STATE(EXPR_ENDARG);}
9663 if (nd_type_p((yyvsp[-2].node), NODE_SELF)) (yyvsp[-2].node)->nd_state = 0;
9664 (yyval.node) = (yyvsp[-2].node);
9675 if (nd_type_p((yyvsp[-1].node), NODE_SELF)) (yyvsp[-1].node)->nd_state = 0;
9676 (yyval.node) = (yyvsp[-1].node);
9687 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
9698 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
9709 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
9720 (yyval.node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
9721 (yyval.node)->nd_brace = TRUE;
9732 (yyval.node) = NEW_RETURN(0, &(yyloc));
9743 (yyval.node) = new_yield(p, (yyvsp[-1].node), &(yyloc));
9754 (yyval.node) = NEW_YIELD(0, &(yyloc));
9765 (yyval.node) = NEW_YIELD(0, &(yyloc));
9774 {p->ctxt.in_defined = 1;}
9781 p->ctxt.in_defined = 0;
9782 (yyval.node) = new_defined(p, (yyvsp[-1].node), &(yyloc));
9790 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])), METHOD_NOT, &(yylsp[-3]), &(yyloc));
9798 (yyval.node) = call_uni_op(p, method_cond(p, new_nil(&(yylsp[-1])), &(yylsp[-1])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
9807 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9818 block_dup_check(p, (yyvsp[-1].node)->nd_args, (yyvsp[0].node));
9819 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
9830 (yyval.node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
9831 fixpos((yyval.node), (yyvsp[-4].node));
9842 (yyval.node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
9843 fixpos((yyval.node), (yyvsp[-4].node));
9854 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
9855 fixpos((yyval.node), (yyvsp[-2].node));
9866 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
9867 fixpos((yyval.node), (yyvsp[-2].node));
9877 (yyval.val) = p->case_labels;
9878 p->case_labels =
Qnil;
9887 p->case_labels = (yyvsp[-2].val);
9889 (yyval.node) = NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
9890 fixpos((yyval.node), (yyvsp[-4].node));
9900 (yyval.val) = p->case_labels;
9910 p->case_labels = (yyvsp[-2].val);
9912 (yyval.node) = NEW_CASE2((yyvsp[-1].node), &(yyloc));
9923 (yyval.node) = NEW_CASE3((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
9943 ID
id = internal_id(p);
9944 NODE *m = NEW_ARGS_AUX(0, 0, &NULL_LOC);
9945 NODE *args, *scope, *internal_var = NEW_DVAR(
id, &(yylsp[-4]));
9949 switch (nd_type((yyvsp[-4].node))) {
9952 (yyvsp[-4].node)->nd_value = internal_var;
9955 m->nd_next = (yyvsp[-4].node);
9958 m->nd_next = node_assign(p, (yyvsp[-4].node), NEW_FOR_MASGN(internal_var, &(yylsp[-4])), NO_LEX_CTXT, &(yylsp[-4]));
9961 m->nd_next = node_assign(p, NEW_MASGN(NEW_LIST((yyvsp[-4].node), &(yylsp[-4])), 0, &(yylsp[-4])), internal_var, NO_LEX_CTXT, &(yylsp[-4]));
9964 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
9965 scope = NEW_NODE(NODE_SCOPE, tbl, (yyvsp[-1].node), args, &(yyloc));
9966 (yyval.node) = NEW_FOR((yyvsp[-2].node), scope, &(yyloc));
9967 fixpos((yyval.node), (yyvsp[-4].node));
9977 if (p->ctxt.in_def) {
9978 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[-1]));
9979 yyerror1(&loc,
"class definition in method body");
9981 p->ctxt.in_class = 1;
9991 (yyval.node) = NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc));
9992 nd_set_line((yyval.node)->nd_body, (yylsp[0]).end_pos.lineno);
9993 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
9994 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
9998 p->ctxt.in_class = (yyvsp[-5].ctxt).in_class;
9999 p->ctxt.shareable_constant_value = (yyvsp[-5].ctxt).shareable_constant_value;
10001#line 9997 "parse.c"
10005#line 3236 "parse.y"
10007 p->ctxt.in_def = 0;
10008 p->ctxt.in_class = 0;
10011#line 10007 "parse.c"
10015#line 3244 "parse.y"
10018 (yyval.node) = NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
10019 nd_set_line((yyval.node)->nd_body, (yylsp[0]).end_pos.lineno);
10020 set_line_body((yyvsp[-1].node), nd_line((yyvsp[-4].node)));
10021 fixpos((yyval.node), (yyvsp[-4].node));
10025 p->ctxt.in_def = (yyvsp[-6].ctxt).in_def;
10026 p->ctxt.in_class = (yyvsp[-6].ctxt).in_class;
10027 p->ctxt.shareable_constant_value = (yyvsp[-6].ctxt).shareable_constant_value;
10029#line 10025 "parse.c"
10033#line 3258 "parse.y"
10035 if (p->ctxt.in_def) {
10036 YYLTYPE loc = code_loc_gen(&(yylsp[-1]), &(yylsp[0]));
10037 yyerror1(&loc,
"module definition in method body");
10039 p->ctxt.in_class = 1;
10042#line 10038 "parse.c"
10046#line 3268 "parse.y"
10049 (yyval.node) = NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
10050 nd_set_line((yyval.node)->nd_body, (yylsp[0]).end_pos.lineno);
10051 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
10052 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
10056 p->ctxt.in_class = (yyvsp[-4].ctxt).in_class;
10057 p->ctxt.shareable_constant_value = (yyvsp[-4].ctxt).shareable_constant_value;
10059#line 10055 "parse.c"
10063#line 3284 "parse.y"
10065 restore_defun(p, (yyvsp[-3].node)->nd_defn);
10067 (yyval.node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
10072#line 10068 "parse.c"
10076#line 3296 "parse.y"
10078 restore_defun(p, (yyvsp[-3].node)->nd_defn);
10080 (yyval.node) = set_defun_body(p, (yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
10087#line 10083 "parse.c"
10091#line 3307 "parse.y"
10094 (yyval.node) = NEW_BREAK(0, &(yyloc));
10098#line 10094 "parse.c"
10102#line 3314 "parse.y"
10105 (yyval.node) = NEW_NEXT(0, &(yyloc));
10109#line 10105 "parse.c"
10113#line 3321 "parse.y"
10116 (yyval.node) = NEW_REDO(&(yyloc));
10120#line 10116 "parse.c"
10124#line 3328 "parse.y"
10127 (yyval.node) = NEW_RETRY(&(yyloc));
10131#line 10127 "parse.c"
10135#line 3337 "parse.y"
10137 value_expr((yyvsp[0].node));
10138 (yyval.node) = (yyvsp[0].node);
10140#line 10136 "parse.c"
10144#line 3344 "parse.y"
10146 token_info_push(p,
"begin", &(yyloc));
10148#line 10144 "parse.c"
10152#line 3350 "parse.y"
10155 token_info_push(p,
"if", &(yyloc));
10156 if (p->token_info && p->token_info->nonspc &&
10157 p->token_info->next && !strcmp(p->token_info->next->token,
"else")) {
10158 const char *tok = p->lex.ptok;
10159 const char *beg = p->lex.pbeg + p->token_info->next->beg.column;
10161 while (beg < tok &&
ISSPACE(*beg)) beg++;
10163 p->token_info->nonspc = 0;
10167#line 10163 "parse.c"
10171#line 3367 "parse.y"
10173 token_info_push(p,
"unless", &(yyloc));
10175#line 10171 "parse.c"
10179#line 3373 "parse.y"
10181 token_info_push(p,
"while", &(yyloc));
10183#line 10179 "parse.c"
10187#line 3379 "parse.y"
10189 token_info_push(p,
"until", &(yyloc));
10191#line 10187 "parse.c"
10195#line 3385 "parse.y"
10197 token_info_push(p,
"case", &(yyloc));
10199#line 10195 "parse.c"
10203#line 3391 "parse.y"
10205 token_info_push(p,
"for", &(yyloc));
10207#line 10203 "parse.c"
10211#line 3397 "parse.y"
10213 token_info_push(p,
"class", &(yyloc));
10214 (yyval.ctxt) = p->ctxt;
10216#line 10212 "parse.c"
10220#line 3404 "parse.y"
10222 token_info_push(p,
"module", &(yyloc));
10223 (yyval.ctxt) = p->ctxt;
10225#line 10221 "parse.c"
10229#line 3411 "parse.y"
10231 token_info_push(p,
"def", &(yyloc));
10232 p->ctxt.in_argdef = 1;
10234#line 10230 "parse.c"
10238#line 3418 "parse.y"
10240 token_info_push(p,
"do", &(yyloc));
10242#line 10238 "parse.c"
10246#line 3424 "parse.y"
10248 token_info_push(p,
"do", &(yyloc));
10250#line 10246 "parse.c"
10254#line 3430 "parse.y"
10256 token_info_warn(p,
"rescue", p->token_info, 1, &(yyloc));
10258#line 10254 "parse.c"
10262#line 3436 "parse.y"
10264 token_info_warn(p,
"ensure", p->token_info, 1, &(yyloc));
10266#line 10262 "parse.c"
10270#line 3442 "parse.y"
10272 token_info_warn(p,
"when", p->token_info, 0, &(yyloc));
10274#line 10270 "parse.c"
10278#line 3448 "parse.y"
10281 int same = ptinfo_beg && strcmp(ptinfo_beg->token,
"case") != 0;
10282 token_info_warn(p,
"else", p->token_info, same, &(yyloc));
10285 e.next = ptinfo_beg->next;
10287 token_info_setup(&e, p->lex.pbeg, &(yyloc));
10288 if (!e.nonspc) *ptinfo_beg = e;
10291#line 10287 "parse.c"
10295#line 3463 "parse.y"
10298 token_info_warn(p,
"elsif", p->token_info, 1, &(yyloc));
10300#line 10296 "parse.c"
10304#line 3470 "parse.y"
10306 token_info_pop(p,
"end", &(yyloc));
10308#line 10304 "parse.c"
10312#line 3476 "parse.y"
10314 if (p->ctxt.in_class && !p->ctxt.in_def && !dyna_in_block(p))
10315 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
10317#line 10313 "parse.c"
10321#line 3495 "parse.y"
10324 (yyval.node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10325 fixpos((yyval.node), (yyvsp[-3].node));
10329#line 10325 "parse.c"
10333#line 3506 "parse.y"
10336 (yyval.node) = (yyvsp[0].node);
10340#line 10336 "parse.c"
10344#line 3519 "parse.y"
10347 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
10348 mark_lvar_used(p, (yyval.node));
10352#line 10348 "parse.c"
10356#line 3527 "parse.y"
10359 (yyval.node) = (yyvsp[-1].node);
10363#line 10359 "parse.c"
10367#line 3536 "parse.y"
10370 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
10374#line 10370 "parse.c"
10378#line 3543 "parse.y"
10381 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
10385#line 10381 "parse.c"
10389#line 3552 "parse.y"
10392 (yyval.node) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
10396#line 10392 "parse.c"
10400#line 3559 "parse.y"
10403 (yyval.node) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
10407#line 10403 "parse.c"
10411#line 3566 "parse.y"
10414 (yyval.node) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
10418#line 10414 "parse.c"
10422#line 3573 "parse.y"
10425 (yyval.node) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
10429#line 10425 "parse.c"
10433#line 3580 "parse.y"
10436 (yyval.node) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
10440#line 10436 "parse.c"
10444#line 3589 "parse.y"
10447 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
10448 mark_lvar_used(p, (yyval.node));
10452#line 10448 "parse.c"
10456#line 3597 "parse.y"
10459 (yyval.node) = NODE_SPECIAL_NO_NAME_REST;
10463#line 10459 "parse.c"
10467#line 3606 "parse.y"
10468 {(yyval.id) = ID2VAL(idNil);}
10469#line 10465 "parse.c"
10473#line 3609 "parse.y"
10474 {p->ctxt.in_argdef = 0;}
10475#line 10471 "parse.c"
10479#line 3612 "parse.y"
10481 (yyval.node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
10483#line 10479 "parse.c"
10487#line 3616 "parse.y"
10489 (yyval.node) = new_args_tail(p, (yyvsp[-1].node), Qnone, (yyvsp[0].id), &(yylsp[-1]));
10491#line 10487 "parse.c"
10495#line 3620 "parse.y"
10497 (yyval.node) = new_args_tail(p, Qnone, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
10499#line 10495 "parse.c"
10503#line 3624 "parse.y"
10505 (yyval.node) = new_args_tail(p, Qnone, Qnone, (yyvsp[0].
id), &(yylsp[0]));
10507#line 10503 "parse.c"
10511#line 3630 "parse.y"
10513 (yyval.node) = (yyvsp[0].node);
10515#line 10511 "parse.c"
10519#line 3634 "parse.y"
10521 (yyval.node) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
10523#line 10519 "parse.c"
10527#line 3640 "parse.y"
10531 (yyval.id) = NODE_SPECIAL_EXCESSIVE_COMMA;
10535#line 10531 "parse.c"
10539#line 3650 "parse.y"
10541 (yyval.node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
10543#line 10539 "parse.c"
10547#line 3654 "parse.y"
10549 (yyval.node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10551#line 10547 "parse.c"
10555#line 3658 "parse.y"
10557 (yyval.node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].node), Qnone, Qnone, (yyvsp[0].node), &(yyloc));
10559#line 10555 "parse.c"
10563#line 3662 "parse.y"
10565 (yyval.node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10567#line 10563 "parse.c"
10571#line 3666 "parse.y"
10573 (yyval.node) = new_args(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].id), Qnone, (yyvsp[0].node), &(yyloc));
10575#line 10571 "parse.c"
10579#line 3670 "parse.y"
10581 (yyval.node) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
10582 (yyval.node) = new_args(p, (yyvsp[-1].node), Qnone, (yyvsp[0].id), Qnone, (yyval.node), &(yyloc));
10584#line 10580 "parse.c"
10588#line 3675 "parse.y"
10590 (yyval.node) = new_args(p, (yyvsp[-5].node), Qnone, (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10592#line 10588 "parse.c"
10596#line 3679 "parse.y"
10598 (yyval.node) = new_args(p, (yyvsp[-1].node), Qnone, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
10600#line 10596 "parse.c"
10604#line 3683 "parse.y"
10606 (yyval.node) = new_args(p, Qnone, (yyvsp[-3].node), (yyvsp[-1].id), Qnone, (yyvsp[0].node), &(yyloc));
10608#line 10604 "parse.c"
10612#line 3687 "parse.y"
10614 (yyval.node) = new_args(p, Qnone, (yyvsp[-5].node), (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10616#line 10612 "parse.c"
10620#line 3691 "parse.y"
10622 (yyval.node) = new_args(p, Qnone, (yyvsp[-1].node), Qnone, Qnone, (yyvsp[0].node), &(yyloc));
10624#line 10620 "parse.c"
10628#line 3695 "parse.y"
10630 (yyval.node) = new_args(p, Qnone, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10632#line 10628 "parse.c"
10636#line 3699 "parse.y"
10638 (yyval.node) = new_args(p, Qnone, Qnone, (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
10640#line 10636 "parse.c"
10644#line 3703 "parse.y"
10646 (yyval.node) = new_args(p, Qnone, Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10648#line 10644 "parse.c"
10652#line 3707 "parse.y"
10654 (yyval.node) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
10656#line 10652 "parse.c"
10660#line 3714 "parse.y"
10662 p->command_start = TRUE;
10664#line 10660 "parse.c"
10668#line 3720 "parse.y"
10671 p->max_numparam = ORDINAL_PARAM;
10672 p->ctxt.in_argdef = 0;
10678#line 10674 "parse.c"
10682#line 3730 "parse.y"
10685 p->max_numparam = ORDINAL_PARAM;
10686 p->ctxt.in_argdef = 0;
10688 (yyval.node) = (yyvsp[-2].node);
10692#line 10688 "parse.c"
10696#line 3743 "parse.y"
10700#line 10696 "parse.c"
10704#line 3747 "parse.y"
10711#line 10707 "parse.c"
10715#line 3762 "parse.y"
10717 new_bv(p, get_id((yyvsp[0].
id)));
10720#line 10716 "parse.c"
10724#line 3767 "parse.y"
10728#line 10724 "parse.c"
10732#line 3773 "parse.y"
10734 token_info_push(p,
"->", &(yylsp[0]));
10735 (yyvsp[0].vars) = dyna_push(p);
10736 (yyval.num) = p->lex.lpar_beg;
10737 p->lex.lpar_beg = p->lex.paren_nest;
10739#line 10735 "parse.c"
10743#line 3779 "parse.y"
10745 (yyval.num) = p->max_numparam;
10746 p->max_numparam = 0;
10748#line 10744 "parse.c"
10752#line 3783 "parse.y"
10754 (yyval.node) = numparam_push(p);
10756#line 10752 "parse.c"
10760#line 3787 "parse.y"
10764#line 10760 "parse.c"
10768#line 3791 "parse.y"
10770 int max_numparam = p->max_numparam;
10771 p->lex.lpar_beg = (yyvsp[-5].num);
10772 p->max_numparam = (yyvsp[-4].num);
10774 (yyvsp[-2].node) = args_with_numbered(p, (yyvsp[-2].node), max_numparam);
10777 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10778 (yyval.node) = NEW_LAMBDA((yyvsp[-2].node), (yyvsp[0].node), &loc);
10779 nd_set_line((yyval.node)->nd_body, (yylsp[0]).end_pos.lineno);
10780 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
10781 nd_set_first_loc((yyval.node), (yylsp[-6]).beg_pos);
10785 numparam_pop(p, (yyvsp[-3].node));
10786 dyna_pop(p, (yyvsp[-6].vars));
10788#line 10784 "parse.c"
10792#line 3813 "parse.y"
10794 p->ctxt.in_argdef = 0;
10796 (yyval.node) = (yyvsp[-2].node);
10797 p->max_numparam = ORDINAL_PARAM;
10801#line 10797 "parse.c"
10805#line 3822 "parse.y"
10807 p->ctxt.in_argdef = 0;
10809 if (!args_info_empty_p((yyvsp[0].node)->nd_ainfo))
10810 p->max_numparam = ORDINAL_PARAM;
10812 (yyval.node) = (yyvsp[0].node);
10814#line 10810 "parse.c"
10818#line 3833 "parse.y"
10820 token_info_pop(p,
"}", &(yylsp[0]));
10821 (yyval.node) = (yyvsp[-1].node);
10823#line 10819 "parse.c"
10827#line 3838 "parse.y"
10829 (yyval.node) = (yyvsp[-1].node);
10831#line 10827 "parse.c"
10835#line 3844 "parse.y"
10837 (yyval.node) = (yyvsp[-1].node);
10839 (yyval.node)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10840 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
10843#line 10839 "parse.c"
10847#line 3854 "parse.y"
10850 if (nd_type_p((yyvsp[-1].node), NODE_YIELD)) {
10851 compile_error(p,
"block given to yield");
10854 block_dup_check(p, (yyvsp[-1].node)->nd_args, (yyvsp[0].node));
10856 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
10857 fixpos((yyval.node), (yyvsp[-1].node));
10861#line 10857 "parse.c"
10865#line 3868 "parse.y"
10868 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
10872#line 10868 "parse.c"
10876#line 3875 "parse.y"
10879 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
10883#line 10879 "parse.c"
10887#line 3882 "parse.y"
10890 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
10894#line 10890 "parse.c"
10898#line 3891 "parse.y"
10901 (yyval.node) = (yyvsp[-1].node);
10902 (yyval.node)->nd_args = (yyvsp[0].node);
10903 nd_set_last_loc((yyvsp[-1].node), (yylsp[0]).end_pos);
10907#line 10903 "parse.c"
10911#line 3900 "parse.y"
10914 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
10915 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
10919#line 10915 "parse.c"
10923#line 3908 "parse.y"
10926 (yyval.node) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
10927 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
10931#line 10927 "parse.c"
10935#line 3916 "parse.y"
10938 (yyval.node) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-2].node), (yyvsp[0].
id), Qnull, &(yylsp[0]), &(yyloc));
10942#line 10938 "parse.c"
10946#line 3923 "parse.y"
10949 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), ID2VAL(idCall), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
10950 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
10954#line 10950 "parse.c"
10958#line 3931 "parse.y"
10961 (yyval.node) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-2].node), ID2VAL(idCall), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
10962 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
10966#line 10962 "parse.c"
10970#line 3939 "parse.y"
10973 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc));
10977#line 10973 "parse.c"
10981#line 3946 "parse.y"
10984 (yyval.node) = NEW_ZSUPER(&(yyloc));
10988#line 10984 "parse.c"
10992#line 3953 "parse.y"
10995 if ((yyvsp[-3].node) && nd_type_p((yyvsp[-3].node), NODE_SELF))
10996 (yyval.node) = NEW_FCALL(tAREF, (yyvsp[-1].node), &(yyloc));
10998 (yyval.node) = NEW_CALL((yyvsp[-3].node), tAREF, (yyvsp[-1].node), &(yyloc));
10999 fixpos((yyval.node), (yyvsp[-3].node));
11003#line 10999 "parse.c"
11007#line 3966 "parse.y"
11009 (yyval.node) = (yyvsp[-1].node);
11011 (yyval.node)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
11012 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
11015#line 11011 "parse.c"
11019#line 3974 "parse.y"
11021 (yyval.node) = (yyvsp[-1].node);
11023 (yyval.node)->nd_body->nd_loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
11024 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
11027#line 11023 "parse.c"
11031#line 3983 "parse.y"
11032 {(yyval.vars) = dyna_push(p);}
11033#line 11029 "parse.c"
11037#line 3984 "parse.y"
11039 (yyval.num) = p->max_numparam;
11040 p->max_numparam = 0;
11042#line 11038 "parse.c"
11046#line 3988 "parse.y"
11048 (yyval.node) = numparam_push(p);
11050#line 11046 "parse.c"
11054#line 3992 "parse.y"
11056 int max_numparam = p->max_numparam;
11057 p->max_numparam = (yyvsp[-3].num);
11058 (yyvsp[-1].node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
11060 (yyval.node) = NEW_ITER((yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11063 numparam_pop(p, (yyvsp[-2].node));
11064 dyna_pop(p, (yyvsp[-4].vars));
11066#line 11062 "parse.c"
11070#line 4005 "parse.y"
11071 {(yyval.vars) = dyna_push(p);}
11072#line 11068 "parse.c"
11076#line 4006 "parse.y"
11078 (yyval.num) = p->max_numparam;
11079 p->max_numparam = 0;
11081#line 11077 "parse.c"
11085#line 4010 "parse.y"
11087 (yyval.node) = numparam_push(p);
11090#line 11086 "parse.c"
11094#line 4015 "parse.y"
11096 int max_numparam = p->max_numparam;
11097 p->max_numparam = (yyvsp[-3].num);
11098 (yyvsp[-1].node) = args_with_numbered(p, (yyvsp[-1].node), max_numparam);
11100 (yyval.node) = NEW_ITER((yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11104 numparam_pop(p, (yyvsp[-2].node));
11105 dyna_pop(p, (yyvsp[-4].vars));
11107#line 11103 "parse.c"
11111#line 4030 "parse.y"
11114 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
11115 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
11119#line 11115 "parse.c"
11123#line 4038 "parse.y"
11126 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc));
11130#line 11126 "parse.c"
11134#line 4045 "parse.y"
11137 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
11138 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11142#line 11138 "parse.c"
11146#line 4053 "parse.y"
11149 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
11153#line 11149 "parse.c"
11157#line 4064 "parse.y"
11160 (yyval.node) = NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11161 fixpos((yyval.node), (yyvsp[-3].node));
11165#line 11161 "parse.c"
11169#line 4078 "parse.y"
11171 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
11172 p->command_start = FALSE;
11173 (yyvsp[0].ctxt) = p->ctxt;
11174 p->ctxt.in_kwarg = 1;
11175 (yyval.tbl) = push_pvtbl(p);
11177#line 11173 "parse.c"
11181#line 4085 "parse.y"
11183 (yyval.tbl) = push_pktbl(p);
11185#line 11181 "parse.c"
11189#line 4089 "parse.y"
11191 pop_pktbl(p, (yyvsp[-2].tbl));
11192 pop_pvtbl(p, (yyvsp[-3].tbl));
11193 p->ctxt.in_kwarg = (yyvsp[-4].ctxt).in_kwarg;
11195#line 11191 "parse.c"
11199#line 4096 "parse.y"
11202 (yyval.node) = NEW_IN((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
11206#line 11202 "parse.c"
11210#line 4110 "parse.y"
11213 (yyval.node) = new_if(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc));
11214 fixpos((yyval.node), (yyvsp[0].node));
11218#line 11214 "parse.c"
11222#line 4118 "parse.y"
11225 (yyval.node) = new_unless(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc));
11226 fixpos((yyval.node), (yyvsp[0].node));
11230#line 11226 "parse.c"
11234#line 4129 "parse.y"
11236 (yyval.node) = new_array_pattern_tail(p, Qnone, 1, 0, Qnone, &(yyloc));
11237 (yyval.node) = new_array_pattern(p, Qnone, get_value((yyvsp[-1].node)), (yyval.node), &(yyloc));
11239#line 11235 "parse.c"
11243#line 4134 "parse.y"
11245 (yyval.node) = new_array_pattern(p, Qnone, get_value((yyvsp[-2].node)), (yyvsp[0].node), &(yyloc));
11247 nd_set_first_loc((yyval.node), (yylsp[-2]).beg_pos);
11251#line 11247 "parse.c"
11255#line 4142 "parse.y"
11257 (yyval.node) = new_find_pattern(p, Qnone, (yyvsp[0].node), &(yyloc));
11259#line 11255 "parse.c"
11263#line 4146 "parse.y"
11265 (yyval.node) = new_array_pattern(p, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
11267#line 11263 "parse.c"
11271#line 4150 "parse.y"
11273 (yyval.node) = new_hash_pattern(p, Qnone, (yyvsp[0].node), &(yyloc));
11275#line 11271 "parse.c"
11279#line 4159 "parse.y"
11282 NODE *n = NEW_LIST((yyvsp[-2].node), &(yyloc));
11283 n = list_append(p, n, (yyvsp[0].node));
11284 (yyval.node) = new_hash(p, n, &(yyloc));
11288#line 11284 "parse.c"
11292#line 4171 "parse.y"
11295 (yyval.node) = NEW_NODE(NODE_OR, (yyvsp[-2].node), (yyvsp[0].node), 0, &(yyloc));
11299#line 11295 "parse.c"
11303#line 4180 "parse.y"
11304 {(yyval.tbl) = push_pktbl(p);}
11305#line 11301 "parse.c"
11309#line 4181 "parse.y"
11310 {(yyval.tbl) = push_pktbl(p);}
11311#line 11307 "parse.c"
11315#line 4186 "parse.y"
11317 pop_pktbl(p, (yyvsp[-2].tbl));
11318 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), &(yyloc));
11320 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
11324#line 11320 "parse.c"
11328#line 4195 "parse.y"
11330 pop_pktbl(p, (yyvsp[-2].tbl));
11331 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
11333 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
11337#line 11333 "parse.c"
11341#line 4204 "parse.y"
11343 pop_pktbl(p, (yyvsp[-2].tbl));
11344 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
11346 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
11350#line 11346 "parse.c"
11354#line 4213 "parse.y"
11356 (yyval.node) = new_array_pattern_tail(p, Qnone, 0, 0, Qnone, &(yyloc));
11357 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), Qnone, (yyval.node), &(yyloc));
11359#line 11355 "parse.c"
11363#line 4218 "parse.y"
11365 pop_pktbl(p, (yyvsp[-2].tbl));
11366 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), &(yyloc));
11368 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
11372#line 11368 "parse.c"
11376#line 4227 "parse.y"
11378 pop_pktbl(p, (yyvsp[-2].tbl));
11379 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
11381 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
11385#line 11381 "parse.c"
11389#line 4236 "parse.y"
11391 pop_pktbl(p, (yyvsp[-2].tbl));
11392 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
11394 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
11398#line 11394 "parse.c"
11402#line 4245 "parse.y"
11404 (yyval.node) = new_array_pattern_tail(p, Qnone, 0, 0, Qnone, &(yyloc));
11405 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), Qnone, (yyval.node), &(yyloc));
11407#line 11403 "parse.c"
11411#line 4250 "parse.y"
11413 (yyval.node) = new_array_pattern(p, Qnone, Qnone, (yyvsp[-1].node), &(yyloc));
11415#line 11411 "parse.c"
11419#line 4254 "parse.y"
11421 (yyval.node) = new_find_pattern(p, Qnone, (yyvsp[-1].node), &(yyloc));
11423#line 11419 "parse.c"
11427#line 4258 "parse.y"
11429 (yyval.node) = new_array_pattern_tail(p, Qnone, 0, 0, Qnone, &(yyloc));
11430 (yyval.node) = new_array_pattern(p, Qnone, Qnone, (yyval.node), &(yyloc));
11432#line 11428 "parse.c"
11436#line 4263 "parse.y"
11438 (yyval.tbl) = push_pktbl(p);
11439 (yyvsp[0].ctxt) = p->ctxt;
11440 p->ctxt.in_kwarg = 0;
11442#line 11438 "parse.c"
11446#line 4269 "parse.y"
11448 pop_pktbl(p, (yyvsp[-2].tbl));
11449 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
11450 (yyval.node) = new_hash_pattern(p, Qnone, (yyvsp[-1].node), &(yyloc));
11452#line 11448 "parse.c"
11456#line 4275 "parse.y"
11458 (yyval.node) = new_hash_pattern_tail(p, Qnone, 0, &(yyloc));
11459 (yyval.node) = new_hash_pattern(p, Qnone, (yyval.node), &(yyloc));
11461#line 11457 "parse.c"
11465#line 4279 "parse.y"
11466 {(yyval.tbl) = push_pktbl(p);}
11467#line 11463 "parse.c"
11471#line 4280 "parse.y"
11473 pop_pktbl(p, (yyvsp[-2].tbl));
11474 (yyval.node) = (yyvsp[-1].node);
11476#line 11472 "parse.c"
11480#line 4287 "parse.y"
11483 NODE *pre_args = NEW_LIST((yyvsp[0].node), &(yyloc));
11484 (yyval.node) = new_array_pattern_tail(p, pre_args, 0, 0, Qnone, &(yyloc));
11489#line 11485 "parse.c"
11493#line 4296 "parse.y"
11495 (yyval.node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0, Qnone, &(yyloc));
11497#line 11493 "parse.c"
11501#line 4300 "parse.y"
11504 (yyval.node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, 0, Qnone, &(yyloc));
11510#line 11506 "parse.c"
11514#line 4309 "parse.y"
11516 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-2].node), 1, (yyvsp[0].id), Qnone, &(yyloc));
11518#line 11514 "parse.c"
11522#line 4313 "parse.y"
11524 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-4].node), 1, (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
11526#line 11522 "parse.c"
11530#line 4317 "parse.y"
11532 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, 0, Qnone, &(yyloc));
11534#line 11530 "parse.c"
11538#line 4321 "parse.y"
11540 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, 0, (yyvsp[0].node), &(yyloc));
11542#line 11538 "parse.c"
11546#line 4328 "parse.y"
11548 (yyval.node) = (yyvsp[-1].node);
11550#line 11546 "parse.c"
11554#line 4332 "parse.y"
11557 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
11561#line 11557 "parse.c"
11565#line 4341 "parse.y"
11567 (yyval.node) = new_array_pattern_tail(p, Qnone, 1, (yyvsp[0].
id), Qnone, &(yyloc));
11569#line 11565 "parse.c"
11573#line 4345 "parse.y"
11575 (yyval.node) = new_array_pattern_tail(p, Qnone, 1, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
11577#line 11573 "parse.c"
11581#line 4351 "parse.y"
11583 (yyval.node) = new_find_pattern_tail(p, (yyvsp[-4].
id), (yyvsp[-2].node), (yyvsp[0].
id), &(yyloc));
11586 rb_warn0L_experimental(nd_line((yyval.node)),
"Find pattern is experimental, and the behavior may change in future versions of Ruby!");
11588#line 11584 "parse.c"
11592#line 4361 "parse.y"
11594 (yyval.id) = (yyvsp[0].
id);
11596#line 11592 "parse.c"
11600#line 4365 "parse.y"
11604#line 11600 "parse.c"
11608#line 4372 "parse.y"
11611 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
11615#line 11611 "parse.c"
11619#line 4381 "parse.y"
11622 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
11626#line 11622 "parse.c"
11630#line 4390 "parse.y"
11632 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].id), &(yyloc));
11634#line 11630 "parse.c"
11638#line 4394 "parse.y"
11640 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
11642#line 11638 "parse.c"
11646#line 4398 "parse.y"
11648 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
11650#line 11646 "parse.c"
11654#line 4402 "parse.y"
11656 (yyval.node) = new_hash_pattern_tail(p, new_hash(p, Qnone, &(yyloc)), (yyvsp[0].
id), &(yyloc));
11658#line 11654 "parse.c"
11662#line 4410 "parse.y"
11665 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
11669#line 11665 "parse.c"
11673#line 4419 "parse.y"
11675 error_duplicate_pattern_key(p, get_id((yyvsp[-1].
id)), &(yylsp[-1]));
11677 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[-1].
id)), &(yyloc)), &(yyloc)), (yyvsp[0].node));
11681#line 11677 "parse.c"
11685#line 4427 "parse.y"
11687 error_duplicate_pattern_key(p, get_id((yyvsp[0].
id)), &(yylsp[0]));
11688 if ((yyvsp[0].
id) && !is_local_id(get_id((yyvsp[0].
id)))) {
11689 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
11691 error_duplicate_pattern_variable(p, get_id((yyvsp[0].
id)), &(yylsp[0]));
11693 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
11697#line 11693 "parse.c"
11701#line 4442 "parse.y"
11703 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
11705 if (!(yyvsp[-1].node) || nd_type_p((yyvsp[-1].node), NODE_STR)) {
11706 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
11707 (yyval.id) =
SYM2ID(node->nd_lit);
11718 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
11722#line 11718 "parse.c"
11726#line 4465 "parse.y"
11728 (yyval.id) = (yyvsp[0].
id);
11730#line 11726 "parse.c"
11734#line 4469 "parse.y"
11738#line 11734 "parse.c"
11742#line 4475 "parse.y"
11746#line 11742 "parse.c"
11750#line 4481 "parse.y"
11751 {(yyval.id) = ID2VAL(idNil);}
11752#line 11748 "parse.c"
11756#line 4486 "parse.y"
11759 value_expr((yyvsp[-2].node));
11760 value_expr((yyvsp[0].node));
11761 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11765#line 11761 "parse.c"
11769#line 4495 "parse.y"
11772 value_expr((yyvsp[-2].node));
11773 value_expr((yyvsp[0].node));
11774 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11778#line 11774 "parse.c"
11782#line 4504 "parse.y"
11785 value_expr((yyvsp[-1].node));
11786 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
11790#line 11786 "parse.c"
11794#line 4512 "parse.y"
11797 value_expr((yyvsp[-1].node));
11798 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
11802#line 11798 "parse.c"
11806#line 4523 "parse.y"
11809 value_expr((yyvsp[0].node));
11810 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
11814#line 11810 "parse.c"
11818#line 4531 "parse.y"
11821 value_expr((yyvsp[0].node));
11822 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
11826#line 11822 "parse.c"
11830#line 4549 "parse.y"
11833 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
11837#line 11833 "parse.c"
11841#line 4559 "parse.y"
11844 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
11845 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11849#line 11845 "parse.c"
11853#line 4569 "parse.y"
11856 NODE *n = gettable(p, (yyvsp[0].
id), &(yyloc));
11857 if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
11858 compile_error(p,
"%"PRIsVALUE
": no such local variable",
rb_id2str((yyvsp[0].
id)));
11864#line 11860 "parse.c"
11868#line 4580 "parse.y"
11871 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
11875#line 11871 "parse.c"
11879#line 4589 "parse.y"
11882 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
11886#line 11882 "parse.c"
11890#line 4598 "parse.y"
11893 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
11897#line 11893 "parse.c"
11901#line 4605 "parse.y"
11904 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
11908#line 11904 "parse.c"
11912#line 4612 "parse.y"
11915 (yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc));
11919#line 11915 "parse.c"
11923#line 4623 "parse.y"
11926 (yyval.node) = NEW_RESBODY((yyvsp[-4].node),
11927 (yyvsp[-3].node) ? block_append(p, node_assign(p, (yyvsp[-3].node), NEW_ERRINFO(&(yylsp[-3])), NO_LEX_CTXT, &(yylsp[-3])), (yyvsp[-1].node)) : (yyvsp[-1].node),
11928 (yyvsp[0].node), &(yyloc));
11929 fixpos((yyval.node), (yyvsp[-4].node)?(yyvsp[-4].node):(yyvsp[-1].node));
11933#line 11929 "parse.c"
11937#line 4636 "parse.y"
11940 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
11944#line 11940 "parse.c"
11948#line 4643 "parse.y"
11951 if (!((yyval.node) = splat_array((yyvsp[0].node)))) (yyval.node) = (yyvsp[0].node);
11955#line 11951 "parse.c"
11959#line 4653 "parse.y"
11961 (yyval.node) = (yyvsp[0].node);
11963#line 11959 "parse.c"
11967#line 4660 "parse.y"
11970 (yyval.node) = (yyvsp[0].node);
11974#line 11970 "parse.c"
11978#line 4674 "parse.y"
11981 NODE *node = (yyvsp[0].node);
11983 node = NEW_STR(STR_NEW0(), &(yyloc));
11987 node = evstr2dstr(p, node);
11989 (yyval.node) = node;
11993#line 11989 "parse.c"
11997#line 4693 "parse.y"
12000 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12004#line 12000 "parse.c"
12008#line 4702 "parse.y"
12011 (yyval.node) = heredoc_dedent(p, (yyvsp[-1].node));
12012 if ((yyval.node)) nd_set_loc((yyval.node), &(yyloc));
12016#line 12012 "parse.c"
12020#line 4712 "parse.y"
12023 (yyval.node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
12027#line 12023 "parse.c"
12031#line 4721 "parse.y"
12033 (yyval.node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc));
12035#line 12031 "parse.c"
12039#line 4727 "parse.y"
12042 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
12046#line 12042 "parse.c"
12050#line 4736 "parse.y"
12057#line 12053 "parse.c"
12061#line 4743 "parse.y"
12064 (yyval.node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
12068#line 12064 "parse.c"
12072#line 4754 "parse.y"
12075 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12079#line 12075 "parse.c"
12083#line 4763 "parse.y"
12086 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
12090#line 12086 "parse.c"
12094#line 4772 "parse.y"
12101#line 12097 "parse.c"
12105#line 4779 "parse.y"
12108 (yyval.node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
12112#line 12108 "parse.c"
12116#line 4788 "parse.y"
12119 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
12123#line 12119 "parse.c"
12127#line 4797 "parse.y"
12130 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
12134#line 12130 "parse.c"
12138#line 4806 "parse.y"
12145#line 12141 "parse.c"
12149#line 4813 "parse.y"
12152 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
12156#line 12152 "parse.c"
12160#line 4822 "parse.y"
12167#line 12163 "parse.c"
12171#line 4829 "parse.y"
12174 (yyval.node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
12178#line 12174 "parse.c"
12182#line 4838 "parse.y"
12193#line 12189 "parse.c"
12197#line 4849 "parse.y"
12200 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12213#line 12209 "parse.c"
12217#line 4867 "parse.y"
12224#line 12220 "parse.c"
12228#line 4874 "parse.y"
12231 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12235#line 12231 "parse.c"
12239#line 4883 "parse.y"
12250#line 12246 "parse.c"
12254#line 4894 "parse.y"
12257 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
12259 (yyval.node) = tail;
12262 (yyval.node) = head;
12265 switch (nd_type(head)) {
12267 nd_set_type(head, NODE_DSTR);
12272 head = list_append(p, NEW_DSTR(
Qnil, &(yyloc)), head);
12275 (yyval.node) = list_append(p, head, tail);
12293#line 12289 "parse.c"
12297#line 4937 "parse.y"
12300 (yyval.strterm) = p->lex.strterm;
12301 p->lex.strterm = 0;
12302 SET_LEX_STATE(EXPR_BEG);
12304#line 12300 "parse.c"
12308#line 4944 "parse.y"
12310 p->lex.strterm = (yyvsp[-1].strterm);
12312 (yyval.node) = NEW_EVSTR((yyvsp[0].node), &(yyloc));
12313 nd_set_line((yyval.node), (yylsp[0]).end_pos.lineno);
12317#line 12313 "parse.c"
12321#line 4953 "parse.y"
12326#line 12322 "parse.c"
12330#line 4957 "parse.y"
12333 (yyval.strterm) = p->lex.strterm;
12334 p->lex.strterm = 0;
12336#line 12332 "parse.c"
12340#line 4962 "parse.y"
12342 (yyval.num) = p->lex.state;
12343 SET_LEX_STATE(EXPR_BEG);
12345#line 12341 "parse.c"
12349#line 4966 "parse.y"
12351 (yyval.num) = p->lex.brace_nest;
12352 p->lex.brace_nest = 0;
12354#line 12350 "parse.c"
12358#line 4970 "parse.y"
12360 (yyval.num) = p->heredoc_indent;
12361 p->heredoc_indent = 0;
12363#line 12359 "parse.c"
12367#line 4975 "parse.y"
12371 p->lex.strterm = (yyvsp[-5].strterm);
12372 SET_LEX_STATE((yyvsp[-4].num));
12373 p->lex.brace_nest = (yyvsp[-3].num);
12374 p->heredoc_indent = (yyvsp[-2].num);
12375 p->heredoc_line_indent = -1;
12377 if ((yyvsp[-1].node)) (yyvsp[-1].node)->flags &= ~NODE_FL_NEWLINE;
12378 (yyval.node) = new_evstr(p, (yyvsp[-1].node), &(yyloc));
12382#line 12378 "parse.c"
12386#line 4992 "parse.y"
12389 (yyval.node) = NEW_GVAR((yyvsp[0].
id), &(yyloc));
12393#line 12389 "parse.c"
12397#line 4999 "parse.y"
12400 (yyval.node) = NEW_IVAR((yyvsp[0].
id), &(yyloc));
12404#line 12400 "parse.c"
12408#line 5006 "parse.y"
12411 (yyval.node) = NEW_CVAR((yyvsp[0].
id), &(yyloc));
12415#line 12411 "parse.c"
12419#line 5020 "parse.y"
12421 SET_LEX_STATE(EXPR_END);
12423 (yyval.node) = NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc));
12427#line 12423 "parse.c"
12431#line 5036 "parse.y"
12433 SET_LEX_STATE(EXPR_END);
12435 (yyval.node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
12439#line 12435 "parse.c"
12443#line 5047 "parse.y"
12446 (yyval.node) = (yyvsp[0].node);
12447 RB_OBJ_WRITE(p->ast, &(yyval.node)->nd_lit, negate_lit(p, (yyval.node)->nd_lit));
12451#line 12447 "parse.c"
12455#line 5074 "parse.y"
12456 {(yyval.id) = KWD2EID(nil, (yyvsp[0].
id));}
12457#line 12453 "parse.c"
12461#line 5075 "parse.y"
12462 {(yyval.id) = KWD2EID(
self, (yyvsp[0].
id));}
12463#line 12459 "parse.c"
12467#line 5076 "parse.y"
12468 {(yyval.id) = KWD2EID(
true, (yyvsp[0].
id));}
12469#line 12465 "parse.c"
12473#line 5077 "parse.y"
12474 {(yyval.id) = KWD2EID(
false, (yyvsp[0].
id));}
12475#line 12471 "parse.c"
12479#line 5078 "parse.y"
12480 {(yyval.id) = KWD2EID(_FILE__, (yyvsp[0].
id));}
12481#line 12477 "parse.c"
12485#line 5079 "parse.y"
12486 {(yyval.id) = KWD2EID(_LINE__, (yyvsp[0].
id));}
12487#line 12483 "parse.c"
12491#line 5080 "parse.y"
12492 {(yyval.id) = KWD2EID(_ENCODING__, (yyvsp[0].
id));}
12493#line 12489 "parse.c"
12497#line 5084 "parse.y"
12500 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
12510#line 12506 "parse.c"
12514#line 5097 "parse.y"
12517 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
12521#line 12517 "parse.c"
12525#line 5106 "parse.y"
12528 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
12532#line 12528 "parse.c"
12536#line 5113 "parse.y"
12539 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
12543#line 12539 "parse.c"
12547#line 5126 "parse.y"
12549 SET_LEX_STATE(EXPR_BEG);
12550 p->command_start = TRUE;
12552#line 12548 "parse.c"
12556#line 5131 "parse.y"
12558 (yyval.node) = (yyvsp[-1].node);
12560#line 12556 "parse.c"
12564#line 5135 "parse.y"
12571#line 12567 "parse.c"
12575#line 5145 "parse.y"
12577 p->ctxt.in_argdef = 0;
12578 (yyval.node) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[-1]));
12579 (yyval.node) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyval.node), &(yylsp[-1]));
12581#line 12577 "parse.c"
12585#line 5153 "parse.y"
12588 (yyval.node) = (yyvsp[-1].node);
12591 SET_LEX_STATE(EXPR_BEG);
12592 p->command_start = TRUE;
12593 p->ctxt.in_argdef = 0;
12595#line 12591 "parse.c"
12599#line 5165 "parse.y"
12601 (yyval.ctxt) = p->ctxt;
12602 p->ctxt.in_kwarg = 1;
12603 p->ctxt.in_argdef = 1;
12604 SET_LEX_STATE(p->lex.state|EXPR_LABEL);
12606#line 12602 "parse.c"
12610#line 5172 "parse.y"
12612 p->ctxt.in_kwarg = (yyvsp[-2].ctxt).in_kwarg;
12613 p->ctxt.in_argdef = 0;
12614 (yyval.node) = (yyvsp[-1].node);
12615 SET_LEX_STATE(EXPR_BEG);
12616 p->command_start = TRUE;
12618#line 12614 "parse.c"
12622#line 5182 "parse.y"
12624 (yyval.node) = new_args_tail(p, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
12626#line 12622 "parse.c"
12630#line 5186 "parse.y"
12632 (yyval.node) = new_args_tail(p, (yyvsp[-1].node), Qnone, (yyvsp[0].id), &(yylsp[-1]));
12634#line 12630 "parse.c"
12638#line 5190 "parse.y"
12640 (yyval.node) = new_args_tail(p, Qnone, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
12642#line 12638 "parse.c"
12646#line 5194 "parse.y"
12648 (yyval.node) = new_args_tail(p, Qnone, Qnone, (yyvsp[0].
id), &(yylsp[0]));
12650#line 12646 "parse.c"
12654#line 5198 "parse.y"
12656 add_forwarding_args(p);
12657 (yyval.node) = new_args_tail(p, Qnone, (yyvsp[0].
id), ID2VAL(idFWD_BLOCK), &(yylsp[0]));
12659#line 12655 "parse.c"
12663#line 5205 "parse.y"
12665 (yyval.node) = (yyvsp[0].node);
12667#line 12663 "parse.c"
12671#line 5209 "parse.y"
12673 (yyval.node) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
12675#line 12671 "parse.c"
12679#line 5215 "parse.y"
12681 (yyval.node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
12683#line 12679 "parse.c"
12687#line 5219 "parse.y"
12689 (yyval.node) = new_args(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12691#line 12687 "parse.c"
12695#line 5223 "parse.y"
12697 (yyval.node) = new_args(p, (yyvsp[-3].node), (yyvsp[-1].node), Qnone, Qnone, (yyvsp[0].node), &(yyloc));
12699#line 12695 "parse.c"
12703#line 5227 "parse.y"
12705 (yyval.node) = new_args(p, (yyvsp[-5].node), (yyvsp[-3].node), Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12707#line 12703 "parse.c"
12711#line 5231 "parse.y"
12713 (yyval.node) = new_args(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].id), Qnone, (yyvsp[0].node), &(yyloc));
12715#line 12711 "parse.c"
12719#line 5235 "parse.y"
12721 (yyval.node) = new_args(p, (yyvsp[-5].node), Qnone, (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12723#line 12719 "parse.c"
12727#line 5239 "parse.y"
12729 (yyval.node) = new_args(p, (yyvsp[-1].node), Qnone, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
12731#line 12727 "parse.c"
12735#line 5243 "parse.y"
12737 (yyval.node) = new_args(p, Qnone, (yyvsp[-3].node), (yyvsp[-1].id), Qnone, (yyvsp[0].node), &(yyloc));
12739#line 12735 "parse.c"
12743#line 5247 "parse.y"
12745 (yyval.node) = new_args(p, Qnone, (yyvsp[-5].node), (yyvsp[-3].id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12747#line 12743 "parse.c"
12751#line 5251 "parse.y"
12753 (yyval.node) = new_args(p, Qnone, (yyvsp[-1].node), Qnone, Qnone, (yyvsp[0].node), &(yyloc));
12755#line 12751 "parse.c"
12759#line 5255 "parse.y"
12761 (yyval.node) = new_args(p, Qnone, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12763#line 12759 "parse.c"
12767#line 5259 "parse.y"
12769 (yyval.node) = new_args(p, Qnone, Qnone, (yyvsp[-1].
id), Qnone, (yyvsp[0].node), &(yyloc));
12771#line 12767 "parse.c"
12775#line 5263 "parse.y"
12777 (yyval.node) = new_args(p, Qnone, Qnone, (yyvsp[-3].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
12779#line 12775 "parse.c"
12783#line 5267 "parse.y"
12785 (yyval.node) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
12787#line 12783 "parse.c"
12791#line 5271 "parse.y"
12793 (yyval.node) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
12794 (yyval.node) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyval.node), &(yylsp[0]));
12796#line 12792 "parse.c"
12800#line 5278 "parse.y"
12803 (yyval.id) = idFWD_KWREST;
12807#line 12803 "parse.c"
12811#line 5287 "parse.y"
12813 static const char mesg[] =
"formal argument cannot be a constant";
12815 yyerror1(&(yylsp[0]), mesg);
12820#line 12816 "parse.c"
12824#line 5296 "parse.y"
12826 static const char mesg[] =
"formal argument cannot be an instance variable";
12828 yyerror1(&(yylsp[0]), mesg);
12833#line 12829 "parse.c"
12837#line 5305 "parse.y"
12839 static const char mesg[] =
"formal argument cannot be a global variable";
12841 yyerror1(&(yylsp[0]), mesg);
12846#line 12842 "parse.c"
12850#line 5314 "parse.y"
12852 static const char mesg[] =
"formal argument cannot be a class variable";
12854 yyerror1(&(yylsp[0]), mesg);
12859#line 12855 "parse.c"
12863#line 5326 "parse.y"
12865 formal_argument(p, (yyvsp[0].
id));
12866 p->max_numparam = ORDINAL_PARAM;
12867 (yyval.id) = (yyvsp[0].
id);
12869#line 12865 "parse.c"
12873#line 5334 "parse.y"
12875 ID
id = get_id((yyvsp[0].
id));
12878 (yyval.id) = (yyvsp[0].
id);
12880#line 12876 "parse.c"
12884#line 5343 "parse.y"
12888 (yyval.node) = NEW_ARGS_AUX((yyvsp[0].
id), 1, &NULL_LOC);
12892#line 12888 "parse.c"
12896#line 5351 "parse.y"
12899 ID tid = internal_id(p);
12901 loc.beg_pos = (yylsp[-1]).beg_pos;
12902 loc.end_pos = (yylsp[-1]).beg_pos;
12904 if (dyna_in_block(p)) {
12905 (yyvsp[-1].node)->nd_value = NEW_DVAR(tid, &loc);
12908 (yyvsp[-1].node)->nd_value = NEW_LVAR(tid, &loc);
12910 (yyval.node) = NEW_ARGS_AUX(tid, 1, &NULL_LOC);
12911 (yyval.node)->nd_next = (yyvsp[-1].node);
12915#line 12911 "parse.c"
12919#line 5374 "parse.y"
12922 (yyval.node) = (yyvsp[-2].node);
12923 (yyval.node)->nd_plen++;
12924 (yyval.node)->nd_next = block_append(p, (yyval.node)->nd_next, (yyvsp[0].node)->nd_next);
12925 rb_discard_node(p, (yyvsp[0].node));
12929#line 12925 "parse.c"
12933#line 5387 "parse.y"
12935 arg_var(p, formal_argument(p, (yyvsp[0].
id)));
12936 p->cur_arg = get_id((yyvsp[0].
id));
12937 p->max_numparam = ORDINAL_PARAM;
12938 p->ctxt.in_argdef = 0;
12939 (yyval.id) = (yyvsp[0].
id);
12941#line 12937 "parse.c"
12945#line 5397 "parse.y"
12948 p->ctxt.in_argdef = 1;
12950 (yyval.node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
12954#line 12950 "parse.c"
12958#line 5406 "parse.y"
12961 p->ctxt.in_argdef = 1;
12963 (yyval.node) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
12967#line 12963 "parse.c"
12971#line 5417 "parse.y"
12973 p->ctxt.in_argdef = 1;
12975 (yyval.node) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
12979#line 12975 "parse.c"
12983#line 5425 "parse.y"
12985 p->ctxt.in_argdef = 1;
12987 (yyval.node) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
12991#line 12987 "parse.c"
12995#line 5435 "parse.y"
12998 (yyval.node) = (yyvsp[0].node);
13002#line 12998 "parse.c"
13006#line 5442 "parse.y"
13009 (yyval.node) = kwd_append((yyvsp[-2].node), (yyvsp[0].node));
13013#line 13009 "parse.c"
13017#line 5452 "parse.y"
13020 (yyval.node) = (yyvsp[0].node);
13024#line 13020 "parse.c"
13028#line 5459 "parse.y"
13031 (yyval.node) = kwd_append((yyvsp[-2].node), (yyvsp[0].node));
13035#line 13031 "parse.c"
13039#line 5472 "parse.y"
13045#line 13041 "parse.c"
13049#line 5480 "parse.y"
13051 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].
id))));
13053 (yyval.id) = (yyvsp[0].
id);
13057#line 13053 "parse.c"
13061#line 5488 "parse.y"
13064 (yyval.id) = internal_id(p);
13065 arg_var(p, (yyval.id));
13069#line 13065 "parse.c"
13073#line 5498 "parse.y"
13076 p->ctxt.in_argdef = 1;
13078 (yyval.node) = NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
13082#line 13078 "parse.c"
13086#line 5509 "parse.y"
13089 p->ctxt.in_argdef = 1;
13091 (yyval.node) = NEW_OPT_ARG(0, assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
13095#line 13091 "parse.c"
13099#line 5520 "parse.y"
13102 (yyval.node) = (yyvsp[0].node);
13106#line 13102 "parse.c"
13110#line 5527 "parse.y"
13113 (yyval.node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].node));
13117#line 13113 "parse.c"
13121#line 5536 "parse.y"
13124 (yyval.node) = (yyvsp[0].node);
13128#line 13124 "parse.c"
13132#line 5543 "parse.y"
13135 (yyval.node) = opt_arg_append((yyvsp[-2].node), (yyvsp[0].node));
13139#line 13135 "parse.c"
13143#line 5556 "parse.y"
13145 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].
id))));
13147 (yyval.id) = (yyvsp[0].
id);
13151#line 13147 "parse.c"
13155#line 5564 "parse.y"
13158 (yyval.id) = internal_id(p);
13159 arg_var(p, (yyval.id));
13163#line 13159 "parse.c"
13167#line 5578 "parse.y"
13169 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].
id))));
13171 (yyval.id) = (yyvsp[0].
id);
13175#line 13171 "parse.c"
13179#line 5586 "parse.y"
13182 arg_var(p, shadowing_lvar(p, get_id(ANON_BLOCK_ID)));
13187#line 13183 "parse.c"
13191#line 5596 "parse.y"
13193 (yyval.id) = (yyvsp[0].
id);
13195#line 13191 "parse.c"
13199#line 5600 "parse.y"
13201 (yyval.id) = Qnull;
13203#line 13199 "parse.c"
13207#line 5606 "parse.y"
13209 value_expr((yyvsp[0].node));
13210 (yyval.node) = (yyvsp[0].node);
13212#line 13208 "parse.c"
13216#line 5610 "parse.y"
13217 {SET_LEX_STATE(EXPR_BEG);}
13218#line 13214 "parse.c"
13222#line 5611 "parse.y"
13225 switch (nd_type((yyvsp[-1].node))) {
13234 yyerror1(&(yylsp[-1]),
"can't define singleton method for literals");
13237 value_expr((yyvsp[-1].node));
13240 (yyval.node) = (yyvsp[-1].node);
13244#line 13240 "parse.c"
13248#line 5636 "parse.y"
13251 (yyval.node) = (yyvsp[-1].node);
13255#line 13251 "parse.c"
13259#line 5647 "parse.y"
13262 NODE *assocs = (yyvsp[-2].node);
13263 NODE *tail = (yyvsp[0].node);
13268 if (assocs->nd_head &&
13269 !tail->nd_head && nd_type_p(tail->nd_next, NODE_LIST) &&
13270 nd_type_p(tail->nd_next->nd_head, NODE_HASH)) {
13272 tail = tail->nd_next->nd_head->nd_head;
13274 assocs = list_concat(assocs, tail);
13276 (yyval.node) = assocs;
13280#line 13276 "parse.c"
13284#line 5670 "parse.y"
13287 if (nd_type_p((yyvsp[-2].node), NODE_STR)) {
13288 nd_set_type((yyvsp[-2].node), NODE_LIT);
13289 RB_OBJ_WRITE(p->ast, &(yyvsp[-2].node)->nd_lit, rb_fstring((yyvsp[-2].node)->nd_lit));
13291 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
13295#line 13291 "parse.c"
13299#line 5681 "parse.y"
13302 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
13306#line 13302 "parse.c"
13310#line 5688 "parse.y"
13313 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
13314 if (!val) val = NEW_BEGIN(0, &(yyloc));
13315 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
13319#line 13315 "parse.c"
13323#line 5697 "parse.y"
13326 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
13327 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
13331#line 13327 "parse.c"
13335#line 5705 "parse.y"
13338 if (nd_type_p((yyvsp[0].node), NODE_HASH) &&
13339 !((yyvsp[0].node)->nd_head && (yyvsp[0].node)->nd_head->nd_alen)) {
13340 static VALUE empty_hash;
13345 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), NEW_LIT(empty_hash, &(yyloc)));
13348 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
13352#line 13348 "parse.c"
13356#line 5773 "parse.y"
13357 {yyerrok;token_flush(p);}
13358#line 13354 "parse.c"
13362#line 5774 "parse.y"
13364#line 13360 "parse.c"
13368#line 5778 "parse.y"
13370#line 13366 "parse.c"
13374#line 5782 "parse.y"
13376 (yyval.node) = Qnull;
13378#line 13374 "parse.c"
13382#line 13378 "parse.c"
13397 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
13399 YYPOPSTACK (yylen);
13409 const int yylhs = yyr1[yyn] - YYNTOKENS;
13410 const int yyi = yypgoto[yylhs] + *yyssp;
13411 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
13413 : yydefgoto[yylhs]);
13425 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
13432 = {yyssp, yytoken, &yylloc};
13433 char const *yymsgp = YY_(
"syntax error");
13434 int yysyntax_error_status;
13435 yysyntax_error_status = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
13436 if (yysyntax_error_status == 0)
13438 else if (yysyntax_error_status == -1)
13440 if (yymsg != yymsgbuf)
13441 YYSTACK_FREE (yymsg);
13442 yymsg = YY_CAST (
char *,
13443 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
13446 yysyntax_error_status
13447 = yysyntax_error (p, &yymsg_alloc, &yymsg, &yyctx);
13453 yymsg_alloc =
sizeof yymsgbuf;
13454 yysyntax_error_status = YYENOMEM;
13457 yyerror (&yylloc, p, yymsgp);
13458 if (yysyntax_error_status == YYENOMEM)
13463 yyerror_range[1] = yylloc;
13464 if (yyerrstatus == 3)
13469 if (yychar <= END_OF_INPUT)
13472 if (yychar == END_OF_INPUT)
13477 yydestruct (
"Error: discarding",
13478 yytoken, &yylval, &yylloc, p);
13500 YYPOPSTACK (yylen);
13502 YY_STACK_PRINT (yyss, yyssp);
13516 yyn = yypact[yystate];
13517 if (!yypact_value_is_default (yyn))
13519 yyn += YYSYMBOL_YYerror;
13520 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
13522 yyn = yytable[yyn];
13532 yyerror_range[1] = *yylsp;
13533 yydestruct (
"Error: popping",
13534 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
13537 YY_STACK_PRINT (yyss, yyssp);
13540 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
13542 YY_IGNORE_MAYBE_UNINITIALIZED_END
13544 yyerror_range[2] = yylloc;
13546 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
13549 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
13575 yyerror (&yylloc, p, YY_(
"memory exhausted"));
13584 if (yychar != YYEMPTY)
13588 yytoken = YYTRANSLATE (yychar);
13589 yydestruct (
"Cleanup: discarding lookahead",
13590 yytoken, &yylval, &yylloc, p);
13594 YYPOPSTACK (yylen);
13595 YY_STACK_PRINT (yyss, yyssp);
13596 while (yyssp != yyss)
13598 yydestruct (
"Cleanup: popping",
13599 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
13604 YYSTACK_FREE (yyss);
13606 if (yymsg != yymsgbuf)
13607 YYSTACK_FREE (yymsg);
13611#line 5786 "parse.y"
13616# define yylval (*p->lval)
13625# define set_yylval_node(x) { \
13626 YYLTYPE _cur_loc; \
13627 rb_parser_set_location(p, &_cur_loc); \
13628 yylval.node = (x); \
13630# define set_yylval_str(x) \
13632 set_yylval_node(NEW_STR(x, &_cur_loc)); \
13633 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
13635# define set_yylval_literal(x) \
13637 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
13638 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
13640# define set_yylval_num(x) (yylval.num = (x))
13641# define set_yylval_id(x) (yylval.id = (x))
13642# define set_yylval_name(x) (yylval.id = (x))
13643# define yylval_id() (yylval.id)
13648 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
13650# define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
13651# define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
13652# define set_yylval_id(x) (void)(x)
13653# define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
13654# define set_yylval_literal(x) add_mark_object(p, (x))
13655# define set_yylval_node(x) (yylval.val = ripper_new_yylval(p, 0, 0, STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)))
13656# define yylval_id() yylval.id
13657# define _cur_loc NULL_LOC
13660#define set_yylval_noname() set_yylval_id(keyword_nil)
13663#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
13664#define dispatch_scan_event(p, t) ((void)0)
13665#define dispatch_delayed_token(p, t) ((void)0)
13666#define has_delayed_token(p) (0)
13668#define literal_flush(p, ptr) ((void)(ptr))
13670#define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &yylval.node->nd_rval : &yylval.val))
13673intern_sym(
const char *name)
13682 if (p->lex.pcur < p->lex.ptok)
rb_raise(rb_eRuntimeError,
"lex.pcur < lex.ptok");
13683 return p->lex.pcur > p->lex.ptok;
13687ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
13689 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
13690 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
13696ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
13698 if (!ripper_has_scan_event(p))
return;
13699 add_mark_object(p, yylval_rval = ripper_scan_event_val(p, t));
13701#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
13704ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
13706 int saved_line = p->ruby_sourceline;
13707 const char *saved_tokp = p->lex.ptok;
13709 if (
NIL_P(p->delayed.token))
return;
13710 p->ruby_sourceline = p->delayed.line;
13711 p->lex.ptok = p->lex.pbeg + p->delayed.col;
13712 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed.token));
13713 p->delayed.token =
Qnil;
13714 p->ruby_sourceline = saved_line;
13715 p->lex.ptok = saved_tokp;
13717#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
13718#define has_delayed_token(p) (!NIL_P(p->delayed.token))
13722is_identchar(
const char *ptr,
const char *MAYBE_UNUSED(ptr_end),
rb_encoding *enc)
13730 return !(p)->eofp && is_identchar(p->lex.pcur-1, p->lex.pend, p->enc);
13736 return ISASCII(*(p->lex.pcur-1));
13742 int column = 1, nonspc = 0, i;
13743 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
13744 if (*ptr ==
'\t') {
13745 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
13748 if (*ptr !=
' ' && *ptr !=
'\t') {
13753 ptinfo->beg = loc->beg_pos;
13754 ptinfo->indent = column;
13755 ptinfo->nonspc = nonspc;
13763 if (!p->token_info_enabled)
return;
13765 ptinfo->token = token;
13766 ptinfo->next = p->token_info;
13767 token_info_setup(ptinfo, p->lex.pbeg, loc);
13769 p->token_info = ptinfo;
13777 if (!ptinfo_beg)
return;
13778 p->token_info = ptinfo_beg->next;
13781 token_info_warn(p, token, ptinfo_beg, 1, loc);
13782 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
13790 if (!ptinfo_beg)
return;
13791 p->token_info = ptinfo_beg->next;
13793 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
13794 ptinfo_beg->beg.column != beg_pos.column ||
13795 strcmp(ptinfo_beg->token, token)) {
13796 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
13797 beg_pos.lineno, beg_pos.column, token,
13798 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
13799 ptinfo_beg->token);
13802 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
13808 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
13809 if (!p->token_info_enabled)
return;
13810 if (!ptinfo_beg)
return;
13811 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
13812 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
13813 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
13814 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
13815 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
13816 rb_warn3L(ptinfo_end->beg.lineno,
13817 "mismatched indentations at '%s' with '%s' at %d",
13818 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
13822parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
13826 compile_error(p,
"invalid multibyte char (%s)",
rb_enc_name(p->enc));
13833static void ruby_show_error_line(VALUE errbuf,
const YYLTYPE *yylloc,
int lineno, VALUE str);
13839 int lineno = p->ruby_sourceline;
13843 else if (yylloc->beg_pos.lineno == lineno) {
13844 str = p->lex.lastline;
13849 ruby_show_error_line(p->error_buffer, yylloc, lineno, str);
13859 yylloc = RUBY_SET_YYLLOC(current);
13861 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
13862 p->ruby_sourceline != yylloc->end_pos.lineno)) {
13866 compile_error(p,
"%s", msg);
13867 parser_show_error_line(p, yylloc);
13875 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
13879ruby_show_error_line(VALUE errbuf,
const YYLTYPE *yylloc,
int lineno, VALUE str)
13882 const int max_line_margin = 30;
13883 const char *ptr, *ptr_end, *pt, *pb;
13884 const char *pre =
"", *post =
"", *pend;
13885 const char *code =
"", *caret =
"";
13892 if (!yylloc)
return;
13894 if (pend > pbeg && pend[-1] ==
'\n') {
13895 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
13899 if (lineno == yylloc->end_pos.lineno &&
13900 (pend - pbeg) > yylloc->end_pos.column) {
13901 pt = pbeg + yylloc->end_pos.column;
13904 ptr = ptr_end = pt;
13905 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
13906 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
13908 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
13909 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
13911 len = ptr_end - ptr;
13915 if (ptr > pbeg) pre =
"...";
13917 if (ptr_end < pend) {
13919 if (ptr_end < pend) post =
"...";
13923 if (lineno == yylloc->beg_pos.lineno) {
13924 pb += yylloc->beg_pos.column;
13925 if (pb > pt) pb = pt;
13927 if (pb < ptr) pb = ptr;
13928 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
13931 if (
RTEST(errbuf)) {
13939 if (!errbuf && rb_stderr_tty_p()) {
13940#define CSI_BEGIN "\033["
13943 CSI_BEGIN
""CSI_SGR
"%s"
13944 CSI_BEGIN
"1"CSI_SGR
"%.*s"
13945 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
13946 CSI_BEGIN
";1"CSI_SGR
"%.*s"
13947 CSI_BEGIN
""CSI_SGR
"%s"
13950 (
int)(pb - ptr), ptr,
13951 (
int)(pt - pb), pb,
13952 (
int)(ptr_end - pt), pt,
13958 len = ptr_end - ptr;
13959 lim = pt < pend ? pt : pend;
13960 i = (int)(lim - ptr);
13966 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
13972 memset(p2,
'~', (lim - ptr));
13977 pre, (
int)len, code, post,
13980 if (!errbuf) rb_write_error_str(mesg);
13986 const char *pcur = 0, *ptok = 0;
13987 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
13988 p->ruby_sourceline == yylloc->end_pos.lineno) {
13989 pcur = p->lex.pcur;
13990 ptok = p->lex.ptok;
13991 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
13992 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
13994 parser_yyerror0(p, msg);
13996 p->lex.ptok = ptok;
13997 p->lex.pcur = pcur;
14005 dispatch1(parse_error, STR_NEW2(msg));
14018vtable_size(
const struct vtable *tbl)
14020 if (!DVARS_TERMINAL_P(tbl)) {
14035 tbl->tbl =
ALLOC_N(ID, tbl->capa);
14039 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
14044#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
14047vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
14052 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
14055 if (!DVARS_TERMINAL_P(tbl)) {
14057 ruby_sized_xfree(tbl->tbl, tbl->capa *
sizeof(ID));
14059 ruby_sized_xfree(tbl,
sizeof(*tbl));
14062#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
14065vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
14066 struct vtable *tbl, ID
id)
14070 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
14074 if (DVARS_TERMINAL_P(tbl)) {
14075 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
14078 if (tbl->pos == tbl->capa) {
14079 tbl->capa = tbl->capa * 2;
14080 SIZED_REALLOC_N(tbl->tbl, ID, tbl->capa, tbl->pos);
14082 tbl->tbl[tbl->pos++] = id;
14084#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
14088vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
14089 struct vtable *tbl,
int n)
14092 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
14093 line, name, (
void *)tbl, n);
14095 if (tbl->pos < n) {
14096 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
14101#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
14105vtable_included(
const struct vtable * tbl, ID
id)
14109 if (!DVARS_TERMINAL_P(tbl)) {
14110 for (i = 0; i < tbl->pos; i++) {
14111 if (tbl->tbl[i] ==
id) {
14125debug_lines(VALUE fname)
14128 CONST_ID(script_lines,
"SCRIPT_LINES__");
14143 return strcmp(p->ruby_sourcefile,
"-e") == 0;
14147yycompile0(VALUE arg)
14154 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string)) {
14155 p->debug_lines = debug_lines(p->ruby_sourcefile_string);
14156 if (p->debug_lines && p->ruby_sourceline > 0) {
14158 n = p->ruby_sourceline;
14164 if (!e_option_supplied(p)) {
14169 if (p->keep_script_lines || ruby_vm_keep_script_lines) {
14170 if (!p->debug_lines) {
14174 RB_OBJ_WRITE(p->ast, &p->ast->body.script_lines, p->debug_lines);
14178#define RUBY_DTRACE_PARSE_HOOK(name) \
14179 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
14180 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
14182 RUBY_DTRACE_PARSE_HOOK(BEGIN);
14184 RUBY_DTRACE_PARSE_HOOK(END);
14185 p->debug_lines = 0;
14187 p->lex.strterm = 0;
14188 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
14189 p->lex.prevline = p->lex.lastline = p->lex.nextline = 0;
14190 if (n || p->error_p) {
14191 VALUE mesg = p->error_buffer;
14193 mesg = rb_class_new_instance(0, 0, rb_eSyntaxError);
14198 tree = p->eval_tree;
14200 tree = NEW_NIL(&NULL_LOC);
14203 VALUE opt = p->compile_option;
14205 NODE *body = parser_append_options(p, tree->nd_body);
14206 if (!opt) opt = rb_obj_hide(rb_ident_hash_new());
14207 rb_hash_aset(opt, rb_sym_intern_ascii_cstr(
"coverage_enabled"), cov);
14208 prelude = block_append(p, p->eval_tree_begin, body);
14209 tree->nd_body = prelude;
14210 RB_OBJ_WRITE(p->ast, &p->ast->body.compile_option, opt);
14212 p->ast->body.root = tree;
14213 if (!p->ast->body.script_lines) p->ast->body.script_lines =
INT2FIX(p->line_count);
14218yycompile(VALUE vparser,
struct parser_params *p, VALUE fname,
int line)
14221 if (
NIL_P(fname)) {
14222 p->ruby_sourcefile_string =
Qnil;
14223 p->ruby_sourcefile =
"(none)";
14226 p->ruby_sourcefile_string = rb_fstring(fname);
14229 p->ruby_sourceline = line - 1;
14233 p->ast = ast = rb_ast_new();
14234 rb_suppress_tracing(yycompile0, (VALUE)p);
14247must_be_ascii_compatible(VALUE s)
14251 rb_raise(rb_eArgError,
"invalid source encoding");
14259 char *beg, *end, *start;
14265 if (p->lex.gets_.ptr) {
14266 if (len == p->lex.gets_.ptr)
return Qnil;
14267 beg += p->lex.gets_.ptr;
14268 len -= p->lex.gets_.ptr;
14270 end = memchr(beg,
'\n', len);
14271 if (end) len = ++end - beg;
14272 p->lex.gets_.ptr += len;
14279 VALUE line = (*p->lex.gets)(p, p->lex.input);
14280 if (
NIL_P(line))
return line;
14281 must_be_ascii_compatible(line);
14284 if (p->debug_lines) {
14297parser_compile_string(VALUE vparser, VALUE fname, VALUE s,
int line)
14303 p->lex.gets = lex_get_str;
14304 p->lex.gets_.ptr = 0;
14306 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
14308 return yycompile(vparser, p, fname, line);
14312rb_parser_compile_string(VALUE vparser,
const char *f, VALUE s,
int line)
14318rb_parser_compile_string_path(VALUE vparser, VALUE f, VALUE s,
int line)
14320 must_be_ascii_compatible(s);
14321 return parser_compile_string(vparser, f, s, line);
14324VALUE rb_io_gets_internal(VALUE io);
14329 return rb_io_gets_internal(io);
14333rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE file,
int start)
14339 p->lex.gets = lex_io_gets;
14340 p->lex.input = file;
14341 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
14343 return yycompile(vparser, p, fname, start);
14349 return (*p->lex.gets_.call)(input, p->line_count);
14353rb_parser_compile_generic(VALUE vparser, VALUE (*lex_gets)(VALUE,
int), VALUE fname, VALUE input,
int start)
14359 p->lex.gets = lex_generic_gets;
14360 p->lex.gets_.call = lex_gets;
14361 p->lex.input = input;
14362 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
14364 return yycompile(vparser, p, fname, start);
14368#define STR_FUNC_ESCAPE 0x01
14369#define STR_FUNC_EXPAND 0x02
14370#define STR_FUNC_REGEXP 0x04
14371#define STR_FUNC_QWORDS 0x08
14372#define STR_FUNC_SYMBOL 0x10
14373#define STR_FUNC_INDENT 0x20
14374#define STR_FUNC_LABEL 0x40
14375#define STR_FUNC_LIST 0x4000
14376#define STR_FUNC_TERM 0x8000
14379 str_label = STR_FUNC_LABEL,
14381 str_dquote = (STR_FUNC_EXPAND),
14382 str_xquote = (STR_FUNC_EXPAND),
14383 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
14384 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
14385 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
14386 str_ssym = (STR_FUNC_SYMBOL),
14387 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
14407#define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
14408#define lex_eol_p(p) ((p)->lex.pcur >= (p)->lex.pend)
14409#define lex_eol_n_p(p,n) ((p)->lex.pcur+(n) >= (p)->lex.pend)
14410#define peek(p,c) peek_n(p, (c), 0)
14411#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
14412#define peekc(p) peekc_n(p, 0)
14413#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
14417add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end)
14420 if (!has_delayed_token(p)) {
14423 p->delayed.line = p->ruby_sourceline;
14431#define add_delayed_token(p, tok, end) ((void)(tok), (void)(end))
14437 VALUE v = p->lex.nextline;
14438 p->lex.nextline = 0;
14443 if (p->lex.pend > p->lex.pbeg && *(p->lex.pend-1) !=
'\n') {
14447 if (!p->lex.input ||
NIL_P(v = lex_getline(p))) {
14453 p->cr_seen = FALSE;
14455 else if (
NIL_P(v)) {
14459 add_delayed_token(p, p->lex.ptok, p->lex.pend);
14460 if (p->heredoc_end > 0) {
14461 p->ruby_sourceline = p->heredoc_end;
14462 p->heredoc_end = 0;
14464 p->ruby_sourceline++;
14468 p->lex.prevline = p->lex.lastline;
14469 p->lex.lastline = v;
14476 if (peek(p,
'\n')) {
14488 if (UNLIKELY((p->lex.pcur == p->lex.pend) || p->eofp ||
RTEST(p->lex.nextline))) {
14489 if (nextline(p))
return -1;
14491 c = (
unsigned char)*p->lex.pcur++;
14492 if (UNLIKELY(c ==
'\r')) {
14493 c = parser_cr(p, c);
14502 if (c == -1)
return;
14504 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
14509#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
14511#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
14512#define tok(p) (p)->tokenbuf
14513#define toklen(p) (p)->tokidx
14518 const char *ptr = p->lex.pcur;
14519 while (ptr < p->lex.pend) {
14520 int c = (
unsigned char)*ptr++;
14521 int eol = (c ==
'\n' || c ==
'#');
14533 p->tokline = p->ruby_sourceline;
14534 if (!p->tokenbuf) {
14536 p->tokenbuf =
ALLOC_N(
char, 60);
14538 if (p->toksiz > 4096) {
14542 return p->tokenbuf;
14550 if (p->tokidx >= p->toksiz) {
14551 do {p->toksiz *= 2;}
while (p->toksiz < p->tokidx);
14552 REALLOC_N(p->tokenbuf,
char, p->toksiz);
14554 return &p->tokenbuf[p->tokidx-n];
14560 p->tokenbuf[p->tokidx++] = (char)c;
14561 if (p->tokidx >= p->toksiz) {
14563 REALLOC_N(p->tokenbuf,
char, p->toksiz);
14572 c =
scan_hex(p->lex.pcur, 2, numlen);
14574 yyerror0(
"invalid hex escape");
14578 p->lex.pcur += *numlen;
14582#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
14585escaped_control_code(
int c)
14611#define WARN_SPACE_CHAR(c, prefix) \
14612 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
14616 int regexp_literal,
int wide)
14619 int codepoint =
scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
14620 literal_flush(p, p->lex.pcur);
14621 p->lex.pcur += numlen;
14622 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
14623 yyerror0(
"invalid Unicode escape");
14624 return wide && numlen > 0;
14626 if (codepoint > 0x10ffff) {
14627 yyerror0(
"invalid Unicode codepoint (too large)");
14630 if ((codepoint & 0xfffff800) == 0xd800) {
14631 yyerror0(
"invalid Unicode codepoint");
14634 if (regexp_literal) {
14635 tokcopy(p, (
int)numlen);
14637 else if (codepoint >= 0x80) {
14639 if (*encp && utf8 != *encp) {
14640 YYLTYPE loc = RUBY_INIT_YYLLOC();
14641 compile_error(p,
"UTF-8 mixed within %s source",
rb_enc_name(*encp));
14642 parser_show_error_line(p, &loc);
14646 tokaddmbc(p, codepoint, *encp);
14649 tokadd(p, codepoint);
14657 int term,
int symbol_literal,
int regexp_literal)
14664 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
14666 const int open_brace =
'{', close_brace =
'}';
14668 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
14670 if (peek(p, open_brace)) {
14671 const char *second = NULL;
14672 int c, last = nextc(p);
14673 if (p->lex.pcur >= p->lex.pend)
goto unterminated;
14674 while (
ISSPACE(c = *p->lex.pcur) && ++p->lex.pcur < p->lex.pend);
14675 while (c != close_brace) {
14676 if (c == term)
goto unterminated;
14677 if (second == multiple_codepoints)
14678 second = p->lex.pcur;
14679 if (regexp_literal) tokadd(p, last);
14680 if (!tokadd_codepoint(p, encp, regexp_literal, TRUE)) {
14683 while (
ISSPACE(c = *p->lex.pcur)) {
14684 if (++p->lex.pcur >= p->lex.pend)
goto unterminated;
14687 if (term == -1 && !second)
14688 second = multiple_codepoints;
14691 if (c != close_brace) {
14694 yyerror0(
"unterminated Unicode escape");
14697 if (second && second != multiple_codepoints) {
14698 const char *pcur = p->lex.pcur;
14699 p->lex.pcur = second;
14700 dispatch_scan_event(p, tSTRING_CONTENT);
14702 p->lex.pcur = pcur;
14703 yyerror0(multiple_codepoints);
14707 if (regexp_literal) tokadd(p, close_brace);
14711 if (!tokadd_codepoint(p, encp, regexp_literal, FALSE)) {
14718#define ESCAPE_CONTROL 1
14719#define ESCAPE_META 2
14727 switch (c = nextc(p)) {
14752 case '0':
case '1':
case '2':
case '3':
14753 case '4':
case '5':
case '6':
case '7':
14755 c =
scan_oct(p->lex.pcur, 3, &numlen);
14756 p->lex.pcur += numlen;
14760 c = tok_hex(p, &numlen);
14761 if (numlen == 0)
return 0;
14771 if (flags & ESCAPE_META)
goto eof;
14772 if ((c = nextc(p)) !=
'-') {
14775 if ((c = nextc(p)) ==
'\\') {
14776 switch (peekc(p)) {
14777 case 'u':
case 'U':
14781 return read_escape(p, flags|ESCAPE_META, encp) | 0x80;
14783 else if (c == -1 || !
ISASCII(c))
goto eof;
14785 int c2 = escaped_control_code(c);
14787 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
14788 WARN_SPACE_CHAR(c2,
"\\M-");
14791 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
14794 else if (
ISCNTRL(c))
goto eof;
14795 return ((c & 0xff) | 0x80);
14799 if ((c = nextc(p)) !=
'-') {
14803 if (flags & ESCAPE_CONTROL)
goto eof;
14804 if ((c = nextc(p))==
'\\') {
14805 switch (peekc(p)) {
14806 case 'u':
case 'U':
14810 c = read_escape(p, flags|ESCAPE_CONTROL, encp);
14814 else if (c == -1 || !
ISASCII(c))
goto eof;
14816 int c2 = escaped_control_code(c);
14819 if (flags & ESCAPE_META) {
14820 WARN_SPACE_CHAR(c2,
"\\M-");
14823 WARN_SPACE_CHAR(c2,
"");
14827 if (flags & ESCAPE_META) {
14828 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
14831 WARN_SPACE_CHAR(c2,
"\\C-");
14835 else if (
ISCNTRL(c))
goto eof;
14841 yyerror0(
"Invalid escape character syntax");
14863 switch (c = nextc(p)) {
14867 case '0':
case '1':
case '2':
case '3':
14868 case '4':
case '5':
case '6':
case '7':
14871 if (numlen == 0)
goto eof;
14872 p->lex.pcur += numlen;
14873 tokcopy(p, (
int)numlen + 1);
14879 tok_hex(p, &numlen);
14880 if (numlen == 0)
return -1;
14881 tokcopy(p, (
int)numlen + 2);
14887 yyerror0(
"Invalid escape character syntax");
14907 while (c = nextc(p),
ISALPHA(c)) {
14909 options |= RE_OPTION_ONCE;
14927 YYLTYPE loc = RUBY_INIT_YYLLOC();
14929 compile_error(p,
"unknown regexp option%s - %*s",
14930 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
14931 parser_show_error_line(p, &loc);
14933 return options | RE_OPTION_ENCODING(kcode);
14939 int len = parser_precise_mbclen(p, p->lex.pcur-1);
14940 if (len < 0)
return -1;
14942 p->lex.pcur += --len;
14943 if (len > 0) tokcopy(p, len);
14948simple_re_meta(
int c)
14951 case '$':
case '*':
case '+':
case '.':
14952 case '?':
case '^':
case '|':
14953 case ')':
case ']':
case '}':
case '>':
14961parser_update_heredoc_indent(
struct parser_params *p,
int c)
14963 if (p->heredoc_line_indent == -1) {
14964 if (c ==
'\n') p->heredoc_line_indent = 0;
14968 p->heredoc_line_indent++;
14971 else if (c ==
'\t') {
14972 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
14973 p->heredoc_line_indent = w * TAB_WIDTH;
14976 else if (c !=
'\n') {
14977 if (p->heredoc_indent > p->heredoc_line_indent) {
14978 p->heredoc_indent = p->heredoc_line_indent;
14980 p->heredoc_line_indent = -1;
14989 YYLTYPE loc = RUBY_INIT_YYLLOC();
14991 compile_error(p,
"%s mixed within %s source", n1, n2);
14992 parser_show_error_line(p, &loc);
14998 const char *pos = p->lex.pcur;
15000 parser_mixed_error(p, enc1, enc2);
15006 int func,
int term,
int paren,
long *nest,
15010 bool erred =
false;
15012#define mixed_error(enc1, enc2) \
15013 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
15014#define mixed_escape(beg, enc1, enc2) \
15015 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
15017 while ((c = nextc(p)) != -1) {
15018 if (p->heredoc_indent > 0) {
15019 parser_update_heredoc_indent(p, c);
15022 if (paren && c == paren) {
15025 else if (c == term) {
15026 if (!nest || !*nest) {
15032 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && p->lex.pcur < p->lex.pend) {
15033 int c2 = *p->lex.pcur;
15034 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
15039 else if (c ==
'\\') {
15040 literal_flush(p, p->lex.pcur - 1);
15044 if (func & STR_FUNC_QWORDS)
break;
15045 if (func & STR_FUNC_EXPAND) {
15046 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
15057 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
15061 if ((func & STR_FUNC_EXPAND) == 0) {
15065 tokadd_utf8(p, enc, term,
15066 func & STR_FUNC_SYMBOL,
15067 func & STR_FUNC_REGEXP);
15071 if (c == -1)
return -1;
15073 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
15076 if (func & STR_FUNC_REGEXP) {
15082 c = read_escape(p, 0, enc);
15086 snprintf(escbuf,
sizeof(escbuf),
"\\x%02X", c);
15087 for (i = 0; i < 4; i++) {
15088 tokadd(p, escbuf[i]);
15094 if (c == term && !simple_re_meta(c)) {
15099 if ((c = tokadd_escape(p, enc)) < 0)
15101 if (*enc && *enc != *encp) {
15102 mixed_escape(p->lex.ptok+2, *enc, *encp);
15106 else if (func & STR_FUNC_EXPAND) {
15108 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
15109 c = read_escape(p, 0, enc);
15111 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
15114 else if (c != term && !(paren && c == paren)) {
15121 else if (!parser_isascii(p)) {
15126 else if (*enc != *encp) {
15127 mixed_error(*enc, *encp);
15130 if (tokadd_mbchar(p, c) == -1)
return -1;
15133 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
15141 else if (*enc != *encp) {
15142 mixed_error(*enc, *encp);
15149 if (*enc) *encp = *enc;
15154new_strterm(VALUE v1, VALUE v2, VALUE v3, VALUE v0)
15156 return (
rb_strterm_t*)rb_imemo_new(imemo_parser_strterm, v1, v2, v3, v0);
15160#define NEW_STRTERM(func, term, paren) \
15161 new_strterm((VALUE)(func), (VALUE)(paren), (VALUE)(term), 0)
15167 VALUE content = yylval.val;
15168 if (!ripper_is_node_yylval(content))
15169 content = ripper_new_yylval(p, 0, 0, content);
15170 if (has_delayed_token(p)) {
15171 ptrdiff_t len = p->lex.pcur - p->lex.ptok;
15175 dispatch_delayed_token(p, tSTRING_CONTENT);
15176 p->lex.ptok = p->lex.pcur;
15177 RNODE(content)->nd_rval = yylval.val;
15179 dispatch_scan_event(p, tSTRING_CONTENT);
15180 if (yylval.val != content)
15181 RNODE(content)->nd_rval = yylval.val;
15182 yylval.val = content;
15185#define flush_string_content(p, enc) ((void)(enc))
15188RUBY_FUNC_EXPORTED
const unsigned int ruby_global_name_punct_bits[(0x7e - 0x20 + 31) / 32];
15192#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
15193#define SPECIAL_PUNCT(idx) ( \
15194 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
15195 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
15196 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
15197 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
15198 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
15200const unsigned int ruby_global_name_punct_bits[] = {
15206#undef SPECIAL_PUNCT
15209static enum yytokentype
15210parser_peek_variable_name(struct parser_params *p)
15213 const char *ptr = p->lex.pcur;
15215 if (ptr + 1 >= p->lex.pend) return 0;
15219 if ((c = *ptr) == '-') {
15220 if (++ptr >= p->lex.pend) return 0;
15223 else if (is_global_name_punct(c) || ISDIGIT(c)) {
15224 return tSTRING_DVAR;
15228 if ((c = *ptr) == '@') {
15229 if (++ptr >= p->lex.pend) return 0;
15235 p->command_start = TRUE;
15236 return tSTRING_DBEG;
15240 if (!ISASCII(c) || c == '_' || ISALPHA(c))
15241 return tSTRING_DVAR;
15245#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
15246#define IS_END() IS_lex_state(EXPR_END_ANY)
15247#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
15248#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
15249#define IS_LABEL_POSSIBLE() (\
15250 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
15252#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
15253#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
15255static inline enum yytokentype
15256parser_string_term(struct parser_params *p, int func)
15258 p->lex.strterm = 0;
15259 if (func & STR_FUNC_REGEXP) {
15260 set_yylval_num(regx_options(p));
15261 dispatch_scan_event(p, tREGEXP_END);
15262 SET_LEX_STATE(EXPR_END);
15263 return tREGEXP_END;
15265 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
15267 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
15270 SET_LEX_STATE(EXPR_END);
15271 return tSTRING_END;
15274static enum yytokentype
15275parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
15277 int func = (int)quote->u1.func;
15278 int term = (int)quote->u3.term;
15279 int paren = (int)quote->u2.paren;
15281 rb_encoding *enc = p->enc;
15282 rb_encoding *base_enc = 0;
15285 if (func & STR_FUNC_TERM) {
15286 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
15287 SET_LEX_STATE(EXPR_END);
15288 p->lex.strterm = 0;
15289 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
15292 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
15293 do {c = nextc(p);} while (ISSPACE(c));
15296 if (func & STR_FUNC_LIST) {
15297 quote->u1.func &= ~STR_FUNC_LIST;
15300 if (c == term && !quote->u0.nest) {
15301 if (func & STR_FUNC_QWORDS) {
15302 quote->u1.func |= STR_FUNC_TERM;
15303 pushback(p, c); /* dispatch the term at tSTRING_END */
15304 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
15307 return parser_string_term(p, func);
15311 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
15315 if ((func & STR_FUNC_EXPAND) && c == '#') {
15316 int t = parser_peek_variable_name(p);
15322 if (tokadd_string(p, func, term, paren, "e->u0.nest,
15323 &enc, &base_enc) == -1) {
15326# define unterminated_literal(mesg) yyerror0(mesg)
15328# define unterminated_literal(mesg) compile_error(p, mesg)
15330 literal_flush(p, p->lex.pcur);
15331 if (func & STR_FUNC_QWORDS) {
15332 /* no content to add, bailing out here */
15333 unterminated_literal("unterminated list meets end of file");
15334 p->lex.strterm = 0;
15335 return tSTRING_END;
15337 if (func & STR_FUNC_REGEXP) {
15338 unterminated_literal("unterminated regexp meets end of file");
15341 unterminated_literal("unterminated string meets end of file");
15343 quote->u1.func |= STR_FUNC_TERM;
15348 lit = STR_NEW3(tok(p), toklen(p), enc, func);
15349 set_yylval_str(lit);
15350 flush_string_content(p, enc);
15352 return tSTRING_CONTENT;
15355static enum yytokentype
15356heredoc_identifier(struct parser_params *p)
15359 * term_len is length of `<<"END"` except `END`,
15360 * in this case term_len is 4 (<, <, " and ").
15362 long len, offset = p->lex.pcur - p->lex.pbeg;
15363 int c = nextc(p), term, func = 0, quote = 0;
15364 enum yytokentype token = tSTRING_BEG;
15369 func = STR_FUNC_INDENT;
15372 else if (c == '~') {
15374 func = STR_FUNC_INDENT;
15380 func |= str_squote; goto quoted;
15382 func |= str_dquote;
goto quoted;
15384 token = tXSTRING_BEG;
15385 func |= str_xquote;
goto quoted;
15392 while ((c = nextc(p)) != term) {
15393 if (c == -1 || c ==
'\r' || c ==
'\n') {
15394 yyerror0(
"unterminated here document identifier");
15401 if (!parser_is_identchar(p)) {
15403 if (func & STR_FUNC_INDENT) {
15404 pushback(p, indent > 0 ?
'~' :
'-');
15408 func |= str_dquote;
15410 int n = parser_precise_mbclen(p, p->lex.pcur-1);
15411 if (n < 0)
return 0;
15412 p->lex.pcur += --n;
15413 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
15418 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
15419 if ((
unsigned long)len >= HERETERM_LENGTH_MAX)
15420 yyerror0(
"too long here document identifier");
15421 dispatch_scan_event(p, tHEREDOC_BEG);
15424 p->lex.strterm = new_strterm(0, 0, 0, p->lex.lastline);
15425 p->lex.strterm->flags |= STRTERM_HEREDOC;
15427 here->offset = offset;
15428 here->sourceline = p->ruby_sourceline;
15429 here->length = (int)len;
15430 here->quote = quote;
15434 p->heredoc_indent = indent;
15435 p->heredoc_line_indent = 0;
15444 p->lex.strterm = 0;
15445 line = here->lastline;
15446 p->lex.lastline = line;
15449 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
15450 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
15451 p->heredoc_end = p->ruby_sourceline;
15452 p->ruby_sourceline = (int)here->sourceline;
15453 if (p->eofp) p->lex.nextline =
Qnil;
15458dedent_string(VALUE
string,
int width)
15465 for (i = 0; i < len && col < width; i++) {
15466 if (str[i] ==
' ') {
15469 else if (str[i] ==
'\t') {
15470 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
15471 if (n > width)
break;
15482 rb_fatal(
"literal string changed: %+"PRIsVALUE,
string);
15483 MEMMOVE(str, str + i,
char, len - i);
15492 NODE *node, *str_node, *prev_node;
15493 int indent = p->heredoc_indent;
15494 VALUE prev_lit = 0;
15496 if (indent <= 0)
return root;
15497 p->heredoc_indent = 0;
15498 if (!root)
return root;
15500 prev_node = node = str_node = root;
15501 if (nd_type_p(root, NODE_LIST)) str_node = root->nd_head;
15504 VALUE lit = str_node->nd_lit;
15505 if (str_node->flags & NODE_FL_NEWLINE) {
15506 dedent_string(lit, indent);
15511 else if (!literal_concat0(p, prev_lit, lit)) {
15515 NODE *end = node->nd_end;
15516 node = prev_node->nd_next = node->nd_next;
15518 if (nd_type_p(prev_node, NODE_DSTR))
15519 nd_set_type(prev_node, NODE_STR);
15522 node->nd_end = end;
15527 while ((node = (prev_node = node)->nd_next) != 0) {
15529 if (!nd_type_p(node, NODE_LIST))
break;
15530 if ((str_node = node->nd_head) != 0) {
15531 enum node_type
type = nd_type(str_node);
15532 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
15544 int indent = p->heredoc_indent;
15546 if (indent <= 0)
return array;
15547 p->heredoc_indent = 0;
15548 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
15562parser_dedent_string(VALUE
self, VALUE input, VALUE width)
15568 col = dedent_string(input, wid);
15574whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
15576 const char *ptr = p->lex.pbeg;
15580 while (*ptr &&
ISSPACE(*ptr)) ptr++;
15582 n = p->lex.pend - (ptr + len);
15583 if (n < 0)
return FALSE;
15584 if (n > 0 && ptr[len] !=
'\n') {
15585 if (ptr[len] !=
'\r')
return FALSE;
15586 if (n <= 1 || ptr[len+1] !=
'\n')
return FALSE;
15588 return strncmp(eos, ptr, len) == 0;
15592word_match_p(
struct parser_params *p,
const char *word,
long len)
15594 if (strncmp(p->lex.pcur, word, len))
return 0;
15595 if (p->lex.pcur + len == p->lex.pend)
return 1;
15596 int c = (
unsigned char)p->lex.pcur[len];
15599 case '\0':
case '\004':
case '\032':
return 1;
15604#define NUM_SUFFIX_R (1<<0)
15605#define NUM_SUFFIX_I (1<<1)
15606#define NUM_SUFFIX_ALL 3
15612 const char *lastp = p->lex.pcur;
15614 while ((c = nextc(p)) != -1) {
15615 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
15616 result |= (mask & NUM_SUFFIX_I);
15617 mask &= ~NUM_SUFFIX_I;
15619 mask &= ~NUM_SUFFIX_R;
15622 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
15623 result |= (mask & NUM_SUFFIX_R);
15624 mask &= ~NUM_SUFFIX_R;
15628 p->lex.pcur = lastp;
15629 literal_flush(p, p->lex.pcur);
15638static enum yytokentype
15640 enum yytokentype
type,
int suffix)
15642 if (suffix & NUM_SUFFIX_I) {
15646 set_yylval_literal(v);
15647 SET_LEX_STATE(EXPR_END);
15651static enum yytokentype
15652set_integer_literal(
struct parser_params *p, VALUE v,
int suffix)
15654 enum yytokentype
type = tINTEGER;
15655 if (suffix & NUM_SUFFIX_R) {
15659 return set_number_literal(p, v,
type, suffix);
15667 if (has_delayed_token(p))
15668 dispatch_delayed_token(p, tSTRING_CONTENT);
15669 str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
15670 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
15676#define dispatch_heredoc_end(p) ((void)0)
15679static enum yytokentype
15682 int c, func, indent = 0;
15683 const char *eos, *ptr, *ptr_end;
15690 eos =
RSTRING_PTR(here->lastline) + here->offset;
15691 len = here->length;
15692 indent = (func = here->func) & STR_FUNC_INDENT;
15694 if ((c = nextc(p)) == -1) {
15697 if (!has_delayed_token(p)) {
15698 dispatch_scan_event(p, tSTRING_CONTENT);
15701 if ((len = p->lex.pcur - p->lex.ptok) > 0) {
15713 dispatch_delayed_token(p, tSTRING_CONTENT);
15717 heredoc_restore(p, &p->lex.strterm->u.heredoc);
15718 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
15721 p->lex.strterm = 0;
15722 SET_LEX_STATE(EXPR_END);
15723 return tSTRING_END;
15729 else if (p->heredoc_line_indent == -1) {
15734 p->heredoc_line_indent = 0;
15736 else if (whole_match_p(p, eos, len, indent)) {
15737 dispatch_heredoc_end(p);
15739 heredoc_restore(p, &p->lex.strterm->u.heredoc);
15741 p->lex.strterm = 0;
15742 SET_LEX_STATE(EXPR_END);
15743 return tSTRING_END;
15746 if (!(func & STR_FUNC_EXPAND)) {
15749 ptr_end = p->lex.pend;
15750 if (ptr_end > ptr) {
15751 switch (ptr_end[-1]) {
15753 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
15762 if (p->heredoc_indent > 0) {
15764 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
15766 p->heredoc_line_indent = 0;
15772 str = STR_NEW(ptr, ptr_end - ptr);
15773 if (ptr_end < p->lex.pend)
rb_str_cat(str,
"\n", 1);
15775 if (p->heredoc_indent > 0) {
15778 if (nextc(p) == -1) {
15784 }
while (!whole_match_p(p, eos, len, indent));
15790 int t = parser_peek_variable_name(p);
15791 if (p->heredoc_line_indent != -1) {
15792 if (p->heredoc_indent > p->heredoc_line_indent) {
15793 p->heredoc_indent = p->heredoc_line_indent;
15795 p->heredoc_line_indent = -1;
15804 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
15805 if (p->eofp)
goto error;
15809 if (c ==
'\\') p->heredoc_line_indent = -1;
15811 str = STR_NEW3(tok(p), toklen(p), enc, func);
15813 set_yylval_str(str);
15815 if (bol) yylval.node->flags |= NODE_FL_NEWLINE;
15817 flush_string_content(p, enc);
15818 return tSTRING_CONTENT;
15820 tokadd(p, nextc(p));
15821 if (p->heredoc_indent > 0) {
15826 if ((c = nextc(p)) == -1)
goto error;
15827 }
while (!whole_match_p(p, eos, len, indent));
15828 str = STR_NEW3(tok(p), toklen(p), enc, func);
15830 dispatch_heredoc_end(p);
15832 str = ripper_new_yylval(p, ripper_token2eventid(tSTRING_CONTENT),
15835 heredoc_restore(p, &p->lex.strterm->u.heredoc);
15837 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
15838 set_yylval_str(str);
15840 if (bol) yylval.node->flags |= NODE_FL_NEWLINE;
15842 return tSTRING_CONTENT;
15852 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `%c' operator", WARN_I(c));
15855 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator", WARN_I(c));
15870 ID
id = get_id(lhs);
15872 switch (id_type(
id)) {
15876# define ERR(mesg) yyerror0(mesg)
15878# define ERR(mesg) (dispatch2(param_error, WARN_S(mesg), lhs), ripper_error(p))
15881 ERR(
"formal argument cannot be a constant");
15884 ERR(
"formal argument cannot be an instance variable");
15887 ERR(
"formal argument cannot be a global variable");
15890 ERR(
"formal argument cannot be a class variable");
15893 ERR(
"formal argument must be local variable");
15897 shadowing_lvar(p,
id);
15904 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
15909parser_encode_length(
struct parser_params *p,
const char *name,
long len)
15913 if (len > 5 && name[nlen = len - 5] ==
'-') {
15914 if (
rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
15917 if (len > 4 && name[nlen = len - 4] ==
'-') {
15920 if (
rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
15921 !(len == 8 &&
rb_memcicmp(name,
"utf8-mac", len) == 0))
15929parser_set_encode(
struct parser_params *p,
const char *name)
15936 excargs[1] =
rb_sprintf(
"unknown encoding name: %s", name);
15938 excargs[0] = rb_eArgError;
15950 if (p->debug_lines) {
15951 VALUE lines = p->debug_lines;
15953 for (i = 0; i < n; ++i) {
15963 const char *ptr = p->lex.pbeg, *ptr_end = p->lex.pcur - 1;
15964 if (p->line_count != (p->has_shebang ? 2 : 1))
return 0;
15965 while (ptr < ptr_end) {
15966 if (!
ISSPACE(*ptr))
return 0;
15972typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
15973typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
15975static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
15978magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
15980 if (!comment_at_top(p)) {
15983 parser_set_encode(p, val);
15987parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
15990 case 't':
case 'T':
15995 case 'f':
case 'F':
16001 return parser_invalid_pragma_value(p, name, val);
16005parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
16007 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
16012parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
16014 int b = parser_get_bool(p, name, val);
16015 if (b >= 0) p->token_info_enabled = b;
16019parser_set_compile_option_flag(
struct parser_params *p,
const char *name,
const char *val)
16023 if (p->token_seen) {
16024 rb_warning1(
"`%s' is ignored after any tokens", WARN_S(name));
16028 b = parser_get_bool(p, name, val);
16031 if (!p->compile_option)
16032 p->compile_option = rb_obj_hide(rb_ident_hash_new());
16038parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
16040 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
16041 if (*s ==
' ' || *s ==
'\t')
continue;
16042 if (*s ==
'#')
break;
16043 rb_warning1(
"`%s' is ignored unless in comment-only line", WARN_S(name));
16048 case 'n':
case 'N':
16050 p->ctxt.shareable_constant_value = shareable_none;
16054 case 'l':
case 'L':
16056 p->ctxt.shareable_constant_value = shareable_literal;
16060 case 'e':
case 'E':
16061 if (
STRCASECMP(val,
"experimental_copy") == 0) {
16062 p->ctxt.shareable_constant_value = shareable_copy;
16065 if (
STRCASECMP(val,
"experimental_everything") == 0) {
16066 p->ctxt.shareable_constant_value = shareable_everything;
16071 parser_invalid_pragma_value(p, name, val);
16074# if WARN_PAST_SCOPE
16076parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
16078 int b = parser_get_bool(p, name, val);
16079 if (b >= 0) p->past_scope_enabled = b;
16085 rb_magic_comment_setter_t func;
16086 rb_magic_comment_length_t length;
16090 {
"coding", magic_comment_encoding, parser_encode_length},
16091 {
"encoding", magic_comment_encoding, parser_encode_length},
16092 {
"frozen_string_literal", parser_set_compile_option_flag},
16093 {
"shareable_constant_value", parser_set_shareable_constant_value},
16094 {
"warn_indent", parser_set_token_info},
16095# if WARN_PAST_SCOPE
16096 {
"warn_past_scope", parser_set_past_scope},
16101magic_comment_marker(
const char *str,
long len)
16108 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
16109 return str + i + 1;
16114 if (i + 1 >= len)
return 0;
16115 if (str[i+1] !=
'-') {
16118 else if (str[i-1] !=
'-') {
16122 return str + i + 2;
16134parser_magic_comment(
struct parser_params *p,
const char *str,
long len)
16137 VALUE name = 0, val = 0;
16138 const char *beg, *end, *vbeg, *vend;
16139#define str_copy(_s, _p, _n) ((_s) \
16140 ? (void)(rb_str_resize((_s), (_n)), \
16141 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
16142 : (void)((_s) = STR_NEW((_p), (_n))))
16144 if (len <= 7)
return FALSE;
16145 if (!!(beg = magic_comment_marker(str, len))) {
16146 if (!(end = magic_comment_marker(beg, str + len - beg)))
16150 len = end - beg - 3;
16160 for (; len > 0 && *str; str++, --len) {
16162 case '\'':
case '"':
case ':':
case ';':
16167 for (beg = str; len > 0; str++, --len) {
16169 case '\'':
case '"':
case ':':
case ';':
16177 for (end = str; len > 0 &&
ISSPACE(*str); str++, --len);
16180 if (!indicator)
return FALSE;
16184 do str++;
while (--len > 0 &&
ISSPACE(*str));
16187 for (vbeg = ++str; --len > 0 && *str !=
'"'; str++) {
16188 if (*str ==
'\\') {
16200 for (vbeg = str; len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --len, str++);
16204 while (len > 0 && (*str ==
';' ||
ISSPACE(*str))) --len, str++;
16207 while (len > 0 && (
ISSPACE(*str))) --len, str++;
16208 if (len)
return FALSE;
16212 str_copy(name, beg, n);
16214 for (i = 0; i < n; ++i) {
16215 if (s[i] ==
'-') s[i] =
'_';
16218 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
16221 n = (*mc->length)(p, vbeg, n);
16223 str_copy(val, vbeg, n);
16227 }
while (++mc < magic_comments + numberof(magic_comments));
16229 str_copy(val, vbeg, vend - vbeg);
16238set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
16241 const char *beg = str;
16245 if (send - str <= 6)
return;
16247 case 'C':
case 'c': str += 6;
continue;
16248 case 'O':
case 'o': str += 5;
continue;
16249 case 'D':
case 'd': str += 4;
continue;
16250 case 'I':
case 'i': str += 3;
continue;
16251 case 'N':
case 'n': str += 2;
continue;
16252 case 'G':
case 'g': str += 1;
continue;
16253 case '=':
case ':':
16267 if (++str >= send)
return;
16270 if (*str !=
'=' && *str !=
':')
return;
16275 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
16276 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
16288 if (peek(p,
'!')) p->has_shebang = 1;
16291 if (p->lex.pend - p->lex.pcur >= 2 &&
16292 (
unsigned char)p->lex.pcur[0] == 0xbb &&
16293 (
unsigned char)p->lex.pcur[1] == 0xbf) {
16296 p->lex.pbeg = p->lex.pcur;
16308#define ambiguous_operator(tok, op, syn) ( \
16309 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
16310 rb_warning0("even though it seems like "syn""))
16312#define ambiguous_operator(tok, op, syn) \
16313 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
16315#define warn_balanced(tok, op, syn) ((void) \
16316 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
16317 space_seen && !ISSPACE(c) && \
16318 (ambiguous_operator(tok, op, syn), 0)), \
16319 (enum yytokentype)(tok))
16322parse_rational(
struct parser_params *p,
char *str,
int len,
int seen_point)
16325 char *point = &str[seen_point];
16326 size_t fraclen = len-seen_point-1;
16327 memmove(point, point+1, fraclen+1);
16332static enum yytokentype
16335 yyerror0(
"numeric literal without digits");
16336 if (peek(p,
'_')) nextc(p);
16338 return set_integer_literal(p,
INT2FIX(0), 0);
16341static enum yytokentype
16344 int is_float, seen_point, seen_e, nondigit;
16347 is_float = seen_point = seen_e = nondigit = 0;
16348 SET_LEX_STATE(EXPR_END);
16350 if (c ==
'-' || c ==
'+') {
16355 int start = toklen(p);
16357 if (c ==
'x' || c ==
'X') {
16363 if (nondigit)
break;
16370 }
while ((c = nextc(p)) != -1);
16374 if (toklen(p) == start) {
16375 return no_digits(p);
16377 else if (nondigit)
goto trailing_uc;
16378 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
16379 return set_integer_literal(p,
rb_cstr_to_inum(tok(p), 16, FALSE), suffix);
16381 if (c ==
'b' || c ==
'B') {
16384 if (c ==
'0' || c ==
'1') {
16387 if (nondigit)
break;
16391 if (c !=
'0' && c !=
'1')
break;
16394 }
while ((c = nextc(p)) != -1);
16398 if (toklen(p) == start) {
16399 return no_digits(p);
16401 else if (nondigit)
goto trailing_uc;
16402 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
16403 return set_integer_literal(p,
rb_cstr_to_inum(tok(p), 2, FALSE), suffix);
16405 if (c ==
'd' || c ==
'D') {
16411 if (nondigit)
break;
16418 }
while ((c = nextc(p)) != -1);
16422 if (toklen(p) == start) {
16423 return no_digits(p);
16425 else if (nondigit)
goto trailing_uc;
16426 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
16427 return set_integer_literal(p,
rb_cstr_to_inum(tok(p), 10, FALSE), suffix);
16433 if (c ==
'o' || c ==
'O') {
16436 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
16437 return no_digits(p);
16440 if (c >=
'0' && c <=
'7') {
16445 if (nondigit)
break;
16449 if (c < '0' || c >
'9')
break;
16450 if (c >
'7')
goto invalid_octal;
16453 }
while ((c = nextc(p)) != -1);
16454 if (toklen(p) > start) {
16457 if (nondigit)
goto trailing_uc;
16458 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
16459 return set_integer_literal(p,
rb_cstr_to_inum(tok(p), 8, FALSE), suffix);
16466 if (c >
'7' && c <=
'9') {
16468 yyerror0(
"Invalid octal digit");
16470 else if (c ==
'.' || c ==
'e' || c ==
'E') {
16475 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
16476 return set_integer_literal(p,
INT2FIX(0), suffix);
16482 case '0':
case '1':
case '2':
case '3':
case '4':
16483 case '5':
case '6':
case '7':
case '8':
case '9':
16489 if (nondigit)
goto trailing_uc;
16490 if (seen_point || seen_e) {
16495 if (c0 == -1 || !
ISDIGIT(c0)) {
16501 seen_point = toklen(p);
16520 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
16525 tokadd(p, nondigit);
16529 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
16533 if (nondigit)
goto decode_num;
16547 literal_flush(p, p->lex.pcur - 1);
16548 YYLTYPE loc = RUBY_INIT_YYLLOC();
16549 compile_error(p,
"trailing `%c' in number", nondigit);
16550 parser_show_error_line(p, &loc);
16554 enum yytokentype
type = tFLOAT;
16557 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
16558 if (suffix & NUM_SUFFIX_R) {
16560 v = parse_rational(p, tok(p), toklen(p), seen_point);
16563 double d =
strtod(tok(p), 0);
16564 if (errno == ERANGE) {
16565 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
16570 return set_number_literal(p, v,
type, suffix);
16572 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
16573 return set_integer_literal(p,
rb_cstr_to_inum(tok(p), 10, FALSE), suffix);
16576static enum yytokentype
16584 SET_LEX_STATE(EXPR_VALUE);
16589 compile_error(p,
"incomplete character syntax");
16594 int c2 = escaped_control_code(c);
16596 WARN_SPACE_CHAR(c2,
"?");
16601 SET_LEX_STATE(EXPR_VALUE);
16606 if (!parser_isascii(p)) {
16607 if (tokadd_mbchar(p, c) == -1)
return 0;
16610 p->lex.pcur < p->lex.pend && is_identchar(p->lex.pcur, p->lex.pend, p->enc)) {
16612 const char *start = p->lex.pcur - 1, *ptr = start;
16614 int n = parser_precise_mbclen(p, ptr);
16615 if (n < 0)
return -1;
16617 }
while (ptr < p->lex.pend && is_identchar(ptr, p->lex.pend, p->enc));
16618 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
16619 " a conditional operator, put a space after `?'",
16620 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
16624 else if (c ==
'\\') {
16625 if (peek(p,
'u')) {
16628 tokadd_utf8(p, &enc, -1, 0, 0);
16630 else if (!lex_eol_p(p) && !(c = *p->lex.pcur,
ISASCII(c))) {
16632 if (tokadd_mbchar(p, c) == -1)
return 0;
16635 c = read_escape(p, 0, &enc);
16643 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
16644 set_yylval_str(lit);
16645 SET_LEX_STATE(EXPR_END);
16649static enum yytokentype
16650parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
16653 const char *ptok = p->lex.pcur;
16661 if (c == -1)
goto unterminated;
16664 if (!
ISASCII(c))
goto unknown;
16672 c = parser_precise_mbclen(p, p->lex.pcur);
16673 if (c < 0)
return 0;
16675 yyerror0(
"unknown type of %string");
16681 compile_error(p,
"unterminated quoted string meets end of file");
16685 if (term ==
'(') term =
')';
16686 else if (term ==
'[') term =
']';
16687 else if (term ==
'{') term =
'}';
16688 else if (term ==
'<') term =
'>';
16691 p->lex.ptok = ptok-1;
16694 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
16695 return tSTRING_BEG;
16698 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
16699 return tSTRING_BEG;
16702 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
16706 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
16707 return tQWORDS_BEG;
16710 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
16711 return tSYMBOLS_BEG;
16714 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
16715 return tQSYMBOLS_BEG;
16718 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
16719 return tXSTRING_BEG;
16722 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
16723 return tREGEXP_BEG;
16726 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
16727 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
16731 yyerror0(
"unknown type of %string");
16735 if ((c = nextc(p)) ==
'=') {
16736 set_yylval_id(
'%');
16737 SET_LEX_STATE(EXPR_BEG);
16740 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
16743 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
16745 return warn_balanced(
'%',
"%%",
"string literal");
16752 if (tokadd_mbchar(p, c) == -1)
return -1;
16754 }
while (parser_is_identchar(p));
16760tokenize_ident(
struct parser_params *p,
const enum lex_state_e last_state)
16762 ID ident = TOK_INTERN();
16764 set_yylval_name(ident);
16774 unsigned long n =
ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &len, &overflow);
16775 const unsigned long nth_ref_max =
16776 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
16780 if (overflow || n > nth_ref_max) {
16782 rb_warn1(
"`%s' is too big for a number variable, always nil", WARN_S(tok(p)));
16790static enum yytokentype
16791parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
16793 const char *ptr = p->lex.pcur;
16796 SET_LEX_STATE(EXPR_END);
16797 p->lex.ptok = ptr - 1;
16803 if (parser_is_identchar(p)) {
16835 if (parser_is_identchar(p)) {
16836 if (tokadd_mbchar(p, c) == -1)
return 0;
16844 set_yylval_name(TOK_INTERN());
16851 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
16856 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
16859 case '1':
case '2':
case '3':
16860 case '4':
case '5':
case '6':
16861 case '7':
case '8':
case '9':
16866 }
while (c != -1 &&
ISDIGIT(c));
16868 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
16870 c = parse_numvar(p);
16871 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
16875 if (!parser_is_identchar(p)) {
16876 YYLTYPE loc = RUBY_INIT_YYLLOC();
16878 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
16882 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
16884 parser_show_error_line(p, &loc);
16885 set_yylval_noname();
16893 if (tokadd_ident(p, c))
return 0;
16894 SET_LEX_STATE(EXPR_END);
16895 tokenize_ident(p, last_state);
16903 if (n < 0)
return false;
16905 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
16908 if (p->max_numparam == ORDINAL_PARAM) {
16909 compile_error(p,
"ordinary parameter is defined");
16912 struct vtable *args = p->lvtbl->args;
16913 if (p->max_numparam < n) {
16914 p->max_numparam = n;
16916 while (n > args->pos) {
16917 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
16923static enum yytokentype
16924parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
16926 const char *ptr = p->lex.pcur;
16927 enum yytokentype result = tIVAR;
16928 register int c = nextc(p);
16931 p->lex.ptok = ptr - 1;
16939 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
16940 if (c == -1 || !parser_is_identchar(p)) {
16942 RUBY_SET_YYLLOC(loc);
16943 if (result == tIVAR) {
16944 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
16947 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
16949 parser_show_error_line(p, &loc);
16950 set_yylval_noname();
16951 SET_LEX_STATE(EXPR_END);
16956 RUBY_SET_YYLLOC(loc);
16957 if (result == tIVAR) {
16958 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
16961 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
16963 parser_show_error_line(p, &loc);
16964 set_yylval_noname();
16965 SET_LEX_STATE(EXPR_END);
16969 if (tokadd_ident(p, c))
return 0;
16970 tokenize_ident(p, last_state);
16974static enum yytokentype
16977 enum yytokentype result;
16979 const enum lex_state_e last_state = p->lex.state;
16984 if (tokadd_mbchar(p, c) == -1)
return 0;
16986 }
while (parser_is_identchar(p));
16987 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
16991 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
16992 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
16993 result = tIDENTIFIER;
16997 result = tCONSTANT;
17002 if (IS_LABEL_POSSIBLE()) {
17003 if (IS_LABEL_SUFFIX(0)) {
17004 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
17006 set_yylval_name(TOK_INTERN());
17014 kw = rb_reserved_word(tok(p), toklen(p));
17016 enum lex_state_e state = p->lex.state;
17017 if (IS_lex_state_for(state, EXPR_FNAME)) {
17018 SET_LEX_STATE(EXPR_ENDFN);
17019 set_yylval_name(
rb_intern2(tok(p), toklen(p)));
17022 SET_LEX_STATE(kw->state);
17023 if (IS_lex_state(EXPR_BEG)) {
17024 p->command_start = TRUE;
17026 if (kw->id[0] == keyword_do) {
17027 if (lambda_beginning_p()) {
17028 p->lex.lpar_beg = -1;
17029 return keyword_do_LAMBDA;
17031 if (COND_P())
return keyword_do_cond;
17032 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
17033 return keyword_do_block;
17036 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED)))
17039 if (kw->id[0] != kw->id[1])
17040 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
17046 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
17048 SET_LEX_STATE(EXPR_CMDARG);
17051 SET_LEX_STATE(EXPR_ARG);
17054 else if (p->lex.state == EXPR_FNAME) {
17055 SET_LEX_STATE(EXPR_ENDFN);
17058 SET_LEX_STATE(EXPR_END);
17061 ident = tokenize_ident(p, last_state);
17062 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
17063 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
17064 (result == tIDENTIFIER) &&
17065 lvar_defined(p, ident)) {
17066 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
17071static enum yytokentype
17075 int space_seen = 0;
17078 enum lex_state_e last_state;
17079 int fallthru = FALSE;
17080 int token_seen = p->token_seen;
17082 if (p->lex.strterm) {
17083 if (p->lex.strterm->flags & STRTERM_HEREDOC) {
17084 return here_document(p, &p->lex.strterm->u.heredoc);
17088 return parse_string(p, &p->lex.strterm->u.literal);
17091 cmd_state = p->command_start;
17092 p->command_start = FALSE;
17093 p->token_seen = TRUE;
17095 last_state = p->lex.state;
17099 switch (c = nextc(p)) {
17111 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
17114 case ' ':
case '\t':
case '\f':
17118 while ((c = nextc(p))) {
17120 case ' ':
case '\t':
case '\f':
case '\r':
17129 dispatch_scan_event(p, tSP);
17134 p->token_seen = token_seen;
17136 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
17137 if (comment_at_top(p)) {
17138 set_file_encoding(p, p->lex.pcur, p->lex.pend);
17142 dispatch_scan_event(p, tCOMMENT);
17146 p->token_seen = token_seen;
17147 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
17148 !IS_lex_state(EXPR_LABELED));
17149 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
17151 dispatch_scan_event(p, tIGNORED_NL);
17154 if (!c && p->ctxt.in_kwarg) {
17155 goto normal_newline;
17160 switch (c = nextc(p)) {
17161 case ' ':
case '\t':
case '\f':
case '\r':
17167 if (space_seen) dispatch_scan_event(p, tSP);
17171 dispatch_delayed_token(p, tIGNORED_NL);
17172 if (peek(p,
'.') == (c ==
'&')) {
17174 dispatch_scan_event(p, tSP);
17179 p->ruby_sourceline--;
17180 p->lex.nextline = p->lex.lastline;
17183 if (p->lex.prevline && !p->eofp) p->lex.lastline = p->lex.prevline;
17185 p->lex.pend = p->lex.pcur = p->lex.pbeg +
RSTRING_LEN(p->lex.lastline);
17187 p->lex.ptok = p->lex.pcur;
17191 p->lex.ptok = p->lex.pcur;
17194 goto normal_newline;
17198 p->command_start = TRUE;
17199 SET_LEX_STATE(EXPR_BEG);
17203 if ((c = nextc(p)) ==
'*') {
17204 if ((c = nextc(p)) ==
'=') {
17205 set_yylval_id(idPow);
17206 SET_LEX_STATE(EXPR_BEG);
17210 if (IS_SPCARG(c)) {
17211 rb_warning0(
"`**' interpreted as argument prefix");
17214 else if (IS_BEG()) {
17218 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
17223 set_yylval_id(
'*');
17224 SET_LEX_STATE(EXPR_BEG);
17228 if (IS_SPCARG(c)) {
17229 rb_warning0(
"`*' interpreted as argument prefix");
17232 else if (IS_BEG()) {
17236 c = warn_balanced(
'*',
"*",
"argument prefix");
17239 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
17244 if (IS_AFTER_OPERATOR()) {
17245 SET_LEX_STATE(EXPR_ARG);
17251 SET_LEX_STATE(EXPR_BEG);
17265 if (word_match_p(p,
"begin", 5)) {
17266 int first_p = TRUE;
17269 dispatch_scan_event(p, tEMBDOC_BEG);
17273 dispatch_scan_event(p, tEMBDOC);
17278 compile_error(p,
"embedded document meets end of file");
17281 if (c ==
'=' && word_match_p(p,
"end", 3)) {
17287 dispatch_scan_event(p, tEMBDOC_END);
17292 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
17293 if ((c = nextc(p)) ==
'=') {
17294 if ((c = nextc(p)) ==
'=') {
17303 else if (c ==
'>') {
17312 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
17314 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
17315 int token = heredoc_identifier(p);
17316 if (token)
return token < 0 ? 0 : token;
17318 if (IS_AFTER_OPERATOR()) {
17319 SET_LEX_STATE(EXPR_ARG);
17322 if (IS_lex_state(EXPR_CLASS))
17323 p->command_start = TRUE;
17324 SET_LEX_STATE(EXPR_BEG);
17327 if ((c = nextc(p)) ==
'>') {
17334 if ((c = nextc(p)) ==
'=') {
17335 set_yylval_id(idLTLT);
17336 SET_LEX_STATE(EXPR_BEG);
17340 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
17346 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
17347 if ((c = nextc(p)) ==
'=') {
17351 if ((c = nextc(p)) ==
'=') {
17352 set_yylval_id(idGTGT);
17353 SET_LEX_STATE(EXPR_BEG);
17363 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
17364 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
17365 p->lex.ptok = p->lex.pcur-1;
17366 return tSTRING_BEG;
17369 if (IS_lex_state(EXPR_FNAME)) {
17370 SET_LEX_STATE(EXPR_ENDFN);
17373 if (IS_lex_state(EXPR_DOT)) {
17375 SET_LEX_STATE(EXPR_CMDARG);
17377 SET_LEX_STATE(EXPR_ARG);
17380 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
17381 return tXSTRING_BEG;
17384 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
17385 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
17386 p->lex.ptok = p->lex.pcur-1;
17387 return tSTRING_BEG;
17390 return parse_qmark(p, space_seen);
17393 if ((c = nextc(p)) ==
'&') {
17394 SET_LEX_STATE(EXPR_BEG);
17395 if ((c = nextc(p)) ==
'=') {
17396 set_yylval_id(idANDOP);
17397 SET_LEX_STATE(EXPR_BEG);
17403 else if (c ==
'=') {
17404 set_yylval_id(
'&');
17405 SET_LEX_STATE(EXPR_BEG);
17408 else if (c ==
'.') {
17409 set_yylval_id(idANDDOT);
17410 SET_LEX_STATE(EXPR_DOT);
17414 if (IS_SPCARG(c)) {
17416 (c = peekc_n(p, 1)) == -1 ||
17417 !(c ==
'\'' || c ==
'"' ||
17418 is_identchar((p->lex.pcur+1), p->lex.pend, p->enc))) {
17419 rb_warning0(
"`&' interpreted as argument prefix");
17423 else if (IS_BEG()) {
17427 c = warn_balanced(
'&',
"&",
"argument prefix");
17429 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
17433 if ((c = nextc(p)) ==
'|') {
17434 SET_LEX_STATE(EXPR_BEG);
17435 if ((c = nextc(p)) ==
'=') {
17436 set_yylval_id(idOROP);
17437 SET_LEX_STATE(EXPR_BEG);
17441 if (IS_lex_state_for(last_state, EXPR_BEG)) {
17449 set_yylval_id(
'|');
17450 SET_LEX_STATE(EXPR_BEG);
17453 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
17459 if (IS_AFTER_OPERATOR()) {
17460 SET_LEX_STATE(EXPR_ARG);
17468 set_yylval_id(
'+');
17469 SET_LEX_STATE(EXPR_BEG);
17472 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
17473 SET_LEX_STATE(EXPR_BEG);
17476 return parse_numeric(p,
'+');
17480 SET_LEX_STATE(EXPR_BEG);
17482 return warn_balanced(
'+',
"+",
"unary operator");
17486 if (IS_AFTER_OPERATOR()) {
17487 SET_LEX_STATE(EXPR_ARG);
17495 set_yylval_id(
'-');
17496 SET_LEX_STATE(EXPR_BEG);
17500 SET_LEX_STATE(EXPR_ENDFN);
17503 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
17504 SET_LEX_STATE(EXPR_BEG);
17507 return tUMINUS_NUM;
17511 SET_LEX_STATE(EXPR_BEG);
17513 return warn_balanced(
'-',
"-",
"unary operator");
17516 int is_beg = IS_BEG();
17517 SET_LEX_STATE(EXPR_BEG);
17518 if ((c = nextc(p)) ==
'.') {
17519 if ((c = nextc(p)) ==
'.') {
17520 if (p->ctxt.in_argdef) {
17521 SET_LEX_STATE(EXPR_ENDARG);
17524 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
17525 rb_warn0(
"... at EOL, should be parenthesized?");
17527 else if (p->lex.lpar_beg >= 0 && p->lex.lpar_beg+1 == p->lex.paren_nest) {
17528 if (IS_lex_state_for(last_state, EXPR_LABEL))
17531 return is_beg ? tBDOT3 : tDOT3;
17534 return is_beg ? tBDOT2 : tDOT2;
17538 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
17539 parse_numeric(p,
'.');
17541 yyerror0(
"unexpected fraction part after numeric literal");
17544 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
17546 SET_LEX_STATE(EXPR_END);
17547 p->lex.ptok = p->lex.pcur;
17550 set_yylval_id(
'.');
17551 SET_LEX_STATE(EXPR_DOT);
17555 case '0':
case '1':
case '2':
case '3':
case '4':
17556 case '5':
case '6':
case '7':
case '8':
case '9':
17557 return parse_numeric(p, c);
17562 SET_LEX_STATE(EXPR_ENDFN);
17563 p->lex.paren_nest--;
17569 SET_LEX_STATE(EXPR_END);
17570 p->lex.paren_nest--;
17575 if (!p->lex.brace_nest--)
return tSTRING_DEND;
17578 SET_LEX_STATE(EXPR_END);
17579 p->lex.paren_nest--;
17585 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
17586 SET_LEX_STATE(EXPR_BEG);
17589 set_yylval_id(idCOLON2);
17590 SET_LEX_STATE(EXPR_DOT);
17593 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
17595 c = warn_balanced(
':',
":",
"symbol literal");
17596 SET_LEX_STATE(EXPR_BEG);
17601 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
17604 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
17610 SET_LEX_STATE(EXPR_FNAME);
17615 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
17616 return tREGEXP_BEG;
17618 if ((c = nextc(p)) ==
'=') {
17619 set_yylval_id(
'/');
17620 SET_LEX_STATE(EXPR_BEG);
17624 if (IS_SPCARG(c)) {
17625 arg_ambiguous(p,
'/');
17626 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
17627 return tREGEXP_BEG;
17629 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
17630 return warn_balanced(
'/',
"/",
"regexp literal");
17633 if ((c = nextc(p)) ==
'=') {
17634 set_yylval_id(
'^');
17635 SET_LEX_STATE(EXPR_BEG);
17638 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
17643 SET_LEX_STATE(EXPR_BEG);
17644 p->command_start = TRUE;
17648 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
17652 if (IS_AFTER_OPERATOR()) {
17653 if ((c = nextc(p)) !=
'@') {
17656 SET_LEX_STATE(EXPR_ARG);
17659 SET_LEX_STATE(EXPR_BEG);
17667 else if (!space_seen) {
17670 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
17673 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
17674 rb_warning0(
"parentheses after method name is interpreted as "
17675 "an argument list, not a decomposed argument");
17677 p->lex.paren_nest++;
17680 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
17684 p->lex.paren_nest++;
17685 if (IS_AFTER_OPERATOR()) {
17686 if ((c = nextc(p)) ==
']') {
17687 p->lex.paren_nest--;
17688 SET_LEX_STATE(EXPR_ARG);
17689 if ((c = nextc(p)) ==
'=') {
17696 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
17699 else if (IS_BEG()) {
17702 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
17705 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
17711 ++p->lex.brace_nest;
17712 if (lambda_beginning_p())
17714 else if (IS_lex_state(EXPR_LABELED))
17716 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
17718 else if (IS_lex_state(EXPR_ENDARG))
17722 if (c != tLBRACE) {
17723 p->command_start = TRUE;
17724 SET_LEX_STATE(EXPR_BEG);
17727 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
17729 ++p->lex.paren_nest;
17738 dispatch_scan_event(p, tSP);
17741 if (c ==
' ')
return tSP;
17747 return parse_percent(p, space_seen, last_state);
17750 return parse_gvar(p, last_state);
17753 return parse_atmark(p, last_state);
17756 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
17757 p->ruby__end__seen = 1;
17763 dispatch_scan_event(p, k__END__);
17771 if (!parser_is_identchar(p)) {
17772 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
17781 return parse_ident(p, c, cmd_state);
17784static enum yytokentype
17787 enum yytokentype t;
17791 t = parser_yylex(p);
17793 if (p->lex.strterm && (p->lex.strterm->flags & STRTERM_HEREDOC))
17794 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*yylloc);
17796 RUBY_SET_YYLLOC(*yylloc);
17798 if (has_delayed_token(p))
17799 dispatch_delayed_token(p, t);
17801 dispatch_scan_event(p, t);
17806#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
17811 NODE *n = rb_ast_newnode(p->ast,
type);
17813 rb_node_init(n,
type, a0, a1, a2);
17815 nd_set_loc(n, loc);
17816 nd_set_node_id(n, parser_get_node_id(p));
17824 nd_set_line(nd, loc->beg_pos.lineno);
17829static enum node_type
17830nodetype(
NODE *node)
17832 return (
enum node_type)nd_type(node);
17836nodeline(
NODE *node)
17838 return nd_line(node);
17842newline_node(
NODE *node)
17845 node = remove_begin(node);
17846 node->flags |= NODE_FL_NEWLINE;
17856 nd_set_line(node, nd_line(orig));
17874 NODE *end, *h = head, *nd;
17876 if (tail == 0)
return head;
17878 if (h == 0)
return tail;
17879 switch (nd_type(h)) {
17886 parser_warning(p, h,
"unused literal ignored");
17889 h = end = NEW_BLOCK(head, &head->nd_loc);
17899 switch (nd_type(nd)) {
17906 parser_warning(p, tail,
"statement not reached");
17914 if (!nd_type_p(tail, NODE_BLOCK)) {
17915 tail = NEW_BLOCK(tail, &tail->nd_loc);
17916 tail->nd_end = tail;
17918 end->nd_next = tail;
17919 h->nd_end = tail->nd_end;
17920 nd_set_last_loc(head, nd_last_loc(tail));
17930 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
17931 if (list->nd_next) {
17932 last = list->nd_next->nd_end;
17938 list->nd_alen += 1;
17939 last->nd_next = NEW_LIST(item, &item->nd_loc);
17940 list->nd_next->nd_end = last->nd_next;
17942 nd_set_last_loc(list, nd_last_loc(item));
17949list_concat(
NODE *head,
NODE *tail)
17953 if (head->nd_next) {
17954 last = head->nd_next->nd_end;
17960 head->nd_alen += tail->nd_alen;
17961 last->nd_next = tail;
17962 if (tail->nd_next) {
17963 head->nd_next->nd_end = tail->nd_next->nd_end;
17966 head->nd_next->nd_end = tail;
17969 nd_set_last_loc(head, nd_last_loc(tail));
17975literal_concat0(
struct parser_params *p, VALUE head, VALUE tail)
17977 if (
NIL_P(tail))
return 1;
17979 compile_error(p,
"string literal encodings differ (%s / %s)",
17991string_literal_head(
enum node_type htype,
NODE *head)
17993 if (htype != NODE_DSTR)
return Qfalse;
17994 if (head->nd_next) {
17995 head = head->nd_next->nd_end->nd_head;
17996 if (!head || !nd_type_p(head, NODE_STR))
return Qfalse;
17998 const VALUE lit = head->nd_lit;
18007 enum node_type htype;
18010 if (!head)
return tail;
18011 if (!tail)
return head;
18013 htype = nd_type(head);
18014 if (htype == NODE_EVSTR) {
18015 head = new_dstr(p, head, loc);
18018 if (p->heredoc_indent > 0) {
18021 nd_set_type(head, NODE_DSTR);
18023 return list_append(p, head, tail);
18028 switch (nd_type(tail)) {
18030 if ((lit = string_literal_head(htype, head)) !=
Qfalse) {
18034 lit = head->nd_lit;
18036 if (htype == NODE_STR) {
18037 if (!literal_concat0(p, lit, tail->nd_lit)) {
18039 rb_discard_node(p, head);
18040 rb_discard_node(p, tail);
18043 rb_discard_node(p, tail);
18046 list_append(p, head, tail);
18051 if (htype == NODE_STR) {
18052 if (!literal_concat0(p, head->nd_lit, tail->nd_lit))
18054 tail->nd_lit = head->nd_lit;
18055 rb_discard_node(p, head);
18058 else if (
NIL_P(tail->nd_lit)) {
18060 head->nd_alen += tail->nd_alen - 1;
18061 if (!head->nd_next) {
18062 head->nd_next = tail->nd_next;
18064 else if (tail->nd_next) {
18065 head->nd_next->nd_end->nd_next = tail->nd_next;
18066 head->nd_next->nd_end = tail->nd_next->nd_end;
18068 rb_discard_node(p, tail);
18070 else if ((lit = string_literal_head(htype, head)) !=
Qfalse) {
18071 if (!literal_concat0(p, lit, tail->nd_lit))
18073 tail->nd_lit =
Qnil;
18077 list_concat(head, NEW_NODE(NODE_LIST, NEW_STR(tail->nd_lit, loc), tail->nd_alen, tail->nd_next, loc));
18082 if (htype == NODE_STR) {
18083 nd_set_type(head, NODE_DSTR);
18086 list_append(p, head, tail);
18095 if (nd_type_p(node, NODE_EVSTR)) {
18096 node = new_dstr(p, node, &node->nd_loc);
18107 switch (nd_type(node)) {
18109 nd_set_type(node, NODE_DSTR);
18117 return NEW_EVSTR(head, loc);
18123 VALUE lit = STR_NEW0();
18124 NODE *dstr = NEW_DSTR(lit, loc);
18126 return list_append(p, dstr, node);
18136 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
18137 nd_set_line(expr, op_loc->beg_pos.lineno);
18146 opcall = NEW_OPCALL(recv,
id, 0, loc);
18147 nd_set_line(opcall, op_loc->beg_pos.lineno);
18154 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
18155 nd_set_line(qcall, op_loc->beg_pos.lineno);
18163 if (block) block_dup_check(p, args, block);
18164 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
18165 if (block) ret = method_add_block(p, ret, block, loc);
18170#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? (node)->nd_body : node)
18175 int line = op_loc->beg_pos.lineno;
18179 if (node1 && (n = nd_once_body(node1)) != 0) {
18180 switch (nd_type(n)) {
18183 NODE *match = NEW_MATCH2(node1, node2, loc);
18184 nd_set_line(match, line);
18190 const VALUE lit = n->nd_lit;
18191 NODE *match = NEW_MATCH2(node1, node2, loc);
18192 match->nd_args = reg_named_capture_assign(p, lit, loc);
18193 nd_set_line(match, line);
18199 if (node2 && (n = nd_once_body(node2)) != 0) {
18202 switch (nd_type(n)) {
18207 match3 = NEW_MATCH3(node2, node1, loc);
18212 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
18213 nd_set_line(n, line);
18217# if WARN_PAST_SCOPE
18221 struct vtable *past = p->lvtbl->past;
18223 if (vtable_included(past,
id))
return 1;
18234 NODE *outer = local->numparam.outer;
18235 NODE *inner = local->numparam.inner;
18236 if (outer || inner) {
18237 NODE *used = outer ? outer : inner;
18238 compile_error(p,
"numbered parameter is already used in\n"
18239 "%s:%d: %s block here",
18240 p->ruby_sourcefile, nd_line(used),
18241 outer ?
"outer" :
"inner");
18242 parser_show_error_line(p, &used->nd_loc);
18255 return NEW_SELF(loc);
18257 return NEW_NIL(loc);
18259 return NEW_TRUE(loc);
18260 case keyword_false:
18261 return NEW_FALSE(loc);
18262 case keyword__FILE__:
18264 VALUE file = p->ruby_sourcefile_string;
18269 node = NEW_STR(file, loc);
18273 case keyword__LINE__:
18274 return NEW_LIT(
INT2FIX(p->tokline), loc);
18275 case keyword__ENCODING__:
18281 switch (id_type(
id)) {
18283 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
18284 if (NUMPARAM_ID_P(
id) && numparam_nested_p(p))
return 0;
18285 if (
id == p->cur_arg) {
18286 compile_error(p,
"circular argument reference - %"PRIsWARN,
rb_id2str(
id));
18289 if (vidp) *vidp |= LVAR_USED;
18290 node = NEW_DVAR(
id, loc);
18293 if (local_id_ref(p,
id, &vidp)) {
18294 if (
id == p->cur_arg) {
18295 compile_error(p,
"circular argument reference - %"PRIsWARN,
rb_id2str(
id));
18298 if (vidp) *vidp |= LVAR_USED;
18299 node = NEW_LVAR(
id, loc);
18302 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
18303 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
18304 if (numparam_nested_p(p))
return 0;
18305 node = NEW_DVAR(
id, loc);
18307 if (!local->numparam.current) local->numparam.current = node;
18310# if WARN_PAST_SCOPE
18312 rb_warning1(
"possible reference to past scope - %"PRIsWARN,
rb_id2str(
id));
18316 return NEW_VCALL(
id, loc);
18318 return NEW_GVAR(
id, loc);
18320 return NEW_IVAR(
id, loc);
18322 return NEW_CONST(
id, loc);
18324 return NEW_CVAR(
id, loc);
18326 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get",
rb_id2str(
id));
18331opt_arg_append(
NODE *opt_list,
NODE *opt)
18333 NODE *opts = opt_list;
18334 opts->nd_loc.end_pos = opt->nd_loc.end_pos;
18336 while (opts->nd_next) {
18337 opts = opts->nd_next;
18338 opts->nd_loc.end_pos = opt->nd_loc.end_pos;
18340 opts->nd_next = opt;
18349 NODE *kws = kwlist;
18350 kws->nd_loc.end_pos = kw->nd_loc.end_pos;
18351 while (kws->nd_next) {
18352 kws = kws->nd_next;
18353 kws->nd_loc.end_pos = kw->nd_loc.end_pos;
18363 return NEW_DEFINED(remove_begin_all(expr), loc);
18369 enum node_type
type = nd_type(symbol);
18372 nd_set_type(symbol, NODE_DSYM);
18375 nd_set_type(symbol, NODE_LIT);
18379 compile_error(p,
"unexpected node as symbol: %s", ruby_node_name(
type));
18381 return list_append(p, symbols, symbol);
18391 node = NEW_LIT(reg_compile(p, STR_NEW0(), options), loc);
18395 switch (nd_type(node)) {
18398 VALUE src = node->nd_lit;
18399 nd_set_type(node, NODE_LIT);
18400 nd_set_loc(node, loc);
18406 node = NEW_NODE(NODE_DSTR, lit, 1, NEW_LIST(node, loc), loc);
18410 nd_set_type(node, NODE_DREGX);
18411 nd_set_loc(node, loc);
18412 node->nd_cflag = options & RE_OPTION_MASK;
18413 if (!
NIL_P(node->nd_lit)) reg_fragment_check(p, node->nd_lit, options);
18414 for (list = (prev = node)->nd_next; list; list = list->nd_next) {
18415 NODE *frag = list->nd_head;
18416 enum node_type
type = nd_type(frag);
18417 if (
type == NODE_STR || (
type == NODE_DSTR && !frag->nd_next)) {
18418 VALUE tail = frag->nd_lit;
18419 if (reg_fragment_check(p, tail, options) && prev && !
NIL_P(prev->nd_lit)) {
18420 VALUE lit = prev == node ? prev->nd_lit : prev->nd_head->nd_lit;
18421 if (!literal_concat0(p, lit, tail)) {
18422 return NEW_NIL(loc);
18425 prev->nd_next = list->nd_next;
18426 rb_discard_node(p, list->nd_head);
18427 rb_discard_node(p, list);
18438 if (!node->nd_next) {
18439 VALUE src = node->nd_lit;
18440 nd_set_type(node, NODE_LIT);
18443 if (options & RE_OPTION_ONCE) {
18444 node = NEW_NODE(NODE_ONCE, 0, node, 0, loc);
18455 return NEW_KW_ARG(0, (k), loc);
18462 VALUE lit = STR_NEW0();
18463 NODE *xstr = NEW_XSTR(lit, loc);
18467 switch (nd_type(node)) {
18469 nd_set_type(node, NODE_XSTR);
18470 nd_set_loc(node, loc);
18473 nd_set_type(node, NODE_DXSTR);
18474 nd_set_loc(node, loc);
18477 node = NEW_NODE(NODE_DXSTR,
Qnil, 1, NEW_LIST(node, loc), loc);
18488 if (!arg || !p->case_labels)
return;
18490 lit = rb_node_case_when_optimizable_literal(arg);
18491 if (lit ==
Qundef)
return;
18492 if (nd_type_p(arg, NODE_STR)) {
18496 if (
NIL_P(p->case_labels)) {
18501 if (!
NIL_P(line)) {
18502 rb_warning1(
"duplicated `when' clause with line %d is ignored",
18514 if (is_notop_id(
id)) {
18515 switch (
id & ID_SCOPE_MASK) {
18516 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
18519 if (dyna_in_block(p)) {
18520 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
18522 if (local_id(p,
id))
return 1;
18527 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get",
rb_id2str(
id));
18534 VALUE src = 0, err;
18536 if (ripper_is_node_yylval(re)) {
18537 src = RNODE(re)->nd_cval;
18538 re = RNODE(re)->nd_rval;
18540 if (ripper_is_node_yylval(opt)) {
18541 options = (int)RNODE(opt)->nd_tag;
18542 opt = RNODE(opt)->nd_rval;
18544 if (src &&
NIL_P(parser_reg_compile(p, src, options, &err))) {
18545 compile_error(p,
"%"PRIsVALUE, err);
18547 return dispatch2(regexp_literal, re, opt);
18551static inline enum lex_state_e
18552parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
18555 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
18557 return p->lex.state = ls;
18561static const char rb_parser_lex_state_names[][8] = {
18562 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
18563 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
18564 "LABEL",
"LABELED",
"FITEM",
18568append_lex_state_name(
enum lex_state_e state, VALUE buf)
18571 unsigned int mask = 1;
18572 static const char none[] =
"NONE";
18574 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
18575 if ((
unsigned)state & mask) {
18590flush_debug_buffer(
struct parser_params *p, VALUE out, VALUE str)
18592 VALUE mesg = p->debug_buffer;
18595 p->debug_buffer =
Qnil;
18604rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
18605 enum lex_state_e to,
int line)
18609 append_lex_state_name(from, mesg);
18611 append_lex_state_name(to, mesg);
18613 flush_debug_buffer(p, p->debug_output, mesg);
18618rb_parser_lex_state_name(
enum lex_state_e state)
18620 return rb_fstring(append_lex_state_name(state,
rb_str_new(0, 0)));
18624append_bitstack_value(stack_type stack, VALUE mesg)
18630 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
18631 for (; mask && !(stack & mask); mask >>= 1)
continue;
18632 for (; mask; mask >>= 1)
rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
18637rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
18638 const char *name,
int line)
18641 append_bitstack_value(stack, mesg);
18643 flush_debug_buffer(p, p->debug_output, mesg);
18647rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
18659 append_lex_state_name(p->lex.state, mesg);
18660 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
18662 append_bitstack_value(p->cond_stack, mesg);
18663 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
18665 append_bitstack_value(p->cmdarg_stack, mesg);
18666 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
18673rb_parser_set_pos(
YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
18675 yylloc->beg_pos.lineno = sourceline;
18676 yylloc->beg_pos.column = beg_pos;
18677 yylloc->end_pos.lineno = sourceline;
18678 yylloc->end_pos.column = end_pos;
18685 int sourceline = here->sourceline;
18686 int beg_pos = (int)here->offset - here->quote
18687 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
18688 int end_pos = (int)here->offset + here->length + here->quote;
18690 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
18696 int sourceline = p->ruby_sourceline;
18697 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
18698 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
18699 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
18705 int sourceline = p->ruby_sourceline;
18706 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
18707 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
18708 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
18713assignable0(
struct parser_params *p, ID
id,
const char **err)
18715 if (!
id)
return -1;
18718 *err =
"Can't change the value of self";
18721 *err =
"Can't assign to nil";
18724 *err =
"Can't assign to true";
18726 case keyword_false:
18727 *err =
"Can't assign to false";
18729 case keyword__FILE__:
18730 *err =
"Can't assign to __FILE__";
18732 case keyword__LINE__:
18733 *err =
"Can't assign to __LINE__";
18735 case keyword__ENCODING__:
18736 *err =
"Can't assign to __ENCODING__";
18739 switch (id_type(
id)) {
18741 if (dyna_in_block(p)) {
18742 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
18743 compile_error(p,
"Can't assign to numbered parameter _%d",
18744 NUMPARAM_ID_TO_IDX(
id));
18747 if (dvar_curr(p,
id))
return NODE_DASGN;
18748 if (dvar_defined(p,
id))
return NODE_DASGN;
18749 if (local_id(p,
id))
return NODE_LASGN;
18754 if (!local_id(p,
id)) local_var(p,
id);
18758 case ID_GLOBAL:
return NODE_GASGN;
18759 case ID_INSTANCE:
return NODE_IASGN;
18761 if (!p->ctxt.in_def)
return NODE_CDECL;
18762 *err =
"dynamic constant assignment";
18764 case ID_CLASS:
return NODE_CVASGN;
18766 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set",
rb_id2str(
id));
18775 const char *err = 0;
18776 int node_type = assignable0(p,
id, &err);
18777 switch (node_type) {
18778 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
18779 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
18780 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
18781 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
18782 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, loc);
18783 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
18785 if (err) yyerror1(loc, err);
18786 return NEW_BEGIN(0, loc);
18792 const char *err = 0;
18793 assignable0(p, get_id(lhs), &err);
18794 if (err) lhs = assign_error(p, err, lhs);
18800is_private_local_id(ID name)
18803 if (name == idUScore)
return 1;
18804 if (!is_local_id(name))
return 0;
18813 if (is_private_local_id(name))
return 1;
18814 if (dyna_in_block(p)) {
18815 if (dvar_curr(p, name)) {
18816 yyerror0(
"duplicated argument name");
18818 else if (dvar_defined(p, name) || local_id(p, name)) {
18819 vtable_add(p->lvtbl->vars, name);
18820 if (p->lvtbl->used) {
18821 vtable_add(p->lvtbl->used, (ID)p->ruby_sourceline | LVAR_USED);
18827 if (local_id(p, name)) {
18828 yyerror0(
"duplicated argument name");
18837 shadowing_lvar_0(p, name);
18845 if (!is_local_id(name)) {
18846 compile_error(p,
"invalid local variable - %"PRIsVALUE,
18850 if (!shadowing_lvar_0(p, name))
return;
18858 return NEW_ATTRASGN(recv, tASET, idx, loc);
18864 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
18865 compile_error(p,
"both block arg and actual block given");
18873 return NEW_ATTRASGN(recv,
id, 0, loc);
18879 switch (nd_type(node)) {
18881 compile_error(p,
"Can't set variable $%ld", node->nd_nth);
18883 case NODE_BACK_REF:
18884 compile_error(p,
"Can't set variable $%c", (
int)node->nd_nth);
18894 return dispatch2(assign_error, mesg, expr);
18902 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
18903 switch (nd_type(node1)) {
18905 return list_append(p, node1, node2);
18906 case NODE_BLOCK_PASS:
18907 node1->nd_head = arg_append(p, node1->nd_head, node2, loc);
18908 node1->nd_loc.end_pos = node1->nd_head->nd_loc.end_pos;
18910 case NODE_ARGSPUSH:
18911 node1->nd_body = list_append(p, NEW_LIST(node1->nd_body, &node1->nd_body->nd_loc), node2);
18912 node1->nd_loc.end_pos = node1->nd_body->nd_loc.end_pos;
18913 nd_set_type(node1, NODE_ARGSCAT);
18916 if (!nd_type_p(node1->nd_body, NODE_LIST))
break;
18917 node1->nd_body = list_append(p, node1->nd_body, node2);
18918 node1->nd_loc.end_pos = node1->nd_body->nd_loc.end_pos;
18921 return NEW_ARGSPUSH(node1, node2, loc);
18927 if (!node2)
return node1;
18928 switch (nd_type(node1)) {
18929 case NODE_BLOCK_PASS:
18930 if (node1->nd_head)
18931 node1->nd_head = arg_concat(p, node1->nd_head, node2, loc);
18933 node1->nd_head = NEW_LIST(node2, loc);
18935 case NODE_ARGSPUSH:
18936 if (!nd_type_p(node2, NODE_LIST))
break;
18937 node1->nd_body = list_concat(NEW_LIST(node1->nd_body, loc), node2);
18938 nd_set_type(node1, NODE_ARGSCAT);
18941 if (!nd_type_p(node2, NODE_LIST) ||
18942 !nd_type_p(node1->nd_body, NODE_LIST))
break;
18943 node1->nd_body = list_concat(node1->nd_body, node2);
18946 return NEW_ARGSCAT(node1, node2, loc);
18953 if ((n1 = splat_array(args)) != 0) {
18954 return list_append(p, n1, last_arg);
18956 return arg_append(p, args, last_arg, loc);
18963 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
18964 return list_concat(n1, rest_arg);
18966 return arg_concat(p, args, rest_arg, loc);
18970splat_array(
NODE* node)
18972 if (nd_type_p(node, NODE_SPLAT)) node = node->nd_head;
18973 if (nd_type_p(node, NODE_LIST))
return node;
18982 switch (nd_type(rhs)) {
18984 if (local_id_ref(p, rhs->nd_vid, &vidp)) {
18985 if (vidp) *vidp |= LVAR_USED;
18989 if (dvar_defined_ref(p, rhs->nd_vid, &vidp)) {
18990 if (vidp) *vidp |= LVAR_USED;
18995 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
18996 mark_lvar_used(p, rhs->nd_head);
19007 if (!nd_type_p(n, NODE_CALL)) {
19008 const YYLTYPE *loc = &n->nd_loc;
19016 for (; n && nd_type_p(n, NODE_COLON2); n = n->nd_head) {
19019 if (n && nd_type_p(n, NODE_CONST)) {
19023 else if (n && nd_type_p(n, NODE_COLON3)) {
19032 path = rb_fstring(path);
19034 *dest = n = NEW_LIT(path, loc);
19040extern VALUE rb_mRubyVMFrozenCore;
19045 NODE *fcore = NEW_LIT(rb_mRubyVMFrozenCore, loc);
19048 return NEW_CALL(fcore,
rb_intern(
"make_shareable_copy"),
19049 NEW_LIST(value, loc), loc);
19052 return NEW_CALL(fcore,
rb_intern(
"make_shareable"),
19053 NEW_LIST(value, loc), loc);
19060 NODE *fcore = NEW_LIT(rb_mRubyVMFrozenCore, loc);
19061 NODE *args = NEW_LIST(value, loc);
19062 args = list_append(p, args, const_decl_path(p, dest));
19063 return NEW_CALL(fcore,
rb_intern(
"ensure_shareable"), args, loc);
19066static int is_static_content(
NODE *node);
19069shareable_literal_value(
NODE *node)
19071 if (!node)
return Qnil;
19072 enum node_type
type = nd_type(node);
19081 return node->nd_lit;
19087#ifndef SHAREABLE_BARE_EXPRESSION
19088#define SHAREABLE_BARE_EXPRESSION 1
19092shareable_literal_constant(
struct parser_params *p,
enum shareability shareable,
19095# define shareable_literal_constant_next(n) \
19096 shareable_literal_constant(p, shareable, dest, (n), &(n)->nd_loc, level+1)
19099 if (!value)
return 0;
19100 enum node_type
type = nd_type(value);
19109 if (shareable == shareable_literal) {
19110 value = NEW_CALL(value, idUMinus, 0, loc);
19115 lit = rb_fstring(value->nd_lit);
19116 nd_set_type(value, NODE_LIT);
19123 NODE *n = NEW_LIT(lit, loc);
19129 for (
NODE *n = value; n; n = n->nd_next) {
19130 NODE *elt = n->nd_head;
19132 elt = shareable_literal_constant_next(elt);
19136 else if (
RTEST(lit)) {
19142 VALUE e = shareable_literal_value(elt);
19155 if (!value->nd_brace)
return 0;
19157 for (
NODE *n = value->nd_head; n; n = n->nd_next->nd_next) {
19158 NODE *key = n->nd_head;
19159 NODE *val = n->nd_next->nd_head;
19161 key = shareable_literal_constant_next(key);
19165 else if (
RTEST(lit)) {
19171 val = shareable_literal_constant_next(val);
19173 n->nd_next->nd_head = val;
19175 else if (
RTEST(lit)) {
19181 VALUE k = shareable_literal_value(key);
19182 VALUE v = shareable_literal_value(val);
19195 if (shareable == shareable_literal &&
19196 (SHAREABLE_BARE_EXPRESSION || level > 0)) {
19197 return ensure_shareable_node(p, dest, value, loc);
19203 if (!lit)
return 0;
19207 value = make_shareable_node(p, value,
false, loc);
19215# undef shareable_literal_constant_next
19219shareable_constant_value(
struct parser_params *p,
enum shareability shareable,
19222 if (!value)
return 0;
19223 switch (shareable) {
19224 case shareable_none:
19227 case shareable_literal:
19229 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
19230 if (lit)
return lit;
19235 case shareable_copy:
19236 case shareable_everything:
19238 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
19239 if (lit)
return lit;
19240 return make_shareable_node(p, value, shareable == shareable_copy, loc);
19252 if (!lhs)
return 0;
19254 switch (nd_type(lhs)) {
19256 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
19265 lhs->nd_value = rhs;
19266 nd_set_loc(lhs, loc);
19269 case NODE_ATTRASGN:
19270 lhs->nd_args = arg_append(p, lhs->nd_args, rhs, loc);
19271 nd_set_loc(lhs, loc);
19285 NODE *void_node = 0, *vn;
19288 rb_warning0(
"empty expression");
19291 switch (nd_type(node)) {
19297 return void_node ? void_node : node;
19300 if (!node->nd_body || !nd_type_p(node->nd_body, NODE_IN)) {
19301 compile_error(p,
"unexpected node");
19304 if (node->nd_body->nd_body) {
19308 return void_node ? void_node : node;
19311 while (node->nd_next) {
19312 node = node->nd_next;
19314 node = node->nd_head;
19318 node = node->nd_body;
19323 if (!node->nd_body) {
19326 else if (!node->nd_else) {
19329 vn = value_expr_check(p, node->nd_body);
19330 if (!vn)
return NULL;
19331 if (!void_node) void_node = vn;
19332 node = node->nd_else;
19337 node = node->nd_1st;
19343 mark_lvar_used(p, node);
19357 NODE *void_node = value_expr_check(p, node);
19359 yyerror1(&void_node->nd_loc,
"void value expression");
19368 const char *useless = 0;
19372 if (!node || !(node = nd_once_body(node)))
return;
19373 switch (nd_type(node)) {
19375 switch (node->nd_mid) {
19405 case NODE_BACK_REF:
19406 useless =
"a variable";
19409 useless =
"a constant";
19415 useless =
"a literal";
19440 useless =
"defined?";
19445 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
19452 NODE *
const n = node;
19454 if (!node)
return n;
19455 if (!nd_type_p(node, NODE_BLOCK))
return n;
19457 while (node->nd_next) {
19458 void_expr(p, node->nd_head);
19459 node = node->nd_next;
19465remove_begin(
NODE *node)
19467 NODE **n = &node, *n1 = node;
19468 while (n1 && nd_type_p(n1, NODE_BEGIN) && n1->nd_body) {
19469 *n = n1 = n1->nd_body;
19475remove_begin_all(
NODE *node)
19477 NODE **n = &node, *n1 = node;
19478 while (n1 && nd_type_p(n1, NODE_BEGIN)) {
19479 *n = n1 = n1->nd_body;
19487 NODE *node = *body;
19490 *body = NEW_NIL(&NULL_LOC);
19493#define subnodes(n1, n2) \
19494 ((!node->n1) ? (node->n2 ? (body = &node->n2, 1) : 0) : \
19495 (!node->n2) ? (body = &node->n1, 1) : \
19496 (reduce_nodes(p, &node->n1), body = &node->n2, 1))
19499 int newline = (int)(node->flags & NODE_FL_NEWLINE);
19500 switch (nd_type(node)) {
19506 *body = node = node->nd_stts;
19507 if (newline && node) node->flags |= NODE_FL_NEWLINE;
19510 *body = node = node->nd_body;
19511 if (newline && node) node->flags |= NODE_FL_NEWLINE;
19514 body = &node->nd_end->nd_head;
19518 if (subnodes(nd_body, nd_else))
break;
19521 body = &node->nd_body;
19524 if (!subnodes(nd_body, nd_next))
goto end;
19527 if (!subnodes(nd_head, nd_resq))
goto end;
19530 if (node->nd_else) {
19531 body = &node->nd_resq;
19534 if (!subnodes(nd_head, nd_resq))
goto end;
19540 if (newline && node) node->flags |= NODE_FL_NEWLINE;
19547is_static_content(
NODE *node)
19549 if (!node)
return 1;
19550 switch (nd_type(node)) {
19552 if (!(node = node->nd_head))
break;
19555 if (!is_static_content(node->nd_head))
return 0;
19556 }
while ((node = node->nd_next) != 0);
19573 switch (nd_type(node)) {
19585 if (!node->nd_value)
return 1;
19586 if (is_static_content(node->nd_value)) {
19588 parser_warn(p, node->nd_value,
"found `= literal' in conditional, should be ==");
19599#define SWITCH_BY_COND_TYPE(t, w, arg) \
19601 case COND_IN_OP: break; \
19602 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
19603 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
19611 enum node_type
type;
19613 if (node == 0)
return 0;
19615 type = nd_type(node);
19618 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
19620 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
19622 return cond0(p, node, COND_IN_FF, loc);
19628 if (node == 0)
return 0;
19629 if (!(node = nd_once_body(node)))
return 0;
19630 assign_in_cond(p, node);
19632 switch (nd_type(node)) {
19636 SWITCH_BY_COND_TYPE(
type, warn,
"string ")
19640 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning, "regex ")
19642 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
19646 node->nd_1st = cond0(p, node->nd_1st, COND_IN_COND, loc);
19647 node->nd_2nd = cond0(p, node->nd_2nd, COND_IN_COND, loc);
19652 node->nd_beg = range_op(p, node->nd_beg, loc);
19653 node->nd_end = range_op(p, node->nd_end, loc);
19654 if (nd_type_p(node, NODE_DOT2)) nd_set_type(node,NODE_FLIP2);
19655 else if (nd_type_p(node, NODE_DOT3)) nd_set_type(node, NODE_FLIP3);
19660 SWITCH_BY_COND_TYPE(
type, warning, "symbol ")
19665 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ")
19666 nd_set_type(node, NODE_MATCH);
19668 else if (node->nd_lit ==
Qtrue ||
19669 node->nd_lit ==
Qfalse) {
19672 else if (
SYMBOL_P(node->nd_lit)) {
19676 SWITCH_BY_COND_TYPE(
type, warning,
"")
19687 if (node == 0)
return 0;
19688 return cond0(p, node, COND_IN_COND, loc);
19694 if (node == 0)
return 0;
19695 return cond0(p, node, COND_IN_OP, loc);
19702 return NEW_NIL(&loc);
19708 if (!cc)
return right;
19709 cc = cond0(p, cc, COND_IN_COND, loc);
19710 return newline_node(NEW_IF(cc, left, right, loc));
19716 if (!cc)
return right;
19717 cc = cond0(p, cc, COND_IN_COND, loc);
19718 return newline_node(NEW_UNLESS(cc, left, right, loc));
19725 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
19728 if (left && nd_type_p(left,
type)) {
19729 NODE *node = left, *second;
19730 while ((second = node->nd_2nd) != 0 && nd_type_p(second,
type)) {
19733 node->nd_2nd = NEW_NODE(
type, second, right, 0, loc);
19734 nd_set_line(node->nd_2nd, op_loc->beg_pos.lineno);
19735 left->nd_loc.end_pos = loc->end_pos;
19738 op = NEW_NODE(
type, left, right, 0, loc);
19739 nd_set_line(op, op_loc->beg_pos.lineno);
19746 if (node && nd_type_p(node, NODE_BLOCK_PASS)) {
19747 compile_error(p,
"block argument should not be given");
19755 no_blockarg(p, node);
19756 if (nd_type_p(node, NODE_LIST)) {
19757 if (node->nd_next == 0) {
19758 node = node->nd_head;
19761 nd_set_type(node, NODE_VALUES);
19771 if (node) no_blockarg(p, node);
19773 return NEW_YIELD(node, loc);
19792 BIGNUM_NEGATE(lit);
19796 RATIONAL_SET_NUM(lit, negate_lit(p, RRATIONAL(lit)->num));
19799 RCOMPLEX_SET_REAL(lit, negate_lit(p, RCOMPLEX(lit)->real));
19800 RCOMPLEX_SET_IMAG(lit, negate_lit(p, RCOMPLEX(lit)->imag));
19807 rb_parser_fatal(p,
"unknown literal type (%s) passed to negate_lit",
19808 rb_builtin_class_name(lit));
19815arg_blk_pass(
NODE *node1,
NODE *node2)
19818 if (!node1)
return node2;
19819 node2->nd_head = node1;
19820 nd_set_first_lineno(node2, nd_first_lineno(node1));
19821 nd_set_first_column(node2, nd_first_column(node1));
19830 if (args->pre_args_num)
return false;
19831 if (args->post_args_num)
return false;
19832 if (args->rest_arg)
return false;
19833 if (args->opt_args)
return false;
19834 if (args->block_arg)
return false;
19835 if (args->kw_args)
return false;
19836 if (args->kw_rest_arg)
return false;
19843 int saved_line = p->ruby_sourceline;
19846 if (args->block_arg == idFWD_BLOCK) {
19848 yyerror1(&tail->nd_loc,
"... after rest argument");
19851 rest_arg = idFWD_REST;
19854 args->pre_args_num = pre_args ?
rb_long2int(pre_args->nd_plen) : 0;
19855 args->pre_init = pre_args ? pre_args->nd_next : 0;
19857 args->post_args_num = post_args ?
rb_long2int(post_args->nd_plen) : 0;
19858 args->post_init = post_args ? post_args->nd_next : 0;
19859 args->first_post_arg = post_args ? post_args->nd_pid : 0;
19861 args->rest_arg = rest_arg;
19863 args->opt_args = opt_args;
19865 args->ruby2_keywords = rest_arg == idFWD_REST;
19867 p->ruby_sourceline = saved_line;
19868 nd_set_loc(tail, loc);
19876 int saved_line = p->ruby_sourceline;
19878 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
19880 rb_imemo_tmpbuf_set_ptr(tmpbuf, args);
19881 args->imemo = tmpbuf;
19882 node = NEW_NODE(NODE_ARGS, 0, 0, args, &NULL_LOC);
19884 if (p->error_p)
return node;
19886 args->block_arg = block;
19887 args->kw_args = kw_args;
19896 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
19897 struct vtable *vtargs = p->lvtbl->args;
19898 NODE *kwn = kw_args;
19900 if (block) block = vtargs->tbl[vtargs->pos-1];
19901 vtable_pop(vtargs, !!block + !!kw_rest_arg);
19902 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
19904 if (!NODE_REQUIRED_KEYWORD_P(kwn->nd_body))
19906 --required_kw_vars;
19907 kwn = kwn->nd_next;
19910 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
19911 ID vid = kwn->nd_body->nd_vid;
19912 if (NODE_REQUIRED_KEYWORD_P(kwn->nd_body)) {
19913 *required_kw_vars++ = vid;
19920 arg_var(p, kw_bits);
19921 if (kw_rest_arg) arg_var(p, kw_rest_arg);
19922 if (block) arg_var(p, block);
19924 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
19925 args->kw_rest_arg->nd_cflag = kw_bits;
19927 else if (kw_rest_arg == idNil) {
19928 args->no_kwarg = 1;
19930 else if (kw_rest_arg) {
19931 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
19934 p->ruby_sourceline = saved_line;
19941 if (max_numparam > NO_PARAM) {
19943 YYLTYPE loc = RUBY_INIT_YYLLOC();
19944 args = new_args_tail(p, 0, 0, 0, 0);
19945 nd_set_loc(args, &loc);
19947 args->nd_ainfo->pre_args_num = max_numparam;
19957 aryptn->nd_pconst = constant;
19960 NODE *pre_args = NEW_LIST(pre_arg, loc);
19961 if (apinfo->pre_args) {
19962 apinfo->pre_args = list_concat(pre_args, apinfo->pre_args);
19965 apinfo->pre_args = pre_args;
19974 int saved_line = p->ruby_sourceline;
19976 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
19978 rb_imemo_tmpbuf_set_ptr(tmpbuf, apinfo);
19979 node = NEW_NODE(NODE_ARYPTN, 0, tmpbuf, apinfo, loc);
19982 apinfo->pre_args = pre_args;
19986 apinfo->rest_arg = assignable(p, rest_arg, 0, loc);
19989 apinfo->rest_arg = NODE_SPECIAL_NO_NAME_REST;
19993 apinfo->rest_arg = NULL;
19996 apinfo->post_args = post_args;
19998 p->ruby_sourceline = saved_line;
20005 fndptn->nd_pconst = constant;
20013 int saved_line = p->ruby_sourceline;
20015 VALUE tmpbuf = rb_imemo_tmpbuf_auto_free_pointer();
20017 rb_imemo_tmpbuf_set_ptr(tmpbuf, fpinfo);
20018 node = NEW_NODE(NODE_FNDPTN, 0, tmpbuf, fpinfo, loc);
20021 fpinfo->pre_rest_arg = pre_rest_arg ? assignable(p, pre_rest_arg, 0, loc) : NODE_SPECIAL_NO_NAME_REST;
20022 fpinfo->args = args;
20023 fpinfo->post_rest_arg = post_rest_arg ? assignable(p, post_rest_arg, 0, loc) : NODE_SPECIAL_NO_NAME_REST;
20025 p->ruby_sourceline = saved_line;
20032 hshptn->nd_pconst = constant;
20039 int saved_line = p->ruby_sourceline;
20040 NODE *node, *kw_rest_arg_node;
20042 if (kw_rest_arg == idNil) {
20043 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
20045 else if (kw_rest_arg) {
20046 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
20049 kw_rest_arg_node = NULL;
20052 node = NEW_NODE(NODE_HSHPTN, 0, kw_args, kw_rest_arg_node, loc);
20054 p->ruby_sourceline = saved_line;
20064 return NEW_LIT(
ID2SYM(idNULL), loc);
20067 switch (nd_type(node)) {
20069 nd_set_type(node, NODE_DSYM);
20070 nd_set_loc(node, loc);
20073 lit = node->nd_lit;
20075 nd_set_type(node, NODE_LIT);
20076 nd_set_loc(node, loc);
20079 node = NEW_NODE(NODE_DSYM,
Qnil, 1, NEW_LIST(node, loc), loc);
20086append_literal_keys(st_data_t k, st_data_t v, st_data_t h)
20091 node->nd_next->nd_end = node->nd_next;
20092 node->nd_next->nd_next = 0;
20094 list_concat(*result, node);
20097 return ST_CONTINUE;
20101hash_literal_key_p(VALUE k)
20103 switch (OBJ_BUILTIN_TYPE(k)) {
20112literal_cmp(VALUE val, VALUE lit)
20114 if (val == lit)
return 0;
20115 if (!hash_literal_key_p(val) || !hash_literal_key_p(lit))
return -1;
20116 return rb_iseq_cdhash_cmp(val, lit);
20120literal_hash(VALUE a)
20122 if (!hash_literal_key_p(a))
return (st_index_t)a;
20123 return rb_iseq_cdhash_hash(a);
20134 st_table *literal_keys = st_init_table_with_size(&literal_type, hash->nd_alen / 2);
20136 NODE *last_expr = 0;
20138 while (hash && hash->nd_head && hash->nd_next) {
20139 NODE *head = hash->nd_head;
20140 NODE *value = hash->nd_next;
20141 NODE *next = value->nd_next;
20142 st_data_t key = (st_data_t)head;
20144 value->nd_next = 0;
20145 if (nd_type_p(head, NODE_LIT) &&
20146 st_delete(literal_keys, (key = (st_data_t)head->nd_lit, &key), &data)) {
20147 NODE *dup_value = ((
NODE *)data)->nd_next;
20149 "key %+"PRIsVALUE
" is duplicated and overwritten on line %d",
20150 head->nd_lit, nd_line(head));
20151 if (dup_value == last_expr) {
20152 value->nd_head = block_append(p, dup_value->nd_head, value->nd_head);
20155 last_expr->nd_head = block_append(p, dup_value->nd_head, last_expr->nd_head);
20158 st_insert(literal_keys, (st_data_t)key, (st_data_t)hash);
20159 last_expr = nd_type_p(head, NODE_LIT) ? value : head;
20162 st_foreach(literal_keys, append_literal_keys, (st_data_t)&result);
20163 st_free_table(literal_keys);
20165 if (!result) result = hash;
20166 else list_concat(result, hash);
20168 result->nd_loc = loc;
20175 if (hash) hash = remove_duplicate_keys(p, hash);
20176 return NEW_HASH(hash, loc);
20183 if (is_private_local_id(
id)) {
20186 if (st_is_member(p->pvtbl,
id)) {
20187 yyerror1(loc,
"duplicated variable name");
20190 st_insert(p->pvtbl, (st_data_t)
id, 0);
20198 p->pktbl = st_init_numtable();
20200 else if (st_is_member(p->pktbl, key)) {
20201 yyerror1(loc,
"duplicated key name");
20204 st_insert(p->pktbl, (st_data_t)key, 0);
20211 return NEW_HASH(hash, loc);
20222 ID vid = lhs->nd_vid;
20223 YYLTYPE lhs_loc = lhs->nd_loc;
20224 int shareable = ctxt.shareable_constant_value;
20226 switch (nd_type(lhs)) {
20237 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
20238 lhs->nd_value = rhs;
20239 nd_set_loc(lhs, loc);
20240 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
20241 if (is_notop_id(vid)) {
20242 switch (id_type(vid)) {
20246 asgn->nd_aid = vid;
20250 else if (op == tANDOP) {
20252 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
20254 lhs->nd_value = rhs;
20255 nd_set_loc(lhs, loc);
20256 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
20260 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
20262 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
20264 asgn->nd_value = rhs;
20265 nd_set_loc(asgn, loc);
20269 asgn = NEW_BEGIN(0, loc);
20280 args = make_list(args, args_loc);
20281 if (nd_type_p(args, NODE_BLOCK_PASS)) {
20282 args = NEW_ARGSCAT(args, rhs, loc);
20285 args = arg_concat(p, args, rhs, loc);
20287 asgn = NEW_OP_ASGN1(ary, op, args, loc);
20294 ID atype, ID attr, ID op,
NODE *rhs,
const YYLTYPE *loc)
20298 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc);
20309 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
20310 asgn = NEW_OP_CDECL(lhs, op, rhs, loc);
20313 asgn = NEW_BEGIN(0, loc);
20322 if (p->ctxt.in_def) {
20323 yyerror1(loc,
"dynamic constant assignment");
20325 return NEW_CDECL(0, 0, (path), loc);
20331 if (p->ctxt.in_def) {
20332 path = assign_error(p,
"dynamic constant assignment", path);
20338assign_error(
struct parser_params *p,
const char *mesg, VALUE a)
20340 a = dispatch2(assign_error, ERR_MESG(), a);
20348 return ripper_new_yylval(p, get_id(a), dispatch1(var_field, a), 0);
20356 NODE *result = head;
20358 NODE *tmp = rescue_else ? rescue_else : rescue;
20359 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
20361 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
20362 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
20364 else if (rescue_else) {
20365 result = block_append(p, result, rescue_else);
20368 result = NEW_ENSURE(result, ensure, loc);
20370 fixpos(result, head);
20380 if (!local->used)
return;
20381 cnt = local->used->pos;
20382 if (cnt != local->vars->pos) {
20383 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
20386 ID *v = local->vars->tbl;
20387 ID *u = local->used->tbl;
20388 for (
int i = 0; i < cnt; ++i) {
20389 if (!v[i] || (u[i] & LVAR_USED))
continue;
20390 if (is_private_local_id(v[i]))
continue;
20391 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN,
rb_id2str(v[i]));
20400 int inherits_dvars = toplevel_scope && compile_for_eval;
20404 local->prev = p->lvtbl;
20405 local->args = vtable_alloc(0);
20406 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
20408 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
20409 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
20410 local->numparam.outer = 0;
20411 local->numparam.inner = 0;
20412 local->numparam.current = 0;
20414 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
20416# if WARN_PAST_SCOPE
20428 if (p->lvtbl->used) {
20429 warn_unused_var(p, p->lvtbl);
20430 vtable_free(p->lvtbl->used);
20432# if WARN_PAST_SCOPE
20433 while (p->lvtbl->past) {
20434 struct vtable *past = p->lvtbl->past;
20435 p->lvtbl->past = past->prev;
20439 vtable_free(p->lvtbl->args);
20440 vtable_free(p->lvtbl->vars);
20443 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
20451 int cnt_args = vtable_size(p->lvtbl->args);
20452 int cnt_vars = vtable_size(p->lvtbl->vars);
20453 int cnt = cnt_args + cnt_vars;
20457 if (cnt <= 0)
return 0;
20458 tbl = rb_ast_new_local_table(p->ast, cnt);
20459 MEMCPY(tbl->ids, p->lvtbl->args->tbl, ID, cnt_args);
20461 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
20462 ID
id = p->lvtbl->vars->tbl[i];
20463 if (!vtable_included(p->lvtbl->args,
id)) {
20464 tbl->ids[j++] = id;
20468 tbl = rb_ast_resize_latest_local_table(p->ast, j);
20481 n = NEW_NODE(
type, a0, a1, a2, loc);
20490 if (!NUMPARAM_ID_P(
id))
return;
20491 compile_error(p,
"_%d is reserved for numbered parameter",
20492 NUMPARAM_ID_TO_IDX(
id));
20498 numparam_name(p,
id);
20499 vtable_add(p->lvtbl->args,
id);
20505 numparam_name(p,
id);
20506 vtable_add(p->lvtbl->vars,
id);
20507 if (p->lvtbl->used) {
20508 vtable_add(p->lvtbl->used, (ID)p->ruby_sourceline);
20515 struct vtable *vars, *args, *used;
20517 vars = p->lvtbl->vars;
20518 args = p->lvtbl->args;
20519 used = p->lvtbl->used;
20521 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
20524 if (used) used = used->prev;
20527 if (vars && vars->prev == DVARS_INHERIT) {
20528 return rb_local_defined(
id, p->parent_iseq);
20530 else if (vtable_included(args,
id)) {
20534 int i = vtable_included(vars,
id);
20535 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
20543 return local_id_ref(p,
id, NULL);
20549 if (local_id(p, idFWD_REST) &&
20551 local_id(p, idFWD_KWREST) &&
20553 local_id(p, idFWD_BLOCK))
return TRUE;
20554 compile_error(p,
"unexpected ...");
20561 arg_var(p, idFWD_REST);
20563 arg_var(p, idFWD_KWREST);
20565 arg_var(p, idFWD_BLOCK);
20572 NODE *splat = NEW_SPLAT(NEW_LVAR(idFWD_REST, loc), loc);
20574 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
20576 NODE *block = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, loc), loc);
20577 NODE *args = leading ? rest_arg_append(p, leading, splat, argsloc) : splat;
20579 args = arg_append(p, splat, new_hash(p, kwrest, loc), loc);
20581 return arg_blk_pass(args, block);
20590 NODE *inner = local->numparam.inner;
20591 if (!local->numparam.outer) {
20592 local->numparam.outer = local->numparam.current;
20594 local->numparam.inner = 0;
20595 local->numparam.current = 0;
20609 local->numparam.inner = prev_inner;
20611 else if (local->numparam.current) {
20613 local->numparam.inner = local->numparam.current;
20615 if (p->max_numparam > NO_PARAM) {
20617 local->numparam.current = local->numparam.outer;
20618 local->numparam.outer = 0;
20622 local->numparam.current = 0;
20627static const struct vtable *
20630 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
20631 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
20632 if (p->lvtbl->used) {
20633 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
20635 return p->lvtbl->args;
20641 struct vtable *tmp = *vtblp;
20642 *vtblp = tmp->prev;
20643# if WARN_PAST_SCOPE
20644 if (p->past_scope_enabled) {
20645 tmp->prev = p->lvtbl->past;
20646 p->lvtbl->past = tmp;
20658 if ((tmp = p->lvtbl->used) != 0) {
20659 warn_unused_var(p, p->lvtbl);
20660 p->lvtbl->used = p->lvtbl->used->prev;
20663 dyna_pop_vtable(p, &p->lvtbl->args);
20664 dyna_pop_vtable(p, &p->lvtbl->vars);
20670 while (p->lvtbl->args != lvargs) {
20672 if (!p->lvtbl->args) {
20674 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
20684 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
20688dvar_defined_ref(
struct parser_params *p, ID
id, ID **vidrefp)
20690 struct vtable *vars, *args, *used;
20693 args = p->lvtbl->args;
20694 vars = p->lvtbl->vars;
20695 used = p->lvtbl->used;
20697 while (!DVARS_TERMINAL_P(vars)) {
20698 if (vtable_included(args,
id)) {
20701 if ((i = vtable_included(vars,
id)) != 0) {
20702 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
20707 if (!vidrefp) used = 0;
20708 if (used) used = used->prev;
20711 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
20712 return rb_dvar_defined(
id, p->parent_iseq);
20721 return dvar_defined_ref(p,
id, NULL);
20727 return (vtable_included(p->lvtbl->args,
id) ||
20728 vtable_included(p->lvtbl->vars,
id));
20732reg_fragment_enc_error(
struct parser_params* p, VALUE str,
int c)
20735 "regexp encoding option '%c' differs from source encoding '%s'",
20741rb_reg_fragment_setenc(
struct parser_params* p, VALUE str,
int options)
20743 int c = RE_OPTION_ENCODING_IDX(options);
20754 else if (RE_OPTION_ENCODING_NONE(options)) {
20778reg_fragment_setenc(
struct parser_params* p, VALUE str,
int options)
20780 int c = rb_reg_fragment_setenc(p, str, options);
20781 if (c) reg_fragment_enc_error(p, str, c);
20785reg_fragment_check(
struct parser_params* p, VALUE str,
int options)
20788 reg_fragment_setenc(p, str, options);
20789 err = rb_reg_check_preprocess(str);
20792 compile_error(p,
"%"PRIsVALUE, err);
20806reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
20807 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
20812 long len = name_end - name;
20813 const char *s = (
const char *)name;
20817 if (!len)
return ST_CONTINUE;
20818 if (rb_enc_symname_type(s, len, enc, (1U<<ID_LOCAL)) != ID_LOCAL)
20819 return ST_CONTINUE;
20821 var = intern_cstr(s, len, enc);
20822 if (len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)len)) {
20823 if (!lvar_defined(p, var))
return ST_CONTINUE;
20825 node = node_assign(p, assignable(p, var, 0, arg->loc), NEW_LIT(
ID2SYM(var), arg->loc), NO_LEX_CTXT, arg->loc);
20826 succ = arg->succ_block;
20827 if (!succ) succ = NEW_BEGIN(0, arg->loc);
20828 succ = block_append(p, succ, node);
20829 arg->succ_block = succ;
20830 return ST_CONTINUE;
20840 arg.succ_block = 0;
20842 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
20844 if (!arg.succ_block)
return 0;
20845 return arg.succ_block->nd_next;
20849parser_reg_compile(
struct parser_params* p, VALUE str,
int options)
20851 reg_fragment_setenc(p, str, options);
20852 return rb_parser_reg_compile(p, str, options);
20856rb_parser_reg_compile(
struct parser_params* p, VALUE str,
int options)
20858 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
20862reg_compile(
struct parser_params* p, VALUE str,
int options)
20868 re = parser_reg_compile(p, str, options);
20872 compile_error(p,
"%"PRIsVALUE, m);
20879parser_reg_compile(
struct parser_params* p, VALUE str,
int options, VALUE *errmsg)
20883 str = ripper_is_node_yylval(str) ? RNODE(str)->nd_cval : str;
20884 int c = rb_reg_fragment_setenc(p, str, options);
20885 if (c) reg_fragment_enc_error(p, str, c);
20886 re = rb_parser_reg_compile(p, str, options);
20897rb_parser_set_options(VALUE vparser,
int print,
int loop,
int chomp,
int split)
20901 p->do_print = print;
20903 p->do_chomp = chomp;
20904 p->do_split = split;
20910 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
20911 const YYLTYPE *
const LOC = &default_location;
20915 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
20917 node = block_append(p, node, print);
20924 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
20925 NODE *split = NEW_GASGN(fields,
20926 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
20929 node = block_append(p, split, node);
20932 NODE *chomp = NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
20934 node = block_append(p, chomp, node);
20937 node = NEW_WHILE(NEW_VCALL(idGets, LOC), node, 1, LOC);
20954 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
20962 p->command_start = TRUE;
20963 p->ruby_sourcefile_string =
Qnil;
20964 p->lex.lpar_beg = -1;
20967 p->delayed.token =
Qnil;
20969 p->parsing_thread =
Qnil;
20971 p->error_buffer =
Qfalse;
20973 p->debug_buffer =
Qnil;
20979#define parser_mark ripper_parser_mark
20980#define parser_free ripper_parser_free
20984parser_mark(
void *ptr)
21014parser_free(
void *ptr)
21020 ruby_sized_xfree(p->tokenbuf, p->toksiz);
21022 for (local = p->lvtbl; local; local = prev) {
21023 if (local->vars)
xfree(local->vars);
21024 prev = local->prev;
21029 while ((ptinfo = p->token_info) != 0) {
21030 p->token_info = ptinfo->next;
21038parser_memsize(
const void *ptr)
21042 size_t size =
sizeof(*p);
21045 for (local = p->lvtbl; local; local = local->prev) {
21046 size +=
sizeof(*local);
21047 if (local->vars) size += local->vars->capa *
sizeof(
ID);
21063 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
21067#undef rb_reserved_word
21070rb_reserved_word(
const char *str,
unsigned int len)
21072 return reserved_word(str, len);
21080 &parser_data_type, p);
21081 parser_initialize(p);
21086rb_parser_set_context(VALUE vparser,
const struct rb_iseq_struct *base,
int main)
21092 p->parent_iseq = base;
21097rb_parser_keep_script_lines(VALUE vparser)
21102 p->keep_script_lines = 1;
21107#define rb_parser_end_seen_p ripper_parser_end_seen_p
21108#define rb_parser_encoding ripper_parser_encoding
21109#define rb_parser_get_yydebug ripper_parser_get_yydebug
21110#define rb_parser_set_yydebug ripper_parser_set_yydebug
21111#define rb_parser_get_debug_output ripper_parser_get_debug_output
21112#define rb_parser_set_debug_output ripper_parser_set_debug_output
21113static VALUE ripper_parser_end_seen_p(VALUE vparser);
21114static VALUE ripper_parser_encoding(VALUE vparser);
21115static VALUE ripper_parser_get_yydebug(VALUE
self);
21116static VALUE ripper_parser_set_yydebug(VALUE
self, VALUE flag);
21117static VALUE ripper_parser_get_debug_output(VALUE
self);
21118static VALUE ripper_parser_set_debug_output(VALUE
self, VALUE output);
21127ripper_error_p(VALUE vparser)
21132 return RBOOL(p->error_p);
21143rb_parser_end_seen_p(VALUE vparser)
21148 return RBOOL(p->ruby__end__seen);
21158rb_parser_encoding(VALUE vparser)
21174rb_parser_get_yydebug(VALUE
self)
21179 return RBOOL(p->debug);
21190rb_parser_set_yydebug(VALUE
self, VALUE flag)
21195 p->debug =
RTEST(flag);
21206rb_parser_get_debug_output(VALUE
self)
21211 return p->debug_output;
21221rb_parser_set_debug_output(VALUE
self, VALUE output)
21226 return p->debug_output = output;
21231#define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
21234#define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
21235#define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
21236 (new)->cnt = (cnt), (ptr))
21241 size_t cnt = HEAPCNT(1, size);
21245 return ADD2HEAP(n, cnt, ptr);
21249rb_parser_calloc(
struct parser_params *p,
size_t nelem,
size_t size)
21251 size_t cnt = HEAPCNT(nelem, size);
21253 void *ptr =
xcalloc(nelem, size);
21255 return ADD2HEAP(n, cnt, ptr);
21259rb_parser_realloc(
struct parser_params *p,
void *ptr,
size_t size)
21262 size_t cnt = HEAPCNT(1, size);
21264 if (ptr && (n = p->heap) != NULL) {
21266 if (n->ptr == ptr) {
21267 n->ptr = ptr =
xrealloc(ptr, size);
21268 if (n->cnt) n->cnt = cnt;
21271 }
while ((n = n->next) != NULL);
21275 return ADD2HEAP(n, cnt, ptr);
21283 while ((n = *prev) != NULL) {
21284 if (n->ptr == ptr) {
21294rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
21297 VALUE mesg = p->debug_buffer;
21305 p->debug_buffer =
Qnil;
21310parser_compile_error(
struct parser_params *p,
const char *fmt, ...)
21318 rb_syntax_error_append(p->error_buffer,
21319 p->ruby_sourcefile_string,
21320 p->ruby_sourceline,
21327count_char(
const char *str,
int c)
21330 while (str[n] == c) ++n;
21340RUBY_FUNC_EXPORTED
size_t
21341rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
21343 if (*yystr ==
'"') {
21344 size_t yyn = 0, bquote = 0;
21345 const char *yyp = yystr;
21351 bquote = count_char(yyp+1,
'`') + 1;
21352 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
21360 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
21361 if (yyres) memcpy(yyres + yyn, yyp, bquote);
21367 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
21368 if (yyres) memcpy(yyres + yyn, yyp, 3);
21373 goto do_not_strip_quotes;
21376 goto do_not_strip_quotes;
21379 if (*++yyp !=
'\\')
21380 goto do_not_strip_quotes;
21396 do_not_strip_quotes: ;
21399 if (!yyres)
return strlen(yystr);
21401 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
21409ripper_validate_object(VALUE
self, VALUE x)
21411 if (x ==
Qfalse)
return x;
21412 if (x ==
Qtrue)
return x;
21413 if (x ==
Qnil)
return x;
21415 rb_raise(rb_eArgError,
"Qundef given");
21428 if (!nd_type_p((
NODE *)x, NODE_RIPPER)) {
21429 rb_raise(rb_eArgError,
"NODE given: %p", (
void *)x);
21431 x = ((
NODE *)x)->nd_rval;
21434 rb_raise(rb_eArgError,
"wrong type of ruby object: %p (%s)",
21438 rb_raise(rb_eArgError,
"hidden ruby object: %p (%s)",
21439 (
void *)x, rb_builtin_type_name(
TYPE(x)));
21445#define validate(x) ((x) = get_value(x))
21461ripper_dispatch2(
struct parser_params *p, ID mid, VALUE a, VALUE b)
21469ripper_dispatch3(
struct parser_params *p, ID mid, VALUE a, VALUE b, VALUE c)
21474 return rb_funcall(p->value, mid, 3, a, b, c);
21478ripper_dispatch4(
struct parser_params *p, ID mid, VALUE a, VALUE b, VALUE c, VALUE d)
21484 return rb_funcall(p->value, mid, 4, a, b, c, d);
21488ripper_dispatch5(
struct parser_params *p, ID mid, VALUE a, VALUE b, VALUE c, VALUE d, VALUE e)
21495 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
21499ripper_dispatch7(
struct parser_params *p, ID mid, VALUE a, VALUE b, VALUE c, VALUE d, VALUE e, VALUE f, VALUE g)
21508 return rb_funcall(p->value, mid, 7, a, b, c, d, e, f, g);
21512ripper_get_id(VALUE v)
21517 if (!nd_type_p(nd, NODE_RIPPER))
return 0;
21522ripper_get_value(VALUE v)
21528 if (!nd_type_p(nd, NODE_RIPPER))
return Qnil;
21529 return nd->nd_rval;
21539ripper_compile_error(
struct parser_params *p,
const char *fmt, ...)
21544 va_start(args, fmt);
21557 "gets returned %"PRIsVALUE
" (expected String or nil)",
21558 rb_obj_class(line));
21570ripper_s_allocate(VALUE klass)
21574 &parser_data_type, p);
21579#define ripper_initialized_p(r) ((r)->lex.input != 0)
21592ripper_initialize(
int argc, VALUE *argv, VALUE
self)
21595 VALUE src, fname, lineno;
21598 rb_scan_args(argc, argv,
"12", &src, &fname, &lineno);
21600 p->lex.gets = ripper_lex_io_get;
21603 p->lex.gets = ripper_lex_get_generic;
21607 p->lex.gets = lex_get_str;
21609 p->lex.input = src;
21611 if (
NIL_P(fname)) {
21612 fname = STR_NEW2(
"(ripper)");
21619 parser_initialize(p);
21621 p->ruby_sourcefile_string = fname;
21623 p->ruby_sourceline =
NIL_P(lineno) ? 0 :
NUM2INT(lineno) - 1;
21629ripper_parse0(VALUE parser_v)
21635 p->ast = rb_ast_new();
21636 ripper_yyparse((
void*)p);
21637 rb_ast_dispose(p->ast);
21643ripper_ensure(VALUE parser_v)
21648 p->parsing_thread =
Qnil;
21659ripper_parse(VALUE
self)
21664 if (!ripper_initialized_p(p)) {
21665 rb_raise(rb_eArgError,
"method called for uninitialized object");
21667 if (!
NIL_P(p->parsing_thread)) {
21669 rb_raise(rb_eArgError,
"Ripper#parse is not reentrant");
21671 rb_raise(rb_eArgError,
"Ripper#parse is not multithread-safe");
21674 rb_ensure(ripper_parse0,
self, ripper_ensure,
self);
21687ripper_column(VALUE
self)
21693 if (!ripper_initialized_p(p)) {
21694 rb_raise(rb_eArgError,
"method called for uninitialized object");
21696 if (
NIL_P(p->parsing_thread))
return Qnil;
21697 col = p->lex.ptok - p->lex.pbeg;
21708ripper_filename(VALUE
self)
21713 if (!ripper_initialized_p(p)) {
21714 rb_raise(rb_eArgError,
"method called for uninitialized object");
21716 return p->ruby_sourcefile_string;
21727ripper_lineno(VALUE
self)
21732 if (!ripper_initialized_p(p)) {
21733 rb_raise(rb_eArgError,
"method called for uninitialized object");
21735 if (
NIL_P(p->parsing_thread))
return Qnil;
21736 return INT2NUM(p->ruby_sourceline);
21746ripper_state(VALUE
self)
21751 if (!ripper_initialized_p(p)) {
21752 rb_raise(rb_eArgError,
"method called for uninitialized object");
21754 if (
NIL_P(p->parsing_thread))
return Qnil;
21755 return INT2NUM(p->lex.state);
21765ripper_token(VALUE
self)
21771 if (!ripper_initialized_p(p)) {
21772 rb_raise(rb_eArgError,
"method called for uninitialized object");
21774 if (
NIL_P(p->parsing_thread))
return Qnil;
21775 pos = p->lex.ptok - p->lex.pbeg;
21776 len = p->lex.pcur - p->lex.ptok;
21783ripper_assert_Qundef(VALUE
self, VALUE obj, VALUE msg)
21787 rb_raise(rb_eArgError,
"%"PRIsVALUE, msg);
21794ripper_value(VALUE
self, VALUE obj)
21807ripper_lex_state_name(VALUE
self, VALUE state)
21809 return rb_parser_lex_state_name(
NUM2INT(state));
21815 ripper_init_eventids1();
21816 ripper_init_eventids2();
21861<% @exprs.each
do |expr, desc| -%>
21865 ripper_init_eventids1_table(Ripper);
21866 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 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.
void rb_fatal(const char *fmt,...)
Raises the unsung "fatal" 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.
@ RB_WARN_CATEGORY_EXPERIMENTAL
Warning is for experimental features.
#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_utf8_encoding(void)
Queries the encoding that represents UTF-8.
rb_encoding * rb_ascii8bit_encoding(void)
Queries the encoding that represents ASCII-8BIT a.k.a.
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.
static const char * rb_enc_name(rb_encoding *enc)
Queries the (canonical) name of the passed encoding.
rb_encoding * rb_enc_get(VALUE obj)
Identical to rb_enc_get_index(), except the return type.
rb_encoding * rb_enc_from_index(int idx)
Identical to rb_find_encoding(), except it takes an encoding index instead of a Ruby object.
int rb_ascii8bit_encindex(void)
Identical to rb_ascii8bit_encoding(), except it returns the encoding's index instead of the encoding ...
static char * rb_enc_prev_char(const char *s, const char *p, const char *e, rb_encoding *enc)
Queries the previous (left) character.
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.
static int rb_enc_mbcput(unsigned int c, void *buf, rb_encoding *enc)
Identical to rb_enc_uint_chr(), except it writes back to the passed buffer instead of allocating one.
int rb_char_to_option_kcode(int c, int *option, int *kcode)
Converts a character option to its encoding.
VALUE rb_enc_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_compatible(VALUE str1, VALUE str2)
Look for the "common" encoding between the two.
rb_encoding * rb_usascii_encoding(void)
Queries the encoding that represents US-ASCII.
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_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_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().
ID rb_intern(const char *name)
Finds or creates a symbol of the given name.
const char * rb_id2name(ID id)
Retrieves the name mapped to the given id.
ID rb_intern_str(VALUE str)
Identical to rb_intern(), except it takes an instance of rb_cString.
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.
#define RSTRING_GETMEM(str, ptrvar, lenvar)
Convenient macro to obtain the contents and length at once.
static long RSTRING_LEN(VALUE str)
Queries the length of the string.
static char * RSTRING_PTR(VALUE str)
Queries the contents pointer of the string.
#define StringValueCStr(v)
Identical to StringValuePtr, except it additionally checks for the contents for viability as a C stri...
#define TypedData_Get_Struct(obj, type, data_type, sval)
Obtains a C struct from inside of a wrapper Ruby object.
#define TypedData_Make_Struct(klass, type, data_type, sval)
Identical to TypedData_Wrap_Struct, except it allocates a new data region internally instead of takin...
const char * rb_obj_classname(VALUE obj)
Queries the name of the class of the passed object.
#define InitVM(ext)
This macro is for internal use.
#define RTEST
This is an old name of RB_TEST.
This is the struct that holds necessary info for a struct.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
#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.