52#define YYBISON_VERSION "3.8.2"
55#define YYSKELETON_NAME "yacc.c"
72# error needs pure parser
75#define YYERROR_VERBOSE 1
76#define YYSTACK_USE_ALLOCA 0
80# include RUBY_EXTCONF_H
83#include "ruby/internal/config.h"
84#include "internal/thread.h"
88#ifdef UNIVERSAL_PARSER
90#include "internal/ruby_parser.h"
91#include "parser_node.h"
92#include "universal_parser.c"
95#define STATIC_ID2SYM p->config->static_id2sym
96#define rb_str_coderange_scan_restartable p->config->str_coderange_scan_restartable
102#include "internal/array.h"
103#include "internal/compile.h"
104#include "internal/compilers.h"
105#include "internal/complex.h"
106#include "internal/encoding.h"
107#include "internal/error.h"
108#include "internal/gc.h"
109#include "internal/hash.h"
110#include "internal/io.h"
111#include "internal/numeric.h"
112#include "internal/parse.h"
113#include "internal/rational.h"
114#include "internal/re.h"
115#include "internal/ruby_parser.h"
116#include "internal/symbol.h"
117#include "internal/thread.h"
119#include "parser_node.h"
123#include "ruby/regex.h"
132syntax_error_new(
void)
140#define compile_callback rb_suppress_tracing
143#define NODE_SPECIAL_EMPTY_ARGS ((NODE *)-1)
144#define NODE_EMPTY_ARGS_P(node) ((node) == NODE_SPECIAL_EMPTY_ARGS)
155 return (n1->minus != n2->minus ||
156 n1->base != n2->base ||
157 strcmp(n1->val, n2->val));
163 return (n1->minus != n2->minus ||
164 strcmp(n1->val, n2->val));
170 return (n1->minus != n2->minus ||
171 n1->base != n2->base ||
172 n1->seen_point != n2->seen_point ||
173 strcmp(n1->val, n2->val));
179 return (n1->minus != n2->minus ||
180 n1->base != n2->base ||
181 n1->seen_point != n2->seen_point ||
182 n1->type != n2->type ||
183 strcmp(n1->val, n2->val));
189 return (n1->options != n2->options ||
190 rb_parser_string_hash_cmp(n1->string, n2->string));
194static st_index_t rb_char_p_hash(
const char *c);
197literal_cmp(st_data_t val, st_data_t lit)
199 if (val == lit)
return 0;
201 NODE *node_val = RNODE(val);
202 NODE *node_lit = RNODE(lit);
203 enum node_type type_val = nd_type(node_val);
204 enum node_type type_lit = nd_type(node_lit);
206 if (type_val != type_lit) {
212 return node_integer_cmp(RNODE_INTEGER(node_val), RNODE_INTEGER(node_lit));
214 return node_float_cmp(RNODE_FLOAT(node_val), RNODE_FLOAT(node_lit));
216 return node_rational_cmp(RNODE_RATIONAL(node_val), RNODE_RATIONAL(node_lit));
218 return node_imaginary_cmp(RNODE_IMAGINARY(node_val), RNODE_IMAGINARY(node_lit));
220 return rb_parser_string_hash_cmp(RNODE_STR(node_val)->
string, RNODE_STR(node_lit)->
string);
222 return rb_parser_string_hash_cmp(RNODE_SYM(node_val)->
string, RNODE_SYM(node_lit)->
string);
224 return rb_parser_regx_hash_cmp(RNODE_REGX(node_val), RNODE_REGX(node_lit));
226 return node_val->nd_loc.beg_pos.lineno != node_lit->nd_loc.beg_pos.lineno;
228 return rb_parser_string_hash_cmp(RNODE_FILE(node_val)->path, RNODE_FILE(node_lit)->path);
230 return RNODE_ENCODING(node_val)->enc != RNODE_ENCODING(node_lit)->enc;
232#ifdef UNIVERSAL_PARSER
235 rb_bug(
"unexpected node: %s, %s", ruby_node_name(type_val), ruby_node_name(type_lit));
241literal_hash(st_data_t a)
244 enum node_type
type = nd_type(node);
248 return rb_char_p_hash(RNODE_INTEGER(node)->val);
250 return rb_char_p_hash(RNODE_FLOAT(node)->val);
252 return rb_char_p_hash(RNODE_RATIONAL(node)->val);
254 return rb_char_p_hash(RNODE_IMAGINARY(node)->val);
256 return rb_parser_str_hash(RNODE_STR(node)->
string);
258 return rb_parser_str_hash(RNODE_SYM(node)->
string);
260 return rb_parser_str_hash(RNODE_REGX(node)->
string);
262 return (st_index_t)node->nd_loc.beg_pos.lineno;
264 return rb_parser_str_hash(RNODE_FILE(node)->path);
266 return (st_index_t)RNODE_ENCODING(node)->enc;
268#ifdef UNIVERSAL_PARSER
271 rb_bug(
"unexpected node: %s", ruby_node_name(
type));
279 return '\0' <= c && c <=
'\x7f';
283#define ISASCII parse_isascii
288 return c ==
' ' || (
'\t' <= c && c <=
'\r');
292#define ISSPACE parse_isspace
297 return (
'\0' <= c && c <
' ') || c ==
'\x7f';
301#define ISCNTRL(c) parse_iscntrl(c)
306 return 'A' <= c && c <=
'Z';
312 return 'a' <= c && c <=
'z';
318 return parse_isupper(c) || parse_islower(c);
322#define ISALPHA(c) parse_isalpha(c)
327 return '0' <= c && c <=
'9';
331#define ISDIGIT(c) parse_isdigit(c)
340#define ISALNUM(c) parse_isalnum(c)
345 return ISDIGIT(c) || (
'A' <= c && c <=
'F') || (
'a' <= c && c <=
'f');
349#define ISXDIGIT(c) parse_isxdigit(c)
351#include "parser_st.h"
354#define STRCASECMP rb_parser_st_locale_insensitive_strcasecmp
357#define STRNCASECMP rb_parser_st_locale_insensitive_strncasecmp
360#include "ripper_init.h"
371 unsigned int in_defined: 1;
372 unsigned int in_kwarg: 1;
373 unsigned int in_argdef: 1;
374 unsigned int in_def: 1;
375 unsigned int in_class: 1;
376 unsigned int has_trailing_semicolon: 1;
377 BITFIELD(
enum rb_parser_shareability, shareable_constant_value, 2);
378 BITFIELD(
enum rescue_context, in_rescue, 2);
379 unsigned int cant_return: 1;
380 unsigned int in_alt_pattern: 1;
381 unsigned int capture_in_pattern: 1;
386#if defined(__GNUC__) && !defined(__clang__)
398#define NO_LEX_CTXT (struct lex_context){0}
400#ifndef WARN_PAST_SCOPE
401# define WARN_PAST_SCOPE 0
406#define yydebug (p->debug)
408#define YYFPRINTF(out, ...) rb_parser_printf(p, __VA_ARGS__)
409#define YY_LOCATION_PRINT(File, loc, p) \
410 rb_parser_printf(p, "%d.%d-%d.%d", \
411 (loc).beg_pos.lineno, (loc).beg_pos.column,\
412 (loc).end_pos.lineno, (loc).end_pos.column)
413#define YYLLOC_DEFAULT(Current, Rhs, N) \
417 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
418 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
422 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
423 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
427 (((Msgid)[0] == 'm') && (strcmp((Msgid), "memory exhausted") == 0) ? \
428 "nesting too deep" : (Msgid))
430#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
431 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
432#define RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(Current) \
433 rb_parser_set_location_of_delayed_token(p, &(Current))
434#define RUBY_SET_YYLLOC_OF_HEREDOC_END(Current) \
435 rb_parser_set_location_of_heredoc_end(p, &(Current))
436#define RUBY_SET_YYLLOC_OF_DUMMY_END(Current) \
437 rb_parser_set_location_of_dummy_end(p, &(Current))
438#define RUBY_SET_YYLLOC_OF_NONE(Current) \
439 rb_parser_set_location_of_none(p, &(Current))
440#define RUBY_SET_YYLLOC(Current) \
441 rb_parser_set_location(p, &(Current))
442#define RUBY_INIT_YYLLOC() \
444 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
445 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
448#define IS_lex_state_for(x, ls) ((x) & (ls))
449#define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
450#define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
451#define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
453# define SET_LEX_STATE(ls) \
454 parser_set_lex_state(p, ls, __LINE__)
455static inline enum lex_state_e parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line);
457typedef VALUE stack_type;
461# define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
462# define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
463# define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
464# define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
465# define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
469#define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
470#define COND_POP() BITSTACK_POP(cond_stack)
471#define COND_P() BITSTACK_SET_P(cond_stack)
472#define COND_SET(n) BITSTACK_SET(cond_stack, (n))
476#define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
477#define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
478#define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
479#define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
497 NODE *outer, *inner, *current;
514#define DVARS_INHERIT ((void*)1)
515#define DVARS_TOPSCOPE NULL
516#define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
543#define AFTER_HEREDOC_WITHOUT_TERMINATOR ((rb_parser_string_t *)1)
560 rb_parser_lex_gets_func *gets;
561 rb_parser_input_data input;
569 enum lex_state_e state;
585 stack_type cond_stack;
586 stack_type cmdarg_stack;
591 int heredoc_line_indent;
598 const char *ruby_sourcefile;
599 VALUE ruby_sourcefile_string;
619 st_table *warn_duplicate_keys_table;
626 NODE *eval_tree_begin;
630#ifdef UNIVERSAL_PARSER
631 const rb_parser_config_t *config;
634 signed int frozen_string_literal:2;
636 unsigned int command_start:1;
637 unsigned int eofp: 1;
638 unsigned int ruby__end__seen: 1;
639 unsigned int debug: 1;
640 unsigned int has_shebang: 1;
641 unsigned int token_seen: 1;
642 unsigned int token_info_enabled: 1;
644 unsigned int past_scope_enabled: 1;
646 unsigned int error_p: 1;
647 unsigned int cr_seen: 1;
655 unsigned int do_print: 1;
656 unsigned int do_loop: 1;
657 unsigned int do_chomp: 1;
658 unsigned int do_split: 1;
659 unsigned int error_tolerant: 1;
660 unsigned int keep_tokens: 1;
678 VALUE parsing_thread;
685#define NUMPARAM_ID_P(id) numparam_id_p(p, id)
686#define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - (tNUMPARAM_1 - 1))
687#define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 - 1 + (idx)))
691 if (!is_local_id(
id) ||
id < (tNUMPARAM_1 << ID_SCOPE_SHIFT))
return 0;
692 unsigned int idx = NUMPARAM_ID_TO_IDX(
id);
693 return idx > 0 && idx <= NUMPARAM_MAX;
702 rb_parser_printf(p,
"after-shift: %+"PRIsVALUE
"\n", p->s_value);
718 for (
int i = 0; i <
len; i++) {
721 rb_parser_printf(p,
"after-reduce pop: %+"PRIsVALUE
"\n", tos);
725 rb_parser_printf(p,
"after-reduce push: %+"PRIsVALUE
"\n", p->s_lvalue);
735 rb_parser_printf(p,
"after-shift-error-token:\n");
743 for (
int i = 0; i <
len; i++) {
746 rb_parser_printf(p,
"after-pop-stack pop: %+"PRIsVALUE
"\n", tos);
777#define intern_cstr(n,l,en) rb_intern3(n,l,en)
779#define STRING_NEW0() rb_parser_encoding_string_new(p,0,0,p->enc)
781#define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
782#define STR_NEW0() rb_enc_str_new(0,0,p->enc)
783#define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
784#define STR_NEW3(ptr,len,e,func) parser_str_new(p, (ptr),(len),(e),(func),p->enc)
785#define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
786#define VALID_SYMNAME_P(s, l, enc, type) (rb_enc_symname_type(s, l, enc, (1U<<(type))) == (int)(type))
792 long len = RSTRING_LEN(str);
793 return len > 0 ? (
unsigned char)RSTRING_PTR(str)[
len-1] : when_empty;
800 st_free_table(p->pvtbl);
807 if (p->pktbl) st_free_table(p->pktbl);
811#define STRING_BUF_DEFAULT_LEN 16
819 buf->head = buf->last =
xmalloc(size);
820 buf->head->len = STRING_BUF_DEFAULT_LEN;
822 buf->head->next = NULL;
830 if (buf->head->used >= buf->head->len) {
832 long n = buf->head->len * 2;
839 buf->last->next = elem;
842 buf->last->buf[buf->last->used++] = str;
853 for (
long i = 0; i < elem->used; i++) {
854 rb_parser_string_free(p, elem->buf[i]);
866debug_end_expect_token_locations(
struct parser_params *p,
const char *name)
869 VALUE mesg = rb_sprintf(
"%s: [", name);
874 rb_str_catf(mesg,
"[%d, %d]", loc->pos->lineno, loc->pos->column);
878 flush_debug_buffer(p, p->debug_output, mesg);
885 if(!p->error_tolerant)
return;
889 locations->pos = pos;
890 locations->prev = p->end_expect_token_locations;
891 p->end_expect_token_locations = locations;
893 debug_end_expect_token_locations(p,
"push_end_expect_token_locations");
899 if(!p->end_expect_token_locations)
return;
903 p->end_expect_token_locations = locations;
905 debug_end_expect_token_locations(p,
"pop_end_expect_token_locations");
911 return p->end_expect_token_locations;
915parser_token2char(
struct parser_params *p,
enum yytokentype tok)
918#define TOKEN2CHAR(tok) case tok: return (#tok);
919#define TOKEN2CHAR2(tok, name) case tok: return (name);
920 TOKEN2CHAR2(
' ',
"word_sep");
921 TOKEN2CHAR2(
'!',
"!")
922 TOKEN2CHAR2('%', "%");
923 TOKEN2CHAR2('&', "&");
924 TOKEN2CHAR2('*', "*");
925 TOKEN2CHAR2('+', "+");
926 TOKEN2CHAR2('-', "-");
927 TOKEN2CHAR2('/', "/");
928 TOKEN2CHAR2('<', "<");
929 TOKEN2CHAR2('=', "=");
930 TOKEN2CHAR2('>', ">");
931 TOKEN2CHAR2('?', "?");
932 TOKEN2CHAR2('^', "^");
933 TOKEN2CHAR2('|', "|");
934 TOKEN2CHAR2('~', "~");
935 TOKEN2CHAR2(':', ":");
936 TOKEN2CHAR2(',', ",");
937 TOKEN2CHAR2('.', ".");
938 TOKEN2CHAR2(';', ";");
939 TOKEN2CHAR2('`', "`");
940 TOKEN2CHAR2('\n', "nl");
941 TOKEN2CHAR2('{
', "\"{\"");
942 TOKEN2CHAR2('}
', "\"}\"");
943 TOKEN2CHAR2('[
', "\"[\"");
944 TOKEN2CHAR2(']
', "\"]\"");
945 TOKEN2CHAR2('(
', "\"(\"");
946 TOKEN2CHAR2(')
', "\")\"");
947 TOKEN2CHAR2('\\
', "backslash");
948 TOKEN2CHAR(keyword_class);
949 TOKEN2CHAR(keyword_module);
950 TOKEN2CHAR(keyword_def);
951 TOKEN2CHAR(keyword_undef);
952 TOKEN2CHAR(keyword_begin);
953 TOKEN2CHAR(keyword_rescue);
954 TOKEN2CHAR(keyword_ensure);
955 TOKEN2CHAR(keyword_end);
956 TOKEN2CHAR(keyword_if);
957 TOKEN2CHAR(keyword_unless);
958 TOKEN2CHAR(keyword_then);
959 TOKEN2CHAR(keyword_elsif);
960 TOKEN2CHAR(keyword_else);
961 TOKEN2CHAR(keyword_case);
962 TOKEN2CHAR(keyword_when);
963 TOKEN2CHAR(keyword_while);
964 TOKEN2CHAR(keyword_until);
965 TOKEN2CHAR(keyword_for);
966 TOKEN2CHAR(keyword_break);
967 TOKEN2CHAR(keyword_next);
968 TOKEN2CHAR(keyword_redo);
969 TOKEN2CHAR(keyword_retry);
970 TOKEN2CHAR(keyword_in);
971 TOKEN2CHAR(keyword_do);
972 TOKEN2CHAR(keyword_do_cond);
973 TOKEN2CHAR(keyword_do_block);
974 TOKEN2CHAR(keyword_do_LAMBDA);
975 TOKEN2CHAR(keyword_return);
976 TOKEN2CHAR(keyword_yield);
977 TOKEN2CHAR(keyword_super);
978 TOKEN2CHAR(keyword_self);
979 TOKEN2CHAR(keyword_nil);
980 TOKEN2CHAR(keyword_true);
981 TOKEN2CHAR(keyword_false);
982 TOKEN2CHAR(keyword_and);
983 TOKEN2CHAR(keyword_or);
984 TOKEN2CHAR(keyword_not);
985 TOKEN2CHAR(modifier_if);
986 TOKEN2CHAR(modifier_unless);
987 TOKEN2CHAR(modifier_while);
988 TOKEN2CHAR(modifier_until);
989 TOKEN2CHAR(modifier_rescue);
990 TOKEN2CHAR(keyword_alias);
991 TOKEN2CHAR(keyword_defined);
992 TOKEN2CHAR(keyword_BEGIN);
993 TOKEN2CHAR(keyword_END);
994 TOKEN2CHAR(keyword__LINE__);
995 TOKEN2CHAR(keyword__FILE__);
996 TOKEN2CHAR(keyword__ENCODING__);
997 TOKEN2CHAR(tIDENTIFIER);
1001 TOKEN2CHAR(tCONSTANT);
1004 TOKEN2CHAR(tINTEGER);
1006 TOKEN2CHAR(tRATIONAL);
1007 TOKEN2CHAR(tIMAGINARY);
1009 TOKEN2CHAR(tNTH_REF);
1010 TOKEN2CHAR(tBACK_REF);
1011 TOKEN2CHAR(tSTRING_CONTENT);
1012 TOKEN2CHAR(tREGEXP_END);
1013 TOKEN2CHAR(tDUMNY_END);
1016 TOKEN2CHAR(tUMINUS);
1027 TOKEN2CHAR(tNMATCH);
1036 TOKEN2CHAR(tANDDOT);
1037 TOKEN2CHAR(tCOLON2);
1038 TOKEN2CHAR(tCOLON3);
1039 TOKEN2CHAR(tOP_ASGN);
1041 TOKEN2CHAR(tLPAREN);
1042 TOKEN2CHAR(tLPAREN_ARG);
1043 TOKEN2CHAR(tLBRACK);
1044 TOKEN2CHAR(tLBRACE);
1045 TOKEN2CHAR(tLBRACE_ARG);
1049 TOKEN2CHAR(tLAMBDA);
1050 TOKEN2CHAR(tSYMBEG);
1051 TOKEN2CHAR(tSTRING_BEG);
1052 TOKEN2CHAR(tXSTRING_BEG);
1053 TOKEN2CHAR(tREGEXP_BEG);
1054 TOKEN2CHAR(tWORDS_BEG);
1055 TOKEN2CHAR(tQWORDS_BEG);
1056 TOKEN2CHAR(tSYMBOLS_BEG);
1057 TOKEN2CHAR(tQSYMBOLS_BEG);
1058 TOKEN2CHAR(tSTRING_END);
1059 TOKEN2CHAR(tSTRING_DEND);
1060 TOKEN2CHAR(tSTRING_DBEG);
1061 TOKEN2CHAR(tSTRING_DVAR);
1062 TOKEN2CHAR(tLAMBEG);
1063 TOKEN2CHAR(tLABEL_END);
1064 TOKEN2CHAR(tIGNORED_NL);
1065 TOKEN2CHAR(tCOMMENT);
1066 TOKEN2CHAR(tEMBDOC_BEG);
1067 TOKEN2CHAR(tEMBDOC);
1068 TOKEN2CHAR(tEMBDOC_END);
1069 TOKEN2CHAR(tHEREDOC_BEG);
1070 TOKEN2CHAR(tHEREDOC_END);
1071 TOKEN2CHAR(k__END__);
1072 TOKEN2CHAR(tLOWEST);
1073 TOKEN2CHAR(tUMINUS_NUM);
1074 TOKEN2CHAR(tLAST_TOKEN);
1079 rb_bug("parser_token2id: unknown token %d", tok);
1081 UNREACHABLE_RETURN(0);
1085push_end_expect_token_locations(struct parser_params *p, const rb_code_position_t *pos)
1090pop_end_expect_token_locations(struct parser_params *p)
1095RBIMPL_ATTR_NONNULL((1, 2, 3))
1096static int parser_yyerror(struct parser_params*, const YYLTYPE *yylloc, const char*);
1097RBIMPL_ATTR_NONNULL((1, 2))
1098static int parser_yyerror0(struct parser_params*, const char*);
1099#define yyerror0(msg) parser_yyerror0(p, (msg))
1100#define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
1101#define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
1102#define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
1103#define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
1104#define lex_eol_p(p) lex_eol_n_p(p, 0)
1105#define lex_eol_n_p(p,n) lex_eol_ptr_n_p(p, (p)->lex.pcur, n)
1106#define lex_eol_ptr_p(p,ptr) lex_eol_ptr_n_p(p,ptr,0)
1107#define lex_eol_ptr_n_p(p,ptr,n) ((ptr)+(n) >= (p)->lex.pend)
1109static void token_info_setup(token_info *ptinfo, const char *ptr, const rb_code_location_t *loc);
1110static void token_info_push(struct parser_params*, const char *token, const rb_code_location_t *loc);
1111static void token_info_pop(struct parser_params*, const char *token, const rb_code_location_t *loc);
1112static void token_info_warn(struct parser_params *p, const char *token, token_info *ptinfo_beg, int same, const rb_code_location_t *loc);
1113static void token_info_drop(struct parser_params *p, const char *token, rb_code_position_t beg_pos);
1116#define compile_for_eval (0)
1118#define compile_for_eval (p->parent_iseq != 0)
1121#define token_column ((int)(p->lex.ptok - p->lex.pbeg))
1123#define CALL_Q_P(q) ((q) == tANDDOT)
1124#define NEW_QCALL(q,r,m,a,loc) (CALL_Q_P(q) ? NEW_QCALL0(r,m,a,loc) : NEW_CALL(r,m,a,loc))
1126#define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
1128static enum yytokentype yylex(YYSTYPE*, YYLTYPE*, struct parser_params*);
1131rb_discard_node(struct parser_params *p, NODE *n)
1133 rb_ast_delete_node(p->ast, n);
1136static rb_node_scope_t *rb_node_scope_new(struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body, NODE *nd_parent, const YYLTYPE *loc);
1137static rb_node_scope_t *rb_node_scope_new2(struct parser_params *p, rb_ast_id_table_t *nd_tbl, rb_node_args_t *nd_args, NODE *nd_body, NODE *nd_parent, const YYLTYPE *loc);
1138static rb_node_block_t *rb_node_block_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
1139static rb_node_if_t *rb_node_if_new(struct parser_params *p, NODE *nd_cond, NODE *nd_body, NODE *nd_else, const YYLTYPE *loc, const YYLTYPE* if_keyword_loc, const YYLTYPE* then_keyword_loc, const YYLTYPE* end_keyword_loc);
1140static rb_node_unless_t *rb_node_unless_new(struct parser_params *p, NODE *nd_cond, NODE *nd_body, NODE *nd_else, const YYLTYPE *loc, const YYLTYPE *keyword_loc, const YYLTYPE *then_keyword_loc, const YYLTYPE *end_keyword_loc);
1141static rb_node_case_t *rb_node_case_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, const YYLTYPE *loc, const YYLTYPE *case_keyword_loc, const YYLTYPE *end_keyword_loc);
1142static rb_node_case2_t *rb_node_case2_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc, const YYLTYPE *case_keyword_loc, const YYLTYPE *end_keyword_loc);
1143static rb_node_case3_t *rb_node_case3_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, const YYLTYPE *loc, const YYLTYPE *case_keyword_loc, const YYLTYPE *end_keyword_loc);
1144static rb_node_when_t *rb_node_when_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, NODE *nd_next, const YYLTYPE *loc, const YYLTYPE *keyword_loc, const YYLTYPE *then_keyword_loc);
1145static rb_node_in_t *rb_node_in_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, NODE *nd_next, const YYLTYPE *loc, const YYLTYPE *in_keyword_loc, const YYLTYPE *then_keyword_loc, const YYLTYPE *operator_loc);
1146static rb_node_while_t *rb_node_while_new(struct parser_params *p, NODE *nd_cond, NODE *nd_body, long nd_state, const YYLTYPE *loc, const YYLTYPE *keyword_loc, const YYLTYPE *closing_loc);
1147static rb_node_until_t *rb_node_until_new(struct parser_params *p, NODE *nd_cond, NODE *nd_body, long nd_state, const YYLTYPE *loc, const YYLTYPE *keyword_loc, const YYLTYPE *closing_loc);
1148static rb_node_iter_t *rb_node_iter_new(struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body, const YYLTYPE *loc);
1149static rb_node_for_t *rb_node_for_new(struct parser_params *p, NODE *nd_iter, NODE *nd_body, const YYLTYPE *loc, const YYLTYPE *for_keyword_loc, const YYLTYPE *in_keyword_loc, const YYLTYPE *do_keyword_loc, const YYLTYPE *end_keyword_loc);
1150static rb_node_for_masgn_t *rb_node_for_masgn_new(struct parser_params *p, NODE *nd_var, const YYLTYPE *loc);
1151static rb_node_retry_t *rb_node_retry_new(struct parser_params *p, const YYLTYPE *loc);
1152static rb_node_begin_t *rb_node_begin_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1153static rb_node_rescue_t *rb_node_rescue_new(struct parser_params *p, NODE *nd_head, NODE *nd_resq, NODE *nd_else, const YYLTYPE *loc);
1154static rb_node_resbody_t *rb_node_resbody_new(struct parser_params *p, NODE *nd_args, NODE *nd_exc_var, NODE *nd_body, NODE *nd_next, const YYLTYPE *loc);
1155static rb_node_ensure_t *rb_node_ensure_new(struct parser_params *p, NODE *nd_head, NODE *nd_ensr, const YYLTYPE *loc);
1156static rb_node_and_t *rb_node_and_new(struct parser_params *p, NODE *nd_1st, NODE *nd_2nd, const YYLTYPE *loc, const YYLTYPE *operator_loc);
1157static rb_node_or_t *rb_node_or_new(struct parser_params *p, NODE *nd_1st, NODE *nd_2nd, const YYLTYPE *loc, const YYLTYPE *operator_loc);
1158static rb_node_masgn_t *rb_node_masgn_new(struct parser_params *p, NODE *nd_head, NODE *nd_args, const YYLTYPE *loc);
1159static rb_node_lasgn_t *rb_node_lasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1160static rb_node_dasgn_t *rb_node_dasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1161static rb_node_gasgn_t *rb_node_gasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1162static rb_node_iasgn_t *rb_node_iasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1163static rb_node_cdecl_t *rb_node_cdecl_new(struct parser_params *p, ID nd_vid, NODE *nd_value, NODE *nd_else, enum rb_parser_shareability shareability, const YYLTYPE *loc);
1164static rb_node_cvasgn_t *rb_node_cvasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1165static rb_node_op_asgn1_t *rb_node_op_asgn1_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *index, NODE *rvalue, const YYLTYPE *loc, const YYLTYPE *call_operator_loc, const YYLTYPE *opening_loc, const YYLTYPE *closing_loc, const YYLTYPE *binary_operator_loc);
1166static rb_node_op_asgn2_t *rb_node_op_asgn2_new(struct parser_params *p, NODE *nd_recv, NODE *nd_value, ID nd_vid, ID nd_mid, bool nd_aid, const YYLTYPE *loc, const YYLTYPE *call_operator_loc, const YYLTYPE *message_loc, const YYLTYPE *binary_operator_loc);
1167static rb_node_op_asgn_or_t *rb_node_op_asgn_or_new(struct parser_params *p, NODE *nd_head, NODE *nd_value, const YYLTYPE *loc);
1168static rb_node_op_asgn_and_t *rb_node_op_asgn_and_new(struct parser_params *p, NODE *nd_head, NODE *nd_value, const YYLTYPE *loc);
1169static rb_node_op_cdecl_t *rb_node_op_cdecl_new(struct parser_params *p, NODE *nd_head, NODE *nd_value, ID nd_aid, enum rb_parser_shareability shareability, const YYLTYPE *loc);
1170static rb_node_call_t *rb_node_call_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1171static rb_node_opcall_t *rb_node_opcall_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1172static rb_node_fcall_t *rb_node_fcall_new(struct parser_params *p, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1173static rb_node_vcall_t *rb_node_vcall_new(struct parser_params *p, ID nd_mid, const YYLTYPE *loc);
1174static rb_node_qcall_t *rb_node_qcall_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1175static rb_node_super_t *rb_node_super_new(struct parser_params *p, NODE *nd_args, const YYLTYPE *loc, const YYLTYPE *keyword_loc, const YYLTYPE *lparen_loc, const YYLTYPE *rparen_loc);
1176static rb_node_zsuper_t * rb_node_zsuper_new(struct parser_params *p, const YYLTYPE *loc);
1177static rb_node_list_t *rb_node_list_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
1178static rb_node_list_t *rb_node_list_new2(struct parser_params *p, NODE *nd_head, long nd_alen, NODE *nd_next, const YYLTYPE *loc);
1179static rb_node_zlist_t *rb_node_zlist_new(struct parser_params *p, const YYLTYPE *loc);
1180static rb_node_hash_t *rb_node_hash_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
1181static rb_node_return_t *rb_node_return_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1182static rb_node_yield_t *rb_node_yield_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc, const YYLTYPE *keyword_loc, const YYLTYPE *lparen_loc, const YYLTYPE *rparen_loc);
1183static rb_node_lvar_t *rb_node_lvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1184static rb_node_dvar_t *rb_node_dvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1185static rb_node_gvar_t *rb_node_gvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1186static rb_node_ivar_t *rb_node_ivar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1187static rb_node_const_t *rb_node_const_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1188static rb_node_cvar_t *rb_node_cvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1189static rb_node_nth_ref_t *rb_node_nth_ref_new(struct parser_params *p, long nd_nth, const YYLTYPE *loc);
1190static rb_node_back_ref_t *rb_node_back_ref_new(struct parser_params *p, long nd_nth, const YYLTYPE *loc);
1191static rb_node_match2_t *rb_node_match2_new(struct parser_params *p, NODE *nd_recv, NODE *nd_value, const YYLTYPE *loc);
1192static rb_node_match3_t *rb_node_match3_new(struct parser_params *p, NODE *nd_recv, NODE *nd_value, const YYLTYPE *loc);
1193static rb_node_integer_t * rb_node_integer_new(struct parser_params *p, char* val, int base, const YYLTYPE *loc);
1194static rb_node_float_t * rb_node_float_new(struct parser_params *p, char* val, const YYLTYPE *loc);
1195static rb_node_rational_t * rb_node_rational_new(struct parser_params *p, char* val, int base, int seen_point, const YYLTYPE *loc);
1196static rb_node_imaginary_t * rb_node_imaginary_new(struct parser_params *p, char* val, int base, int seen_point, enum rb_numeric_type, const YYLTYPE *loc);
1197static rb_node_str_t *rb_node_str_new(struct parser_params *p, rb_parser_string_t *string, const YYLTYPE *loc);
1198static rb_node_dstr_t *rb_node_dstr_new0(struct parser_params *p, rb_parser_string_t *string, long nd_alen, NODE *nd_next, const YYLTYPE *loc);
1199static rb_node_dstr_t *rb_node_dstr_new(struct parser_params *p, rb_parser_string_t *string, const YYLTYPE *loc);
1200static rb_node_xstr_t *rb_node_xstr_new(struct parser_params *p, rb_parser_string_t *string, const YYLTYPE *loc);
1201static rb_node_dxstr_t *rb_node_dxstr_new(struct parser_params *p, rb_parser_string_t *string, long nd_alen, NODE *nd_next, const YYLTYPE *loc);
1202static rb_node_evstr_t *rb_node_evstr_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc, const YYLTYPE *opening_loc, const YYLTYPE *closing_loc);
1203static rb_node_regx_t *rb_node_regx_new(struct parser_params *p, rb_parser_string_t *string, int options, const YYLTYPE *loc, const YYLTYPE *opening_loc, const YYLTYPE *content_loc, const YYLTYPE *closing_loc);
1204static rb_node_once_t *rb_node_once_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1205static rb_node_args_t *rb_node_args_new(struct parser_params *p, const YYLTYPE *loc);
1206static rb_node_args_aux_t *rb_node_args_aux_new(struct parser_params *p, ID nd_pid, int nd_plen, const YYLTYPE *loc);
1207static rb_node_opt_arg_t *rb_node_opt_arg_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1208static rb_node_kw_arg_t *rb_node_kw_arg_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1209static rb_node_postarg_t *rb_node_postarg_new(struct parser_params *p, NODE *nd_1st, NODE *nd_2nd, const YYLTYPE *loc);
1210static rb_node_argscat_t *rb_node_argscat_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, const YYLTYPE *loc);
1211static rb_node_argspush_t *rb_node_argspush_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, const YYLTYPE *loc);
1212static rb_node_splat_t *rb_node_splat_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc, const YYLTYPE *operator_loc);
1213static rb_node_block_pass_t *rb_node_block_pass_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc, const YYLTYPE *operator_loc);
1214static rb_node_defn_t *rb_node_defn_new(struct parser_params *p, ID nd_mid, NODE *nd_defn, const YYLTYPE *loc);
1215static rb_node_defs_t *rb_node_defs_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_defn, const YYLTYPE *loc);
1216static rb_node_alias_t *rb_node_alias_new(struct parser_params *p, NODE *nd_1st, NODE *nd_2nd, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1217static rb_node_valias_t *rb_node_valias_new(struct parser_params *p, ID nd_alias, ID nd_orig, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1218static rb_node_undef_t *rb_node_undef_new(struct parser_params *p, NODE *nd_undef, const YYLTYPE *loc);
1219static rb_node_class_t *rb_node_class_new(struct parser_params *p, NODE *nd_cpath, NODE *nd_body, NODE *nd_super, const YYLTYPE *loc, const YYLTYPE *class_keyword_loc, const YYLTYPE *inheritance_operator_loc, const YYLTYPE *end_keyword_loc);
1220static rb_node_module_t *rb_node_module_new(struct parser_params *p, NODE *nd_cpath, NODE *nd_body, const YYLTYPE *loc, const YYLTYPE *module_keyword_loc, const YYLTYPE *end_keyword_loc);
1221static rb_node_sclass_t *rb_node_sclass_new(struct parser_params *p, NODE *nd_recv, NODE *nd_body, const YYLTYPE *loc, const YYLTYPE *class_keyword_loc, const YYLTYPE *operator_loc, const YYLTYPE *end_keyword_loc);
1222static rb_node_colon2_t *rb_node_colon2_new(struct parser_params *p, NODE *nd_head, ID nd_mid, const YYLTYPE *loc, const YYLTYPE *delimiter_loc, const YYLTYPE *name_loc);
1223static rb_node_colon3_t *rb_node_colon3_new(struct parser_params *p, ID nd_mid, const YYLTYPE *loc, const YYLTYPE *delimiter_loc, const YYLTYPE *name_loc);
1224static rb_node_dot2_t *rb_node_dot2_new(struct parser_params *p, NODE *nd_beg, NODE *nd_end, const YYLTYPE *loc, const YYLTYPE *operator_loc);
1225static rb_node_dot3_t *rb_node_dot3_new(struct parser_params *p, NODE *nd_beg, NODE *nd_end, const YYLTYPE *loc, const YYLTYPE *operator_loc);
1226static rb_node_self_t *rb_node_self_new(struct parser_params *p, const YYLTYPE *loc);
1227static rb_node_nil_t *rb_node_nil_new(struct parser_params *p, const YYLTYPE *loc);
1228static rb_node_true_t *rb_node_true_new(struct parser_params *p, const YYLTYPE *loc);
1229static rb_node_false_t *rb_node_false_new(struct parser_params *p, const YYLTYPE *loc);
1230static rb_node_errinfo_t *rb_node_errinfo_new(struct parser_params *p, const YYLTYPE *loc);
1231static rb_node_defined_t *rb_node_defined_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1232static rb_node_postexe_t *rb_node_postexe_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc, const YYLTYPE *keyword_loc, const YYLTYPE *opening_loc, const YYLTYPE *closing_loc);
1233static rb_node_sym_t *rb_node_sym_new(struct parser_params *p, VALUE str, const YYLTYPE *loc);
1234static rb_node_dsym_t *rb_node_dsym_new(struct parser_params *p, rb_parser_string_t *string, long nd_alen, NODE *nd_next, const YYLTYPE *loc);
1235static rb_node_attrasgn_t *rb_node_attrasgn_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1236static rb_node_lambda_t *rb_node_lambda_new(struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body, const YYLTYPE *loc, const YYLTYPE *operator_loc, const YYLTYPE *opening_loc, const YYLTYPE *closing_loc);
1237static rb_node_aryptn_t *rb_node_aryptn_new(struct parser_params *p, NODE *pre_args, NODE *rest_arg, NODE *post_args, const YYLTYPE *loc);
1238static rb_node_hshptn_t *rb_node_hshptn_new(struct parser_params *p, NODE *nd_pconst, NODE *nd_pkwargs, NODE *nd_pkwrestarg, const YYLTYPE *loc);
1239static rb_node_fndptn_t *rb_node_fndptn_new(struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg, const YYLTYPE *loc);
1240static rb_node_line_t *rb_node_line_new(struct parser_params *p, const YYLTYPE *loc);
1241static rb_node_file_t *rb_node_file_new(struct parser_params *p, VALUE str, const YYLTYPE *loc);
1242static rb_node_error_t *rb_node_error_new(struct parser_params *p, const YYLTYPE *loc);
1244#define NEW_SCOPE(a,b,c,loc) (NODE *)rb_node_scope_new(p,a,b,c,loc)
1245#define NEW_SCOPE2(t,a,b,c,loc) (NODE *)rb_node_scope_new2(p,t,a,b,c,loc)
1246#define NEW_BLOCK(a,loc) (NODE *)rb_node_block_new(p,a,loc)
1247#define NEW_IF(c,t,e,loc,ik_loc,tk_loc,ek_loc) (NODE *)rb_node_if_new(p,c,t,e,loc,ik_loc,tk_loc,ek_loc)
1248#define NEW_UNLESS(c,t,e,loc,k_loc,t_loc,e_loc) (NODE *)rb_node_unless_new(p,c,t,e,loc,k_loc,t_loc,e_loc)
1249#define NEW_CASE(h,b,loc,ck_loc,ek_loc) (NODE *)rb_node_case_new(p,h,b,loc,ck_loc,ek_loc)
1250#define NEW_CASE2(b,loc,ck_loc,ek_loc) (NODE *)rb_node_case2_new(p,b,loc,ck_loc,ek_loc)
1251#define NEW_CASE3(h,b,loc,ck_loc,ek_loc) (NODE *)rb_node_case3_new(p,h,b,loc,ck_loc,ek_loc)
1252#define NEW_WHEN(c,t,e,loc,k_loc,t_loc) (NODE *)rb_node_when_new(p,c,t,e,loc,k_loc,t_loc)
1253#define NEW_IN(c,t,e,loc,ik_loc,tk_loc,o_loc) (NODE *)rb_node_in_new(p,c,t,e,loc,ik_loc,tk_loc,o_loc)
1254#define NEW_WHILE(c,b,n,loc,k_loc,c_loc) (NODE *)rb_node_while_new(p,c,b,n,loc,k_loc,c_loc)
1255#define NEW_UNTIL(c,b,n,loc,k_loc,c_loc) (NODE *)rb_node_until_new(p,c,b,n,loc,k_loc,c_loc)
1256#define NEW_ITER(a,b,loc) (NODE *)rb_node_iter_new(p,a,b,loc)
1257#define NEW_FOR(i,b,loc,f_loc,i_loc,d_loc,e_loc) (NODE *)rb_node_for_new(p,i,b,loc,f_loc,i_loc,d_loc,e_loc)
1258#define NEW_FOR_MASGN(v,loc) (NODE *)rb_node_for_masgn_new(p,v,loc)
1259#define NEW_RETRY(loc) (NODE *)rb_node_retry_new(p,loc)
1260#define NEW_BEGIN(b,loc) (NODE *)rb_node_begin_new(p,b,loc)
1261#define NEW_RESCUE(b,res,e,loc) (NODE *)rb_node_rescue_new(p,b,res,e,loc)
1262#define NEW_RESBODY(a,v,ex,n,loc) (NODE *)rb_node_resbody_new(p,a,v,ex,n,loc)
1263#define NEW_ENSURE(b,en,loc) (NODE *)rb_node_ensure_new(p,b,en,loc)
1264#define NEW_AND(f,s,loc,op_loc) (NODE *)rb_node_and_new(p,f,s,loc,op_loc)
1265#define NEW_OR(f,s,loc,op_loc) (NODE *)rb_node_or_new(p,f,s,loc,op_loc)
1266#define NEW_MASGN(l,r,loc) rb_node_masgn_new(p,l,r,loc)
1267#define NEW_LASGN(v,val,loc) (NODE *)rb_node_lasgn_new(p,v,val,loc)
1268#define NEW_DASGN(v,val,loc) (NODE *)rb_node_dasgn_new(p,v,val,loc)
1269#define NEW_GASGN(v,val,loc) (NODE *)rb_node_gasgn_new(p,v,val,loc)
1270#define NEW_IASGN(v,val,loc) (NODE *)rb_node_iasgn_new(p,v,val,loc)
1271#define NEW_CDECL(v,val,path,share,loc) (NODE *)rb_node_cdecl_new(p,v,val,path,share,loc)
1272#define NEW_CVASGN(v,val,loc) (NODE *)rb_node_cvasgn_new(p,v,val,loc)
1273#define NEW_OP_ASGN1(r,id,idx,rval,loc,c_op_loc,o_loc,c_loc,b_op_loc) (NODE *)rb_node_op_asgn1_new(p,r,id,idx,rval,loc,c_op_loc,o_loc,c_loc,b_op_loc)
1274#define NEW_OP_ASGN2(r,t,i,o,val,loc,c_op_loc,m_loc,b_op_loc) (NODE *)rb_node_op_asgn2_new(p,r,val,i,o,t,loc,c_op_loc,m_loc,b_op_loc)
1275#define NEW_OP_ASGN_OR(i,val,loc) (NODE *)rb_node_op_asgn_or_new(p,i,val,loc)
1276#define NEW_OP_ASGN_AND(i,val,loc) (NODE *)rb_node_op_asgn_and_new(p,i,val,loc)
1277#define NEW_OP_CDECL(v,op,val,share,loc) (NODE *)rb_node_op_cdecl_new(p,v,val,op,share,loc)
1278#define NEW_CALL(r,m,a,loc) (NODE *)rb_node_call_new(p,r,m,a,loc)
1279#define NEW_OPCALL(r,m,a,loc) (NODE *)rb_node_opcall_new(p,r,m,a,loc)
1280#define NEW_FCALL(m,a,loc) rb_node_fcall_new(p,m,a,loc)
1281#define NEW_VCALL(m,loc) (NODE *)rb_node_vcall_new(p,m,loc)
1282#define NEW_QCALL0(r,m,a,loc) (NODE *)rb_node_qcall_new(p,r,m,a,loc)
1283#define NEW_SUPER(a,loc,k_loc,l_loc,r_loc) (NODE *)rb_node_super_new(p,a,loc,k_loc,l_loc,r_loc)
1284#define NEW_ZSUPER(loc) (NODE *)rb_node_zsuper_new(p,loc)
1285#define NEW_LIST(a,loc) (NODE *)rb_node_list_new(p,a,loc)
1286#define NEW_LIST2(h,l,n,loc) (NODE *)rb_node_list_new2(p,h,l,n,loc)
1287#define NEW_ZLIST(loc) (NODE *)rb_node_zlist_new(p,loc)
1288#define NEW_HASH(a,loc) (NODE *)rb_node_hash_new(p,a,loc)
1289#define NEW_RETURN(s,loc,k_loc) (NODE *)rb_node_return_new(p,s,loc,k_loc)
1290#define NEW_YIELD(a,loc,k_loc,l_loc,r_loc) (NODE *)rb_node_yield_new(p,a,loc,k_loc,l_loc,r_loc)
1291#define NEW_LVAR(v,loc) (NODE *)rb_node_lvar_new(p,v,loc)
1292#define NEW_DVAR(v,loc) (NODE *)rb_node_dvar_new(p,v,loc)
1293#define NEW_GVAR(v,loc) (NODE *)rb_node_gvar_new(p,v,loc)
1294#define NEW_IVAR(v,loc) (NODE *)rb_node_ivar_new(p,v,loc)
1295#define NEW_CONST(v,loc) (NODE *)rb_node_const_new(p,v,loc)
1296#define NEW_CVAR(v,loc) (NODE *)rb_node_cvar_new(p,v,loc)
1297#define NEW_NTH_REF(n,loc) (NODE *)rb_node_nth_ref_new(p,n,loc)
1298#define NEW_BACK_REF(n,loc) (NODE *)rb_node_back_ref_new(p,n,loc)
1299#define NEW_MATCH2(n1,n2,loc) (NODE *)rb_node_match2_new(p,n1,n2,loc)
1300#define NEW_MATCH3(r,n2,loc) (NODE *)rb_node_match3_new(p,r,n2,loc)
1301#define NEW_INTEGER(val, base,loc) (NODE *)rb_node_integer_new(p,val,base,loc)
1302#define NEW_FLOAT(val,loc) (NODE *)rb_node_float_new(p,val,loc)
1303#define NEW_RATIONAL(val,base,seen_point,loc) (NODE *)rb_node_rational_new(p,val,base,seen_point,loc)
1304#define NEW_IMAGINARY(val,base,seen_point,numeric_type,loc) (NODE *)rb_node_imaginary_new(p,val,base,seen_point,numeric_type,loc)
1305#define NEW_STR(s,loc) (NODE *)rb_node_str_new(p,s,loc)
1306#define NEW_DSTR0(s,l,n,loc) (NODE *)rb_node_dstr_new0(p,s,l,n,loc)
1307#define NEW_DSTR(s,loc) (NODE *)rb_node_dstr_new(p,s,loc)
1308#define NEW_XSTR(s,loc) (NODE *)rb_node_xstr_new(p,s,loc)
1309#define NEW_DXSTR(s,l,n,loc) (NODE *)rb_node_dxstr_new(p,s,l,n,loc)
1310#define NEW_EVSTR(n,loc,o_loc,c_loc) (NODE *)rb_node_evstr_new(p,n,loc,o_loc,c_loc)
1311#define NEW_REGX(str,opts,loc,o_loc,ct_loc,c_loc) (NODE *)rb_node_regx_new(p,str,opts,loc,o_loc,ct_loc,c_loc)
1312#define NEW_ONCE(b,loc) (NODE *)rb_node_once_new(p,b,loc)
1313#define NEW_ARGS(loc) rb_node_args_new(p,loc)
1314#define NEW_ARGS_AUX(r,b,loc) rb_node_args_aux_new(p,r,b,loc)
1315#define NEW_OPT_ARG(v,loc) rb_node_opt_arg_new(p,v,loc)
1316#define NEW_KW_ARG(v,loc) rb_node_kw_arg_new(p,v,loc)
1317#define NEW_POSTARG(i,v,loc) (NODE *)rb_node_postarg_new(p,i,v,loc)
1318#define NEW_ARGSCAT(a,b,loc) (NODE *)rb_node_argscat_new(p,a,b,loc)
1319#define NEW_ARGSPUSH(a,b,loc) (NODE *)rb_node_argspush_new(p,a,b,loc)
1320#define NEW_SPLAT(a,loc,op_loc) (NODE *)rb_node_splat_new(p,a,loc,op_loc)
1321#define NEW_BLOCK_PASS(b,loc,o_loc) rb_node_block_pass_new(p,b,loc,o_loc)
1322#define NEW_DEFN(i,s,loc) (NODE *)rb_node_defn_new(p,i,s,loc)
1323#define NEW_DEFS(r,i,s,loc) (NODE *)rb_node_defs_new(p,r,i,s,loc)
1324#define NEW_ALIAS(n,o,loc,k_loc) (NODE *)rb_node_alias_new(p,n,o,loc,k_loc)
1325#define NEW_VALIAS(n,o,loc,k_loc) (NODE *)rb_node_valias_new(p,n,o,loc,k_loc)
1326#define NEW_UNDEF(i,loc) (NODE *)rb_node_undef_new(p,i,loc)
1327#define NEW_CLASS(n,b,s,loc,ck_loc,io_loc,ek_loc) (NODE *)rb_node_class_new(p,n,b,s,loc,ck_loc,io_loc,ek_loc)
1328#define NEW_MODULE(n,b,loc,mk_loc,ek_loc) (NODE *)rb_node_module_new(p,n,b,loc,mk_loc,ek_loc)
1329#define NEW_SCLASS(r,b,loc,ck_loc,op_loc,ek_loc) (NODE *)rb_node_sclass_new(p,r,b,loc,ck_loc,op_loc,ek_loc)
1330#define NEW_COLON2(c,i,loc,d_loc,n_loc) (NODE *)rb_node_colon2_new(p,c,i,loc,d_loc,n_loc)
1331#define NEW_COLON3(i,loc,d_loc,n_loc) (NODE *)rb_node_colon3_new(p,i,loc,d_loc,n_loc)
1332#define NEW_DOT2(b,e,loc,op_loc) (NODE *)rb_node_dot2_new(p,b,e,loc,op_loc)
1333#define NEW_DOT3(b,e,loc,op_loc) (NODE *)rb_node_dot3_new(p,b,e,loc,op_loc)
1334#define NEW_SELF(loc) (NODE *)rb_node_self_new(p,loc)
1335#define NEW_NIL(loc) (NODE *)rb_node_nil_new(p,loc)
1336#define NEW_TRUE(loc) (NODE *)rb_node_true_new(p,loc)
1337#define NEW_FALSE(loc) (NODE *)rb_node_false_new(p,loc)
1338#define NEW_ERRINFO(loc) (NODE *)rb_node_errinfo_new(p,loc)
1339#define NEW_DEFINED(e,loc,k_loc) (NODE *)rb_node_defined_new(p,e,loc, k_loc)
1340#define NEW_POSTEXE(b,loc,k_loc,o_loc,c_loc) (NODE *)rb_node_postexe_new(p,b,loc,k_loc,o_loc,c_loc)
1341#define NEW_SYM(str,loc) (NODE *)rb_node_sym_new(p,str,loc)
1342#define NEW_DSYM(s,l,n,loc) (NODE *)rb_node_dsym_new(p,s,l,n,loc)
1343#define NEW_ATTRASGN(r,m,a,loc) (NODE *)rb_node_attrasgn_new(p,r,m,a,loc)
1344#define NEW_LAMBDA(a,b,loc,op_loc,o_loc,c_loc) (NODE *)rb_node_lambda_new(p,a,b,loc,op_loc,o_loc,c_loc)
1345#define NEW_ARYPTN(pre,r,post,loc) (NODE *)rb_node_aryptn_new(p,pre,r,post,loc)
1346#define NEW_HSHPTN(c,kw,kwrest,loc) (NODE *)rb_node_hshptn_new(p,c,kw,kwrest,loc)
1347#define NEW_FNDPTN(pre,a,post,loc) (NODE *)rb_node_fndptn_new(p,pre,a,post,loc)
1348#define NEW_LINE(loc) (NODE *)rb_node_line_new(p,loc)
1349#define NEW_FILE(str,loc) (NODE *)rb_node_file_new(p,str,loc)
1350#define NEW_ENCODING(loc) (NODE *)rb_node_encoding_new(p,loc)
1351#define NEW_ERROR(loc) (NODE *)rb_node_error_new(p,loc)
1353enum internal_node_type {
1354 NODE_INTERNAL_ONLY = NODE_LAST,
1361parser_node_name(int node)
1365 return "NODE_DEF_TEMP";
1367 return "NODE_EXITS";
1369 return ruby_node_name(node);
1373/* This node is parse.y internal */
1374struct RNode_DEF_TEMP {
1377 /* for NODE_DEFN/NODE_DEFS */
1379 struct RNode *nd_def;
1384 NODE *numparam_save;
1385 struct lex_context ctxt;
1389#define RNODE_DEF_TEMP(node) ((struct RNode_DEF_TEMP *)(node))
1391static rb_node_break_t *rb_node_break_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1392static rb_node_next_t *rb_node_next_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1393static rb_node_redo_t *rb_node_redo_new(struct parser_params *p, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1394static rb_node_def_temp_t *rb_node_def_temp_new(struct parser_params *p, const YYLTYPE *loc);
1395static rb_node_def_temp_t *def_head_save(struct parser_params *p, rb_node_def_temp_t *n);
1397#define NEW_BREAK(s,loc,k_loc) (NODE *)rb_node_break_new(p,s,loc,k_loc)
1398#define NEW_NEXT(s,loc,k_loc) (NODE *)rb_node_next_new(p,s,loc,k_loc)
1399#define NEW_REDO(loc,k_loc) (NODE *)rb_node_redo_new(p,loc,k_loc)
1400#define NEW_DEF_TEMP(loc) rb_node_def_temp_new(p,loc)
1402/* Make a new internal node, which should not be appeared in the
1403 * result AST and does not have node_id and location. */
1404static NODE* node_new_internal(struct parser_params *p, enum node_type type, size_t size, size_t alignment);
1405#define NODE_NEW_INTERNAL(ndtype, type) (type *)node_new_internal(p, (enum node_type)(ndtype), sizeof(type), RUBY_ALIGNOF(type))
1407static NODE *nd_set_loc(NODE *nd, const YYLTYPE *loc);
1410parser_get_node_id(struct parser_params *p)
1412 int node_id = p->node_id;
1418anddot_multiple_assignment_check(struct parser_params* p, const YYLTYPE *loc, ID id)
1420 if (id == tANDDOT) {
1421 yyerror1(loc, "&. inside multiple assignment destination");
1426set_line_body(NODE *body, int line)
1429 switch (nd_type(body)) {
1432 nd_set_line(body, line);
1437set_embraced_location(NODE *node, const rb_code_location_t *beg, const rb_code_location_t *end)
1439 RNODE_ITER(node)->nd_body->nd_loc = code_loc_gen(beg, end);
1440 nd_set_line(node, beg->end_pos.lineno);
1444last_expr_node(NODE *expr)
1447 if (nd_type_p(expr, NODE_BLOCK)) {
1448 expr = RNODE_BLOCK(RNODE_BLOCK(expr)->nd_end)->nd_head;
1450 else if (nd_type_p(expr, NODE_BEGIN) && RNODE_BEGIN(expr)->nd_body) {
1451 expr = RNODE_BEGIN(expr)->nd_body;
1461#define yyparse ruby_yyparse
1464static NODE* cond(struct parser_params *p, NODE *node, const YYLTYPE *loc);
1465static NODE* method_cond(struct parser_params *p, NODE *node, const YYLTYPE *loc);
1466static NODE *new_nil_at(struct parser_params *p, const rb_code_position_t *pos);
1467static NODE *new_if(struct parser_params*,NODE*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*);
1468static NODE *new_unless(struct parser_params*,NODE*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*);
1469static NODE *logop(struct parser_params*,ID,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
1471static NODE *newline_node(NODE*);
1472static void fixpos(NODE*,NODE*);
1474static int value_expr(struct parser_params*,NODE*);
1475static void void_expr(struct parser_params*,NODE*);
1476static NODE *remove_begin(NODE*);
1477static NODE *void_stmts(struct parser_params*,NODE*);
1478static void reduce_nodes(struct parser_params*,NODE**);
1479static void block_dup_check(struct parser_params*,NODE*,NODE*);
1481static NODE *block_append(struct parser_params*,NODE*,NODE*);
1482static NODE *list_append(struct parser_params*,NODE*,NODE*);
1483static NODE *list_concat(NODE*,NODE*);
1484static NODE *arg_append(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1485static NODE *last_arg_append(struct parser_params *p, NODE *args, NODE *last_arg, const YYLTYPE *loc);
1486static NODE *rest_arg_append(struct parser_params *p, NODE *args, NODE *rest_arg, const YYLTYPE *loc);
1487static NODE *literal_concat(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1488static NODE *new_evstr(struct parser_params*,NODE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*);
1489static NODE *new_dstr(struct parser_params*,NODE*,const YYLTYPE*);
1490static NODE *str2dstr(struct parser_params*,NODE*);
1491static NODE *evstr2dstr(struct parser_params*,NODE*);
1492static NODE *splat_array(NODE*);
1493static void mark_lvar_used(struct parser_params *p, NODE *rhs);
1495static NODE *call_bin_op(struct parser_params*,NODE*,ID,NODE*,const YYLTYPE*,const YYLTYPE*);
1496static NODE *call_uni_op(struct parser_params*,NODE*,ID,const YYLTYPE*,const YYLTYPE*);
1497static NODE *new_qcall(struct parser_params* p, ID atype, NODE *recv, ID mid, NODE *args, const YYLTYPE *op_loc, const YYLTYPE *loc);
1498static NODE *new_command_qcall(struct parser_params* p, ID atype, NODE *recv, ID mid, NODE *args, NODE *block, const YYLTYPE *op_loc, const YYLTYPE *loc);
1499static NODE *method_add_block(struct parser_params*p, NODE *m, NODE *b, const YYLTYPE *loc) {RNODE_ITER(b)->nd_iter = m; b->nd_loc = *loc; return b;}
1500static NODE *command_add_block(struct parser_params*p, NODE *m, NODE *b, const YYLTYPE *loc);
1502static bool args_info_empty_p(struct rb_args_info *args);
1503static rb_node_args_t *new_args(struct parser_params*,rb_node_args_aux_t*,rb_node_opt_arg_t*,ID,rb_node_args_aux_t*,rb_node_args_t*,const YYLTYPE*);
1504static rb_node_args_t *new_args_tail(struct parser_params*,rb_node_kw_arg_t*,ID,ID,const YYLTYPE*);
1505#define new_empty_args_tail(p, loc) new_args_tail(p, 0, 0, 0, loc)
1506static NODE *new_array_pattern(struct parser_params *p, NODE *constant, NODE *pre_arg, NODE *aryptn, const YYLTYPE *loc);
1507static NODE *new_array_pattern_tail(struct parser_params *p, NODE *pre_args, int has_rest, NODE *rest_arg, NODE *post_args, const YYLTYPE *loc);
1508static NODE *new_find_pattern(struct parser_params *p, NODE *constant, NODE *fndptn, const YYLTYPE *loc);
1509static NODE *new_find_pattern_tail(struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg, const YYLTYPE *loc);
1510static NODE *new_hash_pattern(struct parser_params *p, NODE *constant, NODE *hshptn, const YYLTYPE *loc);
1511static NODE *new_hash_pattern_tail(struct parser_params *p, NODE *kw_args, ID kw_rest_arg, const YYLTYPE *loc);
1513static rb_node_kw_arg_t *new_kw_arg(struct parser_params *p, NODE *k, const YYLTYPE *loc);
1514static rb_node_args_t *args_with_numbered(struct parser_params*,rb_node_args_t*,int,ID);
1516static NODE* negate_lit(struct parser_params*, NODE*,const YYLTYPE*);
1517static void no_blockarg(struct parser_params*,NODE*);
1518static NODE *ret_args(struct parser_params*,NODE*);
1519static NODE *arg_blk_pass(NODE*,rb_node_block_pass_t*);
1520static NODE *dsym_node(struct parser_params*,NODE*,const YYLTYPE*);
1522static NODE *gettable(struct parser_params*,ID,const YYLTYPE*);
1523static NODE *assignable(struct parser_params*,ID,NODE*,const YYLTYPE*);
1525static NODE *aryset(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1526static NODE *attrset(struct parser_params*,NODE*,ID,ID,const YYLTYPE*);
1528static VALUE rb_backref_error(struct parser_params*,NODE*);
1529static NODE *node_assign(struct parser_params*,NODE*,NODE*,struct lex_context,const YYLTYPE*);
1531static NODE *new_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1532static NODE *new_ary_op_assign(struct parser_params *p, NODE *ary, NODE *args, ID op, NODE *rhs, const YYLTYPE *args_loc, const YYLTYPE *loc, const YYLTYPE *call_operator_loc, const YYLTYPE *opening_loc, const YYLTYPE *closing_loc, const YYLTYPE *binary_operator_loc);
1533static NODE *new_attr_op_assign(struct parser_params *p, NODE *lhs, ID atype, ID attr, ID op, NODE *rhs, const YYLTYPE *loc, const YYLTYPE *call_operator_loc, const YYLTYPE *message_loc, const YYLTYPE *binary_operator_loc);
1534static NODE *new_const_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1535static NODE *new_bodystmt(struct parser_params *p, NODE *head, NODE *rescue, NODE *rescue_else, NODE *ensure, const YYLTYPE *loc);
1537static NODE *const_decl(struct parser_params *p, NODE* path, const YYLTYPE *loc);
1539static rb_node_opt_arg_t *opt_arg_append(rb_node_opt_arg_t*, rb_node_opt_arg_t*);
1540static rb_node_kw_arg_t *kwd_append(rb_node_kw_arg_t*, rb_node_kw_arg_t*);
1542static NODE *new_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1543static NODE *new_unique_key_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1545static NODE *new_defined(struct parser_params *p, NODE *expr, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1547static NODE *new_regexp(struct parser_params *, NODE *, int, const YYLTYPE *, const YYLTYPE *, const YYLTYPE *, const YYLTYPE *);
1549#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
1551static NODE *new_xstring(struct parser_params *, NODE *, const YYLTYPE *loc);
1553static NODE *symbol_append(struct parser_params *p, NODE *symbols, NODE *symbol);
1555static NODE *match_op(struct parser_params*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
1557static rb_ast_id_table_t *local_tbl(struct parser_params*);
1559static VALUE reg_compile(struct parser_params*, rb_parser_string_t*, int);
1560static void reg_fragment_setenc(struct parser_params*, rb_parser_string_t*, int);
1562static int literal_concat0(struct parser_params *p, rb_parser_string_t *head, rb_parser_string_t *tail);
1563static NODE *heredoc_dedent(struct parser_params*,NODE*);
1565static void check_literal_when(struct parser_params *p, NODE *args, const YYLTYPE *loc);
1567static rb_locations_lambda_body_t* new_locations_lambda_body(struct parser_params *p, NODE *node, const YYLTYPE *loc, const YYLTYPE *opening_loc, const YYLTYPE *closing_loc);
1570#define get_value(idx) (rb_ary_entry(p->s_value_stack, idx))
1571#define set_value(val) (p->s_lvalue = val)
1572static VALUE assign_error(struct parser_params *p, const char *mesg, VALUE a);
1573static int id_is_var(struct parser_params *p, ID id);
1576RUBY_SYMBOL_EXPORT_BEGIN
1577VALUE rb_parser_reg_compile(struct parser_params* p, VALUE str, int options);
1578int rb_reg_fragment_setenc(struct parser_params*, rb_parser_string_t *, int);
1579enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_state_e, enum lex_state_e, int);
1580VALUE rb_parser_lex_state_name(struct parser_params *p, enum lex_state_e state);
1581void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int);
1582PRINTF_ARGS(void rb_parser_fatal(struct parser_params *p, const char *fmt, ...), 2, 3);
1583YYLTYPE *rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc);
1584YYLTYPE *rb_parser_set_location_of_delayed_token(struct parser_params *p, YYLTYPE *yylloc);
1585YYLTYPE *rb_parser_set_location_of_heredoc_end(struct parser_params *p, YYLTYPE *yylloc);
1586YYLTYPE *rb_parser_set_location_of_dummy_end(struct parser_params *p, YYLTYPE *yylloc);
1587YYLTYPE *rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc);
1588YYLTYPE *rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc);
1589void ruby_show_error_line(struct parser_params *p, VALUE errbuf, const YYLTYPE *yylloc, int lineno, rb_parser_string_t *str);
1590RUBY_SYMBOL_EXPORT_END
1592static void flush_string_content(struct parser_params *p, rb_encoding *enc, size_t back);
1593static void error_duplicate_pattern_variable(struct parser_params *p, ID id, const YYLTYPE *loc);
1594static void error_duplicate_pattern_key(struct parser_params *p, ID id, const YYLTYPE *loc);
1595static VALUE formal_argument_error(struct parser_params*, ID);
1596static ID shadowing_lvar(struct parser_params*,ID);
1597static void new_bv(struct parser_params*,ID);
1599static void local_push(struct parser_params*,int);
1600static void local_pop(struct parser_params*);
1601static void local_var(struct parser_params*, ID);
1602static void arg_var(struct parser_params*, ID);
1603static int local_id(struct parser_params *p, ID id);
1604static int local_id_ref(struct parser_params*, ID, ID **);
1605#define internal_id rb_parser_internal_id
1606ID internal_id(struct parser_params*);
1607static NODE *new_args_forward_call(struct parser_params*, NODE*, const YYLTYPE*, const YYLTYPE*);
1608static int check_forwarding_args(struct parser_params*);
1609static void add_forwarding_args(struct parser_params *p);
1610static void forwarding_arg_check(struct parser_params *p, ID arg, ID all, const char *var);
1612static const struct vtable *dyna_push(struct parser_params *);
1613static void dyna_pop(struct parser_params*, const struct vtable *);
1614static int dyna_in_block(struct parser_params*);
1615#define dyna_var(p, id) local_var(p, id)
1616static int dvar_defined(struct parser_params*, ID);
1617#define dvar_defined_ref rb_parser_dvar_defined_ref
1618int dvar_defined_ref(struct parser_params*, ID, ID**);
1619static int dvar_curr(struct parser_params*,ID);
1621static int lvar_defined(struct parser_params*, ID);
1623static NODE *numparam_push(struct parser_params *p);
1624static void numparam_pop(struct parser_params *p, NODE *prev_inner);
1626#define METHOD_NOT '!
'
1628#define idFWD_REST '*
'
1629#define idFWD_KWREST idPow /* Use simple "**", as tDSTAR is "**arg" */
1630#define idFWD_BLOCK '&
'
1631#define idFWD_ALL idDot3
1632#define arg_FWD_BLOCK idFWD_BLOCK
1634#define RE_ONIG_OPTION_IGNORECASE 1
1635#define RE_ONIG_OPTION_EXTEND (RE_ONIG_OPTION_IGNORECASE<<1)
1636#define RE_ONIG_OPTION_MULTILINE (RE_ONIG_OPTION_EXTEND<<1)
1637#define RE_OPTION_ONCE (1<<16)
1638#define RE_OPTION_ENCODING_SHIFT 8
1639#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
1640#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
1641#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
1642#define RE_OPTION_MASK 0xff
1643#define RE_OPTION_ARG_ENCODING_NONE 32
1645#define CHECK_LITERAL_WHEN (st_table *)1
1646#define CASE_LABELS_ENABLED_P(case_labels) (case_labels && case_labels != CHECK_LITERAL_WHEN)
1648#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
1649RUBY_FUNC_EXPORTED size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr);
1651#define TOKEN2ID(tok) ( \
1652 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
1653 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
1654 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
1655 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
1656 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
1657 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
1658 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
1660/****** Ripper *******/
1664#include "eventids1.h"
1665#include "eventids2.h"
1667extern const struct ripper_parser_ids ripper_parser_ids;
1669static VALUE ripper_dispatch0(struct parser_params*,ID);
1670static VALUE ripper_dispatch1(struct parser_params*,ID,VALUE);
1671static VALUE ripper_dispatch2(struct parser_params*,ID,VALUE,VALUE);
1672static VALUE ripper_dispatch3(struct parser_params*,ID,VALUE,VALUE,VALUE);
1673static VALUE ripper_dispatch4(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE);
1674static VALUE ripper_dispatch5(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE);
1675static VALUE ripper_dispatch7(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE);
1676void ripper_error(struct parser_params *p);
1678#define dispatch0(n) ripper_dispatch0(p, RIPPER_ID(n))
1679#define dispatch1(n,a) ripper_dispatch1(p, RIPPER_ID(n), (a))
1680#define dispatch2(n,a,b) ripper_dispatch2(p, RIPPER_ID(n), (a), (b))
1681#define dispatch3(n,a,b,c) ripper_dispatch3(p, RIPPER_ID(n), (a), (b), (c))
1682#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, RIPPER_ID(n), (a), (b), (c), (d))
1683#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, RIPPER_ID(n), (a), (b), (c), (d), (e))
1684#define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, RIPPER_ID(n), (a), (b), (c), (d), (e), (f), (g))
1686#define yyparse ripper_yyparse
1689aryptn_pre_args(struct parser_params *p, VALUE pre_arg, VALUE pre_args)
1691 if (!NIL_P(pre_arg)) {
1692 if (!NIL_P(pre_args)) {
1693 rb_ary_unshift(pre_args, pre_arg);
1696 pre_args = rb_ary_new_from_args(1, pre_arg);
1702#define ID2VAL(id) STATIC_ID2SYM(id)
1703#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
1706#define KWD2EID(t, v) keyword_##t
1709new_scope_body(struct parser_params *p, rb_node_args_t *args, NODE *body, NODE *parent, const YYLTYPE *loc)
1711 body = remove_begin(body);
1712 reduce_nodes(p, &body);
1713 NODE *n = NEW_SCOPE(args, body, parent, loc);
1714 nd_set_line(n, loc->end_pos.lineno);
1715 set_line_body(body, loc->beg_pos.lineno);
1720rescued_expr(struct parser_params *p, NODE *arg, NODE *rescue,
1721 const YYLTYPE *arg_loc, const YYLTYPE *mod_loc, const YYLTYPE *res_loc)
1723 YYLTYPE loc = code_loc_gen(mod_loc, res_loc);
1724 rescue = NEW_RESBODY(0, 0, remove_begin(rescue), 0, &loc);
1725 loc.beg_pos = arg_loc->beg_pos;
1726 return NEW_RESCUE(arg, rescue, 0, &loc);
1729static NODE *add_block_exit(struct parser_params *p, NODE *node);
1730static rb_node_exits_t *init_block_exit(struct parser_params *p);
1731static rb_node_exits_t *allow_block_exit(struct parser_params *p);
1732static void restore_block_exit(struct parser_params *p, rb_node_exits_t *exits);
1733static void clear_block_exit(struct parser_params *p, bool error);
1736next_rescue_context(struct lex_context *next, const struct lex_context *outer, enum rescue_context def)
1738 next->in_rescue = outer->in_rescue == after_rescue ? after_rescue : def;
1742restore_defun(struct parser_params *p, rb_node_def_temp_t *temp)
1744 /* See: def_name action */
1745 struct lex_context ctxt = temp->save.ctxt;
1746 p->ctxt.in_def = ctxt.in_def;
1747 p->ctxt.shareable_constant_value = ctxt.shareable_constant_value;
1748 p->ctxt.in_rescue = ctxt.in_rescue;
1749 p->max_numparam = temp->save.max_numparam;
1750 numparam_pop(p, temp->save.numparam_save);
1751 clear_block_exit(p, true);
1755endless_method_name(struct parser_params *p, ID mid, const YYLTYPE *loc)
1757 if (is_attrset_id(mid)) {
1758 yyerror1(loc, "setter method cannot be defined in an endless method definition");
1760 token_info_drop(p, "def", loc->beg_pos);
1763#define debug_token_line(p, name, line) do { \
1765 const char *const pcur = p->lex.pcur; \
1766 const char *const ptok = p->lex.ptok; \
1767 rb_parser_printf(p, name ":%d (%d: %"PRIdPTRDIFF"|%"PRIdPTRDIFF"|%"PRIdPTRDIFF")\n", \
1768 line, p->ruby_sourceline, \
1769 ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur); \
1773#define begin_definition(k, loc_beg, loc_end) \
1775 if (!(p->ctxt.in_class = (k)[0] != 0)) { \
1776 /* singleton class */ \
1777 p->ctxt.cant_return = !p->ctxt.in_def; \
1778 p->ctxt.in_def = 0; \
1780 else if (p->ctxt.in_def) { \
1781 YYLTYPE loc = code_loc_gen(loc_beg, loc_end); \
1782 yyerror1(&loc, k " definition in method body"); \
1785 p->ctxt.cant_return = 1; \
1791# define ifndef_ripper(x) (x)
1792# define ifdef_ripper(r,x) (x)
1794# define ifndef_ripper(x)
1795# define ifdef_ripper(r,x) (r)
1798# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
1799# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
1800# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
1801# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
1802# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
1803# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
1804# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
1805# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
1806# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
1807# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
1808# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1809# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
1810# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
1811# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
1812# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1813# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
1814# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
1815# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
1816# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
1817# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1819extern const ID id_warn, id_warning, id_gets, id_assoc;
1820# define ERR_MESG() STR_NEW2(mesg) /* to bypass Ripper DSL */
1821# define WARN_S_L(s,l) STR_NEW(s,l)
1822# define WARN_S(s) STR_NEW2(s)
1823# define WARN_I(i) INT2NUM(i)
1824# define WARN_ID(i) rb_id2str(i)
1825# define PRIsWARN PRIsVALUE
1826# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
1827# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
1828# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
1829# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
1830# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
1831# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
1832# define compile_error ripper_compile_error
1834# define WARN_S_L(s,l) s
1837# define WARN_ID(i) rb_id2name(i)
1838# define PRIsWARN PRIsVALUE
1839# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1840# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1841# define WARN_CALL rb_compile_warn
1842# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1843# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1844# define WARNING_CALL rb_compile_warning
1845PRINTF_ARGS(static void parser_compile_error(struct parser_params*, const rb_code_location_t *loc, const char *fmt, ...), 3, 4);
1846# define compile_error(p, ...) parser_compile_error(p, NULL, __VA_ARGS__)
1849#define RNODE_EXITS(node) ((rb_node_exits_t*)(node))
1852add_block_exit(struct parser_params *p, NODE *node)
1855 compile_error(p, "unexpected null node");
1858 switch (nd_type(node)) {
1859 case NODE_BREAK: case NODE_NEXT: case NODE_REDO: break;
1861 compile_error(p, "add_block_exit: unexpected node: %s", parser_node_name(nd_type(node)));
1864 if (!p->ctxt.in_defined) {
1865 rb_node_exits_t *exits = p->exits;
1867 RNODE_EXITS(exits->nd_stts)->nd_chain = node;
1868 exits->nd_stts = node;
1874static rb_node_exits_t *
1875init_block_exit(struct parser_params *p)
1877 rb_node_exits_t *old = p->exits;
1878 rb_node_exits_t *exits = NODE_NEW_INTERNAL(NODE_EXITS, rb_node_exits_t);
1879 exits->nd_chain = 0;
1880 exits->nd_stts = RNODE(exits);
1885static rb_node_exits_t *
1886allow_block_exit(struct parser_params *p)
1888 rb_node_exits_t *exits = p->exits;
1894restore_block_exit(struct parser_params *p, rb_node_exits_t *exits)
1900clear_block_exit(struct parser_params *p, bool error)
1902 rb_node_exits_t *exits = p->exits;
1905 for (NODE *e = RNODE(exits); (e = RNODE_EXITS(e)->nd_chain) != 0; ) {
1906 switch (nd_type(e)) {
1908 yyerror1(&e->nd_loc, "Invalid break");
1911 yyerror1(&e->nd_loc, "Invalid next");
1914 yyerror1(&e->nd_loc, "Invalid redo");
1917 yyerror1(&e->nd_loc, "unexpected node");
1918 goto end_checks; /* no nd_chain */
1923 exits->nd_stts = RNODE(exits);
1924 exits->nd_chain = 0;
1927#define WARN_EOL(tok) \
1928 (looking_at_eol_p(p) ? \
1929 (void)rb_warning0("'" tok "' at the end of line without an expression") : \
1931static int looking_at_eol_p(struct parser_params *p);
1934get_nd_value(struct parser_params *p, NODE *node)
1936 switch (nd_type(node)) {
1938 return RNODE_GASGN(node)->nd_value;
1940 return RNODE_IASGN(node)->nd_value;
1942 return RNODE_LASGN(node)->nd_value;
1944 return RNODE_DASGN(node)->nd_value;
1946 return RNODE_MASGN(node)->nd_value;
1948 return RNODE_CVASGN(node)->nd_value;
1950 return RNODE_CDECL(node)->nd_value;
1952 compile_error(p, "get_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1958set_nd_value(struct parser_params *p, NODE *node, NODE *rhs)
1960 switch (nd_type(node)) {
1962 RNODE_CDECL(node)->nd_value = rhs;
1965 RNODE_GASGN(node)->nd_value = rhs;
1968 RNODE_IASGN(node)->nd_value = rhs;
1971 RNODE_LASGN(node)->nd_value = rhs;
1974 RNODE_DASGN(node)->nd_value = rhs;
1977 RNODE_MASGN(node)->nd_value = rhs;
1980 RNODE_CVASGN(node)->nd_value = rhs;
1983 compile_error(p, "set_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1989get_nd_vid(struct parser_params *p, NODE *node)
1991 switch (nd_type(node)) {
1993 return RNODE_CDECL(node)->nd_vid;
1995 return RNODE_GASGN(node)->nd_vid;
1997 return RNODE_IASGN(node)->nd_vid;
1999 return RNODE_LASGN(node)->nd_vid;
2001 return RNODE_DASGN(node)->nd_vid;
2003 return RNODE_CVASGN(node)->nd_vid;
2005 compile_error(p, "get_nd_vid: unexpected node: %s", parser_node_name(nd_type(node)));
2011get_nd_args(struct parser_params *p, NODE *node)
2013 switch (nd_type(node)) {
2015 return RNODE_CALL(node)->nd_args;
2017 return RNODE_OPCALL(node)->nd_args;
2019 return RNODE_FCALL(node)->nd_args;
2021 return RNODE_QCALL(node)->nd_args;
2023 return RNODE_SUPER(node)->nd_args;
2032 compile_error(p, "get_nd_args: unexpected node: %s", parser_node_name(nd_type(node)));
2038djb2(const uint8_t *str, size_t len)
2040 st_index_t hash = 5381;
2042 for (size_t i = 0; i < len; i++) {
2043 hash = ((hash << 5) + hash) + str[i];
2050parser_memhash(const void *ptr, long len)
2052 return djb2(ptr, len);
2055#define PARSER_STRING_PTR(str) (str->ptr)
2056#define PARSER_STRING_LEN(str) (str->len)
2057#define PARSER_STRING_END(str) (&str->ptr[str->len])
2058#define STRING_SIZE(str) ((size_t)str->len + 1)
2059#define STRING_TERM_LEN(str) (1)
2060#define STRING_TERM_FILL(str) (str->ptr[str->len] = '\0
')
2061#define PARSER_STRING_RESIZE_CAPA_TERM(p,str,capacity,termlen) do {\
2062 REALLOC_N(str->ptr, char, (size_t)total + termlen); \
2065#define STRING_SET_LEN(str, n) do { \
2068#define PARSER_STRING_GETMEM(str, ptrvar, lenvar) \
2069 ((ptrvar) = str->ptr, \
2070 (lenvar) = str->len)
2073parser_string_char_at_end(struct parser_params *p, rb_parser_string_t *str, int when_empty)
2075 return PARSER_STRING_LEN(str) > 0 ? (unsigned char)PARSER_STRING_END(str)[-1] : when_empty;
2078static rb_parser_string_t *
2079rb_parser_string_new(rb_parser_t *p, const char *ptr, long len)
2081 rb_parser_string_t *str;
2084 rb_bug("negative string size (or size too big): %ld", len);
2087 str = xcalloc(1, sizeof(rb_parser_string_t));
2088 str->ptr = xcalloc(len + 1, sizeof(char));
2091 memcpy(PARSER_STRING_PTR(str), ptr, len);
2093 STRING_SET_LEN(str, len);
2094 STRING_TERM_FILL(str);
2098static rb_parser_string_t *
2099rb_parser_encoding_string_new(rb_parser_t *p, const char *ptr, long len, rb_encoding *enc)
2101 rb_parser_string_t *str = rb_parser_string_new(p, ptr, len);
2102 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2109rb_str_to_parser_string(rb_parser_t *p, VALUE str)
2112 rb_parser_string_t *ret = rb_parser_encoding_string_new(p, RSTRING_PTR(str), RSTRING_LEN(str), rb_enc_get(str));
2118rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str)
2121 xfree(PARSER_STRING_PTR(str));
2127rb_parser_str_hash(rb_parser_string_t *str)
2129 return parser_memhash((const void *)PARSER_STRING_PTR(str), PARSER_STRING_LEN(str));
2133rb_char_p_hash(const char *c)
2135 return parser_memhash((const void *)c, strlen(c));
2139rb_parser_str_capacity(rb_parser_string_t *str, const int termlen)
2141 return PARSER_STRING_LEN(str);
2146rb_parser_string_end(rb_parser_string_t *str)
2148 return &str->ptr[str->len];
2153rb_parser_string_set_encoding(rb_parser_string_t *str, rb_encoding *enc)
2159rb_parser_str_get_encoding(rb_parser_string_t *str)
2166PARSER_ENCODING_IS_ASCII8BIT(struct parser_params *p, rb_parser_string_t *str)
2168 return rb_parser_str_get_encoding(str) == rb_ascii8bit_encoding();
2173PARSER_ENC_CODERANGE(rb_parser_string_t *str)
2175 return str->coderange;
2179PARSER_ENC_CODERANGE_SET(rb_parser_string_t *str, int coderange)
2181 str->coderange = coderange;
2185PARSER_ENCODING_CODERANGE_SET(rb_parser_string_t *str, rb_encoding *enc, enum rb_parser_string_coderange_type cr)
2187 rb_parser_string_set_encoding(str, enc);
2188 PARSER_ENC_CODERANGE_SET(str, cr);
2192PARSER_ENC_CODERANGE_CLEAR(rb_parser_string_t *str)
2194 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2198PARSER_ENC_CODERANGE_ASCIIONLY(rb_parser_string_t *str)
2200 return PARSER_ENC_CODERANGE(str) == RB_PARSER_ENC_CODERANGE_7BIT;
2204PARSER_ENC_CODERANGE_CLEAN_P(int cr)
2206 return cr == RB_PARSER_ENC_CODERANGE_7BIT || cr == RB_PARSER_ENC_CODERANGE_VALID;
2210rb_parser_search_nonascii(const char *p, const char *e)
2214 for (; s < e; s++) {
2215 if (*s & 0x80) return s;
2222rb_parser_coderange_scan(struct parser_params *p, const char *ptr, long len, rb_encoding *enc)
2224 const char *e = ptr + len;
2226 if (enc == rb_ascii8bit_encoding()) {
2227 /* enc is ASCII-8BIT. ASCII-8BIT string never be broken. */
2228 ptr = rb_parser_search_nonascii(ptr, e);
2229 return ptr ? RB_PARSER_ENC_CODERANGE_VALID : RB_PARSER_ENC_CODERANGE_7BIT;
2232 /* parser string encoding is always asciicompat */
2233 ptr = rb_parser_search_nonascii(ptr, e);
2234 if (!ptr) return RB_PARSER_ENC_CODERANGE_7BIT;
2236 int ret = rb_enc_precise_mbclen(ptr, e, enc);
2237 if (!MBCLEN_CHARFOUND_P(ret)) return RB_PARSER_ENC_CODERANGE_BROKEN;
2238 ptr += MBCLEN_CHARFOUND_LEN(ret);
2239 if (ptr == e) break;
2240 ptr = rb_parser_search_nonascii(ptr, e);
2244 return RB_PARSER_ENC_CODERANGE_VALID;
2248rb_parser_enc_coderange_scan(struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2250 return rb_parser_coderange_scan(p, PARSER_STRING_PTR(str), PARSER_STRING_LEN(str), enc);
2254rb_parser_enc_str_coderange(struct parser_params *p, rb_parser_string_t *str)
2256 int cr = PARSER_ENC_CODERANGE(str);
2258 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2259 cr = rb_parser_enc_coderange_scan(p, str, rb_parser_str_get_encoding(str));
2260 PARSER_ENC_CODERANGE_SET(str, cr);
2266static rb_parser_string_t *
2267rb_parser_enc_associate(struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2269 if (rb_parser_str_get_encoding(str) == enc)
2271 if (!PARSER_ENC_CODERANGE_ASCIIONLY(str)) {
2272 PARSER_ENC_CODERANGE_CLEAR(str);
2274 rb_parser_string_set_encoding(str, enc);
2279rb_parser_is_ascii_string(struct parser_params *p, rb_parser_string_t *str)
2281 return rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_7BIT;
2285rb_parser_enc_compatible(struct parser_params *p, rb_parser_string_t *str1, rb_parser_string_t *str2)
2287 rb_encoding *enc1 = rb_parser_str_get_encoding(str1);
2288 rb_encoding *enc2 = rb_parser_str_get_encoding(str2);
2290 if (enc1 == NULL || enc2 == NULL)
2297 if (PARSER_STRING_LEN(str2) == 0)
2299 if (PARSER_STRING_LEN(str1) == 0)
2300 return rb_parser_is_ascii_string(p, str2) ? enc1 : enc2;
2304 cr1 = rb_parser_enc_str_coderange(p, str1);
2305 cr2 = rb_parser_enc_str_coderange(p, str2);
2308 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT) return enc2;
2309 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT) return enc1;
2312 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT) {
2316 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT) {
2324rb_parser_str_modify(rb_parser_string_t *str)
2326 PARSER_ENC_CODERANGE_CLEAR(str);
2330rb_parser_str_set_len(struct parser_params *p, rb_parser_string_t *str, long len)
2333 const int termlen = STRING_TERM_LEN(str);
2335 if (len > (capa = (long)(rb_parser_str_capacity(str, termlen))) || len < 0) {
2336 rb_bug("probable buffer overflow: %ld for %ld", len, capa);
2339 int cr = PARSER_ENC_CODERANGE(str);
2340 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2341 /* Leave unknown. */
2343 else if (len > PARSER_STRING_LEN(str)) {
2344 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2346 else if (len < PARSER_STRING_LEN(str)) {
2347 if (cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2348 /* ASCII-only string is keeping after truncated. Valid
2349 * and broken may be invalid or valid, leave unknown. */
2350 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2354 STRING_SET_LEN(str, len);
2355 STRING_TERM_FILL(str);
2358static rb_parser_string_t *
2359rb_parser_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len)
2361 rb_parser_str_modify(str);
2362 if (len == 0) return 0;
2364 long total, olen, off = -1;
2366 const int termlen = STRING_TERM_LEN(str);
2368 PARSER_STRING_GETMEM(str, sptr, olen);
2369 if (ptr >= sptr && ptr <= sptr + olen) {
2373 if (olen > LONG_MAX - len) {
2374 compile_error(p, "string sizes too big");
2378 PARSER_STRING_RESIZE_CAPA_TERM(p, str, total, termlen);
2379 sptr = PARSER_STRING_PTR(str);
2383 memcpy(sptr + olen, ptr, len);
2384 STRING_SET_LEN(str, total);
2385 STRING_TERM_FILL(str);
2390#define parser_str_cat(str, ptr, len) rb_parser_str_buf_cat(p, str, ptr, len)
2391#define parser_str_cat_cstr(str, lit) rb_parser_str_buf_cat(p, str, lit, strlen(lit))
2393static rb_parser_string_t *
2394rb_parser_enc_cr_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len,
2395 rb_encoding *ptr_enc, int ptr_cr, int *ptr_cr_ret)
2398 rb_encoding *str_enc, *res_enc;
2400 str_enc = rb_parser_str_get_encoding(str);
2401 str_cr = PARSER_STRING_LEN(str) ? PARSER_ENC_CODERANGE(str) : RB_PARSER_ENC_CODERANGE_7BIT;
2403 if (str_enc == ptr_enc) {
2404 if (str_cr != RB_PARSER_ENC_CODERANGE_UNKNOWN && ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2405 ptr_cr = rb_parser_coderange_scan(p, ptr, len, ptr_enc);
2409 /* parser string encoding is always asciicompat */
2410 if (ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2411 ptr_cr = rb_parser_coderange_scan(p, ptr, len, ptr_enc);
2413 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2414 if (str_enc == rb_ascii8bit_encoding() || ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2415 str_cr = rb_parser_enc_str_coderange(p, str);
2420 *ptr_cr_ret = ptr_cr;
2422 if (str_enc != ptr_enc &&
2423 str_cr != RB_PARSER_ENC_CODERANGE_7BIT &&
2424 ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2428 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2430 res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2432 else if (str_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2433 if (ptr_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2435 res_cr = RB_PARSER_ENC_CODERANGE_7BIT;
2442 else if (str_cr == RB_PARSER_ENC_CODERANGE_VALID) {
2444 if (PARSER_ENC_CODERANGE_CLEAN_P(ptr_cr))
2449 else { /* str_cr == RB_PARSER_ENC_CODERANGE_BROKEN */
2452 if (0 < len) res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2456 compile_error(p, "negative string size (or size too big)");
2458 parser_str_cat(str, ptr, len);
2459 PARSER_ENCODING_CODERANGE_SET(str, res_enc, res_cr);
2463 compile_error(p, "incompatible character encodings: %s and %s",
2464 rb_enc_name(str_enc), rb_enc_name(ptr_enc));
2465 UNREACHABLE_RETURN(0);
2469static rb_parser_string_t *
2470rb_parser_enc_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len,
2471 rb_encoding *ptr_enc)
2473 return rb_parser_enc_cr_str_buf_cat(p, str, ptr, len, ptr_enc, RB_PARSER_ENC_CODERANGE_UNKNOWN, NULL);
2476static rb_parser_string_t *
2477rb_parser_str_buf_append(struct parser_params *p, rb_parser_string_t *str, rb_parser_string_t *str2)
2479 int str2_cr = rb_parser_enc_str_coderange(p, str2);
2481 rb_parser_enc_cr_str_buf_cat(p, str, PARSER_STRING_PTR(str2), PARSER_STRING_LEN(str2),
2482 rb_parser_str_get_encoding(str2), str2_cr, &str2_cr);
2484 PARSER_ENC_CODERANGE_SET(str2, str2_cr);
2489static rb_parser_string_t *
2490rb_parser_str_resize(struct parser_params *p, rb_parser_string_t *str, long len)
2493 rb_bug("negative string size (or size too big)");
2496 long slen = PARSER_STRING_LEN(str);
2498 if (slen > len && PARSER_ENC_CODERANGE(str) != RB_PARSER_ENC_CODERANGE_7BIT) {
2499 PARSER_ENC_CODERANGE_CLEAR(str);
2504 const int termlen = STRING_TERM_LEN(str);
2506 if ((capa = slen) < len) {
2507 SIZED_REALLOC_N(str->ptr, char, (size_t)len + termlen, STRING_SIZE(str));
2509 else if (len == slen) return str;
2510 STRING_SET_LEN(str, len);
2511 STRING_TERM_FILL(str);
2516# define PARSER_ENC_STRING_GETMEM(str, ptrvar, lenvar, encvar) \
2517 ((ptrvar) = str->ptr, \
2518 (lenvar) = str->len, \
2519 (encvar) = str->enc)
2522rb_parser_string_hash_cmp(rb_parser_string_t *str1, rb_parser_string_t *str2)
2525 const char *ptr1, *ptr2;
2526 rb_encoding *enc1, *enc2;
2528 PARSER_ENC_STRING_GETMEM(str1, ptr1, len1, enc1);
2529 PARSER_ENC_STRING_GETMEM(str2, ptr2, len2, enc2);
2531 return (len1 != len2 ||
2533 memcmp(ptr1, ptr2, len1) != 0);
2537rb_parser_ary_extend(rb_parser_t *p, rb_parser_ary_t *ary, long len)
2540 if (ary->capa < len) {
2542 ary->data = (rb_parser_ary_data *)xrealloc(ary->data, sizeof(rb_parser_ary_data) * len);
2543 for (i = ary->len; i < len; i++) {
2550 * Do not call this directly.
2551 * Use rb_parser_ary_new_capa_for_XXX() instead.
2553static rb_parser_ary_t *
2554parser_ary_new_capa(rb_parser_t *p, long len)
2557 rb_bug("negative array size (or size too big): %ld", len);
2559 rb_parser_ary_t *ary = xcalloc(1, sizeof(rb_parser_ary_t));
2564 ary->data = (rb_parser_ary_data *)xcalloc(len, sizeof(rb_parser_ary_data));
2573static rb_parser_ary_t *
2574rb_parser_ary_new_capa_for_script_line(rb_parser_t *p, long len)
2576 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2577 ary->data_type = PARSER_ARY_DATA_SCRIPT_LINE;
2581static rb_parser_ary_t *
2582rb_parser_ary_new_capa_for_ast_token(rb_parser_t *p, long len)
2584 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2585 ary->data_type = PARSER_ARY_DATA_AST_TOKEN;
2590static rb_parser_ary_t *
2591rb_parser_ary_new_capa_for_node(rb_parser_t *p, long len)
2593 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2594 ary->data_type = PARSER_ARY_DATA_NODE;
2599 * Do not call this directly.
2600 * Use rb_parser_ary_push_XXX() instead.
2602static rb_parser_ary_t *
2603parser_ary_push(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ary_data val)
2605 if (ary->len == ary->capa) {
2606 rb_parser_ary_extend(p, ary, ary->len == 0 ? 1 : ary->len * 2);
2608 ary->data[ary->len++] = val;
2613static rb_parser_ary_t *
2614rb_parser_ary_push_ast_token(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ast_token_t *val)
2616 if (ary->data_type != PARSER_ARY_DATA_AST_TOKEN) {
2617 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2619 return parser_ary_push(p, ary, val);
2622static rb_parser_ary_t *
2623rb_parser_ary_push_script_line(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_string_t *val)
2625 if (ary->data_type != PARSER_ARY_DATA_SCRIPT_LINE) {
2626 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2628 return parser_ary_push(p, ary, val);
2632static rb_parser_ary_t *
2633rb_parser_ary_push_node(rb_parser_t *p, rb_parser_ary_t *ary, NODE *val)
2635 if (ary->data_type != PARSER_ARY_DATA_NODE) {
2636 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2638 return parser_ary_push(p, ary, val);
2643rb_parser_ast_token_free(rb_parser_t *p, rb_parser_ast_token_t *token)
2646 rb_parser_string_free(p, token->str);
2651rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary)
2653# define foreach_ary(ptr) \
2654 for (rb_parser_ary_data *ptr = ary->data, *const end_ary_data = ptr + ary->len; \
2655 ptr < end_ary_data; ptr++)
2656 switch (ary->data_type) {
2657 case PARSER_ARY_DATA_AST_TOKEN:
2658 foreach_ary(data) {rb_parser_ast_token_free(p, *data);}
2660 case PARSER_ARY_DATA_SCRIPT_LINE:
2661 foreach_ary(data) {rb_parser_string_free(p, *data);}
2663 case PARSER_ARY_DATA_NODE:
2664 /* Do nothing because nodes are freed when rb_ast_t is freed */
2667 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2681# define YY_CAST(Type, Val) static_cast<Type> (Val)
2682# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
2684# define YY_CAST(Type, Val) ((Type) (Val))
2685# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
2689# if defined __cplusplus
2690# if 201103L <= __cplusplus
2691# define YY_NULLPTR nullptr
2693# define YY_NULLPTR 0
2696# define YY_NULLPTR ((void*)0)
2704 YYSYMBOL_YYEMPTY = -2,
2705 YYSYMBOL_YYEOF = 0, /* "end-of-input" */
2706 YYSYMBOL_YYerror = 1, /* error */
2707 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
2708 YYSYMBOL_keyword_class = 3, /* "'class'" */
2709 YYSYMBOL_keyword_module = 4, /* "'module
'" */
2710 YYSYMBOL_keyword_def = 5, /* "'def
'" */
2711 YYSYMBOL_keyword_undef = 6, /* "'undef
'" */
2712 YYSYMBOL_keyword_begin = 7, /* "'begin
'" */
2713 YYSYMBOL_keyword_rescue = 8, /* "'rescue
'" */
2714 YYSYMBOL_keyword_ensure = 9, /* "'ensure
'" */
2715 YYSYMBOL_keyword_end = 10, /* "'end
'" */
2716 YYSYMBOL_keyword_if = 11, /* "'if'" */
2717 YYSYMBOL_keyword_unless = 12, /* "'unless
'" */
2718 YYSYMBOL_keyword_then = 13, /* "'then
'" */
2719 YYSYMBOL_keyword_elsif = 14, /* "'elsif
'" */
2720 YYSYMBOL_keyword_else = 15, /* "'else'" */
2721 YYSYMBOL_keyword_case = 16, /* "'case'" */
2722 YYSYMBOL_keyword_when = 17, /* "'when
'" */
2723 YYSYMBOL_keyword_while = 18, /* "'while'" */
2724 YYSYMBOL_keyword_until = 19, /* "'until
'" */
2725 YYSYMBOL_keyword_for = 20, /* "'for'" */
2726 YYSYMBOL_keyword_break = 21, /* "'break'" */
2727 YYSYMBOL_keyword_next = 22, /* "'next
'" */
2728 YYSYMBOL_keyword_redo = 23, /* "'redo
'" */
2729 YYSYMBOL_keyword_retry = 24, /* "'retry
'" */
2730 YYSYMBOL_keyword_in = 25, /* "'in
'" */
2731 YYSYMBOL_keyword_do = 26, /* "'do'" */
2732 YYSYMBOL_keyword_do_cond = 27, /* "'do' for condition" */
2733 YYSYMBOL_keyword_do_block = 28, /* "'do' for block" */
2734 YYSYMBOL_keyword_do_LAMBDA = 29, /* "'do' for lambda" */
2735 YYSYMBOL_keyword_return = 30, /* "'return'" */
2736 YYSYMBOL_keyword_yield = 31, /* "'yield
'" */
2737 YYSYMBOL_keyword_super = 32, /* "'super
'" */
2738 YYSYMBOL_keyword_self = 33, /* "'self
'" */
2739 YYSYMBOL_keyword_nil = 34, /* "'nil
'" */
2740 YYSYMBOL_keyword_true = 35, /* "'true'" */
2741 YYSYMBOL_keyword_false = 36, /* "'false'" */
2742 YYSYMBOL_keyword_and = 37, /* "'and
'" */
2743 YYSYMBOL_keyword_or = 38, /* "'or
'" */
2744 YYSYMBOL_keyword_not = 39, /* "'not
'" */
2745 YYSYMBOL_modifier_if = 40, /* "'if' modifier" */
2746 YYSYMBOL_modifier_unless = 41, /* "'unless
' modifier" */
2747 YYSYMBOL_modifier_while = 42, /* "'while' modifier" */
2748 YYSYMBOL_modifier_until = 43, /* "'until
' modifier" */
2749 YYSYMBOL_modifier_rescue = 44, /* "'rescue
' modifier" */
2750 YYSYMBOL_keyword_alias = 45, /* "'alias
'" */
2751 YYSYMBOL_keyword_defined = 46, /* "'defined?
'" */
2752 YYSYMBOL_keyword_BEGIN = 47, /* "'BEGIN
'" */
2753 YYSYMBOL_keyword_END = 48, /* "'END
'" */
2754 YYSYMBOL_keyword__LINE__ = 49, /* "'__LINE__
'" */
2755 YYSYMBOL_keyword__FILE__ = 50, /* "'__FILE__
'" */
2756 YYSYMBOL_keyword__ENCODING__ = 51, /* "'__ENCODING__
'" */
2757 YYSYMBOL_tIDENTIFIER = 52, /* "local variable or method" */
2758 YYSYMBOL_tFID = 53, /* "method" */
2759 YYSYMBOL_tGVAR = 54, /* "global variable" */
2760 YYSYMBOL_tIVAR = 55, /* "instance variable" */
2761 YYSYMBOL_tCONSTANT = 56, /* "constant" */
2762 YYSYMBOL_tCVAR = 57, /* "class variable" */
2763 YYSYMBOL_tLABEL = 58, /* "label" */
2764 YYSYMBOL_tINTEGER = 59, /* "integer literal" */
2765 YYSYMBOL_tFLOAT = 60, /* "float literal" */
2766 YYSYMBOL_tRATIONAL = 61, /* "rational literal" */
2767 YYSYMBOL_tIMAGINARY = 62, /* "imaginary literal" */
2768 YYSYMBOL_tCHAR = 63, /* "char literal" */
2769 YYSYMBOL_tNTH_REF = 64, /* "numbered reference" */
2770 YYSYMBOL_tBACK_REF = 65, /* "back reference" */
2771 YYSYMBOL_tSTRING_CONTENT = 66, /* "literal content" */
2772 YYSYMBOL_tREGEXP_END = 67, /* tREGEXP_END */
2773 YYSYMBOL_tDUMNY_END = 68, /* "dummy end" */
2774 YYSYMBOL_69_ = 69, /* '.
' */
2775 YYSYMBOL_70_backslash_ = 70, /* "backslash" */
2776 YYSYMBOL_tSP = 71, /* "escaped space" */
2777 YYSYMBOL_72_escaped_horizontal_tab_ = 72, /* "escaped horizontal tab" */
2778 YYSYMBOL_73_escaped_form_feed_ = 73, /* "escaped form feed" */
2779 YYSYMBOL_74_escaped_carriage_return_ = 74, /* "escaped carriage return" */
2780 YYSYMBOL_75_escaped_vertical_tab_ = 75, /* "escaped vertical tab" */
2781 YYSYMBOL_tUPLUS = 76, /* "unary+" */
2782 YYSYMBOL_tUMINUS = 77, /* "unary-" */
2783 YYSYMBOL_tPOW = 78, /* "**" */
2784 YYSYMBOL_tCMP = 79, /* "<=>" */
2785 YYSYMBOL_tEQ = 80, /* "==" */
2786 YYSYMBOL_tEQQ = 81, /* "===" */
2787 YYSYMBOL_tNEQ = 82, /* "!=" */
2788 YYSYMBOL_tGEQ = 83, /* ">=" */
2789 YYSYMBOL_tLEQ = 84, /* "<=" */
2790 YYSYMBOL_tANDOP = 85, /* "&&" */
2791 YYSYMBOL_tOROP = 86, /* "||" */
2792 YYSYMBOL_tMATCH = 87, /* "=~" */
2793 YYSYMBOL_tNMATCH = 88, /* "!~" */
2794 YYSYMBOL_tDOT2 = 89, /* ".." */
2795 YYSYMBOL_tDOT3 = 90, /* "..." */
2796 YYSYMBOL_tBDOT2 = 91, /* "(.." */
2797 YYSYMBOL_tBDOT3 = 92, /* "(..." */
2798 YYSYMBOL_tAREF = 93, /* "[]" */
2799 YYSYMBOL_tASET = 94, /* "[]=" */
2800 YYSYMBOL_tLSHFT = 95, /* "<<" */
2801 YYSYMBOL_tRSHFT = 96, /* ">>" */
2802 YYSYMBOL_tANDDOT = 97, /* "&." */
2803 YYSYMBOL_tCOLON2 = 98, /* "::" */
2804 YYSYMBOL_tCOLON3 = 99, /* ":: at EXPR_BEG" */
2805 YYSYMBOL_tOP_ASGN = 100, /* "operator-assignment" */
2806 YYSYMBOL_tASSOC = 101, /* "=>" */
2807 YYSYMBOL_tLPAREN = 102, /* "(" */
2808 YYSYMBOL_tLPAREN_ARG = 103, /* "( arg" */
2809 YYSYMBOL_tLBRACK = 104, /* "[" */
2810 YYSYMBOL_tLBRACE = 105, /* "{" */
2811 YYSYMBOL_tLBRACE_ARG = 106, /* "{ arg" */
2812 YYSYMBOL_tSTAR = 107, /* "*" */
2813 YYSYMBOL_tDSTAR = 108, /* "**arg" */
2814 YYSYMBOL_tAMPER = 109, /* "&" */
2815 YYSYMBOL_tLAMBDA = 110, /* "->" */
2816 YYSYMBOL_tSYMBEG = 111, /* "symbol literal" */
2817 YYSYMBOL_tSTRING_BEG = 112, /* "string literal" */
2818 YYSYMBOL_tXSTRING_BEG = 113, /* "backtick literal" */
2819 YYSYMBOL_tREGEXP_BEG = 114, /* "regexp literal" */
2820 YYSYMBOL_tWORDS_BEG = 115, /* "word list" */
2821 YYSYMBOL_tQWORDS_BEG = 116, /* "verbatim word list" */
2822 YYSYMBOL_tSYMBOLS_BEG = 117, /* "symbol list" */
2823 YYSYMBOL_tQSYMBOLS_BEG = 118, /* "verbatim symbol list" */
2824 YYSYMBOL_tSTRING_END = 119, /* "terminator" */
2825 YYSYMBOL_tSTRING_DEND = 120, /* "'}
'" */
2826 YYSYMBOL_tSTRING_DBEG = 121, /* "'#{
'" */
2827 YYSYMBOL_tSTRING_DVAR = 122, /* tSTRING_DVAR */
2828 YYSYMBOL_tLAMBEG = 123, /* tLAMBEG */
2829 YYSYMBOL_tLABEL_END = 124, /* tLABEL_END */
2830 YYSYMBOL_tIGNORED_NL = 125, /* tIGNORED_NL */
2831 YYSYMBOL_tCOMMENT = 126, /* tCOMMENT */
2832 YYSYMBOL_tEMBDOC_BEG = 127, /* tEMBDOC_BEG */
2833 YYSYMBOL_tEMBDOC = 128, /* tEMBDOC */
2834 YYSYMBOL_tEMBDOC_END = 129, /* tEMBDOC_END */
2835 YYSYMBOL_tHEREDOC_BEG = 130, /* tHEREDOC_BEG */
2836 YYSYMBOL_tHEREDOC_END = 131, /* tHEREDOC_END */
2837 YYSYMBOL_k__END__ = 132, /* k__END__ */
2838 YYSYMBOL_tLOWEST = 133, /* tLOWEST */
2839 YYSYMBOL_134_ = 134, /* '=
' */
2840 YYSYMBOL_135_ = 135, /* '?
' */
2841 YYSYMBOL_136_ = 136, /* ':
' */
2842 YYSYMBOL_137_ = 137, /* '>
' */
2843 YYSYMBOL_138_ = 138, /* '<
' */
2844 YYSYMBOL_139_ = 139, /* '|
' */
2845 YYSYMBOL_140_ = 140, /* '^
' */
2846 YYSYMBOL_141_ = 141, /* '&
' */
2847 YYSYMBOL_142_ = 142, /* '+
' */
2848 YYSYMBOL_143_ = 143, /* '-
' */
2849 YYSYMBOL_144_ = 144, /* '*
' */
2850 YYSYMBOL_145_ = 145, /* '/
' */
2851 YYSYMBOL_146_ = 146, /* '%
' */
2852 YYSYMBOL_tUMINUS_NUM = 147, /* tUMINUS_NUM */
2853 YYSYMBOL_148_ = 148, /* '!
' */
2854 YYSYMBOL_149_ = 149, /* '~
' */
2855 YYSYMBOL_tLAST_TOKEN = 150, /* tLAST_TOKEN */
2856 YYSYMBOL_151_ = 151, /* '{
' */
2857 YYSYMBOL_152_ = 152, /* '}
' */
2858 YYSYMBOL_153_ = 153, /* '[
' */
2859 YYSYMBOL_154_n_ = 154, /* '\n
' */
2860 YYSYMBOL_155_ = 155, /* ',
' */
2861 YYSYMBOL_156_ = 156, /* '`
' */
2862 YYSYMBOL_157_ = 157, /* '(
' */
2863 YYSYMBOL_158_ = 158, /* ')
' */
2864 YYSYMBOL_159_ = 159, /* ']
' */
2865 YYSYMBOL_160_ = 160, /* ';
' */
2866 YYSYMBOL_161_ = 161, /* ' ' */
2867 YYSYMBOL_YYACCEPT = 162, /* $accept */
2868 YYSYMBOL_option_terms = 163, /* option_terms */
2869 YYSYMBOL_compstmt_top_stmts = 164, /* compstmt_top_stmts */
2870 YYSYMBOL_165_1 = 165, /* $@1 */
2871 YYSYMBOL_program = 166, /* program */
2872 YYSYMBOL_top_stmts = 167, /* top_stmts */
2873 YYSYMBOL_top_stmt = 168, /* top_stmt */
2874 YYSYMBOL_block_open = 169, /* block_open */
2875 YYSYMBOL_begin_block = 170, /* begin_block */
2876 YYSYMBOL_compstmt_stmts = 171, /* compstmt_stmts */
2877 YYSYMBOL_172_2 = 172, /* $@2 */
2878 YYSYMBOL_173_3 = 173, /* $@3 */
2879 YYSYMBOL_bodystmt = 174, /* bodystmt */
2880 YYSYMBOL_175_4 = 175, /* $@4 */
2881 YYSYMBOL_stmts = 176, /* stmts */
2882 YYSYMBOL_stmt_or_begin = 177, /* stmt_or_begin */
2883 YYSYMBOL_178_5 = 178, /* $@5 */
2884 YYSYMBOL_allow_exits = 179, /* allow_exits */
2885 YYSYMBOL_k_END = 180, /* k_END */
2886 YYSYMBOL_181_6 = 181, /* $@6 */
2887 YYSYMBOL_stmt = 182, /* stmt */
2888 YYSYMBOL_asgn_mrhs = 183, /* asgn_mrhs */
2889 YYSYMBOL_asgn_command_rhs = 184, /* asgn_command_rhs */
2890 YYSYMBOL_command_asgn = 185, /* command_asgn */
2891 YYSYMBOL_op_asgn_command_rhs = 186, /* op_asgn_command_rhs */
2892 YYSYMBOL_def_endless_method_endless_command = 187, /* def_endless_method_endless_command */
2893 YYSYMBOL_endless_command = 188, /* endless_command */
2894 YYSYMBOL_option__n_ = 189, /* option_'\n
' */
2895 YYSYMBOL_command_rhs = 190, /* command_rhs */
2896 YYSYMBOL_expr = 191, /* expr */
2897 YYSYMBOL_192_7 = 192, /* $@7 */
2898 YYSYMBOL_193_8 = 193, /* $@8 */
2899 YYSYMBOL_def_name = 194, /* def_name */
2900 YYSYMBOL_defn_head = 195, /* defn_head */
2901 YYSYMBOL_196_9 = 196, /* $@9 */
2902 YYSYMBOL_defs_head = 197, /* defs_head */
2903 YYSYMBOL_value_expr_expr = 198, /* value_expr_expr */
2904 YYSYMBOL_expr_value = 199, /* expr_value */
2905 YYSYMBOL_200_10 = 200, /* $@10 */
2906 YYSYMBOL_201_11 = 201, /* $@11 */
2907 YYSYMBOL_expr_value_do = 202, /* expr_value_do */
2908 YYSYMBOL_command_call = 203, /* command_call */
2909 YYSYMBOL_value_expr_command_call = 204, /* value_expr_command_call */
2910 YYSYMBOL_command_call_value = 205, /* command_call_value */
2911 YYSYMBOL_block_command = 206, /* block_command */
2912 YYSYMBOL_cmd_brace_block = 207, /* cmd_brace_block */
2913 YYSYMBOL_fcall = 208, /* fcall */
2914 YYSYMBOL_command = 209, /* command */
2915 YYSYMBOL_mlhs = 210, /* mlhs */
2916 YYSYMBOL_mlhs_inner = 211, /* mlhs_inner */
2917 YYSYMBOL_mlhs_basic = 212, /* mlhs_basic */
2918 YYSYMBOL_mlhs_items_mlhs_item = 213, /* mlhs_items_mlhs_item */
2919 YYSYMBOL_mlhs_item = 214, /* mlhs_item */
2920 YYSYMBOL_mlhs_head = 215, /* mlhs_head */
2921 YYSYMBOL_mlhs_node = 216, /* mlhs_node */
2922 YYSYMBOL_lhs = 217, /* lhs */
2923 YYSYMBOL_cname = 218, /* cname */
2924 YYSYMBOL_cpath = 219, /* cpath */
2925 YYSYMBOL_fname = 220, /* fname */
2926 YYSYMBOL_fitem = 221, /* fitem */
2927 YYSYMBOL_undef_list = 222, /* undef_list */
2928 YYSYMBOL_223_12 = 223, /* $@12 */
2929 YYSYMBOL_op = 224, /* op */
2930 YYSYMBOL_reswords = 225, /* reswords */
2931 YYSYMBOL_asgn_arg_rhs = 226, /* asgn_arg_rhs */
2932 YYSYMBOL_arg = 227, /* arg */
2933 YYSYMBOL_op_asgn_arg_rhs = 228, /* op_asgn_arg_rhs */
2934 YYSYMBOL_range_expr_arg = 229, /* range_expr_arg */
2935 YYSYMBOL_def_endless_method_endless_arg = 230, /* def_endless_method_endless_arg */
2936 YYSYMBOL_ternary = 231, /* ternary */
2937 YYSYMBOL_endless_arg = 232, /* endless_arg */
2938 YYSYMBOL_relop = 233, /* relop */
2939 YYSYMBOL_rel_expr = 234, /* rel_expr */
2940 YYSYMBOL_lex_ctxt = 235, /* lex_ctxt */
2941 YYSYMBOL_begin_defined = 236, /* begin_defined */
2942 YYSYMBOL_after_rescue = 237, /* after_rescue */
2943 YYSYMBOL_value_expr_arg = 238, /* value_expr_arg */
2944 YYSYMBOL_arg_value = 239, /* arg_value */
2945 YYSYMBOL_aref_args = 240, /* aref_args */
2946 YYSYMBOL_arg_rhs = 241, /* arg_rhs */
2947 YYSYMBOL_paren_args = 242, /* paren_args */
2948 YYSYMBOL_opt_paren_args = 243, /* opt_paren_args */
2949 YYSYMBOL_opt_call_args = 244, /* opt_call_args */
2950 YYSYMBOL_value_expr_command = 245, /* value_expr_command */
2951 YYSYMBOL_call_args = 246, /* call_args */
2952 YYSYMBOL_247_13 = 247, /* $@13 */
2953 YYSYMBOL_command_args = 248, /* command_args */
2954 YYSYMBOL_block_arg = 249, /* block_arg */
2955 YYSYMBOL_opt_block_arg = 250, /* opt_block_arg */
2956 YYSYMBOL_args = 251, /* args */
2957 YYSYMBOL_arg_splat = 252, /* arg_splat */
2958 YYSYMBOL_mrhs_arg = 253, /* mrhs_arg */
2959 YYSYMBOL_mrhs = 254, /* mrhs */
2960 YYSYMBOL_primary = 255, /* primary */
2961 YYSYMBOL_256_14 = 256, /* $@14 */
2962 YYSYMBOL_257_15 = 257, /* $@15 */
2963 YYSYMBOL_258_16 = 258, /* @16 */
2964 YYSYMBOL_259_17 = 259, /* @17 */
2965 YYSYMBOL_260_18 = 260, /* $@18 */
2966 YYSYMBOL_261_19 = 261, /* $@19 */
2967 YYSYMBOL_262_20 = 262, /* $@20 */
2968 YYSYMBOL_263_21 = 263, /* $@21 */
2969 YYSYMBOL_264_22 = 264, /* $@22 */
2970 YYSYMBOL_265_23 = 265, /* $@23 */
2971 YYSYMBOL_266_24 = 266, /* $@24 */
2972 YYSYMBOL_value_expr_primary = 267, /* value_expr_primary */
2973 YYSYMBOL_primary_value = 268, /* primary_value */
2974 YYSYMBOL_k_begin = 269, /* k_begin */
2975 YYSYMBOL_k_if = 270, /* k_if */
2976 YYSYMBOL_k_unless = 271, /* k_unless */
2977 YYSYMBOL_k_while = 272, /* k_while */
2978 YYSYMBOL_k_until = 273, /* k_until */
2979 YYSYMBOL_k_case = 274, /* k_case */
2980 YYSYMBOL_k_for = 275, /* k_for */
2981 YYSYMBOL_k_class = 276, /* k_class */
2982 YYSYMBOL_k_module = 277, /* k_module */
2983 YYSYMBOL_k_def = 278, /* k_def */
2984 YYSYMBOL_k_do = 279, /* k_do */
2985 YYSYMBOL_k_do_block = 280, /* k_do_block */
2986 YYSYMBOL_k_rescue = 281, /* k_rescue */
2987 YYSYMBOL_k_ensure = 282, /* k_ensure */
2988 YYSYMBOL_k_when = 283, /* k_when */
2989 YYSYMBOL_k_else = 284, /* k_else */
2990 YYSYMBOL_k_elsif = 285, /* k_elsif */
2991 YYSYMBOL_k_end = 286, /* k_end */
2992 YYSYMBOL_k_return = 287, /* k_return */
2993 YYSYMBOL_k_yield = 288, /* k_yield */
2994 YYSYMBOL_then = 289, /* then */
2995 YYSYMBOL_do = 290, /* do */
2996 YYSYMBOL_if_tail = 291, /* if_tail */
2997 YYSYMBOL_opt_else = 292, /* opt_else */
2998 YYSYMBOL_for_var = 293, /* for_var */
2999 YYSYMBOL_f_marg = 294, /* f_marg */
3000 YYSYMBOL_mlhs_items_f_marg = 295, /* mlhs_items_f_marg */
3001 YYSYMBOL_f_margs = 296, /* f_margs */
3002 YYSYMBOL_f_rest_marg = 297, /* f_rest_marg */
3003 YYSYMBOL_f_any_kwrest = 298, /* f_any_kwrest */
3004 YYSYMBOL_299_25 = 299, /* $@25 */
3005 YYSYMBOL_f_eq = 300, /* f_eq */
3006 YYSYMBOL_f_kw_primary_value = 301, /* f_kw_primary_value */
3007 YYSYMBOL_f_kwarg_primary_value = 302, /* f_kwarg_primary_value */
3008 YYSYMBOL_opt_f_block_arg_none = 303, /* opt_f_block_arg_none */
3009 YYSYMBOL_args_tail_basic_primary_value_none = 304, /* args_tail_basic_primary_value_none */
3010 YYSYMBOL_block_args_tail = 305, /* block_args_tail */
3011 YYSYMBOL_excessed_comma = 306, /* excessed_comma */
3012 YYSYMBOL_f_opt_primary_value = 307, /* f_opt_primary_value */
3013 YYSYMBOL_f_opt_arg_primary_value = 308, /* f_opt_arg_primary_value */
3014 YYSYMBOL_opt_args_tail_block_args_tail_none = 309, /* opt_args_tail_block_args_tail_none */
3015 YYSYMBOL_args_list_primary_value_opt_args_tail_block_args_tail_none = 310, /* args-list_primary_value_opt_args_tail_block_args_tail_none */
3016 YYSYMBOL_block_param = 311, /* block_param */
3017 YYSYMBOL_tail_only_args_block_args_tail = 312, /* tail-only-args_block_args_tail */
3018 YYSYMBOL_opt_block_param_def = 313, /* opt_block_param_def */
3019 YYSYMBOL_block_param_def = 314, /* block_param_def */
3020 YYSYMBOL_opt_block_param = 315, /* opt_block_param */
3021 YYSYMBOL_opt_bv_decl = 316, /* opt_bv_decl */
3022 YYSYMBOL_bv_decls = 317, /* bv_decls */
3023 YYSYMBOL_bvar = 318, /* bvar */
3024 YYSYMBOL_max_numparam = 319, /* max_numparam */
3025 YYSYMBOL_numparam = 320, /* numparam */
3026 YYSYMBOL_it_id = 321, /* it_id */
3027 YYSYMBOL_322_26 = 322, /* @26 */
3028 YYSYMBOL_323_27 = 323, /* $@27 */
3029 YYSYMBOL_lambda = 324, /* lambda */
3030 YYSYMBOL_f_larglist = 325, /* f_larglist */
3031 YYSYMBOL_lambda_body = 326, /* lambda_body */
3032 YYSYMBOL_327_28 = 327, /* $@28 */
3033 YYSYMBOL_do_block = 328, /* do_block */
3034 YYSYMBOL_block_call = 329, /* block_call */
3035 YYSYMBOL_method_call = 330, /* method_call */
3036 YYSYMBOL_brace_block = 331, /* brace_block */
3037 YYSYMBOL_332_29 = 332, /* @29 */
3038 YYSYMBOL_brace_body = 333, /* brace_body */
3039 YYSYMBOL_334_30 = 334, /* @30 */
3040 YYSYMBOL_do_body = 335, /* do_body */
3041 YYSYMBOL_case_args = 336, /* case_args */
3042 YYSYMBOL_case_body = 337, /* case_body */
3043 YYSYMBOL_cases = 338, /* cases */
3044 YYSYMBOL_p_pvtbl = 339, /* p_pvtbl */
3045 YYSYMBOL_p_pktbl = 340, /* p_pktbl */
3046 YYSYMBOL_p_in_kwarg = 341, /* p_in_kwarg */
3047 YYSYMBOL_342_31 = 342, /* $@31 */
3048 YYSYMBOL_p_case_body = 343, /* p_case_body */
3049 YYSYMBOL_p_cases = 344, /* p_cases */
3050 YYSYMBOL_p_top_expr = 345, /* p_top_expr */
3051 YYSYMBOL_p_top_expr_body = 346, /* p_top_expr_body */
3052 YYSYMBOL_p_expr = 347, /* p_expr */
3053 YYSYMBOL_p_as = 348, /* p_as */
3054 YYSYMBOL_349_32 = 349, /* $@32 */
3055 YYSYMBOL_p_alt = 350, /* p_alt */
3056 YYSYMBOL_p_lparen = 351, /* p_lparen */
3057 YYSYMBOL_p_lbracket = 352, /* p_lbracket */
3058 YYSYMBOL_p_expr_basic = 353, /* p_expr_basic */
3059 YYSYMBOL_354_33 = 354, /* $@33 */
3060 YYSYMBOL_p_args = 355, /* p_args */
3061 YYSYMBOL_p_args_head = 356, /* p_args_head */
3062 YYSYMBOL_p_args_tail = 357, /* p_args_tail */
3063 YYSYMBOL_p_find = 358, /* p_find */
3064 YYSYMBOL_p_rest = 359, /* p_rest */
3065 YYSYMBOL_p_args_post = 360, /* p_args_post */
3066 YYSYMBOL_p_arg = 361, /* p_arg */
3067 YYSYMBOL_p_kwargs = 362, /* p_kwargs */
3068 YYSYMBOL_p_kwarg = 363, /* p_kwarg */
3069 YYSYMBOL_p_kw = 364, /* p_kw */
3070 YYSYMBOL_p_kw_label = 365, /* p_kw_label */
3071 YYSYMBOL_p_kwrest = 366, /* p_kwrest */
3072 YYSYMBOL_p_kwnorest = 367, /* p_kwnorest */
3073 YYSYMBOL_p_any_kwrest = 368, /* p_any_kwrest */
3074 YYSYMBOL_p_value = 369, /* p_value */
3075 YYSYMBOL_range_expr_p_primitive = 370, /* range_expr_p_primitive */
3076 YYSYMBOL_p_primitive = 371, /* p_primitive */
3077 YYSYMBOL_p_variable = 372, /* p_variable */
3078 YYSYMBOL_p_var_ref = 373, /* p_var_ref */
3079 YYSYMBOL_p_expr_ref = 374, /* p_expr_ref */
3080 YYSYMBOL_p_const = 375, /* p_const */
3081 YYSYMBOL_opt_rescue = 376, /* opt_rescue */
3082 YYSYMBOL_exc_list = 377, /* exc_list */
3083 YYSYMBOL_exc_var = 378, /* exc_var */
3084 YYSYMBOL_opt_ensure = 379, /* opt_ensure */
3085 YYSYMBOL_literal = 380, /* literal */
3086 YYSYMBOL_strings = 381, /* strings */
3087 YYSYMBOL_string = 382, /* string */
3088 YYSYMBOL_string1 = 383, /* string1 */
3089 YYSYMBOL_xstring = 384, /* xstring */
3090 YYSYMBOL_regexp = 385, /* regexp */
3091 YYSYMBOL_nonempty_list__ = 386, /* nonempty_list_' ' */
3092 YYSYMBOL_words_tWORDS_BEG_word_list = 387, /* words_tWORDS_BEG_word_list */
3093 YYSYMBOL_words = 388, /* words */
3094 YYSYMBOL_word_list = 389, /* word_list */
3095 YYSYMBOL_word = 390, /* word */
3096 YYSYMBOL_words_tSYMBOLS_BEG_symbol_list = 391, /* words_tSYMBOLS_BEG_symbol_list */
3097 YYSYMBOL_symbols = 392, /* symbols */
3098 YYSYMBOL_symbol_list = 393, /* symbol_list */
3099 YYSYMBOL_words_tQWORDS_BEG_qword_list = 394, /* words_tQWORDS_BEG_qword_list */
3100 YYSYMBOL_qwords = 395, /* qwords */
3101 YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list = 396, /* words_tQSYMBOLS_BEG_qsym_list */
3102 YYSYMBOL_qsymbols = 397, /* qsymbols */
3103 YYSYMBOL_qword_list = 398, /* qword_list */
3104 YYSYMBOL_qsym_list = 399, /* qsym_list */
3105 YYSYMBOL_string_contents = 400, /* string_contents */
3106 YYSYMBOL_xstring_contents = 401, /* xstring_contents */
3107 YYSYMBOL_regexp_contents = 402, /* regexp_contents */
3108 YYSYMBOL_string_content = 403, /* string_content */
3109 YYSYMBOL_404_34 = 404, /* @34 */
3110 YYSYMBOL_405_35 = 405, /* @35 */
3111 YYSYMBOL_406_36 = 406, /* @36 */
3112 YYSYMBOL_407_37 = 407, /* @37 */
3113 YYSYMBOL_408_38 = 408, /* @38 */
3114 YYSYMBOL_string_dend = 409, /* string_dend */
3115 YYSYMBOL_string_dvar = 410, /* string_dvar */
3116 YYSYMBOL_symbol = 411, /* symbol */
3117 YYSYMBOL_ssym = 412, /* ssym */
3118 YYSYMBOL_sym = 413, /* sym */
3119 YYSYMBOL_dsym = 414, /* dsym */
3120 YYSYMBOL_numeric = 415, /* numeric */
3121 YYSYMBOL_simple_numeric = 416, /* simple_numeric */
3122 YYSYMBOL_nonlocal_var = 417, /* nonlocal_var */
3123 YYSYMBOL_user_variable = 418, /* user_variable */
3124 YYSYMBOL_keyword_variable = 419, /* keyword_variable */
3125 YYSYMBOL_var_ref = 420, /* var_ref */
3126 YYSYMBOL_var_lhs = 421, /* var_lhs */
3127 YYSYMBOL_backref = 422, /* backref */
3128 YYSYMBOL_423_39 = 423, /* $@39 */
3129 YYSYMBOL_superclass = 424, /* superclass */
3130 YYSYMBOL_f_opt_paren_args = 425, /* f_opt_paren_args */
3131 YYSYMBOL_f_empty_arg = 426, /* f_empty_arg */
3132 YYSYMBOL_f_paren_args = 427, /* f_paren_args */
3133 YYSYMBOL_f_arglist = 428, /* f_arglist */
3134 YYSYMBOL_429_40 = 429, /* @40 */
3135 YYSYMBOL_f_kw_arg_value = 430, /* f_kw_arg_value */
3136 YYSYMBOL_f_kwarg_arg_value = 431, /* f_kwarg_arg_value */
3137 YYSYMBOL_opt_f_block_arg_opt_comma = 432, /* opt_f_block_arg_opt_comma */
3138 YYSYMBOL_args_tail_basic_arg_value_opt_comma = 433, /* args_tail_basic_arg_value_opt_comma */
3139 YYSYMBOL_args_tail = 434, /* args_tail */
3140 YYSYMBOL_args_tail_basic_arg_value_none = 435, /* args_tail_basic_arg_value_none */
3141 YYSYMBOL_largs_tail = 436, /* largs_tail */
3142 YYSYMBOL_f_opt_arg_value = 437, /* f_opt_arg_value */
3143 YYSYMBOL_f_opt_arg_arg_value = 438, /* f_opt_arg_arg_value */
3144 YYSYMBOL_opt_args_tail_args_tail_opt_comma = 439, /* opt_args_tail_args_tail_opt_comma */
3145 YYSYMBOL_args_list_arg_value_opt_args_tail_args_tail_opt_comma = 440, /* args-list_arg_value_opt_args_tail_args_tail_opt_comma */
3146 YYSYMBOL_f_args_list_args_tail_opt_comma = 441, /* f_args-list_args_tail_opt_comma */
3147 YYSYMBOL_tail_only_args_args_tail = 442, /* tail-only-args_args_tail */
3148 YYSYMBOL_f_args = 443, /* f_args */
3149 YYSYMBOL_opt_args_tail_largs_tail_none = 444, /* opt_args_tail_largs_tail_none */
3150 YYSYMBOL_args_list_arg_value_opt_args_tail_largs_tail_none = 445, /* args-list_arg_value_opt_args_tail_largs_tail_none */
3151 YYSYMBOL_f_args_list_largs_tail_none = 446, /* f_args-list_largs_tail_none */
3152 YYSYMBOL_tail_only_args_largs_tail = 447, /* tail-only-args_largs_tail */
3153 YYSYMBOL_f_largs = 448, /* f_largs */
3154 YYSYMBOL_args_forward = 449, /* args_forward */
3155 YYSYMBOL_f_bad_arg = 450, /* f_bad_arg */
3156 YYSYMBOL_f_norm_arg = 451, /* f_norm_arg */
3157 YYSYMBOL_f_arg_asgn = 452, /* f_arg_asgn */
3158 YYSYMBOL_f_arg_item = 453, /* f_arg_item */
3159 YYSYMBOL_f_arg = 454, /* f_arg */
3160 YYSYMBOL_f_label = 455, /* f_label */
3161 YYSYMBOL_kwrest_mark = 456, /* kwrest_mark */
3162 YYSYMBOL_f_no_kwarg = 457, /* f_no_kwarg */
3163 YYSYMBOL_f_kwrest = 458, /* f_kwrest */
3164 YYSYMBOL_restarg_mark = 459, /* restarg_mark */
3165 YYSYMBOL_f_rest_arg = 460, /* f_rest_arg */
3166 YYSYMBOL_blkarg_mark = 461, /* blkarg_mark */
3167 YYSYMBOL_f_block_arg = 462, /* f_block_arg */
3168 YYSYMBOL_option__ = 463, /* option_',
' */
3169 YYSYMBOL_opt_comma = 464, /* opt_comma */
3170 YYSYMBOL_value_expr_singleton_expr = 465, /* value_expr_singleton_expr */
3171 YYSYMBOL_singleton = 466, /* singleton */
3172 YYSYMBOL_singleton_expr = 467, /* singleton_expr */
3173 YYSYMBOL_468_41 = 468, /* $@41 */
3174 YYSYMBOL_assoc_list = 469, /* assoc_list */
3175 YYSYMBOL_assocs = 470, /* assocs */
3176 YYSYMBOL_assoc = 471, /* assoc */
3177 YYSYMBOL_operation2 = 472, /* operation2 */
3178 YYSYMBOL_operation3 = 473, /* operation3 */
3179 YYSYMBOL_dot_or_colon = 474, /* dot_or_colon */
3180 YYSYMBOL_call_op = 475, /* call_op */
3181 YYSYMBOL_call_op2 = 476, /* call_op2 */
3182 YYSYMBOL_rparen = 477, /* rparen */
3183 YYSYMBOL_rbracket = 478, /* rbracket */
3184 YYSYMBOL_rbrace = 479, /* rbrace */
3185 YYSYMBOL_trailer = 480, /* trailer */
3186 YYSYMBOL_term = 481, /* term */
3187 YYSYMBOL_terms = 482, /* terms */
3188 YYSYMBOL_none = 483 /* none */
3190typedef enum yysymbol_kind_t yysymbol_kind_t;
3199/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
3200 <limits.h> and (if available) <stdint.h> are included
3201 so that the code can choose integer types of a good width. */
3203#ifndef __PTRDIFF_MAX__
3204# include <limits.h> /* INFRINGES ON USER NAME SPACE */
3205# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3206# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
3211/* Narrow types that promote to a signed type and that can represent a
3212 signed or unsigned integer of at least N bits. In tables they can
3213 save space and decrease cache pressure. Promoting to a signed type
3214 helps avoid bugs in integer arithmetic. */
3216#ifdef __INT_LEAST8_MAX__
3217typedef __INT_LEAST8_TYPE__ yytype_int8;
3218#elif defined YY_STDINT_H
3219typedef int_least8_t yytype_int8;
3221typedef signed char yytype_int8;
3224#ifdef __INT_LEAST16_MAX__
3225typedef __INT_LEAST16_TYPE__ yytype_int16;
3226#elif defined YY_STDINT_H
3227typedef int_least16_t yytype_int16;
3229typedef short yytype_int16;
3232/* Work around bug in HP-UX 11.23, which defines these macros
3233 incorrectly for preprocessor constants. This workaround can likely
3234 be removed in 2023, as HPE has promised support for HP-UX 11.23
3235 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
3236 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
3238# undef UINT_LEAST8_MAX
3239# undef UINT_LEAST16_MAX
3240# define UINT_LEAST8_MAX 255
3241# define UINT_LEAST16_MAX 65535
3244#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
3245typedef __UINT_LEAST8_TYPE__ yytype_uint8;
3246#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
3247 && UINT_LEAST8_MAX <= INT_MAX)
3248typedef uint_least8_t yytype_uint8;
3249#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
3250typedef unsigned char yytype_uint8;
3252typedef short yytype_uint8;
3255#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
3256typedef __UINT_LEAST16_TYPE__ yytype_uint16;
3257#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
3258 && UINT_LEAST16_MAX <= INT_MAX)
3259typedef uint_least16_t yytype_uint16;
3260#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
3261typedef unsigned short yytype_uint16;
3263typedef int yytype_uint16;
3267# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
3268# define YYPTRDIFF_T __PTRDIFF_TYPE__
3269# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
3270# elif defined PTRDIFF_MAX
3272# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
3274# define YYPTRDIFF_T ptrdiff_t
3275# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
3277# define YYPTRDIFF_T long
3278# define YYPTRDIFF_MAXIMUM LONG_MAX
3283# ifdef __SIZE_TYPE__
3284# define YYSIZE_T __SIZE_TYPE__
3285# elif defined size_t
3286# define YYSIZE_T size_t
3287# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3288# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
3289# define YYSIZE_T size_t
3291# define YYSIZE_T unsigned
3295#define YYSIZE_MAXIMUM \
3296 YY_CAST (YYPTRDIFF_T, \
3297 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
3298 ? YYPTRDIFF_MAXIMUM \
3299 : YY_CAST (YYSIZE_T, -1)))
3301#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
3304/* Stored state numbers (used for stacks). */
3305typedef yytype_int16 yy_state_t;
3307/* State numbers in computations. */
3308typedef int yy_state_fast_t;
3311# if defined YYENABLE_NLS && YYENABLE_NLS
3313# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
3314# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
3318# define YY_(Msgid) Msgid
3323#ifndef YY_ATTRIBUTE_PURE
3324# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
3325# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
3327# define YY_ATTRIBUTE_PURE
3331#ifndef YY_ATTRIBUTE_UNUSED
3332# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
3333# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
3335# define YY_ATTRIBUTE_UNUSED
3339/* Suppress unused-variable warnings by "using" E. */
3340#if ! defined lint || defined __GNUC__
3341# define YY_USE(E) ((void) (E))
3343# define YY_USE(E) /* empty */
3346/* Suppress an incorrect diagnostic about yylval being uninitialized. */
3347#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
3348# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
3349# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3350 _Pragma ("GCC diagnostic push") \
3351 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
3353# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3354 _Pragma ("GCC diagnostic push") \
3355 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
3356 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
3358# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
3359 _Pragma ("GCC diagnostic pop")
3361# define YY_INITIAL_VALUE(Value) Value
3363#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3364# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3365# define YY_IGNORE_MAYBE_UNINITIALIZED_END
3367#ifndef YY_INITIAL_VALUE
3368# define YY_INITIAL_VALUE(Value) /* Nothing. */
3371#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
3372# define YY_IGNORE_USELESS_CAST_BEGIN \
3373 _Pragma ("GCC diagnostic push") \
3374 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
3375# define YY_IGNORE_USELESS_CAST_END \
3376 _Pragma ("GCC diagnostic pop")
3378#ifndef YY_IGNORE_USELESS_CAST_BEGIN
3379# define YY_IGNORE_USELESS_CAST_BEGIN
3380# define YY_IGNORE_USELESS_CAST_END
3384#define YY_ASSERT(E) ((void) (0 && (E)))
3388/* The parser invokes alloca or malloc; define the necessary symbols. */
3390# ifdef YYSTACK_USE_ALLOCA
3391# if YYSTACK_USE_ALLOCA
3393# define YYSTACK_ALLOC __builtin_alloca
3394# elif defined __BUILTIN_VA_ARG_INCR
3395# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
3397# define YYSTACK_ALLOC __alloca
3398# elif defined _MSC_VER
3399# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
3400# define alloca _alloca
3402# define YYSTACK_ALLOC alloca
3403# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
3404# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
3405 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
3406# ifndef EXIT_SUCCESS
3407# define EXIT_SUCCESS 0
3414# ifdef YYSTACK_ALLOC
3415 /* Pacify GCC's
'empty if-body' warning. */
3416# define YYSTACK_FREE(Ptr) do { ; } while (0)
3417# ifndef YYSTACK_ALLOC_MAXIMUM
3422# define YYSTACK_ALLOC_MAXIMUM 4032
3425# define YYSTACK_ALLOC YYMALLOC
3426# define YYSTACK_FREE YYFREE
3427# ifndef YYSTACK_ALLOC_MAXIMUM
3428# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
3430# if (defined __cplusplus && ! defined EXIT_SUCCESS \
3431 && ! ((defined YYMALLOC || defined malloc) \
3432 && (defined YYFREE || defined free)))
3434# ifndef EXIT_SUCCESS
3435# define EXIT_SUCCESS 0
3439# define YYMALLOC malloc
3440# if ! defined malloc && ! defined EXIT_SUCCESS
3441void *malloc (YYSIZE_T);
3446# if ! defined free && ! defined EXIT_SUCCESS
3453#if (! defined yyoverflow \
3454 && (! defined __cplusplus \
3455 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
3456 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
3461 yy_state_t yyss_alloc;
3467# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
3471# define YYSTACK_BYTES(N) \
3472 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
3473 + YYSIZEOF (YYLTYPE)) \
3474 + 2 * YYSTACK_GAP_MAXIMUM)
3476# define YYCOPY_NEEDED 1
3483# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
3486 YYPTRDIFF_T yynewbytes; \
3487 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
3488 Stack = &yyptr->Stack_alloc; \
3489 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
3490 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
3496#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
3500# if defined __GNUC__ && 1 < __GNUC__
3501# define YYCOPY(Dst, Src, Count) \
3502 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
3504# define YYCOPY(Dst, Src, Count) \
3508 for (yyi = 0; yyi < (Count); yyi++) \
3509 (Dst)[yyi] = (Src)[yyi]; \
3522#define YYNTOKENS 162
3528#define YYNSTATES 1442
3531#define YYMAXUTOK 361
3536#define YYTRANSLATE(YYX) \
3537 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
3538 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
3543static const yytype_uint8 yytranslate[] =
3545 0, 2, 2, 2, 2, 2, 2, 2, 2, 72,
3546 154, 75, 73, 74, 2, 2, 2, 2, 2, 2,
3547 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3548 2, 2, 161, 148, 2, 2, 2, 146, 141, 2,
3549 157, 158, 144, 142, 155, 143, 69, 145, 2, 2,
3550 2, 2, 2, 2, 2, 2, 2, 2, 136, 160,
3551 138, 134, 137, 135, 2, 2, 2, 2, 2, 2,
3552 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3553 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3554 2, 153, 70, 159, 140, 2, 156, 2, 2, 2,
3555 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3556 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3557 2, 2, 2, 151, 139, 152, 149, 2, 89, 90,
3558 91, 92, 76, 77, 78, 79, 95, 96, 84, 83,
3559 80, 81, 82, 87, 88, 93, 94, 98, 85, 86,
3560 97, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3561 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3562 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3563 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3564 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3565 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3566 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3567 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3568 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3569 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3570 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
3571 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3572 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
3573 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
3574 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
3575 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
3576 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
3577 65, 66, 67, 68, 71, 99, 100, 101, 102, 103,
3578 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
3579 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
3580 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
3586static const yytype_int16 yyrline[] =
3588 0, 3182, 3176, 3182, 3182, 3182, 3182, 3202, 3207, 3212,
3589 3219, 3224, 3231, 3233, 3251, 3247, 3252, 3251, 3263, 3260,
3590 3273, 3278, 3283, 3290, 3292, 3291, 3301, 3303, 3313, 3313,
3591 3318, 3323, 3331, 3340, 3347, 3353, 3359, 3370, 3381, 3390,
3592 3402, 3403, 3408, 3408, 3409, 3420, 3425, 3426, 3433, 3433,
3593 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3434, 3435,
3594 3435, 3435, 3438, 3439, 3445, 3445, 3445, 3452, 3453, 3460,
3595 3463, 3464, 3469, 3474, 3479, 3485, 3484, 3500, 3499, 3514,
3596 3517, 3528, 3538, 3537, 3551, 3551, 3552, 3558, 3558, 3558,
3597 3565, 3566, 3569, 3569, 3572, 3573, 3580, 3588, 3588, 3588,
3598 3595, 3602, 3611, 3616, 3621, 3626, 3631, 3637, 3643, 3649,
3599 3654, 3661, 3670, 3671, 3678, 3679, 3686, 3691, 3696, 3701,
3600 3701, 3701, 3706, 3711, 3716, 3721, 3726, 3731, 3738, 3739,
3601 3746, 3751, 3759, 3759, 3764, 3769, 3769, 3775, 3780, 3785,
3602 3790, 3798, 3798, 3803, 3808, 3808, 3813, 3818, 3823, 3828,
3603 3836, 3844, 3847, 3852, 3857, 3864, 3864, 3864, 3865, 3870,
3604 3873, 3878, 3881, 3886, 3886, 3894, 3895, 3896, 3897, 3898,
3605 3899, 3900, 3901, 3902, 3903, 3904, 3905, 3906, 3907, 3908,
3606 3909, 3910, 3911, 3912, 3913, 3914, 3915, 3916, 3917, 3918,
3607 3919, 3920, 3921, 3922, 3923, 3926, 3926, 3926, 3927, 3927,
3608 3928, 3928, 3928, 3929, 3929, 3929, 3929, 3930, 3930, 3930,
3609 3930, 3931, 3931, 3931, 3932, 3932, 3932, 3932, 3933, 3933,
3610 3933, 3933, 3934, 3934, 3934, 3934, 3935, 3935, 3935, 3935,
3611 3936, 3936, 3936, 3936, 3937, 3937, 3940, 3940, 3941, 3941,
3612 3941, 3941, 3941, 3941, 3941, 3941, 3941, 3942, 3942, 3942,
3613 3942, 3942, 3942, 3942, 3943, 3948, 3953, 3958, 3963, 3968,
3614 3973, 3978, 3983, 3988, 3993, 3998, 4003, 4008, 4009, 4014,
3615 4019, 4024, 4029, 4034, 4039, 4044, 4049, 4054, 4059, 4064,
3616 4071, 4071, 4071, 4072, 4073, 4076, 4085, 4086, 4092, 4099,
3617 4100, 4101, 4102, 4105, 4110, 4118, 4124, 4131, 4138, 4138,
3618 4141, 4142, 4143, 4148, 4155, 4160, 4169, 4174, 4184, 4196,
3619 4197, 4203, 4204, 4205, 4206, 4211, 4218, 4218, 4223, 4228,
3620 4233, 4239, 4245, 4249, 4249, 4287, 4292, 4300, 4305, 4313,
3621 4318, 4323, 4328, 4336, 4341, 4350, 4351, 4355, 4360, 4365,
3622 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4383, 4384, 4385,
3623 4386, 4392, 4391, 4404, 4404, 4410, 4416, 4421, 4426, 4431,
3624 4437, 4442, 4447, 4452, 4457, 4464, 4469, 4474, 4479, 4480,
3625 4486, 4488, 4500, 4509, 4518, 4527, 4526, 4541, 4540, 4553,
3626 4561, 4561, 4562, 4606, 4605, 4628, 4627, 4647, 4646, 4665,
3627 4663, 4680, 4678, 4693, 4698, 4703, 4708, 4723, 4723, 4726,
3628 4733, 4751, 4758, 4766, 4774, 4781, 4789, 4798, 4807, 4815,
3629 4822, 4829, 4837, 4844, 4850, 4865, 4872, 4877, 4883, 4890,
3630 4897, 4898, 4899, 4902, 4903, 4906, 4908, 4917, 4918, 4925,
3631 4926, 4929, 4934, 4942, 4942, 4942, 4947, 4952, 4957, 4962,
3632 4969, 4975, 4982, 4983, 4990, 4990, 4992, 4992, 4992, 4992,
3633 4992, 4992, 4992, 4992, 4992, 4992, 4992, 4995, 5003, 5003,
3634 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003, 5003,
3635 5003, 5003, 5003, 5003, 5003, 5003, 5004, 5010, 5015, 5015,
3636 5018, 5019, 5025, 5035, 5039, 5042, 5047, 5054, 5056, 5060,
3637 5065, 5068, 5074, 5079, 5086, 5092, 5085, 5119, 5126, 5135,
3638 5142, 5141, 5152, 5160, 5166, 5176, 5182, 5187, 5195, 5202,
3639 5213, 5219, 5224, 5230, 5240, 5245, 5253, 5259, 5267, 5269,
3640 5284, 5284, 5305, 5311, 5316, 5322, 5330, 5339, 5340, 5343,
3641 5344, 5346, 5359, 5366, 5374, 5375, 5378, 5379, 5385, 5393,
3642 5394, 5400, 5406, 5411, 5416, 5423, 5426, 5433, 5437, 5436,
3643 5449, 5452, 5459, 5466, 5467, 5468, 5475, 5482, 5489, 5495,
3644 5502, 5509, 5516, 5522, 5527, 5532, 5539, 5538, 5549, 5555,
3645 5563, 5569, 5574, 5579, 5584, 5589, 5592, 5593, 5600, 5605,
3646 5612, 5620, 5626, 5633, 5634, 5641, 5648, 5653, 5658, 5663,
3647 5670, 5672, 5679, 5685, 5697, 5698, 5713, 5718, 5725, 5731,
3648 5732, 5739, 5740, 5740, 5740, 5740, 5740, 5740, 5740, 5741,
3649 5742, 5743, 5746, 5746, 5746, 5746, 5746, 5746, 5746, 5746,
3650 5747, 5752, 5755, 5763, 5775, 5782, 5789, 5794, 5799, 5807,
3651 5827, 5830, 5835, 5839, 5842, 5847, 5850, 5857, 5860, 5861,
3652 5864, 5876, 5877, 5878, 5885, 5898, 5910, 5917, 5917, 5917,
3653 5917, 5921, 5925, 5932, 5934, 5941, 5941, 5945, 5949, 5956,
3654 5956, 5959, 5959, 5963, 5967, 5975, 5979, 5987, 5991, 5999,
3655 6003, 6011, 6015, 6041, 6044, 6043, 6058, 6066, 6070, 6074,
3656 6078, 6094, 6095, 6098, 6103, 6106, 6107, 6110, 6126, 6127,
3657 6130, 6138, 6139, 6147, 6148, 6149, 6150, 6153, 6154, 6155,
3658 6158, 6158, 6159, 6162, 6163, 6164, 6165, 6166, 6167, 6168,
3659 6171, 6181, 6188, 6188, 6195, 6196, 6200, 6199, 6209, 6212,
3660 6213, 6220, 6227, 6237, 6238, 6238, 6255, 6255, 6255, 6255,
3661 6255, 6255, 6255, 6255, 6255, 6255, 6255, 6256, 6265, 6265,
3662 6265, 6265, 6265, 6266, 6357, 6357, 6357, 6357, 6357, 6357,
3663 6357, 6357, 6357, 6357, 6357, 6357, 6357, 6357, 6357, 6357,
3664 6357, 6357, 6357, 6357, 6357, 6357, 6357, 6360, 6360, 6360,
3665 6360, 6360, 6360, 6360, 6360, 6360, 6360, 6360, 6360, 6360,
3666 6360, 6360, 6360, 6360, 6360, 6360, 6360, 6363, 6370, 6379,
3667 6388, 6397, 6408, 6409, 6419, 6426, 6431, 6450, 6452, 6463,
3668 6483, 6484, 6487, 6493, 6499, 6507, 6508, 6511, 6517, 6525,
3669 6526, 6529, 6535, 6540, 6548, 6548, 6548, 6556, 6556, 6586,
3670 6588, 6587, 6600, 6601, 6608, 6610, 6633, 6638, 6643, 6650,
3671 6656, 6661, 6674, 6674, 6674, 6675, 6678, 6679, 6680, 6683,
3672 6684, 6687, 6688, 6691, 6692, 6695, 6698, 6701, 6704, 6705,
3673 6708, 6716, 6723, 6724, 6728
3678#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
3683static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
3687static const char *
const yytname[] =
3689 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"'class'\"",
3690 "\"'module'\"",
"\"'def'\"",
"\"'undef'\"",
"\"'begin'\"",
3691 "\"'rescue'\"",
"\"'ensure'\"",
"\"'end'\"",
"\"'if'\"",
"\"'unless'\"",
3692 "\"'then'\"",
"\"'elsif'\"",
"\"'else'\"",
"\"'case'\"",
"\"'when'\"",
3693 "\"'while'\"",
"\"'until'\"",
"\"'for'\"",
"\"'break'\"",
"\"'next'\"",
3694 "\"'redo'\"",
"\"'retry'\"",
"\"'in'\"",
"\"'do'\"",
3695 "\"'do' for condition\"",
"\"'do' for block\"",
"\"'do' for lambda\"",
3696 "\"'return'\"",
"\"'yield'\"",
"\"'super'\"",
"\"'self'\"",
"\"'nil'\"",
3697 "\"'true'\"",
"\"'false'\"",
"\"'and'\"",
"\"'or'\"",
"\"'not'\"",
3698 "\"'if' modifier\"",
"\"'unless' modifier\"",
"\"'while' modifier\"",
3699 "\"'until' modifier\"",
"\"'rescue' modifier\"",
"\"'alias'\"",
3700 "\"'defined?'\"",
"\"'BEGIN'\"",
"\"'END'\"",
"\"'__LINE__'\"",
3701 "\"'__FILE__'\"",
"\"'__ENCODING__'\"",
"\"local variable or method\"",
3702 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
3703 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
3704 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
3705 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
3706 "\"literal content\"",
"tREGEXP_END",
"\"dummy end\"",
"'.'",
3707 "\"backslash\"",
"\"escaped space\"",
"\"escaped horizontal tab\"",
3708 "\"escaped form feed\"",
"\"escaped carriage return\"",
3709 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
3710 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
3711 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
3712 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
3713 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
3714 "\"( arg\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
"\"**arg\"",
3715 "\"&\"",
"\"->\"",
"\"symbol literal\"",
"\"string literal\"",
3716 "\"backtick literal\"",
"\"regexp literal\"",
"\"word list\"",
3717 "\"verbatim word list\"",
"\"symbol list\"",
"\"verbatim symbol list\"",
3718 "\"terminator\"",
"\"'}'\"",
"\"'#{'\"",
"tSTRING_DVAR",
"tLAMBEG",
3719 "tLABEL_END",
"tIGNORED_NL",
"tCOMMENT",
"tEMBDOC_BEG",
"tEMBDOC",
3720 "tEMBDOC_END",
"tHEREDOC_BEG",
"tHEREDOC_END",
"k__END__",
"tLOWEST",
3721 "'='",
"'?'",
"':'",
"'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
3722 "'*'",
"'/'",
"'%'",
"tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
3723 "'}'",
"'['",
"'\\n'",
"','",
"'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
3724 "$accept",
"option_terms",
"compstmt_top_stmts",
"$@1",
"program",
3725 "top_stmts",
"top_stmt",
"block_open",
"begin_block",
"compstmt_stmts",
3726 "$@2",
"$@3",
"bodystmt",
"$@4",
"stmts",
"stmt_or_begin",
"$@5",
3727 "allow_exits",
"k_END",
"$@6",
"stmt",
"asgn_mrhs",
"asgn_command_rhs",
3728 "command_asgn",
"op_asgn_command_rhs",
3729 "def_endless_method_endless_command",
"endless_command",
"option_'\\n'",
3730 "command_rhs",
"expr",
"$@7",
"$@8",
"def_name",
"defn_head",
"$@9",
3731 "defs_head",
"value_expr_expr",
"expr_value",
"$@10",
"$@11",
3732 "expr_value_do",
"command_call",
"value_expr_command_call",
3733 "command_call_value",
"block_command",
"cmd_brace_block",
"fcall",
3734 "command",
"mlhs",
"mlhs_inner",
"mlhs_basic",
"mlhs_items_mlhs_item",
3735 "mlhs_item",
"mlhs_head",
"mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
3736 "fitem",
"undef_list",
"$@12",
"op",
"reswords",
"asgn_arg_rhs",
"arg",
3737 "op_asgn_arg_rhs",
"range_expr_arg",
"def_endless_method_endless_arg",
3738 "ternary",
"endless_arg",
"relop",
"rel_expr",
"lex_ctxt",
3739 "begin_defined",
"after_rescue",
"value_expr_arg",
"arg_value",
3740 "aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
"opt_call_args",
3741 "value_expr_command",
"call_args",
"$@13",
"command_args",
"block_arg",
3742 "opt_block_arg",
"args",
"arg_splat",
"mrhs_arg",
"mrhs",
"primary",
3743 "$@14",
"$@15",
"@16",
"@17",
"$@18",
"$@19",
"$@20",
"$@21",
"$@22",
3744 "$@23",
"$@24",
"value_expr_primary",
"primary_value",
"k_begin",
"k_if",
3745 "k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
3746 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
3747 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"k_yield",
"then",
3748 "do",
"if_tail",
"opt_else",
"for_var",
"f_marg",
"mlhs_items_f_marg",
3749 "f_margs",
"f_rest_marg",
"f_any_kwrest",
"$@25",
"f_eq",
3750 "f_kw_primary_value",
"f_kwarg_primary_value",
"opt_f_block_arg_none",
3751 "args_tail_basic_primary_value_none",
"block_args_tail",
3752 "excessed_comma",
"f_opt_primary_value",
"f_opt_arg_primary_value",
3753 "opt_args_tail_block_args_tail_none",
3754 "args-list_primary_value_opt_args_tail_block_args_tail_none",
3755 "block_param",
"tail-only-args_block_args_tail",
"opt_block_param_def",
3756 "block_param_def",
"opt_block_param",
"opt_bv_decl",
"bv_decls",
"bvar",
3757 "max_numparam",
"numparam",
"it_id",
"@26",
"$@27",
"lambda",
3758 "f_larglist",
"lambda_body",
"$@28",
"do_block",
"block_call",
3759 "method_call",
"brace_block",
"@29",
"brace_body",
"@30",
"do_body",
3760 "case_args",
"case_body",
"cases",
"p_pvtbl",
"p_pktbl",
"p_in_kwarg",
3761 "$@31",
"p_case_body",
"p_cases",
"p_top_expr",
"p_top_expr_body",
3762 "p_expr",
"p_as",
"$@32",
"p_alt",
"p_lparen",
"p_lbracket",
3763 "p_expr_basic",
"$@33",
"p_args",
"p_args_head",
"p_args_tail",
"p_find",
3764 "p_rest",
"p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
3765 "p_kw_label",
"p_kwrest",
"p_kwnorest",
"p_any_kwrest",
"p_value",
3766 "range_expr_p_primitive",
"p_primitive",
"p_variable",
"p_var_ref",
3767 "p_expr_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
3768 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
3769 "regexp",
"nonempty_list_' '",
"words_tWORDS_BEG_word_list",
"words",
3770 "word_list",
"word",
"words_tSYMBOLS_BEG_symbol_list",
"symbols",
3771 "symbol_list",
"words_tQWORDS_BEG_qword_list",
"qwords",
3772 "words_tQSYMBOLS_BEG_qsym_list",
"qsymbols",
"qword_list",
"qsym_list",
3773 "string_contents",
"xstring_contents",
"regexp_contents",
3774 "string_content",
"@34",
"@35",
"@36",
"@37",
"@38",
"string_dend",
3775 "string_dvar",
"symbol",
"ssym",
"sym",
"dsym",
"numeric",
3776 "simple_numeric",
"nonlocal_var",
"user_variable",
"keyword_variable",
3777 "var_ref",
"var_lhs",
"backref",
"$@39",
"superclass",
3778 "f_opt_paren_args",
"f_empty_arg",
"f_paren_args",
"f_arglist",
"@40",
3779 "f_kw_arg_value",
"f_kwarg_arg_value",
"opt_f_block_arg_opt_comma",
3780 "args_tail_basic_arg_value_opt_comma",
"args_tail",
3781 "args_tail_basic_arg_value_none",
"largs_tail",
"f_opt_arg_value",
3782 "f_opt_arg_arg_value",
"opt_args_tail_args_tail_opt_comma",
3783 "args-list_arg_value_opt_args_tail_args_tail_opt_comma",
3784 "f_args-list_args_tail_opt_comma",
"tail-only-args_args_tail",
"f_args",
3785 "opt_args_tail_largs_tail_none",
3786 "args-list_arg_value_opt_args_tail_largs_tail_none",
3787 "f_args-list_largs_tail_none",
"tail-only-args_largs_tail",
"f_largs",
3788 "args_forward",
"f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
"f_arg_item",
3789 "f_arg",
"f_label",
"kwrest_mark",
"f_no_kwarg",
"f_kwrest",
3790 "restarg_mark",
"f_rest_arg",
"blkarg_mark",
"f_block_arg",
"option_','",
3791 "opt_comma",
"value_expr_singleton_expr",
"singleton",
"singleton_expr",
3792 "$@41",
"assoc_list",
"assocs",
"assoc",
"operation2",
"operation3",
3793 "dot_or_colon",
"call_op",
"call_op2",
"rparen",
"rbracket",
"rbrace",
3794 "trailer",
"term",
"terms",
"none", YY_NULLPTR
3798yysymbol_name (yysymbol_kind_t yysymbol)
3800 return yytname[yysymbol];
3804#define YYPACT_NINF (-1208)
3806#define yypact_value_is_default(Yyn) \
3807 ((Yyn) == YYPACT_NINF)
3809#define YYTABLE_NINF (-855)
3811#define yytable_value_is_error(Yyn) \
3812 ((Yyn) == YYTABLE_NINF)
3816static const yytype_int16 yypact[] =
3818 -1208, 6236, 149, -1208, -1208, -1208, -1208, 11007, -1208, -1208,
3819 -1208, -1208, -1208, -1208, -1208, 12062, 12062, -1208, -1208, -1208,
3820 -1208, 7296, -1208, -1208, -1208, -1208, 400, 10853, 8, 33,
3821 -1208, -1208, -1208, -1208, 6672, 7452, -1208, -1208, 6828, -1208,
3822 -1208, -1208, -1208, -1208, -1208, -1208, -1208, 13622, 13622, 13622,
3823 13622, 144, 9766, 9924, 12542, 12782, 11308, -1208, 10699, -1208,
3824 -1208, -1208, 163, 163, 163, 163, 1269, 13742, 13622, -1208,
3825 563, -1208, 33, 1167, -1208, -1208, -1208, -1208, -1208, 824,
3826 35, 35, -1208, -1208, 170, 214, 280, -1208, 62, 14342,
3827 -1208, 323, -1208, 3973, -1208, -1208, -1208, -1208, 720, 61,
3828 -1208, 133, -1208, 11942, 11942, -1208, -1208, 10386, 14460, 14578,
3829 14696, 10544, 12062, 7920, -1208, 805, 102, -1208, -1208, 458,
3830 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3831 -1208, -1208, -1208, -1208, -1208, -1208, -1208, 283, 350, -1208,
3832 374, 418, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3833 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3834 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3835 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3836 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3837 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3838 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3839 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3840 357, -1208, -1208, -1208, -1208, -1208, -1208, 432, 13622, 549,
3841 9924, 13622, 13622, 13622, -1208, 13622, -1208, -1208, 476, 6642,
3842 -1208, 525, -1208, -1208, -1208, 501, -1208, 679, 76, 79,
3843 582, 247, 508, -1208, -1208, 12182, -1208, 12062, -1208, -1208,
3844 11683, 13862, 996, -1208, 546, -1208, 10082, -1208, -1208, -1208,
3845 -1208, -1208, 556, 35, 35, 170, -1208, 713, -1208, 558,
3846 609, 6798, 6798, 601, -1208, 9766, 550, 563, -1208, 1167,
3847 8, 592, -1208, -1208, 584, 770, 785, -1208, 525, 640,
3848 785, -1208, 8, 750, 1269, 14814, 651, 651, 658, -1208,
3849 731, 774, 784, 851, -1208, -1208, 1026, -1208, -1208, 1096,
3850 1136, 540, -1208, 654, 654, 654, 654, 761, -1208, -1208,
3851 -1208, -1208, -1208, -1208, -1208, 6388, 10234, 11942, 11942, 11942,
3852 11942, -1208, 13862, 13862, 1926, 702, -1208, 760, -1208, 1926,
3853 763, -1208, -1208, -1208, -1208, 741, -1208, -1208, -1208, -1208,
3854 -1208, -1208, -1208, 9766, 11426, 744, -1208, -1208, 13622, 13622,
3855 13622, 13622, 13622, -1208, -1208, 13622, 13622, 13622, 13622, 13622,
3856 13622, 13622, 13622, -1208, 13622, -1208, -1208, 13622, 13622, 13622,
3857 13622, 13622, 13622, 13622, 13622, 13622, 13622, -1208, -1208, 4938,
3858 12062, 5402, 556, 8702, -1208, 824, -1208, 110, 110, 11942,
3859 9614, 9614, -1208, 563, 756, 866, -1208, -1208, 869, 908,
3860 81, 108, 122, 936, 1017, 11942, 689, -1208, 808, 895,
3861 -1208, -1208, -1208, -1208, 74, 551, 588, 664, 690, 748,
3862 758, 769, 820, -1208, -1208, -1208, -1208, -1208, 823, -1208,
3863 -1208, 11544, -1208, -1208, -1208, 4515, -1208, -1208, -1208, -1208,
3864 -1208, -1208, 353, -1208, -1208, -1208, 730, -1208, 13622, 12302,
3865 -1208, -1208, 15094, 12062, 15192, -1208, -1208, 12662, -1208, 13622,
3866 8, -1208, 800, 8, 815, -1208, -1208, 822, 189, -1208,
3867 -1208, -1208, -1208, -1208, 11007, -1208, -1208, 13622, 811, 848,
3868 874, 15290, 15192, -1208, 33, 8, -1208, -1208, 5800, 880,
3869 858, -1208, 12542, -1208, -1208, 12782, -1208, -1208, -1208, 546,
3870 903, -1208, 891, -1208, -1208, 14814, 15388, 12062, 15486, -1208,
3871 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3872 -1208, 1156, 72, 1172, 78, 13622, -1208, -1208, 888, -1208,
3873 -1208, -1208, -1208, -1208, 11822, -1208, -1208, -1208, -1208, -1208,
3874 -1208, -1208, -1208, -1208, -1208, 1311, -1208, -1208, -1208, -1208,
3875 -1208, 900, -1208, -1208, -1208, 907, -1208, -1208, -1208, 919,
3876 -1208, -1208, -1208, 8, -1208, -1208, -1208, 942, -1208, 925,
3877 13622, 378, -1208, -1208, 1025, 927, 415, -1208, 13982, 8702,
3878 563, 13982, 8702, -1208, 931, -1208, -1208, -1208, 164, 164,
3879 12902, 8, 14814, 930, -1208, 13022, -1208, 609, 3213, 3213,
3880 3213, 3213, 4601, 3866, 3213, 3213, 6798, 6798, 576, 576,
3881 -1208, 6486, 1128, 1128, 1033, 59, 59, 609, 609, 609,
3882 1055, 1055, 8076, 6984, 8388, 7140, 556, -1208, 8, 933,
3883 675, -1208, 686, -1208, 7608, -1208, -1208, 164, -1208, 8854,
3884 1082, 9310, 89, 164, 164, 1083, 1076, 123, 15584, 12062,
3885 15682, -1208, -1208, -1208, 903, -1208, -1208, -1208, -1208, 15780,
3886 12062, 15878, 8702, 13862, -1208, -1208, -1208, 8, -1208, -1208,
3887 -1208, -1208, 3459, 14102, 14102, 11007, -1208, 13622, 13622, -1208,
3888 525, -1208, -1208, 508, 6516, 7764, 8, 362, 376, 13622,
3889 13622, -1208, -1208, 12422, -1208, 12662, -1208, -1208, -1208, 13862,
3890 6642, -1208, 14222, 14222, 234, 556, 556, 14102, -1208, 56,
3891 -1208, -1208, 785, 14814, 891, 616, 468, 8, 422, 603,
3892 -1208, -1208, 1350, -1208, 367, -1208, 163, -1208, -1208, 367,
3893 163, -1208, 609, -1208, -1208, 1311, 1437, -1208, 950, 8,
3894 954, -1208, 32, -1208, -1208, -1208, 504, -1208, 1926, -1208,
3895 -1208, -1208, 976, 13622, 1926, -1208, -1208, -1208, -1208, -1208,
3896 1944, -1208, -1208, -1208, 400, 1069, -1208, 6642, 1080, 164,
3897 -1208, 1069, 1080, 164, -1208, -1208, 975, -1208, -1208, -1208,
3898 -1208, -1208, 13622, -1208, -1208, -1208, 977, 987, 1087, -1208,
3899 -1208, 891, 14814, 1088, -1208, -1208, 1095, 1035, 3781, -1208,
3900 -1208, -1208, 905, 424, -1208, -1208, 1024, -1208, -1208, -1208,
3901 -1208, 741, 1008, 889, 12302, -1208, -1208, -1208, -1208, 741,
3902 -1208, 1163, -1208, 871, -1208, 1165, -1208, -1208, -1208, -1208,
3903 -1208, -1208, 13142, 164, -1208, 1083, 164, 80, 143, 8,
3904 127, 138, 11942, 563, 11942, 8702, 1068, 468, -1208, 8,
3905 164, 189, 11161, -1208, 102, 214, -1208, 4110, -1208, -1208,
3906 -1208, -1208, 13622, -1208, -1208, -1208, -1208, 496, -1208, -1208,
3907 8, 1028, 189, 400, -1208, -1208, -1208, -1208, 647, -1208,
3908 -1208, -1208, -1208, -1208, 654, -1208, 654, 654, 654, 8,
3909 -1208, 1311, -1208, 1245, -1208, -1208, 1139, 900, -1208, -1208,
3910 1037, 1038, -1208, -1208, 1048, -1208, 1049, -1208, 1037, 13982,
3911 -1208, -1208, -1208, -1208, -1208, -1208, -1208, 1058, 13262, -1208,
3912 891, 497, -1208, -1208, -1208, 15976, 12062, 16074, -1208, -1208,
3913 13622, 14102, 14102, 1062, -1208, -1208, -1208, 14102, 14102, -1208,
3914 -1208, 13382, 1165, -1208, -1208, -1208, 9614, 11942, 164, -1208,
3915 -1208, 164, -1208, 13622, -1208, 274, -1208, -1208, 164, -1208,
3916 150, 89, 8702, 563, 164, -1208, -1208, -1208, -1208, -1208,
3917 -1208, 13622, 13622, -1208, 13622, 13622, -1208, 12662, -1208, 14222,
3918 1388, -1208, -1208, -1208, 1072, 1073, -1208, 1944, -1208, 1944,
3919 -1208, 1926, -1208, 1944, -1208, -1208, 1069, 1080, 13622, 13622,
3920 -1208, -1208, 13622, 1075, 11822, 11822, 14102, 13622, 8232, 8544,
3921 8, 535, 644, 4819, 4819, 6642, -1208, -1208, -1208, -1208,
3922 -1208, 14102, -1208, -1208, -1208, -1208, 977, -1208, 1133, -1208,
3923 1230, -1208, -1208, 110, -1208, -1208, -1208, 13502, 9006, -1208,
3924 -1208, -1208, 164, -1208, -1208, 13622, 1926, 1085, -1208, -1208,
3925 1089, -1208, -1208, 1098, -1208, -1208, -1208, -1208, -1208, 1104,
3926 1106, -1208, 6084, 1245, 1245, 1037, 1037, 1107, 1037, 6642,
3927 6642, 1103, 1103, 1058, -1208, -1208, 6642, 680, -1208, -1208,
3928 -1208, 3155, 3155, 861, -1208, 2296, 304, 1198, -1208, 1260,
3929 -1208, -1208, 39, -1208, 1112, -1208, -1208, -1208, 1108, -1208,
3930 1124, -1208, 5920, -1208, -1208, -1208, -1208, -1208, 898, -1208,
3931 -1208, -1208, 461, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3932 -1208, -1208, 643, -1208, -1208, -1208, 14932, 110, -1208, -1208,
3933 9614, -1208, -1208, 9462, 8854, 13622, -1208, 530, 4819, 9614,
3934 -1208, 8, 32, -1208, -1208, 98, 504, -1208, 1926, -1208,
3935 -1208, 1926, -1208, 1944, -1208, 113, 1073, -1208, -1208, 1944,
3936 -1208, -1208, 1482, 10234, -1208, -1208, 8702, -1208, -1208, -1208,
3937 -1208, 5920, 296, 8, 5570, -1208, 8, 1126, -1208, 1115,
3938 -1208, -1208, -1208, 999, -1208, 11942, -1208, 1233, 5570, -1208,
3939 5920, 995, 1181, 3155, 3155, 861, 213, 611, 4819, 4819,
3940 -1208, 1231, -1208, 917, 165, 185, 253, 8702, 563, -1208,
3941 871, -1208, -1208, -1208, -1208, 110, 984, 164, 1130, 1137,
3942 -1208, -1208, 10234, -1208, 1085, -1208, 1131, 1141, 1149, 1153,
3943 1131, -1208, -1208, -1208, 1037, 1085, -1208, 1155, -1208, -1208,
3944 -1208, 1168, -1208, -1208, -1208, 8, 942, 1170, 15050, 1177,
3945 -1208, -1208, -1208, 262, -1208, 1181, 1179, 1180, -1208, -1208,
3946 -1208, -1208, -1208, 8, -1208, -1208, 1184, 5920, 1187, -1208,
3947 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3948 8, 8, 8, 8, 8, 8, 319, 16172, 12062, 16270,
3949 1163, -1208, 1230, -1208, -1208, 11942, 11942, -1208, 1447, -1208,
3950 8702, 1166, -1208, 1944, -1208, 1944, -1208, 1926, -1208, 1944,
3951 -1208, -1208, -1208, -1208, 504, -1208, 1482, -1208, -1208, 1183,
3952 15050, 1482, -1208, -1208, 1280, 922, 1559, -1208, -1208, 5920,
3953 -1208, 995, -1208, 5920, -1208, 5570, 101, -1208, -1208, -1208,
3954 -1208, -1208, -1208, 153, 288, 8, 346, 375, -1208, -1208,
3955 9158, -1208, -1208, -1208, 877, -1208, -1208, 164, -1208, 1131,
3956 1131, 1191, 1131, -1208, 1085, -1208, -1208, 1195, 1196, -1208,
3957 922, 1199, 1201, -1208, 16368, 1195, 1203, 8, 1203, -1208,
3958 -1208, 427, 445, 1447, -1208, -1208, -1208, -1208, 1944, -1208,
3959 -1208, -1208, 1559, -1208, 1559, -1208, 1482, -1208, 1559, -1208,
3960 1204, 1207, -1208, 5920, -1208, -1208, -1208, -1208, -1208, 1131,
3961 1195, 1195, 1215, 1195, -1208, -1208, -1208, 1559, -1208, -1208,
3968static const yytype_int16 yydefact[] =
3970 2, 0, 0, 47, 406, 407, 408, 0, 399, 400,
3971 401, 404, 26, 26, 26, 393, 394, 395, 396, 418,
3972 419, 323, 704, 703, 705, 706, 64, 0, 64, 0,
3973 854, 708, 707, 709, 97, 99, 698, 697, 98, 699,
3974 693, 694, 695, 696, 641, 714, 715, 0, 0, 0,
3975 0, 0, 0, 0, 854, 854, 126, 494, 667, 667,
3976 669, 671, 0, 0, 0, 0, 0, 0, 0, 6,
3977 3, 8, 0, 10, 43, 49, 40, 58, 61, 46,
3978 724, 724, 70, 91, 323, 90, 0, 112, 0, 116,
3979 128, 0, 237, 79, 246, 253, 282, 283, 267, 284,
3980 398, 0, 351, 0, 0, 87, 87, 0, 0, 0,
3981 0, 0, 360, 323, 370, 94, 368, 340, 341, 640,
3982 642, 342, 343, 650, 344, 656, 346, 660, 345, 662,
3983 347, 639, 685, 686, 638, 691, 702, 710, 711, 348,
3984 0, 349, 7, 1, 205, 216, 206, 229, 202, 222,
3985 212, 211, 232, 233, 227, 210, 209, 204, 230, 234,
3986 235, 214, 203, 217, 221, 223, 215, 208, 224, 231,
3987 226, 225, 218, 228, 213, 201, 220, 219, 200, 207,
3988 198, 199, 195, 196, 197, 155, 157, 156, 190, 191,
3989 186, 168, 169, 170, 177, 174, 176, 171, 172, 192,
3990 193, 178, 179, 183, 187, 173, 175, 165, 166, 167,
3991 180, 181, 182, 184, 185, 188, 189, 194, 160, 162,
3992 33, 158, 159, 161, 402, 403, 405, 0, 828, 0,
3993 0, 334, 831, 326, 667, 0, 318, 316, 0, 298,
3994 299, 329, 317, 110, 322, 854, 330, 0, 710, 711,
3995 0, 349, 854, 824, 111, 854, 513, 0, 107, 65,
3996 64, 0, 0, 28, 854, 12, 0, 11, 27, 295,
3997 393, 394, 514, 724, 724, 0, 261, 0, 360, 363,
3998 262, 251, 252, 357, 24, 0, 0, 3, 21, 23,
3999 64, 114, 20, 353, 0, 64, 64, 300, 0, 0,
4000 64, 822, 64, 0, 0, 0, 724, 724, 124, 397,
4001 0, 132, 133, 140, 491, 688, 0, 687, 689, 0,
4002 0, 0, 647, 651, 663, 657, 665, 692, 74, 273,
4003 274, 851, 850, 5, 852, 0, 0, 0, 0, 0,
4004 0, 854, 0, 0, 721, 0, 720, 723, 389, 721,
4005 0, 391, 409, 518, 508, 100, 520, 367, 410, 520,
4006 503, 854, 130, 0, 122, 117, 854, 77, 0, 0,
4007 0, 0, 0, 291, 292, 0, 0, 0, 0, 249,
4008 250, 0, 0, 75, 0, 289, 290, 0, 0, 0,
4009 0, 0, 0, 0, 0, 0, 0, 841, 842, 844,
4010 854, 843, 0, 0, 86, 84, 85, 0, 0, 0,
4011 0, 0, 377, 3, 4, 0, 430, 429, 0, 0,
4012 710, 711, 349, 150, 151, 0, 0, 153, 854, 0,
4013 710, 711, 349, 387, 225, 218, 228, 213, 195, 196,
4014 197, 155, 156, 820, 81, 80, 819, 818, 0, 817,
4015 109, 64, 108, 844, 843, 0, 369, 643, 854, 854,
4016 163, 827, 357, 333, 830, 325, 0, 854, 0, 0,
4017 319, 328, 844, 854, 843, 854, 854, 0, 320, 787,
4018 64, 312, 854, 64, 854, 311, 324, 0, 64, 366,
4019 73, 30, 32, 31, 0, 854, 296, 0, 0, 0,
4020 0, 844, 843, 854, 0, 64, 355, 14, 0, 113,
4021 0, 358, 849, 848, 301, 849, 303, 359, 823, 0,
4022 139, 692, 127, 119, 723, 0, 844, 854, 843, 492,
4023 673, 690, 676, 674, 668, 644, 645, 670, 646, 672,
4024 648, 0, 0, 0, 0, 0, 853, 9, 0, 34,
4025 35, 36, 37, 297, 0, 71, 72, 793, 790, 789,
4026 788, 791, 799, 800, 787, 0, 806, 801, 810, 809,
4027 805, 814, 802, 765, 728, 814, 736, 763, 745, 814,
4028 761, 766, 764, 64, 737, 792, 794, 795, 797, 814,
4029 727, 804, 443, 442, 808, 814, 813, 735, 0, 0,
4030 0, 0, 0, 491, 0, 518, 101, 491, 0, 0,
4031 0, 64, 0, 118, 131, 0, 531, 259, 266, 268,
4032 269, 270, 277, 278, 271, 272, 247, 248, 275, 276,
4033 531, 64, 263, 264, 265, 254, 255, 256, 257, 258,
4034 293, 294, 832, 834, 833, 835, 323, 511, 64, 854,
4035 832, 834, 833, 835, 323, 512, 854, 0, 421, 0,
4036 420, 0, 0, 0, 0, 0, 375, 357, 844, 854,
4037 843, 380, 385, 150, 151, 152, 716, 383, 718, 844,
4038 854, 843, 0, 0, 839, 840, 82, 64, 362, 832,
4039 833, 507, 323, 0, 0, 0, 854, 0, 0, 826,
4040 331, 327, 332, 854, 832, 833, 64, 832, 833, 0,
4041 0, 825, 306, 313, 308, 315, 845, 365, 29, 0,
4042 279, 13, 0, 0, 356, 0, 854, 0, 25, 115,
4043 22, 354, 64, 0, 125, 836, 138, 64, 832, 833,
4044 493, 677, 0, 649, 0, 653, 0, 659, 655, 0,
4045 0, 661, 260, 39, 38, 0, 441, 433, 435, 64,
4046 438, 431, 815, 734, 816, 731, 815, 733, 815, 757,
4047 748, 722, 0, 0, 815, 762, 726, 598, 803, 807,
4048 815, 759, 812, 811, 64, 59, 62, 286, 280, 0,
4049 725, 60, 281, 0, 492, 516, 0, 492, 416, 417,
4050 517, 502, 334, 92, 93, 41, 336, 0, 45, 335,
4051 129, 123, 0, 0, 69, 48, 67, 0, 304, 329,
4052 236, 42, 0, 349, 529, 529, 0, 854, 854, 518,
4053 510, 104, 0, 515, 313, 854, 854, 310, 509, 102,
4054 309, 854, 352, 854, 422, 854, 424, 88, 423, 373,
4055 374, 413, 0, 0, 531, 0, 0, 836, 356, 64,
4056 832, 833, 0, 0, 0, 0, 150, 151, 154, 64,
4057 0, 64, 0, 361, 504, 95, 50, 304, 238, 57,
4058 245, 164, 0, 829, 321, 854, 854, 515, 854, 854,
4059 64, 854, 64, 64, 56, 244, 302, 120, 515, 26,
4060 678, 675, 683, 684, 652, 654, 664, 658, 666, 64,
4061 440, 0, 796, 0, 730, 729, 804, 814, 747, 746,
4062 814, 814, 445, 744, 814, 798, 814, 795, 814, 0,
4063 854, 854, 390, 392, 493, 96, 493, 339, 0, 854,
4064 121, 357, 854, 854, 854, 844, 854, 843, 530, 530,
4065 0, 0, 0, 0, 105, 846, 854, 0, 0, 103,
4066 411, 854, 18, 630, 415, 414, 0, 0, 0, 425,
4067 427, 0, 89, 0, 522, 0, 378, 529, 0, 379,
4068 515, 0, 0, 0, 0, 515, 388, 821, 83, 505,
4069 506, 0, 0, 854, 0, 0, 307, 314, 364, 0,
4070 721, 679, 432, 434, 436, 439, 732, 815, 758, 815,
4071 755, 815, 751, 815, 753, 760, 66, 288, 0, 0,
4072 26, 26, 334, 337, 0, 0, 0, 0, 832, 833,
4073 64, 832, 833, 0, 0, 285, 54, 242, 55, 243,
4074 106, 0, 52, 240, 53, 241, 631, 632, 854, 633,
4075 854, 15, 428, 0, 371, 372, 523, 0, 0, 530,
4076 376, 381, 0, 717, 384, 0, 721, 854, 495, 785,
4077 854, 742, 783, 854, 781, 786, 784, 498, 743, 854,
4078 854, 741, 0, 0, 0, 814, 814, 814, 814, 63,
4079 287, 854, 854, 338, 44, 68, 305, 515, 622, 628,
4080 594, 0, 0, 0, 530, 64, 530, 582, 667, 0,
4081 621, 78, 539, 545, 547, 550, 543, 542, 578, 544,
4082 587, 590, 593, 599, 600, 589, 553, 608, 601, 554,
4083 609, 610, 611, 612, 613, 614, 615, 616, 618, 617,
4084 619, 620, 597, 76, 51, 239, 0, 0, 635, 412,
4085 0, 19, 637, 0, 0, 0, 524, 854, 0, 0,
4086 386, 64, 0, 740, 451, 0, 0, 739, 0, 777,
4087 768, 0, 782, 0, 779, 0, 437, 756, 752, 815,
4088 749, 754, 483, 0, 481, 480, 0, 606, 607, 151,
4089 626, 0, 570, 64, 571, 575, 64, 0, 565, 0,
4090 854, 568, 581, 0, 623, 0, 624, 0, 540, 548,
4091 0, 588, 592, 604, 605, 0, 530, 530, 0, 0,
4092 596, 0, 634, 0, 710, 711, 349, 0, 3, 16,
4093 854, 525, 527, 528, 526, 0, 536, 0, 485, 0,
4094 450, 500, 0, 496, 854, 767, 854, 854, 854, 854,
4095 854, 682, 681, 680, 814, 854, 448, 854, 456, 478,
4096 459, 854, 475, 484, 479, 64, 795, 854, 447, 854,
4097 455, 519, 521, 64, 563, 585, 573, 572, 564, 576,
4098 847, 566, 595, 64, 546, 541, 578, 0, 579, 583,
4099 667, 591, 586, 602, 603, 627, 552, 562, 551, 558,
4100 64, 64, 64, 64, 64, 64, 357, 844, 854, 843,
4101 854, 636, 854, 426, 532, 0, 0, 382, 0, 497,
4102 0, 0, 738, 0, 778, 0, 775, 0, 771, 0,
4103 773, 780, 750, 454, 0, 453, 0, 471, 462, 0,
4104 0, 457, 476, 477, 0, 446, 0, 473, 569, 0,
4105 577, 0, 625, 0, 549, 0, 0, 555, 556, 557,
4106 559, 560, 561, 836, 356, 64, 832, 833, 629, 17,
4107 0, 537, 538, 489, 64, 487, 490, 0, 499, 854,
4108 854, 854, 854, 449, 854, 461, 460, 854, 854, 482,
4109 458, 854, 854, 357, 844, 854, 574, 64, 579, 580,
4110 584, 515, 854, 0, 486, 501, 776, 772, 0, 769,
4111 774, 452, 0, 472, 0, 469, 0, 465, 0, 467,
4112 836, 356, 474, 0, 567, 534, 535, 533, 488, 854,
4113 854, 854, 854, 854, 770, 470, 466, 0, 463, 468,
4118static const yytype_int16 yypgoto[] =
4120 -1208, -98, 1110, -1208, -1208, -1208, 1018, 1301, 870, -37,
4121 -1208, -1208, -557, -1208, 227, 876, -1208, 16, -1208, -1208,
4122 17, -1208, -1208, -133, -1208, -5, -553, 159, -51, 11,
4123 -1208, -1208, 510, 3119, -1208, 3492, -1208, -79, -1208, -1208,
4124 1279, -47, -1208, 778, -1208, -447, 1566, -10, 1281, -151,
4125 48, -442, -17, -1208, 25, 4179, -399, 1285, -46, 10,
4126 -1208, -1208, -3, -1208, -1208, 5056, -1208, -1208, -1208, -1208,
4127 -535, 1294, -1208, 141, 904, 242, -1208, 1282, -1208, 885,
4128 42, 710, -374, -1208, 104, -1208, -27, -395, -217, 24,
4129 -411, -1208, -568, -48, -1208, -1208, -1208, -1208, -1208, -1208,
4130 -1208, -1208, -1208, -1208, -1208, -1208, 1344, -1208, -1208, -1208,
4131 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
4132 -1208, -1208, 441, -1208, -278, 2216, 2729, -401, 425, 178,
4133 -799, -1208, -838, -821, 655, 498, 393, -1208, 146, 82,
4134 -1208, -915, -1208, 237, -1208, -1207, 84, -434, -1208, -1208,
4135 -1208, 328, -1208, -1208, 156, -1208, 19, 368, -157, -168,
4136 -1208, -1208, 676, -1208, -1208, -1208, 548, -1208, -1208, -102,
4137 -1208, -520, -1208, 1067, -1208, -788, -1208, -708, -905, -526,
4138 -1208, 36, -1208, -1208, -924, -235, -1208, -1208, -1208, -1208,
4139 -1208, 140, -1208, -83, -1208, -873, -705, -1099, -336, -1059,
4140 -1062, -1208, 223, -1208, -1208, -943, 224, -1208, -1208, -581,
4141 229, -1208, -1208, -1208, 131, -1208, -1208, 125, 884, 1356,
4142 -1208, 1330, 1386, 1420, 5, -1208, 1654, -1208, 912, -1208,
4143 1698, -1208, -1208, 1756, -1208, 1900, -1208, -1208, -57, -1208,
4144 -1208, -140, -1208, -1208, -1208, -1208, -1208, -1208, -1208, 29,
4145 -1208, -1208, -1208, -1208, 37, -45, 4031, 130, 1346, 4554,
4146 3801, -1208, -1208, 83, -327, 732, 30, -1208, -734, -793,
4147 -511, -1208, 200, -1208, -858, -737, -662, -502, -1208, -1208,
4148 -1208, 1109, -370, -1208, -1208, -1208, 394, -221, -1197, -433,
4149 -273, -652, 779, -486, -668, -1208, -723, -1208, -629, -1208,
4150 305, -1208, -496, -1208, -1208, -1208, -1208, -1208, 34, -418,
4151 -378, -1208, -1208, -82, 1353, 248, -482, 64, -216, -69,
4156static const yytype_int16 yydefgoto[] =
4158 0, 333, 69, 1, 2, 70, 71, 266, 267, 656,
4159 1153, 1312, 657, 1050, 287, 288, 504, 224, 72, 494,
4160 289, 74, 75, 76, 77, 78, 785, 487, 815, 79,
4161 630, 616, 444, 273, 872, 274, 406, 407, 409, 972,
4162 410, 82, 804, 816, 83, 606, 275, 85, 86, 290,
4163 87, 522, 88, 89, 90, 238, 427, 428, 218, 219,
4164 220, 695, 645, 222, 92, 93, 94, 95, 96, 97,
4165 788, 395, 98, 553, 497, 554, 240, 241, 294, 820,
4166 837, 838, 480, 242, 481, 257, 258, 244, 470, 649,
4167 246, 808, 809, 99, 403, 510, 855, 665, 862, 1159,
4168 865, 863, 682, 599, 602, 100, 277, 102, 103, 104,
4169 105, 106, 107, 108, 109, 110, 111, 356, 359, 961,
4170 1150, 852, 966, 967, 800, 278, 279, 659, 847, 968,
4171 969, 419, 757, 758, 759, 760, 571, 772, 773, 1256,
4172 1257, 1163, 1258, 1385, 1342, 1260, 1261, 1337, 1262, 1263,
4173 1264, 1183, 1184, 1265, 1239, 1374, 1375, 529, 740, 899,
4174 314, 1165, 114, 1068, 1243, 1320, 360, 115, 116, 357,
4175 603, 604, 607, 608, 975, 853, 1234, 948, 1033, 824,
4176 1370, 856, 1427, 1235, 1111, 1275, 1113, 1287, 1114, 1218,
4177 1219, 1115, 1351, 1193, 1194, 1195, 1117, 1118, 1288, 1197,
4178 1119, 1120, 1121, 1122, 1123, 572, 1125, 1126, 1127, 1128,
4179 1129, 1130, 1131, 1132, 962, 1048, 1147, 1151, 117, 118,
4180 119, 120, 121, 122, 323, 123, 124, 541, 744, 125,
4181 126, 543, 127, 128, 129, 130, 542, 544, 316, 320,
4182 321, 534, 742, 741, 900, 1001, 1082, 1253, 901, 131,
4183 132, 317, 133, 134, 135, 136, 248, 249, 139, 250,
4184 251, 864, 677, 345, 346, 347, 348, 349, 574, 575,
4185 763, 576, 918, 1071, 1245, 578, 579, 769, 580, 581,
4186 582, 583, 1169, 1074, 1075, 1076, 1077, 584, 585, 586,
4187 927, 588, 589, 590, 591, 592, 593, 594, 595, 596,
4188 597, 764, 770, 447, 448, 449, 683, 299, 484, 253,
4189 725, 647, 686, 681, 402, 489, 833, 1201, 514, 660,
4196static const yytype_int16 yytable[] =
4198 142, 334, 319, 335, 221, 237, 237, 661, 309, 412,
4199 236, 236, 315, 318, 456, 286, 293, 573, 73, 401,
4200 328, 646, 573, 654, 221, 408, 648, 675, 413, 225,
4201 226, 919, 915, 454, 483, 478, 223, 263, 334, 245,
4202 245, 309, 789, 917, 1034, 793, 971, 821, 791, 252,
4203 252, 292, 292, 297, 301, 221, 223, 355, 702, 711,
4204 309, 309, 309, 256, 767, 445, 792, 978, 324, 325,
4205 326, 587, 365, 1003, 701, 765, 587, 692, 295, 765,
4206 516, 308, 701, 734, 518, 796, 452, 775, 296, 300,
4207 1124, 1124, 1005, 781, 646, 1276, 654, 711, 916, 706,
4208 291, 702, 237, 327, 825, -146, -141, 236, 221, 1286,
4209 1143, 351, 924, 1251, 405, 405, 846, 949, 405, 243,
4210 254, 1376, 925, 658, 726, 870, 354, 1241, 352, 1386,
4211 -397, 138, 761, -142, 505, 1277, 245, 368, 746, 921,
4212 1207, 568, 1072, -704, 750, 926, 252, -149, -148, 143,
4213 726, 1289, -144, 737, 1158, 1167, 1302, 1305, -397, -397,
4214 1116, 1116, 259, -145, 350, 474, -146, 530, -147, -721,
4215 811, 268, -704, 569, 798, -143, -712, 466, -141, -713,
4216 537, 539, 138, 138, 265, 261, 312, 264, 792, 507,
4217 -113, 747, 344, 286, 1208, 502, 352, 751, -142, 1191,
4218 283, 1200, 397, 392, 393, 394, 1376, 1070, 1072, 1386,
4219 -141, -129, 611, -142, -397, 1124, 450, 362, 334, 312,
4220 508, 1242, 532, 533, 887, 1282, 342, 343, 528, 292,
4221 398, 399, 799, 1252, 1236, -137, -132, -832, 421, 431,
4222 431, 431, 358, 331, 471, 237, 1003, 237, 286, 332,
4223 236, 471, 236, 353, 485, 898, 1399, 309, 549, 550,
4224 551, 552, 1176, -133, 331, 142, -149, 478, 1124, 1059,
4225 332, 488, 490, 1070, 919, 1124, 1124, -140, -139, 482,
4226 868, 245, -135, 73, 292, 1116, 400, 658, 523, 1397,
4227 1289, 252, 726, -136, 1289, 859, 1400, 711, -138, 548,
4228 -833, -147, 702, 726, 351, -134, 869, -146, 984, 953,
4229 -832, 1296, 1298, -146, 256, 666, 309, 354, 701, -141,
4230 701, 353, 761, 910, 322, -141, 286, 255, 977, 1322,
4231 662, 801, -148, 291, 886, 292, 670, 351, 1073, -142,
4232 1333, 521, 1335, 259, 334, -142, 672, 476, 405, 405,
4233 405, 405, 73, 555, 556, 925, 499, 500, 1232, -144,
4234 138, 486, 292, 1207, 1400, 1142, 1142, 259, -147, 1233,
4235 940, 1080, -64, 663, 664, 1070, 1016, 980, 1070, 842,
4236 1070, -149, 1087, -712, 954, 849, 850, 985, -145, 613,
4237 237, -833, 959, 1047, 1017, 236, 138, 1207, 653, 485,
4238 1196, 745, 292, 745, 1073, 496, 1006, -149, 1124, 292,
4239 292, 291, 777, -149, 361, 138, 259, -141, 1008, 1010,
4240 405, 765, 1012, 702, 1014, 1062, 1015, 678, 331, 1057,
4241 778, 919, 915, 530, 332, 312, 405, 1080, -132, 701,
4242 -143, 237, -147, 1244, 655, -833, 236, -135, -147, 782,
4243 -713, -585, 653, 696, 513, 513, -64, 366, 259, 513,
4244 965, 519, 888, 237, 1017, 138, 138, 783, 236, 1411,
4245 854, 653, 485, -148, 458, 245, 889, 309, 761, -148,
4246 761, 471, 814, 471, -142, 252, 884, -148, 532, 533,
4247 1142, 221, 890, 138, 312, 587, -144, 691, 916, 653,
4248 -144, 587, 610, 703, 718, -133, -144, 615, 523, 1248,
4249 -145, 932, 460, 1301, 1304, 933, 896, 237, 459, 925,
4250 1187, 1188, 236, 223, 459, 653, 485, 702, 322, -145,
4251 1070, 790, 1070, 138, 1070, -145, 1070, -356, 509, 1247,
4252 138, 138, 1249, 1142, 577, 965, 732, 851, 1097, 577,
4253 1142, 1142, -149, 1269, 259, 687, -135, 260, -149, 1215,
4254 814, 814, 562, 803, 309, -356, -356, 646, 803, 654,
4255 59, 754, 1030, -140, 1058, 976, -135, -135, 979, 711,
4256 -135, -143, 563, 1177, 1178, 1180, 1181, -143, 786, 260,
4257 919, 786, 986, 848, 814, 523, 993, 503, 292, 693,
4258 694, 292, 701, 1425, 905, 462, 530, 538, 698, 905,
4259 467, 1384, 567, 568, 1216, 1070, 709, 710, 1217, 831,
4260 -703, -356, 843, 1198, 845, -833, 468, 839, -136, 1272,
4261 -143, -148, 1293, 1294, 807, 835, 496, 934, 138, 807,
4262 936, -137, 876, 879, 727, 569, 803, 803, 471, -703,
4263 761, 761, 1154, 840, 368, 312, 469, -705, 292, 237,
4264 292, 532, 533, 477, 236, 875, 916, 653, 485, -144,
4265 237, 925, -134, 1069, 884, 236, 894, 777, 653, 485,
4266 803, 292, 475, 1142, 138, 309, -705, 368, 830, 925,
4267 1054, 840, 221, 1055, 871, 1220, 1268, 902, 1381, 688,
4268 1060, 503, 471, 495, 1190, 881, 1064, 1388, 506, 1172,
4269 1174, 1274, 1392, 255, 1278, 451, 897, 331, 390, 391,
4270 392, 393, 394, 332, 223, 840, -112, 587, 712, 138,
4271 892, 714, 138, -706, 1297, -148, 717, -136, 587, 1069,
4272 947, 673, 312, 511, 836, 674, 1227, 891, 397, 904,
4273 -137, 906, 1332, 729, 907, 908, -139, -136, -136, -708,
4274 925, -136, -706, 1377, 309, 259, 1020, 830, 1021, -64,
4275 -137, -137, 989, -832, -137, 835, 398, 472, -145, 1078,
4276 956, -134, 397, 981, 1160, 983, 836, 1432, -708, 138,
4277 826, 138, 517, 587, 982, 523, 530, 841, 1112, 1112,
4278 397, -134, -134, 373, 374, -134, 520, 832, 344, -144,
4279 398, 501, 138, 525, -143, 540, 1295, -707, 814, 814,
4280 -145, 1360, 1361, 1362, 814, 814, 445, -709, 398, 526,
4281 -135, 771, 473, 1343, 1314, 1347, 598, 882, -700, 545,
4282 963, -136, 970, -710, 970, 1078, -707, 605, 1268, 535,
4283 1268, 532, 533, -711, 697, 1268, -709, 385, 386, 810,
4284 1268, 342, 343, 312, 292, 832, 473, -700, 891, 221,
4285 1192, -710, -710, 405, 397, 405, 1324, 1326, 1328, 1330,
4286 1331, -711, -711, 1401, 527, 964, 965, 1212, 1053, -701,
4287 471, 513, 684, 814, -719, 587, 832, 601, 587, 614,
4288 1036, 1038, 398, 453, 803, 803, 1042, 1044, 814, 1266,
4289 803, 803, 848, 673, 1063, 1000, 546, 1189, -701, 786,
4290 -349, 685, 667, 1112, 259, 512, 1268, -710, 1268, 1052,
4291 1268, 726, 1268, 671, 1365, 873, 237, -711, 397, 259,
4292 515, 236, 312, 929, 653, 485, 676, 1078, -349, -349,
4293 1078, 1268, 1078, 1413, 1415, 713, 1273, 1417, 1419, 1317,
4294 1049, 1422, -97, 721, 397, 292, 398, 668, 951, 952,
4295 715, 794, -357, 1192, 397, 797, 957, 958, 405, 803,
4296 716, 292, 722, 1192, 1192, 807, 397, 1213, 1214, 956,
4297 1144, 397, 398, 679, 803, 138, 1435, 1436, 1438, 1439,
4298 -357, -357, 398, 945, -349, -700, 1441, 912, 723, 1406,
4299 1407, 1409, 1410, 1396, 398, 1307, 731, 1398, 832, 398,
4300 1394, 1157, 669, -143, 1315, 1316, 991, 992, 832, 994,
4301 995, 259, 1403, -700, -700, -129, 1091, 1092, 524, 524,
4302 753, 1094, 1095, -98, -134, 1175, 733, 1148, 680, 1152,
4303 491, 1203, 999, 1100, 587, 762, -357, 292, 946, 1434,
4304 492, 493, 766, 1266, 1206, 530, 1164, 914, 1266, 1164,
4305 1308, 914, 1170, 563, 768, 680, -444, 779, 1170, 1170,
4306 774, 292, 780, 795, 1026, 812, -701, -97, 834, -700,
4307 1185, 1185, 530, -97, -836, 844, 138, 1041, 309, 1405,
4308 851, 854, 1078, 567, 1078, 911, 1078, 1290, 1078, 913,
4309 922, 368, 138, 930, -701, -701, 1229, 1230, 535, 987,
4310 532, 533, 1237, 1282, 931, 1285, 1283, 935, 381, 382,
4311 1311, 939, -329, 368, 1065, 1300, 1303, -836, 996, 942,
4312 998, 1309, 938, 1266, 941, 531, 1271, 532, 533, 292,
4313 381, 382, 292, 292, 138, 138, 970, 1002, 292, 334,
4314 950, 508, 530, 1141, 1141, -836, -836, 955, -98, 943,
4315 -701, 960, 1018, 1019, -98, 390, 391, 392, 393, 394,
4316 965, 1024, 292, 997, 1025, 292, 1027, 1078, 138, 832,
4317 1310, 778, 1007, 1009, 387, 388, 389, 390, 391, 392,
4318 393, 394, 530, 1011, 1013, 1321, 368, 337, 338, 339,
4319 340, 341, 138, -333, 1040, 535, 405, 532, 533, -836,
4320 309, -836, 530, 381, 382, -832, 292, 1083, 1084, 970,
4321 -331, 1141, 1141, 1356, 1146, 1141, 1371, 1372, 530, 1149,
4322 1162, 292, 1182, 1164, 1166, 1170, 1170, 1170, 1170, 1170,
4323 1202, 1209, 1141, 1168, 1164, 536, 1164, 532, 533, 1171,
4324 1338, 1173, 1179, 1210, 832, 1199, 1338, 1280, 1338, 389,
4325 390, 391, 392, 393, 394, 743, 1225, 532, 533, 1211,
4326 138, 1279, 1207, 138, 138, 1098, 1323, 1306, 1141, 138,
4327 1318, 748, 309, 532, 533, 1319, 1325, 557, 237, 558,
4328 559, 560, 561, 236, 1327, 1081, 653, 485, 1329, 963,
4329 1334, 1152, 1204, 138, 36, 37, 138, 39, 1378, 292,
4330 1238, 1141, 1389, 1336, 1141, 1341, 405, 405, 40, 41,
4331 42, 43, 1346, 1402, 1349, 1350, 1393, 298, 1141, 1353,
4332 1141, 1281, 1355, 1141, 1141, 101, 1408, 755, 1141, 1141,
4333 1412, 1414, 832, 547, 1416, 832, 1418, 138, 1423, 247,
4334 247, -832, 1205, 557, -833, 558, 559, 560, 561, 292,
4335 1437, 1081, 138, 336, 728, 832, 498, 1228, 1170, 1170,
4336 1170, 1170, 988, 1164, 730, 411, 1338, 1338, 805, 416,
4337 1338, 1338, 396, 1067, 1338, 433, 101, 101, 431, 719,
4338 310, 970, 874, 1051, 36, 37, 1061, 39, 1313, 1004,
4339 909, 247, 1340, 755, 45, 46, 1383, 1141, 756, 1259,
4340 1186, 1339, 1428, 990, 1238, 1391, 609, 1354, 1170, 1338,
4341 1338, 1338, 1338, 310, 1291, 1292, 1284, 1369, 1426, 1338,
4342 557, 1368, 558, 559, 560, 561, 562, 247, 247, 457,
4343 138, 247, 418, 429, 429, 749, 247, 446, 600, 1067,
4344 1161, 1424, 832, 832, 832, 1299, 563, 1240, 455, 0,
4345 431, 1240, 0, 1081, 0, 0, 1081, 0, 1081, 1141,
4346 564, 0, 0, 1141, 0, 1141, 0, 1270, 0, 557,
4347 565, 558, 559, 560, 561, 566, 567, 568, 0, 1373,
4348 138, 558, 559, 560, 561, 0, 0, 0, 0, 0,
4349 461, 0, 0, 463, 464, 465, 0, 0, 0, 0,
4350 0, 1348, 0, 0, 832, 0, 0, 0, 0, 569,
4351 0, 1352, 570, 1404, 557, 0, 558, 559, 560, 561,
4352 562, 0, 0, 0, 0, 1066, 0, 920, 1357, 1358,
4353 1359, 0, 0, 1141, 0, 0, 1199, 0, 0, 928,
4354 563, 1067, 0, 0, 1067, 0, 1067, 84, 0, 0,
4355 0, 0, 0, 0, 101, 1255, 0, 0, 878, 880,
4356 0, 84, 84, 0, 565, 0, 0, 0, 0, 566,
4357 567, 568, 0, 0, 878, 880, 0, 0, 0, 247,
4358 0, 247, 0, 0, 247, 247, 0, 0, 0, 0,
4359 101, 557, 895, 558, 559, 560, 561, 562, 84, 84,
4360 0, 0, 0, 569, 0, 0, 570, 0, 1081, 101,
4361 1081, 0, 1081, 84, 1081, 0, 0, 563, 0, 1240,
4362 0, 1270, 0, 0, 0, 0, 1270, 0, 0, 310,
4363 0, 1270, 0, 0, 0, 0, 0, 0, 0, 0,
4364 0, 565, 0, 0, 0, 0, 0, 567, 568, 84,
4365 84, 0, 0, 84, 0, 0, 0, 0, 84, 101,
4366 101, 247, 247, 247, 247, 0, 247, 247, 0, 0,
4367 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4368 569, 0, 0, 0, 0, 0, 0, 101, 310, 1110,
4369 1110, 0, 0, 1081, 0, 0, 1067, 1270, 1067, 1270,
4370 1067, 1270, 1067, 1270, 0, 0, 0, 0, 0, 1255,
4371 0, 0, 0, 0, 1255, 0, 0, 0, 0, 1255,
4372 0, 0, 1270, 0, 247, 0, 0, 101, 0, 0,
4373 699, 700, 0, 247, 101, 101, 0, 0, 0, 298,
4374 0, 0, 0, 0, 0, 0, 0, 895, 0, 247,
4375 0, 0, 0, 0, 0, 0, 0, 1110, 1110, 1079,
4376 0, 1110, 0, 0, 0, 0, 0, 0, 1085, 0,
4377 1086, 0, 1088, 0, 700, 247, 84, 298, 1110, 0,
4378 0, 1067, 0, 0, 0, 1255, 0, 1255, 0, 1255,
4379 0, 1255, 0, 0, 0, 0, 0, 247, 0, 0,
4380 0, 84, 0, 84, 0, 0, 84, 84, 0, 0,
4381 1255, 0, 84, 0, 1110, 0, 1037, 1039, 0, 0,
4382 0, 0, 1043, 1045, 0, 1079, 0, 0, 0, 0,
4383 0, 84, 101, 0, 0, 0, 0, 0, 0, 0,
4384 0, 0, 0, 0, 0, 0, 0, 1110, 0, 310,
4385 1110, 247, 776, 0, 0, 0, 1037, 1039, 0, 1043,
4386 1045, 0, 0, 0, 1110, 0, 1110, 0, 0, 1110,
4387 1110, 0, 806, 0, 1110, 1110, 0, 819, 101, 0,
4388 0, 84, 84, 84, 84, 84, 84, 0, 84, 84,
4389 0, 0, 0, 0, 0, 0, 0, 1133, 1133, 0,
4390 0, 0, 0, 0, 0, 0, 1145, 0, 0, 84,
4391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4392 0, 0, 247, 101, 0, 247, 101, 1246, 0, 0,
4393 1145, 0, 1250, 0, 247, 0, 310, 0, 1254, 822,
4394 0, 1267, 0, 1110, 0, 0, 84, 0, 0, 84,
4395 0, 0, 0, 0, 0, 84, 84, 84, 557, 883,
4396 558, 559, 560, 561, 562, 1133, 1133, 0, 0, 1133,
4397 0, 84, 0, 0, 0, 700, 557, 298, 558, 559,
4398 560, 561, 562, 101, 563, 101, 1133, 0, 0, 0,
4399 0, 0, 0, 247, 0, 0, 0, 84, 564, 0,
4400 0, 0, 563, 0, 247, 1110, 101, 247, 565, 1110,
4401 0, 1110, 0, 566, 567, 568, 564, 822, 822, 84,
4402 0, 0, 1133, 0, 0, 0, 565, 0, 0, 0,
4403 0, 0, 567, 568, 0, 923, 0, 0, 0, 0,
4404 0, 0, 0, 247, 0, 0, 0, 569, 0, 0,
4405 570, 822, 0, 0, 84, 1133, 0, 310, 1133, 0,
4406 0, 0, 0, 0, 937, 569, 0, 0, 0, 0,
4407 0, 0, 1133, 84, 1133, 0, 0, 1133, 1133, 1110,
4408 0, 0, 1133, 1133, 1379, 0, 1380, 0, 1382, 0,
4409 0, 0, 0, 0, 0, 1387, 700, 0, 0, 0,
4410 84, 0, 0, 0, 0, 1395, 0, 0, 0, 0,
4411 0, 0, 0, 0, 974, 0, 0, 0, 0, 0,
4412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4413 0, 0, 0, 0, 0, 0, 310, 0, 0, 0,
4414 0, 0, 0, 0, 84, 84, 0, 84, 84, 0,
4415 0, 1133, 0, 0, 0, 0, 84, 0, 0, 0,
4416 0, 84, 0, 0, 0, 0, 0, 1429, 0, 0,
4417 0, 0, 0, 1430, 0, 1431, 0, 1433, 0, 0,
4418 0, 0, 0, 0, 0, 0, 247, 0, 247, 101,
4419 0, 0, 0, 0, 0, 0, 1440, 112, 0, 0,
4420 1023, 0, 0, 0, 0, 84, 0, 84, 0, 0,
4421 0, 112, 112, 1133, 0, 84, 0, 1133, 0, 1133,
4422 0, 0, 0, 1046, 0, 0, 84, 0, 84, 84,
4423 0, 0, 0, 0, 0, 1056, 0, 0, 0, 84,
4424 84, 0, 0, 0, 0, 0, 0, 0, 112, 112,
4425 0, 0, 0, 247, 0, 0, 0, 0, 0, 298,
4426 0, 0, 0, 112, 0, 84, 0, 0, 0, 0,
4427 247, 0, 0, 84, 0, 822, 822, 0, 0, 0,
4428 0, 822, 822, 0, 1093, 0, 0, 1133, 0, 0,
4429 101, 247, 0, 0, 0, 0, 0, 0, 0, 112,
4430 112, 0, 0, 112, 0, 0, 101, 0, 112, 22,
4431 23, 24, 25, 0, 0, 0, 0, 0, 0, 1156,
4432 0, 0, 0, 0, 0, 31, 32, 33, 1098, 0,
4433 0, 0, 1099, 0, 0, 40, 41, 42, 43, 44,
4434 0, 0, 0, 0, 0, 0, 0, 0, 101, 101,
4435 822, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4436 0, 0, 0, 0, 0, 822, 0, 1101, 1102, 1134,
4437 1134, 0, 0, 0, 0, 1103, 0, 0, 1104, 0,
4438 1105, 1106, 101, 1107, 0, 0, 57, 58, 59, 60,
4439 61, 62, 63, 64, 65, 0, 0, 0, 0, 1135,
4440 1135, 0, 0, 0, 0, 0, 101, 0, 84, 0,
4441 84, 84, 0, 0, 0, 0, 1109, 1231, 0, 0,
4442 0, 0, 0, 304, 0, 0, 112, 0, 0, 0,
4443 259, 0, 0, 1136, 1136, 0, 0, 1134, 1134, 0,
4444 0, 1134, 0, 0, 0, 0, 0, 0, 0, 0,
4445 0, 112, 0, 112, 0, 0, 112, 112, 1134, 0,
4446 0, 0, 112, 0, 0, 0, 0, 1135, 1135, 0,
4447 1223, 1135, 0, 0, 101, 84, 0, 101, 101, 0,
4448 0, 112, 0, 101, 0, 0, 0, 0, 1135, 0,
4449 0, 0, 84, 0, 1134, 0, 0, 84, 84, 0,
4450 0, 1136, 1136, 84, 84, 1136, 0, 101, 0, 0,
4451 101, 0, 84, 84, 0, 0, 0, 0, 0, 0,
4452 0, 0, 1136, 0, 1135, 0, 0, 1134, 84, 247,
4453 1134, 112, 112, 112, 112, 112, 112, 0, 112, 112,
4454 0, 0, 0, 0, 1134, 0, 1134, 0, 0, 1134,
4455 1134, 101, 0, 0, 1134, 1134, 0, 1135, 1136, 112,
4456 1135, 0, 0, 0, 0, 0, 101, 0, 0, 0,
4457 84, 84, 84, 0, 1135, 0, 1135, 0, 0, 1135,
4458 1135, 0, 0, 0, 1135, 1135, 0, 84, 0, 0,
4459 0, 1136, 1345, 0, 1136, 0, 112, 0, 0, 112,
4460 0, 0, 0, 0, 84, 112, 112, 112, 1136, 0,
4461 1136, 0, 0, 1136, 1136, 0, 0, 0, 1136, 1136,
4462 0, 112, 0, 1134, 0, 0, 0, 0, 84, 0,
4463 0, 0, 247, 0, 0, 0, 0, 0, 0, 247,
4464 247, 0, 0, 0, 101, 0, 0, 112, 0, 0,
4465 0, 0, 0, 1135, 0, 0, 0, 0, 0, 0,
4466 0, 0, 0, 0, 1390, 0, 0, 1137, 1137, 112,
4467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4468 0, 0, 0, 0, 0, 1134, 0, 1136, 0, 1134,
4469 0, 1134, 0, 0, 101, 0, 84, 0, 0, 84,
4470 84, 0, 0, 0, 112, 84, 0, 0, 0, 0,
4471 113, 1138, 1138, 0, 0, 1135, 0, 0, 0, 1135,
4472 0, 1135, 0, 112, 113, 113, 0, 0, 0, 84,
4473 0, 0, 84, 0, 0, 1137, 1137, 0, 0, 1137,
4474 0, 0, 0, 0, 0, 0, 0, 0, 0, 1136,
4475 112, 84, 0, 1136, 0, 1136, 1137, 0, 0, 1134,
4476 0, 113, 113, 0, 0, 0, 0, 0, 0, 1139,
4477 1139, 0, 0, 84, 0, 0, 113, 0, 0, 1138,
4478 1138, 0, 0, 1138, 0, 0, 0, 0, 84, 1135,
4479 0, 0, 1137, 0, 112, 112, 0, 112, 112, 0,
4480 1138, 0, 0, 0, 0, 0, 112, 0, 0, 0,
4481 0, 112, 113, 113, 0, 0, 113, 0, 0, 0,
4482 0, 113, 0, 1136, 0, 1137, 0, 0, 1137, 0,
4483 0, 0, 0, 0, 0, 0, 1138, 1139, 1139, 0,
4484 0, 1139, 1137, 0, 1137, 0, 0, 1137, 1137, 0,
4485 0, 0, 1137, 1137, 84, 112, 0, 112, 1139, 0,
4486 0, 84, 84, 0, 0, 112, 84, 0, 0, 1138,
4487 0, 0, 1138, 0, 0, 0, 112, 0, 112, 112,
4488 0, 0, 0, 0, 0, 0, 1138, 0, 1138, 112,
4489 112, 1138, 1138, 0, 1139, 0, 1138, 1138, 0, 0,
4490 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4491 0, 0, 0, 1140, 1140, 112, 84, 0, 0, 0,
4492 0, 1137, 0, 112, 0, 0, 0, 1139, 0, 0,
4493 1139, 0, 0, 0, 0, 0, 0, 0, 0, 113,
4494 0, 0, 0, 0, 1139, 0, 1139, 0, 0, 1139,
4495 1139, 0, 0, 0, 1139, 1139, 0, 0, 0, 0,
4496 0, 0, 0, 0, 113, 1138, 113, 0, 0, 113,
4497 113, 0, 0, 0, 0, 113, 0, 0, 0, 0,
4498 0, 1140, 1140, 1137, 0, 1140, 0, 1137, 0, 1137,
4499 0, 0, 0, 0, 113, 0, 0, 0, 0, 0,
4500 0, 0, 1140, 0, 0, 0, 0, 0, 0, 0,
4501 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4502 0, 0, 0, 1139, 0, 0, 0, 1138, 0, 0,
4503 0, 1138, 0, 1138, 0, 0, 0, 0, 1140, 0,
4504 0, 0, 0, 0, 113, 113, 113, 113, 113, 113,
4505 0, 113, 113, 0, 0, 0, 0, 1137, 112, 0,
4506 112, 112, 0, 0, 0, 0, 0, 0, 0, 0,
4507 0, 1140, 113, 0, 1140, 0, 0, 0, 0, 0,
4508 0, 0, 0, 0, 0, 1139, 0, 0, 1140, 1139,
4509 1140, 1139, 0, 1140, 1140, 0, 0, 0, 1140, 1140,
4510 80, 1138, 0, 0, 0, 0, 0, 0, 0, 113,
4511 0, 0, 113, 0, 80, 80, 0, 0, 113, 113,
4512 113, 0, 0, 0, 0, 112, 0, 0, 0, 0,
4513 0, 0, 0, 0, 113, 0, 0, 0, 0, 0,
4514 0, 0, 112, 0, 0, 0, 0, 112, 112, 0,
4515 0, 80, 80, 112, 112, 306, 0, 0, 0, 1139,
4516 113, 0, 112, 112, 0, 0, 0, 1140, 22, 23,
4517 24, 25, 0, 0, 0, 0, 0, 0, 112, 0,
4518 0, 0, 113, 0, 31, 32, 33, 0, 306, 0,
4519 0, 0, 0, 0, 40, 41, 42, 43, 44, 0,
4520 0, 0, 0, 0, 0, 0, 0, 306, 306, 306,
4521 0, 80, 0, 0, 0, 0, 0, 113, 0, 0,
4522 112, 112, 112, 0, 0, 0, 0, 0, 0, 1140,
4523 0, 0, 0, 1140, 0, 1140, 113, 112, 0, 0,
4524 0, 0, 0, 0, 0, 57, 58, 59, 60, 61,
4525 62, 63, 64, 65, 112, 0, 0, 0, 0, 0,
4526 0, 0, 0, 113, 0, 0, 0, 0, 0, 0,
4527 0, 368, -855, -855, -855, -855, 373, 374, 112, 0,
4528 -855, -855, 304, 0, 0, 0, 0, 0, 381, 382,
4529 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4530 0, 0, 0, 1140, 0, 0, 0, 113, 113, 0,
4531 113, 113, 0, 0, 0, 0, 0, 0, 0, 113,
4532 0, 0, 0, 0, 113, 0, 0, 0, 0, 80,
4533 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
4534 0, 0, 0, 0, 0, 0, 112, 0, 0, 112,
4535 112, 0, 0, 0, 80, 112, 80, 0, 0, 0,
4536 0, 0, 0, 0, 0, 80, 0, 0, 113, 0,
4537 113, 0, 0, 0, 0, 0, 0, 0, 113, 112,
4538 0, 0, 112, 0, 80, 0, 0, 0, 0, 113,
4539 0, 113, 113, 0, 0, 0, 0, 0, 0, 0,
4540 0, 112, 113, 113, 306, 0, 0, 0, 0, 0,
4541 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4542 0, 0, 0, 112, 0, 0, 0, 0, 113, 0,
4543 0, 0, 0, 0, 80, 80, 113, 0, 112, -854,
4544 0, 0, 0, 0, 0, 0, 0, -854, -854, -854,
4545 0, 0, -854, -854, -854, 0, -854, 0, 0, 0,
4546 0, 0, 80, 306, -854, -854, -854, 0, 0, 0,
4547 0, 0, 0, 81, 0, 0, -854, -854, 0, -854,
4548 -854, -854, -854, -854, 0, 0, 0, 81, 81, 0,
4549 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,
4550 0, 0, 80, 0, 112, 0, 0, -854, -854, 80,
4551 80, 112, 112, 0, 0, 0, 112, 0, 0, 0,
4552 0, 0, 0, 0, 81, 81, 0, 0, 307, 0,
4553 0, 0, 0, 0, 0, 0, -854, -854, 0, 0,
4554 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4555 80, 0, 0, 0, 0, 0, 0, 0, 0, -854,
4556 0, 307, 0, 0, 0, 0, 112, 0, 0, 0,
4557 0, 113, 80, 113, 113, 0, 0, 0, 0, 0,
4558 307, 307, 307, 0, 81, 0, 0, 0, 0, 0,
4559 -854, -854, 0, -854, 0, 0, 255, -854, 0, -854,
4560 0, 0, 0, 0, 0, 0, 0, 80, 0, 0,
4561 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4562 0, 0, 0, 0, 306, 0, 80, 0, 0, 0,
4563 0, 0, 0, 0, 0, 0, 0, 0, 113, 0,
4564 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4565 0, 0, 0, 80, 0, 113, 0, 0, 0, 0,
4566 113, 113, 0, 0, 0, 0, 113, 113, 0, 0,
4567 0, 0, 0, 0, 0, 113, 113, 0, 0, 0,
4568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4569 0, 113, 0, 0, 0, 0, 0, 0, 80, 0,
4570 0, 80, 81, 0, 0, 0, 0, 0, 0, 0,
4571 0, 306, 0, 0, 80, 0, 0, 0, 0, 0,
4572 0, 0, 0, 0, 0, 0, 0, 81, 0, 81,
4573 0, 0, 0, 113, 113, 113, 0, 0, 81, 0,
4574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4575 113, 0, 0, 0, 0, 0, 0, 81, 80, 0,
4576 80, 0, 0, 0, 0, 0, 0, 113, 80, 0,
4577 0, 0, 0, 0, 0, 0, 0, 307, 0, 80,
4578 0, 80, 141, 0, 0, 0, 0, 0, 0, 0,
4579 0, 113, 80, 80, 0, 0, 0, 0, 0, 0,
4580 0, 0, 0, 0, 0, 944, 0, 81, 81, 0,
4581 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4582 0, 0, 0, 0, 0, 0, 80, 0, 0, 0,
4583 0, 0, 306, 141, 141, 81, 307, 313, 0, 368,
4584 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
4585 379, 380, 0, 0, 0, 0, 381, 382, 0, 113,
4586 0, 0, 113, 113, 0, 0, 0, 0, 113, 0,
4587 313, 0, 81, 0, 0, 81, 0, 0, 0, 0,
4588 0, 0, 81, 81, 0, 0, 0, 0, 0, 422,
4589 432, 432, 113, 0, 0, 113, 384, 0, 385, 386,
4590 387, 388, 389, 390, 391, 392, 393, 394, 0, 0,
4591 0, 306, 0, 0, 113, 0, -298, 0, 0, 0,
4592 0, 0, 0, 81, 368, 369, 370, 371, 372, 373,
4593 374, 375, 0, 377, 378, 0, 113, 0, 0, 0,
4594 0, 381, 382, 0, 0, 81, 0, 0, 0, 0,
4595 0, 113, 0, 0, 0, 0, 0, 0, 0, 0,
4596 0, 0, 0, 0, 80, 0, 0, 0, 0, 0,
4597 0, 0, 0, 0, 0, 0, 0, 0, 367, 0,
4598 81, 0, 0, 385, 386, 387, 388, 389, 390, 391,
4599 392, 393, 394, 0, 0, 0, 0, 307, 0, 81,
4600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4601 0, 141, 137, 0, 0, 0, 0, 113, 0, 0,
4602 0, 0, 0, 0, 113, 113, 81, 0, 0, 113,
4603 0, 368, 369, 370, 371, 372, 373, 374, 375, 376,
4604 377, 378, 379, 380, 0, 80, 0, 141, 381, 382,
4605 80, 80, 0, 0, 383, 0, 80, 80, 0, 0,
4606 0, 0, 0, 137, 137, 80, 141, 311, 0, 0,
4607 0, 81, 0, 0, 81, 0, 0, 0, 0, 113,
4608 0, 80, 0, 0, 307, 0, 313, 81, 384, 0,
4609 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
4610 311, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4611 0, 0, 0, 0, 0, 0, 141, 141, 0, 420,
4612 430, 430, 430, 80, 80, 80, 0, 0, 0, 0,
4613 0, 81, 0, 81, 944, 0, 0, 0, 0, 0,
4614 80, 81, 0, 0, 141, 313, 0, 0, 0, 0,
4615 0, 0, 81, 0, 81, 0, 0, 80, 0, 0,
4616 91, 0, 0, 0, 0, 81, 81, 0, 368, 369,
4617 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
4618 380, 80, 0, 0, 141, 381, 382, 0, 0, 0,
4619 0, 141, 141, 0, 0, 0, 0, 0, 0, 81,
4620 0, 0, 0, 0, 0, 307, 0, 0, 0, 0,
4621 0, 91, 91, 0, 0, 0, 0, 0, 0, 0,
4622 0, 0, 0, 0, 0, 384, 0, 385, 386, 387,
4623 388, 389, 390, 391, 392, 393, 394, 0, 0, 0,
4624 0, 137, 0, 0, 0, 306, 0, 0, 0, 80,
4625 0, 0, 80, 80, 0, 0, 0, 0, 80, 0,
4626 0, 0, 0, 0, 0, 0, 0, 417, 0, 0,
4627 0, 0, 0, 0, 0, 0, 0, 137, 0, 0,
4628 0, 0, 80, 0, 307, 80, 0, 0, 0, 141,
4629 0, 0, 0, 0, 0, 0, 137, 0, 0, 0,
4630 0, 0, 0, 0, 0, 0, 313, 0, 0, 0,
4631 0, 0, 0, 0, 0, 0, 311, 0, 0, 0,
4632 0, 0, 0, 0, 0, 0, 80, 0, 0, 0,
4633 0, 0, 0, 0, 0, 141, 0, 81, 0, 0,
4634 0, 80, 0, 0, 0, 0, 137, 137, 0, 0,
4635 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4636 0, 0, 0, 0, 0, 0, 0, 306, 0, 0,
4637 0, 0, 0, 0, 137, 311, 0, 0, 0, 0,
4638 141, 0, 0, 141, 0, 0, 0, 0, 0, 91,
4639 0, 0, 0, 313, 0, 0, 823, 0, 0, 0,
4640 0, 0, 0, 0, 0, 0, 0, 80, 0, 0,
4641 0, 0, 0, 0, 137, 0, 0, 0, 81, 80,
4642 0, 137, 137, 81, 81, 91, 0, 0, 0, 81,
4643 81, 0, 0, 0, 0, 0, 0, 0, 81, 306,
4644 141, 0, 141, 0, 91, 0, 0, 0, 0, 0,
4645 0, 0, 0, 0, 81, 0, 0, 0, 0, 0,
4646 0, 0, 0, 141, 0, 0, 0, 0, 0, 80,
4647 0, 0, 0, 0, 823, 823, 0, 0, 0, 0,
4648 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4649 0, 0, 0, 0, 91, 91, 81, 81, 81, 0,
4650 0, 0, 0, 0, 0, 0, 0, 0, 823, 0,
4651 0, 0, 0, 81, 313, 0, 0, 0, 0, 137,
4652 0, 0, 91, 903, 0, 0, 0, 0, 0, 0,
4653 81, 0, 0, 0, 0, 140, 311, 0, 0, 0,
4654 0, 0, 0, 0, 0, 0, 0, 689, 651, 0,
4655 0, 690, 0, 0, 81, 0, 0, 0, 0, 0,
4656 0, 0, 91, 0, 0, 137, 0, 0, 0, 91,
4657 91, 188, 189, 190, 191, 192, 193, 194, 195, 196,
4658 0, 0, 197, 198, 0, 0, 140, 140, 199, 200,
4659 201, 202, 0, 313, 0, 0, 0, 0, 0, 0,
4660 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
4661 137, 0, 0, 137, 0, 0, 0, 0, 307, 0,
4662 0, 0, 81, 311, 0, 81, 81, 0, 0, 0,
4663 0, 81, 205, 206, 207, 208, 209, 210, 211, 212,
4664 213, 214, 0, 215, 216, 0, 141, 0, 0, 0,
4665 0, 217, 255, 0, 0, 81, 0, 0, 81, 368,
4666 369, 370, 371, 372, 373, 374, 0, 91, 377, 378,
4667 137, 0, 137, 0, 0, 0, 381, 382, 0, 0,
4668 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4669 0, 0, 0, 137, 0, 0, 0, 0, 0, 81,
4670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4671 0, 0, 0, 91, 81, 0, 0, 0, 385, 386,
4672 387, 388, 389, 390, 391, 392, 393, 394, 0, 0,
4673 0, 0, 823, 823, 0, 0, 0, 0, 823, 823,
4674 307, 0, 0, 0, 311, 0, 0, 141, 0, 0,
4675 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
4676 0, 91, 0, 141, 140, 0, 0, 0, 0, 0,
4677 0, 0, 0, 0, 817, 0, 0, 0, 0, 0,
4678 81, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4679 0, 0, 81, 0, 0, 0, 0, 0, 0, 0,
4680 140, 0, 0, 0, 0, 141, 141, 823, 0, 0,
4681 0, 0, 307, 0, 0, 0, 0, 0, 91, 140,
4682 91, 0, 823, 311, 0, 0, 0, 0, 0, 0,
4683 0, 0, 22, 23, 24, 25, 0, 0, 0, 141,
4684 0, 91, 81, 0, 0, 0, 0, 0, 31, 32,
4685 33, 1098, 817, 817, 0, 1099, 0, 1100, 40, 41,
4686 42, 43, 44, 141, 0, 0, 0, 0, 0, 140,
4687 140, 0, 0, 0, 0, 0, 137, 563, 0, 0,
4688 0, 0, 0, 0, 0, 0, 817, 0, 0, 0,
4689 1101, 1102, 0, 0, 0, 0, 0, 140, 1103, 0,
4690 0, 1104, 0, 1105, 1106, 0, 1107, 567, 0, 57,
4691 58, 1108, 60, 61, 62, 63, 64, 65, 0, 0,
4692 0, 0, 0, 0, 0, 0, 0, 1226, 0, 0,
4693 0, 141, 0, 0, 141, 141, 0, 140, 0, 1109,
4694 141, 0, 0, 0, 140, 140, 304, 0, 0, 0,
4695 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4696 0, 0, 0, 0, 141, 0, 0, 141, 0, 0,
4697 642, 643, 0, 0, 644, 0, 0, 137, 0, 0,
4698 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4699 0, 0, 0, 137, 188, 189, 190, 191, 192, 193,
4700 194, 195, 196, 0, 0, 197, 198, 0, 141, 0,
4701 0, 199, 200, 201, 202, 0, 0, 0, 0, 0,
4702 0, 0, 0, 141, 91, 203, 204, 0, 0, 0,
4703 0, 0, 0, 0, 0, 137, 137, 0, 0, 0,
4704 0, 0, 140, 0, 0, 0, 0, 0, 0, 432,
4705 0, 239, 239, 0, 0, 205, 206, 207, 208, 209,
4706 210, 211, 212, 213, 214, 0, 215, 216, 0, 137,
4707 0, 0, 0, 0, 217, 0, 0, 0, 0, 0,
4708 0, 0, 0, 276, 280, 281, 282, 0, 140, 0,
4709 239, 239, 0, 137, 0, 0, 0, 0, 0, 0,
4710 0, 141, 0, 329, 330, 0, 0, 0, 0, 0,
4711 817, 817, 0, 0, 0, 0, 817, 817, 0, 0,
4712 0, 432, 0, 0, 0, 91, 0, 0, 0, 0,
4713 0, 0, 0, 140, 0, 0, 140, 0, 0, 0,
4714 0, 91, 0, 0, 0, 0, 0, 0, 239, 140,
4715 0, 141, 0, 0, 0, 0, 0, 1224, 0, 0,
4716 0, 137, 0, 0, 137, 137, 0, 0, 0, 0,
4717 137, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4718 0, 0, 0, 91, 91, 817, 0, 0, 0, 0,
4719 0, 0, 0, 140, 137, 140, 0, 137, 0, 0,
4720 817, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4721 0, 0, 0, 0, 0, 0, 140, 91, 0, 0,
4722 0, 0, 0, 0, 0, 0, 0, 140, 140, 0,
4723 0, 0, 0, 0, 0, 0, 0, 0, 137, 0,
4724 0, 91, 0, 0, 0, 0, 0, 0, 0, 0,
4725 0, 0, 0, 137, 0, 0, 0, 0, 0, 0,
4726 0, 140, 0, 0, 239, 0, 0, 239, 239, 239,
4727 0, 329, 0, 0, 0, 0, 0, 0, 0, 430,
4728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4729 0, 239, 0, 239, 0, 0, 0, 0, 0, 0,
4730 0, 0, 0, 0, 0, 1222, 0, 0, 0, 91,
4731 0, 0, 91, 91, 0, 0, 0, 0, 91, 0,
4732 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4733 0, 137, 0, 0, 0, 0, 0, 0, 0, 0,
4734 0, 0, 91, 0, 0, 91, 0, 0, 0, 0,
4735 0, 430, 0, 0, 0, 0, 0, 0, 0, 0,
4736 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4737 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4738 0, 137, 0, 0, 0, 0, 91, 0, 0, 0,
4739 0, 0, 0, 0, 0, 0, 0, 0, 0, 140,
4740 0, 91, 0, 0, 617, 618, 619, 620, 621, 0,
4741 0, 622, 623, 624, 625, 626, 627, 628, 629, 0,
4742 631, 0, 0, 632, 633, 634, 635, 636, 637, 638,
4743 639, 640, 641, 0, 650, 651, 239, 0, 652, 0,
4744 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4745 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
4746 190, 191, 192, 193, 194, 195, 196, 0, 0, 197,
4747 198, 0, 0, 0, 0, 199, 200, 201, 202, 91,
4748 0, 0, 0, 0, 0, 140, 140, 239, 0, 203,
4749 204, 140, 140, 0, 0, 0, 0, 0, 0, 0,
4750 140, 0, 0, 0, 239, 239, 0, 0, 0, 239,
4751 0, 0, 0, 239, 0, 282, 140, 0, 0, 205,
4752 206, 207, 208, 209, 210, 211, 212, 213, 214, 91,
4753 215, 216, 0, 720, 0, 0, 0, 0, 217, 0,
4754 0, 0, 0, 0, 0, 0, 0, 0, 239, 0,
4755 0, 239, 0, 0, 0, 0, 0, 0, 140, 140,
4756 140, 0, 0, 239, 0, 0, 0, 0, 0, 0,
4757 0, 0, 0, 0, 0, 140, 0, 0, 0, 0,
4758 0, 752, 0, 22, 23, 24, 25, 0, 0, 0,
4759 0, 0, 140, 0, 0, 0, 0, 0, 0, 31,
4760 32, 33, 1098, 0, 0, 0, 1099, 0, 0, 40,
4761 41, 42, 43, 44, 0, 0, 140, 0, 0, 0,
4762 0, 0, 0, 0, 0, 0, 239, 0, 0, 0,
4763 0, 0, 0, 0, 787, 0, 0, 787, 0, 0,
4764 0, 1101, 1102, 0, 0, 0, 239, 0, 0, 1103,
4765 0, 818, 1104, 0, 1105, 1106, 0, 1107, 0, 0,
4766 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
4767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4768 0, 0, 0, 0, 140, 0, 0, 140, 140, 0,
4769 1109, 0, 0, 140, 0, 0, 0, 304, 0, 0,
4770 0, 0, 0, 0, 0, 239, 0, 0, 0, 0,
4771 0, 0, 0, 0, 0, 0, 239, 140, 0, 0,
4772 140, 0, 0, 0, 0, 0, 0, 0, 0, 877,
4773 877, 0, 0, 239, 877, 0, 0, 0, 0, 0,
4774 0, 0, 0, 0, 0, 877, 877, 0, 0, 239,
4775 0, 239, 0, 0, 0, 0, 0, 0, 787, 787,
4776 0, 140, 0, 877, 0, 0, 0, 0, 0, 0,
4777 0, 0, 0, 0, 0, 0, 140, 0, 0, 0,
4778 -4, 3, 0, 4, 5, 6, 7, 8, -4, -4,
4779 -4, 9, 10, 0, -4, -4, 11, -4, 12, 13,
4780 14, 15, 16, 17, 18, -4, 0, 0, 0, 239,
4781 19, 20, 21, 22, 23, 24, 25, 0, 0, 26,
4782 0, 0, 0, 0, 0, 27, 28, 284, 30, 31,
4783 32, 33, 34, 35, 36, 37, 38, 39, 239, 40,
4784 41, 42, 43, 44, 45, 46, 0, 0, -4, 0,
4785 0, 0, 0, 0, 140, 0, 47, 48, 0, 0,
4786 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4787 239, 49, 50, 0, 0, 0, 0, 0, 0, 51,
4788 0, 0, 52, 53, 54, 55, 0, 56, 239, 0,
4789 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
4790 -4, 0, 0, 0, 140, 0, 0, 0, 0, 0,
4791 0, 0, 0, 0, 0, 0, 0, 0, 877, 0,
4792 0, 0, 0, 0, 0, 0, 0, 66, 67, 68,
4793 0, 0, -4, 22, 23, 24, 25, 0, -4, 0,
4794 546, 0, 0, 0, 0, 0, 0, 0, 0, 31,
4795 32, 33, 1098, 0, 0, 0, 1099, 0, 0, 40,
4796 41, 42, 43, 44, 0, 787, 0, 0, 0, 0,
4797 0, 0, 0, 0, 239, 0, 0, 0, 0, 0,
4798 0, 0, 239, 0, 0, 0, 1035, 877, 877, 0,
4799 0, 1101, 1102, 877, 877, 0, 0, 239, 0, 1103,
4800 0, 0, 1104, 0, 1105, 1106, 0, 0, 0, 239,
4801 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
4802 0, 0, 0, 0, 0, 0, 0, 877, 877, 0,
4803 877, 877, 0, 239, 0, 787, 0, 0, 0, 0,
4804 1109, 0, 0, 0, 0, 0, 0, 304, 0, 0,
4805 0, 0, 0, 0, 1089, 1090, 0, 0, 239, 0,
4806 0, 0, 877, 1096, -854, 3, 0, 4, 5, 6,
4807 7, 8, 0, 0, 0, 9, 10, 877, 0, 0,
4808 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
4809 0, 0, 0, 239, 19, 20, 21, 22, 23, 24,
4810 25, 877, 0, 26, 0, 0, 0, 0, 0, 27,
4811 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
4812 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
4813 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4814 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
4815 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
4816 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
4817 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
4818 63, 64, 65, 0, -854, 0, 0, 0, 0, 0,
4819 0, 239, 0, 0, 0, 0, 0, 0, 0, 0,
4820 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4821 0, 66, 67, 68, 0, 0, -854, 3, -854, 4,
4822 5, 6, 7, 8, -854, 0, 0, 9, 10, 0,
4823 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
4824 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
4825 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
4826 0, 27, 28, 29, 30, 31, 32, 33, 34, 35,
4827 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
4828 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
4829 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
4830 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
4831 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
4832 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
4833 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
4834 0, 0, 0, 0, 239, 0, 0, 0, 0, 0,
4835 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4836 0, 0, 0, 66, 67, 68, 0, 0, -4, 3,
4837 -854, 4, 5, 6, 7, 8, -854, 0, 0, 9,
4838 10, 0, 0, 0, 11, 0, 12, 13, 14, 15,
4839 16, 17, 18, 0, 0, 0, 0, 0, 19, 20,
4840 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
4841 0, 0, 0, 27, 28, 29, 30, 31, 32, 33,
4842 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
4843 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
4844 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
4845 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
4846 50, 0, 0, 0, 0, 0, 0, 51, 0, 0,
4847 52, 53, 54, 55, 0, 56, 0, 0, 57, 58,
4848 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
4849 0, 0, 0, 0, 0, 0, -836, 0, 0, 0,
4850 0, 0, 0, 0, -836, -836, -836, 0, 0, -836,
4851 -836, -836, 0, -836, 0, 66, 67, 68, 0, 0,
4852 -4, -836, -836, -836, -836, -836, 0, 0, 546, 0,
4853 0, 0, 0, -836, -836, 0, -836, -836, -836, -836,
4854 -836, 0, 0, 0, 368, 369, 370, 371, 372, 373,
4855 374, 375, 376, 377, 378, 379, 380, 0, 0, 0,
4856 0, 381, 382, 0, -836, -836, 0, 0, 0, 0,
4857 0, 0, 0, 0, -836, -836, -836, -836, -836, -836,
4858 -836, -836, -836, -836, -836, -836, -836, 0, 0, 0,
4859 0, -836, -836, -836, -836, 0, 885, -836, 0, 0,
4860 0, 384, -836, 385, 386, 387, 388, 389, 390, 391,
4861 392, 393, 394, 0, 0, 0, -836, 0, 0, -836,
4862 259, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4863 -146, -836, -836, -836, -836, -836, -836, -836, -836, -836,
4864 -836, -836, -836, 0, 0, 0, 0, -836, -836, -836,
4865 -836, -836, -700, 0, -836, -836, -836, 0, 0, 0,
4866 -700, -700, -700, 0, 0, -700, -700, -700, 0, -700,
4867 0, 0, 0, 0, 0, 0, 0, -700, 0, -700,
4868 -700, -700, 0, 0, 0, 0, 0, 0, 0, -700,
4869 -700, 0, -700, -700, -700, -700, -700, 0, 0, 0,
4870 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
4871 378, 379, 380, 0, 0, 0, 0, 381, 382, 0,
4872 -700, -700, 0, 0, 0, 0, 0, 0, 0, 0,
4873 -700, -700, -700, -700, -700, -700, -700, -700, -700, -700,
4874 -700, -700, -700, 0, 0, 0, 0, -700, -700, -700,
4875 -700, 0, -700, -700, 0, 0, 0, 384, -700, 385,
4876 386, 387, 388, 389, 390, 391, 392, 393, 394, 0,
4877 0, 0, -700, 0, 0, -700, 0, 0, 0, 0,
4878 0, 0, 0, 0, 0, 0, -700, -700, -700, -700,
4879 -700, -700, -700, -700, -700, -700, -700, -700, -700, 0,
4880 0, 0, 0, 0, -700, -700, -700, -700, -701, 0,
4881 -700, -700, -700, 0, 0, 0, -701, -701, -701, 0,
4882 0, -701, -701, -701, 0, -701, 0, 0, 0, 0,
4883 0, 0, 0, -701, 0, -701, -701, -701, 0, 0,
4884 0, 0, 0, 0, 0, -701, -701, 0, -701, -701,
4885 -701, -701, -701, 0, 0, 0, 368, 369, 370, 371,
4886 372, 373, 374, 375, 376, 377, 378, -855, -855, 0,
4887 0, 0, 0, 381, 382, 0, -701, -701, 0, 0,
4888 0, 0, 0, 0, 0, 0, -701, -701, -701, -701,
4889 -701, -701, -701, -701, -701, -701, -701, -701, -701, 0,
4890 0, 0, 0, -701, -701, -701, -701, 0, -701, -701,
4891 0, 0, 0, 0, -701, 385, 386, 387, 388, 389,
4892 390, 391, 392, 393, 394, 0, 0, 0, -701, 0,
4893 0, -701, 0, 0, 0, 0, 0, 0, 0, 0,
4894 0, 0, -701, -701, -701, -701, -701, -701, -701, -701,
4895 -701, -701, -701, -701, -701, 0, 0, 0, 0, 0,
4896 -701, -701, -701, -701, -837, 0, -701, -701, -701, 0,
4897 0, 0, -837, -837, -837, 0, 0, -837, -837, -837,
4898 0, -837, 0, 0, 0, 0, 0, 0, 0, -837,
4899 -837, -837, -837, -837, 0, 0, 0, 0, 0, 0,
4900 0, -837, -837, 0, -837, -837, -837, -837, -837, 0,
4901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4903 0, 0, -837, -837, 0, 0, 0, 0, 0, 0,
4904 0, 0, -837, -837, -837, -837, -837, -837, -837, -837,
4905 -837, -837, -837, -837, -837, 0, 0, 0, 0, -837,
4906 -837, -837, -837, 0, 0, -837, 0, 0, 0, 0,
4907 -837, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4908 0, 0, 0, 0, -837, 0, 0, -837, 0, 0,
4909 0, 0, 0, 0, 0, 0, 0, 0, 0, -837,
4910 -837, -837, -837, -837, -837, -837, -837, -837, -837, -837,
4911 -837, 0, 0, 0, 0, -837, -837, -837, -837, -837,
4912 -838, 0, -837, -837, -837, 0, 0, 0, -838, -838,
4913 -838, 0, 0, -838, -838, -838, 0, -838, 0, 0,
4914 0, 0, 0, 0, 0, -838, -838, -838, -838, -838,
4915 0, 0, 0, 0, 0, 0, 0, -838, -838, 0,
4916 -838, -838, -838, -838, -838, 0, 0, 0, 0, 0,
4917 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4918 0, 0, 0, 0, 0, 0, 0, 0, -838, -838,
4919 0, 0, 0, 0, 0, 0, 0, 0, -838, -838,
4920 -838, -838, -838, -838, -838, -838, -838, -838, -838, -838,
4921 -838, 0, 0, 0, 0, -838, -838, -838, -838, 0,
4922 0, -838, 0, 0, 0, 0, -838, 0, 0, 0,
4923 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4924 -838, 0, 0, -838, 0, 0, 0, 0, 0, 0,
4925 0, 0, 0, 0, 0, -838, -838, -838, -838, -838,
4926 -838, -838, -838, -838, -838, -838, -838, 0, 0, 0,
4927 0, -838, -838, -838, -838, -838, -514, 0, -838, -838,
4928 -838, 0, 0, 0, -514, -514, -514, 0, 0, -514,
4929 -514, -514, 0, -514, 0, 0, 0, 0, 0, 0,
4930 0, -514, -514, -514, -514, 0, 0, 0, 0, 0,
4931 0, 0, 0, -514, -514, 0, -514, -514, -514, -514,
4932 -514, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4933 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4934 0, 0, 0, 0, -514, -514, 0, 0, 0, 0,
4935 0, 0, 0, 0, -514, -514, -514, -514, -514, -514,
4936 -514, -514, -514, -514, -514, -514, -514, 0, 0, 0,
4937 0, -514, -514, -514, -514, 0, 0, -514, 0, 0,
4938 0, 0, -514, 0, 0, 0, 0, 0, 0, 0,
4939 0, 0, 0, 0, 0, 0, -514, 0, 0, 0,
4940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4941 0, -514, 0, -514, -514, -514, -514, -514, -514, -514,
4942 -514, -514, -514, 0, 0, 0, 0, -514, -514, -514,
4943 -514, -514, -350, 255, -514, -514, -514, 0, 0, 0,
4944 -350, -350, -350, 0, 0, -350, -350, -350, 0, -350,
4945 0, 0, 0, 0, 0, 0, 0, -350, 0, -350,
4946 -350, -350, 0, 0, 0, 0, 0, 0, 0, -350,
4947 -350, 0, -350, -350, -350, -350, -350, 0, 0, 0,
4948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4950 -350, -350, 0, 0, 0, 0, 0, 0, 0, 0,
4951 -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
4952 -350, -350, -350, 0, 0, 0, 0, -350, -350, -350,
4953 -350, 0, 0, -350, 0, 0, 0, 0, -350, 0,
4954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4955 0, 0, -350, 0, 0, -350, 0, 0, 0, 0,
4956 0, 0, 0, 0, 0, 0, 0, -350, -350, -350,
4957 -350, -350, -350, -350, -350, -350, -350, -350, -350, 0,
4958 0, 0, 0, 0, -350, -350, -350, -350, -854, 0,
4959 -350, -350, -350, 0, 0, 0, -854, -854, -854, 0,
4960 0, -854, -854, -854, 0, -854, 0, 0, 0, 0,
4961 0, 0, 0, -854, -854, -854, -854, 0, 0, 0,
4962 0, 0, 0, 0, 0, -854, -854, 0, -854, -854,
4963 -854, -854, -854, 0, 0, 0, 0, 0, 0, 0,
4964 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4965 0, 0, 0, 0, 0, 0, -854, -854, 0, 0,
4966 0, 0, 0, 0, 0, 0, -854, -854, -854, -854,
4967 -854, -854, -854, -854, -854, -854, -854, -854, -854, 0,
4968 0, 0, 0, -854, -854, -854, -854, 0, 0, -854,
4969 0, 0, 0, 0, -854, 0, 0, 0, 0, 0,
4970 0, 0, 0, 0, 0, 0, 0, 0, -854, 0,
4971 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4972 0, 0, 0, -854, 0, -854, -854, -854, -854, -854,
4973 -854, -854, -854, -854, -854, 0, 0, 0, 0, -854,
4974 -854, -854, -854, -854, -356, 255, -854, -854, -854, 0,
4975 0, 0, -356, -356, -356, 0, 0, -356, -356, -356,
4976 0, -356, 0, 0, 0, 0, 0, 0, 0, -356,
4977 0, -356, -356, 0, 0, 0, 0, 0, 0, 0,
4978 0, -356, -356, 0, -356, -356, -356, -356, -356, 0,
4979 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4980 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4981 0, 0, -356, -356, 0, 0, 0, 0, 0, 0,
4982 0, 0, -356, -356, -356, -356, -356, -356, -356, -356,
4983 -356, -356, -356, -356, -356, 0, 0, 0, 0, -356,
4984 -356, -356, -356, 0, 886, -356, 0, 0, 0, 0,
4985 -356, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4986 0, 0, 0, 0, -356, 0, 0, 0, 0, 0,
4987 0, 0, 0, 0, 0, 0, 0, 0, -147, -356,
4988 0, -356, -356, -356, -356, -356, -356, -356, -356, -356,
4989 -356, 0, 0, 0, 0, 829, -356, -356, -356, -356,
4990 -363, 0, -356, -356, -356, 0, 0, 0, -363, -363,
4991 -363, 0, 0, -363, -363, -363, 0, -363, 0, 0,
4992 0, 0, 0, 0, 0, -363, 0, -363, -363, 0,
4993 0, 0, 0, 0, 0, 0, 0, -363, -363, 0,
4994 -363, -363, -363, -363, -363, 0, 0, 0, 0, 0,
4995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4996 0, 0, 0, 0, 0, 0, 0, 0, -363, -363,
4997 0, 0, 0, 0, 0, 0, 0, 0, -363, -363,
4998 -363, -363, -363, -363, -363, -363, -363, -363, -363, -363,
4999 -363, 0, 0, 0, 0, -363, -363, -363, -363, 0,
5000 0, -363, 0, 0, 0, 0, -363, 0, 0, 0,
5001 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5002 -363, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5003 0, 0, 0, 0, 0, -363, 0, -363, -363, -363,
5004 -363, -363, -363, -363, -363, -363, -363, 0, 0, 0,
5005 0, 0, -363, -363, -363, -363, -836, 451, -363, -363,
5006 -363, 0, 0, 0, -836, -836, -836, 0, 0, 0,
5007 -836, -836, 0, -836, 0, 0, 0, 0, 0, 0,
5008 0, -836, -836, 0, 0, 0, 0, 0, 0, 0,
5009 0, 0, 0, -836, -836, 0, -836, -836, -836, -836,
5010 -836, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5011 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5012 0, 0, 0, 0, -836, -836, 0, 0, 0, 0,
5013 0, 0, 0, 0, -836, -836, -836, -836, -836, -836,
5014 -836, -836, -836, -836, -836, -836, -836, 0, 0, 0,
5015 0, -836, -836, -836, -836, 0, 827, -836, 0, 0,
5016 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5017 0, 0, 0, 0, 0, 0, -836, 0, 0, 0,
5018 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5019 -146, -836, 0, -836, -836, -836, -836, -836, -836, -836,
5020 -836, -836, -836, 0, 0, 0, 0, -836, -836, -836,
5021 -836, -137, -836, 0, -836, 0, -836, 0, 0, 0,
5022 -836, -836, -836, 0, 0, 0, -836, -836, 0, -836,
5023 0, 0, 0, 0, 0, 0, 0, -836, -836, 0,
5024 0, 0, 0, 0, 0, 0, 0, 0, 0, -836,
5025 -836, 0, -836, -836, -836, -836, -836, 0, 0, 0,
5026 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5028 -836, -836, 0, 0, 0, 0, 0, 0, 0, 0,
5029 -836, -836, -836, -836, -836, -836, -836, -836, -836, -836,
5030 -836, -836, -836, 0, 0, 0, 0, -836, -836, -836,
5031 -836, 0, 827, -836, 0, 0, 0, 0, 0, 0,
5032 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5033 0, 0, -836, 0, 0, 0, 0, 0, 0, 0,
5034 0, 0, 0, 0, 0, 0, -146, -836, 0, -836,
5035 -836, -836, -836, -836, -836, -836, -836, -836, -836, 0,
5036 0, 0, 0, -836, -836, -836, -836, -836, -356, 0,
5037 -836, 0, -836, 0, 0, 0, -356, -356, -356, 0,
5038 0, 0, -356, -356, 0, -356, 0, 0, 0, 0,
5039 0, 0, 0, -356, 0, 0, 0, 0, 0, 0,
5040 0, 0, 0, 0, 0, -356, -356, 0, -356, -356,
5041 -356, -356, -356, 0, 0, 0, 0, 0, 0, 0,
5042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5043 0, 0, 0, 0, 0, 0, -356, -356, 0, 0,
5044 0, 0, 0, 0, 0, 0, -356, -356, -356, -356,
5045 -356, -356, -356, -356, -356, -356, -356, -356, -356, 0,
5046 0, 0, 0, -356, -356, -356, -356, 0, 828, -356,
5047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5048 0, 0, 0, 0, 0, 0, 0, 0, -356, 0,
5049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5050 0, 0, -147, -356, 0, -356, -356, -356, -356, -356,
5051 -356, -356, -356, -356, -356, 0, 0, 0, 0, 829,
5052 -356, -356, -356, -138, -356, 0, -356, 0, -356, 0,
5053 0, 0, -356, -356, -356, 0, 0, 0, -356, -356,
5054 0, -356, 0, 0, 0, 0, 0, 0, 0, -356,
5055 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5056 0, -356, -356, 0, -356, -356, -356, -356, -356, 0,
5057 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5058 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5059 0, 0, -356, -356, 0, 0, 0, 0, 0, 0,
5060 0, 0, -356, -356, -356, -356, -356, -356, -356, -356,
5061 -356, -356, -356, -356, -356, 0, 0, 0, 0, -356,
5062 -356, -356, -356, 0, 828, -356, 0, 0, 0, 0,
5063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5064 0, 0, 0, 0, -356, 0, 0, 0, 0, 0,
5065 0, 0, 0, 0, 0, 0, 0, 0, -147, -356,
5066 0, -356, -356, -356, -356, -356, -356, -356, -356, -356,
5067 -356, 0, 0, 0, 0, 829, -356, -356, -356, -356,
5068 0, 0, -356, 3, -356, 4, 5, 6, 7, 8,
5069 -854, -854, -854, 9, 10, 0, 0, -854, 11, 0,
5070 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5071 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5072 0, 26, 0, 0, 0, 0, 0, 27, 28, 284,
5073 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5074 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5075 -854, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5076 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5077 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5078 0, 51, 0, 0, 52, 53, 54, 55, 0, 56,
5079 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5080 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5081 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5082 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
5083 67, 68, 0, 0, 0, 3, -854, 4, 5, 6,
5084 7, 8, -854, 0, -854, 9, 10, 0, -854, -854,
5085 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5086 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5087 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5088 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
5089 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5090 0, 0, -854, 0, 0, 0, 0, 0, 0, 0,
5091 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5092 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5093 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5094 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5095 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5096 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5097 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5098 0, 66, 67, 68, 0, 0, 0, 3, -854, 4,
5099 5, 6, 7, 8, -854, 0, -854, 9, 10, 0,
5100 0, -854, 11, -854, 12, 13, 14, 15, 16, 17,
5101 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
5102 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
5103 0, 27, 28, 284, 30, 31, 32, 33, 34, 35,
5104 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5105 45, 46, 0, 0, -854, 0, 0, 0, 0, 0,
5106 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5107 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5108 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
5109 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
5110 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
5111 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5112 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5113 0, 0, 0, 66, 67, 68, 0, 0, 0, 3,
5114 -854, 4, 5, 6, 7, 8, -854, 0, -854, 9,
5115 10, 0, 0, -854, 11, 0, 12, 13, 14, 15,
5116 16, 17, 18, -854, 0, 0, 0, 0, 19, 20,
5117 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
5118 0, 0, 0, 27, 28, 284, 30, 31, 32, 33,
5119 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
5120 43, 44, 45, 46, 0, 0, -854, 0, 0, 0,
5121 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
5122 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
5123 50, 0, 0, 0, 0, 0, 0, 51, 0, 0,
5124 52, 53, 54, 55, 0, 56, 0, 0, 57, 58,
5125 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
5126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5128 0, 0, 0, 0, 0, 66, 67, 68, 0, 0,
5129 0, 3, -854, 4, 5, 6, 7, 8, -854, 0,
5130 -854, 9, 10, 0, 0, -854, 11, 0, 12, 13,
5131 14, 15, 16, 17, 18, 0, 0, 0, 0, 0,
5132 19, 20, 21, 22, 23, 24, 25, 0, 0, 26,
5133 0, 0, 0, 0, 0, 27, 28, 284, 30, 31,
5134 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
5135 41, 42, 43, 44, 45, 46, 0, 0, -854, 0,
5136 0, 0, 0, 0, 0, 0, 47, 48, 0, 0,
5137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5138 0, 49, 50, 0, 0, 0, 0, 0, 0, 51,
5139 0, 0, 52, 53, 54, 55, 0, 56, 0, 0,
5140 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5143 0, 0, 0, 0, 0, 0, 0, 66, 67, 68,
5144 0, 0, 0, 3, -854, 4, 5, 6, 7, 8,
5145 -854, -854, -854, 9, 10, 0, 0, 0, 11, 0,
5146 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5147 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5148 0, 26, 0, 0, 0, 0, 0, 27, 28, 284,
5149 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5150 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5151 -854, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5152 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5153 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5154 0, 51, 0, 0, 52, 53, 54, 55, 0, 56,
5155 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5156 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5158 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
5159 67, 68, 0, 0, 0, 3, -854, 4, 5, 6,
5160 7, 8, -854, 0, -854, 9, 10, 0, 0, 0,
5161 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5162 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5163 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5164 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
5165 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5166 0, 0, -854, 0, 0, 0, 0, 0, 0, 0,
5167 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5168 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5169 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5170 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5171 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5173 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5174 0, 66, 67, 68, 0, 0, 0, 3, -854, 4,
5175 5, 6, 7, 8, -854, 0, 0, 9, 10, 0,
5176 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
5177 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
5178 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
5179 0, 27, 28, 284, 30, 31, 32, 33, 34, 35,
5180 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5181 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5182 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5183 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5184 0, 0, 0, 0, 0, 51, 0, 0, 285, 53,
5185 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
5186 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
5187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5189 0, 0, 0, 66, 67, 68, 0, 0, 0, 0,
5190 -854, 0, 0, 0, -854, 3, -854, 4, 5, 6,
5191 7, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5192 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5193 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5194 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5195 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
5196 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5198 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5199 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5200 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5201 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5202 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5205 0, 66, 67, 68, 0, 0, 0, 0, -854, 0,
5206 0, 0, -854, 3, -854, 4, 5, 6, 7, 8,
5207 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5208 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5209 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5210 0, 26, 0, 0, 0, 0, 0, 27, 28, 29,
5211 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5212 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5213 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5214 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5215 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5216 0, 51, 0, 0, 52, 53, 54, 55, 0, 56,
5217 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5218 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5220 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
5221 67, 68, 0, 0, -854, 3, -854, 4, 5, 6,
5222 7, 8, -854, 0, 0, 9, 10, 0, 0, 0,
5223 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5224 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5225 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5226 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
5227 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5229 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5230 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5231 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5232 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5233 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5235 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5236 0, 66, 67, 68, 0, 0, -854, 404, -854, 4,
5237 5, 6, 0, 8, -854, 0, 0, 9, 10, 0,
5238 0, 0, 11, -3, 12, 13, 14, 15, 16, 17,
5239 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
5240 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
5241 0, 0, 28, 0, 0, 31, 32, 33, 34, 35,
5242 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5243 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5244 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5245 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5246 0, 0, 0, 0, 0, 229, 0, 0, 230, 53,
5247 54, 55, 0, 0, 0, 0, 57, 58, 59, 60,
5248 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
5249 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5250 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5251 0, 0, 0, 66, 67, 68, 0, 0, 0, 0,
5252 331, 0, 0, 0, 0, 0, 332, 144, 145, 146,
5253 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
5254 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
5255 167, 0, 0, 0, 168, 169, 170, 434, 435, 436,
5256 437, 175, 176, 177, 0, 0, 0, 0, 0, 178,
5257 179, 180, 181, 438, 439, 440, 441, 186, 36, 37,
5258 442, 39, 0, 0, 0, 0, 0, 0, 0, 0,
5259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5260 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
5261 0, 197, 198, 0, 0, 0, 0, 199, 200, 201,
5262 202, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5263 0, 203, 204, 0, 0, 0, 0, 0, 0, 0,
5264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5266 0, 205, 206, 207, 208, 209, 210, 211, 212, 213,
5267 214, 0, 215, 216, 0, 0, 0, 0, 0, 0,
5268 217, 443, 144, 145, 146, 147, 148, 149, 150, 151,
5269 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
5270 162, 163, 164, 165, 166, 167, 0, 0, 0, 168,
5271 169, 170, 171, 172, 173, 174, 175, 176, 177, 0,
5272 0, 0, 0, 0, 178, 179, 180, 181, 182, 183,
5273 184, 185, 186, 36, 37, 187, 39, 0, 0, 0,
5274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5275 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5276 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5277 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5278 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5279 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5280 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5281 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5282 209, 210, 211, 212, 213, 214, 0, 215, 216, 0,
5283 0, 0, 0, 0, 0, 217, 144, 145, 146, 147,
5284 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
5285 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
5286 0, 0, 0, 168, 169, 170, 171, 172, 173, 174,
5287 175, 176, 177, 0, 0, 0, 0, 0, 178, 179,
5288 180, 181, 182, 183, 184, 185, 186, 262, 0, 187,
5289 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5290 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5291 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5292 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5293 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5294 203, 204, 0, 0, 58, 0, 0, 0, 0, 0,
5295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5296 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5297 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5298 0, 215, 216, 0, 0, 0, 0, 0, 0, 217,
5299 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
5300 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
5301 164, 165, 166, 167, 0, 0, 0, 168, 169, 170,
5302 171, 172, 173, 174, 175, 176, 177, 0, 0, 0,
5303 0, 0, 178, 179, 180, 181, 182, 183, 184, 185,
5304 186, 0, 0, 187, 0, 0, 0, 0, 0, 0,
5305 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5306 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5307 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5308 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5309 0, 0, 0, 0, 203, 204, 0, 0, 58, 0,
5310 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5311 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5312 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5313 211, 212, 213, 214, 0, 215, 216, 0, 0, 0,
5314 0, 0, 0, 217, 144, 145, 146, 147, 148, 149,
5315 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
5316 160, 161, 162, 163, 164, 165, 166, 167, 0, 0,
5317 0, 168, 169, 170, 171, 172, 173, 174, 175, 176,
5318 177, 0, 0, 0, 0, 0, 178, 179, 180, 181,
5319 182, 183, 184, 185, 186, 0, 0, 187, 0, 0,
5320 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5321 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5322 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5323 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5324 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5327 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5328 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5329 216, 4, 5, 6, 0, 8, 0, 217, 0, 9,
5330 10, 0, 0, 0, 11, 0, 12, 13, 14, 270,
5331 271, 17, 18, 0, 0, 0, 0, 0, 19, 20,
5332 272, 22, 23, 24, 25, 0, 0, 227, 0, 0,
5333 0, 0, 0, 0, 302, 0, 0, 31, 32, 33,
5334 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
5335 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
5336 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5338 0, 0, 0, 0, 0, 0, 0, 303, 0, 0,
5339 230, 53, 54, 55, 0, 0, 0, 0, 57, 58,
5340 59, 60, 61, 62, 63, 64, 65, 0, 0, 4,
5341 5, 6, 0, 8, 0, 0, 0, 9, 10, 0,
5342 0, 0, 11, 0, 12, 13, 14, 270, 271, 17,
5343 18, 0, 0, 0, 0, 304, 19, 20, 272, 22,
5344 23, 24, 25, 305, 0, 227, 0, 0, 0, 0,
5345 0, 0, 302, 0, 0, 31, 32, 33, 34, 35,
5346 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5347 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5348 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5349 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5350 0, 0, 0, 0, 0, 303, 0, 0, 230, 53,
5351 54, 55, 0, 0, 0, 0, 57, 58, 59, 60,
5352 61, 62, 63, 64, 65, 0, 0, 4, 5, 6,
5353 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5354 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5355 0, 0, 0, 304, 19, 20, 21, 22, 23, 24,
5356 25, 612, 0, 227, 0, 0, 0, 0, 0, 0,
5357 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5358 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5359 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5360 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5361 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5362 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5363 0, 231, 232, 233, 57, 58, 234, 60, 61, 62,
5364 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5365 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5366 0, 0, 0, 0, 0, 0, 4, 5, 6, 0,
5367 8, 66, 235, 68, 9, 10, 0, 0, 259, 11,
5368 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5369 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
5370 0, 0, 26, 0, 0, 0, 0, 0, 0, 28,
5371 0, 0, 31, 32, 33, 34, 35, 36, 37, 38,
5372 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5373 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
5374 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5375 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5376 0, 0, 229, 0, 0, 230, 53, 54, 55, 0,
5377 0, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5378 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5379 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5380 0, 0, 0, 3, 0, 4, 5, 6, 7, 8,
5381 66, 67, 68, 9, 10, 0, 0, 259, 11, 0,
5382 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5383 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5384 0, 26, 0, 0, 0, 0, 0, 27, 28, 0,
5385 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5386 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5387 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5389 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5390 0, 51, 0, 0, 52, 53, 54, 55, 0, 56,
5391 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5392 65, 0, 0, 404, 0, 4, 5, 6, 0, 8,
5393 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5394 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5395 67, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5396 0, 26, 0, 0, 0, 0, 0, 0, 28, 0,
5397 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5398 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5399 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5401 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5402 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5403 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5404 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5405 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5406 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5407 67, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5408 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5409 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5410 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5411 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5413 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5414 0, 229, 0, 0, 230, 53, 54, 55, 0, 231,
5415 232, 233, 57, 58, 234, 60, 61, 62, 63, 64,
5416 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5417 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5418 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5419 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5420 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5421 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5422 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5423 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5425 0, 0, 0, 49, 479, 0, 0, 0, 0, 0,
5426 0, 229, 0, 0, 230, 53, 54, 55, 0, 231,
5427 232, 233, 57, 58, 234, 60, 61, 62, 63, 64,
5428 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5429 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5430 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5431 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5432 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5433 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5434 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5435 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5437 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5438 0, 229, 0, 0, 230, 53, 54, 55, 0, 231,
5439 232, 233, 57, 58, 234, 60, 61, 62, 63, 64,
5440 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5441 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5442 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5443 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5444 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5445 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5446 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5447 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5449 0, 0, 0, 49, 479, 0, 0, 0, 0, 0,
5450 0, 229, 0, 0, 230, 53, 54, 55, 0, 231,
5451 232, 233, 57, 58, 234, 60, 61, 62, 63, 64,
5452 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5453 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5454 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5455 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5456 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5457 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5458 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5459 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5461 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5462 0, 229, 0, 0, 230, 53, 54, 55, 0, 231,
5463 232, 0, 57, 58, 234, 60, 61, 62, 63, 64,
5464 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5465 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5466 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5467 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5468 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5469 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5470 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5471 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5473 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5474 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5475 232, 233, 57, 58, 234, 60, 61, 62, 63, 64,
5476 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5477 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5478 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5479 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5480 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5481 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5482 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5483 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5484 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5485 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5486 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5487 232, 0, 57, 58, 234, 60, 61, 62, 63, 64,
5488 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5489 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5490 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5491 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5492 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5493 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5494 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5495 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5496 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5497 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5498 0, 229, 0, 0, 230, 53, 54, 55, 0, 802,
5499 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5500 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5501 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5502 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5503 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5504 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5505 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5506 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5507 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5508 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5509 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5510 0, 813, 0, 0, 230, 53, 54, 55, 0, 802,
5511 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5512 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5513 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5514 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5515 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5516 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5517 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5518 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5519 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5521 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5522 0, 229, 0, 0, 230, 53, 54, 55, 0, 973,
5523 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5524 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5525 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5526 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5527 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5528 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5529 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5530 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5531 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5533 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5534 0, 229, 0, 0, 230, 53, 54, 55, 0, 1022,
5535 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5536 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5537 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5538 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5539 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5540 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5541 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5542 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5543 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5545 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5546 0, 229, 0, 0, 230, 53, 54, 55, 0, 802,
5547 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5548 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5549 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5550 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5551 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5552 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5553 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5554 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5555 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5557 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5558 0, 229, 0, 0, 230, 53, 54, 55, 0, 1155,
5559 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5560 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5561 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5562 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5563 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5564 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5565 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5566 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5567 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5569 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5570 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5571 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5572 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5573 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5574 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5575 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5576 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5577 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5578 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5579 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5581 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5582 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5583 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5584 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5585 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5586 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5587 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5588 0, 26, 0, 0, 0, 0, 0, 0, 28, 0,
5589 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5590 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5591 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5593 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5594 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5595 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5596 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5597 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5598 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5599 67, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5600 0, 784, 0, 0, 0, 0, 0, 0, 28, 0,
5601 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5602 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5603 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5604 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5605 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5606 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5607 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5608 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5609 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5610 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5611 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5612 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5613 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5614 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5615 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5617 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5618 0, 813, 0, 0, 230, 53, 54, 55, 0, 0,
5619 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5620 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5621 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5622 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5623 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5624 0, 893, 0, 0, 0, 0, 0, 0, 28, 0,
5625 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5626 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5627 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5628 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5629 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5630 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5631 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5632 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5633 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5634 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5635 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5636 0, 227, 0, 0, 0, 0, 0, 0, 302, 0,
5637 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5638 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5640 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5642 0, 303, 0, 0, 363, 53, 54, 55, 0, 364,
5643 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5644 65, 0, 0, 4, 5, 6, 0, 8, 0, 0,
5645 0, 9, 10, 0, 0, 0, 11, 0, 12, 13,
5646 14, 270, 271, 17, 18, 0, 0, 0, 0, 304,
5647 19, 20, 272, 22, 23, 24, 25, 0, 0, 227,
5648 0, 0, 0, 0, 0, 0, 302, 0, 0, 31,
5649 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
5650 41, 42, 43, 44, 45, 46, 0, 0, 0, 0,
5651 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5653 0, 0, 0, 0, 0, 0, 0, 0, 0, 415,
5654 0, 0, 52, 53, 54, 55, 0, 56, 0, 0,
5655 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5656 0, 4, 5, 6, 0, 8, 0, 0, 0, 9,
5657 10, 0, 0, 0, 11, 0, 12, 13, 14, 270,
5658 271, 17, 18, 0, 0, 0, 0, 304, 19, 20,
5659 272, 22, 23, 24, 25, 0, 0, 227, 0, 0,
5660 0, 0, 0, 0, 302, 0, 0, 31, 32, 33,
5661 423, 35, 36, 37, 424, 39, 0, 40, 41, 42,
5662 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
5663 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5664 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5665 0, 0, 0, 425, 0, 0, 0, 426, 0, 0,
5666 230, 53, 54, 55, 0, 0, 0, 0, 57, 58,
5667 59, 60, 61, 62, 63, 64, 65, 0, 0, 4,
5668 5, 6, 0, 8, 0, 0, 0, 9, 10, 0,
5669 0, 0, 11, 0, 12, 13, 14, 270, 271, 17,
5670 18, 0, 0, 0, 0, 304, 19, 20, 272, 22,
5671 23, 24, 25, 0, 0, 227, 0, 0, 0, 0,
5672 0, 0, 302, 0, 0, 31, 32, 33, 423, 35,
5673 36, 37, 424, 39, 0, 40, 41, 42, 43, 44,
5674 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5675 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5676 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5677 0, 0, 0, 0, 0, 426, 0, 0, 230, 53,
5678 54, 55, 0, 0, 0, 0, 57, 58, 59, 60,
5679 61, 62, 63, 64, 65, 0, 0, 4, 5, 6,
5680 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5681 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5682 0, 0, 0, 304, 19, 20, 272, 22, 23, 24,
5683 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5684 302, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5685 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5686 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5687 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5688 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5689 0, 0, 0, 303, 0, 0, 363, 53, 54, 55,
5690 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5691 63, 64, 65, 0, 0, 4, 5, 6, 0, 8,
5692 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5693 12, 13, 14, 270, 271, 17, 18, 0, 0, 0,
5694 0, 304, 19, 20, 272, 22, 23, 24, 25, 0,
5695 0, 227, 0, 0, 0, 0, 0, 0, 302, 0,
5696 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5697 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5698 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5699 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5700 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5701 0, 1221, 0, 0, 230, 53, 54, 55, 0, 0,
5702 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5703 65, 0, 0, 4, 5, 6, 0, 8, 0, 0,
5704 0, 9, 10, 0, 0, 0, 11, 0, 12, 13,
5705 14, 270, 271, 17, 18, 0, 0, 0, 0, 304,
5706 19, 20, 272, 22, 23, 24, 25, 0, 0, 227,
5707 0, 0, 0, 0, 0, 0, 302, 0, 0, 31,
5708 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
5709 41, 42, 43, 44, 45, 46, 0, 0, 0, 0,
5710 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5711 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5712 0, 0, 0, 0, 0, 0, 704, 643, 0, 1344,
5713 705, 0, 230, 53, 54, 55, 0, 0, 0, 0,
5714 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5715 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
5716 0, 197, 198, 0, 0, 0, 0, 199, 200, 201,
5717 202, 0, 0, 0, 0, 0, 0, 304, 0, 0,
5718 0, 203, 204, 0, 0, 0, 0, 0, 0, 0,
5719 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5720 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5721 0, 205, 206, 207, 208, 209, 210, 211, 212, 213,
5722 214, 0, 215, 216, 707, 651, 0, 0, 708, 0,
5723 217, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5724 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
5725 190, 191, 192, 193, 194, 195, 196, 0, 0, 197,
5726 198, 0, 0, 0, 0, 199, 200, 201, 202, 0,
5727 0, 0, 0, 0, 0, 0, 0, 0, 0, 203,
5728 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5730 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
5731 206, 207, 208, 209, 210, 211, 212, 213, 214, 0,
5732 215, 216, 704, 643, 0, 0, 724, 0, 217, 0,
5733 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5734 0, 0, 0, 0, 0, 0, 188, 189, 190, 191,
5735 192, 193, 194, 195, 196, 0, 0, 197, 198, 0,
5736 0, 0, 0, 199, 200, 201, 202, 0, 0, 0,
5737 0, 0, 0, 0, 0, 0, 0, 203, 204, 0,
5738 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5739 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5740 0, 0, 0, 0, 0, 0, 0, 205, 206, 207,
5741 208, 209, 210, 211, 212, 213, 214, 0, 215, 216,
5742 735, 643, 0, 0, 736, 0, 217, 0, 0, 0,
5743 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5744 0, 0, 0, 0, 188, 189, 190, 191, 192, 193,
5745 194, 195, 196, 0, 0, 197, 198, 0, 0, 0,
5746 0, 199, 200, 201, 202, 0, 0, 0, 0, 0,
5747 0, 0, 0, 0, 0, 203, 204, 0, 0, 0,
5748 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5750 0, 0, 0, 0, 0, 205, 206, 207, 208, 209,
5751 210, 211, 212, 213, 214, 0, 215, 216, 738, 651,
5752 0, 0, 739, 0, 217, 0, 0, 0, 0, 0,
5753 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5754 0, 0, 188, 189, 190, 191, 192, 193, 194, 195,
5755 196, 0, 0, 197, 198, 0, 0, 0, 0, 199,
5756 200, 201, 202, 0, 0, 0, 0, 0, 0, 0,
5757 0, 0, 0, 203, 204, 0, 0, 0, 0, 0,
5758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5759 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5760 0, 0, 0, 205, 206, 207, 208, 209, 210, 211,
5761 212, 213, 214, 0, 215, 216, 857, 643, 0, 0,
5762 858, 0, 217, 0, 0, 0, 0, 0, 0, 0,
5763 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5764 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
5765 0, 197, 198, 0, 0, 0, 0, 199, 200, 201,
5766 202, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5767 0, 203, 204, 0, 0, 0, 0, 0, 0, 0,
5768 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5769 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5770 0, 205, 206, 207, 208, 209, 210, 211, 212, 213,
5771 214, 0, 215, 216, 860, 651, 0, 0, 861, 0,
5772 217, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5773 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
5774 190, 191, 192, 193, 194, 195, 196, 0, 0, 197,
5775 198, 0, 0, 0, 0, 199, 200, 201, 202, 0,
5776 0, 0, 0, 0, 0, 0, 0, 0, 0, 203,
5777 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5778 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5779 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
5780 206, 207, 208, 209, 210, 211, 212, 213, 214, 0,
5781 215, 216, 866, 643, 0, 0, 867, 0, 217, 0,
5782 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5783 0, 0, 0, 0, 0, 0, 188, 189, 190, 191,
5784 192, 193, 194, 195, 196, 0, 0, 197, 198, 0,
5785 0, 0, 0, 199, 200, 201, 202, 0, 0, 0,
5786 0, 0, 0, 0, 0, 0, 0, 203, 204, 0,
5787 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5788 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5789 0, 0, 0, 0, 0, 0, 0, 205, 206, 207,
5790 208, 209, 210, 211, 212, 213, 214, 0, 215, 216,
5791 689, 651, 0, 0, 690, 0, 217, 0, 0, 0,
5792 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5793 0, 0, 0, 0, 188, 189, 190, 191, 192, 193,
5794 194, 195, 196, 0, 0, 197, 198, 0, 0, 0,
5795 0, 199, 200, 201, 202, 0, 0, 0, 0, 0,
5796 0, 0, 0, 0, 0, 203, 204, 0, 0, 0,
5797 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5798 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5799 0, 0, 0, 0, 0, 205, 206, 207, 208, 209,
5800 210, 211, 212, 213, 214, 0, 215, 216, 1028, 643,
5801 0, 0, 1029, 0, 217, 0, 0, 0, 0, 0,
5802 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5803 0, 0, 188, 189, 190, 191, 192, 193, 194, 195,
5804 196, 0, 0, 197, 198, 0, 0, 0, 0, 199,
5805 200, 201, 202, 0, 0, 0, 0, 0, 0, 0,
5806 0, 0, 0, 203, 204, 0, 0, 0, 0, 0,
5807 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5808 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5809 0, 0, 0, 205, 206, 207, 208, 209, 210, 211,
5810 212, 213, 214, 0, 215, 216, 1031, 651, 0, 0,
5811 1032, 0, 217, 0, 0, 0, 0, 0, 0, 0,
5812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5813 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
5814 0, 197, 198, 0, 0, 0, 0, 199, 200, 201,
5815 202, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5816 0, 203, 204, 0, 0, 0, 0, 0, 0, 0,
5817 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5818 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5819 0, 205, 206, 207, 208, 209, 210, 211, 212, 213,
5820 214, 0, 215, 216, 1363, 643, 0, 0, 1364, 0,
5821 217, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5822 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
5823 190, 191, 192, 193, 194, 195, 196, 0, 0, 197,
5824 198, 0, 0, 0, 0, 199, 200, 201, 202, 0,
5825 0, 0, 0, 0, 0, 0, 0, 0, 0, 203,
5826 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5827 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5828 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
5829 206, 207, 208, 209, 210, 211, 212, 213, 214, 0,
5830 215, 216, 1366, 651, 0, 0, 1367, 0, 217, 0,
5831 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5832 0, 0, 0, 0, 0, 0, 188, 189, 190, 191,
5833 192, 193, 194, 195, 196, 0, 0, 197, 198, 0,
5834 0, 0, 0, 199, 200, 201, 202, 0, 0, 0,
5835 0, 0, 0, 0, 0, 0, 0, 203, 204, 0,
5836 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5837 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5838 0, 0, 0, 0, 0, 0, 0, 205, 206, 207,
5839 208, 209, 210, 211, 212, 213, 214, 0, 215, 216,
5840 1420, 643, 0, 0, 1421, 0, 217, 0, 0, 0,
5841 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5842 0, 0, 0, 0, 188, 189, 190, 191, 192, 193,
5843 194, 195, 196, 0, 0, 197, 198, 0, 0, 0,
5844 0, 199, 200, 201, 202, 0, 0, 0, 0, 0,
5845 0, 0, 0, 0, 0, 203, 204, 0, 0, 0,
5846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5847 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5848 0, 0, 0, 0, 0, 205, 206, 207, 208, 209,
5849 210, 211, 212, 213, 214, 0, 215, 216, 0, 0,
5853static const yytype_int16 yycheck[] =
5855 1, 70, 59, 70, 7, 15, 16, 408, 56, 107,
5856 15, 16, 58, 58, 116, 52, 53, 344, 1, 101,
5857 67, 399, 349, 401, 27, 104, 400, 426, 107, 13,
5858 14, 768, 766, 115, 255, 252, 7, 27, 107, 15,
5859 16, 89, 599, 766, 949, 602, 845, 615, 601, 15,
5860 16, 52, 53, 54, 55, 58, 27, 84, 469, 477,
5861 108, 109, 110, 21, 575, 111, 601, 855, 63, 64,
5862 65, 344, 89, 911, 469, 571, 349, 455, 54, 575,
5863 296, 56, 477, 525, 300, 605, 113, 589, 54, 55,
5864 1033, 1034, 913, 595, 472, 1194, 474, 515, 766, 473,
5865 52, 512, 112, 66, 630, 25, 25, 112, 111, 1208,
5866 1034, 81, 774, 0, 103, 104, 27, 825, 107, 15,
5867 16, 1318, 774, 13, 502, 682, 84, 29, 26, 1336,
5868 69, 1, 565, 25, 285, 1194, 112, 78, 66, 768,
5869 101, 109, 1000, 69, 66, 774, 112, 25, 25, 0,
5870 528, 1210, 25, 527, 1059, 1070, 1218, 1219, 97, 98,
5871 1033, 1034, 154, 25, 81, 247, 13, 66, 25, 134,
5872 612, 30, 98, 141, 10, 25, 100, 234, 13, 100,
5873 320, 321, 52, 53, 151, 26, 56, 28, 723, 287,
5874 134, 119, 157, 230, 155, 277, 26, 119, 13, 1104,
5875 56, 1106, 69, 144, 145, 146, 1403, 1000, 1066, 1416,
5876 134, 155, 363, 134, 153, 1158, 112, 155, 287, 89,
5877 287, 123, 121, 122, 706, 124, 37, 38, 310, 230,
5878 97, 98, 68, 120, 1158, 155, 155, 157, 108, 109,
5879 110, 111, 28, 154, 245, 255, 1084, 257, 285, 160,
5880 255, 252, 257, 151, 255, 737, 1355, 305, 337, 338,
5881 339, 340, 1083, 155, 154, 266, 13, 484, 1211, 977,
5882 160, 260, 261, 1066, 1011, 1218, 1219, 155, 155, 255,
5883 679, 257, 155, 266, 285, 1158, 153, 13, 305, 1351,
5884 1349, 257, 670, 155, 1353, 669, 1355, 715, 155, 336,
5885 157, 13, 713, 681, 274, 155, 680, 154, 865, 829,
5886 157, 1216, 1217, 160, 272, 413, 364, 275, 713, 154,
5887 715, 151, 755, 756, 161, 160, 363, 157, 854, 1244,
5888 409, 609, 13, 285, 100, 336, 418, 307, 1000, 154,
5889 1255, 304, 1257, 154, 413, 160, 425, 100, 337, 338,
5890 339, 340, 335, 342, 343, 1007, 273, 274, 1157, 13,
5891 230, 257, 363, 101, 1423, 1033, 1034, 154, 134, 1157,
5892 812, 1000, 159, 410, 411, 1168, 929, 859, 1171, 657,
5893 1173, 134, 1011, 100, 831, 663, 664, 869, 13, 364,
5894 400, 157, 839, 961, 929, 400, 266, 101, 401, 400,
5895 1105, 541, 403, 543, 1066, 264, 917, 154, 1351, 410,
5896 411, 363, 34, 160, 134, 285, 154, 134, 920, 921,
5897 409, 917, 924, 834, 926, 982, 928, 428, 154, 155,
5898 52, 1168, 1166, 66, 160, 305, 425, 1066, 155, 834,
5899 13, 451, 154, 1166, 402, 157, 451, 25, 160, 34,
5900 100, 155, 455, 100, 295, 296, 152, 134, 154, 300,
5901 15, 302, 100, 473, 999, 335, 336, 52, 473, 1384,
5902 25, 474, 473, 154, 100, 451, 100, 525, 911, 160,
5903 913, 482, 615, 484, 134, 451, 703, 134, 121, 122,
5904 1158, 494, 713, 363, 364, 768, 134, 455, 1166, 502,
5905 154, 774, 361, 469, 494, 155, 160, 366, 525, 1171,
5906 134, 789, 155, 1218, 1219, 793, 732, 527, 100, 1171,
5907 1101, 1102, 527, 494, 100, 528, 527, 938, 161, 154,
5908 1323, 600, 1325, 403, 1327, 160, 1329, 69, 290, 1168,
5909 410, 411, 1171, 1211, 344, 15, 512, 17, 1030, 349,
5910 1218, 1219, 134, 1182, 154, 451, 134, 157, 134, 98,
5911 693, 694, 58, 610, 612, 97, 98, 945, 615, 947,
5912 112, 554, 946, 155, 975, 853, 154, 155, 856, 997,
5913 158, 154, 78, 1085, 1086, 1087, 1088, 160, 598, 157,
5914 1327, 601, 870, 662, 727, 612, 100, 100, 599, 458,
5915 459, 602, 997, 1402, 744, 56, 66, 67, 467, 749,
5916 134, 1334, 108, 109, 153, 1408, 475, 476, 157, 646,
5917 69, 153, 659, 1105, 661, 157, 101, 654, 25, 1186,
5918 134, 134, 1213, 1214, 610, 100, 495, 794, 508, 615,
5919 797, 25, 693, 694, 503, 141, 693, 694, 649, 98,
5920 1083, 1084, 1053, 654, 78, 525, 155, 69, 659, 669,
5921 661, 121, 122, 155, 669, 692, 1334, 670, 669, 134,
5922 680, 1323, 25, 1000, 891, 680, 727, 34, 681, 680,
5923 727, 682, 100, 1351, 554, 733, 98, 78, 646, 1341,
5924 968, 692, 695, 971, 683, 52, 1182, 742, 1327, 451,
5925 978, 100, 703, 157, 1103, 695, 984, 1336, 158, 1079,
5926 1080, 1193, 1341, 157, 1196, 157, 733, 154, 142, 143,
5927 144, 145, 146, 160, 695, 726, 134, 1000, 480, 599,
5928 719, 483, 602, 69, 1216, 134, 488, 134, 1011, 1066,
5929 822, 52, 612, 159, 100, 56, 1147, 713, 69, 744,
5930 134, 746, 1254, 505, 749, 750, 155, 154, 155, 69,
5931 1412, 158, 98, 1320, 812, 154, 934, 725, 936, 158,
5932 154, 155, 874, 157, 158, 100, 97, 98, 134, 1000,
5933 100, 134, 69, 862, 1062, 864, 100, 1416, 98, 659,
5934 631, 661, 152, 1066, 863, 812, 66, 656, 1033, 1034,
5935 69, 154, 155, 83, 84, 158, 56, 648, 157, 134,
5936 97, 98, 682, 155, 134, 161, 1215, 69, 951, 952,
5937 134, 1303, 1304, 1305, 957, 958, 872, 69, 97, 98,
5938 155, 583, 153, 1267, 1235, 1269, 134, 696, 69, 78,
5939 841, 155, 843, 69, 845, 1066, 98, 106, 1334, 119,
5940 1336, 121, 122, 69, 124, 1341, 98, 137, 138, 611,
5941 1346, 37, 38, 733, 865, 706, 153, 98, 834, 872,
5942 1105, 97, 98, 862, 69, 864, 1246, 1247, 1248, 1249,
5943 1250, 97, 98, 1365, 153, 14, 15, 1122, 967, 69,
5944 891, 732, 69, 1026, 134, 1168, 737, 134, 1171, 155,
5945 951, 952, 97, 98, 951, 952, 957, 958, 1041, 1182,
5946 957, 958, 981, 52, 983, 899, 160, 56, 98, 929,
5947 69, 98, 56, 1158, 154, 155, 1412, 153, 1414, 966,
5948 1416, 1309, 1418, 25, 1308, 687, 946, 153, 69, 154,
5949 155, 946, 812, 784, 947, 946, 138, 1168, 97, 98,
5950 1171, 1437, 1173, 1387, 1388, 155, 1191, 1391, 1392, 1237,
5951 961, 1395, 26, 152, 69, 966, 97, 98, 827, 828,
5952 155, 603, 69, 1208, 69, 607, 835, 836, 967, 1026,
5953 158, 982, 134, 1218, 1219, 961, 69, 89, 90, 100,
5954 1041, 69, 97, 98, 1041, 865, 1430, 1431, 1432, 1433,
5955 97, 98, 97, 98, 153, 69, 1440, 759, 134, 1379,
5956 1380, 1381, 1382, 1349, 97, 98, 158, 1353, 859, 97,
5957 98, 1058, 153, 134, 40, 41, 885, 886, 869, 888,
5958 889, 154, 155, 97, 98, 155, 1020, 1021, 306, 307,
5959 152, 1024, 1025, 26, 155, 1082, 155, 1048, 153, 1050,
5960 54, 1108, 893, 58, 1327, 155, 153, 1058, 153, 1429,
5961 64, 65, 155, 1336, 1109, 66, 1067, 762, 1341, 1070,
5962 153, 766, 1073, 78, 155, 153, 134, 52, 1079, 1080,
5963 155, 1082, 155, 152, 943, 155, 69, 151, 155, 153,
5964 1091, 1092, 66, 157, 26, 13, 966, 956, 1146, 1377,
5965 17, 25, 1323, 108, 1325, 155, 1327, 112, 1329, 155,
5966 134, 78, 982, 44, 97, 98, 1153, 1154, 119, 871,
5967 121, 122, 1159, 124, 44, 1208, 1205, 152, 95, 96,
5968 1228, 44, 155, 78, 993, 1218, 1219, 69, 890, 44,
5969 892, 1223, 155, 1416, 56, 119, 1183, 121, 122, 1150,
5970 95, 96, 1153, 1154, 1024, 1025, 1157, 909, 1159, 1228,
5971 136, 1228, 66, 1033, 1034, 97, 98, 159, 151, 134,
5972 153, 8, 930, 931, 157, 142, 143, 144, 145, 146,
5973 15, 939, 1183, 155, 942, 1186, 944, 1408, 1058, 1030,
5974 1227, 52, 155, 155, 139, 140, 141, 142, 143, 144,
5975 145, 146, 66, 155, 155, 1242, 78, 40, 41, 42,
5976 43, 44, 1082, 155, 152, 119, 1205, 121, 122, 151,
5977 1268, 153, 66, 95, 96, 157, 1227, 155, 155, 1230,
5978 155, 1101, 1102, 1290, 101, 1105, 1315, 1316, 66, 9,
5979 155, 1242, 139, 1244, 155, 1246, 1247, 1248, 1249, 1250,
5980 52, 139, 1122, 155, 1255, 119, 1257, 121, 122, 155,
5981 1261, 155, 155, 155, 1105, 1106, 1267, 152, 1269, 141,
5982 142, 143, 144, 145, 146, 119, 1146, 121, 122, 155,
5983 1150, 155, 101, 1153, 1154, 52, 155, 56, 1158, 1159,
5984 160, 119, 1340, 121, 122, 158, 155, 52, 1308, 54,
5985 55, 56, 57, 1308, 155, 1000, 1309, 1308, 155, 1310,
5986 155, 1312, 52, 1183, 54, 55, 1186, 57, 152, 1320,
5987 1161, 1191, 139, 155, 1194, 155, 1315, 1316, 59, 60,
5988 61, 62, 155, 1370, 155, 155, 56, 55, 1208, 155,
5989 1210, 1200, 155, 1213, 1214, 1, 155, 102, 1218, 1219,
5990 155, 155, 1193, 335, 155, 1196, 155, 1227, 155, 15,
5991 16, 157, 102, 52, 157, 54, 55, 56, 57, 1370,
5992 155, 1066, 1242, 72, 504, 1216, 266, 1150, 1379, 1380,
5993 1381, 1382, 872, 1384, 508, 106, 1387, 1388, 610, 108,
5994 1391, 1392, 98, 1000, 1395, 110, 52, 53, 1268, 495,
5995 56, 1402, 692, 962, 54, 55, 981, 57, 1230, 911,
5996 755, 67, 1266, 102, 64, 65, 1334, 1287, 107, 1182,
5997 1092, 1265, 1403, 875, 1265, 1341, 359, 1287, 1429, 1430,
5998 1431, 1432, 1433, 89, 1211, 1211, 1207, 1312, 1402, 1440,
5999 52, 1310, 54, 55, 56, 57, 58, 103, 104, 119,
6000 1320, 107, 108, 109, 110, 543, 112, 111, 349, 1066,
6001 1066, 1397, 1303, 1304, 1305, 1217, 78, 1162, 115, -1,
6002 1340, 1166, -1, 1168, -1, -1, 1171, -1, 1173, 1349,
6003 92, -1, -1, 1353, -1, 1355, -1, 1182, -1, 52,
6004 102, 54, 55, 56, 57, 107, 108, 109, -1, 52,
6005 1370, 54, 55, 56, 57, -1, -1, -1, -1, -1,
6006 228, -1, -1, 231, 232, 233, -1, -1, -1, -1,
6007 -1, 1273, -1, -1, 1365, -1, -1, -1, -1, 141,
6008 -1, 1283, 144, 1374, 52, -1, 54, 55, 56, 57,
6009 58, -1, -1, -1, -1, 157, -1, 768, 1300, 1301,
6010 1302, -1, -1, 1423, -1, -1, 1397, -1, -1, 780,
6011 78, 1168, -1, -1, 1171, -1, 1173, 1, -1, -1,
6012 -1, -1, -1, -1, 230, 1182, -1, -1, 693, 694,
6013 -1, 15, 16, -1, 102, -1, -1, -1, -1, 107,
6014 108, 109, -1, -1, 709, 710, -1, -1, -1, 255,
6015 -1, 257, -1, -1, 260, 261, -1, -1, -1, -1,
6016 266, 52, 727, 54, 55, 56, 57, 58, 52, 53,
6017 -1, -1, -1, 141, -1, -1, 144, -1, 1323, 285,
6018 1325, -1, 1327, 67, 1329, -1, -1, 78, -1, 1334,
6019 -1, 1336, -1, -1, -1, -1, 1341, -1, -1, 305,
6020 -1, 1346, -1, -1, -1, -1, -1, -1, -1, -1,
6021 -1, 102, -1, -1, -1, -1, -1, 108, 109, 103,
6022 104, -1, -1, 107, -1, -1, -1, -1, 112, 335,
6023 336, 337, 338, 339, 340, -1, 342, 343, -1, -1,
6024 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6025 141, -1, -1, -1, -1, -1, -1, 363, 364, 1033,
6026 1034, -1, -1, 1408, -1, -1, 1323, 1412, 1325, 1414,
6027 1327, 1416, 1329, 1418, -1, -1, -1, -1, -1, 1336,
6028 -1, -1, -1, -1, 1341, -1, -1, -1, -1, 1346,
6029 -1, -1, 1437, -1, 400, -1, -1, 403, -1, -1,
6030 468, 469, -1, 409, 410, 411, -1, -1, -1, 477,
6031 -1, -1, -1, -1, -1, -1, -1, 882, -1, 425,
6032 -1, -1, -1, -1, -1, -1, -1, 1101, 1102, 1000,
6033 -1, 1105, -1, -1, -1, -1, -1, -1, 1009, -1,
6034 1011, -1, 1013, -1, 512, 451, 230, 515, 1122, -1,
6035 -1, 1408, -1, -1, -1, 1412, -1, 1414, -1, 1416,
6036 -1, 1418, -1, -1, -1, -1, -1, 473, -1, -1,
6037 -1, 255, -1, 257, -1, -1, 260, 261, -1, -1,
6038 1437, -1, 266, -1, 1158, -1, 951, 952, -1, -1,
6039 -1, -1, 957, 958, -1, 1066, -1, -1, -1, -1,
6040 -1, 285, 508, -1, -1, -1, -1, -1, -1, -1,
6041 -1, -1, -1, -1, -1, -1, -1, 1191, -1, 525,
6042 1194, 527, 590, -1, -1, -1, 991, 992, -1, 994,
6043 995, -1, -1, -1, 1208, -1, 1210, -1, -1, 1213,
6044 1214, -1, 610, -1, 1218, 1219, -1, 615, 554, -1,
6045 -1, 335, 336, 337, 338, 339, 340, -1, 342, 343,
6046 -1, -1, -1, -1, -1, -1, -1, 1033, 1034, -1,
6047 -1, -1, -1, -1, -1, -1, 1041, -1, -1, 363,
6048 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6049 -1, -1, 598, 599, -1, 601, 602, 1168, -1, -1,
6050 1065, -1, 1173, -1, 610, -1, 612, -1, 1179, 615,
6051 -1, 1182, -1, 1287, -1, -1, 400, -1, -1, 403,
6052 -1, -1, -1, -1, -1, 409, 410, 411, 52, 697,
6053 54, 55, 56, 57, 58, 1101, 1102, -1, -1, 1105,
6054 -1, 425, -1, -1, -1, 713, 52, 715, 54, 55,
6055 56, 57, 58, 659, 78, 661, 1122, -1, -1, -1,
6056 -1, -1, -1, 669, -1, -1, -1, 451, 92, -1,
6057 -1, -1, 78, -1, 680, 1349, 682, 683, 102, 1353,
6058 -1, 1355, -1, 107, 108, 109, 92, 693, 694, 473,
6059 -1, -1, 1158, -1, -1, -1, 102, -1, -1, -1,
6060 -1, -1, 108, 109, -1, 773, -1, -1, -1, -1,
6061 -1, -1, -1, 719, -1, -1, -1, 141, -1, -1,
6062 144, 727, -1, -1, 508, 1191, -1, 733, 1194, -1,
6063 -1, -1, -1, -1, 802, 141, -1, -1, -1, -1,
6064 -1, -1, 1208, 527, 1210, -1, -1, 1213, 1214, 1423,
6065 -1, -1, 1218, 1219, 1325, -1, 1327, -1, 1329, -1,
6066 -1, -1, -1, -1, -1, 1336, 834, -1, -1, -1,
6067 554, -1, -1, -1, -1, 1346, -1, -1, -1, -1,
6068 -1, -1, -1, -1, 852, -1, -1, -1, -1, -1,
6069 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6070 -1, -1, -1, -1, -1, -1, 812, -1, -1, -1,
6071 -1, -1, -1, -1, 598, 599, -1, 601, 602, -1,
6072 -1, 1287, -1, -1, -1, -1, 610, -1, -1, -1,
6073 -1, 615, -1, -1, -1, -1, -1, 1408, -1, -1,
6074 -1, -1, -1, 1414, -1, 1416, -1, 1418, -1, -1,
6075 -1, -1, -1, -1, -1, -1, 862, -1, 864, 865,
6076 -1, -1, -1, -1, -1, -1, 1437, 1, -1, -1,
6077 938, -1, -1, -1, -1, 659, -1, 661, -1, -1,
6078 -1, 15, 16, 1349, -1, 669, -1, 1353, -1, 1355,
6079 -1, -1, -1, 961, -1, -1, 680, -1, 682, 683,
6080 -1, -1, -1, -1, -1, 973, -1, -1, -1, 693,
6081 694, -1, -1, -1, -1, -1, -1, -1, 52, 53,
6082 -1, -1, -1, 929, -1, -1, -1, -1, -1, 997,
6083 -1, -1, -1, 67, -1, 719, -1, -1, -1, -1,
6084 946, -1, -1, 727, -1, 951, 952, -1, -1, -1,
6085 -1, 957, 958, -1, 1022, -1, -1, 1423, -1, -1,
6086 966, 967, -1, -1, -1, -1, -1, -1, -1, 103,
6087 104, -1, -1, 107, -1, -1, 982, -1, 112, 33,
6088 34, 35, 36, -1, -1, -1, -1, -1, -1, 1057,
6089 -1, -1, -1, -1, -1, 49, 50, 51, 52, -1,
6090 -1, -1, 56, -1, -1, 59, 60, 61, 62, 63,
6091 -1, -1, -1, -1, -1, -1, -1, -1, 1024, 1025,
6092 1026, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6093 -1, -1, -1, -1, -1, 1041, -1, 91, 92, 1033,
6094 1034, -1, -1, -1, -1, 99, -1, -1, 102, -1,
6095 104, 105, 1058, 107, -1, -1, 110, 111, 112, 113,
6096 114, 115, 116, 117, 118, -1, -1, -1, -1, 1033,
6097 1034, -1, -1, -1, -1, -1, 1082, -1, 862, -1,
6098 864, 865, -1, -1, -1, -1, 140, 1155, -1, -1,
6099 -1, -1, -1, 147, -1, -1, 230, -1, -1, -1,
6100 154, -1, -1, 1033, 1034, -1, -1, 1101, 1102, -1,
6101 -1, 1105, -1, -1, -1, -1, -1, -1, -1, -1,
6102 -1, 255, -1, 257, -1, -1, 260, 261, 1122, -1,
6103 -1, -1, 266, -1, -1, -1, -1, 1101, 1102, -1,
6104 1146, 1105, -1, -1, 1150, 929, -1, 1153, 1154, -1,
6105 -1, 285, -1, 1159, -1, -1, -1, -1, 1122, -1,
6106 -1, -1, 946, -1, 1158, -1, -1, 951, 952, -1,
6107 -1, 1101, 1102, 957, 958, 1105, -1, 1183, -1, -1,
6108 1186, -1, 966, 967, -1, -1, -1, -1, -1, -1,
6109 -1, -1, 1122, -1, 1158, -1, -1, 1191, 982, 1205,
6110 1194, 335, 336, 337, 338, 339, 340, -1, 342, 343,
6111 -1, -1, -1, -1, 1208, -1, 1210, -1, -1, 1213,
6112 1214, 1227, -1, -1, 1218, 1219, -1, 1191, 1158, 363,
6113 1194, -1, -1, -1, -1, -1, 1242, -1, -1, -1,
6114 1024, 1025, 1026, -1, 1208, -1, 1210, -1, -1, 1213,
6115 1214, -1, -1, -1, 1218, 1219, -1, 1041, -1, -1,
6116 -1, 1191, 1268, -1, 1194, -1, 400, -1, -1, 403,
6117 -1, -1, -1, -1, 1058, 409, 410, 411, 1208, -1,
6118 1210, -1, -1, 1213, 1214, -1, -1, -1, 1218, 1219,
6119 -1, 425, -1, 1287, -1, -1, -1, -1, 1082, -1,
6120 -1, -1, 1308, -1, -1, -1, -1, -1, -1, 1315,
6121 1316, -1, -1, -1, 1320, -1, -1, 451, -1, -1,
6122 -1, -1, -1, 1287, -1, -1, -1, -1, -1, -1,
6123 -1, -1, -1, -1, 1340, -1, -1, 1033, 1034, 473,
6124 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6125 -1, -1, -1, -1, -1, 1349, -1, 1287, -1, 1353,
6126 -1, 1355, -1, -1, 1370, -1, 1150, -1, -1, 1153,
6127 1154, -1, -1, -1, 508, 1159, -1, -1, -1, -1,
6128 1, 1033, 1034, -1, -1, 1349, -1, -1, -1, 1353,
6129 -1, 1355, -1, 527, 15, 16, -1, -1, -1, 1183,
6130 -1, -1, 1186, -1, -1, 1101, 1102, -1, -1, 1105,
6131 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1349,
6132 554, 1205, -1, 1353, -1, 1355, 1122, -1, -1, 1423,
6133 -1, 52, 53, -1, -1, -1, -1, -1, -1, 1033,
6134 1034, -1, -1, 1227, -1, -1, 67, -1, -1, 1101,
6135 1102, -1, -1, 1105, -1, -1, -1, -1, 1242, 1423,
6136 -1, -1, 1158, -1, 598, 599, -1, 601, 602, -1,
6137 1122, -1, -1, -1, -1, -1, 610, -1, -1, -1,
6138 -1, 615, 103, 104, -1, -1, 107, -1, -1, -1,
6139 -1, 112, -1, 1423, -1, 1191, -1, -1, 1194, -1,
6140 -1, -1, -1, -1, -1, -1, 1158, 1101, 1102, -1,
6141 -1, 1105, 1208, -1, 1210, -1, -1, 1213, 1214, -1,
6142 -1, -1, 1218, 1219, 1308, 659, -1, 661, 1122, -1,
6143 -1, 1315, 1316, -1, -1, 669, 1320, -1, -1, 1191,
6144 -1, -1, 1194, -1, -1, -1, 680, -1, 682, 683,
6145 -1, -1, -1, -1, -1, -1, 1208, -1, 1210, 693,
6146 694, 1213, 1214, -1, 1158, -1, 1218, 1219, -1, -1,
6147 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6148 -1, -1, -1, 1033, 1034, 719, 1370, -1, -1, -1,
6149 -1, 1287, -1, 727, -1, -1, -1, 1191, -1, -1,
6150 1194, -1, -1, -1, -1, -1, -1, -1, -1, 230,
6151 -1, -1, -1, -1, 1208, -1, 1210, -1, -1, 1213,
6152 1214, -1, -1, -1, 1218, 1219, -1, -1, -1, -1,
6153 -1, -1, -1, -1, 255, 1287, 257, -1, -1, 260,
6154 261, -1, -1, -1, -1, 266, -1, -1, -1, -1,
6155 -1, 1101, 1102, 1349, -1, 1105, -1, 1353, -1, 1355,
6156 -1, -1, -1, -1, 285, -1, -1, -1, -1, -1,
6157 -1, -1, 1122, -1, -1, -1, -1, -1, -1, -1,
6158 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6159 -1, -1, -1, 1287, -1, -1, -1, 1349, -1, -1,
6160 -1, 1353, -1, 1355, -1, -1, -1, -1, 1158, -1,
6161 -1, -1, -1, -1, 335, 336, 337, 338, 339, 340,
6162 -1, 342, 343, -1, -1, -1, -1, 1423, 862, -1,
6163 864, 865, -1, -1, -1, -1, -1, -1, -1, -1,
6164 -1, 1191, 363, -1, 1194, -1, -1, -1, -1, -1,
6165 -1, -1, -1, -1, -1, 1349, -1, -1, 1208, 1353,
6166 1210, 1355, -1, 1213, 1214, -1, -1, -1, 1218, 1219,
6167 1, 1423, -1, -1, -1, -1, -1, -1, -1, 400,
6168 -1, -1, 403, -1, 15, 16, -1, -1, 409, 410,
6169 411, -1, -1, -1, -1, 929, -1, -1, -1, -1,
6170 -1, -1, -1, -1, 425, -1, -1, -1, -1, -1,
6171 -1, -1, 946, -1, -1, -1, -1, 951, 952, -1,
6172 -1, 52, 53, 957, 958, 56, -1, -1, -1, 1423,
6173 451, -1, 966, 967, -1, -1, -1, 1287, 33, 34,
6174 35, 36, -1, -1, -1, -1, -1, -1, 982, -1,
6175 -1, -1, 473, -1, 49, 50, 51, -1, 89, -1,
6176 -1, -1, -1, -1, 59, 60, 61, 62, 63, -1,
6177 -1, -1, -1, -1, -1, -1, -1, 108, 109, 110,
6178 -1, 112, -1, -1, -1, -1, -1, 508, -1, -1,
6179 1024, 1025, 1026, -1, -1, -1, -1, -1, -1, 1349,
6180 -1, -1, -1, 1353, -1, 1355, 527, 1041, -1, -1,
6181 -1, -1, -1, -1, -1, 110, 111, 112, 113, 114,
6182 115, 116, 117, 118, 1058, -1, -1, -1, -1, -1,
6183 -1, -1, -1, 554, -1, -1, -1, -1, -1, -1,
6184 -1, 78, 79, 80, 81, 82, 83, 84, 1082, -1,
6185 87, 88, 147, -1, -1, -1, -1, -1, 95, 96,
6186 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6187 -1, -1, -1, 1423, -1, -1, -1, 598, 599, -1,
6188 601, 602, -1, -1, -1, -1, -1, -1, -1, 610,
6189 -1, -1, -1, -1, 615, -1, -1, -1, -1, 230,
6190 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6191 -1, -1, -1, -1, -1, -1, 1150, -1, -1, 1153,
6192 1154, -1, -1, -1, 255, 1159, 257, -1, -1, -1,
6193 -1, -1, -1, -1, -1, 266, -1, -1, 659, -1,
6194 661, -1, -1, -1, -1, -1, -1, -1, 669, 1183,
6195 -1, -1, 1186, -1, 285, -1, -1, -1, -1, 680,
6196 -1, 682, 683, -1, -1, -1, -1, -1, -1, -1,
6197 -1, 1205, 693, 694, 305, -1, -1, -1, -1, -1,
6198 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6199 -1, -1, -1, 1227, -1, -1, -1, -1, 719, -1,
6200 -1, -1, -1, -1, 335, 336, 727, -1, 1242, 0,
6201 -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
6202 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
6203 -1, -1, 363, 364, 25, 26, 27, -1, -1, -1,
6204 -1, -1, -1, 1, -1, -1, 37, 38, -1, 40,
6205 41, 42, 43, 44, -1, -1, -1, 15, 16, -1,
6206 -1, -1, -1, -1, -1, -1, -1, -1, -1, 400,
6207 -1, -1, 403, -1, 1308, -1, -1, 68, 69, 410,
6208 411, 1315, 1316, -1, -1, -1, 1320, -1, -1, -1,
6209 -1, -1, -1, -1, 52, 53, -1, -1, 56, -1,
6210 -1, -1, -1, -1, -1, -1, 97, 98, -1, -1,
6211 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6212 451, -1, -1, -1, -1, -1, -1, -1, -1, 120,
6213 -1, 89, -1, -1, -1, -1, 1370, -1, -1, -1,
6214 -1, 862, 473, 864, 865, -1, -1, -1, -1, -1,
6215 108, 109, 110, -1, 112, -1, -1, -1, -1, -1,
6216 151, 152, -1, 154, -1, -1, 157, 158, -1, 160,
6217 -1, -1, -1, -1, -1, -1, -1, 508, -1, -1,
6218 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6219 -1, -1, -1, -1, 525, -1, 527, -1, -1, -1,
6220 -1, -1, -1, -1, -1, -1, -1, -1, 929, -1,
6221 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6222 -1, -1, -1, 554, -1, 946, -1, -1, -1, -1,
6223 951, 952, -1, -1, -1, -1, 957, 958, -1, -1,
6224 -1, -1, -1, -1, -1, 966, 967, -1, -1, -1,
6225 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6226 -1, 982, -1, -1, -1, -1, -1, -1, 599, -1,
6227 -1, 602, 230, -1, -1, -1, -1, -1, -1, -1,
6228 -1, 612, -1, -1, 615, -1, -1, -1, -1, -1,
6229 -1, -1, -1, -1, -1, -1, -1, 255, -1, 257,
6230 -1, -1, -1, 1024, 1025, 1026, -1, -1, 266, -1,
6231 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6232 1041, -1, -1, -1, -1, -1, -1, 285, 659, -1,
6233 661, -1, -1, -1, -1, -1, -1, 1058, 669, -1,
6234 -1, -1, -1, -1, -1, -1, -1, 305, -1, 680,
6235 -1, 682, 1, -1, -1, -1, -1, -1, -1, -1,
6236 -1, 1082, 693, 694, -1, -1, -1, -1, -1, -1,
6237 -1, -1, -1, -1, -1, 44, -1, 335, 336, -1,
6238 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6239 -1, -1, -1, -1, -1, -1, 727, -1, -1, -1,
6240 -1, -1, 733, 52, 53, 363, 364, 56, -1, 78,
6241 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6242 89, 90, -1, -1, -1, -1, 95, 96, -1, 1150,
6243 -1, -1, 1153, 1154, -1, -1, -1, -1, 1159, -1,
6244 89, -1, 400, -1, -1, 403, -1, -1, -1, -1,
6245 -1, -1, 410, 411, -1, -1, -1, -1, -1, 108,
6246 109, 110, 1183, -1, -1, 1186, 135, -1, 137, 138,
6247 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6248 -1, 812, -1, -1, 1205, -1, 155, -1, -1, -1,
6249 -1, -1, -1, 451, 78, 79, 80, 81, 82, 83,
6250 84, 85, -1, 87, 88, -1, 1227, -1, -1, -1,
6251 -1, 95, 96, -1, -1, 473, -1, -1, -1, -1,
6252 -1, 1242, -1, -1, -1, -1, -1, -1, -1, -1,
6253 -1, -1, -1, -1, 865, -1, -1, -1, -1, -1,
6254 -1, -1, -1, -1, -1, -1, -1, -1, 25, -1,
6255 508, -1, -1, 137, 138, 139, 140, 141, 142, 143,
6256 144, 145, 146, -1, -1, -1, -1, 525, -1, 527,
6257 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6258 -1, 230, 1, -1, -1, -1, -1, 1308, -1, -1,
6259 -1, -1, -1, -1, 1315, 1316, 554, -1, -1, 1320,
6260 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6261 87, 88, 89, 90, -1, 946, -1, 266, 95, 96,
6262 951, 952, -1, -1, 101, -1, 957, 958, -1, -1,
6263 -1, -1, -1, 52, 53, 966, 285, 56, -1, -1,
6264 -1, 599, -1, -1, 602, -1, -1, -1, -1, 1370,
6265 -1, 982, -1, -1, 612, -1, 305, 615, 135, -1,
6266 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6267 89, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6268 -1, -1, -1, -1, -1, -1, 335, 336, -1, 108,
6269 109, 110, 111, 1024, 1025, 1026, -1, -1, -1, -1,
6270 -1, 659, -1, 661, 44, -1, -1, -1, -1, -1,
6271 1041, 669, -1, -1, 363, 364, -1, -1, -1, -1,
6272 -1, -1, 680, -1, 682, -1, -1, 1058, -1, -1,
6273 1, -1, -1, -1, -1, 693, 694, -1, 78, 79,
6274 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6275 90, 1082, -1, -1, 403, 95, 96, -1, -1, -1,
6276 -1, 410, 411, -1, -1, -1, -1, -1, -1, 727,
6277 -1, -1, -1, -1, -1, 733, -1, -1, -1, -1,
6278 -1, 52, 53, -1, -1, -1, -1, -1, -1, -1,
6279 -1, -1, -1, -1, -1, 135, -1, 137, 138, 139,
6280 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6281 -1, 230, -1, -1, -1, 1146, -1, -1, -1, 1150,
6282 -1, -1, 1153, 1154, -1, -1, -1, -1, 1159, -1,
6283 -1, -1, -1, -1, -1, -1, -1, 108, -1, -1,
6284 -1, -1, -1, -1, -1, -1, -1, 266, -1, -1,
6285 -1, -1, 1183, -1, 812, 1186, -1, -1, -1, 508,
6286 -1, -1, -1, -1, -1, -1, 285, -1, -1, -1,
6287 -1, -1, -1, -1, -1, -1, 525, -1, -1, -1,
6288 -1, -1, -1, -1, -1, -1, 305, -1, -1, -1,
6289 -1, -1, -1, -1, -1, -1, 1227, -1, -1, -1,
6290 -1, -1, -1, -1, -1, 554, -1, 865, -1, -1,
6291 -1, 1242, -1, -1, -1, -1, 335, 336, -1, -1,
6292 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6293 -1, -1, -1, -1, -1, -1, -1, 1268, -1, -1,
6294 -1, -1, -1, -1, 363, 364, -1, -1, -1, -1,
6295 599, -1, -1, 602, -1, -1, -1, -1, -1, 230,
6296 -1, -1, -1, 612, -1, -1, 615, -1, -1, -1,
6297 -1, -1, -1, -1, -1, -1, -1, 1308, -1, -1,
6298 -1, -1, -1, -1, 403, -1, -1, -1, 946, 1320,
6299 -1, 410, 411, 951, 952, 266, -1, -1, -1, 957,
6300 958, -1, -1, -1, -1, -1, -1, -1, 966, 1340,
6301 659, -1, 661, -1, 285, -1, -1, -1, -1, -1,
6302 -1, -1, -1, -1, 982, -1, -1, -1, -1, -1,
6303 -1, -1, -1, 682, -1, -1, -1, -1, -1, 1370,
6304 -1, -1, -1, -1, 693, 694, -1, -1, -1, -1,
6305 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6306 -1, -1, -1, -1, 335, 336, 1024, 1025, 1026, -1,
6307 -1, -1, -1, -1, -1, -1, -1, -1, 727, -1,
6308 -1, -1, -1, 1041, 733, -1, -1, -1, -1, 508,
6309 -1, -1, 363, 742, -1, -1, -1, -1, -1, -1,
6310 1058, -1, -1, -1, -1, 1, 525, -1, -1, -1,
6311 -1, -1, -1, -1, -1, -1, -1, 52, 53, -1,
6312 -1, 56, -1, -1, 1082, -1, -1, -1, -1, -1,
6313 -1, -1, 403, -1, -1, 554, -1, -1, -1, 410,
6314 411, 76, 77, 78, 79, 80, 81, 82, 83, 84,
6315 -1, -1, 87, 88, -1, -1, 52, 53, 93, 94,
6316 95, 96, -1, 812, -1, -1, -1, -1, -1, -1,
6317 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
6318 599, -1, -1, 602, -1, -1, -1, -1, 1146, -1,
6319 -1, -1, 1150, 612, -1, 1153, 1154, -1, -1, -1,
6320 -1, 1159, 137, 138, 139, 140, 141, 142, 143, 144,
6321 145, 146, -1, 148, 149, -1, 865, -1, -1, -1,
6322 -1, 156, 157, -1, -1, 1183, -1, -1, 1186, 78,
6323 79, 80, 81, 82, 83, 84, -1, 508, 87, 88,
6324 659, -1, 661, -1, -1, -1, 95, 96, -1, -1,
6325 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6326 -1, -1, -1, 682, -1, -1, -1, -1, -1, 1227,
6327 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6328 -1, -1, -1, 554, 1242, -1, -1, -1, 137, 138,
6329 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6330 -1, -1, 951, 952, -1, -1, -1, -1, 957, 958,
6331 1268, -1, -1, -1, 733, -1, -1, 966, -1, -1,
6332 -1, -1, -1, -1, -1, -1, -1, -1, 599, -1,
6333 -1, 602, -1, 982, 230, -1, -1, -1, -1, -1,
6334 -1, -1, -1, -1, 615, -1, -1, -1, -1, -1,
6335 1308, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6336 -1, -1, 1320, -1, -1, -1, -1, -1, -1, -1,
6337 266, -1, -1, -1, -1, 1024, 1025, 1026, -1, -1,
6338 -1, -1, 1340, -1, -1, -1, -1, -1, 659, 285,
6339 661, -1, 1041, 812, -1, -1, -1, -1, -1, -1,
6340 -1, -1, 33, 34, 35, 36, -1, -1, -1, 1058,
6341 -1, 682, 1370, -1, -1, -1, -1, -1, 49, 50,
6342 51, 52, 693, 694, -1, 56, -1, 58, 59, 60,
6343 61, 62, 63, 1082, -1, -1, -1, -1, -1, 335,
6344 336, -1, -1, -1, -1, -1, 865, 78, -1, -1,
6345 -1, -1, -1, -1, -1, -1, 727, -1, -1, -1,
6346 91, 92, -1, -1, -1, -1, -1, 363, 99, -1,
6347 -1, 102, -1, 104, 105, -1, 107, 108, -1, 110,
6348 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6349 -1, -1, -1, -1, -1, -1, -1, 1146, -1, -1,
6350 -1, 1150, -1, -1, 1153, 1154, -1, 403, -1, 140,
6351 1159, -1, -1, -1, 410, 411, 147, -1, -1, -1,
6352 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6353 -1, -1, -1, -1, 1183, -1, -1, 1186, -1, -1,
6354 52, 53, -1, -1, 56, -1, -1, 966, -1, -1,
6355 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6356 -1, -1, -1, 982, 76, 77, 78, 79, 80, 81,
6357 82, 83, 84, -1, -1, 87, 88, -1, 1227, -1,
6358 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
6359 -1, -1, -1, 1242, 865, 107, 108, -1, -1, -1,
6360 -1, -1, -1, -1, -1, 1024, 1025, -1, -1, -1,
6361 -1, -1, 508, -1, -1, -1, -1, -1, -1, 1268,
6362 -1, 15, 16, -1, -1, 137, 138, 139, 140, 141,
6363 142, 143, 144, 145, 146, -1, 148, 149, -1, 1058,
6364 -1, -1, -1, -1, 156, -1, -1, -1, -1, -1,
6365 -1, -1, -1, 47, 48, 49, 50, -1, 554, -1,
6366 54, 55, -1, 1082, -1, -1, -1, -1, -1, -1,
6367 -1, 1320, -1, 67, 68, -1, -1, -1, -1, -1,
6368 951, 952, -1, -1, -1, -1, 957, 958, -1, -1,
6369 -1, 1340, -1, -1, -1, 966, -1, -1, -1, -1,
6370 -1, -1, -1, 599, -1, -1, 602, -1, -1, -1,
6371 -1, 982, -1, -1, -1, -1, -1, -1, 112, 615,
6372 -1, 1370, -1, -1, -1, -1, -1, 1146, -1, -1,
6373 -1, 1150, -1, -1, 1153, 1154, -1, -1, -1, -1,
6374 1159, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6375 -1, -1, -1, 1024, 1025, 1026, -1, -1, -1, -1,
6376 -1, -1, -1, 659, 1183, 661, -1, 1186, -1, -1,
6377 1041, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6378 -1, -1, -1, -1, -1, -1, 682, 1058, -1, -1,
6379 -1, -1, -1, -1, -1, -1, -1, 693, 694, -1,
6380 -1, -1, -1, -1, -1, -1, -1, -1, 1227, -1,
6381 -1, 1082, -1, -1, -1, -1, -1, -1, -1, -1,
6382 -1, -1, -1, 1242, -1, -1, -1, -1, -1, -1,
6383 -1, 727, -1, -1, 228, -1, -1, 231, 232, 233,
6384 -1, 235, -1, -1, -1, -1, -1, -1, -1, 1268,
6385 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6386 -1, 255, -1, 257, -1, -1, -1, -1, -1, -1,
6387 -1, -1, -1, -1, -1, 1146, -1, -1, -1, 1150,
6388 -1, -1, 1153, 1154, -1, -1, -1, -1, 1159, -1,
6389 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6390 -1, 1320, -1, -1, -1, -1, -1, -1, -1, -1,
6391 -1, -1, 1183, -1, -1, 1186, -1, -1, -1, -1,
6392 -1, 1340, -1, -1, -1, -1, -1, -1, -1, -1,
6393 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6394 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6395 -1, 1370, -1, -1, -1, -1, 1227, -1, -1, -1,
6396 -1, -1, -1, -1, -1, -1, -1, -1, -1, 865,
6397 -1, 1242, -1, -1, 368, 369, 370, 371, 372, -1,
6398 -1, 375, 376, 377, 378, 379, 380, 381, 382, -1,
6399 384, -1, -1, 387, 388, 389, 390, 391, 392, 393,
6400 394, 395, 396, -1, 52, 53, 400, -1, 56, -1,
6401 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6402 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6403 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
6404 88, -1, -1, -1, -1, 93, 94, 95, 96, 1320,
6405 -1, -1, -1, -1, -1, 951, 952, 451, -1, 107,
6406 108, 957, 958, -1, -1, -1, -1, -1, -1, -1,
6407 966, -1, -1, -1, 468, 469, -1, -1, -1, 473,
6408 -1, -1, -1, 477, -1, 479, 982, -1, -1, 137,
6409 138, 139, 140, 141, 142, 143, 144, 145, 146, 1370,
6410 148, 149, -1, 497, -1, -1, -1, -1, 156, -1,
6411 -1, -1, -1, -1, -1, -1, -1, -1, 512, -1,
6412 -1, 515, -1, -1, -1, -1, -1, -1, 1024, 1025,
6413 1026, -1, -1, 527, -1, -1, -1, -1, -1, -1,
6414 -1, -1, -1, -1, -1, 1041, -1, -1, -1, -1,
6415 -1, 545, -1, 33, 34, 35, 36, -1, -1, -1,
6416 -1, -1, 1058, -1, -1, -1, -1, -1, -1, 49,
6417 50, 51, 52, -1, -1, -1, 56, -1, -1, 59,
6418 60, 61, 62, 63, -1, -1, 1082, -1, -1, -1,
6419 -1, -1, -1, -1, -1, -1, 590, -1, -1, -1,
6420 -1, -1, -1, -1, 598, -1, -1, 601, -1, -1,
6421 -1, 91, 92, -1, -1, -1, 610, -1, -1, 99,
6422 -1, 615, 102, -1, 104, 105, -1, 107, -1, -1,
6423 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6424 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6425 -1, -1, -1, -1, 1150, -1, -1, 1153, 1154, -1,
6426 140, -1, -1, 1159, -1, -1, -1, 147, -1, -1,
6427 -1, -1, -1, -1, -1, 669, -1, -1, -1, -1,
6428 -1, -1, -1, -1, -1, -1, 680, 1183, -1, -1,
6429 1186, -1, -1, -1, -1, -1, -1, -1, -1, 693,
6430 694, -1, -1, 697, 698, -1, -1, -1, -1, -1,
6431 -1, -1, -1, -1, -1, 709, 710, -1, -1, 713,
6432 -1, 715, -1, -1, -1, -1, -1, -1, 722, 723,
6433 -1, 1227, -1, 727, -1, -1, -1, -1, -1, -1,
6434 -1, -1, -1, -1, -1, -1, 1242, -1, -1, -1,
6435 0, 1, -1, 3, 4, 5, 6, 7, 8, 9,
6436 10, 11, 12, -1, 14, 15, 16, 17, 18, 19,
6437 20, 21, 22, 23, 24, 25, -1, -1, -1, 773,
6438 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6439 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
6440 50, 51, 52, 53, 54, 55, 56, 57, 802, 59,
6441 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
6442 -1, -1, -1, -1, 1320, -1, 76, 77, -1, -1,
6443 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6444 834, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6445 -1, -1, 102, 103, 104, 105, -1, 107, 852, -1,
6446 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6447 120, -1, -1, -1, 1370, -1, -1, -1, -1, -1,
6448 -1, -1, -1, -1, -1, -1, -1, -1, 882, -1,
6449 -1, -1, -1, -1, -1, -1, -1, 147, 148, 149,
6450 -1, -1, 152, 33, 34, 35, 36, -1, 158, -1,
6451 160, -1, -1, -1, -1, -1, -1, -1, -1, 49,
6452 50, 51, 52, -1, -1, -1, 56, -1, -1, 59,
6453 60, 61, 62, 63, -1, 929, -1, -1, -1, -1,
6454 -1, -1, -1, -1, 938, -1, -1, -1, -1, -1,
6455 -1, -1, 946, -1, -1, -1, 950, 951, 952, -1,
6456 -1, 91, 92, 957, 958, -1, -1, 961, -1, 99,
6457 -1, -1, 102, -1, 104, 105, -1, -1, -1, 973,
6458 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6459 -1, -1, -1, -1, -1, -1, -1, 991, 992, -1,
6460 994, 995, -1, 997, -1, 999, -1, -1, -1, -1,
6461 140, -1, -1, -1, -1, -1, -1, 147, -1, -1,
6462 -1, -1, -1, -1, 1018, 1019, -1, -1, 1022, -1,
6463 -1, -1, 1026, 1027, 0, 1, -1, 3, 4, 5,
6464 6, 7, -1, -1, -1, 11, 12, 1041, -1, -1,
6465 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6466 -1, -1, -1, 1057, 30, 31, 32, 33, 34, 35,
6467 36, 1065, -1, 39, -1, -1, -1, -1, -1, 45,
6468 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6469 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6470 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6471 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6472 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6473 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6474 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6475 116, 117, 118, -1, 120, -1, -1, -1, -1, -1,
6476 -1, 1155, -1, -1, -1, -1, -1, -1, -1, -1,
6477 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6478 -1, 147, 148, 149, -1, -1, 0, 1, 154, 3,
6479 4, 5, 6, 7, 160, -1, -1, 11, 12, -1,
6480 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6481 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6482 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6483 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6484 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6485 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6486 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6487 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6488 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6489 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6490 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6491 -1, -1, -1, -1, 1308, -1, -1, -1, -1, -1,
6492 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6493 -1, -1, -1, 147, 148, 149, -1, -1, 0, 1,
6494 154, 3, 4, 5, 6, 7, 160, -1, -1, 11,
6495 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6496 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6497 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6498 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6499 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6500 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6501 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6502 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6503 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6504 102, 103, 104, 105, -1, 107, -1, -1, 110, 111,
6505 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
6506 -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
6507 -1, -1, -1, -1, 8, 9, 10, -1, -1, 13,
6508 14, 15, -1, 17, -1, 147, 148, 149, -1, -1,
6509 152, 25, 26, 27, 28, 29, -1, -1, 160, -1,
6510 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6511 44, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6512 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6513 -1, 95, 96, -1, 68, 69, -1, -1, -1, -1,
6514 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6515 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6516 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
6517 -1, 135, 106, 137, 138, 139, 140, 141, 142, 143,
6518 144, 145, 146, -1, -1, -1, 120, -1, -1, 123,
6519 154, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6520 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
6521 144, 145, 146, -1, -1, -1, -1, 151, 152, 153,
6522 154, 155, 0, -1, 158, 159, 160, -1, -1, -1,
6523 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
6524 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
6525 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
6526 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
6527 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6528 88, 89, 90, -1, -1, -1, -1, 95, 96, -1,
6529 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
6530 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6531 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
6532 98, -1, 100, 101, -1, -1, -1, 135, 106, 137,
6533 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6534 -1, -1, 120, -1, -1, 123, -1, -1, -1, -1,
6535 -1, -1, -1, -1, -1, -1, 134, 135, 136, 137,
6536 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6537 -1, -1, -1, -1, 152, 153, 154, 155, 0, -1,
6538 158, 159, 160, -1, -1, -1, 8, 9, 10, -1,
6539 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
6540 -1, -1, -1, 25, -1, 27, 28, 29, -1, -1,
6541 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
6542 42, 43, 44, -1, -1, -1, 78, 79, 80, 81,
6543 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6544 -1, -1, -1, 95, 96, -1, 68, 69, -1, -1,
6545 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6546 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6547 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
6548 -1, -1, -1, -1, 106, 137, 138, 139, 140, 141,
6549 142, 143, 144, 145, 146, -1, -1, -1, 120, -1,
6550 -1, 123, -1, -1, -1, -1, -1, -1, -1, -1,
6551 -1, -1, 134, 135, 136, 137, 138, 139, 140, 141,
6552 142, 143, 144, 145, 146, -1, -1, -1, -1, -1,
6553 152, 153, 154, 155, 0, -1, 158, 159, 160, -1,
6554 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
6555 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6556 26, 27, 28, 29, -1, -1, -1, -1, -1, -1,
6557 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6558 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6559 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6560 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6561 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6562 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6563 96, 97, 98, -1, -1, 101, -1, -1, -1, -1,
6564 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6565 -1, -1, -1, -1, 120, -1, -1, 123, -1, -1,
6566 -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
6567 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6568 146, -1, -1, -1, -1, 151, 152, 153, 154, 155,
6569 0, -1, 158, 159, 160, -1, -1, -1, 8, 9,
6570 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
6571 -1, -1, -1, -1, -1, 25, 26, 27, 28, 29,
6572 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
6573 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
6574 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6575 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
6576 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
6577 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6578 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
6579 -1, 101, -1, -1, -1, -1, 106, -1, -1, -1,
6580 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6581 120, -1, -1, 123, -1, -1, -1, -1, -1, -1,
6582 -1, -1, -1, -1, -1, 135, 136, 137, 138, 139,
6583 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6584 -1, 151, 152, 153, 154, 155, 0, -1, 158, 159,
6585 160, -1, -1, -1, 8, 9, 10, -1, -1, 13,
6586 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
6587 -1, 25, 26, 27, 28, -1, -1, -1, -1, -1,
6588 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6589 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6590 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6591 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
6592 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6593 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6594 -1, 95, 96, 97, 98, -1, -1, 101, -1, -1,
6595 -1, -1, 106, -1, -1, -1, -1, -1, -1, -1,
6596 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
6597 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6598 -1, 135, -1, 137, 138, 139, 140, 141, 142, 143,
6599 144, 145, 146, -1, -1, -1, -1, 151, 152, 153,
6600 154, 155, 0, 157, 158, 159, 160, -1, -1, -1,
6601 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
6602 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
6603 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
6604 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
6605 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6606 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6607 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
6608 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6609 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
6610 98, -1, -1, 101, -1, -1, -1, -1, 106, -1,
6611 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6612 -1, -1, 120, -1, -1, 123, -1, -1, -1, -1,
6613 -1, -1, -1, -1, -1, -1, -1, 135, 136, 137,
6614 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6615 -1, -1, -1, -1, 152, 153, 154, 155, 0, -1,
6616 158, 159, 160, -1, -1, -1, 8, 9, 10, -1,
6617 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
6618 -1, -1, -1, 25, 26, 27, 28, -1, -1, -1,
6619 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
6620 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
6621 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6622 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
6623 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6624 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6625 -1, -1, -1, 95, 96, 97, 98, -1, -1, 101,
6626 -1, -1, -1, -1, 106, -1, -1, -1, -1, -1,
6627 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
6628 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6629 -1, -1, -1, 135, -1, 137, 138, 139, 140, 141,
6630 142, 143, 144, 145, 146, -1, -1, -1, -1, 151,
6631 152, 153, 154, 155, 0, 157, 158, 159, 160, -1,
6632 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
6633 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6634 -1, 27, 28, -1, -1, -1, -1, -1, -1, -1,
6635 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6636 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6637 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6638 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6639 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6640 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6641 96, 97, 98, -1, 100, 101, -1, -1, -1, -1,
6642 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6643 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
6644 -1, -1, -1, -1, -1, -1, -1, -1, 134, 135,
6645 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6646 146, -1, -1, -1, -1, 151, 152, 153, 154, 155,
6647 0, -1, 158, 159, 160, -1, -1, -1, 8, 9,
6648 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
6649 -1, -1, -1, -1, -1, 25, -1, 27, 28, -1,
6650 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
6651 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
6652 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6653 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
6654 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
6655 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6656 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
6657 -1, 101, -1, -1, -1, -1, 106, -1, -1, -1,
6658 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6659 120, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6660 -1, -1, -1, -1, -1, 135, -1, 137, 138, 139,
6661 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6662 -1, -1, 152, 153, 154, 155, 0, 157, 158, 159,
6663 160, -1, -1, -1, 8, 9, 10, -1, -1, -1,
6664 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
6665 -1, 25, 26, -1, -1, -1, -1, -1, -1, -1,
6666 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6667 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6668 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6669 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
6670 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6671 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6672 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
6673 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6674 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
6675 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6676 134, 135, -1, 137, 138, 139, 140, 141, 142, 143,
6677 144, 145, 146, -1, -1, -1, -1, 151, 152, 153,
6678 154, 155, 0, -1, 158, -1, 160, -1, -1, -1,
6679 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
6680 -1, -1, -1, -1, -1, -1, -1, 25, 26, -1,
6681 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
6682 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
6683 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6684 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6685 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
6686 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6687 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
6688 98, -1, 100, 101, -1, -1, -1, -1, -1, -1,
6689 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6690 -1, -1, 120, -1, -1, -1, -1, -1, -1, -1,
6691 -1, -1, -1, -1, -1, -1, 134, 135, -1, 137,
6692 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6693 -1, -1, -1, 151, 152, 153, 154, 155, 0, -1,
6694 158, -1, 160, -1, -1, -1, 8, 9, 10, -1,
6695 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
6696 -1, -1, -1, 25, -1, -1, -1, -1, -1, -1,
6697 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
6698 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
6699 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6700 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
6701 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6702 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6703 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
6704 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6705 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
6706 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6707 -1, -1, 134, 135, -1, 137, 138, 139, 140, 141,
6708 142, 143, 144, 145, 146, -1, -1, -1, -1, 151,
6709 152, 153, 154, 155, 0, -1, 158, -1, 160, -1,
6710 -1, -1, 8, 9, 10, -1, -1, -1, 14, 15,
6711 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6712 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6713 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6714 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6715 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6716 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6717 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6718 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6719 96, 97, 98, -1, 100, 101, -1, -1, -1, -1,
6720 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6721 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
6722 -1, -1, -1, -1, -1, -1, -1, -1, 134, 135,
6723 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6724 146, -1, -1, -1, -1, 151, 152, 153, 154, 155,
6725 -1, -1, 158, 1, 160, 3, 4, 5, 6, 7,
6726 8, 9, 10, 11, 12, -1, -1, 15, 16, -1,
6727 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
6728 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6729 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6730 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6731 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6732 68, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6733 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6734 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6735 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
6736 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
6737 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6738 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6739 -1, -1, -1, -1, -1, -1, -1, -1, -1, 147,
6740 148, 149, -1, -1, -1, 1, 154, 3, 4, 5,
6741 6, 7, 160, -1, 10, 11, 12, -1, 14, 15,
6742 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6743 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6744 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6745 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6746 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6747 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
6748 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6749 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6750 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6751 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6752 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6753 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6754 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6755 -1, 147, 148, 149, -1, -1, -1, 1, 154, 3,
6756 4, 5, 6, 7, 160, -1, 10, 11, 12, -1,
6757 -1, 15, 16, 17, 18, 19, 20, 21, 22, 23,
6758 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6759 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6760 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6761 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6762 64, 65, -1, -1, 68, -1, -1, -1, -1, -1,
6763 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6764 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6765 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6766 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6767 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6768 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6769 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6770 -1, -1, -1, 147, 148, 149, -1, -1, -1, 1,
6771 154, 3, 4, 5, 6, 7, 160, -1, 10, 11,
6772 12, -1, -1, 15, 16, -1, 18, 19, 20, 21,
6773 22, 23, 24, 25, -1, -1, -1, -1, 30, 31,
6774 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6775 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6776 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6777 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
6778 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6779 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6780 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6781 102, 103, 104, 105, -1, 107, -1, -1, 110, 111,
6782 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
6783 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6784 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6785 -1, -1, -1, -1, -1, 147, 148, 149, -1, -1,
6786 -1, 1, 154, 3, 4, 5, 6, 7, 160, -1,
6787 10, 11, 12, -1, -1, 15, 16, -1, 18, 19,
6788 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
6789 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6790 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
6791 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6792 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
6793 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
6794 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6795 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6796 -1, -1, 102, 103, 104, 105, -1, 107, -1, -1,
6797 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6798 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6799 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6800 -1, -1, -1, -1, -1, -1, -1, 147, 148, 149,
6801 -1, -1, -1, 1, 154, 3, 4, 5, 6, 7,
6802 160, 9, 10, 11, 12, -1, -1, -1, 16, -1,
6803 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
6804 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6805 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6806 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6807 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6808 68, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6809 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6810 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6811 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
6812 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
6813 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6814 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6815 -1, -1, -1, -1, -1, -1, -1, -1, -1, 147,
6816 148, 149, -1, -1, -1, 1, 154, 3, 4, 5,
6817 6, 7, 160, -1, 10, 11, 12, -1, -1, -1,
6818 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6819 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6820 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6821 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6822 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6823 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
6824 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6825 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6826 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6827 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6828 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6829 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6830 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6831 -1, 147, 148, 149, -1, -1, -1, 1, 154, 3,
6832 4, 5, 6, 7, 160, -1, -1, 11, 12, -1,
6833 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6834 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6835 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6836 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6837 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6838 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6839 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6840 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6841 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6842 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6843 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6844 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6845 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6846 -1, -1, -1, 147, 148, 149, -1, -1, -1, -1,
6847 154, -1, -1, -1, 158, 1, 160, 3, 4, 5,
6848 6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6849 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6850 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6851 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6852 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6853 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6854 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6855 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6856 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6857 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6858 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6859 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6860 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6861 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6862 -1, 147, 148, 149, -1, -1, -1, -1, 154, -1,
6863 -1, -1, 158, 1, 160, 3, 4, 5, 6, 7,
6864 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
6865 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
6866 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6867 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6868 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6869 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6870 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6871 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6872 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6873 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
6874 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
6875 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6876 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6877 -1, -1, -1, -1, -1, -1, -1, -1, -1, 147,
6878 148, 149, -1, -1, 152, 1, 154, 3, 4, 5,
6879 6, 7, 160, -1, -1, 11, 12, -1, -1, -1,
6880 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6881 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6882 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6883 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6884 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6885 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6886 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6887 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6888 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6889 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6890 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6891 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6892 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6893 -1, 147, 148, 149, -1, -1, 152, 1, 154, 3,
6894 4, 5, -1, 7, 160, -1, -1, 11, 12, -1,
6895 -1, -1, 16, 17, 18, 19, 20, 21, 22, 23,
6896 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6897 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6898 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6899 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6900 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6901 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6902 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6903 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6904 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
6905 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6906 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6907 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6908 -1, -1, -1, 147, 148, 149, -1, -1, -1, -1,
6909 154, -1, -1, -1, -1, -1, 160, 3, 4, 5,
6910 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
6911 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
6912 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6913 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
6914 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6915 56, 57, -1, -1, -1, -1, -1, -1, -1, -1,
6916 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6917 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
6918 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
6919 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6920 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
6921 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6922 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6923 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6924 146, -1, 148, 149, -1, -1, -1, -1, -1, -1,
6925 156, 157, 3, 4, 5, 6, 7, 8, 9, 10,
6926 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
6927 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
6928 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
6929 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
6930 51, 52, 53, 54, 55, 56, 57, -1, -1, -1,
6931 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6932 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
6933 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
6934 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
6935 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
6936 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6937 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6938 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
6939 141, 142, 143, 144, 145, 146, -1, 148, 149, -1,
6940 -1, -1, -1, -1, -1, 156, 3, 4, 5, 6,
6941 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
6942 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
6943 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6944 37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
6945 47, 48, 49, 50, 51, 52, 53, 54, -1, 56,
6946 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6947 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6948 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
6949 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
6950 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6951 107, 108, -1, -1, 111, -1, -1, -1, -1, -1,
6952 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6953 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6954 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6955 -1, 148, 149, -1, -1, -1, -1, -1, -1, 156,
6956 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
6957 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
6958 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
6959 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
6960 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
6961 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
6962 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6963 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
6964 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
6965 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
6966 -1, -1, -1, -1, 107, 108, -1, -1, 111, -1,
6967 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6968 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6969 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
6970 143, 144, 145, 146, -1, 148, 149, -1, -1, -1,
6971 -1, -1, -1, 156, 3, 4, 5, 6, 7, 8,
6972 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
6973 19, 20, 21, 22, 23, 24, 25, 26, -1, -1,
6974 -1, 30, 31, 32, 33, 34, 35, 36, 37, 38,
6975 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6976 49, 50, 51, 52, 53, -1, -1, 56, -1, -1,
6977 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6978 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
6979 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
6980 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
6981 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
6982 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6983 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6984 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
6985 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
6986 149, 3, 4, 5, -1, 7, -1, 156, -1, 11,
6987 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6988 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6989 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6990 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6991 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6992 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6993 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6994 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6995 -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6996 102, 103, 104, 105, -1, -1, -1, -1, 110, 111,
6997 112, 113, 114, 115, 116, 117, 118, -1, -1, 3,
6998 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6999 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
7000 24, -1, -1, -1, -1, 147, 30, 31, 32, 33,
7001 34, 35, 36, 155, -1, 39, -1, -1, -1, -1,
7002 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
7003 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
7004 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
7005 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7006 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7007 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
7008 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
7009 114, 115, 116, 117, 118, -1, -1, 3, 4, 5,
7010 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7011 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7012 -1, -1, -1, 147, 30, 31, 32, 33, 34, 35,
7013 36, 155, -1, 39, -1, -1, -1, -1, -1, -1,
7014 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7015 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
7016 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7017 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7018 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7019 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7020 -1, 107, 108, 109, 110, 111, 112, 113, 114, 115,
7021 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
7022 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7023 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
7024 7, 147, 148, 149, 11, 12, -1, -1, 154, 16,
7025 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
7026 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
7027 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
7028 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
7029 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
7030 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7031 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7032 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
7033 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
7034 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
7035 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
7036 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7037 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
7038 147, 148, 149, 11, 12, -1, -1, 154, 16, -1,
7039 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
7040 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
7041 -1, 39, -1, -1, -1, -1, -1, 45, 46, -1,
7042 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7043 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7044 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7045 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7046 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7047 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7048 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7049 118, -1, -1, 1, -1, 3, 4, 5, -1, 7,
7050 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7051 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7052 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7053 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7054 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7055 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7056 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7057 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7058 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7059 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7060 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7061 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7062 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7063 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7064 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7065 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7066 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7067 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7068 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7069 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7070 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7071 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7072 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
7073 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7074 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7075 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7076 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7077 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7078 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7079 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7080 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7081 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7082 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7083 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7084 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
7085 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7086 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7087 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7088 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7089 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7090 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7091 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7092 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7093 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7094 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7095 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7096 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
7097 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7098 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7099 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7100 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7101 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7102 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7103 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7104 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7105 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7106 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7107 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7108 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
7109 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7110 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7111 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7112 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7113 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7114 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7115 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7116 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7117 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7118 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7119 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7120 108, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7121 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7122 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7123 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7124 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7125 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7126 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7127 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7128 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7129 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7130 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7131 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7132 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
7133 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7134 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7135 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7136 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7137 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7138 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7139 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7140 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7141 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7142 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7143 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7144 108, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7145 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7146 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7147 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7148 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7149 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7150 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7151 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7152 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7153 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7154 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7155 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7156 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7157 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7158 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7159 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7160 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7161 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7162 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7163 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7164 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7165 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7166 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7167 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7168 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7169 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7170 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7171 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7172 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7173 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7174 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7175 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7176 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7177 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7178 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7179 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7180 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7181 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7182 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7183 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7184 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7185 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7186 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7187 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7188 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7189 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7190 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7191 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7192 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7193 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7194 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7195 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7196 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7197 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7198 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7199 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7200 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7201 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7202 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7203 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7204 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7205 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7206 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7207 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7208 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7209 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7210 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7211 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7212 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7213 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7214 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7215 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7216 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7217 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7218 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7219 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7220 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7221 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7222 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7223 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7224 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7225 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7226 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7227 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7228 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7229 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7230 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7231 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7232 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7233 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7234 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7235 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7236 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7237 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7238 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7239 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7240 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7241 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7242 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7243 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7244 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7245 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7246 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7247 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7248 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7249 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7250 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7251 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7252 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7253 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7254 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7255 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7256 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7257 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7258 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7259 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7260 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7261 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7262 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7263 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7264 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7265 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7266 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7267 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7268 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7269 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7270 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7271 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7272 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7273 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7274 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7275 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7276 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7277 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7278 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7279 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7280 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7281 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7282 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7283 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7284 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7285 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7286 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7287 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7288 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7289 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7290 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7291 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7292 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7293 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7294 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7295 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7296 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7297 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7298 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7299 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7300 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7301 118, -1, -1, 3, 4, 5, -1, 7, -1, -1,
7302 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
7303 20, 21, 22, 23, 24, -1, -1, -1, -1, 147,
7304 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
7305 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
7306 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
7307 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
7308 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7309 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7310 -1, -1, -1, -1, -1, -1, -1, -1, -1, 99,
7311 -1, -1, 102, 103, 104, 105, -1, 107, -1, -1,
7312 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
7313 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
7314 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
7315 22, 23, 24, -1, -1, -1, -1, 147, 30, 31,
7316 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
7317 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
7318 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
7319 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
7320 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7321 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7322 -1, -1, -1, 95, -1, -1, -1, 99, -1, -1,
7323 102, 103, 104, 105, -1, -1, -1, -1, 110, 111,
7324 112, 113, 114, 115, 116, 117, 118, -1, -1, 3,
7325 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
7326 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
7327 24, -1, -1, -1, -1, 147, 30, 31, 32, 33,
7328 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
7329 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
7330 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
7331 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
7332 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7333 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7334 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
7335 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
7336 114, 115, 116, 117, 118, -1, -1, 3, 4, 5,
7337 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7338 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7339 -1, -1, -1, 147, 30, 31, 32, 33, 34, 35,
7340 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7341 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7342 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7343 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7344 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7345 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7346 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7347 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
7348 116, 117, 118, -1, -1, 3, 4, 5, -1, 7,
7349 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7350 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
7351 -1, 147, 30, 31, 32, 33, 34, 35, 36, -1,
7352 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7353 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7354 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7355 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7356 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7357 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7358 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7359 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7360 118, -1, -1, 3, 4, 5, -1, 7, -1, -1,
7361 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
7362 20, 21, 22, 23, 24, -1, -1, -1, -1, 147,
7363 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
7364 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
7365 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
7366 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
7367 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7368 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7369 -1, -1, -1, -1, -1, -1, 52, 53, -1, 99,
7370 56, -1, 102, 103, 104, 105, -1, -1, -1, -1,
7371 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
7372 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
7373 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
7374 96, -1, -1, -1, -1, -1, -1, 147, -1, -1,
7375 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
7376 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7377 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7378 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
7379 146, -1, 148, 149, 52, 53, -1, -1, 56, -1,
7380 156, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7381 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7382 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
7383 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
7384 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
7385 108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7386 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7387 -1, -1, -1, -1, -1, -1, -1, -1, -1, 137,
7388 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
7389 148, 149, 52, 53, -1, -1, 56, -1, 156, -1,
7390 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7391 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
7392 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
7393 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
7394 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
7395 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7396 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7397 -1, -1, -1, -1, -1, -1, -1, 137, 138, 139,
7398 140, 141, 142, 143, 144, 145, 146, -1, 148, 149,
7399 52, 53, -1, -1, 56, -1, 156, -1, -1, -1,
7400 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7401 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
7402 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
7403 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
7404 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
7405 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7406 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7407 -1, -1, -1, -1, -1, 137, 138, 139, 140, 141,
7408 142, 143, 144, 145, 146, -1, 148, 149, 52, 53,
7409 -1, -1, 56, -1, 156, -1, -1, -1, -1, -1,
7410 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7411 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
7412 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
7413 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
7414 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
7415 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7416 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7417 -1, -1, -1, 137, 138, 139, 140, 141, 142, 143,
7418 144, 145, 146, -1, 148, 149, 52, 53, -1, -1,
7419 56, -1, 156, -1, -1, -1, -1, -1, -1, -1,
7420 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7421 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
7422 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
7423 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7424 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
7425 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7426 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7427 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
7428 146, -1, 148, 149, 52, 53, -1, -1, 56, -1,
7429 156, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7430 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7431 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
7432 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
7433 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
7434 108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7435 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7436 -1, -1, -1, -1, -1, -1, -1, -1, -1, 137,
7437 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
7438 148, 149, 52, 53, -1, -1, 56, -1, 156, -1,
7439 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7440 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
7441 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
7442 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
7443 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
7444 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7445 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7446 -1, -1, -1, -1, -1, -1, -1, 137, 138, 139,
7447 140, 141, 142, 143, 144, 145, 146, -1, 148, 149,
7448 52, 53, -1, -1, 56, -1, 156, -1, -1, -1,
7449 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7450 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
7451 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
7452 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
7453 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
7454 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7455 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7456 -1, -1, -1, -1, -1, 137, 138, 139, 140, 141,
7457 142, 143, 144, 145, 146, -1, 148, 149, 52, 53,
7458 -1, -1, 56, -1, 156, -1, -1, -1, -1, -1,
7459 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7460 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
7461 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
7462 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
7463 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
7464 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7465 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7466 -1, -1, -1, 137, 138, 139, 140, 141, 142, 143,
7467 144, 145, 146, -1, 148, 149, 52, 53, -1, -1,
7468 56, -1, 156, -1, -1, -1, -1, -1, -1, -1,
7469 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7470 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
7471 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
7472 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7473 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
7474 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7475 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7476 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
7477 146, -1, 148, 149, 52, 53, -1, -1, 56, -1,
7478 156, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7479 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7480 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
7481 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
7482 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
7483 108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7484 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7485 -1, -1, -1, -1, -1, -1, -1, -1, -1, 137,
7486 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
7487 148, 149, 52, 53, -1, -1, 56, -1, 156, -1,
7488 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7489 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
7490 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
7491 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
7492 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
7493 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7494 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7495 -1, -1, -1, -1, -1, -1, -1, 137, 138, 139,
7496 140, 141, 142, 143, 144, 145, 146, -1, 148, 149,
7497 52, 53, -1, -1, 56, -1, 156, -1, -1, -1,
7498 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7499 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
7500 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
7501 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
7502 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
7503 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7504 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7505 -1, -1, -1, -1, -1, 137, 138, 139, 140, 141,
7506 142, 143, 144, 145, 146, -1, 148, 149, -1, -1,
7512static const yytype_int16 yystos[] =
7514 0, 165, 166, 1, 3, 4, 5, 6, 7, 11,
7515 12, 16, 18, 19, 20, 21, 22, 23, 24, 30,
7516 31, 32, 33, 34, 35, 36, 39, 45, 46, 47,
7517 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7518 59, 60, 61, 62, 63, 64, 65, 76, 77, 91,
7519 92, 99, 102, 103, 104, 105, 107, 110, 111, 112,
7520 113, 114, 115, 116, 117, 118, 147, 148, 149, 164,
7521 167, 168, 180, 182, 183, 184, 185, 186, 187, 191,
7522 195, 197, 203, 206, 208, 209, 210, 212, 214, 215,
7523 216, 217, 226, 227, 228, 229, 230, 231, 234, 255,
7524 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
7525 277, 278, 287, 288, 324, 329, 330, 380, 381, 382,
7526 383, 384, 385, 387, 388, 391, 392, 394, 395, 396,
7527 397, 411, 412, 414, 415, 416, 417, 418, 419, 420,
7528 421, 422, 483, 0, 3, 4, 5, 6, 7, 8,
7529 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
7530 19, 20, 21, 22, 23, 24, 25, 26, 30, 31,
7531 32, 33, 34, 35, 36, 37, 38, 39, 45, 46,
7532 47, 48, 49, 50, 51, 52, 53, 56, 76, 77,
7533 78, 79, 80, 81, 82, 83, 84, 87, 88, 93,
7534 94, 95, 96, 107, 108, 137, 138, 139, 140, 141,
7535 142, 143, 144, 145, 146, 148, 149, 156, 220, 221,
7536 222, 224, 225, 411, 179, 179, 179, 39, 58, 99,
7537 102, 107, 108, 109, 112, 148, 187, 209, 217, 227,
7538 238, 239, 245, 246, 249, 251, 252, 268, 418, 419,
7539 421, 422, 470, 471, 246, 157, 242, 247, 248, 154,
7540 157, 189, 54, 221, 189, 151, 169, 170, 235, 483,
7541 21, 22, 32, 195, 197, 208, 227, 268, 287, 288,
7542 227, 227, 227, 56, 47, 102, 171, 176, 177, 182,
7543 211, 212, 483, 171, 240, 251, 470, 483, 239, 469,
7544 470, 483, 46, 99, 147, 155, 195, 197, 216, 255,
7545 268, 418, 419, 422, 322, 220, 400, 413, 417, 400,
7546 401, 402, 161, 386, 386, 386, 386, 416, 203, 227,
7547 227, 154, 160, 163, 481, 482, 169, 40, 41, 42,
7548 43, 44, 37, 38, 157, 425, 426, 427, 428, 429,
7549 425, 428, 26, 151, 242, 248, 279, 331, 28, 280,
7550 328, 134, 155, 102, 107, 214, 134, 25, 78, 79,
7551 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
7552 90, 95, 96, 101, 135, 137, 138, 139, 140, 141,
7553 142, 143, 144, 145, 146, 233, 233, 69, 97, 98,
7554 153, 475, 476, 256, 1, 191, 198, 199, 199, 200,
7555 202, 202, 163, 199, 482, 99, 210, 217, 268, 293,
7556 418, 419, 422, 52, 56, 95, 99, 218, 219, 268,
7557 418, 419, 422, 219, 33, 34, 35, 36, 49, 50,
7558 51, 52, 56, 157, 194, 220, 420, 465, 466, 467,
7559 246, 157, 248, 98, 475, 476, 331, 383, 100, 100,
7560 155, 239, 56, 239, 239, 239, 400, 134, 101, 155,
7561 250, 483, 98, 153, 475, 100, 100, 155, 250, 92,
7562 244, 246, 251, 449, 470, 483, 246, 189, 191, 477,
7563 191, 54, 64, 65, 181, 157, 235, 236, 164, 425,
7564 425, 98, 475, 100, 178, 211, 158, 163, 482, 477,
7565 257, 159, 155, 189, 480, 155, 480, 152, 480, 189,
7566 56, 416, 213, 214, 427, 155, 98, 153, 475, 319,
7567 66, 119, 121, 122, 403, 119, 119, 403, 67, 403,
7568 161, 389, 398, 393, 399, 78, 160, 168, 171, 199,
7569 199, 199, 199, 235, 237, 191, 191, 52, 54, 55,
7570 56, 57, 58, 78, 92, 102, 107, 108, 109, 141,
7571 144, 298, 367, 426, 430, 431, 433, 434, 437, 438,
7572 440, 441, 442, 443, 449, 450, 451, 452, 453, 454,
7573 455, 456, 457, 458, 459, 460, 461, 462, 134, 265,
7574 443, 134, 266, 332, 333, 106, 207, 334, 335, 335,
7575 235, 211, 155, 216, 155, 235, 193, 227, 227, 227,
7576 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7577 192, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7578 227, 227, 52, 53, 56, 224, 472, 473, 244, 251,
7579 52, 53, 56, 224, 472, 242, 171, 174, 13, 289,
7580 481, 289, 199, 171, 171, 259, 163, 56, 98, 153,
7581 475, 25, 199, 52, 56, 218, 138, 424, 483, 98,
7582 153, 475, 264, 468, 69, 98, 474, 246, 477, 52,
7583 56, 242, 472, 235, 235, 223, 100, 124, 235, 239,
7584 239, 249, 252, 470, 52, 56, 244, 52, 56, 235,
7585 235, 471, 477, 155, 477, 155, 158, 477, 221, 236,
7586 227, 152, 134, 134, 56, 472, 472, 235, 170, 477,
7587 177, 158, 470, 155, 213, 52, 56, 244, 52, 56,
7588 320, 405, 404, 119, 390, 403, 66, 119, 119, 390,
7589 66, 119, 227, 152, 182, 102, 107, 294, 295, 296,
7590 297, 451, 155, 432, 463, 464, 155, 432, 155, 439,
7591 464, 477, 299, 300, 155, 439, 239, 34, 52, 52,
7592 155, 439, 34, 52, 39, 188, 209, 227, 232, 174,
7593 481, 188, 232, 174, 319, 152, 333, 319, 10, 68,
7594 286, 286, 107, 203, 204, 205, 239, 251, 253, 254,
7595 477, 213, 155, 99, 185, 190, 205, 217, 227, 239,
7596 241, 254, 268, 422, 341, 341, 189, 100, 100, 151,
7597 242, 248, 189, 478, 155, 100, 100, 242, 243, 248,
7598 483, 235, 286, 171, 13, 171, 27, 290, 481, 286,
7599 286, 17, 283, 337, 25, 258, 343, 52, 56, 244,
7600 52, 56, 260, 263, 423, 262, 52, 56, 218, 244,
7601 174, 191, 196, 477, 243, 248, 190, 227, 241, 190,
7602 241, 221, 235, 239, 250, 100, 100, 478, 100, 100,
7603 449, 470, 191, 39, 190, 241, 480, 214, 478, 321,
7604 406, 410, 417, 422, 386, 403, 386, 386, 386, 296,
7605 451, 155, 477, 155, 462, 430, 456, 458, 434, 437,
7606 454, 460, 134, 239, 438, 453, 460, 452, 454, 189,
7607 44, 44, 286, 286, 320, 152, 320, 239, 155, 44,
7608 213, 56, 44, 134, 44, 98, 153, 475, 339, 339,
7609 136, 235, 235, 333, 207, 159, 100, 235, 235, 207,
7610 8, 281, 376, 483, 14, 15, 284, 285, 291, 292,
7611 483, 292, 201, 107, 239, 336, 286, 341, 337, 286,
7612 478, 199, 481, 199, 174, 478, 286, 477, 194, 331,
7613 328, 235, 235, 100, 235, 235, 477, 155, 477, 189,
7614 179, 407, 477, 294, 297, 295, 432, 155, 439, 155,
7615 439, 155, 439, 155, 439, 439, 188, 232, 237, 237,
7616 321, 321, 107, 239, 237, 237, 235, 237, 52, 56,
7617 244, 52, 56, 340, 340, 227, 190, 241, 190, 241,
7618 152, 235, 190, 241, 190, 241, 239, 254, 377, 483,
7619 175, 284, 171, 199, 286, 286, 239, 155, 289, 339,
7620 286, 290, 174, 481, 286, 235, 157, 298, 325, 426,
7621 431, 435, 436, 438, 445, 446, 447, 448, 449, 454,
7622 460, 462, 408, 155, 155, 454, 454, 460, 454, 227,
7623 227, 179, 179, 239, 182, 182, 227, 478, 52, 56,
7624 58, 91, 92, 99, 102, 104, 105, 107, 112, 140,
7625 324, 346, 347, 348, 350, 353, 357, 358, 359, 362,
7626 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
7627 373, 374, 375, 380, 381, 384, 385, 388, 392, 395,
7628 397, 419, 456, 346, 190, 241, 101, 378, 483, 9,
7629 282, 379, 483, 172, 289, 107, 239, 171, 340, 261,
7630 286, 448, 155, 303, 483, 323, 155, 303, 155, 444,
7631 483, 155, 444, 155, 444, 171, 295, 439, 439, 155,
7632 439, 439, 139, 313, 314, 483, 313, 371, 371, 56,
7633 218, 340, 347, 355, 356, 357, 358, 361, 478, 189,
7634 340, 479, 52, 400, 52, 102, 417, 101, 155, 139,
7635 155, 155, 347, 89, 90, 98, 153, 157, 351, 352,
7636 52, 99, 217, 268, 418, 419, 422, 289, 176, 171,
7637 171, 239, 292, 337, 338, 345, 346, 171, 189, 316,
7638 462, 29, 123, 326, 458, 436, 454, 460, 438, 460,
7639 454, 0, 120, 409, 454, 298, 301, 302, 304, 305,
7640 307, 308, 310, 311, 312, 315, 452, 454, 455, 460,
7641 462, 171, 174, 347, 478, 347, 359, 361, 478, 155,
7642 152, 235, 124, 199, 372, 355, 359, 349, 360, 361,
7643 112, 364, 368, 371, 371, 218, 340, 478, 340, 477,
7644 355, 358, 362, 355, 358, 362, 56, 98, 153, 475,
7645 171, 163, 173, 291, 289, 40, 41, 286, 160, 158,
7646 327, 171, 303, 155, 444, 155, 444, 155, 444, 155,
7647 444, 444, 439, 303, 155, 303, 155, 309, 483, 316,
7648 300, 155, 306, 309, 99, 268, 155, 309, 477, 155,
7649 155, 354, 477, 155, 353, 155, 400, 477, 477, 477,
7650 478, 478, 478, 52, 56, 244, 52, 56, 376, 379,
7651 342, 199, 199, 52, 317, 318, 450, 174, 152, 454,
7652 454, 460, 454, 301, 458, 305, 307, 454, 460, 139,
7653 268, 308, 460, 56, 98, 454, 360, 362, 360, 359,
7654 361, 478, 171, 155, 189, 286, 444, 444, 155, 444,
7655 444, 303, 155, 309, 155, 309, 155, 309, 155, 309,
7656 52, 56, 309, 155, 479, 292, 343, 344, 318, 454,
7657 454, 454, 460, 454, 444, 309, 309, 155, 309, 309,
7662static const yytype_int16 yyr1[] =
7664 0, 162, 165, 163, 163, 164, 166, 167, 167, 167,
7665 168, 168, 169, 170, 171, 172, 173, 174, 175, 174,
7666 176, 176, 176, 177, 178, 177, 179, 180, 181, 182,
7667 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
7668 182, 182, 183, 182, 182, 182, 182, 182, 184, 185,
7669 186, 186, 186, 186, 186, 186, 186, 186, 185, 187,
7670 187, 185, 188, 188, 189, 189, 188, 190, 190, 190,
7671 191, 191, 191, 191, 191, 192, 191, 193, 191, 191,
7672 194, 195, 196, 197, 198, 199, 199, 200, 201, 202,
7673 203, 203, 204, 205, 206, 206, 207, 208, 208, 208,
7674 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
7675 209, 209, 210, 210, 211, 211, 212, 212, 212, 213,
7676 213, 212, 212, 212, 212, 212, 212, 212, 214, 214,
7677 215, 215, 216, 216, 216, 216, 216, 216, 216, 216,
7678 216, 217, 217, 217, 217, 217, 217, 217, 217, 217,
7679 218, 218, 219, 219, 219, 220, 220, 220, 220, 220,
7680 221, 221, 222, 223, 222, 224, 224, 224, 224, 224,
7681 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7682 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7683 224, 224, 224, 224, 224, 225, 225, 225, 225, 225,
7684 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7685 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7686 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7687 225, 225, 225, 225, 225, 225, 226, 227, 228, 228,
7688 228, 228, 228, 228, 228, 228, 227, 229, 229, 229,
7689 229, 229, 229, 227, 227, 227, 227, 227, 227, 227,
7690 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7691 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7692 230, 230, 227, 227, 227, 231, 232, 232, 232, 233,
7693 233, 233, 233, 234, 234, 235, 236, 237, 238, 239,
7694 240, 240, 240, 240, 241, 241, 242, 242, 242, 243,
7695 243, 244, 244, 244, 244, 244, 245, 246, 246, 246,
7696 246, 246, 246, 247, 248, 249, 249, 250, 250, 251,
7697 251, 251, 251, 252, 252, 253, 253, 254, 254, 254,
7698 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7699 255, 256, 255, 257, 255, 255, 255, 255, 255, 255,
7700 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7701 255, 255, 255, 255, 255, 258, 255, 259, 255, 255,
7702 260, 261, 255, 262, 255, 263, 255, 264, 255, 265,
7703 255, 266, 255, 255, 255, 255, 255, 267, 268, 269,
7704 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
7705 280, 281, 282, 283, 284, 285, 286, 286, 287, 288,
7706 289, 289, 289, 290, 290, 291, 291, 292, 292, 293,
7707 293, 294, 294, 295, 295, 296, 296, 296, 296, 296,
7708 297, 297, 298, 298, 299, 300, 301, 301, 302, 302,
7709 303, 303, 304, 304, 304, 304, 305, 306, 307, 308,
7710 308, 309, 309, 310, 310, 310, 310, 310, 310, 310,
7711 310, 310, 310, 310, 310, 311, 311, 311, 312, 311,
7712 313, 313, 314, 315, 315, 316, 316, 317, 317, 318,
7713 318, 319, 320, 321, 322, 323, 324, 325, 325, 326,
7714 327, 326, 328, 329, 329, 329, 329, 329, 330, 330,
7715 330, 330, 330, 330, 330, 330, 331, 331, 332, 333,
7716 334, 335, 336, 336, 336, 336, 337, 338, 338, 339,
7717 340, 341, 342, 343, 344, 344, 345, 345, 345, 346,
7718 346, 346, 346, 346, 346, 347, 348, 348, 349, 350,
7719 350, 351, 352, 353, 353, 353, 353, 353, 353, 353,
7720 353, 353, 353, 353, 353, 353, 354, 353, 353, 353,
7721 355, 355, 355, 355, 355, 355, 356, 356, 357, 357,
7722 358, 359, 359, 360, 360, 361, 362, 362, 362, 362,
7723 363, 363, 364, 364, 365, 365, 366, 366, 367, 368,
7724 368, 369, 370, 370, 370, 370, 370, 370, 369, 369,
7725 369, 369, 371, 371, 371, 371, 371, 371, 371, 371,
7726 371, 371, 372, 373, 373, 374, 375, 375, 375, 376,
7727 376, 377, 377, 377, 378, 378, 379, 379, 380, 380,
7728 381, 382, 382, 382, 383, 384, 385, 386, 386, 387,
7729 388, 389, 389, 390, 390, 391, 392, 393, 393, 394,
7730 395, 396, 397, 398, 398, 399, 399, 400, 400, 401,
7731 401, 402, 402, 403, 404, 403, 405, 406, 407, 408,
7732 403, 409, 409, 410, 410, 411, 411, 412, 413, 413,
7733 414, 415, 415, 416, 416, 416, 416, 417, 417, 417,
7734 418, 418, 418, 419, 419, 419, 419, 419, 419, 419,
7735 420, 420, 421, 421, 422, 422, 423, 424, 424, 425,
7736 425, 426, 427, 428, 429, 428, 430, 430, 431, 431,
7737 432, 432, 433, 433, 433, 433, 434, 434, 435, 435,
7738 435, 435, 436, 436, 437, 438, 438, 439, 439, 440,
7739 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
7740 440, 441, 441, 442, 441, 441, 443, 444, 444, 445,
7741 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
7742 445, 446, 446, 447, 446, 446, 448, 449, 450, 450,
7743 450, 450, 451, 451, 452, 453, 453, 454, 454, 455,
7744 456, 456, 457, 458, 458, 459, 459, 460, 460, 461,
7745 461, 462, 462, 462, 463, 463, 464, 465, 466, 467,
7746 468, 467, 469, 469, 470, 470, 471, 471, 471, 471,
7747 471, 471, 472, 472, 472, 472, 473, 473, 473, 474,
7748 474, 475, 475, 476, 476, 477, 478, 479, 480, 480,
7749 481, 481, 482, 482, 483
7753static const yytype_int8 yyr2[] =
7755 0, 2, 0, 0, 1, 2, 2, 1, 1, 3,
7756 1, 2, 1, 3, 2, 0, 0, 8, 0, 5,
7757 1, 1, 3, 1, 0, 3, 0, 2, 0, 4,
7758 3, 3, 3, 2, 3, 3, 3, 3, 4, 4,
7759 1, 4, 4, 1, 7, 4, 1, 1, 4, 1,
7760 4, 7, 6, 6, 6, 6, 5, 4, 1, 4,
7761 4, 1, 1, 4, 0, 1, 3, 1, 4, 1,
7762 1, 3, 3, 3, 2, 0, 7, 0, 7, 1,
7763 1, 2, 0, 5, 1, 1, 1, 0, 0, 4,
7764 1, 1, 1, 1, 1, 4, 3, 1, 1, 1,
7765 2, 3, 4, 5, 4, 5, 6, 2, 2, 2,
7766 2, 2, 1, 3, 1, 3, 1, 2, 3, 1,
7767 3, 5, 2, 4, 2, 4, 1, 3, 1, 3,
7768 2, 3, 1, 1, 4, 3, 3, 3, 3, 2,
7769 1, 1, 1, 4, 3, 3, 3, 3, 2, 1,
7770 1, 1, 2, 1, 3, 1, 1, 1, 1, 1,
7771 1, 1, 1, 0, 4, 1, 1, 1, 1, 1,
7772 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7773 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7774 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7775 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7776 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7777 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7778 1, 1, 1, 1, 1, 1, 4, 1, 4, 7,
7779 6, 6, 6, 6, 5, 4, 1, 3, 3, 2,
7780 2, 2, 2, 1, 3, 3, 3, 3, 3, 3,
7781 4, 2, 2, 3, 3, 3, 3, 1, 3, 3,
7782 3, 3, 3, 2, 2, 3, 3, 3, 3, 4,
7783 4, 4, 1, 1, 1, 6, 1, 4, 3, 1,
7784 1, 1, 1, 3, 3, 1, 1, 1, 1, 1,
7785 1, 2, 4, 2, 1, 4, 3, 5, 3, 1,
7786 1, 1, 1, 2, 4, 2, 1, 1, 1, 2,
7787 2, 4, 1, 0, 2, 2, 1, 2, 1, 1,
7788 1, 3, 3, 2, 1, 1, 1, 3, 4, 2,
7789 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7790 1, 0, 4, 0, 4, 3, 3, 2, 3, 3,
7791 1, 4, 3, 1, 6, 4, 3, 2, 1, 2,
7792 1, 6, 6, 4, 4, 0, 6, 0, 5, 5,
7793 0, 0, 9, 0, 6, 0, 7, 0, 5, 0,
7794 5, 0, 5, 1, 1, 1, 1, 1, 1, 1,
7795 1, 1, 2, 2, 1, 2, 1, 1, 1, 1,
7796 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7797 1, 1, 2, 1, 1, 1, 5, 1, 2, 1,
7798 1, 1, 3, 1, 3, 1, 3, 5, 1, 3,
7799 2, 1, 1, 1, 0, 2, 2, 1, 1, 3,
7800 2, 1, 4, 2, 2, 1, 1, 1, 3, 1,
7801 3, 2, 1, 6, 8, 4, 6, 4, 6, 4,
7802 6, 2, 4, 2, 4, 1, 2, 2, 1, 1,
7803 1, 1, 4, 0, 1, 1, 4, 1, 3, 1,
7804 1, 0, 0, 0, 0, 0, 9, 4, 1, 3,
7805 0, 4, 3, 2, 4, 5, 5, 3, 2, 4,
7806 4, 3, 3, 2, 1, 4, 3, 3, 0, 7,
7807 0, 7, 1, 2, 3, 4, 5, 1, 1, 0,
7808 0, 0, 0, 9, 1, 1, 1, 3, 3, 1,
7809 2, 3, 1, 1, 1, 1, 3, 1, 0, 4,
7810 1, 2, 2, 1, 1, 4, 4, 4, 3, 4,
7811 4, 4, 3, 3, 3, 2, 0, 6, 2, 4,
7812 1, 1, 2, 2, 4, 1, 2, 3, 1, 3,
7813 5, 2, 1, 1, 3, 1, 3, 1, 2, 1,
7814 1, 3, 2, 1, 1, 3, 2, 1, 2, 1,
7815 1, 1, 3, 3, 2, 2, 2, 2, 1, 1,
7816 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7817 1, 1, 1, 2, 2, 4, 2, 3, 1, 6,
7818 1, 1, 1, 1, 2, 1, 3, 1, 1, 1,
7819 1, 1, 1, 2, 3, 3, 3, 1, 2, 4,
7820 1, 0, 3, 1, 2, 4, 1, 0, 3, 4,
7821 1, 4, 1, 0, 3, 0, 3, 0, 2, 0,
7822 2, 0, 2, 1, 0, 3, 0, 0, 0, 0,
7823 7, 1, 1, 1, 1, 1, 1, 2, 1, 1,
7824 3, 1, 2, 1, 1, 1, 1, 1, 1, 1,
7825 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7826 1, 1, 1, 1, 1, 1, 0, 4, 1, 1,
7827 1, 0, 3, 1, 0, 3, 2, 1, 1, 3,
7828 2, 1, 4, 2, 2, 1, 1, 1, 4, 2,
7829 2, 1, 1, 1, 3, 1, 3, 2, 1, 6,
7830 8, 4, 6, 4, 6, 4, 6, 2, 4, 2,
7831 4, 1, 2, 1, 1, 1, 1, 2, 1, 6,
7832 8, 4, 6, 4, 6, 4, 6, 2, 4, 2,
7833 4, 1, 2, 1, 1, 1, 1, 1, 1, 1,
7834 1, 1, 1, 1, 1, 1, 3, 1, 3, 1,
7835 1, 1, 1, 2, 1, 1, 1, 2, 1, 1,
7836 1, 2, 2, 1, 0, 1, 1, 1, 1, 1,
7837 0, 4, 1, 2, 1, 3, 3, 2, 1, 4,
7838 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7839 1, 1, 1, 1, 1, 2, 2, 2, 1, 1,
7844enum { YYENOMEM = -2 };
7846#define yyerrok (yyerrstatus = 0)
7847#define yyclearin (yychar = YYEMPTY)
7849#define YYACCEPT goto yyacceptlab
7850#define YYABORT goto yyabortlab
7851#define YYERROR goto yyerrorlab
7852#define YYNOMEM goto yyexhaustedlab
7855#define YYRECOVERING() (!!yyerrstatus)
7857#define YYBACKUP(Token, Value) \
7859 if (yychar == YYEMPTY) \
7863 YYPOPSTACK (yylen); \
7869 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
7876#define YYERRCODE YYUNDEF
7882#ifndef YYLLOC_DEFAULT
7883# define YYLLOC_DEFAULT(Current, Rhs, N) \
7887 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
7888 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
7889 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
7890 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
7894 (Current).first_line = (Current).last_line = \
7895 YYRHSLOC (Rhs, 0).last_line; \
7896 (Current).first_column = (Current).last_column = \
7897 YYRHSLOC (Rhs, 0).last_column; \
7902#define YYRHSLOC(Rhs, K) ((Rhs)[K])
7910# define YYFPRINTF fprintf
7913# define YYDPRINTF(Args) \
7924# ifndef YYLOCATION_PRINT
7926# if defined YY_LOCATION_PRINT
7930# define YYLOCATION_PRINT(File, Loc, p) YY_LOCATION_PRINT(File, *(Loc), p)
7932# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
7938yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
7941 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
7942 if (0 <= yylocp->first_line)
7944 res += YYFPRINTF (yyo,
"%d", yylocp->first_line);
7945 if (0 <= yylocp->first_column)
7946 res += YYFPRINTF (yyo,
".%d", yylocp->first_column);
7948 if (0 <= yylocp->last_line)
7950 if (yylocp->first_line < yylocp->last_line)
7952 res += YYFPRINTF (yyo,
"-%d", yylocp->last_line);
7954 res += YYFPRINTF (yyo,
".%d", end_col);
7956 else if (0 <= end_col && yylocp->first_column < end_col)
7957 res += YYFPRINTF (yyo,
"-%d", end_col);
7962# define YYLOCATION_PRINT yy_location_print_
7966# define YY_LOCATION_PRINT(File, Loc, p) YYLOCATION_PRINT(File, &(Loc), p)
7970# define YYLOCATION_PRINT(File, Loc, p) ((void) 0)
7973# define YY_LOCATION_PRINT YYLOCATION_PRINT
7979# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p) \
7983 YYFPRINTF (stderr, "%s ", Title); \
7984 yy_symbol_print (stderr, \
7985 Kind, Value, Location, p); \
7986 YYFPRINTF (stderr, "\n"); \
7996yy_symbol_value_print (
FILE *yyo,
7999 FILE *yyoutput = yyo;
8001 YY_USE (yylocationp);
8005 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
8008 case YYSYMBOL_keyword_class:
8011 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8016 case YYSYMBOL_keyword_module:
8019 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8024 case YYSYMBOL_keyword_def:
8027 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8032 case YYSYMBOL_keyword_undef:
8035 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8040 case YYSYMBOL_keyword_begin:
8043 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8048 case YYSYMBOL_keyword_rescue:
8051 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8056 case YYSYMBOL_keyword_ensure:
8059 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8064 case YYSYMBOL_keyword_end:
8067 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8072 case YYSYMBOL_keyword_if:
8075 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8080 case YYSYMBOL_keyword_unless:
8083 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8088 case YYSYMBOL_keyword_then:
8091 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8096 case YYSYMBOL_keyword_elsif:
8099 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8104 case YYSYMBOL_keyword_else:
8107 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8112 case YYSYMBOL_keyword_case:
8115 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8120 case YYSYMBOL_keyword_when:
8123 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8128 case YYSYMBOL_keyword_while:
8131 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8136 case YYSYMBOL_keyword_until:
8139 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8144 case YYSYMBOL_keyword_for:
8147 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8152 case YYSYMBOL_keyword_break:
8155 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8160 case YYSYMBOL_keyword_next:
8163 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8168 case YYSYMBOL_keyword_redo:
8171 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8176 case YYSYMBOL_keyword_retry:
8179 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8184 case YYSYMBOL_keyword_in:
8187 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8192 case YYSYMBOL_keyword_do:
8195 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8200 case YYSYMBOL_keyword_do_cond:
8203 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8208 case YYSYMBOL_keyword_do_block:
8211 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8216 case YYSYMBOL_keyword_do_LAMBDA:
8219 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8224 case YYSYMBOL_keyword_return:
8227 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8232 case YYSYMBOL_keyword_yield:
8235 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8240 case YYSYMBOL_keyword_super:
8243 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8248 case YYSYMBOL_keyword_self:
8251 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8256 case YYSYMBOL_keyword_nil:
8259 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8264 case YYSYMBOL_keyword_true:
8267 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8272 case YYSYMBOL_keyword_false:
8275 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8280 case YYSYMBOL_keyword_and:
8283 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8288 case YYSYMBOL_keyword_or:
8291 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8296 case YYSYMBOL_keyword_not:
8299 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8304 case YYSYMBOL_modifier_if:
8307 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8312 case YYSYMBOL_modifier_unless:
8315 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8320 case YYSYMBOL_modifier_while:
8323 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8328 case YYSYMBOL_modifier_until:
8331 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8336 case YYSYMBOL_modifier_rescue:
8339 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8344 case YYSYMBOL_keyword_alias:
8347 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8352 case YYSYMBOL_keyword_defined:
8355 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8360 case YYSYMBOL_keyword_BEGIN:
8363 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8368 case YYSYMBOL_keyword_END:
8371 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8376 case YYSYMBOL_keyword__LINE__:
8379 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8384 case YYSYMBOL_keyword__FILE__:
8387 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8392 case YYSYMBOL_keyword__ENCODING__:
8395 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8400 case YYSYMBOL_tIDENTIFIER:
8403 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8411 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8416 case YYSYMBOL_tGVAR:
8419 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8424 case YYSYMBOL_tIVAR:
8427 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8432 case YYSYMBOL_tCONSTANT:
8435 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8440 case YYSYMBOL_tCVAR:
8443 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8448 case YYSYMBOL_tLABEL:
8451 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8456 case YYSYMBOL_tINTEGER:
8459 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8461 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8464 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8467 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8469 case NODE_IMAGINARY:
8470 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8479 case YYSYMBOL_tFLOAT:
8482 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8484 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8487 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8490 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8492 case NODE_IMAGINARY:
8493 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8502 case YYSYMBOL_tRATIONAL:
8505 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8507 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8510 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8513 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8515 case NODE_IMAGINARY:
8516 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8525 case YYSYMBOL_tIMAGINARY:
8528 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8530 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8533 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8536 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8538 case NODE_IMAGINARY:
8539 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8548 case YYSYMBOL_tCHAR:
8551 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8553 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8556 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8559 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8561 case NODE_IMAGINARY:
8562 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8571 case YYSYMBOL_tNTH_REF:
8574 rb_parser_printf(p,
"$%ld", RNODE_NTH_REF(((*yyvaluep).node))->nd_nth);
8579 case YYSYMBOL_tBACK_REF:
8582 rb_parser_printf(p,
"$%c", (
int)RNODE_BACK_REF(((*yyvaluep).node))->nd_nth);
8587 case YYSYMBOL_tSTRING_CONTENT:
8590 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8592 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8595 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8598 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8600 case NODE_IMAGINARY:
8601 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8613 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8618 case YYSYMBOL_70_backslash_:
8621 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8626 case YYSYMBOL_72_escaped_horizontal_tab_:
8629 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8634 case YYSYMBOL_73_escaped_form_feed_:
8637 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8642 case YYSYMBOL_74_escaped_carriage_return_:
8645 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8650 case YYSYMBOL_75_escaped_vertical_tab_:
8653 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8658 case YYSYMBOL_tANDDOT:
8661 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8666 case YYSYMBOL_tCOLON2:
8669 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8674 case YYSYMBOL_tOP_ASGN:
8677 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8682 case YYSYMBOL_compstmt_top_stmts:
8685 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8686 rb_parser_printf(p,
"NODE_SPECIAL");
8688 else if (((*yyvaluep).node)) {
8689 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8695 case YYSYMBOL_top_stmts:
8698 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8699 rb_parser_printf(p,
"NODE_SPECIAL");
8701 else if (((*yyvaluep).node)) {
8702 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8708 case YYSYMBOL_top_stmt:
8711 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8712 rb_parser_printf(p,
"NODE_SPECIAL");
8714 else if (((*yyvaluep).node)) {
8715 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8721 case YYSYMBOL_block_open:
8724 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
8725 rb_parser_printf(p,
"NODE_SPECIAL");
8727 else if (((*yyvaluep).node_exits)) {
8728 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8734 case YYSYMBOL_begin_block:
8737 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8738 rb_parser_printf(p,
"NODE_SPECIAL");
8740 else if (((*yyvaluep).node)) {
8741 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8747 case YYSYMBOL_compstmt_stmts:
8750 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8751 rb_parser_printf(p,
"NODE_SPECIAL");
8753 else if (((*yyvaluep).node)) {
8754 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8760 case YYSYMBOL_bodystmt:
8763 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8764 rb_parser_printf(p,
"NODE_SPECIAL");
8766 else if (((*yyvaluep).node)) {
8767 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8773 case YYSYMBOL_stmts:
8776 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8777 rb_parser_printf(p,
"NODE_SPECIAL");
8779 else if (((*yyvaluep).node)) {
8780 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8786 case YYSYMBOL_stmt_or_begin:
8789 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8790 rb_parser_printf(p,
"NODE_SPECIAL");
8792 else if (((*yyvaluep).node)) {
8793 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8799 case YYSYMBOL_allow_exits:
8802 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
8803 rb_parser_printf(p,
"NODE_SPECIAL");
8805 else if (((*yyvaluep).node_exits)) {
8806 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8815 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8816 rb_parser_printf(p,
"NODE_SPECIAL");
8818 else if (((*yyvaluep).node)) {
8819 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8825 case YYSYMBOL_asgn_mrhs:
8828 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8829 rb_parser_printf(p,
"NODE_SPECIAL");
8831 else if (((*yyvaluep).node)) {
8832 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8838 case YYSYMBOL_asgn_command_rhs:
8841 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8842 rb_parser_printf(p,
"NODE_SPECIAL");
8844 else if (((*yyvaluep).node)) {
8845 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8851 case YYSYMBOL_command_asgn:
8854 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8855 rb_parser_printf(p,
"NODE_SPECIAL");
8857 else if (((*yyvaluep).node)) {
8858 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8864 case YYSYMBOL_op_asgn_command_rhs:
8867 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8868 rb_parser_printf(p,
"NODE_SPECIAL");
8870 else if (((*yyvaluep).node)) {
8871 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8877 case YYSYMBOL_def_endless_method_endless_command:
8880 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8881 rb_parser_printf(p,
"NODE_SPECIAL");
8883 else if (((*yyvaluep).node)) {
8884 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8890 case YYSYMBOL_endless_command:
8893 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8894 rb_parser_printf(p,
"NODE_SPECIAL");
8896 else if (((*yyvaluep).node)) {
8897 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8903 case YYSYMBOL_command_rhs:
8906 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8907 rb_parser_printf(p,
"NODE_SPECIAL");
8909 else if (((*yyvaluep).node)) {
8910 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8919 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8920 rb_parser_printf(p,
"NODE_SPECIAL");
8922 else if (((*yyvaluep).node)) {
8923 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8929 case YYSYMBOL_def_name:
8932 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8937 case YYSYMBOL_defn_head:
8940 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
8941 rb_parser_printf(p,
"NODE_SPECIAL");
8943 else if (((*yyvaluep).node_def_temp)) {
8944 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8950 case YYSYMBOL_defs_head:
8953 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
8954 rb_parser_printf(p,
"NODE_SPECIAL");
8956 else if (((*yyvaluep).node_def_temp)) {
8957 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8963 case YYSYMBOL_value_expr_expr:
8966 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8967 rb_parser_printf(p,
"NODE_SPECIAL");
8969 else if (((*yyvaluep).node)) {
8970 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8976 case YYSYMBOL_expr_value:
8979 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8980 rb_parser_printf(p,
"NODE_SPECIAL");
8982 else if (((*yyvaluep).node)) {
8983 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8989 case YYSYMBOL_expr_value_do:
8992 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8993 rb_parser_printf(p,
"NODE_SPECIAL");
8995 else if (((*yyvaluep).node)) {
8996 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9002 case YYSYMBOL_command_call:
9005 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9006 rb_parser_printf(p,
"NODE_SPECIAL");
9008 else if (((*yyvaluep).node)) {
9009 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9015 case YYSYMBOL_value_expr_command_call:
9018 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9019 rb_parser_printf(p,
"NODE_SPECIAL");
9021 else if (((*yyvaluep).node)) {
9022 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9028 case YYSYMBOL_command_call_value:
9031 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9032 rb_parser_printf(p,
"NODE_SPECIAL");
9034 else if (((*yyvaluep).node)) {
9035 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9041 case YYSYMBOL_block_command:
9044 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9045 rb_parser_printf(p,
"NODE_SPECIAL");
9047 else if (((*yyvaluep).node)) {
9048 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9054 case YYSYMBOL_cmd_brace_block:
9057 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9058 rb_parser_printf(p,
"NODE_SPECIAL");
9060 else if (((*yyvaluep).node)) {
9061 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9067 case YYSYMBOL_fcall:
9070 if ((
NODE *)((*yyvaluep).node_fcall) == (
NODE *)-1) {
9071 rb_parser_printf(p,
"NODE_SPECIAL");
9073 else if (((*yyvaluep).node_fcall)) {
9074 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_fcall)))));
9080 case YYSYMBOL_command:
9083 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9084 rb_parser_printf(p,
"NODE_SPECIAL");
9086 else if (((*yyvaluep).node)) {
9087 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9096 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9097 rb_parser_printf(p,
"NODE_SPECIAL");
9099 else if (((*yyvaluep).node_masgn)) {
9100 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9106 case YYSYMBOL_mlhs_inner:
9109 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9110 rb_parser_printf(p,
"NODE_SPECIAL");
9112 else if (((*yyvaluep).node_masgn)) {
9113 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9119 case YYSYMBOL_mlhs_basic:
9122 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9123 rb_parser_printf(p,
"NODE_SPECIAL");
9125 else if (((*yyvaluep).node_masgn)) {
9126 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9132 case YYSYMBOL_mlhs_items_mlhs_item:
9135 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9136 rb_parser_printf(p,
"NODE_SPECIAL");
9138 else if (((*yyvaluep).node)) {
9139 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9145 case YYSYMBOL_mlhs_item:
9148 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9149 rb_parser_printf(p,
"NODE_SPECIAL");
9151 else if (((*yyvaluep).node)) {
9152 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9158 case YYSYMBOL_mlhs_head:
9161 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9162 rb_parser_printf(p,
"NODE_SPECIAL");
9164 else if (((*yyvaluep).node)) {
9165 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9171 case YYSYMBOL_mlhs_node:
9174 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9175 rb_parser_printf(p,
"NODE_SPECIAL");
9177 else if (((*yyvaluep).node)) {
9178 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9187 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9188 rb_parser_printf(p,
"NODE_SPECIAL");
9190 else if (((*yyvaluep).node)) {
9191 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9197 case YYSYMBOL_cname:
9200 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9205 case YYSYMBOL_cpath:
9208 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9209 rb_parser_printf(p,
"NODE_SPECIAL");
9211 else if (((*yyvaluep).node)) {
9212 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9218 case YYSYMBOL_fname:
9221 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9226 case YYSYMBOL_fitem:
9229 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9230 rb_parser_printf(p,
"NODE_SPECIAL");
9232 else if (((*yyvaluep).node)) {
9233 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9239 case YYSYMBOL_undef_list:
9242 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9243 rb_parser_printf(p,
"NODE_SPECIAL");
9245 else if (((*yyvaluep).node)) {
9246 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9255 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9260 case YYSYMBOL_reswords:
9263 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9268 case YYSYMBOL_asgn_arg_rhs:
9271 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9272 rb_parser_printf(p,
"NODE_SPECIAL");
9274 else if (((*yyvaluep).node)) {
9275 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9284 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9285 rb_parser_printf(p,
"NODE_SPECIAL");
9287 else if (((*yyvaluep).node)) {
9288 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9294 case YYSYMBOL_op_asgn_arg_rhs:
9297 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9298 rb_parser_printf(p,
"NODE_SPECIAL");
9300 else if (((*yyvaluep).node)) {
9301 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9307 case YYSYMBOL_range_expr_arg:
9310 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9311 rb_parser_printf(p,
"NODE_SPECIAL");
9313 else if (((*yyvaluep).node)) {
9314 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9320 case YYSYMBOL_def_endless_method_endless_arg:
9323 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9324 rb_parser_printf(p,
"NODE_SPECIAL");
9326 else if (((*yyvaluep).node)) {
9327 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9333 case YYSYMBOL_ternary:
9336 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9337 rb_parser_printf(p,
"NODE_SPECIAL");
9339 else if (((*yyvaluep).node)) {
9340 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9346 case YYSYMBOL_endless_arg:
9349 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9350 rb_parser_printf(p,
"NODE_SPECIAL");
9352 else if (((*yyvaluep).node)) {
9353 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9359 case YYSYMBOL_relop:
9362 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9367 case YYSYMBOL_rel_expr:
9370 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9371 rb_parser_printf(p,
"NODE_SPECIAL");
9373 else if (((*yyvaluep).node)) {
9374 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9380 case YYSYMBOL_value_expr_arg:
9383 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9384 rb_parser_printf(p,
"NODE_SPECIAL");
9386 else if (((*yyvaluep).node)) {
9387 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9393 case YYSYMBOL_arg_value:
9396 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9397 rb_parser_printf(p,
"NODE_SPECIAL");
9399 else if (((*yyvaluep).node)) {
9400 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9406 case YYSYMBOL_aref_args:
9409 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9410 rb_parser_printf(p,
"NODE_SPECIAL");
9412 else if (((*yyvaluep).node)) {
9413 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9419 case YYSYMBOL_arg_rhs:
9422 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9423 rb_parser_printf(p,
"NODE_SPECIAL");
9425 else if (((*yyvaluep).node)) {
9426 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9432 case YYSYMBOL_paren_args:
9435 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9436 rb_parser_printf(p,
"NODE_SPECIAL");
9438 else if (((*yyvaluep).node)) {
9439 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9445 case YYSYMBOL_opt_paren_args:
9448 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9449 rb_parser_printf(p,
"NODE_SPECIAL");
9451 else if (((*yyvaluep).node)) {
9452 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9458 case YYSYMBOL_opt_call_args:
9461 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9462 rb_parser_printf(p,
"NODE_SPECIAL");
9464 else if (((*yyvaluep).node)) {
9465 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9471 case YYSYMBOL_value_expr_command:
9474 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9475 rb_parser_printf(p,
"NODE_SPECIAL");
9477 else if (((*yyvaluep).node)) {
9478 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9484 case YYSYMBOL_call_args:
9487 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9488 rb_parser_printf(p,
"NODE_SPECIAL");
9490 else if (((*yyvaluep).node)) {
9491 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9497 case YYSYMBOL_command_args:
9500 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9501 rb_parser_printf(p,
"NODE_SPECIAL");
9503 else if (((*yyvaluep).node)) {
9504 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9510 case YYSYMBOL_block_arg:
9513 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
9514 rb_parser_printf(p,
"NODE_SPECIAL");
9516 else if (((*yyvaluep).node_block_pass)) {
9517 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9523 case YYSYMBOL_opt_block_arg:
9526 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
9527 rb_parser_printf(p,
"NODE_SPECIAL");
9529 else if (((*yyvaluep).node_block_pass)) {
9530 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9539 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9540 rb_parser_printf(p,
"NODE_SPECIAL");
9542 else if (((*yyvaluep).node)) {
9543 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9549 case YYSYMBOL_arg_splat:
9552 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9553 rb_parser_printf(p,
"NODE_SPECIAL");
9555 else if (((*yyvaluep).node)) {
9556 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9562 case YYSYMBOL_mrhs_arg:
9565 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9566 rb_parser_printf(p,
"NODE_SPECIAL");
9568 else if (((*yyvaluep).node)) {
9569 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9578 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9579 rb_parser_printf(p,
"NODE_SPECIAL");
9581 else if (((*yyvaluep).node)) {
9582 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9588 case YYSYMBOL_primary:
9591 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9592 rb_parser_printf(p,
"NODE_SPECIAL");
9594 else if (((*yyvaluep).node)) {
9595 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9601 case YYSYMBOL_value_expr_primary:
9604 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9605 rb_parser_printf(p,
"NODE_SPECIAL");
9607 else if (((*yyvaluep).node)) {
9608 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9614 case YYSYMBOL_primary_value:
9617 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9618 rb_parser_printf(p,
"NODE_SPECIAL");
9620 else if (((*yyvaluep).node)) {
9621 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9627 case YYSYMBOL_k_while:
9630 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9631 rb_parser_printf(p,
"NODE_SPECIAL");
9633 else if (((*yyvaluep).node_exits)) {
9634 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9640 case YYSYMBOL_k_until:
9643 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9644 rb_parser_printf(p,
"NODE_SPECIAL");
9646 else if (((*yyvaluep).node_exits)) {
9647 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9653 case YYSYMBOL_k_for:
9656 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9657 rb_parser_printf(p,
"NODE_SPECIAL");
9659 else if (((*yyvaluep).node_exits)) {
9660 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9666 case YYSYMBOL_k_def:
9669 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
9670 rb_parser_printf(p,
"NODE_SPECIAL");
9672 else if (((*yyvaluep).node_def_temp)) {
9673 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
9682 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9687 case YYSYMBOL_if_tail:
9690 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9691 rb_parser_printf(p,
"NODE_SPECIAL");
9693 else if (((*yyvaluep).node)) {
9694 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9700 case YYSYMBOL_opt_else:
9703 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9704 rb_parser_printf(p,
"NODE_SPECIAL");
9706 else if (((*yyvaluep).node)) {
9707 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9713 case YYSYMBOL_for_var:
9716 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9717 rb_parser_printf(p,
"NODE_SPECIAL");
9719 else if (((*yyvaluep).node)) {
9720 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9726 case YYSYMBOL_f_marg:
9729 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9730 rb_parser_printf(p,
"NODE_SPECIAL");
9732 else if (((*yyvaluep).node)) {
9733 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9739 case YYSYMBOL_mlhs_items_f_marg:
9742 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9743 rb_parser_printf(p,
"NODE_SPECIAL");
9745 else if (((*yyvaluep).node)) {
9746 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9752 case YYSYMBOL_f_margs:
9755 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9756 rb_parser_printf(p,
"NODE_SPECIAL");
9758 else if (((*yyvaluep).node_masgn)) {
9759 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9765 case YYSYMBOL_f_rest_marg:
9768 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9769 rb_parser_printf(p,
"NODE_SPECIAL");
9771 else if (((*yyvaluep).node)) {
9772 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9778 case YYSYMBOL_f_any_kwrest:
9781 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9786 case YYSYMBOL_f_kw_primary_value:
9789 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9790 rb_parser_printf(p,
"NODE_SPECIAL");
9792 else if (((*yyvaluep).node_kw_arg)) {
9793 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9799 case YYSYMBOL_f_kwarg_primary_value:
9802 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9803 rb_parser_printf(p,
"NODE_SPECIAL");
9805 else if (((*yyvaluep).node_kw_arg)) {
9806 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9812 case YYSYMBOL_opt_f_block_arg_none:
9815 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9820 case YYSYMBOL_args_tail_basic_primary_value_none:
9823 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9824 rb_parser_printf(p,
"NODE_SPECIAL");
9826 else if (((*yyvaluep).node_args)) {
9827 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9833 case YYSYMBOL_block_args_tail:
9836 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9837 rb_parser_printf(p,
"NODE_SPECIAL");
9839 else if (((*yyvaluep).node_args)) {
9840 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9846 case YYSYMBOL_excessed_comma:
9849 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9854 case YYSYMBOL_f_opt_primary_value:
9857 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9858 rb_parser_printf(p,
"NODE_SPECIAL");
9860 else if (((*yyvaluep).node_opt_arg)) {
9861 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9867 case YYSYMBOL_f_opt_arg_primary_value:
9870 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9871 rb_parser_printf(p,
"NODE_SPECIAL");
9873 else if (((*yyvaluep).node_opt_arg)) {
9874 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9880 case YYSYMBOL_opt_args_tail_block_args_tail_none:
9883 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9884 rb_parser_printf(p,
"NODE_SPECIAL");
9886 else if (((*yyvaluep).node_args)) {
9887 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9893 case YYSYMBOL_args_list_primary_value_opt_args_tail_block_args_tail_none:
9896 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9897 rb_parser_printf(p,
"NODE_SPECIAL");
9899 else if (((*yyvaluep).node_args)) {
9900 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9906 case YYSYMBOL_block_param:
9909 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9910 rb_parser_printf(p,
"NODE_SPECIAL");
9912 else if (((*yyvaluep).node_args)) {
9913 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9919 case YYSYMBOL_tail_only_args_block_args_tail:
9922 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9923 rb_parser_printf(p,
"NODE_SPECIAL");
9925 else if (((*yyvaluep).node_args)) {
9926 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9932 case YYSYMBOL_opt_block_param_def:
9935 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9936 rb_parser_printf(p,
"NODE_SPECIAL");
9938 else if (((*yyvaluep).node_args)) {
9939 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9945 case YYSYMBOL_block_param_def:
9948 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9949 rb_parser_printf(p,
"NODE_SPECIAL");
9951 else if (((*yyvaluep).node_args)) {
9952 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9958 case YYSYMBOL_opt_block_param:
9961 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9962 rb_parser_printf(p,
"NODE_SPECIAL");
9964 else if (((*yyvaluep).node_args)) {
9965 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9971 case YYSYMBOL_opt_bv_decl:
9974 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9979 case YYSYMBOL_bv_decls:
9982 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9990 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9995 case YYSYMBOL_numparam:
9998 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9999 rb_parser_printf(p,
"NODE_SPECIAL");
10001 else if (((*yyvaluep).node)) {
10002 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10005#line 10006 "parse.c"
10008 case YYSYMBOL_it_id:
10009#line 2633 "parse.y"
10011 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10013#line 10014 "parse.c"
10016 case YYSYMBOL_lambda:
10017#line 2624 "parse.y"
10019 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10020 rb_parser_printf(p,
"NODE_SPECIAL");
10022 else if (((*yyvaluep).node)) {
10023 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10026#line 10027 "parse.c"
10029 case YYSYMBOL_f_larglist:
10030#line 2624 "parse.y"
10032 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10033 rb_parser_printf(p,
"NODE_SPECIAL");
10035 else if (((*yyvaluep).node_args)) {
10036 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10039#line 10040 "parse.c"
10042 case YYSYMBOL_do_block:
10043#line 2624 "parse.y"
10045 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10046 rb_parser_printf(p,
"NODE_SPECIAL");
10048 else if (((*yyvaluep).node)) {
10049 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10052#line 10053 "parse.c"
10055 case YYSYMBOL_block_call:
10056#line 2624 "parse.y"
10058 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10059 rb_parser_printf(p,
"NODE_SPECIAL");
10061 else if (((*yyvaluep).node)) {
10062 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10065#line 10066 "parse.c"
10068 case YYSYMBOL_method_call:
10069#line 2624 "parse.y"
10071 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10072 rb_parser_printf(p,
"NODE_SPECIAL");
10074 else if (((*yyvaluep).node)) {
10075 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10078#line 10079 "parse.c"
10081 case YYSYMBOL_brace_block:
10082#line 2624 "parse.y"
10084 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10085 rb_parser_printf(p,
"NODE_SPECIAL");
10087 else if (((*yyvaluep).node)) {
10088 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10091#line 10092 "parse.c"
10094 case YYSYMBOL_brace_body:
10095#line 2624 "parse.y"
10097 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10098 rb_parser_printf(p,
"NODE_SPECIAL");
10100 else if (((*yyvaluep).node)) {
10101 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10104#line 10105 "parse.c"
10107 case YYSYMBOL_do_body:
10108#line 2624 "parse.y"
10110 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10111 rb_parser_printf(p,
"NODE_SPECIAL");
10113 else if (((*yyvaluep).node)) {
10114 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10117#line 10118 "parse.c"
10120 case YYSYMBOL_case_args:
10121#line 2624 "parse.y"
10123 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10124 rb_parser_printf(p,
"NODE_SPECIAL");
10126 else if (((*yyvaluep).node)) {
10127 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10130#line 10131 "parse.c"
10133 case YYSYMBOL_case_body:
10134#line 2624 "parse.y"
10136 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10137 rb_parser_printf(p,
"NODE_SPECIAL");
10139 else if (((*yyvaluep).node)) {
10140 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10143#line 10144 "parse.c"
10146 case YYSYMBOL_cases:
10147#line 2624 "parse.y"
10149 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10150 rb_parser_printf(p,
"NODE_SPECIAL");
10152 else if (((*yyvaluep).node)) {
10153 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10156#line 10157 "parse.c"
10159 case YYSYMBOL_p_case_body:
10160#line 2624 "parse.y"
10162 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10163 rb_parser_printf(p,
"NODE_SPECIAL");
10165 else if (((*yyvaluep).node)) {
10166 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10169#line 10170 "parse.c"
10172 case YYSYMBOL_p_cases:
10173#line 2624 "parse.y"
10175 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10176 rb_parser_printf(p,
"NODE_SPECIAL");
10178 else if (((*yyvaluep).node)) {
10179 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10182#line 10183 "parse.c"
10185 case YYSYMBOL_p_top_expr:
10186#line 2624 "parse.y"
10188 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10189 rb_parser_printf(p,
"NODE_SPECIAL");
10191 else if (((*yyvaluep).node)) {
10192 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10195#line 10196 "parse.c"
10198 case YYSYMBOL_p_top_expr_body:
10199#line 2624 "parse.y"
10201 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10202 rb_parser_printf(p,
"NODE_SPECIAL");
10204 else if (((*yyvaluep).node)) {
10205 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10208#line 10209 "parse.c"
10211 case YYSYMBOL_p_expr:
10212#line 2624 "parse.y"
10214 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10215 rb_parser_printf(p,
"NODE_SPECIAL");
10217 else if (((*yyvaluep).node)) {
10218 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10221#line 10222 "parse.c"
10224 case YYSYMBOL_p_as:
10225#line 2624 "parse.y"
10227 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10228 rb_parser_printf(p,
"NODE_SPECIAL");
10230 else if (((*yyvaluep).node)) {
10231 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10234#line 10235 "parse.c"
10237 case YYSYMBOL_p_alt:
10238#line 2624 "parse.y"
10240 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10241 rb_parser_printf(p,
"NODE_SPECIAL");
10243 else if (((*yyvaluep).node)) {
10244 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10247#line 10248 "parse.c"
10250 case YYSYMBOL_p_expr_basic:
10251#line 2624 "parse.y"
10253 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10254 rb_parser_printf(p,
"NODE_SPECIAL");
10256 else if (((*yyvaluep).node)) {
10257 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10260#line 10261 "parse.c"
10263 case YYSYMBOL_p_args:
10264#line 2624 "parse.y"
10266 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10267 rb_parser_printf(p,
"NODE_SPECIAL");
10269 else if (((*yyvaluep).node)) {
10270 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10273#line 10274 "parse.c"
10276 case YYSYMBOL_p_args_head:
10277#line 2624 "parse.y"
10279 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10280 rb_parser_printf(p,
"NODE_SPECIAL");
10282 else if (((*yyvaluep).node)) {
10283 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10286#line 10287 "parse.c"
10289 case YYSYMBOL_p_args_tail:
10290#line 2624 "parse.y"
10292 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10293 rb_parser_printf(p,
"NODE_SPECIAL");
10295 else if (((*yyvaluep).node)) {
10296 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10299#line 10300 "parse.c"
10302 case YYSYMBOL_p_find:
10303#line 2624 "parse.y"
10305 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10306 rb_parser_printf(p,
"NODE_SPECIAL");
10308 else if (((*yyvaluep).node)) {
10309 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10312#line 10313 "parse.c"
10315 case YYSYMBOL_p_rest:
10316#line 2624 "parse.y"
10318 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10319 rb_parser_printf(p,
"NODE_SPECIAL");
10321 else if (((*yyvaluep).node)) {
10322 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10325#line 10326 "parse.c"
10328 case YYSYMBOL_p_args_post:
10329#line 2624 "parse.y"
10331 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10332 rb_parser_printf(p,
"NODE_SPECIAL");
10334 else if (((*yyvaluep).node)) {
10335 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10338#line 10339 "parse.c"
10341 case YYSYMBOL_p_arg:
10342#line 2624 "parse.y"
10344 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10345 rb_parser_printf(p,
"NODE_SPECIAL");
10347 else if (((*yyvaluep).node)) {
10348 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10351#line 10352 "parse.c"
10354 case YYSYMBOL_p_kwargs:
10355#line 2624 "parse.y"
10357 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10358 rb_parser_printf(p,
"NODE_SPECIAL");
10360 else if (((*yyvaluep).node)) {
10361 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10364#line 10365 "parse.c"
10367 case YYSYMBOL_p_kwarg:
10368#line 2624 "parse.y"
10370 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10371 rb_parser_printf(p,
"NODE_SPECIAL");
10373 else if (((*yyvaluep).node)) {
10374 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10377#line 10378 "parse.c"
10380 case YYSYMBOL_p_kw:
10381#line 2624 "parse.y"
10383 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10384 rb_parser_printf(p,
"NODE_SPECIAL");
10386 else if (((*yyvaluep).node)) {
10387 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10390#line 10391 "parse.c"
10393 case YYSYMBOL_p_kw_label:
10394#line 2633 "parse.y"
10396 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10398#line 10399 "parse.c"
10401 case YYSYMBOL_p_kwrest:
10402#line 2633 "parse.y"
10404 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10406#line 10407 "parse.c"
10409 case YYSYMBOL_p_kwnorest:
10410#line 2633 "parse.y"
10412 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10414#line 10415 "parse.c"
10417 case YYSYMBOL_p_any_kwrest:
10418#line 2633 "parse.y"
10420 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10422#line 10423 "parse.c"
10425 case YYSYMBOL_p_value:
10426#line 2624 "parse.y"
10428 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10429 rb_parser_printf(p,
"NODE_SPECIAL");
10431 else if (((*yyvaluep).node)) {
10432 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10435#line 10436 "parse.c"
10438 case YYSYMBOL_range_expr_p_primitive:
10439#line 2624 "parse.y"
10441 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10442 rb_parser_printf(p,
"NODE_SPECIAL");
10444 else if (((*yyvaluep).node)) {
10445 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10448#line 10449 "parse.c"
10451 case YYSYMBOL_p_primitive:
10452#line 2624 "parse.y"
10454 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10455 rb_parser_printf(p,
"NODE_SPECIAL");
10457 else if (((*yyvaluep).node)) {
10458 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10461#line 10462 "parse.c"
10464 case YYSYMBOL_p_variable:
10465#line 2624 "parse.y"
10467 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10468 rb_parser_printf(p,
"NODE_SPECIAL");
10470 else if (((*yyvaluep).node)) {
10471 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10474#line 10475 "parse.c"
10477 case YYSYMBOL_p_var_ref:
10478#line 2624 "parse.y"
10480 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10481 rb_parser_printf(p,
"NODE_SPECIAL");
10483 else if (((*yyvaluep).node)) {
10484 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10487#line 10488 "parse.c"
10490 case YYSYMBOL_p_expr_ref:
10491#line 2624 "parse.y"
10493 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10494 rb_parser_printf(p,
"NODE_SPECIAL");
10496 else if (((*yyvaluep).node)) {
10497 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10500#line 10501 "parse.c"
10503 case YYSYMBOL_p_const:
10504#line 2624 "parse.y"
10506 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10507 rb_parser_printf(p,
"NODE_SPECIAL");
10509 else if (((*yyvaluep).node)) {
10510 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10513#line 10514 "parse.c"
10516 case YYSYMBOL_opt_rescue:
10517#line 2624 "parse.y"
10519 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10520 rb_parser_printf(p,
"NODE_SPECIAL");
10522 else if (((*yyvaluep).node)) {
10523 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10526#line 10527 "parse.c"
10529 case YYSYMBOL_exc_list:
10530#line 2624 "parse.y"
10532 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10533 rb_parser_printf(p,
"NODE_SPECIAL");
10535 else if (((*yyvaluep).node)) {
10536 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10539#line 10540 "parse.c"
10542 case YYSYMBOL_exc_var:
10543#line 2624 "parse.y"
10545 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10546 rb_parser_printf(p,
"NODE_SPECIAL");
10548 else if (((*yyvaluep).node)) {
10549 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10552#line 10553 "parse.c"
10555 case YYSYMBOL_opt_ensure:
10556#line 2624 "parse.y"
10558 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10559 rb_parser_printf(p,
"NODE_SPECIAL");
10561 else if (((*yyvaluep).node)) {
10562 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10565#line 10566 "parse.c"
10568 case YYSYMBOL_literal:
10569#line 2624 "parse.y"
10571 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10572 rb_parser_printf(p,
"NODE_SPECIAL");
10574 else if (((*yyvaluep).node)) {
10575 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10578#line 10579 "parse.c"
10581 case YYSYMBOL_strings:
10582#line 2624 "parse.y"
10584 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10585 rb_parser_printf(p,
"NODE_SPECIAL");
10587 else if (((*yyvaluep).node)) {
10588 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10591#line 10592 "parse.c"
10594 case YYSYMBOL_string:
10595#line 2624 "parse.y"
10597 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10598 rb_parser_printf(p,
"NODE_SPECIAL");
10600 else if (((*yyvaluep).node)) {
10601 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10604#line 10605 "parse.c"
10607 case YYSYMBOL_string1:
10608#line 2624 "parse.y"
10610 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10611 rb_parser_printf(p,
"NODE_SPECIAL");
10613 else if (((*yyvaluep).node)) {
10614 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10617#line 10618 "parse.c"
10620 case YYSYMBOL_xstring:
10621#line 2624 "parse.y"
10623 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10624 rb_parser_printf(p,
"NODE_SPECIAL");
10626 else if (((*yyvaluep).node)) {
10627 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10630#line 10631 "parse.c"
10633 case YYSYMBOL_regexp:
10634#line 2624 "parse.y"
10636 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10637 rb_parser_printf(p,
"NODE_SPECIAL");
10639 else if (((*yyvaluep).node)) {
10640 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10643#line 10644 "parse.c"
10646 case YYSYMBOL_words_tWORDS_BEG_word_list:
10647#line 2624 "parse.y"
10649 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10650 rb_parser_printf(p,
"NODE_SPECIAL");
10652 else if (((*yyvaluep).node)) {
10653 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10656#line 10657 "parse.c"
10659 case YYSYMBOL_words:
10660#line 2624 "parse.y"
10662 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10663 rb_parser_printf(p,
"NODE_SPECIAL");
10665 else if (((*yyvaluep).node)) {
10666 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10669#line 10670 "parse.c"
10672 case YYSYMBOL_word_list:
10673#line 2624 "parse.y"
10675 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10676 rb_parser_printf(p,
"NODE_SPECIAL");
10678 else if (((*yyvaluep).node)) {
10679 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10682#line 10683 "parse.c"
10685 case YYSYMBOL_word:
10686#line 2624 "parse.y"
10688 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10689 rb_parser_printf(p,
"NODE_SPECIAL");
10691 else if (((*yyvaluep).node)) {
10692 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10695#line 10696 "parse.c"
10698 case YYSYMBOL_words_tSYMBOLS_BEG_symbol_list:
10699#line 2624 "parse.y"
10701 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10702 rb_parser_printf(p,
"NODE_SPECIAL");
10704 else if (((*yyvaluep).node)) {
10705 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10708#line 10709 "parse.c"
10711 case YYSYMBOL_symbols:
10712#line 2624 "parse.y"
10714 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10715 rb_parser_printf(p,
"NODE_SPECIAL");
10717 else if (((*yyvaluep).node)) {
10718 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10721#line 10722 "parse.c"
10724 case YYSYMBOL_symbol_list:
10725#line 2624 "parse.y"
10727 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10728 rb_parser_printf(p,
"NODE_SPECIAL");
10730 else if (((*yyvaluep).node)) {
10731 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10734#line 10735 "parse.c"
10737 case YYSYMBOL_words_tQWORDS_BEG_qword_list:
10738#line 2624 "parse.y"
10740 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10741 rb_parser_printf(p,
"NODE_SPECIAL");
10743 else if (((*yyvaluep).node)) {
10744 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10747#line 10748 "parse.c"
10750 case YYSYMBOL_qwords:
10751#line 2624 "parse.y"
10753 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10754 rb_parser_printf(p,
"NODE_SPECIAL");
10756 else if (((*yyvaluep).node)) {
10757 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10760#line 10761 "parse.c"
10763 case YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list:
10764#line 2624 "parse.y"
10766 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10767 rb_parser_printf(p,
"NODE_SPECIAL");
10769 else if (((*yyvaluep).node)) {
10770 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10773#line 10774 "parse.c"
10776 case YYSYMBOL_qsymbols:
10777#line 2624 "parse.y"
10779 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10780 rb_parser_printf(p,
"NODE_SPECIAL");
10782 else if (((*yyvaluep).node)) {
10783 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10786#line 10787 "parse.c"
10789 case YYSYMBOL_qword_list:
10790#line 2624 "parse.y"
10792 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10793 rb_parser_printf(p,
"NODE_SPECIAL");
10795 else if (((*yyvaluep).node)) {
10796 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10799#line 10800 "parse.c"
10802 case YYSYMBOL_qsym_list:
10803#line 2624 "parse.y"
10805 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10806 rb_parser_printf(p,
"NODE_SPECIAL");
10808 else if (((*yyvaluep).node)) {
10809 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10812#line 10813 "parse.c"
10815 case YYSYMBOL_string_contents:
10816#line 2624 "parse.y"
10818 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10819 rb_parser_printf(p,
"NODE_SPECIAL");
10821 else if (((*yyvaluep).node)) {
10822 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10825#line 10826 "parse.c"
10828 case YYSYMBOL_xstring_contents:
10829#line 2624 "parse.y"
10831 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10832 rb_parser_printf(p,
"NODE_SPECIAL");
10834 else if (((*yyvaluep).node)) {
10835 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10838#line 10839 "parse.c"
10841 case YYSYMBOL_regexp_contents:
10842#line 2624 "parse.y"
10844 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10845 rb_parser_printf(p,
"NODE_SPECIAL");
10847 else if (((*yyvaluep).node)) {
10848 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10851#line 10852 "parse.c"
10854 case YYSYMBOL_string_content:
10855#line 2624 "parse.y"
10857 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10858 rb_parser_printf(p,
"NODE_SPECIAL");
10860 else if (((*yyvaluep).node)) {
10861 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10864#line 10865 "parse.c"
10867 case YYSYMBOL_string_dvar:
10868#line 2624 "parse.y"
10870 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10871 rb_parser_printf(p,
"NODE_SPECIAL");
10873 else if (((*yyvaluep).node)) {
10874 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10877#line 10878 "parse.c"
10880 case YYSYMBOL_symbol:
10881#line 2624 "parse.y"
10883 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10884 rb_parser_printf(p,
"NODE_SPECIAL");
10886 else if (((*yyvaluep).node)) {
10887 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10890#line 10891 "parse.c"
10893 case YYSYMBOL_ssym:
10894#line 2624 "parse.y"
10896 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10897 rb_parser_printf(p,
"NODE_SPECIAL");
10899 else if (((*yyvaluep).node)) {
10900 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10903#line 10904 "parse.c"
10907#line 2633 "parse.y"
10909 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10911#line 10912 "parse.c"
10914 case YYSYMBOL_dsym:
10915#line 2624 "parse.y"
10917 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10918 rb_parser_printf(p,
"NODE_SPECIAL");
10920 else if (((*yyvaluep).node)) {
10921 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10924#line 10925 "parse.c"
10927 case YYSYMBOL_numeric:
10928#line 2624 "parse.y"
10930 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10931 rb_parser_printf(p,
"NODE_SPECIAL");
10933 else if (((*yyvaluep).node)) {
10934 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10937#line 10938 "parse.c"
10940 case YYSYMBOL_simple_numeric:
10941#line 2624 "parse.y"
10943 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10944 rb_parser_printf(p,
"NODE_SPECIAL");
10946 else if (((*yyvaluep).node)) {
10947 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10950#line 10951 "parse.c"
10953 case YYSYMBOL_nonlocal_var:
10954#line 2633 "parse.y"
10956 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10958#line 10959 "parse.c"
10961 case YYSYMBOL_user_variable:
10962#line 2633 "parse.y"
10964 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10966#line 10967 "parse.c"
10969 case YYSYMBOL_keyword_variable:
10970#line 2633 "parse.y"
10972 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10974#line 10975 "parse.c"
10977 case YYSYMBOL_var_ref:
10978#line 2624 "parse.y"
10980 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10981 rb_parser_printf(p,
"NODE_SPECIAL");
10983 else if (((*yyvaluep).node)) {
10984 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10987#line 10988 "parse.c"
10990 case YYSYMBOL_var_lhs:
10991#line 2624 "parse.y"
10993 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10994 rb_parser_printf(p,
"NODE_SPECIAL");
10996 else if (((*yyvaluep).node)) {
10997 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11000#line 11001 "parse.c"
11003 case YYSYMBOL_backref:
11004#line 2624 "parse.y"
11006 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11007 rb_parser_printf(p,
"NODE_SPECIAL");
11009 else if (((*yyvaluep).node)) {
11010 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11013#line 11014 "parse.c"
11016 case YYSYMBOL_superclass:
11017#line 2624 "parse.y"
11019 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11020 rb_parser_printf(p,
"NODE_SPECIAL");
11022 else if (((*yyvaluep).node)) {
11023 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11026#line 11027 "parse.c"
11029 case YYSYMBOL_f_opt_paren_args:
11030#line 2624 "parse.y"
11032 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11033 rb_parser_printf(p,
"NODE_SPECIAL");
11035 else if (((*yyvaluep).node_args)) {
11036 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11039#line 11040 "parse.c"
11042 case YYSYMBOL_f_empty_arg:
11043#line 2624 "parse.y"
11045 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11046 rb_parser_printf(p,
"NODE_SPECIAL");
11048 else if (((*yyvaluep).node_args)) {
11049 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11052#line 11053 "parse.c"
11055 case YYSYMBOL_f_paren_args:
11056#line 2624 "parse.y"
11058 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11059 rb_parser_printf(p,
"NODE_SPECIAL");
11061 else if (((*yyvaluep).node_args)) {
11062 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11065#line 11066 "parse.c"
11068 case YYSYMBOL_f_arglist:
11069#line 2624 "parse.y"
11071 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11072 rb_parser_printf(p,
"NODE_SPECIAL");
11074 else if (((*yyvaluep).node_args)) {
11075 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11078#line 11079 "parse.c"
11081 case YYSYMBOL_f_kw_arg_value:
11082#line 2624 "parse.y"
11084 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
11085 rb_parser_printf(p,
"NODE_SPECIAL");
11087 else if (((*yyvaluep).node_kw_arg)) {
11088 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
11091#line 11092 "parse.c"
11094 case YYSYMBOL_f_kwarg_arg_value:
11095#line 2624 "parse.y"
11097 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
11098 rb_parser_printf(p,
"NODE_SPECIAL");
11100 else if (((*yyvaluep).node_kw_arg)) {
11101 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
11104#line 11105 "parse.c"
11107 case YYSYMBOL_opt_f_block_arg_opt_comma:
11108#line 2633 "parse.y"
11110 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11112#line 11113 "parse.c"
11115 case YYSYMBOL_args_tail_basic_arg_value_opt_comma:
11116#line 2624 "parse.y"
11118 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11119 rb_parser_printf(p,
"NODE_SPECIAL");
11121 else if (((*yyvaluep).node_args)) {
11122 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11125#line 11126 "parse.c"
11128 case YYSYMBOL_args_tail:
11129#line 2624 "parse.y"
11131 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11132 rb_parser_printf(p,
"NODE_SPECIAL");
11134 else if (((*yyvaluep).node_args)) {
11135 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11138#line 11139 "parse.c"
11141 case YYSYMBOL_args_tail_basic_arg_value_none:
11142#line 2624 "parse.y"
11144 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11145 rb_parser_printf(p,
"NODE_SPECIAL");
11147 else if (((*yyvaluep).node_args)) {
11148 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11151#line 11152 "parse.c"
11154 case YYSYMBOL_largs_tail:
11155#line 2624 "parse.y"
11157 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11158 rb_parser_printf(p,
"NODE_SPECIAL");
11160 else if (((*yyvaluep).node_args)) {
11161 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11164#line 11165 "parse.c"
11167 case YYSYMBOL_f_opt_arg_value:
11168#line 2624 "parse.y"
11170 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
11171 rb_parser_printf(p,
"NODE_SPECIAL");
11173 else if (((*yyvaluep).node_opt_arg)) {
11174 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
11177#line 11178 "parse.c"
11180 case YYSYMBOL_f_opt_arg_arg_value:
11181#line 2624 "parse.y"
11183 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
11184 rb_parser_printf(p,
"NODE_SPECIAL");
11186 else if (((*yyvaluep).node_opt_arg)) {
11187 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
11190#line 11191 "parse.c"
11193 case YYSYMBOL_opt_args_tail_args_tail_opt_comma:
11194#line 2624 "parse.y"
11196 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11197 rb_parser_printf(p,
"NODE_SPECIAL");
11199 else if (((*yyvaluep).node_args)) {
11200 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11203#line 11204 "parse.c"
11206 case YYSYMBOL_args_list_arg_value_opt_args_tail_args_tail_opt_comma:
11207#line 2624 "parse.y"
11209 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11210 rb_parser_printf(p,
"NODE_SPECIAL");
11212 else if (((*yyvaluep).node_args)) {
11213 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11216#line 11217 "parse.c"
11219 case YYSYMBOL_f_args_list_args_tail_opt_comma:
11220#line 2624 "parse.y"
11222 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11223 rb_parser_printf(p,
"NODE_SPECIAL");
11225 else if (((*yyvaluep).node_args)) {
11226 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11229#line 11230 "parse.c"
11232 case YYSYMBOL_tail_only_args_args_tail:
11233#line 2624 "parse.y"
11235 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11236 rb_parser_printf(p,
"NODE_SPECIAL");
11238 else if (((*yyvaluep).node_args)) {
11239 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11242#line 11243 "parse.c"
11245 case YYSYMBOL_f_args:
11246#line 2624 "parse.y"
11248 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11249 rb_parser_printf(p,
"NODE_SPECIAL");
11251 else if (((*yyvaluep).node_args)) {
11252 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11255#line 11256 "parse.c"
11258 case YYSYMBOL_opt_args_tail_largs_tail_none:
11259#line 2624 "parse.y"
11261 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11262 rb_parser_printf(p,
"NODE_SPECIAL");
11264 else if (((*yyvaluep).node_args)) {
11265 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11268#line 11269 "parse.c"
11271 case YYSYMBOL_args_list_arg_value_opt_args_tail_largs_tail_none:
11272#line 2624 "parse.y"
11274 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11275 rb_parser_printf(p,
"NODE_SPECIAL");
11277 else if (((*yyvaluep).node_args)) {
11278 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11281#line 11282 "parse.c"
11284 case YYSYMBOL_f_args_list_largs_tail_none:
11285#line 2624 "parse.y"
11287 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11288 rb_parser_printf(p,
"NODE_SPECIAL");
11290 else if (((*yyvaluep).node_args)) {
11291 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11294#line 11295 "parse.c"
11297 case YYSYMBOL_tail_only_args_largs_tail:
11298#line 2624 "parse.y"
11300 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11301 rb_parser_printf(p,
"NODE_SPECIAL");
11303 else if (((*yyvaluep).node_args)) {
11304 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11307#line 11308 "parse.c"
11310 case YYSYMBOL_f_largs:
11311#line 2624 "parse.y"
11313 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11314 rb_parser_printf(p,
"NODE_SPECIAL");
11316 else if (((*yyvaluep).node_args)) {
11317 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11320#line 11321 "parse.c"
11323 case YYSYMBOL_args_forward:
11324#line 2633 "parse.y"
11326 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11328#line 11329 "parse.c"
11331 case YYSYMBOL_f_bad_arg:
11332#line 2633 "parse.y"
11334 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11336#line 11337 "parse.c"
11339 case YYSYMBOL_f_norm_arg:
11340#line 2633 "parse.y"
11342 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11344#line 11345 "parse.c"
11347 case YYSYMBOL_f_arg_asgn:
11348#line 2633 "parse.y"
11350 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11352#line 11353 "parse.c"
11355 case YYSYMBOL_f_arg_item:
11356#line 2624 "parse.y"
11358 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
11359 rb_parser_printf(p,
"NODE_SPECIAL");
11361 else if (((*yyvaluep).node_args_aux)) {
11362 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11365#line 11366 "parse.c"
11368 case YYSYMBOL_f_arg:
11369#line 2624 "parse.y"
11371 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
11372 rb_parser_printf(p,
"NODE_SPECIAL");
11374 else if (((*yyvaluep).node_args_aux)) {
11375 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11378#line 11379 "parse.c"
11381 case YYSYMBOL_f_label:
11382#line 2633 "parse.y"
11384 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11386#line 11387 "parse.c"
11389 case YYSYMBOL_f_no_kwarg:
11390#line 2633 "parse.y"
11392 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11394#line 11395 "parse.c"
11397 case YYSYMBOL_f_kwrest:
11398#line 2633 "parse.y"
11400 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11402#line 11403 "parse.c"
11405 case YYSYMBOL_f_rest_arg:
11406#line 2633 "parse.y"
11408 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11410#line 11411 "parse.c"
11413 case YYSYMBOL_f_block_arg:
11414#line 2633 "parse.y"
11416 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11418#line 11419 "parse.c"
11421 case YYSYMBOL_opt_comma:
11422#line 2633 "parse.y"
11424 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11426#line 11427 "parse.c"
11429 case YYSYMBOL_value_expr_singleton_expr:
11430#line 2624 "parse.y"
11432 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11433 rb_parser_printf(p,
"NODE_SPECIAL");
11435 else if (((*yyvaluep).node)) {
11436 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11439#line 11440 "parse.c"
11442 case YYSYMBOL_singleton:
11443#line 2624 "parse.y"
11445 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11446 rb_parser_printf(p,
"NODE_SPECIAL");
11448 else if (((*yyvaluep).node)) {
11449 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11452#line 11453 "parse.c"
11455 case YYSYMBOL_singleton_expr:
11456#line 2624 "parse.y"
11458 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11459 rb_parser_printf(p,
"NODE_SPECIAL");
11461 else if (((*yyvaluep).node)) {
11462 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11465#line 11466 "parse.c"
11468 case YYSYMBOL_assoc_list:
11469#line 2624 "parse.y"
11471 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11472 rb_parser_printf(p,
"NODE_SPECIAL");
11474 else if (((*yyvaluep).node)) {
11475 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11478#line 11479 "parse.c"
11481 case YYSYMBOL_assocs:
11482#line 2624 "parse.y"
11484 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11485 rb_parser_printf(p,
"NODE_SPECIAL");
11487 else if (((*yyvaluep).node)) {
11488 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11491#line 11492 "parse.c"
11494 case YYSYMBOL_assoc:
11495#line 2624 "parse.y"
11497 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11498 rb_parser_printf(p,
"NODE_SPECIAL");
11500 else if (((*yyvaluep).node)) {
11501 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11504#line 11505 "parse.c"
11507 case YYSYMBOL_operation2:
11508#line 2633 "parse.y"
11510 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11512#line 11513 "parse.c"
11515 case YYSYMBOL_operation3:
11516#line 2633 "parse.y"
11518 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11520#line 11521 "parse.c"
11523 case YYSYMBOL_dot_or_colon:
11524#line 2633 "parse.y"
11526 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11528#line 11529 "parse.c"
11531 case YYSYMBOL_call_op:
11532#line 2633 "parse.y"
11534 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11536#line 11537 "parse.c"
11539 case YYSYMBOL_call_op2:
11540#line 2633 "parse.y"
11542 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11544#line 11545 "parse.c"
11547 case YYSYMBOL_none:
11548#line 2624 "parse.y"
11550 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11551 rb_parser_printf(p,
"NODE_SPECIAL");
11553 else if (((*yyvaluep).node)) {
11554 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11557#line 11558 "parse.c"
11563 YY_IGNORE_MAYBE_UNINITIALIZED_END
11572yy_symbol_print (
FILE *yyo,
11575 YYFPRINTF (yyo,
"%s %s (",
11576 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
11578 YYLOCATION_PRINT (yyo, yylocationp, p);
11579 YYFPRINTF (yyo,
": ");
11580 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
11581 YYFPRINTF (yyo,
")");
11590yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop,
struct parser_params *p)
11592 YYFPRINTF (stderr,
"Stack now");
11593 for (; yybottom <= yytop; yybottom++)
11595 int yybot = *yybottom;
11596 YYFPRINTF (stderr,
" %d", yybot);
11598 YYFPRINTF (stderr,
"\n");
11601# define YY_STACK_PRINT(Bottom, Top, p) \
11604 yy_stack_print ((Bottom), (Top), p); \
11613yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp,
YYLTYPE *yylsp,
11616 int yylno = yyrline[yyrule];
11617 int yynrhs = yyr2[yyrule];
11619 YYFPRINTF (stderr,
"Reducing stack by rule %d (line %d):\n",
11620 yyrule - 1, yylno);
11622 for (yyi = 0; yyi < yynrhs; yyi++)
11624 YYFPRINTF (stderr,
" $%d = ", yyi + 1);
11625 yy_symbol_print (stderr,
11626 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
11627 &yyvsp[(yyi + 1) - (yynrhs)],
11628 &(yylsp[(yyi + 1) - (yynrhs)]), p);
11629 YYFPRINTF (stderr,
"\n");
11633# define YY_REDUCE_PRINT(Rule, p) \
11636 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
11645# define YYDPRINTF(Args) ((void) 0)
11646# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p)
11647# define YY_STACK_PRINT(Bottom, Top, p)
11648# define YY_REDUCE_PRINT(Rule, p)
11654# define YYINITDEPTH 200
11665# define YYMAXDEPTH 10000
11673 yysymbol_kind_t yytoken;
11685 yysymbol_kind_t yyarg[],
int yyargn)
11689 int yyn = yypact[+*yyctx->yyssp];
11690 if (!yypact_value_is_default (yyn))
11695 int yyxbegin = yyn < 0 ? -yyn : 0;
11697 int yychecklim = YYLAST - yyn + 1;
11698 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
11700 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
11701 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
11702 && !yytable_value_is_error (yytable[yyx + yyn]))
11706 else if (yycount == yyargn)
11709 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
11712 if (yyarg && yycount == 0 && 0 < yyargn)
11713 yyarg[0] = YYSYMBOL_YYEMPTY;
11721# if defined __GLIBC__ && defined _STRING_H
11722# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
11726yystrlen (
const char *yystr)
11729 for (yylen = 0; yystr[yylen]; yylen++)
11737# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
11738# define yystpcpy stpcpy
11743yystpcpy (
char *yydest,
const char *yysrc)
11745 char *yyd = yydest;
11746 const char *yys = yysrc;
11748 while ((*yyd++ = *yys++) !=
'\0')
11765yytnamerr (
char *yyres,
const char *yystr)
11769 YYPTRDIFF_T yyn = 0;
11770 char const *yyp = yystr;
11776 goto do_not_strip_quotes;
11779 if (*++yyp !=
'\\')
11780 goto do_not_strip_quotes;
11796 do_not_strip_quotes: ;
11800 return yystpcpy (yyres, yystr) - yyres;
11802 return yystrlen (yystr);
11809 yysymbol_kind_t yyarg[],
int yyargn)
11836 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
11840 yyarg[yycount] = yyctx->yytoken;
11842 yyn = yypcontext_expected_tokens (yyctx,
11843 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
11844 if (yyn == YYENOMEM)
11861yysyntax_error (YYPTRDIFF_T *yymsg_alloc,
char **yymsg,
11864 enum { YYARGS_MAX = 5 };
11866 const char *yyformat = YY_NULLPTR;
11869 yysymbol_kind_t yyarg[YYARGS_MAX];
11871 YYPTRDIFF_T yysize = 0;
11874 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
11875 if (yycount == YYENOMEM)
11880#define YYCASE_(N, S) \
11885 YYCASE_(0, YY_(
"syntax error"));
11886 YYCASE_(1, YY_(
"syntax error, unexpected %s"));
11887 YYCASE_(2, YY_(
"syntax error, unexpected %s, expecting %s"));
11888 YYCASE_(3, YY_(
"syntax error, unexpected %s, expecting %s or %s"));
11889 YYCASE_(4, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
11890 YYCASE_(5, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
11896 yysize = yystrlen (yyformat) - 2 * yycount + 1;
11899 for (yyi = 0; yyi < yycount; ++yyi)
11901 YYPTRDIFF_T yysize1
11902 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
11903 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
11910 if (*yymsg_alloc < yysize)
11912 *yymsg_alloc = 2 * yysize;
11913 if (! (yysize <= *yymsg_alloc
11914 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
11915 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
11923 char *yyp = *yymsg;
11925 while ((*yyp = *yyformat) !=
'\0')
11926 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
11928 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
11946yydestruct (
const char *yymsg,
11950 YY_USE (yylocationp);
11953 yymsg =
"Deleting";
11954 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp, p);
11956 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
11959 case YYSYMBOL_258_16:
11960#line 2661 "parse.y"
11962 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11964#line 11965 "parse.c"
11967 case YYSYMBOL_259_17:
11968#line 2661 "parse.y"
11970 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11972#line 11973 "parse.c"
11978 YY_IGNORE_MAYBE_UNINITIALIZED_END
12001static const YYSTYPE yyval_default = {};
12002(void) yyval_default;
12004YY_INITIAL_VALUE (
static const YYSTYPE yyval_default;)
12006YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
12009static const YYLTYPE yyloc_default
12010# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
12014YYLTYPE yylloc = yyloc_default;
12020 yy_state_fast_t yystate = 0;
12022 int yyerrstatus = 0;
12028 YYPTRDIFF_T yystacksize = YYINITDEPTH;
12031 yy_state_t yyssa[YYINITDEPTH];
12032 yy_state_t *yyss = yyssa;
12033 yy_state_t *yyssp = yyss;
12049 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
12059 char yymsgbuf[128];
12060 char *yymsg = yymsgbuf;
12061 YYPTRDIFF_T yymsg_alloc =
sizeof yymsgbuf;
12063#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
12069 YYDPRINTF ((stderr,
"Starting parse\n"));
12075#line 2668 "parse.y"
12077 RUBY_SET_YYLLOC_OF_NONE(yylloc);
12080#line 12081 "parse.c"
12099 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
12100 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
12101 YY_IGNORE_USELESS_CAST_BEGIN
12102 *yyssp = YY_CAST (yy_state_t, yystate);
12103 YY_IGNORE_USELESS_CAST_END
12104 YY_STACK_PRINT (yyss, yyssp, p);
12106 if (yyss + yystacksize - 1 <= yyssp)
12107#if !defined yyoverflow && !defined YYSTACK_RELOCATE
12112 YYPTRDIFF_T yysize = yyssp - yyss + 1;
12114# if defined yyoverflow
12119 yy_state_t *yyss1 = yyss;
12127 yyoverflow (YY_(
"memory exhausted"),
12128 &yyss1, yysize * YYSIZEOF (*yyssp),
12129 &yyvs1, yysize * YYSIZEOF (*yyvsp),
12130 &yyls1, yysize * YYSIZEOF (*yylsp),
12138 if (YYMAXDEPTH <= yystacksize)
12141 if (YYMAXDEPTH < yystacksize)
12142 yystacksize = YYMAXDEPTH;
12145 yy_state_t *yyss1 = yyss;
12146 union yyalloc *yyptr =
12147 YY_CAST (
union yyalloc *,
12148 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
12151 YYSTACK_RELOCATE (yyss_alloc, yyss);
12152 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
12153 YYSTACK_RELOCATE (yyls_alloc, yyls);
12154# undef YYSTACK_RELOCATE
12155 if (yyss1 != yyssa)
12156 YYSTACK_FREE (yyss1);
12160 yyssp = yyss + yysize - 1;
12161 yyvsp = yyvs + yysize - 1;
12162 yylsp = yyls + yysize - 1;
12164 YY_IGNORE_USELESS_CAST_BEGIN
12165 YYDPRINTF ((stderr,
"Stack size increased to %ld\n",
12166 YY_CAST (
long, yystacksize)));
12167 YY_IGNORE_USELESS_CAST_END
12169 if (yyss + yystacksize - 1 <= yyssp)
12175 if (yystate == YYFINAL)
12189 yyn = yypact[yystate];
12190 if (yypact_value_is_default (yyn))
12196 if (yychar == YYEMPTY)
12198 YYDPRINTF ((stderr,
"Reading a token\n"));
12199 yychar = yylex (&yylval, &yylloc, p);
12202 if (yychar <= END_OF_INPUT)
12204 yychar = END_OF_INPUT;
12205 yytoken = YYSYMBOL_YYEOF;
12206 YYDPRINTF ((stderr,
"Now at end of input.\n"));
12208 else if (yychar == YYerror)
12215 yytoken = YYSYMBOL_YYerror;
12216 yyerror_range[1] = yylloc;
12221 yytoken = YYTRANSLATE (yychar);
12222 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc, p);
12228 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
12230 yyn = yytable[yyn];
12233 if (yytable_value_is_error (yyn))
12245 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc, p);
12247 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
12249 YY_IGNORE_MAYBE_UNINITIALIZED_END
12252#line 2671 "parse.y"
12254#line 12255 "parse.c"
12266 yyn = yydefact[yystate];
12287 yyval = yyvsp[1-yylen];
12289#line 2672 "parse.y"
12290 {before_reduce(yylen, p);}
12291#line 12292 "parse.c"
12295 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
12296 yyerror_range[1] = yyloc;
12297 YY_REDUCE_PRINT (yyn, p);
12301#line 3176 "parse.y"
12303 SET_LEX_STATE(EXPR_BEG);
12304 local_push(p, ifndef_ripper(1)+0);
12306 if (!ifndef_ripper(p->do_loop) + 0) init_block_exit(p);
12308#line 12309 "parse.c"
12312#line 2991 "parse.y"
12314 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
12316#line 12317 "parse.c"
12320#line 3183 "parse.y"
12322 if ((yyvsp[0].node) && !compile_for_eval) {
12323 NODE *node = (yyvsp[0].node);
12325 if (nd_type_p(node, NODE_BLOCK)) {
12326 while (RNODE_BLOCK(node)->nd_next) {
12327 node = RNODE_BLOCK(node)->nd_next;
12329 node = RNODE_BLOCK(node)->nd_head;
12331 node = remove_begin(node);
12332 void_expr(p, node);
12334 p->eval_tree = NEW_SCOPE(0, block_append(p, p->eval_tree, (yyvsp[0].node)), NULL, &(yyloc));
12338#line 12339 "parse.c"
12342#line 3203 "parse.y"
12344 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12347#line 12348 "parse.c"
12351#line 3208 "parse.y"
12353 (yyval.node) = newline_node((yyvsp[0].node));
12356#line 12357 "parse.c"
12360#line 3213 "parse.y"
12362 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12365#line 12366 "parse.c"
12369#line 3220 "parse.y"
12371 clear_block_exit(p,
true);
12372 (yyval.node) = (yyvsp[0].node);
12374#line 12375 "parse.c"
12378#line 3225 "parse.y"
12380 (yyval.node) = (yyvsp[0].node);
12383#line 12384 "parse.c"
12387#line 3231 "parse.y"
12388 {(yyval.node_exits) = init_block_exit(p);}
12389#line 12390 "parse.c"
12393#line 3234 "parse.y"
12395 restore_block_exit(p, (yyvsp[-2].node_exits));
12396 p->eval_tree_begin = block_append(p, p->eval_tree_begin,
12397 NEW_BEGIN((yyvsp[-1].node), &(yyloc)));
12398 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12401#line 12402 "parse.c"
12405#line 2991 "parse.y"
12407 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
12409#line 12410 "parse.c"
12413#line 3247 "parse.y"
12415 if (!(yyvsp[-1].node)) yyerror1(&(yylsp[0]),
"else without rescue is useless");
12416 next_rescue_context(&p->ctxt, &(yyvsp[-2].ctxt), after_else);
12418#line 12419 "parse.c"
12422#line 3252 "parse.y"
12424 next_rescue_context(&p->ctxt, &(yyvsp[-4].ctxt), after_ensure);
12426#line 12427 "parse.c"
12430#line 3256 "parse.y"
12432 (yyval.node) = new_bodystmt(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12435#line 12436 "parse.c"
12439#line 3263 "parse.y"
12441 next_rescue_context(&p->ctxt, &(yyvsp[-1].ctxt), after_ensure);
12443#line 12444 "parse.c"
12447#line 3267 "parse.y"
12449 (yyval.node) = new_bodystmt(p, (yyvsp[-4].node), (yyvsp[-2].node), 0, (yyvsp[0].node), &(yyloc));
12452#line 12453 "parse.c"
12456#line 3274 "parse.y"
12458 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12461#line 12462 "parse.c"
12465#line 3279 "parse.y"
12467 (yyval.node) = newline_node((yyvsp[0].node));
12470#line 12471 "parse.c"
12474#line 3284 "parse.y"
12476 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12479#line 12480 "parse.c"
12483#line 3292 "parse.y"
12485 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
12487#line 12488 "parse.c"
12491#line 3296 "parse.y"
12493 (yyval.node) = (yyvsp[0].node);
12495#line 12496 "parse.c"
12499#line 3301 "parse.y"
12500 {(yyval.node_exits) = allow_block_exit(p);}
12501#line 12502 "parse.c"
12505#line 3304 "parse.y"
12507 if (p->ctxt.in_def) {
12508 rb_warn0(
"END in method; use at_exit");
12510 (yyval.ctxt) = (yyvsp[0].ctxt);
12511 p->ctxt.in_rescue = before_rescue;
12514#line 12515 "parse.c"
12518#line 3313 "parse.y"
12519 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
12520#line 12521 "parse.c"
12524#line 3314 "parse.y"
12526 (yyval.node) = NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
12529#line 12530 "parse.c"
12533#line 3319 "parse.y"
12535 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].id), &(yyloc), &(yylsp[-2]));
12538#line 12539 "parse.c"
12542#line 3324 "parse.y"
12546 buf[1] = (char)RNODE_BACK_REF((yyvsp[0].node))->nd_nth;
12547 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), rb_intern2(buf, 2), &(yyloc), &(yylsp[-2]));
12550#line 12551 "parse.c"
12554#line 3332 "parse.y"
12556 static const char mesg[] =
"can't make alias for the number variables";
12558 yyerror1(&(yylsp[0]), mesg);
12560 (yyval.node) = NEW_ERROR(&(yyloc));
12563#line 12564 "parse.c"
12567#line 3341 "parse.y"
12569 nd_set_first_loc((yyvsp[0].node), (yylsp[-1]).beg_pos);
12570 RNODE_UNDEF((yyvsp[0].node))->keyword_loc = (yylsp[-1]);
12571 (yyval.node) = (yyvsp[0].node);
12574#line 12575 "parse.c"
12578#line 3348 "parse.y"
12580 (yyval.node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12581 fixpos((yyval.node), (yyvsp[0].node));
12584#line 12585 "parse.c"
12588#line 3354 "parse.y"
12590 (yyval.node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12591 fixpos((yyval.node), (yyvsp[0].node));
12594#line 12595 "parse.c"
12598#line 3360 "parse.y"
12600 clear_block_exit(p,
false);
12601 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12602 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12605 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12609#line 12610 "parse.c"
12613#line 3371 "parse.y"
12615 clear_block_exit(p, 0);
12616 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12617 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12620 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12624#line 12625 "parse.c"
12628#line 3382 "parse.y"
12630 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12632 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12633 resq = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12634 (yyval.node) = NEW_RESCUE(remove_begin((yyvsp[-3].node)), resq, 0, &(yyloc));
12637#line 12638 "parse.c"
12641#line 3391 "parse.y"
12643 clear_block_exit(p,
true);
12644 restore_block_exit(p, (yyvsp[-2].node_exits));
12645 p->ctxt = (yyvsp[-3].ctxt);
12647 NODE *scope = NEW_SCOPE2(0 , 0 , (yyvsp[-1].node) , NULL , &(yyloc));
12648 (yyval.node) = NEW_POSTEXE(scope, &(yyloc), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12649 RNODE_SCOPE(scope)->nd_parent = (yyval.node);
12653#line 12654 "parse.c"
12657#line 3404 "parse.y"
12659 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12662#line 12663 "parse.c"
12666#line 2926 "parse.y"
12668 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12671#line 12672 "parse.c"
12675#line 3411 "parse.y"
12677 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12678 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12679 (yyvsp[0].node) = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12680 loc.beg_pos = (yylsp[-3]).beg_pos;
12681 (yyvsp[-3].node) = NEW_RESCUE((yyvsp[-3].node), (yyvsp[0].node), 0, &loc);
12682 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-6].node_masgn), (yyvsp[-3].node), (yyvsp[-4].ctxt), &(yyloc));
12685#line 12686 "parse.c"
12689#line 3421 "parse.y"
12691 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12694#line 12695 "parse.c"
12698#line 3427 "parse.y"
12701 (yyval.node) = NEW_ERROR(&(yyloc));
12703#line 12704 "parse.c"
12707#line 2926 "parse.y"
12709 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12712#line 12713 "parse.c"
12716#line 3061 "parse.y"
12718 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12721#line 12722 "parse.c"
12725#line 3066 "parse.y"
12727 (yyval.node) = new_ary_op_assign(p, (yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[0].node), &(yylsp[-4]), &(yyloc), &NULL_LOC, &(yylsp[-5]), &(yylsp[-3]), &(yylsp[-2]));
12730#line 12731 "parse.c"
12734#line 3071 "parse.y"
12736 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-3]), &(yylsp[-2]));
12739#line 12740 "parse.c"
12743#line 3076 "parse.y"
12745 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-3]), &(yylsp[-2]));
12748#line 12749 "parse.c"
12752#line 3081 "parse.y"
12754 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), idCOLON2, (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-3]), &(yylsp[-2]));
12757#line 12758 "parse.c"
12761#line 3086 "parse.y"
12763 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
12764 (yyval.node) = new_const_op_assign(p, NEW_COLON2((yyvsp[-5].node), (yyvsp[-3].
id), &loc, &(yylsp[-4]), &(yylsp[-3])), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12767#line 12768 "parse.c"
12771#line 3092 "parse.y"
12773 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
12774 (yyval.node) = new_const_op_assign(p, NEW_COLON3((yyvsp[-3].
id), &loc, &(yylsp[-4]), &(yylsp[-3])), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12777#line 12778 "parse.c"
12781#line 3098 "parse.y"
12783 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
12784 (yyval.node) = NEW_ERROR(&(yyloc));
12787#line 12788 "parse.c"
12791#line 2966 "parse.y"
12793 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12794 restore_defun(p, (yyvsp[-3].node_def_temp));
12795 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12796 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
12797 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
12802#line 12803 "parse.c"
12806#line 2977 "parse.y"
12808 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12809 restore_defun(p, (yyvsp[-3].node_def_temp));
12810 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12811 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
12812 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
12817#line 12818 "parse.c"
12821#line 3440 "parse.y"
12823 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12824 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12827#line 12828 "parse.c"
12831#line 3446 "parse.y"
12833 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12836#line 12837 "parse.c"
12840#line 3454 "parse.y"
12842 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12843 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12844 (yyval.node) = NEW_RESCUE((yyvsp[-3].node), NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc));
12847#line 12848 "parse.c"
12851#line 3465 "parse.y"
12853 (yyval.node) = logop(p, idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12856#line 12857 "parse.c"
12860#line 3470 "parse.y"
12862 (yyval.node) = logop(p, idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12865#line 12866 "parse.c"
12869#line 3475 "parse.y"
12871 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12874#line 12875 "parse.c"
12878#line 3480 "parse.y"
12880 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
12883#line 12884 "parse.c"
12887#line 3485 "parse.y"
12889 value_expr(p, (yyvsp[-1].node));
12891#line 12892 "parse.c"
12895#line 3490 "parse.y"
12897 pop_pktbl(p, (yyvsp[-1].tbl));
12898 pop_pvtbl(p, (yyvsp[-2].tbl));
12899 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12900 p->ctxt.in_alt_pattern = (yyvsp[-3].ctxt).in_alt_pattern;
12901 p->ctxt.capture_in_pattern = (yyvsp[-3].ctxt).capture_in_pattern;
12902 (yyval.node) = NEW_CASE3((yyvsp[-6].node), NEW_IN((yyvsp[0].node), 0, 0, &(yylsp[0]), &NULL_LOC, &NULL_LOC, &(yylsp[-5])), &(yyloc), &NULL_LOC, &NULL_LOC);
12905#line 12906 "parse.c"
12909#line 3500 "parse.y"
12911 value_expr(p, (yyvsp[-1].node));
12913#line 12914 "parse.c"
12917#line 3505 "parse.y"
12919 pop_pktbl(p, (yyvsp[-1].tbl));
12920 pop_pvtbl(p, (yyvsp[-2].tbl));
12921 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12922 p->ctxt.in_alt_pattern = (yyvsp[-3].ctxt).in_alt_pattern;
12923 p->ctxt.capture_in_pattern = (yyvsp[-3].ctxt).capture_in_pattern;
12924 (yyval.node) = NEW_CASE3((yyvsp[-6].node), NEW_IN((yyvsp[0].node), NEW_TRUE(&(yylsp[0])), NEW_FALSE(&(yylsp[0])), &(yylsp[0]), &(yylsp[-5]), &NULL_LOC, &NULL_LOC), &(yyloc), &NULL_LOC, &NULL_LOC);
12927#line 12928 "parse.c"
12931#line 3518 "parse.y"
12933 numparam_name(p, (yyvsp[0].
id));
12935 p->ctxt.in_def = 1;
12936 p->ctxt.in_rescue = before_rescue;
12937 p->ctxt.cant_return = 0;
12938 (yyval.id) = (yyvsp[0].
id);
12940#line 12941 "parse.c"
12944#line 3529 "parse.y"
12946 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-1].node_def_temp));
12947 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12948 (yyval.node_def_temp)->nd_def = NEW_DEFN((yyvsp[0].
id), 0, &(yyloc));
12951#line 12952 "parse.c"
12955#line 3538 "parse.y"
12957 SET_LEX_STATE(EXPR_FNAME);
12959#line 12960 "parse.c"
12963#line 3542 "parse.y"
12965 SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL);
12966 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-4].node_def_temp));
12967 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12968 (yyval.node_def_temp)->nd_def = NEW_DEFS((yyvsp[-3].node), (yyvsp[0].id), 0, &(yyloc));
12971#line 12972 "parse.c"
12975#line 3161 "parse.y"
12977 value_expr(p, (yyvsp[0].node));
12978 (yyval.node) = (yyvsp[0].node);
12980#line 12981 "parse.c"
12984#line 3553 "parse.y"
12986 (yyval.node) = NEW_ERROR(&(yyloc));
12988#line 12989 "parse.c"
12992#line 3558 "parse.y"
12994#line 12995 "parse.c"
12998#line 3558 "parse.y"
13000#line 13001 "parse.c"
13004#line 3559 "parse.y"
13006 (yyval.node) = (yyvsp[-2].node);
13009#line 13010 "parse.c"
13013#line 3161 "parse.y"
13015 value_expr(p, (yyvsp[0].node));
13016 (yyval.node) = (yyvsp[0].node);
13018#line 13019 "parse.c"
13022#line 3574 "parse.y"
13024 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13027#line 13028 "parse.c"
13031#line 3581 "parse.y"
13033 (yyval.node) = (yyvsp[-1].node);
13034 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
13037#line 13038 "parse.c"
13041#line 3589 "parse.y"
13043 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
13046#line 13047 "parse.c"
13050#line 3589 "parse.y"
13052 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
13055#line 13056 "parse.c"
13059#line 3589 "parse.y"
13061 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
13064#line 13065 "parse.c"
13068#line 3596 "parse.y"
13070 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
13071 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
13072 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
13075#line 13076 "parse.c"
13079#line 3603 "parse.y"
13081 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
13082 (yyvsp[-2].node_fcall)->nd_args = (yyvsp[-1].node);
13083 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-2].node_fcall), (yyvsp[0].node), &(yyloc));
13084 fixpos((yyval.node), RNODE((yyvsp[-2].node_fcall)));
13085 nd_set_last_loc((yyvsp[-2].node_fcall), (yylsp[-1]).end_pos);
13088#line 13089 "parse.c"
13092#line 3612 "parse.y"
13094 (yyval.node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
13097#line 13098 "parse.c"
13101#line 3617 "parse.y"
13103 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
13106#line 13107 "parse.c"
13110#line 3622 "parse.y"
13112 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
13115#line 13116 "parse.c"
13119#line 3627 "parse.y"
13121 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-4].node), (yyvsp[-2].id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
13124#line 13125 "parse.c"
13128#line 3632 "parse.y"
13130 set_embraced_location((yyvsp[-1].node), &(yylsp[-2]), &(yylsp[0]));
13131 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-5].node), (yyvsp[-3].id), 0, (yyvsp[-1].node), &(yylsp[-3]), &(yyloc));
13134#line 13135 "parse.c"
13138#line 3638 "parse.y"
13140 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
13141 fixpos((yyval.node), (yyvsp[0].node));
13144#line 13145 "parse.c"
13148#line 3644 "parse.y"
13150 (yyval.node) = NEW_YIELD((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
13151 fixpos((yyval.node), (yyvsp[0].node));
13154#line 13155 "parse.c"
13158#line 3650 "parse.y"
13160 (yyval.node) = NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc), &(yylsp[-1]));
13163#line 13164 "parse.c"
13167#line 3655 "parse.y"
13170 args = ret_args(p, (yyvsp[0].node));
13171 (yyval.node) = add_block_exit(p, NEW_BREAK(args, &(yyloc), &(yylsp[-1])));
13174#line 13175 "parse.c"
13178#line 3662 "parse.y"
13181 args = ret_args(p, (yyvsp[0].node));
13182 (yyval.node) = add_block_exit(p, NEW_NEXT(args, &(yyloc), &(yylsp[-1])));
13185#line 13186 "parse.c"
13189#line 3672 "parse.y"
13191 (yyval.node_masgn) = (yyvsp[-1].node_masgn);
13194#line 13195 "parse.c"
13198#line 3680 "parse.y"
13200 (yyval.node_masgn) = NEW_MASGN(NEW_LIST((
NODE *)(yyvsp[-1].node_masgn), &(yyloc)), 0, &(yyloc));
13203#line 13204 "parse.c"
13207#line 3687 "parse.y"
13209 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
13212#line 13213 "parse.c"
13216#line 3692 "parse.y"
13218 (yyval.node_masgn) = NEW_MASGN(list_append(p, (yyvsp[-1].node), (yyvsp[0].node)), 0, &(yyloc));
13221#line 13222 "parse.c"
13225#line 3697 "parse.y"
13227 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
13230#line 13231 "parse.c"
13234#line 3048 "parse.y"
13236 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
13239#line 13240 "parse.c"
13243#line 3053 "parse.y"
13245 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
13248#line 13249 "parse.c"
13252#line 3702 "parse.y"
13254 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
13257#line 13258 "parse.c"
13261#line 3707 "parse.y"
13263 (yyval.node_masgn) = NEW_MASGN((yyvsp[-1].node), NODE_SPECIAL_NO_NAME_REST, &(yyloc));
13266#line 13267 "parse.c"
13270#line 3712 "parse.y"
13272 (yyval.node_masgn) = NEW_MASGN((yyvsp[-3].node), NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
13275#line 13276 "parse.c"
13279#line 3717 "parse.y"
13281 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
13284#line 13285 "parse.c"
13288#line 3722 "parse.y"
13290 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
13293#line 13294 "parse.c"
13297#line 3727 "parse.y"
13299 (yyval.node_masgn) = NEW_MASGN(0, NODE_SPECIAL_NO_NAME_REST, &(yyloc));
13302#line 13303 "parse.c"
13306#line 3732 "parse.y"
13308 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
13311#line 13312 "parse.c"
13315#line 3740 "parse.y"
13317 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
13320#line 13321 "parse.c"
13324#line 3747 "parse.y"
13326 (yyval.node) = NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
13329#line 13330 "parse.c"
13333#line 3752 "parse.y"
13335 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
13338#line 13339 "parse.c"
13342#line 3760 "parse.y"
13345 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13347#line 13348 "parse.c"
13351#line 3760 "parse.y"
13354 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13356#line 13357 "parse.c"
13360#line 3765 "parse.y"
13362 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13365#line 13366 "parse.c"
13369#line 3770 "parse.y"
13371 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13372 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13375#line 13376 "parse.c"
13379#line 3770 "parse.y"
13381 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13382 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13385#line 13386 "parse.c"
13389#line 3776 "parse.y"
13391 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
13394#line 13395 "parse.c"
13398#line 3781 "parse.y"
13401 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13403#line 13404 "parse.c"
13407#line 3786 "parse.y"
13410 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13412#line 13413 "parse.c"
13416#line 3791 "parse.y"
13418 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13419 (yyval.node) = NEW_ERROR(&(yyloc));
13422#line 13423 "parse.c"
13426#line 3799 "parse.y"
13429 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13431#line 13432 "parse.c"
13435#line 3799 "parse.y"
13438 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13440#line 13441 "parse.c"
13444#line 3804 "parse.y"
13446 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13449#line 13450 "parse.c"
13453#line 3809 "parse.y"
13455 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13458#line 13459 "parse.c"
13462#line 3809 "parse.y"
13464 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13467#line 13468 "parse.c"
13471#line 3814 "parse.y"
13473 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
13476#line 13477 "parse.c"
13480#line 3819 "parse.y"
13483 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13485#line 13486 "parse.c"
13489#line 3824 "parse.y"
13492 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13494#line 13495 "parse.c"
13498#line 3829 "parse.y"
13500 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13501 (yyval.node) = NEW_ERROR(&(yyloc));
13504#line 13505 "parse.c"
13508#line 3837 "parse.y"
13510 static const char mesg[] =
"class/module name must be CONSTANT";
13512 yyerror1(&(yylsp[0]), mesg);
13516#line 13517 "parse.c"
13520#line 3848 "parse.y"
13522 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
13525#line 13526 "parse.c"
13529#line 3853 "parse.y"
13531 (yyval.node) = NEW_COLON2(0, (yyvsp[0].
id), &(yyloc), &NULL_LOC, &(yylsp[0]));
13534#line 13535 "parse.c"
13538#line 3858 "parse.y"
13540 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
13543#line 13544 "parse.c"
13547#line 3866 "parse.y"
13549 SET_LEX_STATE(EXPR_ENDFN);
13550 (yyval.id) = (yyvsp[0].
id);
13552#line 13553 "parse.c"
13556#line 3874 "parse.y"
13558 (yyval.node) = NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc));
13561#line 13562 "parse.c"
13565#line 3882 "parse.y"
13567 (yyval.node) = NEW_UNDEF((yyvsp[0].node), &(yyloc));
13570#line 13571 "parse.c"
13574#line 3886 "parse.y"
13575 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
13576#line 13577 "parse.c"
13580#line 3887 "parse.y"
13582 nd_set_last_loc((yyvsp[-3].node), (yylsp[0]).end_pos);
13583 rb_parser_ary_push_node(p, RNODE_UNDEF((yyvsp[-3].node))->nd_undefs, (yyvsp[0].node));
13586#line 13587 "parse.c"
13590#line 3894 "parse.y"
13591 { (yyval.id) =
'|'; }
13592#line 13593 "parse.c"
13596#line 3895 "parse.y"
13597 { (yyval.id) =
'^'; }
13598#line 13599 "parse.c"
13602#line 3896 "parse.y"
13603 { (yyval.id) =
'&'; }
13604#line 13605 "parse.c"
13608#line 3897 "parse.y"
13609 { (yyval.id) = tCMP; }
13610#line 13611 "parse.c"
13614#line 3898 "parse.y"
13615 { (yyval.id) = tEQ; }
13616#line 13617 "parse.c"
13620#line 3899 "parse.y"
13621 { (yyval.id) = tEQQ; }
13622#line 13623 "parse.c"
13626#line 3900 "parse.y"
13627 { (yyval.id) = tMATCH; }
13628#line 13629 "parse.c"
13632#line 3901 "parse.y"
13633 { (yyval.id) = tNMATCH; }
13634#line 13635 "parse.c"
13638#line 3902 "parse.y"
13639 { (yyval.id) =
'>'; }
13640#line 13641 "parse.c"
13644#line 3903 "parse.y"
13645 { (yyval.id) = tGEQ; }
13646#line 13647 "parse.c"
13650#line 3904 "parse.y"
13651 { (yyval.id) =
'<'; }
13652#line 13653 "parse.c"
13656#line 3905 "parse.y"
13657 { (yyval.id) = tLEQ; }
13658#line 13659 "parse.c"
13662#line 3906 "parse.y"
13663 { (yyval.id) = tNEQ; }
13664#line 13665 "parse.c"
13668#line 3907 "parse.y"
13669 { (yyval.id) = tLSHFT; }
13670#line 13671 "parse.c"
13674#line 3908 "parse.y"
13675 { (yyval.id) = tRSHFT; }
13676#line 13677 "parse.c"
13680#line 3909 "parse.y"
13681 { (yyval.id) =
'+'; }
13682#line 13683 "parse.c"
13686#line 3910 "parse.y"
13687 { (yyval.id) =
'-'; }
13688#line 13689 "parse.c"
13692#line 3911 "parse.y"
13693 { (yyval.id) =
'*'; }
13694#line 13695 "parse.c"
13698#line 3912 "parse.y"
13699 { (yyval.id) =
'*'; }
13700#line 13701 "parse.c"
13704#line 3913 "parse.y"
13705 { (yyval.id) =
'/'; }
13706#line 13707 "parse.c"
13710#line 3914 "parse.y"
13711 { (yyval.id) =
'%'; }
13712#line 13713 "parse.c"
13716#line 3915 "parse.y"
13717 { (yyval.id) = tPOW; }
13718#line 13719 "parse.c"
13722#line 3916 "parse.y"
13723 { (yyval.id) = tDSTAR; }
13724#line 13725 "parse.c"
13728#line 3917 "parse.y"
13729 { (yyval.id) =
'!'; }
13730#line 13731 "parse.c"
13734#line 3918 "parse.y"
13735 { (yyval.id) =
'~'; }
13736#line 13737 "parse.c"
13740#line 3919 "parse.y"
13741 { (yyval.id) = tUPLUS; }
13742#line 13743 "parse.c"
13746#line 3920 "parse.y"
13747 { (yyval.id) = tUMINUS; }
13748#line 13749 "parse.c"
13752#line 3921 "parse.y"
13753 { (yyval.id) = tAREF; }
13754#line 13755 "parse.c"
13758#line 3922 "parse.y"
13759 { (yyval.id) = tASET; }
13760#line 13761 "parse.c"
13764#line 3923 "parse.y"
13765 { (yyval.id) =
'`'; }
13766#line 13767 "parse.c"
13770#line 2926 "parse.y"
13772 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13775#line 13776 "parse.c"
13779#line 3061 "parse.y"
13781 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13784#line 13785 "parse.c"
13788#line 3066 "parse.y"
13790 (yyval.node) = new_ary_op_assign(p, (yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[0].node), &(yylsp[-4]), &(yyloc), &NULL_LOC, &(yylsp[-5]), &(yylsp[-3]), &(yylsp[-2]));
13793#line 13794 "parse.c"
13797#line 3071 "parse.y"
13799 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-3]), &(yylsp[-2]));
13802#line 13803 "parse.c"
13806#line 3076 "parse.y"
13808 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-3]), &(yylsp[-2]));
13811#line 13812 "parse.c"
13815#line 3081 "parse.y"
13817 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), idCOLON2, (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-3]), &(yylsp[-2]));
13820#line 13821 "parse.c"
13824#line 3086 "parse.y"
13826 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
13827 (yyval.node) = new_const_op_assign(p, NEW_COLON2((yyvsp[-5].node), (yyvsp[-3].
id), &loc, &(yylsp[-4]), &(yylsp[-3])), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13830#line 13831 "parse.c"
13834#line 3092 "parse.y"
13836 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
13837 (yyval.node) = new_const_op_assign(p, NEW_COLON3((yyvsp[-3].
id), &loc, &(yylsp[-4]), &(yylsp[-3])), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13840#line 13841 "parse.c"
13844#line 3098 "parse.y"
13846 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
13847 (yyval.node) = NEW_ERROR(&(yyloc));
13850#line 13851 "parse.c"
13854#line 3120 "parse.y"
13856 value_expr(p, (yyvsp[-2].node));
13857 value_expr(p, (yyvsp[0].node));
13858 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13861#line 13862 "parse.c"
13865#line 3127 "parse.y"
13867 value_expr(p, (yyvsp[-2].node));
13868 value_expr(p, (yyvsp[0].node));
13869 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13872#line 13873 "parse.c"
13876#line 3134 "parse.y"
13878 value_expr(p, (yyvsp[-1].node));
13879 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13882#line 13883 "parse.c"
13886#line 3140 "parse.y"
13888 value_expr(p, (yyvsp[-1].node));
13889 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13892#line 13893 "parse.c"
13896#line 3146 "parse.y"
13898 value_expr(p, (yyvsp[0].node));
13899 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13902#line 13903 "parse.c"
13906#line 3152 "parse.y"
13908 value_expr(p, (yyvsp[0].node));
13909 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13912#line 13913 "parse.c"
13916#line 3944 "parse.y"
13918 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13921#line 13922 "parse.c"
13925#line 3949 "parse.y"
13927 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13930#line 13931 "parse.c"
13934#line 3954 "parse.y"
13936 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13939#line 13940 "parse.c"
13943#line 3959 "parse.y"
13945 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13948#line 13949 "parse.c"
13952#line 3964 "parse.y"
13954 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13957#line 13958 "parse.c"
13961#line 3969 "parse.y"
13963 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13966#line 13967 "parse.c"
13970#line 3974 "parse.y"
13972 (yyval.node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)), idUMinus, &(yylsp[-3]), &(yyloc));
13975#line 13976 "parse.c"
13979#line 3979 "parse.y"
13981 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUPlus, &(yylsp[-1]), &(yyloc));
13984#line 13985 "parse.c"
13988#line 3984 "parse.y"
13990 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUMinus, &(yylsp[-1]), &(yyloc));
13993#line 13994 "parse.c"
13997#line 3989 "parse.y"
13999 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14002#line 14003 "parse.c"
14006#line 3994 "parse.y"
14008 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14011#line 14012 "parse.c"
14015#line 3999 "parse.y"
14017 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14020#line 14021 "parse.c"
14024#line 4004 "parse.y"
14026 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14029#line 14030 "parse.c"
14033#line 4010 "parse.y"
14035 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14038#line 14039 "parse.c"
14042#line 4015 "parse.y"
14044 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14047#line 14048 "parse.c"
14051#line 4020 "parse.y"
14053 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14056#line 14057 "parse.c"
14060#line 4025 "parse.y"
14062 (yyval.node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14065#line 14066 "parse.c"
14069#line 4030 "parse.y"
14071 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14074#line 14075 "parse.c"
14078#line 4035 "parse.y"
14080 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
14083#line 14084 "parse.c"
14087#line 4040 "parse.y"
14089 (yyval.node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
14092#line 14093 "parse.c"
14096#line 4045 "parse.y"
14098 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14101#line 14102 "parse.c"
14105#line 4050 "parse.y"
14107 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14110#line 14111 "parse.c"
14114#line 4055 "parse.y"
14116 (yyval.node) = logop(p, idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14119#line 14120 "parse.c"
14123#line 4060 "parse.y"
14125 (yyval.node) = logop(p, idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14128#line 14129 "parse.c"
14132#line 4065 "parse.y"
14134 p->ctxt.in_defined = (yyvsp[-1].ctxt).in_defined;
14135 (yyval.node) = new_defined(p, (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
14136 p->ctxt.has_trailing_semicolon = (yyvsp[-1].ctxt).has_trailing_semicolon;
14139#line 14140 "parse.c"
14143#line 2966 "parse.y"
14145 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
14146 restore_defun(p, (yyvsp[-3].node_def_temp));
14147 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
14148 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
14149 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
14154#line 14155 "parse.c"
14158#line 2977 "parse.y"
14160 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
14161 restore_defun(p, (yyvsp[-3].node_def_temp));
14162 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
14163 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
14164 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
14169#line 14170 "parse.c"
14173#line 4077 "parse.y"
14175 value_expr(p, (yyvsp[-5].node));
14176 (yyval.node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc), &NULL_LOC, &(yylsp[-1]), &NULL_LOC);
14177 fixpos((yyval.node), (yyvsp[-5].node));
14180#line 14181 "parse.c"
14184#line 4087 "parse.y"
14186 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
14187 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14190#line 14191 "parse.c"
14194#line 4093 "parse.y"
14196 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
14199#line 14200 "parse.c"
14203#line 4099 "parse.y"
14204 {(yyval.id) =
'>';}
14205#line 14206 "parse.c"
14209#line 4100 "parse.y"
14210 {(yyval.id) =
'<';}
14211#line 14212 "parse.c"
14215#line 4101 "parse.y"
14216 {(yyval.id) = idGE;}
14217#line 14218 "parse.c"
14221#line 4102 "parse.y"
14222 {(yyval.id) = idLE;}
14223#line 14224 "parse.c"
14227#line 4106 "parse.y"
14229 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14232#line 14233 "parse.c"
14236#line 4111 "parse.y"
14238 rb_warning1(
"comparison '%s' after comparison", WARN_ID((yyvsp[-1].
id)));
14239 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14242#line 14243 "parse.c"
14246#line 4119 "parse.y"
14248 (yyval.ctxt) = p->ctxt;
14250#line 14251 "parse.c"
14254#line 4125 "parse.y"
14256 p->ctxt.in_defined = 1;
14257 (yyval.ctxt) = (yyvsp[0].ctxt);
14259#line 14260 "parse.c"
14263#line 4132 "parse.y"
14265 p->ctxt.in_rescue = after_rescue;
14266 (yyval.ctxt) = (yyvsp[0].ctxt);
14268#line 14269 "parse.c"
14272#line 3161 "parse.y"
14274 value_expr(p, (yyvsp[0].node));
14275 (yyval.node) = (yyvsp[0].node);
14277#line 14278 "parse.c"
14281#line 4144 "parse.y"
14283 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14286#line 14287 "parse.c"
14290#line 4149 "parse.y"
14292 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
14295#line 14296 "parse.c"
14299#line 4156 "parse.y"
14301 value_expr(p, (yyvsp[0].node));
14302 (yyval.node) = (yyvsp[0].node);
14304#line 14305 "parse.c"
14308#line 4161 "parse.y"
14310 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
14311 value_expr(p, (yyvsp[-3].node));
14312 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14315#line 14316 "parse.c"
14319#line 4170 "parse.y"
14321 (yyval.node) = (yyvsp[-1].node);
14324#line 14325 "parse.c"
14328#line 4175 "parse.y"
14330 if (!check_forwarding_args(p)) {
14334 (yyval.node) = new_args_forward_call(p, (yyvsp[-3].node), &(yylsp[-1]), &(yyloc));
14338#line 14339 "parse.c"
14342#line 4185 "parse.y"
14344 if (!check_forwarding_args(p)) {
14348 (yyval.node) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
14352#line 14353 "parse.c"
14356#line 4198 "parse.y"
14358 (yyval.node) = (yyvsp[0].node) ? (yyvsp[0].node) : NODE_SPECIAL_EMPTY_ARGS;
14360#line 14361 "parse.c"
14364#line 4207 "parse.y"
14366 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14369#line 14370 "parse.c"
14373#line 4212 "parse.y"
14375 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14378#line 14379 "parse.c"
14382#line 3161 "parse.y"
14384 value_expr(p, (yyvsp[0].node));
14385 (yyval.node) = (yyvsp[0].node);
14387#line 14388 "parse.c"
14391#line 4219 "parse.y"
14393 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14396#line 14397 "parse.c"
14400#line 4224 "parse.y"
14402 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14405#line 14406 "parse.c"
14409#line 4229 "parse.y"
14411 (yyval.node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node_block_pass));
14414#line 14415 "parse.c"
14418#line 4234 "parse.y"
14420 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14421 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14424#line 14425 "parse.c"
14428#line 4240 "parse.y"
14430 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14431 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14434#line 14435 "parse.c"
14438#line 4249 "parse.y"
14449 case '(':
case tLPAREN:
case tLPAREN_ARG:
case '[':
case tLBRACK:
14452 if (lookahead) CMDARG_POP();
14454 if (lookahead) CMDARG_PUSH(0);
14456#line 14457 "parse.c"
14460#line 4267 "parse.y"
14473 if (lookahead) CMDARG_POP();
14475 if (lookahead) CMDARG_PUSH(0);
14476 (yyval.node) = (yyvsp[0].node);
14479#line 14480 "parse.c"
14483#line 4288 "parse.y"
14485 (yyval.node_block_pass) = NEW_BLOCK_PASS((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14488#line 14489 "parse.c"
14492#line 4293 "parse.y"
14494 forwarding_arg_check(p, idFWD_BLOCK, idFWD_ALL,
"block");
14495 (yyval.node_block_pass) = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14498#line 14499 "parse.c"
14502#line 4301 "parse.y"
14504 (yyval.node_block_pass) = (yyvsp[0].node_block_pass);
14507#line 14508 "parse.c"
14511#line 4306 "parse.y"
14513 (yyval.node_block_pass) = 0;
14516#line 14517 "parse.c"
14520#line 4314 "parse.y"
14522 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14525#line 14526 "parse.c"
14529#line 4319 "parse.y"
14531 (yyval.node) = (yyvsp[0].node);
14534#line 14535 "parse.c"
14538#line 4324 "parse.y"
14540 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14543#line 14544 "parse.c"
14547#line 4329 "parse.y"
14549 (yyval.node) = rest_arg_append(p, (yyvsp[-2].node), RNODE_SPLAT((yyvsp[0].node))->nd_head, &(yyloc));
14552#line 14553 "parse.c"
14556#line 4337 "parse.y"
14558 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14561#line 14562 "parse.c"
14565#line 4342 "parse.y"
14567 forwarding_arg_check(p, idFWD_REST, idFWD_ALL,
"rest");
14568 (yyval.node) = NEW_SPLAT(NEW_LVAR(idFWD_REST, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14571#line 14572 "parse.c"
14575#line 4356 "parse.y"
14577 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14580#line 14581 "parse.c"
14584#line 4361 "parse.y"
14586 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
14589#line 14590 "parse.c"
14593#line 4366 "parse.y"
14595 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14598#line 14599 "parse.c"
14602#line 4387 "parse.y"
14604 (yyval.node) = (
NODE *)NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
14607#line 14608 "parse.c"
14611#line 4392 "parse.y"
14615#line 14616 "parse.c"
14619#line 4397 "parse.y"
14622 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14623 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
14624 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14627#line 14628 "parse.c"
14631#line 4404 "parse.y"
14632 {SET_LEX_STATE(EXPR_ENDARG);}
14633#line 14634 "parse.c"
14637#line 4405 "parse.y"
14639 if (nd_type_p((yyvsp[-2].node), NODE_SELF)) RNODE_SELF((yyvsp[-2].node))->nd_state = 0;
14640 (yyval.node) = (yyvsp[-2].node);
14643#line 14644 "parse.c"
14647#line 4411 "parse.y"
14649 if (nd_type_p((yyvsp[-1].node), NODE_SELF)) RNODE_SELF((yyvsp[-1].node))->nd_state = 0;
14650 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
14653#line 14654 "parse.c"
14657#line 4417 "parse.y"
14659 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
14662#line 14663 "parse.c"
14666#line 4422 "parse.y"
14668 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
14671#line 14672 "parse.c"
14675#line 4427 "parse.y"
14677 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14680#line 14681 "parse.c"
14684#line 4432 "parse.y"
14686 (yyval.node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
14687 RNODE_HASH((yyval.node))->nd_brace = TRUE;
14690#line 14691 "parse.c"
14694#line 4438 "parse.y"
14696 (yyval.node) = NEW_RETURN(0, &(yyloc), &(yylsp[0]));
14699#line 14700 "parse.c"
14703#line 4443 "parse.y"
14705 (yyval.node) = NEW_YIELD((yyvsp[-1].node), &(yyloc), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14708#line 14709 "parse.c"
14712#line 4448 "parse.y"
14714 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
14717#line 14718 "parse.c"
14721#line 4453 "parse.y"
14723 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[0]), &NULL_LOC, &NULL_LOC);
14726#line 14727 "parse.c"
14730#line 4458 "parse.y"
14732 p->ctxt.in_defined = (yyvsp[-2].ctxt).in_defined;
14733 (yyval.node) = new_defined(p, (yyvsp[-1].node), &(yyloc), &(yylsp[-5]));
14734 p->ctxt.has_trailing_semicolon = (yyvsp[-2].ctxt).has_trailing_semicolon;
14737#line 14738 "parse.c"
14741#line 4465 "parse.y"
14743 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])), METHOD_NOT, &(yylsp[-3]), &(yyloc));
14746#line 14747 "parse.c"
14750#line 4470 "parse.y"
14752 (yyval.node) = call_uni_op(p, method_cond(p, NEW_NIL(&(yylsp[-1])), &(yylsp[-1])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
14755#line 14756 "parse.c"
14759#line 4475 "parse.y"
14761 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-1].node_fcall), (yyvsp[0].node), &(yyloc));
14764#line 14765 "parse.c"
14768#line 4481 "parse.y"
14770 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
14771 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14774#line 14775 "parse.c"
14778#line 4491 "parse.y"
14780 if ((yyvsp[-1].node) && nd_type_p((yyvsp[-1].node), NODE_IF))
14781 RNODE_IF((yyvsp[-1].node))->end_keyword_loc = (yylsp[0]);
14783 (yyval.node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14784 fixpos((yyval.node), (yyvsp[-4].node));
14787#line 14788 "parse.c"
14791#line 4503 "parse.y"
14793 (yyval.node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14794 fixpos((yyval.node), (yyvsp[-4].node));
14797#line 14798 "parse.c"
14801#line 4511 "parse.y"
14803 restore_block_exit(p, (yyvsp[-3].node_exits));
14804 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14805 fixpos((yyval.node), (yyvsp[-2].node));
14808#line 14809 "parse.c"
14812#line 4520 "parse.y"
14814 restore_block_exit(p, (yyvsp[-3].node_exits));
14815 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14816 fixpos((yyval.node), (yyvsp[-2].node));
14819#line 14820 "parse.c"
14823#line 4527 "parse.y"
14825 (yyval.labels) = p->case_labels;
14826 p->case_labels = CHECK_LITERAL_WHEN;
14828#line 14829 "parse.c"
14832#line 4533 "parse.y"
14834 if (CASE_LABELS_ENABLED_P(p->case_labels)) st_free_table(p->case_labels);
14835 p->case_labels = (yyvsp[-2].labels);
14836 (yyval.node) = NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[0]));
14837 fixpos((yyval.node), (yyvsp[-4].node));
14840#line 14841 "parse.c"
14844#line 4541 "parse.y"
14846 (yyval.labels) = p->case_labels;
14847 p->case_labels = 0;
14849#line 14850 "parse.c"
14853#line 4547 "parse.y"
14855 if (p->case_labels) st_free_table(p->case_labels);
14856 p->case_labels = (yyvsp[-2].labels);
14857 (yyval.node) = NEW_CASE2((yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14860#line 14861 "parse.c"
14864#line 4556 "parse.y"
14866 (yyval.node) = NEW_CASE3((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14869#line 14870 "parse.c"
14873#line 4561 "parse.y"
14875#line 14876 "parse.c"
14879#line 4561 "parse.y"
14881#line 14882 "parse.c"
14885#line 4564 "parse.y"
14887 restore_block_exit(p, (yyvsp[-8].node_exits));
14897 ID id = internal_id(p);
14900 NODE *scope, *internal_var = NEW_DVAR(
id, &(yylsp[-7]));
14904 switch (nd_type((yyvsp[-7].node))) {
14907 set_nd_value(p, (yyvsp[-7].node), internal_var);
14910 m->nd_next = (yyvsp[-7].node);
14913 m->nd_next = node_assign(p, (yyvsp[-7].node), NEW_FOR_MASGN(internal_var, &(yylsp[-7])), NO_LEX_CTXT, &(yylsp[-7]));
14916 m->nd_next = node_assign(p, (
NODE *)NEW_MASGN(NEW_LIST((yyvsp[-7].node), &(yylsp[-7])), 0, &(yylsp[-7])), internal_var, NO_LEX_CTXT, &(yylsp[-7]));
14919 args = new_args(p, m, 0,
id, 0, new_empty_args_tail(p, &(yylsp[-7])), &(yylsp[-7]));
14920 scope = NEW_SCOPE2(tbl, args, (yyvsp[-1].node), NULL, &(yyloc));
14921 YYLTYPE do_keyword_loc = (yyvsp[-3].id) == keyword_do_cond ? (yylsp[-3]) : NULL_LOC;
14922 (yyval.node) = NEW_FOR((yyvsp[-4].node), scope, &(yyloc), &(yylsp[-8]), &(yylsp[-6]), &do_keyword_loc, &(yylsp[0]));
14923 RNODE_SCOPE(scope)->nd_parent = (yyval.node);
14924 fixpos((yyval.node), (yyvsp[-7].node));
14927#line 14928 "parse.c"
14931#line 4606 "parse.y"
14933 begin_definition(
"class", &(yylsp[-2]), &(yylsp[-1]));
14935#line 14936 "parse.c"
14939#line 4611 "parse.y"
14941 YYLTYPE inheritance_operator_loc = NULL_LOC;
14942 if ((yyvsp[-3].node)) {
14943 inheritance_operator_loc = (yylsp[-3]);
14944 inheritance_operator_loc.end_pos.column = inheritance_operator_loc.beg_pos.column + 1;
14946 (yyval.node) = NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc), &(yylsp[-5]), &inheritance_operator_loc, &(yylsp[0]));
14947 nd_set_line(RNODE_CLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14948 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14949 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14952 p->ctxt.in_class = (yyvsp[-5].ctxt).in_class;
14953 p->ctxt.cant_return = (yyvsp[-5].ctxt).cant_return;
14954 p->ctxt.shareable_constant_value = (yyvsp[-5].ctxt).shareable_constant_value;
14956#line 14957 "parse.c"
14960#line 4628 "parse.y"
14962 begin_definition(
"", &(yylsp[-2]), &(yylsp[-1]));
14964#line 14965 "parse.c"
14968#line 4634 "parse.y"
14970 (yyval.node) = NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-6]), &(yylsp[-5]), &(yylsp[0]));
14971 nd_set_line(RNODE_SCLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14972 set_line_body((yyvsp[-1].node), nd_line((yyvsp[-4].node)));
14973 fixpos((yyval.node), (yyvsp[-4].node));
14976 p->ctxt.in_def = (yyvsp[-6].ctxt).in_def;
14977 p->ctxt.in_class = (yyvsp[-6].ctxt).in_class;
14978 p->ctxt.cant_return = (yyvsp[-6].ctxt).cant_return;
14979 p->ctxt.shareable_constant_value = (yyvsp[-6].ctxt).shareable_constant_value;
14981#line 14982 "parse.c"
14985#line 4647 "parse.y"
14987 begin_definition(
"module", &(yylsp[-1]), &(yylsp[0]));
14989#line 14990 "parse.c"
14993#line 4652 "parse.y"
14995 (yyval.node) = NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14996 nd_set_line(RNODE_MODULE((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14997 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14998 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
15001 p->ctxt.in_class = (yyvsp[-4].ctxt).in_class;
15002 p->ctxt.cant_return = (yyvsp[-4].ctxt).cant_return;
15003 p->ctxt.shareable_constant_value = (yyvsp[-4].ctxt).shareable_constant_value;
15005#line 15006 "parse.c"
15009#line 4665 "parse.y"
15011 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15013#line 15014 "parse.c"
15017#line 4670 "parse.y"
15019 restore_defun(p, (yyvsp[-4].node_def_temp));
15020 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
15021 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), (yyval.node), &(yyloc));
15022 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[-1].node);
15026#line 15027 "parse.c"
15030#line 4680 "parse.y"
15032 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15034#line 15035 "parse.c"
15038#line 4685 "parse.y"
15040 restore_defun(p, (yyvsp[-4].node_def_temp));
15041 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
15042 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), (yyval.node), &(yyloc));
15043 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[-1].node);
15047#line 15048 "parse.c"
15051#line 4694 "parse.y"
15053 (yyval.node) = add_block_exit(p, NEW_BREAK(0, &(yyloc), &(yylsp[0])));
15056#line 15057 "parse.c"
15060#line 4699 "parse.y"
15062 (yyval.node) = add_block_exit(p, NEW_NEXT(0, &(yyloc), &(yylsp[0])));
15065#line 15066 "parse.c"
15069#line 4704 "parse.y"
15071 (yyval.node) = add_block_exit(p, NEW_REDO(&(yyloc), &(yylsp[0])));
15074#line 15075 "parse.c"
15078#line 4709 "parse.y"
15080 if (!p->ctxt.in_defined) {
15081 switch (p->ctxt.in_rescue) {
15082 case before_rescue: yyerror1(&(yylsp[0]),
"Invalid retry without rescue");
break;
15083 case after_rescue:
break;
15084 case after_else: yyerror1(&(yylsp[0]),
"Invalid retry after else");
break;
15085 case after_ensure: yyerror1(&(yylsp[0]),
"Invalid retry after ensure");
break;
15088 (yyval.node) = NEW_RETRY(&(yyloc));
15091#line 15092 "parse.c"
15095#line 3161 "parse.y"
15097 value_expr(p, (yyvsp[0].node));
15098 (yyval.node) = (yyvsp[0].node);
15100#line 15101 "parse.c"
15104#line 4727 "parse.y"
15106 token_info_push(p,
"begin", &(yyloc));
15107 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15109#line 15110 "parse.c"
15113#line 4734 "parse.y"
15116 token_info_push(p,
"if", &(yyloc));
15117 if (p->token_info && p->token_info->nonspc &&
15118 p->token_info->next && !strcmp(p->token_info->next->token,
"else")) {
15120 const char *beg = p->lex.pbeg + p->token_info->next->beg.column;
15122 while (beg < tok &&
ISSPACE(*beg)) beg++;
15124 p->token_info->nonspc = 0;
15127 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15129#line 15130 "parse.c"
15133#line 4752 "parse.y"
15135 token_info_push(p,
"unless", &(yyloc));
15136 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15138#line 15139 "parse.c"
15142#line 4759 "parse.y"
15144 (yyval.node_exits) = (yyvsp[0].node_exits);
15145 token_info_push(p,
"while", &(yyloc));
15146 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15148#line 15149 "parse.c"
15152#line 4767 "parse.y"
15154 (yyval.node_exits) = (yyvsp[0].node_exits);
15155 token_info_push(p,
"until", &(yyloc));
15156 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15158#line 15159 "parse.c"
15162#line 4775 "parse.y"
15164 token_info_push(p,
"case", &(yyloc));
15165 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15167#line 15168 "parse.c"
15171#line 4782 "parse.y"
15173 (yyval.node_exits) = (yyvsp[0].node_exits);
15174 token_info_push(p,
"for", &(yyloc));
15175 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15177#line 15178 "parse.c"
15181#line 4790 "parse.y"
15183 token_info_push(p,
"class", &(yyloc));
15184 (yyval.ctxt) = p->ctxt;
15185 p->ctxt.in_rescue = before_rescue;
15186 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15188#line 15189 "parse.c"
15192#line 4799 "parse.y"
15194 token_info_push(p,
"module", &(yyloc));
15195 (yyval.ctxt) = p->ctxt;
15196 p->ctxt.in_rescue = before_rescue;
15197 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15199#line 15200 "parse.c"
15203#line 4808 "parse.y"
15205 token_info_push(p,
"def", &(yyloc));
15206 (yyval.node_def_temp) = NEW_DEF_TEMP(&(yyloc));
15207 p->ctxt.in_argdef = 1;
15209#line 15210 "parse.c"
15213#line 4816 "parse.y"
15215 token_info_push(p,
"do", &(yyloc));
15216 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15218#line 15219 "parse.c"
15222#line 4823 "parse.y"
15224 token_info_push(p,
"do", &(yyloc));
15225 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15227#line 15228 "parse.c"
15231#line 4830 "parse.y"
15233 token_info_warn(p,
"rescue", p->token_info, 1, &(yyloc));
15234 (yyval.ctxt) = p->ctxt;
15235 p->ctxt.in_rescue = after_rescue;
15237#line 15238 "parse.c"
15241#line 4838 "parse.y"
15243 token_info_warn(p,
"ensure", p->token_info, 1, &(yyloc));
15244 (yyval.ctxt) = p->ctxt;
15246#line 15247 "parse.c"
15250#line 4845 "parse.y"
15252 token_info_warn(p,
"when", p->token_info, 0, &(yyloc));
15254#line 15255 "parse.c"
15258#line 4851 "parse.y"
15261 int same = ptinfo_beg && strcmp(ptinfo_beg->token,
"case") != 0;
15262 token_info_warn(p,
"else", p->token_info, same, &(yyloc));
15265 e.next = ptinfo_beg->next;
15267 token_info_setup(&e, p->lex.pbeg, &(yyloc));
15268 if (!e.nonspc) *ptinfo_beg = e;
15271#line 15272 "parse.c"
15275#line 4866 "parse.y"
15278 token_info_warn(p,
"elsif", p->token_info, 1, &(yyloc));
15280#line 15281 "parse.c"
15284#line 4873 "parse.y"
15286 token_info_pop(p,
"end", &(yyloc));
15287 pop_end_expect_token_locations(p);
15289#line 15290 "parse.c"
15293#line 4878 "parse.y"
15295 compile_error(p,
"syntax error, unexpected end-of-input");
15297#line 15298 "parse.c"
15301#line 4884 "parse.y"
15303 if (p->ctxt.cant_return && !dyna_in_block(p))
15304 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
15306#line 15307 "parse.c"
15310#line 4891 "parse.y"
15312 if (!p->ctxt.in_defined && !p->ctxt.in_def && !compile_for_eval)
15313 yyerror1(&(yylsp[0]),
"Invalid yield");
15315#line 15316 "parse.c"
15319#line 4903 "parse.y"
15320 { (yyval.id) = keyword_do_cond; }
15321#line 15322 "parse.c"
15325#line 4910 "parse.y"
15327 (yyval.node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]), &NULL_LOC);
15328 fixpos((yyval.node), (yyvsp[-3].node));
15331#line 15332 "parse.c"
15335#line 4919 "parse.y"
15337 (yyval.node) = (yyvsp[0].node);
15340#line 15341 "parse.c"
15344#line 4930 "parse.y"
15346 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15347 mark_lvar_used(p, (yyval.node));
15349#line 15350 "parse.c"
15353#line 4935 "parse.y"
15355 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
15358#line 15359 "parse.c"
15362#line 3048 "parse.y"
15364 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15367#line 15368 "parse.c"
15371#line 3053 "parse.y"
15373 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
15376#line 15377 "parse.c"
15380#line 4943 "parse.y"
15382 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
15385#line 15386 "parse.c"
15389#line 4948 "parse.y"
15391 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15394#line 15395 "parse.c"
15398#line 4953 "parse.y"
15400 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15403#line 15404 "parse.c"
15407#line 4958 "parse.y"
15409 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
15412#line 15413 "parse.c"
15416#line 4963 "parse.y"
15418 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15421#line 15422 "parse.c"
15425#line 4970 "parse.y"
15428 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15429 mark_lvar_used(p, (yyval.node));
15431#line 15432 "parse.c"
15435#line 4976 "parse.y"
15437 (yyval.node) = NODE_SPECIAL_NO_NAME_REST;
15440#line 15441 "parse.c"
15444#line 4984 "parse.y"
15446 (yyval.id) = idNil;
15449#line 15450 "parse.c"
15453#line 4990 "parse.y"
15454 {p->ctxt.in_argdef = 0;}
15455#line 15456 "parse.c"
15459#line 3020 "parse.y"
15461 p->ctxt.in_argdef = 1;
15462 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15465#line 15466 "parse.c"
15469#line 3026 "parse.y"
15471 p->ctxt.in_argdef = 1;
15472 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
15475#line 15476 "parse.c"
15479#line 3035 "parse.y"
15481 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
15484#line 15485 "parse.c"
15488#line 3040 "parse.y"
15490 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
15493#line 15494 "parse.c"
15497#line 2957 "parse.y"
15499 (yyval.id) = (yyvsp[0].
id);
15502#line 15503 "parse.c"
15506#line 2934 "parse.y"
15508 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
15511#line 15512 "parse.c"
15515#line 2939 "parse.y"
15517 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
15520#line 15521 "parse.c"
15524#line 2944 "parse.y"
15526 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
15529#line 15530 "parse.c"
15533#line 2949 "parse.y"
15535 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
15538#line 15539 "parse.c"
15542#line 4996 "parse.y"
15545 (yyval.id) = NODE_SPECIAL_EXCESSIVE_COMMA;
15548#line 15549 "parse.c"
15552#line 2998 "parse.y"
15554 p->ctxt.in_argdef = 1;
15555 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15558#line 15559 "parse.c"
15562#line 3007 "parse.y"
15564 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
15567#line 15568 "parse.c"
15571#line 3012 "parse.y"
15573 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
15576#line 15577 "parse.c"
15580#line 3107 "parse.y"
15582 (yyval.node_args) = (yyvsp[0].node_args);
15585#line 15586 "parse.c"
15589#line 3112 "parse.y"
15591 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
15594#line 15595 "parse.c"
15598#line 6277 "parse.y"
15600 (yyval.node_args) = new_args(p, (yyvsp[-5].node_args_aux), (yyvsp[-3].node_opt_arg), (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
15603#line 15604 "parse.c"
15607#line 6282 "parse.y"
15609 (yyval.node_args) = new_args(p, (yyvsp[-7].node_args_aux), (yyvsp[-5].node_opt_arg), (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15612#line 15613 "parse.c"
15616#line 6287 "parse.y"
15618 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15621#line 15622 "parse.c"
15625#line 6292 "parse.y"
15627 (yyval.node_args) = new_args(p, (yyvsp[-5].node_args_aux), (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15630#line 15631 "parse.c"
15634#line 6297 "parse.y"
15636 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
15639#line 15640 "parse.c"
15643#line 6302 "parse.y"
15645 (yyval.node_args) = new_args(p, (yyvsp[-5].node_args_aux), 0, (yyvsp[-3].id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15648#line 15649 "parse.c"
15652#line 6307 "parse.y"
15654 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
15657#line 15658 "parse.c"
15661#line 6312 "parse.y"
15663 (yyval.node_args) = new_args(p, 0, (yyvsp[-5].node_opt_arg), (yyvsp[-3].id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15666#line 15667 "parse.c"
15670#line 6317 "parse.y"
15672 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15675#line 15676 "parse.c"
15679#line 6322 "parse.y"
15681 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15684#line 15685 "parse.c"
15688#line 6327 "parse.y"
15690 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
15693#line 15694 "parse.c"
15697#line 6332 "parse.y"
15699 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15702#line 15703 "parse.c"
15706#line 5005 "parse.y"
15708 (yyval.node_args) = new_empty_args_tail(p, &(yylsp[0]));
15709 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, (yyvsp[0].id), 0, (yyval.node_args), &(yyloc));
15712#line 15713 "parse.c"
15716#line 5011 "parse.y"
15718 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15721#line 15722 "parse.c"
15725#line 6340 "parse.y"
15727 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15730#line 15731 "parse.c"
15734#line 5020 "parse.y"
15736 p->command_start = TRUE;
15738#line 15739 "parse.c"
15742#line 5026 "parse.y"
15744 p->max_numparam = ORDINAL_PARAM;
15745 p->ctxt.in_argdef = 0;
15746 (yyval.node_args) = (yyvsp[-2].node_args);
15749#line 15750 "parse.c"
15753#line 5035 "parse.y"
15755 (yyval.node_args) = 0;
15758#line 15759 "parse.c"
15762#line 5043 "parse.y"
15767#line 15768 "parse.c"
15771#line 5048 "parse.y"
15776#line 15777 "parse.c"
15780#line 5061 "parse.y"
15782 new_bv(p, (yyvsp[0].
id));
15785#line 15786 "parse.c"
15789#line 5068 "parse.y"
15791 (yyval.num) = p->max_numparam;
15792 p->max_numparam = 0;
15794#line 15795 "parse.c"
15798#line 5074 "parse.y"
15800 (yyval.node) = numparam_push(p);
15802#line 15803 "parse.c"
15806#line 5079 "parse.y"
15808 (yyval.id) = p->it_id;
15811#line 15812 "parse.c"
15815#line 5086 "parse.y"
15817 token_info_push(p,
"->", &(yylsp[0]));
15818 (yyval.vars) = dyna_push(p);
15820#line 15821 "parse.c"
15824#line 5092 "parse.y"
15828#line 15829 "parse.c"
15832#line 5096 "parse.y"
15834 int max_numparam = p->max_numparam;
15835 ID it_id = p->it_id;
15836 p->lex.lpar_beg = (yyvsp[-8].num);
15837 p->max_numparam = (yyvsp[-6].num);
15838 p->it_id = (yyvsp[-4].id);
15839 restore_block_exit(p, (yyvsp[-3].node_exits));
15841 (yyvsp[-2].node_args) = args_with_numbered(p, (yyvsp[-2].node_args), max_numparam, it_id);
15843 YYLTYPE loc = code_loc_gen(&(yylsp[-8]), &(yylsp[0]));
15844 (yyval.node) = NEW_LAMBDA((yyvsp[-2].node_args), (yyvsp[0].locations_lambda_body)->node, &loc, &(yylsp[-8]), &(yyvsp[0].locations_lambda_body)->opening_loc, &(yyvsp[0].locations_lambda_body)->closing_loc);
15845 nd_set_line(RNODE_LAMBDA((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
15846 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
15847 nd_set_first_loc((yyval.node), (yylsp[-8]).beg_pos);
15848 xfree((yyvsp[0].locations_lambda_body));
15851 numparam_pop(p, (yyvsp[-5].node));
15852 dyna_pop(p, (yyvsp[-7].vars));
15854#line 15855 "parse.c"
15858#line 5120 "parse.y"
15860 p->ctxt.in_argdef = 0;
15861 (yyval.node_args) = (yyvsp[-2].node_args);
15862 p->max_numparam = ORDINAL_PARAM;
15865#line 15866 "parse.c"
15869#line 5127 "parse.y"
15871 p->ctxt.in_argdef = 0;
15872 if (!args_info_empty_p(&(yyvsp[0].node_args)->nd_ainfo))
15873 p->max_numparam = ORDINAL_PARAM;
15874 (yyval.node_args) = (yyvsp[0].node_args);
15876#line 15877 "parse.c"
15880#line 5136 "parse.y"
15882 token_info_pop(p,
"}", &(yylsp[0]));
15883 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-2]), &(yylsp[0]));
15886#line 15887 "parse.c"
15890#line 5142 "parse.y"
15892 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15894#line 15895 "parse.c"
15898#line 5146 "parse.y"
15900 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-3]), &(yylsp[0]));
15903#line 15904 "parse.c"
15907#line 5153 "parse.y"
15909 (yyval.node) = (yyvsp[-1].node);
15910 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15913#line 15914 "parse.c"
15917#line 5161 "parse.y"
15919 (yyval.node) = command_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15920 fixpos((yyval.node), (yyvsp[-1].node));
15923#line 15924 "parse.c"
15927#line 5167 "parse.y"
15929 bool has_args = (yyvsp[0].node) != 0;
15930 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15931 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15937#line 15938 "parse.c"
15941#line 5177 "parse.y"
15943 if (NODE_EMPTY_ARGS_P((yyvsp[-1].node))) (yyvsp[-1].node) = 0;
15944 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15947#line 15948 "parse.c"
15951#line 5183 "parse.y"
15953 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15956#line 15957 "parse.c"
15960#line 5188 "parse.y"
15962 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15963 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15966#line 15967 "parse.c"
15970#line 5196 "parse.y"
15972 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
15973 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
15974 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
15977#line 15978 "parse.c"
15981#line 5203 "parse.y"
15983 bool has_args = (yyvsp[0].node) != 0;
15984 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15985 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15986 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15992#line 15993 "parse.c"
15996#line 5214 "parse.y"
15998 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15999 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
16002#line 16003 "parse.c"
16006#line 5220 "parse.y"
16008 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-2].node), (yyvsp[0].id), 0, &(yylsp[0]), &(yyloc));
16011#line 16012 "parse.c"
16015#line 5225 "parse.y"
16017 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
16018 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
16021#line 16022 "parse.c"
16025#line 5231 "parse.y"
16029 lparen_loc.end_pos.column = lparen_loc.beg_pos.column + 1;
16030 rparen_loc.beg_pos.column = rparen_loc.end_pos.column - 1;
16032 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &lparen_loc, &rparen_loc);
16035#line 16036 "parse.c"
16039#line 5241 "parse.y"
16041 (yyval.node) = NEW_ZSUPER(&(yyloc));
16044#line 16045 "parse.c"
16048#line 5246 "parse.y"
16050 (yyval.node) = NEW_CALL((yyvsp[-3].node), tAREF, (yyvsp[-1].node), &(yyloc));
16051 fixpos((yyval.node), (yyvsp[-3].node));
16054#line 16055 "parse.c"
16058#line 5254 "parse.y"
16060 (yyval.node) = (yyvsp[-1].node);
16061 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
16064#line 16065 "parse.c"
16068#line 5260 "parse.y"
16070 (yyval.node) = (yyvsp[-1].node);
16071 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
16074#line 16075 "parse.c"
16078#line 5267 "parse.y"
16079 {(yyval.vars) = dyna_push(p);}
16080#line 16081 "parse.c"
16084#line 5270 "parse.y"
16086 int max_numparam = p->max_numparam;
16087 ID it_id = p->it_id;
16088 p->max_numparam = (yyvsp[-5].num);
16089 p->it_id = (yyvsp[-3].id);
16090 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
16091 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
16093 restore_block_exit(p, (yyvsp[-2].node_exits));
16094 numparam_pop(p, (yyvsp[-4].node));
16095 dyna_pop(p, (yyvsp[-6].vars));
16097#line 16098 "parse.c"
16101#line 5284 "parse.y"
16103 (yyval.vars) = dyna_push(p);
16106#line 16107 "parse.c"
16110#line 5290 "parse.y"
16112 int max_numparam = p->max_numparam;
16113 ID it_id = p->it_id;
16114 p->max_numparam = (yyvsp[-5].num);
16115 p->it_id = (yyvsp[-3].id);
16116 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
16117 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
16120 restore_block_exit(p, (yyvsp[-2].node_exits));
16121 numparam_pop(p, (yyvsp[-4].node));
16122 dyna_pop(p, (yyvsp[-6].vars));
16124#line 16125 "parse.c"
16128#line 5306 "parse.y"
16130 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
16131 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16134#line 16135 "parse.c"
16138#line 5312 "parse.y"
16140 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16143#line 16144 "parse.c"
16147#line 5317 "parse.y"
16149 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
16150 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16153#line 16154 "parse.c"
16157#line 5323 "parse.y"
16159 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
16162#line 16163 "parse.c"
16166#line 5332 "parse.y"
16168 (yyval.node) = NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]));
16169 fixpos((yyval.node), (yyvsp[-3].node));
16172#line 16173 "parse.c"
16176#line 5343 "parse.y"
16177 {(yyval.tbl) = p->pvtbl; p->pvtbl = st_init_numtable();}
16178#line 16179 "parse.c"
16182#line 5344 "parse.y"
16183 {(yyval.tbl) = p->pktbl; p->pktbl = 0;}
16184#line 16185 "parse.c"
16188#line 5346 "parse.y"
16190 (yyval.ctxt) = p->ctxt;
16191 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
16192 p->command_start = FALSE;
16193 p->ctxt.in_kwarg = 1;
16194 p->ctxt.in_alt_pattern = 0;
16195 p->ctxt.capture_in_pattern = 0;
16197#line 16198 "parse.c"
16201#line 5359 "parse.y"
16203 pop_pktbl(p, (yyvsp[-2].tbl));
16204 pop_pvtbl(p, (yyvsp[-3].tbl));
16205 p->ctxt.in_kwarg = (yyvsp[-4].ctxt).in_kwarg;
16206 p->ctxt.in_alt_pattern = (yyvsp[-4].ctxt).in_alt_pattern;
16207 p->ctxt.capture_in_pattern = (yyvsp[-4].ctxt).capture_in_pattern;
16209#line 16210 "parse.c"
16213#line 5368 "parse.y"
16215 (yyval.node) = NEW_IN((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-8]), &(yylsp[-3]), &NULL_LOC);
16218#line 16219 "parse.c"
16222#line 5380 "parse.y"
16224 (yyval.node) = new_if(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
16225 fixpos((yyval.node), (yyvsp[0].node));
16228#line 16229 "parse.c"
16232#line 5386 "parse.y"
16234 (yyval.node) = new_unless(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
16235 fixpos((yyval.node), (yyvsp[0].node));
16238#line 16239 "parse.c"
16242#line 5395 "parse.y"
16244 (yyval.node) = new_array_pattern_tail(p, 0, 1, 0, 0, &(yyloc));
16245 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-1].node), (yyval.node), &(yyloc));
16248#line 16249 "parse.c"
16252#line 5401 "parse.y"
16254 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16255 nd_set_first_loc((yyval.node), (yylsp[-2]).beg_pos);
16258#line 16259 "parse.c"
16262#line 5407 "parse.y"
16264 (yyval.node) = new_find_pattern(p, 0, (yyvsp[0].node), &(yyloc));
16267#line 16268 "parse.c"
16271#line 5412 "parse.y"
16273 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[0].node), &(yyloc));
16276#line 16277 "parse.c"
16280#line 5417 "parse.y"
16282 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[0].node), &(yyloc));
16285#line 16286 "parse.c"
16289#line 5427 "parse.y"
16291 NODE *n = NEW_LIST((yyvsp[-2].node), &(yyloc));
16292 n = list_append(p, n, (yyvsp[0].node));
16293 (yyval.node) = new_hash(p, n, &(yyloc));
16296#line 16297 "parse.c"
16300#line 5437 "parse.y"
16302 p->ctxt.in_alt_pattern = 1;
16304#line 16305 "parse.c"
16308#line 5441 "parse.y"
16310 if (p->ctxt.capture_in_pattern) {
16311 yyerror1(&(yylsp[-2]),
"alternative pattern after variable capture");
16313 p->ctxt.in_alt_pattern = 0;
16314 (yyval.node) = NEW_OR((yyvsp[-3].node), (yyvsp[0].node), &(yyloc), &(yylsp[-2]));
16317#line 16318 "parse.c"
16321#line 5453 "parse.y"
16323 (yyval.tbl) = (yyvsp[0].tbl);
16326#line 16327 "parse.c"
16330#line 5460 "parse.y"
16332 (yyval.tbl) = (yyvsp[0].tbl);
16335#line 16336 "parse.c"
16339#line 5469 "parse.y"
16341 pop_pktbl(p, (yyvsp[-2].tbl));
16342 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
16343 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16346#line 16347 "parse.c"
16350#line 5476 "parse.y"
16352 pop_pktbl(p, (yyvsp[-2].tbl));
16353 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16354 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16357#line 16358 "parse.c"
16361#line 5483 "parse.y"
16363 pop_pktbl(p, (yyvsp[-2].tbl));
16364 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16365 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16368#line 16369 "parse.c"
16372#line 5490 "parse.y"
16374 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16375 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
16378#line 16379 "parse.c"
16382#line 5496 "parse.y"
16384 pop_pktbl(p, (yyvsp[-2].tbl));
16385 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
16386 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16389#line 16390 "parse.c"
16393#line 5503 "parse.y"
16395 pop_pktbl(p, (yyvsp[-2].tbl));
16396 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16397 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16400#line 16401 "parse.c"
16404#line 5510 "parse.y"
16406 pop_pktbl(p, (yyvsp[-2].tbl));
16407 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16408 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16411#line 16412 "parse.c"
16415#line 5517 "parse.y"
16417 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16418 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
16421#line 16422 "parse.c"
16425#line 5523 "parse.y"
16427 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[-1].node), &(yyloc));
16430#line 16431 "parse.c"
16434#line 5528 "parse.y"
16436 (yyval.node) = new_find_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16439#line 16440 "parse.c"
16443#line 5533 "parse.y"
16445 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16446 (yyval.node) = new_array_pattern(p, 0, 0, (yyval.node), &(yyloc));
16449#line 16450 "parse.c"
16453#line 5539 "parse.y"
16455 p->ctxt.in_kwarg = 0;
16457#line 16458 "parse.c"
16461#line 5543 "parse.y"
16463 pop_pktbl(p, (yyvsp[-4].tbl));
16464 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
16465 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16468#line 16469 "parse.c"
16472#line 5550 "parse.y"
16474 (yyval.node) = new_hash_pattern_tail(p, 0, 0, &(yyloc));
16475 (yyval.node) = new_hash_pattern(p, 0, (yyval.node), &(yyloc));
16478#line 16479 "parse.c"
16482#line 5556 "parse.y"
16484 pop_pktbl(p, (yyvsp[-2].tbl));
16485 (yyval.node) = (yyvsp[-1].node);
16488#line 16489 "parse.c"
16492#line 5564 "parse.y"
16494 NODE *pre_args = NEW_LIST((yyvsp[0].node), &(yyloc));
16495 (yyval.node) = new_array_pattern_tail(p, pre_args, 0, 0, 0, &(yyloc));
16498#line 16499 "parse.c"
16502#line 5570 "parse.y"
16504 (yyval.node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0, 0, &(yyloc));
16507#line 16508 "parse.c"
16511#line 5575 "parse.y"
16513 (yyval.node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, 0, 0, &(yyloc));
16516#line 16517 "parse.c"
16520#line 5580 "parse.y"
16522 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, (yyvsp[0].node), 0, &(yyloc));
16525#line 16526 "parse.c"
16529#line 5585 "parse.y"
16531 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16534#line 16535 "parse.c"
16538#line 5594 "parse.y"
16540 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
16543#line 16544 "parse.c"
16547#line 5601 "parse.y"
16549 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[0].node), 0, &(yyloc));
16552#line 16553 "parse.c"
16556#line 5606 "parse.y"
16558 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16561#line 16562 "parse.c"
16565#line 5613 "parse.y"
16567 (yyval.node) = new_find_pattern_tail(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16570#line 16571 "parse.c"
16574#line 5621 "parse.y"
16576 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16578 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16580#line 16581 "parse.c"
16584#line 5627 "parse.y"
16589#line 16590 "parse.c"
16593#line 5635 "parse.y"
16595 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16598#line 16599 "parse.c"
16602#line 5642 "parse.y"
16604 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16607#line 16608 "parse.c"
16611#line 5649 "parse.y"
16613 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].id), &(yyloc));
16616#line 16617 "parse.c"
16620#line 5654 "parse.y"
16622 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
16625#line 16626 "parse.c"
16629#line 5659 "parse.y"
16631 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
16634#line 16635 "parse.c"
16638#line 5664 "parse.y"
16640 (yyval.node) = new_hash_pattern_tail(p, new_hash(p, 0, &(yyloc)), (yyvsp[0].
id), &(yyloc));
16643#line 16644 "parse.c"
16647#line 5673 "parse.y"
16649 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16652#line 16653 "parse.c"
16656#line 5680 "parse.y"
16658 error_duplicate_pattern_key(p, (yyvsp[-1].
id), &(yylsp[-1]));
16659 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
16662#line 16663 "parse.c"
16666#line 5686 "parse.y"
16668 error_duplicate_pattern_key(p, (yyvsp[0].
id), &(yylsp[0]));
16669 if ((yyvsp[0].
id) && !is_local_id((yyvsp[0].
id))) {
16670 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
16672 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16673 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
16676#line 16677 "parse.c"
16680#line 5699 "parse.y"
16682 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
16683 if (!(yyvsp[-1].node) || nd_type_p((yyvsp[-1].node), NODE_STR)) {
16684 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
16685 (yyval.id) =
rb_sym2id(rb_node_sym_string_val(node));
16688 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
16689 (yyval.id) = rb_intern_str(STR_NEW0());
16693#line 16694 "parse.c"
16697#line 5714 "parse.y"
16699 (yyval.id) = (yyvsp[0].
id);
16702#line 16703 "parse.c"
16706#line 5719 "parse.y"
16711#line 16712 "parse.c"
16715#line 5726 "parse.y"
16719#line 16720 "parse.c"
16723#line 5733 "parse.y"
16725 (yyval.id) = idNil;
16728#line 16729 "parse.c"
16732#line 3120 "parse.y"
16734 value_expr(p, (yyvsp[-2].node));
16735 value_expr(p, (yyvsp[0].node));
16736 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16739#line 16740 "parse.c"
16743#line 3127 "parse.y"
16745 value_expr(p, (yyvsp[-2].node));
16746 value_expr(p, (yyvsp[0].node));
16747 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16750#line 16751 "parse.c"
16754#line 3134 "parse.y"
16756 value_expr(p, (yyvsp[-1].node));
16757 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16760#line 16761 "parse.c"
16764#line 3140 "parse.y"
16766 value_expr(p, (yyvsp[-1].node));
16767 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16770#line 16771 "parse.c"
16774#line 3146 "parse.y"
16776 value_expr(p, (yyvsp[0].node));
16777 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16780#line 16781 "parse.c"
16784#line 3152 "parse.y"
16786 value_expr(p, (yyvsp[0].node));
16787 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16790#line 16791 "parse.c"
16794#line 5748 "parse.y"
16796 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16799#line 16800 "parse.c"
16803#line 5756 "parse.y"
16805 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16807 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16809#line 16810 "parse.c"
16813#line 5764 "parse.y"
16815 NODE *n = gettable(p, (yyvsp[0].
id), &(yyloc));
16817 n = NEW_ERROR(&(yyloc));
16819 else if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
16820 compile_error(p,
"%"PRIsVALUE
": no such local variable", rb_id2str((yyvsp[0].
id)));
16825#line 16826 "parse.c"
16829#line 5776 "parse.y"
16831 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16834#line 16835 "parse.c"
16838#line 5783 "parse.y"
16840 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
16843#line 16844 "parse.c"
16847#line 5790 "parse.y"
16849 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
16852#line 16853 "parse.c"
16856#line 5795 "parse.y"
16858 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
16861#line 16862 "parse.c"
16865#line 5800 "parse.y"
16867 (yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc));
16870#line 16871 "parse.c"
16874#line 5809 "parse.y"
16876 NODE *err = (yyvsp[-3].node);
16877 if ((yyvsp[-3].node)) {
16878 err = NEW_ERRINFO(&(yylsp[-3]));
16879 err = node_assign(p, (yyvsp[-3].node), err, NO_LEX_CTXT, &(yylsp[-3]));
16881 (yyval.node) = NEW_RESBODY((yyvsp[-4].node), (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16882 if ((yyvsp[-4].node)) {
16883 fixpos((yyval.node), (yyvsp[-4].node));
16885 else if ((yyvsp[-3].node)) {
16886 fixpos((yyval.node), (yyvsp[-3].node));
16889 fixpos((yyval.node), (yyvsp[-1].node));
16893#line 16894 "parse.c"
16897#line 5831 "parse.y"
16899 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16902#line 16903 "parse.c"
16906#line 5836 "parse.y"
16908 if (!((yyval.node) = splat_array((yyvsp[0].node)))) (yyval.node) = (yyvsp[0].node);
16910#line 16911 "parse.c"
16914#line 5843 "parse.y"
16916 (yyval.node) = (yyvsp[0].node);
16919#line 16920 "parse.c"
16923#line 5851 "parse.y"
16925 p->ctxt.in_rescue = (yyvsp[-2].ctxt).in_rescue;
16926 (yyval.node) = (yyvsp[-1].node);
16927 void_expr(p, void_stmts(p, (yyval.node)));
16930#line 16931 "parse.c"
16934#line 5865 "parse.y"
16936 if (!(yyvsp[0].node)) {
16937 (yyval.node) = NEW_STR(STRING_NEW0(), &(yyloc));
16940 (yyval.node) = evstr2dstr(p, (yyvsp[0].node));
16944#line 16945 "parse.c"
16948#line 5879 "parse.y"
16950 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16953#line 16954 "parse.c"
16957#line 5886 "parse.y"
16959 (yyval.node) = heredoc_dedent(p, (yyvsp[-1].node));
16960 if ((yyval.node)) nd_set_loc((yyval.node), &(yyloc));
16962 if (p->heredoc_indent > 0) {
16964 p->heredoc_indent = 0;
16968#line 16969 "parse.c"
16972#line 5899 "parse.y"
16974 (yyval.node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
16976 if (p->heredoc_indent > 0) {
16978 p->heredoc_indent = 0;
16982#line 16983 "parse.c"
16986#line 5911 "parse.y"
16988 (yyval.node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
16991#line 16992 "parse.c"
16995#line 3169 "parse.y"
16997 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
17000#line 17001 "parse.c"
17004#line 5921 "parse.y"
17009#line 17010 "parse.c"
17013#line 5926 "parse.y"
17015 (yyval.node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
17018#line 17019 "parse.c"
17022#line 5935 "parse.y"
17024 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
17027#line 17028 "parse.c"
17031#line 3169 "parse.y"
17033 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
17036#line 17037 "parse.c"
17040#line 5945 "parse.y"
17045#line 17046 "parse.c"
17049#line 5950 "parse.y"
17051 (yyval.node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
17054#line 17055 "parse.c"
17058#line 3169 "parse.y"
17060 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
17063#line 17064 "parse.c"
17067#line 3169 "parse.y"
17069 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
17072#line 17073 "parse.c"
17076#line 5963 "parse.y"
17081#line 17082 "parse.c"
17085#line 5968 "parse.y"
17087 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
17090#line 17091 "parse.c"
17094#line 5975 "parse.y"
17099#line 17100 "parse.c"
17103#line 5980 "parse.y"
17105 (yyval.node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
17108#line 17109 "parse.c"
17112#line 5987 "parse.y"
17117#line 17118 "parse.c"
17121#line 5992 "parse.y"
17123 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
17126#line 17127 "parse.c"
17130#line 5999 "parse.y"
17135#line 17136 "parse.c"
17139#line 6004 "parse.y"
17141 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
17144#line 17145 "parse.c"
17148#line 6011 "parse.y"
17153#line 17154 "parse.c"
17157#line 6016 "parse.y"
17159 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
17161 (yyval.node) = tail;
17164 (yyval.node) = head;
17167 switch (nd_type(head)) {
17169 head = str2dstr(p, head);
17174 head = list_append(p, NEW_DSTR(0, &(yyloc)), head);
17177 (yyval.node) = list_append(p, head, tail);
17181#line 17182 "parse.c"
17185#line 6044 "parse.y"
17188 (yyval.strterm) = p->lex.strterm;
17189 p->lex.strterm = 0;
17190 SET_LEX_STATE(EXPR_BEG);
17192#line 17193 "parse.c"
17196#line 6051 "parse.y"
17198 p->lex.strterm = (yyvsp[-1].strterm);
17199 (yyval.node) = NEW_EVSTR((yyvsp[0].node), &(yyloc), &(yylsp[-2]), &NULL_LOC);
17200 nd_set_line((yyval.node), (yylsp[0]).end_pos.lineno);
17203#line 17204 "parse.c"
17207#line 6058 "parse.y"
17212 (yyval.strterm) = p->lex.strterm;
17213 p->lex.strterm = 0;
17214 SET_LEX_STATE(EXPR_BEG);
17216#line 17217 "parse.c"
17220#line 6066 "parse.y"
17222 (yyval.num) = p->lex.brace_nest;
17223 p->lex.brace_nest = 0;
17225#line 17226 "parse.c"
17229#line 6070 "parse.y"
17231 (yyval.num) = p->lex.lpar_beg;
17232 p->lex.lpar_beg = -1;
17234#line 17235 "parse.c"
17238#line 6074 "parse.y"
17240 (yyval.num) = p->heredoc_indent;
17241 p->heredoc_indent = 0;
17243#line 17244 "parse.c"
17247#line 6079 "parse.y"
17251 p->lex.strterm = (yyvsp[-5].strterm);
17252 SET_LEX_STATE((yyvsp[-6].state));
17253 p->lex.brace_nest = (yyvsp[-4].num);
17254 p->lex.lpar_beg = (yyvsp[-3].num);
17255 p->heredoc_indent = (yyvsp[-2].num);
17256 p->heredoc_line_indent = -1;
17257 if ((yyvsp[-1].node)) nd_unset_fl_newline((yyvsp[-1].node));
17258 (yyval.node) = new_evstr(p, (yyvsp[-1].node), &(yyloc), &(yylsp[-6]), &(yylsp[0]));
17261#line 17262 "parse.c"
17265#line 6099 "parse.y"
17267 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17270#line 17271 "parse.c"
17274#line 6111 "parse.y"
17276 SET_LEX_STATE(EXPR_END);
17277 VALUE str = rb_id2str((yyvsp[0].
id));
17284 if (!str) str = STR_NEW0();
17285 (yyval.node) = NEW_SYM(str, &(yyloc));
17288#line 17289 "parse.c"
17292#line 6131 "parse.y"
17294 SET_LEX_STATE(EXPR_END);
17295 (yyval.node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
17298#line 17299 "parse.c"
17302#line 6140 "parse.y"
17304 (yyval.node) = (yyvsp[0].node);
17305 negate_lit(p, (yyval.node), &(yyloc));
17308#line 17309 "parse.c"
17312#line 6162 "parse.y"
17313 {(yyval.id) = KWD2EID(nil, (yyvsp[0].
id));}
17314#line 17315 "parse.c"
17318#line 6163 "parse.y"
17319 {(yyval.id) = KWD2EID(self, (yyvsp[0].
id));}
17320#line 17321 "parse.c"
17324#line 6164 "parse.y"
17325 {(yyval.id) = KWD2EID(
true, (yyvsp[0].
id));}
17326#line 17327 "parse.c"
17330#line 6165 "parse.y"
17331 {(yyval.id) = KWD2EID(
false, (yyvsp[0].
id));}
17332#line 17333 "parse.c"
17336#line 6166 "parse.y"
17337 {(yyval.id) = KWD2EID(_FILE__, (yyvsp[0].
id));}
17338#line 17339 "parse.c"
17342#line 6167 "parse.y"
17343 {(yyval.id) = KWD2EID(_LINE__, (yyvsp[0].
id));}
17344#line 17345 "parse.c"
17348#line 6168 "parse.y"
17349 {(yyval.id) = KWD2EID(_ENCODING__, (yyvsp[0].
id));}
17350#line 17351 "parse.c"
17354#line 6172 "parse.y"
17356 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17357 if (ifdef_ripper(id_is_var(p, (yyvsp[0].
id)),
false)) {
17364#line 17365 "parse.c"
17368#line 6182 "parse.y"
17370 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17373#line 17374 "parse.c"
17377#line 6189 "parse.y"
17380 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
17382#line 17383 "parse.c"
17386#line 6189 "parse.y"
17389 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
17391#line 17392 "parse.c"
17395#line 6200 "parse.y"
17397 SET_LEX_STATE(EXPR_BEG);
17398 p->command_start = TRUE;
17400#line 17401 "parse.c"
17404#line 6205 "parse.y"
17406 (yyval.node) = (yyvsp[-1].node);
17409#line 17410 "parse.c"
17413#line 6214 "parse.y"
17415 p->ctxt.in_argdef = 0;
17417#line 17418 "parse.c"
17421#line 6220 "parse.y"
17423 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
17424 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyval.node_args), &(yyloc));
17427#line 17428 "parse.c"
17431#line 6228 "parse.y"
17433 (yyval.node_args) = (yyvsp[-1].node_args);
17435 SET_LEX_STATE(EXPR_BEG);
17436 p->command_start = TRUE;
17437 p->ctxt.in_argdef = 0;
17439#line 17440 "parse.c"
17443#line 6238 "parse.y"
17445 (yyval.ctxt) = p->ctxt;
17446 p->ctxt.in_kwarg = 1;
17447 p->ctxt.in_argdef = 1;
17448 SET_LEX_STATE(p->lex.state|EXPR_LABEL);
17450#line 17451 "parse.c"
17454#line 6245 "parse.y"
17456 p->ctxt.in_kwarg = (yyvsp[-2].ctxt).in_kwarg;
17457 p->ctxt.in_argdef = 0;
17458 (yyval.node_args) = (yyvsp[-1].node_args);
17459 SET_LEX_STATE(EXPR_BEG);
17460 p->command_start = TRUE;
17463#line 17464 "parse.c"
17467#line 3020 "parse.y"
17469 p->ctxt.in_argdef = 1;
17470 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17473#line 17474 "parse.c"
17477#line 3026 "parse.y"
17479 p->ctxt.in_argdef = 1;
17480 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
17483#line 17484 "parse.c"
17487#line 3035 "parse.y"
17489 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
17492#line 17493 "parse.c"
17496#line 3040 "parse.y"
17498 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
17501#line 17502 "parse.c"
17505#line 2957 "parse.y"
17507 (yyval.id) = (yyvsp[0].
id);
17510#line 17511 "parse.c"
17514#line 2934 "parse.y"
17516 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
17519#line 17520 "parse.c"
17523#line 2939 "parse.y"
17525 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
17528#line 17529 "parse.c"
17532#line 2944 "parse.y"
17534 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
17537#line 17538 "parse.c"
17541#line 2949 "parse.y"
17543 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
17546#line 17547 "parse.c"
17550#line 6257 "parse.y"
17552 add_forwarding_args(p);
17553 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[0].
id), arg_FWD_BLOCK, &(yylsp[0]));
17554 (yyval.node_args)->nd_ainfo.forwarding = 1;
17557#line 17558 "parse.c"
17561#line 2934 "parse.y"
17563 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
17566#line 17567 "parse.c"
17570#line 2939 "parse.y"
17572 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
17575#line 17576 "parse.c"
17579#line 2944 "parse.y"
17581 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
17584#line 17585 "parse.c"
17588#line 2949 "parse.y"
17590 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
17593#line 17594 "parse.c"
17597#line 6267 "parse.y"
17599 yyerror1(&(yylsp[0]),
"unexpected ... in lambda argument");
17600 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
17601 (yyval.node_args)->nd_ainfo.forwarding = 1;
17604#line 17605 "parse.c"
17608#line 2998 "parse.y"
17610 p->ctxt.in_argdef = 1;
17611 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17614#line 17615 "parse.c"
17618#line 3007 "parse.y"
17620 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
17623#line 17624 "parse.c"
17627#line 3012 "parse.y"
17629 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
17632#line 17633 "parse.c"
17636#line 3107 "parse.y"
17638 (yyval.node_args) = (yyvsp[0].node_args);
17641#line 17642 "parse.c"
17645#line 3112 "parse.y"
17647 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
17650#line 17651 "parse.c"
17654#line 6277 "parse.y"
17656 (yyval.node_args) = new_args(p, (yyvsp[-5].node_args_aux), (yyvsp[-3].node_opt_arg), (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17659#line 17660 "parse.c"
17663#line 6282 "parse.y"
17665 (yyval.node_args) = new_args(p, (yyvsp[-7].node_args_aux), (yyvsp[-5].node_opt_arg), (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17668#line 17669 "parse.c"
17672#line 6287 "parse.y"
17674 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17677#line 17678 "parse.c"
17681#line 6292 "parse.y"
17683 (yyval.node_args) = new_args(p, (yyvsp[-5].node_args_aux), (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17686#line 17687 "parse.c"
17690#line 6297 "parse.y"
17692 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17695#line 17696 "parse.c"
17699#line 6302 "parse.y"
17701 (yyval.node_args) = new_args(p, (yyvsp[-5].node_args_aux), 0, (yyvsp[-3].id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17704#line 17705 "parse.c"
17708#line 6307 "parse.y"
17710 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17713#line 17714 "parse.c"
17717#line 6312 "parse.y"
17719 (yyval.node_args) = new_args(p, 0, (yyvsp[-5].node_opt_arg), (yyvsp[-3].id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17722#line 17723 "parse.c"
17726#line 6317 "parse.y"
17728 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17731#line 17732 "parse.c"
17735#line 6322 "parse.y"
17737 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17740#line 17741 "parse.c"
17744#line 6327 "parse.y"
17746 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17749#line 17750 "parse.c"
17753#line 6332 "parse.y"
17755 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17758#line 17759 "parse.c"
17762#line 6349 "parse.y"
17764 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17767#line 17768 "parse.c"
17771#line 6340 "parse.y"
17773 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17776#line 17777 "parse.c"
17780#line 3107 "parse.y"
17782 (yyval.node_args) = (yyvsp[0].node_args);
17785#line 17786 "parse.c"
17789#line 3112 "parse.y"
17791 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
17794#line 17795 "parse.c"
17798#line 6277 "parse.y"
17800 (yyval.node_args) = new_args(p, (yyvsp[-5].node_args_aux), (yyvsp[-3].node_opt_arg), (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17803#line 17804 "parse.c"
17807#line 6282 "parse.y"
17809 (yyval.node_args) = new_args(p, (yyvsp[-7].node_args_aux), (yyvsp[-5].node_opt_arg), (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17812#line 17813 "parse.c"
17816#line 6287 "parse.y"
17818 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17821#line 17822 "parse.c"
17825#line 6292 "parse.y"
17827 (yyval.node_args) = new_args(p, (yyvsp[-5].node_args_aux), (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17830#line 17831 "parse.c"
17834#line 6297 "parse.y"
17836 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17839#line 17840 "parse.c"
17843#line 6302 "parse.y"
17845 (yyval.node_args) = new_args(p, (yyvsp[-5].node_args_aux), 0, (yyvsp[-3].id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17848#line 17849 "parse.c"
17852#line 6307 "parse.y"
17854 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17857#line 17858 "parse.c"
17861#line 6312 "parse.y"
17863 (yyval.node_args) = new_args(p, 0, (yyvsp[-5].node_opt_arg), (yyvsp[-3].id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17866#line 17867 "parse.c"
17870#line 6317 "parse.y"
17872 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17875#line 17876 "parse.c"
17879#line 6322 "parse.y"
17881 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17884#line 17885 "parse.c"
17888#line 6327 "parse.y"
17890 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17893#line 17894 "parse.c"
17897#line 6332 "parse.y"
17899 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17902#line 17903 "parse.c"
17906#line 6349 "parse.y"
17908 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17911#line 17912 "parse.c"
17915#line 6340 "parse.y"
17917 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17920#line 17921 "parse.c"
17924#line 6364 "parse.y"
17926 (yyval.id) = idFWD_KWREST;
17929#line 17930 "parse.c"
17933#line 6371 "parse.y"
17935 static const char mesg[] =
"formal argument cannot be a constant";
17937 yyerror1(&(yylsp[0]), mesg);
17942#line 17943 "parse.c"
17946#line 6380 "parse.y"
17948 static const char mesg[] =
"formal argument cannot be an instance variable";
17950 yyerror1(&(yylsp[0]), mesg);
17955#line 17956 "parse.c"
17959#line 6389 "parse.y"
17961 static const char mesg[] =
"formal argument cannot be a global variable";
17963 yyerror1(&(yylsp[0]), mesg);
17968#line 17969 "parse.c"
17972#line 6398 "parse.y"
17974 static const char mesg[] =
"formal argument cannot be a class variable";
17976 yyerror1(&(yylsp[0]), mesg);
17981#line 17982 "parse.c"
17985#line 6410 "parse.y"
17987 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
17991 p->max_numparam = ORDINAL_PARAM;
17993#line 17994 "parse.c"
17997#line 6420 "parse.y"
17999 arg_var(p, (yyvsp[0].
id));
18000 (yyval.id) = (yyvsp[0].
id);
18002#line 18003 "parse.c"
18006#line 6427 "parse.y"
18008 (yyval.node_args_aux) = NEW_ARGS_AUX((yyvsp[0].
id), 1, &NULL_LOC);
18011#line 18012 "parse.c"
18015#line 6432 "parse.y"
18017 ID tid = internal_id(p);
18019 loc.beg_pos = (yylsp[-1]).beg_pos;
18020 loc.end_pos = (yylsp[-1]).beg_pos;
18022 if (dyna_in_block(p)) {
18023 (yyvsp[-1].node_masgn)->nd_value = NEW_DVAR(tid, &loc);
18026 (yyvsp[-1].node_masgn)->nd_value = NEW_LVAR(tid, &loc);
18028 (yyval.node_args_aux) = NEW_ARGS_AUX(tid, 1, &NULL_LOC);
18029 (yyval.node_args_aux)->nd_next = (
NODE *)(yyvsp[-1].node_masgn);
18032#line 18033 "parse.c"
18036#line 6453 "parse.y"
18038 (yyval.node_args_aux) = (yyvsp[-2].node_args_aux);
18039 (yyval.node_args_aux)->nd_plen++;
18040 (yyval.node_args_aux)->nd_next = block_append(p, (yyval.node_args_aux)->nd_next, (yyvsp[0].node_args_aux)->nd_next);
18041 rb_discard_node(p, (
NODE *)(yyvsp[0].node_args_aux));
18044#line 18045 "parse.c"
18048#line 6464 "parse.y"
18050 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
18061 arg_var(p, ifdef_ripper(0, (yyvsp[0].
id)));
18063 p->max_numparam = ORDINAL_PARAM;
18064 p->ctxt.in_argdef = 0;
18066#line 18067 "parse.c"
18070#line 6488 "parse.y"
18074#line 18075 "parse.c"
18078#line 6494 "parse.y"
18080 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
18081 (yyval.id) = (yyvsp[0].
id);
18084#line 18085 "parse.c"
18088#line 6500 "parse.y"
18090 arg_var(p, idFWD_KWREST);
18091 (yyval.id) = idFWD_KWREST;
18094#line 18095 "parse.c"
18098#line 6512 "parse.y"
18100 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
18101 (yyval.id) = (yyvsp[0].
id);
18104#line 18105 "parse.c"
18108#line 6518 "parse.y"
18110 arg_var(p, idFWD_REST);
18111 (yyval.id) = idFWD_REST;
18114#line 18115 "parse.c"
18118#line 6530 "parse.y"
18120 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
18121 (yyval.id) = (yyvsp[0].
id);
18124#line 18125 "parse.c"
18128#line 6536 "parse.y"
18130 (yyval.id) = idNil;
18133#line 18134 "parse.c"
18137#line 6541 "parse.y"
18139 arg_var(p, idFWD_BLOCK);
18140 (yyval.id) = idFWD_BLOCK;
18143#line 18144 "parse.c"
18147#line 6549 "parse.y"
18152#line 18153 "parse.c"
18156#line 3161 "parse.y"
18158 value_expr(p, (yyvsp[0].node));
18159 (yyval.node) = (yyvsp[0].node);
18161#line 18162 "parse.c"
18165#line 6557 "parse.y"
18167 NODE *expr = last_expr_node((yyvsp[0].node));
18168 switch (nd_type(expr)) {
18178 case NODE_ENCODING:
18181 case NODE_RATIONAL:
18182 case NODE_IMAGINARY:
18186 yyerror1(&expr->nd_loc,
"can't define singleton method for literals");
18191 (yyval.node) = (yyvsp[0].node);
18193#line 18194 "parse.c"
18197#line 6588 "parse.y"
18199 SET_LEX_STATE(EXPR_BEG);
18200 p->ctxt.in_argdef = 0;
18202#line 18203 "parse.c"
18206#line 6593 "parse.y"
18208 p->ctxt.in_argdef = 1;
18209 (yyval.node) = (yyvsp[-1].node);
18212#line 18213 "parse.c"
18216#line 6602 "parse.y"
18218 (yyval.node) = (yyvsp[-1].node);
18221#line 18222 "parse.c"
18225#line 6611 "parse.y"
18227 NODE *assocs = (yyvsp[-2].node);
18228 NODE *tail = (yyvsp[0].node);
18233 NODE *n = RNODE_LIST(tail)->nd_next;
18234 if (!RNODE_LIST(tail)->nd_head && nd_type_p(n, NODE_LIST) &&
18235 nd_type_p((n = RNODE_LIST(n)->nd_head), NODE_HASH)) {
18237 tail = RNODE_HASH(n)->nd_head;
18240 assocs = list_concat(assocs, tail);
18243 (yyval.node) = assocs;
18246#line 18247 "parse.c"
18250#line 6634 "parse.y"
18252 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
18255#line 18256 "parse.c"
18259#line 6639 "parse.y"
18261 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
18264#line 18265 "parse.c"
18268#line 6644 "parse.y"
18270 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
18271 if (!val) val = NEW_ERROR(&(yyloc));
18272 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
18275#line 18276 "parse.c"
18279#line 6651 "parse.y"
18281 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
18282 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
18285#line 18286 "parse.c"
18289#line 6657 "parse.y"
18291 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
18294#line 18295 "parse.c"
18298#line 6662 "parse.y"
18300 forwarding_arg_check(p, idFWD_KWREST, idFWD_ALL,
"keyword rest");
18301 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)),
18302 NEW_LVAR(idFWD_KWREST, &(yyloc)));
18305#line 18306 "parse.c"
18309#line 6709 "parse.y"
18313 if (p->ctxt.in_defined) {
18314 p->ctxt.has_trailing_semicolon = 1;
18317#line 18318 "parse.c"
18321#line 6717 "parse.y"
18323 (yyloc).end_pos = (yyloc).beg_pos;
18326#line 18327 "parse.c"
18330#line 6724 "parse.y"
18332#line 18333 "parse.c"
18336#line 6728 "parse.y"
18341#line 18342 "parse.c"
18345#line 18346 "parse.c"
18360 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc, p);
18362 YYPOPSTACK (yylen);
18364#line 2673 "parse.y"
18365 {after_reduce(yylen, p);}
18366#line 18367 "parse.c"
18377 const int yylhs = yyr1[yyn] - YYNTOKENS;
18378 const int yyi = yypgoto[yylhs] + *yyssp;
18379 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
18381 : yydefgoto[yylhs]);
18393 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
18400 = {yyssp, yytoken, &yylloc};
18401 char const *yymsgp = YY_(
"syntax error");
18402 int yysyntax_error_status;
18403 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
18404 if (yysyntax_error_status == 0)
18406 else if (yysyntax_error_status == -1)
18408 if (yymsg != yymsgbuf)
18409 YYSTACK_FREE (yymsg);
18410 yymsg = YY_CAST (
char *,
18411 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
18414 yysyntax_error_status
18415 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
18421 yymsg_alloc =
sizeof yymsgbuf;
18422 yysyntax_error_status = YYENOMEM;
18425 yyerror (&yylloc, p, yymsgp);
18426 if (yysyntax_error_status == YYENOMEM)
18431 yyerror_range[1] = yylloc;
18432 if (yyerrstatus == 3)
18437 if (yychar <= END_OF_INPUT)
18440 if (yychar == END_OF_INPUT)
18445 yydestruct (
"Error: discarding",
18446 yytoken, &yylval, &yylloc, p);
18468 YYPOPSTACK (yylen);
18470#line 2675 "parse.y"
18471 {after_pop_stack(yylen, p);}
18472#line 18473 "parse.c"
18475 YY_STACK_PRINT (yyss, yyssp, p);
18489 yyn = yypact[yystate];
18490 if (!yypact_value_is_default (yyn))
18492 yyn += YYSYMBOL_YYerror;
18493 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
18495 yyn = yytable[yyn];
18505 yyerror_range[1] = *yylsp;
18506 yydestruct (
"Error: popping",
18507 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
18510#line 2675 "parse.y"
18511 {after_pop_stack(1, p);}
18512#line 18513 "parse.c"
18515 YY_STACK_PRINT (yyss, yyssp, p);
18518 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
18520 YY_IGNORE_MAYBE_UNINITIALIZED_END
18522 yyerror_range[2] = yylloc;
18524 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
18527 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp, p);
18529#line 2674 "parse.y"
18530 {after_shift_error_token(p);}
18531#line 18532 "parse.c"
18558 yyerror (&yylloc, p, YY_(
"memory exhausted"));
18567 if (yychar != YYEMPTY)
18571 yytoken = YYTRANSLATE (yychar);
18572 yydestruct (
"Cleanup: discarding lookahead",
18573 yytoken, &yylval, &yylloc, p);
18577 YYPOPSTACK (yylen);
18578 YY_STACK_PRINT (yyss, yyssp, p);
18579 while (yyssp != yyss)
18581 yydestruct (
"Cleanup: popping",
18582 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
18587 YYSTACK_FREE (yyss);
18589 if (yymsg != yymsgbuf)
18590 YYSTACK_FREE (yymsg);
18594#line 6733 "parse.y"
18599# define yylval (*p->lval)
18607#define set_parser_s_value(x) (ifdef_ripper(p->s_value = (x), (void)0))
18609# define set_yylval_node(x) { \
18610 YYLTYPE _cur_loc; \
18611 rb_parser_set_location(p, &_cur_loc); \
18612 yylval.node = (x); \
18613 set_parser_s_value(STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)); \
18615# define set_yylval_str(x) \
18617 set_yylval_node(NEW_STR(x, &_cur_loc)); \
18618 set_parser_s_value(rb_str_new_mutable_parser_string(x)); \
18620# define set_yylval_num(x) { \
18621 yylval.num = (x); \
18622 set_parser_s_value(x); \
18624# define set_yylval_id(x) (yylval.id = (x))
18625# define set_yylval_name(x) { \
18626 (yylval.id = (x)); \
18627 set_parser_s_value(ID2SYM(x)); \
18629# define yylval_id() (yylval.id)
18631#define set_yylval_noname() set_yylval_id(keyword_nil)
18632#define has_delayed_token(p) (p->delayed.token != NULL)
18635#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
18636#define dispatch_scan_event(p, t) parser_dispatch_scan_event(p, t, __LINE__)
18641 const char *
const pcur = p->lex.pcur;
18642 const char *
const ptok = p->lex.ptok;
18643 if (p->keep_tokens && (pcur < ptok)) {
18644 rb_bug(
"lex.pcur < lex.ptok. (line: %d) %"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"",
18645 p->ruby_sourceline, ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur);
18647 return pcur > ptok;
18654 case '"':
return "\\\"";
18655 case '\\':
return "\\\\";
18656 case '\0':
return "\\0";
18657 case '\n':
return "\\n";
18658 case '\r':
return "\\r";
18659 case '\t':
return "\\t";
18660 case '\f':
return "\\f";
18661 case '\013':
return "\\v";
18662 case '\010':
return "\\b";
18663 case '\007':
return "\\a";
18664 case '\033':
return "\\e";
18665 case '\x7f':
return "\\c?";
18674 const char *ptr = str->ptr;
18675 const char *pend = ptr + str->len;
18676 const char *prev = ptr;
18677 char charbuf[5] = {
'\\',
'x', 0, 0, 0};
18680 while (ptr < pend) {
18683 int n = rb_enc_precise_mbclen(ptr, pend, enc);
18685 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18686 n = rb_enc_mbminlen(enc);
18687 if (pend < ptr + n)
18688 n = (int)(pend - ptr);
18690 c = ((
unsigned char)*ptr >> 4) & 0x0f;
18691 charbuf[2] = (c < 10) ?
'0' + c :
'A' + c - 10;
18693 charbuf[3] = (c < 10) ?
'0' + c :
'A' + c - 10;
18694 parser_str_cat(result, charbuf, 4);
18700 c = rb_enc_mbc_to_codepoint(ptr, pend, enc);
18702 cc = escaped_char(c);
18704 if (ptr - n > prev) parser_str_cat(result, prev, ptr - n - prev);
18705 parser_str_cat_cstr(result, cc);
18708 else if (rb_enc_isascii(c, enc) &&
ISPRINT(c)) {
18711 if (ptr - n > prev) {
18712 parser_str_cat(result, prev, ptr - n - prev);
18715 parser_str_cat(result, prev, ptr - prev);
18719 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18728 token->id = p->token_id;
18729 token->type_name = parser_token2char(p, t);
18731 token->loc.beg_pos = p->yylloc->beg_pos;
18732 token->loc.end_pos = p->yylloc->end_pos;
18733 rb_parser_ary_push_ast_token(p, p->tokens, token);
18738 rb_parser_printf(p,
"Append tokens (line: %d) [%d, :%s, \"%s\", [%d, %d, %d, %d]]\n",
18739 line, token->id, token->type_name, str_escaped->ptr,
18740 token->loc.beg_pos.lineno, token->loc.beg_pos.column,
18741 token->loc.end_pos.lineno, token->loc.end_pos.column);
18742 rb_parser_string_free(p, str_escaped);
18747parser_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t,
int line)
18749 debug_token_line(p,
"parser_dispatch_scan_event", line);
18751 if (!parser_has_token(p))
return;
18753 RUBY_SET_YYLLOC(*p->yylloc);
18755 if (p->keep_tokens) {
18756 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pcur - p->lex.ptok, p->enc);
18757 parser_append_tokens(p, str, t, line);
18763#define dispatch_delayed_token(p, t) parser_dispatch_delayed_token(p, t, __LINE__)
18765parser_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t,
int line)
18767 debug_token_line(p,
"parser_dispatch_delayed_token", line);
18769 if (!has_delayed_token(p))
return;
18771 RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(*p->yylloc);
18773 if (p->keep_tokens) {
18775 parser_append_tokens(p, p->delayed.token, t, line);
18778 rb_parser_string_free(p, p->delayed.token);
18781 p->delayed.token = NULL;
18784#define literal_flush(p, ptr) ((void)(ptr))
18789 if (p->lex.pcur < p->lex.ptok) rb_raise(
rb_eRuntimeError,
"lex.pcur < lex.ptok");
18790 return p->lex.pcur > p->lex.ptok;
18794ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
18796 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
18797 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
18798 RUBY_SET_YYLLOC(*p->yylloc);
18804ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
18806 if (!ripper_has_scan_event(p))
return;
18808 set_parser_s_value(ripper_scan_event_val(p, t));
18810#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
18813ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
18816 int saved_line = p->ruby_sourceline;
18817 const char *saved_tokp = p->lex.ptok;
18818 VALUE s_value, str;
18820 if (!has_delayed_token(p))
return;
18821 p->ruby_sourceline = p->delayed.beg_line;
18822 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
18823 str = rb_str_new_mutable_parser_string(p->delayed.token);
18824 rb_parser_string_free(p, p->delayed.token);
18825 s_value = ripper_dispatch1(p, ripper_token2eventid(t), str);
18826 set_parser_s_value(s_value);
18827 p->delayed.token = NULL;
18828 p->ruby_sourceline = saved_line;
18829 p->lex.ptok = saved_tokp;
18831#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
18837 return rb_enc_isalnum((
unsigned char)*ptr, enc) || *ptr ==
'_' || !
ISASCII(*ptr);
18843 const char *ptr = p->lex.pcur + at;
18844 if (lex_eol_ptr_n_p(p, ptr,
len-1))
return false;
18845 if (memcmp(ptr, str,
len))
return false;
18846 if (lex_eol_ptr_n_p(p, ptr,
len))
return true;
18847 switch (ptr[
len]) {
18848 case '!':
case '?':
return false;
18850 return !is_identchar(p, ptr+
len, p->lex.pend, p->enc);
18856 return !(p)->eofp && is_identchar(p, p->lex.pcur-1, p->lex.pend, p->enc);
18862 return ISASCII(*(p->lex.pcur-1));
18868 int column = 1, nonspc = 0, i;
18869 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
18870 if (*ptr ==
'\t') {
18871 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
18874 if (*ptr !=
' ' && *ptr !=
'\t') {
18879 ptinfo->beg = loc->beg_pos;
18880 ptinfo->indent = column;
18881 ptinfo->nonspc = nonspc;
18889 if (!p->token_info_enabled)
return;
18891 ptinfo->token = token;
18892 ptinfo->next = p->token_info;
18893 token_info_setup(ptinfo, p->lex.pbeg, loc);
18895 p->token_info = ptinfo;
18903 if (!ptinfo_beg)
return;
18906 token_info_warn(p, token, ptinfo_beg, 1, loc);
18908 p->token_info = ptinfo_beg->next;
18909 ruby_xfree_sized(ptinfo_beg,
sizeof(*ptinfo_beg));
18917 if (!ptinfo_beg)
return;
18918 p->token_info = ptinfo_beg->next;
18920 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
18921 ptinfo_beg->beg.column != beg_pos.column ||
18922 strcmp(ptinfo_beg->token, token)) {
18923 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
18924 beg_pos.lineno, beg_pos.column, token,
18925 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
18926 ptinfo_beg->token);
18929 ruby_xfree_sized(ptinfo_beg,
sizeof(*ptinfo_beg));
18935 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
18936 if (!p->token_info_enabled)
return;
18937 if (!ptinfo_beg)
return;
18938 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
18939 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
18940 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
18941 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
18942 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
18943 rb_warn3L(ptinfo_end->beg.lineno,
18944 "mismatched indentations at '%s' with '%s' at %d",
18945 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
18949parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
18951 int len = rb_enc_precise_mbclen(ptr, p->lex.pend, p->enc);
18953 compile_error(p,
"invalid multibyte char (%s)", rb_enc_name(p->enc));
18964 int lineno = p->ruby_sourceline;
18968 else if (yylloc->beg_pos.lineno == lineno) {
18969 str = p->lex.lastline;
18974 ruby_show_error_line(p, p->error_buffer, yylloc, lineno, str);
18984 yylloc = RUBY_SET_YYLLOC(current);
18986 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
18987 p->ruby_sourceline != yylloc->end_pos.lineno)) {
18991 parser_compile_error(p, yylloc,
"%s", msg);
18992 parser_show_error_line(p, yylloc);
19000 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
19007 const int max_line_margin = 30;
19008 const char *ptr, *ptr_end, *pt, *pb;
19009 const char *pre =
"", *post =
"", *pend;
19010 const char *code =
"", *caret =
"";
19012 const char *
const pbeg = PARSER_STRING_PTR(str);
19017 if (!yylloc)
return;
19018 pend = rb_parser_string_end(str);
19019 if (pend > pbeg && pend[-1] ==
'\n') {
19020 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
19024 if (lineno == yylloc->end_pos.lineno &&
19025 (pend - pbeg) > yylloc->end_pos.column) {
19026 pt = pbeg + yylloc->end_pos.column;
19029 ptr = ptr_end = pt;
19030 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
19031 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
19033 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
19034 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
19036 len = ptr_end - ptr;
19039 ptr = rb_enc_prev_char(pbeg, ptr, pt, rb_parser_str_get_encoding(str));
19040 if (ptr > pbeg) pre =
"...";
19042 if (ptr_end < pend) {
19043 ptr_end = rb_enc_prev_char(pt, ptr_end, pend, rb_parser_str_get_encoding(str));
19044 if (ptr_end < pend) post =
"...";
19048 if (lineno == yylloc->beg_pos.lineno) {
19049 pb += yylloc->beg_pos.column;
19050 if (pb > pt) pb = pt;
19052 if (pb < ptr) pb = ptr;
19053 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
19056 if (
RTEST(errbuf)) {
19057 mesg = rb_attr_get(errbuf, idMesg);
19058 if (char_at_end(p, mesg,
'\n') !=
'\n')
19062 mesg = rb_enc_str_new(0, 0, rb_parser_str_get_encoding(str));
19064 if (!errbuf && rb_stderr_tty_p()) {
19065#define CSI_BEGIN "\033["
19068 CSI_BEGIN
""CSI_SGR
"%s"
19069 CSI_BEGIN
"1"CSI_SGR
"%.*s"
19070 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
19071 CSI_BEGIN
";1"CSI_SGR
"%.*s"
19072 CSI_BEGIN
""CSI_SGR
"%s"
19075 (
int)(pb - ptr), ptr,
19076 (
int)(pt - pb), pb,
19077 (
int)(ptr_end - pt), pt,
19083 len = ptr_end - ptr;
19084 lim = pt < pend ? pt : pend;
19085 i = (int)(lim - ptr);
19091 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
19097 memset(p2,
'~', (lim - ptr));
19101 rb_str_catf(mesg,
"%s%.*s%s\n""%s%s\n",
19102 pre, (
int)
len, code, post,
19105 if (!errbuf) rb_write_error_str(mesg);
19112 const char *pcur = 0, *ptok = 0;
19113 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
19114 p->ruby_sourceline == yylloc->end_pos.lineno) {
19115 pcur = p->lex.pcur;
19116 ptok = p->lex.ptok;
19117 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
19118 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
19120 parser_yyerror0(p, msg);
19122 p->lex.ptok = ptok;
19123 p->lex.pcur = pcur;
19131 dispatch1(parse_error, STR_NEW2(msg));
19143vtable_size(
const struct vtable *tbl)
19145 if (!DVARS_TERMINAL_P(tbl)) {
19163 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
19168#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
19171vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
19176 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
19179 if (!DVARS_TERMINAL_P(tbl)) {
19181 ruby_xfree_sized(tbl->tbl, tbl->capa *
sizeof(
ID));
19183 ruby_xfree_sized(tbl,
sizeof(*tbl));
19186#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
19189vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
19194 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
19195 line, name, (
void *)tbl, rb_id2name(
id));
19198 if (DVARS_TERMINAL_P(tbl)) {
19199 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
19202 if (tbl->pos == tbl->capa) {
19203 tbl->capa = tbl->capa * 2;
19204 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
19206 tbl->tbl[tbl->pos++] = id;
19208#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
19211vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
19212 struct vtable *tbl,
int n)
19215 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
19216 line, name, (
void *)tbl, n);
19218 if (tbl->pos < n) {
19219 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
19224#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
19227vtable_included(
const struct vtable * tbl,
ID id)
19231 if (!DVARS_TERMINAL_P(tbl)) {
19232 for (i = 0; i < tbl->pos; i++) {
19233 if (tbl->tbl[i] ==
id) {
19246 return strcmp(p->ruby_sourcefile,
"-e") == 0;
19253yycompile0(
VALUE arg)
19260 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string) && !e_option_supplied(p)) {
19264 if (p->debug_lines) {
19265 p->ast->body.script_lines = p->debug_lines;
19269#define RUBY_DTRACE_PARSE_HOOK(name) \
19270 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
19271 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
19273 RUBY_DTRACE_PARSE_HOOK(BEGIN);
19275 RUBY_DTRACE_PARSE_HOOK(END);
19277 p->debug_lines = 0;
19279 xfree(p->lex.strterm);
19280 p->lex.strterm = 0;
19281 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
19282 if (n || p->error_p) {
19283 VALUE mesg = p->error_buffer;
19285 mesg = syntax_error_new();
19287 if (!p->error_tolerant) {
19288 rb_set_errinfo(mesg);
19292 tree = p->eval_tree;
19294 tree = NEW_NIL(&NULL_LOC);
19299 NODE *body = parser_append_options(p, RNODE_SCOPE(tree)->nd_body);
19300 prelude = block_append(p, p->eval_tree_begin, body);
19301 RNODE_SCOPE(tree)->nd_body = prelude;
19302 p->ast->body.frozen_string_literal = p->frozen_string_literal;
19303 p->ast->body.coverage_enabled = cov;
19304 if (p->keep_tokens) {
19305 p->ast->node_buffer->tokens = tokens;
19309 p->ast->body.root = tree;
19310 p->ast->body.line_count = p->line_count;
19318 if (
NIL_P(fname)) {
19319 p->ruby_sourcefile_string =
Qnil;
19320 p->ruby_sourcefile =
"(none)";
19323 p->ruby_sourcefile_string = rb_str_to_interned_str(fname);
19326 p->ruby_sourceline = line - 1;
19330 p->ast = ast = rb_ast_new();
19331 compile_callback(yycompile0, (
VALUE)p);
19332 ast->body.source_hash = rb_source_hash_finalize(&p->source_hash);
19333 ast->body.has_source_hash = 1;
19347 rb_encoding *enc = rb_parser_str_get_encoding(s);
19348 if (!rb_enc_asciicompat(enc)) {
19349 rb_raise(rb_eArgError,
"invalid source encoding");
19358 if (!line)
return 0;
19360 rb_source_hash_update(&p->source_hash, (
const uint8_t *)line->ptr, (
size_t)line->len);
19361 string_buffer_append(p, line);
19362 must_be_ascii_compatible(p, line);
19368rb_parser_compile(
rb_parser_t *p, rb_parser_lex_gets_func *gets,
VALUE fname, rb_parser_input_data input,
int line)
19370 p->lex.gets = gets;
19371 p->lex.input = input;
19372 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
19374 return yycompile(p, fname, line);
19378#define STR_FUNC_ESCAPE 0x01
19379#define STR_FUNC_EXPAND 0x02
19380#define STR_FUNC_REGEXP 0x04
19381#define STR_FUNC_QWORDS 0x08
19382#define STR_FUNC_SYMBOL 0x10
19383#define STR_FUNC_INDENT 0x20
19384#define STR_FUNC_LABEL 0x40
19385#define STR_FUNC_LIST 0x4000
19386#define STR_FUNC_TERM 0x8000
19389 str_label = STR_FUNC_LABEL,
19391 str_dquote = (STR_FUNC_EXPAND),
19392 str_xquote = (STR_FUNC_EXPAND),
19393 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
19394 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
19395 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
19396 str_ssym = (STR_FUNC_SYMBOL),
19397 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
19405 pstr = rb_parser_encoding_string_new(p, ptr,
len, enc);
19407 if (!(func & STR_FUNC_REGEXP)) {
19408 if (rb_parser_is_ascii_string(p, pstr)) {
19410 else if (rb_is_usascii_enc((
void *)enc0) && enc != rb_utf8_encoding()) {
19412 enc = rb_ascii8bit_encoding();
19413 PARSER_ENCODING_CODERANGE_SET(pstr, enc, RB_PARSER_ENC_CODERANGE_VALID);
19423 return strterm->heredoc;
19427new_strterm(
struct parser_params *p,
int func,
int term,
int paren)
19430 strterm->u.literal.func = func;
19431 strterm->u.literal.term = term;
19432 strterm->u.literal.paren = paren;
19440 strterm->heredoc =
true;
19444#define peek(p,c) peek_n(p, (c), 0)
19445#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
19446#define peekc(p) peekc_n(p, 0)
19447#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
19449#define add_delayed_token(p, tok, end) parser_add_delayed_token(p, tok, end, __LINE__)
19451parser_add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end,
int line)
19453 debug_token_line(p,
"add_delayed_token", line);
19456 if (has_delayed_token(p)) {
19457 bool next_line = parser_string_char_at_end(p, p->delayed.token, 0) ==
'\n';
19458 int end_line = (next_line ? 1 : 0) + p->delayed.end_line;
19459 int end_col = (next_line ? 0 : p->delayed.end_col);
19460 if (end_line != p->ruby_sourceline || end_col != tok - p->lex.pbeg) {
19461 dispatch_delayed_token(p, tSTRING_CONTENT);
19464 if (!has_delayed_token(p)) {
19465 p->delayed.token = rb_parser_string_new(p, 0, 0);
19466 rb_parser_enc_associate(p, p->delayed.token, p->enc);
19467 p->delayed.beg_line = p->ruby_sourceline;
19468 p->delayed.beg_col =
rb_long2int(tok - p->lex.pbeg);
19470 parser_str_cat(p->delayed.token, tok, end - tok);
19471 p->delayed.end_line = p->ruby_sourceline;
19472 p->delayed.end_col =
rb_long2int(end - p->lex.pbeg);
19480 p->lex.pbeg = p->lex.pcur = PARSER_STRING_PTR(str);
19481 p->lex.pend = p->lex.pcur + PARSER_STRING_LEN(str);
19482 p->lex.lastline = str;
19489 p->lex.nextline = 0;
19494 if (!lex_eol_ptr_p(p, p->lex.pbeg) && *(p->lex.pend-1) !=
'\n') {
19498 if (!p->lex.input || !(str = lex_getline(p))) {
19505 if (p->debug_lines) {
19506 if (set_encoding) rb_parser_enc_associate(p, str, p->enc);
19508 rb_parser_ary_push_script_line(p, p->debug_lines, copy);
19511 p->cr_seen = FALSE;
19513 else if (str == AFTER_HEREDOC_WITHOUT_TERMINATOR) {
19517 add_delayed_token(p, p->lex.ptok, p->lex.pend);
19518 if (p->heredoc_end > 0) {
19519 p->ruby_sourceline = p->heredoc_end;
19520 p->heredoc_end = 0;
19522 p->ruby_sourceline++;
19523 set_lastline(p, str);
19531 if (peek(p,
'\n')) {
19543 if (UNLIKELY(lex_eol_p(p) || p->eofp || p->lex.nextline > AFTER_HEREDOC_WITHOUT_TERMINATOR)) {
19544 if (nextline(p, set_encoding))
return -1;
19546 c = (
unsigned char)*p->lex.pcur++;
19547 if (UNLIKELY(c ==
'\r')) {
19548 c = parser_cr(p, c);
19553#define nextc(p) nextc0(p, TRUE)
19558 if (c == -1)
return;
19561 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
19566#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
19568#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
19569#define tok(p) (p)->tokenbuf
19570#define toklen(p) (p)->tokidx
19575 const char *ptr = p->lex.pcur;
19576 while (!lex_eol_ptr_p(p, ptr)) {
19577 int c = (
unsigned char)*ptr++;
19578 int eol = (c ==
'\n' || c ==
'#');
19590 if (!p->tokenbuf) {
19592 p->tokenbuf =
ALLOC_N(
char, 60);
19594 if (p->toksiz > 4096) {
19598 return p->tokenbuf;
19606 if (p->tokidx >= p->toksiz) {
19607 do {p->toksiz *= 2;}
while (p->toksiz <= p->tokidx);
19608 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19610 return &p->tokenbuf[p->tokidx-n];
19616 p->tokenbuf[p->tokidx++] = (char)c;
19617 if (p->tokidx >= p->toksiz) {
19619 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19628 c = (int)ruby_scan_hex(p->lex.pcur, 2, numlen);
19631 yyerror0(
"invalid hex escape");
19632 dispatch_scan_event(p, tSTRING_CONTENT);
19635 p->lex.pcur += *numlen;
19639#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
19642escaped_control_code(
int c)
19668#define WARN_SPACE_CHAR(c, prefix) \
19669 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c))
19673 int regexp_literal,
const char *begin)
19675 const int wide = !begin;
19677 int codepoint = (int)ruby_scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
19679 p->lex.pcur += numlen;
19680 if (p->lex.strterm == NULL ||
19681 strterm_is_heredoc(p->lex.strterm) ||
19682 (p->lex.strterm->u.literal.func != str_regexp)) {
19683 if (!begin) begin = p->lex.pcur;
19684 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
19685 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19686 yyerror0(
"invalid Unicode escape");
19687 dispatch_scan_event(p, tSTRING_CONTENT);
19688 return wide && numlen > 0;
19690 if (codepoint > 0x10ffff) {
19691 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19692 yyerror0(
"invalid Unicode codepoint (too large)");
19693 dispatch_scan_event(p, tSTRING_CONTENT);
19696 if ((codepoint & 0xfffff800) == 0xd800) {
19697 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19698 yyerror0(
"invalid Unicode codepoint");
19699 dispatch_scan_event(p, tSTRING_CONTENT);
19703 if (regexp_literal) {
19704 tokcopy(p, (
int)numlen);
19706 else if (codepoint >= 0x80) {
19708 if (*encp && utf8 != *encp) {
19709 YYLTYPE loc = RUBY_INIT_YYLLOC();
19710 compile_error(p,
"UTF-8 mixed within %s source", rb_enc_name(*encp));
19711 parser_show_error_line(p, &loc);
19715 tokaddmbc(p, codepoint, *encp);
19718 tokadd(p, codepoint);
19728 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19730 p->lex.pcur +=
len - 1;
19738 int term,
int symbol_literal,
int regexp_literal)
19745 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
19747 const int open_brace =
'{', close_brace =
'}';
19749 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
19751 if (peek(p, open_brace)) {
19752 if (regexp_literal && p->lex.strterm->u.literal.func == str_regexp) {
19759 tokadd(p, open_brace);
19760 while (!lex_eol_ptr_p(p, ++p->lex.pcur)) {
19762 if (c == close_brace) {
19767 else if (c == term) {
19770 if (c ==
'\\' && !lex_eol_n_p(p, 1)) {
19772 c = *++p->lex.pcur;
19774 tokadd_mbchar(p, c);
19778 const char *second = NULL;
19779 int c, last = nextc(p);
19780 if (lex_eol_p(p))
goto unterminated;
19781 while (
ISSPACE(c = peekc(p)) && !lex_eol_ptr_p(p, ++p->lex.pcur));
19782 while (c != close_brace) {
19783 if (c == term)
goto unterminated;
19784 if (second == multiple_codepoints)
19785 second = p->lex.pcur;
19786 if (regexp_literal) tokadd(p, last);
19787 if (!tokadd_codepoint(p, encp, regexp_literal, NULL)) {
19790 while (
ISSPACE(c = peekc(p))) {
19791 if (lex_eol_ptr_p(p, ++p->lex.pcur))
goto unterminated;
19794 if (term == -1 && !second)
19795 second = multiple_codepoints;
19798 if (c != close_brace) {
19800 flush_string_content(p, rb_utf8_encoding(), 0);
19801 yyerror0(
"unterminated Unicode escape");
19802 dispatch_scan_event(p, tSTRING_CONTENT);
19805 if (second && second != multiple_codepoints) {
19806 const char *pcur = p->lex.pcur;
19807 p->lex.pcur = second;
19808 dispatch_scan_event(p, tSTRING_CONTENT);
19810 p->lex.pcur = pcur;
19811 yyerror0(multiple_codepoints);
19815 if (regexp_literal) tokadd(p, close_brace);
19820 if (!tokadd_codepoint(p, encp, regexp_literal, p->lex.pcur -
rb_strlen_lit(
"\\u"))) {
19827#define ESCAPE_CONTROL 1
19828#define ESCAPE_META 2
19831read_escape(
struct parser_params *p,
int flags,
const char *begin)
19836 switch (c = nextc(p)) {
19861 case '0':
case '1':
case '2':
case '3':
19862 case '4':
case '5':
case '6':
case '7':
19864 c = (int)ruby_scan_oct(p->lex.pcur, 3, &numlen);
19865 p->lex.pcur += numlen;
19869 c = tok_hex(p, &numlen);
19870 if (numlen == 0)
return 0;
19880 if (flags & ESCAPE_META)
goto eof;
19881 if ((c = nextc(p)) !=
'-') {
19884 if ((c = nextc(p)) ==
'\\') {
19885 switch (peekc(p)) {
19886 case 'u':
case 'U':
19890 return read_escape(p, flags|ESCAPE_META, begin) | 0x80;
19892 else if (c == -1)
goto eof;
19898 int c2 = escaped_control_code(c);
19900 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
19901 WARN_SPACE_CHAR(c2,
"\\M-");
19904 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
19907 else if (
ISCNTRL(c))
goto eof;
19908 return ((c & 0xff) | 0x80);
19912 if ((c = nextc(p)) !=
'-') {
19916 if (flags & ESCAPE_CONTROL)
goto eof;
19917 if ((c = nextc(p))==
'\\') {
19918 switch (peekc(p)) {
19919 case 'u':
case 'U':
19923 c = read_escape(p, flags|ESCAPE_CONTROL, begin);
19927 else if (c == -1)
goto eof;
19933 int c2 = escaped_control_code(c);
19936 if (flags & ESCAPE_META) {
19937 WARN_SPACE_CHAR(c2,
"\\M-");
19940 WARN_SPACE_CHAR(c2,
"");
19944 if (flags & ESCAPE_META) {
19945 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
19948 WARN_SPACE_CHAR(c2,
"\\C-");
19952 else if (
ISCNTRL(c))
goto eof;
19958 flush_string_content(p, p->enc, p->lex.pcur - begin);
19959 yyerror0(
"Invalid escape character syntax");
19960 dispatch_scan_event(p, tSTRING_CONTENT);
19975 int len = rb_enc_codelen(c, enc);
19976 rb_enc_mbcput(c, tokspace(p,
len), enc);
19984 const char *begin = p->lex.pcur;
19986 switch (c = nextc(p)) {
19990 case '0':
case '1':
case '2':
case '3':
19991 case '4':
case '5':
case '6':
case '7':
19993 ruby_scan_oct(--p->lex.pcur, 3, &numlen);
19994 if (numlen == 0)
goto eof;
19995 p->lex.pcur += numlen;
19996 tokcopy(p, (
int)numlen + 1);
20002 tok_hex(p, &numlen);
20003 if (numlen == 0)
return -1;
20004 tokcopy(p, (
int)numlen + 2);
20010 flush_string_content(p, p->enc, p->lex.pcur - begin);
20011 yyerror0(
"Invalid escape character syntax");
20023char_to_option(
int c)
20029 val = RE_ONIG_OPTION_IGNORECASE;
20032 val = RE_ONIG_OPTION_EXTEND;
20035 val = RE_ONIG_OPTION_MULTILINE;
20044#define ARG_ENCODING_FIXED 16
20045#define ARG_ENCODING_NONE 32
20046#define ENC_ASCII8BIT 1
20047#define ENC_EUC_JP 2
20048#define ENC_Windows_31J 3
20052char_to_option_kcode(
int c,
int *option,
int *kcode)
20058 *kcode = ENC_ASCII8BIT;
20059 return (*option = ARG_ENCODING_NONE);
20061 *kcode = ENC_EUC_JP;
20064 *kcode = ENC_Windows_31J;
20071 return (*option = char_to_option(c));
20073 *option = ARG_ENCODING_FIXED;
20086 while (c = nextc(p),
ISALPHA(c)) {
20088 options |= RE_OPTION_ONCE;
20090 else if (char_to_option_kcode(c, &opt, &kc)) {
20092 if (kc != ENC_ASCII8BIT) kcode = c;
20106 YYLTYPE loc = RUBY_INIT_YYLLOC();
20108 compile_error(p,
"unknown regexp option%s - %*s",
20109 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
20110 parser_show_error_line(p, &loc);
20112 return options | RE_OPTION_ENCODING(kcode);
20118 int len = parser_precise_mbclen(p, p->lex.pcur-1);
20119 if (
len < 0)
return -1;
20121 p->lex.pcur += --
len;
20122 if (
len > 0) tokcopy(p,
len);
20127simple_re_meta(
int c)
20130 case '$':
case '*':
case '+':
case '.':
20131 case '?':
case '^':
case '|':
20132 case ')':
case ']':
case '}':
case '>':
20140parser_update_heredoc_indent(
struct parser_params *p,
int c)
20142 if (p->heredoc_line_indent == -1) {
20143 if (c ==
'\n') p->heredoc_line_indent = 0;
20147 p->heredoc_line_indent++;
20150 else if (c ==
'\t') {
20151 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
20152 p->heredoc_line_indent = w * TAB_WIDTH;
20155 else if (c !=
'\n') {
20156 if (p->heredoc_indent > p->heredoc_line_indent) {
20157 p->heredoc_indent = p->heredoc_line_indent;
20159 p->heredoc_line_indent = -1;
20163 p->heredoc_line_indent = 0;
20172 YYLTYPE loc = RUBY_INIT_YYLLOC();
20173 const char *n1 = rb_enc_name(enc1), *n2 = rb_enc_name(enc2);
20174 compile_error(p,
"%s mixed within %s source", n1, n2);
20175 parser_show_error_line(p, &loc);
20181 const char *pos = p->lex.pcur;
20183 parser_mixed_error(p, enc1, enc2);
20188nibble_char_upper(
unsigned int c)
20191 return c + (c < 10 ?
'0' :
'A' - 10);
20196 int func,
int term,
int paren,
long *nest,
20200 bool erred =
false;
20202 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
20203 int top_of_line = FALSE;
20206#define mixed_error(enc1, enc2) \
20207 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
20208#define mixed_escape(beg, enc1, enc2) \
20209 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
20211 while ((c = nextc(p)) != -1) {
20212 if (p->heredoc_indent > 0) {
20213 parser_update_heredoc_indent(p, c);
20216 if (top_of_line && heredoc_end == p->ruby_sourceline) {
20222 if (paren && c == paren) {
20225 else if (c == term) {
20226 if (!nest || !*nest) {
20232 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && !lex_eol_p(p)) {
20233 unsigned char c2 = *p->lex.pcur;
20234 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
20239 else if (c ==
'\\') {
20243 if (func & STR_FUNC_QWORDS)
break;
20244 if (func & STR_FUNC_EXPAND) {
20245 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
20256 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
20260 if ((func & STR_FUNC_EXPAND) == 0) {
20264 tokadd_utf8(p, enc, term,
20265 func & STR_FUNC_SYMBOL,
20266 func & STR_FUNC_REGEXP);
20270 if (c == -1)
return -1;
20272 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
20275 if (func & STR_FUNC_REGEXP) {
20281 c = read_escape(p, 0, p->lex.pcur - 1);
20286 *t++ = nibble_char_upper(c >> 4);
20287 *t++ = nibble_char_upper(c);
20292 if (c == term && !simple_re_meta(c)) {
20297 if ((c = tokadd_escape(p)) < 0)
20299 if (*enc && *enc != *encp) {
20300 mixed_escape(p->lex.ptok+2, *enc, *encp);
20304 else if (func & STR_FUNC_EXPAND) {
20306 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
20307 c = read_escape(p, 0, p->lex.pcur - 1);
20309 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
20312 else if (c != term && !(paren && c == paren)) {
20319 else if (!parser_isascii(p)) {
20324 else if (*enc != *encp) {
20325 mixed_error(*enc, *encp);
20328 if (tokadd_mbchar(p, c) == -1)
return -1;
20331 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
20339 else if (*enc != *encp) {
20340 mixed_error(*enc, *encp);
20346 top_of_line = (c ==
'\n');
20350 if (*enc) *encp = *enc;
20354#define NEW_STRTERM(func, term, paren) new_strterm(p, func, term, paren)
20359 p->lex.pcur -= back;
20360 if (has_delayed_token(p)) {
20361 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
20363 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20364 p->delayed.end_line = p->ruby_sourceline;
20365 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
20367 dispatch_delayed_token(p, tSTRING_CONTENT);
20368 p->lex.ptok = p->lex.pcur;
20370 dispatch_scan_event(p, tSTRING_CONTENT);
20371 p->lex.pcur += back;
20377#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
20378#define SPECIAL_PUNCT(idx) ( \
20379 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
20380 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
20381 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
20382 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
20383 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
20385const uint_least32_t ruby_global_name_punct_bits[] = {
20391#undef SPECIAL_PUNCT
20394static enum yytokentype
20395parser_peek_variable_name(struct parser_params *p)
20398 const char *ptr = p->lex.pcur;
20400 if (lex_eol_ptr_n_p(p, ptr, 1)) return 0;
20404 if ((c = *ptr) == '-') {
20405 if (lex_eol_ptr_p(p, ++ptr)) return 0;
20408 else if (is_global_name_punct(c) || ISDIGIT(c)) {
20409 return tSTRING_DVAR;
20413 if ((c = *ptr) == '@') {
20414 if (lex_eol_ptr_p(p, ++ptr)) return 0;
20420 p->command_start = TRUE;
20421 yylval.state = p->lex.state;
20422 return tSTRING_DBEG;
20426 if (!ISASCII(c) || c == '_' || ISALPHA(c))
20427 return tSTRING_DVAR;
20431#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
20432#define IS_END() IS_lex_state(EXPR_END_ANY)
20433#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
20434#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
20435#define IS_LABEL_POSSIBLE() (\
20436 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
20438#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
20439#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
20441static inline enum yytokentype
20442parser_string_term(struct parser_params *p, int func)
20444 xfree(p->lex.strterm);
20445 p->lex.strterm = 0;
20446 if (func & STR_FUNC_REGEXP) {
20447 set_yylval_num(regx_options(p));
20448 dispatch_scan_event(p, tREGEXP_END);
20449 SET_LEX_STATE(EXPR_END);
20450 return tREGEXP_END;
20452 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
20454 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
20457 SET_LEX_STATE(EXPR_END);
20458 return tSTRING_END;
20461static enum yytokentype
20462parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
20464 int func = quote->func;
20465 int term = quote->term;
20466 int paren = quote->paren;
20468 rb_encoding *enc = p->enc;
20469 rb_encoding *base_enc = 0;
20470 rb_parser_string_t *lit;
20472 if (func & STR_FUNC_TERM) {
20473 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
20474 SET_LEX_STATE(EXPR_END);
20475 xfree(p->lex.strterm);
20476 p->lex.strterm = 0;
20477 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
20480 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
20481 while (c != '\n' && ISSPACE(c = nextc(p)));
20484 if (func & STR_FUNC_LIST) {
20485 quote->func &= ~STR_FUNC_LIST;
20488 if (c == term && !quote->nest) {
20489 if (func & STR_FUNC_QWORDS) {
20490 quote->func |= STR_FUNC_TERM;
20491 pushback(p, c); /* dispatch the term at tSTRING_END */
20492 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20495 return parser_string_term(p, func);
20498 if (!ISSPACE(c)) pushback(p, c);
20499 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20503 if ((func & STR_FUNC_EXPAND) && c == '#') {
20504 enum yytokentype t = parser_peek_variable_name(p);
20510 if (tokadd_string(p, func, term, paren, "e->nest,
20511 &enc, &base_enc) == -1) {
20514# define unterminated_literal(mesg) yyerror0(mesg)
20516# define unterminated_literal(mesg) compile_error(p, mesg)
20518 literal_flush(p, p->lex.pcur);
20519 if (func & STR_FUNC_QWORDS) {
20520 /* no content to add, bailing out here */
20521 unterminated_literal("unterminated list meets end of file");
20522 xfree(p->lex.strterm);
20523 p->lex.strterm = 0;
20524 return tSTRING_END;
20526 if (func & STR_FUNC_REGEXP) {
20527 unterminated_literal("unterminated regexp meets end of file");
20530 unterminated_literal("unterminated string meets end of file");
20532 quote->func |= STR_FUNC_TERM;
20537 lit = STR_NEW3(tok(p), toklen(p), enc, func);
20538 set_yylval_str(lit);
20539 flush_string_content(p, enc, 0);
20541 return tSTRING_CONTENT;
20544static enum yytokentype
20545heredoc_identifier(struct parser_params *p)
20548 * term_len is length of `<<"END"` except `END`,
20549 * in this case term_len is 4 (<, <, " and ").
20551 long len, offset = p->lex.pcur - p->lex.pbeg;
20552 int c = nextc(p), term, func = 0, quote = 0;
20553 enum yytokentype token = tSTRING_BEG;
20558 func = STR_FUNC_INDENT;
20561 else if (c == '~') {
20563 func = STR_FUNC_INDENT;
20569 func |= str_squote; goto quoted;
20571 func |= str_dquote;
goto quoted;
20573 token = tXSTRING_BEG;
20574 func |= str_xquote;
goto quoted;
20581 while ((c = nextc(p)) != term) {
20582 if (c == -1 || c ==
'\r' || c ==
'\n') {
20583 yyerror0(
"unterminated here document identifier");
20590 if (!parser_is_identchar(p)) {
20592 if (func & STR_FUNC_INDENT) {
20593 pushback(p, indent > 0 ?
'~' :
'-');
20597 func |= str_dquote;
20599 int n = parser_precise_mbclen(p, p->lex.pcur-1);
20600 if (n < 0)
return 0;
20601 p->lex.pcur += --n;
20602 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
20607 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
20608 if ((
unsigned long)
len >= HERETERM_LENGTH_MAX)
20609 yyerror0(
"too long here document identifier");
20610 dispatch_scan_event(p, tHEREDOC_BEG);
20613 p->lex.strterm = new_heredoc(p);
20615 here->offset = offset;
20616 here->sourceline = p->ruby_sourceline;
20617 here->length = (unsigned)
len;
20618 here->quote = quote;
20620 here->lastline = p->lex.lastline;
20623 p->heredoc_indent = indent;
20624 p->heredoc_line_indent = 0;
20634 p->lex.strterm = 0;
20635 line = here->lastline;
20636 p->lex.lastline = line;
20637 p->lex.pbeg = PARSER_STRING_PTR(line);
20638 p->lex.pend = p->lex.pbeg + PARSER_STRING_LEN(line);
20639 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
20640 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
20641 p->heredoc_end = p->ruby_sourceline;
20642 p->ruby_sourceline = (int)here->sourceline;
20643 if (p->eofp) p->lex.nextline = AFTER_HEREDOC_WITHOUT_TERMINATOR;
20649dedent_string_column(
const char *str,
long len,
int width)
20653 for (i = 0; i <
len && col < width; i++) {
20654 if (str[i] ==
' ') {
20657 else if (str[i] ==
'\t') {
20658 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
20659 if (n > width)
break;
20677 len = PARSER_STRING_LEN(
string);
20678 str = PARSER_STRING_PTR(
string);
20680 i = dedent_string_column(str,
len, width);
20683 rb_parser_str_modify(
string);
20684 str = PARSER_STRING_PTR(
string);
20685 if (PARSER_STRING_LEN(
string) !=
len)
20686 rb_fatal(
"literal string changed: %s", PARSER_STRING_PTR(
string));
20688 rb_parser_str_set_len(p,
string,
len - i);
20695 NODE *node, *str_node, *prev_node;
20696 int indent = p->heredoc_indent;
20699 if (indent <= 0)
return root;
20700 if (!root)
return root;
20702 prev_node = node = str_node = root;
20703 if (nd_type_p(root, NODE_LIST)) str_node = RNODE_LIST(root)->nd_head;
20707 if (nd_fl_newline(str_node)) {
20708 dedent_string(p, lit, indent);
20713 else if (!literal_concat0(p, prev_lit, lit)) {
20717 NODE *end = RNODE_LIST(node)->as.nd_end;
20718 node = RNODE_LIST(prev_node)->nd_next = RNODE_LIST(node)->nd_next;
20720 if (nd_type_p(prev_node, NODE_DSTR))
20721 nd_set_type(prev_node, NODE_STR);
20724 RNODE_LIST(node)->as.nd_end = end;
20729 while ((nd_type_p(node, NODE_LIST) || nd_type_p(node, NODE_DSTR)) && (node = RNODE_LIST(prev_node = node)->nd_next) != 0) {
20731 if (!nd_type_p(node, NODE_LIST))
break;
20732 if ((str_node = RNODE_LIST(node)->nd_head) != 0) {
20733 enum node_type
type = nd_type(str_node);
20734 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
20744whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
20746 const char *beg = p->lex.pbeg;
20747 const char *ptr = p->lex.pend;
20749 if (ptr - beg <
len)
return FALSE;
20750 if (ptr > beg && ptr[-1] ==
'\n') {
20751 if (--ptr > beg && ptr[-1] ==
'\r') --ptr;
20752 if (ptr - beg <
len)
return FALSE;
20754 if (strncmp(eos, ptr -=
len,
len))
return FALSE;
20756 while (beg < ptr &&
ISSPACE(*beg)) beg++;
20764 if (strncmp(p->lex.pcur, word,
len))
return 0;
20765 if (lex_eol_n_p(p,
len))
return 1;
20766 int c = (
unsigned char)p->lex.pcur[
len];
20769 case '\0':
case '\004':
case '\032':
return 1;
20774#define NUM_SUFFIX_R (1<<0)
20775#define NUM_SUFFIX_I (1<<1)
20776#define NUM_SUFFIX_ALL 3
20782 const char *lastp = p->lex.pcur;
20784 while ((c = nextc(p)) != -1) {
20785 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
20786 result |= (mask & NUM_SUFFIX_I);
20787 mask &= ~NUM_SUFFIX_I;
20789 mask &= ~NUM_SUFFIX_R;
20792 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
20793 result |= (mask & NUM_SUFFIX_R);
20794 mask &= ~NUM_SUFFIX_R;
20798 p->lex.pcur = lastp;
20807static enum yytokentype
20808set_number_literal(
struct parser_params *p,
enum yytokentype
type,
int suffix,
int base,
int seen_point)
20810 enum rb_numeric_type numeric_type = integer_literal;
20812 if (
type == tFLOAT) {
20813 numeric_type = float_literal;
20816 if (suffix & NUM_SUFFIX_R) {
20818 numeric_type = rational_literal;
20820 if (suffix & NUM_SUFFIX_I) {
20826 set_yylval_node(NEW_INTEGER(
strdup(tok(p)), base, &_cur_loc));
20829 set_yylval_node(NEW_FLOAT(
strdup(tok(p)), &_cur_loc));
20832 set_yylval_node(NEW_RATIONAL(
strdup(tok(p)), base, seen_point, &_cur_loc));
20835 set_yylval_node(NEW_IMAGINARY(
strdup(tok(p)), base, seen_point, numeric_type, &_cur_loc));
20836 (void)numeric_type;
20839 rb_bug(
"unexpected token: %d",
type);
20841 SET_LEX_STATE(EXPR_END);
20845#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
20847parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
20849 if (has_delayed_token(p))
20850 dispatch_delayed_token(p, tSTRING_CONTENT);
20853 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
20854 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
20856 if (p->keep_tokens) {
20857 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pend - p->lex.ptok, p->enc);
20858 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
20859 parser_append_tokens(p, str, tHEREDOC_END, line);
20863 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
20868static enum yytokentype
20871 int c, func, indent = 0;
20872 const char *eos, *ptr, *ptr_end;
20882 eos = PARSER_STRING_PTR(here->lastline) + here->offset;
20883 len = here->length;
20884 indent = (func = here->func) & STR_FUNC_INDENT;
20886 if ((c = nextc(p)) == -1) {
20889 if (!has_delayed_token(p)) {
20890 dispatch_scan_event(p, tSTRING_CONTENT);
20892 else if (p->delayed.end_line + 1 == p->ruby_sourceline) {
20893 if ((
len = p->lex.pcur - p->lex.ptok) > 0) {
20894 if (!(func & STR_FUNC_REGEXP)) {
20898 rb_is_usascii_enc(p->enc) &&
20899 enc != rb_utf8_encoding()) {
20900 enc = rb_ascii8bit_encoding();
20903 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20905 dispatch_delayed_token(p, tSTRING_CONTENT);
20908 dispatch_delayed_token(p, tSTRING_CONTENT);
20909 dispatch_scan_event(p, tSTRING_CONTENT);
20913 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20914 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
20917 SET_LEX_STATE(EXPR_END);
20918 return tSTRING_END;
20924 else if (p->heredoc_line_indent == -1) {
20929 p->heredoc_line_indent = 0;
20931 else if (whole_match_p(p, eos,
len, indent)) {
20932 dispatch_heredoc_end(p);
20934 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20936 SET_LEX_STATE(EXPR_END);
20937 return tSTRING_END;
20940 if (!(func & STR_FUNC_EXPAND)) {
20942 ptr = PARSER_STRING_PTR(p->lex.lastline);
20943 ptr_end = p->lex.pend;
20944 if (ptr_end > ptr) {
20945 switch (ptr_end[-1]) {
20947 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
20956 if (p->heredoc_indent > 0) {
20958 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
20960 p->heredoc_line_indent = 0;
20964 parser_str_cat(str, ptr, ptr_end - ptr);
20966 str = rb_parser_encoding_string_new(p, ptr, ptr_end - ptr, enc);
20967 if (!lex_eol_ptr_p(p, ptr_end)) parser_str_cat_cstr(str,
"\n");
20969 if (p->heredoc_indent > 0) {
20972 if (nextc(p) == -1) {
20974 rb_parser_string_free(p, str);
20979 }
while (!whole_match_p(p, eos,
len, indent));
20985 enum yytokentype t = parser_peek_variable_name(p);
20986 if (p->heredoc_line_indent != -1) {
20987 if (p->heredoc_indent > p->heredoc_line_indent) {
20988 p->heredoc_indent = p->heredoc_line_indent;
20990 p->heredoc_line_indent = -1;
20999 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
21000 if (p->eofp)
goto error;
21004 if (c ==
'\\') p->heredoc_line_indent = -1;
21006 str = STR_NEW3(tok(p), toklen(p), enc, func);
21008 set_yylval_str(str);
21010 if (bol) nd_set_fl_newline(yylval.node);
21012 flush_string_content(p, enc, 0);
21013 return tSTRING_CONTENT;
21015 tokadd(p, nextc(p));
21016 if (p->heredoc_indent > 0) {
21021 if ((c = nextc(p)) == -1)
goto error;
21022 }
while (!whole_match_p(p, eos,
len, indent));
21023 str = STR_NEW3(tok(p), toklen(p), enc, func);
21025 dispatch_heredoc_end(p);
21026 heredoc_restore(p, &p->lex.strterm->u.heredoc);
21028 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
21031 s_value = p->s_value;
21033 set_yylval_str(str);
21035 set_parser_s_value(s_value);
21039 if (bol) nd_set_fl_newline(yylval.node);
21041 return tSTRING_CONTENT;
21050 rb_warning1(
"ambiguous first argument; put parentheses or a space even after '%c' operator", WARN_I(c));
21062 switch (id_type(
id)) {
21066# define ERR(mesg) (yyerror0(mesg), Qtrue)
21068# define ERR(mesg) WARN_S(mesg)
21071 return ERR(
"formal argument cannot be a constant");
21073 return ERR(
"formal argument cannot be an instance variable");
21075 return ERR(
"formal argument cannot be a global variable");
21077 return ERR(
"formal argument cannot be a class variable");
21079 return ERR(
"formal argument must be local variable");
21082 shadowing_lvar(p,
id);
21090 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
21099 if (
len > 5 && name[nlen =
len - 5] ==
'-') {
21100 if (rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
21103 if (
len > 4 && name[nlen =
len - 4] ==
'-') {
21104 if (rb_memcicmp(name + nlen + 1,
"dos", 3) == 0)
21106 if (rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
21107 !(
len == 8 && rb_memcicmp(name,
"utf8-mac",
len) == 0))
21115parser_set_encode(
struct parser_params *p,
const char *name)
21121 const char *wrong = 0;
21123 case 'e':
case 'E': wrong =
"external";
break;
21124 case 'i':
case 'I': wrong =
"internal";
break;
21125 case 'f':
case 'F': wrong =
"filesystem";
break;
21126 case 'l':
case 'L': wrong =
"locale";
break;
21128 if (wrong &&
STRCASECMP(name, wrong) == 0)
goto unknown;
21129 idx = rb_enc_find_index(name);
21132 excargs[1] = rb_sprintf(
"unknown encoding name: %s", name);
21134 excargs[0] = rb_eArgError;
21135 excargs[2] = rb_make_backtrace();
21136 rb_ary_unshift(excargs[2], rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
21137 VALUE exc = rb_make_exception(3, excargs);
21138 ruby_show_error_line(p, exc, &(
YYLTYPE)RUBY_INIT_YYLLOC(), p->ruby_sourceline, p->lex.lastline);
21140 rb_ast_free(p->ast);
21145 enc = rb_enc_from_index(idx);
21146 if (!rb_enc_asciicompat(enc)) {
21147 excargs[1] = rb_sprintf(
"%s is not ASCII compatible", rb_enc_name(enc));
21152 if (p->debug_lines) {
21154 for (i = 0; i < p->debug_lines->len; i++) {
21155 rb_parser_enc_associate(p, p->debug_lines->data[i], enc);
21164 if (p->token_seen)
return false;
21165 return (p->line_count == (p->has_shebang ? 2 : 1));
21168typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
21169typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
21171static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
21174magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
21176 if (!comment_at_top(p)) {
21179 parser_set_encode(p, val);
21183parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
21186 case 't':
case 'T':
21191 case 'f':
case 'F':
21197 return parser_invalid_pragma_value(p, name, val);
21201parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
21203 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
21208parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
21210 int b = parser_get_bool(p, name, val);
21211 if (b >= 0) p->token_info_enabled = b;
21215parser_set_frozen_string_literal(
struct parser_params *p,
const char *name,
const char *val)
21219 if (p->token_seen) {
21220 rb_warning1(
"'%s' is ignored after any tokens", WARN_S(name));
21224 b = parser_get_bool(p, name, val);
21227 p->frozen_string_literal = b;
21231parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
21233 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
21234 if (*s ==
' ' || *s ==
'\t')
continue;
21235 if (*s ==
'#')
break;
21236 rb_warning1(
"'%s' is ignored unless in comment-only line", WARN_S(name));
21241 case 'n':
case 'N':
21243 p->ctxt.shareable_constant_value = rb_parser_shareable_none;
21247 case 'l':
case 'L':
21249 p->ctxt.shareable_constant_value = rb_parser_shareable_literal;
21253 case 'e':
case 'E':
21254 if (
STRCASECMP(val,
"experimental_copy") == 0) {
21255 p->ctxt.shareable_constant_value = rb_parser_shareable_copy;
21258 if (
STRCASECMP(val,
"experimental_everything") == 0) {
21259 p->ctxt.shareable_constant_value = rb_parser_shareable_everything;
21264 parser_invalid_pragma_value(p, name, val);
21267# if WARN_PAST_SCOPE
21269parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
21271 int b = parser_get_bool(p, name, val);
21272 if (b >= 0) p->past_scope_enabled = b;
21278 rb_magic_comment_setter_t func;
21279 rb_magic_comment_length_t length;
21283 {
"coding", magic_comment_encoding, parser_encode_length},
21284 {
"encoding", magic_comment_encoding, parser_encode_length},
21285 {
"frozen_string_literal", parser_set_frozen_string_literal},
21286 {
"shareable_constant_value", parser_set_shareable_constant_value},
21287 {
"warn_indent", parser_set_token_info},
21288# if WARN_PAST_SCOPE
21289 {
"warn_past_scope", parser_set_past_scope},
21294magic_comment_marker(
const char *str,
long len)
21301 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
21302 return str + i + 1;
21307 if (i + 1 >=
len)
return 0;
21308 if (str[i+1] !=
'-') {
21311 else if (str[i-1] !=
'-') {
21315 return str + i + 2;
21330 VALUE name = 0, val = 0;
21331 const char *beg, *end, *vbeg, *vend;
21332#define str_copy(_s, _p, _n) ((_s) \
21333 ? (void)(rb_str_resize((_s), (_n)), \
21334 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
21335 : (void)((_s) = STR_NEW((_p), (_n))))
21337 if (
len <= 7)
return FALSE;
21338 if (!!(beg = magic_comment_marker(str,
len))) {
21339 if (!(end = magic_comment_marker(beg, str +
len - beg)))
21343 len = end - beg - 3;
21353 for (;
len > 0 && *str; str++, --
len) {
21355 case '\'':
case '"':
case ':':
case ';':
21360 for (beg = str;
len > 0; str++, --
len) {
21362 case '\'':
case '"':
case ':':
case ';':
21373 if (!indicator)
return FALSE;
21377 do str++;
while (--
len > 0 &&
ISSPACE(*str));
21379 const char *tok_beg = str;
21381 for (vbeg = ++str; --
len > 0 && *str !=
'"'; str++) {
21382 if (*str ==
'\\') {
21394 for (vbeg = str;
len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --
len, str++);
21397 const char *tok_end = str;
21399 while (
len > 0 && (*str ==
';' ||
ISSPACE(*str))) --
len, str++;
21403 if (
len)
return FALSE;
21407 str_copy(name, beg, n);
21408 s = RSTRING_PTR(name);
21409 for (i = 0; i < n; ++i) {
21410 if (s[i] ==
'-') s[i] =
'_';
21413 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
21416 n = (*mc->length)(p, vbeg, n);
21418 str_copy(val, vbeg, n);
21419 p->lex.ptok = tok_beg;
21420 p->lex.pcur = tok_end;
21421 (*mc->func)(p, mc->name, RSTRING_PTR(val));
21424 }
while (++mc < magic_comments + numberof(magic_comments));
21426 str_copy(val, vbeg, vend - vbeg);
21435set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
21438 const char *beg = str;
21442 if (send - str <= 6)
return;
21444 case 'C':
case 'c': str += 6;
continue;
21445 case 'O':
case 'o': str += 5;
continue;
21446 case 'D':
case 'd': str += 4;
continue;
21447 case 'I':
case 'i': str += 3;
continue;
21448 case 'N':
case 'n': str += 2;
continue;
21449 case 'G':
case 'g': str += 1;
continue;
21450 case '=':
case ':':
21464 if (++str >= send)
return;
21467 if (*str !=
'=' && *str !=
':')
return;
21472 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
21473 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
21476 parser_set_encode(p, RSTRING_PTR(s));
21477 rb_str_resize(s, 0);
21483 int c = nextc0(p, FALSE);
21487 if (peek(p,
'!')) p->has_shebang = 1;
21490 if (!lex_eol_n_p(p, 2) &&
21491 (
unsigned char)p->lex.pcur[0] == 0xbb &&
21492 (
unsigned char)p->lex.pcur[1] == 0xbf) {
21493 p->enc = rb_utf8_encoding();
21496 if (p->debug_lines) {
21497 rb_parser_string_set_encoding(p->lex.lastline, p->enc);
21500 p->lex.pbeg = p->lex.pcur;
21509 p->enc = rb_parser_str_get_encoding(p->lex.lastline);
21513#define ambiguous_operator(tok, op, syn) ( \
21514 rb_warning0("'"op"' after local variable or literal is interpreted as binary operator"), \
21515 rb_warning0("even though it seems like "syn""))
21517#define ambiguous_operator(tok, op, syn) \
21518 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
21520#define warn_balanced(tok, op, syn) ((void) \
21521 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
21522 space_seen && !ISSPACE(c) && \
21523 (ambiguous_operator(tok, op, syn), 0)), \
21524 (enum yytokentype)(tok))
21526static enum yytokentype
21529 yyerror0(
"numeric literal without digits");
21530 if (peek(p,
'_')) nextc(p);
21532 return set_number_literal(p, tINTEGER, 0, 10, 0);
21535static enum yytokentype
21538 int is_float, seen_point, seen_e, nondigit;
21541 is_float = seen_point = seen_e = nondigit = 0;
21542 SET_LEX_STATE(EXPR_END);
21544 if (c ==
'-' || c ==
'+') {
21549 int start = toklen(p);
21551 if (c ==
'x' || c ==
'X') {
21557 if (nondigit)
break;
21564 }
while ((c = nextc(p)) != -1);
21568 if (toklen(p) == start) {
21569 return no_digits(p);
21571 else if (nondigit)
goto trailing_uc;
21572 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21573 return set_number_literal(p, tINTEGER, suffix, 16, 0);
21575 if (c ==
'b' || c ==
'B') {
21578 if (c ==
'0' || c ==
'1') {
21581 if (nondigit)
break;
21585 if (c !=
'0' && c !=
'1')
break;
21588 }
while ((c = nextc(p)) != -1);
21592 if (toklen(p) == start) {
21593 return no_digits(p);
21595 else if (nondigit)
goto trailing_uc;
21596 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21597 return set_number_literal(p, tINTEGER, suffix, 2, 0);
21599 if (c ==
'd' || c ==
'D') {
21605 if (nondigit)
break;
21612 }
while ((c = nextc(p)) != -1);
21616 if (toklen(p) == start) {
21617 return no_digits(p);
21619 else if (nondigit)
goto trailing_uc;
21620 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21621 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21627 if (c ==
'o' || c ==
'O') {
21630 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
21632 return no_digits(p);
21635 if (c >=
'0' && c <=
'7') {
21640 if (nondigit)
break;
21644 if (c <
'0' || c >
'9')
break;
21645 if (c >
'7')
goto invalid_octal;
21648 }
while ((c = nextc(p)) != -1);
21649 if (toklen(p) > start) {
21652 if (nondigit)
goto trailing_uc;
21653 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21654 return set_number_literal(p, tINTEGER, suffix, 8, 0);
21661 if (c >
'7' && c <=
'9') {
21663 yyerror0(
"Invalid octal digit");
21665 else if (c ==
'.' || c ==
'e' || c ==
'E') {
21671 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21672 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21678 case '0':
case '1':
case '2':
case '3':
case '4':
21679 case '5':
case '6':
case '7':
case '8':
case '9':
21685 if (nondigit)
goto trailing_uc;
21686 if (seen_point || seen_e) {
21691 if (c0 == -1 || !
ISDIGIT(c0)) {
21697 seen_point = toklen(p);
21716 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
21722 tokadd(p, nondigit);
21726 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
21730 if (nondigit)
goto decode_num;
21744 literal_flush(p, p->lex.pcur - 1);
21745 YYLTYPE loc = RUBY_INIT_YYLLOC();
21746 compile_error(p,
"trailing '%c' in number", nondigit);
21747 parser_show_error_line(p, &loc);
21751 enum yytokentype
type = tFLOAT;
21753 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
21754 if (suffix & NUM_SUFFIX_R) {
21760 if (
errno == ERANGE) {
21761 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
21765 return set_number_literal(p,
type, suffix, 0, seen_point);
21767 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21768 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21771static enum yytokentype
21777 const char *start = p->lex.pcur;
21780 SET_LEX_STATE(EXPR_VALUE);
21785 compile_error(p,
"incomplete character syntax");
21788 if (rb_enc_isspace(c, p->enc)) {
21790 int c2 = escaped_control_code(c);
21792 WARN_SPACE_CHAR(c2,
"?");
21797 SET_LEX_STATE(EXPR_VALUE);
21802 int w = parser_precise_mbclen(p, start);
21803 if (is_identchar(p, start, p->lex.pend, p->enc) &&
21804 !(lex_eol_ptr_n_p(p, start, w) || !is_identchar(p, start + w, p->lex.pend, p->enc))) {
21806 const char *ptr = start;
21808 int n = parser_precise_mbclen(p, ptr);
21809 if (n < 0)
return -1;
21811 }
while (!lex_eol_ptr_p(p, ptr) && is_identchar(p, ptr, p->lex.pend, p->enc));
21812 rb_warn2(
"'?' just followed by '%.*s' is interpreted as" \
21813 " a conditional operator, put a space after '?'",
21814 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
21818 else if (c ==
'\\') {
21819 if (peek(p,
'u')) {
21821 enc = rb_utf8_encoding();
21822 tokadd_utf8(p, &enc, -1, 0, 0);
21824 else if (!
ISASCII(c = peekc(p)) && c != -1) {
21826 if (tokadd_mbchar(p, c) == -1)
return 0;
21834 if (tokadd_mbchar(p, c) == -1)
return 0;
21837 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
21838 set_yylval_str(lit);
21839 SET_LEX_STATE(EXPR_END);
21843static enum yytokentype
21844parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
21847 const char *ptok = p->lex.pcur;
21855 if (c == -1)
goto unterminated;
21858 if (!
ISASCII(c))
goto unknown;
21863 if (rb_enc_isalnum(term, p->enc) || !parser_isascii(p)) {
21866 c = parser_precise_mbclen(p, p->lex.pcur);
21867 if (c < 0)
return 0;
21869 yyerror0(
"unknown type of %string");
21875 compile_error(p,
"unterminated quoted string meets end of file");
21879 if (term ==
'(') term =
')';
21880 else if (term ==
'[') term =
']';
21881 else if (term ==
'{') term =
'}';
21882 else if (term ==
'<') term =
'>';
21885 p->lex.ptok = ptok-1;
21888 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
21889 return tSTRING_BEG;
21892 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
21893 return tSTRING_BEG;
21896 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21900 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21901 return tQWORDS_BEG;
21904 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21905 return tSYMBOLS_BEG;
21908 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21909 return tQSYMBOLS_BEG;
21912 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
21913 return tXSTRING_BEG;
21916 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
21917 return tREGEXP_BEG;
21920 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
21921 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
21925 yyerror0(
"unknown type of %string");
21929 if ((c = nextc(p)) ==
'=') {
21930 set_yylval_id(
'%');
21931 SET_LEX_STATE(EXPR_BEG);
21934 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
21937 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21939 return warn_balanced(
'%',
"%%",
"string literal");
21946 if (tokadd_mbchar(p, c) == -1)
return -1;
21948 }
while (parser_is_identchar(p));
21956 ID ident = TOK_INTERN();
21958 set_yylval_name(ident);
21968 unsigned long n = ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &
len, &overflow);
21969 const unsigned long nth_ref_max =
21970 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
21974 if (overflow || n > nth_ref_max) {
21976 rb_warn1(
"'%s' is too big for a number variable, always nil", WARN_S(tok(p)));
21984static enum yytokentype
21985parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
21987 const char *ptr = p->lex.pcur;
21990 SET_LEX_STATE(EXPR_END);
21991 p->lex.ptok = ptr - 1;
21997 if (parser_is_identchar(p)) {
22029 if (parser_is_identchar(p)) {
22030 if (tokadd_mbchar(p, c) == -1)
return 0;
22045 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
22050 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
22053 case '1':
case '2':
case '3':
22054 case '4':
case '5':
case '6':
22055 case '7':
case '8':
case '9':
22060 }
while (c != -1 &&
ISDIGIT(c));
22062 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
22064 c = parse_numvar(p);
22065 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
22069 if (!parser_is_identchar(p)) {
22070 YYLTYPE loc = RUBY_INIT_YYLLOC();
22072 compile_error(p,
"'$' without identifiers is not allowed as a global variable name");
22076 compile_error(p,
"'$%c' is not allowed as a global variable name", c);
22078 parser_show_error_line(p, &loc);
22079 set_yylval_noname();
22087 if (tokadd_ident(p, c))
return 0;
22088 SET_LEX_STATE(EXPR_END);
22089 if (VALID_SYMNAME_P(tok(p), toklen(p), p->enc, ID_GLOBAL)) {
22093 compile_error(p,
"'%.*s' is not allowed as a global variable name", toklen(p), tok(p));
22094 set_yylval_noname();
22102 if (n < 0)
return false;
22104 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
22107 if (p->max_numparam == ORDINAL_PARAM) {
22108 compile_error(p,
"ordinary parameter is defined");
22111 struct vtable *args = p->lvtbl->args;
22112 if (p->max_numparam < n) {
22113 p->max_numparam = n;
22115 while (n > args->pos) {
22116 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
22121static enum yytokentype
22122parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
22124 const char *ptr = p->lex.pcur;
22125 enum yytokentype result = tIVAR;
22126 register int c = nextc(p);
22129 p->lex.ptok = ptr - 1;
22137 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
22138 if (c == -1 || !parser_is_identchar(p)) {
22140 RUBY_SET_YYLLOC(loc);
22141 if (result == tIVAR) {
22142 compile_error(p,
"'@' without identifiers is not allowed as an instance variable name");
22145 compile_error(p,
"'@@' without identifiers is not allowed as a class variable name");
22147 parser_show_error_line(p, &loc);
22148 set_yylval_noname();
22149 SET_LEX_STATE(EXPR_END);
22154 RUBY_SET_YYLLOC(loc);
22155 if (result == tIVAR) {
22156 compile_error(p,
"'@%c' is not allowed as an instance variable name", c);
22159 compile_error(p,
"'@@%c' is not allowed as a class variable name", c);
22161 parser_show_error_line(p, &loc);
22162 set_yylval_noname();
22163 SET_LEX_STATE(EXPR_END);
22167 if (tokadd_ident(p, c))
return 0;
22172static enum yytokentype
22175 enum yytokentype result;
22176 bool is_ascii =
true;
22177 const enum lex_state_e last_state = p->lex.state;
22179 int enforce_keyword_end = 0;
22182 if (!
ISASCII(c)) is_ascii =
false;
22183 if (tokadd_mbchar(p, c) == -1)
return 0;
22185 }
while (parser_is_identchar(p));
22186 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
22190 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
22191 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
22192 result = tIDENTIFIER;
22196 result = tCONSTANT;
22201 if (IS_LABEL_POSSIBLE()) {
22202 if (IS_LABEL_SUFFIX(0)) {
22203 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
22211 if (peek_end_expect_token_locations(p)) {
22213 int lineno, column;
22214 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
22216 end_pos = peek_end_expect_token_locations(p)->pos;
22217 lineno = end_pos->lineno;
22218 column = end_pos->column;
22221 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
22222 p->ruby_sourceline, beg_pos, lineno, column);
22225 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
22228 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
22229 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
22230 enforce_keyword_end = 1;
22236 if (is_ascii && (!IS_lex_state(EXPR_DOT) || enforce_keyword_end)) {
22240 kw = rb_reserved_word(tok(p), toklen(p));
22242 enum lex_state_e state = p->lex.state;
22243 if (IS_lex_state_for(state, EXPR_FNAME)) {
22244 SET_LEX_STATE(EXPR_ENDFN);
22245 set_yylval_name(rb_intern2(tok(p), toklen(p)));
22248 SET_LEX_STATE(kw->state);
22249 if (IS_lex_state(EXPR_BEG)) {
22250 p->command_start = TRUE;
22252 if (kw->id[0] == keyword_do) {
22253 if (lambda_beginning_p()) {
22254 p->lex.lpar_beg = -1;
22255 return keyword_do_LAMBDA;
22257 if (COND_P())
return keyword_do_cond;
22258 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
22259 return keyword_do_block;
22262 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
22265 if (kw->id[0] != kw->id[1])
22266 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
22272 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
22274 SET_LEX_STATE(EXPR_CMDARG);
22277 SET_LEX_STATE(EXPR_ARG);
22280 else if (p->lex.state == EXPR_FNAME) {
22281 SET_LEX_STATE(EXPR_ENDFN);
22284 SET_LEX_STATE(EXPR_END);
22287 ident = tokenize_ident(p);
22288 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
22289 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
22290 (result == tIDENTIFIER) &&
22291 (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
22292 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
22303 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
22307static enum yytokentype
22311 int space_seen = 0;
22314 enum lex_state_e last_state;
22315 int fallthru = FALSE;
22316 int token_seen = p->token_seen;
22318 if (p->lex.strterm) {
22319 if (strterm_is_heredoc(p->lex.strterm)) {
22321 return here_document(p, &p->lex.strterm->u.heredoc);
22325 return parse_string(p, &p->lex.strterm->u.literal);
22328 cmd_state = p->command_start;
22329 p->command_start = FALSE;
22330 p->token_seen = TRUE;
22335 last_state = p->lex.state;
22336 switch (c = nextc(p)) {
22343 if (p->end_expect_token_locations) {
22344 pop_end_expect_token_locations(p);
22345 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
22350 RUBY_SET_YYLLOC(*p->yylloc);
22351 return END_OF_INPUT;
22357 case ' ':
case '\t':
case '\f':
22360 while ((c = nextc(p))) {
22365 case ' ':
case '\t':
case '\f':
22374 dispatch_scan_event(p, tSP);
22381 p->token_seen = token_seen;
22382 const char *
const pcur = p->lex.pcur, *
const ptok = p->lex.ptok;
22384 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
22385 if (comment_at_top(p)) {
22386 set_file_encoding(p, p->lex.pcur, p->lex.pend);
22389 p->lex.pcur = pcur, p->lex.ptok = ptok;
22391 dispatch_scan_event(p, tCOMMENT);
22395 p->token_seen = token_seen;
22397 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
22398 !IS_lex_state(EXPR_LABELED));
22399 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
22401 dispatch_scan_event(p, tIGNORED_NL);
22404 if (!c && p->ctxt.in_kwarg) {
22405 goto normal_newline;
22410 switch (c = nextc(p)) {
22411 case ' ':
case '\t':
case '\f':
case '\r':
22418 dispatch_scan_event(p, tSP);
22423 if (peek_word_at(p,
"nd", 2, 0))
goto leading_logical;
22426 if (peek_word_at(p,
"r", 1, 0))
goto leading_logical;
22429 if (peek(p,
'|'))
goto leading_logical;
22432 if (peek(p,
'&')) {
22435 dispatch_delayed_token(p, tIGNORED_NL);
22441 dispatch_delayed_token(p, tIGNORED_NL);
22442 if (peek(p,
'.') == (c ==
'&')) {
22444 dispatch_scan_event(p, tSP);
22450 p->ruby_sourceline--;
22451 p->lex.nextline = p->lex.lastline;
22452 set_lastline(p, prevline);
22454 if (c == -1 && space_seen) {
22455 dispatch_scan_event(p, tSP);
22460 RUBY_SET_YYLLOC(*p->yylloc);
22462 goto normal_newline;
22466 p->command_start = TRUE;
22467 SET_LEX_STATE(EXPR_BEG);
22471 if ((c = nextc(p)) ==
'*') {
22472 if ((c = nextc(p)) ==
'=') {
22473 set_yylval_id(idPow);
22474 SET_LEX_STATE(EXPR_BEG);
22478 if (IS_SPCARG(c)) {
22479 rb_warning0(
"'**' interpreted as argument prefix");
22482 else if (IS_BEG()) {
22486 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
22491 set_yylval_id(
'*');
22492 SET_LEX_STATE(EXPR_BEG);
22496 if (IS_SPCARG(c)) {
22497 rb_warning0(
"'*' interpreted as argument prefix");
22500 else if (IS_BEG()) {
22504 c = warn_balanced(
'*',
"*",
"argument prefix");
22507 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22512 if (IS_AFTER_OPERATOR()) {
22513 SET_LEX_STATE(EXPR_ARG);
22519 SET_LEX_STATE(EXPR_BEG);
22533 if (word_match_p(p,
"begin", 5)) {
22534 int first_p = TRUE;
22537 dispatch_scan_event(p, tEMBDOC_BEG);
22541 dispatch_scan_event(p, tEMBDOC);
22546 compile_error(p,
"embedded document meets end of file");
22547 return END_OF_INPUT;
22549 if (c ==
'=' && word_match_p(p,
"end", 3)) {
22555 dispatch_scan_event(p, tEMBDOC_END);
22560 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22561 if ((c = nextc(p)) ==
'=') {
22562 if ((c = nextc(p)) ==
'=') {
22571 else if (c ==
'>') {
22580 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
22582 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
22583 enum yytokentype token = heredoc_identifier(p);
22584 if (token)
return token < 0 ? 0 : token;
22586 if (IS_AFTER_OPERATOR()) {
22587 SET_LEX_STATE(EXPR_ARG);
22590 if (IS_lex_state(EXPR_CLASS))
22591 p->command_start = TRUE;
22592 SET_LEX_STATE(EXPR_BEG);
22595 if ((c = nextc(p)) ==
'>') {
22602 if ((c = nextc(p)) ==
'=') {
22603 set_yylval_id(idLTLT);
22604 SET_LEX_STATE(EXPR_BEG);
22608 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
22614 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22615 if ((c = nextc(p)) ==
'=') {
22619 if ((c = nextc(p)) ==
'=') {
22620 set_yylval_id(idGTGT);
22621 SET_LEX_STATE(EXPR_BEG);
22631 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22632 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
22633 p->lex.ptok = p->lex.pcur-1;
22634 return tSTRING_BEG;
22637 if (IS_lex_state(EXPR_FNAME)) {
22638 SET_LEX_STATE(EXPR_ENDFN);
22641 if (IS_lex_state(EXPR_DOT)) {
22643 SET_LEX_STATE(EXPR_CMDARG);
22645 SET_LEX_STATE(EXPR_ARG);
22648 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
22649 return tXSTRING_BEG;
22652 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22653 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
22654 p->lex.ptok = p->lex.pcur-1;
22655 return tSTRING_BEG;
22658 return parse_qmark(p, space_seen);
22661 if ((c = nextc(p)) ==
'&') {
22662 SET_LEX_STATE(EXPR_BEG);
22663 if ((c = nextc(p)) ==
'=') {
22664 set_yylval_id(idANDOP);
22665 SET_LEX_STATE(EXPR_BEG);
22671 else if (c ==
'=') {
22672 set_yylval_id(
'&');
22673 SET_LEX_STATE(EXPR_BEG);
22676 else if (c ==
'.') {
22677 set_yylval_id(idANDDOT);
22678 SET_LEX_STATE(EXPR_DOT);
22682 if (IS_SPCARG(c)) {
22684 (c = peekc_n(p, 1)) == -1 ||
22685 !(c ==
'\'' || c ==
'"' ||
22686 is_identchar(p, (p->lex.pcur+1), p->lex.pend, p->enc))) {
22687 rb_warning0(
"'&' interpreted as argument prefix");
22691 else if (IS_BEG()) {
22695 c = warn_balanced(
'&',
"&",
"argument prefix");
22697 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22701 if ((c = nextc(p)) ==
'|') {
22702 SET_LEX_STATE(EXPR_BEG);
22703 if ((c = nextc(p)) ==
'=') {
22704 set_yylval_id(idOROP);
22705 SET_LEX_STATE(EXPR_BEG);
22709 if (IS_lex_state_for(last_state, EXPR_BEG)) {
22717 set_yylval_id(
'|');
22718 SET_LEX_STATE(EXPR_BEG);
22721 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
22727 if (IS_AFTER_OPERATOR()) {
22728 SET_LEX_STATE(EXPR_ARG);
22736 set_yylval_id(
'+');
22737 SET_LEX_STATE(EXPR_BEG);
22740 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
22741 SET_LEX_STATE(EXPR_BEG);
22744 return parse_numeric(p,
'+');
22748 SET_LEX_STATE(EXPR_BEG);
22750 return warn_balanced(
'+',
"+",
"unary operator");
22754 if (IS_AFTER_OPERATOR()) {
22755 SET_LEX_STATE(EXPR_ARG);
22763 set_yylval_id(
'-');
22764 SET_LEX_STATE(EXPR_BEG);
22768 SET_LEX_STATE(EXPR_ENDFN);
22769 yylval.num = p->lex.lpar_beg;
22770 p->lex.lpar_beg = p->lex.paren_nest;
22773 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
22774 SET_LEX_STATE(EXPR_BEG);
22777 return tUMINUS_NUM;
22781 SET_LEX_STATE(EXPR_BEG);
22783 return warn_balanced(
'-',
"-",
"unary operator");
22786 int is_beg = IS_BEG();
22787 SET_LEX_STATE(EXPR_BEG);
22788 if ((c = nextc(p)) ==
'.') {
22789 if ((c = nextc(p)) ==
'.') {
22790 if (p->ctxt.in_argdef || IS_LABEL_POSSIBLE()) {
22791 SET_LEX_STATE(EXPR_ENDARG);
22794 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
22795 rb_warn0(
"... at EOL, should be parenthesized?");
22797 return is_beg ? tBDOT3 : tDOT3;
22800 return is_beg ? tBDOT2 : tDOT2;
22804 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
22805 parse_numeric(p,
'.');
22807 yyerror0(
"unexpected fraction part after numeric literal");
22810 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
22812 SET_LEX_STATE(EXPR_END);
22813 p->lex.ptok = p->lex.pcur;
22816 set_yylval_id(
'.');
22817 SET_LEX_STATE(EXPR_DOT);
22821 case '0':
case '1':
case '2':
case '3':
case '4':
22822 case '5':
case '6':
case '7':
case '8':
case '9':
22823 return parse_numeric(p, c);
22828 SET_LEX_STATE(EXPR_ENDFN);
22829 p->lex.paren_nest--;
22835 SET_LEX_STATE(EXPR_END);
22836 p->lex.paren_nest--;
22841 if (!p->lex.brace_nest--)
return tSTRING_DEND;
22844 SET_LEX_STATE(EXPR_END);
22845 p->lex.paren_nest--;
22851 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
22852 SET_LEX_STATE(EXPR_BEG);
22855 set_yylval_id(idCOLON2);
22856 SET_LEX_STATE(EXPR_DOT);
22859 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
22861 c = warn_balanced(
':',
":",
"symbol literal");
22862 SET_LEX_STATE(EXPR_BEG);
22867 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
22870 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
22876 SET_LEX_STATE(EXPR_FNAME);
22881 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22882 return tREGEXP_BEG;
22884 if ((c = nextc(p)) ==
'=') {
22885 set_yylval_id(
'/');
22886 SET_LEX_STATE(EXPR_BEG);
22890 if (IS_SPCARG(c)) {
22891 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22892 return tREGEXP_BEG;
22894 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22895 return warn_balanced(
'/',
"/",
"regexp literal");
22898 if ((c = nextc(p)) ==
'=') {
22899 set_yylval_id(
'^');
22900 SET_LEX_STATE(EXPR_BEG);
22903 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22908 SET_LEX_STATE(EXPR_BEG);
22909 p->command_start = TRUE;
22913 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22917 if (IS_AFTER_OPERATOR()) {
22918 if ((c = nextc(p)) !=
'@') {
22921 SET_LEX_STATE(EXPR_ARG);
22924 SET_LEX_STATE(EXPR_BEG);
22932 else if (!space_seen) {
22935 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
22938 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
22939 rb_warning0(
"parentheses after method name is interpreted as "
22940 "an argument list, not a decomposed argument");
22942 p->lex.paren_nest++;
22945 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22949 p->lex.paren_nest++;
22950 if (IS_AFTER_OPERATOR()) {
22951 if ((c = nextc(p)) ==
']') {
22952 p->lex.paren_nest--;
22953 SET_LEX_STATE(EXPR_ARG);
22954 if ((c = nextc(p)) ==
'=') {
22961 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
22964 else if (IS_BEG()) {
22967 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
22970 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22976 ++p->lex.brace_nest;
22977 if (lambda_beginning_p())
22979 else if (IS_lex_state(EXPR_LABELED))
22981 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
22983 else if (IS_lex_state(EXPR_ENDARG))
22987 if (c != tLBRACE) {
22988 p->command_start = TRUE;
22989 SET_LEX_STATE(EXPR_BEG);
22992 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22994 ++p->lex.paren_nest;
23003 dispatch_scan_event(p, tSP);
23006 if (c ==
' ')
return tSP;
23012 return parse_percent(p, space_seen, last_state);
23015 return parse_gvar(p, last_state);
23018 return parse_atmark(p, last_state);
23021 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
23022 p->ruby__end__seen = 1;
23026 dispatch_scan_event(p, k__END__);
23028 return END_OF_INPUT;
23034 if (!parser_is_identchar(p)) {
23035 compile_error(p,
"Invalid char '\\x%02X' in expression", c);
23044 return parse_ident(p, c, cmd_state);
23047static enum yytokentype
23050 enum yytokentype t;
23054 p->yylloc = yylloc;
23056 t = parser_yylex(p);
23058 if (has_delayed_token(p))
23059 dispatch_delayed_token(p, t);
23060 else if (t != END_OF_INPUT)
23061 dispatch_scan_event(p, t);
23066#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
23069node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment)
23071 NODE *n = rb_ast_newnode(p->ast,
type, size, alignment);
23073 rb_node_init(n,
type);
23081 nd_set_line(nd, loc->beg_pos.lineno);
23088 NODE *n = node_new_internal(p,
type, size, alignment);
23090 nd_set_loc(n, loc);
23091 nd_set_node_id(n, parser_get_node_id(p));
23095#define NODE_NEWNODE(node_type, type, loc) (type *)(node_newnode(p, node_type, sizeof(type), RUBY_ALIGNOF(type), loc))
23101 nd_tbl = local_tbl(p);
23103 n->nd_tbl = nd_tbl;
23104 n->nd_body = nd_body;
23105 n->nd_parent = nd_parent;
23106 n->nd_args = nd_args;
23115 n->nd_tbl = nd_tbl;
23116 n->nd_body = nd_body;
23117 n->nd_parent = nd_parent;
23118 n->nd_args = nd_args;
23127 n->nd_mid = nd_mid;
23128 n->nd_defn = nd_defn;
23137 n->nd_recv = nd_recv;
23138 n->nd_mid = nd_mid;
23139 n->nd_defn = nd_defn;
23148 n->nd_head = nd_head;
23149 n->nd_end = (
NODE *)n;
23159 n->nd_body = nd_body;
23160 n->nd_iter = nd_iter;
23161 n->for_keyword_loc = *for_keyword_loc;
23162 n->in_keyword_loc = *in_keyword_loc;
23163 n->do_keyword_loc = *do_keyword_loc;
23164 n->end_keyword_loc = *end_keyword_loc;
23173 n->nd_var = nd_var;
23190 n->nd_body = nd_body;
23199 n->nd_head = nd_head;
23200 n->nd_resq = nd_resq;
23201 n->nd_else = nd_else;
23210 n->nd_args = nd_args;
23211 n->nd_exc_var = nd_exc_var;
23212 n->nd_body = nd_body;
23213 n->nd_next = nd_next;
23222 n->nd_head = nd_head;
23223 n->nd_ensr = nd_ensr;
23232 n->nd_1st = nd_1st;
23233 n->nd_2nd = nd_2nd;
23234 n->operator_loc = *operator_loc;
23243 n->nd_1st = nd_1st;
23244 n->nd_2nd = nd_2nd;
23245 n->operator_loc = *operator_loc;
23254 n->nd_stts = nd_stts;
23255 n->keyword_loc = *keyword_loc;
23262 if (nd_head) no_blockarg(p, nd_head);
23265 n->nd_head = nd_head;
23266 n->keyword_loc = *keyword_loc;
23267 n->lparen_loc = *lparen_loc;
23268 n->rparen_loc = *rparen_loc;
23277 n->nd_cond = nd_cond;
23278 n->nd_body = nd_body;
23279 n->nd_else = nd_else;
23280 n->if_keyword_loc = *if_keyword_loc;
23281 n->then_keyword_loc = *then_keyword_loc;
23282 n->end_keyword_loc = *end_keyword_loc;
23291 n->nd_cond = nd_cond;
23292 n->nd_body = nd_body;
23293 n->nd_else = nd_else;
23294 n->keyword_loc = *keyword_loc;
23295 n->then_keyword_loc = *then_keyword_loc;
23296 n->end_keyword_loc = *end_keyword_loc;
23305 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
23307 RNODE_SCOPE(scope)->nd_parent = &n->node;
23308 n->nd_cpath = nd_cpath;
23309 n->nd_body = scope;
23310 n->nd_super = nd_super;
23311 n->class_keyword_loc = *class_keyword_loc;
23312 n->inheritance_operator_loc = *inheritance_operator_loc;
23313 n->end_keyword_loc = *end_keyword_loc;
23322 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
23324 RNODE_SCOPE(scope)->nd_parent = &n->node;
23325 n->nd_recv = nd_recv;
23326 n->nd_body = scope;
23327 n->class_keyword_loc = *class_keyword_loc;
23328 n->operator_loc = *operator_loc;
23329 n->end_keyword_loc = *end_keyword_loc;
23338 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
23340 RNODE_SCOPE(scope)->nd_parent = &n->node;
23341 n->nd_cpath = nd_cpath;
23342 n->nd_body = scope;
23343 n->module_keyword_loc = *module_keyword_loc;
23344 n->end_keyword_loc = *end_keyword_loc;
23353 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
23355 RNODE_SCOPE(scope)->nd_parent = &n->node;
23356 n->nd_body = scope;
23366 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
23367 YYLTYPE lambda_loc = code_loc_gen(operator_loc, closing_loc);
23369 RNODE_SCOPE(scope)->nd_parent = &n->node;
23370 n->nd_body = scope;
23371 n->operator_loc = *operator_loc;
23372 n->opening_loc = *opening_loc;
23373 n->closing_loc = *closing_loc;
23382 n->nd_head = nd_head;
23383 n->nd_body = nd_body;
23384 n->case_keyword_loc = *case_keyword_loc;
23385 n->end_keyword_loc = *end_keyword_loc;
23395 n->nd_body = nd_body;
23396 n->case_keyword_loc = *case_keyword_loc;
23397 n->end_keyword_loc = *end_keyword_loc;
23406 n->nd_head = nd_head;
23407 n->nd_body = nd_body;
23408 n->case_keyword_loc = *case_keyword_loc;
23409 n->end_keyword_loc = *end_keyword_loc;
23418 n->nd_head = nd_head;
23419 n->nd_body = nd_body;
23420 n->nd_next = nd_next;
23421 n->keyword_loc = *keyword_loc;
23422 n->then_keyword_loc = *then_keyword_loc;
23431 n->nd_head = nd_head;
23432 n->nd_body = nd_body;
23433 n->nd_next = nd_next;
23434 n->in_keyword_loc = *in_keyword_loc;
23435 n->then_keyword_loc = *then_keyword_loc;
23436 n->operator_loc = *operator_loc;
23445 n->nd_cond = nd_cond;
23446 n->nd_body = nd_body;
23447 n->nd_state = nd_state;
23448 n->keyword_loc = *keyword_loc;
23449 n->closing_loc = *closing_loc;
23458 n->nd_cond = nd_cond;
23459 n->nd_body = nd_body;
23460 n->nd_state = nd_state;
23461 n->keyword_loc = *keyword_loc;
23462 n->closing_loc = *closing_loc;
23471 n->nd_head = nd_head;
23472 n->nd_mid = nd_mid;
23473 n->delimiter_loc = *delimiter_loc;
23474 n->name_loc = *name_loc;
23483 n->nd_mid = nd_mid;
23484 n->delimiter_loc = *delimiter_loc;
23485 n->name_loc = *name_loc;
23494 n->nd_beg = nd_beg;
23495 n->nd_end = nd_end;
23496 n->operator_loc = *operator_loc;
23505 n->nd_beg = nd_beg;
23506 n->nd_end = nd_end;
23507 n->operator_loc = *operator_loc;
23550 n->nd_args = nd_args;
23551 n->keyword_loc = *keyword_loc;
23552 n->lparen_loc = *lparen_loc;
23553 n->rparen_loc = *rparen_loc;
23570 n->nd_recv = nd_recv;
23571 n->nd_value = nd_value;
23581 n->nd_recv = nd_recv;
23582 n->nd_value = nd_value;
23590 return rb_node_list_new2(p, nd_head, 1, 0, loc);
23597 n->nd_head = nd_head;
23598 n->as.nd_alen = nd_alen;
23599 n->nd_next = nd_next;
23616 n->nd_head = nd_head;
23626 n->nd_head = nd_head;
23628 n->nd_args = nd_args;
23637 n->nd_vid = nd_vid;
23638 n->nd_value = nd_value;
23647 n->nd_vid = nd_vid;
23648 n->nd_value = nd_value;
23657 n->nd_vid = nd_vid;
23658 n->nd_value = nd_value;
23667 n->nd_vid = nd_vid;
23668 n->nd_value = nd_value;
23677 n->nd_vid = nd_vid;
23678 n->nd_value = nd_value;
23687 n->nd_recv = nd_recv;
23688 n->nd_mid = nd_mid;
23689 n->nd_index = index;
23690 n->nd_rvalue = rvalue;
23691 n->call_operator_loc = *call_operator_loc;
23692 n->opening_loc = *opening_loc;
23693 n->closing_loc = *closing_loc;
23694 n->binary_operator_loc = *binary_operator_loc;
23703 n->nd_recv = nd_recv;
23704 n->nd_value = nd_value;
23705 n->nd_vid = nd_vid;
23706 n->nd_mid = nd_mid;
23707 n->nd_aid = nd_aid;
23708 n->call_operator_loc = *call_operator_loc;
23709 n->message_loc = *message_loc;
23710 n->binary_operator_loc = *binary_operator_loc;
23719 n->nd_head = nd_head;
23720 n->nd_value = nd_value;
23729 n->nd_head = nd_head;
23730 n->nd_value = nd_value;
23739 n->nd_vid = nd_vid;
23748 n->nd_vid = nd_vid;
23757 n->nd_vid = nd_vid;
23766 n->nd_vid = nd_vid;
23775 n->nd_vid = nd_vid;
23784 n->nd_vid = nd_vid;
23793 n->nd_nth = nd_nth;
23802 n->nd_nth = nd_nth;
23829rb_node_rational_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
const YYLTYPE *loc)
23835 n->seen_point = seen_point;
23841rb_node_imaginary_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
enum rb_numeric_type numeric_type,
const YYLTYPE *loc)
23847 n->seen_point = seen_point;
23848 n->type = numeric_type;
23857 n->string = string;
23867 n->string = string;
23868 n->as.nd_alen = nd_alen;
23877 return rb_node_dstr_new0(p,
string, 1, 0, loc);
23884 n->string = string;
23893 n->string = string;
23894 n->as.nd_alen = nd_alen;
23904 n->string = rb_str_to_parser_string(p, str);
23913 n->string = string;
23914 n->as.nd_alen = nd_alen;
23924 n->nd_body = nd_body;
23925 n->opening_loc = *opening_loc;
23926 n->closing_loc = *closing_loc;
23935 n->string = string;
23936 n->options = options & RE_OPTION_MASK;
23937 n->opening_loc = *opening_loc;
23938 n->content_loc = *content_loc;
23939 n->closing_loc = *closing_loc;
23948 n->nd_recv = nd_recv;
23949 n->nd_mid = nd_mid;
23950 n->nd_args = nd_args;
23959 n->nd_recv = nd_recv;
23960 n->nd_mid = nd_mid;
23961 n->nd_args = nd_args;
23970 n->nd_mid = nd_mid;
23971 n->nd_args = nd_args;
23980 n->nd_recv = nd_recv;
23981 n->nd_mid = nd_mid;
23982 n->nd_args = nd_args;
23991 n->nd_mid = nd_mid;
24000 n->nd_body = nd_body;
24018 n->nd_pid = nd_pid;
24019 n->nd_plen = nd_plen;
24029 n->nd_body = nd_body;
24039 n->nd_body = nd_body;
24049 n->nd_1st = nd_1st;
24050 n->nd_2nd = nd_2nd;
24059 n->nd_head = nd_head;
24060 n->nd_body = nd_body;
24069 n->nd_head = nd_head;
24070 n->nd_body = nd_body;
24079 n->nd_head = nd_head;
24080 n->operator_loc = *operator_loc;
24091 n->nd_body = nd_body;
24092 n->operator_loc = *operator_loc;
24101 n->nd_1st = nd_1st;
24102 n->nd_2nd = nd_2nd;
24103 n->keyword_loc = *keyword_loc;
24112 n->nd_alias = nd_alias;
24113 n->nd_orig = nd_orig;
24114 n->keyword_loc = *keyword_loc;
24123 n->nd_undefs = rb_parser_ary_new_capa_for_node(p, 1);
24124 n->keyword_loc = NULL_LOC;
24125 rb_parser_ary_push_node(p, n->nd_undefs, nd_undef);
24142 n->nd_head = nd_head;
24143 n->keyword_loc = *keyword_loc;
24152 n->nd_body = nd_body;
24153 n->keyword_loc = *keyword_loc;
24154 n->opening_loc = *opening_loc;
24155 n->closing_loc = *closing_loc;
24164 n->nd_recv = nd_recv;
24165 n->nd_mid = nd_mid;
24166 n->nd_args = nd_args;
24176 n->pre_args = pre_args;
24177 n->rest_arg = rest_arg;
24178 n->post_args = post_args;
24187 n->nd_pconst = nd_pconst;
24188 n->nd_pkwargs = nd_pkwargs;
24189 n->nd_pkwrestarg = nd_pkwrestarg;
24199 n->pre_rest_arg = pre_rest_arg;
24201 n->post_rest_arg = post_rest_arg;
24218 n->path = rb_str_to_parser_string(p, str);
24233rb_node_cdecl_new(
struct parser_params *p,
ID nd_vid,
NODE *nd_value,
NODE *nd_else,
enum rb_parser_shareability shareability,
const YYLTYPE *loc)
24236 n->nd_vid = nd_vid;
24237 n->nd_value = nd_value;
24238 n->nd_else = nd_else;
24239 n->shareability = shareability;
24245rb_node_op_cdecl_new(
struct parser_params *p,
NODE *nd_head,
NODE *nd_value,
ID nd_aid,
enum rb_parser_shareability shareability,
const YYLTYPE *loc)
24248 n->nd_head = nd_head;
24249 n->nd_value = nd_value;
24250 n->nd_aid = nd_aid;
24251 n->shareability = shareability;
24268 n->nd_stts = nd_stts;
24270 n->keyword_loc = *keyword_loc;
24279 n->nd_stts = nd_stts;
24281 n->keyword_loc = *keyword_loc;
24291 n->keyword_loc = *keyword_loc;
24300 n->save.numparam_save = 0;
24301 n->save.max_numparam = 0;
24302 n->save.ctxt = p->ctxt;
24312 n->save.numparam_save = numparam_push(p);
24313 n->save.max_numparam = p->max_numparam;
24318static enum node_type
24319nodetype(
NODE *node)
24321 return (
enum node_type)nd_type(node);
24325nodeline(
NODE *node)
24327 return nd_line(node);
24332newline_node(
NODE *node)
24335 node = remove_begin(node);
24336 nd_set_fl_newline(node);
24346 nd_set_line(node, nd_line(orig));
24352 NODE *end, *h = head, *nd;
24354 if (tail == 0)
return head;
24356 if (h == 0)
return tail;
24357 switch (nd_type(h)) {
24359 h = end = NEW_BLOCK(head, &head->nd_loc);
24363 end = RNODE_BLOCK(h)->nd_end;
24367 nd = RNODE_BLOCK(end)->nd_head;
24368 switch (nd_type(nd)) {
24374 rb_warning0L(nd_line(tail),
"statement not reached");
24381 if (!nd_type_p(tail, NODE_BLOCK)) {
24382 tail = NEW_BLOCK(tail, &tail->nd_loc);
24384 RNODE_BLOCK(end)->nd_next = tail;
24385 RNODE_BLOCK(h)->nd_end = RNODE_BLOCK(tail)->nd_end;
24386 nd_set_last_loc(head, nd_last_loc(tail));
24396 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
24397 if (RNODE_LIST(list)->nd_next) {
24398 last = RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end;
24404 RNODE_LIST(list)->as.nd_alen += 1;
24405 RNODE_LIST(last)->nd_next = NEW_LIST(item, &item->nd_loc);
24406 RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end = RNODE_LIST(last)->nd_next;
24408 nd_set_last_loc(list, nd_last_loc(item));
24415list_concat(
NODE *head,
NODE *tail)
24419 if (RNODE_LIST(head)->nd_next) {
24420 last = RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end;
24426 RNODE_LIST(head)->as.nd_alen += RNODE_LIST(tail)->as.nd_alen;
24427 RNODE_LIST(last)->nd_next = tail;
24428 if (RNODE_LIST(tail)->nd_next) {
24429 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = RNODE_LIST(RNODE_LIST(tail)->nd_next)->as.nd_end;
24432 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = tail;
24435 nd_set_last_loc(head, nd_last_loc(tail));
24443 if (!tail)
return 1;
24444 if (!rb_parser_enc_compatible(p, head, tail)) {
24445 compile_error(p,
"string literal encodings differ (%s / %s)",
24446 rb_enc_name(rb_parser_str_get_encoding(head)),
24447 rb_enc_name(rb_parser_str_get_encoding(tail)));
24448 rb_parser_str_resize(p, head, 0);
24449 rb_parser_str_resize(p, tail, 0);
24452 rb_parser_str_buf_append(p, head, tail);
24459 if (htype != NODE_DSTR)
return NULL;
24460 if (RNODE_DSTR(head)->nd_next) {
24461 head = RNODE_LIST(RNODE_LIST(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_head;
24462 if (!head || !nd_type_p(head, NODE_STR))
return NULL;
24474 if (!orig)
return NULL;
24475 copy = rb_parser_string_new(p, PARSER_STRING_PTR(orig), PARSER_STRING_LEN(orig));
24476 copy->coderange = orig->coderange;
24477 copy->enc = orig->enc;
24486 enum node_type htype;
24489 if (!head)
return tail;
24490 if (!tail)
return head;
24492 htype = nd_type(head);
24493 if (htype == NODE_EVSTR) {
24494 head = new_dstr(p, head, loc);
24497 if (p->heredoc_indent > 0) {
24500 head = str2dstr(p, head);
24502 return list_append(p, head, tail);
24507 switch (nd_type(tail)) {
24509 if ((lit = string_literal_head(p, htype, head)) !=
false) {
24513 lit = RNODE_DSTR(head)->string;
24515 if (htype == NODE_STR) {
24516 if (!literal_concat0(p, lit, RNODE_STR(tail)->
string)) {
24518 rb_discard_node(p, head);
24519 rb_discard_node(p, tail);
24522 rb_discard_node(p, tail);
24525 list_append(p, head, tail);
24530 if (htype == NODE_STR) {
24531 if (!literal_concat0(p, RNODE_STR(head)->
string, RNODE_DSTR(tail)->
string))
24533 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24534 RNODE_DSTR(tail)->string = RNODE_STR(head)->string;
24535 RNODE_STR(head)->string = NULL;
24536 rb_discard_node(p, head);
24539 else if (!RNODE_DSTR(tail)->
string) {
24541 RNODE_DSTR(head)->as.nd_alen += RNODE_DSTR(tail)->as.nd_alen - 1;
24542 if (!RNODE_DSTR(head)->nd_next) {
24543 RNODE_DSTR(head)->nd_next = RNODE_DSTR(tail)->nd_next;
24545 else if (RNODE_DSTR(tail)->nd_next) {
24546 RNODE_DSTR(RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_next = RNODE_DSTR(tail)->nd_next;
24547 RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end = RNODE_DSTR(RNODE_DSTR(tail)->nd_next)->as.nd_end;
24549 rb_discard_node(p, tail);
24551 else if ((lit = string_literal_head(p, htype, head)) !=
false) {
24552 if (!literal_concat0(p, lit, RNODE_DSTR(tail)->
string))
24554 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24555 RNODE_DSTR(tail)->string = 0;
24559 list_concat(head, NEW_LIST2(NEW_STR(RNODE_DSTR(tail)->
string, loc), RNODE_DSTR(tail)->as.nd_alen, (
NODE *)RNODE_DSTR(tail)->nd_next, loc));
24560 RNODE_DSTR(tail)->string = 0;
24565 if (htype == NODE_STR) {
24566 head = str2dstr(p, head);
24567 RNODE_DSTR(head)->as.nd_alen = 1;
24569 list_append(p, head, tail);
24576nd_copy_flag(
NODE *new_node,
NODE *old_node)
24578 if (nd_fl_newline(old_node)) nd_set_fl_newline(new_node);
24579 nd_set_line(new_node, nd_line(old_node));
24580 new_node->nd_loc = old_node->nd_loc;
24581 new_node->node_id = old_node->node_id;
24588 nd_copy_flag(new_node, node);
24589 RNODE_DSTR(new_node)->string = RNODE_STR(node)->string;
24590 RNODE_DSTR(new_node)->as.nd_alen = 0;
24591 RNODE_DSTR(new_node)->nd_next = 0;
24592 RNODE_STR(node)->string = 0;
24601 nd_copy_flag(new_node, node);
24602 RNODE_REGX(new_node)->string = RNODE_STR(node)->string;
24603 RNODE_REGX(new_node)->options = options;
24604 nd_set_loc(new_node, loc);
24605 RNODE_REGX(new_node)->opening_loc = *opening_loc;
24606 RNODE_REGX(new_node)->content_loc = *content_loc;
24607 RNODE_REGX(new_node)->closing_loc = *closing_loc;
24608 RNODE_STR(node)->string = 0;
24616 if (nd_type_p(node, NODE_EVSTR)) {
24617 node = new_dstr(p, node, &node->nd_loc);
24628 switch (nd_type(node)) {
24630 return str2dstr(p, node);
24637 return NEW_EVSTR(head, loc, opening_loc, closing_loc);
24643 NODE *dstr = NEW_DSTR(STRING_NEW0(), loc);
24644 return list_append(p, dstr, node);
24652 value_expr(p, recv);
24653 value_expr(p, arg1);
24654 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
24655 nd_set_line(expr, op_loc->beg_pos.lineno);
24663 value_expr(p, recv);
24664 opcall = NEW_OPCALL(recv,
id, 0, loc);
24665 nd_set_line(opcall, op_loc->beg_pos.lineno);
24672 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
24673 nd_set_line(qcall, op_loc->beg_pos.lineno);
24681 if (block) block_dup_check(p, args, block);
24682 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
24683 if (block) ret = method_add_block(p, ret, block, loc);
24693 body->opening_loc = *opening_loc;
24694 body->closing_loc = *closing_loc;
24702 enum node_type
type = nd_type(m);
24705 compile_error(p,
"block given to yield");
24708 body = &RNODE_RETURN(m)->nd_stts;
24712 body = &RNODE_EXITS(m)->nd_stts;
24715 compile_error(p,
"command_add_block: unexpected node: NODE_REDO");
24718 compile_error(p,
"command_add_block: unexpected node: NODE_RETRY");
24721 block_dup_check(p, get_nd_args(p, m), b);
24722 return method_add_block(p, m, b, loc);
24724 RUBY_ASSERT(*body,
"no argument %s with do_block", parser_node_name(
type));
24725 YYLTYPE b_loc = code_loc_gen(&(*body)->nd_loc, loc);
24726 *body = command_add_block(p, *body, b, &b_loc);
24727 m->nd_loc.end_pos = loc->end_pos;
24731#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? RNODE_ONCE(node)->nd_body : node)
24734last_expr_once_body(
NODE *node)
24736 if (!node)
return 0;
24737 return nd_once_body(node);
24744 int line = op_loc->beg_pos.lineno;
24746 value_expr(p, node1);
24747 value_expr(p, node2);
24749 if ((n = last_expr_once_body(node1)) != 0) {
24750 switch (nd_type(n)) {
24753 NODE *match = NEW_MATCH2(node1, node2, loc);
24754 nd_set_line(match, line);
24760 const VALUE lit = rb_node_regx_string_val(n);
24762 NODE *match = NEW_MATCH2(node1, node2, loc);
24763 RNODE_MATCH2(match)->nd_args = reg_named_capture_assign(p, lit, loc, assignable);
24764 nd_set_line(match, line);
24771 if ((n = last_expr_once_body(node2)) != 0) {
24774 switch (nd_type(n)) {
24776 match3 = NEW_MATCH3(node2, node1, loc);
24781 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
24782 nd_set_line(n, line);
24786# if WARN_PAST_SCOPE
24790 struct vtable *past = p->lvtbl->past;
24792 if (vtable_included(past,
id))
return 1;
24803 NODE *outer = local->numparam.outer;
24804 NODE *inner = local->numparam.inner;
24805 if (outer || inner) {
24806 NODE *used = outer ? outer : inner;
24807 compile_error(p,
"numbered parameter is already used in %s block\n"
24808 "%s:%d: numbered parameter is already used here",
24809 outer ?
"outer" :
"inner",
24810 p->ruby_sourcefile, nd_line(used));
24811 parser_show_error_line(p, &used->nd_loc);
24820 NODE *numparam = p->lvtbl->numparam.current;
24822 compile_error(p,
"'it' is not allowed when a numbered parameter is already used\n"
24823 "%s:%d: numbered parameter is already used here",
24824 p->ruby_sourcefile, nd_line(numparam));
24825 parser_show_error_line(p, &numparam->nd_loc);
24834 NODE *it = p->lvtbl->it;
24836 compile_error(p,
"numbered parameters are not allowed when 'it' is already used\n"
24837 "%s:%d: 'it' is already used here",
24838 p->ruby_sourcefile, nd_line(it));
24839 parser_show_error_line(p, &it->nd_loc);
24852 return NEW_SELF(loc);
24854 return NEW_NIL(loc);
24856 return NEW_TRUE(loc);
24857 case keyword_false:
24858 return NEW_FALSE(loc);
24859 case keyword__FILE__:
24861 VALUE file = p->ruby_sourcefile_string;
24864 node = NEW_FILE(file, loc);
24867 case keyword__LINE__:
24868 return NEW_LINE(loc);
24869 case keyword__ENCODING__:
24870 return NEW_ENCODING(loc);
24873 switch (id_type(
id)) {
24875 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
24876 if (NUMPARAM_ID_P(
id) && (numparam_nested_p(p) || it_used_p(p)))
return 0;
24877 if (vidp) *vidp |= LVAR_USED;
24878 node = NEW_DVAR(
id, loc);
24881 if (local_id_ref(p,
id, &vidp)) {
24882 if (vidp) *vidp |= LVAR_USED;
24883 node = NEW_LVAR(
id, loc);
24886 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
24887 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
24888 if (numparam_nested_p(p) || it_used_p(p))
return 0;
24889 node = NEW_DVAR(
id, loc);
24891 if (!local->numparam.current) local->numparam.current = node;
24894# if WARN_PAST_SCOPE
24896 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
24900 if (dyna_in_block(p) &&
id == idIt && !(DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev))) {
24901 if (numparam_used_p(p))
return 0;
24902 if (p->max_numparam == ORDINAL_PARAM) {
24903 compile_error(p,
"ordinary parameter is defined");
24907 p->it_id = idItImplicit;
24908 vtable_add(p->lvtbl->args, p->it_id);
24910 NODE *node = NEW_DVAR(p->it_id, loc);
24911 if (!p->lvtbl->it) p->lvtbl->it = node;
24914 return NEW_VCALL(
id, loc);
24916 return NEW_GVAR(
id, loc);
24918 return NEW_IVAR(
id, loc);
24920 return NEW_CONST(
id, loc);
24922 return NEW_CVAR(
id, loc);
24924 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24932 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24934 while (opts->nd_next) {
24935 opts = opts->nd_next;
24936 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24938 opts->nd_next = opt;
24948 opt_arg_append(RNODE_OPT_ARG(kwlist), RNODE_OPT_ARG(kw));
24956 int had_trailing_semicolon = p->ctxt.has_trailing_semicolon;
24957 p->ctxt.has_trailing_semicolon = 0;
24961 if (nd_type_p(n, NODE_BEGIN)) {
24962 n = RNODE_BEGIN(n)->nd_body;
24964 else if (nd_type_p(n, NODE_BLOCK) && RNODE_BLOCK(n)->nd_end == n) {
24965 n = RNODE_BLOCK(n)->nd_head;
24972 if (had_trailing_semicolon && !nd_type_p(expr, NODE_BLOCK)) {
24973 NODE *block = NEW_BLOCK(expr, loc);
24974 return NEW_DEFINED(block, loc, keyword_loc);
24977 return NEW_DEFINED(n, loc, keyword_loc);
24985 if (rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_BROKEN) {
24986 yyerror1(loc,
"invalid symbol");
24990 lit = rb_str_new_parser_string(str);
24992 return NEW_SYM(lit, loc);
24998 enum node_type
type = nd_type(symbol);
25001 nd_set_type(symbol, NODE_DSYM);
25004 symbol = str_to_sym_node(p, symbol, &RNODE(symbol)->nd_loc);
25007 compile_error(p,
"unexpected node as symbol: %s", parser_node_name(
type));
25009 return list_append(p, symbols, symbol);
25015 if (dreg->string) {
25016 reg_fragment_setenc(p, dreg->string, options);
25018 for (
struct RNode_LIST *list = dreg->nd_next; list; list = RNODE_LIST(list->nd_next)) {
25019 NODE *frag = list->nd_head;
25020 if (nd_type_p(frag, NODE_STR)) {
25021 reg_fragment_setenc(p, RNODE_STR(frag)->
string, options);
25023 else if (nd_type_p(frag, NODE_DSTR)) {
25024 dregex_fragment_setenc(p, RNODE_DSTR(frag), options);
25035 reg_compile(p, str, options);
25036 node = NEW_REGX(str, options, loc, opening_loc, content_loc, closing_loc);
25039 switch (nd_type(node)) {
25043 reg_compile(p, RNODE_STR(node)->
string, options);
25044 node = str2regx(p, node, options, loc, opening_loc, content_loc, closing_loc);
25048 node = NEW_DSTR0(STRING_NEW0(), 1, NEW_LIST(node, loc), loc);
25051 nd_set_type(node, NODE_DREGX);
25052 nd_set_loc(node, loc);
25054 dreg->as.nd_cflag = options & RE_OPTION_MASK;
25055 if (dreg->nd_next) {
25056 dregex_fragment_setenc(p, dreg, options);
25058 if (options & RE_OPTION_ONCE) {
25059 node = NEW_ONCE(node, loc);
25070 return NEW_KW_ARG((k), loc);
25077 NODE *xstr = NEW_XSTR(STRING_NEW0(), loc);
25080 switch (nd_type(node)) {
25082 nd_set_type(node, NODE_XSTR);
25083 nd_set_loc(node, loc);
25086 nd_set_type(node, NODE_DXSTR);
25087 nd_set_loc(node, loc);
25090 node = NEW_DXSTR(0, 1, NEW_LIST(node, loc), loc);
25102static int nd_type_st_key_enable_p(
NODE *node);
25108 if (!arg || !p->case_labels)
return;
25109 if (!nd_type_st_key_enable_p(arg))
return;
25111 if (p->case_labels == CHECK_LITERAL_WHEN) {
25112 p->case_labels = st_init_table(&literal_type);
25116 if (st_lookup(p->case_labels, (st_data_t)arg, &line)) {
25117 rb_warning2(
"'when' clause on line %d duplicates 'when' clause on line %d and is ignored",
25118 WARN_I((
int)nd_line(arg)), WARN_I((
int)line));
25122 st_insert(p->case_labels, (st_data_t)arg, (st_data_t)p->ruby_sourceline);
25129 if (is_notop_id(
id)) {
25130 switch (
id & ID_SCOPE_MASK) {
25131 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
25134 if (dyna_in_block(p)) {
25135 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
25137 if (local_id(p,
id))
return 1;
25142 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
25147static inline enum lex_state_e
25148parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
25151 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
25153 return p->lex.state = ls;
25160 VALUE mesg = p->debug_buffer;
25162 if (!
NIL_P(mesg) && RSTRING_LEN(mesg)) {
25163 p->debug_buffer =
Qnil;
25164 rb_io_puts(1, &mesg, out);
25166 if (!
NIL_P(str) && RSTRING_LEN(str)) {
25167 rb_io_write(p->debug_output, str);
25171static const char rb_parser_lex_state_names[][8] = {
25172 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
25173 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
25174 "LABEL",
"LABELED",
"FITEM",
25181 unsigned int mask = 1;
25182 static const char none[] =
"NONE";
25184 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
25185 if ((
unsigned)state & mask) {
25200rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
25201 enum lex_state_e to,
int line)
25205 append_lex_state_name(p, from, mesg);
25207 append_lex_state_name(p, to, mesg);
25208 rb_str_catf(mesg,
" at line %d\n", line);
25209 flush_debug_buffer(p, p->debug_output, mesg);
25214rb_parser_lex_state_name(
struct parser_params *p,
enum lex_state_e state)
25216 return rb_str_to_interned_str(append_lex_state_name(p, state,
rb_str_new(0, 0)));
25226 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
25227 for (; mask && !(stack & mask); mask >>= 1)
continue;
25228 for (; mask; mask >>= 1)
rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
25233rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
25234 const char *name,
int line)
25236 VALUE mesg = rb_sprintf(
"%s: ", name);
25237 append_bitstack_value(p, stack, mesg);
25238 rb_str_catf(mesg,
" at line %d\n", line);
25239 flush_debug_buffer(p, p->debug_output, mesg);
25243rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
25249 rb_str_vcatf(mesg, fmt, ap);
25251 yyerror0(RSTRING_PTR(mesg));
25255 append_lex_state_name(p, p->lex.state, mesg);
25256 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
25257 rb_str_resize(mesg, 0);
25258 append_bitstack_value(p, p->cond_stack, mesg);
25259 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
25260 rb_str_resize(mesg, 0);
25261 append_bitstack_value(p, p->cmdarg_stack, mesg);
25262 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
25263 if (p->debug_output == rb_ractor_stdout())
25264 p->debug_output = rb_ractor_stderr();
25269rb_parser_set_pos(
YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
25271 yylloc->beg_pos.lineno = sourceline;
25272 yylloc->beg_pos.column = beg_pos;
25273 yylloc->end_pos.lineno = sourceline;
25274 yylloc->end_pos.column = end_pos;
25281 int sourceline = here->sourceline;
25282 int beg_pos = (int)here->offset - here->quote
25283 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
25284 int end_pos = (int)here->offset + here->length + here->quote;
25286 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25292 yylloc->beg_pos.lineno = p->delayed.beg_line;
25293 yylloc->beg_pos.column = p->delayed.beg_col;
25294 yylloc->end_pos.lineno = p->delayed.end_line;
25295 yylloc->end_pos.column = p->delayed.end_col;
25303 int sourceline = p->ruby_sourceline;
25304 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
25305 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
25306 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25312 yylloc->end_pos = yylloc->beg_pos;
25320 int sourceline = p->ruby_sourceline;
25321 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
25322 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
25323 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25329 int sourceline = p->ruby_sourceline;
25330 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
25331 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
25332 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25339 if (!
id)
return -1;
25342 *err =
"Can't change the value of self";
25345 *err =
"Can't assign to nil";
25348 *err =
"Can't assign to true";
25350 case keyword_false:
25351 *err =
"Can't assign to false";
25353 case keyword__FILE__:
25354 *err =
"Can't assign to __FILE__";
25356 case keyword__LINE__:
25357 *err =
"Can't assign to __LINE__";
25359 case keyword__ENCODING__:
25360 *err =
"Can't assign to __ENCODING__";
25363 switch (id_type(
id)) {
25365 if (dyna_in_block(p)) {
25366 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
25367 compile_error(p,
"Can't assign to numbered parameter _%d",
25368 NUMPARAM_ID_TO_IDX(
id));
25371 if (dvar_curr(p,
id))
return NODE_DASGN;
25372 if (dvar_defined(p,
id))
return NODE_DASGN;
25373 if (local_id(p,
id))
return NODE_LASGN;
25378 if (!local_id(p,
id)) local_var(p,
id);
25382 case ID_GLOBAL:
return NODE_GASGN;
25383 case ID_INSTANCE:
return NODE_IASGN;
25385 if (!p->ctxt.in_def)
return NODE_CDECL;
25386 *err =
"dynamic constant assignment";
25388 case ID_CLASS:
return NODE_CVASGN;
25390 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
25398 const char *err = 0;
25399 int node_type = assignable0(p,
id, &err);
25400 switch (node_type) {
25401 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
25402 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
25403 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
25404 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
25405 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, p->ctxt.shareable_constant_value, loc);
25406 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
25410 if (err) yyerror1(loc, err);
25412 if (err) set_value(assign_error(p, err, p->s_lvalue));
25414 return NEW_ERROR(loc);
25421 if (name == idUScore)
return 1;
25422 if (!is_local_id(name))
return 0;
25423 s = rb_id2str(name);
25425 return RSTRING_PTR(s)[0] ==
'_';
25431 if (dyna_in_block(p)) {
25432 if (dvar_curr(p, name)) {
25433 if (is_private_local_id(p, name))
return 1;
25434 yyerror0(
"duplicated argument name");
25436 else if (dvar_defined(p, name) || local_id(p, name)) {
25437 vtable_add(p->lvtbl->vars, name);
25438 if (p->lvtbl->used) {
25439 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
25445 if (local_id(p, name)) {
25446 if (is_private_local_id(p, name))
return 1;
25447 yyerror0(
"duplicated argument name");
25456 shadowing_lvar_0(p, name);
25464 if (!is_local_id(name)) {
25465 compile_error(p,
"invalid local variable - %"PRIsVALUE,
25469 if (!shadowing_lvar_0(p, name))
return;
25472 if (dvar_defined_ref(p, name, &vidp)) {
25473 if (vidp) *vidp |= LVAR_USED;
25480 NODE *block = 0, *kwds = 0;
25481 if (args && nd_type_p(args, NODE_BLOCK_PASS)) {
25482 block = RNODE_BLOCK_PASS(args)->nd_body;
25483 args = RNODE_BLOCK_PASS(args)->nd_head;
25485 if (args && nd_type_p(args, NODE_ARGSCAT)) {
25486 args = RNODE_ARGSCAT(args)->nd_body;
25488 if (args && nd_type_p(args, NODE_ARGSPUSH)) {
25489 kwds = RNODE_ARGSPUSH(args)->nd_body;
25492 for (
NODE *next = args; next && nd_type_p(next, NODE_LIST);
25493 next = RNODE_LIST(next)->nd_next) {
25494 kwds = RNODE_LIST(next)->nd_head;
25497 if (kwds && nd_type_p(kwds, NODE_HASH) && !RNODE_HASH(kwds)->nd_brace) {
25498 yyerror1(&kwds->nd_loc,
"keyword arg given in index assignment");
25501 yyerror1(&block->nd_loc,
"block arg given in index assignment");
25508 aryset_check(p, idx);
25509 return NEW_ATTRASGN(recv, tASET, idx, loc);
25515 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
25516 compile_error(p,
"both block arg and actual block given");
25523 if (!CALL_Q_P(atype))
id = rb_id_attrset(
id);
25524 return NEW_ATTRASGN(recv,
id, 0, loc);
25531# define ERR(...) (compile_error(p, __VA_ARGS__), Qtrue)
25533# define ERR(...) rb_sprintf(__VA_ARGS__)
25535 switch (nd_type(node)) {
25537 return ERR(
"Can't set variable $%ld", RNODE_NTH_REF(node)->nd_nth);
25538 case NODE_BACK_REF:
25539 return ERR(
"Can't set variable $%c", (
int)RNODE_BACK_REF(node)->nd_nth);
25548 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
25549 switch (nd_type(node1)) {
25551 return list_append(p, node1, node2);
25552 case NODE_BLOCK_PASS:
25553 RNODE_BLOCK_PASS(node1)->nd_head = arg_append(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25554 node1->nd_loc.end_pos = RNODE_BLOCK_PASS(node1)->nd_head->nd_loc.end_pos;
25556 case NODE_ARGSPUSH:
25557 RNODE_ARGSPUSH(node1)->nd_body = list_append(p, NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, &RNODE_ARGSPUSH(node1)->nd_body->nd_loc), node2);
25558 node1->nd_loc.end_pos = RNODE_ARGSPUSH(node1)->nd_body->nd_loc.end_pos;
25559 nd_set_type(node1, NODE_ARGSCAT);
25562 if (!nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25563 RNODE_ARGSCAT(node1)->nd_body = list_append(p, RNODE_ARGSCAT(node1)->nd_body, node2);
25564 node1->nd_loc.end_pos = RNODE_ARGSCAT(node1)->nd_body->nd_loc.end_pos;
25567 return NEW_ARGSPUSH(node1, node2, loc);
25573 if (!node2)
return node1;
25574 switch (nd_type(node1)) {
25575 case NODE_BLOCK_PASS:
25576 if (RNODE_BLOCK_PASS(node1)->nd_head)
25577 RNODE_BLOCK_PASS(node1)->nd_head = arg_concat(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25579 RNODE_LIST(node1)->nd_head = NEW_LIST(node2, loc);
25581 case NODE_ARGSPUSH:
25582 if (!nd_type_p(node2, NODE_LIST))
break;
25583 RNODE_ARGSPUSH(node1)->nd_body = list_concat(NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, loc), node2);
25584 nd_set_type(node1, NODE_ARGSCAT);
25587 if (!nd_type_p(node2, NODE_LIST) ||
25588 !nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25589 RNODE_ARGSCAT(node1)->nd_body = list_concat(RNODE_ARGSCAT(node1)->nd_body, node2);
25592 return NEW_ARGSCAT(node1, node2, loc);
25599 if ((n1 = splat_array(args)) != 0) {
25600 return list_append(p, n1, last_arg);
25602 return arg_append(p, args, last_arg, loc);
25609 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
25610 return list_concat(n1, rest_arg);
25612 return arg_concat(p, args, rest_arg, loc);
25616splat_array(
NODE* node)
25618 if (nd_type_p(node, NODE_SPLAT)) node = RNODE_SPLAT(node)->nd_head;
25619 if (nd_type_p(node, NODE_LIST))
return node;
25628 switch (nd_type(rhs)) {
25630 if (local_id_ref(p, RNODE_LASGN(rhs)->nd_vid, &vidp)) {
25631 if (vidp) *vidp |= LVAR_USED;
25635 if (dvar_defined_ref(p, RNODE_DASGN(rhs)->nd_vid, &vidp)) {
25636 if (vidp) *vidp |= LVAR_USED;
25641 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
25642 mark_lvar_used(p, rhs->nd_head);
25649static int is_static_content(
NODE *node);
25654 if (!lhs)
return 0;
25656 switch (nd_type(lhs)) {
25664 set_nd_value(p, lhs, rhs);
25665 nd_set_loc(lhs, loc);
25668 case NODE_ATTRASGN:
25669 RNODE_ATTRASGN(lhs)->nd_args = arg_append(p, RNODE_ATTRASGN(lhs)->nd_args, rhs, loc);
25670 nd_set_loc(lhs, loc);
25684 NODE *void_node = 0, *vn;
25687 rb_warning0(
"empty expression");
25690 switch (nd_type(node)) {
25692 vn = RNODE_ENSURE(node)->nd_head;
25693 node = RNODE_ENSURE(node)->nd_ensr;
25695 if (vn && (vn = value_expr_check(p, vn))) {
25702 vn = RNODE_RESCUE(node)->nd_head;
25703 if (!vn || !(vn = value_expr_check(p, vn))) {
25704 if (!RNODE_RESCUE(node)->nd_else)
return NULL;
25706 if (!void_node) void_node = vn;
25707 for (
NODE *r = RNODE_RESCUE(node)->nd_resq; r; r = RNODE_RESBODY(r)->nd_next) {
25708 if (!nd_type_p(r, NODE_RESBODY)) {
25709 compile_error(p,
"unexpected node");
25712 if (!(vn = value_expr_check(p, RNODE_RESBODY(r)->nd_body))) {
25715 if (!void_node) void_node = vn;
25717 node = RNODE_RESCUE(node)->nd_else;
25718 if (!node)
return void_node;
25730 for (node = RNODE_CASE(node)->nd_body;
25731 node && nd_type_p(node, NODE_WHEN);
25732 node = RNODE_WHEN(node)->nd_next) {
25733 if (!(vn = value_expr_check(p, RNODE_WHEN(node)->nd_body))) {
25736 if (!void_node) void_node = vn;
25742 NODE *in = RNODE_CASE3(node)->nd_body;
25743 if (!in || !nd_type_p(in, NODE_IN)) {
25744 compile_error(p,
"unexpected node");
25747 if (!RNODE_IN(in)->nd_body) {
25752 vn = value_expr_check(p, RNODE_IN(in)->nd_body);
25753 if (!vn)
return NULL;
25754 if (!void_node) void_node = vn;
25755 in = RNODE_IN(in)->nd_next;
25756 }
while (in && nd_type_p(in, NODE_IN));
25762 while (RNODE_BLOCK(node)->nd_next) {
25763 vn = value_expr_check(p, RNODE_BLOCK(node)->nd_head);
25765 node = RNODE_BLOCK(node)->nd_next;
25767 node = RNODE_BLOCK(node)->nd_head;
25771 node = RNODE_BEGIN(node)->nd_body;
25776 if (!RNODE_IF(node)->nd_body) {
25779 else if (!RNODE_IF(node)->nd_else) {
25782 vn = value_expr_check(p, RNODE_IF(node)->nd_body);
25783 if (!vn)
return NULL;
25784 if (!void_node) void_node = vn;
25785 node = RNODE_IF(node)->nd_else;
25798 mark_lvar_used(p, node);
25810 return void_node ? void_node : node;
25816 NODE *void_node = value_expr_check(p, node);
25818 yyerror1(&void_node->nd_loc,
"void value expression");
25828 const char *useless = 0;
25832 if (!node || !(node = nd_once_body(node)))
return;
25833 switch (nd_type(node)) {
25835 switch (RNODE_OPCALL(node)->nd_mid) {
25854 useless = rb_id2name(RNODE_OPCALL(node)->nd_mid);
25865 case NODE_BACK_REF:
25866 useless =
"a variable";
25869 useless =
"a constant";
25874 case NODE_ENCODING:
25877 case NODE_RATIONAL:
25878 case NODE_IMAGINARY:
25883 useless =
"a literal";
25908 useless =
"defined?";
25913 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
25921 NODE *
const n = node;
25923 if (!node)
return n;
25924 if (!nd_type_p(node, NODE_BLOCK))
return n;
25926 while (RNODE_BLOCK(node)->nd_next) {
25927 void_expr(p, RNODE_BLOCK(node)->nd_head);
25928 node = RNODE_BLOCK(node)->nd_next;
25930 return RNODE_BLOCK(node)->nd_head;
25934remove_begin(
NODE *node)
25936 NODE **n = &node, *n1 = node;
25937 while (n1 && nd_type_p(n1, NODE_BEGIN) && RNODE_BEGIN(n1)->nd_body) {
25938 *n = n1 = RNODE_BEGIN(n1)->nd_body;
25946 NODE *node = *body;
25949 *body = NEW_NIL(&NULL_LOC);
25952#define subnodes(type, n1, n2) \
25953 ((!type(node)->n1) ? (type(node)->n2 ? (body = &type(node)->n2, 1) : 0) : \
25954 (!type(node)->n2) ? (body = &type(node)->n1, 1) : \
25955 (reduce_nodes(p, &type(node)->n1), body = &type(node)->n2, 1))
25958 int newline = (int)nd_fl_newline(node);
25959 switch (nd_type(node)) {
25964 if (newline)
return;
25969 *body = node = RNODE_BEGIN(node)->nd_body;
25970 if (newline && node) nd_set_fl_newline(node);
25973 body = &RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head;
25977 if (subnodes(RNODE_IF, nd_body, nd_else))
break;
25980 body = &RNODE_CASE(node)->nd_body;
25983 if (!subnodes(RNODE_WHEN, nd_body, nd_next))
goto end;
25986 body = &RNODE_ENSURE(node)->nd_head;
25990 if (RNODE_RESCUE(node)->nd_else) {
25991 body = &RNODE_RESCUE(node)->nd_resq;
25994 if (!subnodes(RNODE_RESCUE, nd_head, nd_resq))
goto end;
26000 if (newline && node) nd_set_fl_newline(node);
26007is_static_content(
NODE *node)
26009 if (!node)
return 1;
26010 switch (nd_type(node)) {
26012 if (!(node = RNODE_HASH(node)->nd_head))
break;
26015 if (!is_static_content(RNODE_LIST(node)->nd_head))
return 0;
26016 }
while ((node = RNODE_LIST(node)->nd_next) != 0);
26021 case NODE_ENCODING:
26024 case NODE_RATIONAL:
26025 case NODE_IMAGINARY:
26041 switch (nd_type(node)) {
26055 if (!get_nd_value(p, node))
return 1;
26056 if (is_static_content(get_nd_value(p, node))) {
26058 rb_warn0L(nd_line(get_nd_value(p, node)),
"found '= literal' in conditional, should be ==");
26069#define SWITCH_BY_COND_TYPE(t, w, arg) do { \
26071 case COND_IN_OP: break; \
26072 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
26073 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
26082 enum node_type
type;
26084 if (node == 0)
return 0;
26086 type = nd_type(node);
26087 value_expr(p, node);
26088 if (
type == NODE_INTEGER) {
26089 if (!e_option_supplied(p)) rb_warn0L(nd_line(node),
"integer literal in flip-flop");
26090 ID lineno = rb_intern(
"$.");
26091 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
26093 return cond0(p, node, COND_IN_FF, loc,
true);
26099 if (node == 0)
return 0;
26100 if (!(node = nd_once_body(node)))
return 0;
26101 assign_in_cond(p, node);
26103 switch (nd_type(node)) {
26105 RNODE_BEGIN(node)->nd_body = cond0(p, RNODE_BEGIN(node)->nd_body,
type, loc, top);
26112 SWITCH_BY_COND_TYPE(
type, warn,
"string ");
26116 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ");
26117 nd_set_type(node, NODE_MATCH);
26121 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning,
"regex ");
26123 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
26127 NODE *end = RNODE_BLOCK(node)->nd_end;
26128 NODE **expr = &RNODE_BLOCK(end)->nd_head;
26129 if (top) top = node == end;
26130 *expr = cond0(p, *expr,
type, loc, top);
26136 RNODE_AND(node)->nd_1st = cond0(p, RNODE_AND(node)->nd_1st, COND_IN_COND, loc,
true);
26137 RNODE_AND(node)->nd_2nd = cond0(p, RNODE_AND(node)->nd_2nd, COND_IN_COND, loc,
true);
26143 RNODE_DOT2(node)->nd_beg = range_op(p, RNODE_DOT2(node)->nd_beg, loc);
26144 RNODE_DOT2(node)->nd_end = range_op(p, RNODE_DOT2(node)->nd_end, loc);
26145 switch (nd_type(node)) {
26147 nd_set_type(node,NODE_FLIP2);
26152 nd_set_type(node, NODE_FLIP3);
26161 SWITCH_BY_COND_TYPE(
type, warning,
"symbol ");
26165 case NODE_ENCODING:
26168 case NODE_RATIONAL:
26169 case NODE_IMAGINARY:
26170 SWITCH_BY_COND_TYPE(
type, warning,
"");
26182 if (node == 0)
return 0;
26183 return cond0(p, node, COND_IN_COND, loc,
true);
26189 if (node == 0)
return 0;
26190 return cond0(p, node, COND_IN_OP, loc,
true);
26197 return NEW_NIL(&loc);
26203 if (!cc)
return right;
26204 cc = cond0(p, cc, COND_IN_COND, loc,
true);
26205 return newline_node(NEW_IF(cc, left, right, loc, if_keyword_loc, then_keyword_loc, end_keyword_loc));
26211 if (!cc)
return right;
26212 cc = cond0(p, cc, COND_IN_COND, loc,
true);
26213 return newline_node(NEW_UNLESS(cc, left, right, loc, keyword_loc, then_keyword_loc, end_keyword_loc));
26216#define NEW_AND_OR(type, f, s, loc, op_loc) (type == NODE_AND ? NEW_AND(f,s,loc,op_loc) : NEW_OR(f,s,loc,op_loc))
26222logop_valid_tail(
NODE *tail,
enum node_type
type)
26225 return tail && nd_type_p(tail,
type) &&
26226 ((second = RNODE_AND(tail)->nd_2nd) == 0 || !nd_type_p(second,
type));
26233 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
26236 NODE *prev_head = p->logop.head;
26237 NODE *prev_tail = p->logop.tail;
26238 NODE *node, *second;
26239 value_expr(p, left);
26240 if (left && nd_type_p(left,
type)) {
26246 if (left == prev_head && logop_valid_tail(prev_tail,
type)) {
26251 while ((second = RNODE_AND(node)->nd_2nd) != 0 && nd_type_p(second,
type)) {
26255 second = RNODE_AND(node)->nd_2nd;
26256 RNODE_AND(node)->nd_2nd = NEW_AND_OR(
type, second, right, loc, op_loc);
26257 nd_set_line(RNODE_AND(node)->nd_2nd, op_loc->beg_pos.lineno);
26258 left->nd_loc.end_pos = loc->end_pos;
26259 p->logop.head = left;
26260 p->logop.tail = RNODE_AND(node)->nd_2nd;
26263 op = NEW_AND_OR(
type, left, right, loc, op_loc);
26264 nd_set_line(op, op_loc->beg_pos.lineno);
26268 p->logop.head = op;
26269 if (right == prev_head && logop_valid_tail(prev_tail,
type)) {
26270 p->logop.tail = prev_tail;
26272 else if (right && nd_type_p(right,
type)) {
26274 while ((second = RNODE_AND(node)->nd_2nd) != 0 && nd_type_p(second,
type)) {
26277 p->logop.tail = node;
26280 p->logop.tail = op;
26290 if (nd_type_p(node, NODE_BLOCK_PASS)) {
26291 compile_error(p,
"block argument should not be given");
26299 no_blockarg(p, node);
26300 if (nd_type_p(node, NODE_LIST) && !RNODE_LIST(node)->nd_next) {
26301 node = RNODE_LIST(node)->nd_head;
26310 switch (nd_type(node)) {
26312 RNODE_INTEGER(node)->minus = TRUE;
26315 RNODE_FLOAT(node)->minus = TRUE;
26317 case NODE_RATIONAL:
26318 RNODE_RATIONAL(node)->minus = TRUE;
26320 case NODE_IMAGINARY:
26321 RNODE_IMAGINARY(node)->minus = TRUE;
26324 node->nd_loc = *loc;
26332 if (!node1)
return (
NODE *)node2;
26333 node2->nd_head = node1;
26334 nd_set_first_lineno(node2, nd_first_lineno(node1));
26335 nd_set_first_column(node2, nd_first_column(node1));
26336 return (
NODE *)node2;
26344 if (args->pre_args_num)
return false;
26345 if (args->post_args_num)
return false;
26346 if (args->rest_arg)
return false;
26347 if (args->opt_args)
return false;
26348 if (args->block_arg)
return false;
26349 if (args->kw_args)
return false;
26350 if (args->kw_rest_arg)
return false;
26359 if (args->forwarding) {
26361 yyerror1(&RNODE(tail)->nd_loc,
"... after rest argument");
26364 rest_arg = idFWD_REST;
26367 args->pre_args_num = pre_args ? pre_args->nd_plen : 0;
26368 args->pre_init = pre_args ? pre_args->nd_next : 0;
26370 args->post_args_num = post_args ? post_args->nd_plen : 0;
26371 args->post_init = post_args ? post_args->nd_next : 0;
26372 args->first_post_arg = post_args ? post_args->nd_pid : 0;
26374 args->rest_arg = rest_arg;
26376 args->opt_args = opt_args;
26378 nd_set_loc(RNODE(tail), loc);
26388 if (p->error_p)
return node;
26390 if (block == idNil) {
26392 args->no_blockarg = TRUE;
26394 args->block_arg = block;
26395 args->kw_args = kw_args;
26404 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
26405 struct vtable *vtargs = p->lvtbl->args;
26408 if (block) block = vtargs->tbl[vtargs->pos-1];
26409 vtable_pop(vtargs, !!block + !!kw_rest_arg);
26410 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
26412 if (!NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body)))
26414 --required_kw_vars;
26415 kwn = kwn->nd_next;
26418 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
26419 ID vid = get_nd_vid(p, kwn->nd_body);
26420 if (NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body))) {
26421 *required_kw_vars++ = vid;
26428 arg_var(p, kw_bits);
26429 if (kw_rest_arg) arg_var(p, kw_rest_arg);
26430 if (block) arg_var(p, block);
26432 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
26434 else if (kw_rest_arg == idNil) {
26435 args->no_kwarg = 1;
26437 else if (kw_rest_arg) {
26438 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
26447 if (max_numparam > NO_PARAM || it_id) {
26449 YYLTYPE loc = RUBY_INIT_YYLLOC();
26450 args = new_empty_args_tail(p, 0);
26451 nd_set_loc(RNODE(args), &loc);
26453 args->nd_ainfo.pre_args_num = it_id ? 1 : max_numparam;
26461 RNODE_ARYPTN(aryptn)->nd_pconst = constant;
26464 NODE *pre_args = NEW_LIST(pre_arg, loc);
26465 if (RNODE_ARYPTN(aryptn)->pre_args) {
26466 RNODE_ARYPTN(aryptn)->pre_args = list_concat(pre_args, RNODE_ARYPTN(aryptn)->pre_args);
26469 RNODE_ARYPTN(aryptn)->pre_args = pre_args;
26479 rest_arg = rest_arg ? rest_arg : NODE_SPECIAL_NO_NAME_REST;
26484 NODE *node = NEW_ARYPTN(pre_args, rest_arg, post_args, loc);
26492 RNODE_FNDPTN(fndptn)->nd_pconst = constant;
26500 pre_rest_arg = pre_rest_arg ? pre_rest_arg : NODE_SPECIAL_NO_NAME_REST;
26501 post_rest_arg = post_rest_arg ? post_rest_arg : NODE_SPECIAL_NO_NAME_REST;
26502 NODE *node = NEW_FNDPTN(pre_rest_arg, args, post_rest_arg, loc);
26510 RNODE_HSHPTN(hshptn)->nd_pconst = constant;
26517 NODE *node, *kw_rest_arg_node;
26519 if (kw_rest_arg == idNil) {
26520 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
26522 else if (kw_rest_arg) {
26523 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
26526 kw_rest_arg_node = NULL;
26529 node = NEW_HSHPTN(0, kw_args, kw_rest_arg_node, loc);
26538 return NEW_SYM(STR_NEW0(), loc);
26541 switch (nd_type(node)) {
26543 nd_set_type(node, NODE_DSYM);
26544 nd_set_loc(node, loc);
26547 node = str_to_sym_node(p, node, loc);
26550 node = NEW_DSYM(0, 1, NEW_LIST(node, loc), loc);
26557nd_type_st_key_enable_p(
NODE *node)
26559 switch (nd_type(node)) {
26562 case NODE_RATIONAL:
26563 case NODE_IMAGINARY:
26569 case NODE_ENCODING:
26579 switch (nd_type(node)) {
26581 return rb_node_str_string_val(node);
26583 return rb_node_integer_literal_val(node);
26585 return rb_node_float_literal_val(node);
26586 case NODE_RATIONAL:
26587 return rb_node_rational_literal_val(node);
26588 case NODE_IMAGINARY:
26589 return rb_node_imaginary_literal_val(node);
26591 return rb_node_sym_string_val(node);
26593 return rb_node_regx_string_val(node);
26595 return rb_node_line_lineno_val(node);
26596 case NODE_ENCODING:
26597 return rb_node_encoding_val(node);
26599 return rb_node_file_path_val(node);
26601 rb_bug(
"unexpected node: %s", ruby_node_name(nd_type(node)));
26610 p->warn_duplicate_keys_table = st_init_table_with_size(&literal_type, RNODE_LIST(hash)->as.nd_alen / 2);
26611 while (hash && RNODE_LIST(hash)->nd_next) {
26612 NODE *head = RNODE_LIST(hash)->nd_head;
26613 NODE *value = RNODE_LIST(hash)->nd_next;
26614 NODE *next = RNODE_LIST(value)->nd_next;
26623 if (nd_type_st_key_enable_p(head)) {
26624 key = (st_data_t)head;
26626 if (st_delete(p->warn_duplicate_keys_table, &key, &data)) {
26627 rb_warn2L(nd_line((
NODE *)data),
26628 "key %+"PRIsWARN
" is duplicated and overwritten on line %d",
26629 nd_value(p, head), WARN_I(nd_line(head)));
26631 st_insert(p->warn_duplicate_keys_table, (st_data_t)key, (st_data_t)hash);
26635 st_free_table(p->warn_duplicate_keys_table);
26636 p->warn_duplicate_keys_table = NULL;
26642 if (hash) warn_duplicate_keys(p, hash);
26643 return NEW_HASH(hash, loc);
26649 if (is_private_local_id(p,
id)) {
26652 if (st_is_member(p->pvtbl,
id)) {
26653 yyerror1(loc,
"duplicated variable name");
26655 else if (p->ctxt.in_alt_pattern &&
id) {
26656 yyerror1(loc,
"variable capture in alternative pattern");
26659 p->ctxt.capture_in_pattern = 1;
26660 st_insert(p->pvtbl, (st_data_t)
id, 0);
26668 p->pktbl = st_init_numtable();
26670 else if (st_is_member(p->pktbl, key)) {
26671 yyerror1(loc,
"duplicated key name");
26674 st_insert(p->pktbl, (st_data_t)key, 0);
26680 return NEW_HASH(hash, loc);
26689 ID vid = get_nd_vid(p, lhs);
26690 YYLTYPE lhs_loc = lhs->nd_loc;
26696 const YYLTYPE *read_loc = nd_type_p(lhs, NODE_CDECL) ? loc : &lhs_loc;
26698 set_nd_value(p, lhs, rhs);
26699 nd_set_loc(lhs, loc);
26700 asgn = NEW_OP_ASGN_OR(gettable(p, vid, read_loc), lhs, loc);
26702 else if (op == tANDOP) {
26703 set_nd_value(p, lhs, rhs);
26704 nd_set_loc(lhs, loc);
26705 asgn = NEW_OP_ASGN_AND(gettable(p, vid, read_loc), lhs, loc);
26709 rhs = NEW_CALL(gettable(p, vid, read_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
26710 set_nd_value(p, asgn, rhs);
26711 nd_set_loc(asgn, loc);
26715 asgn = NEW_ERROR(loc);
26727 aryset_check(p, args);
26728 args = make_list(args, args_loc);
26729 asgn = NEW_OP_ASGN1(ary, op, args, rhs, loc, call_operator_loc, opening_loc, closing_loc, binary_operator_loc);
26741 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc, call_operator_loc, message_loc, binary_operator_loc);
26752 asgn = NEW_OP_CDECL(lhs, op, rhs, ctxt.shareable_constant_value, loc);
26755 asgn = NEW_ERROR(loc);
26764 if (p->ctxt.in_def) {
26766 yyerror1(loc,
"dynamic constant assignment");
26768 set_value(assign_error(p,
"dynamic constant assignment", p->s_lvalue));
26771 return NEW_CDECL(0, 0, (path), p->ctxt.shareable_constant_value, loc);
26778 a = dispatch2(assign_error, ERR_MESG(), a);
26787 NODE *result = head;
26789 NODE *tmp = rescue_else ? rescue_else : rescue;
26790 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
26792 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
26793 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
26796 result = NEW_ENSURE(result, ensure, loc);
26798 fixpos(result, head);
26807 if (!local->used)
return;
26808 cnt = local->used->pos;
26809 if (cnt != local->vars->pos) {
26810 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
26813 ID *v = local->vars->tbl;
26814 ID *u = local->used->tbl;
26815 for (
int i = 0; i < cnt; ++i) {
26816 if (!v[i] || (u[i] & LVAR_USED))
continue;
26817 if (is_private_local_id(p, v[i]))
continue;
26818 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
26827 int inherits_dvars = toplevel_scope && compile_for_eval;
26831 local->prev = p->lvtbl;
26832 local->args = vtable_alloc(0);
26833 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
26835 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
26836 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
26838 local->numparam.outer = 0;
26839 local->numparam.inner = 0;
26840 local->numparam.current = 0;
26842 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
26844# if WARN_PAST_SCOPE
26855 while (!DVARS_TERMINAL_P(table)) {
26856 struct vtable *cur_table = table;
26857 table = cur_table->prev;
26858 vtable_free(cur_table);
26865 vtable_chain_free(p, local->used);
26867# if WARN_PAST_SCOPE
26868 vtable_chain_free(p, local->past);
26871 vtable_chain_free(p, local->args);
26872 vtable_chain_free(p, local->vars);
26874 ruby_xfree_sized(local,
sizeof(
struct local_vars));
26881 if (p->lvtbl->used) {
26882 warn_unused_var(p, p->lvtbl);
26885 local_free(p, p->lvtbl);
26895 int cnt_args = vtable_size(p->lvtbl->args);
26896 int cnt_vars = vtable_size(p->lvtbl->vars);
26897 int cnt = cnt_args + cnt_vars;
26901 if (cnt <= 0)
return 0;
26902 tbl = rb_ast_new_local_table(p->ast, cnt);
26903 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
26905 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
26906 ID id = p->lvtbl->vars->tbl[i];
26907 if (!vtable_included(p->lvtbl->args,
id)) {
26908 tbl->ids[j++] = id;
26912 tbl = rb_ast_resize_latest_local_table(p->ast, j);
26921 if (!NUMPARAM_ID_P(
id))
return;
26922 compile_error(p,
"_%d is reserved for numbered parameter",
26923 NUMPARAM_ID_TO_IDX(
id));
26929 numparam_name(p,
id);
26930 vtable_add(p->lvtbl->args,
id);
26936 numparam_name(p,
id);
26937 vtable_add(p->lvtbl->vars,
id);
26938 if (p->lvtbl->used) {
26939 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
26947 return rb_local_defined(
id, iseq);
26954 struct vtable *vars, *args, *used;
26956 vars = p->lvtbl->vars;
26957 args = p->lvtbl->args;
26958 used = p->lvtbl->used;
26960 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26963 if (used) used = used->prev;
26966 if (vars && vars->prev == DVARS_INHERIT) {
26967 return rb_parser_local_defined(p,
id, p->parent_iseq);
26969 else if (vtable_included(args,
id)) {
26973 int i = vtable_included(vars,
id);
26974 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
26982 return local_id_ref(p,
id, NULL);
26988 if (local_id(p, idFWD_ALL))
return TRUE;
26989 compile_error(p,
"unexpected ...");
26996 arg_var(p, idFWD_REST);
26997 arg_var(p, idFWD_KWREST);
26998 arg_var(p, idFWD_BLOCK);
26999 arg_var(p, idFWD_ALL);
27005 bool conflict =
false;
27007 struct vtable *vars, *args;
27009 vars = p->lvtbl->vars;
27010 args = p->lvtbl->args;
27012 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
27013 conflict |= (vtable_included(args, arg) && !(all && vtable_included(args, all)));
27018 bool found =
false;
27019 if (vars && vars->prev == DVARS_INHERIT && !found) {
27020 found = (rb_parser_local_defined(p, arg, p->parent_iseq) &&
27021 !(all && rb_parser_local_defined(p, all, p->parent_iseq)));
27024 found = (vtable_included(args, arg) &&
27025 !(all && vtable_included(args, all)));
27029 compile_error(p,
"no anonymous %s parameter", var);
27031 else if (conflict) {
27032 compile_error(p,
"anonymous %s parameter is also used within block", var);
27039 NODE *rest = NEW_LVAR(idFWD_REST, loc);
27040 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
27042 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc, &NULL_LOC);
27043 block->forwarding = TRUE;
27044 args = arg_append(p, args, new_hash(p, kwrest, loc), argsloc);
27045 return arg_blk_pass(args, block);
27052 NODE *inner = local->numparam.inner;
27053 if (!local->numparam.outer) {
27054 local->numparam.outer = local->numparam.current;
27056 local->numparam.inner = 0;
27057 local->numparam.current = 0;
27068 local->numparam.inner = prev_inner;
27070 else if (local->numparam.current) {
27072 local->numparam.inner = local->numparam.current;
27074 if (p->max_numparam > NO_PARAM) {
27076 local->numparam.current = local->numparam.outer;
27077 local->numparam.outer = 0;
27081 local->numparam.current = 0;
27086static const struct vtable *
27089 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
27090 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
27091 if (p->lvtbl->used) {
27092 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
27094 return p->lvtbl->args;
27100 struct vtable *tmp = *vtblp;
27101 *vtblp = tmp->prev;
27102# if WARN_PAST_SCOPE
27103 if (p->past_scope_enabled) {
27104 tmp->prev = p->lvtbl->past;
27105 p->lvtbl->past = tmp;
27117 if ((tmp = p->lvtbl->used) != 0) {
27118 warn_unused_var(p, p->lvtbl);
27119 p->lvtbl->used = p->lvtbl->used->prev;
27122 dyna_pop_vtable(p, &p->lvtbl->args);
27123 dyna_pop_vtable(p, &p->lvtbl->vars);
27129 while (p->lvtbl->args != lvargs) {
27131 if (!p->lvtbl->args) {
27133 ruby_xfree_sized(p->lvtbl,
sizeof(*p->lvtbl));
27143 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
27150 struct vtable *vars, *args, *used;
27153 args = p->lvtbl->args;
27154 vars = p->lvtbl->vars;
27155 used = p->lvtbl->used;
27157 while (!DVARS_TERMINAL_P(vars)) {
27158 if (vtable_included(args,
id)) {
27161 if ((i = vtable_included(vars,
id)) != 0) {
27162 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
27167 if (!vidrefp) used = 0;
27168 if (used) used = used->prev;
27171 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
27172 return rb_dvar_defined(
id, p->parent_iseq);
27182 return dvar_defined_ref(p,
id, NULL);
27188 return (vtable_included(p->lvtbl->args,
id) ||
27189 vtable_included(p->lvtbl->vars,
id));
27196 "regexp encoding option '%c' differs from source encoding '%s'",
27197 c, rb_enc_name(rb_parser_str_get_encoding(str)));
27204 int idx = rb_enc_find_index(name);
27206 rb_bug(
"unknown encoding name: %s", name);
27209 return rb_enc_from_index(idx);
27218 case ENC_ASCII8BIT:
27219 enc = rb_ascii8bit_encoding();
27222 enc = find_enc(p,
"EUC-JP");
27224 case ENC_Windows_31J:
27225 enc = find_enc(p,
"Windows-31J");
27228 enc = rb_utf8_encoding();
27241 int c = RE_OPTION_ENCODING_IDX(options);
27247 char_to_option_kcode(c, &opt, &idx);
27248 enc = kcode_to_enc(p, idx);
27249 if (enc != rb_parser_str_get_encoding(str) &&
27250 !rb_parser_is_ascii_string(p, str)) {
27253 rb_parser_string_set_encoding(str, enc);
27255 else if (RE_OPTION_ENCODING_NONE(options)) {
27256 if (!PARSER_ENCODING_IS_ASCII8BIT(p, str) &&
27257 !rb_parser_is_ascii_string(p, str)) {
27261 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
27263 else if (rb_is_usascii_enc(p->enc)) {
27264 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
27276 int c = rb_reg_fragment_setenc(p, str, options);
27277 if (c) reg_fragment_enc_error(p, str, c);
27280#ifndef UNIVERSAL_PARSER
27286 rb_parser_assignable_func assignable;
27290reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
27291 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
27296 long len = name_end - name;
27297 const char *s = (
const char *)name;
27299 return rb_reg_named_capture_assign_iter_impl(p, s,
len, enc, &arg->succ_block, arg->loc, arg->assignable);
27303reg_named_capture_assign(
struct parser_params* p,
VALUE regexp,
const YYLTYPE *loc, rb_parser_assignable_func assignable)
27308 arg.enc = rb_enc_get(regexp);
27309 arg.succ_block = 0;
27311 arg.assignable = assignable;
27312 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
27314 if (!arg.succ_block)
return 0;
27315 return RNODE_BLOCK(arg.succ_block)->nd_next;
27323 return assignable(p,
id, val, loc);
27327rb_reg_named_capture_assign_iter_impl(
struct parser_params *p,
const char *s,
long len,
27333 if (!
len)
return ST_CONTINUE;
27334 if (!VALID_SYMNAME_P(s,
len, enc, ID_LOCAL))
27335 return ST_CONTINUE;
27337 var = intern_cstr(s,
len, enc);
27338 if (
len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)
len)) {
27339 if (!lvar_defined(p, var))
return ST_CONTINUE;
27341 node = node_assign(p, assignable(p, var, 0, loc), NEW_SYM(rb_id2str(var), loc), NO_LEX_CTXT, loc);
27342 succ = *succ_block;
27343 if (!succ) succ = NEW_ERROR(loc);
27344 succ = block_append(p, succ, node);
27345 *succ_block = succ;
27346 return ST_CONTINUE;
27354 reg_fragment_setenc(p, str, options);
27355 str2 = rb_str_new_parser_string(str);
27356 return rb_parser_reg_compile(p, str2, options);
27363 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
27373 err = rb_errinfo();
27374 re = parser_reg_compile(p, str, options);
27376 VALUE m = rb_attr_get(rb_errinfo(), idMesg);
27377 rb_set_errinfo(err);
27378 compile_error(p,
"%"PRIsVALUE, m);
27386rb_ruby_parser_set_options(
struct parser_params *p,
int print,
int loop,
int chomp,
int split)
27388 p->do_print = print;
27390 p->do_chomp = chomp;
27391 p->do_split = split;
27397 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
27398 const YYLTYPE *
const LOC = &default_location;
27401 NODE *print = (
NODE *)NEW_FCALL(rb_intern(
"print"),
27402 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
27404 node = block_append(p, node, print);
27408 NODE *irs = NEW_LIST(NEW_GVAR(rb_intern(
"$/"), LOC), LOC);
27411 ID ifs = rb_intern(
"$;");
27412 ID fields = rb_intern(
"$F");
27413 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
27414 NODE *split = NEW_GASGN(fields,
27415 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
27416 rb_intern(
"split"), args, LOC),
27418 node = block_append(p, split, node);
27422 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
27423 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
27426 node = NEW_WHILE((
NODE *)NEW_FCALL(idGets, irs, LOC), node, 1, LOC, &NULL_LOC, &NULL_LOC);
27443 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
27451 p->command_start = TRUE;
27452 p->ruby_sourcefile_string =
Qnil;
27453 p->lex.lpar_beg = -1;
27454 string_buffer_init(p);
27456 p->delayed.token = NULL;
27457 p->frozen_string_literal = -1;
27458 rb_source_hash_init(&p->source_hash);
27460 p->error_buffer =
Qfalse;
27461 p->end_expect_token_locations = NULL;
27466 p->parsing_thread =
Qnil;
27468 p->s_lvalue =
Qnil;
27471 p->debug_buffer =
Qnil;
27472 p->debug_output = rb_ractor_stdout();
27473 p->enc = rb_utf8_encoding();
27478#define rb_ruby_parser_mark ripper_parser_mark
27479#define rb_ruby_parser_free ripper_parser_free
27480#define rb_ruby_parser_memsize ripper_parser_memsize
27484rb_ruby_parser_mark(
void *ptr)
27488 rb_gc_mark(p->ruby_sourcefile_string);
27490 rb_gc_mark(p->error_buffer);
27492 rb_gc_mark(p->value);
27493 rb_gc_mark(p->result);
27494 rb_gc_mark(p->parsing_thread);
27495 rb_gc_mark(p->s_value);
27496 rb_gc_mark(p->s_lvalue);
27497 rb_gc_mark(p->s_value_stack);
27499 rb_gc_mark(p->debug_buffer);
27500 rb_gc_mark(p->debug_output);
27504rb_ruby_parser_free(
void *ptr)
27510 rb_ast_free(p->ast);
27513 if (p->warn_duplicate_keys_table) {
27514 st_free_table(p->warn_duplicate_keys_table);
27519 rb_parser_ary_free(p, p->tokens);
27524 ruby_xfree_sized(p->tokenbuf, p->toksiz);
27527 for (local = p->lvtbl; local; local = prev) {
27528 prev = local->prev;
27529 local_free(p, local);
27534 while ((ptinfo = p->token_info) != 0) {
27535 p->token_info = ptinfo->next;
27539 string_buffer_free(p);
27542 st_free_table(p->pvtbl);
27545 if (CASE_LABELS_ENABLED_P(p->case_labels)) {
27546 st_free_table(p->case_labels);
27549 xfree(p->lex.strterm);
27550 p->lex.strterm = 0;
27556rb_ruby_parser_memsize(
const void *ptr)
27560 size_t size =
sizeof(*p);
27563 for (local = p->lvtbl; local; local = local->prev) {
27564 size +=
sizeof(*local);
27565 if (local->vars) size += local->vars->capa *
sizeof(
ID);
27571#undef rb_reserved_word
27574rb_reserved_word(
const char *str,
unsigned int len)
27576 return reserved_word(str,
len);
27579#ifdef UNIVERSAL_PARSER
27581rb_ruby_parser_allocate(
const rb_parser_config_t *config)
27585 p->config = config;
27590rb_ruby_parser_new(
const rb_parser_config_t *config)
27593 rb_parser_t *p = rb_ruby_parser_allocate(config);
27594 parser_initialize(p);
27599rb_ruby_parser_allocate(
void)
27607rb_ruby_parser_new(
void)
27611 parser_initialize(p);
27620 p->parent_iseq = base;
27627 p->debug_lines = rb_parser_ary_new_capa_for_script_line(p, 10);
27633 p->error_tolerant = 1;
27639 p->keep_tokens = 1;
27640 p->tokens = rb_parser_ary_new_capa_for_ast_token(p, 10);
27652 return p->ruby__end__seen;
27656rb_ruby_parser_set_yydebug(
rb_parser_t *p,
int flag)
27685 return p->debug_output;
27691 p->debug_output = output;
27697 return p->parsing_thread;
27703 p->parsing_thread = parsing_thread;
27707rb_ruby_parser_ripper_initialize(
rb_parser_t *p, rb_parser_lex_gets_func *gets, rb_parser_input_data input,
VALUE sourcefile_string,
const char *sourcefile,
int sourceline)
27709 p->lex.gets = gets;
27710 p->lex.input = input;
27712 p->ruby_sourcefile_string = sourcefile_string;
27713 p->ruby_sourcefile = sourcefile;
27714 p->ruby_sourceline = sourceline;
27730rb_ruby_parser_ruby_sourcefile_string(
rb_parser_t *p)
27732 return p->ruby_sourcefile_string;
27738 return p->ruby_sourceline;
27744 return p->lex.state;
27751 p->ast = rb_ast_new();
27752 ripper_yyparse((
void*)p);
27753 rb_ast_free(p->ast);
27756 p->eval_tree_begin = 0;
27762 return dedent_string(p,
string, width);
27768 return p->lex.input != 0;
27774 parser_initialize(p);
27780 return p->lex.ptok - p->lex.pbeg;
27786 return p->lex.pcur - p->lex.ptok;
27792 return p->lex.lastline;
27796rb_ruby_ripper_lex_state_name(
struct parser_params *p,
int state)
27798 return rb_parser_lex_state_name(p, (
enum lex_state_e)state);
27801#ifdef UNIVERSAL_PARSER
27803rb_ripper_parser_params_allocate(
const rb_parser_config_t *config)
27806 p->config = config;
27812rb_ruby_ripper_parser_allocate(
void)
27820rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
27823 VALUE mesg = p->debug_buffer;
27827 rb_str_vcatf(mesg, fmt, ap);
27829 if (char_at_end(p, mesg, 0) ==
'\n') {
27830 rb_io_write(p->debug_output, mesg);
27831 p->debug_buffer =
Qnil;
27839 int lineno, column;
27842 lineno = loc->end_pos.lineno;
27843 column = loc->end_pos.column;
27846 lineno = p->ruby_sourceline;
27850 rb_io_flush(p->debug_output);
27854 rb_syntax_error_append(p->error_buffer,
27855 p->ruby_sourcefile_string,
27862count_char(
const char *str,
int c)
27865 while (str[n] == c) ++n;
27876rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
27878 if (*yystr ==
'"') {
27879 size_t yyn = 0, bquote = 0;
27880 const char *yyp = yystr;
27886 bquote = count_char(yyp+1,
'\'') + 1;
27887 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
27893 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
27894 if (yyres) memcpy(yyres + yyn, yyp, bquote);
27900 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
27901 if (yyres) memcpy(yyres + yyn, yyp, 3);
27906 goto do_not_strip_quotes;
27910 goto do_not_strip_quotes;
27913 if (*++yyp !=
'\\')
27914 goto do_not_strip_quotes;
27929 do_not_strip_quotes: ;
27932 if (!yyres)
return strlen(yystr);
27934 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
27939#define validate(x) (void)(x)
27968 return rb_funcall(p->value, mid, 3, a, b, c);
27978 return rb_funcall(p->value, mid, 4, a, b, c, d);
27989 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
28002 return rb_funcall(p->value, mid, 7, a, b, c, d, e, f, g);
#define RUBY_ASSERT(...)
Asserts that the given expression is truthy if and only if RUBY_DEBUG is truthy.
#define ENC_CODERANGE_7BIT
Old name of RUBY_ENC_CODERANGE_7BIT.
#define REALLOC_N
Old name of RB_REALLOC_N.
#define ISSPACE
Old name of rb_isspace.
#define ALLOC
Old name of RB_ALLOC.
#define xfree
Old name of ruby_xfree.
#define UNREACHABLE_RETURN
Old name of RBIMPL_UNREACHABLE_RETURN.
#define ZALLOC
Old name of RB_ZALLOC.
#define ENC_CODERANGE_UNKNOWN
Old name of RUBY_ENC_CODERANGE_UNKNOWN.
#define xmalloc
Old name of ruby_xmalloc.
#define ISDIGIT
Old name of rb_isdigit.
#define ASSUME
Old name of RBIMPL_ASSUME.
#define ALLOC_N
Old name of RB_ALLOC_N.
#define MBCLEN_CHARFOUND_LEN(ret)
Old name of ONIGENC_MBCLEN_CHARFOUND_LEN.
#define STRCASECMP
Old name of st_locale_insensitive_strcasecmp.
#define ISALPHA
Old name of rb_isalpha.
#define STRNCASECMP
Old name of st_locale_insensitive_strncasecmp.
#define ISASCII
Old name of rb_isascii.
#define Qnil
Old name of RUBY_Qnil.
#define Qfalse
Old name of RUBY_Qfalse.
#define NIL_P
Old name of RB_NIL_P.
#define MBCLEN_CHARFOUND_P(ret)
Old name of ONIGENC_MBCLEN_CHARFOUND_P.
#define ISPRINT
Old name of rb_isprint.
#define xcalloc
Old name of ruby_xcalloc.
#define ISXDIGIT
Old name of rb_isxdigit.
#define ISCNTRL
Old name of rb_iscntrl.
#define ISALNUM
Old name of rb_isalnum.
void rb_exc_raise(VALUE mesg)
Raises an exception in the current thread.
#define ruby_verbose
This variable controls whether the interpreter is in debug mode.
VALUE rb_eRuntimeError
RuntimeError exception.
VALUE rb_eSyntaxError
SyntaxError exception.
VALUE rb_class_new_instance(int argc, const VALUE *argv, VALUE klass)
Allocates, then initialises an instance of the given class.
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_ary_new(void)
Allocates a new, empty array.
VALUE rb_ary_pop(VALUE ary)
Destructively deletes an element from the end of the passed array and returns what was deleted.
VALUE rb_ary_push(VALUE ary, VALUE elem)
Special case of rb_ary_cat() that it adds only one element.
VALUE rb_ary_entry(VALUE ary, long off)
Queries an element of an array.
#define rb_str_new(str, len)
Allocates an instance of rb_cString.
#define rb_usascii_str_new(str, len)
Identical to rb_str_new, except it generates a string of "US ASCII" encoding.
VALUE rb_str_cat(VALUE dst, const char *src, long srclen)
Destructively appends the passed contents to the string.
#define rb_strlen_lit(str)
Length of a string literal.
#define rb_str_cat_cstr(buf, str)
Identical to rb_str_cat(), except it assumes the passed pointer is a pointer to a C string.
#define rb_str_new_cstr(str)
Identical to rb_str_new, except it assumes the passed pointer is a pointer to a C string.
ID rb_sym2id(VALUE obj)
Converts an instance of rb_cSymbol into an ID.
int len
Length of the buffer.
#define strtod(s, e)
Just another name of ruby_strtod.
#define strdup(s)
Just another name of ruby_strdup.
#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 MEMZERO(p, type, n)
Handy macro to erase a region of memory.
#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.
Functions related to nodes in the AST.
static struct re_pattern_buffer * RREGEXP_PTR(VALUE rexp)
Convenient getter function.
#define StringValueCStr(v)
Identical to StringValuePtr, except it additionally checks for the contents for viability as a C stri...
#define errno
Ractor-aware version of errno.
#define RTEST
This is an old name of RB_TEST.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
uintptr_t VALUE
Type that represents a Ruby object.
#define RBIMPL_WARNING_IGNORED(flag)
Suppresses a warning.
#define RBIMPL_WARNING_PUSH()
Pushes compiler warning state.
#define RBIMPL_WARNING_POP()
Pops compiler warning state.