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;
577 stack_type cond_stack;
578 stack_type cmdarg_stack;
583 int heredoc_line_indent;
590 const char *ruby_sourcefile;
591 VALUE ruby_sourcefile_string;
611 st_table *warn_duplicate_keys_table;
618 NODE *eval_tree_begin;
622#ifdef UNIVERSAL_PARSER
623 const rb_parser_config_t *config;
626 signed int frozen_string_literal:2;
628 unsigned int command_start:1;
629 unsigned int eofp: 1;
630 unsigned int ruby__end__seen: 1;
631 unsigned int debug: 1;
632 unsigned int has_shebang: 1;
633 unsigned int token_seen: 1;
634 unsigned int token_info_enabled: 1;
636 unsigned int past_scope_enabled: 1;
638 unsigned int error_p: 1;
639 unsigned int cr_seen: 1;
647 unsigned int do_print: 1;
648 unsigned int do_loop: 1;
649 unsigned int do_chomp: 1;
650 unsigned int do_split: 1;
651 unsigned int error_tolerant: 1;
652 unsigned int keep_tokens: 1;
670 VALUE parsing_thread;
677#define NUMPARAM_ID_P(id) numparam_id_p(p, id)
678#define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - (tNUMPARAM_1 - 1))
679#define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 - 1 + (idx)))
683 if (!is_local_id(
id) ||
id < (tNUMPARAM_1 << ID_SCOPE_SHIFT))
return 0;
684 unsigned int idx = NUMPARAM_ID_TO_IDX(
id);
685 return idx > 0 && idx <= NUMPARAM_MAX;
694 rb_parser_printf(p,
"after-shift: %+"PRIsVALUE
"\n", p->s_value);
710 for (
int i = 0; i <
len; i++) {
713 rb_parser_printf(p,
"after-reduce pop: %+"PRIsVALUE
"\n", tos);
717 rb_parser_printf(p,
"after-reduce push: %+"PRIsVALUE
"\n", p->s_lvalue);
727 rb_parser_printf(p,
"after-shift-error-token:\n");
735 for (
int i = 0; i <
len; i++) {
738 rb_parser_printf(p,
"after-pop-stack pop: %+"PRIsVALUE
"\n", tos);
769#define intern_cstr(n,l,en) rb_intern3(n,l,en)
771#define STRING_NEW0() rb_parser_encoding_string_new(p,0,0,p->enc)
773#define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
774#define STR_NEW0() rb_enc_str_new(0,0,p->enc)
775#define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
776#define STR_NEW3(ptr,len,e,func) parser_str_new(p, (ptr),(len),(e),(func),p->enc)
777#define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
778#define VALID_SYMNAME_P(s, l, enc, type) (rb_enc_symname_type(s, l, enc, (1U<<(type))) == (int)(type))
784 long len = RSTRING_LEN(str);
785 return len > 0 ? (
unsigned char)RSTRING_PTR(str)[
len-1] : when_empty;
792 st_free_table(p->pvtbl);
799 if (p->pktbl) st_free_table(p->pktbl);
803#define STRING_BUF_DEFAULT_LEN 16
811 buf->head = buf->last =
xmalloc(size);
812 buf->head->len = STRING_BUF_DEFAULT_LEN;
814 buf->head->next = NULL;
822 if (buf->head->used >= buf->head->len) {
824 long n = buf->head->len * 2;
831 buf->last->next = elem;
834 buf->last->buf[buf->last->used++] = str;
845 for (
long i = 0; i < elem->used; i++) {
846 rb_parser_string_free(p, elem->buf[i]);
858debug_end_expect_token_locations(
struct parser_params *p,
const char *name)
861 VALUE mesg = rb_sprintf(
"%s: [", name);
866 rb_str_catf(mesg,
"[%d, %d]", loc->pos->lineno, loc->pos->column);
870 flush_debug_buffer(p, p->debug_output, mesg);
877 if(!p->error_tolerant)
return;
881 locations->pos = pos;
882 locations->prev = p->end_expect_token_locations;
883 p->end_expect_token_locations = locations;
885 debug_end_expect_token_locations(p,
"push_end_expect_token_locations");
891 if(!p->end_expect_token_locations)
return;
895 p->end_expect_token_locations = locations;
897 debug_end_expect_token_locations(p,
"pop_end_expect_token_locations");
903 return p->end_expect_token_locations;
907parser_token2char(
struct parser_params *p,
enum yytokentype tok)
910#define TOKEN2CHAR(tok) case tok: return (#tok);
911#define TOKEN2CHAR2(tok, name) case tok: return (name);
912 TOKEN2CHAR2(
' ',
"word_sep");
913 TOKEN2CHAR2(
'!',
"!")
914 TOKEN2CHAR2('%', "%");
915 TOKEN2CHAR2('&', "&");
916 TOKEN2CHAR2('*', "*");
917 TOKEN2CHAR2('+', "+");
918 TOKEN2CHAR2('-', "-");
919 TOKEN2CHAR2('/', "/");
920 TOKEN2CHAR2('<', "<");
921 TOKEN2CHAR2('=', "=");
922 TOKEN2CHAR2('>', ">");
923 TOKEN2CHAR2('?', "?");
924 TOKEN2CHAR2('^', "^");
925 TOKEN2CHAR2('|', "|");
926 TOKEN2CHAR2('~', "~");
927 TOKEN2CHAR2(':', ":");
928 TOKEN2CHAR2(',', ",");
929 TOKEN2CHAR2('.', ".");
930 TOKEN2CHAR2(';', ";");
931 TOKEN2CHAR2('`', "`");
932 TOKEN2CHAR2('\n', "nl");
933 TOKEN2CHAR2('{
', "\"{\"");
934 TOKEN2CHAR2('}
', "\"}\"");
935 TOKEN2CHAR2('[
', "\"[\"");
936 TOKEN2CHAR2(']
', "\"]\"");
937 TOKEN2CHAR2('(
', "\"(\"");
938 TOKEN2CHAR2(')
', "\")\"");
939 TOKEN2CHAR2('\\
', "backslash");
940 TOKEN2CHAR(keyword_class);
941 TOKEN2CHAR(keyword_module);
942 TOKEN2CHAR(keyword_def);
943 TOKEN2CHAR(keyword_undef);
944 TOKEN2CHAR(keyword_begin);
945 TOKEN2CHAR(keyword_rescue);
946 TOKEN2CHAR(keyword_ensure);
947 TOKEN2CHAR(keyword_end);
948 TOKEN2CHAR(keyword_if);
949 TOKEN2CHAR(keyword_unless);
950 TOKEN2CHAR(keyword_then);
951 TOKEN2CHAR(keyword_elsif);
952 TOKEN2CHAR(keyword_else);
953 TOKEN2CHAR(keyword_case);
954 TOKEN2CHAR(keyword_when);
955 TOKEN2CHAR(keyword_while);
956 TOKEN2CHAR(keyword_until);
957 TOKEN2CHAR(keyword_for);
958 TOKEN2CHAR(keyword_break);
959 TOKEN2CHAR(keyword_next);
960 TOKEN2CHAR(keyword_redo);
961 TOKEN2CHAR(keyword_retry);
962 TOKEN2CHAR(keyword_in);
963 TOKEN2CHAR(keyword_do);
964 TOKEN2CHAR(keyword_do_cond);
965 TOKEN2CHAR(keyword_do_block);
966 TOKEN2CHAR(keyword_do_LAMBDA);
967 TOKEN2CHAR(keyword_return);
968 TOKEN2CHAR(keyword_yield);
969 TOKEN2CHAR(keyword_super);
970 TOKEN2CHAR(keyword_self);
971 TOKEN2CHAR(keyword_nil);
972 TOKEN2CHAR(keyword_true);
973 TOKEN2CHAR(keyword_false);
974 TOKEN2CHAR(keyword_and);
975 TOKEN2CHAR(keyword_or);
976 TOKEN2CHAR(keyword_not);
977 TOKEN2CHAR(modifier_if);
978 TOKEN2CHAR(modifier_unless);
979 TOKEN2CHAR(modifier_while);
980 TOKEN2CHAR(modifier_until);
981 TOKEN2CHAR(modifier_rescue);
982 TOKEN2CHAR(keyword_alias);
983 TOKEN2CHAR(keyword_defined);
984 TOKEN2CHAR(keyword_BEGIN);
985 TOKEN2CHAR(keyword_END);
986 TOKEN2CHAR(keyword__LINE__);
987 TOKEN2CHAR(keyword__FILE__);
988 TOKEN2CHAR(keyword__ENCODING__);
989 TOKEN2CHAR(tIDENTIFIER);
993 TOKEN2CHAR(tCONSTANT);
996 TOKEN2CHAR(tINTEGER);
998 TOKEN2CHAR(tRATIONAL);
999 TOKEN2CHAR(tIMAGINARY);
1001 TOKEN2CHAR(tNTH_REF);
1002 TOKEN2CHAR(tBACK_REF);
1003 TOKEN2CHAR(tSTRING_CONTENT);
1004 TOKEN2CHAR(tREGEXP_END);
1005 TOKEN2CHAR(tDUMNY_END);
1008 TOKEN2CHAR(tUMINUS);
1019 TOKEN2CHAR(tNMATCH);
1028 TOKEN2CHAR(tANDDOT);
1029 TOKEN2CHAR(tCOLON2);
1030 TOKEN2CHAR(tCOLON3);
1031 TOKEN2CHAR(tOP_ASGN);
1033 TOKEN2CHAR(tLPAREN);
1034 TOKEN2CHAR(tLPAREN_ARG);
1035 TOKEN2CHAR(tLBRACK);
1036 TOKEN2CHAR(tLBRACE);
1037 TOKEN2CHAR(tLBRACE_ARG);
1041 TOKEN2CHAR(tLAMBDA);
1042 TOKEN2CHAR(tSYMBEG);
1043 TOKEN2CHAR(tSTRING_BEG);
1044 TOKEN2CHAR(tXSTRING_BEG);
1045 TOKEN2CHAR(tREGEXP_BEG);
1046 TOKEN2CHAR(tWORDS_BEG);
1047 TOKEN2CHAR(tQWORDS_BEG);
1048 TOKEN2CHAR(tSYMBOLS_BEG);
1049 TOKEN2CHAR(tQSYMBOLS_BEG);
1050 TOKEN2CHAR(tSTRING_END);
1051 TOKEN2CHAR(tSTRING_DEND);
1052 TOKEN2CHAR(tSTRING_DBEG);
1053 TOKEN2CHAR(tSTRING_DVAR);
1054 TOKEN2CHAR(tLAMBEG);
1055 TOKEN2CHAR(tLABEL_END);
1056 TOKEN2CHAR(tIGNORED_NL);
1057 TOKEN2CHAR(tCOMMENT);
1058 TOKEN2CHAR(tEMBDOC_BEG);
1059 TOKEN2CHAR(tEMBDOC);
1060 TOKEN2CHAR(tEMBDOC_END);
1061 TOKEN2CHAR(tHEREDOC_BEG);
1062 TOKEN2CHAR(tHEREDOC_END);
1063 TOKEN2CHAR(k__END__);
1064 TOKEN2CHAR(tLOWEST);
1065 TOKEN2CHAR(tUMINUS_NUM);
1066 TOKEN2CHAR(tLAST_TOKEN);
1071 rb_bug("parser_token2id: unknown token %d", tok);
1073 UNREACHABLE_RETURN(0);
1077push_end_expect_token_locations(struct parser_params *p, const rb_code_position_t *pos)
1082pop_end_expect_token_locations(struct parser_params *p)
1087RBIMPL_ATTR_NONNULL((1, 2, 3))
1088static int parser_yyerror(struct parser_params*, const YYLTYPE *yylloc, const char*);
1089RBIMPL_ATTR_NONNULL((1, 2))
1090static int parser_yyerror0(struct parser_params*, const char*);
1091#define yyerror0(msg) parser_yyerror0(p, (msg))
1092#define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
1093#define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
1094#define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
1095#define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
1096#define lex_eol_p(p) lex_eol_n_p(p, 0)
1097#define lex_eol_n_p(p,n) lex_eol_ptr_n_p(p, (p)->lex.pcur, n)
1098#define lex_eol_ptr_p(p,ptr) lex_eol_ptr_n_p(p,ptr,0)
1099#define lex_eol_ptr_n_p(p,ptr,n) ((ptr)+(n) >= (p)->lex.pend)
1101static void token_info_setup(token_info *ptinfo, const char *ptr, const rb_code_location_t *loc);
1102static void token_info_push(struct parser_params*, const char *token, const rb_code_location_t *loc);
1103static void token_info_pop(struct parser_params*, const char *token, const rb_code_location_t *loc);
1104static void token_info_warn(struct parser_params *p, const char *token, token_info *ptinfo_beg, int same, const rb_code_location_t *loc);
1105static void token_info_drop(struct parser_params *p, const char *token, rb_code_position_t beg_pos);
1108#define compile_for_eval (0)
1110#define compile_for_eval (p->parent_iseq != 0)
1113#define token_column ((int)(p->lex.ptok - p->lex.pbeg))
1115#define CALL_Q_P(q) ((q) == tANDDOT)
1116#define NEW_QCALL(q,r,m,a,loc) (CALL_Q_P(q) ? NEW_QCALL0(r,m,a,loc) : NEW_CALL(r,m,a,loc))
1118#define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
1120static enum yytokentype yylex(YYSTYPE*, YYLTYPE*, struct parser_params*);
1123rb_discard_node(struct parser_params *p, NODE *n)
1125 rb_ast_delete_node(p->ast, n);
1128static 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);
1129static 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);
1130static rb_node_block_t *rb_node_block_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
1131static 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);
1132static 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);
1133static 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);
1134static 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);
1135static 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);
1136static 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);
1137static 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);
1138static 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);
1139static 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);
1140static rb_node_iter_t *rb_node_iter_new(struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body, const YYLTYPE *loc);
1141static 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);
1142static rb_node_for_masgn_t *rb_node_for_masgn_new(struct parser_params *p, NODE *nd_var, const YYLTYPE *loc);
1143static rb_node_retry_t *rb_node_retry_new(struct parser_params *p, const YYLTYPE *loc);
1144static rb_node_begin_t *rb_node_begin_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1145static rb_node_rescue_t *rb_node_rescue_new(struct parser_params *p, NODE *nd_head, NODE *nd_resq, NODE *nd_else, const YYLTYPE *loc);
1146static 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);
1147static rb_node_ensure_t *rb_node_ensure_new(struct parser_params *p, NODE *nd_head, NODE *nd_ensr, const YYLTYPE *loc);
1148static 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);
1149static 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);
1150static rb_node_masgn_t *rb_node_masgn_new(struct parser_params *p, NODE *nd_head, NODE *nd_args, const YYLTYPE *loc);
1151static rb_node_lasgn_t *rb_node_lasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1152static rb_node_dasgn_t *rb_node_dasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1153static rb_node_gasgn_t *rb_node_gasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1154static rb_node_iasgn_t *rb_node_iasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1155static 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);
1156static rb_node_cvasgn_t *rb_node_cvasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1157static 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);
1158static 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);
1159static 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);
1160static 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);
1161static 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);
1162static rb_node_call_t *rb_node_call_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1163static rb_node_opcall_t *rb_node_opcall_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1164static rb_node_fcall_t *rb_node_fcall_new(struct parser_params *p, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1165static rb_node_vcall_t *rb_node_vcall_new(struct parser_params *p, ID nd_mid, const YYLTYPE *loc);
1166static rb_node_qcall_t *rb_node_qcall_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1167static 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);
1168static rb_node_zsuper_t * rb_node_zsuper_new(struct parser_params *p, const YYLTYPE *loc);
1169static rb_node_list_t *rb_node_list_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
1170static rb_node_list_t *rb_node_list_new2(struct parser_params *p, NODE *nd_head, long nd_alen, NODE *nd_next, const YYLTYPE *loc);
1171static rb_node_zlist_t *rb_node_zlist_new(struct parser_params *p, const YYLTYPE *loc);
1172static rb_node_hash_t *rb_node_hash_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
1173static rb_node_return_t *rb_node_return_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1174static 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);
1175static rb_node_lvar_t *rb_node_lvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1176static rb_node_dvar_t *rb_node_dvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1177static rb_node_gvar_t *rb_node_gvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1178static rb_node_ivar_t *rb_node_ivar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1179static rb_node_const_t *rb_node_const_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1180static rb_node_cvar_t *rb_node_cvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1181static rb_node_nth_ref_t *rb_node_nth_ref_new(struct parser_params *p, long nd_nth, const YYLTYPE *loc);
1182static rb_node_back_ref_t *rb_node_back_ref_new(struct parser_params *p, long nd_nth, const YYLTYPE *loc);
1183static rb_node_match2_t *rb_node_match2_new(struct parser_params *p, NODE *nd_recv, NODE *nd_value, const YYLTYPE *loc);
1184static rb_node_match3_t *rb_node_match3_new(struct parser_params *p, NODE *nd_recv, NODE *nd_value, const YYLTYPE *loc);
1185static rb_node_integer_t * rb_node_integer_new(struct parser_params *p, char* val, int base, const YYLTYPE *loc);
1186static rb_node_float_t * rb_node_float_new(struct parser_params *p, char* val, const YYLTYPE *loc);
1187static rb_node_rational_t * rb_node_rational_new(struct parser_params *p, char* val, int base, int seen_point, const YYLTYPE *loc);
1188static 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);
1189static rb_node_str_t *rb_node_str_new(struct parser_params *p, rb_parser_string_t *string, const YYLTYPE *loc);
1190static 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);
1191static rb_node_dstr_t *rb_node_dstr_new(struct parser_params *p, rb_parser_string_t *string, const YYLTYPE *loc);
1192static rb_node_xstr_t *rb_node_xstr_new(struct parser_params *p, rb_parser_string_t *string, const YYLTYPE *loc);
1193static 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);
1194static 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);
1195static 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);
1196static rb_node_once_t *rb_node_once_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1197static rb_node_args_t *rb_node_args_new(struct parser_params *p, const YYLTYPE *loc);
1198static rb_node_args_aux_t *rb_node_args_aux_new(struct parser_params *p, ID nd_pid, int nd_plen, const YYLTYPE *loc);
1199static rb_node_opt_arg_t *rb_node_opt_arg_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1200static rb_node_kw_arg_t *rb_node_kw_arg_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1201static rb_node_postarg_t *rb_node_postarg_new(struct parser_params *p, NODE *nd_1st, NODE *nd_2nd, const YYLTYPE *loc);
1202static rb_node_argscat_t *rb_node_argscat_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, const YYLTYPE *loc);
1203static rb_node_argspush_t *rb_node_argspush_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, const YYLTYPE *loc);
1204static rb_node_splat_t *rb_node_splat_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc, const YYLTYPE *operator_loc);
1205static rb_node_block_pass_t *rb_node_block_pass_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc, const YYLTYPE *operator_loc);
1206static rb_node_defn_t *rb_node_defn_new(struct parser_params *p, ID nd_mid, NODE *nd_defn, const YYLTYPE *loc);
1207static rb_node_defs_t *rb_node_defs_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_defn, const YYLTYPE *loc);
1208static 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);
1209static 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);
1210static rb_node_undef_t *rb_node_undef_new(struct parser_params *p, NODE *nd_undef, const YYLTYPE *loc);
1211static 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);
1212static 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);
1213static 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);
1214static 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);
1215static 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);
1216static 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);
1217static 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);
1218static rb_node_self_t *rb_node_self_new(struct parser_params *p, const YYLTYPE *loc);
1219static rb_node_nil_t *rb_node_nil_new(struct parser_params *p, const YYLTYPE *loc);
1220static rb_node_true_t *rb_node_true_new(struct parser_params *p, const YYLTYPE *loc);
1221static rb_node_false_t *rb_node_false_new(struct parser_params *p, const YYLTYPE *loc);
1222static rb_node_errinfo_t *rb_node_errinfo_new(struct parser_params *p, const YYLTYPE *loc);
1223static rb_node_defined_t *rb_node_defined_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1224static 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);
1225static rb_node_sym_t *rb_node_sym_new(struct parser_params *p, VALUE str, const YYLTYPE *loc);
1226static 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);
1227static rb_node_attrasgn_t *rb_node_attrasgn_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1228static 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);
1229static rb_node_aryptn_t *rb_node_aryptn_new(struct parser_params *p, NODE *pre_args, NODE *rest_arg, NODE *post_args, const YYLTYPE *loc);
1230static rb_node_hshptn_t *rb_node_hshptn_new(struct parser_params *p, NODE *nd_pconst, NODE *nd_pkwargs, NODE *nd_pkwrestarg, const YYLTYPE *loc);
1231static 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);
1232static rb_node_line_t *rb_node_line_new(struct parser_params *p, const YYLTYPE *loc);
1233static rb_node_file_t *rb_node_file_new(struct parser_params *p, VALUE str, const YYLTYPE *loc);
1234static rb_node_error_t *rb_node_error_new(struct parser_params *p, const YYLTYPE *loc);
1236#define NEW_SCOPE(a,b,c,loc) (NODE *)rb_node_scope_new(p,a,b,c,loc)
1237#define NEW_SCOPE2(t,a,b,c,loc) (NODE *)rb_node_scope_new2(p,t,a,b,c,loc)
1238#define NEW_BLOCK(a,loc) (NODE *)rb_node_block_new(p,a,loc)
1239#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)
1240#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)
1241#define NEW_CASE(h,b,loc,ck_loc,ek_loc) (NODE *)rb_node_case_new(p,h,b,loc,ck_loc,ek_loc)
1242#define NEW_CASE2(b,loc,ck_loc,ek_loc) (NODE *)rb_node_case2_new(p,b,loc,ck_loc,ek_loc)
1243#define NEW_CASE3(h,b,loc,ck_loc,ek_loc) (NODE *)rb_node_case3_new(p,h,b,loc,ck_loc,ek_loc)
1244#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)
1245#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)
1246#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)
1247#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)
1248#define NEW_ITER(a,b,loc) (NODE *)rb_node_iter_new(p,a,b,loc)
1249#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)
1250#define NEW_FOR_MASGN(v,loc) (NODE *)rb_node_for_masgn_new(p,v,loc)
1251#define NEW_RETRY(loc) (NODE *)rb_node_retry_new(p,loc)
1252#define NEW_BEGIN(b,loc) (NODE *)rb_node_begin_new(p,b,loc)
1253#define NEW_RESCUE(b,res,e,loc) (NODE *)rb_node_rescue_new(p,b,res,e,loc)
1254#define NEW_RESBODY(a,v,ex,n,loc) (NODE *)rb_node_resbody_new(p,a,v,ex,n,loc)
1255#define NEW_ENSURE(b,en,loc) (NODE *)rb_node_ensure_new(p,b,en,loc)
1256#define NEW_AND(f,s,loc,op_loc) (NODE *)rb_node_and_new(p,f,s,loc,op_loc)
1257#define NEW_OR(f,s,loc,op_loc) (NODE *)rb_node_or_new(p,f,s,loc,op_loc)
1258#define NEW_MASGN(l,r,loc) rb_node_masgn_new(p,l,r,loc)
1259#define NEW_LASGN(v,val,loc) (NODE *)rb_node_lasgn_new(p,v,val,loc)
1260#define NEW_DASGN(v,val,loc) (NODE *)rb_node_dasgn_new(p,v,val,loc)
1261#define NEW_GASGN(v,val,loc) (NODE *)rb_node_gasgn_new(p,v,val,loc)
1262#define NEW_IASGN(v,val,loc) (NODE *)rb_node_iasgn_new(p,v,val,loc)
1263#define NEW_CDECL(v,val,path,share,loc) (NODE *)rb_node_cdecl_new(p,v,val,path,share,loc)
1264#define NEW_CVASGN(v,val,loc) (NODE *)rb_node_cvasgn_new(p,v,val,loc)
1265#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)
1266#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)
1267#define NEW_OP_ASGN_OR(i,val,loc) (NODE *)rb_node_op_asgn_or_new(p,i,val,loc)
1268#define NEW_OP_ASGN_AND(i,val,loc) (NODE *)rb_node_op_asgn_and_new(p,i,val,loc)
1269#define NEW_OP_CDECL(v,op,val,share,loc) (NODE *)rb_node_op_cdecl_new(p,v,val,op,share,loc)
1270#define NEW_CALL(r,m,a,loc) (NODE *)rb_node_call_new(p,r,m,a,loc)
1271#define NEW_OPCALL(r,m,a,loc) (NODE *)rb_node_opcall_new(p,r,m,a,loc)
1272#define NEW_FCALL(m,a,loc) rb_node_fcall_new(p,m,a,loc)
1273#define NEW_VCALL(m,loc) (NODE *)rb_node_vcall_new(p,m,loc)
1274#define NEW_QCALL0(r,m,a,loc) (NODE *)rb_node_qcall_new(p,r,m,a,loc)
1275#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)
1276#define NEW_ZSUPER(loc) (NODE *)rb_node_zsuper_new(p,loc)
1277#define NEW_LIST(a,loc) (NODE *)rb_node_list_new(p,a,loc)
1278#define NEW_LIST2(h,l,n,loc) (NODE *)rb_node_list_new2(p,h,l,n,loc)
1279#define NEW_ZLIST(loc) (NODE *)rb_node_zlist_new(p,loc)
1280#define NEW_HASH(a,loc) (NODE *)rb_node_hash_new(p,a,loc)
1281#define NEW_RETURN(s,loc,k_loc) (NODE *)rb_node_return_new(p,s,loc,k_loc)
1282#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)
1283#define NEW_LVAR(v,loc) (NODE *)rb_node_lvar_new(p,v,loc)
1284#define NEW_DVAR(v,loc) (NODE *)rb_node_dvar_new(p,v,loc)
1285#define NEW_GVAR(v,loc) (NODE *)rb_node_gvar_new(p,v,loc)
1286#define NEW_IVAR(v,loc) (NODE *)rb_node_ivar_new(p,v,loc)
1287#define NEW_CONST(v,loc) (NODE *)rb_node_const_new(p,v,loc)
1288#define NEW_CVAR(v,loc) (NODE *)rb_node_cvar_new(p,v,loc)
1289#define NEW_NTH_REF(n,loc) (NODE *)rb_node_nth_ref_new(p,n,loc)
1290#define NEW_BACK_REF(n,loc) (NODE *)rb_node_back_ref_new(p,n,loc)
1291#define NEW_MATCH2(n1,n2,loc) (NODE *)rb_node_match2_new(p,n1,n2,loc)
1292#define NEW_MATCH3(r,n2,loc) (NODE *)rb_node_match3_new(p,r,n2,loc)
1293#define NEW_INTEGER(val, base,loc) (NODE *)rb_node_integer_new(p,val,base,loc)
1294#define NEW_FLOAT(val,loc) (NODE *)rb_node_float_new(p,val,loc)
1295#define NEW_RATIONAL(val,base,seen_point,loc) (NODE *)rb_node_rational_new(p,val,base,seen_point,loc)
1296#define NEW_IMAGINARY(val,base,seen_point,numeric_type,loc) (NODE *)rb_node_imaginary_new(p,val,base,seen_point,numeric_type,loc)
1297#define NEW_STR(s,loc) (NODE *)rb_node_str_new(p,s,loc)
1298#define NEW_DSTR0(s,l,n,loc) (NODE *)rb_node_dstr_new0(p,s,l,n,loc)
1299#define NEW_DSTR(s,loc) (NODE *)rb_node_dstr_new(p,s,loc)
1300#define NEW_XSTR(s,loc) (NODE *)rb_node_xstr_new(p,s,loc)
1301#define NEW_DXSTR(s,l,n,loc) (NODE *)rb_node_dxstr_new(p,s,l,n,loc)
1302#define NEW_EVSTR(n,loc,o_loc,c_loc) (NODE *)rb_node_evstr_new(p,n,loc,o_loc,c_loc)
1303#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)
1304#define NEW_ONCE(b,loc) (NODE *)rb_node_once_new(p,b,loc)
1305#define NEW_ARGS(loc) rb_node_args_new(p,loc)
1306#define NEW_ARGS_AUX(r,b,loc) rb_node_args_aux_new(p,r,b,loc)
1307#define NEW_OPT_ARG(v,loc) rb_node_opt_arg_new(p,v,loc)
1308#define NEW_KW_ARG(v,loc) rb_node_kw_arg_new(p,v,loc)
1309#define NEW_POSTARG(i,v,loc) (NODE *)rb_node_postarg_new(p,i,v,loc)
1310#define NEW_ARGSCAT(a,b,loc) (NODE *)rb_node_argscat_new(p,a,b,loc)
1311#define NEW_ARGSPUSH(a,b,loc) (NODE *)rb_node_argspush_new(p,a,b,loc)
1312#define NEW_SPLAT(a,loc,op_loc) (NODE *)rb_node_splat_new(p,a,loc,op_loc)
1313#define NEW_BLOCK_PASS(b,loc,o_loc) rb_node_block_pass_new(p,b,loc,o_loc)
1314#define NEW_DEFN(i,s,loc) (NODE *)rb_node_defn_new(p,i,s,loc)
1315#define NEW_DEFS(r,i,s,loc) (NODE *)rb_node_defs_new(p,r,i,s,loc)
1316#define NEW_ALIAS(n,o,loc,k_loc) (NODE *)rb_node_alias_new(p,n,o,loc,k_loc)
1317#define NEW_VALIAS(n,o,loc,k_loc) (NODE *)rb_node_valias_new(p,n,o,loc,k_loc)
1318#define NEW_UNDEF(i,loc) (NODE *)rb_node_undef_new(p,i,loc)
1319#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)
1320#define NEW_MODULE(n,b,loc,mk_loc,ek_loc) (NODE *)rb_node_module_new(p,n,b,loc,mk_loc,ek_loc)
1321#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)
1322#define NEW_COLON2(c,i,loc,d_loc,n_loc) (NODE *)rb_node_colon2_new(p,c,i,loc,d_loc,n_loc)
1323#define NEW_COLON3(i,loc,d_loc,n_loc) (NODE *)rb_node_colon3_new(p,i,loc,d_loc,n_loc)
1324#define NEW_DOT2(b,e,loc,op_loc) (NODE *)rb_node_dot2_new(p,b,e,loc,op_loc)
1325#define NEW_DOT3(b,e,loc,op_loc) (NODE *)rb_node_dot3_new(p,b,e,loc,op_loc)
1326#define NEW_SELF(loc) (NODE *)rb_node_self_new(p,loc)
1327#define NEW_NIL(loc) (NODE *)rb_node_nil_new(p,loc)
1328#define NEW_TRUE(loc) (NODE *)rb_node_true_new(p,loc)
1329#define NEW_FALSE(loc) (NODE *)rb_node_false_new(p,loc)
1330#define NEW_ERRINFO(loc) (NODE *)rb_node_errinfo_new(p,loc)
1331#define NEW_DEFINED(e,loc,k_loc) (NODE *)rb_node_defined_new(p,e,loc, k_loc)
1332#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)
1333#define NEW_SYM(str,loc) (NODE *)rb_node_sym_new(p,str,loc)
1334#define NEW_DSYM(s,l,n,loc) (NODE *)rb_node_dsym_new(p,s,l,n,loc)
1335#define NEW_ATTRASGN(r,m,a,loc) (NODE *)rb_node_attrasgn_new(p,r,m,a,loc)
1336#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)
1337#define NEW_ARYPTN(pre,r,post,loc) (NODE *)rb_node_aryptn_new(p,pre,r,post,loc)
1338#define NEW_HSHPTN(c,kw,kwrest,loc) (NODE *)rb_node_hshptn_new(p,c,kw,kwrest,loc)
1339#define NEW_FNDPTN(pre,a,post,loc) (NODE *)rb_node_fndptn_new(p,pre,a,post,loc)
1340#define NEW_LINE(loc) (NODE *)rb_node_line_new(p,loc)
1341#define NEW_FILE(str,loc) (NODE *)rb_node_file_new(p,str,loc)
1342#define NEW_ENCODING(loc) (NODE *)rb_node_encoding_new(p,loc)
1343#define NEW_ERROR(loc) (NODE *)rb_node_error_new(p,loc)
1345enum internal_node_type {
1346 NODE_INTERNAL_ONLY = NODE_LAST,
1353parser_node_name(int node)
1357 return "NODE_DEF_TEMP";
1359 return "NODE_EXITS";
1361 return ruby_node_name(node);
1365/* This node is parse.y internal */
1366struct RNode_DEF_TEMP {
1369 /* for NODE_DEFN/NODE_DEFS */
1371 struct RNode *nd_def;
1376 NODE *numparam_save;
1377 struct lex_context ctxt;
1381#define RNODE_DEF_TEMP(node) ((struct RNode_DEF_TEMP *)(node))
1383static rb_node_break_t *rb_node_break_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1384static rb_node_next_t *rb_node_next_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1385static rb_node_redo_t *rb_node_redo_new(struct parser_params *p, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1386static rb_node_def_temp_t *rb_node_def_temp_new(struct parser_params *p, const YYLTYPE *loc);
1387static rb_node_def_temp_t *def_head_save(struct parser_params *p, rb_node_def_temp_t *n);
1389#define NEW_BREAK(s,loc,k_loc) (NODE *)rb_node_break_new(p,s,loc,k_loc)
1390#define NEW_NEXT(s,loc,k_loc) (NODE *)rb_node_next_new(p,s,loc,k_loc)
1391#define NEW_REDO(loc,k_loc) (NODE *)rb_node_redo_new(p,loc,k_loc)
1392#define NEW_DEF_TEMP(loc) rb_node_def_temp_new(p,loc)
1394/* Make a new internal node, which should not be appeared in the
1395 * result AST and does not have node_id and location. */
1396static NODE* node_new_internal(struct parser_params *p, enum node_type type, size_t size, size_t alignment);
1397#define NODE_NEW_INTERNAL(ndtype, type) (type *)node_new_internal(p, (enum node_type)(ndtype), sizeof(type), RUBY_ALIGNOF(type))
1399static NODE *nd_set_loc(NODE *nd, const YYLTYPE *loc);
1402parser_get_node_id(struct parser_params *p)
1404 int node_id = p->node_id;
1410anddot_multiple_assignment_check(struct parser_params* p, const YYLTYPE *loc, ID id)
1412 if (id == tANDDOT) {
1413 yyerror1(loc, "&. inside multiple assignment destination");
1418set_line_body(NODE *body, int line)
1421 switch (nd_type(body)) {
1424 nd_set_line(body, line);
1429set_embraced_location(NODE *node, const rb_code_location_t *beg, const rb_code_location_t *end)
1431 RNODE_ITER(node)->nd_body->nd_loc = code_loc_gen(beg, end);
1432 nd_set_line(node, beg->end_pos.lineno);
1436last_expr_node(NODE *expr)
1439 if (nd_type_p(expr, NODE_BLOCK)) {
1440 expr = RNODE_BLOCK(RNODE_BLOCK(expr)->nd_end)->nd_head;
1442 else if (nd_type_p(expr, NODE_BEGIN) && RNODE_BEGIN(expr)->nd_body) {
1443 expr = RNODE_BEGIN(expr)->nd_body;
1453#define yyparse ruby_yyparse
1456static NODE* cond(struct parser_params *p, NODE *node, const YYLTYPE *loc);
1457static NODE* method_cond(struct parser_params *p, NODE *node, const YYLTYPE *loc);
1458static NODE *new_nil_at(struct parser_params *p, const rb_code_position_t *pos);
1459static NODE *new_if(struct parser_params*,NODE*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*);
1460static NODE *new_unless(struct parser_params*,NODE*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*);
1461static NODE *logop(struct parser_params*,ID,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
1463static NODE *newline_node(NODE*);
1464static void fixpos(NODE*,NODE*);
1466static int value_expr(struct parser_params*,NODE*);
1467static void void_expr(struct parser_params*,NODE*);
1468static NODE *remove_begin(NODE*);
1469static NODE *void_stmts(struct parser_params*,NODE*);
1470static void reduce_nodes(struct parser_params*,NODE**);
1471static void block_dup_check(struct parser_params*,NODE*,NODE*);
1473static NODE *block_append(struct parser_params*,NODE*,NODE*);
1474static NODE *list_append(struct parser_params*,NODE*,NODE*);
1475static NODE *list_concat(NODE*,NODE*);
1476static NODE *arg_append(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1477static NODE *last_arg_append(struct parser_params *p, NODE *args, NODE *last_arg, const YYLTYPE *loc);
1478static NODE *rest_arg_append(struct parser_params *p, NODE *args, NODE *rest_arg, const YYLTYPE *loc);
1479static NODE *literal_concat(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1480static NODE *new_evstr(struct parser_params*,NODE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*);
1481static NODE *new_dstr(struct parser_params*,NODE*,const YYLTYPE*);
1482static NODE *str2dstr(struct parser_params*,NODE*);
1483static NODE *evstr2dstr(struct parser_params*,NODE*);
1484static NODE *splat_array(NODE*);
1485static void mark_lvar_used(struct parser_params *p, NODE *rhs);
1487static NODE *call_bin_op(struct parser_params*,NODE*,ID,NODE*,const YYLTYPE*,const YYLTYPE*);
1488static NODE *call_uni_op(struct parser_params*,NODE*,ID,const YYLTYPE*,const YYLTYPE*);
1489static NODE *new_qcall(struct parser_params* p, ID atype, NODE *recv, ID mid, NODE *args, const YYLTYPE *op_loc, const YYLTYPE *loc);
1490static 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);
1491static 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;}
1492static NODE *command_add_block(struct parser_params*p, NODE *m, NODE *b, const YYLTYPE *loc);
1494static bool args_info_empty_p(struct rb_args_info *args);
1495static 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*);
1496static rb_node_args_t *new_args_tail(struct parser_params*,rb_node_kw_arg_t*,ID,ID,const YYLTYPE*);
1497#define new_empty_args_tail(p, loc) new_args_tail(p, 0, 0, 0, loc)
1498static NODE *new_array_pattern(struct parser_params *p, NODE *constant, NODE *pre_arg, NODE *aryptn, const YYLTYPE *loc);
1499static NODE *new_array_pattern_tail(struct parser_params *p, NODE *pre_args, int has_rest, NODE *rest_arg, NODE *post_args, const YYLTYPE *loc);
1500static NODE *new_find_pattern(struct parser_params *p, NODE *constant, NODE *fndptn, const YYLTYPE *loc);
1501static NODE *new_find_pattern_tail(struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg, const YYLTYPE *loc);
1502static NODE *new_hash_pattern(struct parser_params *p, NODE *constant, NODE *hshptn, const YYLTYPE *loc);
1503static NODE *new_hash_pattern_tail(struct parser_params *p, NODE *kw_args, ID kw_rest_arg, const YYLTYPE *loc);
1505static rb_node_kw_arg_t *new_kw_arg(struct parser_params *p, NODE *k, const YYLTYPE *loc);
1506static rb_node_args_t *args_with_numbered(struct parser_params*,rb_node_args_t*,int,ID);
1508static NODE* negate_lit(struct parser_params*, NODE*,const YYLTYPE*);
1509static void no_blockarg(struct parser_params*,NODE*);
1510static NODE *ret_args(struct parser_params*,NODE*);
1511static NODE *arg_blk_pass(NODE*,rb_node_block_pass_t*);
1512static NODE *dsym_node(struct parser_params*,NODE*,const YYLTYPE*);
1514static NODE *gettable(struct parser_params*,ID,const YYLTYPE*);
1515static NODE *assignable(struct parser_params*,ID,NODE*,const YYLTYPE*);
1517static NODE *aryset(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1518static NODE *attrset(struct parser_params*,NODE*,ID,ID,const YYLTYPE*);
1520static VALUE rb_backref_error(struct parser_params*,NODE*);
1521static NODE *node_assign(struct parser_params*,NODE*,NODE*,struct lex_context,const YYLTYPE*);
1523static NODE *new_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1524static 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);
1525static 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);
1526static NODE *new_const_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1527static NODE *new_bodystmt(struct parser_params *p, NODE *head, NODE *rescue, NODE *rescue_else, NODE *ensure, const YYLTYPE *loc);
1529static NODE *const_decl(struct parser_params *p, NODE* path, const YYLTYPE *loc);
1531static rb_node_opt_arg_t *opt_arg_append(rb_node_opt_arg_t*, rb_node_opt_arg_t*);
1532static rb_node_kw_arg_t *kwd_append(rb_node_kw_arg_t*, rb_node_kw_arg_t*);
1534static NODE *new_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1535static NODE *new_unique_key_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1537static NODE *new_defined(struct parser_params *p, NODE *expr, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1539static NODE *new_regexp(struct parser_params *, NODE *, int, const YYLTYPE *, const YYLTYPE *, const YYLTYPE *, const YYLTYPE *);
1541#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
1543static NODE *new_xstring(struct parser_params *, NODE *, const YYLTYPE *loc);
1545static NODE *symbol_append(struct parser_params *p, NODE *symbols, NODE *symbol);
1547static NODE *match_op(struct parser_params*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
1549static rb_ast_id_table_t *local_tbl(struct parser_params*);
1551static VALUE reg_compile(struct parser_params*, rb_parser_string_t*, int);
1552static void reg_fragment_setenc(struct parser_params*, rb_parser_string_t*, int);
1554static int literal_concat0(struct parser_params *p, rb_parser_string_t *head, rb_parser_string_t *tail);
1555static NODE *heredoc_dedent(struct parser_params*,NODE*);
1557static void check_literal_when(struct parser_params *p, NODE *args, const YYLTYPE *loc);
1559static 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);
1562#define get_value(idx) (rb_ary_entry(p->s_value_stack, idx))
1563#define set_value(val) (p->s_lvalue = val)
1564static VALUE assign_error(struct parser_params *p, const char *mesg, VALUE a);
1565static int id_is_var(struct parser_params *p, ID id);
1568RUBY_SYMBOL_EXPORT_BEGIN
1569VALUE rb_parser_reg_compile(struct parser_params* p, VALUE str, int options);
1570int rb_reg_fragment_setenc(struct parser_params*, rb_parser_string_t *, int);
1571enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_state_e, enum lex_state_e, int);
1572VALUE rb_parser_lex_state_name(struct parser_params *p, enum lex_state_e state);
1573void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int);
1574PRINTF_ARGS(void rb_parser_fatal(struct parser_params *p, const char *fmt, ...), 2, 3);
1575YYLTYPE *rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc);
1576YYLTYPE *rb_parser_set_location_of_delayed_token(struct parser_params *p, YYLTYPE *yylloc);
1577YYLTYPE *rb_parser_set_location_of_heredoc_end(struct parser_params *p, YYLTYPE *yylloc);
1578YYLTYPE *rb_parser_set_location_of_dummy_end(struct parser_params *p, YYLTYPE *yylloc);
1579YYLTYPE *rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc);
1580YYLTYPE *rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc);
1581void ruby_show_error_line(struct parser_params *p, VALUE errbuf, const YYLTYPE *yylloc, int lineno, rb_parser_string_t *str);
1582RUBY_SYMBOL_EXPORT_END
1584static void flush_string_content(struct parser_params *p, rb_encoding *enc, size_t back);
1585static void error_duplicate_pattern_variable(struct parser_params *p, ID id, const YYLTYPE *loc);
1586static void error_duplicate_pattern_key(struct parser_params *p, ID id, const YYLTYPE *loc);
1587static VALUE formal_argument_error(struct parser_params*, ID);
1588static ID shadowing_lvar(struct parser_params*,ID);
1589static void new_bv(struct parser_params*,ID);
1591static void local_push(struct parser_params*,int);
1592static void local_pop(struct parser_params*);
1593static void local_var(struct parser_params*, ID);
1594static void arg_var(struct parser_params*, ID);
1595static int local_id(struct parser_params *p, ID id);
1596static int local_id_ref(struct parser_params*, ID, ID **);
1597#define internal_id rb_parser_internal_id
1598ID internal_id(struct parser_params*);
1599static NODE *new_args_forward_call(struct parser_params*, NODE*, const YYLTYPE*, const YYLTYPE*);
1600static int check_forwarding_args(struct parser_params*);
1601static void add_forwarding_args(struct parser_params *p);
1602static void forwarding_arg_check(struct parser_params *p, ID arg, ID all, const char *var);
1604static const struct vtable *dyna_push(struct parser_params *);
1605static void dyna_pop(struct parser_params*, const struct vtable *);
1606static int dyna_in_block(struct parser_params*);
1607#define dyna_var(p, id) local_var(p, id)
1608static int dvar_defined(struct parser_params*, ID);
1609#define dvar_defined_ref rb_parser_dvar_defined_ref
1610int dvar_defined_ref(struct parser_params*, ID, ID**);
1611static int dvar_curr(struct parser_params*,ID);
1613static int lvar_defined(struct parser_params*, ID);
1615static NODE *numparam_push(struct parser_params *p);
1616static void numparam_pop(struct parser_params *p, NODE *prev_inner);
1618#define METHOD_NOT '!
'
1620#define idFWD_REST '*
'
1621#define idFWD_KWREST idPow /* Use simple "**", as tDSTAR is "**arg" */
1622#define idFWD_BLOCK '&
'
1623#define idFWD_ALL idDot3
1624#define arg_FWD_BLOCK idFWD_BLOCK
1626#define RE_ONIG_OPTION_IGNORECASE 1
1627#define RE_ONIG_OPTION_EXTEND (RE_ONIG_OPTION_IGNORECASE<<1)
1628#define RE_ONIG_OPTION_MULTILINE (RE_ONIG_OPTION_EXTEND<<1)
1629#define RE_OPTION_ONCE (1<<16)
1630#define RE_OPTION_ENCODING_SHIFT 8
1631#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
1632#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
1633#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
1634#define RE_OPTION_MASK 0xff
1635#define RE_OPTION_ARG_ENCODING_NONE 32
1637#define CHECK_LITERAL_WHEN (st_table *)1
1638#define CASE_LABELS_ENABLED_P(case_labels) (case_labels && case_labels != CHECK_LITERAL_WHEN)
1640#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
1641RUBY_FUNC_EXPORTED size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr);
1643#define TOKEN2ID(tok) ( \
1644 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
1645 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
1646 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
1647 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
1648 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
1649 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
1650 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
1652/****** Ripper *******/
1656#include "eventids1.h"
1657#include "eventids2.h"
1659extern const struct ripper_parser_ids ripper_parser_ids;
1661static VALUE ripper_dispatch0(struct parser_params*,ID);
1662static VALUE ripper_dispatch1(struct parser_params*,ID,VALUE);
1663static VALUE ripper_dispatch2(struct parser_params*,ID,VALUE,VALUE);
1664static VALUE ripper_dispatch3(struct parser_params*,ID,VALUE,VALUE,VALUE);
1665static VALUE ripper_dispatch4(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE);
1666static VALUE ripper_dispatch5(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE);
1667static VALUE ripper_dispatch7(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE);
1668void ripper_error(struct parser_params *p);
1670#define dispatch0(n) ripper_dispatch0(p, RIPPER_ID(n))
1671#define dispatch1(n,a) ripper_dispatch1(p, RIPPER_ID(n), (a))
1672#define dispatch2(n,a,b) ripper_dispatch2(p, RIPPER_ID(n), (a), (b))
1673#define dispatch3(n,a,b,c) ripper_dispatch3(p, RIPPER_ID(n), (a), (b), (c))
1674#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, RIPPER_ID(n), (a), (b), (c), (d))
1675#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, RIPPER_ID(n), (a), (b), (c), (d), (e))
1676#define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, RIPPER_ID(n), (a), (b), (c), (d), (e), (f), (g))
1678#define yyparse ripper_yyparse
1681aryptn_pre_args(struct parser_params *p, VALUE pre_arg, VALUE pre_args)
1683 if (!NIL_P(pre_arg)) {
1684 if (!NIL_P(pre_args)) {
1685 rb_ary_unshift(pre_args, pre_arg);
1688 pre_args = rb_ary_new_from_args(1, pre_arg);
1694#define ID2VAL(id) STATIC_ID2SYM(id)
1695#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
1698#define KWD2EID(t, v) keyword_##t
1701new_scope_body(struct parser_params *p, rb_node_args_t *args, NODE *body, NODE *parent, const YYLTYPE *loc)
1703 body = remove_begin(body);
1704 reduce_nodes(p, &body);
1705 NODE *n = NEW_SCOPE(args, body, parent, loc);
1706 nd_set_line(n, loc->end_pos.lineno);
1707 set_line_body(body, loc->beg_pos.lineno);
1712rescued_expr(struct parser_params *p, NODE *arg, NODE *rescue,
1713 const YYLTYPE *arg_loc, const YYLTYPE *mod_loc, const YYLTYPE *res_loc)
1715 YYLTYPE loc = code_loc_gen(mod_loc, res_loc);
1716 rescue = NEW_RESBODY(0, 0, remove_begin(rescue), 0, &loc);
1717 loc.beg_pos = arg_loc->beg_pos;
1718 return NEW_RESCUE(arg, rescue, 0, &loc);
1721static NODE *add_block_exit(struct parser_params *p, NODE *node);
1722static rb_node_exits_t *init_block_exit(struct parser_params *p);
1723static rb_node_exits_t *allow_block_exit(struct parser_params *p);
1724static void restore_block_exit(struct parser_params *p, rb_node_exits_t *exits);
1725static void clear_block_exit(struct parser_params *p, bool error);
1728next_rescue_context(struct lex_context *next, const struct lex_context *outer, enum rescue_context def)
1730 next->in_rescue = outer->in_rescue == after_rescue ? after_rescue : def;
1734restore_defun(struct parser_params *p, rb_node_def_temp_t *temp)
1736 /* See: def_name action */
1737 struct lex_context ctxt = temp->save.ctxt;
1738 p->ctxt.in_def = ctxt.in_def;
1739 p->ctxt.shareable_constant_value = ctxt.shareable_constant_value;
1740 p->ctxt.in_rescue = ctxt.in_rescue;
1741 p->max_numparam = temp->save.max_numparam;
1742 numparam_pop(p, temp->save.numparam_save);
1743 clear_block_exit(p, true);
1747endless_method_name(struct parser_params *p, ID mid, const YYLTYPE *loc)
1749 if (is_attrset_id(mid)) {
1750 yyerror1(loc, "setter method cannot be defined in an endless method definition");
1752 token_info_drop(p, "def", loc->beg_pos);
1755#define debug_token_line(p, name, line) do { \
1757 const char *const pcur = p->lex.pcur; \
1758 const char *const ptok = p->lex.ptok; \
1759 rb_parser_printf(p, name ":%d (%d: %"PRIdPTRDIFF"|%"PRIdPTRDIFF"|%"PRIdPTRDIFF")\n", \
1760 line, p->ruby_sourceline, \
1761 ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur); \
1765#define begin_definition(k, loc_beg, loc_end) \
1767 if (!(p->ctxt.in_class = (k)[0] != 0)) { \
1768 /* singleton class */ \
1769 p->ctxt.cant_return = !p->ctxt.in_def; \
1770 p->ctxt.in_def = 0; \
1772 else if (p->ctxt.in_def) { \
1773 YYLTYPE loc = code_loc_gen(loc_beg, loc_end); \
1774 yyerror1(&loc, k " definition in method body"); \
1777 p->ctxt.cant_return = 1; \
1783# define ifndef_ripper(x) (x)
1784# define ifdef_ripper(r,x) (x)
1786# define ifndef_ripper(x)
1787# define ifdef_ripper(r,x) (r)
1790# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
1791# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
1792# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
1793# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
1794# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
1795# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
1796# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
1797# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
1798# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
1799# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
1800# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1801# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
1802# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
1803# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
1804# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1805# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
1806# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
1807# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
1808# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
1809# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1811extern const ID id_warn, id_warning, id_gets, id_assoc;
1812# define ERR_MESG() STR_NEW2(mesg) /* to bypass Ripper DSL */
1813# define WARN_S_L(s,l) STR_NEW(s,l)
1814# define WARN_S(s) STR_NEW2(s)
1815# define WARN_I(i) INT2NUM(i)
1816# define WARN_ID(i) rb_id2str(i)
1817# define PRIsWARN PRIsVALUE
1818# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
1819# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
1820# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
1821# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
1822# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
1823# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
1824# define compile_error ripper_compile_error
1826# define WARN_S_L(s,l) s
1829# define WARN_ID(i) rb_id2name(i)
1830# define PRIsWARN PRIsVALUE
1831# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1832# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1833# define WARN_CALL rb_compile_warn
1834# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1835# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1836# define WARNING_CALL rb_compile_warning
1837PRINTF_ARGS(static void parser_compile_error(struct parser_params*, const rb_code_location_t *loc, const char *fmt, ...), 3, 4);
1838# define compile_error(p, ...) parser_compile_error(p, NULL, __VA_ARGS__)
1841#define RNODE_EXITS(node) ((rb_node_exits_t*)(node))
1844add_block_exit(struct parser_params *p, NODE *node)
1847 compile_error(p, "unexpected null node");
1850 switch (nd_type(node)) {
1851 case NODE_BREAK: case NODE_NEXT: case NODE_REDO: break;
1853 compile_error(p, "add_block_exit: unexpected node: %s", parser_node_name(nd_type(node)));
1856 if (!p->ctxt.in_defined) {
1857 rb_node_exits_t *exits = p->exits;
1859 RNODE_EXITS(exits->nd_stts)->nd_chain = node;
1860 exits->nd_stts = node;
1866static rb_node_exits_t *
1867init_block_exit(struct parser_params *p)
1869 rb_node_exits_t *old = p->exits;
1870 rb_node_exits_t *exits = NODE_NEW_INTERNAL(NODE_EXITS, rb_node_exits_t);
1871 exits->nd_chain = 0;
1872 exits->nd_stts = RNODE(exits);
1877static rb_node_exits_t *
1878allow_block_exit(struct parser_params *p)
1880 rb_node_exits_t *exits = p->exits;
1886restore_block_exit(struct parser_params *p, rb_node_exits_t *exits)
1892clear_block_exit(struct parser_params *p, bool error)
1894 rb_node_exits_t *exits = p->exits;
1897 for (NODE *e = RNODE(exits); (e = RNODE_EXITS(e)->nd_chain) != 0; ) {
1898 switch (nd_type(e)) {
1900 yyerror1(&e->nd_loc, "Invalid break");
1903 yyerror1(&e->nd_loc, "Invalid next");
1906 yyerror1(&e->nd_loc, "Invalid redo");
1909 yyerror1(&e->nd_loc, "unexpected node");
1910 goto end_checks; /* no nd_chain */
1915 exits->nd_stts = RNODE(exits);
1916 exits->nd_chain = 0;
1919#define WARN_EOL(tok) \
1920 (looking_at_eol_p(p) ? \
1921 (void)rb_warning0("'" tok "' at the end of line without an expression") : \
1923static int looking_at_eol_p(struct parser_params *p);
1926get_nd_value(struct parser_params *p, NODE *node)
1928 switch (nd_type(node)) {
1930 return RNODE_GASGN(node)->nd_value;
1932 return RNODE_IASGN(node)->nd_value;
1934 return RNODE_LASGN(node)->nd_value;
1936 return RNODE_DASGN(node)->nd_value;
1938 return RNODE_MASGN(node)->nd_value;
1940 return RNODE_CVASGN(node)->nd_value;
1942 return RNODE_CDECL(node)->nd_value;
1944 compile_error(p, "get_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1950set_nd_value(struct parser_params *p, NODE *node, NODE *rhs)
1952 switch (nd_type(node)) {
1954 RNODE_CDECL(node)->nd_value = rhs;
1957 RNODE_GASGN(node)->nd_value = rhs;
1960 RNODE_IASGN(node)->nd_value = rhs;
1963 RNODE_LASGN(node)->nd_value = rhs;
1966 RNODE_DASGN(node)->nd_value = rhs;
1969 RNODE_MASGN(node)->nd_value = rhs;
1972 RNODE_CVASGN(node)->nd_value = rhs;
1975 compile_error(p, "set_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1981get_nd_vid(struct parser_params *p, NODE *node)
1983 switch (nd_type(node)) {
1985 return RNODE_CDECL(node)->nd_vid;
1987 return RNODE_GASGN(node)->nd_vid;
1989 return RNODE_IASGN(node)->nd_vid;
1991 return RNODE_LASGN(node)->nd_vid;
1993 return RNODE_DASGN(node)->nd_vid;
1995 return RNODE_CVASGN(node)->nd_vid;
1997 compile_error(p, "get_nd_vid: unexpected node: %s", parser_node_name(nd_type(node)));
2003get_nd_args(struct parser_params *p, NODE *node)
2005 switch (nd_type(node)) {
2007 return RNODE_CALL(node)->nd_args;
2009 return RNODE_OPCALL(node)->nd_args;
2011 return RNODE_FCALL(node)->nd_args;
2013 return RNODE_QCALL(node)->nd_args;
2015 return RNODE_SUPER(node)->nd_args;
2024 compile_error(p, "get_nd_args: unexpected node: %s", parser_node_name(nd_type(node)));
2030djb2(const uint8_t *str, size_t len)
2032 st_index_t hash = 5381;
2034 for (size_t i = 0; i < len; i++) {
2035 hash = ((hash << 5) + hash) + str[i];
2042parser_memhash(const void *ptr, long len)
2044 return djb2(ptr, len);
2047#define PARSER_STRING_PTR(str) (str->ptr)
2048#define PARSER_STRING_LEN(str) (str->len)
2049#define PARSER_STRING_END(str) (&str->ptr[str->len])
2050#define STRING_SIZE(str) ((size_t)str->len + 1)
2051#define STRING_TERM_LEN(str) (1)
2052#define STRING_TERM_FILL(str) (str->ptr[str->len] = '\0
')
2053#define PARSER_STRING_RESIZE_CAPA_TERM(p,str,capacity,termlen) do {\
2054 REALLOC_N(str->ptr, char, (size_t)total + termlen); \
2057#define STRING_SET_LEN(str, n) do { \
2060#define PARSER_STRING_GETMEM(str, ptrvar, lenvar) \
2061 ((ptrvar) = str->ptr, \
2062 (lenvar) = str->len)
2065parser_string_char_at_end(struct parser_params *p, rb_parser_string_t *str, int when_empty)
2067 return PARSER_STRING_LEN(str) > 0 ? (unsigned char)PARSER_STRING_END(str)[-1] : when_empty;
2070static rb_parser_string_t *
2071rb_parser_string_new(rb_parser_t *p, const char *ptr, long len)
2073 rb_parser_string_t *str;
2076 rb_bug("negative string size (or size too big): %ld", len);
2079 str = xcalloc(1, sizeof(rb_parser_string_t));
2080 str->ptr = xcalloc(len + 1, sizeof(char));
2083 memcpy(PARSER_STRING_PTR(str), ptr, len);
2085 STRING_SET_LEN(str, len);
2086 STRING_TERM_FILL(str);
2090static rb_parser_string_t *
2091rb_parser_encoding_string_new(rb_parser_t *p, const char *ptr, long len, rb_encoding *enc)
2093 rb_parser_string_t *str = rb_parser_string_new(p, ptr, len);
2094 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2101rb_str_to_parser_string(rb_parser_t *p, VALUE str)
2104 rb_parser_string_t *ret = rb_parser_encoding_string_new(p, RSTRING_PTR(str), RSTRING_LEN(str), rb_enc_get(str));
2110rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str)
2113 xfree(PARSER_STRING_PTR(str));
2119rb_parser_str_hash(rb_parser_string_t *str)
2121 return parser_memhash((const void *)PARSER_STRING_PTR(str), PARSER_STRING_LEN(str));
2125rb_char_p_hash(const char *c)
2127 return parser_memhash((const void *)c, strlen(c));
2131rb_parser_str_capacity(rb_parser_string_t *str, const int termlen)
2133 return PARSER_STRING_LEN(str);
2138rb_parser_string_end(rb_parser_string_t *str)
2140 return &str->ptr[str->len];
2145rb_parser_string_set_encoding(rb_parser_string_t *str, rb_encoding *enc)
2151rb_parser_str_get_encoding(rb_parser_string_t *str)
2158PARSER_ENCODING_IS_ASCII8BIT(struct parser_params *p, rb_parser_string_t *str)
2160 return rb_parser_str_get_encoding(str) == rb_ascii8bit_encoding();
2165PARSER_ENC_CODERANGE(rb_parser_string_t *str)
2167 return str->coderange;
2171PARSER_ENC_CODERANGE_SET(rb_parser_string_t *str, int coderange)
2173 str->coderange = coderange;
2177PARSER_ENCODING_CODERANGE_SET(rb_parser_string_t *str, rb_encoding *enc, enum rb_parser_string_coderange_type cr)
2179 rb_parser_string_set_encoding(str, enc);
2180 PARSER_ENC_CODERANGE_SET(str, cr);
2184PARSER_ENC_CODERANGE_CLEAR(rb_parser_string_t *str)
2186 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2190PARSER_ENC_CODERANGE_ASCIIONLY(rb_parser_string_t *str)
2192 return PARSER_ENC_CODERANGE(str) == RB_PARSER_ENC_CODERANGE_7BIT;
2196PARSER_ENC_CODERANGE_CLEAN_P(int cr)
2198 return cr == RB_PARSER_ENC_CODERANGE_7BIT || cr == RB_PARSER_ENC_CODERANGE_VALID;
2202rb_parser_search_nonascii(const char *p, const char *e)
2206 for (; s < e; s++) {
2207 if (*s & 0x80) return s;
2214rb_parser_coderange_scan(struct parser_params *p, const char *ptr, long len, rb_encoding *enc)
2216 const char *e = ptr + len;
2218 if (enc == rb_ascii8bit_encoding()) {
2219 /* enc is ASCII-8BIT. ASCII-8BIT string never be broken. */
2220 ptr = rb_parser_search_nonascii(ptr, e);
2221 return ptr ? RB_PARSER_ENC_CODERANGE_VALID : RB_PARSER_ENC_CODERANGE_7BIT;
2224 /* parser string encoding is always asciicompat */
2225 ptr = rb_parser_search_nonascii(ptr, e);
2226 if (!ptr) return RB_PARSER_ENC_CODERANGE_7BIT;
2228 int ret = rb_enc_precise_mbclen(ptr, e, enc);
2229 if (!MBCLEN_CHARFOUND_P(ret)) return RB_PARSER_ENC_CODERANGE_BROKEN;
2230 ptr += MBCLEN_CHARFOUND_LEN(ret);
2231 if (ptr == e) break;
2232 ptr = rb_parser_search_nonascii(ptr, e);
2236 return RB_PARSER_ENC_CODERANGE_VALID;
2240rb_parser_enc_coderange_scan(struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2242 return rb_parser_coderange_scan(p, PARSER_STRING_PTR(str), PARSER_STRING_LEN(str), enc);
2246rb_parser_enc_str_coderange(struct parser_params *p, rb_parser_string_t *str)
2248 int cr = PARSER_ENC_CODERANGE(str);
2250 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2251 cr = rb_parser_enc_coderange_scan(p, str, rb_parser_str_get_encoding(str));
2252 PARSER_ENC_CODERANGE_SET(str, cr);
2258static rb_parser_string_t *
2259rb_parser_enc_associate(struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2261 if (rb_parser_str_get_encoding(str) == enc)
2263 if (!PARSER_ENC_CODERANGE_ASCIIONLY(str)) {
2264 PARSER_ENC_CODERANGE_CLEAR(str);
2266 rb_parser_string_set_encoding(str, enc);
2271rb_parser_is_ascii_string(struct parser_params *p, rb_parser_string_t *str)
2273 return rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_7BIT;
2277rb_parser_enc_compatible(struct parser_params *p, rb_parser_string_t *str1, rb_parser_string_t *str2)
2279 rb_encoding *enc1 = rb_parser_str_get_encoding(str1);
2280 rb_encoding *enc2 = rb_parser_str_get_encoding(str2);
2282 if (enc1 == NULL || enc2 == NULL)
2289 if (PARSER_STRING_LEN(str2) == 0)
2291 if (PARSER_STRING_LEN(str1) == 0)
2292 return rb_parser_is_ascii_string(p, str2) ? enc1 : enc2;
2296 cr1 = rb_parser_enc_str_coderange(p, str1);
2297 cr2 = rb_parser_enc_str_coderange(p, str2);
2300 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT) return enc2;
2301 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT) return enc1;
2304 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT) {
2308 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT) {
2316rb_parser_str_modify(rb_parser_string_t *str)
2318 PARSER_ENC_CODERANGE_CLEAR(str);
2322rb_parser_str_set_len(struct parser_params *p, rb_parser_string_t *str, long len)
2325 const int termlen = STRING_TERM_LEN(str);
2327 if (len > (capa = (long)(rb_parser_str_capacity(str, termlen))) || len < 0) {
2328 rb_bug("probable buffer overflow: %ld for %ld", len, capa);
2331 int cr = PARSER_ENC_CODERANGE(str);
2332 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2333 /* Leave unknown. */
2335 else if (len > PARSER_STRING_LEN(str)) {
2336 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2338 else if (len < PARSER_STRING_LEN(str)) {
2339 if (cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2340 /* ASCII-only string is keeping after truncated. Valid
2341 * and broken may be invalid or valid, leave unknown. */
2342 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2346 STRING_SET_LEN(str, len);
2347 STRING_TERM_FILL(str);
2350static rb_parser_string_t *
2351rb_parser_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len)
2353 rb_parser_str_modify(str);
2354 if (len == 0) return 0;
2356 long total, olen, off = -1;
2358 const int termlen = STRING_TERM_LEN(str);
2360 PARSER_STRING_GETMEM(str, sptr, olen);
2361 if (ptr >= sptr && ptr <= sptr + olen) {
2365 if (olen > LONG_MAX - len) {
2366 compile_error(p, "string sizes too big");
2370 PARSER_STRING_RESIZE_CAPA_TERM(p, str, total, termlen);
2371 sptr = PARSER_STRING_PTR(str);
2375 memcpy(sptr + olen, ptr, len);
2376 STRING_SET_LEN(str, total);
2377 STRING_TERM_FILL(str);
2382#define parser_str_cat(str, ptr, len) rb_parser_str_buf_cat(p, str, ptr, len)
2383#define parser_str_cat_cstr(str, lit) rb_parser_str_buf_cat(p, str, lit, strlen(lit))
2385static rb_parser_string_t *
2386rb_parser_enc_cr_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len,
2387 rb_encoding *ptr_enc, int ptr_cr, int *ptr_cr_ret)
2390 rb_encoding *str_enc, *res_enc;
2392 str_enc = rb_parser_str_get_encoding(str);
2393 str_cr = PARSER_STRING_LEN(str) ? PARSER_ENC_CODERANGE(str) : RB_PARSER_ENC_CODERANGE_7BIT;
2395 if (str_enc == ptr_enc) {
2396 if (str_cr != RB_PARSER_ENC_CODERANGE_UNKNOWN && ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2397 ptr_cr = rb_parser_coderange_scan(p, ptr, len, ptr_enc);
2401 /* parser string encoding is always asciicompat */
2402 if (ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2403 ptr_cr = rb_parser_coderange_scan(p, ptr, len, ptr_enc);
2405 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2406 if (str_enc == rb_ascii8bit_encoding() || ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2407 str_cr = rb_parser_enc_str_coderange(p, str);
2412 *ptr_cr_ret = ptr_cr;
2414 if (str_enc != ptr_enc &&
2415 str_cr != RB_PARSER_ENC_CODERANGE_7BIT &&
2416 ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2420 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2422 res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2424 else if (str_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2425 if (ptr_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2427 res_cr = RB_PARSER_ENC_CODERANGE_7BIT;
2434 else if (str_cr == RB_PARSER_ENC_CODERANGE_VALID) {
2436 if (PARSER_ENC_CODERANGE_CLEAN_P(ptr_cr))
2441 else { /* str_cr == RB_PARSER_ENC_CODERANGE_BROKEN */
2444 if (0 < len) res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2448 compile_error(p, "negative string size (or size too big)");
2450 parser_str_cat(str, ptr, len);
2451 PARSER_ENCODING_CODERANGE_SET(str, res_enc, res_cr);
2455 compile_error(p, "incompatible character encodings: %s and %s",
2456 rb_enc_name(str_enc), rb_enc_name(ptr_enc));
2457 UNREACHABLE_RETURN(0);
2461static rb_parser_string_t *
2462rb_parser_enc_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len,
2463 rb_encoding *ptr_enc)
2465 return rb_parser_enc_cr_str_buf_cat(p, str, ptr, len, ptr_enc, RB_PARSER_ENC_CODERANGE_UNKNOWN, NULL);
2468static rb_parser_string_t *
2469rb_parser_str_buf_append(struct parser_params *p, rb_parser_string_t *str, rb_parser_string_t *str2)
2471 int str2_cr = rb_parser_enc_str_coderange(p, str2);
2473 rb_parser_enc_cr_str_buf_cat(p, str, PARSER_STRING_PTR(str2), PARSER_STRING_LEN(str2),
2474 rb_parser_str_get_encoding(str2), str2_cr, &str2_cr);
2476 PARSER_ENC_CODERANGE_SET(str2, str2_cr);
2481static rb_parser_string_t *
2482rb_parser_str_resize(struct parser_params *p, rb_parser_string_t *str, long len)
2485 rb_bug("negative string size (or size too big)");
2488 long slen = PARSER_STRING_LEN(str);
2490 if (slen > len && PARSER_ENC_CODERANGE(str) != RB_PARSER_ENC_CODERANGE_7BIT) {
2491 PARSER_ENC_CODERANGE_CLEAR(str);
2496 const int termlen = STRING_TERM_LEN(str);
2498 if ((capa = slen) < len) {
2499 SIZED_REALLOC_N(str->ptr, char, (size_t)len + termlen, STRING_SIZE(str));
2501 else if (len == slen) return str;
2502 STRING_SET_LEN(str, len);
2503 STRING_TERM_FILL(str);
2508# define PARSER_ENC_STRING_GETMEM(str, ptrvar, lenvar, encvar) \
2509 ((ptrvar) = str->ptr, \
2510 (lenvar) = str->len, \
2511 (encvar) = str->enc)
2514rb_parser_string_hash_cmp(rb_parser_string_t *str1, rb_parser_string_t *str2)
2517 const char *ptr1, *ptr2;
2518 rb_encoding *enc1, *enc2;
2520 PARSER_ENC_STRING_GETMEM(str1, ptr1, len1, enc1);
2521 PARSER_ENC_STRING_GETMEM(str2, ptr2, len2, enc2);
2523 return (len1 != len2 ||
2525 memcmp(ptr1, ptr2, len1) != 0);
2529rb_parser_ary_extend(rb_parser_t *p, rb_parser_ary_t *ary, long len)
2532 if (ary->capa < len) {
2534 ary->data = (rb_parser_ary_data *)xrealloc(ary->data, sizeof(rb_parser_ary_data) * len);
2535 for (i = ary->len; i < len; i++) {
2542 * Do not call this directly.
2543 * Use rb_parser_ary_new_capa_for_XXX() instead.
2545static rb_parser_ary_t *
2546parser_ary_new_capa(rb_parser_t *p, long len)
2549 rb_bug("negative array size (or size too big): %ld", len);
2551 rb_parser_ary_t *ary = xcalloc(1, sizeof(rb_parser_ary_t));
2556 ary->data = (rb_parser_ary_data *)xcalloc(len, sizeof(rb_parser_ary_data));
2565static rb_parser_ary_t *
2566rb_parser_ary_new_capa_for_script_line(rb_parser_t *p, long len)
2568 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2569 ary->data_type = PARSER_ARY_DATA_SCRIPT_LINE;
2573static rb_parser_ary_t *
2574rb_parser_ary_new_capa_for_ast_token(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_AST_TOKEN;
2582static rb_parser_ary_t *
2583rb_parser_ary_new_capa_for_node(rb_parser_t *p, long len)
2585 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2586 ary->data_type = PARSER_ARY_DATA_NODE;
2591 * Do not call this directly.
2592 * Use rb_parser_ary_push_XXX() instead.
2594static rb_parser_ary_t *
2595parser_ary_push(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ary_data val)
2597 if (ary->len == ary->capa) {
2598 rb_parser_ary_extend(p, ary, ary->len == 0 ? 1 : ary->len * 2);
2600 ary->data[ary->len++] = val;
2605static rb_parser_ary_t *
2606rb_parser_ary_push_ast_token(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ast_token_t *val)
2608 if (ary->data_type != PARSER_ARY_DATA_AST_TOKEN) {
2609 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2611 return parser_ary_push(p, ary, val);
2614static rb_parser_ary_t *
2615rb_parser_ary_push_script_line(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_string_t *val)
2617 if (ary->data_type != PARSER_ARY_DATA_SCRIPT_LINE) {
2618 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2620 return parser_ary_push(p, ary, val);
2624static rb_parser_ary_t *
2625rb_parser_ary_push_node(rb_parser_t *p, rb_parser_ary_t *ary, NODE *val)
2627 if (ary->data_type != PARSER_ARY_DATA_NODE) {
2628 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2630 return parser_ary_push(p, ary, val);
2635rb_parser_ast_token_free(rb_parser_t *p, rb_parser_ast_token_t *token)
2638 rb_parser_string_free(p, token->str);
2643rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary)
2645# define foreach_ary(ptr) \
2646 for (rb_parser_ary_data *ptr = ary->data, *const end_ary_data = ptr + ary->len; \
2647 ptr < end_ary_data; ptr++)
2648 switch (ary->data_type) {
2649 case PARSER_ARY_DATA_AST_TOKEN:
2650 foreach_ary(data) {rb_parser_ast_token_free(p, *data);}
2652 case PARSER_ARY_DATA_SCRIPT_LINE:
2653 foreach_ary(data) {rb_parser_string_free(p, *data);}
2655 case PARSER_ARY_DATA_NODE:
2656 /* Do nothing because nodes are freed when rb_ast_t is freed */
2659 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2673# define YY_CAST(Type, Val) static_cast<Type> (Val)
2674# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
2676# define YY_CAST(Type, Val) ((Type) (Val))
2677# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
2681# if defined __cplusplus
2682# if 201103L <= __cplusplus
2683# define YY_NULLPTR nullptr
2685# define YY_NULLPTR 0
2688# define YY_NULLPTR ((void*)0)
2696 YYSYMBOL_YYEMPTY = -2,
2697 YYSYMBOL_YYEOF = 0, /* "end-of-input" */
2698 YYSYMBOL_YYerror = 1, /* error */
2699 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
2700 YYSYMBOL_keyword_class = 3, /* "'class'" */
2701 YYSYMBOL_keyword_module = 4, /* "'module
'" */
2702 YYSYMBOL_keyword_def = 5, /* "'def
'" */
2703 YYSYMBOL_keyword_undef = 6, /* "'undef
'" */
2704 YYSYMBOL_keyword_begin = 7, /* "'begin
'" */
2705 YYSYMBOL_keyword_rescue = 8, /* "'rescue
'" */
2706 YYSYMBOL_keyword_ensure = 9, /* "'ensure
'" */
2707 YYSYMBOL_keyword_end = 10, /* "'end
'" */
2708 YYSYMBOL_keyword_if = 11, /* "'if'" */
2709 YYSYMBOL_keyword_unless = 12, /* "'unless
'" */
2710 YYSYMBOL_keyword_then = 13, /* "'then
'" */
2711 YYSYMBOL_keyword_elsif = 14, /* "'elsif
'" */
2712 YYSYMBOL_keyword_else = 15, /* "'else'" */
2713 YYSYMBOL_keyword_case = 16, /* "'case'" */
2714 YYSYMBOL_keyword_when = 17, /* "'when
'" */
2715 YYSYMBOL_keyword_while = 18, /* "'while'" */
2716 YYSYMBOL_keyword_until = 19, /* "'until
'" */
2717 YYSYMBOL_keyword_for = 20, /* "'for'" */
2718 YYSYMBOL_keyword_break = 21, /* "'break'" */
2719 YYSYMBOL_keyword_next = 22, /* "'next
'" */
2720 YYSYMBOL_keyword_redo = 23, /* "'redo
'" */
2721 YYSYMBOL_keyword_retry = 24, /* "'retry
'" */
2722 YYSYMBOL_keyword_in = 25, /* "'in
'" */
2723 YYSYMBOL_keyword_do = 26, /* "'do'" */
2724 YYSYMBOL_keyword_do_cond = 27, /* "'do' for condition" */
2725 YYSYMBOL_keyword_do_block = 28, /* "'do' for block" */
2726 YYSYMBOL_keyword_do_LAMBDA = 29, /* "'do' for lambda" */
2727 YYSYMBOL_keyword_return = 30, /* "'return'" */
2728 YYSYMBOL_keyword_yield = 31, /* "'yield
'" */
2729 YYSYMBOL_keyword_super = 32, /* "'super
'" */
2730 YYSYMBOL_keyword_self = 33, /* "'self
'" */
2731 YYSYMBOL_keyword_nil = 34, /* "'nil
'" */
2732 YYSYMBOL_keyword_true = 35, /* "'true'" */
2733 YYSYMBOL_keyword_false = 36, /* "'false'" */
2734 YYSYMBOL_keyword_and = 37, /* "'and
'" */
2735 YYSYMBOL_keyword_or = 38, /* "'or
'" */
2736 YYSYMBOL_keyword_not = 39, /* "'not
'" */
2737 YYSYMBOL_modifier_if = 40, /* "'if' modifier" */
2738 YYSYMBOL_modifier_unless = 41, /* "'unless
' modifier" */
2739 YYSYMBOL_modifier_while = 42, /* "'while' modifier" */
2740 YYSYMBOL_modifier_until = 43, /* "'until
' modifier" */
2741 YYSYMBOL_modifier_rescue = 44, /* "'rescue
' modifier" */
2742 YYSYMBOL_keyword_alias = 45, /* "'alias
'" */
2743 YYSYMBOL_keyword_defined = 46, /* "'defined?
'" */
2744 YYSYMBOL_keyword_BEGIN = 47, /* "'BEGIN
'" */
2745 YYSYMBOL_keyword_END = 48, /* "'END
'" */
2746 YYSYMBOL_keyword__LINE__ = 49, /* "'__LINE__
'" */
2747 YYSYMBOL_keyword__FILE__ = 50, /* "'__FILE__
'" */
2748 YYSYMBOL_keyword__ENCODING__ = 51, /* "'__ENCODING__
'" */
2749 YYSYMBOL_tIDENTIFIER = 52, /* "local variable or method" */
2750 YYSYMBOL_tFID = 53, /* "method" */
2751 YYSYMBOL_tGVAR = 54, /* "global variable" */
2752 YYSYMBOL_tIVAR = 55, /* "instance variable" */
2753 YYSYMBOL_tCONSTANT = 56, /* "constant" */
2754 YYSYMBOL_tCVAR = 57, /* "class variable" */
2755 YYSYMBOL_tLABEL = 58, /* "label" */
2756 YYSYMBOL_tINTEGER = 59, /* "integer literal" */
2757 YYSYMBOL_tFLOAT = 60, /* "float literal" */
2758 YYSYMBOL_tRATIONAL = 61, /* "rational literal" */
2759 YYSYMBOL_tIMAGINARY = 62, /* "imaginary literal" */
2760 YYSYMBOL_tCHAR = 63, /* "char literal" */
2761 YYSYMBOL_tNTH_REF = 64, /* "numbered reference" */
2762 YYSYMBOL_tBACK_REF = 65, /* "back reference" */
2763 YYSYMBOL_tSTRING_CONTENT = 66, /* "literal content" */
2764 YYSYMBOL_tREGEXP_END = 67, /* tREGEXP_END */
2765 YYSYMBOL_tDUMNY_END = 68, /* "dummy end" */
2766 YYSYMBOL_69_ = 69, /* '.
' */
2767 YYSYMBOL_70_backslash_ = 70, /* "backslash" */
2768 YYSYMBOL_tSP = 71, /* "escaped space" */
2769 YYSYMBOL_72_escaped_horizontal_tab_ = 72, /* "escaped horizontal tab" */
2770 YYSYMBOL_73_escaped_form_feed_ = 73, /* "escaped form feed" */
2771 YYSYMBOL_74_escaped_carriage_return_ = 74, /* "escaped carriage return" */
2772 YYSYMBOL_75_escaped_vertical_tab_ = 75, /* "escaped vertical tab" */
2773 YYSYMBOL_tUPLUS = 76, /* "unary+" */
2774 YYSYMBOL_tUMINUS = 77, /* "unary-" */
2775 YYSYMBOL_tPOW = 78, /* "**" */
2776 YYSYMBOL_tCMP = 79, /* "<=>" */
2777 YYSYMBOL_tEQ = 80, /* "==" */
2778 YYSYMBOL_tEQQ = 81, /* "===" */
2779 YYSYMBOL_tNEQ = 82, /* "!=" */
2780 YYSYMBOL_tGEQ = 83, /* ">=" */
2781 YYSYMBOL_tLEQ = 84, /* "<=" */
2782 YYSYMBOL_tANDOP = 85, /* "&&" */
2783 YYSYMBOL_tOROP = 86, /* "||" */
2784 YYSYMBOL_tMATCH = 87, /* "=~" */
2785 YYSYMBOL_tNMATCH = 88, /* "!~" */
2786 YYSYMBOL_tDOT2 = 89, /* ".." */
2787 YYSYMBOL_tDOT3 = 90, /* "..." */
2788 YYSYMBOL_tBDOT2 = 91, /* "(.." */
2789 YYSYMBOL_tBDOT3 = 92, /* "(..." */
2790 YYSYMBOL_tAREF = 93, /* "[]" */
2791 YYSYMBOL_tASET = 94, /* "[]=" */
2792 YYSYMBOL_tLSHFT = 95, /* "<<" */
2793 YYSYMBOL_tRSHFT = 96, /* ">>" */
2794 YYSYMBOL_tANDDOT = 97, /* "&." */
2795 YYSYMBOL_tCOLON2 = 98, /* "::" */
2796 YYSYMBOL_tCOLON3 = 99, /* ":: at EXPR_BEG" */
2797 YYSYMBOL_tOP_ASGN = 100, /* "operator-assignment" */
2798 YYSYMBOL_tASSOC = 101, /* "=>" */
2799 YYSYMBOL_tLPAREN = 102, /* "(" */
2800 YYSYMBOL_tLPAREN_ARG = 103, /* "( arg" */
2801 YYSYMBOL_tLBRACK = 104, /* "[" */
2802 YYSYMBOL_tLBRACE = 105, /* "{" */
2803 YYSYMBOL_tLBRACE_ARG = 106, /* "{ arg" */
2804 YYSYMBOL_tSTAR = 107, /* "*" */
2805 YYSYMBOL_tDSTAR = 108, /* "**arg" */
2806 YYSYMBOL_tAMPER = 109, /* "&" */
2807 YYSYMBOL_tLAMBDA = 110, /* "->" */
2808 YYSYMBOL_tSYMBEG = 111, /* "symbol literal" */
2809 YYSYMBOL_tSTRING_BEG = 112, /* "string literal" */
2810 YYSYMBOL_tXSTRING_BEG = 113, /* "backtick literal" */
2811 YYSYMBOL_tREGEXP_BEG = 114, /* "regexp literal" */
2812 YYSYMBOL_tWORDS_BEG = 115, /* "word list" */
2813 YYSYMBOL_tQWORDS_BEG = 116, /* "verbatim word list" */
2814 YYSYMBOL_tSYMBOLS_BEG = 117, /* "symbol list" */
2815 YYSYMBOL_tQSYMBOLS_BEG = 118, /* "verbatim symbol list" */
2816 YYSYMBOL_tSTRING_END = 119, /* "terminator" */
2817 YYSYMBOL_tSTRING_DEND = 120, /* "'}
'" */
2818 YYSYMBOL_tSTRING_DBEG = 121, /* "'#{
'" */
2819 YYSYMBOL_tSTRING_DVAR = 122, /* tSTRING_DVAR */
2820 YYSYMBOL_tLAMBEG = 123, /* tLAMBEG */
2821 YYSYMBOL_tLABEL_END = 124, /* tLABEL_END */
2822 YYSYMBOL_tIGNORED_NL = 125, /* tIGNORED_NL */
2823 YYSYMBOL_tCOMMENT = 126, /* tCOMMENT */
2824 YYSYMBOL_tEMBDOC_BEG = 127, /* tEMBDOC_BEG */
2825 YYSYMBOL_tEMBDOC = 128, /* tEMBDOC */
2826 YYSYMBOL_tEMBDOC_END = 129, /* tEMBDOC_END */
2827 YYSYMBOL_tHEREDOC_BEG = 130, /* tHEREDOC_BEG */
2828 YYSYMBOL_tHEREDOC_END = 131, /* tHEREDOC_END */
2829 YYSYMBOL_k__END__ = 132, /* k__END__ */
2830 YYSYMBOL_tLOWEST = 133, /* tLOWEST */
2831 YYSYMBOL_134_ = 134, /* '=
' */
2832 YYSYMBOL_135_ = 135, /* '?
' */
2833 YYSYMBOL_136_ = 136, /* ':
' */
2834 YYSYMBOL_137_ = 137, /* '>
' */
2835 YYSYMBOL_138_ = 138, /* '<
' */
2836 YYSYMBOL_139_ = 139, /* '|
' */
2837 YYSYMBOL_140_ = 140, /* '^
' */
2838 YYSYMBOL_141_ = 141, /* '&
' */
2839 YYSYMBOL_142_ = 142, /* '+
' */
2840 YYSYMBOL_143_ = 143, /* '-
' */
2841 YYSYMBOL_144_ = 144, /* '*
' */
2842 YYSYMBOL_145_ = 145, /* '/
' */
2843 YYSYMBOL_146_ = 146, /* '%
' */
2844 YYSYMBOL_tUMINUS_NUM = 147, /* tUMINUS_NUM */
2845 YYSYMBOL_148_ = 148, /* '!
' */
2846 YYSYMBOL_149_ = 149, /* '~
' */
2847 YYSYMBOL_tLAST_TOKEN = 150, /* tLAST_TOKEN */
2848 YYSYMBOL_151_ = 151, /* '{
' */
2849 YYSYMBOL_152_ = 152, /* '}
' */
2850 YYSYMBOL_153_ = 153, /* '[
' */
2851 YYSYMBOL_154_n_ = 154, /* '\n
' */
2852 YYSYMBOL_155_ = 155, /* ',
' */
2853 YYSYMBOL_156_ = 156, /* '`
' */
2854 YYSYMBOL_157_ = 157, /* '(
' */
2855 YYSYMBOL_158_ = 158, /* ')
' */
2856 YYSYMBOL_159_ = 159, /* ']
' */
2857 YYSYMBOL_160_ = 160, /* ';
' */
2858 YYSYMBOL_161_ = 161, /* ' ' */
2859 YYSYMBOL_YYACCEPT = 162, /* $accept */
2860 YYSYMBOL_option_terms = 163, /* option_terms */
2861 YYSYMBOL_compstmt_top_stmts = 164, /* compstmt_top_stmts */
2862 YYSYMBOL_165_1 = 165, /* $@1 */
2863 YYSYMBOL_program = 166, /* program */
2864 YYSYMBOL_top_stmts = 167, /* top_stmts */
2865 YYSYMBOL_top_stmt = 168, /* top_stmt */
2866 YYSYMBOL_block_open = 169, /* block_open */
2867 YYSYMBOL_begin_block = 170, /* begin_block */
2868 YYSYMBOL_compstmt_stmts = 171, /* compstmt_stmts */
2869 YYSYMBOL_172_2 = 172, /* $@2 */
2870 YYSYMBOL_173_3 = 173, /* $@3 */
2871 YYSYMBOL_bodystmt = 174, /* bodystmt */
2872 YYSYMBOL_175_4 = 175, /* $@4 */
2873 YYSYMBOL_stmts = 176, /* stmts */
2874 YYSYMBOL_stmt_or_begin = 177, /* stmt_or_begin */
2875 YYSYMBOL_178_5 = 178, /* $@5 */
2876 YYSYMBOL_allow_exits = 179, /* allow_exits */
2877 YYSYMBOL_k_END = 180, /* k_END */
2878 YYSYMBOL_181_6 = 181, /* $@6 */
2879 YYSYMBOL_stmt = 182, /* stmt */
2880 YYSYMBOL_asgn_mrhs = 183, /* asgn_mrhs */
2881 YYSYMBOL_asgn_command_rhs = 184, /* asgn_command_rhs */
2882 YYSYMBOL_command_asgn = 185, /* command_asgn */
2883 YYSYMBOL_op_asgn_command_rhs = 186, /* op_asgn_command_rhs */
2884 YYSYMBOL_def_endless_method_endless_command = 187, /* def_endless_method_endless_command */
2885 YYSYMBOL_endless_command = 188, /* endless_command */
2886 YYSYMBOL_option__n_ = 189, /* option_'\n
' */
2887 YYSYMBOL_command_rhs = 190, /* command_rhs */
2888 YYSYMBOL_expr = 191, /* expr */
2889 YYSYMBOL_192_7 = 192, /* $@7 */
2890 YYSYMBOL_193_8 = 193, /* $@8 */
2891 YYSYMBOL_def_name = 194, /* def_name */
2892 YYSYMBOL_defn_head = 195, /* defn_head */
2893 YYSYMBOL_196_9 = 196, /* $@9 */
2894 YYSYMBOL_defs_head = 197, /* defs_head */
2895 YYSYMBOL_value_expr_expr = 198, /* value_expr_expr */
2896 YYSYMBOL_expr_value = 199, /* expr_value */
2897 YYSYMBOL_200_10 = 200, /* $@10 */
2898 YYSYMBOL_201_11 = 201, /* $@11 */
2899 YYSYMBOL_expr_value_do = 202, /* expr_value_do */
2900 YYSYMBOL_command_call = 203, /* command_call */
2901 YYSYMBOL_value_expr_command_call = 204, /* value_expr_command_call */
2902 YYSYMBOL_command_call_value = 205, /* command_call_value */
2903 YYSYMBOL_block_command = 206, /* block_command */
2904 YYSYMBOL_cmd_brace_block = 207, /* cmd_brace_block */
2905 YYSYMBOL_fcall = 208, /* fcall */
2906 YYSYMBOL_command = 209, /* command */
2907 YYSYMBOL_mlhs = 210, /* mlhs */
2908 YYSYMBOL_mlhs_inner = 211, /* mlhs_inner */
2909 YYSYMBOL_mlhs_basic = 212, /* mlhs_basic */
2910 YYSYMBOL_mlhs_items_mlhs_item = 213, /* mlhs_items_mlhs_item */
2911 YYSYMBOL_mlhs_item = 214, /* mlhs_item */
2912 YYSYMBOL_mlhs_head = 215, /* mlhs_head */
2913 YYSYMBOL_mlhs_node = 216, /* mlhs_node */
2914 YYSYMBOL_lhs = 217, /* lhs */
2915 YYSYMBOL_cname = 218, /* cname */
2916 YYSYMBOL_cpath = 219, /* cpath */
2917 YYSYMBOL_fname = 220, /* fname */
2918 YYSYMBOL_fitem = 221, /* fitem */
2919 YYSYMBOL_undef_list = 222, /* undef_list */
2920 YYSYMBOL_223_12 = 223, /* $@12 */
2921 YYSYMBOL_op = 224, /* op */
2922 YYSYMBOL_reswords = 225, /* reswords */
2923 YYSYMBOL_asgn_arg_rhs = 226, /* asgn_arg_rhs */
2924 YYSYMBOL_arg = 227, /* arg */
2925 YYSYMBOL_op_asgn_arg_rhs = 228, /* op_asgn_arg_rhs */
2926 YYSYMBOL_range_expr_arg = 229, /* range_expr_arg */
2927 YYSYMBOL_def_endless_method_endless_arg = 230, /* def_endless_method_endless_arg */
2928 YYSYMBOL_ternary = 231, /* ternary */
2929 YYSYMBOL_endless_arg = 232, /* endless_arg */
2930 YYSYMBOL_relop = 233, /* relop */
2931 YYSYMBOL_rel_expr = 234, /* rel_expr */
2932 YYSYMBOL_lex_ctxt = 235, /* lex_ctxt */
2933 YYSYMBOL_begin_defined = 236, /* begin_defined */
2934 YYSYMBOL_after_rescue = 237, /* after_rescue */
2935 YYSYMBOL_value_expr_arg = 238, /* value_expr_arg */
2936 YYSYMBOL_arg_value = 239, /* arg_value */
2937 YYSYMBOL_aref_args = 240, /* aref_args */
2938 YYSYMBOL_arg_rhs = 241, /* arg_rhs */
2939 YYSYMBOL_paren_args = 242, /* paren_args */
2940 YYSYMBOL_opt_paren_args = 243, /* opt_paren_args */
2941 YYSYMBOL_opt_call_args = 244, /* opt_call_args */
2942 YYSYMBOL_value_expr_command = 245, /* value_expr_command */
2943 YYSYMBOL_call_args = 246, /* call_args */
2944 YYSYMBOL_247_13 = 247, /* $@13 */
2945 YYSYMBOL_command_args = 248, /* command_args */
2946 YYSYMBOL_block_arg = 249, /* block_arg */
2947 YYSYMBOL_opt_block_arg = 250, /* opt_block_arg */
2948 YYSYMBOL_args = 251, /* args */
2949 YYSYMBOL_arg_splat = 252, /* arg_splat */
2950 YYSYMBOL_mrhs_arg = 253, /* mrhs_arg */
2951 YYSYMBOL_mrhs = 254, /* mrhs */
2952 YYSYMBOL_primary = 255, /* primary */
2953 YYSYMBOL_256_14 = 256, /* $@14 */
2954 YYSYMBOL_257_15 = 257, /* $@15 */
2955 YYSYMBOL_258_16 = 258, /* @16 */
2956 YYSYMBOL_259_17 = 259, /* @17 */
2957 YYSYMBOL_260_18 = 260, /* $@18 */
2958 YYSYMBOL_261_19 = 261, /* $@19 */
2959 YYSYMBOL_262_20 = 262, /* $@20 */
2960 YYSYMBOL_263_21 = 263, /* $@21 */
2961 YYSYMBOL_264_22 = 264, /* $@22 */
2962 YYSYMBOL_265_23 = 265, /* $@23 */
2963 YYSYMBOL_266_24 = 266, /* $@24 */
2964 YYSYMBOL_value_expr_primary = 267, /* value_expr_primary */
2965 YYSYMBOL_primary_value = 268, /* primary_value */
2966 YYSYMBOL_k_begin = 269, /* k_begin */
2967 YYSYMBOL_k_if = 270, /* k_if */
2968 YYSYMBOL_k_unless = 271, /* k_unless */
2969 YYSYMBOL_k_while = 272, /* k_while */
2970 YYSYMBOL_k_until = 273, /* k_until */
2971 YYSYMBOL_k_case = 274, /* k_case */
2972 YYSYMBOL_k_for = 275, /* k_for */
2973 YYSYMBOL_k_class = 276, /* k_class */
2974 YYSYMBOL_k_module = 277, /* k_module */
2975 YYSYMBOL_k_def = 278, /* k_def */
2976 YYSYMBOL_k_do = 279, /* k_do */
2977 YYSYMBOL_k_do_block = 280, /* k_do_block */
2978 YYSYMBOL_k_rescue = 281, /* k_rescue */
2979 YYSYMBOL_k_ensure = 282, /* k_ensure */
2980 YYSYMBOL_k_when = 283, /* k_when */
2981 YYSYMBOL_k_else = 284, /* k_else */
2982 YYSYMBOL_k_elsif = 285, /* k_elsif */
2983 YYSYMBOL_k_end = 286, /* k_end */
2984 YYSYMBOL_k_return = 287, /* k_return */
2985 YYSYMBOL_k_yield = 288, /* k_yield */
2986 YYSYMBOL_then = 289, /* then */
2987 YYSYMBOL_do = 290, /* do */
2988 YYSYMBOL_if_tail = 291, /* if_tail */
2989 YYSYMBOL_opt_else = 292, /* opt_else */
2990 YYSYMBOL_for_var = 293, /* for_var */
2991 YYSYMBOL_f_marg = 294, /* f_marg */
2992 YYSYMBOL_mlhs_items_f_marg = 295, /* mlhs_items_f_marg */
2993 YYSYMBOL_f_margs = 296, /* f_margs */
2994 YYSYMBOL_f_rest_marg = 297, /* f_rest_marg */
2995 YYSYMBOL_f_any_kwrest = 298, /* f_any_kwrest */
2996 YYSYMBOL_299_25 = 299, /* $@25 */
2997 YYSYMBOL_f_eq = 300, /* f_eq */
2998 YYSYMBOL_f_kw_primary_value = 301, /* f_kw_primary_value */
2999 YYSYMBOL_f_kwarg_primary_value = 302, /* f_kwarg_primary_value */
3000 YYSYMBOL_opt_f_block_arg_none = 303, /* opt_f_block_arg_none */
3001 YYSYMBOL_args_tail_basic_primary_value_none = 304, /* args_tail_basic_primary_value_none */
3002 YYSYMBOL_block_args_tail = 305, /* block_args_tail */
3003 YYSYMBOL_excessed_comma = 306, /* excessed_comma */
3004 YYSYMBOL_f_opt_primary_value = 307, /* f_opt_primary_value */
3005 YYSYMBOL_f_opt_arg_primary_value = 308, /* f_opt_arg_primary_value */
3006 YYSYMBOL_opt_args_tail_block_args_tail_none = 309, /* opt_args_tail_block_args_tail_none */
3007 YYSYMBOL_args_list_primary_value_opt_args_tail_block_args_tail_none = 310, /* args-list_primary_value_opt_args_tail_block_args_tail_none */
3008 YYSYMBOL_block_param = 311, /* block_param */
3009 YYSYMBOL_tail_only_args_block_args_tail = 312, /* tail-only-args_block_args_tail */
3010 YYSYMBOL_opt_block_param_def = 313, /* opt_block_param_def */
3011 YYSYMBOL_block_param_def = 314, /* block_param_def */
3012 YYSYMBOL_opt_block_param = 315, /* opt_block_param */
3013 YYSYMBOL_opt_bv_decl = 316, /* opt_bv_decl */
3014 YYSYMBOL_bv_decls = 317, /* bv_decls */
3015 YYSYMBOL_bvar = 318, /* bvar */
3016 YYSYMBOL_max_numparam = 319, /* max_numparam */
3017 YYSYMBOL_numparam = 320, /* numparam */
3018 YYSYMBOL_it_id = 321, /* it_id */
3019 YYSYMBOL_322_26 = 322, /* @26 */
3020 YYSYMBOL_323_27 = 323, /* $@27 */
3021 YYSYMBOL_lambda = 324, /* lambda */
3022 YYSYMBOL_f_larglist = 325, /* f_larglist */
3023 YYSYMBOL_lambda_body = 326, /* lambda_body */
3024 YYSYMBOL_327_28 = 327, /* $@28 */
3025 YYSYMBOL_do_block = 328, /* do_block */
3026 YYSYMBOL_block_call = 329, /* block_call */
3027 YYSYMBOL_method_call = 330, /* method_call */
3028 YYSYMBOL_brace_block = 331, /* brace_block */
3029 YYSYMBOL_332_29 = 332, /* @29 */
3030 YYSYMBOL_brace_body = 333, /* brace_body */
3031 YYSYMBOL_334_30 = 334, /* @30 */
3032 YYSYMBOL_do_body = 335, /* do_body */
3033 YYSYMBOL_case_args = 336, /* case_args */
3034 YYSYMBOL_case_body = 337, /* case_body */
3035 YYSYMBOL_cases = 338, /* cases */
3036 YYSYMBOL_p_pvtbl = 339, /* p_pvtbl */
3037 YYSYMBOL_p_pktbl = 340, /* p_pktbl */
3038 YYSYMBOL_p_in_kwarg = 341, /* p_in_kwarg */
3039 YYSYMBOL_342_31 = 342, /* $@31 */
3040 YYSYMBOL_p_case_body = 343, /* p_case_body */
3041 YYSYMBOL_p_cases = 344, /* p_cases */
3042 YYSYMBOL_p_top_expr = 345, /* p_top_expr */
3043 YYSYMBOL_p_top_expr_body = 346, /* p_top_expr_body */
3044 YYSYMBOL_p_expr = 347, /* p_expr */
3045 YYSYMBOL_p_as = 348, /* p_as */
3046 YYSYMBOL_349_32 = 349, /* $@32 */
3047 YYSYMBOL_p_alt = 350, /* p_alt */
3048 YYSYMBOL_p_lparen = 351, /* p_lparen */
3049 YYSYMBOL_p_lbracket = 352, /* p_lbracket */
3050 YYSYMBOL_p_expr_basic = 353, /* p_expr_basic */
3051 YYSYMBOL_354_33 = 354, /* $@33 */
3052 YYSYMBOL_p_args = 355, /* p_args */
3053 YYSYMBOL_p_args_head = 356, /* p_args_head */
3054 YYSYMBOL_p_args_tail = 357, /* p_args_tail */
3055 YYSYMBOL_p_find = 358, /* p_find */
3056 YYSYMBOL_p_rest = 359, /* p_rest */
3057 YYSYMBOL_p_args_post = 360, /* p_args_post */
3058 YYSYMBOL_p_arg = 361, /* p_arg */
3059 YYSYMBOL_p_kwargs = 362, /* p_kwargs */
3060 YYSYMBOL_p_kwarg = 363, /* p_kwarg */
3061 YYSYMBOL_p_kw = 364, /* p_kw */
3062 YYSYMBOL_p_kw_label = 365, /* p_kw_label */
3063 YYSYMBOL_p_kwrest = 366, /* p_kwrest */
3064 YYSYMBOL_p_kwnorest = 367, /* p_kwnorest */
3065 YYSYMBOL_p_any_kwrest = 368, /* p_any_kwrest */
3066 YYSYMBOL_p_value = 369, /* p_value */
3067 YYSYMBOL_range_expr_p_primitive = 370, /* range_expr_p_primitive */
3068 YYSYMBOL_p_primitive = 371, /* p_primitive */
3069 YYSYMBOL_p_variable = 372, /* p_variable */
3070 YYSYMBOL_p_var_ref = 373, /* p_var_ref */
3071 YYSYMBOL_p_expr_ref = 374, /* p_expr_ref */
3072 YYSYMBOL_p_const = 375, /* p_const */
3073 YYSYMBOL_opt_rescue = 376, /* opt_rescue */
3074 YYSYMBOL_exc_list = 377, /* exc_list */
3075 YYSYMBOL_exc_var = 378, /* exc_var */
3076 YYSYMBOL_opt_ensure = 379, /* opt_ensure */
3077 YYSYMBOL_literal = 380, /* literal */
3078 YYSYMBOL_strings = 381, /* strings */
3079 YYSYMBOL_string = 382, /* string */
3080 YYSYMBOL_string1 = 383, /* string1 */
3081 YYSYMBOL_xstring = 384, /* xstring */
3082 YYSYMBOL_regexp = 385, /* regexp */
3083 YYSYMBOL_nonempty_list__ = 386, /* nonempty_list_' ' */
3084 YYSYMBOL_words_tWORDS_BEG_word_list = 387, /* words_tWORDS_BEG_word_list */
3085 YYSYMBOL_words = 388, /* words */
3086 YYSYMBOL_word_list = 389, /* word_list */
3087 YYSYMBOL_word = 390, /* word */
3088 YYSYMBOL_words_tSYMBOLS_BEG_symbol_list = 391, /* words_tSYMBOLS_BEG_symbol_list */
3089 YYSYMBOL_symbols = 392, /* symbols */
3090 YYSYMBOL_symbol_list = 393, /* symbol_list */
3091 YYSYMBOL_words_tQWORDS_BEG_qword_list = 394, /* words_tQWORDS_BEG_qword_list */
3092 YYSYMBOL_qwords = 395, /* qwords */
3093 YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list = 396, /* words_tQSYMBOLS_BEG_qsym_list */
3094 YYSYMBOL_qsymbols = 397, /* qsymbols */
3095 YYSYMBOL_qword_list = 398, /* qword_list */
3096 YYSYMBOL_qsym_list = 399, /* qsym_list */
3097 YYSYMBOL_string_contents = 400, /* string_contents */
3098 YYSYMBOL_xstring_contents = 401, /* xstring_contents */
3099 YYSYMBOL_regexp_contents = 402, /* regexp_contents */
3100 YYSYMBOL_string_content = 403, /* string_content */
3101 YYSYMBOL_404_34 = 404, /* @34 */
3102 YYSYMBOL_405_35 = 405, /* @35 */
3103 YYSYMBOL_406_36 = 406, /* @36 */
3104 YYSYMBOL_407_37 = 407, /* @37 */
3105 YYSYMBOL_408_38 = 408, /* @38 */
3106 YYSYMBOL_string_dend = 409, /* string_dend */
3107 YYSYMBOL_string_dvar = 410, /* string_dvar */
3108 YYSYMBOL_symbol = 411, /* symbol */
3109 YYSYMBOL_ssym = 412, /* ssym */
3110 YYSYMBOL_sym = 413, /* sym */
3111 YYSYMBOL_dsym = 414, /* dsym */
3112 YYSYMBOL_numeric = 415, /* numeric */
3113 YYSYMBOL_simple_numeric = 416, /* simple_numeric */
3114 YYSYMBOL_nonlocal_var = 417, /* nonlocal_var */
3115 YYSYMBOL_user_variable = 418, /* user_variable */
3116 YYSYMBOL_keyword_variable = 419, /* keyword_variable */
3117 YYSYMBOL_var_ref = 420, /* var_ref */
3118 YYSYMBOL_var_lhs = 421, /* var_lhs */
3119 YYSYMBOL_backref = 422, /* backref */
3120 YYSYMBOL_423_39 = 423, /* $@39 */
3121 YYSYMBOL_superclass = 424, /* superclass */
3122 YYSYMBOL_f_opt_paren_args = 425, /* f_opt_paren_args */
3123 YYSYMBOL_f_empty_arg = 426, /* f_empty_arg */
3124 YYSYMBOL_f_paren_args = 427, /* f_paren_args */
3125 YYSYMBOL_f_arglist = 428, /* f_arglist */
3126 YYSYMBOL_429_40 = 429, /* @40 */
3127 YYSYMBOL_f_kw_arg_value = 430, /* f_kw_arg_value */
3128 YYSYMBOL_f_kwarg_arg_value = 431, /* f_kwarg_arg_value */
3129 YYSYMBOL_opt_f_block_arg_opt_comma = 432, /* opt_f_block_arg_opt_comma */
3130 YYSYMBOL_args_tail_basic_arg_value_opt_comma = 433, /* args_tail_basic_arg_value_opt_comma */
3131 YYSYMBOL_args_tail = 434, /* args_tail */
3132 YYSYMBOL_args_tail_basic_arg_value_none = 435, /* args_tail_basic_arg_value_none */
3133 YYSYMBOL_largs_tail = 436, /* largs_tail */
3134 YYSYMBOL_f_opt_arg_value = 437, /* f_opt_arg_value */
3135 YYSYMBOL_f_opt_arg_arg_value = 438, /* f_opt_arg_arg_value */
3136 YYSYMBOL_opt_args_tail_args_tail_opt_comma = 439, /* opt_args_tail_args_tail_opt_comma */
3137 YYSYMBOL_args_list_arg_value_opt_args_tail_args_tail_opt_comma = 440, /* args-list_arg_value_opt_args_tail_args_tail_opt_comma */
3138 YYSYMBOL_f_args_list_args_tail_opt_comma = 441, /* f_args-list_args_tail_opt_comma */
3139 YYSYMBOL_tail_only_args_args_tail = 442, /* tail-only-args_args_tail */
3140 YYSYMBOL_f_args = 443, /* f_args */
3141 YYSYMBOL_opt_args_tail_largs_tail_none = 444, /* opt_args_tail_largs_tail_none */
3142 YYSYMBOL_args_list_arg_value_opt_args_tail_largs_tail_none = 445, /* args-list_arg_value_opt_args_tail_largs_tail_none */
3143 YYSYMBOL_f_args_list_largs_tail_none = 446, /* f_args-list_largs_tail_none */
3144 YYSYMBOL_tail_only_args_largs_tail = 447, /* tail-only-args_largs_tail */
3145 YYSYMBOL_f_largs = 448, /* f_largs */
3146 YYSYMBOL_args_forward = 449, /* args_forward */
3147 YYSYMBOL_f_bad_arg = 450, /* f_bad_arg */
3148 YYSYMBOL_f_norm_arg = 451, /* f_norm_arg */
3149 YYSYMBOL_f_arg_asgn = 452, /* f_arg_asgn */
3150 YYSYMBOL_f_arg_item = 453, /* f_arg_item */
3151 YYSYMBOL_f_arg = 454, /* f_arg */
3152 YYSYMBOL_f_label = 455, /* f_label */
3153 YYSYMBOL_kwrest_mark = 456, /* kwrest_mark */
3154 YYSYMBOL_f_no_kwarg = 457, /* f_no_kwarg */
3155 YYSYMBOL_f_kwrest = 458, /* f_kwrest */
3156 YYSYMBOL_restarg_mark = 459, /* restarg_mark */
3157 YYSYMBOL_f_rest_arg = 460, /* f_rest_arg */
3158 YYSYMBOL_blkarg_mark = 461, /* blkarg_mark */
3159 YYSYMBOL_f_block_arg = 462, /* f_block_arg */
3160 YYSYMBOL_option__ = 463, /* option_',
' */
3161 YYSYMBOL_opt_comma = 464, /* opt_comma */
3162 YYSYMBOL_value_expr_singleton_expr = 465, /* value_expr_singleton_expr */
3163 YYSYMBOL_singleton = 466, /* singleton */
3164 YYSYMBOL_singleton_expr = 467, /* singleton_expr */
3165 YYSYMBOL_468_41 = 468, /* $@41 */
3166 YYSYMBOL_assoc_list = 469, /* assoc_list */
3167 YYSYMBOL_assocs = 470, /* assocs */
3168 YYSYMBOL_assoc = 471, /* assoc */
3169 YYSYMBOL_operation2 = 472, /* operation2 */
3170 YYSYMBOL_operation3 = 473, /* operation3 */
3171 YYSYMBOL_dot_or_colon = 474, /* dot_or_colon */
3172 YYSYMBOL_call_op = 475, /* call_op */
3173 YYSYMBOL_call_op2 = 476, /* call_op2 */
3174 YYSYMBOL_rparen = 477, /* rparen */
3175 YYSYMBOL_rbracket = 478, /* rbracket */
3176 YYSYMBOL_rbrace = 479, /* rbrace */
3177 YYSYMBOL_trailer = 480, /* trailer */
3178 YYSYMBOL_term = 481, /* term */
3179 YYSYMBOL_terms = 482, /* terms */
3180 YYSYMBOL_none = 483 /* none */
3182typedef enum yysymbol_kind_t yysymbol_kind_t;
3191/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
3192 <limits.h> and (if available) <stdint.h> are included
3193 so that the code can choose integer types of a good width. */
3195#ifndef __PTRDIFF_MAX__
3196# include <limits.h> /* INFRINGES ON USER NAME SPACE */
3197# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3198# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
3203/* Narrow types that promote to a signed type and that can represent a
3204 signed or unsigned integer of at least N bits. In tables they can
3205 save space and decrease cache pressure. Promoting to a signed type
3206 helps avoid bugs in integer arithmetic. */
3208#ifdef __INT_LEAST8_MAX__
3209typedef __INT_LEAST8_TYPE__ yytype_int8;
3210#elif defined YY_STDINT_H
3211typedef int_least8_t yytype_int8;
3213typedef signed char yytype_int8;
3216#ifdef __INT_LEAST16_MAX__
3217typedef __INT_LEAST16_TYPE__ yytype_int16;
3218#elif defined YY_STDINT_H
3219typedef int_least16_t yytype_int16;
3221typedef short yytype_int16;
3224/* Work around bug in HP-UX 11.23, which defines these macros
3225 incorrectly for preprocessor constants. This workaround can likely
3226 be removed in 2023, as HPE has promised support for HP-UX 11.23
3227 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
3228 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
3230# undef UINT_LEAST8_MAX
3231# undef UINT_LEAST16_MAX
3232# define UINT_LEAST8_MAX 255
3233# define UINT_LEAST16_MAX 65535
3236#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
3237typedef __UINT_LEAST8_TYPE__ yytype_uint8;
3238#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
3239 && UINT_LEAST8_MAX <= INT_MAX)
3240typedef uint_least8_t yytype_uint8;
3241#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
3242typedef unsigned char yytype_uint8;
3244typedef short yytype_uint8;
3247#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
3248typedef __UINT_LEAST16_TYPE__ yytype_uint16;
3249#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
3250 && UINT_LEAST16_MAX <= INT_MAX)
3251typedef uint_least16_t yytype_uint16;
3252#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
3253typedef unsigned short yytype_uint16;
3255typedef int yytype_uint16;
3259# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
3260# define YYPTRDIFF_T __PTRDIFF_TYPE__
3261# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
3262# elif defined PTRDIFF_MAX
3264# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
3266# define YYPTRDIFF_T ptrdiff_t
3267# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
3269# define YYPTRDIFF_T long
3270# define YYPTRDIFF_MAXIMUM LONG_MAX
3275# ifdef __SIZE_TYPE__
3276# define YYSIZE_T __SIZE_TYPE__
3277# elif defined size_t
3278# define YYSIZE_T size_t
3279# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3280# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
3281# define YYSIZE_T size_t
3283# define YYSIZE_T unsigned
3287#define YYSIZE_MAXIMUM \
3288 YY_CAST (YYPTRDIFF_T, \
3289 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
3290 ? YYPTRDIFF_MAXIMUM \
3291 : YY_CAST (YYSIZE_T, -1)))
3293#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
3296/* Stored state numbers (used for stacks). */
3297typedef yytype_int16 yy_state_t;
3299/* State numbers in computations. */
3300typedef int yy_state_fast_t;
3303# if defined YYENABLE_NLS && YYENABLE_NLS
3305# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
3306# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
3310# define YY_(Msgid) Msgid
3315#ifndef YY_ATTRIBUTE_PURE
3316# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
3317# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
3319# define YY_ATTRIBUTE_PURE
3323#ifndef YY_ATTRIBUTE_UNUSED
3324# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
3325# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
3327# define YY_ATTRIBUTE_UNUSED
3331/* Suppress unused-variable warnings by "using" E. */
3332#if ! defined lint || defined __GNUC__
3333# define YY_USE(E) ((void) (E))
3335# define YY_USE(E) /* empty */
3338/* Suppress an incorrect diagnostic about yylval being uninitialized. */
3339#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
3340# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
3341# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3342 _Pragma ("GCC diagnostic push") \
3343 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
3345# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3346 _Pragma ("GCC diagnostic push") \
3347 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
3348 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
3350# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
3351 _Pragma ("GCC diagnostic pop")
3353# define YY_INITIAL_VALUE(Value) Value
3355#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3356# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3357# define YY_IGNORE_MAYBE_UNINITIALIZED_END
3359#ifndef YY_INITIAL_VALUE
3360# define YY_INITIAL_VALUE(Value) /* Nothing. */
3363#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
3364# define YY_IGNORE_USELESS_CAST_BEGIN \
3365 _Pragma ("GCC diagnostic push") \
3366 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
3367# define YY_IGNORE_USELESS_CAST_END \
3368 _Pragma ("GCC diagnostic pop")
3370#ifndef YY_IGNORE_USELESS_CAST_BEGIN
3371# define YY_IGNORE_USELESS_CAST_BEGIN
3372# define YY_IGNORE_USELESS_CAST_END
3376#define YY_ASSERT(E) ((void) (0 && (E)))
3380/* The parser invokes alloca or malloc; define the necessary symbols. */
3382# ifdef YYSTACK_USE_ALLOCA
3383# if YYSTACK_USE_ALLOCA
3385# define YYSTACK_ALLOC __builtin_alloca
3386# elif defined __BUILTIN_VA_ARG_INCR
3387# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
3389# define YYSTACK_ALLOC __alloca
3390# elif defined _MSC_VER
3391# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
3392# define alloca _alloca
3394# define YYSTACK_ALLOC alloca
3395# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
3396# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
3397 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
3398# ifndef EXIT_SUCCESS
3399# define EXIT_SUCCESS 0
3406# ifdef YYSTACK_ALLOC
3407 /* Pacify GCC's
'empty if-body' warning. */
3408# define YYSTACK_FREE(Ptr) do { ; } while (0)
3409# ifndef YYSTACK_ALLOC_MAXIMUM
3414# define YYSTACK_ALLOC_MAXIMUM 4032
3417# define YYSTACK_ALLOC YYMALLOC
3418# define YYSTACK_FREE YYFREE
3419# ifndef YYSTACK_ALLOC_MAXIMUM
3420# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
3422# if (defined __cplusplus && ! defined EXIT_SUCCESS \
3423 && ! ((defined YYMALLOC || defined malloc) \
3424 && (defined YYFREE || defined free)))
3426# ifndef EXIT_SUCCESS
3427# define EXIT_SUCCESS 0
3431# define YYMALLOC malloc
3432# if ! defined malloc && ! defined EXIT_SUCCESS
3433void *malloc (YYSIZE_T);
3438# if ! defined free && ! defined EXIT_SUCCESS
3445#if (! defined yyoverflow \
3446 && (! defined __cplusplus \
3447 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
3448 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
3453 yy_state_t yyss_alloc;
3459# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
3463# define YYSTACK_BYTES(N) \
3464 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
3465 + YYSIZEOF (YYLTYPE)) \
3466 + 2 * YYSTACK_GAP_MAXIMUM)
3468# define YYCOPY_NEEDED 1
3475# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
3478 YYPTRDIFF_T yynewbytes; \
3479 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
3480 Stack = &yyptr->Stack_alloc; \
3481 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
3482 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
3488#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
3492# if defined __GNUC__ && 1 < __GNUC__
3493# define YYCOPY(Dst, Src, Count) \
3494 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
3496# define YYCOPY(Dst, Src, Count) \
3500 for (yyi = 0; yyi < (Count); yyi++) \
3501 (Dst)[yyi] = (Src)[yyi]; \
3514#define YYNTOKENS 162
3520#define YYNSTATES 1442
3523#define YYMAXUTOK 361
3528#define YYTRANSLATE(YYX) \
3529 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
3530 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
3535static const yytype_uint8 yytranslate[] =
3537 0, 2, 2, 2, 2, 2, 2, 2, 2, 72,
3538 154, 75, 73, 74, 2, 2, 2, 2, 2, 2,
3539 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3540 2, 2, 161, 148, 2, 2, 2, 146, 141, 2,
3541 157, 158, 144, 142, 155, 143, 69, 145, 2, 2,
3542 2, 2, 2, 2, 2, 2, 2, 2, 136, 160,
3543 138, 134, 137, 135, 2, 2, 2, 2, 2, 2,
3544 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3545 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3546 2, 153, 70, 159, 140, 2, 156, 2, 2, 2,
3547 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3548 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3549 2, 2, 2, 151, 139, 152, 149, 2, 89, 90,
3550 91, 92, 76, 77, 78, 79, 95, 96, 84, 83,
3551 80, 81, 82, 87, 88, 93, 94, 98, 85, 86,
3552 97, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3553 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3554 2, 2, 2, 2, 2, 2, 2, 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, 2, 2, 2, 2, 2, 2, 2,
3558 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3559 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3560 2, 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, 1, 2, 3, 4,
3563 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3564 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
3565 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
3566 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
3567 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
3568 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
3569 65, 66, 67, 68, 71, 99, 100, 101, 102, 103,
3570 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
3571 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
3572 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
3578static const yytype_int16 yyrline[] =
3580 0, 3174, 3168, 3174, 3174, 3174, 3174, 3194, 3199, 3204,
3581 3211, 3216, 3223, 3225, 3243, 3239, 3244, 3243, 3255, 3252,
3582 3265, 3270, 3275, 3282, 3284, 3283, 3293, 3295, 3305, 3305,
3583 3310, 3315, 3323, 3332, 3339, 3345, 3351, 3362, 3373, 3382,
3584 3394, 3395, 3400, 3400, 3401, 3412, 3417, 3418, 3425, 3425,
3585 3426, 3426, 3426, 3426, 3426, 3426, 3426, 3426, 3426, 3427,
3586 3427, 3427, 3430, 3431, 3437, 3437, 3437, 3444, 3445, 3452,
3587 3455, 3456, 3461, 3466, 3471, 3477, 3476, 3492, 3491, 3506,
3588 3509, 3520, 3530, 3529, 3543, 3543, 3544, 3550, 3550, 3550,
3589 3557, 3558, 3561, 3561, 3564, 3565, 3572, 3580, 3580, 3580,
3590 3587, 3594, 3603, 3608, 3613, 3618, 3623, 3629, 3635, 3641,
3591 3646, 3653, 3662, 3663, 3670, 3671, 3678, 3683, 3688, 3693,
3592 3693, 3693, 3698, 3703, 3708, 3713, 3718, 3723, 3730, 3731,
3593 3738, 3743, 3751, 3751, 3756, 3761, 3761, 3767, 3772, 3777,
3594 3782, 3790, 3790, 3795, 3800, 3800, 3805, 3810, 3815, 3820,
3595 3828, 3836, 3839, 3844, 3849, 3856, 3856, 3856, 3857, 3862,
3596 3865, 3870, 3873, 3878, 3878, 3886, 3887, 3888, 3889, 3890,
3597 3891, 3892, 3893, 3894, 3895, 3896, 3897, 3898, 3899, 3900,
3598 3901, 3902, 3903, 3904, 3905, 3906, 3907, 3908, 3909, 3910,
3599 3911, 3912, 3913, 3914, 3915, 3918, 3918, 3918, 3919, 3919,
3600 3920, 3920, 3920, 3921, 3921, 3921, 3921, 3922, 3922, 3922,
3601 3922, 3923, 3923, 3923, 3924, 3924, 3924, 3924, 3925, 3925,
3602 3925, 3925, 3926, 3926, 3926, 3926, 3927, 3927, 3927, 3927,
3603 3928, 3928, 3928, 3928, 3929, 3929, 3932, 3932, 3933, 3933,
3604 3933, 3933, 3933, 3933, 3933, 3933, 3933, 3934, 3934, 3934,
3605 3934, 3934, 3934, 3934, 3935, 3940, 3945, 3950, 3955, 3960,
3606 3965, 3970, 3975, 3980, 3985, 3990, 3995, 4000, 4001, 4006,
3607 4011, 4016, 4021, 4026, 4031, 4036, 4041, 4046, 4051, 4056,
3608 4063, 4063, 4063, 4064, 4065, 4068, 4077, 4078, 4084, 4091,
3609 4092, 4093, 4094, 4097, 4102, 4110, 4116, 4123, 4130, 4130,
3610 4133, 4134, 4135, 4140, 4147, 4152, 4161, 4166, 4176, 4188,
3611 4189, 4195, 4196, 4197, 4198, 4203, 4210, 4210, 4215, 4220,
3612 4225, 4231, 4237, 4241, 4241, 4279, 4284, 4292, 4297, 4305,
3613 4310, 4315, 4320, 4328, 4333, 4342, 4343, 4347, 4352, 4357,
3614 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4375, 4376, 4377,
3615 4378, 4384, 4383, 4396, 4396, 4402, 4408, 4413, 4418, 4423,
3616 4429, 4434, 4439, 4444, 4449, 4456, 4461, 4466, 4471, 4472,
3617 4478, 4480, 4492, 4501, 4510, 4519, 4518, 4533, 4532, 4545,
3618 4553, 4553, 4554, 4598, 4597, 4620, 4619, 4639, 4638, 4657,
3619 4655, 4672, 4670, 4685, 4690, 4695, 4700, 4715, 4715, 4718,
3620 4725, 4743, 4750, 4758, 4766, 4773, 4781, 4790, 4799, 4807,
3621 4814, 4821, 4829, 4836, 4842, 4857, 4864, 4869, 4875, 4882,
3622 4889, 4890, 4891, 4894, 4895, 4898, 4900, 4909, 4910, 4917,
3623 4918, 4921, 4926, 4934, 4934, 4934, 4939, 4944, 4949, 4954,
3624 4961, 4967, 4974, 4975, 4982, 4982, 4984, 4984, 4984, 4984,
3625 4984, 4984, 4984, 4984, 4984, 4984, 4984, 4987, 4995, 4995,
3626 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995, 4995,
3627 4995, 4995, 4995, 4995, 4995, 4995, 4996, 5002, 5007, 5007,
3628 5010, 5011, 5017, 5027, 5031, 5034, 5039, 5046, 5048, 5052,
3629 5057, 5060, 5066, 5071, 5078, 5084, 5077, 5111, 5118, 5127,
3630 5134, 5133, 5144, 5152, 5158, 5168, 5174, 5179, 5187, 5194,
3631 5205, 5211, 5216, 5222, 5232, 5237, 5245, 5251, 5259, 5261,
3632 5276, 5276, 5297, 5303, 5308, 5314, 5322, 5331, 5332, 5335,
3633 5336, 5338, 5351, 5358, 5366, 5367, 5370, 5371, 5377, 5385,
3634 5386, 5392, 5398, 5403, 5408, 5415, 5418, 5425, 5429, 5428,
3635 5441, 5444, 5451, 5458, 5459, 5460, 5467, 5474, 5481, 5487,
3636 5494, 5501, 5508, 5514, 5519, 5524, 5531, 5530, 5541, 5547,
3637 5555, 5561, 5566, 5571, 5576, 5581, 5584, 5585, 5592, 5597,
3638 5604, 5612, 5618, 5625, 5626, 5633, 5640, 5645, 5650, 5655,
3639 5662, 5664, 5671, 5677, 5689, 5690, 5705, 5710, 5717, 5723,
3640 5724, 5731, 5732, 5732, 5732, 5732, 5732, 5732, 5732, 5733,
3641 5734, 5735, 5738, 5738, 5738, 5738, 5738, 5738, 5738, 5738,
3642 5739, 5744, 5747, 5755, 5767, 5774, 5781, 5786, 5791, 5799,
3643 5819, 5822, 5827, 5831, 5834, 5839, 5842, 5849, 5852, 5853,
3644 5856, 5868, 5869, 5870, 5877, 5890, 5902, 5909, 5909, 5909,
3645 5909, 5913, 5917, 5924, 5926, 5933, 5933, 5937, 5941, 5948,
3646 5948, 5951, 5951, 5955, 5959, 5967, 5971, 5979, 5983, 5991,
3647 5995, 6003, 6007, 6033, 6036, 6035, 6050, 6058, 6062, 6066,
3648 6070, 6086, 6087, 6090, 6095, 6098, 6099, 6102, 6118, 6119,
3649 6122, 6130, 6131, 6139, 6140, 6141, 6142, 6145, 6146, 6147,
3650 6150, 6150, 6151, 6154, 6155, 6156, 6157, 6158, 6159, 6160,
3651 6163, 6173, 6180, 6180, 6187, 6188, 6192, 6191, 6201, 6204,
3652 6205, 6212, 6219, 6229, 6230, 6230, 6247, 6247, 6247, 6247,
3653 6247, 6247, 6247, 6247, 6247, 6247, 6247, 6248, 6257, 6257,
3654 6257, 6257, 6257, 6258, 6349, 6349, 6349, 6349, 6349, 6349,
3655 6349, 6349, 6349, 6349, 6349, 6349, 6349, 6349, 6349, 6349,
3656 6349, 6349, 6349, 6349, 6349, 6349, 6349, 6352, 6352, 6352,
3657 6352, 6352, 6352, 6352, 6352, 6352, 6352, 6352, 6352, 6352,
3658 6352, 6352, 6352, 6352, 6352, 6352, 6352, 6355, 6362, 6371,
3659 6380, 6389, 6400, 6401, 6411, 6418, 6423, 6442, 6444, 6455,
3660 6475, 6476, 6479, 6485, 6491, 6499, 6500, 6503, 6509, 6517,
3661 6518, 6521, 6527, 6532, 6540, 6540, 6540, 6548, 6548, 6578,
3662 6580, 6579, 6592, 6593, 6600, 6602, 6625, 6630, 6635, 6642,
3663 6648, 6653, 6666, 6666, 6666, 6667, 6670, 6671, 6672, 6675,
3664 6676, 6679, 6680, 6683, 6684, 6687, 6690, 6693, 6696, 6697,
3665 6700, 6708, 6715, 6716, 6720
3670#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
3675static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
3679static const char *
const yytname[] =
3681 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"'class'\"",
3682 "\"'module'\"",
"\"'def'\"",
"\"'undef'\"",
"\"'begin'\"",
3683 "\"'rescue'\"",
"\"'ensure'\"",
"\"'end'\"",
"\"'if'\"",
"\"'unless'\"",
3684 "\"'then'\"",
"\"'elsif'\"",
"\"'else'\"",
"\"'case'\"",
"\"'when'\"",
3685 "\"'while'\"",
"\"'until'\"",
"\"'for'\"",
"\"'break'\"",
"\"'next'\"",
3686 "\"'redo'\"",
"\"'retry'\"",
"\"'in'\"",
"\"'do'\"",
3687 "\"'do' for condition\"",
"\"'do' for block\"",
"\"'do' for lambda\"",
3688 "\"'return'\"",
"\"'yield'\"",
"\"'super'\"",
"\"'self'\"",
"\"'nil'\"",
3689 "\"'true'\"",
"\"'false'\"",
"\"'and'\"",
"\"'or'\"",
"\"'not'\"",
3690 "\"'if' modifier\"",
"\"'unless' modifier\"",
"\"'while' modifier\"",
3691 "\"'until' modifier\"",
"\"'rescue' modifier\"",
"\"'alias'\"",
3692 "\"'defined?'\"",
"\"'BEGIN'\"",
"\"'END'\"",
"\"'__LINE__'\"",
3693 "\"'__FILE__'\"",
"\"'__ENCODING__'\"",
"\"local variable or method\"",
3694 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
3695 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
3696 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
3697 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
3698 "\"literal content\"",
"tREGEXP_END",
"\"dummy end\"",
"'.'",
3699 "\"backslash\"",
"\"escaped space\"",
"\"escaped horizontal tab\"",
3700 "\"escaped form feed\"",
"\"escaped carriage return\"",
3701 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
3702 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
3703 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
3704 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
3705 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
3706 "\"( arg\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
"\"**arg\"",
3707 "\"&\"",
"\"->\"",
"\"symbol literal\"",
"\"string literal\"",
3708 "\"backtick literal\"",
"\"regexp literal\"",
"\"word list\"",
3709 "\"verbatim word list\"",
"\"symbol list\"",
"\"verbatim symbol list\"",
3710 "\"terminator\"",
"\"'}'\"",
"\"'#{'\"",
"tSTRING_DVAR",
"tLAMBEG",
3711 "tLABEL_END",
"tIGNORED_NL",
"tCOMMENT",
"tEMBDOC_BEG",
"tEMBDOC",
3712 "tEMBDOC_END",
"tHEREDOC_BEG",
"tHEREDOC_END",
"k__END__",
"tLOWEST",
3713 "'='",
"'?'",
"':'",
"'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
3714 "'*'",
"'/'",
"'%'",
"tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
3715 "'}'",
"'['",
"'\\n'",
"','",
"'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
3716 "$accept",
"option_terms",
"compstmt_top_stmts",
"$@1",
"program",
3717 "top_stmts",
"top_stmt",
"block_open",
"begin_block",
"compstmt_stmts",
3718 "$@2",
"$@3",
"bodystmt",
"$@4",
"stmts",
"stmt_or_begin",
"$@5",
3719 "allow_exits",
"k_END",
"$@6",
"stmt",
"asgn_mrhs",
"asgn_command_rhs",
3720 "command_asgn",
"op_asgn_command_rhs",
3721 "def_endless_method_endless_command",
"endless_command",
"option_'\\n'",
3722 "command_rhs",
"expr",
"$@7",
"$@8",
"def_name",
"defn_head",
"$@9",
3723 "defs_head",
"value_expr_expr",
"expr_value",
"$@10",
"$@11",
3724 "expr_value_do",
"command_call",
"value_expr_command_call",
3725 "command_call_value",
"block_command",
"cmd_brace_block",
"fcall",
3726 "command",
"mlhs",
"mlhs_inner",
"mlhs_basic",
"mlhs_items_mlhs_item",
3727 "mlhs_item",
"mlhs_head",
"mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
3728 "fitem",
"undef_list",
"$@12",
"op",
"reswords",
"asgn_arg_rhs",
"arg",
3729 "op_asgn_arg_rhs",
"range_expr_arg",
"def_endless_method_endless_arg",
3730 "ternary",
"endless_arg",
"relop",
"rel_expr",
"lex_ctxt",
3731 "begin_defined",
"after_rescue",
"value_expr_arg",
"arg_value",
3732 "aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
"opt_call_args",
3733 "value_expr_command",
"call_args",
"$@13",
"command_args",
"block_arg",
3734 "opt_block_arg",
"args",
"arg_splat",
"mrhs_arg",
"mrhs",
"primary",
3735 "$@14",
"$@15",
"@16",
"@17",
"$@18",
"$@19",
"$@20",
"$@21",
"$@22",
3736 "$@23",
"$@24",
"value_expr_primary",
"primary_value",
"k_begin",
"k_if",
3737 "k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
3738 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
3739 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"k_yield",
"then",
3740 "do",
"if_tail",
"opt_else",
"for_var",
"f_marg",
"mlhs_items_f_marg",
3741 "f_margs",
"f_rest_marg",
"f_any_kwrest",
"$@25",
"f_eq",
3742 "f_kw_primary_value",
"f_kwarg_primary_value",
"opt_f_block_arg_none",
3743 "args_tail_basic_primary_value_none",
"block_args_tail",
3744 "excessed_comma",
"f_opt_primary_value",
"f_opt_arg_primary_value",
3745 "opt_args_tail_block_args_tail_none",
3746 "args-list_primary_value_opt_args_tail_block_args_tail_none",
3747 "block_param",
"tail-only-args_block_args_tail",
"opt_block_param_def",
3748 "block_param_def",
"opt_block_param",
"opt_bv_decl",
"bv_decls",
"bvar",
3749 "max_numparam",
"numparam",
"it_id",
"@26",
"$@27",
"lambda",
3750 "f_larglist",
"lambda_body",
"$@28",
"do_block",
"block_call",
3751 "method_call",
"brace_block",
"@29",
"brace_body",
"@30",
"do_body",
3752 "case_args",
"case_body",
"cases",
"p_pvtbl",
"p_pktbl",
"p_in_kwarg",
3753 "$@31",
"p_case_body",
"p_cases",
"p_top_expr",
"p_top_expr_body",
3754 "p_expr",
"p_as",
"$@32",
"p_alt",
"p_lparen",
"p_lbracket",
3755 "p_expr_basic",
"$@33",
"p_args",
"p_args_head",
"p_args_tail",
"p_find",
3756 "p_rest",
"p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
3757 "p_kw_label",
"p_kwrest",
"p_kwnorest",
"p_any_kwrest",
"p_value",
3758 "range_expr_p_primitive",
"p_primitive",
"p_variable",
"p_var_ref",
3759 "p_expr_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
3760 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
3761 "regexp",
"nonempty_list_' '",
"words_tWORDS_BEG_word_list",
"words",
3762 "word_list",
"word",
"words_tSYMBOLS_BEG_symbol_list",
"symbols",
3763 "symbol_list",
"words_tQWORDS_BEG_qword_list",
"qwords",
3764 "words_tQSYMBOLS_BEG_qsym_list",
"qsymbols",
"qword_list",
"qsym_list",
3765 "string_contents",
"xstring_contents",
"regexp_contents",
3766 "string_content",
"@34",
"@35",
"@36",
"@37",
"@38",
"string_dend",
3767 "string_dvar",
"symbol",
"ssym",
"sym",
"dsym",
"numeric",
3768 "simple_numeric",
"nonlocal_var",
"user_variable",
"keyword_variable",
3769 "var_ref",
"var_lhs",
"backref",
"$@39",
"superclass",
3770 "f_opt_paren_args",
"f_empty_arg",
"f_paren_args",
"f_arglist",
"@40",
3771 "f_kw_arg_value",
"f_kwarg_arg_value",
"opt_f_block_arg_opt_comma",
3772 "args_tail_basic_arg_value_opt_comma",
"args_tail",
3773 "args_tail_basic_arg_value_none",
"largs_tail",
"f_opt_arg_value",
3774 "f_opt_arg_arg_value",
"opt_args_tail_args_tail_opt_comma",
3775 "args-list_arg_value_opt_args_tail_args_tail_opt_comma",
3776 "f_args-list_args_tail_opt_comma",
"tail-only-args_args_tail",
"f_args",
3777 "opt_args_tail_largs_tail_none",
3778 "args-list_arg_value_opt_args_tail_largs_tail_none",
3779 "f_args-list_largs_tail_none",
"tail-only-args_largs_tail",
"f_largs",
3780 "args_forward",
"f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
"f_arg_item",
3781 "f_arg",
"f_label",
"kwrest_mark",
"f_no_kwarg",
"f_kwrest",
3782 "restarg_mark",
"f_rest_arg",
"blkarg_mark",
"f_block_arg",
"option_','",
3783 "opt_comma",
"value_expr_singleton_expr",
"singleton",
"singleton_expr",
3784 "$@41",
"assoc_list",
"assocs",
"assoc",
"operation2",
"operation3",
3785 "dot_or_colon",
"call_op",
"call_op2",
"rparen",
"rbracket",
"rbrace",
3786 "trailer",
"term",
"terms",
"none", YY_NULLPTR
3790yysymbol_name (yysymbol_kind_t yysymbol)
3792 return yytname[yysymbol];
3796#define YYPACT_NINF (-1208)
3798#define yypact_value_is_default(Yyn) \
3799 ((Yyn) == YYPACT_NINF)
3801#define YYTABLE_NINF (-855)
3803#define yytable_value_is_error(Yyn) \
3804 ((Yyn) == YYTABLE_NINF)
3808static const yytype_int16 yypact[] =
3810 -1208, 6236, 149, -1208, -1208, -1208, -1208, 11007, -1208, -1208,
3811 -1208, -1208, -1208, -1208, -1208, 12062, 12062, -1208, -1208, -1208,
3812 -1208, 7296, -1208, -1208, -1208, -1208, 400, 10853, 8, 33,
3813 -1208, -1208, -1208, -1208, 6672, 7452, -1208, -1208, 6828, -1208,
3814 -1208, -1208, -1208, -1208, -1208, -1208, -1208, 13622, 13622, 13622,
3815 13622, 144, 9766, 9924, 12542, 12782, 11308, -1208, 10699, -1208,
3816 -1208, -1208, 163, 163, 163, 163, 1269, 13742, 13622, -1208,
3817 563, -1208, 33, 1167, -1208, -1208, -1208, -1208, -1208, 824,
3818 35, 35, -1208, -1208, 170, 214, 280, -1208, 62, 14342,
3819 -1208, 323, -1208, 3973, -1208, -1208, -1208, -1208, 720, 61,
3820 -1208, 133, -1208, 11942, 11942, -1208, -1208, 10386, 14460, 14578,
3821 14696, 10544, 12062, 7920, -1208, 805, 102, -1208, -1208, 458,
3822 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3823 -1208, -1208, -1208, -1208, -1208, -1208, -1208, 283, 350, -1208,
3824 374, 418, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3825 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3826 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3827 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3828 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3829 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3830 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3831 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3832 357, -1208, -1208, -1208, -1208, -1208, -1208, 432, 13622, 549,
3833 9924, 13622, 13622, 13622, -1208, 13622, -1208, -1208, 476, 6642,
3834 -1208, 525, -1208, -1208, -1208, 501, -1208, 679, 76, 79,
3835 582, 247, 508, -1208, -1208, 12182, -1208, 12062, -1208, -1208,
3836 11683, 13862, 996, -1208, 546, -1208, 10082, -1208, -1208, -1208,
3837 -1208, -1208, 556, 35, 35, 170, -1208, 713, -1208, 558,
3838 609, 6798, 6798, 601, -1208, 9766, 550, 563, -1208, 1167,
3839 8, 592, -1208, -1208, 584, 770, 785, -1208, 525, 640,
3840 785, -1208, 8, 750, 1269, 14814, 651, 651, 658, -1208,
3841 731, 774, 784, 851, -1208, -1208, 1026, -1208, -1208, 1096,
3842 1136, 540, -1208, 654, 654, 654, 654, 761, -1208, -1208,
3843 -1208, -1208, -1208, -1208, -1208, 6388, 10234, 11942, 11942, 11942,
3844 11942, -1208, 13862, 13862, 1926, 702, -1208, 760, -1208, 1926,
3845 763, -1208, -1208, -1208, -1208, 741, -1208, -1208, -1208, -1208,
3846 -1208, -1208, -1208, 9766, 11426, 744, -1208, -1208, 13622, 13622,
3847 13622, 13622, 13622, -1208, -1208, 13622, 13622, 13622, 13622, 13622,
3848 13622, 13622, 13622, -1208, 13622, -1208, -1208, 13622, 13622, 13622,
3849 13622, 13622, 13622, 13622, 13622, 13622, 13622, -1208, -1208, 4938,
3850 12062, 5402, 556, 8702, -1208, 824, -1208, 110, 110, 11942,
3851 9614, 9614, -1208, 563, 756, 866, -1208, -1208, 869, 908,
3852 81, 108, 122, 936, 1017, 11942, 689, -1208, 808, 895,
3853 -1208, -1208, -1208, -1208, 74, 551, 588, 664, 690, 748,
3854 758, 769, 820, -1208, -1208, -1208, -1208, -1208, 823, -1208,
3855 -1208, 11544, -1208, -1208, -1208, 4515, -1208, -1208, -1208, -1208,
3856 -1208, -1208, 353, -1208, -1208, -1208, 730, -1208, 13622, 12302,
3857 -1208, -1208, 15094, 12062, 15192, -1208, -1208, 12662, -1208, 13622,
3858 8, -1208, 800, 8, 815, -1208, -1208, 822, 189, -1208,
3859 -1208, -1208, -1208, -1208, 11007, -1208, -1208, 13622, 811, 848,
3860 874, 15290, 15192, -1208, 33, 8, -1208, -1208, 5800, 880,
3861 858, -1208, 12542, -1208, -1208, 12782, -1208, -1208, -1208, 546,
3862 903, -1208, 891, -1208, -1208, 14814, 15388, 12062, 15486, -1208,
3863 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3864 -1208, 1156, 72, 1172, 78, 13622, -1208, -1208, 888, -1208,
3865 -1208, -1208, -1208, -1208, 11822, -1208, -1208, -1208, -1208, -1208,
3866 -1208, -1208, -1208, -1208, -1208, 1311, -1208, -1208, -1208, -1208,
3867 -1208, 900, -1208, -1208, -1208, 907, -1208, -1208, -1208, 919,
3868 -1208, -1208, -1208, 8, -1208, -1208, -1208, 942, -1208, 925,
3869 13622, 378, -1208, -1208, 1025, 927, 415, -1208, 13982, 8702,
3870 563, 13982, 8702, -1208, 931, -1208, -1208, -1208, 164, 164,
3871 12902, 8, 14814, 930, -1208, 13022, -1208, 609, 3213, 3213,
3872 3213, 3213, 4601, 3866, 3213, 3213, 6798, 6798, 576, 576,
3873 -1208, 6486, 1128, 1128, 1033, 59, 59, 609, 609, 609,
3874 1055, 1055, 8076, 6984, 8388, 7140, 556, -1208, 8, 933,
3875 675, -1208, 686, -1208, 7608, -1208, -1208, 164, -1208, 8854,
3876 1082, 9310, 89, 164, 164, 1083, 1076, 123, 15584, 12062,
3877 15682, -1208, -1208, -1208, 903, -1208, -1208, -1208, -1208, 15780,
3878 12062, 15878, 8702, 13862, -1208, -1208, -1208, 8, -1208, -1208,
3879 -1208, -1208, 3459, 14102, 14102, 11007, -1208, 13622, 13622, -1208,
3880 525, -1208, -1208, 508, 6516, 7764, 8, 362, 376, 13622,
3881 13622, -1208, -1208, 12422, -1208, 12662, -1208, -1208, -1208, 13862,
3882 6642, -1208, 14222, 14222, 234, 556, 556, 14102, -1208, 56,
3883 -1208, -1208, 785, 14814, 891, 616, 468, 8, 422, 603,
3884 -1208, -1208, 1350, -1208, 367, -1208, 163, -1208, -1208, 367,
3885 163, -1208, 609, -1208, -1208, 1311, 1437, -1208, 950, 8,
3886 954, -1208, 32, -1208, -1208, -1208, 504, -1208, 1926, -1208,
3887 -1208, -1208, 976, 13622, 1926, -1208, -1208, -1208, -1208, -1208,
3888 1944, -1208, -1208, -1208, 400, 1069, -1208, 6642, 1080, 164,
3889 -1208, 1069, 1080, 164, -1208, -1208, 975, -1208, -1208, -1208,
3890 -1208, -1208, 13622, -1208, -1208, -1208, 977, 987, 1087, -1208,
3891 -1208, 891, 14814, 1088, -1208, -1208, 1095, 1035, 3781, -1208,
3892 -1208, -1208, 905, 424, -1208, -1208, 1024, -1208, -1208, -1208,
3893 -1208, 741, 1008, 889, 12302, -1208, -1208, -1208, -1208, 741,
3894 -1208, 1163, -1208, 871, -1208, 1165, -1208, -1208, -1208, -1208,
3895 -1208, -1208, 13142, 164, -1208, 1083, 164, 80, 143, 8,
3896 127, 138, 11942, 563, 11942, 8702, 1068, 468, -1208, 8,
3897 164, 189, 11161, -1208, 102, 214, -1208, 4110, -1208, -1208,
3898 -1208, -1208, 13622, -1208, -1208, -1208, -1208, 496, -1208, -1208,
3899 8, 1028, 189, 400, -1208, -1208, -1208, -1208, 647, -1208,
3900 -1208, -1208, -1208, -1208, 654, -1208, 654, 654, 654, 8,
3901 -1208, 1311, -1208, 1245, -1208, -1208, 1139, 900, -1208, -1208,
3902 1037, 1038, -1208, -1208, 1048, -1208, 1049, -1208, 1037, 13982,
3903 -1208, -1208, -1208, -1208, -1208, -1208, -1208, 1058, 13262, -1208,
3904 891, 497, -1208, -1208, -1208, 15976, 12062, 16074, -1208, -1208,
3905 13622, 14102, 14102, 1062, -1208, -1208, -1208, 14102, 14102, -1208,
3906 -1208, 13382, 1165, -1208, -1208, -1208, 9614, 11942, 164, -1208,
3907 -1208, 164, -1208, 13622, -1208, 274, -1208, -1208, 164, -1208,
3908 150, 89, 8702, 563, 164, -1208, -1208, -1208, -1208, -1208,
3909 -1208, 13622, 13622, -1208, 13622, 13622, -1208, 12662, -1208, 14222,
3910 1388, -1208, -1208, -1208, 1072, 1073, -1208, 1944, -1208, 1944,
3911 -1208, 1926, -1208, 1944, -1208, -1208, 1069, 1080, 13622, 13622,
3912 -1208, -1208, 13622, 1075, 11822, 11822, 14102, 13622, 8232, 8544,
3913 8, 535, 644, 4819, 4819, 6642, -1208, -1208, -1208, -1208,
3914 -1208, 14102, -1208, -1208, -1208, -1208, 977, -1208, 1133, -1208,
3915 1230, -1208, -1208, 110, -1208, -1208, -1208, 13502, 9006, -1208,
3916 -1208, -1208, 164, -1208, -1208, 13622, 1926, 1085, -1208, -1208,
3917 1089, -1208, -1208, 1098, -1208, -1208, -1208, -1208, -1208, 1104,
3918 1106, -1208, 6084, 1245, 1245, 1037, 1037, 1107, 1037, 6642,
3919 6642, 1103, 1103, 1058, -1208, -1208, 6642, 680, -1208, -1208,
3920 -1208, 3155, 3155, 861, -1208, 2296, 304, 1198, -1208, 1260,
3921 -1208, -1208, 39, -1208, 1112, -1208, -1208, -1208, 1108, -1208,
3922 1124, -1208, 5920, -1208, -1208, -1208, -1208, -1208, 898, -1208,
3923 -1208, -1208, 461, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3924 -1208, -1208, 643, -1208, -1208, -1208, 14932, 110, -1208, -1208,
3925 9614, -1208, -1208, 9462, 8854, 13622, -1208, 530, 4819, 9614,
3926 -1208, 8, 32, -1208, -1208, 98, 504, -1208, 1926, -1208,
3927 -1208, 1926, -1208, 1944, -1208, 113, 1073, -1208, -1208, 1944,
3928 -1208, -1208, 1482, 10234, -1208, -1208, 8702, -1208, -1208, -1208,
3929 -1208, 5920, 296, 8, 5570, -1208, 8, 1126, -1208, 1115,
3930 -1208, -1208, -1208, 999, -1208, 11942, -1208, 1233, 5570, -1208,
3931 5920, 995, 1181, 3155, 3155, 861, 213, 611, 4819, 4819,
3932 -1208, 1231, -1208, 917, 165, 185, 253, 8702, 563, -1208,
3933 871, -1208, -1208, -1208, -1208, 110, 984, 164, 1130, 1137,
3934 -1208, -1208, 10234, -1208, 1085, -1208, 1131, 1141, 1149, 1153,
3935 1131, -1208, -1208, -1208, 1037, 1085, -1208, 1155, -1208, -1208,
3936 -1208, 1168, -1208, -1208, -1208, 8, 942, 1170, 15050, 1177,
3937 -1208, -1208, -1208, 262, -1208, 1181, 1179, 1180, -1208, -1208,
3938 -1208, -1208, -1208, 8, -1208, -1208, 1184, 5920, 1187, -1208,
3939 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3940 8, 8, 8, 8, 8, 8, 319, 16172, 12062, 16270,
3941 1163, -1208, 1230, -1208, -1208, 11942, 11942, -1208, 1447, -1208,
3942 8702, 1166, -1208, 1944, -1208, 1944, -1208, 1926, -1208, 1944,
3943 -1208, -1208, -1208, -1208, 504, -1208, 1482, -1208, -1208, 1183,
3944 15050, 1482, -1208, -1208, 1280, 922, 1559, -1208, -1208, 5920,
3945 -1208, 995, -1208, 5920, -1208, 5570, 101, -1208, -1208, -1208,
3946 -1208, -1208, -1208, 153, 288, 8, 346, 375, -1208, -1208,
3947 9158, -1208, -1208, -1208, 877, -1208, -1208, 164, -1208, 1131,
3948 1131, 1191, 1131, -1208, 1085, -1208, -1208, 1195, 1196, -1208,
3949 922, 1199, 1201, -1208, 16368, 1195, 1203, 8, 1203, -1208,
3950 -1208, 427, 445, 1447, -1208, -1208, -1208, -1208, 1944, -1208,
3951 -1208, -1208, 1559, -1208, 1559, -1208, 1482, -1208, 1559, -1208,
3952 1204, 1207, -1208, 5920, -1208, -1208, -1208, -1208, -1208, 1131,
3953 1195, 1195, 1215, 1195, -1208, -1208, -1208, 1559, -1208, -1208,
3960static const yytype_int16 yydefact[] =
3962 2, 0, 0, 47, 406, 407, 408, 0, 399, 400,
3963 401, 404, 26, 26, 26, 393, 394, 395, 396, 418,
3964 419, 323, 704, 703, 705, 706, 64, 0, 64, 0,
3965 854, 708, 707, 709, 97, 99, 698, 697, 98, 699,
3966 693, 694, 695, 696, 641, 714, 715, 0, 0, 0,
3967 0, 0, 0, 0, 854, 854, 126, 494, 667, 667,
3968 669, 671, 0, 0, 0, 0, 0, 0, 0, 6,
3969 3, 8, 0, 10, 43, 49, 40, 58, 61, 46,
3970 724, 724, 70, 91, 323, 90, 0, 112, 0, 116,
3971 128, 0, 237, 79, 246, 253, 282, 283, 267, 284,
3972 398, 0, 351, 0, 0, 87, 87, 0, 0, 0,
3973 0, 0, 360, 323, 370, 94, 368, 340, 341, 640,
3974 642, 342, 343, 650, 344, 656, 346, 660, 345, 662,
3975 347, 639, 685, 686, 638, 691, 702, 710, 711, 348,
3976 0, 349, 7, 1, 205, 216, 206, 229, 202, 222,
3977 212, 211, 232, 233, 227, 210, 209, 204, 230, 234,
3978 235, 214, 203, 217, 221, 223, 215, 208, 224, 231,
3979 226, 225, 218, 228, 213, 201, 220, 219, 200, 207,
3980 198, 199, 195, 196, 197, 155, 157, 156, 190, 191,
3981 186, 168, 169, 170, 177, 174, 176, 171, 172, 192,
3982 193, 178, 179, 183, 187, 173, 175, 165, 166, 167,
3983 180, 181, 182, 184, 185, 188, 189, 194, 160, 162,
3984 33, 158, 159, 161, 402, 403, 405, 0, 828, 0,
3985 0, 334, 831, 326, 667, 0, 318, 316, 0, 298,
3986 299, 329, 317, 110, 322, 854, 330, 0, 710, 711,
3987 0, 349, 854, 824, 111, 854, 513, 0, 107, 65,
3988 64, 0, 0, 28, 854, 12, 0, 11, 27, 295,
3989 393, 394, 514, 724, 724, 0, 261, 0, 360, 363,
3990 262, 251, 252, 357, 24, 0, 0, 3, 21, 23,
3991 64, 114, 20, 353, 0, 64, 64, 300, 0, 0,
3992 64, 822, 64, 0, 0, 0, 724, 724, 124, 397,
3993 0, 132, 133, 140, 491, 688, 0, 687, 689, 0,
3994 0, 0, 647, 651, 663, 657, 665, 692, 74, 273,
3995 274, 851, 850, 5, 852, 0, 0, 0, 0, 0,
3996 0, 854, 0, 0, 721, 0, 720, 723, 389, 721,
3997 0, 391, 409, 518, 508, 100, 520, 367, 410, 520,
3998 503, 854, 130, 0, 122, 117, 854, 77, 0, 0,
3999 0, 0, 0, 291, 292, 0, 0, 0, 0, 249,
4000 250, 0, 0, 75, 0, 289, 290, 0, 0, 0,
4001 0, 0, 0, 0, 0, 0, 0, 841, 842, 844,
4002 854, 843, 0, 0, 86, 84, 85, 0, 0, 0,
4003 0, 0, 377, 3, 4, 0, 430, 429, 0, 0,
4004 710, 711, 349, 150, 151, 0, 0, 153, 854, 0,
4005 710, 711, 349, 387, 225, 218, 228, 213, 195, 196,
4006 197, 155, 156, 820, 81, 80, 819, 818, 0, 817,
4007 109, 64, 108, 844, 843, 0, 369, 643, 854, 854,
4008 163, 827, 357, 333, 830, 325, 0, 854, 0, 0,
4009 319, 328, 844, 854, 843, 854, 854, 0, 320, 787,
4010 64, 312, 854, 64, 854, 311, 324, 0, 64, 366,
4011 73, 30, 32, 31, 0, 854, 296, 0, 0, 0,
4012 0, 844, 843, 854, 0, 64, 355, 14, 0, 113,
4013 0, 358, 849, 848, 301, 849, 303, 359, 823, 0,
4014 139, 692, 127, 119, 723, 0, 844, 854, 843, 492,
4015 673, 690, 676, 674, 668, 644, 645, 670, 646, 672,
4016 648, 0, 0, 0, 0, 0, 853, 9, 0, 34,
4017 35, 36, 37, 297, 0, 71, 72, 793, 790, 789,
4018 788, 791, 799, 800, 787, 0, 806, 801, 810, 809,
4019 805, 814, 802, 765, 728, 814, 736, 763, 745, 814,
4020 761, 766, 764, 64, 737, 792, 794, 795, 797, 814,
4021 727, 804, 443, 442, 808, 814, 813, 735, 0, 0,
4022 0, 0, 0, 491, 0, 518, 101, 491, 0, 0,
4023 0, 64, 0, 118, 131, 0, 531, 259, 266, 268,
4024 269, 270, 277, 278, 271, 272, 247, 248, 275, 276,
4025 531, 64, 263, 264, 265, 254, 255, 256, 257, 258,
4026 293, 294, 832, 834, 833, 835, 323, 511, 64, 854,
4027 832, 834, 833, 835, 323, 512, 854, 0, 421, 0,
4028 420, 0, 0, 0, 0, 0, 375, 357, 844, 854,
4029 843, 380, 385, 150, 151, 152, 716, 383, 718, 844,
4030 854, 843, 0, 0, 839, 840, 82, 64, 362, 832,
4031 833, 507, 323, 0, 0, 0, 854, 0, 0, 826,
4032 331, 327, 332, 854, 832, 833, 64, 832, 833, 0,
4033 0, 825, 306, 313, 308, 315, 845, 365, 29, 0,
4034 279, 13, 0, 0, 356, 0, 854, 0, 25, 115,
4035 22, 354, 64, 0, 125, 836, 138, 64, 832, 833,
4036 493, 677, 0, 649, 0, 653, 0, 659, 655, 0,
4037 0, 661, 260, 39, 38, 0, 441, 433, 435, 64,
4038 438, 431, 815, 734, 816, 731, 815, 733, 815, 757,
4039 748, 722, 0, 0, 815, 762, 726, 598, 803, 807,
4040 815, 759, 812, 811, 64, 59, 62, 286, 280, 0,
4041 725, 60, 281, 0, 492, 516, 0, 492, 416, 417,
4042 517, 502, 334, 92, 93, 41, 336, 0, 45, 335,
4043 129, 123, 0, 0, 69, 48, 67, 0, 304, 329,
4044 236, 42, 0, 349, 529, 529, 0, 854, 854, 518,
4045 510, 104, 0, 515, 313, 854, 854, 310, 509, 102,
4046 309, 854, 352, 854, 422, 854, 424, 88, 423, 373,
4047 374, 413, 0, 0, 531, 0, 0, 836, 356, 64,
4048 832, 833, 0, 0, 0, 0, 150, 151, 154, 64,
4049 0, 64, 0, 361, 504, 95, 50, 304, 238, 57,
4050 245, 164, 0, 829, 321, 854, 854, 515, 854, 854,
4051 64, 854, 64, 64, 56, 244, 302, 120, 515, 26,
4052 678, 675, 683, 684, 652, 654, 664, 658, 666, 64,
4053 440, 0, 796, 0, 730, 729, 804, 814, 747, 746,
4054 814, 814, 445, 744, 814, 798, 814, 795, 814, 0,
4055 854, 854, 390, 392, 493, 96, 493, 339, 0, 854,
4056 121, 357, 854, 854, 854, 844, 854, 843, 530, 530,
4057 0, 0, 0, 0, 105, 846, 854, 0, 0, 103,
4058 411, 854, 18, 630, 415, 414, 0, 0, 0, 425,
4059 427, 0, 89, 0, 522, 0, 378, 529, 0, 379,
4060 515, 0, 0, 0, 0, 515, 388, 821, 83, 505,
4061 506, 0, 0, 854, 0, 0, 307, 314, 364, 0,
4062 721, 679, 432, 434, 436, 439, 732, 815, 758, 815,
4063 755, 815, 751, 815, 753, 760, 66, 288, 0, 0,
4064 26, 26, 334, 337, 0, 0, 0, 0, 832, 833,
4065 64, 832, 833, 0, 0, 285, 54, 242, 55, 243,
4066 106, 0, 52, 240, 53, 241, 631, 632, 854, 633,
4067 854, 15, 428, 0, 371, 372, 523, 0, 0, 530,
4068 376, 381, 0, 717, 384, 0, 721, 854, 495, 785,
4069 854, 742, 783, 854, 781, 786, 784, 498, 743, 854,
4070 854, 741, 0, 0, 0, 814, 814, 814, 814, 63,
4071 287, 854, 854, 338, 44, 68, 305, 515, 622, 628,
4072 594, 0, 0, 0, 530, 64, 530, 582, 667, 0,
4073 621, 78, 539, 545, 547, 550, 543, 542, 578, 544,
4074 587, 590, 593, 599, 600, 589, 553, 608, 601, 554,
4075 609, 610, 611, 612, 613, 614, 615, 616, 618, 617,
4076 619, 620, 597, 76, 51, 239, 0, 0, 635, 412,
4077 0, 19, 637, 0, 0, 0, 524, 854, 0, 0,
4078 386, 64, 0, 740, 451, 0, 0, 739, 0, 777,
4079 768, 0, 782, 0, 779, 0, 437, 756, 752, 815,
4080 749, 754, 483, 0, 481, 480, 0, 606, 607, 151,
4081 626, 0, 570, 64, 571, 575, 64, 0, 565, 0,
4082 854, 568, 581, 0, 623, 0, 624, 0, 540, 548,
4083 0, 588, 592, 604, 605, 0, 530, 530, 0, 0,
4084 596, 0, 634, 0, 710, 711, 349, 0, 3, 16,
4085 854, 525, 527, 528, 526, 0, 536, 0, 485, 0,
4086 450, 500, 0, 496, 854, 767, 854, 854, 854, 854,
4087 854, 682, 681, 680, 814, 854, 448, 854, 456, 478,
4088 459, 854, 475, 484, 479, 64, 795, 854, 447, 854,
4089 455, 519, 521, 64, 563, 585, 573, 572, 564, 576,
4090 847, 566, 595, 64, 546, 541, 578, 0, 579, 583,
4091 667, 591, 586, 602, 603, 627, 552, 562, 551, 558,
4092 64, 64, 64, 64, 64, 64, 357, 844, 854, 843,
4093 854, 636, 854, 426, 532, 0, 0, 382, 0, 497,
4094 0, 0, 738, 0, 778, 0, 775, 0, 771, 0,
4095 773, 780, 750, 454, 0, 453, 0, 471, 462, 0,
4096 0, 457, 476, 477, 0, 446, 0, 473, 569, 0,
4097 577, 0, 625, 0, 549, 0, 0, 555, 556, 557,
4098 559, 560, 561, 836, 356, 64, 832, 833, 629, 17,
4099 0, 537, 538, 489, 64, 487, 490, 0, 499, 854,
4100 854, 854, 854, 449, 854, 461, 460, 854, 854, 482,
4101 458, 854, 854, 357, 844, 854, 574, 64, 579, 580,
4102 584, 515, 854, 0, 486, 501, 776, 772, 0, 769,
4103 774, 452, 0, 472, 0, 469, 0, 465, 0, 467,
4104 836, 356, 474, 0, 567, 534, 535, 533, 488, 854,
4105 854, 854, 854, 854, 770, 470, 466, 0, 463, 468,
4110static const yytype_int16 yypgoto[] =
4112 -1208, -98, 1110, -1208, -1208, -1208, 1018, 1301, 870, -37,
4113 -1208, -1208, -557, -1208, 227, 876, -1208, 16, -1208, -1208,
4114 17, -1208, -1208, -133, -1208, -5, -553, 159, -51, 11,
4115 -1208, -1208, 510, 3119, -1208, 3492, -1208, -79, -1208, -1208,
4116 1279, -47, -1208, 778, -1208, -447, 1566, -10, 1281, -151,
4117 48, -442, -17, -1208, 25, 4179, -399, 1285, -46, 10,
4118 -1208, -1208, -3, -1208, -1208, 5056, -1208, -1208, -1208, -1208,
4119 -535, 1294, -1208, 141, 904, 242, -1208, 1282, -1208, 885,
4120 42, 710, -374, -1208, 104, -1208, -27, -395, -217, 24,
4121 -411, -1208, -568, -48, -1208, -1208, -1208, -1208, -1208, -1208,
4122 -1208, -1208, -1208, -1208, -1208, -1208, 1344, -1208, -1208, -1208,
4123 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
4124 -1208, -1208, 441, -1208, -278, 2216, 2729, -401, 425, 178,
4125 -799, -1208, -838, -821, 655, 498, 393, -1208, 146, 82,
4126 -1208, -915, -1208, 237, -1208, -1207, 84, -434, -1208, -1208,
4127 -1208, 328, -1208, -1208, 156, -1208, 19, 368, -157, -168,
4128 -1208, -1208, 676, -1208, -1208, -1208, 548, -1208, -1208, -102,
4129 -1208, -520, -1208, 1067, -1208, -788, -1208, -708, -905, -526,
4130 -1208, 36, -1208, -1208, -924, -235, -1208, -1208, -1208, -1208,
4131 -1208, 140, -1208, -83, -1208, -873, -705, -1099, -336, -1059,
4132 -1062, -1208, 223, -1208, -1208, -943, 224, -1208, -1208, -581,
4133 229, -1208, -1208, -1208, 131, -1208, -1208, 125, 884, 1356,
4134 -1208, 1330, 1386, 1420, 5, -1208, 1654, -1208, 912, -1208,
4135 1698, -1208, -1208, 1756, -1208, 1900, -1208, -1208, -57, -1208,
4136 -1208, -140, -1208, -1208, -1208, -1208, -1208, -1208, -1208, 29,
4137 -1208, -1208, -1208, -1208, 37, -45, 4031, 130, 1346, 4554,
4138 3801, -1208, -1208, 83, -327, 732, 30, -1208, -734, -793,
4139 -511, -1208, 200, -1208, -858, -737, -662, -502, -1208, -1208,
4140 -1208, 1109, -370, -1208, -1208, -1208, 394, -221, -1197, -433,
4141 -273, -652, 779, -486, -668, -1208, -723, -1208, -629, -1208,
4142 305, -1208, -496, -1208, -1208, -1208, -1208, -1208, 34, -418,
4143 -378, -1208, -1208, -82, 1353, 248, -482, 64, -216, -69,
4148static const yytype_int16 yydefgoto[] =
4150 0, 333, 69, 1, 2, 70, 71, 266, 267, 656,
4151 1153, 1312, 657, 1050, 287, 288, 504, 224, 72, 494,
4152 289, 74, 75, 76, 77, 78, 785, 487, 815, 79,
4153 630, 616, 444, 273, 872, 274, 406, 407, 409, 972,
4154 410, 82, 804, 816, 83, 606, 275, 85, 86, 290,
4155 87, 522, 88, 89, 90, 238, 427, 428, 218, 219,
4156 220, 695, 645, 222, 92, 93, 94, 95, 96, 97,
4157 788, 395, 98, 553, 497, 554, 240, 241, 294, 820,
4158 837, 838, 480, 242, 481, 257, 258, 244, 470, 649,
4159 246, 808, 809, 99, 403, 510, 855, 665, 862, 1159,
4160 865, 863, 682, 599, 602, 100, 277, 102, 103, 104,
4161 105, 106, 107, 108, 109, 110, 111, 356, 359, 961,
4162 1150, 852, 966, 967, 800, 278, 279, 659, 847, 968,
4163 969, 419, 757, 758, 759, 760, 571, 772, 773, 1256,
4164 1257, 1163, 1258, 1385, 1342, 1260, 1261, 1337, 1262, 1263,
4165 1264, 1183, 1184, 1265, 1239, 1374, 1375, 529, 740, 899,
4166 314, 1165, 114, 1068, 1243, 1320, 360, 115, 116, 357,
4167 603, 604, 607, 608, 975, 853, 1234, 948, 1033, 824,
4168 1370, 856, 1427, 1235, 1111, 1275, 1113, 1287, 1114, 1218,
4169 1219, 1115, 1351, 1193, 1194, 1195, 1117, 1118, 1288, 1197,
4170 1119, 1120, 1121, 1122, 1123, 572, 1125, 1126, 1127, 1128,
4171 1129, 1130, 1131, 1132, 962, 1048, 1147, 1151, 117, 118,
4172 119, 120, 121, 122, 323, 123, 124, 541, 744, 125,
4173 126, 543, 127, 128, 129, 130, 542, 544, 316, 320,
4174 321, 534, 742, 741, 900, 1001, 1082, 1253, 901, 131,
4175 132, 317, 133, 134, 135, 136, 248, 249, 139, 250,
4176 251, 864, 677, 345, 346, 347, 348, 349, 574, 575,
4177 763, 576, 918, 1071, 1245, 578, 579, 769, 580, 581,
4178 582, 583, 1169, 1074, 1075, 1076, 1077, 584, 585, 586,
4179 927, 588, 589, 590, 591, 592, 593, 594, 595, 596,
4180 597, 764, 770, 447, 448, 449, 683, 299, 484, 253,
4181 725, 647, 686, 681, 402, 489, 833, 1201, 514, 660,
4188static const yytype_int16 yytable[] =
4190 142, 334, 319, 335, 221, 237, 237, 661, 309, 412,
4191 236, 236, 315, 318, 456, 286, 293, 573, 73, 401,
4192 328, 646, 573, 654, 221, 408, 648, 675, 413, 225,
4193 226, 919, 915, 454, 483, 478, 223, 263, 334, 245,
4194 245, 309, 789, 917, 1034, 793, 971, 821, 791, 252,
4195 252, 292, 292, 297, 301, 221, 223, 355, 702, 711,
4196 309, 309, 309, 256, 767, 445, 792, 978, 324, 325,
4197 326, 587, 365, 1003, 701, 765, 587, 692, 295, 765,
4198 516, 308, 701, 734, 518, 796, 452, 775, 296, 300,
4199 1124, 1124, 1005, 781, 646, 1276, 654, 711, 916, 706,
4200 291, 702, 237, 327, 825, -146, -141, 236, 221, 1286,
4201 1143, 351, 924, 1251, 405, 405, 846, 949, 405, 243,
4202 254, 1376, 925, 658, 726, 870, 354, 1241, 352, 1386,
4203 -397, 138, 761, -142, 505, 1277, 245, 368, 746, 921,
4204 1207, 568, 1072, -704, 750, 926, 252, -149, -148, 143,
4205 726, 1289, -144, 737, 1158, 1167, 1302, 1305, -397, -397,
4206 1116, 1116, 259, -145, 350, 474, -146, 530, -147, -721,
4207 811, 268, -704, 569, 798, -143, -712, 466, -141, -713,
4208 537, 539, 138, 138, 265, 261, 312, 264, 792, 507,
4209 -113, 747, 344, 286, 1208, 502, 352, 751, -142, 1191,
4210 283, 1200, 397, 392, 393, 394, 1376, 1070, 1072, 1386,
4211 -141, -129, 611, -142, -397, 1124, 450, 362, 334, 312,
4212 508, 1242, 532, 533, 887, 1282, 342, 343, 528, 292,
4213 398, 399, 799, 1252, 1236, -137, -132, -832, 421, 431,
4214 431, 431, 358, 331, 471, 237, 1003, 237, 286, 332,
4215 236, 471, 236, 353, 485, 898, 1399, 309, 549, 550,
4216 551, 552, 1176, -133, 331, 142, -149, 478, 1124, 1059,
4217 332, 488, 490, 1070, 919, 1124, 1124, -140, -139, 482,
4218 868, 245, -135, 73, 292, 1116, 400, 658, 523, 1397,
4219 1289, 252, 726, -136, 1289, 859, 1400, 711, -138, 548,
4220 -833, -147, 702, 726, 351, -134, 869, -146, 984, 953,
4221 -832, 1296, 1298, -146, 256, 666, 309, 354, 701, -141,
4222 701, 353, 761, 910, 322, -141, 286, 255, 977, 1322,
4223 662, 801, -148, 291, 886, 292, 670, 351, 1073, -142,
4224 1333, 521, 1335, 259, 334, -142, 672, 476, 405, 405,
4225 405, 405, 73, 555, 556, 925, 499, 500, 1232, -144,
4226 138, 486, 292, 1207, 1400, 1142, 1142, 259, -147, 1233,
4227 940, 1080, -64, 663, 664, 1070, 1016, 980, 1070, 842,
4228 1070, -149, 1087, -712, 954, 849, 850, 985, -145, 613,
4229 237, -833, 959, 1047, 1017, 236, 138, 1207, 653, 485,
4230 1196, 745, 292, 745, 1073, 496, 1006, -149, 1124, 292,
4231 292, 291, 777, -149, 361, 138, 259, -141, 1008, 1010,
4232 405, 765, 1012, 702, 1014, 1062, 1015, 678, 331, 1057,
4233 778, 919, 915, 530, 332, 312, 405, 1080, -132, 701,
4234 -143, 237, -147, 1244, 655, -833, 236, -135, -147, 782,
4235 -713, -585, 653, 696, 513, 513, -64, 366, 259, 513,
4236 965, 519, 888, 237, 1017, 138, 138, 783, 236, 1411,
4237 854, 653, 485, -148, 458, 245, 889, 309, 761, -148,
4238 761, 471, 814, 471, -142, 252, 884, -148, 532, 533,
4239 1142, 221, 890, 138, 312, 587, -144, 691, 916, 653,
4240 -144, 587, 610, 703, 718, -133, -144, 615, 523, 1248,
4241 -145, 932, 460, 1301, 1304, 933, 896, 237, 459, 925,
4242 1187, 1188, 236, 223, 459, 653, 485, 702, 322, -145,
4243 1070, 790, 1070, 138, 1070, -145, 1070, -356, 509, 1247,
4244 138, 138, 1249, 1142, 577, 965, 732, 851, 1097, 577,
4245 1142, 1142, -149, 1269, 259, 687, -135, 260, -149, 1215,
4246 814, 814, 562, 803, 309, -356, -356, 646, 803, 654,
4247 59, 754, 1030, -140, 1058, 976, -135, -135, 979, 711,
4248 -135, -143, 563, 1177, 1178, 1180, 1181, -143, 786, 260,
4249 919, 786, 986, 848, 814, 523, 993, 503, 292, 693,
4250 694, 292, 701, 1425, 905, 462, 530, 538, 698, 905,
4251 467, 1384, 567, 568, 1216, 1070, 709, 710, 1217, 831,
4252 -703, -356, 843, 1198, 845, -833, 468, 839, -136, 1272,
4253 -143, -148, 1293, 1294, 807, 835, 496, 934, 138, 807,
4254 936, -137, 876, 879, 727, 569, 803, 803, 471, -703,
4255 761, 761, 1154, 840, 368, 312, 469, -705, 292, 237,
4256 292, 532, 533, 477, 236, 875, 916, 653, 485, -144,
4257 237, 925, -134, 1069, 884, 236, 894, 777, 653, 485,
4258 803, 292, 475, 1142, 138, 309, -705, 368, 830, 925,
4259 1054, 840, 221, 1055, 871, 1220, 1268, 902, 1381, 688,
4260 1060, 503, 471, 495, 1190, 881, 1064, 1388, 506, 1172,
4261 1174, 1274, 1392, 255, 1278, 451, 897, 331, 390, 391,
4262 392, 393, 394, 332, 223, 840, -112, 587, 712, 138,
4263 892, 714, 138, -706, 1297, -148, 717, -136, 587, 1069,
4264 947, 673, 312, 511, 836, 674, 1227, 891, 397, 904,
4265 -137, 906, 1332, 729, 907, 908, -139, -136, -136, -708,
4266 925, -136, -706, 1377, 309, 259, 1020, 830, 1021, -64,
4267 -137, -137, 989, -832, -137, 835, 398, 472, -145, 1078,
4268 956, -134, 397, 981, 1160, 983, 836, 1432, -708, 138,
4269 826, 138, 517, 587, 982, 523, 530, 841, 1112, 1112,
4270 397, -134, -134, 373, 374, -134, 520, 832, 344, -144,
4271 398, 501, 138, 525, -143, 540, 1295, -707, 814, 814,
4272 -145, 1360, 1361, 1362, 814, 814, 445, -709, 398, 526,
4273 -135, 771, 473, 1343, 1314, 1347, 598, 882, -700, 545,
4274 963, -136, 970, -710, 970, 1078, -707, 605, 1268, 535,
4275 1268, 532, 533, -711, 697, 1268, -709, 385, 386, 810,
4276 1268, 342, 343, 312, 292, 832, 473, -700, 891, 221,
4277 1192, -710, -710, 405, 397, 405, 1324, 1326, 1328, 1330,
4278 1331, -711, -711, 1401, 527, 964, 965, 1212, 1053, -701,
4279 471, 513, 684, 814, -719, 587, 832, 601, 587, 614,
4280 1036, 1038, 398, 453, 803, 803, 1042, 1044, 814, 1266,
4281 803, 803, 848, 673, 1063, 1000, 546, 1189, -701, 786,
4282 -349, 685, 667, 1112, 259, 512, 1268, -710, 1268, 1052,
4283 1268, 726, 1268, 671, 1365, 873, 237, -711, 397, 259,
4284 515, 236, 312, 929, 653, 485, 676, 1078, -349, -349,
4285 1078, 1268, 1078, 1413, 1415, 713, 1273, 1417, 1419, 1317,
4286 1049, 1422, -97, 721, 397, 292, 398, 668, 951, 952,
4287 715, 794, -357, 1192, 397, 797, 957, 958, 405, 803,
4288 716, 292, 722, 1192, 1192, 807, 397, 1213, 1214, 956,
4289 1144, 397, 398, 679, 803, 138, 1435, 1436, 1438, 1439,
4290 -357, -357, 398, 945, -349, -700, 1441, 912, 723, 1406,
4291 1407, 1409, 1410, 1396, 398, 1307, 731, 1398, 832, 398,
4292 1394, 1157, 669, -143, 1315, 1316, 991, 992, 832, 994,
4293 995, 259, 1403, -700, -700, -129, 1091, 1092, 524, 524,
4294 753, 1094, 1095, -98, -134, 1175, 733, 1148, 680, 1152,
4295 491, 1203, 999, 1100, 587, 762, -357, 292, 946, 1434,
4296 492, 493, 766, 1266, 1206, 530, 1164, 914, 1266, 1164,
4297 1308, 914, 1170, 563, 768, 680, -444, 779, 1170, 1170,
4298 774, 292, 780, 795, 1026, 812, -701, -97, 834, -700,
4299 1185, 1185, 530, -97, -836, 844, 138, 1041, 309, 1405,
4300 851, 854, 1078, 567, 1078, 911, 1078, 1290, 1078, 913,
4301 922, 368, 138, 930, -701, -701, 1229, 1230, 535, 987,
4302 532, 533, 1237, 1282, 931, 1285, 1283, 935, 381, 382,
4303 1311, 939, -329, 368, 1065, 1300, 1303, -836, 996, 942,
4304 998, 1309, 938, 1266, 941, 531, 1271, 532, 533, 292,
4305 381, 382, 292, 292, 138, 138, 970, 1002, 292, 334,
4306 950, 508, 530, 1141, 1141, -836, -836, 955, -98, 943,
4307 -701, 960, 1018, 1019, -98, 390, 391, 392, 393, 394,
4308 965, 1024, 292, 997, 1025, 292, 1027, 1078, 138, 832,
4309 1310, 778, 1007, 1009, 387, 388, 389, 390, 391, 392,
4310 393, 394, 530, 1011, 1013, 1321, 368, 337, 338, 339,
4311 340, 341, 138, -333, 1040, 535, 405, 532, 533, -836,
4312 309, -836, 530, 381, 382, -832, 292, 1083, 1084, 970,
4313 -331, 1141, 1141, 1356, 1146, 1141, 1371, 1372, 530, 1149,
4314 1162, 292, 1182, 1164, 1166, 1170, 1170, 1170, 1170, 1170,
4315 1202, 1209, 1141, 1168, 1164, 536, 1164, 532, 533, 1171,
4316 1338, 1173, 1179, 1210, 832, 1199, 1338, 1280, 1338, 389,
4317 390, 391, 392, 393, 394, 743, 1225, 532, 533, 1211,
4318 138, 1279, 1207, 138, 138, 1098, 1323, 1306, 1141, 138,
4319 1318, 748, 309, 532, 533, 1319, 1325, 557, 237, 558,
4320 559, 560, 561, 236, 1327, 1081, 653, 485, 1329, 963,
4321 1334, 1152, 1204, 138, 36, 37, 138, 39, 1378, 292,
4322 1238, 1141, 1389, 1336, 1141, 1341, 405, 405, 40, 41,
4323 42, 43, 1346, 1402, 1349, 1350, 1393, 298, 1141, 1353,
4324 1141, 1281, 1355, 1141, 1141, 101, 1408, 755, 1141, 1141,
4325 1412, 1414, 832, 547, 1416, 832, 1418, 138, 1423, 247,
4326 247, -832, 1205, 557, -833, 558, 559, 560, 561, 292,
4327 1437, 1081, 138, 336, 728, 832, 498, 1228, 1170, 1170,
4328 1170, 1170, 988, 1164, 730, 411, 1338, 1338, 805, 416,
4329 1338, 1338, 396, 1067, 1338, 433, 101, 101, 431, 719,
4330 310, 970, 874, 1051, 36, 37, 1061, 39, 1313, 1004,
4331 909, 247, 1340, 755, 45, 46, 1383, 1141, 756, 1259,
4332 1186, 1339, 1428, 990, 1238, 1391, 609, 1354, 1170, 1338,
4333 1338, 1338, 1338, 310, 1291, 1292, 1284, 1369, 1426, 1338,
4334 557, 1368, 558, 559, 560, 561, 562, 247, 247, 457,
4335 138, 247, 418, 429, 429, 749, 247, 446, 600, 1067,
4336 1161, 1424, 832, 832, 832, 1299, 563, 1240, 455, 0,
4337 431, 1240, 0, 1081, 0, 0, 1081, 0, 1081, 1141,
4338 564, 0, 0, 1141, 0, 1141, 0, 1270, 0, 557,
4339 565, 558, 559, 560, 561, 566, 567, 568, 0, 1373,
4340 138, 558, 559, 560, 561, 0, 0, 0, 0, 0,
4341 461, 0, 0, 463, 464, 465, 0, 0, 0, 0,
4342 0, 1348, 0, 0, 832, 0, 0, 0, 0, 569,
4343 0, 1352, 570, 1404, 557, 0, 558, 559, 560, 561,
4344 562, 0, 0, 0, 0, 1066, 0, 920, 1357, 1358,
4345 1359, 0, 0, 1141, 0, 0, 1199, 0, 0, 928,
4346 563, 1067, 0, 0, 1067, 0, 1067, 84, 0, 0,
4347 0, 0, 0, 0, 101, 1255, 0, 0, 878, 880,
4348 0, 84, 84, 0, 565, 0, 0, 0, 0, 566,
4349 567, 568, 0, 0, 878, 880, 0, 0, 0, 247,
4350 0, 247, 0, 0, 247, 247, 0, 0, 0, 0,
4351 101, 557, 895, 558, 559, 560, 561, 562, 84, 84,
4352 0, 0, 0, 569, 0, 0, 570, 0, 1081, 101,
4353 1081, 0, 1081, 84, 1081, 0, 0, 563, 0, 1240,
4354 0, 1270, 0, 0, 0, 0, 1270, 0, 0, 310,
4355 0, 1270, 0, 0, 0, 0, 0, 0, 0, 0,
4356 0, 565, 0, 0, 0, 0, 0, 567, 568, 84,
4357 84, 0, 0, 84, 0, 0, 0, 0, 84, 101,
4358 101, 247, 247, 247, 247, 0, 247, 247, 0, 0,
4359 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4360 569, 0, 0, 0, 0, 0, 0, 101, 310, 1110,
4361 1110, 0, 0, 1081, 0, 0, 1067, 1270, 1067, 1270,
4362 1067, 1270, 1067, 1270, 0, 0, 0, 0, 0, 1255,
4363 0, 0, 0, 0, 1255, 0, 0, 0, 0, 1255,
4364 0, 0, 1270, 0, 247, 0, 0, 101, 0, 0,
4365 699, 700, 0, 247, 101, 101, 0, 0, 0, 298,
4366 0, 0, 0, 0, 0, 0, 0, 895, 0, 247,
4367 0, 0, 0, 0, 0, 0, 0, 1110, 1110, 1079,
4368 0, 1110, 0, 0, 0, 0, 0, 0, 1085, 0,
4369 1086, 0, 1088, 0, 700, 247, 84, 298, 1110, 0,
4370 0, 1067, 0, 0, 0, 1255, 0, 1255, 0, 1255,
4371 0, 1255, 0, 0, 0, 0, 0, 247, 0, 0,
4372 0, 84, 0, 84, 0, 0, 84, 84, 0, 0,
4373 1255, 0, 84, 0, 1110, 0, 1037, 1039, 0, 0,
4374 0, 0, 1043, 1045, 0, 1079, 0, 0, 0, 0,
4375 0, 84, 101, 0, 0, 0, 0, 0, 0, 0,
4376 0, 0, 0, 0, 0, 0, 0, 1110, 0, 310,
4377 1110, 247, 776, 0, 0, 0, 1037, 1039, 0, 1043,
4378 1045, 0, 0, 0, 1110, 0, 1110, 0, 0, 1110,
4379 1110, 0, 806, 0, 1110, 1110, 0, 819, 101, 0,
4380 0, 84, 84, 84, 84, 84, 84, 0, 84, 84,
4381 0, 0, 0, 0, 0, 0, 0, 1133, 1133, 0,
4382 0, 0, 0, 0, 0, 0, 1145, 0, 0, 84,
4383 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4384 0, 0, 247, 101, 0, 247, 101, 1246, 0, 0,
4385 1145, 0, 1250, 0, 247, 0, 310, 0, 1254, 822,
4386 0, 1267, 0, 1110, 0, 0, 84, 0, 0, 84,
4387 0, 0, 0, 0, 0, 84, 84, 84, 557, 883,
4388 558, 559, 560, 561, 562, 1133, 1133, 0, 0, 1133,
4389 0, 84, 0, 0, 0, 700, 557, 298, 558, 559,
4390 560, 561, 562, 101, 563, 101, 1133, 0, 0, 0,
4391 0, 0, 0, 247, 0, 0, 0, 84, 564, 0,
4392 0, 0, 563, 0, 247, 1110, 101, 247, 565, 1110,
4393 0, 1110, 0, 566, 567, 568, 564, 822, 822, 84,
4394 0, 0, 1133, 0, 0, 0, 565, 0, 0, 0,
4395 0, 0, 567, 568, 0, 923, 0, 0, 0, 0,
4396 0, 0, 0, 247, 0, 0, 0, 569, 0, 0,
4397 570, 822, 0, 0, 84, 1133, 0, 310, 1133, 0,
4398 0, 0, 0, 0, 937, 569, 0, 0, 0, 0,
4399 0, 0, 1133, 84, 1133, 0, 0, 1133, 1133, 1110,
4400 0, 0, 1133, 1133, 1379, 0, 1380, 0, 1382, 0,
4401 0, 0, 0, 0, 0, 1387, 700, 0, 0, 0,
4402 84, 0, 0, 0, 0, 1395, 0, 0, 0, 0,
4403 0, 0, 0, 0, 974, 0, 0, 0, 0, 0,
4404 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4405 0, 0, 0, 0, 0, 0, 310, 0, 0, 0,
4406 0, 0, 0, 0, 84, 84, 0, 84, 84, 0,
4407 0, 1133, 0, 0, 0, 0, 84, 0, 0, 0,
4408 0, 84, 0, 0, 0, 0, 0, 1429, 0, 0,
4409 0, 0, 0, 1430, 0, 1431, 0, 1433, 0, 0,
4410 0, 0, 0, 0, 0, 0, 247, 0, 247, 101,
4411 0, 0, 0, 0, 0, 0, 1440, 112, 0, 0,
4412 1023, 0, 0, 0, 0, 84, 0, 84, 0, 0,
4413 0, 112, 112, 1133, 0, 84, 0, 1133, 0, 1133,
4414 0, 0, 0, 1046, 0, 0, 84, 0, 84, 84,
4415 0, 0, 0, 0, 0, 1056, 0, 0, 0, 84,
4416 84, 0, 0, 0, 0, 0, 0, 0, 112, 112,
4417 0, 0, 0, 247, 0, 0, 0, 0, 0, 298,
4418 0, 0, 0, 112, 0, 84, 0, 0, 0, 0,
4419 247, 0, 0, 84, 0, 822, 822, 0, 0, 0,
4420 0, 822, 822, 0, 1093, 0, 0, 1133, 0, 0,
4421 101, 247, 0, 0, 0, 0, 0, 0, 0, 112,
4422 112, 0, 0, 112, 0, 0, 101, 0, 112, 22,
4423 23, 24, 25, 0, 0, 0, 0, 0, 0, 1156,
4424 0, 0, 0, 0, 0, 31, 32, 33, 1098, 0,
4425 0, 0, 1099, 0, 0, 40, 41, 42, 43, 44,
4426 0, 0, 0, 0, 0, 0, 0, 0, 101, 101,
4427 822, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4428 0, 0, 0, 0, 0, 822, 0, 1101, 1102, 1134,
4429 1134, 0, 0, 0, 0, 1103, 0, 0, 1104, 0,
4430 1105, 1106, 101, 1107, 0, 0, 57, 58, 59, 60,
4431 61, 62, 63, 64, 65, 0, 0, 0, 0, 1135,
4432 1135, 0, 0, 0, 0, 0, 101, 0, 84, 0,
4433 84, 84, 0, 0, 0, 0, 1109, 1231, 0, 0,
4434 0, 0, 0, 304, 0, 0, 112, 0, 0, 0,
4435 259, 0, 0, 1136, 1136, 0, 0, 1134, 1134, 0,
4436 0, 1134, 0, 0, 0, 0, 0, 0, 0, 0,
4437 0, 112, 0, 112, 0, 0, 112, 112, 1134, 0,
4438 0, 0, 112, 0, 0, 0, 0, 1135, 1135, 0,
4439 1223, 1135, 0, 0, 101, 84, 0, 101, 101, 0,
4440 0, 112, 0, 101, 0, 0, 0, 0, 1135, 0,
4441 0, 0, 84, 0, 1134, 0, 0, 84, 84, 0,
4442 0, 1136, 1136, 84, 84, 1136, 0, 101, 0, 0,
4443 101, 0, 84, 84, 0, 0, 0, 0, 0, 0,
4444 0, 0, 1136, 0, 1135, 0, 0, 1134, 84, 247,
4445 1134, 112, 112, 112, 112, 112, 112, 0, 112, 112,
4446 0, 0, 0, 0, 1134, 0, 1134, 0, 0, 1134,
4447 1134, 101, 0, 0, 1134, 1134, 0, 1135, 1136, 112,
4448 1135, 0, 0, 0, 0, 0, 101, 0, 0, 0,
4449 84, 84, 84, 0, 1135, 0, 1135, 0, 0, 1135,
4450 1135, 0, 0, 0, 1135, 1135, 0, 84, 0, 0,
4451 0, 1136, 1345, 0, 1136, 0, 112, 0, 0, 112,
4452 0, 0, 0, 0, 84, 112, 112, 112, 1136, 0,
4453 1136, 0, 0, 1136, 1136, 0, 0, 0, 1136, 1136,
4454 0, 112, 0, 1134, 0, 0, 0, 0, 84, 0,
4455 0, 0, 247, 0, 0, 0, 0, 0, 0, 247,
4456 247, 0, 0, 0, 101, 0, 0, 112, 0, 0,
4457 0, 0, 0, 1135, 0, 0, 0, 0, 0, 0,
4458 0, 0, 0, 0, 1390, 0, 0, 1137, 1137, 112,
4459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4460 0, 0, 0, 0, 0, 1134, 0, 1136, 0, 1134,
4461 0, 1134, 0, 0, 101, 0, 84, 0, 0, 84,
4462 84, 0, 0, 0, 112, 84, 0, 0, 0, 0,
4463 113, 1138, 1138, 0, 0, 1135, 0, 0, 0, 1135,
4464 0, 1135, 0, 112, 113, 113, 0, 0, 0, 84,
4465 0, 0, 84, 0, 0, 1137, 1137, 0, 0, 1137,
4466 0, 0, 0, 0, 0, 0, 0, 0, 0, 1136,
4467 112, 84, 0, 1136, 0, 1136, 1137, 0, 0, 1134,
4468 0, 113, 113, 0, 0, 0, 0, 0, 0, 1139,
4469 1139, 0, 0, 84, 0, 0, 113, 0, 0, 1138,
4470 1138, 0, 0, 1138, 0, 0, 0, 0, 84, 1135,
4471 0, 0, 1137, 0, 112, 112, 0, 112, 112, 0,
4472 1138, 0, 0, 0, 0, 0, 112, 0, 0, 0,
4473 0, 112, 113, 113, 0, 0, 113, 0, 0, 0,
4474 0, 113, 0, 1136, 0, 1137, 0, 0, 1137, 0,
4475 0, 0, 0, 0, 0, 0, 1138, 1139, 1139, 0,
4476 0, 1139, 1137, 0, 1137, 0, 0, 1137, 1137, 0,
4477 0, 0, 1137, 1137, 84, 112, 0, 112, 1139, 0,
4478 0, 84, 84, 0, 0, 112, 84, 0, 0, 1138,
4479 0, 0, 1138, 0, 0, 0, 112, 0, 112, 112,
4480 0, 0, 0, 0, 0, 0, 1138, 0, 1138, 112,
4481 112, 1138, 1138, 0, 1139, 0, 1138, 1138, 0, 0,
4482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4483 0, 0, 0, 1140, 1140, 112, 84, 0, 0, 0,
4484 0, 1137, 0, 112, 0, 0, 0, 1139, 0, 0,
4485 1139, 0, 0, 0, 0, 0, 0, 0, 0, 113,
4486 0, 0, 0, 0, 1139, 0, 1139, 0, 0, 1139,
4487 1139, 0, 0, 0, 1139, 1139, 0, 0, 0, 0,
4488 0, 0, 0, 0, 113, 1138, 113, 0, 0, 113,
4489 113, 0, 0, 0, 0, 113, 0, 0, 0, 0,
4490 0, 1140, 1140, 1137, 0, 1140, 0, 1137, 0, 1137,
4491 0, 0, 0, 0, 113, 0, 0, 0, 0, 0,
4492 0, 0, 1140, 0, 0, 0, 0, 0, 0, 0,
4493 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4494 0, 0, 0, 1139, 0, 0, 0, 1138, 0, 0,
4495 0, 1138, 0, 1138, 0, 0, 0, 0, 1140, 0,
4496 0, 0, 0, 0, 113, 113, 113, 113, 113, 113,
4497 0, 113, 113, 0, 0, 0, 0, 1137, 112, 0,
4498 112, 112, 0, 0, 0, 0, 0, 0, 0, 0,
4499 0, 1140, 113, 0, 1140, 0, 0, 0, 0, 0,
4500 0, 0, 0, 0, 0, 1139, 0, 0, 1140, 1139,
4501 1140, 1139, 0, 1140, 1140, 0, 0, 0, 1140, 1140,
4502 80, 1138, 0, 0, 0, 0, 0, 0, 0, 113,
4503 0, 0, 113, 0, 80, 80, 0, 0, 113, 113,
4504 113, 0, 0, 0, 0, 112, 0, 0, 0, 0,
4505 0, 0, 0, 0, 113, 0, 0, 0, 0, 0,
4506 0, 0, 112, 0, 0, 0, 0, 112, 112, 0,
4507 0, 80, 80, 112, 112, 306, 0, 0, 0, 1139,
4508 113, 0, 112, 112, 0, 0, 0, 1140, 22, 23,
4509 24, 25, 0, 0, 0, 0, 0, 0, 112, 0,
4510 0, 0, 113, 0, 31, 32, 33, 0, 306, 0,
4511 0, 0, 0, 0, 40, 41, 42, 43, 44, 0,
4512 0, 0, 0, 0, 0, 0, 0, 306, 306, 306,
4513 0, 80, 0, 0, 0, 0, 0, 113, 0, 0,
4514 112, 112, 112, 0, 0, 0, 0, 0, 0, 1140,
4515 0, 0, 0, 1140, 0, 1140, 113, 112, 0, 0,
4516 0, 0, 0, 0, 0, 57, 58, 59, 60, 61,
4517 62, 63, 64, 65, 112, 0, 0, 0, 0, 0,
4518 0, 0, 0, 113, 0, 0, 0, 0, 0, 0,
4519 0, 368, -855, -855, -855, -855, 373, 374, 112, 0,
4520 -855, -855, 304, 0, 0, 0, 0, 0, 381, 382,
4521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4522 0, 0, 0, 1140, 0, 0, 0, 113, 113, 0,
4523 113, 113, 0, 0, 0, 0, 0, 0, 0, 113,
4524 0, 0, 0, 0, 113, 0, 0, 0, 0, 80,
4525 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
4526 0, 0, 0, 0, 0, 0, 112, 0, 0, 112,
4527 112, 0, 0, 0, 80, 112, 80, 0, 0, 0,
4528 0, 0, 0, 0, 0, 80, 0, 0, 113, 0,
4529 113, 0, 0, 0, 0, 0, 0, 0, 113, 112,
4530 0, 0, 112, 0, 80, 0, 0, 0, 0, 113,
4531 0, 113, 113, 0, 0, 0, 0, 0, 0, 0,
4532 0, 112, 113, 113, 306, 0, 0, 0, 0, 0,
4533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4534 0, 0, 0, 112, 0, 0, 0, 0, 113, 0,
4535 0, 0, 0, 0, 80, 80, 113, 0, 112, -854,
4536 0, 0, 0, 0, 0, 0, 0, -854, -854, -854,
4537 0, 0, -854, -854, -854, 0, -854, 0, 0, 0,
4538 0, 0, 80, 306, -854, -854, -854, 0, 0, 0,
4539 0, 0, 0, 81, 0, 0, -854, -854, 0, -854,
4540 -854, -854, -854, -854, 0, 0, 0, 81, 81, 0,
4541 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,
4542 0, 0, 80, 0, 112, 0, 0, -854, -854, 80,
4543 80, 112, 112, 0, 0, 0, 112, 0, 0, 0,
4544 0, 0, 0, 0, 81, 81, 0, 0, 307, 0,
4545 0, 0, 0, 0, 0, 0, -854, -854, 0, 0,
4546 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4547 80, 0, 0, 0, 0, 0, 0, 0, 0, -854,
4548 0, 307, 0, 0, 0, 0, 112, 0, 0, 0,
4549 0, 113, 80, 113, 113, 0, 0, 0, 0, 0,
4550 307, 307, 307, 0, 81, 0, 0, 0, 0, 0,
4551 -854, -854, 0, -854, 0, 0, 255, -854, 0, -854,
4552 0, 0, 0, 0, 0, 0, 0, 80, 0, 0,
4553 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4554 0, 0, 0, 0, 306, 0, 80, 0, 0, 0,
4555 0, 0, 0, 0, 0, 0, 0, 0, 113, 0,
4556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4557 0, 0, 0, 80, 0, 113, 0, 0, 0, 0,
4558 113, 113, 0, 0, 0, 0, 113, 113, 0, 0,
4559 0, 0, 0, 0, 0, 113, 113, 0, 0, 0,
4560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4561 0, 113, 0, 0, 0, 0, 0, 0, 80, 0,
4562 0, 80, 81, 0, 0, 0, 0, 0, 0, 0,
4563 0, 306, 0, 0, 80, 0, 0, 0, 0, 0,
4564 0, 0, 0, 0, 0, 0, 0, 81, 0, 81,
4565 0, 0, 0, 113, 113, 113, 0, 0, 81, 0,
4566 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4567 113, 0, 0, 0, 0, 0, 0, 81, 80, 0,
4568 80, 0, 0, 0, 0, 0, 0, 113, 80, 0,
4569 0, 0, 0, 0, 0, 0, 0, 307, 0, 80,
4570 0, 80, 141, 0, 0, 0, 0, 0, 0, 0,
4571 0, 113, 80, 80, 0, 0, 0, 0, 0, 0,
4572 0, 0, 0, 0, 0, 944, 0, 81, 81, 0,
4573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4574 0, 0, 0, 0, 0, 0, 80, 0, 0, 0,
4575 0, 0, 306, 141, 141, 81, 307, 313, 0, 368,
4576 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
4577 379, 380, 0, 0, 0, 0, 381, 382, 0, 113,
4578 0, 0, 113, 113, 0, 0, 0, 0, 113, 0,
4579 313, 0, 81, 0, 0, 81, 0, 0, 0, 0,
4580 0, 0, 81, 81, 0, 0, 0, 0, 0, 422,
4581 432, 432, 113, 0, 0, 113, 384, 0, 385, 386,
4582 387, 388, 389, 390, 391, 392, 393, 394, 0, 0,
4583 0, 306, 0, 0, 113, 0, -298, 0, 0, 0,
4584 0, 0, 0, 81, 368, 369, 370, 371, 372, 373,
4585 374, 375, 0, 377, 378, 0, 113, 0, 0, 0,
4586 0, 381, 382, 0, 0, 81, 0, 0, 0, 0,
4587 0, 113, 0, 0, 0, 0, 0, 0, 0, 0,
4588 0, 0, 0, 0, 80, 0, 0, 0, 0, 0,
4589 0, 0, 0, 0, 0, 0, 0, 0, 367, 0,
4590 81, 0, 0, 385, 386, 387, 388, 389, 390, 391,
4591 392, 393, 394, 0, 0, 0, 0, 307, 0, 81,
4592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4593 0, 141, 137, 0, 0, 0, 0, 113, 0, 0,
4594 0, 0, 0, 0, 113, 113, 81, 0, 0, 113,
4595 0, 368, 369, 370, 371, 372, 373, 374, 375, 376,
4596 377, 378, 379, 380, 0, 80, 0, 141, 381, 382,
4597 80, 80, 0, 0, 383, 0, 80, 80, 0, 0,
4598 0, 0, 0, 137, 137, 80, 141, 311, 0, 0,
4599 0, 81, 0, 0, 81, 0, 0, 0, 0, 113,
4600 0, 80, 0, 0, 307, 0, 313, 81, 384, 0,
4601 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
4602 311, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4603 0, 0, 0, 0, 0, 0, 141, 141, 0, 420,
4604 430, 430, 430, 80, 80, 80, 0, 0, 0, 0,
4605 0, 81, 0, 81, 944, 0, 0, 0, 0, 0,
4606 80, 81, 0, 0, 141, 313, 0, 0, 0, 0,
4607 0, 0, 81, 0, 81, 0, 0, 80, 0, 0,
4608 91, 0, 0, 0, 0, 81, 81, 0, 368, 369,
4609 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
4610 380, 80, 0, 0, 141, 381, 382, 0, 0, 0,
4611 0, 141, 141, 0, 0, 0, 0, 0, 0, 81,
4612 0, 0, 0, 0, 0, 307, 0, 0, 0, 0,
4613 0, 91, 91, 0, 0, 0, 0, 0, 0, 0,
4614 0, 0, 0, 0, 0, 384, 0, 385, 386, 387,
4615 388, 389, 390, 391, 392, 393, 394, 0, 0, 0,
4616 0, 137, 0, 0, 0, 306, 0, 0, 0, 80,
4617 0, 0, 80, 80, 0, 0, 0, 0, 80, 0,
4618 0, 0, 0, 0, 0, 0, 0, 417, 0, 0,
4619 0, 0, 0, 0, 0, 0, 0, 137, 0, 0,
4620 0, 0, 80, 0, 307, 80, 0, 0, 0, 141,
4621 0, 0, 0, 0, 0, 0, 137, 0, 0, 0,
4622 0, 0, 0, 0, 0, 0, 313, 0, 0, 0,
4623 0, 0, 0, 0, 0, 0, 311, 0, 0, 0,
4624 0, 0, 0, 0, 0, 0, 80, 0, 0, 0,
4625 0, 0, 0, 0, 0, 141, 0, 81, 0, 0,
4626 0, 80, 0, 0, 0, 0, 137, 137, 0, 0,
4627 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4628 0, 0, 0, 0, 0, 0, 0, 306, 0, 0,
4629 0, 0, 0, 0, 137, 311, 0, 0, 0, 0,
4630 141, 0, 0, 141, 0, 0, 0, 0, 0, 91,
4631 0, 0, 0, 313, 0, 0, 823, 0, 0, 0,
4632 0, 0, 0, 0, 0, 0, 0, 80, 0, 0,
4633 0, 0, 0, 0, 137, 0, 0, 0, 81, 80,
4634 0, 137, 137, 81, 81, 91, 0, 0, 0, 81,
4635 81, 0, 0, 0, 0, 0, 0, 0, 81, 306,
4636 141, 0, 141, 0, 91, 0, 0, 0, 0, 0,
4637 0, 0, 0, 0, 81, 0, 0, 0, 0, 0,
4638 0, 0, 0, 141, 0, 0, 0, 0, 0, 80,
4639 0, 0, 0, 0, 823, 823, 0, 0, 0, 0,
4640 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4641 0, 0, 0, 0, 91, 91, 81, 81, 81, 0,
4642 0, 0, 0, 0, 0, 0, 0, 0, 823, 0,
4643 0, 0, 0, 81, 313, 0, 0, 0, 0, 137,
4644 0, 0, 91, 903, 0, 0, 0, 0, 0, 0,
4645 81, 0, 0, 0, 0, 140, 311, 0, 0, 0,
4646 0, 0, 0, 0, 0, 0, 0, 689, 651, 0,
4647 0, 690, 0, 0, 81, 0, 0, 0, 0, 0,
4648 0, 0, 91, 0, 0, 137, 0, 0, 0, 91,
4649 91, 188, 189, 190, 191, 192, 193, 194, 195, 196,
4650 0, 0, 197, 198, 0, 0, 140, 140, 199, 200,
4651 201, 202, 0, 313, 0, 0, 0, 0, 0, 0,
4652 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
4653 137, 0, 0, 137, 0, 0, 0, 0, 307, 0,
4654 0, 0, 81, 311, 0, 81, 81, 0, 0, 0,
4655 0, 81, 205, 206, 207, 208, 209, 210, 211, 212,
4656 213, 214, 0, 215, 216, 0, 141, 0, 0, 0,
4657 0, 217, 255, 0, 0, 81, 0, 0, 81, 368,
4658 369, 370, 371, 372, 373, 374, 0, 91, 377, 378,
4659 137, 0, 137, 0, 0, 0, 381, 382, 0, 0,
4660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4661 0, 0, 0, 137, 0, 0, 0, 0, 0, 81,
4662 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4663 0, 0, 0, 91, 81, 0, 0, 0, 385, 386,
4664 387, 388, 389, 390, 391, 392, 393, 394, 0, 0,
4665 0, 0, 823, 823, 0, 0, 0, 0, 823, 823,
4666 307, 0, 0, 0, 311, 0, 0, 141, 0, 0,
4667 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
4668 0, 91, 0, 141, 140, 0, 0, 0, 0, 0,
4669 0, 0, 0, 0, 817, 0, 0, 0, 0, 0,
4670 81, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4671 0, 0, 81, 0, 0, 0, 0, 0, 0, 0,
4672 140, 0, 0, 0, 0, 141, 141, 823, 0, 0,
4673 0, 0, 307, 0, 0, 0, 0, 0, 91, 140,
4674 91, 0, 823, 311, 0, 0, 0, 0, 0, 0,
4675 0, 0, 22, 23, 24, 25, 0, 0, 0, 141,
4676 0, 91, 81, 0, 0, 0, 0, 0, 31, 32,
4677 33, 1098, 817, 817, 0, 1099, 0, 1100, 40, 41,
4678 42, 43, 44, 141, 0, 0, 0, 0, 0, 140,
4679 140, 0, 0, 0, 0, 0, 137, 563, 0, 0,
4680 0, 0, 0, 0, 0, 0, 817, 0, 0, 0,
4681 1101, 1102, 0, 0, 0, 0, 0, 140, 1103, 0,
4682 0, 1104, 0, 1105, 1106, 0, 1107, 567, 0, 57,
4683 58, 1108, 60, 61, 62, 63, 64, 65, 0, 0,
4684 0, 0, 0, 0, 0, 0, 0, 1226, 0, 0,
4685 0, 141, 0, 0, 141, 141, 0, 140, 0, 1109,
4686 141, 0, 0, 0, 140, 140, 304, 0, 0, 0,
4687 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4688 0, 0, 0, 0, 141, 0, 0, 141, 0, 0,
4689 642, 643, 0, 0, 644, 0, 0, 137, 0, 0,
4690 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4691 0, 0, 0, 137, 188, 189, 190, 191, 192, 193,
4692 194, 195, 196, 0, 0, 197, 198, 0, 141, 0,
4693 0, 199, 200, 201, 202, 0, 0, 0, 0, 0,
4694 0, 0, 0, 141, 91, 203, 204, 0, 0, 0,
4695 0, 0, 0, 0, 0, 137, 137, 0, 0, 0,
4696 0, 0, 140, 0, 0, 0, 0, 0, 0, 432,
4697 0, 239, 239, 0, 0, 205, 206, 207, 208, 209,
4698 210, 211, 212, 213, 214, 0, 215, 216, 0, 137,
4699 0, 0, 0, 0, 217, 0, 0, 0, 0, 0,
4700 0, 0, 0, 276, 280, 281, 282, 0, 140, 0,
4701 239, 239, 0, 137, 0, 0, 0, 0, 0, 0,
4702 0, 141, 0, 329, 330, 0, 0, 0, 0, 0,
4703 817, 817, 0, 0, 0, 0, 817, 817, 0, 0,
4704 0, 432, 0, 0, 0, 91, 0, 0, 0, 0,
4705 0, 0, 0, 140, 0, 0, 140, 0, 0, 0,
4706 0, 91, 0, 0, 0, 0, 0, 0, 239, 140,
4707 0, 141, 0, 0, 0, 0, 0, 1224, 0, 0,
4708 0, 137, 0, 0, 137, 137, 0, 0, 0, 0,
4709 137, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4710 0, 0, 0, 91, 91, 817, 0, 0, 0, 0,
4711 0, 0, 0, 140, 137, 140, 0, 137, 0, 0,
4712 817, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4713 0, 0, 0, 0, 0, 0, 140, 91, 0, 0,
4714 0, 0, 0, 0, 0, 0, 0, 140, 140, 0,
4715 0, 0, 0, 0, 0, 0, 0, 0, 137, 0,
4716 0, 91, 0, 0, 0, 0, 0, 0, 0, 0,
4717 0, 0, 0, 137, 0, 0, 0, 0, 0, 0,
4718 0, 140, 0, 0, 239, 0, 0, 239, 239, 239,
4719 0, 329, 0, 0, 0, 0, 0, 0, 0, 430,
4720 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4721 0, 239, 0, 239, 0, 0, 0, 0, 0, 0,
4722 0, 0, 0, 0, 0, 1222, 0, 0, 0, 91,
4723 0, 0, 91, 91, 0, 0, 0, 0, 91, 0,
4724 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4725 0, 137, 0, 0, 0, 0, 0, 0, 0, 0,
4726 0, 0, 91, 0, 0, 91, 0, 0, 0, 0,
4727 0, 430, 0, 0, 0, 0, 0, 0, 0, 0,
4728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4730 0, 137, 0, 0, 0, 0, 91, 0, 0, 0,
4731 0, 0, 0, 0, 0, 0, 0, 0, 0, 140,
4732 0, 91, 0, 0, 617, 618, 619, 620, 621, 0,
4733 0, 622, 623, 624, 625, 626, 627, 628, 629, 0,
4734 631, 0, 0, 632, 633, 634, 635, 636, 637, 638,
4735 639, 640, 641, 0, 650, 651, 239, 0, 652, 0,
4736 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4737 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
4738 190, 191, 192, 193, 194, 195, 196, 0, 0, 197,
4739 198, 0, 0, 0, 0, 199, 200, 201, 202, 91,
4740 0, 0, 0, 0, 0, 140, 140, 239, 0, 203,
4741 204, 140, 140, 0, 0, 0, 0, 0, 0, 0,
4742 140, 0, 0, 0, 239, 239, 0, 0, 0, 239,
4743 0, 0, 0, 239, 0, 282, 140, 0, 0, 205,
4744 206, 207, 208, 209, 210, 211, 212, 213, 214, 91,
4745 215, 216, 0, 720, 0, 0, 0, 0, 217, 0,
4746 0, 0, 0, 0, 0, 0, 0, 0, 239, 0,
4747 0, 239, 0, 0, 0, 0, 0, 0, 140, 140,
4748 140, 0, 0, 239, 0, 0, 0, 0, 0, 0,
4749 0, 0, 0, 0, 0, 140, 0, 0, 0, 0,
4750 0, 752, 0, 22, 23, 24, 25, 0, 0, 0,
4751 0, 0, 140, 0, 0, 0, 0, 0, 0, 31,
4752 32, 33, 1098, 0, 0, 0, 1099, 0, 0, 40,
4753 41, 42, 43, 44, 0, 0, 140, 0, 0, 0,
4754 0, 0, 0, 0, 0, 0, 239, 0, 0, 0,
4755 0, 0, 0, 0, 787, 0, 0, 787, 0, 0,
4756 0, 1101, 1102, 0, 0, 0, 239, 0, 0, 1103,
4757 0, 818, 1104, 0, 1105, 1106, 0, 1107, 0, 0,
4758 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
4759 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4760 0, 0, 0, 0, 140, 0, 0, 140, 140, 0,
4761 1109, 0, 0, 140, 0, 0, 0, 304, 0, 0,
4762 0, 0, 0, 0, 0, 239, 0, 0, 0, 0,
4763 0, 0, 0, 0, 0, 0, 239, 140, 0, 0,
4764 140, 0, 0, 0, 0, 0, 0, 0, 0, 877,
4765 877, 0, 0, 239, 877, 0, 0, 0, 0, 0,
4766 0, 0, 0, 0, 0, 877, 877, 0, 0, 239,
4767 0, 239, 0, 0, 0, 0, 0, 0, 787, 787,
4768 0, 140, 0, 877, 0, 0, 0, 0, 0, 0,
4769 0, 0, 0, 0, 0, 0, 140, 0, 0, 0,
4770 -4, 3, 0, 4, 5, 6, 7, 8, -4, -4,
4771 -4, 9, 10, 0, -4, -4, 11, -4, 12, 13,
4772 14, 15, 16, 17, 18, -4, 0, 0, 0, 239,
4773 19, 20, 21, 22, 23, 24, 25, 0, 0, 26,
4774 0, 0, 0, 0, 0, 27, 28, 284, 30, 31,
4775 32, 33, 34, 35, 36, 37, 38, 39, 239, 40,
4776 41, 42, 43, 44, 45, 46, 0, 0, -4, 0,
4777 0, 0, 0, 0, 140, 0, 47, 48, 0, 0,
4778 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4779 239, 49, 50, 0, 0, 0, 0, 0, 0, 51,
4780 0, 0, 52, 53, 54, 55, 0, 56, 239, 0,
4781 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
4782 -4, 0, 0, 0, 140, 0, 0, 0, 0, 0,
4783 0, 0, 0, 0, 0, 0, 0, 0, 877, 0,
4784 0, 0, 0, 0, 0, 0, 0, 66, 67, 68,
4785 0, 0, -4, 22, 23, 24, 25, 0, -4, 0,
4786 546, 0, 0, 0, 0, 0, 0, 0, 0, 31,
4787 32, 33, 1098, 0, 0, 0, 1099, 0, 0, 40,
4788 41, 42, 43, 44, 0, 787, 0, 0, 0, 0,
4789 0, 0, 0, 0, 239, 0, 0, 0, 0, 0,
4790 0, 0, 239, 0, 0, 0, 1035, 877, 877, 0,
4791 0, 1101, 1102, 877, 877, 0, 0, 239, 0, 1103,
4792 0, 0, 1104, 0, 1105, 1106, 0, 0, 0, 239,
4793 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
4794 0, 0, 0, 0, 0, 0, 0, 877, 877, 0,
4795 877, 877, 0, 239, 0, 787, 0, 0, 0, 0,
4796 1109, 0, 0, 0, 0, 0, 0, 304, 0, 0,
4797 0, 0, 0, 0, 1089, 1090, 0, 0, 239, 0,
4798 0, 0, 877, 1096, -854, 3, 0, 4, 5, 6,
4799 7, 8, 0, 0, 0, 9, 10, 877, 0, 0,
4800 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
4801 0, 0, 0, 239, 19, 20, 21, 22, 23, 24,
4802 25, 877, 0, 26, 0, 0, 0, 0, 0, 27,
4803 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
4804 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
4805 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4806 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
4807 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
4808 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
4809 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
4810 63, 64, 65, 0, -854, 0, 0, 0, 0, 0,
4811 0, 239, 0, 0, 0, 0, 0, 0, 0, 0,
4812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4813 0, 66, 67, 68, 0, 0, -854, 3, -854, 4,
4814 5, 6, 7, 8, -854, 0, 0, 9, 10, 0,
4815 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
4816 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
4817 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
4818 0, 27, 28, 29, 30, 31, 32, 33, 34, 35,
4819 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
4820 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
4821 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
4822 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
4823 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
4824 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
4825 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
4826 0, 0, 0, 0, 239, 0, 0, 0, 0, 0,
4827 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4828 0, 0, 0, 66, 67, 68, 0, 0, -4, 3,
4829 -854, 4, 5, 6, 7, 8, -854, 0, 0, 9,
4830 10, 0, 0, 0, 11, 0, 12, 13, 14, 15,
4831 16, 17, 18, 0, 0, 0, 0, 0, 19, 20,
4832 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
4833 0, 0, 0, 27, 28, 29, 30, 31, 32, 33,
4834 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
4835 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
4836 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
4837 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
4838 50, 0, 0, 0, 0, 0, 0, 51, 0, 0,
4839 52, 53, 54, 55, 0, 56, 0, 0, 57, 58,
4840 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
4841 0, 0, 0, 0, 0, 0, -836, 0, 0, 0,
4842 0, 0, 0, 0, -836, -836, -836, 0, 0, -836,
4843 -836, -836, 0, -836, 0, 66, 67, 68, 0, 0,
4844 -4, -836, -836, -836, -836, -836, 0, 0, 546, 0,
4845 0, 0, 0, -836, -836, 0, -836, -836, -836, -836,
4846 -836, 0, 0, 0, 368, 369, 370, 371, 372, 373,
4847 374, 375, 376, 377, 378, 379, 380, 0, 0, 0,
4848 0, 381, 382, 0, -836, -836, 0, 0, 0, 0,
4849 0, 0, 0, 0, -836, -836, -836, -836, -836, -836,
4850 -836, -836, -836, -836, -836, -836, -836, 0, 0, 0,
4851 0, -836, -836, -836, -836, 0, 885, -836, 0, 0,
4852 0, 384, -836, 385, 386, 387, 388, 389, 390, 391,
4853 392, 393, 394, 0, 0, 0, -836, 0, 0, -836,
4854 259, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4855 -146, -836, -836, -836, -836, -836, -836, -836, -836, -836,
4856 -836, -836, -836, 0, 0, 0, 0, -836, -836, -836,
4857 -836, -836, -700, 0, -836, -836, -836, 0, 0, 0,
4858 -700, -700, -700, 0, 0, -700, -700, -700, 0, -700,
4859 0, 0, 0, 0, 0, 0, 0, -700, 0, -700,
4860 -700, -700, 0, 0, 0, 0, 0, 0, 0, -700,
4861 -700, 0, -700, -700, -700, -700, -700, 0, 0, 0,
4862 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
4863 378, 379, 380, 0, 0, 0, 0, 381, 382, 0,
4864 -700, -700, 0, 0, 0, 0, 0, 0, 0, 0,
4865 -700, -700, -700, -700, -700, -700, -700, -700, -700, -700,
4866 -700, -700, -700, 0, 0, 0, 0, -700, -700, -700,
4867 -700, 0, -700, -700, 0, 0, 0, 384, -700, 385,
4868 386, 387, 388, 389, 390, 391, 392, 393, 394, 0,
4869 0, 0, -700, 0, 0, -700, 0, 0, 0, 0,
4870 0, 0, 0, 0, 0, 0, -700, -700, -700, -700,
4871 -700, -700, -700, -700, -700, -700, -700, -700, -700, 0,
4872 0, 0, 0, 0, -700, -700, -700, -700, -701, 0,
4873 -700, -700, -700, 0, 0, 0, -701, -701, -701, 0,
4874 0, -701, -701, -701, 0, -701, 0, 0, 0, 0,
4875 0, 0, 0, -701, 0, -701, -701, -701, 0, 0,
4876 0, 0, 0, 0, 0, -701, -701, 0, -701, -701,
4877 -701, -701, -701, 0, 0, 0, 368, 369, 370, 371,
4878 372, 373, 374, 375, 376, 377, 378, -855, -855, 0,
4879 0, 0, 0, 381, 382, 0, -701, -701, 0, 0,
4880 0, 0, 0, 0, 0, 0, -701, -701, -701, -701,
4881 -701, -701, -701, -701, -701, -701, -701, -701, -701, 0,
4882 0, 0, 0, -701, -701, -701, -701, 0, -701, -701,
4883 0, 0, 0, 0, -701, 385, 386, 387, 388, 389,
4884 390, 391, 392, 393, 394, 0, 0, 0, -701, 0,
4885 0, -701, 0, 0, 0, 0, 0, 0, 0, 0,
4886 0, 0, -701, -701, -701, -701, -701, -701, -701, -701,
4887 -701, -701, -701, -701, -701, 0, 0, 0, 0, 0,
4888 -701, -701, -701, -701, -837, 0, -701, -701, -701, 0,
4889 0, 0, -837, -837, -837, 0, 0, -837, -837, -837,
4890 0, -837, 0, 0, 0, 0, 0, 0, 0, -837,
4891 -837, -837, -837, -837, 0, 0, 0, 0, 0, 0,
4892 0, -837, -837, 0, -837, -837, -837, -837, -837, 0,
4893 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4895 0, 0, -837, -837, 0, 0, 0, 0, 0, 0,
4896 0, 0, -837, -837, -837, -837, -837, -837, -837, -837,
4897 -837, -837, -837, -837, -837, 0, 0, 0, 0, -837,
4898 -837, -837, -837, 0, 0, -837, 0, 0, 0, 0,
4899 -837, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4900 0, 0, 0, 0, -837, 0, 0, -837, 0, 0,
4901 0, 0, 0, 0, 0, 0, 0, 0, 0, -837,
4902 -837, -837, -837, -837, -837, -837, -837, -837, -837, -837,
4903 -837, 0, 0, 0, 0, -837, -837, -837, -837, -837,
4904 -838, 0, -837, -837, -837, 0, 0, 0, -838, -838,
4905 -838, 0, 0, -838, -838, -838, 0, -838, 0, 0,
4906 0, 0, 0, 0, 0, -838, -838, -838, -838, -838,
4907 0, 0, 0, 0, 0, 0, 0, -838, -838, 0,
4908 -838, -838, -838, -838, -838, 0, 0, 0, 0, 0,
4909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4910 0, 0, 0, 0, 0, 0, 0, 0, -838, -838,
4911 0, 0, 0, 0, 0, 0, 0, 0, -838, -838,
4912 -838, -838, -838, -838, -838, -838, -838, -838, -838, -838,
4913 -838, 0, 0, 0, 0, -838, -838, -838, -838, 0,
4914 0, -838, 0, 0, 0, 0, -838, 0, 0, 0,
4915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4916 -838, 0, 0, -838, 0, 0, 0, 0, 0, 0,
4917 0, 0, 0, 0, 0, -838, -838, -838, -838, -838,
4918 -838, -838, -838, -838, -838, -838, -838, 0, 0, 0,
4919 0, -838, -838, -838, -838, -838, -514, 0, -838, -838,
4920 -838, 0, 0, 0, -514, -514, -514, 0, 0, -514,
4921 -514, -514, 0, -514, 0, 0, 0, 0, 0, 0,
4922 0, -514, -514, -514, -514, 0, 0, 0, 0, 0,
4923 0, 0, 0, -514, -514, 0, -514, -514, -514, -514,
4924 -514, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4926 0, 0, 0, 0, -514, -514, 0, 0, 0, 0,
4927 0, 0, 0, 0, -514, -514, -514, -514, -514, -514,
4928 -514, -514, -514, -514, -514, -514, -514, 0, 0, 0,
4929 0, -514, -514, -514, -514, 0, 0, -514, 0, 0,
4930 0, 0, -514, 0, 0, 0, 0, 0, 0, 0,
4931 0, 0, 0, 0, 0, 0, -514, 0, 0, 0,
4932 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4933 0, -514, 0, -514, -514, -514, -514, -514, -514, -514,
4934 -514, -514, -514, 0, 0, 0, 0, -514, -514, -514,
4935 -514, -514, -350, 255, -514, -514, -514, 0, 0, 0,
4936 -350, -350, -350, 0, 0, -350, -350, -350, 0, -350,
4937 0, 0, 0, 0, 0, 0, 0, -350, 0, -350,
4938 -350, -350, 0, 0, 0, 0, 0, 0, 0, -350,
4939 -350, 0, -350, -350, -350, -350, -350, 0, 0, 0,
4940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4942 -350, -350, 0, 0, 0, 0, 0, 0, 0, 0,
4943 -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
4944 -350, -350, -350, 0, 0, 0, 0, -350, -350, -350,
4945 -350, 0, 0, -350, 0, 0, 0, 0, -350, 0,
4946 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4947 0, 0, -350, 0, 0, -350, 0, 0, 0, 0,
4948 0, 0, 0, 0, 0, 0, 0, -350, -350, -350,
4949 -350, -350, -350, -350, -350, -350, -350, -350, -350, 0,
4950 0, 0, 0, 0, -350, -350, -350, -350, -854, 0,
4951 -350, -350, -350, 0, 0, 0, -854, -854, -854, 0,
4952 0, -854, -854, -854, 0, -854, 0, 0, 0, 0,
4953 0, 0, 0, -854, -854, -854, -854, 0, 0, 0,
4954 0, 0, 0, 0, 0, -854, -854, 0, -854, -854,
4955 -854, -854, -854, 0, 0, 0, 0, 0, 0, 0,
4956 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4957 0, 0, 0, 0, 0, 0, -854, -854, 0, 0,
4958 0, 0, 0, 0, 0, 0, -854, -854, -854, -854,
4959 -854, -854, -854, -854, -854, -854, -854, -854, -854, 0,
4960 0, 0, 0, -854, -854, -854, -854, 0, 0, -854,
4961 0, 0, 0, 0, -854, 0, 0, 0, 0, 0,
4962 0, 0, 0, 0, 0, 0, 0, 0, -854, 0,
4963 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4964 0, 0, 0, -854, 0, -854, -854, -854, -854, -854,
4965 -854, -854, -854, -854, -854, 0, 0, 0, 0, -854,
4966 -854, -854, -854, -854, -356, 255, -854, -854, -854, 0,
4967 0, 0, -356, -356, -356, 0, 0, -356, -356, -356,
4968 0, -356, 0, 0, 0, 0, 0, 0, 0, -356,
4969 0, -356, -356, 0, 0, 0, 0, 0, 0, 0,
4970 0, -356, -356, 0, -356, -356, -356, -356, -356, 0,
4971 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4972 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4973 0, 0, -356, -356, 0, 0, 0, 0, 0, 0,
4974 0, 0, -356, -356, -356, -356, -356, -356, -356, -356,
4975 -356, -356, -356, -356, -356, 0, 0, 0, 0, -356,
4976 -356, -356, -356, 0, 886, -356, 0, 0, 0, 0,
4977 -356, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4978 0, 0, 0, 0, -356, 0, 0, 0, 0, 0,
4979 0, 0, 0, 0, 0, 0, 0, 0, -147, -356,
4980 0, -356, -356, -356, -356, -356, -356, -356, -356, -356,
4981 -356, 0, 0, 0, 0, 829, -356, -356, -356, -356,
4982 -363, 0, -356, -356, -356, 0, 0, 0, -363, -363,
4983 -363, 0, 0, -363, -363, -363, 0, -363, 0, 0,
4984 0, 0, 0, 0, 0, -363, 0, -363, -363, 0,
4985 0, 0, 0, 0, 0, 0, 0, -363, -363, 0,
4986 -363, -363, -363, -363, -363, 0, 0, 0, 0, 0,
4987 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4988 0, 0, 0, 0, 0, 0, 0, 0, -363, -363,
4989 0, 0, 0, 0, 0, 0, 0, 0, -363, -363,
4990 -363, -363, -363, -363, -363, -363, -363, -363, -363, -363,
4991 -363, 0, 0, 0, 0, -363, -363, -363, -363, 0,
4992 0, -363, 0, 0, 0, 0, -363, 0, 0, 0,
4993 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4994 -363, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4995 0, 0, 0, 0, 0, -363, 0, -363, -363, -363,
4996 -363, -363, -363, -363, -363, -363, -363, 0, 0, 0,
4997 0, 0, -363, -363, -363, -363, -836, 451, -363, -363,
4998 -363, 0, 0, 0, -836, -836, -836, 0, 0, 0,
4999 -836, -836, 0, -836, 0, 0, 0, 0, 0, 0,
5000 0, -836, -836, 0, 0, 0, 0, 0, 0, 0,
5001 0, 0, 0, -836, -836, 0, -836, -836, -836, -836,
5002 -836, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5004 0, 0, 0, 0, -836, -836, 0, 0, 0, 0,
5005 0, 0, 0, 0, -836, -836, -836, -836, -836, -836,
5006 -836, -836, -836, -836, -836, -836, -836, 0, 0, 0,
5007 0, -836, -836, -836, -836, 0, 827, -836, 0, 0,
5008 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5009 0, 0, 0, 0, 0, 0, -836, 0, 0, 0,
5010 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5011 -146, -836, 0, -836, -836, -836, -836, -836, -836, -836,
5012 -836, -836, -836, 0, 0, 0, 0, -836, -836, -836,
5013 -836, -137, -836, 0, -836, 0, -836, 0, 0, 0,
5014 -836, -836, -836, 0, 0, 0, -836, -836, 0, -836,
5015 0, 0, 0, 0, 0, 0, 0, -836, -836, 0,
5016 0, 0, 0, 0, 0, 0, 0, 0, 0, -836,
5017 -836, 0, -836, -836, -836, -836, -836, 0, 0, 0,
5018 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5020 -836, -836, 0, 0, 0, 0, 0, 0, 0, 0,
5021 -836, -836, -836, -836, -836, -836, -836, -836, -836, -836,
5022 -836, -836, -836, 0, 0, 0, 0, -836, -836, -836,
5023 -836, 0, 827, -836, 0, 0, 0, 0, 0, 0,
5024 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5025 0, 0, -836, 0, 0, 0, 0, 0, 0, 0,
5026 0, 0, 0, 0, 0, 0, -146, -836, 0, -836,
5027 -836, -836, -836, -836, -836, -836, -836, -836, -836, 0,
5028 0, 0, 0, -836, -836, -836, -836, -836, -356, 0,
5029 -836, 0, -836, 0, 0, 0, -356, -356, -356, 0,
5030 0, 0, -356, -356, 0, -356, 0, 0, 0, 0,
5031 0, 0, 0, -356, 0, 0, 0, 0, 0, 0,
5032 0, 0, 0, 0, 0, -356, -356, 0, -356, -356,
5033 -356, -356, -356, 0, 0, 0, 0, 0, 0, 0,
5034 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5035 0, 0, 0, 0, 0, 0, -356, -356, 0, 0,
5036 0, 0, 0, 0, 0, 0, -356, -356, -356, -356,
5037 -356, -356, -356, -356, -356, -356, -356, -356, -356, 0,
5038 0, 0, 0, -356, -356, -356, -356, 0, 828, -356,
5039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5040 0, 0, 0, 0, 0, 0, 0, 0, -356, 0,
5041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5042 0, 0, -147, -356, 0, -356, -356, -356, -356, -356,
5043 -356, -356, -356, -356, -356, 0, 0, 0, 0, 829,
5044 -356, -356, -356, -138, -356, 0, -356, 0, -356, 0,
5045 0, 0, -356, -356, -356, 0, 0, 0, -356, -356,
5046 0, -356, 0, 0, 0, 0, 0, 0, 0, -356,
5047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5048 0, -356, -356, 0, -356, -356, -356, -356, -356, 0,
5049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5050 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5051 0, 0, -356, -356, 0, 0, 0, 0, 0, 0,
5052 0, 0, -356, -356, -356, -356, -356, -356, -356, -356,
5053 -356, -356, -356, -356, -356, 0, 0, 0, 0, -356,
5054 -356, -356, -356, 0, 828, -356, 0, 0, 0, 0,
5055 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5056 0, 0, 0, 0, -356, 0, 0, 0, 0, 0,
5057 0, 0, 0, 0, 0, 0, 0, 0, -147, -356,
5058 0, -356, -356, -356, -356, -356, -356, -356, -356, -356,
5059 -356, 0, 0, 0, 0, 829, -356, -356, -356, -356,
5060 0, 0, -356, 3, -356, 4, 5, 6, 7, 8,
5061 -854, -854, -854, 9, 10, 0, 0, -854, 11, 0,
5062 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5063 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5064 0, 26, 0, 0, 0, 0, 0, 27, 28, 284,
5065 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5066 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5067 -854, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5069 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5070 0, 51, 0, 0, 52, 53, 54, 55, 0, 56,
5071 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5072 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5073 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5074 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
5075 67, 68, 0, 0, 0, 3, -854, 4, 5, 6,
5076 7, 8, -854, 0, -854, 9, 10, 0, -854, -854,
5077 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5078 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5079 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5080 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
5081 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5082 0, 0, -854, 0, 0, 0, 0, 0, 0, 0,
5083 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5084 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5085 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5086 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5087 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5088 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5089 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5090 0, 66, 67, 68, 0, 0, 0, 3, -854, 4,
5091 5, 6, 7, 8, -854, 0, -854, 9, 10, 0,
5092 0, -854, 11, -854, 12, 13, 14, 15, 16, 17,
5093 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
5094 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
5095 0, 27, 28, 284, 30, 31, 32, 33, 34, 35,
5096 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5097 45, 46, 0, 0, -854, 0, 0, 0, 0, 0,
5098 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5099 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5100 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
5101 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
5102 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
5103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5105 0, 0, 0, 66, 67, 68, 0, 0, 0, 3,
5106 -854, 4, 5, 6, 7, 8, -854, 0, -854, 9,
5107 10, 0, 0, -854, 11, 0, 12, 13, 14, 15,
5108 16, 17, 18, -854, 0, 0, 0, 0, 19, 20,
5109 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
5110 0, 0, 0, 27, 28, 284, 30, 31, 32, 33,
5111 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
5112 43, 44, 45, 46, 0, 0, -854, 0, 0, 0,
5113 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
5114 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
5115 50, 0, 0, 0, 0, 0, 0, 51, 0, 0,
5116 52, 53, 54, 55, 0, 56, 0, 0, 57, 58,
5117 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
5118 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5119 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5120 0, 0, 0, 0, 0, 66, 67, 68, 0, 0,
5121 0, 3, -854, 4, 5, 6, 7, 8, -854, 0,
5122 -854, 9, 10, 0, 0, -854, 11, 0, 12, 13,
5123 14, 15, 16, 17, 18, 0, 0, 0, 0, 0,
5124 19, 20, 21, 22, 23, 24, 25, 0, 0, 26,
5125 0, 0, 0, 0, 0, 27, 28, 284, 30, 31,
5126 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
5127 41, 42, 43, 44, 45, 46, 0, 0, -854, 0,
5128 0, 0, 0, 0, 0, 0, 47, 48, 0, 0,
5129 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5130 0, 49, 50, 0, 0, 0, 0, 0, 0, 51,
5131 0, 0, 52, 53, 54, 55, 0, 56, 0, 0,
5132 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5133 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5134 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5135 0, 0, 0, 0, 0, 0, 0, 66, 67, 68,
5136 0, 0, 0, 3, -854, 4, 5, 6, 7, 8,
5137 -854, -854, -854, 9, 10, 0, 0, 0, 11, 0,
5138 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5139 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5140 0, 26, 0, 0, 0, 0, 0, 27, 28, 284,
5141 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5142 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5143 -854, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5144 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5145 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5146 0, 51, 0, 0, 52, 53, 54, 55, 0, 56,
5147 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5148 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5149 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5150 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
5151 67, 68, 0, 0, 0, 3, -854, 4, 5, 6,
5152 7, 8, -854, 0, -854, 9, 10, 0, 0, 0,
5153 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5154 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5155 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5156 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
5157 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5158 0, 0, -854, 0, 0, 0, 0, 0, 0, 0,
5159 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5160 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5161 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5162 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5163 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5164 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5165 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5166 0, 66, 67, 68, 0, 0, 0, 3, -854, 4,
5167 5, 6, 7, 8, -854, 0, 0, 9, 10, 0,
5168 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
5169 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
5170 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
5171 0, 27, 28, 284, 30, 31, 32, 33, 34, 35,
5172 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5173 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5174 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5175 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5176 0, 0, 0, 0, 0, 51, 0, 0, 285, 53,
5177 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
5178 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
5179 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5180 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5181 0, 0, 0, 66, 67, 68, 0, 0, 0, 0,
5182 -854, 0, 0, 0, -854, 3, -854, 4, 5, 6,
5183 7, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5184 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5185 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5186 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5187 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
5188 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5190 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5191 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5192 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5193 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5194 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5195 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5196 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5197 0, 66, 67, 68, 0, 0, 0, 0, -854, 0,
5198 0, 0, -854, 3, -854, 4, 5, 6, 7, 8,
5199 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5200 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5201 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5202 0, 26, 0, 0, 0, 0, 0, 27, 28, 29,
5203 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5204 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5205 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5207 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5208 0, 51, 0, 0, 52, 53, 54, 55, 0, 56,
5209 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5210 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5212 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
5213 67, 68, 0, 0, -854, 3, -854, 4, 5, 6,
5214 7, 8, -854, 0, 0, 9, 10, 0, 0, 0,
5215 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5216 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5217 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5218 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
5219 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5220 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5221 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5222 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5223 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5224 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5225 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5226 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5227 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5228 0, 66, 67, 68, 0, 0, -854, 404, -854, 4,
5229 5, 6, 0, 8, -854, 0, 0, 9, 10, 0,
5230 0, 0, 11, -3, 12, 13, 14, 15, 16, 17,
5231 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
5232 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
5233 0, 0, 28, 0, 0, 31, 32, 33, 34, 35,
5234 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5235 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5236 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5237 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5238 0, 0, 0, 0, 0, 229, 0, 0, 230, 53,
5239 54, 55, 0, 0, 0, 0, 57, 58, 59, 60,
5240 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
5241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5243 0, 0, 0, 66, 67, 68, 0, 0, 0, 0,
5244 331, 0, 0, 0, 0, 0, 332, 144, 145, 146,
5245 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
5246 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
5247 167, 0, 0, 0, 168, 169, 170, 434, 435, 436,
5248 437, 175, 176, 177, 0, 0, 0, 0, 0, 178,
5249 179, 180, 181, 438, 439, 440, 441, 186, 36, 37,
5250 442, 39, 0, 0, 0, 0, 0, 0, 0, 0,
5251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5252 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
5253 0, 197, 198, 0, 0, 0, 0, 199, 200, 201,
5254 202, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5255 0, 203, 204, 0, 0, 0, 0, 0, 0, 0,
5256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5258 0, 205, 206, 207, 208, 209, 210, 211, 212, 213,
5259 214, 0, 215, 216, 0, 0, 0, 0, 0, 0,
5260 217, 443, 144, 145, 146, 147, 148, 149, 150, 151,
5261 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
5262 162, 163, 164, 165, 166, 167, 0, 0, 0, 168,
5263 169, 170, 171, 172, 173, 174, 175, 176, 177, 0,
5264 0, 0, 0, 0, 178, 179, 180, 181, 182, 183,
5265 184, 185, 186, 36, 37, 187, 39, 0, 0, 0,
5266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5267 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5268 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5269 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5270 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5273 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5274 209, 210, 211, 212, 213, 214, 0, 215, 216, 0,
5275 0, 0, 0, 0, 0, 217, 144, 145, 146, 147,
5276 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
5277 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
5278 0, 0, 0, 168, 169, 170, 171, 172, 173, 174,
5279 175, 176, 177, 0, 0, 0, 0, 0, 178, 179,
5280 180, 181, 182, 183, 184, 185, 186, 262, 0, 187,
5281 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5282 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5283 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5284 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5285 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5286 203, 204, 0, 0, 58, 0, 0, 0, 0, 0,
5287 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5288 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5289 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5290 0, 215, 216, 0, 0, 0, 0, 0, 0, 217,
5291 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
5292 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
5293 164, 165, 166, 167, 0, 0, 0, 168, 169, 170,
5294 171, 172, 173, 174, 175, 176, 177, 0, 0, 0,
5295 0, 0, 178, 179, 180, 181, 182, 183, 184, 185,
5296 186, 0, 0, 187, 0, 0, 0, 0, 0, 0,
5297 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5298 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5299 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5300 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5301 0, 0, 0, 0, 203, 204, 0, 0, 58, 0,
5302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5304 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5305 211, 212, 213, 214, 0, 215, 216, 0, 0, 0,
5306 0, 0, 0, 217, 144, 145, 146, 147, 148, 149,
5307 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
5308 160, 161, 162, 163, 164, 165, 166, 167, 0, 0,
5309 0, 168, 169, 170, 171, 172, 173, 174, 175, 176,
5310 177, 0, 0, 0, 0, 0, 178, 179, 180, 181,
5311 182, 183, 184, 185, 186, 0, 0, 187, 0, 0,
5312 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5313 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5314 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5315 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5316 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5317 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5318 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5319 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5320 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5321 216, 4, 5, 6, 0, 8, 0, 217, 0, 9,
5322 10, 0, 0, 0, 11, 0, 12, 13, 14, 270,
5323 271, 17, 18, 0, 0, 0, 0, 0, 19, 20,
5324 272, 22, 23, 24, 25, 0, 0, 227, 0, 0,
5325 0, 0, 0, 0, 302, 0, 0, 31, 32, 33,
5326 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
5327 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
5328 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5329 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5330 0, 0, 0, 0, 0, 0, 0, 303, 0, 0,
5331 230, 53, 54, 55, 0, 0, 0, 0, 57, 58,
5332 59, 60, 61, 62, 63, 64, 65, 0, 0, 4,
5333 5, 6, 0, 8, 0, 0, 0, 9, 10, 0,
5334 0, 0, 11, 0, 12, 13, 14, 270, 271, 17,
5335 18, 0, 0, 0, 0, 304, 19, 20, 272, 22,
5336 23, 24, 25, 305, 0, 227, 0, 0, 0, 0,
5337 0, 0, 302, 0, 0, 31, 32, 33, 34, 35,
5338 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5339 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5340 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5341 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5342 0, 0, 0, 0, 0, 303, 0, 0, 230, 53,
5343 54, 55, 0, 0, 0, 0, 57, 58, 59, 60,
5344 61, 62, 63, 64, 65, 0, 0, 4, 5, 6,
5345 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5346 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5347 0, 0, 0, 304, 19, 20, 21, 22, 23, 24,
5348 25, 612, 0, 227, 0, 0, 0, 0, 0, 0,
5349 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5350 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5352 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5353 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5354 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5355 0, 231, 232, 233, 57, 58, 234, 60, 61, 62,
5356 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5358 0, 0, 0, 0, 0, 0, 4, 5, 6, 0,
5359 8, 66, 235, 68, 9, 10, 0, 0, 259, 11,
5360 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5361 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
5362 0, 0, 26, 0, 0, 0, 0, 0, 0, 28,
5363 0, 0, 31, 32, 33, 34, 35, 36, 37, 38,
5364 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5365 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
5366 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5367 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5368 0, 0, 229, 0, 0, 230, 53, 54, 55, 0,
5369 0, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5370 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5371 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5372 0, 0, 0, 3, 0, 4, 5, 6, 7, 8,
5373 66, 67, 68, 9, 10, 0, 0, 259, 11, 0,
5374 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5375 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5376 0, 26, 0, 0, 0, 0, 0, 27, 28, 0,
5377 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5378 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5379 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5380 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5381 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5382 0, 51, 0, 0, 52, 53, 54, 55, 0, 56,
5383 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5384 65, 0, 0, 404, 0, 4, 5, 6, 0, 8,
5385 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5386 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5387 67, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5388 0, 26, 0, 0, 0, 0, 0, 0, 28, 0,
5389 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5390 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5391 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5393 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5394 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5395 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5396 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5397 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5398 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5399 67, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5400 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5401 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5402 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5403 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5404 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5405 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5406 0, 229, 0, 0, 230, 53, 54, 55, 0, 231,
5407 232, 233, 57, 58, 234, 60, 61, 62, 63, 64,
5408 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5409 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5410 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5411 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5412 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5413 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5414 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5415 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5417 0, 0, 0, 49, 479, 0, 0, 0, 0, 0,
5418 0, 229, 0, 0, 230, 53, 54, 55, 0, 231,
5419 232, 233, 57, 58, 234, 60, 61, 62, 63, 64,
5420 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5421 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5422 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5423 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5424 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5425 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5426 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5427 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5429 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5430 0, 229, 0, 0, 230, 53, 54, 55, 0, 231,
5431 232, 233, 57, 58, 234, 60, 61, 62, 63, 64,
5432 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5433 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5434 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5435 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5436 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5437 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5438 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5439 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5441 0, 0, 0, 49, 479, 0, 0, 0, 0, 0,
5442 0, 229, 0, 0, 230, 53, 54, 55, 0, 231,
5443 232, 233, 57, 58, 234, 60, 61, 62, 63, 64,
5444 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5445 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5446 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5447 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5448 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5449 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5450 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5451 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5452 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5453 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5454 0, 229, 0, 0, 230, 53, 54, 55, 0, 231,
5455 232, 0, 57, 58, 234, 60, 61, 62, 63, 64,
5456 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5457 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5458 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5459 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5460 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5461 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5462 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5463 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5464 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5465 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5466 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5467 232, 233, 57, 58, 234, 60, 61, 62, 63, 64,
5468 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5469 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5470 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5471 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5472 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5473 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5474 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5475 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5476 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5477 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5478 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5479 232, 0, 57, 58, 234, 60, 61, 62, 63, 64,
5480 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5481 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5482 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5483 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5484 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5485 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5486 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5487 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5488 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5489 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5490 0, 229, 0, 0, 230, 53, 54, 55, 0, 802,
5491 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5492 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5493 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5494 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5495 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5496 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5497 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5498 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5499 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5500 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5501 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5502 0, 813, 0, 0, 230, 53, 54, 55, 0, 802,
5503 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5504 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5505 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5506 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5507 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5508 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5509 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5510 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5511 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5512 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5513 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5514 0, 229, 0, 0, 230, 53, 54, 55, 0, 973,
5515 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5516 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5517 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5518 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5519 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5520 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5521 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5522 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5523 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5524 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5525 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5526 0, 229, 0, 0, 230, 53, 54, 55, 0, 1022,
5527 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5528 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5529 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5530 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5531 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5532 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5533 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5534 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5535 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5536 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5537 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5538 0, 229, 0, 0, 230, 53, 54, 55, 0, 802,
5539 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5540 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5541 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5542 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5543 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5544 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5545 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5546 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5547 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5549 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5550 0, 229, 0, 0, 230, 53, 54, 55, 0, 1155,
5551 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5552 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5553 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5554 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5555 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5556 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5557 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5558 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5559 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5561 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5562 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5563 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5564 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5565 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5566 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5567 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5568 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5569 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5570 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5571 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5573 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5574 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5575 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5576 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5577 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5578 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5579 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5580 0, 26, 0, 0, 0, 0, 0, 0, 28, 0,
5581 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5582 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5583 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5584 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5585 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5586 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5587 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5588 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5589 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5590 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5591 67, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5592 0, 784, 0, 0, 0, 0, 0, 0, 28, 0,
5593 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5594 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5595 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5596 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5597 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5598 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5599 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5600 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5601 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5602 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5603 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5604 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5605 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5606 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5607 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5608 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5609 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5610 0, 813, 0, 0, 230, 53, 54, 55, 0, 0,
5611 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5612 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5613 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5614 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5615 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5616 0, 893, 0, 0, 0, 0, 0, 0, 28, 0,
5617 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5618 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5619 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5620 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5621 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5622 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5623 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5624 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5625 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5626 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5627 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5628 0, 227, 0, 0, 0, 0, 0, 0, 302, 0,
5629 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5630 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5633 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5634 0, 303, 0, 0, 363, 53, 54, 55, 0, 364,
5635 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5636 65, 0, 0, 4, 5, 6, 0, 8, 0, 0,
5637 0, 9, 10, 0, 0, 0, 11, 0, 12, 13,
5638 14, 270, 271, 17, 18, 0, 0, 0, 0, 304,
5639 19, 20, 272, 22, 23, 24, 25, 0, 0, 227,
5640 0, 0, 0, 0, 0, 0, 302, 0, 0, 31,
5641 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
5642 41, 42, 43, 44, 45, 46, 0, 0, 0, 0,
5643 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5644 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5645 0, 0, 0, 0, 0, 0, 0, 0, 0, 415,
5646 0, 0, 52, 53, 54, 55, 0, 56, 0, 0,
5647 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5648 0, 4, 5, 6, 0, 8, 0, 0, 0, 9,
5649 10, 0, 0, 0, 11, 0, 12, 13, 14, 270,
5650 271, 17, 18, 0, 0, 0, 0, 304, 19, 20,
5651 272, 22, 23, 24, 25, 0, 0, 227, 0, 0,
5652 0, 0, 0, 0, 302, 0, 0, 31, 32, 33,
5653 423, 35, 36, 37, 424, 39, 0, 40, 41, 42,
5654 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
5655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5656 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5657 0, 0, 0, 425, 0, 0, 0, 426, 0, 0,
5658 230, 53, 54, 55, 0, 0, 0, 0, 57, 58,
5659 59, 60, 61, 62, 63, 64, 65, 0, 0, 4,
5660 5, 6, 0, 8, 0, 0, 0, 9, 10, 0,
5661 0, 0, 11, 0, 12, 13, 14, 270, 271, 17,
5662 18, 0, 0, 0, 0, 304, 19, 20, 272, 22,
5663 23, 24, 25, 0, 0, 227, 0, 0, 0, 0,
5664 0, 0, 302, 0, 0, 31, 32, 33, 423, 35,
5665 36, 37, 424, 39, 0, 40, 41, 42, 43, 44,
5666 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5667 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5668 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5669 0, 0, 0, 0, 0, 426, 0, 0, 230, 53,
5670 54, 55, 0, 0, 0, 0, 57, 58, 59, 60,
5671 61, 62, 63, 64, 65, 0, 0, 4, 5, 6,
5672 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5673 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5674 0, 0, 0, 304, 19, 20, 272, 22, 23, 24,
5675 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5676 302, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5677 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5679 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5680 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5681 0, 0, 0, 303, 0, 0, 363, 53, 54, 55,
5682 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5683 63, 64, 65, 0, 0, 4, 5, 6, 0, 8,
5684 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5685 12, 13, 14, 270, 271, 17, 18, 0, 0, 0,
5686 0, 304, 19, 20, 272, 22, 23, 24, 25, 0,
5687 0, 227, 0, 0, 0, 0, 0, 0, 302, 0,
5688 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5689 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5690 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5691 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5692 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5693 0, 1221, 0, 0, 230, 53, 54, 55, 0, 0,
5694 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5695 65, 0, 0, 4, 5, 6, 0, 8, 0, 0,
5696 0, 9, 10, 0, 0, 0, 11, 0, 12, 13,
5697 14, 270, 271, 17, 18, 0, 0, 0, 0, 304,
5698 19, 20, 272, 22, 23, 24, 25, 0, 0, 227,
5699 0, 0, 0, 0, 0, 0, 302, 0, 0, 31,
5700 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
5701 41, 42, 43, 44, 45, 46, 0, 0, 0, 0,
5702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5703 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5704 0, 0, 0, 0, 0, 0, 704, 643, 0, 1344,
5705 705, 0, 230, 53, 54, 55, 0, 0, 0, 0,
5706 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5707 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
5708 0, 197, 198, 0, 0, 0, 0, 199, 200, 201,
5709 202, 0, 0, 0, 0, 0, 0, 304, 0, 0,
5710 0, 203, 204, 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, 0, 0, 0, 0,
5713 0, 205, 206, 207, 208, 209, 210, 211, 212, 213,
5714 214, 0, 215, 216, 707, 651, 0, 0, 708, 0,
5715 217, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5716 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
5717 190, 191, 192, 193, 194, 195, 196, 0, 0, 197,
5718 198, 0, 0, 0, 0, 199, 200, 201, 202, 0,
5719 0, 0, 0, 0, 0, 0, 0, 0, 0, 203,
5720 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5721 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5722 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
5723 206, 207, 208, 209, 210, 211, 212, 213, 214, 0,
5724 215, 216, 704, 643, 0, 0, 724, 0, 217, 0,
5725 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5726 0, 0, 0, 0, 0, 0, 188, 189, 190, 191,
5727 192, 193, 194, 195, 196, 0, 0, 197, 198, 0,
5728 0, 0, 0, 199, 200, 201, 202, 0, 0, 0,
5729 0, 0, 0, 0, 0, 0, 0, 203, 204, 0,
5730 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5731 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5732 0, 0, 0, 0, 0, 0, 0, 205, 206, 207,
5733 208, 209, 210, 211, 212, 213, 214, 0, 215, 216,
5734 735, 643, 0, 0, 736, 0, 217, 0, 0, 0,
5735 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5736 0, 0, 0, 0, 188, 189, 190, 191, 192, 193,
5737 194, 195, 196, 0, 0, 197, 198, 0, 0, 0,
5738 0, 199, 200, 201, 202, 0, 0, 0, 0, 0,
5739 0, 0, 0, 0, 0, 203, 204, 0, 0, 0,
5740 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5741 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5742 0, 0, 0, 0, 0, 205, 206, 207, 208, 209,
5743 210, 211, 212, 213, 214, 0, 215, 216, 738, 651,
5744 0, 0, 739, 0, 217, 0, 0, 0, 0, 0,
5745 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5746 0, 0, 188, 189, 190, 191, 192, 193, 194, 195,
5747 196, 0, 0, 197, 198, 0, 0, 0, 0, 199,
5748 200, 201, 202, 0, 0, 0, 0, 0, 0, 0,
5749 0, 0, 0, 203, 204, 0, 0, 0, 0, 0,
5750 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5752 0, 0, 0, 205, 206, 207, 208, 209, 210, 211,
5753 212, 213, 214, 0, 215, 216, 857, 643, 0, 0,
5754 858, 0, 217, 0, 0, 0, 0, 0, 0, 0,
5755 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5756 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
5757 0, 197, 198, 0, 0, 0, 0, 199, 200, 201,
5758 202, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5759 0, 203, 204, 0, 0, 0, 0, 0, 0, 0,
5760 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5761 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5762 0, 205, 206, 207, 208, 209, 210, 211, 212, 213,
5763 214, 0, 215, 216, 860, 651, 0, 0, 861, 0,
5764 217, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5765 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
5766 190, 191, 192, 193, 194, 195, 196, 0, 0, 197,
5767 198, 0, 0, 0, 0, 199, 200, 201, 202, 0,
5768 0, 0, 0, 0, 0, 0, 0, 0, 0, 203,
5769 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5770 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5771 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
5772 206, 207, 208, 209, 210, 211, 212, 213, 214, 0,
5773 215, 216, 866, 643, 0, 0, 867, 0, 217, 0,
5774 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5775 0, 0, 0, 0, 0, 0, 188, 189, 190, 191,
5776 192, 193, 194, 195, 196, 0, 0, 197, 198, 0,
5777 0, 0, 0, 199, 200, 201, 202, 0, 0, 0,
5778 0, 0, 0, 0, 0, 0, 0, 203, 204, 0,
5779 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5781 0, 0, 0, 0, 0, 0, 0, 205, 206, 207,
5782 208, 209, 210, 211, 212, 213, 214, 0, 215, 216,
5783 689, 651, 0, 0, 690, 0, 217, 0, 0, 0,
5784 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5785 0, 0, 0, 0, 188, 189, 190, 191, 192, 193,
5786 194, 195, 196, 0, 0, 197, 198, 0, 0, 0,
5787 0, 199, 200, 201, 202, 0, 0, 0, 0, 0,
5788 0, 0, 0, 0, 0, 203, 204, 0, 0, 0,
5789 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5790 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5791 0, 0, 0, 0, 0, 205, 206, 207, 208, 209,
5792 210, 211, 212, 213, 214, 0, 215, 216, 1028, 643,
5793 0, 0, 1029, 0, 217, 0, 0, 0, 0, 0,
5794 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5795 0, 0, 188, 189, 190, 191, 192, 193, 194, 195,
5796 196, 0, 0, 197, 198, 0, 0, 0, 0, 199,
5797 200, 201, 202, 0, 0, 0, 0, 0, 0, 0,
5798 0, 0, 0, 203, 204, 0, 0, 0, 0, 0,
5799 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5800 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5801 0, 0, 0, 205, 206, 207, 208, 209, 210, 211,
5802 212, 213, 214, 0, 215, 216, 1031, 651, 0, 0,
5803 1032, 0, 217, 0, 0, 0, 0, 0, 0, 0,
5804 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5805 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
5806 0, 197, 198, 0, 0, 0, 0, 199, 200, 201,
5807 202, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5808 0, 203, 204, 0, 0, 0, 0, 0, 0, 0,
5809 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5810 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5811 0, 205, 206, 207, 208, 209, 210, 211, 212, 213,
5812 214, 0, 215, 216, 1363, 643, 0, 0, 1364, 0,
5813 217, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5814 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
5815 190, 191, 192, 193, 194, 195, 196, 0, 0, 197,
5816 198, 0, 0, 0, 0, 199, 200, 201, 202, 0,
5817 0, 0, 0, 0, 0, 0, 0, 0, 0, 203,
5818 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5819 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5820 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
5821 206, 207, 208, 209, 210, 211, 212, 213, 214, 0,
5822 215, 216, 1366, 651, 0, 0, 1367, 0, 217, 0,
5823 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5824 0, 0, 0, 0, 0, 0, 188, 189, 190, 191,
5825 192, 193, 194, 195, 196, 0, 0, 197, 198, 0,
5826 0, 0, 0, 199, 200, 201, 202, 0, 0, 0,
5827 0, 0, 0, 0, 0, 0, 0, 203, 204, 0,
5828 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5829 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5830 0, 0, 0, 0, 0, 0, 0, 205, 206, 207,
5831 208, 209, 210, 211, 212, 213, 214, 0, 215, 216,
5832 1420, 643, 0, 0, 1421, 0, 217, 0, 0, 0,
5833 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5834 0, 0, 0, 0, 188, 189, 190, 191, 192, 193,
5835 194, 195, 196, 0, 0, 197, 198, 0, 0, 0,
5836 0, 199, 200, 201, 202, 0, 0, 0, 0, 0,
5837 0, 0, 0, 0, 0, 203, 204, 0, 0, 0,
5838 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5839 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5840 0, 0, 0, 0, 0, 205, 206, 207, 208, 209,
5841 210, 211, 212, 213, 214, 0, 215, 216, 0, 0,
5845static const yytype_int16 yycheck[] =
5847 1, 70, 59, 70, 7, 15, 16, 408, 56, 107,
5848 15, 16, 58, 58, 116, 52, 53, 344, 1, 101,
5849 67, 399, 349, 401, 27, 104, 400, 426, 107, 13,
5850 14, 768, 766, 115, 255, 252, 7, 27, 107, 15,
5851 16, 89, 599, 766, 949, 602, 845, 615, 601, 15,
5852 16, 52, 53, 54, 55, 58, 27, 84, 469, 477,
5853 108, 109, 110, 21, 575, 111, 601, 855, 63, 64,
5854 65, 344, 89, 911, 469, 571, 349, 455, 54, 575,
5855 296, 56, 477, 525, 300, 605, 113, 589, 54, 55,
5856 1033, 1034, 913, 595, 472, 1194, 474, 515, 766, 473,
5857 52, 512, 112, 66, 630, 25, 25, 112, 111, 1208,
5858 1034, 81, 774, 0, 103, 104, 27, 825, 107, 15,
5859 16, 1318, 774, 13, 502, 682, 84, 29, 26, 1336,
5860 69, 1, 565, 25, 285, 1194, 112, 78, 66, 768,
5861 101, 109, 1000, 69, 66, 774, 112, 25, 25, 0,
5862 528, 1210, 25, 527, 1059, 1070, 1218, 1219, 97, 98,
5863 1033, 1034, 154, 25, 81, 247, 13, 66, 25, 134,
5864 612, 30, 98, 141, 10, 25, 100, 234, 13, 100,
5865 320, 321, 52, 53, 151, 26, 56, 28, 723, 287,
5866 134, 119, 157, 230, 155, 277, 26, 119, 13, 1104,
5867 56, 1106, 69, 144, 145, 146, 1403, 1000, 1066, 1416,
5868 134, 155, 363, 134, 153, 1158, 112, 155, 287, 89,
5869 287, 123, 121, 122, 706, 124, 37, 38, 310, 230,
5870 97, 98, 68, 120, 1158, 155, 155, 157, 108, 109,
5871 110, 111, 28, 154, 245, 255, 1084, 257, 285, 160,
5872 255, 252, 257, 151, 255, 737, 1355, 305, 337, 338,
5873 339, 340, 1083, 155, 154, 266, 13, 484, 1211, 977,
5874 160, 260, 261, 1066, 1011, 1218, 1219, 155, 155, 255,
5875 679, 257, 155, 266, 285, 1158, 153, 13, 305, 1351,
5876 1349, 257, 670, 155, 1353, 669, 1355, 715, 155, 336,
5877 157, 13, 713, 681, 274, 155, 680, 154, 865, 829,
5878 157, 1216, 1217, 160, 272, 413, 364, 275, 713, 154,
5879 715, 151, 755, 756, 161, 160, 363, 157, 854, 1244,
5880 409, 609, 13, 285, 100, 336, 418, 307, 1000, 154,
5881 1255, 304, 1257, 154, 413, 160, 425, 100, 337, 338,
5882 339, 340, 335, 342, 343, 1007, 273, 274, 1157, 13,
5883 230, 257, 363, 101, 1423, 1033, 1034, 154, 134, 1157,
5884 812, 1000, 159, 410, 411, 1168, 929, 859, 1171, 657,
5885 1173, 134, 1011, 100, 831, 663, 664, 869, 13, 364,
5886 400, 157, 839, 961, 929, 400, 266, 101, 401, 400,
5887 1105, 541, 403, 543, 1066, 264, 917, 154, 1351, 410,
5888 411, 363, 34, 160, 134, 285, 154, 134, 920, 921,
5889 409, 917, 924, 834, 926, 982, 928, 428, 154, 155,
5890 52, 1168, 1166, 66, 160, 305, 425, 1066, 155, 834,
5891 13, 451, 154, 1166, 402, 157, 451, 25, 160, 34,
5892 100, 155, 455, 100, 295, 296, 152, 134, 154, 300,
5893 15, 302, 100, 473, 999, 335, 336, 52, 473, 1384,
5894 25, 474, 473, 154, 100, 451, 100, 525, 911, 160,
5895 913, 482, 615, 484, 134, 451, 703, 134, 121, 122,
5896 1158, 494, 713, 363, 364, 768, 134, 455, 1166, 502,
5897 154, 774, 361, 469, 494, 155, 160, 366, 525, 1171,
5898 134, 789, 155, 1218, 1219, 793, 732, 527, 100, 1171,
5899 1101, 1102, 527, 494, 100, 528, 527, 938, 161, 154,
5900 1323, 600, 1325, 403, 1327, 160, 1329, 69, 290, 1168,
5901 410, 411, 1171, 1211, 344, 15, 512, 17, 1030, 349,
5902 1218, 1219, 134, 1182, 154, 451, 134, 157, 134, 98,
5903 693, 694, 58, 610, 612, 97, 98, 945, 615, 947,
5904 112, 554, 946, 155, 975, 853, 154, 155, 856, 997,
5905 158, 154, 78, 1085, 1086, 1087, 1088, 160, 598, 157,
5906 1327, 601, 870, 662, 727, 612, 100, 100, 599, 458,
5907 459, 602, 997, 1402, 744, 56, 66, 67, 467, 749,
5908 134, 1334, 108, 109, 153, 1408, 475, 476, 157, 646,
5909 69, 153, 659, 1105, 661, 157, 101, 654, 25, 1186,
5910 134, 134, 1213, 1214, 610, 100, 495, 794, 508, 615,
5911 797, 25, 693, 694, 503, 141, 693, 694, 649, 98,
5912 1083, 1084, 1053, 654, 78, 525, 155, 69, 659, 669,
5913 661, 121, 122, 155, 669, 692, 1334, 670, 669, 134,
5914 680, 1323, 25, 1000, 891, 680, 727, 34, 681, 680,
5915 727, 682, 100, 1351, 554, 733, 98, 78, 646, 1341,
5916 968, 692, 695, 971, 683, 52, 1182, 742, 1327, 451,
5917 978, 100, 703, 157, 1103, 695, 984, 1336, 158, 1079,
5918 1080, 1193, 1341, 157, 1196, 157, 733, 154, 142, 143,
5919 144, 145, 146, 160, 695, 726, 134, 1000, 480, 599,
5920 719, 483, 602, 69, 1216, 134, 488, 134, 1011, 1066,
5921 822, 52, 612, 159, 100, 56, 1147, 713, 69, 744,
5922 134, 746, 1254, 505, 749, 750, 155, 154, 155, 69,
5923 1412, 158, 98, 1320, 812, 154, 934, 725, 936, 158,
5924 154, 155, 874, 157, 158, 100, 97, 98, 134, 1000,
5925 100, 134, 69, 862, 1062, 864, 100, 1416, 98, 659,
5926 631, 661, 152, 1066, 863, 812, 66, 656, 1033, 1034,
5927 69, 154, 155, 83, 84, 158, 56, 648, 157, 134,
5928 97, 98, 682, 155, 134, 161, 1215, 69, 951, 952,
5929 134, 1303, 1304, 1305, 957, 958, 872, 69, 97, 98,
5930 155, 583, 153, 1267, 1235, 1269, 134, 696, 69, 78,
5931 841, 155, 843, 69, 845, 1066, 98, 106, 1334, 119,
5932 1336, 121, 122, 69, 124, 1341, 98, 137, 138, 611,
5933 1346, 37, 38, 733, 865, 706, 153, 98, 834, 872,
5934 1105, 97, 98, 862, 69, 864, 1246, 1247, 1248, 1249,
5935 1250, 97, 98, 1365, 153, 14, 15, 1122, 967, 69,
5936 891, 732, 69, 1026, 134, 1168, 737, 134, 1171, 155,
5937 951, 952, 97, 98, 951, 952, 957, 958, 1041, 1182,
5938 957, 958, 981, 52, 983, 899, 160, 56, 98, 929,
5939 69, 98, 56, 1158, 154, 155, 1412, 153, 1414, 966,
5940 1416, 1309, 1418, 25, 1308, 687, 946, 153, 69, 154,
5941 155, 946, 812, 784, 947, 946, 138, 1168, 97, 98,
5942 1171, 1437, 1173, 1387, 1388, 155, 1191, 1391, 1392, 1237,
5943 961, 1395, 26, 152, 69, 966, 97, 98, 827, 828,
5944 155, 603, 69, 1208, 69, 607, 835, 836, 967, 1026,
5945 158, 982, 134, 1218, 1219, 961, 69, 89, 90, 100,
5946 1041, 69, 97, 98, 1041, 865, 1430, 1431, 1432, 1433,
5947 97, 98, 97, 98, 153, 69, 1440, 759, 134, 1379,
5948 1380, 1381, 1382, 1349, 97, 98, 158, 1353, 859, 97,
5949 98, 1058, 153, 134, 40, 41, 885, 886, 869, 888,
5950 889, 154, 155, 97, 98, 155, 1020, 1021, 306, 307,
5951 152, 1024, 1025, 26, 155, 1082, 155, 1048, 153, 1050,
5952 54, 1108, 893, 58, 1327, 155, 153, 1058, 153, 1429,
5953 64, 65, 155, 1336, 1109, 66, 1067, 762, 1341, 1070,
5954 153, 766, 1073, 78, 155, 153, 134, 52, 1079, 1080,
5955 155, 1082, 155, 152, 943, 155, 69, 151, 155, 153,
5956 1091, 1092, 66, 157, 26, 13, 966, 956, 1146, 1377,
5957 17, 25, 1323, 108, 1325, 155, 1327, 112, 1329, 155,
5958 134, 78, 982, 44, 97, 98, 1153, 1154, 119, 871,
5959 121, 122, 1159, 124, 44, 1208, 1205, 152, 95, 96,
5960 1228, 44, 155, 78, 993, 1218, 1219, 69, 890, 44,
5961 892, 1223, 155, 1416, 56, 119, 1183, 121, 122, 1150,
5962 95, 96, 1153, 1154, 1024, 1025, 1157, 909, 1159, 1228,
5963 136, 1228, 66, 1033, 1034, 97, 98, 159, 151, 134,
5964 153, 8, 930, 931, 157, 142, 143, 144, 145, 146,
5965 15, 939, 1183, 155, 942, 1186, 944, 1408, 1058, 1030,
5966 1227, 52, 155, 155, 139, 140, 141, 142, 143, 144,
5967 145, 146, 66, 155, 155, 1242, 78, 40, 41, 42,
5968 43, 44, 1082, 155, 152, 119, 1205, 121, 122, 151,
5969 1268, 153, 66, 95, 96, 157, 1227, 155, 155, 1230,
5970 155, 1101, 1102, 1290, 101, 1105, 1315, 1316, 66, 9,
5971 155, 1242, 139, 1244, 155, 1246, 1247, 1248, 1249, 1250,
5972 52, 139, 1122, 155, 1255, 119, 1257, 121, 122, 155,
5973 1261, 155, 155, 155, 1105, 1106, 1267, 152, 1269, 141,
5974 142, 143, 144, 145, 146, 119, 1146, 121, 122, 155,
5975 1150, 155, 101, 1153, 1154, 52, 155, 56, 1158, 1159,
5976 160, 119, 1340, 121, 122, 158, 155, 52, 1308, 54,
5977 55, 56, 57, 1308, 155, 1000, 1309, 1308, 155, 1310,
5978 155, 1312, 52, 1183, 54, 55, 1186, 57, 152, 1320,
5979 1161, 1191, 139, 155, 1194, 155, 1315, 1316, 59, 60,
5980 61, 62, 155, 1370, 155, 155, 56, 55, 1208, 155,
5981 1210, 1200, 155, 1213, 1214, 1, 155, 102, 1218, 1219,
5982 155, 155, 1193, 335, 155, 1196, 155, 1227, 155, 15,
5983 16, 157, 102, 52, 157, 54, 55, 56, 57, 1370,
5984 155, 1066, 1242, 72, 504, 1216, 266, 1150, 1379, 1380,
5985 1381, 1382, 872, 1384, 508, 106, 1387, 1388, 610, 108,
5986 1391, 1392, 98, 1000, 1395, 110, 52, 53, 1268, 495,
5987 56, 1402, 692, 962, 54, 55, 981, 57, 1230, 911,
5988 755, 67, 1266, 102, 64, 65, 1334, 1287, 107, 1182,
5989 1092, 1265, 1403, 875, 1265, 1341, 359, 1287, 1429, 1430,
5990 1431, 1432, 1433, 89, 1211, 1211, 1207, 1312, 1402, 1440,
5991 52, 1310, 54, 55, 56, 57, 58, 103, 104, 119,
5992 1320, 107, 108, 109, 110, 543, 112, 111, 349, 1066,
5993 1066, 1397, 1303, 1304, 1305, 1217, 78, 1162, 115, -1,
5994 1340, 1166, -1, 1168, -1, -1, 1171, -1, 1173, 1349,
5995 92, -1, -1, 1353, -1, 1355, -1, 1182, -1, 52,
5996 102, 54, 55, 56, 57, 107, 108, 109, -1, 52,
5997 1370, 54, 55, 56, 57, -1, -1, -1, -1, -1,
5998 228, -1, -1, 231, 232, 233, -1, -1, -1, -1,
5999 -1, 1273, -1, -1, 1365, -1, -1, -1, -1, 141,
6000 -1, 1283, 144, 1374, 52, -1, 54, 55, 56, 57,
6001 58, -1, -1, -1, -1, 157, -1, 768, 1300, 1301,
6002 1302, -1, -1, 1423, -1, -1, 1397, -1, -1, 780,
6003 78, 1168, -1, -1, 1171, -1, 1173, 1, -1, -1,
6004 -1, -1, -1, -1, 230, 1182, -1, -1, 693, 694,
6005 -1, 15, 16, -1, 102, -1, -1, -1, -1, 107,
6006 108, 109, -1, -1, 709, 710, -1, -1, -1, 255,
6007 -1, 257, -1, -1, 260, 261, -1, -1, -1, -1,
6008 266, 52, 727, 54, 55, 56, 57, 58, 52, 53,
6009 -1, -1, -1, 141, -1, -1, 144, -1, 1323, 285,
6010 1325, -1, 1327, 67, 1329, -1, -1, 78, -1, 1334,
6011 -1, 1336, -1, -1, -1, -1, 1341, -1, -1, 305,
6012 -1, 1346, -1, -1, -1, -1, -1, -1, -1, -1,
6013 -1, 102, -1, -1, -1, -1, -1, 108, 109, 103,
6014 104, -1, -1, 107, -1, -1, -1, -1, 112, 335,
6015 336, 337, 338, 339, 340, -1, 342, 343, -1, -1,
6016 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6017 141, -1, -1, -1, -1, -1, -1, 363, 364, 1033,
6018 1034, -1, -1, 1408, -1, -1, 1323, 1412, 1325, 1414,
6019 1327, 1416, 1329, 1418, -1, -1, -1, -1, -1, 1336,
6020 -1, -1, -1, -1, 1341, -1, -1, -1, -1, 1346,
6021 -1, -1, 1437, -1, 400, -1, -1, 403, -1, -1,
6022 468, 469, -1, 409, 410, 411, -1, -1, -1, 477,
6023 -1, -1, -1, -1, -1, -1, -1, 882, -1, 425,
6024 -1, -1, -1, -1, -1, -1, -1, 1101, 1102, 1000,
6025 -1, 1105, -1, -1, -1, -1, -1, -1, 1009, -1,
6026 1011, -1, 1013, -1, 512, 451, 230, 515, 1122, -1,
6027 -1, 1408, -1, -1, -1, 1412, -1, 1414, -1, 1416,
6028 -1, 1418, -1, -1, -1, -1, -1, 473, -1, -1,
6029 -1, 255, -1, 257, -1, -1, 260, 261, -1, -1,
6030 1437, -1, 266, -1, 1158, -1, 951, 952, -1, -1,
6031 -1, -1, 957, 958, -1, 1066, -1, -1, -1, -1,
6032 -1, 285, 508, -1, -1, -1, -1, -1, -1, -1,
6033 -1, -1, -1, -1, -1, -1, -1, 1191, -1, 525,
6034 1194, 527, 590, -1, -1, -1, 991, 992, -1, 994,
6035 995, -1, -1, -1, 1208, -1, 1210, -1, -1, 1213,
6036 1214, -1, 610, -1, 1218, 1219, -1, 615, 554, -1,
6037 -1, 335, 336, 337, 338, 339, 340, -1, 342, 343,
6038 -1, -1, -1, -1, -1, -1, -1, 1033, 1034, -1,
6039 -1, -1, -1, -1, -1, -1, 1041, -1, -1, 363,
6040 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6041 -1, -1, 598, 599, -1, 601, 602, 1168, -1, -1,
6042 1065, -1, 1173, -1, 610, -1, 612, -1, 1179, 615,
6043 -1, 1182, -1, 1287, -1, -1, 400, -1, -1, 403,
6044 -1, -1, -1, -1, -1, 409, 410, 411, 52, 697,
6045 54, 55, 56, 57, 58, 1101, 1102, -1, -1, 1105,
6046 -1, 425, -1, -1, -1, 713, 52, 715, 54, 55,
6047 56, 57, 58, 659, 78, 661, 1122, -1, -1, -1,
6048 -1, -1, -1, 669, -1, -1, -1, 451, 92, -1,
6049 -1, -1, 78, -1, 680, 1349, 682, 683, 102, 1353,
6050 -1, 1355, -1, 107, 108, 109, 92, 693, 694, 473,
6051 -1, -1, 1158, -1, -1, -1, 102, -1, -1, -1,
6052 -1, -1, 108, 109, -1, 773, -1, -1, -1, -1,
6053 -1, -1, -1, 719, -1, -1, -1, 141, -1, -1,
6054 144, 727, -1, -1, 508, 1191, -1, 733, 1194, -1,
6055 -1, -1, -1, -1, 802, 141, -1, -1, -1, -1,
6056 -1, -1, 1208, 527, 1210, -1, -1, 1213, 1214, 1423,
6057 -1, -1, 1218, 1219, 1325, -1, 1327, -1, 1329, -1,
6058 -1, -1, -1, -1, -1, 1336, 834, -1, -1, -1,
6059 554, -1, -1, -1, -1, 1346, -1, -1, -1, -1,
6060 -1, -1, -1, -1, 852, -1, -1, -1, -1, -1,
6061 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6062 -1, -1, -1, -1, -1, -1, 812, -1, -1, -1,
6063 -1, -1, -1, -1, 598, 599, -1, 601, 602, -1,
6064 -1, 1287, -1, -1, -1, -1, 610, -1, -1, -1,
6065 -1, 615, -1, -1, -1, -1, -1, 1408, -1, -1,
6066 -1, -1, -1, 1414, -1, 1416, -1, 1418, -1, -1,
6067 -1, -1, -1, -1, -1, -1, 862, -1, 864, 865,
6068 -1, -1, -1, -1, -1, -1, 1437, 1, -1, -1,
6069 938, -1, -1, -1, -1, 659, -1, 661, -1, -1,
6070 -1, 15, 16, 1349, -1, 669, -1, 1353, -1, 1355,
6071 -1, -1, -1, 961, -1, -1, 680, -1, 682, 683,
6072 -1, -1, -1, -1, -1, 973, -1, -1, -1, 693,
6073 694, -1, -1, -1, -1, -1, -1, -1, 52, 53,
6074 -1, -1, -1, 929, -1, -1, -1, -1, -1, 997,
6075 -1, -1, -1, 67, -1, 719, -1, -1, -1, -1,
6076 946, -1, -1, 727, -1, 951, 952, -1, -1, -1,
6077 -1, 957, 958, -1, 1022, -1, -1, 1423, -1, -1,
6078 966, 967, -1, -1, -1, -1, -1, -1, -1, 103,
6079 104, -1, -1, 107, -1, -1, 982, -1, 112, 33,
6080 34, 35, 36, -1, -1, -1, -1, -1, -1, 1057,
6081 -1, -1, -1, -1, -1, 49, 50, 51, 52, -1,
6082 -1, -1, 56, -1, -1, 59, 60, 61, 62, 63,
6083 -1, -1, -1, -1, -1, -1, -1, -1, 1024, 1025,
6084 1026, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6085 -1, -1, -1, -1, -1, 1041, -1, 91, 92, 1033,
6086 1034, -1, -1, -1, -1, 99, -1, -1, 102, -1,
6087 104, 105, 1058, 107, -1, -1, 110, 111, 112, 113,
6088 114, 115, 116, 117, 118, -1, -1, -1, -1, 1033,
6089 1034, -1, -1, -1, -1, -1, 1082, -1, 862, -1,
6090 864, 865, -1, -1, -1, -1, 140, 1155, -1, -1,
6091 -1, -1, -1, 147, -1, -1, 230, -1, -1, -1,
6092 154, -1, -1, 1033, 1034, -1, -1, 1101, 1102, -1,
6093 -1, 1105, -1, -1, -1, -1, -1, -1, -1, -1,
6094 -1, 255, -1, 257, -1, -1, 260, 261, 1122, -1,
6095 -1, -1, 266, -1, -1, -1, -1, 1101, 1102, -1,
6096 1146, 1105, -1, -1, 1150, 929, -1, 1153, 1154, -1,
6097 -1, 285, -1, 1159, -1, -1, -1, -1, 1122, -1,
6098 -1, -1, 946, -1, 1158, -1, -1, 951, 952, -1,
6099 -1, 1101, 1102, 957, 958, 1105, -1, 1183, -1, -1,
6100 1186, -1, 966, 967, -1, -1, -1, -1, -1, -1,
6101 -1, -1, 1122, -1, 1158, -1, -1, 1191, 982, 1205,
6102 1194, 335, 336, 337, 338, 339, 340, -1, 342, 343,
6103 -1, -1, -1, -1, 1208, -1, 1210, -1, -1, 1213,
6104 1214, 1227, -1, -1, 1218, 1219, -1, 1191, 1158, 363,
6105 1194, -1, -1, -1, -1, -1, 1242, -1, -1, -1,
6106 1024, 1025, 1026, -1, 1208, -1, 1210, -1, -1, 1213,
6107 1214, -1, -1, -1, 1218, 1219, -1, 1041, -1, -1,
6108 -1, 1191, 1268, -1, 1194, -1, 400, -1, -1, 403,
6109 -1, -1, -1, -1, 1058, 409, 410, 411, 1208, -1,
6110 1210, -1, -1, 1213, 1214, -1, -1, -1, 1218, 1219,
6111 -1, 425, -1, 1287, -1, -1, -1, -1, 1082, -1,
6112 -1, -1, 1308, -1, -1, -1, -1, -1, -1, 1315,
6113 1316, -1, -1, -1, 1320, -1, -1, 451, -1, -1,
6114 -1, -1, -1, 1287, -1, -1, -1, -1, -1, -1,
6115 -1, -1, -1, -1, 1340, -1, -1, 1033, 1034, 473,
6116 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6117 -1, -1, -1, -1, -1, 1349, -1, 1287, -1, 1353,
6118 -1, 1355, -1, -1, 1370, -1, 1150, -1, -1, 1153,
6119 1154, -1, -1, -1, 508, 1159, -1, -1, -1, -1,
6120 1, 1033, 1034, -1, -1, 1349, -1, -1, -1, 1353,
6121 -1, 1355, -1, 527, 15, 16, -1, -1, -1, 1183,
6122 -1, -1, 1186, -1, -1, 1101, 1102, -1, -1, 1105,
6123 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1349,
6124 554, 1205, -1, 1353, -1, 1355, 1122, -1, -1, 1423,
6125 -1, 52, 53, -1, -1, -1, -1, -1, -1, 1033,
6126 1034, -1, -1, 1227, -1, -1, 67, -1, -1, 1101,
6127 1102, -1, -1, 1105, -1, -1, -1, -1, 1242, 1423,
6128 -1, -1, 1158, -1, 598, 599, -1, 601, 602, -1,
6129 1122, -1, -1, -1, -1, -1, 610, -1, -1, -1,
6130 -1, 615, 103, 104, -1, -1, 107, -1, -1, -1,
6131 -1, 112, -1, 1423, -1, 1191, -1, -1, 1194, -1,
6132 -1, -1, -1, -1, -1, -1, 1158, 1101, 1102, -1,
6133 -1, 1105, 1208, -1, 1210, -1, -1, 1213, 1214, -1,
6134 -1, -1, 1218, 1219, 1308, 659, -1, 661, 1122, -1,
6135 -1, 1315, 1316, -1, -1, 669, 1320, -1, -1, 1191,
6136 -1, -1, 1194, -1, -1, -1, 680, -1, 682, 683,
6137 -1, -1, -1, -1, -1, -1, 1208, -1, 1210, 693,
6138 694, 1213, 1214, -1, 1158, -1, 1218, 1219, -1, -1,
6139 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6140 -1, -1, -1, 1033, 1034, 719, 1370, -1, -1, -1,
6141 -1, 1287, -1, 727, -1, -1, -1, 1191, -1, -1,
6142 1194, -1, -1, -1, -1, -1, -1, -1, -1, 230,
6143 -1, -1, -1, -1, 1208, -1, 1210, -1, -1, 1213,
6144 1214, -1, -1, -1, 1218, 1219, -1, -1, -1, -1,
6145 -1, -1, -1, -1, 255, 1287, 257, -1, -1, 260,
6146 261, -1, -1, -1, -1, 266, -1, -1, -1, -1,
6147 -1, 1101, 1102, 1349, -1, 1105, -1, 1353, -1, 1355,
6148 -1, -1, -1, -1, 285, -1, -1, -1, -1, -1,
6149 -1, -1, 1122, -1, -1, -1, -1, -1, -1, -1,
6150 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6151 -1, -1, -1, 1287, -1, -1, -1, 1349, -1, -1,
6152 -1, 1353, -1, 1355, -1, -1, -1, -1, 1158, -1,
6153 -1, -1, -1, -1, 335, 336, 337, 338, 339, 340,
6154 -1, 342, 343, -1, -1, -1, -1, 1423, 862, -1,
6155 864, 865, -1, -1, -1, -1, -1, -1, -1, -1,
6156 -1, 1191, 363, -1, 1194, -1, -1, -1, -1, -1,
6157 -1, -1, -1, -1, -1, 1349, -1, -1, 1208, 1353,
6158 1210, 1355, -1, 1213, 1214, -1, -1, -1, 1218, 1219,
6159 1, 1423, -1, -1, -1, -1, -1, -1, -1, 400,
6160 -1, -1, 403, -1, 15, 16, -1, -1, 409, 410,
6161 411, -1, -1, -1, -1, 929, -1, -1, -1, -1,
6162 -1, -1, -1, -1, 425, -1, -1, -1, -1, -1,
6163 -1, -1, 946, -1, -1, -1, -1, 951, 952, -1,
6164 -1, 52, 53, 957, 958, 56, -1, -1, -1, 1423,
6165 451, -1, 966, 967, -1, -1, -1, 1287, 33, 34,
6166 35, 36, -1, -1, -1, -1, -1, -1, 982, -1,
6167 -1, -1, 473, -1, 49, 50, 51, -1, 89, -1,
6168 -1, -1, -1, -1, 59, 60, 61, 62, 63, -1,
6169 -1, -1, -1, -1, -1, -1, -1, 108, 109, 110,
6170 -1, 112, -1, -1, -1, -1, -1, 508, -1, -1,
6171 1024, 1025, 1026, -1, -1, -1, -1, -1, -1, 1349,
6172 -1, -1, -1, 1353, -1, 1355, 527, 1041, -1, -1,
6173 -1, -1, -1, -1, -1, 110, 111, 112, 113, 114,
6174 115, 116, 117, 118, 1058, -1, -1, -1, -1, -1,
6175 -1, -1, -1, 554, -1, -1, -1, -1, -1, -1,
6176 -1, 78, 79, 80, 81, 82, 83, 84, 1082, -1,
6177 87, 88, 147, -1, -1, -1, -1, -1, 95, 96,
6178 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6179 -1, -1, -1, 1423, -1, -1, -1, 598, 599, -1,
6180 601, 602, -1, -1, -1, -1, -1, -1, -1, 610,
6181 -1, -1, -1, -1, 615, -1, -1, -1, -1, 230,
6182 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6183 -1, -1, -1, -1, -1, -1, 1150, -1, -1, 1153,
6184 1154, -1, -1, -1, 255, 1159, 257, -1, -1, -1,
6185 -1, -1, -1, -1, -1, 266, -1, -1, 659, -1,
6186 661, -1, -1, -1, -1, -1, -1, -1, 669, 1183,
6187 -1, -1, 1186, -1, 285, -1, -1, -1, -1, 680,
6188 -1, 682, 683, -1, -1, -1, -1, -1, -1, -1,
6189 -1, 1205, 693, 694, 305, -1, -1, -1, -1, -1,
6190 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6191 -1, -1, -1, 1227, -1, -1, -1, -1, 719, -1,
6192 -1, -1, -1, -1, 335, 336, 727, -1, 1242, 0,
6193 -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
6194 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
6195 -1, -1, 363, 364, 25, 26, 27, -1, -1, -1,
6196 -1, -1, -1, 1, -1, -1, 37, 38, -1, 40,
6197 41, 42, 43, 44, -1, -1, -1, 15, 16, -1,
6198 -1, -1, -1, -1, -1, -1, -1, -1, -1, 400,
6199 -1, -1, 403, -1, 1308, -1, -1, 68, 69, 410,
6200 411, 1315, 1316, -1, -1, -1, 1320, -1, -1, -1,
6201 -1, -1, -1, -1, 52, 53, -1, -1, 56, -1,
6202 -1, -1, -1, -1, -1, -1, 97, 98, -1, -1,
6203 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6204 451, -1, -1, -1, -1, -1, -1, -1, -1, 120,
6205 -1, 89, -1, -1, -1, -1, 1370, -1, -1, -1,
6206 -1, 862, 473, 864, 865, -1, -1, -1, -1, -1,
6207 108, 109, 110, -1, 112, -1, -1, -1, -1, -1,
6208 151, 152, -1, 154, -1, -1, 157, 158, -1, 160,
6209 -1, -1, -1, -1, -1, -1, -1, 508, -1, -1,
6210 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6211 -1, -1, -1, -1, 525, -1, 527, -1, -1, -1,
6212 -1, -1, -1, -1, -1, -1, -1, -1, 929, -1,
6213 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6214 -1, -1, -1, 554, -1, 946, -1, -1, -1, -1,
6215 951, 952, -1, -1, -1, -1, 957, 958, -1, -1,
6216 -1, -1, -1, -1, -1, 966, 967, -1, -1, -1,
6217 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6218 -1, 982, -1, -1, -1, -1, -1, -1, 599, -1,
6219 -1, 602, 230, -1, -1, -1, -1, -1, -1, -1,
6220 -1, 612, -1, -1, 615, -1, -1, -1, -1, -1,
6221 -1, -1, -1, -1, -1, -1, -1, 255, -1, 257,
6222 -1, -1, -1, 1024, 1025, 1026, -1, -1, 266, -1,
6223 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6224 1041, -1, -1, -1, -1, -1, -1, 285, 659, -1,
6225 661, -1, -1, -1, -1, -1, -1, 1058, 669, -1,
6226 -1, -1, -1, -1, -1, -1, -1, 305, -1, 680,
6227 -1, 682, 1, -1, -1, -1, -1, -1, -1, -1,
6228 -1, 1082, 693, 694, -1, -1, -1, -1, -1, -1,
6229 -1, -1, -1, -1, -1, 44, -1, 335, 336, -1,
6230 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6231 -1, -1, -1, -1, -1, -1, 727, -1, -1, -1,
6232 -1, -1, 733, 52, 53, 363, 364, 56, -1, 78,
6233 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6234 89, 90, -1, -1, -1, -1, 95, 96, -1, 1150,
6235 -1, -1, 1153, 1154, -1, -1, -1, -1, 1159, -1,
6236 89, -1, 400, -1, -1, 403, -1, -1, -1, -1,
6237 -1, -1, 410, 411, -1, -1, -1, -1, -1, 108,
6238 109, 110, 1183, -1, -1, 1186, 135, -1, 137, 138,
6239 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6240 -1, 812, -1, -1, 1205, -1, 155, -1, -1, -1,
6241 -1, -1, -1, 451, 78, 79, 80, 81, 82, 83,
6242 84, 85, -1, 87, 88, -1, 1227, -1, -1, -1,
6243 -1, 95, 96, -1, -1, 473, -1, -1, -1, -1,
6244 -1, 1242, -1, -1, -1, -1, -1, -1, -1, -1,
6245 -1, -1, -1, -1, 865, -1, -1, -1, -1, -1,
6246 -1, -1, -1, -1, -1, -1, -1, -1, 25, -1,
6247 508, -1, -1, 137, 138, 139, 140, 141, 142, 143,
6248 144, 145, 146, -1, -1, -1, -1, 525, -1, 527,
6249 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6250 -1, 230, 1, -1, -1, -1, -1, 1308, -1, -1,
6251 -1, -1, -1, -1, 1315, 1316, 554, -1, -1, 1320,
6252 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6253 87, 88, 89, 90, -1, 946, -1, 266, 95, 96,
6254 951, 952, -1, -1, 101, -1, 957, 958, -1, -1,
6255 -1, -1, -1, 52, 53, 966, 285, 56, -1, -1,
6256 -1, 599, -1, -1, 602, -1, -1, -1, -1, 1370,
6257 -1, 982, -1, -1, 612, -1, 305, 615, 135, -1,
6258 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6259 89, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6260 -1, -1, -1, -1, -1, -1, 335, 336, -1, 108,
6261 109, 110, 111, 1024, 1025, 1026, -1, -1, -1, -1,
6262 -1, 659, -1, 661, 44, -1, -1, -1, -1, -1,
6263 1041, 669, -1, -1, 363, 364, -1, -1, -1, -1,
6264 -1, -1, 680, -1, 682, -1, -1, 1058, -1, -1,
6265 1, -1, -1, -1, -1, 693, 694, -1, 78, 79,
6266 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6267 90, 1082, -1, -1, 403, 95, 96, -1, -1, -1,
6268 -1, 410, 411, -1, -1, -1, -1, -1, -1, 727,
6269 -1, -1, -1, -1, -1, 733, -1, -1, -1, -1,
6270 -1, 52, 53, -1, -1, -1, -1, -1, -1, -1,
6271 -1, -1, -1, -1, -1, 135, -1, 137, 138, 139,
6272 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6273 -1, 230, -1, -1, -1, 1146, -1, -1, -1, 1150,
6274 -1, -1, 1153, 1154, -1, -1, -1, -1, 1159, -1,
6275 -1, -1, -1, -1, -1, -1, -1, 108, -1, -1,
6276 -1, -1, -1, -1, -1, -1, -1, 266, -1, -1,
6277 -1, -1, 1183, -1, 812, 1186, -1, -1, -1, 508,
6278 -1, -1, -1, -1, -1, -1, 285, -1, -1, -1,
6279 -1, -1, -1, -1, -1, -1, 525, -1, -1, -1,
6280 -1, -1, -1, -1, -1, -1, 305, -1, -1, -1,
6281 -1, -1, -1, -1, -1, -1, 1227, -1, -1, -1,
6282 -1, -1, -1, -1, -1, 554, -1, 865, -1, -1,
6283 -1, 1242, -1, -1, -1, -1, 335, 336, -1, -1,
6284 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6285 -1, -1, -1, -1, -1, -1, -1, 1268, -1, -1,
6286 -1, -1, -1, -1, 363, 364, -1, -1, -1, -1,
6287 599, -1, -1, 602, -1, -1, -1, -1, -1, 230,
6288 -1, -1, -1, 612, -1, -1, 615, -1, -1, -1,
6289 -1, -1, -1, -1, -1, -1, -1, 1308, -1, -1,
6290 -1, -1, -1, -1, 403, -1, -1, -1, 946, 1320,
6291 -1, 410, 411, 951, 952, 266, -1, -1, -1, 957,
6292 958, -1, -1, -1, -1, -1, -1, -1, 966, 1340,
6293 659, -1, 661, -1, 285, -1, -1, -1, -1, -1,
6294 -1, -1, -1, -1, 982, -1, -1, -1, -1, -1,
6295 -1, -1, -1, 682, -1, -1, -1, -1, -1, 1370,
6296 -1, -1, -1, -1, 693, 694, -1, -1, -1, -1,
6297 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6298 -1, -1, -1, -1, 335, 336, 1024, 1025, 1026, -1,
6299 -1, -1, -1, -1, -1, -1, -1, -1, 727, -1,
6300 -1, -1, -1, 1041, 733, -1, -1, -1, -1, 508,
6301 -1, -1, 363, 742, -1, -1, -1, -1, -1, -1,
6302 1058, -1, -1, -1, -1, 1, 525, -1, -1, -1,
6303 -1, -1, -1, -1, -1, -1, -1, 52, 53, -1,
6304 -1, 56, -1, -1, 1082, -1, -1, -1, -1, -1,
6305 -1, -1, 403, -1, -1, 554, -1, -1, -1, 410,
6306 411, 76, 77, 78, 79, 80, 81, 82, 83, 84,
6307 -1, -1, 87, 88, -1, -1, 52, 53, 93, 94,
6308 95, 96, -1, 812, -1, -1, -1, -1, -1, -1,
6309 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
6310 599, -1, -1, 602, -1, -1, -1, -1, 1146, -1,
6311 -1, -1, 1150, 612, -1, 1153, 1154, -1, -1, -1,
6312 -1, 1159, 137, 138, 139, 140, 141, 142, 143, 144,
6313 145, 146, -1, 148, 149, -1, 865, -1, -1, -1,
6314 -1, 156, 157, -1, -1, 1183, -1, -1, 1186, 78,
6315 79, 80, 81, 82, 83, 84, -1, 508, 87, 88,
6316 659, -1, 661, -1, -1, -1, 95, 96, -1, -1,
6317 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6318 -1, -1, -1, 682, -1, -1, -1, -1, -1, 1227,
6319 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6320 -1, -1, -1, 554, 1242, -1, -1, -1, 137, 138,
6321 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6322 -1, -1, 951, 952, -1, -1, -1, -1, 957, 958,
6323 1268, -1, -1, -1, 733, -1, -1, 966, -1, -1,
6324 -1, -1, -1, -1, -1, -1, -1, -1, 599, -1,
6325 -1, 602, -1, 982, 230, -1, -1, -1, -1, -1,
6326 -1, -1, -1, -1, 615, -1, -1, -1, -1, -1,
6327 1308, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6328 -1, -1, 1320, -1, -1, -1, -1, -1, -1, -1,
6329 266, -1, -1, -1, -1, 1024, 1025, 1026, -1, -1,
6330 -1, -1, 1340, -1, -1, -1, -1, -1, 659, 285,
6331 661, -1, 1041, 812, -1, -1, -1, -1, -1, -1,
6332 -1, -1, 33, 34, 35, 36, -1, -1, -1, 1058,
6333 -1, 682, 1370, -1, -1, -1, -1, -1, 49, 50,
6334 51, 52, 693, 694, -1, 56, -1, 58, 59, 60,
6335 61, 62, 63, 1082, -1, -1, -1, -1, -1, 335,
6336 336, -1, -1, -1, -1, -1, 865, 78, -1, -1,
6337 -1, -1, -1, -1, -1, -1, 727, -1, -1, -1,
6338 91, 92, -1, -1, -1, -1, -1, 363, 99, -1,
6339 -1, 102, -1, 104, 105, -1, 107, 108, -1, 110,
6340 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6341 -1, -1, -1, -1, -1, -1, -1, 1146, -1, -1,
6342 -1, 1150, -1, -1, 1153, 1154, -1, 403, -1, 140,
6343 1159, -1, -1, -1, 410, 411, 147, -1, -1, -1,
6344 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6345 -1, -1, -1, -1, 1183, -1, -1, 1186, -1, -1,
6346 52, 53, -1, -1, 56, -1, -1, 966, -1, -1,
6347 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6348 -1, -1, -1, 982, 76, 77, 78, 79, 80, 81,
6349 82, 83, 84, -1, -1, 87, 88, -1, 1227, -1,
6350 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
6351 -1, -1, -1, 1242, 865, 107, 108, -1, -1, -1,
6352 -1, -1, -1, -1, -1, 1024, 1025, -1, -1, -1,
6353 -1, -1, 508, -1, -1, -1, -1, -1, -1, 1268,
6354 -1, 15, 16, -1, -1, 137, 138, 139, 140, 141,
6355 142, 143, 144, 145, 146, -1, 148, 149, -1, 1058,
6356 -1, -1, -1, -1, 156, -1, -1, -1, -1, -1,
6357 -1, -1, -1, 47, 48, 49, 50, -1, 554, -1,
6358 54, 55, -1, 1082, -1, -1, -1, -1, -1, -1,
6359 -1, 1320, -1, 67, 68, -1, -1, -1, -1, -1,
6360 951, 952, -1, -1, -1, -1, 957, 958, -1, -1,
6361 -1, 1340, -1, -1, -1, 966, -1, -1, -1, -1,
6362 -1, -1, -1, 599, -1, -1, 602, -1, -1, -1,
6363 -1, 982, -1, -1, -1, -1, -1, -1, 112, 615,
6364 -1, 1370, -1, -1, -1, -1, -1, 1146, -1, -1,
6365 -1, 1150, -1, -1, 1153, 1154, -1, -1, -1, -1,
6366 1159, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6367 -1, -1, -1, 1024, 1025, 1026, -1, -1, -1, -1,
6368 -1, -1, -1, 659, 1183, 661, -1, 1186, -1, -1,
6369 1041, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6370 -1, -1, -1, -1, -1, -1, 682, 1058, -1, -1,
6371 -1, -1, -1, -1, -1, -1, -1, 693, 694, -1,
6372 -1, -1, -1, -1, -1, -1, -1, -1, 1227, -1,
6373 -1, 1082, -1, -1, -1, -1, -1, -1, -1, -1,
6374 -1, -1, -1, 1242, -1, -1, -1, -1, -1, -1,
6375 -1, 727, -1, -1, 228, -1, -1, 231, 232, 233,
6376 -1, 235, -1, -1, -1, -1, -1, -1, -1, 1268,
6377 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6378 -1, 255, -1, 257, -1, -1, -1, -1, -1, -1,
6379 -1, -1, -1, -1, -1, 1146, -1, -1, -1, 1150,
6380 -1, -1, 1153, 1154, -1, -1, -1, -1, 1159, -1,
6381 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6382 -1, 1320, -1, -1, -1, -1, -1, -1, -1, -1,
6383 -1, -1, 1183, -1, -1, 1186, -1, -1, -1, -1,
6384 -1, 1340, -1, -1, -1, -1, -1, -1, -1, -1,
6385 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6386 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6387 -1, 1370, -1, -1, -1, -1, 1227, -1, -1, -1,
6388 -1, -1, -1, -1, -1, -1, -1, -1, -1, 865,
6389 -1, 1242, -1, -1, 368, 369, 370, 371, 372, -1,
6390 -1, 375, 376, 377, 378, 379, 380, 381, 382, -1,
6391 384, -1, -1, 387, 388, 389, 390, 391, 392, 393,
6392 394, 395, 396, -1, 52, 53, 400, -1, 56, -1,
6393 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6394 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6395 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
6396 88, -1, -1, -1, -1, 93, 94, 95, 96, 1320,
6397 -1, -1, -1, -1, -1, 951, 952, 451, -1, 107,
6398 108, 957, 958, -1, -1, -1, -1, -1, -1, -1,
6399 966, -1, -1, -1, 468, 469, -1, -1, -1, 473,
6400 -1, -1, -1, 477, -1, 479, 982, -1, -1, 137,
6401 138, 139, 140, 141, 142, 143, 144, 145, 146, 1370,
6402 148, 149, -1, 497, -1, -1, -1, -1, 156, -1,
6403 -1, -1, -1, -1, -1, -1, -1, -1, 512, -1,
6404 -1, 515, -1, -1, -1, -1, -1, -1, 1024, 1025,
6405 1026, -1, -1, 527, -1, -1, -1, -1, -1, -1,
6406 -1, -1, -1, -1, -1, 1041, -1, -1, -1, -1,
6407 -1, 545, -1, 33, 34, 35, 36, -1, -1, -1,
6408 -1, -1, 1058, -1, -1, -1, -1, -1, -1, 49,
6409 50, 51, 52, -1, -1, -1, 56, -1, -1, 59,
6410 60, 61, 62, 63, -1, -1, 1082, -1, -1, -1,
6411 -1, -1, -1, -1, -1, -1, 590, -1, -1, -1,
6412 -1, -1, -1, -1, 598, -1, -1, 601, -1, -1,
6413 -1, 91, 92, -1, -1, -1, 610, -1, -1, 99,
6414 -1, 615, 102, -1, 104, 105, -1, 107, -1, -1,
6415 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6416 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6417 -1, -1, -1, -1, 1150, -1, -1, 1153, 1154, -1,
6418 140, -1, -1, 1159, -1, -1, -1, 147, -1, -1,
6419 -1, -1, -1, -1, -1, 669, -1, -1, -1, -1,
6420 -1, -1, -1, -1, -1, -1, 680, 1183, -1, -1,
6421 1186, -1, -1, -1, -1, -1, -1, -1, -1, 693,
6422 694, -1, -1, 697, 698, -1, -1, -1, -1, -1,
6423 -1, -1, -1, -1, -1, 709, 710, -1, -1, 713,
6424 -1, 715, -1, -1, -1, -1, -1, -1, 722, 723,
6425 -1, 1227, -1, 727, -1, -1, -1, -1, -1, -1,
6426 -1, -1, -1, -1, -1, -1, 1242, -1, -1, -1,
6427 0, 1, -1, 3, 4, 5, 6, 7, 8, 9,
6428 10, 11, 12, -1, 14, 15, 16, 17, 18, 19,
6429 20, 21, 22, 23, 24, 25, -1, -1, -1, 773,
6430 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6431 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
6432 50, 51, 52, 53, 54, 55, 56, 57, 802, 59,
6433 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
6434 -1, -1, -1, -1, 1320, -1, 76, 77, -1, -1,
6435 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6436 834, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6437 -1, -1, 102, 103, 104, 105, -1, 107, 852, -1,
6438 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6439 120, -1, -1, -1, 1370, -1, -1, -1, -1, -1,
6440 -1, -1, -1, -1, -1, -1, -1, -1, 882, -1,
6441 -1, -1, -1, -1, -1, -1, -1, 147, 148, 149,
6442 -1, -1, 152, 33, 34, 35, 36, -1, 158, -1,
6443 160, -1, -1, -1, -1, -1, -1, -1, -1, 49,
6444 50, 51, 52, -1, -1, -1, 56, -1, -1, 59,
6445 60, 61, 62, 63, -1, 929, -1, -1, -1, -1,
6446 -1, -1, -1, -1, 938, -1, -1, -1, -1, -1,
6447 -1, -1, 946, -1, -1, -1, 950, 951, 952, -1,
6448 -1, 91, 92, 957, 958, -1, -1, 961, -1, 99,
6449 -1, -1, 102, -1, 104, 105, -1, -1, -1, 973,
6450 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6451 -1, -1, -1, -1, -1, -1, -1, 991, 992, -1,
6452 994, 995, -1, 997, -1, 999, -1, -1, -1, -1,
6453 140, -1, -1, -1, -1, -1, -1, 147, -1, -1,
6454 -1, -1, -1, -1, 1018, 1019, -1, -1, 1022, -1,
6455 -1, -1, 1026, 1027, 0, 1, -1, 3, 4, 5,
6456 6, 7, -1, -1, -1, 11, 12, 1041, -1, -1,
6457 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6458 -1, -1, -1, 1057, 30, 31, 32, 33, 34, 35,
6459 36, 1065, -1, 39, -1, -1, -1, -1, -1, 45,
6460 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6461 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6462 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6463 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6464 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6465 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6466 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6467 116, 117, 118, -1, 120, -1, -1, -1, -1, -1,
6468 -1, 1155, -1, -1, -1, -1, -1, -1, -1, -1,
6469 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6470 -1, 147, 148, 149, -1, -1, 0, 1, 154, 3,
6471 4, 5, 6, 7, 160, -1, -1, 11, 12, -1,
6472 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6473 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6474 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6475 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6476 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6477 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6478 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6479 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6480 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6481 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6482 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6483 -1, -1, -1, -1, 1308, -1, -1, -1, -1, -1,
6484 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6485 -1, -1, -1, 147, 148, 149, -1, -1, 0, 1,
6486 154, 3, 4, 5, 6, 7, 160, -1, -1, 11,
6487 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6488 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6489 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6490 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6491 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6492 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6493 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6494 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6495 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6496 102, 103, 104, 105, -1, 107, -1, -1, 110, 111,
6497 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
6498 -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
6499 -1, -1, -1, -1, 8, 9, 10, -1, -1, 13,
6500 14, 15, -1, 17, -1, 147, 148, 149, -1, -1,
6501 152, 25, 26, 27, 28, 29, -1, -1, 160, -1,
6502 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6503 44, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6504 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6505 -1, 95, 96, -1, 68, 69, -1, -1, -1, -1,
6506 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6507 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6508 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
6509 -1, 135, 106, 137, 138, 139, 140, 141, 142, 143,
6510 144, 145, 146, -1, -1, -1, 120, -1, -1, 123,
6511 154, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6512 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
6513 144, 145, 146, -1, -1, -1, -1, 151, 152, 153,
6514 154, 155, 0, -1, 158, 159, 160, -1, -1, -1,
6515 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
6516 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
6517 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
6518 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
6519 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6520 88, 89, 90, -1, -1, -1, -1, 95, 96, -1,
6521 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
6522 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6523 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
6524 98, -1, 100, 101, -1, -1, -1, 135, 106, 137,
6525 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6526 -1, -1, 120, -1, -1, 123, -1, -1, -1, -1,
6527 -1, -1, -1, -1, -1, -1, 134, 135, 136, 137,
6528 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6529 -1, -1, -1, -1, 152, 153, 154, 155, 0, -1,
6530 158, 159, 160, -1, -1, -1, 8, 9, 10, -1,
6531 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
6532 -1, -1, -1, 25, -1, 27, 28, 29, -1, -1,
6533 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
6534 42, 43, 44, -1, -1, -1, 78, 79, 80, 81,
6535 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6536 -1, -1, -1, 95, 96, -1, 68, 69, -1, -1,
6537 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6538 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6539 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
6540 -1, -1, -1, -1, 106, 137, 138, 139, 140, 141,
6541 142, 143, 144, 145, 146, -1, -1, -1, 120, -1,
6542 -1, 123, -1, -1, -1, -1, -1, -1, -1, -1,
6543 -1, -1, 134, 135, 136, 137, 138, 139, 140, 141,
6544 142, 143, 144, 145, 146, -1, -1, -1, -1, -1,
6545 152, 153, 154, 155, 0, -1, 158, 159, 160, -1,
6546 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
6547 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6548 26, 27, 28, 29, -1, -1, -1, -1, -1, -1,
6549 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6550 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6551 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6552 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6553 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6554 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6555 96, 97, 98, -1, -1, 101, -1, -1, -1, -1,
6556 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6557 -1, -1, -1, -1, 120, -1, -1, 123, -1, -1,
6558 -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
6559 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6560 146, -1, -1, -1, -1, 151, 152, 153, 154, 155,
6561 0, -1, 158, 159, 160, -1, -1, -1, 8, 9,
6562 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
6563 -1, -1, -1, -1, -1, 25, 26, 27, 28, 29,
6564 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
6565 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
6566 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6567 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
6568 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
6569 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6570 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
6571 -1, 101, -1, -1, -1, -1, 106, -1, -1, -1,
6572 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6573 120, -1, -1, 123, -1, -1, -1, -1, -1, -1,
6574 -1, -1, -1, -1, -1, 135, 136, 137, 138, 139,
6575 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6576 -1, 151, 152, 153, 154, 155, 0, -1, 158, 159,
6577 160, -1, -1, -1, 8, 9, 10, -1, -1, 13,
6578 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
6579 -1, 25, 26, 27, 28, -1, -1, -1, -1, -1,
6580 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6581 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6582 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6583 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
6584 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6585 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6586 -1, 95, 96, 97, 98, -1, -1, 101, -1, -1,
6587 -1, -1, 106, -1, -1, -1, -1, -1, -1, -1,
6588 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
6589 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6590 -1, 135, -1, 137, 138, 139, 140, 141, 142, 143,
6591 144, 145, 146, -1, -1, -1, -1, 151, 152, 153,
6592 154, 155, 0, 157, 158, 159, 160, -1, -1, -1,
6593 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
6594 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
6595 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
6596 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
6597 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6598 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6599 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
6600 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6601 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
6602 98, -1, -1, 101, -1, -1, -1, -1, 106, -1,
6603 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6604 -1, -1, 120, -1, -1, 123, -1, -1, -1, -1,
6605 -1, -1, -1, -1, -1, -1, -1, 135, 136, 137,
6606 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6607 -1, -1, -1, -1, 152, 153, 154, 155, 0, -1,
6608 158, 159, 160, -1, -1, -1, 8, 9, 10, -1,
6609 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
6610 -1, -1, -1, 25, 26, 27, 28, -1, -1, -1,
6611 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
6612 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
6613 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6614 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
6615 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6616 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6617 -1, -1, -1, 95, 96, 97, 98, -1, -1, 101,
6618 -1, -1, -1, -1, 106, -1, -1, -1, -1, -1,
6619 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
6620 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6621 -1, -1, -1, 135, -1, 137, 138, 139, 140, 141,
6622 142, 143, 144, 145, 146, -1, -1, -1, -1, 151,
6623 152, 153, 154, 155, 0, 157, 158, 159, 160, -1,
6624 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
6625 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6626 -1, 27, 28, -1, -1, -1, -1, -1, -1, -1,
6627 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6628 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6629 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6630 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6631 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6632 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6633 96, 97, 98, -1, 100, 101, -1, -1, -1, -1,
6634 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6635 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
6636 -1, -1, -1, -1, -1, -1, -1, -1, 134, 135,
6637 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6638 146, -1, -1, -1, -1, 151, 152, 153, 154, 155,
6639 0, -1, 158, 159, 160, -1, -1, -1, 8, 9,
6640 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
6641 -1, -1, -1, -1, -1, 25, -1, 27, 28, -1,
6642 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
6643 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
6644 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6645 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
6646 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
6647 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6648 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
6649 -1, 101, -1, -1, -1, -1, 106, -1, -1, -1,
6650 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6651 120, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6652 -1, -1, -1, -1, -1, 135, -1, 137, 138, 139,
6653 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6654 -1, -1, 152, 153, 154, 155, 0, 157, 158, 159,
6655 160, -1, -1, -1, 8, 9, 10, -1, -1, -1,
6656 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
6657 -1, 25, 26, -1, -1, -1, -1, -1, -1, -1,
6658 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6659 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6660 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6661 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
6662 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6663 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6664 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
6665 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6666 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
6667 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6668 134, 135, -1, 137, 138, 139, 140, 141, 142, 143,
6669 144, 145, 146, -1, -1, -1, -1, 151, 152, 153,
6670 154, 155, 0, -1, 158, -1, 160, -1, -1, -1,
6671 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
6672 -1, -1, -1, -1, -1, -1, -1, 25, 26, -1,
6673 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
6674 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
6675 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6676 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6677 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
6678 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6679 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
6680 98, -1, 100, 101, -1, -1, -1, -1, -1, -1,
6681 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6682 -1, -1, 120, -1, -1, -1, -1, -1, -1, -1,
6683 -1, -1, -1, -1, -1, -1, 134, 135, -1, 137,
6684 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6685 -1, -1, -1, 151, 152, 153, 154, 155, 0, -1,
6686 158, -1, 160, -1, -1, -1, 8, 9, 10, -1,
6687 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
6688 -1, -1, -1, 25, -1, -1, -1, -1, -1, -1,
6689 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
6690 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
6691 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6692 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
6693 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6694 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6695 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
6696 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6697 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
6698 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6699 -1, -1, 134, 135, -1, 137, 138, 139, 140, 141,
6700 142, 143, 144, 145, 146, -1, -1, -1, -1, 151,
6701 152, 153, 154, 155, 0, -1, 158, -1, 160, -1,
6702 -1, -1, 8, 9, 10, -1, -1, -1, 14, 15,
6703 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6704 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6705 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6706 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6707 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6708 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6709 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6710 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6711 96, 97, 98, -1, 100, 101, -1, -1, -1, -1,
6712 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6713 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
6714 -1, -1, -1, -1, -1, -1, -1, -1, 134, 135,
6715 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6716 146, -1, -1, -1, -1, 151, 152, 153, 154, 155,
6717 -1, -1, 158, 1, 160, 3, 4, 5, 6, 7,
6718 8, 9, 10, 11, 12, -1, -1, 15, 16, -1,
6719 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
6720 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6721 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6722 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6723 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6724 68, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6725 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6726 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6727 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
6728 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
6729 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6730 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6731 -1, -1, -1, -1, -1, -1, -1, -1, -1, 147,
6732 148, 149, -1, -1, -1, 1, 154, 3, 4, 5,
6733 6, 7, 160, -1, 10, 11, 12, -1, 14, 15,
6734 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6735 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6736 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6737 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6738 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6739 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
6740 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6741 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6742 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6743 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6744 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6745 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6746 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6747 -1, 147, 148, 149, -1, -1, -1, 1, 154, 3,
6748 4, 5, 6, 7, 160, -1, 10, 11, 12, -1,
6749 -1, 15, 16, 17, 18, 19, 20, 21, 22, 23,
6750 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6751 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6752 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6753 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6754 64, 65, -1, -1, 68, -1, -1, -1, -1, -1,
6755 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6756 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6757 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6758 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6759 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6760 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6761 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6762 -1, -1, -1, 147, 148, 149, -1, -1, -1, 1,
6763 154, 3, 4, 5, 6, 7, 160, -1, 10, 11,
6764 12, -1, -1, 15, 16, -1, 18, 19, 20, 21,
6765 22, 23, 24, 25, -1, -1, -1, -1, 30, 31,
6766 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6767 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6768 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6769 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
6770 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6771 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6772 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6773 102, 103, 104, 105, -1, 107, -1, -1, 110, 111,
6774 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
6775 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6776 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6777 -1, -1, -1, -1, -1, 147, 148, 149, -1, -1,
6778 -1, 1, 154, 3, 4, 5, 6, 7, 160, -1,
6779 10, 11, 12, -1, -1, 15, 16, -1, 18, 19,
6780 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
6781 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6782 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
6783 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6784 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
6785 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
6786 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6787 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6788 -1, -1, 102, 103, 104, 105, -1, 107, -1, -1,
6789 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6790 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6791 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6792 -1, -1, -1, -1, -1, -1, -1, 147, 148, 149,
6793 -1, -1, -1, 1, 154, 3, 4, 5, 6, 7,
6794 160, 9, 10, 11, 12, -1, -1, -1, 16, -1,
6795 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
6796 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6797 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6798 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6799 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6800 68, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6801 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6802 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6803 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
6804 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
6805 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6806 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6807 -1, -1, -1, -1, -1, -1, -1, -1, -1, 147,
6808 148, 149, -1, -1, -1, 1, 154, 3, 4, 5,
6809 6, 7, 160, -1, 10, 11, 12, -1, -1, -1,
6810 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6811 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6812 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6813 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6814 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6815 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
6816 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6817 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6818 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6819 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6820 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6821 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6822 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6823 -1, 147, 148, 149, -1, -1, -1, 1, 154, 3,
6824 4, 5, 6, 7, 160, -1, -1, 11, 12, -1,
6825 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6826 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6827 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6828 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6829 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6830 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6831 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6832 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6833 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6834 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6835 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6836 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6837 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6838 -1, -1, -1, 147, 148, 149, -1, -1, -1, -1,
6839 154, -1, -1, -1, 158, 1, 160, 3, 4, 5,
6840 6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6841 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6842 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6843 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6844 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6845 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6846 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6847 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6848 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6849 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6850 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6851 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6852 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6853 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6854 -1, 147, 148, 149, -1, -1, -1, -1, 154, -1,
6855 -1, -1, 158, 1, 160, 3, 4, 5, 6, 7,
6856 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
6857 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
6858 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6859 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6860 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6861 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6862 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6863 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6864 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6865 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
6866 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
6867 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6868 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6869 -1, -1, -1, -1, -1, -1, -1, -1, -1, 147,
6870 148, 149, -1, -1, 152, 1, 154, 3, 4, 5,
6871 6, 7, 160, -1, -1, 11, 12, -1, -1, -1,
6872 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6873 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6874 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6875 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6876 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6877 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6878 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6879 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6880 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6881 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6882 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6883 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6884 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6885 -1, 147, 148, 149, -1, -1, 152, 1, 154, 3,
6886 4, 5, -1, 7, 160, -1, -1, 11, 12, -1,
6887 -1, -1, 16, 17, 18, 19, 20, 21, 22, 23,
6888 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6889 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6890 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6891 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6892 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6893 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6894 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6895 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6896 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
6897 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6898 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6899 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6900 -1, -1, -1, 147, 148, 149, -1, -1, -1, -1,
6901 154, -1, -1, -1, -1, -1, 160, 3, 4, 5,
6902 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
6903 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
6904 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6905 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
6906 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6907 56, 57, -1, -1, -1, -1, -1, -1, -1, -1,
6908 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6909 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
6910 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
6911 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6912 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
6913 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6914 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6915 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6916 146, -1, 148, 149, -1, -1, -1, -1, -1, -1,
6917 156, 157, 3, 4, 5, 6, 7, 8, 9, 10,
6918 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
6919 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
6920 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
6921 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
6922 51, 52, 53, 54, 55, 56, 57, -1, -1, -1,
6923 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6924 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
6925 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
6926 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
6927 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
6928 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6929 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6930 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
6931 141, 142, 143, 144, 145, 146, -1, 148, 149, -1,
6932 -1, -1, -1, -1, -1, 156, 3, 4, 5, 6,
6933 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
6934 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
6935 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6936 37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
6937 47, 48, 49, 50, 51, 52, 53, 54, -1, 56,
6938 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6939 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6940 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
6941 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
6942 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6943 107, 108, -1, -1, 111, -1, -1, -1, -1, -1,
6944 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6945 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6946 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6947 -1, 148, 149, -1, -1, -1, -1, -1, -1, 156,
6948 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
6949 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
6950 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
6951 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
6952 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
6953 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
6954 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6955 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
6956 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
6957 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
6958 -1, -1, -1, -1, 107, 108, -1, -1, 111, -1,
6959 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6960 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6961 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
6962 143, 144, 145, 146, -1, 148, 149, -1, -1, -1,
6963 -1, -1, -1, 156, 3, 4, 5, 6, 7, 8,
6964 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
6965 19, 20, 21, 22, 23, 24, 25, 26, -1, -1,
6966 -1, 30, 31, 32, 33, 34, 35, 36, 37, 38,
6967 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6968 49, 50, 51, 52, 53, -1, -1, 56, -1, -1,
6969 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6970 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
6971 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
6972 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
6973 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
6974 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6975 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6976 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
6977 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
6978 149, 3, 4, 5, -1, 7, -1, 156, -1, 11,
6979 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6980 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6981 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6982 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6983 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6984 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6985 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6986 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6987 -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6988 102, 103, 104, 105, -1, -1, -1, -1, 110, 111,
6989 112, 113, 114, 115, 116, 117, 118, -1, -1, 3,
6990 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6991 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6992 24, -1, -1, -1, -1, 147, 30, 31, 32, 33,
6993 34, 35, 36, 155, -1, 39, -1, -1, -1, -1,
6994 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6995 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6996 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6997 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6998 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6999 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
7000 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
7001 114, 115, 116, 117, 118, -1, -1, 3, 4, 5,
7002 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7003 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7004 -1, -1, -1, 147, 30, 31, 32, 33, 34, 35,
7005 36, 155, -1, 39, -1, -1, -1, -1, -1, -1,
7006 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7007 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
7008 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7009 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7010 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7011 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7012 -1, 107, 108, 109, 110, 111, 112, 113, 114, 115,
7013 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
7014 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7015 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
7016 7, 147, 148, 149, 11, 12, -1, -1, 154, 16,
7017 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
7018 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
7019 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
7020 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
7021 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
7022 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7023 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7024 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
7025 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
7026 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
7027 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
7028 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7029 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
7030 147, 148, 149, 11, 12, -1, -1, 154, 16, -1,
7031 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
7032 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
7033 -1, 39, -1, -1, -1, -1, -1, 45, 46, -1,
7034 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7035 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7036 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7037 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7038 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7039 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7040 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7041 118, -1, -1, 1, -1, 3, 4, 5, -1, 7,
7042 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7043 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7044 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7045 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7046 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7047 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7048 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7049 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7050 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7051 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7052 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7053 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7054 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7055 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7056 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7057 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7058 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7059 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7060 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7061 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7062 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7063 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7064 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
7065 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7066 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7067 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7068 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7069 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7070 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7071 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7072 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7073 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7074 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7075 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7076 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
7077 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7078 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7079 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7080 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7081 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7082 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7083 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7084 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7085 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7086 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7087 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7088 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
7089 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7090 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7091 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7092 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7093 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7094 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7095 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7096 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7097 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7098 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7099 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7100 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
7101 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7102 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7103 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7104 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7105 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7106 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7107 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7108 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7109 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7110 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7111 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7112 108, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7113 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7114 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7115 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7116 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7117 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7118 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7119 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7120 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7121 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7122 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7123 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7124 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
7125 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7126 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7127 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7128 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7129 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7130 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7131 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7132 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7133 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7134 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7135 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7136 108, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7137 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7138 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7139 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7140 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7141 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7142 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7143 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7144 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7145 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7146 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7147 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7148 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7149 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7150 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7151 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7152 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7153 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7154 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7155 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7156 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7157 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7158 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7159 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7160 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7161 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7162 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7163 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7164 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7165 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7166 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7167 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7168 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7169 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7170 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7171 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7172 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7173 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7174 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7175 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7176 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7177 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7178 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7179 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7180 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7181 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7182 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7183 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7184 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7185 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7186 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7187 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7188 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7189 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7190 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7191 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7192 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7193 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7194 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7195 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7196 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7197 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7198 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7199 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7200 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7201 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7202 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7203 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7204 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7205 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7206 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7207 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7208 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7209 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7210 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7211 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7212 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7213 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7214 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7215 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7216 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7217 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7218 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7219 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7220 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7221 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7222 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7223 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7224 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7225 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7226 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7227 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7228 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7229 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7230 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7231 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7232 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7233 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7234 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7235 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7236 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7237 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7238 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7239 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7240 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7241 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7242 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7243 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7244 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7245 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7246 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7247 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7248 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7249 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7250 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7251 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7252 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7253 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7254 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7255 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7256 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7257 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7258 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7259 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7260 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7261 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7262 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7263 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7264 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7265 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7266 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7267 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7268 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7269 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7270 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7271 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7272 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7273 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7274 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7275 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7276 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7277 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7278 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7279 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7280 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7281 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7282 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7283 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7284 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7285 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7286 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7287 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7288 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7289 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7290 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7291 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7292 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7293 118, -1, -1, 3, 4, 5, -1, 7, -1, -1,
7294 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
7295 20, 21, 22, 23, 24, -1, -1, -1, -1, 147,
7296 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
7297 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
7298 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
7299 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
7300 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7301 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7302 -1, -1, -1, -1, -1, -1, -1, -1, -1, 99,
7303 -1, -1, 102, 103, 104, 105, -1, 107, -1, -1,
7304 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
7305 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
7306 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
7307 22, 23, 24, -1, -1, -1, -1, 147, 30, 31,
7308 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
7309 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
7310 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
7311 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
7312 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7313 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7314 -1, -1, -1, 95, -1, -1, -1, 99, -1, -1,
7315 102, 103, 104, 105, -1, -1, -1, -1, 110, 111,
7316 112, 113, 114, 115, 116, 117, 118, -1, -1, 3,
7317 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
7318 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
7319 24, -1, -1, -1, -1, 147, 30, 31, 32, 33,
7320 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
7321 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
7322 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
7323 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
7324 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7325 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7326 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
7327 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
7328 114, 115, 116, 117, 118, -1, -1, 3, 4, 5,
7329 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7330 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7331 -1, -1, -1, 147, 30, 31, 32, 33, 34, 35,
7332 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7333 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7334 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7335 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7336 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7337 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7338 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7339 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
7340 116, 117, 118, -1, -1, 3, 4, 5, -1, 7,
7341 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7342 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
7343 -1, 147, 30, 31, 32, 33, 34, 35, 36, -1,
7344 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7345 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7346 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7347 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7348 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7349 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7350 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7351 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7352 118, -1, -1, 3, 4, 5, -1, 7, -1, -1,
7353 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
7354 20, 21, 22, 23, 24, -1, -1, -1, -1, 147,
7355 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
7356 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
7357 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
7358 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
7359 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7360 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7361 -1, -1, -1, -1, -1, -1, 52, 53, -1, 99,
7362 56, -1, 102, 103, 104, 105, -1, -1, -1, -1,
7363 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
7364 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
7365 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
7366 96, -1, -1, -1, -1, -1, -1, 147, -1, -1,
7367 -1, 107, 108, -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, -1, -1, -1, -1,
7370 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
7371 146, -1, 148, 149, 52, 53, -1, -1, 56, -1,
7372 156, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7373 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7374 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
7375 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
7376 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
7377 108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7378 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7379 -1, -1, -1, -1, -1, -1, -1, -1, -1, 137,
7380 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
7381 148, 149, 52, 53, -1, -1, 56, -1, 156, -1,
7382 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7383 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
7384 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
7385 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
7386 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
7387 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7388 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7389 -1, -1, -1, -1, -1, -1, -1, 137, 138, 139,
7390 140, 141, 142, 143, 144, 145, 146, -1, 148, 149,
7391 52, 53, -1, -1, 56, -1, 156, -1, -1, -1,
7392 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7393 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
7394 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
7395 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
7396 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
7397 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7398 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7399 -1, -1, -1, -1, -1, 137, 138, 139, 140, 141,
7400 142, 143, 144, 145, 146, -1, 148, 149, 52, 53,
7401 -1, -1, 56, -1, 156, -1, -1, -1, -1, -1,
7402 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7403 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
7404 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
7405 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
7406 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
7407 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7408 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7409 -1, -1, -1, 137, 138, 139, 140, 141, 142, 143,
7410 144, 145, 146, -1, 148, 149, 52, 53, -1, -1,
7411 56, -1, 156, -1, -1, -1, -1, -1, -1, -1,
7412 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7413 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
7414 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
7415 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7416 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
7417 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7418 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7419 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
7420 146, -1, 148, 149, 52, 53, -1, -1, 56, -1,
7421 156, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7422 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7423 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
7424 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
7425 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
7426 108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7427 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7428 -1, -1, -1, -1, -1, -1, -1, -1, -1, 137,
7429 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
7430 148, 149, 52, 53, -1, -1, 56, -1, 156, -1,
7431 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7432 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
7433 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
7434 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
7435 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
7436 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7437 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7438 -1, -1, -1, -1, -1, -1, -1, 137, 138, 139,
7439 140, 141, 142, 143, 144, 145, 146, -1, 148, 149,
7440 52, 53, -1, -1, 56, -1, 156, -1, -1, -1,
7441 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7442 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
7443 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
7444 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
7445 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
7446 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7447 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7448 -1, -1, -1, -1, -1, 137, 138, 139, 140, 141,
7449 142, 143, 144, 145, 146, -1, 148, 149, 52, 53,
7450 -1, -1, 56, -1, 156, -1, -1, -1, -1, -1,
7451 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7452 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
7453 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
7454 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
7455 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
7456 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7457 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7458 -1, -1, -1, 137, 138, 139, 140, 141, 142, 143,
7459 144, 145, 146, -1, 148, 149, 52, 53, -1, -1,
7460 56, -1, 156, -1, -1, -1, -1, -1, -1, -1,
7461 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7462 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
7463 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
7464 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7465 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
7466 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7467 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7468 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
7469 146, -1, 148, 149, 52, 53, -1, -1, 56, -1,
7470 156, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7471 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7472 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
7473 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
7474 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
7475 108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7476 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7477 -1, -1, -1, -1, -1, -1, -1, -1, -1, 137,
7478 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
7479 148, 149, 52, 53, -1, -1, 56, -1, 156, -1,
7480 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7481 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
7482 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
7483 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
7484 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
7485 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7486 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7487 -1, -1, -1, -1, -1, -1, -1, 137, 138, 139,
7488 140, 141, 142, 143, 144, 145, 146, -1, 148, 149,
7489 52, 53, -1, -1, 56, -1, 156, -1, -1, -1,
7490 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7491 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
7492 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
7493 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
7494 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
7495 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7496 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7497 -1, -1, -1, -1, -1, 137, 138, 139, 140, 141,
7498 142, 143, 144, 145, 146, -1, 148, 149, -1, -1,
7504static const yytype_int16 yystos[] =
7506 0, 165, 166, 1, 3, 4, 5, 6, 7, 11,
7507 12, 16, 18, 19, 20, 21, 22, 23, 24, 30,
7508 31, 32, 33, 34, 35, 36, 39, 45, 46, 47,
7509 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7510 59, 60, 61, 62, 63, 64, 65, 76, 77, 91,
7511 92, 99, 102, 103, 104, 105, 107, 110, 111, 112,
7512 113, 114, 115, 116, 117, 118, 147, 148, 149, 164,
7513 167, 168, 180, 182, 183, 184, 185, 186, 187, 191,
7514 195, 197, 203, 206, 208, 209, 210, 212, 214, 215,
7515 216, 217, 226, 227, 228, 229, 230, 231, 234, 255,
7516 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
7517 277, 278, 287, 288, 324, 329, 330, 380, 381, 382,
7518 383, 384, 385, 387, 388, 391, 392, 394, 395, 396,
7519 397, 411, 412, 414, 415, 416, 417, 418, 419, 420,
7520 421, 422, 483, 0, 3, 4, 5, 6, 7, 8,
7521 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
7522 19, 20, 21, 22, 23, 24, 25, 26, 30, 31,
7523 32, 33, 34, 35, 36, 37, 38, 39, 45, 46,
7524 47, 48, 49, 50, 51, 52, 53, 56, 76, 77,
7525 78, 79, 80, 81, 82, 83, 84, 87, 88, 93,
7526 94, 95, 96, 107, 108, 137, 138, 139, 140, 141,
7527 142, 143, 144, 145, 146, 148, 149, 156, 220, 221,
7528 222, 224, 225, 411, 179, 179, 179, 39, 58, 99,
7529 102, 107, 108, 109, 112, 148, 187, 209, 217, 227,
7530 238, 239, 245, 246, 249, 251, 252, 268, 418, 419,
7531 421, 422, 470, 471, 246, 157, 242, 247, 248, 154,
7532 157, 189, 54, 221, 189, 151, 169, 170, 235, 483,
7533 21, 22, 32, 195, 197, 208, 227, 268, 287, 288,
7534 227, 227, 227, 56, 47, 102, 171, 176, 177, 182,
7535 211, 212, 483, 171, 240, 251, 470, 483, 239, 469,
7536 470, 483, 46, 99, 147, 155, 195, 197, 216, 255,
7537 268, 418, 419, 422, 322, 220, 400, 413, 417, 400,
7538 401, 402, 161, 386, 386, 386, 386, 416, 203, 227,
7539 227, 154, 160, 163, 481, 482, 169, 40, 41, 42,
7540 43, 44, 37, 38, 157, 425, 426, 427, 428, 429,
7541 425, 428, 26, 151, 242, 248, 279, 331, 28, 280,
7542 328, 134, 155, 102, 107, 214, 134, 25, 78, 79,
7543 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
7544 90, 95, 96, 101, 135, 137, 138, 139, 140, 141,
7545 142, 143, 144, 145, 146, 233, 233, 69, 97, 98,
7546 153, 475, 476, 256, 1, 191, 198, 199, 199, 200,
7547 202, 202, 163, 199, 482, 99, 210, 217, 268, 293,
7548 418, 419, 422, 52, 56, 95, 99, 218, 219, 268,
7549 418, 419, 422, 219, 33, 34, 35, 36, 49, 50,
7550 51, 52, 56, 157, 194, 220, 420, 465, 466, 467,
7551 246, 157, 248, 98, 475, 476, 331, 383, 100, 100,
7552 155, 239, 56, 239, 239, 239, 400, 134, 101, 155,
7553 250, 483, 98, 153, 475, 100, 100, 155, 250, 92,
7554 244, 246, 251, 449, 470, 483, 246, 189, 191, 477,
7555 191, 54, 64, 65, 181, 157, 235, 236, 164, 425,
7556 425, 98, 475, 100, 178, 211, 158, 163, 482, 477,
7557 257, 159, 155, 189, 480, 155, 480, 152, 480, 189,
7558 56, 416, 213, 214, 427, 155, 98, 153, 475, 319,
7559 66, 119, 121, 122, 403, 119, 119, 403, 67, 403,
7560 161, 389, 398, 393, 399, 78, 160, 168, 171, 199,
7561 199, 199, 199, 235, 237, 191, 191, 52, 54, 55,
7562 56, 57, 58, 78, 92, 102, 107, 108, 109, 141,
7563 144, 298, 367, 426, 430, 431, 433, 434, 437, 438,
7564 440, 441, 442, 443, 449, 450, 451, 452, 453, 454,
7565 455, 456, 457, 458, 459, 460, 461, 462, 134, 265,
7566 443, 134, 266, 332, 333, 106, 207, 334, 335, 335,
7567 235, 211, 155, 216, 155, 235, 193, 227, 227, 227,
7568 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7569 192, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7570 227, 227, 52, 53, 56, 224, 472, 473, 244, 251,
7571 52, 53, 56, 224, 472, 242, 171, 174, 13, 289,
7572 481, 289, 199, 171, 171, 259, 163, 56, 98, 153,
7573 475, 25, 199, 52, 56, 218, 138, 424, 483, 98,
7574 153, 475, 264, 468, 69, 98, 474, 246, 477, 52,
7575 56, 242, 472, 235, 235, 223, 100, 124, 235, 239,
7576 239, 249, 252, 470, 52, 56, 244, 52, 56, 235,
7577 235, 471, 477, 155, 477, 155, 158, 477, 221, 236,
7578 227, 152, 134, 134, 56, 472, 472, 235, 170, 477,
7579 177, 158, 470, 155, 213, 52, 56, 244, 52, 56,
7580 320, 405, 404, 119, 390, 403, 66, 119, 119, 390,
7581 66, 119, 227, 152, 182, 102, 107, 294, 295, 296,
7582 297, 451, 155, 432, 463, 464, 155, 432, 155, 439,
7583 464, 477, 299, 300, 155, 439, 239, 34, 52, 52,
7584 155, 439, 34, 52, 39, 188, 209, 227, 232, 174,
7585 481, 188, 232, 174, 319, 152, 333, 319, 10, 68,
7586 286, 286, 107, 203, 204, 205, 239, 251, 253, 254,
7587 477, 213, 155, 99, 185, 190, 205, 217, 227, 239,
7588 241, 254, 268, 422, 341, 341, 189, 100, 100, 151,
7589 242, 248, 189, 478, 155, 100, 100, 242, 243, 248,
7590 483, 235, 286, 171, 13, 171, 27, 290, 481, 286,
7591 286, 17, 283, 337, 25, 258, 343, 52, 56, 244,
7592 52, 56, 260, 263, 423, 262, 52, 56, 218, 244,
7593 174, 191, 196, 477, 243, 248, 190, 227, 241, 190,
7594 241, 221, 235, 239, 250, 100, 100, 478, 100, 100,
7595 449, 470, 191, 39, 190, 241, 480, 214, 478, 321,
7596 406, 410, 417, 422, 386, 403, 386, 386, 386, 296,
7597 451, 155, 477, 155, 462, 430, 456, 458, 434, 437,
7598 454, 460, 134, 239, 438, 453, 460, 452, 454, 189,
7599 44, 44, 286, 286, 320, 152, 320, 239, 155, 44,
7600 213, 56, 44, 134, 44, 98, 153, 475, 339, 339,
7601 136, 235, 235, 333, 207, 159, 100, 235, 235, 207,
7602 8, 281, 376, 483, 14, 15, 284, 285, 291, 292,
7603 483, 292, 201, 107, 239, 336, 286, 341, 337, 286,
7604 478, 199, 481, 199, 174, 478, 286, 477, 194, 331,
7605 328, 235, 235, 100, 235, 235, 477, 155, 477, 189,
7606 179, 407, 477, 294, 297, 295, 432, 155, 439, 155,
7607 439, 155, 439, 155, 439, 439, 188, 232, 237, 237,
7608 321, 321, 107, 239, 237, 237, 235, 237, 52, 56,
7609 244, 52, 56, 340, 340, 227, 190, 241, 190, 241,
7610 152, 235, 190, 241, 190, 241, 239, 254, 377, 483,
7611 175, 284, 171, 199, 286, 286, 239, 155, 289, 339,
7612 286, 290, 174, 481, 286, 235, 157, 298, 325, 426,
7613 431, 435, 436, 438, 445, 446, 447, 448, 449, 454,
7614 460, 462, 408, 155, 155, 454, 454, 460, 454, 227,
7615 227, 179, 179, 239, 182, 182, 227, 478, 52, 56,
7616 58, 91, 92, 99, 102, 104, 105, 107, 112, 140,
7617 324, 346, 347, 348, 350, 353, 357, 358, 359, 362,
7618 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
7619 373, 374, 375, 380, 381, 384, 385, 388, 392, 395,
7620 397, 419, 456, 346, 190, 241, 101, 378, 483, 9,
7621 282, 379, 483, 172, 289, 107, 239, 171, 340, 261,
7622 286, 448, 155, 303, 483, 323, 155, 303, 155, 444,
7623 483, 155, 444, 155, 444, 171, 295, 439, 439, 155,
7624 439, 439, 139, 313, 314, 483, 313, 371, 371, 56,
7625 218, 340, 347, 355, 356, 357, 358, 361, 478, 189,
7626 340, 479, 52, 400, 52, 102, 417, 101, 155, 139,
7627 155, 155, 347, 89, 90, 98, 153, 157, 351, 352,
7628 52, 99, 217, 268, 418, 419, 422, 289, 176, 171,
7629 171, 239, 292, 337, 338, 345, 346, 171, 189, 316,
7630 462, 29, 123, 326, 458, 436, 454, 460, 438, 460,
7631 454, 0, 120, 409, 454, 298, 301, 302, 304, 305,
7632 307, 308, 310, 311, 312, 315, 452, 454, 455, 460,
7633 462, 171, 174, 347, 478, 347, 359, 361, 478, 155,
7634 152, 235, 124, 199, 372, 355, 359, 349, 360, 361,
7635 112, 364, 368, 371, 371, 218, 340, 478, 340, 477,
7636 355, 358, 362, 355, 358, 362, 56, 98, 153, 475,
7637 171, 163, 173, 291, 289, 40, 41, 286, 160, 158,
7638 327, 171, 303, 155, 444, 155, 444, 155, 444, 155,
7639 444, 444, 439, 303, 155, 303, 155, 309, 483, 316,
7640 300, 155, 306, 309, 99, 268, 155, 309, 477, 155,
7641 155, 354, 477, 155, 353, 155, 400, 477, 477, 477,
7642 478, 478, 478, 52, 56, 244, 52, 56, 376, 379,
7643 342, 199, 199, 52, 317, 318, 450, 174, 152, 454,
7644 454, 460, 454, 301, 458, 305, 307, 454, 460, 139,
7645 268, 308, 460, 56, 98, 454, 360, 362, 360, 359,
7646 361, 478, 171, 155, 189, 286, 444, 444, 155, 444,
7647 444, 303, 155, 309, 155, 309, 155, 309, 155, 309,
7648 52, 56, 309, 155, 479, 292, 343, 344, 318, 454,
7649 454, 454, 460, 454, 444, 309, 309, 155, 309, 309,
7654static const yytype_int16 yyr1[] =
7656 0, 162, 165, 163, 163, 164, 166, 167, 167, 167,
7657 168, 168, 169, 170, 171, 172, 173, 174, 175, 174,
7658 176, 176, 176, 177, 178, 177, 179, 180, 181, 182,
7659 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
7660 182, 182, 183, 182, 182, 182, 182, 182, 184, 185,
7661 186, 186, 186, 186, 186, 186, 186, 186, 185, 187,
7662 187, 185, 188, 188, 189, 189, 188, 190, 190, 190,
7663 191, 191, 191, 191, 191, 192, 191, 193, 191, 191,
7664 194, 195, 196, 197, 198, 199, 199, 200, 201, 202,
7665 203, 203, 204, 205, 206, 206, 207, 208, 208, 208,
7666 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
7667 209, 209, 210, 210, 211, 211, 212, 212, 212, 213,
7668 213, 212, 212, 212, 212, 212, 212, 212, 214, 214,
7669 215, 215, 216, 216, 216, 216, 216, 216, 216, 216,
7670 216, 217, 217, 217, 217, 217, 217, 217, 217, 217,
7671 218, 218, 219, 219, 219, 220, 220, 220, 220, 220,
7672 221, 221, 222, 223, 222, 224, 224, 224, 224, 224,
7673 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7674 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7675 224, 224, 224, 224, 224, 225, 225, 225, 225, 225,
7676 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7677 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7678 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7679 225, 225, 225, 225, 225, 225, 226, 227, 228, 228,
7680 228, 228, 228, 228, 228, 228, 227, 229, 229, 229,
7681 229, 229, 229, 227, 227, 227, 227, 227, 227, 227,
7682 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7683 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7684 230, 230, 227, 227, 227, 231, 232, 232, 232, 233,
7685 233, 233, 233, 234, 234, 235, 236, 237, 238, 239,
7686 240, 240, 240, 240, 241, 241, 242, 242, 242, 243,
7687 243, 244, 244, 244, 244, 244, 245, 246, 246, 246,
7688 246, 246, 246, 247, 248, 249, 249, 250, 250, 251,
7689 251, 251, 251, 252, 252, 253, 253, 254, 254, 254,
7690 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7691 255, 256, 255, 257, 255, 255, 255, 255, 255, 255,
7692 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7693 255, 255, 255, 255, 255, 258, 255, 259, 255, 255,
7694 260, 261, 255, 262, 255, 263, 255, 264, 255, 265,
7695 255, 266, 255, 255, 255, 255, 255, 267, 268, 269,
7696 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
7697 280, 281, 282, 283, 284, 285, 286, 286, 287, 288,
7698 289, 289, 289, 290, 290, 291, 291, 292, 292, 293,
7699 293, 294, 294, 295, 295, 296, 296, 296, 296, 296,
7700 297, 297, 298, 298, 299, 300, 301, 301, 302, 302,
7701 303, 303, 304, 304, 304, 304, 305, 306, 307, 308,
7702 308, 309, 309, 310, 310, 310, 310, 310, 310, 310,
7703 310, 310, 310, 310, 310, 311, 311, 311, 312, 311,
7704 313, 313, 314, 315, 315, 316, 316, 317, 317, 318,
7705 318, 319, 320, 321, 322, 323, 324, 325, 325, 326,
7706 327, 326, 328, 329, 329, 329, 329, 329, 330, 330,
7707 330, 330, 330, 330, 330, 330, 331, 331, 332, 333,
7708 334, 335, 336, 336, 336, 336, 337, 338, 338, 339,
7709 340, 341, 342, 343, 344, 344, 345, 345, 345, 346,
7710 346, 346, 346, 346, 346, 347, 348, 348, 349, 350,
7711 350, 351, 352, 353, 353, 353, 353, 353, 353, 353,
7712 353, 353, 353, 353, 353, 353, 354, 353, 353, 353,
7713 355, 355, 355, 355, 355, 355, 356, 356, 357, 357,
7714 358, 359, 359, 360, 360, 361, 362, 362, 362, 362,
7715 363, 363, 364, 364, 365, 365, 366, 366, 367, 368,
7716 368, 369, 370, 370, 370, 370, 370, 370, 369, 369,
7717 369, 369, 371, 371, 371, 371, 371, 371, 371, 371,
7718 371, 371, 372, 373, 373, 374, 375, 375, 375, 376,
7719 376, 377, 377, 377, 378, 378, 379, 379, 380, 380,
7720 381, 382, 382, 382, 383, 384, 385, 386, 386, 387,
7721 388, 389, 389, 390, 390, 391, 392, 393, 393, 394,
7722 395, 396, 397, 398, 398, 399, 399, 400, 400, 401,
7723 401, 402, 402, 403, 404, 403, 405, 406, 407, 408,
7724 403, 409, 409, 410, 410, 411, 411, 412, 413, 413,
7725 414, 415, 415, 416, 416, 416, 416, 417, 417, 417,
7726 418, 418, 418, 419, 419, 419, 419, 419, 419, 419,
7727 420, 420, 421, 421, 422, 422, 423, 424, 424, 425,
7728 425, 426, 427, 428, 429, 428, 430, 430, 431, 431,
7729 432, 432, 433, 433, 433, 433, 434, 434, 435, 435,
7730 435, 435, 436, 436, 437, 438, 438, 439, 439, 440,
7731 440, 440, 440, 440, 440, 440, 440, 440, 440, 440,
7732 440, 441, 441, 442, 441, 441, 443, 444, 444, 445,
7733 445, 445, 445, 445, 445, 445, 445, 445, 445, 445,
7734 445, 446, 446, 447, 446, 446, 448, 449, 450, 450,
7735 450, 450, 451, 451, 452, 453, 453, 454, 454, 455,
7736 456, 456, 457, 458, 458, 459, 459, 460, 460, 461,
7737 461, 462, 462, 462, 463, 463, 464, 465, 466, 467,
7738 468, 467, 469, 469, 470, 470, 471, 471, 471, 471,
7739 471, 471, 472, 472, 472, 472, 473, 473, 473, 474,
7740 474, 475, 475, 476, 476, 477, 478, 479, 480, 480,
7741 481, 481, 482, 482, 483
7745static const yytype_int8 yyr2[] =
7747 0, 2, 0, 0, 1, 2, 2, 1, 1, 3,
7748 1, 2, 1, 3, 2, 0, 0, 8, 0, 5,
7749 1, 1, 3, 1, 0, 3, 0, 2, 0, 4,
7750 3, 3, 3, 2, 3, 3, 3, 3, 4, 4,
7751 1, 4, 4, 1, 7, 4, 1, 1, 4, 1,
7752 4, 7, 6, 6, 6, 6, 5, 4, 1, 4,
7753 4, 1, 1, 4, 0, 1, 3, 1, 4, 1,
7754 1, 3, 3, 3, 2, 0, 7, 0, 7, 1,
7755 1, 2, 0, 5, 1, 1, 1, 0, 0, 4,
7756 1, 1, 1, 1, 1, 4, 3, 1, 1, 1,
7757 2, 3, 4, 5, 4, 5, 6, 2, 2, 2,
7758 2, 2, 1, 3, 1, 3, 1, 2, 3, 1,
7759 3, 5, 2, 4, 2, 4, 1, 3, 1, 3,
7760 2, 3, 1, 1, 4, 3, 3, 3, 3, 2,
7761 1, 1, 1, 4, 3, 3, 3, 3, 2, 1,
7762 1, 1, 2, 1, 3, 1, 1, 1, 1, 1,
7763 1, 1, 1, 0, 4, 1, 1, 1, 1, 1,
7764 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7765 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7766 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7767 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7768 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7769 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7770 1, 1, 1, 1, 1, 1, 4, 1, 4, 7,
7771 6, 6, 6, 6, 5, 4, 1, 3, 3, 2,
7772 2, 2, 2, 1, 3, 3, 3, 3, 3, 3,
7773 4, 2, 2, 3, 3, 3, 3, 1, 3, 3,
7774 3, 3, 3, 2, 2, 3, 3, 3, 3, 4,
7775 4, 4, 1, 1, 1, 6, 1, 4, 3, 1,
7776 1, 1, 1, 3, 3, 1, 1, 1, 1, 1,
7777 1, 2, 4, 2, 1, 4, 3, 5, 3, 1,
7778 1, 1, 1, 2, 4, 2, 1, 1, 1, 2,
7779 2, 4, 1, 0, 2, 2, 1, 2, 1, 1,
7780 1, 3, 3, 2, 1, 1, 1, 3, 4, 2,
7781 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7782 1, 0, 4, 0, 4, 3, 3, 2, 3, 3,
7783 1, 4, 3, 1, 6, 4, 3, 2, 1, 2,
7784 1, 6, 6, 4, 4, 0, 6, 0, 5, 5,
7785 0, 0, 9, 0, 6, 0, 7, 0, 5, 0,
7786 5, 0, 5, 1, 1, 1, 1, 1, 1, 1,
7787 1, 1, 2, 2, 1, 2, 1, 1, 1, 1,
7788 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7789 1, 1, 2, 1, 1, 1, 5, 1, 2, 1,
7790 1, 1, 3, 1, 3, 1, 3, 5, 1, 3,
7791 2, 1, 1, 1, 0, 2, 2, 1, 1, 3,
7792 2, 1, 4, 2, 2, 1, 1, 1, 3, 1,
7793 3, 2, 1, 6, 8, 4, 6, 4, 6, 4,
7794 6, 2, 4, 2, 4, 1, 2, 2, 1, 1,
7795 1, 1, 4, 0, 1, 1, 4, 1, 3, 1,
7796 1, 0, 0, 0, 0, 0, 9, 4, 1, 3,
7797 0, 4, 3, 2, 4, 5, 5, 3, 2, 4,
7798 4, 3, 3, 2, 1, 4, 3, 3, 0, 7,
7799 0, 7, 1, 2, 3, 4, 5, 1, 1, 0,
7800 0, 0, 0, 9, 1, 1, 1, 3, 3, 1,
7801 2, 3, 1, 1, 1, 1, 3, 1, 0, 4,
7802 1, 2, 2, 1, 1, 4, 4, 4, 3, 4,
7803 4, 4, 3, 3, 3, 2, 0, 6, 2, 4,
7804 1, 1, 2, 2, 4, 1, 2, 3, 1, 3,
7805 5, 2, 1, 1, 3, 1, 3, 1, 2, 1,
7806 1, 3, 2, 1, 1, 3, 2, 1, 2, 1,
7807 1, 1, 3, 3, 2, 2, 2, 2, 1, 1,
7808 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7809 1, 1, 1, 2, 2, 4, 2, 3, 1, 6,
7810 1, 1, 1, 1, 2, 1, 3, 1, 1, 1,
7811 1, 1, 1, 2, 3, 3, 3, 1, 2, 4,
7812 1, 0, 3, 1, 2, 4, 1, 0, 3, 4,
7813 1, 4, 1, 0, 3, 0, 3, 0, 2, 0,
7814 2, 0, 2, 1, 0, 3, 0, 0, 0, 0,
7815 7, 1, 1, 1, 1, 1, 1, 2, 1, 1,
7816 3, 1, 2, 1, 1, 1, 1, 1, 1, 1,
7817 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7818 1, 1, 1, 1, 1, 1, 0, 4, 1, 1,
7819 1, 0, 3, 1, 0, 3, 2, 1, 1, 3,
7820 2, 1, 4, 2, 2, 1, 1, 1, 4, 2,
7821 2, 1, 1, 1, 3, 1, 3, 2, 1, 6,
7822 8, 4, 6, 4, 6, 4, 6, 2, 4, 2,
7823 4, 1, 2, 1, 1, 1, 1, 2, 1, 6,
7824 8, 4, 6, 4, 6, 4, 6, 2, 4, 2,
7825 4, 1, 2, 1, 1, 1, 1, 1, 1, 1,
7826 1, 1, 1, 1, 1, 1, 3, 1, 3, 1,
7827 1, 1, 1, 2, 1, 1, 1, 2, 1, 1,
7828 1, 2, 2, 1, 0, 1, 1, 1, 1, 1,
7829 0, 4, 1, 2, 1, 3, 3, 2, 1, 4,
7830 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7831 1, 1, 1, 1, 1, 2, 2, 2, 1, 1,
7836enum { YYENOMEM = -2 };
7838#define yyerrok (yyerrstatus = 0)
7839#define yyclearin (yychar = YYEMPTY)
7841#define YYACCEPT goto yyacceptlab
7842#define YYABORT goto yyabortlab
7843#define YYERROR goto yyerrorlab
7844#define YYNOMEM goto yyexhaustedlab
7847#define YYRECOVERING() (!!yyerrstatus)
7849#define YYBACKUP(Token, Value) \
7851 if (yychar == YYEMPTY) \
7855 YYPOPSTACK (yylen); \
7861 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
7868#define YYERRCODE YYUNDEF
7874#ifndef YYLLOC_DEFAULT
7875# define YYLLOC_DEFAULT(Current, Rhs, N) \
7879 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
7880 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
7881 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
7882 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
7886 (Current).first_line = (Current).last_line = \
7887 YYRHSLOC (Rhs, 0).last_line; \
7888 (Current).first_column = (Current).last_column = \
7889 YYRHSLOC (Rhs, 0).last_column; \
7894#define YYRHSLOC(Rhs, K) ((Rhs)[K])
7902# define YYFPRINTF fprintf
7905# define YYDPRINTF(Args) \
7916# ifndef YYLOCATION_PRINT
7918# if defined YY_LOCATION_PRINT
7922# define YYLOCATION_PRINT(File, Loc, p) YY_LOCATION_PRINT(File, *(Loc), p)
7924# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
7930yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
7933 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
7934 if (0 <= yylocp->first_line)
7936 res += YYFPRINTF (yyo,
"%d", yylocp->first_line);
7937 if (0 <= yylocp->first_column)
7938 res += YYFPRINTF (yyo,
".%d", yylocp->first_column);
7940 if (0 <= yylocp->last_line)
7942 if (yylocp->first_line < yylocp->last_line)
7944 res += YYFPRINTF (yyo,
"-%d", yylocp->last_line);
7946 res += YYFPRINTF (yyo,
".%d", end_col);
7948 else if (0 <= end_col && yylocp->first_column < end_col)
7949 res += YYFPRINTF (yyo,
"-%d", end_col);
7954# define YYLOCATION_PRINT yy_location_print_
7958# define YY_LOCATION_PRINT(File, Loc, p) YYLOCATION_PRINT(File, &(Loc), p)
7962# define YYLOCATION_PRINT(File, Loc, p) ((void) 0)
7965# define YY_LOCATION_PRINT YYLOCATION_PRINT
7971# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p) \
7975 YYFPRINTF (stderr, "%s ", Title); \
7976 yy_symbol_print (stderr, \
7977 Kind, Value, Location, p); \
7978 YYFPRINTF (stderr, "\n"); \
7988yy_symbol_value_print (
FILE *yyo,
7991 FILE *yyoutput = yyo;
7993 YY_USE (yylocationp);
7997 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
8000 case YYSYMBOL_keyword_class:
8003 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8008 case YYSYMBOL_keyword_module:
8011 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8016 case YYSYMBOL_keyword_def:
8019 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8024 case YYSYMBOL_keyword_undef:
8027 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8032 case YYSYMBOL_keyword_begin:
8035 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8040 case YYSYMBOL_keyword_rescue:
8043 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8048 case YYSYMBOL_keyword_ensure:
8051 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8056 case YYSYMBOL_keyword_end:
8059 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8064 case YYSYMBOL_keyword_if:
8067 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8072 case YYSYMBOL_keyword_unless:
8075 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8080 case YYSYMBOL_keyword_then:
8083 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8088 case YYSYMBOL_keyword_elsif:
8091 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8096 case YYSYMBOL_keyword_else:
8099 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8104 case YYSYMBOL_keyword_case:
8107 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8112 case YYSYMBOL_keyword_when:
8115 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8120 case YYSYMBOL_keyword_while:
8123 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8128 case YYSYMBOL_keyword_until:
8131 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8136 case YYSYMBOL_keyword_for:
8139 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8144 case YYSYMBOL_keyword_break:
8147 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8152 case YYSYMBOL_keyword_next:
8155 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8160 case YYSYMBOL_keyword_redo:
8163 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8168 case YYSYMBOL_keyword_retry:
8171 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8176 case YYSYMBOL_keyword_in:
8179 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8184 case YYSYMBOL_keyword_do:
8187 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8192 case YYSYMBOL_keyword_do_cond:
8195 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8200 case YYSYMBOL_keyword_do_block:
8203 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8208 case YYSYMBOL_keyword_do_LAMBDA:
8211 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8216 case YYSYMBOL_keyword_return:
8219 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8224 case YYSYMBOL_keyword_yield:
8227 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8232 case YYSYMBOL_keyword_super:
8235 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8240 case YYSYMBOL_keyword_self:
8243 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8248 case YYSYMBOL_keyword_nil:
8251 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8256 case YYSYMBOL_keyword_true:
8259 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8264 case YYSYMBOL_keyword_false:
8267 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8272 case YYSYMBOL_keyword_and:
8275 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8280 case YYSYMBOL_keyword_or:
8283 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8288 case YYSYMBOL_keyword_not:
8291 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8296 case YYSYMBOL_modifier_if:
8299 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8304 case YYSYMBOL_modifier_unless:
8307 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8312 case YYSYMBOL_modifier_while:
8315 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8320 case YYSYMBOL_modifier_until:
8323 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8328 case YYSYMBOL_modifier_rescue:
8331 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8336 case YYSYMBOL_keyword_alias:
8339 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8344 case YYSYMBOL_keyword_defined:
8347 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8352 case YYSYMBOL_keyword_BEGIN:
8355 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8360 case YYSYMBOL_keyword_END:
8363 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8368 case YYSYMBOL_keyword__LINE__:
8371 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8376 case YYSYMBOL_keyword__FILE__:
8379 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8384 case YYSYMBOL_keyword__ENCODING__:
8387 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8392 case YYSYMBOL_tIDENTIFIER:
8395 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8403 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8408 case YYSYMBOL_tGVAR:
8411 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8416 case YYSYMBOL_tIVAR:
8419 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8424 case YYSYMBOL_tCONSTANT:
8427 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8432 case YYSYMBOL_tCVAR:
8435 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8440 case YYSYMBOL_tLABEL:
8443 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8448 case YYSYMBOL_tINTEGER:
8451 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8453 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8456 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8459 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8461 case NODE_IMAGINARY:
8462 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8471 case YYSYMBOL_tFLOAT:
8474 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8476 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8479 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8482 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8484 case NODE_IMAGINARY:
8485 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8494 case YYSYMBOL_tRATIONAL:
8497 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8499 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8502 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8505 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8507 case NODE_IMAGINARY:
8508 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8517 case YYSYMBOL_tIMAGINARY:
8520 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8522 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8525 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8528 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8530 case NODE_IMAGINARY:
8531 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8540 case YYSYMBOL_tCHAR:
8543 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8545 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8548 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8551 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8553 case NODE_IMAGINARY:
8554 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8563 case YYSYMBOL_tNTH_REF:
8566 rb_parser_printf(p,
"$%ld", RNODE_NTH_REF(((*yyvaluep).node))->nd_nth);
8571 case YYSYMBOL_tBACK_REF:
8574 rb_parser_printf(p,
"$%c", (
int)RNODE_BACK_REF(((*yyvaluep).node))->nd_nth);
8579 case YYSYMBOL_tSTRING_CONTENT:
8582 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8584 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8587 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8590 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8592 case NODE_IMAGINARY:
8593 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8605 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8610 case YYSYMBOL_70_backslash_:
8613 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8618 case YYSYMBOL_72_escaped_horizontal_tab_:
8621 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8626 case YYSYMBOL_73_escaped_form_feed_:
8629 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8634 case YYSYMBOL_74_escaped_carriage_return_:
8637 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8642 case YYSYMBOL_75_escaped_vertical_tab_:
8645 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8650 case YYSYMBOL_tANDDOT:
8653 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8658 case YYSYMBOL_tCOLON2:
8661 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8666 case YYSYMBOL_tOP_ASGN:
8669 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8674 case YYSYMBOL_compstmt_top_stmts:
8677 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8678 rb_parser_printf(p,
"NODE_SPECIAL");
8680 else if (((*yyvaluep).node)) {
8681 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8687 case YYSYMBOL_top_stmts:
8690 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8691 rb_parser_printf(p,
"NODE_SPECIAL");
8693 else if (((*yyvaluep).node)) {
8694 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8700 case YYSYMBOL_top_stmt:
8703 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8704 rb_parser_printf(p,
"NODE_SPECIAL");
8706 else if (((*yyvaluep).node)) {
8707 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8713 case YYSYMBOL_block_open:
8716 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
8717 rb_parser_printf(p,
"NODE_SPECIAL");
8719 else if (((*yyvaluep).node_exits)) {
8720 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8726 case YYSYMBOL_begin_block:
8729 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8730 rb_parser_printf(p,
"NODE_SPECIAL");
8732 else if (((*yyvaluep).node)) {
8733 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8739 case YYSYMBOL_compstmt_stmts:
8742 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8743 rb_parser_printf(p,
"NODE_SPECIAL");
8745 else if (((*yyvaluep).node)) {
8746 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8752 case YYSYMBOL_bodystmt:
8755 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8756 rb_parser_printf(p,
"NODE_SPECIAL");
8758 else if (((*yyvaluep).node)) {
8759 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8765 case YYSYMBOL_stmts:
8768 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8769 rb_parser_printf(p,
"NODE_SPECIAL");
8771 else if (((*yyvaluep).node)) {
8772 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8778 case YYSYMBOL_stmt_or_begin:
8781 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8782 rb_parser_printf(p,
"NODE_SPECIAL");
8784 else if (((*yyvaluep).node)) {
8785 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8791 case YYSYMBOL_allow_exits:
8794 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
8795 rb_parser_printf(p,
"NODE_SPECIAL");
8797 else if (((*yyvaluep).node_exits)) {
8798 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8807 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8808 rb_parser_printf(p,
"NODE_SPECIAL");
8810 else if (((*yyvaluep).node)) {
8811 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8817 case YYSYMBOL_asgn_mrhs:
8820 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8821 rb_parser_printf(p,
"NODE_SPECIAL");
8823 else if (((*yyvaluep).node)) {
8824 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8830 case YYSYMBOL_asgn_command_rhs:
8833 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8834 rb_parser_printf(p,
"NODE_SPECIAL");
8836 else if (((*yyvaluep).node)) {
8837 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8843 case YYSYMBOL_command_asgn:
8846 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8847 rb_parser_printf(p,
"NODE_SPECIAL");
8849 else if (((*yyvaluep).node)) {
8850 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8856 case YYSYMBOL_op_asgn_command_rhs:
8859 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8860 rb_parser_printf(p,
"NODE_SPECIAL");
8862 else if (((*yyvaluep).node)) {
8863 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8869 case YYSYMBOL_def_endless_method_endless_command:
8872 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8873 rb_parser_printf(p,
"NODE_SPECIAL");
8875 else if (((*yyvaluep).node)) {
8876 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8882 case YYSYMBOL_endless_command:
8885 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8886 rb_parser_printf(p,
"NODE_SPECIAL");
8888 else if (((*yyvaluep).node)) {
8889 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8895 case YYSYMBOL_command_rhs:
8898 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8899 rb_parser_printf(p,
"NODE_SPECIAL");
8901 else if (((*yyvaluep).node)) {
8902 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8911 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8912 rb_parser_printf(p,
"NODE_SPECIAL");
8914 else if (((*yyvaluep).node)) {
8915 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8921 case YYSYMBOL_def_name:
8924 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8929 case YYSYMBOL_defn_head:
8932 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
8933 rb_parser_printf(p,
"NODE_SPECIAL");
8935 else if (((*yyvaluep).node_def_temp)) {
8936 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8942 case YYSYMBOL_defs_head:
8945 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
8946 rb_parser_printf(p,
"NODE_SPECIAL");
8948 else if (((*yyvaluep).node_def_temp)) {
8949 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8955 case YYSYMBOL_value_expr_expr:
8958 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8959 rb_parser_printf(p,
"NODE_SPECIAL");
8961 else if (((*yyvaluep).node)) {
8962 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8968 case YYSYMBOL_expr_value:
8971 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8972 rb_parser_printf(p,
"NODE_SPECIAL");
8974 else if (((*yyvaluep).node)) {
8975 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8981 case YYSYMBOL_expr_value_do:
8984 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8985 rb_parser_printf(p,
"NODE_SPECIAL");
8987 else if (((*yyvaluep).node)) {
8988 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8994 case YYSYMBOL_command_call:
8997 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8998 rb_parser_printf(p,
"NODE_SPECIAL");
9000 else if (((*yyvaluep).node)) {
9001 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9007 case YYSYMBOL_value_expr_command_call:
9010 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9011 rb_parser_printf(p,
"NODE_SPECIAL");
9013 else if (((*yyvaluep).node)) {
9014 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9020 case YYSYMBOL_command_call_value:
9023 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9024 rb_parser_printf(p,
"NODE_SPECIAL");
9026 else if (((*yyvaluep).node)) {
9027 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9033 case YYSYMBOL_block_command:
9036 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9037 rb_parser_printf(p,
"NODE_SPECIAL");
9039 else if (((*yyvaluep).node)) {
9040 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9046 case YYSYMBOL_cmd_brace_block:
9049 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9050 rb_parser_printf(p,
"NODE_SPECIAL");
9052 else if (((*yyvaluep).node)) {
9053 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9059 case YYSYMBOL_fcall:
9062 if ((
NODE *)((*yyvaluep).node_fcall) == (
NODE *)-1) {
9063 rb_parser_printf(p,
"NODE_SPECIAL");
9065 else if (((*yyvaluep).node_fcall)) {
9066 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_fcall)))));
9072 case YYSYMBOL_command:
9075 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9076 rb_parser_printf(p,
"NODE_SPECIAL");
9078 else if (((*yyvaluep).node)) {
9079 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9088 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9089 rb_parser_printf(p,
"NODE_SPECIAL");
9091 else if (((*yyvaluep).node_masgn)) {
9092 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9098 case YYSYMBOL_mlhs_inner:
9101 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9102 rb_parser_printf(p,
"NODE_SPECIAL");
9104 else if (((*yyvaluep).node_masgn)) {
9105 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9111 case YYSYMBOL_mlhs_basic:
9114 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9115 rb_parser_printf(p,
"NODE_SPECIAL");
9117 else if (((*yyvaluep).node_masgn)) {
9118 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9124 case YYSYMBOL_mlhs_items_mlhs_item:
9127 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9128 rb_parser_printf(p,
"NODE_SPECIAL");
9130 else if (((*yyvaluep).node)) {
9131 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9137 case YYSYMBOL_mlhs_item:
9140 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9141 rb_parser_printf(p,
"NODE_SPECIAL");
9143 else if (((*yyvaluep).node)) {
9144 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9150 case YYSYMBOL_mlhs_head:
9153 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9154 rb_parser_printf(p,
"NODE_SPECIAL");
9156 else if (((*yyvaluep).node)) {
9157 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9163 case YYSYMBOL_mlhs_node:
9166 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9167 rb_parser_printf(p,
"NODE_SPECIAL");
9169 else if (((*yyvaluep).node)) {
9170 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9179 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9180 rb_parser_printf(p,
"NODE_SPECIAL");
9182 else if (((*yyvaluep).node)) {
9183 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9189 case YYSYMBOL_cname:
9192 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9197 case YYSYMBOL_cpath:
9200 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9201 rb_parser_printf(p,
"NODE_SPECIAL");
9203 else if (((*yyvaluep).node)) {
9204 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9210 case YYSYMBOL_fname:
9213 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9218 case YYSYMBOL_fitem:
9221 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9222 rb_parser_printf(p,
"NODE_SPECIAL");
9224 else if (((*yyvaluep).node)) {
9225 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9231 case YYSYMBOL_undef_list:
9234 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9235 rb_parser_printf(p,
"NODE_SPECIAL");
9237 else if (((*yyvaluep).node)) {
9238 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9247 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9252 case YYSYMBOL_reswords:
9255 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9260 case YYSYMBOL_asgn_arg_rhs:
9263 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9264 rb_parser_printf(p,
"NODE_SPECIAL");
9266 else if (((*yyvaluep).node)) {
9267 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9276 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9277 rb_parser_printf(p,
"NODE_SPECIAL");
9279 else if (((*yyvaluep).node)) {
9280 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9286 case YYSYMBOL_op_asgn_arg_rhs:
9289 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9290 rb_parser_printf(p,
"NODE_SPECIAL");
9292 else if (((*yyvaluep).node)) {
9293 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9299 case YYSYMBOL_range_expr_arg:
9302 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9303 rb_parser_printf(p,
"NODE_SPECIAL");
9305 else if (((*yyvaluep).node)) {
9306 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9312 case YYSYMBOL_def_endless_method_endless_arg:
9315 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9316 rb_parser_printf(p,
"NODE_SPECIAL");
9318 else if (((*yyvaluep).node)) {
9319 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9325 case YYSYMBOL_ternary:
9328 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9329 rb_parser_printf(p,
"NODE_SPECIAL");
9331 else if (((*yyvaluep).node)) {
9332 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9338 case YYSYMBOL_endless_arg:
9341 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9342 rb_parser_printf(p,
"NODE_SPECIAL");
9344 else if (((*yyvaluep).node)) {
9345 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9351 case YYSYMBOL_relop:
9354 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9359 case YYSYMBOL_rel_expr:
9362 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9363 rb_parser_printf(p,
"NODE_SPECIAL");
9365 else if (((*yyvaluep).node)) {
9366 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9372 case YYSYMBOL_value_expr_arg:
9375 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9376 rb_parser_printf(p,
"NODE_SPECIAL");
9378 else if (((*yyvaluep).node)) {
9379 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9385 case YYSYMBOL_arg_value:
9388 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9389 rb_parser_printf(p,
"NODE_SPECIAL");
9391 else if (((*yyvaluep).node)) {
9392 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9398 case YYSYMBOL_aref_args:
9401 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9402 rb_parser_printf(p,
"NODE_SPECIAL");
9404 else if (((*yyvaluep).node)) {
9405 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9411 case YYSYMBOL_arg_rhs:
9414 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9415 rb_parser_printf(p,
"NODE_SPECIAL");
9417 else if (((*yyvaluep).node)) {
9418 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9424 case YYSYMBOL_paren_args:
9427 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9428 rb_parser_printf(p,
"NODE_SPECIAL");
9430 else if (((*yyvaluep).node)) {
9431 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9437 case YYSYMBOL_opt_paren_args:
9440 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9441 rb_parser_printf(p,
"NODE_SPECIAL");
9443 else if (((*yyvaluep).node)) {
9444 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9450 case YYSYMBOL_opt_call_args:
9453 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9454 rb_parser_printf(p,
"NODE_SPECIAL");
9456 else if (((*yyvaluep).node)) {
9457 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9463 case YYSYMBOL_value_expr_command:
9466 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9467 rb_parser_printf(p,
"NODE_SPECIAL");
9469 else if (((*yyvaluep).node)) {
9470 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9476 case YYSYMBOL_call_args:
9479 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9480 rb_parser_printf(p,
"NODE_SPECIAL");
9482 else if (((*yyvaluep).node)) {
9483 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9489 case YYSYMBOL_command_args:
9492 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9493 rb_parser_printf(p,
"NODE_SPECIAL");
9495 else if (((*yyvaluep).node)) {
9496 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9502 case YYSYMBOL_block_arg:
9505 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
9506 rb_parser_printf(p,
"NODE_SPECIAL");
9508 else if (((*yyvaluep).node_block_pass)) {
9509 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9515 case YYSYMBOL_opt_block_arg:
9518 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
9519 rb_parser_printf(p,
"NODE_SPECIAL");
9521 else if (((*yyvaluep).node_block_pass)) {
9522 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9531 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9532 rb_parser_printf(p,
"NODE_SPECIAL");
9534 else if (((*yyvaluep).node)) {
9535 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9541 case YYSYMBOL_arg_splat:
9544 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9545 rb_parser_printf(p,
"NODE_SPECIAL");
9547 else if (((*yyvaluep).node)) {
9548 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9554 case YYSYMBOL_mrhs_arg:
9557 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9558 rb_parser_printf(p,
"NODE_SPECIAL");
9560 else if (((*yyvaluep).node)) {
9561 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9570 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9571 rb_parser_printf(p,
"NODE_SPECIAL");
9573 else if (((*yyvaluep).node)) {
9574 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9580 case YYSYMBOL_primary:
9583 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9584 rb_parser_printf(p,
"NODE_SPECIAL");
9586 else if (((*yyvaluep).node)) {
9587 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9593 case YYSYMBOL_value_expr_primary:
9596 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9597 rb_parser_printf(p,
"NODE_SPECIAL");
9599 else if (((*yyvaluep).node)) {
9600 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9606 case YYSYMBOL_primary_value:
9609 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9610 rb_parser_printf(p,
"NODE_SPECIAL");
9612 else if (((*yyvaluep).node)) {
9613 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9619 case YYSYMBOL_k_while:
9622 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9623 rb_parser_printf(p,
"NODE_SPECIAL");
9625 else if (((*yyvaluep).node_exits)) {
9626 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9632 case YYSYMBOL_k_until:
9635 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9636 rb_parser_printf(p,
"NODE_SPECIAL");
9638 else if (((*yyvaluep).node_exits)) {
9639 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9645 case YYSYMBOL_k_for:
9648 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9649 rb_parser_printf(p,
"NODE_SPECIAL");
9651 else if (((*yyvaluep).node_exits)) {
9652 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9658 case YYSYMBOL_k_def:
9661 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
9662 rb_parser_printf(p,
"NODE_SPECIAL");
9664 else if (((*yyvaluep).node_def_temp)) {
9665 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
9674 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9679 case YYSYMBOL_if_tail:
9682 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9683 rb_parser_printf(p,
"NODE_SPECIAL");
9685 else if (((*yyvaluep).node)) {
9686 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9692 case YYSYMBOL_opt_else:
9695 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9696 rb_parser_printf(p,
"NODE_SPECIAL");
9698 else if (((*yyvaluep).node)) {
9699 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9705 case YYSYMBOL_for_var:
9708 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9709 rb_parser_printf(p,
"NODE_SPECIAL");
9711 else if (((*yyvaluep).node)) {
9712 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9718 case YYSYMBOL_f_marg:
9721 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9722 rb_parser_printf(p,
"NODE_SPECIAL");
9724 else if (((*yyvaluep).node)) {
9725 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9731 case YYSYMBOL_mlhs_items_f_marg:
9734 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9735 rb_parser_printf(p,
"NODE_SPECIAL");
9737 else if (((*yyvaluep).node)) {
9738 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9744 case YYSYMBOL_f_margs:
9747 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9748 rb_parser_printf(p,
"NODE_SPECIAL");
9750 else if (((*yyvaluep).node_masgn)) {
9751 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9757 case YYSYMBOL_f_rest_marg:
9760 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9761 rb_parser_printf(p,
"NODE_SPECIAL");
9763 else if (((*yyvaluep).node)) {
9764 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9770 case YYSYMBOL_f_any_kwrest:
9773 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9778 case YYSYMBOL_f_kw_primary_value:
9781 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9782 rb_parser_printf(p,
"NODE_SPECIAL");
9784 else if (((*yyvaluep).node_kw_arg)) {
9785 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9791 case YYSYMBOL_f_kwarg_primary_value:
9794 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9795 rb_parser_printf(p,
"NODE_SPECIAL");
9797 else if (((*yyvaluep).node_kw_arg)) {
9798 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9804 case YYSYMBOL_opt_f_block_arg_none:
9807 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9812 case YYSYMBOL_args_tail_basic_primary_value_none:
9815 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9816 rb_parser_printf(p,
"NODE_SPECIAL");
9818 else if (((*yyvaluep).node_args)) {
9819 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9825 case YYSYMBOL_block_args_tail:
9828 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9829 rb_parser_printf(p,
"NODE_SPECIAL");
9831 else if (((*yyvaluep).node_args)) {
9832 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9838 case YYSYMBOL_excessed_comma:
9841 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9846 case YYSYMBOL_f_opt_primary_value:
9849 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9850 rb_parser_printf(p,
"NODE_SPECIAL");
9852 else if (((*yyvaluep).node_opt_arg)) {
9853 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9859 case YYSYMBOL_f_opt_arg_primary_value:
9862 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9863 rb_parser_printf(p,
"NODE_SPECIAL");
9865 else if (((*yyvaluep).node_opt_arg)) {
9866 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9872 case YYSYMBOL_opt_args_tail_block_args_tail_none:
9875 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9876 rb_parser_printf(p,
"NODE_SPECIAL");
9878 else if (((*yyvaluep).node_args)) {
9879 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9885 case YYSYMBOL_args_list_primary_value_opt_args_tail_block_args_tail_none:
9888 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9889 rb_parser_printf(p,
"NODE_SPECIAL");
9891 else if (((*yyvaluep).node_args)) {
9892 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9898 case YYSYMBOL_block_param:
9901 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9902 rb_parser_printf(p,
"NODE_SPECIAL");
9904 else if (((*yyvaluep).node_args)) {
9905 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9911 case YYSYMBOL_tail_only_args_block_args_tail:
9914 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9915 rb_parser_printf(p,
"NODE_SPECIAL");
9917 else if (((*yyvaluep).node_args)) {
9918 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9924 case YYSYMBOL_opt_block_param_def:
9927 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9928 rb_parser_printf(p,
"NODE_SPECIAL");
9930 else if (((*yyvaluep).node_args)) {
9931 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9937 case YYSYMBOL_block_param_def:
9940 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9941 rb_parser_printf(p,
"NODE_SPECIAL");
9943 else if (((*yyvaluep).node_args)) {
9944 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9950 case YYSYMBOL_opt_block_param:
9953 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9954 rb_parser_printf(p,
"NODE_SPECIAL");
9956 else if (((*yyvaluep).node_args)) {
9957 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9963 case YYSYMBOL_opt_bv_decl:
9966 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9971 case YYSYMBOL_bv_decls:
9974 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9982 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9987 case YYSYMBOL_numparam:
9990 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9991 rb_parser_printf(p,
"NODE_SPECIAL");
9993 else if (((*yyvaluep).node)) {
9994 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10000 case YYSYMBOL_it_id:
10001#line 2625 "parse.y"
10003 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10005#line 10006 "parse.c"
10008 case YYSYMBOL_lambda:
10009#line 2616 "parse.y"
10011 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10012 rb_parser_printf(p,
"NODE_SPECIAL");
10014 else if (((*yyvaluep).node)) {
10015 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10018#line 10019 "parse.c"
10021 case YYSYMBOL_f_larglist:
10022#line 2616 "parse.y"
10024 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10025 rb_parser_printf(p,
"NODE_SPECIAL");
10027 else if (((*yyvaluep).node_args)) {
10028 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10031#line 10032 "parse.c"
10034 case YYSYMBOL_do_block:
10035#line 2616 "parse.y"
10037 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10038 rb_parser_printf(p,
"NODE_SPECIAL");
10040 else if (((*yyvaluep).node)) {
10041 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10044#line 10045 "parse.c"
10047 case YYSYMBOL_block_call:
10048#line 2616 "parse.y"
10050 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10051 rb_parser_printf(p,
"NODE_SPECIAL");
10053 else if (((*yyvaluep).node)) {
10054 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10057#line 10058 "parse.c"
10060 case YYSYMBOL_method_call:
10061#line 2616 "parse.y"
10063 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10064 rb_parser_printf(p,
"NODE_SPECIAL");
10066 else if (((*yyvaluep).node)) {
10067 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10070#line 10071 "parse.c"
10073 case YYSYMBOL_brace_block:
10074#line 2616 "parse.y"
10076 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10077 rb_parser_printf(p,
"NODE_SPECIAL");
10079 else if (((*yyvaluep).node)) {
10080 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10083#line 10084 "parse.c"
10086 case YYSYMBOL_brace_body:
10087#line 2616 "parse.y"
10089 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10090 rb_parser_printf(p,
"NODE_SPECIAL");
10092 else if (((*yyvaluep).node)) {
10093 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10096#line 10097 "parse.c"
10099 case YYSYMBOL_do_body:
10100#line 2616 "parse.y"
10102 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10103 rb_parser_printf(p,
"NODE_SPECIAL");
10105 else if (((*yyvaluep).node)) {
10106 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10109#line 10110 "parse.c"
10112 case YYSYMBOL_case_args:
10113#line 2616 "parse.y"
10115 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10116 rb_parser_printf(p,
"NODE_SPECIAL");
10118 else if (((*yyvaluep).node)) {
10119 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10122#line 10123 "parse.c"
10125 case YYSYMBOL_case_body:
10126#line 2616 "parse.y"
10128 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10129 rb_parser_printf(p,
"NODE_SPECIAL");
10131 else if (((*yyvaluep).node)) {
10132 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10135#line 10136 "parse.c"
10138 case YYSYMBOL_cases:
10139#line 2616 "parse.y"
10141 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10142 rb_parser_printf(p,
"NODE_SPECIAL");
10144 else if (((*yyvaluep).node)) {
10145 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10148#line 10149 "parse.c"
10151 case YYSYMBOL_p_case_body:
10152#line 2616 "parse.y"
10154 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10155 rb_parser_printf(p,
"NODE_SPECIAL");
10157 else if (((*yyvaluep).node)) {
10158 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10161#line 10162 "parse.c"
10164 case YYSYMBOL_p_cases:
10165#line 2616 "parse.y"
10167 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10168 rb_parser_printf(p,
"NODE_SPECIAL");
10170 else if (((*yyvaluep).node)) {
10171 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10174#line 10175 "parse.c"
10177 case YYSYMBOL_p_top_expr:
10178#line 2616 "parse.y"
10180 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10181 rb_parser_printf(p,
"NODE_SPECIAL");
10183 else if (((*yyvaluep).node)) {
10184 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10187#line 10188 "parse.c"
10190 case YYSYMBOL_p_top_expr_body:
10191#line 2616 "parse.y"
10193 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10194 rb_parser_printf(p,
"NODE_SPECIAL");
10196 else if (((*yyvaluep).node)) {
10197 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10200#line 10201 "parse.c"
10203 case YYSYMBOL_p_expr:
10204#line 2616 "parse.y"
10206 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10207 rb_parser_printf(p,
"NODE_SPECIAL");
10209 else if (((*yyvaluep).node)) {
10210 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10213#line 10214 "parse.c"
10216 case YYSYMBOL_p_as:
10217#line 2616 "parse.y"
10219 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10220 rb_parser_printf(p,
"NODE_SPECIAL");
10222 else if (((*yyvaluep).node)) {
10223 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10226#line 10227 "parse.c"
10229 case YYSYMBOL_p_alt:
10230#line 2616 "parse.y"
10232 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10233 rb_parser_printf(p,
"NODE_SPECIAL");
10235 else if (((*yyvaluep).node)) {
10236 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10239#line 10240 "parse.c"
10242 case YYSYMBOL_p_expr_basic:
10243#line 2616 "parse.y"
10245 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10246 rb_parser_printf(p,
"NODE_SPECIAL");
10248 else if (((*yyvaluep).node)) {
10249 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10252#line 10253 "parse.c"
10255 case YYSYMBOL_p_args:
10256#line 2616 "parse.y"
10258 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10259 rb_parser_printf(p,
"NODE_SPECIAL");
10261 else if (((*yyvaluep).node)) {
10262 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10265#line 10266 "parse.c"
10268 case YYSYMBOL_p_args_head:
10269#line 2616 "parse.y"
10271 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10272 rb_parser_printf(p,
"NODE_SPECIAL");
10274 else if (((*yyvaluep).node)) {
10275 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10278#line 10279 "parse.c"
10281 case YYSYMBOL_p_args_tail:
10282#line 2616 "parse.y"
10284 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10285 rb_parser_printf(p,
"NODE_SPECIAL");
10287 else if (((*yyvaluep).node)) {
10288 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10291#line 10292 "parse.c"
10294 case YYSYMBOL_p_find:
10295#line 2616 "parse.y"
10297 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10298 rb_parser_printf(p,
"NODE_SPECIAL");
10300 else if (((*yyvaluep).node)) {
10301 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10304#line 10305 "parse.c"
10307 case YYSYMBOL_p_rest:
10308#line 2616 "parse.y"
10310 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10311 rb_parser_printf(p,
"NODE_SPECIAL");
10313 else if (((*yyvaluep).node)) {
10314 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10317#line 10318 "parse.c"
10320 case YYSYMBOL_p_args_post:
10321#line 2616 "parse.y"
10323 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10324 rb_parser_printf(p,
"NODE_SPECIAL");
10326 else if (((*yyvaluep).node)) {
10327 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10330#line 10331 "parse.c"
10333 case YYSYMBOL_p_arg:
10334#line 2616 "parse.y"
10336 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10337 rb_parser_printf(p,
"NODE_SPECIAL");
10339 else if (((*yyvaluep).node)) {
10340 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10343#line 10344 "parse.c"
10346 case YYSYMBOL_p_kwargs:
10347#line 2616 "parse.y"
10349 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10350 rb_parser_printf(p,
"NODE_SPECIAL");
10352 else if (((*yyvaluep).node)) {
10353 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10356#line 10357 "parse.c"
10359 case YYSYMBOL_p_kwarg:
10360#line 2616 "parse.y"
10362 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10363 rb_parser_printf(p,
"NODE_SPECIAL");
10365 else if (((*yyvaluep).node)) {
10366 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10369#line 10370 "parse.c"
10372 case YYSYMBOL_p_kw:
10373#line 2616 "parse.y"
10375 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10376 rb_parser_printf(p,
"NODE_SPECIAL");
10378 else if (((*yyvaluep).node)) {
10379 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10382#line 10383 "parse.c"
10385 case YYSYMBOL_p_kw_label:
10386#line 2625 "parse.y"
10388 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10390#line 10391 "parse.c"
10393 case YYSYMBOL_p_kwrest:
10394#line 2625 "parse.y"
10396 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10398#line 10399 "parse.c"
10401 case YYSYMBOL_p_kwnorest:
10402#line 2625 "parse.y"
10404 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10406#line 10407 "parse.c"
10409 case YYSYMBOL_p_any_kwrest:
10410#line 2625 "parse.y"
10412 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10414#line 10415 "parse.c"
10417 case YYSYMBOL_p_value:
10418#line 2616 "parse.y"
10420 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10421 rb_parser_printf(p,
"NODE_SPECIAL");
10423 else if (((*yyvaluep).node)) {
10424 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10427#line 10428 "parse.c"
10430 case YYSYMBOL_range_expr_p_primitive:
10431#line 2616 "parse.y"
10433 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10434 rb_parser_printf(p,
"NODE_SPECIAL");
10436 else if (((*yyvaluep).node)) {
10437 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10440#line 10441 "parse.c"
10443 case YYSYMBOL_p_primitive:
10444#line 2616 "parse.y"
10446 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10447 rb_parser_printf(p,
"NODE_SPECIAL");
10449 else if (((*yyvaluep).node)) {
10450 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10453#line 10454 "parse.c"
10456 case YYSYMBOL_p_variable:
10457#line 2616 "parse.y"
10459 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10460 rb_parser_printf(p,
"NODE_SPECIAL");
10462 else if (((*yyvaluep).node)) {
10463 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10466#line 10467 "parse.c"
10469 case YYSYMBOL_p_var_ref:
10470#line 2616 "parse.y"
10472 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10473 rb_parser_printf(p,
"NODE_SPECIAL");
10475 else if (((*yyvaluep).node)) {
10476 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10479#line 10480 "parse.c"
10482 case YYSYMBOL_p_expr_ref:
10483#line 2616 "parse.y"
10485 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10486 rb_parser_printf(p,
"NODE_SPECIAL");
10488 else if (((*yyvaluep).node)) {
10489 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10492#line 10493 "parse.c"
10495 case YYSYMBOL_p_const:
10496#line 2616 "parse.y"
10498 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10499 rb_parser_printf(p,
"NODE_SPECIAL");
10501 else if (((*yyvaluep).node)) {
10502 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10505#line 10506 "parse.c"
10508 case YYSYMBOL_opt_rescue:
10509#line 2616 "parse.y"
10511 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10512 rb_parser_printf(p,
"NODE_SPECIAL");
10514 else if (((*yyvaluep).node)) {
10515 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10518#line 10519 "parse.c"
10521 case YYSYMBOL_exc_list:
10522#line 2616 "parse.y"
10524 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10525 rb_parser_printf(p,
"NODE_SPECIAL");
10527 else if (((*yyvaluep).node)) {
10528 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10531#line 10532 "parse.c"
10534 case YYSYMBOL_exc_var:
10535#line 2616 "parse.y"
10537 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10538 rb_parser_printf(p,
"NODE_SPECIAL");
10540 else if (((*yyvaluep).node)) {
10541 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10544#line 10545 "parse.c"
10547 case YYSYMBOL_opt_ensure:
10548#line 2616 "parse.y"
10550 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10551 rb_parser_printf(p,
"NODE_SPECIAL");
10553 else if (((*yyvaluep).node)) {
10554 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10557#line 10558 "parse.c"
10560 case YYSYMBOL_literal:
10561#line 2616 "parse.y"
10563 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10564 rb_parser_printf(p,
"NODE_SPECIAL");
10566 else if (((*yyvaluep).node)) {
10567 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10570#line 10571 "parse.c"
10573 case YYSYMBOL_strings:
10574#line 2616 "parse.y"
10576 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10577 rb_parser_printf(p,
"NODE_SPECIAL");
10579 else if (((*yyvaluep).node)) {
10580 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10583#line 10584 "parse.c"
10586 case YYSYMBOL_string:
10587#line 2616 "parse.y"
10589 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10590 rb_parser_printf(p,
"NODE_SPECIAL");
10592 else if (((*yyvaluep).node)) {
10593 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10596#line 10597 "parse.c"
10599 case YYSYMBOL_string1:
10600#line 2616 "parse.y"
10602 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10603 rb_parser_printf(p,
"NODE_SPECIAL");
10605 else if (((*yyvaluep).node)) {
10606 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10609#line 10610 "parse.c"
10612 case YYSYMBOL_xstring:
10613#line 2616 "parse.y"
10615 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10616 rb_parser_printf(p,
"NODE_SPECIAL");
10618 else if (((*yyvaluep).node)) {
10619 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10622#line 10623 "parse.c"
10625 case YYSYMBOL_regexp:
10626#line 2616 "parse.y"
10628 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10629 rb_parser_printf(p,
"NODE_SPECIAL");
10631 else if (((*yyvaluep).node)) {
10632 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10635#line 10636 "parse.c"
10638 case YYSYMBOL_words_tWORDS_BEG_word_list:
10639#line 2616 "parse.y"
10641 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10642 rb_parser_printf(p,
"NODE_SPECIAL");
10644 else if (((*yyvaluep).node)) {
10645 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10648#line 10649 "parse.c"
10651 case YYSYMBOL_words:
10652#line 2616 "parse.y"
10654 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10655 rb_parser_printf(p,
"NODE_SPECIAL");
10657 else if (((*yyvaluep).node)) {
10658 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10661#line 10662 "parse.c"
10664 case YYSYMBOL_word_list:
10665#line 2616 "parse.y"
10667 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10668 rb_parser_printf(p,
"NODE_SPECIAL");
10670 else if (((*yyvaluep).node)) {
10671 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10674#line 10675 "parse.c"
10677 case YYSYMBOL_word:
10678#line 2616 "parse.y"
10680 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10681 rb_parser_printf(p,
"NODE_SPECIAL");
10683 else if (((*yyvaluep).node)) {
10684 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10687#line 10688 "parse.c"
10690 case YYSYMBOL_words_tSYMBOLS_BEG_symbol_list:
10691#line 2616 "parse.y"
10693 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10694 rb_parser_printf(p,
"NODE_SPECIAL");
10696 else if (((*yyvaluep).node)) {
10697 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10700#line 10701 "parse.c"
10703 case YYSYMBOL_symbols:
10704#line 2616 "parse.y"
10706 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10707 rb_parser_printf(p,
"NODE_SPECIAL");
10709 else if (((*yyvaluep).node)) {
10710 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10713#line 10714 "parse.c"
10716 case YYSYMBOL_symbol_list:
10717#line 2616 "parse.y"
10719 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10720 rb_parser_printf(p,
"NODE_SPECIAL");
10722 else if (((*yyvaluep).node)) {
10723 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10726#line 10727 "parse.c"
10729 case YYSYMBOL_words_tQWORDS_BEG_qword_list:
10730#line 2616 "parse.y"
10732 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10733 rb_parser_printf(p,
"NODE_SPECIAL");
10735 else if (((*yyvaluep).node)) {
10736 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10739#line 10740 "parse.c"
10742 case YYSYMBOL_qwords:
10743#line 2616 "parse.y"
10745 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10746 rb_parser_printf(p,
"NODE_SPECIAL");
10748 else if (((*yyvaluep).node)) {
10749 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10752#line 10753 "parse.c"
10755 case YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list:
10756#line 2616 "parse.y"
10758 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10759 rb_parser_printf(p,
"NODE_SPECIAL");
10761 else if (((*yyvaluep).node)) {
10762 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10765#line 10766 "parse.c"
10768 case YYSYMBOL_qsymbols:
10769#line 2616 "parse.y"
10771 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10772 rb_parser_printf(p,
"NODE_SPECIAL");
10774 else if (((*yyvaluep).node)) {
10775 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10778#line 10779 "parse.c"
10781 case YYSYMBOL_qword_list:
10782#line 2616 "parse.y"
10784 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10785 rb_parser_printf(p,
"NODE_SPECIAL");
10787 else if (((*yyvaluep).node)) {
10788 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10791#line 10792 "parse.c"
10794 case YYSYMBOL_qsym_list:
10795#line 2616 "parse.y"
10797 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10798 rb_parser_printf(p,
"NODE_SPECIAL");
10800 else if (((*yyvaluep).node)) {
10801 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10804#line 10805 "parse.c"
10807 case YYSYMBOL_string_contents:
10808#line 2616 "parse.y"
10810 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10811 rb_parser_printf(p,
"NODE_SPECIAL");
10813 else if (((*yyvaluep).node)) {
10814 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10817#line 10818 "parse.c"
10820 case YYSYMBOL_xstring_contents:
10821#line 2616 "parse.y"
10823 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10824 rb_parser_printf(p,
"NODE_SPECIAL");
10826 else if (((*yyvaluep).node)) {
10827 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10830#line 10831 "parse.c"
10833 case YYSYMBOL_regexp_contents:
10834#line 2616 "parse.y"
10836 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10837 rb_parser_printf(p,
"NODE_SPECIAL");
10839 else if (((*yyvaluep).node)) {
10840 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10843#line 10844 "parse.c"
10846 case YYSYMBOL_string_content:
10847#line 2616 "parse.y"
10849 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10850 rb_parser_printf(p,
"NODE_SPECIAL");
10852 else if (((*yyvaluep).node)) {
10853 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10856#line 10857 "parse.c"
10859 case YYSYMBOL_string_dvar:
10860#line 2616 "parse.y"
10862 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10863 rb_parser_printf(p,
"NODE_SPECIAL");
10865 else if (((*yyvaluep).node)) {
10866 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10869#line 10870 "parse.c"
10872 case YYSYMBOL_symbol:
10873#line 2616 "parse.y"
10875 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10876 rb_parser_printf(p,
"NODE_SPECIAL");
10878 else if (((*yyvaluep).node)) {
10879 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10882#line 10883 "parse.c"
10885 case YYSYMBOL_ssym:
10886#line 2616 "parse.y"
10888 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10889 rb_parser_printf(p,
"NODE_SPECIAL");
10891 else if (((*yyvaluep).node)) {
10892 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10895#line 10896 "parse.c"
10899#line 2625 "parse.y"
10901 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10903#line 10904 "parse.c"
10906 case YYSYMBOL_dsym:
10907#line 2616 "parse.y"
10909 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10910 rb_parser_printf(p,
"NODE_SPECIAL");
10912 else if (((*yyvaluep).node)) {
10913 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10916#line 10917 "parse.c"
10919 case YYSYMBOL_numeric:
10920#line 2616 "parse.y"
10922 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10923 rb_parser_printf(p,
"NODE_SPECIAL");
10925 else if (((*yyvaluep).node)) {
10926 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10929#line 10930 "parse.c"
10932 case YYSYMBOL_simple_numeric:
10933#line 2616 "parse.y"
10935 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10936 rb_parser_printf(p,
"NODE_SPECIAL");
10938 else if (((*yyvaluep).node)) {
10939 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10942#line 10943 "parse.c"
10945 case YYSYMBOL_nonlocal_var:
10946#line 2625 "parse.y"
10948 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10950#line 10951 "parse.c"
10953 case YYSYMBOL_user_variable:
10954#line 2625 "parse.y"
10956 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10958#line 10959 "parse.c"
10961 case YYSYMBOL_keyword_variable:
10962#line 2625 "parse.y"
10964 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10966#line 10967 "parse.c"
10969 case YYSYMBOL_var_ref:
10970#line 2616 "parse.y"
10972 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10973 rb_parser_printf(p,
"NODE_SPECIAL");
10975 else if (((*yyvaluep).node)) {
10976 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10979#line 10980 "parse.c"
10982 case YYSYMBOL_var_lhs:
10983#line 2616 "parse.y"
10985 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10986 rb_parser_printf(p,
"NODE_SPECIAL");
10988 else if (((*yyvaluep).node)) {
10989 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10992#line 10993 "parse.c"
10995 case YYSYMBOL_backref:
10996#line 2616 "parse.y"
10998 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10999 rb_parser_printf(p,
"NODE_SPECIAL");
11001 else if (((*yyvaluep).node)) {
11002 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11005#line 11006 "parse.c"
11008 case YYSYMBOL_superclass:
11009#line 2616 "parse.y"
11011 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11012 rb_parser_printf(p,
"NODE_SPECIAL");
11014 else if (((*yyvaluep).node)) {
11015 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11018#line 11019 "parse.c"
11021 case YYSYMBOL_f_opt_paren_args:
11022#line 2616 "parse.y"
11024 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11025 rb_parser_printf(p,
"NODE_SPECIAL");
11027 else if (((*yyvaluep).node_args)) {
11028 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11031#line 11032 "parse.c"
11034 case YYSYMBOL_f_empty_arg:
11035#line 2616 "parse.y"
11037 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11038 rb_parser_printf(p,
"NODE_SPECIAL");
11040 else if (((*yyvaluep).node_args)) {
11041 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11044#line 11045 "parse.c"
11047 case YYSYMBOL_f_paren_args:
11048#line 2616 "parse.y"
11050 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11051 rb_parser_printf(p,
"NODE_SPECIAL");
11053 else if (((*yyvaluep).node_args)) {
11054 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11057#line 11058 "parse.c"
11060 case YYSYMBOL_f_arglist:
11061#line 2616 "parse.y"
11063 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11064 rb_parser_printf(p,
"NODE_SPECIAL");
11066 else if (((*yyvaluep).node_args)) {
11067 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11070#line 11071 "parse.c"
11073 case YYSYMBOL_f_kw_arg_value:
11074#line 2616 "parse.y"
11076 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
11077 rb_parser_printf(p,
"NODE_SPECIAL");
11079 else if (((*yyvaluep).node_kw_arg)) {
11080 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
11083#line 11084 "parse.c"
11086 case YYSYMBOL_f_kwarg_arg_value:
11087#line 2616 "parse.y"
11089 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
11090 rb_parser_printf(p,
"NODE_SPECIAL");
11092 else if (((*yyvaluep).node_kw_arg)) {
11093 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
11096#line 11097 "parse.c"
11099 case YYSYMBOL_opt_f_block_arg_opt_comma:
11100#line 2625 "parse.y"
11102 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11104#line 11105 "parse.c"
11107 case YYSYMBOL_args_tail_basic_arg_value_opt_comma:
11108#line 2616 "parse.y"
11110 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11111 rb_parser_printf(p,
"NODE_SPECIAL");
11113 else if (((*yyvaluep).node_args)) {
11114 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11117#line 11118 "parse.c"
11120 case YYSYMBOL_args_tail:
11121#line 2616 "parse.y"
11123 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11124 rb_parser_printf(p,
"NODE_SPECIAL");
11126 else if (((*yyvaluep).node_args)) {
11127 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11130#line 11131 "parse.c"
11133 case YYSYMBOL_args_tail_basic_arg_value_none:
11134#line 2616 "parse.y"
11136 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11137 rb_parser_printf(p,
"NODE_SPECIAL");
11139 else if (((*yyvaluep).node_args)) {
11140 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11143#line 11144 "parse.c"
11146 case YYSYMBOL_largs_tail:
11147#line 2616 "parse.y"
11149 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11150 rb_parser_printf(p,
"NODE_SPECIAL");
11152 else if (((*yyvaluep).node_args)) {
11153 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11156#line 11157 "parse.c"
11159 case YYSYMBOL_f_opt_arg_value:
11160#line 2616 "parse.y"
11162 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
11163 rb_parser_printf(p,
"NODE_SPECIAL");
11165 else if (((*yyvaluep).node_opt_arg)) {
11166 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
11169#line 11170 "parse.c"
11172 case YYSYMBOL_f_opt_arg_arg_value:
11173#line 2616 "parse.y"
11175 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
11176 rb_parser_printf(p,
"NODE_SPECIAL");
11178 else if (((*yyvaluep).node_opt_arg)) {
11179 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
11182#line 11183 "parse.c"
11185 case YYSYMBOL_opt_args_tail_args_tail_opt_comma:
11186#line 2616 "parse.y"
11188 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11189 rb_parser_printf(p,
"NODE_SPECIAL");
11191 else if (((*yyvaluep).node_args)) {
11192 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11195#line 11196 "parse.c"
11198 case YYSYMBOL_args_list_arg_value_opt_args_tail_args_tail_opt_comma:
11199#line 2616 "parse.y"
11201 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11202 rb_parser_printf(p,
"NODE_SPECIAL");
11204 else if (((*yyvaluep).node_args)) {
11205 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11208#line 11209 "parse.c"
11211 case YYSYMBOL_f_args_list_args_tail_opt_comma:
11212#line 2616 "parse.y"
11214 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11215 rb_parser_printf(p,
"NODE_SPECIAL");
11217 else if (((*yyvaluep).node_args)) {
11218 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11221#line 11222 "parse.c"
11224 case YYSYMBOL_tail_only_args_args_tail:
11225#line 2616 "parse.y"
11227 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11228 rb_parser_printf(p,
"NODE_SPECIAL");
11230 else if (((*yyvaluep).node_args)) {
11231 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11234#line 11235 "parse.c"
11237 case YYSYMBOL_f_args:
11238#line 2616 "parse.y"
11240 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11241 rb_parser_printf(p,
"NODE_SPECIAL");
11243 else if (((*yyvaluep).node_args)) {
11244 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11247#line 11248 "parse.c"
11250 case YYSYMBOL_opt_args_tail_largs_tail_none:
11251#line 2616 "parse.y"
11253 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11254 rb_parser_printf(p,
"NODE_SPECIAL");
11256 else if (((*yyvaluep).node_args)) {
11257 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11260#line 11261 "parse.c"
11263 case YYSYMBOL_args_list_arg_value_opt_args_tail_largs_tail_none:
11264#line 2616 "parse.y"
11266 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11267 rb_parser_printf(p,
"NODE_SPECIAL");
11269 else if (((*yyvaluep).node_args)) {
11270 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11273#line 11274 "parse.c"
11276 case YYSYMBOL_f_args_list_largs_tail_none:
11277#line 2616 "parse.y"
11279 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11280 rb_parser_printf(p,
"NODE_SPECIAL");
11282 else if (((*yyvaluep).node_args)) {
11283 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11286#line 11287 "parse.c"
11289 case YYSYMBOL_tail_only_args_largs_tail:
11290#line 2616 "parse.y"
11292 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11293 rb_parser_printf(p,
"NODE_SPECIAL");
11295 else if (((*yyvaluep).node_args)) {
11296 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11299#line 11300 "parse.c"
11302 case YYSYMBOL_f_largs:
11303#line 2616 "parse.y"
11305 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11306 rb_parser_printf(p,
"NODE_SPECIAL");
11308 else if (((*yyvaluep).node_args)) {
11309 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11312#line 11313 "parse.c"
11315 case YYSYMBOL_args_forward:
11316#line 2625 "parse.y"
11318 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11320#line 11321 "parse.c"
11323 case YYSYMBOL_f_bad_arg:
11324#line 2625 "parse.y"
11326 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11328#line 11329 "parse.c"
11331 case YYSYMBOL_f_norm_arg:
11332#line 2625 "parse.y"
11334 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11336#line 11337 "parse.c"
11339 case YYSYMBOL_f_arg_asgn:
11340#line 2625 "parse.y"
11342 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11344#line 11345 "parse.c"
11347 case YYSYMBOL_f_arg_item:
11348#line 2616 "parse.y"
11350 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
11351 rb_parser_printf(p,
"NODE_SPECIAL");
11353 else if (((*yyvaluep).node_args_aux)) {
11354 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11357#line 11358 "parse.c"
11360 case YYSYMBOL_f_arg:
11361#line 2616 "parse.y"
11363 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
11364 rb_parser_printf(p,
"NODE_SPECIAL");
11366 else if (((*yyvaluep).node_args_aux)) {
11367 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11370#line 11371 "parse.c"
11373 case YYSYMBOL_f_label:
11374#line 2625 "parse.y"
11376 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11378#line 11379 "parse.c"
11381 case YYSYMBOL_f_no_kwarg:
11382#line 2625 "parse.y"
11384 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11386#line 11387 "parse.c"
11389 case YYSYMBOL_f_kwrest:
11390#line 2625 "parse.y"
11392 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11394#line 11395 "parse.c"
11397 case YYSYMBOL_f_rest_arg:
11398#line 2625 "parse.y"
11400 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11402#line 11403 "parse.c"
11405 case YYSYMBOL_f_block_arg:
11406#line 2625 "parse.y"
11408 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11410#line 11411 "parse.c"
11413 case YYSYMBOL_opt_comma:
11414#line 2625 "parse.y"
11416 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11418#line 11419 "parse.c"
11421 case YYSYMBOL_value_expr_singleton_expr:
11422#line 2616 "parse.y"
11424 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11425 rb_parser_printf(p,
"NODE_SPECIAL");
11427 else if (((*yyvaluep).node)) {
11428 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11431#line 11432 "parse.c"
11434 case YYSYMBOL_singleton:
11435#line 2616 "parse.y"
11437 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11438 rb_parser_printf(p,
"NODE_SPECIAL");
11440 else if (((*yyvaluep).node)) {
11441 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11444#line 11445 "parse.c"
11447 case YYSYMBOL_singleton_expr:
11448#line 2616 "parse.y"
11450 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11451 rb_parser_printf(p,
"NODE_SPECIAL");
11453 else if (((*yyvaluep).node)) {
11454 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11457#line 11458 "parse.c"
11460 case YYSYMBOL_assoc_list:
11461#line 2616 "parse.y"
11463 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11464 rb_parser_printf(p,
"NODE_SPECIAL");
11466 else if (((*yyvaluep).node)) {
11467 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11470#line 11471 "parse.c"
11473 case YYSYMBOL_assocs:
11474#line 2616 "parse.y"
11476 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11477 rb_parser_printf(p,
"NODE_SPECIAL");
11479 else if (((*yyvaluep).node)) {
11480 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11483#line 11484 "parse.c"
11486 case YYSYMBOL_assoc:
11487#line 2616 "parse.y"
11489 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11490 rb_parser_printf(p,
"NODE_SPECIAL");
11492 else if (((*yyvaluep).node)) {
11493 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11496#line 11497 "parse.c"
11499 case YYSYMBOL_operation2:
11500#line 2625 "parse.y"
11502 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11504#line 11505 "parse.c"
11507 case YYSYMBOL_operation3:
11508#line 2625 "parse.y"
11510 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11512#line 11513 "parse.c"
11515 case YYSYMBOL_dot_or_colon:
11516#line 2625 "parse.y"
11518 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11520#line 11521 "parse.c"
11523 case YYSYMBOL_call_op:
11524#line 2625 "parse.y"
11526 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11528#line 11529 "parse.c"
11531 case YYSYMBOL_call_op2:
11532#line 2625 "parse.y"
11534 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11536#line 11537 "parse.c"
11539 case YYSYMBOL_none:
11540#line 2616 "parse.y"
11542 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11543 rb_parser_printf(p,
"NODE_SPECIAL");
11545 else if (((*yyvaluep).node)) {
11546 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11549#line 11550 "parse.c"
11555 YY_IGNORE_MAYBE_UNINITIALIZED_END
11564yy_symbol_print (
FILE *yyo,
11567 YYFPRINTF (yyo,
"%s %s (",
11568 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
11570 YYLOCATION_PRINT (yyo, yylocationp, p);
11571 YYFPRINTF (yyo,
": ");
11572 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
11573 YYFPRINTF (yyo,
")");
11582yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop,
struct parser_params *p)
11584 YYFPRINTF (stderr,
"Stack now");
11585 for (; yybottom <= yytop; yybottom++)
11587 int yybot = *yybottom;
11588 YYFPRINTF (stderr,
" %d", yybot);
11590 YYFPRINTF (stderr,
"\n");
11593# define YY_STACK_PRINT(Bottom, Top, p) \
11596 yy_stack_print ((Bottom), (Top), p); \
11605yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp,
YYLTYPE *yylsp,
11608 int yylno = yyrline[yyrule];
11609 int yynrhs = yyr2[yyrule];
11611 YYFPRINTF (stderr,
"Reducing stack by rule %d (line %d):\n",
11612 yyrule - 1, yylno);
11614 for (yyi = 0; yyi < yynrhs; yyi++)
11616 YYFPRINTF (stderr,
" $%d = ", yyi + 1);
11617 yy_symbol_print (stderr,
11618 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
11619 &yyvsp[(yyi + 1) - (yynrhs)],
11620 &(yylsp[(yyi + 1) - (yynrhs)]), p);
11621 YYFPRINTF (stderr,
"\n");
11625# define YY_REDUCE_PRINT(Rule, p) \
11628 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
11637# define YYDPRINTF(Args) ((void) 0)
11638# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p)
11639# define YY_STACK_PRINT(Bottom, Top, p)
11640# define YY_REDUCE_PRINT(Rule, p)
11646# define YYINITDEPTH 200
11657# define YYMAXDEPTH 10000
11665 yysymbol_kind_t yytoken;
11677 yysymbol_kind_t yyarg[],
int yyargn)
11681 int yyn = yypact[+*yyctx->yyssp];
11682 if (!yypact_value_is_default (yyn))
11687 int yyxbegin = yyn < 0 ? -yyn : 0;
11689 int yychecklim = YYLAST - yyn + 1;
11690 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
11692 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
11693 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
11694 && !yytable_value_is_error (yytable[yyx + yyn]))
11698 else if (yycount == yyargn)
11701 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
11704 if (yyarg && yycount == 0 && 0 < yyargn)
11705 yyarg[0] = YYSYMBOL_YYEMPTY;
11713# if defined __GLIBC__ && defined _STRING_H
11714# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
11718yystrlen (
const char *yystr)
11721 for (yylen = 0; yystr[yylen]; yylen++)
11729# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
11730# define yystpcpy stpcpy
11735yystpcpy (
char *yydest,
const char *yysrc)
11737 char *yyd = yydest;
11738 const char *yys = yysrc;
11740 while ((*yyd++ = *yys++) !=
'\0')
11757yytnamerr (
char *yyres,
const char *yystr)
11761 YYPTRDIFF_T yyn = 0;
11762 char const *yyp = yystr;
11768 goto do_not_strip_quotes;
11771 if (*++yyp !=
'\\')
11772 goto do_not_strip_quotes;
11788 do_not_strip_quotes: ;
11792 return yystpcpy (yyres, yystr) - yyres;
11794 return yystrlen (yystr);
11801 yysymbol_kind_t yyarg[],
int yyargn)
11828 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
11832 yyarg[yycount] = yyctx->yytoken;
11834 yyn = yypcontext_expected_tokens (yyctx,
11835 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
11836 if (yyn == YYENOMEM)
11853yysyntax_error (YYPTRDIFF_T *yymsg_alloc,
char **yymsg,
11856 enum { YYARGS_MAX = 5 };
11858 const char *yyformat = YY_NULLPTR;
11861 yysymbol_kind_t yyarg[YYARGS_MAX];
11863 YYPTRDIFF_T yysize = 0;
11866 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
11867 if (yycount == YYENOMEM)
11872#define YYCASE_(N, S) \
11877 YYCASE_(0, YY_(
"syntax error"));
11878 YYCASE_(1, YY_(
"syntax error, unexpected %s"));
11879 YYCASE_(2, YY_(
"syntax error, unexpected %s, expecting %s"));
11880 YYCASE_(3, YY_(
"syntax error, unexpected %s, expecting %s or %s"));
11881 YYCASE_(4, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
11882 YYCASE_(5, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
11888 yysize = yystrlen (yyformat) - 2 * yycount + 1;
11891 for (yyi = 0; yyi < yycount; ++yyi)
11893 YYPTRDIFF_T yysize1
11894 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
11895 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
11902 if (*yymsg_alloc < yysize)
11904 *yymsg_alloc = 2 * yysize;
11905 if (! (yysize <= *yymsg_alloc
11906 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
11907 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
11915 char *yyp = *yymsg;
11917 while ((*yyp = *yyformat) !=
'\0')
11918 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
11920 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
11938yydestruct (
const char *yymsg,
11942 YY_USE (yylocationp);
11945 yymsg =
"Deleting";
11946 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp, p);
11948 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
11951 case YYSYMBOL_258_16:
11952#line 2653 "parse.y"
11954 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11956#line 11957 "parse.c"
11959 case YYSYMBOL_259_17:
11960#line 2653 "parse.y"
11962 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11964#line 11965 "parse.c"
11970 YY_IGNORE_MAYBE_UNINITIALIZED_END
11993static const YYSTYPE yyval_default = {};
11994(void) yyval_default;
11996YY_INITIAL_VALUE (
static const YYSTYPE yyval_default;)
11998YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
12001static const YYLTYPE yyloc_default
12002# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
12006YYLTYPE yylloc = yyloc_default;
12012 yy_state_fast_t yystate = 0;
12014 int yyerrstatus = 0;
12020 YYPTRDIFF_T yystacksize = YYINITDEPTH;
12023 yy_state_t yyssa[YYINITDEPTH];
12024 yy_state_t *yyss = yyssa;
12025 yy_state_t *yyssp = yyss;
12041 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
12051 char yymsgbuf[128];
12052 char *yymsg = yymsgbuf;
12053 YYPTRDIFF_T yymsg_alloc =
sizeof yymsgbuf;
12055#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
12061 YYDPRINTF ((stderr,
"Starting parse\n"));
12067#line 2660 "parse.y"
12069 RUBY_SET_YYLLOC_OF_NONE(yylloc);
12072#line 12073 "parse.c"
12091 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
12092 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
12093 YY_IGNORE_USELESS_CAST_BEGIN
12094 *yyssp = YY_CAST (yy_state_t, yystate);
12095 YY_IGNORE_USELESS_CAST_END
12096 YY_STACK_PRINT (yyss, yyssp, p);
12098 if (yyss + yystacksize - 1 <= yyssp)
12099#if !defined yyoverflow && !defined YYSTACK_RELOCATE
12104 YYPTRDIFF_T yysize = yyssp - yyss + 1;
12106# if defined yyoverflow
12111 yy_state_t *yyss1 = yyss;
12119 yyoverflow (YY_(
"memory exhausted"),
12120 &yyss1, yysize * YYSIZEOF (*yyssp),
12121 &yyvs1, yysize * YYSIZEOF (*yyvsp),
12122 &yyls1, yysize * YYSIZEOF (*yylsp),
12130 if (YYMAXDEPTH <= yystacksize)
12133 if (YYMAXDEPTH < yystacksize)
12134 yystacksize = YYMAXDEPTH;
12137 yy_state_t *yyss1 = yyss;
12138 union yyalloc *yyptr =
12139 YY_CAST (
union yyalloc *,
12140 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
12143 YYSTACK_RELOCATE (yyss_alloc, yyss);
12144 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
12145 YYSTACK_RELOCATE (yyls_alloc, yyls);
12146# undef YYSTACK_RELOCATE
12147 if (yyss1 != yyssa)
12148 YYSTACK_FREE (yyss1);
12152 yyssp = yyss + yysize - 1;
12153 yyvsp = yyvs + yysize - 1;
12154 yylsp = yyls + yysize - 1;
12156 YY_IGNORE_USELESS_CAST_BEGIN
12157 YYDPRINTF ((stderr,
"Stack size increased to %ld\n",
12158 YY_CAST (
long, yystacksize)));
12159 YY_IGNORE_USELESS_CAST_END
12161 if (yyss + yystacksize - 1 <= yyssp)
12167 if (yystate == YYFINAL)
12181 yyn = yypact[yystate];
12182 if (yypact_value_is_default (yyn))
12188 if (yychar == YYEMPTY)
12190 YYDPRINTF ((stderr,
"Reading a token\n"));
12191 yychar = yylex (&yylval, &yylloc, p);
12194 if (yychar <= END_OF_INPUT)
12196 yychar = END_OF_INPUT;
12197 yytoken = YYSYMBOL_YYEOF;
12198 YYDPRINTF ((stderr,
"Now at end of input.\n"));
12200 else if (yychar == YYerror)
12207 yytoken = YYSYMBOL_YYerror;
12208 yyerror_range[1] = yylloc;
12213 yytoken = YYTRANSLATE (yychar);
12214 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc, p);
12220 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
12222 yyn = yytable[yyn];
12225 if (yytable_value_is_error (yyn))
12237 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc, p);
12239 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
12241 YY_IGNORE_MAYBE_UNINITIALIZED_END
12244#line 2663 "parse.y"
12246#line 12247 "parse.c"
12258 yyn = yydefact[yystate];
12279 yyval = yyvsp[1-yylen];
12281#line 2664 "parse.y"
12282 {before_reduce(yylen, p);}
12283#line 12284 "parse.c"
12287 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
12288 yyerror_range[1] = yyloc;
12289 YY_REDUCE_PRINT (yyn, p);
12293#line 3168 "parse.y"
12295 SET_LEX_STATE(EXPR_BEG);
12296 local_push(p, ifndef_ripper(1)+0);
12298 if (!ifndef_ripper(p->do_loop) + 0) init_block_exit(p);
12300#line 12301 "parse.c"
12304#line 2983 "parse.y"
12306 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
12308#line 12309 "parse.c"
12312#line 3175 "parse.y"
12314 if ((yyvsp[0].node) && !compile_for_eval) {
12315 NODE *node = (yyvsp[0].node);
12317 if (nd_type_p(node, NODE_BLOCK)) {
12318 while (RNODE_BLOCK(node)->nd_next) {
12319 node = RNODE_BLOCK(node)->nd_next;
12321 node = RNODE_BLOCK(node)->nd_head;
12323 node = remove_begin(node);
12324 void_expr(p, node);
12326 p->eval_tree = NEW_SCOPE(0, block_append(p, p->eval_tree, (yyvsp[0].node)), NULL, &(yyloc));
12330#line 12331 "parse.c"
12334#line 3195 "parse.y"
12336 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12339#line 12340 "parse.c"
12343#line 3200 "parse.y"
12345 (yyval.node) = newline_node((yyvsp[0].node));
12348#line 12349 "parse.c"
12352#line 3205 "parse.y"
12354 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12357#line 12358 "parse.c"
12361#line 3212 "parse.y"
12363 clear_block_exit(p,
true);
12364 (yyval.node) = (yyvsp[0].node);
12366#line 12367 "parse.c"
12370#line 3217 "parse.y"
12372 (yyval.node) = (yyvsp[0].node);
12375#line 12376 "parse.c"
12379#line 3223 "parse.y"
12380 {(yyval.node_exits) = init_block_exit(p);}
12381#line 12382 "parse.c"
12385#line 3226 "parse.y"
12387 restore_block_exit(p, (yyvsp[-2].node_exits));
12388 p->eval_tree_begin = block_append(p, p->eval_tree_begin,
12389 NEW_BEGIN((yyvsp[-1].node), &(yyloc)));
12390 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12393#line 12394 "parse.c"
12397#line 2983 "parse.y"
12399 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
12401#line 12402 "parse.c"
12405#line 3239 "parse.y"
12407 if (!(yyvsp[-1].node)) yyerror1(&(yylsp[0]),
"else without rescue is useless");
12408 next_rescue_context(&p->ctxt, &(yyvsp[-2].ctxt), after_else);
12410#line 12411 "parse.c"
12414#line 3244 "parse.y"
12416 next_rescue_context(&p->ctxt, &(yyvsp[-4].ctxt), after_ensure);
12418#line 12419 "parse.c"
12422#line 3248 "parse.y"
12424 (yyval.node) = new_bodystmt(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12427#line 12428 "parse.c"
12431#line 3255 "parse.y"
12433 next_rescue_context(&p->ctxt, &(yyvsp[-1].ctxt), after_ensure);
12435#line 12436 "parse.c"
12439#line 3259 "parse.y"
12441 (yyval.node) = new_bodystmt(p, (yyvsp[-4].node), (yyvsp[-2].node), 0, (yyvsp[0].node), &(yyloc));
12444#line 12445 "parse.c"
12448#line 3266 "parse.y"
12450 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12453#line 12454 "parse.c"
12457#line 3271 "parse.y"
12459 (yyval.node) = newline_node((yyvsp[0].node));
12462#line 12463 "parse.c"
12466#line 3276 "parse.y"
12468 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12471#line 12472 "parse.c"
12475#line 3284 "parse.y"
12477 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
12479#line 12480 "parse.c"
12483#line 3288 "parse.y"
12485 (yyval.node) = (yyvsp[0].node);
12487#line 12488 "parse.c"
12491#line 3293 "parse.y"
12492 {(yyval.node_exits) = allow_block_exit(p);}
12493#line 12494 "parse.c"
12497#line 3296 "parse.y"
12499 if (p->ctxt.in_def) {
12500 rb_warn0(
"END in method; use at_exit");
12502 (yyval.ctxt) = (yyvsp[0].ctxt);
12503 p->ctxt.in_rescue = before_rescue;
12506#line 12507 "parse.c"
12510#line 3305 "parse.y"
12511 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
12512#line 12513 "parse.c"
12516#line 3306 "parse.y"
12518 (yyval.node) = NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
12521#line 12522 "parse.c"
12525#line 3311 "parse.y"
12527 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].id), &(yyloc), &(yylsp[-2]));
12530#line 12531 "parse.c"
12534#line 3316 "parse.y"
12538 buf[1] = (char)RNODE_BACK_REF((yyvsp[0].node))->nd_nth;
12539 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), rb_intern2(buf, 2), &(yyloc), &(yylsp[-2]));
12542#line 12543 "parse.c"
12546#line 3324 "parse.y"
12548 static const char mesg[] =
"can't make alias for the number variables";
12550 yyerror1(&(yylsp[0]), mesg);
12552 (yyval.node) = NEW_ERROR(&(yyloc));
12555#line 12556 "parse.c"
12559#line 3333 "parse.y"
12561 nd_set_first_loc((yyvsp[0].node), (yylsp[-1]).beg_pos);
12562 RNODE_UNDEF((yyvsp[0].node))->keyword_loc = (yylsp[-1]);
12563 (yyval.node) = (yyvsp[0].node);
12566#line 12567 "parse.c"
12570#line 3340 "parse.y"
12572 (yyval.node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12573 fixpos((yyval.node), (yyvsp[0].node));
12576#line 12577 "parse.c"
12580#line 3346 "parse.y"
12582 (yyval.node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12583 fixpos((yyval.node), (yyvsp[0].node));
12586#line 12587 "parse.c"
12590#line 3352 "parse.y"
12592 clear_block_exit(p,
false);
12593 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12594 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12597 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12601#line 12602 "parse.c"
12605#line 3363 "parse.y"
12607 clear_block_exit(p, 0);
12608 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12609 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12612 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12616#line 12617 "parse.c"
12620#line 3374 "parse.y"
12622 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12624 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12625 resq = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12626 (yyval.node) = NEW_RESCUE(remove_begin((yyvsp[-3].node)), resq, 0, &(yyloc));
12629#line 12630 "parse.c"
12633#line 3383 "parse.y"
12635 clear_block_exit(p,
true);
12636 restore_block_exit(p, (yyvsp[-2].node_exits));
12637 p->ctxt = (yyvsp[-3].ctxt);
12639 NODE *scope = NEW_SCOPE2(0 , 0 , (yyvsp[-1].node) , NULL , &(yyloc));
12640 (yyval.node) = NEW_POSTEXE(scope, &(yyloc), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12641 RNODE_SCOPE(scope)->nd_parent = (yyval.node);
12645#line 12646 "parse.c"
12649#line 3396 "parse.y"
12651 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12654#line 12655 "parse.c"
12658#line 2918 "parse.y"
12660 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12663#line 12664 "parse.c"
12667#line 3403 "parse.y"
12669 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12670 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12671 (yyvsp[0].node) = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12672 loc.beg_pos = (yylsp[-3]).beg_pos;
12673 (yyvsp[-3].node) = NEW_RESCUE((yyvsp[-3].node), (yyvsp[0].node), 0, &loc);
12674 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-6].node_masgn), (yyvsp[-3].node), (yyvsp[-4].ctxt), &(yyloc));
12677#line 12678 "parse.c"
12681#line 3413 "parse.y"
12683 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12686#line 12687 "parse.c"
12690#line 3419 "parse.y"
12693 (yyval.node) = NEW_ERROR(&(yyloc));
12695#line 12696 "parse.c"
12699#line 2918 "parse.y"
12701 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12704#line 12705 "parse.c"
12708#line 3053 "parse.y"
12710 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12713#line 12714 "parse.c"
12717#line 3058 "parse.y"
12719 (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]));
12722#line 12723 "parse.c"
12726#line 3063 "parse.y"
12728 (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]));
12731#line 12732 "parse.c"
12735#line 3068 "parse.y"
12737 (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]));
12740#line 12741 "parse.c"
12744#line 3073 "parse.y"
12746 (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]));
12749#line 12750 "parse.c"
12753#line 3078 "parse.y"
12755 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
12756 (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));
12759#line 12760 "parse.c"
12763#line 3084 "parse.y"
12765 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
12766 (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));
12769#line 12770 "parse.c"
12773#line 3090 "parse.y"
12775 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
12776 (yyval.node) = NEW_ERROR(&(yyloc));
12779#line 12780 "parse.c"
12783#line 2958 "parse.y"
12785 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12786 restore_defun(p, (yyvsp[-3].node_def_temp));
12787 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12788 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
12789 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
12794#line 12795 "parse.c"
12798#line 2969 "parse.y"
12800 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12801 restore_defun(p, (yyvsp[-3].node_def_temp));
12802 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12803 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
12804 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
12809#line 12810 "parse.c"
12813#line 3432 "parse.y"
12815 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12816 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12819#line 12820 "parse.c"
12823#line 3438 "parse.y"
12825 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12828#line 12829 "parse.c"
12832#line 3446 "parse.y"
12834 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12835 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12836 (yyval.node) = NEW_RESCUE((yyvsp[-3].node), NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc));
12839#line 12840 "parse.c"
12843#line 3457 "parse.y"
12845 (yyval.node) = logop(p, idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12848#line 12849 "parse.c"
12852#line 3462 "parse.y"
12854 (yyval.node) = logop(p, idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12857#line 12858 "parse.c"
12861#line 3467 "parse.y"
12863 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12866#line 12867 "parse.c"
12870#line 3472 "parse.y"
12872 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
12875#line 12876 "parse.c"
12879#line 3477 "parse.y"
12881 value_expr(p, (yyvsp[-1].node));
12883#line 12884 "parse.c"
12887#line 3482 "parse.y"
12889 pop_pktbl(p, (yyvsp[-1].tbl));
12890 pop_pvtbl(p, (yyvsp[-2].tbl));
12891 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12892 p->ctxt.in_alt_pattern = (yyvsp[-3].ctxt).in_alt_pattern;
12893 p->ctxt.capture_in_pattern = (yyvsp[-3].ctxt).capture_in_pattern;
12894 (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);
12897#line 12898 "parse.c"
12901#line 3492 "parse.y"
12903 value_expr(p, (yyvsp[-1].node));
12905#line 12906 "parse.c"
12909#line 3497 "parse.y"
12911 pop_pktbl(p, (yyvsp[-1].tbl));
12912 pop_pvtbl(p, (yyvsp[-2].tbl));
12913 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12914 p->ctxt.in_alt_pattern = (yyvsp[-3].ctxt).in_alt_pattern;
12915 p->ctxt.capture_in_pattern = (yyvsp[-3].ctxt).capture_in_pattern;
12916 (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);
12919#line 12920 "parse.c"
12923#line 3510 "parse.y"
12925 numparam_name(p, (yyvsp[0].
id));
12927 p->ctxt.in_def = 1;
12928 p->ctxt.in_rescue = before_rescue;
12929 p->ctxt.cant_return = 0;
12930 (yyval.id) = (yyvsp[0].
id);
12932#line 12933 "parse.c"
12936#line 3521 "parse.y"
12938 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-1].node_def_temp));
12939 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12940 (yyval.node_def_temp)->nd_def = NEW_DEFN((yyvsp[0].
id), 0, &(yyloc));
12943#line 12944 "parse.c"
12947#line 3530 "parse.y"
12949 SET_LEX_STATE(EXPR_FNAME);
12951#line 12952 "parse.c"
12955#line 3534 "parse.y"
12957 SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL);
12958 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-4].node_def_temp));
12959 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12960 (yyval.node_def_temp)->nd_def = NEW_DEFS((yyvsp[-3].node), (yyvsp[0].id), 0, &(yyloc));
12963#line 12964 "parse.c"
12967#line 3153 "parse.y"
12969 value_expr(p, (yyvsp[0].node));
12970 (yyval.node) = (yyvsp[0].node);
12972#line 12973 "parse.c"
12976#line 3545 "parse.y"
12978 (yyval.node) = NEW_ERROR(&(yyloc));
12980#line 12981 "parse.c"
12984#line 3550 "parse.y"
12986#line 12987 "parse.c"
12990#line 3550 "parse.y"
12992#line 12993 "parse.c"
12996#line 3551 "parse.y"
12998 (yyval.node) = (yyvsp[-2].node);
13001#line 13002 "parse.c"
13005#line 3153 "parse.y"
13007 value_expr(p, (yyvsp[0].node));
13008 (yyval.node) = (yyvsp[0].node);
13010#line 13011 "parse.c"
13014#line 3566 "parse.y"
13016 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13019#line 13020 "parse.c"
13023#line 3573 "parse.y"
13025 (yyval.node) = (yyvsp[-1].node);
13026 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
13029#line 13030 "parse.c"
13033#line 3581 "parse.y"
13035 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
13038#line 13039 "parse.c"
13042#line 3581 "parse.y"
13044 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
13047#line 13048 "parse.c"
13051#line 3581 "parse.y"
13053 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
13056#line 13057 "parse.c"
13060#line 3588 "parse.y"
13062 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
13063 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
13064 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
13067#line 13068 "parse.c"
13071#line 3595 "parse.y"
13073 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
13074 (yyvsp[-2].node_fcall)->nd_args = (yyvsp[-1].node);
13075 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-2].node_fcall), (yyvsp[0].node), &(yyloc));
13076 fixpos((yyval.node), RNODE((yyvsp[-2].node_fcall)));
13077 nd_set_last_loc((yyvsp[-2].node_fcall), (yylsp[-1]).end_pos);
13080#line 13081 "parse.c"
13084#line 3604 "parse.y"
13086 (yyval.node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
13089#line 13090 "parse.c"
13093#line 3609 "parse.y"
13095 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
13098#line 13099 "parse.c"
13102#line 3614 "parse.y"
13104 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
13107#line 13108 "parse.c"
13111#line 3619 "parse.y"
13113 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-4].node), (yyvsp[-2].id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
13116#line 13117 "parse.c"
13120#line 3624 "parse.y"
13122 set_embraced_location((yyvsp[-1].node), &(yylsp[-2]), &(yylsp[0]));
13123 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-5].node), (yyvsp[-3].id), 0, (yyvsp[-1].node), &(yylsp[-3]), &(yyloc));
13126#line 13127 "parse.c"
13130#line 3630 "parse.y"
13132 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
13133 fixpos((yyval.node), (yyvsp[0].node));
13136#line 13137 "parse.c"
13140#line 3636 "parse.y"
13142 (yyval.node) = NEW_YIELD((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
13143 fixpos((yyval.node), (yyvsp[0].node));
13146#line 13147 "parse.c"
13150#line 3642 "parse.y"
13152 (yyval.node) = NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc), &(yylsp[-1]));
13155#line 13156 "parse.c"
13159#line 3647 "parse.y"
13162 args = ret_args(p, (yyvsp[0].node));
13163 (yyval.node) = add_block_exit(p, NEW_BREAK(args, &(yyloc), &(yylsp[-1])));
13166#line 13167 "parse.c"
13170#line 3654 "parse.y"
13173 args = ret_args(p, (yyvsp[0].node));
13174 (yyval.node) = add_block_exit(p, NEW_NEXT(args, &(yyloc), &(yylsp[-1])));
13177#line 13178 "parse.c"
13181#line 3664 "parse.y"
13183 (yyval.node_masgn) = (yyvsp[-1].node_masgn);
13186#line 13187 "parse.c"
13190#line 3672 "parse.y"
13192 (yyval.node_masgn) = NEW_MASGN(NEW_LIST((
NODE *)(yyvsp[-1].node_masgn), &(yyloc)), 0, &(yyloc));
13195#line 13196 "parse.c"
13199#line 3679 "parse.y"
13201 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
13204#line 13205 "parse.c"
13208#line 3684 "parse.y"
13210 (yyval.node_masgn) = NEW_MASGN(list_append(p, (yyvsp[-1].node), (yyvsp[0].node)), 0, &(yyloc));
13213#line 13214 "parse.c"
13217#line 3689 "parse.y"
13219 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
13222#line 13223 "parse.c"
13226#line 3040 "parse.y"
13228 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
13231#line 13232 "parse.c"
13235#line 3045 "parse.y"
13237 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
13240#line 13241 "parse.c"
13244#line 3694 "parse.y"
13246 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
13249#line 13250 "parse.c"
13253#line 3699 "parse.y"
13255 (yyval.node_masgn) = NEW_MASGN((yyvsp[-1].node), NODE_SPECIAL_NO_NAME_REST, &(yyloc));
13258#line 13259 "parse.c"
13262#line 3704 "parse.y"
13264 (yyval.node_masgn) = NEW_MASGN((yyvsp[-3].node), NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
13267#line 13268 "parse.c"
13271#line 3709 "parse.y"
13273 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
13276#line 13277 "parse.c"
13280#line 3714 "parse.y"
13282 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
13285#line 13286 "parse.c"
13289#line 3719 "parse.y"
13291 (yyval.node_masgn) = NEW_MASGN(0, NODE_SPECIAL_NO_NAME_REST, &(yyloc));
13294#line 13295 "parse.c"
13298#line 3724 "parse.y"
13300 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
13303#line 13304 "parse.c"
13307#line 3732 "parse.y"
13309 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
13312#line 13313 "parse.c"
13316#line 3739 "parse.y"
13318 (yyval.node) = NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
13321#line 13322 "parse.c"
13325#line 3744 "parse.y"
13327 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
13330#line 13331 "parse.c"
13334#line 3752 "parse.y"
13337 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13339#line 13340 "parse.c"
13343#line 3752 "parse.y"
13346 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13348#line 13349 "parse.c"
13352#line 3757 "parse.y"
13354 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13357#line 13358 "parse.c"
13361#line 3762 "parse.y"
13363 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13364 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13367#line 13368 "parse.c"
13371#line 3762 "parse.y"
13373 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13374 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13377#line 13378 "parse.c"
13381#line 3768 "parse.y"
13383 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
13386#line 13387 "parse.c"
13390#line 3773 "parse.y"
13393 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13395#line 13396 "parse.c"
13399#line 3778 "parse.y"
13402 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13404#line 13405 "parse.c"
13408#line 3783 "parse.y"
13410 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13411 (yyval.node) = NEW_ERROR(&(yyloc));
13414#line 13415 "parse.c"
13418#line 3791 "parse.y"
13421 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13423#line 13424 "parse.c"
13427#line 3791 "parse.y"
13430 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13432#line 13433 "parse.c"
13436#line 3796 "parse.y"
13438 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13441#line 13442 "parse.c"
13445#line 3801 "parse.y"
13447 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13450#line 13451 "parse.c"
13454#line 3801 "parse.y"
13456 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13459#line 13460 "parse.c"
13463#line 3806 "parse.y"
13465 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
13468#line 13469 "parse.c"
13472#line 3811 "parse.y"
13475 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13477#line 13478 "parse.c"
13481#line 3816 "parse.y"
13484 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13486#line 13487 "parse.c"
13490#line 3821 "parse.y"
13492 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13493 (yyval.node) = NEW_ERROR(&(yyloc));
13496#line 13497 "parse.c"
13500#line 3829 "parse.y"
13502 static const char mesg[] =
"class/module name must be CONSTANT";
13504 yyerror1(&(yylsp[0]), mesg);
13508#line 13509 "parse.c"
13512#line 3840 "parse.y"
13514 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
13517#line 13518 "parse.c"
13521#line 3845 "parse.y"
13523 (yyval.node) = NEW_COLON2(0, (yyvsp[0].
id), &(yyloc), &NULL_LOC, &(yylsp[0]));
13526#line 13527 "parse.c"
13530#line 3850 "parse.y"
13532 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
13535#line 13536 "parse.c"
13539#line 3858 "parse.y"
13541 SET_LEX_STATE(EXPR_ENDFN);
13542 (yyval.id) = (yyvsp[0].
id);
13544#line 13545 "parse.c"
13548#line 3866 "parse.y"
13550 (yyval.node) = NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc));
13553#line 13554 "parse.c"
13557#line 3874 "parse.y"
13559 (yyval.node) = NEW_UNDEF((yyvsp[0].node), &(yyloc));
13562#line 13563 "parse.c"
13566#line 3878 "parse.y"
13567 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
13568#line 13569 "parse.c"
13572#line 3879 "parse.y"
13574 nd_set_last_loc((yyvsp[-3].node), (yylsp[0]).end_pos);
13575 rb_parser_ary_push_node(p, RNODE_UNDEF((yyvsp[-3].node))->nd_undefs, (yyvsp[0].node));
13578#line 13579 "parse.c"
13582#line 3886 "parse.y"
13583 { (yyval.id) =
'|'; }
13584#line 13585 "parse.c"
13588#line 3887 "parse.y"
13589 { (yyval.id) =
'^'; }
13590#line 13591 "parse.c"
13594#line 3888 "parse.y"
13595 { (yyval.id) =
'&'; }
13596#line 13597 "parse.c"
13600#line 3889 "parse.y"
13601 { (yyval.id) = tCMP; }
13602#line 13603 "parse.c"
13606#line 3890 "parse.y"
13607 { (yyval.id) = tEQ; }
13608#line 13609 "parse.c"
13612#line 3891 "parse.y"
13613 { (yyval.id) = tEQQ; }
13614#line 13615 "parse.c"
13618#line 3892 "parse.y"
13619 { (yyval.id) = tMATCH; }
13620#line 13621 "parse.c"
13624#line 3893 "parse.y"
13625 { (yyval.id) = tNMATCH; }
13626#line 13627 "parse.c"
13630#line 3894 "parse.y"
13631 { (yyval.id) =
'>'; }
13632#line 13633 "parse.c"
13636#line 3895 "parse.y"
13637 { (yyval.id) = tGEQ; }
13638#line 13639 "parse.c"
13642#line 3896 "parse.y"
13643 { (yyval.id) =
'<'; }
13644#line 13645 "parse.c"
13648#line 3897 "parse.y"
13649 { (yyval.id) = tLEQ; }
13650#line 13651 "parse.c"
13654#line 3898 "parse.y"
13655 { (yyval.id) = tNEQ; }
13656#line 13657 "parse.c"
13660#line 3899 "parse.y"
13661 { (yyval.id) = tLSHFT; }
13662#line 13663 "parse.c"
13666#line 3900 "parse.y"
13667 { (yyval.id) = tRSHFT; }
13668#line 13669 "parse.c"
13672#line 3901 "parse.y"
13673 { (yyval.id) =
'+'; }
13674#line 13675 "parse.c"
13678#line 3902 "parse.y"
13679 { (yyval.id) =
'-'; }
13680#line 13681 "parse.c"
13684#line 3903 "parse.y"
13685 { (yyval.id) =
'*'; }
13686#line 13687 "parse.c"
13690#line 3904 "parse.y"
13691 { (yyval.id) =
'*'; }
13692#line 13693 "parse.c"
13696#line 3905 "parse.y"
13697 { (yyval.id) =
'/'; }
13698#line 13699 "parse.c"
13702#line 3906 "parse.y"
13703 { (yyval.id) =
'%'; }
13704#line 13705 "parse.c"
13708#line 3907 "parse.y"
13709 { (yyval.id) = tPOW; }
13710#line 13711 "parse.c"
13714#line 3908 "parse.y"
13715 { (yyval.id) = tDSTAR; }
13716#line 13717 "parse.c"
13720#line 3909 "parse.y"
13721 { (yyval.id) =
'!'; }
13722#line 13723 "parse.c"
13726#line 3910 "parse.y"
13727 { (yyval.id) =
'~'; }
13728#line 13729 "parse.c"
13732#line 3911 "parse.y"
13733 { (yyval.id) = tUPLUS; }
13734#line 13735 "parse.c"
13738#line 3912 "parse.y"
13739 { (yyval.id) = tUMINUS; }
13740#line 13741 "parse.c"
13744#line 3913 "parse.y"
13745 { (yyval.id) = tAREF; }
13746#line 13747 "parse.c"
13750#line 3914 "parse.y"
13751 { (yyval.id) = tASET; }
13752#line 13753 "parse.c"
13756#line 3915 "parse.y"
13757 { (yyval.id) =
'`'; }
13758#line 13759 "parse.c"
13762#line 2918 "parse.y"
13764 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13767#line 13768 "parse.c"
13771#line 3053 "parse.y"
13773 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13776#line 13777 "parse.c"
13780#line 3058 "parse.y"
13782 (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]));
13785#line 13786 "parse.c"
13789#line 3063 "parse.y"
13791 (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]));
13794#line 13795 "parse.c"
13798#line 3068 "parse.y"
13800 (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]));
13803#line 13804 "parse.c"
13807#line 3073 "parse.y"
13809 (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]));
13812#line 13813 "parse.c"
13816#line 3078 "parse.y"
13818 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
13819 (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));
13822#line 13823 "parse.c"
13826#line 3084 "parse.y"
13828 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
13829 (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));
13832#line 13833 "parse.c"
13836#line 3090 "parse.y"
13838 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
13839 (yyval.node) = NEW_ERROR(&(yyloc));
13842#line 13843 "parse.c"
13846#line 3112 "parse.y"
13848 value_expr(p, (yyvsp[-2].node));
13849 value_expr(p, (yyvsp[0].node));
13850 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13853#line 13854 "parse.c"
13857#line 3119 "parse.y"
13859 value_expr(p, (yyvsp[-2].node));
13860 value_expr(p, (yyvsp[0].node));
13861 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13864#line 13865 "parse.c"
13868#line 3126 "parse.y"
13870 value_expr(p, (yyvsp[-1].node));
13871 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13874#line 13875 "parse.c"
13878#line 3132 "parse.y"
13880 value_expr(p, (yyvsp[-1].node));
13881 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13884#line 13885 "parse.c"
13888#line 3138 "parse.y"
13890 value_expr(p, (yyvsp[0].node));
13891 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13894#line 13895 "parse.c"
13898#line 3144 "parse.y"
13900 value_expr(p, (yyvsp[0].node));
13901 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13904#line 13905 "parse.c"
13908#line 3936 "parse.y"
13910 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13913#line 13914 "parse.c"
13917#line 3941 "parse.y"
13919 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13922#line 13923 "parse.c"
13926#line 3946 "parse.y"
13928 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13931#line 13932 "parse.c"
13935#line 3951 "parse.y"
13937 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13940#line 13941 "parse.c"
13944#line 3956 "parse.y"
13946 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13949#line 13950 "parse.c"
13953#line 3961 "parse.y"
13955 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13958#line 13959 "parse.c"
13962#line 3966 "parse.y"
13964 (yyval.node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)), idUMinus, &(yylsp[-3]), &(yyloc));
13967#line 13968 "parse.c"
13971#line 3971 "parse.y"
13973 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUPlus, &(yylsp[-1]), &(yyloc));
13976#line 13977 "parse.c"
13980#line 3976 "parse.y"
13982 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUMinus, &(yylsp[-1]), &(yyloc));
13985#line 13986 "parse.c"
13989#line 3981 "parse.y"
13991 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13994#line 13995 "parse.c"
13998#line 3986 "parse.y"
14000 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14003#line 14004 "parse.c"
14007#line 3991 "parse.y"
14009 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14012#line 14013 "parse.c"
14016#line 3996 "parse.y"
14018 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14021#line 14022 "parse.c"
14025#line 4002 "parse.y"
14027 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14030#line 14031 "parse.c"
14034#line 4007 "parse.y"
14036 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14039#line 14040 "parse.c"
14043#line 4012 "parse.y"
14045 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14048#line 14049 "parse.c"
14052#line 4017 "parse.y"
14054 (yyval.node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14057#line 14058 "parse.c"
14061#line 4022 "parse.y"
14063 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14066#line 14067 "parse.c"
14070#line 4027 "parse.y"
14072 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
14075#line 14076 "parse.c"
14079#line 4032 "parse.y"
14081 (yyval.node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
14084#line 14085 "parse.c"
14088#line 4037 "parse.y"
14090 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14093#line 14094 "parse.c"
14097#line 4042 "parse.y"
14099 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14102#line 14103 "parse.c"
14106#line 4047 "parse.y"
14108 (yyval.node) = logop(p, idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14111#line 14112 "parse.c"
14115#line 4052 "parse.y"
14117 (yyval.node) = logop(p, idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14120#line 14121 "parse.c"
14124#line 4057 "parse.y"
14126 p->ctxt.in_defined = (yyvsp[-1].ctxt).in_defined;
14127 (yyval.node) = new_defined(p, (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
14128 p->ctxt.has_trailing_semicolon = (yyvsp[-1].ctxt).has_trailing_semicolon;
14131#line 14132 "parse.c"
14135#line 2958 "parse.y"
14137 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
14138 restore_defun(p, (yyvsp[-3].node_def_temp));
14139 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
14140 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
14141 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
14146#line 14147 "parse.c"
14150#line 2969 "parse.y"
14152 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
14153 restore_defun(p, (yyvsp[-3].node_def_temp));
14154 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
14155 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
14156 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
14161#line 14162 "parse.c"
14165#line 4069 "parse.y"
14167 value_expr(p, (yyvsp[-5].node));
14168 (yyval.node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc), &NULL_LOC, &(yylsp[-1]), &NULL_LOC);
14169 fixpos((yyval.node), (yyvsp[-5].node));
14172#line 14173 "parse.c"
14176#line 4079 "parse.y"
14178 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
14179 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14182#line 14183 "parse.c"
14186#line 4085 "parse.y"
14188 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
14191#line 14192 "parse.c"
14195#line 4091 "parse.y"
14196 {(yyval.id) =
'>';}
14197#line 14198 "parse.c"
14201#line 4092 "parse.y"
14202 {(yyval.id) =
'<';}
14203#line 14204 "parse.c"
14207#line 4093 "parse.y"
14208 {(yyval.id) = idGE;}
14209#line 14210 "parse.c"
14213#line 4094 "parse.y"
14214 {(yyval.id) = idLE;}
14215#line 14216 "parse.c"
14219#line 4098 "parse.y"
14221 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14224#line 14225 "parse.c"
14228#line 4103 "parse.y"
14230 rb_warning1(
"comparison '%s' after comparison", WARN_ID((yyvsp[-1].
id)));
14231 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14234#line 14235 "parse.c"
14238#line 4111 "parse.y"
14240 (yyval.ctxt) = p->ctxt;
14242#line 14243 "parse.c"
14246#line 4117 "parse.y"
14248 p->ctxt.in_defined = 1;
14249 (yyval.ctxt) = (yyvsp[0].ctxt);
14251#line 14252 "parse.c"
14255#line 4124 "parse.y"
14257 p->ctxt.in_rescue = after_rescue;
14258 (yyval.ctxt) = (yyvsp[0].ctxt);
14260#line 14261 "parse.c"
14264#line 3153 "parse.y"
14266 value_expr(p, (yyvsp[0].node));
14267 (yyval.node) = (yyvsp[0].node);
14269#line 14270 "parse.c"
14273#line 4136 "parse.y"
14275 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14278#line 14279 "parse.c"
14282#line 4141 "parse.y"
14284 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
14287#line 14288 "parse.c"
14291#line 4148 "parse.y"
14293 value_expr(p, (yyvsp[0].node));
14294 (yyval.node) = (yyvsp[0].node);
14296#line 14297 "parse.c"
14300#line 4153 "parse.y"
14302 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
14303 value_expr(p, (yyvsp[-3].node));
14304 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14307#line 14308 "parse.c"
14311#line 4162 "parse.y"
14313 (yyval.node) = (yyvsp[-1].node);
14316#line 14317 "parse.c"
14320#line 4167 "parse.y"
14322 if (!check_forwarding_args(p)) {
14326 (yyval.node) = new_args_forward_call(p, (yyvsp[-3].node), &(yylsp[-1]), &(yyloc));
14330#line 14331 "parse.c"
14334#line 4177 "parse.y"
14336 if (!check_forwarding_args(p)) {
14340 (yyval.node) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
14344#line 14345 "parse.c"
14348#line 4190 "parse.y"
14350 (yyval.node) = (yyvsp[0].node) ? (yyvsp[0].node) : NODE_SPECIAL_EMPTY_ARGS;
14352#line 14353 "parse.c"
14356#line 4199 "parse.y"
14358 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14361#line 14362 "parse.c"
14365#line 4204 "parse.y"
14367 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14370#line 14371 "parse.c"
14374#line 3153 "parse.y"
14376 value_expr(p, (yyvsp[0].node));
14377 (yyval.node) = (yyvsp[0].node);
14379#line 14380 "parse.c"
14383#line 4211 "parse.y"
14385 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14388#line 14389 "parse.c"
14392#line 4216 "parse.y"
14394 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14397#line 14398 "parse.c"
14401#line 4221 "parse.y"
14403 (yyval.node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node_block_pass));
14406#line 14407 "parse.c"
14410#line 4226 "parse.y"
14412 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14413 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14416#line 14417 "parse.c"
14420#line 4232 "parse.y"
14422 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14423 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14426#line 14427 "parse.c"
14430#line 4241 "parse.y"
14441 case '(':
case tLPAREN:
case tLPAREN_ARG:
case '[':
case tLBRACK:
14444 if (lookahead) CMDARG_POP();
14446 if (lookahead) CMDARG_PUSH(0);
14448#line 14449 "parse.c"
14452#line 4259 "parse.y"
14465 if (lookahead) CMDARG_POP();
14467 if (lookahead) CMDARG_PUSH(0);
14468 (yyval.node) = (yyvsp[0].node);
14471#line 14472 "parse.c"
14475#line 4280 "parse.y"
14477 (yyval.node_block_pass) = NEW_BLOCK_PASS((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14480#line 14481 "parse.c"
14484#line 4285 "parse.y"
14486 forwarding_arg_check(p, idFWD_BLOCK, idFWD_ALL,
"block");
14487 (yyval.node_block_pass) = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14490#line 14491 "parse.c"
14494#line 4293 "parse.y"
14496 (yyval.node_block_pass) = (yyvsp[0].node_block_pass);
14499#line 14500 "parse.c"
14503#line 4298 "parse.y"
14505 (yyval.node_block_pass) = 0;
14508#line 14509 "parse.c"
14512#line 4306 "parse.y"
14514 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14517#line 14518 "parse.c"
14521#line 4311 "parse.y"
14523 (yyval.node) = (yyvsp[0].node);
14526#line 14527 "parse.c"
14530#line 4316 "parse.y"
14532 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14535#line 14536 "parse.c"
14539#line 4321 "parse.y"
14541 (yyval.node) = rest_arg_append(p, (yyvsp[-2].node), RNODE_SPLAT((yyvsp[0].node))->nd_head, &(yyloc));
14544#line 14545 "parse.c"
14548#line 4329 "parse.y"
14550 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14553#line 14554 "parse.c"
14557#line 4334 "parse.y"
14559 forwarding_arg_check(p, idFWD_REST, idFWD_ALL,
"rest");
14560 (yyval.node) = NEW_SPLAT(NEW_LVAR(idFWD_REST, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14563#line 14564 "parse.c"
14567#line 4348 "parse.y"
14569 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14572#line 14573 "parse.c"
14576#line 4353 "parse.y"
14578 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
14581#line 14582 "parse.c"
14585#line 4358 "parse.y"
14587 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14590#line 14591 "parse.c"
14594#line 4379 "parse.y"
14596 (yyval.node) = (
NODE *)NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
14599#line 14600 "parse.c"
14603#line 4384 "parse.y"
14607#line 14608 "parse.c"
14611#line 4389 "parse.y"
14614 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14615 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
14616 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14619#line 14620 "parse.c"
14623#line 4396 "parse.y"
14624 {SET_LEX_STATE(EXPR_ENDARG);}
14625#line 14626 "parse.c"
14629#line 4397 "parse.y"
14631 if (nd_type_p((yyvsp[-2].node), NODE_SELF)) RNODE_SELF((yyvsp[-2].node))->nd_state = 0;
14632 (yyval.node) = (yyvsp[-2].node);
14635#line 14636 "parse.c"
14639#line 4403 "parse.y"
14641 if (nd_type_p((yyvsp[-1].node), NODE_SELF)) RNODE_SELF((yyvsp[-1].node))->nd_state = 0;
14642 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
14645#line 14646 "parse.c"
14649#line 4409 "parse.y"
14651 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
14654#line 14655 "parse.c"
14658#line 4414 "parse.y"
14660 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
14663#line 14664 "parse.c"
14667#line 4419 "parse.y"
14669 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14672#line 14673 "parse.c"
14676#line 4424 "parse.y"
14678 (yyval.node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
14679 RNODE_HASH((yyval.node))->nd_brace = TRUE;
14682#line 14683 "parse.c"
14686#line 4430 "parse.y"
14688 (yyval.node) = NEW_RETURN(0, &(yyloc), &(yylsp[0]));
14691#line 14692 "parse.c"
14695#line 4435 "parse.y"
14697 (yyval.node) = NEW_YIELD((yyvsp[-1].node), &(yyloc), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14700#line 14701 "parse.c"
14704#line 4440 "parse.y"
14706 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
14709#line 14710 "parse.c"
14713#line 4445 "parse.y"
14715 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[0]), &NULL_LOC, &NULL_LOC);
14718#line 14719 "parse.c"
14722#line 4450 "parse.y"
14724 p->ctxt.in_defined = (yyvsp[-2].ctxt).in_defined;
14725 (yyval.node) = new_defined(p, (yyvsp[-1].node), &(yyloc), &(yylsp[-5]));
14726 p->ctxt.has_trailing_semicolon = (yyvsp[-2].ctxt).has_trailing_semicolon;
14729#line 14730 "parse.c"
14733#line 4457 "parse.y"
14735 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])), METHOD_NOT, &(yylsp[-3]), &(yyloc));
14738#line 14739 "parse.c"
14742#line 4462 "parse.y"
14744 (yyval.node) = call_uni_op(p, method_cond(p, NEW_NIL(&(yylsp[-1])), &(yylsp[-1])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
14747#line 14748 "parse.c"
14751#line 4467 "parse.y"
14753 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-1].node_fcall), (yyvsp[0].node), &(yyloc));
14756#line 14757 "parse.c"
14760#line 4473 "parse.y"
14762 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
14763 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14766#line 14767 "parse.c"
14770#line 4483 "parse.y"
14772 if ((yyvsp[-1].node) && nd_type_p((yyvsp[-1].node), NODE_IF))
14773 RNODE_IF((yyvsp[-1].node))->end_keyword_loc = (yylsp[0]);
14775 (yyval.node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14776 fixpos((yyval.node), (yyvsp[-4].node));
14779#line 14780 "parse.c"
14783#line 4495 "parse.y"
14785 (yyval.node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14786 fixpos((yyval.node), (yyvsp[-4].node));
14789#line 14790 "parse.c"
14793#line 4503 "parse.y"
14795 restore_block_exit(p, (yyvsp[-3].node_exits));
14796 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14797 fixpos((yyval.node), (yyvsp[-2].node));
14800#line 14801 "parse.c"
14804#line 4512 "parse.y"
14806 restore_block_exit(p, (yyvsp[-3].node_exits));
14807 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14808 fixpos((yyval.node), (yyvsp[-2].node));
14811#line 14812 "parse.c"
14815#line 4519 "parse.y"
14817 (yyval.labels) = p->case_labels;
14818 p->case_labels = CHECK_LITERAL_WHEN;
14820#line 14821 "parse.c"
14824#line 4525 "parse.y"
14826 if (CASE_LABELS_ENABLED_P(p->case_labels)) st_free_table(p->case_labels);
14827 p->case_labels = (yyvsp[-2].labels);
14828 (yyval.node) = NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[0]));
14829 fixpos((yyval.node), (yyvsp[-4].node));
14832#line 14833 "parse.c"
14836#line 4533 "parse.y"
14838 (yyval.labels) = p->case_labels;
14839 p->case_labels = 0;
14841#line 14842 "parse.c"
14845#line 4539 "parse.y"
14847 if (p->case_labels) st_free_table(p->case_labels);
14848 p->case_labels = (yyvsp[-2].labels);
14849 (yyval.node) = NEW_CASE2((yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14852#line 14853 "parse.c"
14856#line 4548 "parse.y"
14858 (yyval.node) = NEW_CASE3((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14861#line 14862 "parse.c"
14865#line 4553 "parse.y"
14867#line 14868 "parse.c"
14871#line 4553 "parse.y"
14873#line 14874 "parse.c"
14877#line 4556 "parse.y"
14879 restore_block_exit(p, (yyvsp[-8].node_exits));
14889 ID id = internal_id(p);
14892 NODE *scope, *internal_var = NEW_DVAR(
id, &(yylsp[-7]));
14896 switch (nd_type((yyvsp[-7].node))) {
14899 set_nd_value(p, (yyvsp[-7].node), internal_var);
14902 m->nd_next = (yyvsp[-7].node);
14905 m->nd_next = node_assign(p, (yyvsp[-7].node), NEW_FOR_MASGN(internal_var, &(yylsp[-7])), NO_LEX_CTXT, &(yylsp[-7]));
14908 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]));
14911 args = new_args(p, m, 0,
id, 0, new_empty_args_tail(p, &(yylsp[-7])), &(yylsp[-7]));
14912 scope = NEW_SCOPE2(tbl, args, (yyvsp[-1].node), NULL, &(yyloc));
14913 YYLTYPE do_keyword_loc = (yyvsp[-3].id) == keyword_do_cond ? (yylsp[-3]) : NULL_LOC;
14914 (yyval.node) = NEW_FOR((yyvsp[-4].node), scope, &(yyloc), &(yylsp[-8]), &(yylsp[-6]), &do_keyword_loc, &(yylsp[0]));
14915 RNODE_SCOPE(scope)->nd_parent = (yyval.node);
14916 fixpos((yyval.node), (yyvsp[-7].node));
14919#line 14920 "parse.c"
14923#line 4598 "parse.y"
14925 begin_definition(
"class", &(yylsp[-2]), &(yylsp[-1]));
14927#line 14928 "parse.c"
14931#line 4603 "parse.y"
14933 YYLTYPE inheritance_operator_loc = NULL_LOC;
14934 if ((yyvsp[-3].node)) {
14935 inheritance_operator_loc = (yylsp[-3]);
14936 inheritance_operator_loc.end_pos.column = inheritance_operator_loc.beg_pos.column + 1;
14938 (yyval.node) = NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc), &(yylsp[-5]), &inheritance_operator_loc, &(yylsp[0]));
14939 nd_set_line(RNODE_CLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14940 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14941 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14944 p->ctxt.in_class = (yyvsp[-5].ctxt).in_class;
14945 p->ctxt.cant_return = (yyvsp[-5].ctxt).cant_return;
14946 p->ctxt.shareable_constant_value = (yyvsp[-5].ctxt).shareable_constant_value;
14948#line 14949 "parse.c"
14952#line 4620 "parse.y"
14954 begin_definition(
"", &(yylsp[-2]), &(yylsp[-1]));
14956#line 14957 "parse.c"
14960#line 4626 "parse.y"
14962 (yyval.node) = NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-6]), &(yylsp[-5]), &(yylsp[0]));
14963 nd_set_line(RNODE_SCLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14964 set_line_body((yyvsp[-1].node), nd_line((yyvsp[-4].node)));
14965 fixpos((yyval.node), (yyvsp[-4].node));
14968 p->ctxt.in_def = (yyvsp[-6].ctxt).in_def;
14969 p->ctxt.in_class = (yyvsp[-6].ctxt).in_class;
14970 p->ctxt.cant_return = (yyvsp[-6].ctxt).cant_return;
14971 p->ctxt.shareable_constant_value = (yyvsp[-6].ctxt).shareable_constant_value;
14973#line 14974 "parse.c"
14977#line 4639 "parse.y"
14979 begin_definition(
"module", &(yylsp[-1]), &(yylsp[0]));
14981#line 14982 "parse.c"
14985#line 4644 "parse.y"
14987 (yyval.node) = NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14988 nd_set_line(RNODE_MODULE((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14989 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14990 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14993 p->ctxt.in_class = (yyvsp[-4].ctxt).in_class;
14994 p->ctxt.cant_return = (yyvsp[-4].ctxt).cant_return;
14995 p->ctxt.shareable_constant_value = (yyvsp[-4].ctxt).shareable_constant_value;
14997#line 14998 "parse.c"
15001#line 4657 "parse.y"
15003 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15005#line 15006 "parse.c"
15009#line 4662 "parse.y"
15011 restore_defun(p, (yyvsp[-4].node_def_temp));
15012 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
15013 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), (yyval.node), &(yyloc));
15014 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[-1].node);
15018#line 15019 "parse.c"
15022#line 4672 "parse.y"
15024 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15026#line 15027 "parse.c"
15030#line 4677 "parse.y"
15032 restore_defun(p, (yyvsp[-4].node_def_temp));
15033 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
15034 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), (yyval.node), &(yyloc));
15035 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[-1].node);
15039#line 15040 "parse.c"
15043#line 4686 "parse.y"
15045 (yyval.node) = add_block_exit(p, NEW_BREAK(0, &(yyloc), &(yylsp[0])));
15048#line 15049 "parse.c"
15052#line 4691 "parse.y"
15054 (yyval.node) = add_block_exit(p, NEW_NEXT(0, &(yyloc), &(yylsp[0])));
15057#line 15058 "parse.c"
15061#line 4696 "parse.y"
15063 (yyval.node) = add_block_exit(p, NEW_REDO(&(yyloc), &(yylsp[0])));
15066#line 15067 "parse.c"
15070#line 4701 "parse.y"
15072 if (!p->ctxt.in_defined) {
15073 switch (p->ctxt.in_rescue) {
15074 case before_rescue: yyerror1(&(yylsp[0]),
"Invalid retry without rescue");
break;
15075 case after_rescue:
break;
15076 case after_else: yyerror1(&(yylsp[0]),
"Invalid retry after else");
break;
15077 case after_ensure: yyerror1(&(yylsp[0]),
"Invalid retry after ensure");
break;
15080 (yyval.node) = NEW_RETRY(&(yyloc));
15083#line 15084 "parse.c"
15087#line 3153 "parse.y"
15089 value_expr(p, (yyvsp[0].node));
15090 (yyval.node) = (yyvsp[0].node);
15092#line 15093 "parse.c"
15096#line 4719 "parse.y"
15098 token_info_push(p,
"begin", &(yyloc));
15099 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15101#line 15102 "parse.c"
15105#line 4726 "parse.y"
15108 token_info_push(p,
"if", &(yyloc));
15109 if (p->token_info && p->token_info->nonspc &&
15110 p->token_info->next && !strcmp(p->token_info->next->token,
"else")) {
15112 const char *beg = p->lex.pbeg + p->token_info->next->beg.column;
15114 while (beg < tok &&
ISSPACE(*beg)) beg++;
15116 p->token_info->nonspc = 0;
15119 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15121#line 15122 "parse.c"
15125#line 4744 "parse.y"
15127 token_info_push(p,
"unless", &(yyloc));
15128 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15130#line 15131 "parse.c"
15134#line 4751 "parse.y"
15136 (yyval.node_exits) = (yyvsp[0].node_exits);
15137 token_info_push(p,
"while", &(yyloc));
15138 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15140#line 15141 "parse.c"
15144#line 4759 "parse.y"
15146 (yyval.node_exits) = (yyvsp[0].node_exits);
15147 token_info_push(p,
"until", &(yyloc));
15148 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15150#line 15151 "parse.c"
15154#line 4767 "parse.y"
15156 token_info_push(p,
"case", &(yyloc));
15157 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15159#line 15160 "parse.c"
15163#line 4774 "parse.y"
15165 (yyval.node_exits) = (yyvsp[0].node_exits);
15166 token_info_push(p,
"for", &(yyloc));
15167 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15169#line 15170 "parse.c"
15173#line 4782 "parse.y"
15175 token_info_push(p,
"class", &(yyloc));
15176 (yyval.ctxt) = p->ctxt;
15177 p->ctxt.in_rescue = before_rescue;
15178 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15180#line 15181 "parse.c"
15184#line 4791 "parse.y"
15186 token_info_push(p,
"module", &(yyloc));
15187 (yyval.ctxt) = p->ctxt;
15188 p->ctxt.in_rescue = before_rescue;
15189 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15191#line 15192 "parse.c"
15195#line 4800 "parse.y"
15197 token_info_push(p,
"def", &(yyloc));
15198 (yyval.node_def_temp) = NEW_DEF_TEMP(&(yyloc));
15199 p->ctxt.in_argdef = 1;
15201#line 15202 "parse.c"
15205#line 4808 "parse.y"
15207 token_info_push(p,
"do", &(yyloc));
15208 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15210#line 15211 "parse.c"
15214#line 4815 "parse.y"
15216 token_info_push(p,
"do", &(yyloc));
15217 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15219#line 15220 "parse.c"
15223#line 4822 "parse.y"
15225 token_info_warn(p,
"rescue", p->token_info, 1, &(yyloc));
15226 (yyval.ctxt) = p->ctxt;
15227 p->ctxt.in_rescue = after_rescue;
15229#line 15230 "parse.c"
15233#line 4830 "parse.y"
15235 token_info_warn(p,
"ensure", p->token_info, 1, &(yyloc));
15236 (yyval.ctxt) = p->ctxt;
15238#line 15239 "parse.c"
15242#line 4837 "parse.y"
15244 token_info_warn(p,
"when", p->token_info, 0, &(yyloc));
15246#line 15247 "parse.c"
15250#line 4843 "parse.y"
15253 int same = ptinfo_beg && strcmp(ptinfo_beg->token,
"case") != 0;
15254 token_info_warn(p,
"else", p->token_info, same, &(yyloc));
15257 e.next = ptinfo_beg->next;
15259 token_info_setup(&e, p->lex.pbeg, &(yyloc));
15260 if (!e.nonspc) *ptinfo_beg = e;
15263#line 15264 "parse.c"
15267#line 4858 "parse.y"
15270 token_info_warn(p,
"elsif", p->token_info, 1, &(yyloc));
15272#line 15273 "parse.c"
15276#line 4865 "parse.y"
15278 token_info_pop(p,
"end", &(yyloc));
15279 pop_end_expect_token_locations(p);
15281#line 15282 "parse.c"
15285#line 4870 "parse.y"
15287 compile_error(p,
"syntax error, unexpected end-of-input");
15289#line 15290 "parse.c"
15293#line 4876 "parse.y"
15295 if (p->ctxt.cant_return && !dyna_in_block(p))
15296 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
15298#line 15299 "parse.c"
15302#line 4883 "parse.y"
15304 if (!p->ctxt.in_defined && !p->ctxt.in_def && !compile_for_eval)
15305 yyerror1(&(yylsp[0]),
"Invalid yield");
15307#line 15308 "parse.c"
15311#line 4895 "parse.y"
15312 { (yyval.id) = keyword_do_cond; }
15313#line 15314 "parse.c"
15317#line 4902 "parse.y"
15319 (yyval.node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]), &NULL_LOC);
15320 fixpos((yyval.node), (yyvsp[-3].node));
15323#line 15324 "parse.c"
15327#line 4911 "parse.y"
15329 (yyval.node) = (yyvsp[0].node);
15332#line 15333 "parse.c"
15336#line 4922 "parse.y"
15338 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15339 mark_lvar_used(p, (yyval.node));
15341#line 15342 "parse.c"
15345#line 4927 "parse.y"
15347 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
15350#line 15351 "parse.c"
15354#line 3040 "parse.y"
15356 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15359#line 15360 "parse.c"
15363#line 3045 "parse.y"
15365 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
15368#line 15369 "parse.c"
15372#line 4935 "parse.y"
15374 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
15377#line 15378 "parse.c"
15381#line 4940 "parse.y"
15383 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15386#line 15387 "parse.c"
15390#line 4945 "parse.y"
15392 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15395#line 15396 "parse.c"
15399#line 4950 "parse.y"
15401 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
15404#line 15405 "parse.c"
15408#line 4955 "parse.y"
15410 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15413#line 15414 "parse.c"
15417#line 4962 "parse.y"
15420 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15421 mark_lvar_used(p, (yyval.node));
15423#line 15424 "parse.c"
15427#line 4968 "parse.y"
15429 (yyval.node) = NODE_SPECIAL_NO_NAME_REST;
15432#line 15433 "parse.c"
15436#line 4976 "parse.y"
15438 (yyval.id) = idNil;
15441#line 15442 "parse.c"
15445#line 4982 "parse.y"
15446 {p->ctxt.in_argdef = 0;}
15447#line 15448 "parse.c"
15451#line 3012 "parse.y"
15453 p->ctxt.in_argdef = 1;
15454 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15457#line 15458 "parse.c"
15461#line 3018 "parse.y"
15463 p->ctxt.in_argdef = 1;
15464 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
15467#line 15468 "parse.c"
15471#line 3027 "parse.y"
15473 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
15476#line 15477 "parse.c"
15480#line 3032 "parse.y"
15482 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
15485#line 15486 "parse.c"
15489#line 2949 "parse.y"
15491 (yyval.id) = (yyvsp[0].
id);
15494#line 15495 "parse.c"
15498#line 2926 "parse.y"
15500 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
15503#line 15504 "parse.c"
15507#line 2931 "parse.y"
15509 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
15512#line 15513 "parse.c"
15516#line 2936 "parse.y"
15518 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
15521#line 15522 "parse.c"
15525#line 2941 "parse.y"
15527 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
15530#line 15531 "parse.c"
15534#line 4988 "parse.y"
15537 (yyval.id) = NODE_SPECIAL_EXCESSIVE_COMMA;
15540#line 15541 "parse.c"
15544#line 2990 "parse.y"
15546 p->ctxt.in_argdef = 1;
15547 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15550#line 15551 "parse.c"
15554#line 2999 "parse.y"
15556 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
15559#line 15560 "parse.c"
15563#line 3004 "parse.y"
15565 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
15568#line 15569 "parse.c"
15572#line 3099 "parse.y"
15574 (yyval.node_args) = (yyvsp[0].node_args);
15577#line 15578 "parse.c"
15581#line 3104 "parse.y"
15583 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
15586#line 15587 "parse.c"
15590#line 6269 "parse.y"
15592 (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));
15595#line 15596 "parse.c"
15599#line 6274 "parse.y"
15601 (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));
15604#line 15605 "parse.c"
15608#line 6279 "parse.y"
15610 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15613#line 15614 "parse.c"
15617#line 6284 "parse.y"
15619 (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));
15622#line 15623 "parse.c"
15626#line 6289 "parse.y"
15628 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
15631#line 15632 "parse.c"
15635#line 6294 "parse.y"
15637 (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));
15640#line 15641 "parse.c"
15644#line 6299 "parse.y"
15646 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
15649#line 15650 "parse.c"
15653#line 6304 "parse.y"
15655 (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));
15658#line 15659 "parse.c"
15662#line 6309 "parse.y"
15664 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15667#line 15668 "parse.c"
15671#line 6314 "parse.y"
15673 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15676#line 15677 "parse.c"
15680#line 6319 "parse.y"
15682 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
15685#line 15686 "parse.c"
15689#line 6324 "parse.y"
15691 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15694#line 15695 "parse.c"
15698#line 4997 "parse.y"
15700 (yyval.node_args) = new_empty_args_tail(p, &(yylsp[0]));
15701 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, (yyvsp[0].id), 0, (yyval.node_args), &(yyloc));
15704#line 15705 "parse.c"
15708#line 5003 "parse.y"
15710 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15713#line 15714 "parse.c"
15717#line 6332 "parse.y"
15719 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15722#line 15723 "parse.c"
15726#line 5012 "parse.y"
15728 p->command_start = TRUE;
15730#line 15731 "parse.c"
15734#line 5018 "parse.y"
15736 p->max_numparam = ORDINAL_PARAM;
15737 p->ctxt.in_argdef = 0;
15738 (yyval.node_args) = (yyvsp[-2].node_args);
15741#line 15742 "parse.c"
15745#line 5027 "parse.y"
15747 (yyval.node_args) = 0;
15750#line 15751 "parse.c"
15754#line 5035 "parse.y"
15759#line 15760 "parse.c"
15763#line 5040 "parse.y"
15768#line 15769 "parse.c"
15772#line 5053 "parse.y"
15774 new_bv(p, (yyvsp[0].
id));
15777#line 15778 "parse.c"
15781#line 5060 "parse.y"
15783 (yyval.num) = p->max_numparam;
15784 p->max_numparam = 0;
15786#line 15787 "parse.c"
15790#line 5066 "parse.y"
15792 (yyval.node) = numparam_push(p);
15794#line 15795 "parse.c"
15798#line 5071 "parse.y"
15800 (yyval.id) = p->it_id;
15803#line 15804 "parse.c"
15807#line 5078 "parse.y"
15809 token_info_push(p,
"->", &(yylsp[0]));
15810 (yyval.vars) = dyna_push(p);
15812#line 15813 "parse.c"
15816#line 5084 "parse.y"
15820#line 15821 "parse.c"
15824#line 5088 "parse.y"
15826 int max_numparam = p->max_numparam;
15827 ID it_id = p->it_id;
15828 p->lex.lpar_beg = (yyvsp[-8].num);
15829 p->max_numparam = (yyvsp[-6].num);
15830 p->it_id = (yyvsp[-4].id);
15831 restore_block_exit(p, (yyvsp[-3].node_exits));
15833 (yyvsp[-2].node_args) = args_with_numbered(p, (yyvsp[-2].node_args), max_numparam, it_id);
15835 YYLTYPE loc = code_loc_gen(&(yylsp[-8]), &(yylsp[0]));
15836 (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);
15837 nd_set_line(RNODE_LAMBDA((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
15838 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
15839 nd_set_first_loc((yyval.node), (yylsp[-8]).beg_pos);
15840 xfree((yyvsp[0].locations_lambda_body));
15843 numparam_pop(p, (yyvsp[-5].node));
15844 dyna_pop(p, (yyvsp[-7].vars));
15846#line 15847 "parse.c"
15850#line 5112 "parse.y"
15852 p->ctxt.in_argdef = 0;
15853 (yyval.node_args) = (yyvsp[-2].node_args);
15854 p->max_numparam = ORDINAL_PARAM;
15857#line 15858 "parse.c"
15861#line 5119 "parse.y"
15863 p->ctxt.in_argdef = 0;
15864 if (!args_info_empty_p(&(yyvsp[0].node_args)->nd_ainfo))
15865 p->max_numparam = ORDINAL_PARAM;
15866 (yyval.node_args) = (yyvsp[0].node_args);
15868#line 15869 "parse.c"
15872#line 5128 "parse.y"
15874 token_info_pop(p,
"}", &(yylsp[0]));
15875 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-2]), &(yylsp[0]));
15878#line 15879 "parse.c"
15882#line 5134 "parse.y"
15884 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15886#line 15887 "parse.c"
15890#line 5138 "parse.y"
15892 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-3]), &(yylsp[0]));
15895#line 15896 "parse.c"
15899#line 5145 "parse.y"
15901 (yyval.node) = (yyvsp[-1].node);
15902 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15905#line 15906 "parse.c"
15909#line 5153 "parse.y"
15911 (yyval.node) = command_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15912 fixpos((yyval.node), (yyvsp[-1].node));
15915#line 15916 "parse.c"
15919#line 5159 "parse.y"
15921 bool has_args = (yyvsp[0].node) != 0;
15922 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15923 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15929#line 15930 "parse.c"
15933#line 5169 "parse.y"
15935 if (NODE_EMPTY_ARGS_P((yyvsp[-1].node))) (yyvsp[-1].node) = 0;
15936 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15939#line 15940 "parse.c"
15943#line 5175 "parse.y"
15945 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15948#line 15949 "parse.c"
15952#line 5180 "parse.y"
15954 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15955 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15958#line 15959 "parse.c"
15962#line 5188 "parse.y"
15964 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
15965 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
15966 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
15969#line 15970 "parse.c"
15973#line 5195 "parse.y"
15975 bool has_args = (yyvsp[0].node) != 0;
15976 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15977 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15978 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15984#line 15985 "parse.c"
15988#line 5206 "parse.y"
15990 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15991 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15994#line 15995 "parse.c"
15998#line 5212 "parse.y"
16000 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-2].node), (yyvsp[0].id), 0, &(yylsp[0]), &(yyloc));
16003#line 16004 "parse.c"
16007#line 5217 "parse.y"
16009 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
16010 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
16013#line 16014 "parse.c"
16017#line 5223 "parse.y"
16021 lparen_loc.end_pos.column = lparen_loc.beg_pos.column + 1;
16022 rparen_loc.beg_pos.column = rparen_loc.end_pos.column - 1;
16024 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &lparen_loc, &rparen_loc);
16027#line 16028 "parse.c"
16031#line 5233 "parse.y"
16033 (yyval.node) = NEW_ZSUPER(&(yyloc));
16036#line 16037 "parse.c"
16040#line 5238 "parse.y"
16042 (yyval.node) = NEW_CALL((yyvsp[-3].node), tAREF, (yyvsp[-1].node), &(yyloc));
16043 fixpos((yyval.node), (yyvsp[-3].node));
16046#line 16047 "parse.c"
16050#line 5246 "parse.y"
16052 (yyval.node) = (yyvsp[-1].node);
16053 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
16056#line 16057 "parse.c"
16060#line 5252 "parse.y"
16062 (yyval.node) = (yyvsp[-1].node);
16063 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
16066#line 16067 "parse.c"
16070#line 5259 "parse.y"
16071 {(yyval.vars) = dyna_push(p);}
16072#line 16073 "parse.c"
16076#line 5262 "parse.y"
16078 int max_numparam = p->max_numparam;
16079 ID it_id = p->it_id;
16080 p->max_numparam = (yyvsp[-5].num);
16081 p->it_id = (yyvsp[-3].id);
16082 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
16083 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
16085 restore_block_exit(p, (yyvsp[-2].node_exits));
16086 numparam_pop(p, (yyvsp[-4].node));
16087 dyna_pop(p, (yyvsp[-6].vars));
16089#line 16090 "parse.c"
16093#line 5276 "parse.y"
16095 (yyval.vars) = dyna_push(p);
16098#line 16099 "parse.c"
16102#line 5282 "parse.y"
16104 int max_numparam = p->max_numparam;
16105 ID it_id = p->it_id;
16106 p->max_numparam = (yyvsp[-5].num);
16107 p->it_id = (yyvsp[-3].id);
16108 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
16109 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
16112 restore_block_exit(p, (yyvsp[-2].node_exits));
16113 numparam_pop(p, (yyvsp[-4].node));
16114 dyna_pop(p, (yyvsp[-6].vars));
16116#line 16117 "parse.c"
16120#line 5298 "parse.y"
16122 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
16123 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16126#line 16127 "parse.c"
16130#line 5304 "parse.y"
16132 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16135#line 16136 "parse.c"
16139#line 5309 "parse.y"
16141 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
16142 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16145#line 16146 "parse.c"
16149#line 5315 "parse.y"
16151 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
16154#line 16155 "parse.c"
16158#line 5324 "parse.y"
16160 (yyval.node) = NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]));
16161 fixpos((yyval.node), (yyvsp[-3].node));
16164#line 16165 "parse.c"
16168#line 5335 "parse.y"
16169 {(yyval.tbl) = p->pvtbl; p->pvtbl = st_init_numtable();}
16170#line 16171 "parse.c"
16174#line 5336 "parse.y"
16175 {(yyval.tbl) = p->pktbl; p->pktbl = 0;}
16176#line 16177 "parse.c"
16180#line 5338 "parse.y"
16182 (yyval.ctxt) = p->ctxt;
16183 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
16184 p->command_start = FALSE;
16185 p->ctxt.in_kwarg = 1;
16186 p->ctxt.in_alt_pattern = 0;
16187 p->ctxt.capture_in_pattern = 0;
16189#line 16190 "parse.c"
16193#line 5351 "parse.y"
16195 pop_pktbl(p, (yyvsp[-2].tbl));
16196 pop_pvtbl(p, (yyvsp[-3].tbl));
16197 p->ctxt.in_kwarg = (yyvsp[-4].ctxt).in_kwarg;
16198 p->ctxt.in_alt_pattern = (yyvsp[-4].ctxt).in_alt_pattern;
16199 p->ctxt.capture_in_pattern = (yyvsp[-4].ctxt).capture_in_pattern;
16201#line 16202 "parse.c"
16205#line 5360 "parse.y"
16207 (yyval.node) = NEW_IN((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-8]), &(yylsp[-3]), &NULL_LOC);
16210#line 16211 "parse.c"
16214#line 5372 "parse.y"
16216 (yyval.node) = new_if(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
16217 fixpos((yyval.node), (yyvsp[0].node));
16220#line 16221 "parse.c"
16224#line 5378 "parse.y"
16226 (yyval.node) = new_unless(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
16227 fixpos((yyval.node), (yyvsp[0].node));
16230#line 16231 "parse.c"
16234#line 5387 "parse.y"
16236 (yyval.node) = new_array_pattern_tail(p, 0, 1, 0, 0, &(yyloc));
16237 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-1].node), (yyval.node), &(yyloc));
16240#line 16241 "parse.c"
16244#line 5393 "parse.y"
16246 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16247 nd_set_first_loc((yyval.node), (yylsp[-2]).beg_pos);
16250#line 16251 "parse.c"
16254#line 5399 "parse.y"
16256 (yyval.node) = new_find_pattern(p, 0, (yyvsp[0].node), &(yyloc));
16259#line 16260 "parse.c"
16263#line 5404 "parse.y"
16265 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[0].node), &(yyloc));
16268#line 16269 "parse.c"
16272#line 5409 "parse.y"
16274 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[0].node), &(yyloc));
16277#line 16278 "parse.c"
16281#line 5419 "parse.y"
16283 NODE *n = NEW_LIST((yyvsp[-2].node), &(yyloc));
16284 n = list_append(p, n, (yyvsp[0].node));
16285 (yyval.node) = new_hash(p, n, &(yyloc));
16288#line 16289 "parse.c"
16292#line 5429 "parse.y"
16294 p->ctxt.in_alt_pattern = 1;
16296#line 16297 "parse.c"
16300#line 5433 "parse.y"
16302 if (p->ctxt.capture_in_pattern) {
16303 yyerror1(&(yylsp[-2]),
"alternative pattern after variable capture");
16305 p->ctxt.in_alt_pattern = 0;
16306 (yyval.node) = NEW_OR((yyvsp[-3].node), (yyvsp[0].node), &(yyloc), &(yylsp[-2]));
16309#line 16310 "parse.c"
16313#line 5445 "parse.y"
16315 (yyval.tbl) = (yyvsp[0].tbl);
16318#line 16319 "parse.c"
16322#line 5452 "parse.y"
16324 (yyval.tbl) = (yyvsp[0].tbl);
16327#line 16328 "parse.c"
16331#line 5461 "parse.y"
16333 pop_pktbl(p, (yyvsp[-2].tbl));
16334 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
16335 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16338#line 16339 "parse.c"
16342#line 5468 "parse.y"
16344 pop_pktbl(p, (yyvsp[-2].tbl));
16345 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16346 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16349#line 16350 "parse.c"
16353#line 5475 "parse.y"
16355 pop_pktbl(p, (yyvsp[-2].tbl));
16356 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16357 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16360#line 16361 "parse.c"
16364#line 5482 "parse.y"
16366 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16367 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
16370#line 16371 "parse.c"
16374#line 5488 "parse.y"
16376 pop_pktbl(p, (yyvsp[-2].tbl));
16377 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
16378 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16381#line 16382 "parse.c"
16385#line 5495 "parse.y"
16387 pop_pktbl(p, (yyvsp[-2].tbl));
16388 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16389 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16392#line 16393 "parse.c"
16396#line 5502 "parse.y"
16398 pop_pktbl(p, (yyvsp[-2].tbl));
16399 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16400 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16403#line 16404 "parse.c"
16407#line 5509 "parse.y"
16409 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16410 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
16413#line 16414 "parse.c"
16417#line 5515 "parse.y"
16419 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[-1].node), &(yyloc));
16422#line 16423 "parse.c"
16426#line 5520 "parse.y"
16428 (yyval.node) = new_find_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16431#line 16432 "parse.c"
16435#line 5525 "parse.y"
16437 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16438 (yyval.node) = new_array_pattern(p, 0, 0, (yyval.node), &(yyloc));
16441#line 16442 "parse.c"
16445#line 5531 "parse.y"
16447 p->ctxt.in_kwarg = 0;
16449#line 16450 "parse.c"
16453#line 5535 "parse.y"
16455 pop_pktbl(p, (yyvsp[-4].tbl));
16456 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
16457 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16460#line 16461 "parse.c"
16464#line 5542 "parse.y"
16466 (yyval.node) = new_hash_pattern_tail(p, 0, 0, &(yyloc));
16467 (yyval.node) = new_hash_pattern(p, 0, (yyval.node), &(yyloc));
16470#line 16471 "parse.c"
16474#line 5548 "parse.y"
16476 pop_pktbl(p, (yyvsp[-2].tbl));
16477 (yyval.node) = (yyvsp[-1].node);
16480#line 16481 "parse.c"
16484#line 5556 "parse.y"
16486 NODE *pre_args = NEW_LIST((yyvsp[0].node), &(yyloc));
16487 (yyval.node) = new_array_pattern_tail(p, pre_args, 0, 0, 0, &(yyloc));
16490#line 16491 "parse.c"
16494#line 5562 "parse.y"
16496 (yyval.node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0, 0, &(yyloc));
16499#line 16500 "parse.c"
16503#line 5567 "parse.y"
16505 (yyval.node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, 0, 0, &(yyloc));
16508#line 16509 "parse.c"
16512#line 5572 "parse.y"
16514 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, (yyvsp[0].node), 0, &(yyloc));
16517#line 16518 "parse.c"
16521#line 5577 "parse.y"
16523 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16526#line 16527 "parse.c"
16530#line 5586 "parse.y"
16532 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
16535#line 16536 "parse.c"
16539#line 5593 "parse.y"
16541 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[0].node), 0, &(yyloc));
16544#line 16545 "parse.c"
16548#line 5598 "parse.y"
16550 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16553#line 16554 "parse.c"
16557#line 5605 "parse.y"
16559 (yyval.node) = new_find_pattern_tail(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16562#line 16563 "parse.c"
16566#line 5613 "parse.y"
16568 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16570 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16572#line 16573 "parse.c"
16576#line 5619 "parse.y"
16581#line 16582 "parse.c"
16585#line 5627 "parse.y"
16587 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16590#line 16591 "parse.c"
16594#line 5634 "parse.y"
16596 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16599#line 16600 "parse.c"
16603#line 5641 "parse.y"
16605 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].id), &(yyloc));
16608#line 16609 "parse.c"
16612#line 5646 "parse.y"
16614 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
16617#line 16618 "parse.c"
16621#line 5651 "parse.y"
16623 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
16626#line 16627 "parse.c"
16630#line 5656 "parse.y"
16632 (yyval.node) = new_hash_pattern_tail(p, new_hash(p, 0, &(yyloc)), (yyvsp[0].
id), &(yyloc));
16635#line 16636 "parse.c"
16639#line 5665 "parse.y"
16641 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16644#line 16645 "parse.c"
16648#line 5672 "parse.y"
16650 error_duplicate_pattern_key(p, (yyvsp[-1].
id), &(yylsp[-1]));
16651 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
16654#line 16655 "parse.c"
16658#line 5678 "parse.y"
16660 error_duplicate_pattern_key(p, (yyvsp[0].
id), &(yylsp[0]));
16661 if ((yyvsp[0].
id) && !is_local_id((yyvsp[0].
id))) {
16662 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
16664 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16665 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
16668#line 16669 "parse.c"
16672#line 5691 "parse.y"
16674 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
16675 if (!(yyvsp[-1].node) || nd_type_p((yyvsp[-1].node), NODE_STR)) {
16676 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
16677 (yyval.id) =
rb_sym2id(rb_node_sym_string_val(node));
16680 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
16681 (yyval.id) = rb_intern_str(STR_NEW0());
16685#line 16686 "parse.c"
16689#line 5706 "parse.y"
16691 (yyval.id) = (yyvsp[0].
id);
16694#line 16695 "parse.c"
16698#line 5711 "parse.y"
16703#line 16704 "parse.c"
16707#line 5718 "parse.y"
16711#line 16712 "parse.c"
16715#line 5725 "parse.y"
16717 (yyval.id) = idNil;
16720#line 16721 "parse.c"
16724#line 3112 "parse.y"
16726 value_expr(p, (yyvsp[-2].node));
16727 value_expr(p, (yyvsp[0].node));
16728 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16731#line 16732 "parse.c"
16735#line 3119 "parse.y"
16737 value_expr(p, (yyvsp[-2].node));
16738 value_expr(p, (yyvsp[0].node));
16739 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16742#line 16743 "parse.c"
16746#line 3126 "parse.y"
16748 value_expr(p, (yyvsp[-1].node));
16749 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16752#line 16753 "parse.c"
16756#line 3132 "parse.y"
16758 value_expr(p, (yyvsp[-1].node));
16759 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16762#line 16763 "parse.c"
16766#line 3138 "parse.y"
16768 value_expr(p, (yyvsp[0].node));
16769 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16772#line 16773 "parse.c"
16776#line 3144 "parse.y"
16778 value_expr(p, (yyvsp[0].node));
16779 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16782#line 16783 "parse.c"
16786#line 5740 "parse.y"
16788 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16791#line 16792 "parse.c"
16795#line 5748 "parse.y"
16797 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16799 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16801#line 16802 "parse.c"
16805#line 5756 "parse.y"
16807 NODE *n = gettable(p, (yyvsp[0].
id), &(yyloc));
16809 n = NEW_ERROR(&(yyloc));
16811 else if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
16812 compile_error(p,
"%"PRIsVALUE
": no such local variable", rb_id2str((yyvsp[0].
id)));
16817#line 16818 "parse.c"
16821#line 5768 "parse.y"
16823 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16826#line 16827 "parse.c"
16830#line 5775 "parse.y"
16832 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
16835#line 16836 "parse.c"
16839#line 5782 "parse.y"
16841 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
16844#line 16845 "parse.c"
16848#line 5787 "parse.y"
16850 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
16853#line 16854 "parse.c"
16857#line 5792 "parse.y"
16859 (yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc));
16862#line 16863 "parse.c"
16866#line 5801 "parse.y"
16868 NODE *err = (yyvsp[-3].node);
16869 if ((yyvsp[-3].node)) {
16870 err = NEW_ERRINFO(&(yylsp[-3]));
16871 err = node_assign(p, (yyvsp[-3].node), err, NO_LEX_CTXT, &(yylsp[-3]));
16873 (yyval.node) = NEW_RESBODY((yyvsp[-4].node), (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16874 if ((yyvsp[-4].node)) {
16875 fixpos((yyval.node), (yyvsp[-4].node));
16877 else if ((yyvsp[-3].node)) {
16878 fixpos((yyval.node), (yyvsp[-3].node));
16881 fixpos((yyval.node), (yyvsp[-1].node));
16885#line 16886 "parse.c"
16889#line 5823 "parse.y"
16891 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16894#line 16895 "parse.c"
16898#line 5828 "parse.y"
16900 if (!((yyval.node) = splat_array((yyvsp[0].node)))) (yyval.node) = (yyvsp[0].node);
16902#line 16903 "parse.c"
16906#line 5835 "parse.y"
16908 (yyval.node) = (yyvsp[0].node);
16911#line 16912 "parse.c"
16915#line 5843 "parse.y"
16917 p->ctxt.in_rescue = (yyvsp[-2].ctxt).in_rescue;
16918 (yyval.node) = (yyvsp[-1].node);
16919 void_expr(p, void_stmts(p, (yyval.node)));
16922#line 16923 "parse.c"
16926#line 5857 "parse.y"
16928 if (!(yyvsp[0].node)) {
16929 (yyval.node) = NEW_STR(STRING_NEW0(), &(yyloc));
16932 (yyval.node) = evstr2dstr(p, (yyvsp[0].node));
16936#line 16937 "parse.c"
16940#line 5871 "parse.y"
16942 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16945#line 16946 "parse.c"
16949#line 5878 "parse.y"
16951 (yyval.node) = heredoc_dedent(p, (yyvsp[-1].node));
16952 if ((yyval.node)) nd_set_loc((yyval.node), &(yyloc));
16954 if (p->heredoc_indent > 0) {
16956 p->heredoc_indent = 0;
16960#line 16961 "parse.c"
16964#line 5891 "parse.y"
16966 (yyval.node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
16968 if (p->heredoc_indent > 0) {
16970 p->heredoc_indent = 0;
16974#line 16975 "parse.c"
16978#line 5903 "parse.y"
16980 (yyval.node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
16983#line 16984 "parse.c"
16987#line 3161 "parse.y"
16989 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16992#line 16993 "parse.c"
16996#line 5913 "parse.y"
17001#line 17002 "parse.c"
17005#line 5918 "parse.y"
17007 (yyval.node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
17010#line 17011 "parse.c"
17014#line 5927 "parse.y"
17016 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
17019#line 17020 "parse.c"
17023#line 3161 "parse.y"
17025 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
17028#line 17029 "parse.c"
17032#line 5937 "parse.y"
17037#line 17038 "parse.c"
17041#line 5942 "parse.y"
17043 (yyval.node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
17046#line 17047 "parse.c"
17050#line 3161 "parse.y"
17052 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
17055#line 17056 "parse.c"
17059#line 3161 "parse.y"
17061 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
17064#line 17065 "parse.c"
17068#line 5955 "parse.y"
17073#line 17074 "parse.c"
17077#line 5960 "parse.y"
17079 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
17082#line 17083 "parse.c"
17086#line 5967 "parse.y"
17091#line 17092 "parse.c"
17095#line 5972 "parse.y"
17097 (yyval.node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
17100#line 17101 "parse.c"
17104#line 5979 "parse.y"
17109#line 17110 "parse.c"
17113#line 5984 "parse.y"
17115 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
17118#line 17119 "parse.c"
17122#line 5991 "parse.y"
17127#line 17128 "parse.c"
17131#line 5996 "parse.y"
17133 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
17136#line 17137 "parse.c"
17140#line 6003 "parse.y"
17145#line 17146 "parse.c"
17149#line 6008 "parse.y"
17151 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
17153 (yyval.node) = tail;
17156 (yyval.node) = head;
17159 switch (nd_type(head)) {
17161 head = str2dstr(p, head);
17166 head = list_append(p, NEW_DSTR(0, &(yyloc)), head);
17169 (yyval.node) = list_append(p, head, tail);
17173#line 17174 "parse.c"
17177#line 6036 "parse.y"
17180 (yyval.strterm) = p->lex.strterm;
17181 p->lex.strterm = 0;
17182 SET_LEX_STATE(EXPR_BEG);
17184#line 17185 "parse.c"
17188#line 6043 "parse.y"
17190 p->lex.strterm = (yyvsp[-1].strterm);
17191 (yyval.node) = NEW_EVSTR((yyvsp[0].node), &(yyloc), &(yylsp[-2]), &NULL_LOC);
17192 nd_set_line((yyval.node), (yylsp[0]).end_pos.lineno);
17195#line 17196 "parse.c"
17199#line 6050 "parse.y"
17204 (yyval.strterm) = p->lex.strterm;
17205 p->lex.strterm = 0;
17206 SET_LEX_STATE(EXPR_BEG);
17208#line 17209 "parse.c"
17212#line 6058 "parse.y"
17214 (yyval.num) = p->lex.brace_nest;
17215 p->lex.brace_nest = 0;
17217#line 17218 "parse.c"
17221#line 6062 "parse.y"
17223 (yyval.num) = p->lex.lpar_beg;
17224 p->lex.lpar_beg = -1;
17226#line 17227 "parse.c"
17230#line 6066 "parse.y"
17232 (yyval.num) = p->heredoc_indent;
17233 p->heredoc_indent = 0;
17235#line 17236 "parse.c"
17239#line 6071 "parse.y"
17243 p->lex.strterm = (yyvsp[-5].strterm);
17244 SET_LEX_STATE((yyvsp[-6].state));
17245 p->lex.brace_nest = (yyvsp[-4].num);
17246 p->lex.lpar_beg = (yyvsp[-3].num);
17247 p->heredoc_indent = (yyvsp[-2].num);
17248 p->heredoc_line_indent = -1;
17249 if ((yyvsp[-1].node)) nd_unset_fl_newline((yyvsp[-1].node));
17250 (yyval.node) = new_evstr(p, (yyvsp[-1].node), &(yyloc), &(yylsp[-6]), &(yylsp[0]));
17253#line 17254 "parse.c"
17257#line 6091 "parse.y"
17259 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17262#line 17263 "parse.c"
17266#line 6103 "parse.y"
17268 SET_LEX_STATE(EXPR_END);
17269 VALUE str = rb_id2str((yyvsp[0].
id));
17276 if (!str) str = STR_NEW0();
17277 (yyval.node) = NEW_SYM(str, &(yyloc));
17280#line 17281 "parse.c"
17284#line 6123 "parse.y"
17286 SET_LEX_STATE(EXPR_END);
17287 (yyval.node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
17290#line 17291 "parse.c"
17294#line 6132 "parse.y"
17296 (yyval.node) = (yyvsp[0].node);
17297 negate_lit(p, (yyval.node), &(yyloc));
17300#line 17301 "parse.c"
17304#line 6154 "parse.y"
17305 {(yyval.id) = KWD2EID(nil, (yyvsp[0].
id));}
17306#line 17307 "parse.c"
17310#line 6155 "parse.y"
17311 {(yyval.id) = KWD2EID(self, (yyvsp[0].
id));}
17312#line 17313 "parse.c"
17316#line 6156 "parse.y"
17317 {(yyval.id) = KWD2EID(
true, (yyvsp[0].
id));}
17318#line 17319 "parse.c"
17322#line 6157 "parse.y"
17323 {(yyval.id) = KWD2EID(
false, (yyvsp[0].
id));}
17324#line 17325 "parse.c"
17328#line 6158 "parse.y"
17329 {(yyval.id) = KWD2EID(_FILE__, (yyvsp[0].
id));}
17330#line 17331 "parse.c"
17334#line 6159 "parse.y"
17335 {(yyval.id) = KWD2EID(_LINE__, (yyvsp[0].
id));}
17336#line 17337 "parse.c"
17340#line 6160 "parse.y"
17341 {(yyval.id) = KWD2EID(_ENCODING__, (yyvsp[0].
id));}
17342#line 17343 "parse.c"
17346#line 6164 "parse.y"
17348 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17349 if (ifdef_ripper(id_is_var(p, (yyvsp[0].
id)),
false)) {
17356#line 17357 "parse.c"
17360#line 6174 "parse.y"
17362 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17365#line 17366 "parse.c"
17369#line 6181 "parse.y"
17372 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
17374#line 17375 "parse.c"
17378#line 6181 "parse.y"
17381 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
17383#line 17384 "parse.c"
17387#line 6192 "parse.y"
17389 SET_LEX_STATE(EXPR_BEG);
17390 p->command_start = TRUE;
17392#line 17393 "parse.c"
17396#line 6197 "parse.y"
17398 (yyval.node) = (yyvsp[-1].node);
17401#line 17402 "parse.c"
17405#line 6206 "parse.y"
17407 p->ctxt.in_argdef = 0;
17409#line 17410 "parse.c"
17413#line 6212 "parse.y"
17415 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
17416 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyval.node_args), &(yyloc));
17419#line 17420 "parse.c"
17423#line 6220 "parse.y"
17425 (yyval.node_args) = (yyvsp[-1].node_args);
17427 SET_LEX_STATE(EXPR_BEG);
17428 p->command_start = TRUE;
17429 p->ctxt.in_argdef = 0;
17431#line 17432 "parse.c"
17435#line 6230 "parse.y"
17437 (yyval.ctxt) = p->ctxt;
17438 p->ctxt.in_kwarg = 1;
17439 p->ctxt.in_argdef = 1;
17440 SET_LEX_STATE(p->lex.state|EXPR_LABEL);
17442#line 17443 "parse.c"
17446#line 6237 "parse.y"
17448 p->ctxt.in_kwarg = (yyvsp[-2].ctxt).in_kwarg;
17449 p->ctxt.in_argdef = 0;
17450 (yyval.node_args) = (yyvsp[-1].node_args);
17451 SET_LEX_STATE(EXPR_BEG);
17452 p->command_start = TRUE;
17455#line 17456 "parse.c"
17459#line 3012 "parse.y"
17461 p->ctxt.in_argdef = 1;
17462 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17465#line 17466 "parse.c"
17469#line 3018 "parse.y"
17471 p->ctxt.in_argdef = 1;
17472 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
17475#line 17476 "parse.c"
17479#line 3027 "parse.y"
17481 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
17484#line 17485 "parse.c"
17488#line 3032 "parse.y"
17490 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
17493#line 17494 "parse.c"
17497#line 2949 "parse.y"
17499 (yyval.id) = (yyvsp[0].
id);
17502#line 17503 "parse.c"
17506#line 2926 "parse.y"
17508 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
17511#line 17512 "parse.c"
17515#line 2931 "parse.y"
17517 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
17520#line 17521 "parse.c"
17524#line 2936 "parse.y"
17526 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
17529#line 17530 "parse.c"
17533#line 2941 "parse.y"
17535 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
17538#line 17539 "parse.c"
17542#line 6249 "parse.y"
17544 add_forwarding_args(p);
17545 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[0].
id), arg_FWD_BLOCK, &(yylsp[0]));
17546 (yyval.node_args)->nd_ainfo.forwarding = 1;
17549#line 17550 "parse.c"
17553#line 2926 "parse.y"
17555 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
17558#line 17559 "parse.c"
17562#line 2931 "parse.y"
17564 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
17567#line 17568 "parse.c"
17571#line 2936 "parse.y"
17573 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
17576#line 17577 "parse.c"
17580#line 2941 "parse.y"
17582 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
17585#line 17586 "parse.c"
17589#line 6259 "parse.y"
17591 yyerror1(&(yylsp[0]),
"unexpected ... in lambda argument");
17592 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
17593 (yyval.node_args)->nd_ainfo.forwarding = 1;
17596#line 17597 "parse.c"
17600#line 2990 "parse.y"
17602 p->ctxt.in_argdef = 1;
17603 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17606#line 17607 "parse.c"
17610#line 2999 "parse.y"
17612 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
17615#line 17616 "parse.c"
17619#line 3004 "parse.y"
17621 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
17624#line 17625 "parse.c"
17628#line 3099 "parse.y"
17630 (yyval.node_args) = (yyvsp[0].node_args);
17633#line 17634 "parse.c"
17637#line 3104 "parse.y"
17639 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
17642#line 17643 "parse.c"
17646#line 6269 "parse.y"
17648 (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));
17651#line 17652 "parse.c"
17655#line 6274 "parse.y"
17657 (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));
17660#line 17661 "parse.c"
17664#line 6279 "parse.y"
17666 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17669#line 17670 "parse.c"
17673#line 6284 "parse.y"
17675 (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));
17678#line 17679 "parse.c"
17682#line 6289 "parse.y"
17684 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17687#line 17688 "parse.c"
17691#line 6294 "parse.y"
17693 (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));
17696#line 17697 "parse.c"
17700#line 6299 "parse.y"
17702 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17705#line 17706 "parse.c"
17709#line 6304 "parse.y"
17711 (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));
17714#line 17715 "parse.c"
17718#line 6309 "parse.y"
17720 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17723#line 17724 "parse.c"
17727#line 6314 "parse.y"
17729 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17732#line 17733 "parse.c"
17736#line 6319 "parse.y"
17738 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17741#line 17742 "parse.c"
17745#line 6324 "parse.y"
17747 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17750#line 17751 "parse.c"
17754#line 6341 "parse.y"
17756 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17759#line 17760 "parse.c"
17763#line 6332 "parse.y"
17765 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17768#line 17769 "parse.c"
17772#line 3099 "parse.y"
17774 (yyval.node_args) = (yyvsp[0].node_args);
17777#line 17778 "parse.c"
17781#line 3104 "parse.y"
17783 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
17786#line 17787 "parse.c"
17790#line 6269 "parse.y"
17792 (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));
17795#line 17796 "parse.c"
17799#line 6274 "parse.y"
17801 (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));
17804#line 17805 "parse.c"
17808#line 6279 "parse.y"
17810 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17813#line 17814 "parse.c"
17817#line 6284 "parse.y"
17819 (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));
17822#line 17823 "parse.c"
17826#line 6289 "parse.y"
17828 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17831#line 17832 "parse.c"
17835#line 6294 "parse.y"
17837 (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));
17840#line 17841 "parse.c"
17844#line 6299 "parse.y"
17846 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17849#line 17850 "parse.c"
17853#line 6304 "parse.y"
17855 (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));
17858#line 17859 "parse.c"
17862#line 6309 "parse.y"
17864 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17867#line 17868 "parse.c"
17871#line 6314 "parse.y"
17873 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17876#line 17877 "parse.c"
17880#line 6319 "parse.y"
17882 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17885#line 17886 "parse.c"
17889#line 6324 "parse.y"
17891 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17894#line 17895 "parse.c"
17898#line 6341 "parse.y"
17900 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17903#line 17904 "parse.c"
17907#line 6332 "parse.y"
17909 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17912#line 17913 "parse.c"
17916#line 6356 "parse.y"
17918 (yyval.id) = idFWD_KWREST;
17921#line 17922 "parse.c"
17925#line 6363 "parse.y"
17927 static const char mesg[] =
"formal argument cannot be a constant";
17929 yyerror1(&(yylsp[0]), mesg);
17934#line 17935 "parse.c"
17938#line 6372 "parse.y"
17940 static const char mesg[] =
"formal argument cannot be an instance variable";
17942 yyerror1(&(yylsp[0]), mesg);
17947#line 17948 "parse.c"
17951#line 6381 "parse.y"
17953 static const char mesg[] =
"formal argument cannot be a global variable";
17955 yyerror1(&(yylsp[0]), mesg);
17960#line 17961 "parse.c"
17964#line 6390 "parse.y"
17966 static const char mesg[] =
"formal argument cannot be a class variable";
17968 yyerror1(&(yylsp[0]), mesg);
17973#line 17974 "parse.c"
17977#line 6402 "parse.y"
17979 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
17983 p->max_numparam = ORDINAL_PARAM;
17985#line 17986 "parse.c"
17989#line 6412 "parse.y"
17991 arg_var(p, (yyvsp[0].
id));
17992 (yyval.id) = (yyvsp[0].
id);
17994#line 17995 "parse.c"
17998#line 6419 "parse.y"
18000 (yyval.node_args_aux) = NEW_ARGS_AUX((yyvsp[0].
id), 1, &NULL_LOC);
18003#line 18004 "parse.c"
18007#line 6424 "parse.y"
18009 ID tid = internal_id(p);
18011 loc.beg_pos = (yylsp[-1]).beg_pos;
18012 loc.end_pos = (yylsp[-1]).beg_pos;
18014 if (dyna_in_block(p)) {
18015 (yyvsp[-1].node_masgn)->nd_value = NEW_DVAR(tid, &loc);
18018 (yyvsp[-1].node_masgn)->nd_value = NEW_LVAR(tid, &loc);
18020 (yyval.node_args_aux) = NEW_ARGS_AUX(tid, 1, &NULL_LOC);
18021 (yyval.node_args_aux)->nd_next = (
NODE *)(yyvsp[-1].node_masgn);
18024#line 18025 "parse.c"
18028#line 6445 "parse.y"
18030 (yyval.node_args_aux) = (yyvsp[-2].node_args_aux);
18031 (yyval.node_args_aux)->nd_plen++;
18032 (yyval.node_args_aux)->nd_next = block_append(p, (yyval.node_args_aux)->nd_next, (yyvsp[0].node_args_aux)->nd_next);
18033 rb_discard_node(p, (
NODE *)(yyvsp[0].node_args_aux));
18036#line 18037 "parse.c"
18040#line 6456 "parse.y"
18042 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
18053 arg_var(p, ifdef_ripper(0, (yyvsp[0].
id)));
18055 p->max_numparam = ORDINAL_PARAM;
18056 p->ctxt.in_argdef = 0;
18058#line 18059 "parse.c"
18062#line 6480 "parse.y"
18066#line 18067 "parse.c"
18070#line 6486 "parse.y"
18072 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
18073 (yyval.id) = (yyvsp[0].
id);
18076#line 18077 "parse.c"
18080#line 6492 "parse.y"
18082 arg_var(p, idFWD_KWREST);
18083 (yyval.id) = idFWD_KWREST;
18086#line 18087 "parse.c"
18090#line 6504 "parse.y"
18092 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
18093 (yyval.id) = (yyvsp[0].
id);
18096#line 18097 "parse.c"
18100#line 6510 "parse.y"
18102 arg_var(p, idFWD_REST);
18103 (yyval.id) = idFWD_REST;
18106#line 18107 "parse.c"
18110#line 6522 "parse.y"
18112 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
18113 (yyval.id) = (yyvsp[0].
id);
18116#line 18117 "parse.c"
18120#line 6528 "parse.y"
18122 (yyval.id) = idNil;
18125#line 18126 "parse.c"
18129#line 6533 "parse.y"
18131 arg_var(p, idFWD_BLOCK);
18132 (yyval.id) = idFWD_BLOCK;
18135#line 18136 "parse.c"
18139#line 6541 "parse.y"
18144#line 18145 "parse.c"
18148#line 3153 "parse.y"
18150 value_expr(p, (yyvsp[0].node));
18151 (yyval.node) = (yyvsp[0].node);
18153#line 18154 "parse.c"
18157#line 6549 "parse.y"
18159 NODE *expr = last_expr_node((yyvsp[0].node));
18160 switch (nd_type(expr)) {
18170 case NODE_ENCODING:
18173 case NODE_RATIONAL:
18174 case NODE_IMAGINARY:
18178 yyerror1(&expr->nd_loc,
"can't define singleton method for literals");
18183 (yyval.node) = (yyvsp[0].node);
18185#line 18186 "parse.c"
18189#line 6580 "parse.y"
18191 SET_LEX_STATE(EXPR_BEG);
18192 p->ctxt.in_argdef = 0;
18194#line 18195 "parse.c"
18198#line 6585 "parse.y"
18200 p->ctxt.in_argdef = 1;
18201 (yyval.node) = (yyvsp[-1].node);
18204#line 18205 "parse.c"
18208#line 6594 "parse.y"
18210 (yyval.node) = (yyvsp[-1].node);
18213#line 18214 "parse.c"
18217#line 6603 "parse.y"
18219 NODE *assocs = (yyvsp[-2].node);
18220 NODE *tail = (yyvsp[0].node);
18225 NODE *n = RNODE_LIST(tail)->nd_next;
18226 if (!RNODE_LIST(tail)->nd_head && nd_type_p(n, NODE_LIST) &&
18227 nd_type_p((n = RNODE_LIST(n)->nd_head), NODE_HASH)) {
18229 tail = RNODE_HASH(n)->nd_head;
18232 assocs = list_concat(assocs, tail);
18235 (yyval.node) = assocs;
18238#line 18239 "parse.c"
18242#line 6626 "parse.y"
18244 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
18247#line 18248 "parse.c"
18251#line 6631 "parse.y"
18253 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
18256#line 18257 "parse.c"
18260#line 6636 "parse.y"
18262 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
18263 if (!val) val = NEW_ERROR(&(yyloc));
18264 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
18267#line 18268 "parse.c"
18271#line 6643 "parse.y"
18273 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
18274 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
18277#line 18278 "parse.c"
18281#line 6649 "parse.y"
18283 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
18286#line 18287 "parse.c"
18290#line 6654 "parse.y"
18292 forwarding_arg_check(p, idFWD_KWREST, idFWD_ALL,
"keyword rest");
18293 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)),
18294 NEW_LVAR(idFWD_KWREST, &(yyloc)));
18297#line 18298 "parse.c"
18301#line 6701 "parse.y"
18305 if (p->ctxt.in_defined) {
18306 p->ctxt.has_trailing_semicolon = 1;
18309#line 18310 "parse.c"
18313#line 6709 "parse.y"
18315 (yyloc).end_pos = (yyloc).beg_pos;
18318#line 18319 "parse.c"
18322#line 6716 "parse.y"
18324#line 18325 "parse.c"
18328#line 6720 "parse.y"
18333#line 18334 "parse.c"
18337#line 18338 "parse.c"
18352 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc, p);
18354 YYPOPSTACK (yylen);
18356#line 2665 "parse.y"
18357 {after_reduce(yylen, p);}
18358#line 18359 "parse.c"
18369 const int yylhs = yyr1[yyn] - YYNTOKENS;
18370 const int yyi = yypgoto[yylhs] + *yyssp;
18371 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
18373 : yydefgoto[yylhs]);
18385 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
18392 = {yyssp, yytoken, &yylloc};
18393 char const *yymsgp = YY_(
"syntax error");
18394 int yysyntax_error_status;
18395 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
18396 if (yysyntax_error_status == 0)
18398 else if (yysyntax_error_status == -1)
18400 if (yymsg != yymsgbuf)
18401 YYSTACK_FREE (yymsg);
18402 yymsg = YY_CAST (
char *,
18403 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
18406 yysyntax_error_status
18407 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
18413 yymsg_alloc =
sizeof yymsgbuf;
18414 yysyntax_error_status = YYENOMEM;
18417 yyerror (&yylloc, p, yymsgp);
18418 if (yysyntax_error_status == YYENOMEM)
18423 yyerror_range[1] = yylloc;
18424 if (yyerrstatus == 3)
18429 if (yychar <= END_OF_INPUT)
18432 if (yychar == END_OF_INPUT)
18437 yydestruct (
"Error: discarding",
18438 yytoken, &yylval, &yylloc, p);
18460 YYPOPSTACK (yylen);
18462#line 2667 "parse.y"
18463 {after_pop_stack(yylen, p);}
18464#line 18465 "parse.c"
18467 YY_STACK_PRINT (yyss, yyssp, p);
18481 yyn = yypact[yystate];
18482 if (!yypact_value_is_default (yyn))
18484 yyn += YYSYMBOL_YYerror;
18485 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
18487 yyn = yytable[yyn];
18497 yyerror_range[1] = *yylsp;
18498 yydestruct (
"Error: popping",
18499 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
18502#line 2667 "parse.y"
18503 {after_pop_stack(1, p);}
18504#line 18505 "parse.c"
18507 YY_STACK_PRINT (yyss, yyssp, p);
18510 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
18512 YY_IGNORE_MAYBE_UNINITIALIZED_END
18514 yyerror_range[2] = yylloc;
18516 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
18519 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp, p);
18521#line 2666 "parse.y"
18522 {after_shift_error_token(p);}
18523#line 18524 "parse.c"
18550 yyerror (&yylloc, p, YY_(
"memory exhausted"));
18559 if (yychar != YYEMPTY)
18563 yytoken = YYTRANSLATE (yychar);
18564 yydestruct (
"Cleanup: discarding lookahead",
18565 yytoken, &yylval, &yylloc, p);
18569 YYPOPSTACK (yylen);
18570 YY_STACK_PRINT (yyss, yyssp, p);
18571 while (yyssp != yyss)
18573 yydestruct (
"Cleanup: popping",
18574 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
18579 YYSTACK_FREE (yyss);
18581 if (yymsg != yymsgbuf)
18582 YYSTACK_FREE (yymsg);
18586#line 6725 "parse.y"
18591# define yylval (*p->lval)
18599#define set_parser_s_value(x) (ifdef_ripper(p->s_value = (x), (void)0))
18601# define set_yylval_node(x) { \
18602 YYLTYPE _cur_loc; \
18603 rb_parser_set_location(p, &_cur_loc); \
18604 yylval.node = (x); \
18605 set_parser_s_value(STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)); \
18607# define set_yylval_str(x) \
18609 set_yylval_node(NEW_STR(x, &_cur_loc)); \
18610 set_parser_s_value(rb_str_new_mutable_parser_string(x)); \
18612# define set_yylval_num(x) { \
18613 yylval.num = (x); \
18614 set_parser_s_value(x); \
18616# define set_yylval_id(x) (yylval.id = (x))
18617# define set_yylval_name(x) { \
18618 (yylval.id = (x)); \
18619 set_parser_s_value(ID2SYM(x)); \
18621# define yylval_id() (yylval.id)
18623#define set_yylval_noname() set_yylval_id(keyword_nil)
18624#define has_delayed_token(p) (p->delayed.token != NULL)
18627#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
18628#define dispatch_scan_event(p, t) parser_dispatch_scan_event(p, t, __LINE__)
18633 const char *
const pcur = p->lex.pcur;
18634 const char *
const ptok = p->lex.ptok;
18635 if (p->keep_tokens && (pcur < ptok)) {
18636 rb_bug(
"lex.pcur < lex.ptok. (line: %d) %"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"",
18637 p->ruby_sourceline, ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur);
18639 return pcur > ptok;
18646 case '"':
return "\\\"";
18647 case '\\':
return "\\\\";
18648 case '\0':
return "\\0";
18649 case '\n':
return "\\n";
18650 case '\r':
return "\\r";
18651 case '\t':
return "\\t";
18652 case '\f':
return "\\f";
18653 case '\013':
return "\\v";
18654 case '\010':
return "\\b";
18655 case '\007':
return "\\a";
18656 case '\033':
return "\\e";
18657 case '\x7f':
return "\\c?";
18666 const char *ptr = str->ptr;
18667 const char *pend = ptr + str->len;
18668 const char *prev = ptr;
18669 char charbuf[5] = {
'\\',
'x', 0, 0, 0};
18672 while (ptr < pend) {
18675 int n = rb_enc_precise_mbclen(ptr, pend, enc);
18677 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18678 n = rb_enc_mbminlen(enc);
18679 if (pend < ptr + n)
18680 n = (int)(pend - ptr);
18682 c = ((
unsigned char)*ptr >> 4) & 0x0f;
18683 charbuf[2] = (c < 10) ?
'0' + c :
'A' + c - 10;
18685 charbuf[3] = (c < 10) ?
'0' + c :
'A' + c - 10;
18686 parser_str_cat(result, charbuf, 4);
18692 c = rb_enc_mbc_to_codepoint(ptr, pend, enc);
18694 cc = escaped_char(c);
18696 if (ptr - n > prev) parser_str_cat(result, prev, ptr - n - prev);
18697 parser_str_cat_cstr(result, cc);
18700 else if (rb_enc_isascii(c, enc) &&
ISPRINT(c)) {
18703 if (ptr - n > prev) {
18704 parser_str_cat(result, prev, ptr - n - prev);
18707 parser_str_cat(result, prev, ptr - prev);
18711 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18720 token->id = p->token_id;
18721 token->type_name = parser_token2char(p, t);
18723 token->loc.beg_pos = p->yylloc->beg_pos;
18724 token->loc.end_pos = p->yylloc->end_pos;
18725 rb_parser_ary_push_ast_token(p, p->tokens, token);
18730 rb_parser_printf(p,
"Append tokens (line: %d) [%d, :%s, \"%s\", [%d, %d, %d, %d]]\n",
18731 line, token->id, token->type_name, str_escaped->ptr,
18732 token->loc.beg_pos.lineno, token->loc.beg_pos.column,
18733 token->loc.end_pos.lineno, token->loc.end_pos.column);
18734 rb_parser_string_free(p, str_escaped);
18739parser_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t,
int line)
18741 debug_token_line(p,
"parser_dispatch_scan_event", line);
18743 if (!parser_has_token(p))
return;
18745 RUBY_SET_YYLLOC(*p->yylloc);
18747 if (p->keep_tokens) {
18748 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pcur - p->lex.ptok, p->enc);
18749 parser_append_tokens(p, str, t, line);
18755#define dispatch_delayed_token(p, t) parser_dispatch_delayed_token(p, t, __LINE__)
18757parser_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t,
int line)
18759 debug_token_line(p,
"parser_dispatch_delayed_token", line);
18761 if (!has_delayed_token(p))
return;
18763 RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(*p->yylloc);
18765 if (p->keep_tokens) {
18767 parser_append_tokens(p, p->delayed.token, t, line);
18770 rb_parser_string_free(p, p->delayed.token);
18773 p->delayed.token = NULL;
18776#define literal_flush(p, ptr) ((void)(ptr))
18781 if (p->lex.pcur < p->lex.ptok) rb_raise(
rb_eRuntimeError,
"lex.pcur < lex.ptok");
18782 return p->lex.pcur > p->lex.ptok;
18786ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
18788 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
18789 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
18790 RUBY_SET_YYLLOC(*p->yylloc);
18796ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
18798 if (!ripper_has_scan_event(p))
return;
18800 set_parser_s_value(ripper_scan_event_val(p, t));
18802#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
18805ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
18808 int saved_line = p->ruby_sourceline;
18809 const char *saved_tokp = p->lex.ptok;
18810 VALUE s_value, str;
18812 if (!has_delayed_token(p))
return;
18813 p->ruby_sourceline = p->delayed.beg_line;
18814 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
18815 str = rb_str_new_mutable_parser_string(p->delayed.token);
18816 rb_parser_string_free(p, p->delayed.token);
18817 s_value = ripper_dispatch1(p, ripper_token2eventid(t), str);
18818 set_parser_s_value(s_value);
18819 p->delayed.token = NULL;
18820 p->ruby_sourceline = saved_line;
18821 p->lex.ptok = saved_tokp;
18823#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
18829 return rb_enc_isalnum((
unsigned char)*ptr, enc) || *ptr ==
'_' || !
ISASCII(*ptr);
18835 const char *ptr = p->lex.pcur + at;
18836 if (lex_eol_ptr_n_p(p, ptr,
len-1))
return false;
18837 if (memcmp(ptr, str,
len))
return false;
18838 if (lex_eol_ptr_n_p(p, ptr,
len))
return true;
18839 switch (ptr[
len]) {
18840 case '!':
case '?':
return false;
18842 return !is_identchar(p, ptr+
len, p->lex.pend, p->enc);
18848 return !(p)->eofp && is_identchar(p, p->lex.pcur-1, p->lex.pend, p->enc);
18854 return ISASCII(*(p->lex.pcur-1));
18860 int column = 1, nonspc = 0, i;
18861 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
18862 if (*ptr ==
'\t') {
18863 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
18866 if (*ptr !=
' ' && *ptr !=
'\t') {
18871 ptinfo->beg = loc->beg_pos;
18872 ptinfo->indent = column;
18873 ptinfo->nonspc = nonspc;
18881 if (!p->token_info_enabled)
return;
18883 ptinfo->token = token;
18884 ptinfo->next = p->token_info;
18885 token_info_setup(ptinfo, p->lex.pbeg, loc);
18887 p->token_info = ptinfo;
18895 if (!ptinfo_beg)
return;
18898 token_info_warn(p, token, ptinfo_beg, 1, loc);
18900 p->token_info = ptinfo_beg->next;
18901 ruby_xfree_sized(ptinfo_beg,
sizeof(*ptinfo_beg));
18909 if (!ptinfo_beg)
return;
18910 p->token_info = ptinfo_beg->next;
18912 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
18913 ptinfo_beg->beg.column != beg_pos.column ||
18914 strcmp(ptinfo_beg->token, token)) {
18915 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
18916 beg_pos.lineno, beg_pos.column, token,
18917 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
18918 ptinfo_beg->token);
18921 ruby_xfree_sized(ptinfo_beg,
sizeof(*ptinfo_beg));
18927 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
18928 if (!p->token_info_enabled)
return;
18929 if (!ptinfo_beg)
return;
18930 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
18931 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
18932 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
18933 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
18934 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
18935 rb_warn3L(ptinfo_end->beg.lineno,
18936 "mismatched indentations at '%s' with '%s' at %d",
18937 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
18941parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
18943 int len = rb_enc_precise_mbclen(ptr, p->lex.pend, p->enc);
18945 compile_error(p,
"invalid multibyte char (%s)", rb_enc_name(p->enc));
18956 int lineno = p->ruby_sourceline;
18960 else if (yylloc->beg_pos.lineno == lineno) {
18961 str = p->lex.lastline;
18966 ruby_show_error_line(p, p->error_buffer, yylloc, lineno, str);
18976 yylloc = RUBY_SET_YYLLOC(current);
18978 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
18979 p->ruby_sourceline != yylloc->end_pos.lineno)) {
18983 parser_compile_error(p, yylloc,
"%s", msg);
18984 parser_show_error_line(p, yylloc);
18992 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
18999 const int max_line_margin = 30;
19000 const char *ptr, *ptr_end, *pt, *pb;
19001 const char *pre =
"", *post =
"", *pend;
19002 const char *code =
"", *caret =
"";
19004 const char *
const pbeg = PARSER_STRING_PTR(str);
19009 if (!yylloc)
return;
19010 pend = rb_parser_string_end(str);
19011 if (pend > pbeg && pend[-1] ==
'\n') {
19012 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
19016 if (lineno == yylloc->end_pos.lineno &&
19017 (pend - pbeg) > yylloc->end_pos.column) {
19018 pt = pbeg + yylloc->end_pos.column;
19021 ptr = ptr_end = pt;
19022 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
19023 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
19025 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
19026 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
19028 len = ptr_end - ptr;
19031 ptr = rb_enc_prev_char(pbeg, ptr, pt, rb_parser_str_get_encoding(str));
19032 if (ptr > pbeg) pre =
"...";
19034 if (ptr_end < pend) {
19035 ptr_end = rb_enc_prev_char(pt, ptr_end, pend, rb_parser_str_get_encoding(str));
19036 if (ptr_end < pend) post =
"...";
19040 if (lineno == yylloc->beg_pos.lineno) {
19041 pb += yylloc->beg_pos.column;
19042 if (pb > pt) pb = pt;
19044 if (pb < ptr) pb = ptr;
19045 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
19048 if (
RTEST(errbuf)) {
19049 mesg = rb_attr_get(errbuf, idMesg);
19050 if (char_at_end(p, mesg,
'\n') !=
'\n')
19054 mesg = rb_enc_str_new(0, 0, rb_parser_str_get_encoding(str));
19056 if (!errbuf && rb_stderr_tty_p()) {
19057#define CSI_BEGIN "\033["
19060 CSI_BEGIN
""CSI_SGR
"%s"
19061 CSI_BEGIN
"1"CSI_SGR
"%.*s"
19062 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
19063 CSI_BEGIN
";1"CSI_SGR
"%.*s"
19064 CSI_BEGIN
""CSI_SGR
"%s"
19067 (
int)(pb - ptr), ptr,
19068 (
int)(pt - pb), pb,
19069 (
int)(ptr_end - pt), pt,
19075 len = ptr_end - ptr;
19076 lim = pt < pend ? pt : pend;
19077 i = (int)(lim - ptr);
19083 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
19089 memset(p2,
'~', (lim - ptr));
19093 rb_str_catf(mesg,
"%s%.*s%s\n""%s%s\n",
19094 pre, (
int)
len, code, post,
19097 if (!errbuf) rb_write_error_str(mesg);
19104 const char *pcur = 0, *ptok = 0;
19105 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
19106 p->ruby_sourceline == yylloc->end_pos.lineno) {
19107 pcur = p->lex.pcur;
19108 ptok = p->lex.ptok;
19109 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
19110 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
19112 parser_yyerror0(p, msg);
19114 p->lex.ptok = ptok;
19115 p->lex.pcur = pcur;
19123 dispatch1(parse_error, STR_NEW2(msg));
19135vtable_size(
const struct vtable *tbl)
19137 if (!DVARS_TERMINAL_P(tbl)) {
19155 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
19160#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
19163vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
19168 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
19171 if (!DVARS_TERMINAL_P(tbl)) {
19173 ruby_xfree_sized(tbl->tbl, tbl->capa *
sizeof(
ID));
19175 ruby_xfree_sized(tbl,
sizeof(*tbl));
19178#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
19181vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
19186 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
19187 line, name, (
void *)tbl, rb_id2name(
id));
19190 if (DVARS_TERMINAL_P(tbl)) {
19191 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
19194 if (tbl->pos == tbl->capa) {
19195 tbl->capa = tbl->capa * 2;
19196 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
19198 tbl->tbl[tbl->pos++] = id;
19200#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
19203vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
19204 struct vtable *tbl,
int n)
19207 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
19208 line, name, (
void *)tbl, n);
19210 if (tbl->pos < n) {
19211 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
19216#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
19219vtable_included(
const struct vtable * tbl,
ID id)
19223 if (!DVARS_TERMINAL_P(tbl)) {
19224 for (i = 0; i < tbl->pos; i++) {
19225 if (tbl->tbl[i] ==
id) {
19238 return strcmp(p->ruby_sourcefile,
"-e") == 0;
19245yycompile0(
VALUE arg)
19252 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string) && !e_option_supplied(p)) {
19256 if (p->debug_lines) {
19257 p->ast->body.script_lines = p->debug_lines;
19261#define RUBY_DTRACE_PARSE_HOOK(name) \
19262 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
19263 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
19265 RUBY_DTRACE_PARSE_HOOK(BEGIN);
19267 RUBY_DTRACE_PARSE_HOOK(END);
19269 p->debug_lines = 0;
19271 xfree(p->lex.strterm);
19272 p->lex.strterm = 0;
19273 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
19274 if (n || p->error_p) {
19275 VALUE mesg = p->error_buffer;
19277 mesg = syntax_error_new();
19279 if (!p->error_tolerant) {
19280 rb_set_errinfo(mesg);
19284 tree = p->eval_tree;
19286 tree = NEW_NIL(&NULL_LOC);
19291 NODE *body = parser_append_options(p, RNODE_SCOPE(tree)->nd_body);
19292 prelude = block_append(p, p->eval_tree_begin, body);
19293 RNODE_SCOPE(tree)->nd_body = prelude;
19294 p->ast->body.frozen_string_literal = p->frozen_string_literal;
19295 p->ast->body.coverage_enabled = cov;
19296 if (p->keep_tokens) {
19297 p->ast->node_buffer->tokens = tokens;
19301 p->ast->body.root = tree;
19302 p->ast->body.line_count = p->line_count;
19310 if (
NIL_P(fname)) {
19311 p->ruby_sourcefile_string =
Qnil;
19312 p->ruby_sourcefile =
"(none)";
19315 p->ruby_sourcefile_string = rb_str_to_interned_str(fname);
19318 p->ruby_sourceline = line - 1;
19322 p->ast = ast = rb_ast_new();
19323 compile_callback(yycompile0, (
VALUE)p);
19324 ast->body.source_hash = rb_source_hash_finalize(&p->source_hash);
19325 ast->body.has_source_hash = 1;
19339 rb_encoding *enc = rb_parser_str_get_encoding(s);
19340 if (!rb_enc_asciicompat(enc)) {
19341 rb_raise(rb_eArgError,
"invalid source encoding");
19350 if (!line)
return 0;
19352 rb_source_hash_update(&p->source_hash, (
const uint8_t *)line->ptr, (
size_t)line->len);
19353 string_buffer_append(p, line);
19354 must_be_ascii_compatible(p, line);
19360rb_parser_compile(
rb_parser_t *p, rb_parser_lex_gets_func *gets,
VALUE fname, rb_parser_input_data input,
int line)
19362 p->lex.gets = gets;
19363 p->lex.input = input;
19364 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
19366 return yycompile(p, fname, line);
19370#define STR_FUNC_ESCAPE 0x01
19371#define STR_FUNC_EXPAND 0x02
19372#define STR_FUNC_REGEXP 0x04
19373#define STR_FUNC_QWORDS 0x08
19374#define STR_FUNC_SYMBOL 0x10
19375#define STR_FUNC_INDENT 0x20
19376#define STR_FUNC_LABEL 0x40
19377#define STR_FUNC_LIST 0x4000
19378#define STR_FUNC_TERM 0x8000
19381 str_label = STR_FUNC_LABEL,
19383 str_dquote = (STR_FUNC_EXPAND),
19384 str_xquote = (STR_FUNC_EXPAND),
19385 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
19386 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
19387 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
19388 str_ssym = (STR_FUNC_SYMBOL),
19389 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
19397 pstr = rb_parser_encoding_string_new(p, ptr,
len, enc);
19399 if (!(func & STR_FUNC_REGEXP)) {
19400 if (rb_parser_is_ascii_string(p, pstr)) {
19402 else if (rb_is_usascii_enc((
void *)enc0) && enc != rb_utf8_encoding()) {
19404 enc = rb_ascii8bit_encoding();
19405 PARSER_ENCODING_CODERANGE_SET(pstr, enc, RB_PARSER_ENC_CODERANGE_VALID);
19415 return strterm->heredoc;
19419new_strterm(
struct parser_params *p,
int func,
int term,
int paren)
19422 strterm->u.literal.func = func;
19423 strterm->u.literal.term = term;
19424 strterm->u.literal.paren = paren;
19432 strterm->heredoc =
true;
19436#define peek(p,c) peek_n(p, (c), 0)
19437#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
19438#define peekc(p) peekc_n(p, 0)
19439#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
19441#define add_delayed_token(p, tok, end) parser_add_delayed_token(p, tok, end, __LINE__)
19443parser_add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end,
int line)
19445 debug_token_line(p,
"add_delayed_token", line);
19448 if (has_delayed_token(p)) {
19449 bool next_line = parser_string_char_at_end(p, p->delayed.token, 0) ==
'\n';
19450 int end_line = (next_line ? 1 : 0) + p->delayed.end_line;
19451 int end_col = (next_line ? 0 : p->delayed.end_col);
19452 if (end_line != p->ruby_sourceline || end_col != tok - p->lex.pbeg) {
19453 dispatch_delayed_token(p, tSTRING_CONTENT);
19456 if (!has_delayed_token(p)) {
19457 p->delayed.token = rb_parser_string_new(p, 0, 0);
19458 rb_parser_enc_associate(p, p->delayed.token, p->enc);
19459 p->delayed.beg_line = p->ruby_sourceline;
19460 p->delayed.beg_col =
rb_long2int(tok - p->lex.pbeg);
19462 parser_str_cat(p->delayed.token, tok, end - tok);
19463 p->delayed.end_line = p->ruby_sourceline;
19464 p->delayed.end_col =
rb_long2int(end - p->lex.pbeg);
19472 p->lex.pbeg = p->lex.pcur = PARSER_STRING_PTR(str);
19473 p->lex.pend = p->lex.pcur + PARSER_STRING_LEN(str);
19474 p->lex.lastline = str;
19481 p->lex.nextline = 0;
19486 if (!lex_eol_ptr_p(p, p->lex.pbeg) && *(p->lex.pend-1) !=
'\n') {
19490 if (!p->lex.input || !(str = lex_getline(p))) {
19497 if (p->debug_lines) {
19498 if (set_encoding) rb_parser_enc_associate(p, str, p->enc);
19500 rb_parser_ary_push_script_line(p, p->debug_lines, copy);
19503 p->cr_seen = FALSE;
19505 else if (str == AFTER_HEREDOC_WITHOUT_TERMINATOR) {
19509 add_delayed_token(p, p->lex.ptok, p->lex.pend);
19510 if (p->heredoc_end > 0) {
19511 p->ruby_sourceline = p->heredoc_end;
19512 p->heredoc_end = 0;
19514 p->ruby_sourceline++;
19515 set_lastline(p, str);
19523 if (peek(p,
'\n')) {
19535 if (UNLIKELY(lex_eol_p(p) || p->eofp || p->lex.nextline > AFTER_HEREDOC_WITHOUT_TERMINATOR)) {
19536 if (nextline(p, set_encoding))
return -1;
19538 c = (
unsigned char)*p->lex.pcur++;
19539 if (UNLIKELY(c ==
'\r')) {
19540 c = parser_cr(p, c);
19545#define nextc(p) nextc0(p, TRUE)
19550 if (c == -1)
return;
19553 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
19558#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
19560#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
19561#define tok(p) (p)->tokenbuf
19562#define toklen(p) (p)->tokidx
19567 const char *ptr = p->lex.pcur;
19568 while (!lex_eol_ptr_p(p, ptr)) {
19569 int c = (
unsigned char)*ptr++;
19570 int eol = (c ==
'\n' || c ==
'#');
19582 if (!p->tokenbuf) {
19584 p->tokenbuf =
ALLOC_N(
char, 60);
19586 if (p->toksiz > 4096) {
19590 return p->tokenbuf;
19598 if (p->tokidx >= p->toksiz) {
19599 do {p->toksiz *= 2;}
while (p->toksiz <= p->tokidx);
19600 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19602 return &p->tokenbuf[p->tokidx-n];
19608 p->tokenbuf[p->tokidx++] = (char)c;
19609 if (p->tokidx >= p->toksiz) {
19611 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19620 c = (int)ruby_scan_hex(p->lex.pcur, 2, numlen);
19623 yyerror0(
"invalid hex escape");
19624 dispatch_scan_event(p, tSTRING_CONTENT);
19627 p->lex.pcur += *numlen;
19631#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
19634escaped_control_code(
int c)
19660#define WARN_SPACE_CHAR(c, prefix) \
19661 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c))
19665 int regexp_literal,
const char *begin)
19667 const int wide = !begin;
19669 int codepoint = (int)ruby_scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
19671 p->lex.pcur += numlen;
19672 if (p->lex.strterm == NULL ||
19673 strterm_is_heredoc(p->lex.strterm) ||
19674 (p->lex.strterm->u.literal.func != str_regexp)) {
19675 if (!begin) begin = p->lex.pcur;
19676 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
19677 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19678 yyerror0(
"invalid Unicode escape");
19679 dispatch_scan_event(p, tSTRING_CONTENT);
19680 return wide && numlen > 0;
19682 if (codepoint > 0x10ffff) {
19683 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19684 yyerror0(
"invalid Unicode codepoint (too large)");
19685 dispatch_scan_event(p, tSTRING_CONTENT);
19688 if ((codepoint & 0xfffff800) == 0xd800) {
19689 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19690 yyerror0(
"invalid Unicode codepoint");
19691 dispatch_scan_event(p, tSTRING_CONTENT);
19695 if (regexp_literal) {
19696 tokcopy(p, (
int)numlen);
19698 else if (codepoint >= 0x80) {
19700 if (*encp && utf8 != *encp) {
19701 YYLTYPE loc = RUBY_INIT_YYLLOC();
19702 compile_error(p,
"UTF-8 mixed within %s source", rb_enc_name(*encp));
19703 parser_show_error_line(p, &loc);
19707 tokaddmbc(p, codepoint, *encp);
19710 tokadd(p, codepoint);
19720 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19722 p->lex.pcur +=
len - 1;
19730 int term,
int symbol_literal,
int regexp_literal)
19737 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
19739 const int open_brace =
'{', close_brace =
'}';
19741 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
19743 if (peek(p, open_brace)) {
19744 if (regexp_literal && p->lex.strterm->u.literal.func == str_regexp) {
19751 tokadd(p, open_brace);
19752 while (!lex_eol_ptr_p(p, ++p->lex.pcur)) {
19754 if (c == close_brace) {
19759 else if (c == term) {
19762 if (c ==
'\\' && !lex_eol_n_p(p, 1)) {
19764 c = *++p->lex.pcur;
19766 tokadd_mbchar(p, c);
19770 const char *second = NULL;
19771 int c, last = nextc(p);
19772 if (lex_eol_p(p))
goto unterminated;
19773 while (
ISSPACE(c = peekc(p)) && !lex_eol_ptr_p(p, ++p->lex.pcur));
19774 while (c != close_brace) {
19775 if (c == term)
goto unterminated;
19776 if (second == multiple_codepoints)
19777 second = p->lex.pcur;
19778 if (regexp_literal) tokadd(p, last);
19779 if (!tokadd_codepoint(p, encp, regexp_literal, NULL)) {
19782 while (
ISSPACE(c = peekc(p))) {
19783 if (lex_eol_ptr_p(p, ++p->lex.pcur))
goto unterminated;
19786 if (term == -1 && !second)
19787 second = multiple_codepoints;
19790 if (c != close_brace) {
19792 flush_string_content(p, rb_utf8_encoding(), 0);
19793 yyerror0(
"unterminated Unicode escape");
19794 dispatch_scan_event(p, tSTRING_CONTENT);
19797 if (second && second != multiple_codepoints) {
19798 const char *pcur = p->lex.pcur;
19799 p->lex.pcur = second;
19800 dispatch_scan_event(p, tSTRING_CONTENT);
19802 p->lex.pcur = pcur;
19803 yyerror0(multiple_codepoints);
19807 if (regexp_literal) tokadd(p, close_brace);
19812 if (!tokadd_codepoint(p, encp, regexp_literal, p->lex.pcur -
rb_strlen_lit(
"\\u"))) {
19819#define ESCAPE_CONTROL 1
19820#define ESCAPE_META 2
19823read_escape(
struct parser_params *p,
int flags,
const char *begin)
19828 switch (c = nextc(p)) {
19853 case '0':
case '1':
case '2':
case '3':
19854 case '4':
case '5':
case '6':
case '7':
19856 c = (int)ruby_scan_oct(p->lex.pcur, 3, &numlen);
19857 p->lex.pcur += numlen;
19861 c = tok_hex(p, &numlen);
19862 if (numlen == 0)
return 0;
19872 if (flags & ESCAPE_META)
goto eof;
19873 if ((c = nextc(p)) !=
'-') {
19876 if ((c = nextc(p)) ==
'\\') {
19877 switch (peekc(p)) {
19878 case 'u':
case 'U':
19882 return read_escape(p, flags|ESCAPE_META, begin) | 0x80;
19884 else if (c == -1)
goto eof;
19890 int c2 = escaped_control_code(c);
19892 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
19893 WARN_SPACE_CHAR(c2,
"\\M-");
19896 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
19899 else if (
ISCNTRL(c))
goto eof;
19900 return ((c & 0xff) | 0x80);
19904 if ((c = nextc(p)) !=
'-') {
19908 if (flags & ESCAPE_CONTROL)
goto eof;
19909 if ((c = nextc(p))==
'\\') {
19910 switch (peekc(p)) {
19911 case 'u':
case 'U':
19915 c = read_escape(p, flags|ESCAPE_CONTROL, begin);
19919 else if (c == -1)
goto eof;
19925 int c2 = escaped_control_code(c);
19928 if (flags & ESCAPE_META) {
19929 WARN_SPACE_CHAR(c2,
"\\M-");
19932 WARN_SPACE_CHAR(c2,
"");
19936 if (flags & ESCAPE_META) {
19937 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
19940 WARN_SPACE_CHAR(c2,
"\\C-");
19944 else if (
ISCNTRL(c))
goto eof;
19950 flush_string_content(p, p->enc, p->lex.pcur - begin);
19951 yyerror0(
"Invalid escape character syntax");
19952 dispatch_scan_event(p, tSTRING_CONTENT);
19967 int len = rb_enc_codelen(c, enc);
19968 rb_enc_mbcput(c, tokspace(p,
len), enc);
19976 const char *begin = p->lex.pcur;
19978 switch (c = nextc(p)) {
19982 case '0':
case '1':
case '2':
case '3':
19983 case '4':
case '5':
case '6':
case '7':
19985 ruby_scan_oct(--p->lex.pcur, 3, &numlen);
19986 if (numlen == 0)
goto eof;
19987 p->lex.pcur += numlen;
19988 tokcopy(p, (
int)numlen + 1);
19994 tok_hex(p, &numlen);
19995 if (numlen == 0)
return -1;
19996 tokcopy(p, (
int)numlen + 2);
20002 flush_string_content(p, p->enc, p->lex.pcur - begin);
20003 yyerror0(
"Invalid escape character syntax");
20015char_to_option(
int c)
20021 val = RE_ONIG_OPTION_IGNORECASE;
20024 val = RE_ONIG_OPTION_EXTEND;
20027 val = RE_ONIG_OPTION_MULTILINE;
20036#define ARG_ENCODING_FIXED 16
20037#define ARG_ENCODING_NONE 32
20038#define ENC_ASCII8BIT 1
20039#define ENC_EUC_JP 2
20040#define ENC_Windows_31J 3
20044char_to_option_kcode(
int c,
int *option,
int *kcode)
20050 *kcode = ENC_ASCII8BIT;
20051 return (*option = ARG_ENCODING_NONE);
20053 *kcode = ENC_EUC_JP;
20056 *kcode = ENC_Windows_31J;
20063 return (*option = char_to_option(c));
20065 *option = ARG_ENCODING_FIXED;
20078 while (c = nextc(p),
ISALPHA(c)) {
20080 options |= RE_OPTION_ONCE;
20082 else if (char_to_option_kcode(c, &opt, &kc)) {
20084 if (kc != ENC_ASCII8BIT) kcode = c;
20098 YYLTYPE loc = RUBY_INIT_YYLLOC();
20100 compile_error(p,
"unknown regexp option%s - %*s",
20101 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
20102 parser_show_error_line(p, &loc);
20104 return options | RE_OPTION_ENCODING(kcode);
20110 int len = parser_precise_mbclen(p, p->lex.pcur-1);
20111 if (
len < 0)
return -1;
20113 p->lex.pcur += --
len;
20114 if (
len > 0) tokcopy(p,
len);
20119simple_re_meta(
int c)
20122 case '$':
case '*':
case '+':
case '.':
20123 case '?':
case '^':
case '|':
20124 case ')':
case ']':
case '}':
case '>':
20132parser_update_heredoc_indent(
struct parser_params *p,
int c)
20134 if (p->heredoc_line_indent == -1) {
20135 if (c ==
'\n') p->heredoc_line_indent = 0;
20139 p->heredoc_line_indent++;
20142 else if (c ==
'\t') {
20143 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
20144 p->heredoc_line_indent = w * TAB_WIDTH;
20147 else if (c !=
'\n') {
20148 if (p->heredoc_indent > p->heredoc_line_indent) {
20149 p->heredoc_indent = p->heredoc_line_indent;
20151 p->heredoc_line_indent = -1;
20155 p->heredoc_line_indent = 0;
20164 YYLTYPE loc = RUBY_INIT_YYLLOC();
20165 const char *n1 = rb_enc_name(enc1), *n2 = rb_enc_name(enc2);
20166 compile_error(p,
"%s mixed within %s source", n1, n2);
20167 parser_show_error_line(p, &loc);
20173 const char *pos = p->lex.pcur;
20175 parser_mixed_error(p, enc1, enc2);
20180nibble_char_upper(
unsigned int c)
20183 return c + (c < 10 ?
'0' :
'A' - 10);
20188 int func,
int term,
int paren,
long *nest,
20192 bool erred =
false;
20194 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
20195 int top_of_line = FALSE;
20198#define mixed_error(enc1, enc2) \
20199 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
20200#define mixed_escape(beg, enc1, enc2) \
20201 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
20203 while ((c = nextc(p)) != -1) {
20204 if (p->heredoc_indent > 0) {
20205 parser_update_heredoc_indent(p, c);
20208 if (top_of_line && heredoc_end == p->ruby_sourceline) {
20214 if (paren && c == paren) {
20217 else if (c == term) {
20218 if (!nest || !*nest) {
20224 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && !lex_eol_p(p)) {
20225 unsigned char c2 = *p->lex.pcur;
20226 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
20231 else if (c ==
'\\') {
20235 if (func & STR_FUNC_QWORDS)
break;
20236 if (func & STR_FUNC_EXPAND) {
20237 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
20248 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
20252 if ((func & STR_FUNC_EXPAND) == 0) {
20256 tokadd_utf8(p, enc, term,
20257 func & STR_FUNC_SYMBOL,
20258 func & STR_FUNC_REGEXP);
20262 if (c == -1)
return -1;
20264 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
20267 if (func & STR_FUNC_REGEXP) {
20273 c = read_escape(p, 0, p->lex.pcur - 1);
20278 *t++ = nibble_char_upper(c >> 4);
20279 *t++ = nibble_char_upper(c);
20284 if (c == term && !simple_re_meta(c)) {
20289 if ((c = tokadd_escape(p)) < 0)
20291 if (*enc && *enc != *encp) {
20292 mixed_escape(p->lex.ptok+2, *enc, *encp);
20296 else if (func & STR_FUNC_EXPAND) {
20298 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
20299 c = read_escape(p, 0, p->lex.pcur - 1);
20301 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
20304 else if (c != term && !(paren && c == paren)) {
20311 else if (!parser_isascii(p)) {
20316 else if (*enc != *encp) {
20317 mixed_error(*enc, *encp);
20320 if (tokadd_mbchar(p, c) == -1)
return -1;
20323 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
20331 else if (*enc != *encp) {
20332 mixed_error(*enc, *encp);
20338 top_of_line = (c ==
'\n');
20342 if (*enc) *encp = *enc;
20346#define NEW_STRTERM(func, term, paren) new_strterm(p, func, term, paren)
20351 p->lex.pcur -= back;
20352 if (has_delayed_token(p)) {
20353 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
20355 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20356 p->delayed.end_line = p->ruby_sourceline;
20357 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
20359 dispatch_delayed_token(p, tSTRING_CONTENT);
20360 p->lex.ptok = p->lex.pcur;
20362 dispatch_scan_event(p, tSTRING_CONTENT);
20363 p->lex.pcur += back;
20369#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
20370#define SPECIAL_PUNCT(idx) ( \
20371 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
20372 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
20373 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
20374 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
20375 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
20377const uint_least32_t ruby_global_name_punct_bits[] = {
20383#undef SPECIAL_PUNCT
20386static enum yytokentype
20387parser_peek_variable_name(struct parser_params *p)
20390 const char *ptr = p->lex.pcur;
20392 if (lex_eol_ptr_n_p(p, ptr, 1)) return 0;
20396 if ((c = *ptr) == '-') {
20397 if (lex_eol_ptr_p(p, ++ptr)) return 0;
20400 else if (is_global_name_punct(c) || ISDIGIT(c)) {
20401 return tSTRING_DVAR;
20405 if ((c = *ptr) == '@') {
20406 if (lex_eol_ptr_p(p, ++ptr)) return 0;
20412 p->command_start = TRUE;
20413 yylval.state = p->lex.state;
20414 return tSTRING_DBEG;
20418 if (!ISASCII(c) || c == '_' || ISALPHA(c))
20419 return tSTRING_DVAR;
20423#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
20424#define IS_END() IS_lex_state(EXPR_END_ANY)
20425#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
20426#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
20427#define IS_LABEL_POSSIBLE() (\
20428 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
20430#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
20431#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
20433static inline enum yytokentype
20434parser_string_term(struct parser_params *p, int func)
20436 xfree(p->lex.strterm);
20437 p->lex.strterm = 0;
20438 if (func & STR_FUNC_REGEXP) {
20439 set_yylval_num(regx_options(p));
20440 dispatch_scan_event(p, tREGEXP_END);
20441 SET_LEX_STATE(EXPR_END);
20442 return tREGEXP_END;
20444 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
20446 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
20449 SET_LEX_STATE(EXPR_END);
20450 return tSTRING_END;
20453static enum yytokentype
20454parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
20456 int func = quote->func;
20457 int term = quote->term;
20458 int paren = quote->paren;
20460 rb_encoding *enc = p->enc;
20461 rb_encoding *base_enc = 0;
20462 rb_parser_string_t *lit;
20464 if (func & STR_FUNC_TERM) {
20465 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
20466 SET_LEX_STATE(EXPR_END);
20467 xfree(p->lex.strterm);
20468 p->lex.strterm = 0;
20469 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
20472 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
20473 while (c != '\n' && ISSPACE(c = nextc(p)));
20476 if (func & STR_FUNC_LIST) {
20477 quote->func &= ~STR_FUNC_LIST;
20480 if (c == term && !quote->nest) {
20481 if (func & STR_FUNC_QWORDS) {
20482 quote->func |= STR_FUNC_TERM;
20483 pushback(p, c); /* dispatch the term at tSTRING_END */
20484 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20487 return parser_string_term(p, func);
20490 if (!ISSPACE(c)) pushback(p, c);
20491 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20495 if ((func & STR_FUNC_EXPAND) && c == '#') {
20496 enum yytokentype t = parser_peek_variable_name(p);
20502 if (tokadd_string(p, func, term, paren, "e->nest,
20503 &enc, &base_enc) == -1) {
20506# define unterminated_literal(mesg) yyerror0(mesg)
20508# define unterminated_literal(mesg) compile_error(p, mesg)
20510 literal_flush(p, p->lex.pcur);
20511 if (func & STR_FUNC_QWORDS) {
20512 /* no content to add, bailing out here */
20513 unterminated_literal("unterminated list meets end of file");
20514 xfree(p->lex.strterm);
20515 p->lex.strterm = 0;
20516 return tSTRING_END;
20518 if (func & STR_FUNC_REGEXP) {
20519 unterminated_literal("unterminated regexp meets end of file");
20522 unterminated_literal("unterminated string meets end of file");
20524 quote->func |= STR_FUNC_TERM;
20529 lit = STR_NEW3(tok(p), toklen(p), enc, func);
20530 set_yylval_str(lit);
20531 flush_string_content(p, enc, 0);
20533 return tSTRING_CONTENT;
20536static enum yytokentype
20537heredoc_identifier(struct parser_params *p)
20540 * term_len is length of `<<"END"` except `END`,
20541 * in this case term_len is 4 (<, <, " and ").
20543 long len, offset = p->lex.pcur - p->lex.pbeg;
20544 int c = nextc(p), term, func = 0, quote = 0;
20545 enum yytokentype token = tSTRING_BEG;
20550 func = STR_FUNC_INDENT;
20553 else if (c == '~') {
20555 func = STR_FUNC_INDENT;
20561 func |= str_squote; goto quoted;
20563 func |= str_dquote;
goto quoted;
20565 token = tXSTRING_BEG;
20566 func |= str_xquote;
goto quoted;
20573 while ((c = nextc(p)) != term) {
20574 if (c == -1 || c ==
'\r' || c ==
'\n') {
20575 yyerror0(
"unterminated here document identifier");
20582 if (!parser_is_identchar(p)) {
20584 if (func & STR_FUNC_INDENT) {
20585 pushback(p, indent > 0 ?
'~' :
'-');
20589 func |= str_dquote;
20591 int n = parser_precise_mbclen(p, p->lex.pcur-1);
20592 if (n < 0)
return 0;
20593 p->lex.pcur += --n;
20594 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
20599 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
20600 if ((
unsigned long)
len >= HERETERM_LENGTH_MAX)
20601 yyerror0(
"too long here document identifier");
20602 dispatch_scan_event(p, tHEREDOC_BEG);
20605 p->lex.strterm = new_heredoc(p);
20607 here->offset = offset;
20608 here->sourceline = p->ruby_sourceline;
20609 here->length = (unsigned)
len;
20610 here->quote = quote;
20612 here->lastline = p->lex.lastline;
20615 p->heredoc_indent = indent;
20616 p->heredoc_line_indent = 0;
20626 p->lex.strterm = 0;
20627 line = here->lastline;
20628 p->lex.lastline = line;
20629 p->lex.pbeg = PARSER_STRING_PTR(line);
20630 p->lex.pend = p->lex.pbeg + PARSER_STRING_LEN(line);
20631 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
20632 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
20633 p->heredoc_end = p->ruby_sourceline;
20634 p->ruby_sourceline = (int)here->sourceline;
20635 if (p->eofp) p->lex.nextline = AFTER_HEREDOC_WITHOUT_TERMINATOR;
20641dedent_string_column(
const char *str,
long len,
int width)
20645 for (i = 0; i <
len && col < width; i++) {
20646 if (str[i] ==
' ') {
20649 else if (str[i] ==
'\t') {
20650 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
20651 if (n > width)
break;
20669 len = PARSER_STRING_LEN(
string);
20670 str = PARSER_STRING_PTR(
string);
20672 i = dedent_string_column(str,
len, width);
20675 rb_parser_str_modify(
string);
20676 str = PARSER_STRING_PTR(
string);
20677 if (PARSER_STRING_LEN(
string) !=
len)
20678 rb_fatal(
"literal string changed: %s", PARSER_STRING_PTR(
string));
20680 rb_parser_str_set_len(p,
string,
len - i);
20687 NODE *node, *str_node, *prev_node;
20688 int indent = p->heredoc_indent;
20691 if (indent <= 0)
return root;
20692 if (!root)
return root;
20694 prev_node = node = str_node = root;
20695 if (nd_type_p(root, NODE_LIST)) str_node = RNODE_LIST(root)->nd_head;
20699 if (nd_fl_newline(str_node)) {
20700 dedent_string(p, lit, indent);
20705 else if (!literal_concat0(p, prev_lit, lit)) {
20709 NODE *end = RNODE_LIST(node)->as.nd_end;
20710 node = RNODE_LIST(prev_node)->nd_next = RNODE_LIST(node)->nd_next;
20712 if (nd_type_p(prev_node, NODE_DSTR))
20713 nd_set_type(prev_node, NODE_STR);
20716 RNODE_LIST(node)->as.nd_end = end;
20721 while ((nd_type_p(node, NODE_LIST) || nd_type_p(node, NODE_DSTR)) && (node = RNODE_LIST(prev_node = node)->nd_next) != 0) {
20723 if (!nd_type_p(node, NODE_LIST))
break;
20724 if ((str_node = RNODE_LIST(node)->nd_head) != 0) {
20725 enum node_type
type = nd_type(str_node);
20726 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
20736whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
20738 const char *beg = p->lex.pbeg;
20739 const char *ptr = p->lex.pend;
20741 if (ptr - beg <
len)
return FALSE;
20742 if (ptr > beg && ptr[-1] ==
'\n') {
20743 if (--ptr > beg && ptr[-1] ==
'\r') --ptr;
20744 if (ptr - beg <
len)
return FALSE;
20746 if (strncmp(eos, ptr -=
len,
len))
return FALSE;
20748 while (beg < ptr &&
ISSPACE(*beg)) beg++;
20756 if (strncmp(p->lex.pcur, word,
len))
return 0;
20757 if (lex_eol_n_p(p,
len))
return 1;
20758 int c = (
unsigned char)p->lex.pcur[
len];
20761 case '\0':
case '\004':
case '\032':
return 1;
20766#define NUM_SUFFIX_R (1<<0)
20767#define NUM_SUFFIX_I (1<<1)
20768#define NUM_SUFFIX_ALL 3
20774 const char *lastp = p->lex.pcur;
20776 while ((c = nextc(p)) != -1) {
20777 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
20778 result |= (mask & NUM_SUFFIX_I);
20779 mask &= ~NUM_SUFFIX_I;
20781 mask &= ~NUM_SUFFIX_R;
20784 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
20785 result |= (mask & NUM_SUFFIX_R);
20786 mask &= ~NUM_SUFFIX_R;
20790 p->lex.pcur = lastp;
20799static enum yytokentype
20800set_number_literal(
struct parser_params *p,
enum yytokentype
type,
int suffix,
int base,
int seen_point)
20802 enum rb_numeric_type numeric_type = integer_literal;
20804 if (
type == tFLOAT) {
20805 numeric_type = float_literal;
20808 if (suffix & NUM_SUFFIX_R) {
20810 numeric_type = rational_literal;
20812 if (suffix & NUM_SUFFIX_I) {
20818 set_yylval_node(NEW_INTEGER(
strdup(tok(p)), base, &_cur_loc));
20821 set_yylval_node(NEW_FLOAT(
strdup(tok(p)), &_cur_loc));
20824 set_yylval_node(NEW_RATIONAL(
strdup(tok(p)), base, seen_point, &_cur_loc));
20827 set_yylval_node(NEW_IMAGINARY(
strdup(tok(p)), base, seen_point, numeric_type, &_cur_loc));
20828 (void)numeric_type;
20831 rb_bug(
"unexpected token: %d",
type);
20833 SET_LEX_STATE(EXPR_END);
20837#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
20839parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
20841 if (has_delayed_token(p))
20842 dispatch_delayed_token(p, tSTRING_CONTENT);
20845 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
20846 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
20848 if (p->keep_tokens) {
20849 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pend - p->lex.ptok, p->enc);
20850 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
20851 parser_append_tokens(p, str, tHEREDOC_END, line);
20855 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
20860static enum yytokentype
20863 int c, func, indent = 0;
20864 const char *eos, *ptr, *ptr_end;
20874 eos = PARSER_STRING_PTR(here->lastline) + here->offset;
20875 len = here->length;
20876 indent = (func = here->func) & STR_FUNC_INDENT;
20878 if ((c = nextc(p)) == -1) {
20881 if (!has_delayed_token(p)) {
20882 dispatch_scan_event(p, tSTRING_CONTENT);
20884 else if (p->delayed.end_line + 1 == p->ruby_sourceline) {
20885 if ((
len = p->lex.pcur - p->lex.ptok) > 0) {
20886 if (!(func & STR_FUNC_REGEXP)) {
20890 rb_is_usascii_enc(p->enc) &&
20891 enc != rb_utf8_encoding()) {
20892 enc = rb_ascii8bit_encoding();
20895 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20897 dispatch_delayed_token(p, tSTRING_CONTENT);
20900 dispatch_delayed_token(p, tSTRING_CONTENT);
20901 dispatch_scan_event(p, tSTRING_CONTENT);
20905 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20906 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
20909 SET_LEX_STATE(EXPR_END);
20910 return tSTRING_END;
20916 else if (p->heredoc_line_indent == -1) {
20921 p->heredoc_line_indent = 0;
20923 else if (whole_match_p(p, eos,
len, indent)) {
20924 dispatch_heredoc_end(p);
20926 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20928 SET_LEX_STATE(EXPR_END);
20929 return tSTRING_END;
20932 if (!(func & STR_FUNC_EXPAND)) {
20934 ptr = PARSER_STRING_PTR(p->lex.lastline);
20935 ptr_end = p->lex.pend;
20936 if (ptr_end > ptr) {
20937 switch (ptr_end[-1]) {
20939 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
20948 if (p->heredoc_indent > 0) {
20950 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
20952 p->heredoc_line_indent = 0;
20956 parser_str_cat(str, ptr, ptr_end - ptr);
20958 str = rb_parser_encoding_string_new(p, ptr, ptr_end - ptr, enc);
20959 if (!lex_eol_ptr_p(p, ptr_end)) parser_str_cat_cstr(str,
"\n");
20961 if (p->heredoc_indent > 0) {
20964 if (nextc(p) == -1) {
20966 rb_parser_string_free(p, str);
20971 }
while (!whole_match_p(p, eos,
len, indent));
20977 enum yytokentype t = parser_peek_variable_name(p);
20978 if (p->heredoc_line_indent != -1) {
20979 if (p->heredoc_indent > p->heredoc_line_indent) {
20980 p->heredoc_indent = p->heredoc_line_indent;
20982 p->heredoc_line_indent = -1;
20991 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
20992 if (p->eofp)
goto error;
20996 if (c ==
'\\') p->heredoc_line_indent = -1;
20998 str = STR_NEW3(tok(p), toklen(p), enc, func);
21000 set_yylval_str(str);
21002 if (bol) nd_set_fl_newline(yylval.node);
21004 flush_string_content(p, enc, 0);
21005 return tSTRING_CONTENT;
21007 tokadd(p, nextc(p));
21008 if (p->heredoc_indent > 0) {
21013 if ((c = nextc(p)) == -1)
goto error;
21014 }
while (!whole_match_p(p, eos,
len, indent));
21015 str = STR_NEW3(tok(p), toklen(p), enc, func);
21017 dispatch_heredoc_end(p);
21018 heredoc_restore(p, &p->lex.strterm->u.heredoc);
21020 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
21023 s_value = p->s_value;
21025 set_yylval_str(str);
21027 set_parser_s_value(s_value);
21031 if (bol) nd_set_fl_newline(yylval.node);
21033 return tSTRING_CONTENT;
21042 rb_warning1(
"ambiguous first argument; put parentheses or a space even after '%c' operator", WARN_I(c));
21054 switch (id_type(
id)) {
21058# define ERR(mesg) (yyerror0(mesg), Qtrue)
21060# define ERR(mesg) WARN_S(mesg)
21063 return ERR(
"formal argument cannot be a constant");
21065 return ERR(
"formal argument cannot be an instance variable");
21067 return ERR(
"formal argument cannot be a global variable");
21069 return ERR(
"formal argument cannot be a class variable");
21071 return ERR(
"formal argument must be local variable");
21074 shadowing_lvar(p,
id);
21082 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
21091 if (
len > 5 && name[nlen =
len - 5] ==
'-') {
21092 if (rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
21095 if (
len > 4 && name[nlen =
len - 4] ==
'-') {
21096 if (rb_memcicmp(name + nlen + 1,
"dos", 3) == 0)
21098 if (rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
21099 !(
len == 8 && rb_memcicmp(name,
"utf8-mac",
len) == 0))
21107parser_set_encode(
struct parser_params *p,
const char *name)
21113 const char *wrong = 0;
21115 case 'e':
case 'E': wrong =
"external";
break;
21116 case 'i':
case 'I': wrong =
"internal";
break;
21117 case 'f':
case 'F': wrong =
"filesystem";
break;
21118 case 'l':
case 'L': wrong =
"locale";
break;
21120 if (wrong &&
STRCASECMP(name, wrong) == 0)
goto unknown;
21121 idx = rb_enc_find_index(name);
21124 excargs[1] = rb_sprintf(
"unknown encoding name: %s", name);
21126 excargs[0] = rb_eArgError;
21127 excargs[2] = rb_make_backtrace();
21128 rb_ary_unshift(excargs[2], rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
21129 VALUE exc = rb_make_exception(3, excargs);
21130 ruby_show_error_line(p, exc, &(
YYLTYPE)RUBY_INIT_YYLLOC(), p->ruby_sourceline, p->lex.lastline);
21132 rb_ast_free(p->ast);
21137 enc = rb_enc_from_index(idx);
21138 if (!rb_enc_asciicompat(enc)) {
21139 excargs[1] = rb_sprintf(
"%s is not ASCII compatible", rb_enc_name(enc));
21144 if (p->debug_lines) {
21146 for (i = 0; i < p->debug_lines->len; i++) {
21147 rb_parser_enc_associate(p, p->debug_lines->data[i], enc);
21156 if (p->token_seen)
return false;
21157 return (p->line_count == (p->has_shebang ? 2 : 1));
21160typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
21161typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
21163static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
21166magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
21168 if (!comment_at_top(p)) {
21171 parser_set_encode(p, val);
21175parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
21178 case 't':
case 'T':
21183 case 'f':
case 'F':
21189 return parser_invalid_pragma_value(p, name, val);
21193parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
21195 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
21200parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
21202 int b = parser_get_bool(p, name, val);
21203 if (b >= 0) p->token_info_enabled = b;
21207parser_set_frozen_string_literal(
struct parser_params *p,
const char *name,
const char *val)
21211 if (p->token_seen) {
21212 rb_warning1(
"'%s' is ignored after any tokens", WARN_S(name));
21216 b = parser_get_bool(p, name, val);
21219 p->frozen_string_literal = b;
21223parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
21225 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
21226 if (*s ==
' ' || *s ==
'\t')
continue;
21227 if (*s ==
'#')
break;
21228 rb_warning1(
"'%s' is ignored unless in comment-only line", WARN_S(name));
21233 case 'n':
case 'N':
21235 p->ctxt.shareable_constant_value = rb_parser_shareable_none;
21239 case 'l':
case 'L':
21241 p->ctxt.shareable_constant_value = rb_parser_shareable_literal;
21245 case 'e':
case 'E':
21246 if (
STRCASECMP(val,
"experimental_copy") == 0) {
21247 p->ctxt.shareable_constant_value = rb_parser_shareable_copy;
21250 if (
STRCASECMP(val,
"experimental_everything") == 0) {
21251 p->ctxt.shareable_constant_value = rb_parser_shareable_everything;
21256 parser_invalid_pragma_value(p, name, val);
21259# if WARN_PAST_SCOPE
21261parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
21263 int b = parser_get_bool(p, name, val);
21264 if (b >= 0) p->past_scope_enabled = b;
21270 rb_magic_comment_setter_t func;
21271 rb_magic_comment_length_t length;
21275 {
"coding", magic_comment_encoding, parser_encode_length},
21276 {
"encoding", magic_comment_encoding, parser_encode_length},
21277 {
"frozen_string_literal", parser_set_frozen_string_literal},
21278 {
"shareable_constant_value", parser_set_shareable_constant_value},
21279 {
"warn_indent", parser_set_token_info},
21280# if WARN_PAST_SCOPE
21281 {
"warn_past_scope", parser_set_past_scope},
21286magic_comment_marker(
const char *str,
long len)
21293 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
21294 return str + i + 1;
21299 if (i + 1 >=
len)
return 0;
21300 if (str[i+1] !=
'-') {
21303 else if (str[i-1] !=
'-') {
21307 return str + i + 2;
21322 VALUE name = 0, val = 0;
21323 const char *beg, *end, *vbeg, *vend;
21324#define str_copy(_s, _p, _n) ((_s) \
21325 ? (void)(rb_str_resize((_s), (_n)), \
21326 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
21327 : (void)((_s) = STR_NEW((_p), (_n))))
21329 if (
len <= 7)
return FALSE;
21330 if (!!(beg = magic_comment_marker(str,
len))) {
21331 if (!(end = magic_comment_marker(beg, str +
len - beg)))
21335 len = end - beg - 3;
21345 for (;
len > 0 && *str; str++, --
len) {
21347 case '\'':
case '"':
case ':':
case ';':
21352 for (beg = str;
len > 0; str++, --
len) {
21354 case '\'':
case '"':
case ':':
case ';':
21365 if (!indicator)
return FALSE;
21369 do str++;
while (--
len > 0 &&
ISSPACE(*str));
21371 const char *tok_beg = str;
21373 for (vbeg = ++str; --
len > 0 && *str !=
'"'; str++) {
21374 if (*str ==
'\\') {
21386 for (vbeg = str;
len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --
len, str++);
21389 const char *tok_end = str;
21391 while (
len > 0 && (*str ==
';' ||
ISSPACE(*str))) --
len, str++;
21395 if (
len)
return FALSE;
21399 str_copy(name, beg, n);
21400 s = RSTRING_PTR(name);
21401 for (i = 0; i < n; ++i) {
21402 if (s[i] ==
'-') s[i] =
'_';
21405 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
21408 n = (*mc->length)(p, vbeg, n);
21410 str_copy(val, vbeg, n);
21411 p->lex.ptok = tok_beg;
21412 p->lex.pcur = tok_end;
21413 (*mc->func)(p, mc->name, RSTRING_PTR(val));
21416 }
while (++mc < magic_comments + numberof(magic_comments));
21418 str_copy(val, vbeg, vend - vbeg);
21427set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
21430 const char *beg = str;
21434 if (send - str <= 6)
return;
21436 case 'C':
case 'c': str += 6;
continue;
21437 case 'O':
case 'o': str += 5;
continue;
21438 case 'D':
case 'd': str += 4;
continue;
21439 case 'I':
case 'i': str += 3;
continue;
21440 case 'N':
case 'n': str += 2;
continue;
21441 case 'G':
case 'g': str += 1;
continue;
21442 case '=':
case ':':
21456 if (++str >= send)
return;
21459 if (*str !=
'=' && *str !=
':')
return;
21464 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
21465 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
21468 parser_set_encode(p, RSTRING_PTR(s));
21469 rb_str_resize(s, 0);
21475 int c = nextc0(p, FALSE);
21479 if (peek(p,
'!')) p->has_shebang = 1;
21482 if (!lex_eol_n_p(p, 2) &&
21483 (
unsigned char)p->lex.pcur[0] == 0xbb &&
21484 (
unsigned char)p->lex.pcur[1] == 0xbf) {
21485 p->enc = rb_utf8_encoding();
21488 if (p->debug_lines) {
21489 rb_parser_string_set_encoding(p->lex.lastline, p->enc);
21492 p->lex.pbeg = p->lex.pcur;
21501 p->enc = rb_parser_str_get_encoding(p->lex.lastline);
21505#define ambiguous_operator(tok, op, syn) ( \
21506 rb_warning0("'"op"' after local variable or literal is interpreted as binary operator"), \
21507 rb_warning0("even though it seems like "syn""))
21509#define ambiguous_operator(tok, op, syn) \
21510 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
21512#define warn_balanced(tok, op, syn) ((void) \
21513 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
21514 space_seen && !ISSPACE(c) && \
21515 (ambiguous_operator(tok, op, syn), 0)), \
21516 (enum yytokentype)(tok))
21518static enum yytokentype
21521 yyerror0(
"numeric literal without digits");
21522 if (peek(p,
'_')) nextc(p);
21524 return set_number_literal(p, tINTEGER, 0, 10, 0);
21527static enum yytokentype
21530 int is_float, seen_point, seen_e, nondigit;
21533 is_float = seen_point = seen_e = nondigit = 0;
21534 SET_LEX_STATE(EXPR_END);
21536 if (c ==
'-' || c ==
'+') {
21541 int start = toklen(p);
21543 if (c ==
'x' || c ==
'X') {
21549 if (nondigit)
break;
21556 }
while ((c = nextc(p)) != -1);
21560 if (toklen(p) == start) {
21561 return no_digits(p);
21563 else if (nondigit)
goto trailing_uc;
21564 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21565 return set_number_literal(p, tINTEGER, suffix, 16, 0);
21567 if (c ==
'b' || c ==
'B') {
21570 if (c ==
'0' || c ==
'1') {
21573 if (nondigit)
break;
21577 if (c !=
'0' && c !=
'1')
break;
21580 }
while ((c = nextc(p)) != -1);
21584 if (toklen(p) == start) {
21585 return no_digits(p);
21587 else if (nondigit)
goto trailing_uc;
21588 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21589 return set_number_literal(p, tINTEGER, suffix, 2, 0);
21591 if (c ==
'd' || c ==
'D') {
21597 if (nondigit)
break;
21604 }
while ((c = nextc(p)) != -1);
21608 if (toklen(p) == start) {
21609 return no_digits(p);
21611 else if (nondigit)
goto trailing_uc;
21612 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21613 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21619 if (c ==
'o' || c ==
'O') {
21622 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
21624 return no_digits(p);
21627 if (c >=
'0' && c <=
'7') {
21632 if (nondigit)
break;
21636 if (c <
'0' || c >
'9')
break;
21637 if (c >
'7')
goto invalid_octal;
21640 }
while ((c = nextc(p)) != -1);
21641 if (toklen(p) > start) {
21644 if (nondigit)
goto trailing_uc;
21645 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21646 return set_number_literal(p, tINTEGER, suffix, 8, 0);
21653 if (c >
'7' && c <=
'9') {
21655 yyerror0(
"Invalid octal digit");
21657 else if (c ==
'.' || c ==
'e' || c ==
'E') {
21663 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21664 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21670 case '0':
case '1':
case '2':
case '3':
case '4':
21671 case '5':
case '6':
case '7':
case '8':
case '9':
21677 if (nondigit)
goto trailing_uc;
21678 if (seen_point || seen_e) {
21683 if (c0 == -1 || !
ISDIGIT(c0)) {
21689 seen_point = toklen(p);
21708 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
21714 tokadd(p, nondigit);
21718 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
21722 if (nondigit)
goto decode_num;
21736 literal_flush(p, p->lex.pcur - 1);
21737 YYLTYPE loc = RUBY_INIT_YYLLOC();
21738 compile_error(p,
"trailing '%c' in number", nondigit);
21739 parser_show_error_line(p, &loc);
21743 enum yytokentype
type = tFLOAT;
21745 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
21746 if (suffix & NUM_SUFFIX_R) {
21752 if (
errno == ERANGE) {
21753 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
21757 return set_number_literal(p,
type, suffix, 0, seen_point);
21759 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21760 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21763static enum yytokentype
21769 const char *start = p->lex.pcur;
21772 SET_LEX_STATE(EXPR_VALUE);
21777 compile_error(p,
"incomplete character syntax");
21780 if (rb_enc_isspace(c, p->enc)) {
21782 int c2 = escaped_control_code(c);
21784 WARN_SPACE_CHAR(c2,
"?");
21789 SET_LEX_STATE(EXPR_VALUE);
21794 int w = parser_precise_mbclen(p, start);
21795 if (is_identchar(p, start, p->lex.pend, p->enc) &&
21796 !(lex_eol_ptr_n_p(p, start, w) || !is_identchar(p, start + w, p->lex.pend, p->enc))) {
21798 const char *ptr = start;
21800 int n = parser_precise_mbclen(p, ptr);
21801 if (n < 0)
return -1;
21803 }
while (!lex_eol_ptr_p(p, ptr) && is_identchar(p, ptr, p->lex.pend, p->enc));
21804 rb_warn2(
"'?' just followed by '%.*s' is interpreted as" \
21805 " a conditional operator, put a space after '?'",
21806 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
21810 else if (c ==
'\\') {
21811 if (peek(p,
'u')) {
21813 enc = rb_utf8_encoding();
21814 tokadd_utf8(p, &enc, -1, 0, 0);
21816 else if (!
ISASCII(c = peekc(p)) && c != -1) {
21818 if (tokadd_mbchar(p, c) == -1)
return 0;
21826 if (tokadd_mbchar(p, c) == -1)
return 0;
21829 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
21830 set_yylval_str(lit);
21831 SET_LEX_STATE(EXPR_END);
21835static enum yytokentype
21836parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
21839 const char *ptok = p->lex.pcur;
21847 if (c == -1)
goto unterminated;
21850 if (!
ISASCII(c))
goto unknown;
21855 if (rb_enc_isalnum(term, p->enc) || !parser_isascii(p)) {
21858 c = parser_precise_mbclen(p, p->lex.pcur);
21859 if (c < 0)
return 0;
21861 yyerror0(
"unknown type of %string");
21867 compile_error(p,
"unterminated quoted string meets end of file");
21871 if (term ==
'(') term =
')';
21872 else if (term ==
'[') term =
']';
21873 else if (term ==
'{') term =
'}';
21874 else if (term ==
'<') term =
'>';
21877 p->lex.ptok = ptok-1;
21880 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
21881 return tSTRING_BEG;
21884 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
21885 return tSTRING_BEG;
21888 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21892 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21893 return tQWORDS_BEG;
21896 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21897 return tSYMBOLS_BEG;
21900 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21901 return tQSYMBOLS_BEG;
21904 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
21905 return tXSTRING_BEG;
21908 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
21909 return tREGEXP_BEG;
21912 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
21913 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
21917 yyerror0(
"unknown type of %string");
21921 if ((c = nextc(p)) ==
'=') {
21922 set_yylval_id(
'%');
21923 SET_LEX_STATE(EXPR_BEG);
21926 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
21929 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21931 return warn_balanced(
'%',
"%%",
"string literal");
21938 if (tokadd_mbchar(p, c) == -1)
return -1;
21940 }
while (parser_is_identchar(p));
21948 ID ident = TOK_INTERN();
21950 set_yylval_name(ident);
21960 unsigned long n = ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &
len, &overflow);
21961 const unsigned long nth_ref_max =
21962 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
21966 if (overflow || n > nth_ref_max) {
21968 rb_warn1(
"'%s' is too big for a number variable, always nil", WARN_S(tok(p)));
21976static enum yytokentype
21977parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
21979 const char *ptr = p->lex.pcur;
21982 SET_LEX_STATE(EXPR_END);
21983 p->lex.ptok = ptr - 1;
21989 if (parser_is_identchar(p)) {
22021 if (parser_is_identchar(p)) {
22022 if (tokadd_mbchar(p, c) == -1)
return 0;
22037 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
22042 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
22045 case '1':
case '2':
case '3':
22046 case '4':
case '5':
case '6':
22047 case '7':
case '8':
case '9':
22052 }
while (c != -1 &&
ISDIGIT(c));
22054 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
22056 c = parse_numvar(p);
22057 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
22061 if (!parser_is_identchar(p)) {
22062 YYLTYPE loc = RUBY_INIT_YYLLOC();
22064 compile_error(p,
"'$' without identifiers is not allowed as a global variable name");
22068 compile_error(p,
"'$%c' is not allowed as a global variable name", c);
22070 parser_show_error_line(p, &loc);
22071 set_yylval_noname();
22079 if (tokadd_ident(p, c))
return 0;
22080 SET_LEX_STATE(EXPR_END);
22081 if (VALID_SYMNAME_P(tok(p), toklen(p), p->enc, ID_GLOBAL)) {
22085 compile_error(p,
"'%.*s' is not allowed as a global variable name", toklen(p), tok(p));
22086 set_yylval_noname();
22094 if (n < 0)
return false;
22096 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
22099 if (p->max_numparam == ORDINAL_PARAM) {
22100 compile_error(p,
"ordinary parameter is defined");
22103 struct vtable *args = p->lvtbl->args;
22104 if (p->max_numparam < n) {
22105 p->max_numparam = n;
22107 while (n > args->pos) {
22108 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
22113static enum yytokentype
22114parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
22116 const char *ptr = p->lex.pcur;
22117 enum yytokentype result = tIVAR;
22118 register int c = nextc(p);
22121 p->lex.ptok = ptr - 1;
22129 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
22130 if (c == -1 || !parser_is_identchar(p)) {
22132 RUBY_SET_YYLLOC(loc);
22133 if (result == tIVAR) {
22134 compile_error(p,
"'@' without identifiers is not allowed as an instance variable name");
22137 compile_error(p,
"'@@' without identifiers is not allowed as a class variable name");
22139 parser_show_error_line(p, &loc);
22140 set_yylval_noname();
22141 SET_LEX_STATE(EXPR_END);
22146 RUBY_SET_YYLLOC(loc);
22147 if (result == tIVAR) {
22148 compile_error(p,
"'@%c' is not allowed as an instance variable name", c);
22151 compile_error(p,
"'@@%c' is not allowed as a class variable name", c);
22153 parser_show_error_line(p, &loc);
22154 set_yylval_noname();
22155 SET_LEX_STATE(EXPR_END);
22159 if (tokadd_ident(p, c))
return 0;
22164static enum yytokentype
22167 enum yytokentype result;
22168 bool is_ascii =
true;
22169 const enum lex_state_e last_state = p->lex.state;
22171 int enforce_keyword_end = 0;
22174 if (!
ISASCII(c)) is_ascii =
false;
22175 if (tokadd_mbchar(p, c) == -1)
return 0;
22177 }
while (parser_is_identchar(p));
22178 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
22182 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
22183 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
22184 result = tIDENTIFIER;
22188 result = tCONSTANT;
22193 if (IS_LABEL_POSSIBLE()) {
22194 if (IS_LABEL_SUFFIX(0)) {
22195 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
22203 if (peek_end_expect_token_locations(p)) {
22205 int lineno, column;
22206 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
22208 end_pos = peek_end_expect_token_locations(p)->pos;
22209 lineno = end_pos->lineno;
22210 column = end_pos->column;
22213 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
22214 p->ruby_sourceline, beg_pos, lineno, column);
22217 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
22220 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
22221 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
22222 enforce_keyword_end = 1;
22228 if (is_ascii && (!IS_lex_state(EXPR_DOT) || enforce_keyword_end)) {
22232 kw = rb_reserved_word(tok(p), toklen(p));
22234 enum lex_state_e state = p->lex.state;
22235 if (IS_lex_state_for(state, EXPR_FNAME)) {
22236 SET_LEX_STATE(EXPR_ENDFN);
22237 set_yylval_name(rb_intern2(tok(p), toklen(p)));
22240 SET_LEX_STATE(kw->state);
22241 if (IS_lex_state(EXPR_BEG)) {
22242 p->command_start = TRUE;
22244 if (kw->id[0] == keyword_do) {
22245 if (lambda_beginning_p()) {
22246 p->lex.lpar_beg = -1;
22247 return keyword_do_LAMBDA;
22249 if (COND_P())
return keyword_do_cond;
22250 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
22251 return keyword_do_block;
22254 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
22257 if (kw->id[0] != kw->id[1])
22258 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
22264 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
22266 SET_LEX_STATE(EXPR_CMDARG);
22269 SET_LEX_STATE(EXPR_ARG);
22272 else if (p->lex.state == EXPR_FNAME) {
22273 SET_LEX_STATE(EXPR_ENDFN);
22276 SET_LEX_STATE(EXPR_END);
22279 ident = tokenize_ident(p);
22280 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
22281 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
22282 (result == tIDENTIFIER) &&
22283 (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
22284 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
22295 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
22299static enum yytokentype
22303 int space_seen = 0;
22306 enum lex_state_e last_state;
22307 int fallthru = FALSE;
22308 int token_seen = p->token_seen;
22310 if (p->lex.strterm) {
22311 if (strterm_is_heredoc(p->lex.strterm)) {
22313 return here_document(p, &p->lex.strterm->u.heredoc);
22317 return parse_string(p, &p->lex.strterm->u.literal);
22320 cmd_state = p->command_start;
22321 p->command_start = FALSE;
22322 p->token_seen = TRUE;
22327 last_state = p->lex.state;
22328 switch (c = nextc(p)) {
22335 if (p->end_expect_token_locations) {
22336 pop_end_expect_token_locations(p);
22337 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
22342 RUBY_SET_YYLLOC(*p->yylloc);
22343 return END_OF_INPUT;
22349 case ' ':
case '\t':
case '\f':
22352 while ((c = nextc(p))) {
22357 case ' ':
case '\t':
case '\f':
22366 dispatch_scan_event(p, tSP);
22373 p->token_seen = token_seen;
22374 const char *
const pcur = p->lex.pcur, *
const ptok = p->lex.ptok;
22376 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
22377 if (comment_at_top(p)) {
22378 set_file_encoding(p, p->lex.pcur, p->lex.pend);
22381 p->lex.pcur = pcur, p->lex.ptok = ptok;
22383 dispatch_scan_event(p, tCOMMENT);
22387 p->token_seen = token_seen;
22389 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
22390 !IS_lex_state(EXPR_LABELED));
22391 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
22393 dispatch_scan_event(p, tIGNORED_NL);
22396 if (!c && p->ctxt.in_kwarg) {
22397 goto normal_newline;
22402 switch (c = nextc(p)) {
22403 case ' ':
case '\t':
case '\f':
case '\r':
22410 dispatch_scan_event(p, tSP);
22415 if (peek_word_at(p,
"nd", 2, 0))
goto leading_logical;
22418 if (peek_word_at(p,
"r", 1, 0))
goto leading_logical;
22421 if (peek(p,
'|'))
goto leading_logical;
22424 if (peek(p,
'&')) {
22427 dispatch_delayed_token(p, tIGNORED_NL);
22433 dispatch_delayed_token(p, tIGNORED_NL);
22434 if (peek(p,
'.') == (c ==
'&')) {
22436 dispatch_scan_event(p, tSP);
22442 p->ruby_sourceline--;
22443 p->lex.nextline = p->lex.lastline;
22444 set_lastline(p, prevline);
22446 if (c == -1 && space_seen) {
22447 dispatch_scan_event(p, tSP);
22452 RUBY_SET_YYLLOC(*p->yylloc);
22454 goto normal_newline;
22458 p->command_start = TRUE;
22459 SET_LEX_STATE(EXPR_BEG);
22463 if ((c = nextc(p)) ==
'*') {
22464 if ((c = nextc(p)) ==
'=') {
22465 set_yylval_id(idPow);
22466 SET_LEX_STATE(EXPR_BEG);
22470 if (IS_SPCARG(c)) {
22471 rb_warning0(
"'**' interpreted as argument prefix");
22474 else if (IS_BEG()) {
22478 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
22483 set_yylval_id(
'*');
22484 SET_LEX_STATE(EXPR_BEG);
22488 if (IS_SPCARG(c)) {
22489 rb_warning0(
"'*' interpreted as argument prefix");
22492 else if (IS_BEG()) {
22496 c = warn_balanced(
'*',
"*",
"argument prefix");
22499 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22504 if (IS_AFTER_OPERATOR()) {
22505 SET_LEX_STATE(EXPR_ARG);
22511 SET_LEX_STATE(EXPR_BEG);
22525 if (word_match_p(p,
"begin", 5)) {
22526 int first_p = TRUE;
22529 dispatch_scan_event(p, tEMBDOC_BEG);
22533 dispatch_scan_event(p, tEMBDOC);
22538 compile_error(p,
"embedded document meets end of file");
22539 return END_OF_INPUT;
22541 if (c ==
'=' && word_match_p(p,
"end", 3)) {
22547 dispatch_scan_event(p, tEMBDOC_END);
22552 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22553 if ((c = nextc(p)) ==
'=') {
22554 if ((c = nextc(p)) ==
'=') {
22563 else if (c ==
'>') {
22572 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
22574 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
22575 enum yytokentype token = heredoc_identifier(p);
22576 if (token)
return token < 0 ? 0 : token;
22578 if (IS_AFTER_OPERATOR()) {
22579 SET_LEX_STATE(EXPR_ARG);
22582 if (IS_lex_state(EXPR_CLASS))
22583 p->command_start = TRUE;
22584 SET_LEX_STATE(EXPR_BEG);
22587 if ((c = nextc(p)) ==
'>') {
22594 if ((c = nextc(p)) ==
'=') {
22595 set_yylval_id(idLTLT);
22596 SET_LEX_STATE(EXPR_BEG);
22600 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
22606 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22607 if ((c = nextc(p)) ==
'=') {
22611 if ((c = nextc(p)) ==
'=') {
22612 set_yylval_id(idGTGT);
22613 SET_LEX_STATE(EXPR_BEG);
22623 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22624 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
22625 p->lex.ptok = p->lex.pcur-1;
22626 return tSTRING_BEG;
22629 if (IS_lex_state(EXPR_FNAME)) {
22630 SET_LEX_STATE(EXPR_ENDFN);
22633 if (IS_lex_state(EXPR_DOT)) {
22635 SET_LEX_STATE(EXPR_CMDARG);
22637 SET_LEX_STATE(EXPR_ARG);
22640 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
22641 return tXSTRING_BEG;
22644 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22645 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
22646 p->lex.ptok = p->lex.pcur-1;
22647 return tSTRING_BEG;
22650 return parse_qmark(p, space_seen);
22653 if ((c = nextc(p)) ==
'&') {
22654 SET_LEX_STATE(EXPR_BEG);
22655 if ((c = nextc(p)) ==
'=') {
22656 set_yylval_id(idANDOP);
22657 SET_LEX_STATE(EXPR_BEG);
22663 else if (c ==
'=') {
22664 set_yylval_id(
'&');
22665 SET_LEX_STATE(EXPR_BEG);
22668 else if (c ==
'.') {
22669 set_yylval_id(idANDDOT);
22670 SET_LEX_STATE(EXPR_DOT);
22674 if (IS_SPCARG(c)) {
22676 (c = peekc_n(p, 1)) == -1 ||
22677 !(c ==
'\'' || c ==
'"' ||
22678 is_identchar(p, (p->lex.pcur+1), p->lex.pend, p->enc))) {
22679 rb_warning0(
"'&' interpreted as argument prefix");
22683 else if (IS_BEG()) {
22687 c = warn_balanced(
'&',
"&",
"argument prefix");
22689 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22693 if ((c = nextc(p)) ==
'|') {
22694 SET_LEX_STATE(EXPR_BEG);
22695 if ((c = nextc(p)) ==
'=') {
22696 set_yylval_id(idOROP);
22697 SET_LEX_STATE(EXPR_BEG);
22701 if (IS_lex_state_for(last_state, EXPR_BEG)) {
22709 set_yylval_id(
'|');
22710 SET_LEX_STATE(EXPR_BEG);
22713 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
22719 if (IS_AFTER_OPERATOR()) {
22720 SET_LEX_STATE(EXPR_ARG);
22728 set_yylval_id(
'+');
22729 SET_LEX_STATE(EXPR_BEG);
22732 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
22733 SET_LEX_STATE(EXPR_BEG);
22736 return parse_numeric(p,
'+');
22740 SET_LEX_STATE(EXPR_BEG);
22742 return warn_balanced(
'+',
"+",
"unary operator");
22746 if (IS_AFTER_OPERATOR()) {
22747 SET_LEX_STATE(EXPR_ARG);
22755 set_yylval_id(
'-');
22756 SET_LEX_STATE(EXPR_BEG);
22760 SET_LEX_STATE(EXPR_ENDFN);
22761 yylval.num = p->lex.lpar_beg;
22762 p->lex.lpar_beg = p->lex.paren_nest;
22765 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
22766 SET_LEX_STATE(EXPR_BEG);
22769 return tUMINUS_NUM;
22773 SET_LEX_STATE(EXPR_BEG);
22775 return warn_balanced(
'-',
"-",
"unary operator");
22778 int is_beg = IS_BEG();
22779 SET_LEX_STATE(EXPR_BEG);
22780 if ((c = nextc(p)) ==
'.') {
22781 if ((c = nextc(p)) ==
'.') {
22782 if (p->ctxt.in_argdef || IS_LABEL_POSSIBLE()) {
22783 SET_LEX_STATE(EXPR_ENDARG);
22786 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
22787 rb_warn0(
"... at EOL, should be parenthesized?");
22789 return is_beg ? tBDOT3 : tDOT3;
22792 return is_beg ? tBDOT2 : tDOT2;
22796 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
22797 parse_numeric(p,
'.');
22799 yyerror0(
"unexpected fraction part after numeric literal");
22802 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
22804 SET_LEX_STATE(EXPR_END);
22805 p->lex.ptok = p->lex.pcur;
22808 set_yylval_id(
'.');
22809 SET_LEX_STATE(EXPR_DOT);
22813 case '0':
case '1':
case '2':
case '3':
case '4':
22814 case '5':
case '6':
case '7':
case '8':
case '9':
22815 return parse_numeric(p, c);
22820 SET_LEX_STATE(EXPR_ENDFN);
22821 p->lex.paren_nest--;
22827 SET_LEX_STATE(EXPR_END);
22828 p->lex.paren_nest--;
22833 if (!p->lex.brace_nest--)
return tSTRING_DEND;
22836 SET_LEX_STATE(EXPR_END);
22837 p->lex.paren_nest--;
22843 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
22844 SET_LEX_STATE(EXPR_BEG);
22847 set_yylval_id(idCOLON2);
22848 SET_LEX_STATE(EXPR_DOT);
22851 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
22853 c = warn_balanced(
':',
":",
"symbol literal");
22854 SET_LEX_STATE(EXPR_BEG);
22859 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
22862 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
22868 SET_LEX_STATE(EXPR_FNAME);
22873 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22874 return tREGEXP_BEG;
22876 if ((c = nextc(p)) ==
'=') {
22877 set_yylval_id(
'/');
22878 SET_LEX_STATE(EXPR_BEG);
22882 if (IS_SPCARG(c)) {
22883 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22884 return tREGEXP_BEG;
22886 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22887 return warn_balanced(
'/',
"/",
"regexp literal");
22890 if ((c = nextc(p)) ==
'=') {
22891 set_yylval_id(
'^');
22892 SET_LEX_STATE(EXPR_BEG);
22895 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22900 SET_LEX_STATE(EXPR_BEG);
22901 p->command_start = TRUE;
22905 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22909 if (IS_AFTER_OPERATOR()) {
22910 if ((c = nextc(p)) !=
'@') {
22913 SET_LEX_STATE(EXPR_ARG);
22916 SET_LEX_STATE(EXPR_BEG);
22924 else if (!space_seen) {
22927 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
22930 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
22931 rb_warning0(
"parentheses after method name is interpreted as "
22932 "an argument list, not a decomposed argument");
22934 p->lex.paren_nest++;
22937 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22941 p->lex.paren_nest++;
22942 if (IS_AFTER_OPERATOR()) {
22943 if ((c = nextc(p)) ==
']') {
22944 p->lex.paren_nest--;
22945 SET_LEX_STATE(EXPR_ARG);
22946 if ((c = nextc(p)) ==
'=') {
22953 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
22956 else if (IS_BEG()) {
22959 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
22962 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22968 ++p->lex.brace_nest;
22969 if (lambda_beginning_p())
22971 else if (IS_lex_state(EXPR_LABELED))
22973 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
22975 else if (IS_lex_state(EXPR_ENDARG))
22979 if (c != tLBRACE) {
22980 p->command_start = TRUE;
22981 SET_LEX_STATE(EXPR_BEG);
22984 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22986 ++p->lex.paren_nest;
22995 dispatch_scan_event(p, tSP);
22998 if (c ==
' ')
return tSP;
23004 return parse_percent(p, space_seen, last_state);
23007 return parse_gvar(p, last_state);
23010 return parse_atmark(p, last_state);
23013 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
23014 p->ruby__end__seen = 1;
23018 dispatch_scan_event(p, k__END__);
23020 return END_OF_INPUT;
23026 if (!parser_is_identchar(p)) {
23027 compile_error(p,
"Invalid char '\\x%02X' in expression", c);
23036 return parse_ident(p, c, cmd_state);
23039static enum yytokentype
23042 enum yytokentype t;
23046 p->yylloc = yylloc;
23048 t = parser_yylex(p);
23050 if (has_delayed_token(p))
23051 dispatch_delayed_token(p, t);
23052 else if (t != END_OF_INPUT)
23053 dispatch_scan_event(p, t);
23058#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
23061node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment)
23063 NODE *n = rb_ast_newnode(p->ast,
type, size, alignment);
23065 rb_node_init(n,
type);
23073 nd_set_line(nd, loc->beg_pos.lineno);
23080 NODE *n = node_new_internal(p,
type, size, alignment);
23082 nd_set_loc(n, loc);
23083 nd_set_node_id(n, parser_get_node_id(p));
23087#define NODE_NEWNODE(node_type, type, loc) (type *)(node_newnode(p, node_type, sizeof(type), RUBY_ALIGNOF(type), loc))
23093 nd_tbl = local_tbl(p);
23095 n->nd_tbl = nd_tbl;
23096 n->nd_body = nd_body;
23097 n->nd_parent = nd_parent;
23098 n->nd_args = nd_args;
23107 n->nd_tbl = nd_tbl;
23108 n->nd_body = nd_body;
23109 n->nd_parent = nd_parent;
23110 n->nd_args = nd_args;
23119 n->nd_mid = nd_mid;
23120 n->nd_defn = nd_defn;
23129 n->nd_recv = nd_recv;
23130 n->nd_mid = nd_mid;
23131 n->nd_defn = nd_defn;
23140 n->nd_head = nd_head;
23141 n->nd_end = (
NODE *)n;
23151 n->nd_body = nd_body;
23152 n->nd_iter = nd_iter;
23153 n->for_keyword_loc = *for_keyword_loc;
23154 n->in_keyword_loc = *in_keyword_loc;
23155 n->do_keyword_loc = *do_keyword_loc;
23156 n->end_keyword_loc = *end_keyword_loc;
23165 n->nd_var = nd_var;
23182 n->nd_body = nd_body;
23191 n->nd_head = nd_head;
23192 n->nd_resq = nd_resq;
23193 n->nd_else = nd_else;
23202 n->nd_args = nd_args;
23203 n->nd_exc_var = nd_exc_var;
23204 n->nd_body = nd_body;
23205 n->nd_next = nd_next;
23214 n->nd_head = nd_head;
23215 n->nd_ensr = nd_ensr;
23224 n->nd_1st = nd_1st;
23225 n->nd_2nd = nd_2nd;
23226 n->operator_loc = *operator_loc;
23235 n->nd_1st = nd_1st;
23236 n->nd_2nd = nd_2nd;
23237 n->operator_loc = *operator_loc;
23246 n->nd_stts = nd_stts;
23247 n->keyword_loc = *keyword_loc;
23254 if (nd_head) no_blockarg(p, nd_head);
23257 n->nd_head = nd_head;
23258 n->keyword_loc = *keyword_loc;
23259 n->lparen_loc = *lparen_loc;
23260 n->rparen_loc = *rparen_loc;
23269 n->nd_cond = nd_cond;
23270 n->nd_body = nd_body;
23271 n->nd_else = nd_else;
23272 n->if_keyword_loc = *if_keyword_loc;
23273 n->then_keyword_loc = *then_keyword_loc;
23274 n->end_keyword_loc = *end_keyword_loc;
23283 n->nd_cond = nd_cond;
23284 n->nd_body = nd_body;
23285 n->nd_else = nd_else;
23286 n->keyword_loc = *keyword_loc;
23287 n->then_keyword_loc = *then_keyword_loc;
23288 n->end_keyword_loc = *end_keyword_loc;
23297 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
23299 RNODE_SCOPE(scope)->nd_parent = &n->node;
23300 n->nd_cpath = nd_cpath;
23301 n->nd_body = scope;
23302 n->nd_super = nd_super;
23303 n->class_keyword_loc = *class_keyword_loc;
23304 n->inheritance_operator_loc = *inheritance_operator_loc;
23305 n->end_keyword_loc = *end_keyword_loc;
23314 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
23316 RNODE_SCOPE(scope)->nd_parent = &n->node;
23317 n->nd_recv = nd_recv;
23318 n->nd_body = scope;
23319 n->class_keyword_loc = *class_keyword_loc;
23320 n->operator_loc = *operator_loc;
23321 n->end_keyword_loc = *end_keyword_loc;
23330 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
23332 RNODE_SCOPE(scope)->nd_parent = &n->node;
23333 n->nd_cpath = nd_cpath;
23334 n->nd_body = scope;
23335 n->module_keyword_loc = *module_keyword_loc;
23336 n->end_keyword_loc = *end_keyword_loc;
23345 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
23347 RNODE_SCOPE(scope)->nd_parent = &n->node;
23348 n->nd_body = scope;
23358 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
23359 YYLTYPE lambda_loc = code_loc_gen(operator_loc, closing_loc);
23361 RNODE_SCOPE(scope)->nd_parent = &n->node;
23362 n->nd_body = scope;
23363 n->operator_loc = *operator_loc;
23364 n->opening_loc = *opening_loc;
23365 n->closing_loc = *closing_loc;
23374 n->nd_head = nd_head;
23375 n->nd_body = nd_body;
23376 n->case_keyword_loc = *case_keyword_loc;
23377 n->end_keyword_loc = *end_keyword_loc;
23387 n->nd_body = nd_body;
23388 n->case_keyword_loc = *case_keyword_loc;
23389 n->end_keyword_loc = *end_keyword_loc;
23398 n->nd_head = nd_head;
23399 n->nd_body = nd_body;
23400 n->case_keyword_loc = *case_keyword_loc;
23401 n->end_keyword_loc = *end_keyword_loc;
23410 n->nd_head = nd_head;
23411 n->nd_body = nd_body;
23412 n->nd_next = nd_next;
23413 n->keyword_loc = *keyword_loc;
23414 n->then_keyword_loc = *then_keyword_loc;
23423 n->nd_head = nd_head;
23424 n->nd_body = nd_body;
23425 n->nd_next = nd_next;
23426 n->in_keyword_loc = *in_keyword_loc;
23427 n->then_keyword_loc = *then_keyword_loc;
23428 n->operator_loc = *operator_loc;
23437 n->nd_cond = nd_cond;
23438 n->nd_body = nd_body;
23439 n->nd_state = nd_state;
23440 n->keyword_loc = *keyword_loc;
23441 n->closing_loc = *closing_loc;
23450 n->nd_cond = nd_cond;
23451 n->nd_body = nd_body;
23452 n->nd_state = nd_state;
23453 n->keyword_loc = *keyword_loc;
23454 n->closing_loc = *closing_loc;
23463 n->nd_head = nd_head;
23464 n->nd_mid = nd_mid;
23465 n->delimiter_loc = *delimiter_loc;
23466 n->name_loc = *name_loc;
23475 n->nd_mid = nd_mid;
23476 n->delimiter_loc = *delimiter_loc;
23477 n->name_loc = *name_loc;
23486 n->nd_beg = nd_beg;
23487 n->nd_end = nd_end;
23488 n->operator_loc = *operator_loc;
23497 n->nd_beg = nd_beg;
23498 n->nd_end = nd_end;
23499 n->operator_loc = *operator_loc;
23542 n->nd_args = nd_args;
23543 n->keyword_loc = *keyword_loc;
23544 n->lparen_loc = *lparen_loc;
23545 n->rparen_loc = *rparen_loc;
23562 n->nd_recv = nd_recv;
23563 n->nd_value = nd_value;
23573 n->nd_recv = nd_recv;
23574 n->nd_value = nd_value;
23582 return rb_node_list_new2(p, nd_head, 1, 0, loc);
23589 n->nd_head = nd_head;
23590 n->as.nd_alen = nd_alen;
23591 n->nd_next = nd_next;
23608 n->nd_head = nd_head;
23618 n->nd_head = nd_head;
23620 n->nd_args = nd_args;
23629 n->nd_vid = nd_vid;
23630 n->nd_value = nd_value;
23639 n->nd_vid = nd_vid;
23640 n->nd_value = nd_value;
23649 n->nd_vid = nd_vid;
23650 n->nd_value = nd_value;
23659 n->nd_vid = nd_vid;
23660 n->nd_value = nd_value;
23669 n->nd_vid = nd_vid;
23670 n->nd_value = nd_value;
23679 n->nd_recv = nd_recv;
23680 n->nd_mid = nd_mid;
23681 n->nd_index = index;
23682 n->nd_rvalue = rvalue;
23683 n->call_operator_loc = *call_operator_loc;
23684 n->opening_loc = *opening_loc;
23685 n->closing_loc = *closing_loc;
23686 n->binary_operator_loc = *binary_operator_loc;
23695 n->nd_recv = nd_recv;
23696 n->nd_value = nd_value;
23697 n->nd_vid = nd_vid;
23698 n->nd_mid = nd_mid;
23699 n->nd_aid = nd_aid;
23700 n->call_operator_loc = *call_operator_loc;
23701 n->message_loc = *message_loc;
23702 n->binary_operator_loc = *binary_operator_loc;
23711 n->nd_head = nd_head;
23712 n->nd_value = nd_value;
23721 n->nd_head = nd_head;
23722 n->nd_value = nd_value;
23731 n->nd_vid = nd_vid;
23740 n->nd_vid = nd_vid;
23749 n->nd_vid = nd_vid;
23758 n->nd_vid = nd_vid;
23767 n->nd_vid = nd_vid;
23776 n->nd_vid = nd_vid;
23785 n->nd_nth = nd_nth;
23794 n->nd_nth = nd_nth;
23821rb_node_rational_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
const YYLTYPE *loc)
23827 n->seen_point = seen_point;
23833rb_node_imaginary_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
enum rb_numeric_type numeric_type,
const YYLTYPE *loc)
23839 n->seen_point = seen_point;
23840 n->type = numeric_type;
23849 n->string = string;
23859 n->string = string;
23860 n->as.nd_alen = nd_alen;
23869 return rb_node_dstr_new0(p,
string, 1, 0, loc);
23876 n->string = string;
23885 n->string = string;
23886 n->as.nd_alen = nd_alen;
23896 n->string = rb_str_to_parser_string(p, str);
23905 n->string = string;
23906 n->as.nd_alen = nd_alen;
23916 n->nd_body = nd_body;
23917 n->opening_loc = *opening_loc;
23918 n->closing_loc = *closing_loc;
23927 n->string = string;
23928 n->options = options & RE_OPTION_MASK;
23929 n->opening_loc = *opening_loc;
23930 n->content_loc = *content_loc;
23931 n->closing_loc = *closing_loc;
23940 n->nd_recv = nd_recv;
23941 n->nd_mid = nd_mid;
23942 n->nd_args = nd_args;
23951 n->nd_recv = nd_recv;
23952 n->nd_mid = nd_mid;
23953 n->nd_args = nd_args;
23962 n->nd_mid = nd_mid;
23963 n->nd_args = nd_args;
23972 n->nd_recv = nd_recv;
23973 n->nd_mid = nd_mid;
23974 n->nd_args = nd_args;
23983 n->nd_mid = nd_mid;
23992 n->nd_body = nd_body;
24010 n->nd_pid = nd_pid;
24011 n->nd_plen = nd_plen;
24021 n->nd_body = nd_body;
24031 n->nd_body = nd_body;
24041 n->nd_1st = nd_1st;
24042 n->nd_2nd = nd_2nd;
24051 n->nd_head = nd_head;
24052 n->nd_body = nd_body;
24061 n->nd_head = nd_head;
24062 n->nd_body = nd_body;
24071 n->nd_head = nd_head;
24072 n->operator_loc = *operator_loc;
24083 n->nd_body = nd_body;
24084 n->operator_loc = *operator_loc;
24093 n->nd_1st = nd_1st;
24094 n->nd_2nd = nd_2nd;
24095 n->keyword_loc = *keyword_loc;
24104 n->nd_alias = nd_alias;
24105 n->nd_orig = nd_orig;
24106 n->keyword_loc = *keyword_loc;
24115 n->nd_undefs = rb_parser_ary_new_capa_for_node(p, 1);
24116 n->keyword_loc = NULL_LOC;
24117 rb_parser_ary_push_node(p, n->nd_undefs, nd_undef);
24134 n->nd_head = nd_head;
24135 n->keyword_loc = *keyword_loc;
24144 n->nd_body = nd_body;
24145 n->keyword_loc = *keyword_loc;
24146 n->opening_loc = *opening_loc;
24147 n->closing_loc = *closing_loc;
24156 n->nd_recv = nd_recv;
24157 n->nd_mid = nd_mid;
24158 n->nd_args = nd_args;
24168 n->pre_args = pre_args;
24169 n->rest_arg = rest_arg;
24170 n->post_args = post_args;
24179 n->nd_pconst = nd_pconst;
24180 n->nd_pkwargs = nd_pkwargs;
24181 n->nd_pkwrestarg = nd_pkwrestarg;
24191 n->pre_rest_arg = pre_rest_arg;
24193 n->post_rest_arg = post_rest_arg;
24210 n->path = rb_str_to_parser_string(p, str);
24225rb_node_cdecl_new(
struct parser_params *p,
ID nd_vid,
NODE *nd_value,
NODE *nd_else,
enum rb_parser_shareability shareability,
const YYLTYPE *loc)
24228 n->nd_vid = nd_vid;
24229 n->nd_value = nd_value;
24230 n->nd_else = nd_else;
24231 n->shareability = shareability;
24237rb_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)
24240 n->nd_head = nd_head;
24241 n->nd_value = nd_value;
24242 n->nd_aid = nd_aid;
24243 n->shareability = shareability;
24260 n->nd_stts = nd_stts;
24262 n->keyword_loc = *keyword_loc;
24271 n->nd_stts = nd_stts;
24273 n->keyword_loc = *keyword_loc;
24283 n->keyword_loc = *keyword_loc;
24292 n->save.numparam_save = 0;
24293 n->save.max_numparam = 0;
24294 n->save.ctxt = p->ctxt;
24304 n->save.numparam_save = numparam_push(p);
24305 n->save.max_numparam = p->max_numparam;
24310static enum node_type
24311nodetype(
NODE *node)
24313 return (
enum node_type)nd_type(node);
24317nodeline(
NODE *node)
24319 return nd_line(node);
24324newline_node(
NODE *node)
24327 node = remove_begin(node);
24328 nd_set_fl_newline(node);
24338 nd_set_line(node, nd_line(orig));
24344 NODE *end, *h = head, *nd;
24346 if (tail == 0)
return head;
24348 if (h == 0)
return tail;
24349 switch (nd_type(h)) {
24351 h = end = NEW_BLOCK(head, &head->nd_loc);
24355 end = RNODE_BLOCK(h)->nd_end;
24359 nd = RNODE_BLOCK(end)->nd_head;
24360 switch (nd_type(nd)) {
24366 rb_warning0L(nd_line(tail),
"statement not reached");
24373 if (!nd_type_p(tail, NODE_BLOCK)) {
24374 tail = NEW_BLOCK(tail, &tail->nd_loc);
24376 RNODE_BLOCK(end)->nd_next = tail;
24377 RNODE_BLOCK(h)->nd_end = RNODE_BLOCK(tail)->nd_end;
24378 nd_set_last_loc(head, nd_last_loc(tail));
24388 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
24389 if (RNODE_LIST(list)->nd_next) {
24390 last = RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end;
24396 RNODE_LIST(list)->as.nd_alen += 1;
24397 RNODE_LIST(last)->nd_next = NEW_LIST(item, &item->nd_loc);
24398 RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end = RNODE_LIST(last)->nd_next;
24400 nd_set_last_loc(list, nd_last_loc(item));
24407list_concat(
NODE *head,
NODE *tail)
24411 if (RNODE_LIST(head)->nd_next) {
24412 last = RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end;
24418 RNODE_LIST(head)->as.nd_alen += RNODE_LIST(tail)->as.nd_alen;
24419 RNODE_LIST(last)->nd_next = tail;
24420 if (RNODE_LIST(tail)->nd_next) {
24421 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = RNODE_LIST(RNODE_LIST(tail)->nd_next)->as.nd_end;
24424 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = tail;
24427 nd_set_last_loc(head, nd_last_loc(tail));
24435 if (!tail)
return 1;
24436 if (!rb_parser_enc_compatible(p, head, tail)) {
24437 compile_error(p,
"string literal encodings differ (%s / %s)",
24438 rb_enc_name(rb_parser_str_get_encoding(head)),
24439 rb_enc_name(rb_parser_str_get_encoding(tail)));
24440 rb_parser_str_resize(p, head, 0);
24441 rb_parser_str_resize(p, tail, 0);
24444 rb_parser_str_buf_append(p, head, tail);
24451 if (htype != NODE_DSTR)
return NULL;
24452 if (RNODE_DSTR(head)->nd_next) {
24453 head = RNODE_LIST(RNODE_LIST(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_head;
24454 if (!head || !nd_type_p(head, NODE_STR))
return NULL;
24466 if (!orig)
return NULL;
24467 copy = rb_parser_string_new(p, PARSER_STRING_PTR(orig), PARSER_STRING_LEN(orig));
24468 copy->coderange = orig->coderange;
24469 copy->enc = orig->enc;
24478 enum node_type htype;
24481 if (!head)
return tail;
24482 if (!tail)
return head;
24484 htype = nd_type(head);
24485 if (htype == NODE_EVSTR) {
24486 head = new_dstr(p, head, loc);
24489 if (p->heredoc_indent > 0) {
24492 head = str2dstr(p, head);
24494 return list_append(p, head, tail);
24499 switch (nd_type(tail)) {
24501 if ((lit = string_literal_head(p, htype, head)) !=
false) {
24505 lit = RNODE_DSTR(head)->string;
24507 if (htype == NODE_STR) {
24508 if (!literal_concat0(p, lit, RNODE_STR(tail)->
string)) {
24510 rb_discard_node(p, head);
24511 rb_discard_node(p, tail);
24514 rb_discard_node(p, tail);
24517 list_append(p, head, tail);
24522 if (htype == NODE_STR) {
24523 if (!literal_concat0(p, RNODE_STR(head)->
string, RNODE_DSTR(tail)->
string))
24525 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24526 RNODE_DSTR(tail)->string = RNODE_STR(head)->string;
24527 RNODE_STR(head)->string = NULL;
24528 rb_discard_node(p, head);
24531 else if (!RNODE_DSTR(tail)->
string) {
24533 RNODE_DSTR(head)->as.nd_alen += RNODE_DSTR(tail)->as.nd_alen - 1;
24534 if (!RNODE_DSTR(head)->nd_next) {
24535 RNODE_DSTR(head)->nd_next = RNODE_DSTR(tail)->nd_next;
24537 else if (RNODE_DSTR(tail)->nd_next) {
24538 RNODE_DSTR(RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_next = RNODE_DSTR(tail)->nd_next;
24539 RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end = RNODE_DSTR(RNODE_DSTR(tail)->nd_next)->as.nd_end;
24541 rb_discard_node(p, tail);
24543 else if ((lit = string_literal_head(p, htype, head)) !=
false) {
24544 if (!literal_concat0(p, lit, RNODE_DSTR(tail)->
string))
24546 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24547 RNODE_DSTR(tail)->string = 0;
24551 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));
24552 RNODE_DSTR(tail)->string = 0;
24557 if (htype == NODE_STR) {
24558 head = str2dstr(p, head);
24559 RNODE_DSTR(head)->as.nd_alen = 1;
24561 list_append(p, head, tail);
24568nd_copy_flag(
NODE *new_node,
NODE *old_node)
24570 if (nd_fl_newline(old_node)) nd_set_fl_newline(new_node);
24571 nd_set_line(new_node, nd_line(old_node));
24572 new_node->nd_loc = old_node->nd_loc;
24573 new_node->node_id = old_node->node_id;
24580 nd_copy_flag(new_node, node);
24581 RNODE_DSTR(new_node)->string = RNODE_STR(node)->string;
24582 RNODE_DSTR(new_node)->as.nd_alen = 0;
24583 RNODE_DSTR(new_node)->nd_next = 0;
24584 RNODE_STR(node)->string = 0;
24593 nd_copy_flag(new_node, node);
24594 RNODE_REGX(new_node)->string = RNODE_STR(node)->string;
24595 RNODE_REGX(new_node)->options = options;
24596 nd_set_loc(new_node, loc);
24597 RNODE_REGX(new_node)->opening_loc = *opening_loc;
24598 RNODE_REGX(new_node)->content_loc = *content_loc;
24599 RNODE_REGX(new_node)->closing_loc = *closing_loc;
24600 RNODE_STR(node)->string = 0;
24608 if (nd_type_p(node, NODE_EVSTR)) {
24609 node = new_dstr(p, node, &node->nd_loc);
24620 switch (nd_type(node)) {
24622 return str2dstr(p, node);
24629 return NEW_EVSTR(head, loc, opening_loc, closing_loc);
24635 NODE *dstr = NEW_DSTR(STRING_NEW0(), loc);
24636 return list_append(p, dstr, node);
24644 value_expr(p, recv);
24645 value_expr(p, arg1);
24646 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
24647 nd_set_line(expr, op_loc->beg_pos.lineno);
24655 value_expr(p, recv);
24656 opcall = NEW_OPCALL(recv,
id, 0, loc);
24657 nd_set_line(opcall, op_loc->beg_pos.lineno);
24664 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
24665 nd_set_line(qcall, op_loc->beg_pos.lineno);
24673 if (block) block_dup_check(p, args, block);
24674 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
24675 if (block) ret = method_add_block(p, ret, block, loc);
24685 body->opening_loc = *opening_loc;
24686 body->closing_loc = *closing_loc;
24694 enum node_type
type = nd_type(m);
24697 compile_error(p,
"block given to yield");
24700 body = &RNODE_RETURN(m)->nd_stts;
24704 body = &RNODE_EXITS(m)->nd_stts;
24707 compile_error(p,
"command_add_block: unexpected node: NODE_REDO");
24710 compile_error(p,
"command_add_block: unexpected node: NODE_RETRY");
24713 block_dup_check(p, get_nd_args(p, m), b);
24714 return method_add_block(p, m, b, loc);
24716 RUBY_ASSERT(*body,
"no argument %s with do_block", parser_node_name(
type));
24717 YYLTYPE b_loc = code_loc_gen(&(*body)->nd_loc, loc);
24718 *body = command_add_block(p, *body, b, &b_loc);
24719 m->nd_loc.end_pos = loc->end_pos;
24723#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? RNODE_ONCE(node)->nd_body : node)
24726last_expr_once_body(
NODE *node)
24728 if (!node)
return 0;
24729 return nd_once_body(node);
24736 int line = op_loc->beg_pos.lineno;
24738 value_expr(p, node1);
24739 value_expr(p, node2);
24741 if ((n = last_expr_once_body(node1)) != 0) {
24742 switch (nd_type(n)) {
24745 NODE *match = NEW_MATCH2(node1, node2, loc);
24746 nd_set_line(match, line);
24752 const VALUE lit = rb_node_regx_string_val(n);
24754 NODE *match = NEW_MATCH2(node1, node2, loc);
24755 RNODE_MATCH2(match)->nd_args = reg_named_capture_assign(p, lit, loc, assignable);
24756 nd_set_line(match, line);
24763 if ((n = last_expr_once_body(node2)) != 0) {
24766 switch (nd_type(n)) {
24768 match3 = NEW_MATCH3(node2, node1, loc);
24773 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
24774 nd_set_line(n, line);
24778# if WARN_PAST_SCOPE
24782 struct vtable *past = p->lvtbl->past;
24784 if (vtable_included(past,
id))
return 1;
24795 NODE *outer = local->numparam.outer;
24796 NODE *inner = local->numparam.inner;
24797 if (outer || inner) {
24798 NODE *used = outer ? outer : inner;
24799 compile_error(p,
"numbered parameter is already used in %s block\n"
24800 "%s:%d: numbered parameter is already used here",
24801 outer ?
"outer" :
"inner",
24802 p->ruby_sourcefile, nd_line(used));
24803 parser_show_error_line(p, &used->nd_loc);
24812 NODE *numparam = p->lvtbl->numparam.current;
24814 compile_error(p,
"'it' is not allowed when a numbered parameter is already used\n"
24815 "%s:%d: numbered parameter is already used here",
24816 p->ruby_sourcefile, nd_line(numparam));
24817 parser_show_error_line(p, &numparam->nd_loc);
24826 NODE *it = p->lvtbl->it;
24828 compile_error(p,
"numbered parameters are not allowed when 'it' is already used\n"
24829 "%s:%d: 'it' is already used here",
24830 p->ruby_sourcefile, nd_line(it));
24831 parser_show_error_line(p, &it->nd_loc);
24844 return NEW_SELF(loc);
24846 return NEW_NIL(loc);
24848 return NEW_TRUE(loc);
24849 case keyword_false:
24850 return NEW_FALSE(loc);
24851 case keyword__FILE__:
24853 VALUE file = p->ruby_sourcefile_string;
24856 node = NEW_FILE(file, loc);
24859 case keyword__LINE__:
24860 return NEW_LINE(loc);
24861 case keyword__ENCODING__:
24862 return NEW_ENCODING(loc);
24865 switch (id_type(
id)) {
24867 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
24868 if (NUMPARAM_ID_P(
id) && (numparam_nested_p(p) || it_used_p(p)))
return 0;
24869 if (vidp) *vidp |= LVAR_USED;
24870 node = NEW_DVAR(
id, loc);
24873 if (local_id_ref(p,
id, &vidp)) {
24874 if (vidp) *vidp |= LVAR_USED;
24875 node = NEW_LVAR(
id, loc);
24878 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
24879 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
24880 if (numparam_nested_p(p) || it_used_p(p))
return 0;
24881 node = NEW_DVAR(
id, loc);
24883 if (!local->numparam.current) local->numparam.current = node;
24886# if WARN_PAST_SCOPE
24888 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
24892 if (dyna_in_block(p) &&
id == idIt && !(DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev))) {
24893 if (numparam_used_p(p))
return 0;
24894 if (p->max_numparam == ORDINAL_PARAM) {
24895 compile_error(p,
"ordinary parameter is defined");
24899 p->it_id = idItImplicit;
24900 vtable_add(p->lvtbl->args, p->it_id);
24902 NODE *node = NEW_DVAR(p->it_id, loc);
24903 if (!p->lvtbl->it) p->lvtbl->it = node;
24906 return NEW_VCALL(
id, loc);
24908 return NEW_GVAR(
id, loc);
24910 return NEW_IVAR(
id, loc);
24912 return NEW_CONST(
id, loc);
24914 return NEW_CVAR(
id, loc);
24916 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24924 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24926 while (opts->nd_next) {
24927 opts = opts->nd_next;
24928 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24930 opts->nd_next = opt;
24940 opt_arg_append(RNODE_OPT_ARG(kwlist), RNODE_OPT_ARG(kw));
24948 int had_trailing_semicolon = p->ctxt.has_trailing_semicolon;
24949 p->ctxt.has_trailing_semicolon = 0;
24953 if (nd_type_p(n, NODE_BEGIN)) {
24954 n = RNODE_BEGIN(n)->nd_body;
24956 else if (nd_type_p(n, NODE_BLOCK) && RNODE_BLOCK(n)->nd_end == n) {
24957 n = RNODE_BLOCK(n)->nd_head;
24964 if (had_trailing_semicolon && !nd_type_p(expr, NODE_BLOCK)) {
24965 NODE *block = NEW_BLOCK(expr, loc);
24966 return NEW_DEFINED(block, loc, keyword_loc);
24969 return NEW_DEFINED(n, loc, keyword_loc);
24977 if (rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_BROKEN) {
24978 yyerror1(loc,
"invalid symbol");
24982 lit = rb_str_new_parser_string(str);
24984 return NEW_SYM(lit, loc);
24990 enum node_type
type = nd_type(symbol);
24993 nd_set_type(symbol, NODE_DSYM);
24996 symbol = str_to_sym_node(p, symbol, &RNODE(symbol)->nd_loc);
24999 compile_error(p,
"unexpected node as symbol: %s", parser_node_name(
type));
25001 return list_append(p, symbols, symbol);
25007 if (dreg->string) {
25008 reg_fragment_setenc(p, dreg->string, options);
25010 for (
struct RNode_LIST *list = dreg->nd_next; list; list = RNODE_LIST(list->nd_next)) {
25011 NODE *frag = list->nd_head;
25012 if (nd_type_p(frag, NODE_STR)) {
25013 reg_fragment_setenc(p, RNODE_STR(frag)->
string, options);
25015 else if (nd_type_p(frag, NODE_DSTR)) {
25016 dregex_fragment_setenc(p, RNODE_DSTR(frag), options);
25027 reg_compile(p, str, options);
25028 node = NEW_REGX(str, options, loc, opening_loc, content_loc, closing_loc);
25031 switch (nd_type(node)) {
25035 reg_compile(p, RNODE_STR(node)->
string, options);
25036 node = str2regx(p, node, options, loc, opening_loc, content_loc, closing_loc);
25040 node = NEW_DSTR0(STRING_NEW0(), 1, NEW_LIST(node, loc), loc);
25043 nd_set_type(node, NODE_DREGX);
25044 nd_set_loc(node, loc);
25046 dreg->as.nd_cflag = options & RE_OPTION_MASK;
25047 if (dreg->nd_next) {
25048 dregex_fragment_setenc(p, dreg, options);
25050 if (options & RE_OPTION_ONCE) {
25051 node = NEW_ONCE(node, loc);
25062 return NEW_KW_ARG((k), loc);
25069 NODE *xstr = NEW_XSTR(STRING_NEW0(), loc);
25072 switch (nd_type(node)) {
25074 nd_set_type(node, NODE_XSTR);
25075 nd_set_loc(node, loc);
25078 nd_set_type(node, NODE_DXSTR);
25079 nd_set_loc(node, loc);
25082 node = NEW_DXSTR(0, 1, NEW_LIST(node, loc), loc);
25094static int nd_type_st_key_enable_p(
NODE *node);
25100 if (!arg || !p->case_labels)
return;
25101 if (!nd_type_st_key_enable_p(arg))
return;
25103 if (p->case_labels == CHECK_LITERAL_WHEN) {
25104 p->case_labels = st_init_table(&literal_type);
25108 if (st_lookup(p->case_labels, (st_data_t)arg, &line)) {
25109 rb_warning2(
"'when' clause on line %d duplicates 'when' clause on line %d and is ignored",
25110 WARN_I((
int)nd_line(arg)), WARN_I((
int)line));
25114 st_insert(p->case_labels, (st_data_t)arg, (st_data_t)p->ruby_sourceline);
25121 if (is_notop_id(
id)) {
25122 switch (
id & ID_SCOPE_MASK) {
25123 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
25126 if (dyna_in_block(p)) {
25127 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
25129 if (local_id(p,
id))
return 1;
25134 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
25139static inline enum lex_state_e
25140parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
25143 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
25145 return p->lex.state = ls;
25152 VALUE mesg = p->debug_buffer;
25154 if (!
NIL_P(mesg) && RSTRING_LEN(mesg)) {
25155 p->debug_buffer =
Qnil;
25156 rb_io_puts(1, &mesg, out);
25158 if (!
NIL_P(str) && RSTRING_LEN(str)) {
25159 rb_io_write(p->debug_output, str);
25163static const char rb_parser_lex_state_names[][8] = {
25164 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
25165 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
25166 "LABEL",
"LABELED",
"FITEM",
25173 unsigned int mask = 1;
25174 static const char none[] =
"NONE";
25176 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
25177 if ((
unsigned)state & mask) {
25192rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
25193 enum lex_state_e to,
int line)
25197 append_lex_state_name(p, from, mesg);
25199 append_lex_state_name(p, to, mesg);
25200 rb_str_catf(mesg,
" at line %d\n", line);
25201 flush_debug_buffer(p, p->debug_output, mesg);
25206rb_parser_lex_state_name(
struct parser_params *p,
enum lex_state_e state)
25208 return rb_str_to_interned_str(append_lex_state_name(p, state,
rb_str_new(0, 0)));
25218 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
25219 for (; mask && !(stack & mask); mask >>= 1)
continue;
25220 for (; mask; mask >>= 1)
rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
25225rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
25226 const char *name,
int line)
25228 VALUE mesg = rb_sprintf(
"%s: ", name);
25229 append_bitstack_value(p, stack, mesg);
25230 rb_str_catf(mesg,
" at line %d\n", line);
25231 flush_debug_buffer(p, p->debug_output, mesg);
25235rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
25241 rb_str_vcatf(mesg, fmt, ap);
25243 yyerror0(RSTRING_PTR(mesg));
25247 append_lex_state_name(p, p->lex.state, mesg);
25248 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
25249 rb_str_resize(mesg, 0);
25250 append_bitstack_value(p, p->cond_stack, mesg);
25251 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
25252 rb_str_resize(mesg, 0);
25253 append_bitstack_value(p, p->cmdarg_stack, mesg);
25254 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
25255 if (p->debug_output == rb_ractor_stdout())
25256 p->debug_output = rb_ractor_stderr();
25261rb_parser_set_pos(
YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
25263 yylloc->beg_pos.lineno = sourceline;
25264 yylloc->beg_pos.column = beg_pos;
25265 yylloc->end_pos.lineno = sourceline;
25266 yylloc->end_pos.column = end_pos;
25273 int sourceline = here->sourceline;
25274 int beg_pos = (int)here->offset - here->quote
25275 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
25276 int end_pos = (int)here->offset + here->length + here->quote;
25278 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25284 yylloc->beg_pos.lineno = p->delayed.beg_line;
25285 yylloc->beg_pos.column = p->delayed.beg_col;
25286 yylloc->end_pos.lineno = p->delayed.end_line;
25287 yylloc->end_pos.column = p->delayed.end_col;
25295 int sourceline = p->ruby_sourceline;
25296 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
25297 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
25298 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25304 yylloc->end_pos = yylloc->beg_pos;
25312 int sourceline = p->ruby_sourceline;
25313 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
25314 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
25315 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25321 int sourceline = p->ruby_sourceline;
25322 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
25323 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
25324 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25331 if (!
id)
return -1;
25334 *err =
"Can't change the value of self";
25337 *err =
"Can't assign to nil";
25340 *err =
"Can't assign to true";
25342 case keyword_false:
25343 *err =
"Can't assign to false";
25345 case keyword__FILE__:
25346 *err =
"Can't assign to __FILE__";
25348 case keyword__LINE__:
25349 *err =
"Can't assign to __LINE__";
25351 case keyword__ENCODING__:
25352 *err =
"Can't assign to __ENCODING__";
25355 switch (id_type(
id)) {
25357 if (dyna_in_block(p)) {
25358 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
25359 compile_error(p,
"Can't assign to numbered parameter _%d",
25360 NUMPARAM_ID_TO_IDX(
id));
25363 if (dvar_curr(p,
id))
return NODE_DASGN;
25364 if (dvar_defined(p,
id))
return NODE_DASGN;
25365 if (local_id(p,
id))
return NODE_LASGN;
25370 if (!local_id(p,
id)) local_var(p,
id);
25374 case ID_GLOBAL:
return NODE_GASGN;
25375 case ID_INSTANCE:
return NODE_IASGN;
25377 if (!p->ctxt.in_def)
return NODE_CDECL;
25378 *err =
"dynamic constant assignment";
25380 case ID_CLASS:
return NODE_CVASGN;
25382 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
25390 const char *err = 0;
25391 int node_type = assignable0(p,
id, &err);
25392 switch (node_type) {
25393 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
25394 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
25395 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
25396 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
25397 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, p->ctxt.shareable_constant_value, loc);
25398 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
25402 if (err) yyerror1(loc, err);
25404 if (err) set_value(assign_error(p, err, p->s_lvalue));
25406 return NEW_ERROR(loc);
25413 if (name == idUScore)
return 1;
25414 if (!is_local_id(name))
return 0;
25415 s = rb_id2str(name);
25417 return RSTRING_PTR(s)[0] ==
'_';
25423 if (dyna_in_block(p)) {
25424 if (dvar_curr(p, name)) {
25425 if (is_private_local_id(p, name))
return 1;
25426 yyerror0(
"duplicated argument name");
25428 else if (dvar_defined(p, name) || local_id(p, name)) {
25429 vtable_add(p->lvtbl->vars, name);
25430 if (p->lvtbl->used) {
25431 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
25437 if (local_id(p, name)) {
25438 if (is_private_local_id(p, name))
return 1;
25439 yyerror0(
"duplicated argument name");
25448 shadowing_lvar_0(p, name);
25456 if (!is_local_id(name)) {
25457 compile_error(p,
"invalid local variable - %"PRIsVALUE,
25461 if (!shadowing_lvar_0(p, name))
return;
25464 if (dvar_defined_ref(p, name, &vidp)) {
25465 if (vidp) *vidp |= LVAR_USED;
25472 NODE *block = 0, *kwds = 0;
25473 if (args && nd_type_p(args, NODE_BLOCK_PASS)) {
25474 block = RNODE_BLOCK_PASS(args)->nd_body;
25475 args = RNODE_BLOCK_PASS(args)->nd_head;
25477 if (args && nd_type_p(args, NODE_ARGSCAT)) {
25478 args = RNODE_ARGSCAT(args)->nd_body;
25480 if (args && nd_type_p(args, NODE_ARGSPUSH)) {
25481 kwds = RNODE_ARGSPUSH(args)->nd_body;
25484 for (
NODE *next = args; next && nd_type_p(next, NODE_LIST);
25485 next = RNODE_LIST(next)->nd_next) {
25486 kwds = RNODE_LIST(next)->nd_head;
25489 if (kwds && nd_type_p(kwds, NODE_HASH) && !RNODE_HASH(kwds)->nd_brace) {
25490 yyerror1(&kwds->nd_loc,
"keyword arg given in index assignment");
25493 yyerror1(&block->nd_loc,
"block arg given in index assignment");
25500 aryset_check(p, idx);
25501 return NEW_ATTRASGN(recv, tASET, idx, loc);
25507 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
25508 compile_error(p,
"both block arg and actual block given");
25515 if (!CALL_Q_P(atype))
id = rb_id_attrset(
id);
25516 return NEW_ATTRASGN(recv,
id, 0, loc);
25523# define ERR(...) (compile_error(p, __VA_ARGS__), Qtrue)
25525# define ERR(...) rb_sprintf(__VA_ARGS__)
25527 switch (nd_type(node)) {
25529 return ERR(
"Can't set variable $%ld", RNODE_NTH_REF(node)->nd_nth);
25530 case NODE_BACK_REF:
25531 return ERR(
"Can't set variable $%c", (
int)RNODE_BACK_REF(node)->nd_nth);
25540 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
25541 switch (nd_type(node1)) {
25543 return list_append(p, node1, node2);
25544 case NODE_BLOCK_PASS:
25545 RNODE_BLOCK_PASS(node1)->nd_head = arg_append(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25546 node1->nd_loc.end_pos = RNODE_BLOCK_PASS(node1)->nd_head->nd_loc.end_pos;
25548 case NODE_ARGSPUSH:
25549 RNODE_ARGSPUSH(node1)->nd_body = list_append(p, NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, &RNODE_ARGSPUSH(node1)->nd_body->nd_loc), node2);
25550 node1->nd_loc.end_pos = RNODE_ARGSPUSH(node1)->nd_body->nd_loc.end_pos;
25551 nd_set_type(node1, NODE_ARGSCAT);
25554 if (!nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25555 RNODE_ARGSCAT(node1)->nd_body = list_append(p, RNODE_ARGSCAT(node1)->nd_body, node2);
25556 node1->nd_loc.end_pos = RNODE_ARGSCAT(node1)->nd_body->nd_loc.end_pos;
25559 return NEW_ARGSPUSH(node1, node2, loc);
25565 if (!node2)
return node1;
25566 switch (nd_type(node1)) {
25567 case NODE_BLOCK_PASS:
25568 if (RNODE_BLOCK_PASS(node1)->nd_head)
25569 RNODE_BLOCK_PASS(node1)->nd_head = arg_concat(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25571 RNODE_LIST(node1)->nd_head = NEW_LIST(node2, loc);
25573 case NODE_ARGSPUSH:
25574 if (!nd_type_p(node2, NODE_LIST))
break;
25575 RNODE_ARGSPUSH(node1)->nd_body = list_concat(NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, loc), node2);
25576 nd_set_type(node1, NODE_ARGSCAT);
25579 if (!nd_type_p(node2, NODE_LIST) ||
25580 !nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25581 RNODE_ARGSCAT(node1)->nd_body = list_concat(RNODE_ARGSCAT(node1)->nd_body, node2);
25584 return NEW_ARGSCAT(node1, node2, loc);
25591 if ((n1 = splat_array(args)) != 0) {
25592 return list_append(p, n1, last_arg);
25594 return arg_append(p, args, last_arg, loc);
25601 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
25602 return list_concat(n1, rest_arg);
25604 return arg_concat(p, args, rest_arg, loc);
25608splat_array(
NODE* node)
25610 if (nd_type_p(node, NODE_SPLAT)) node = RNODE_SPLAT(node)->nd_head;
25611 if (nd_type_p(node, NODE_LIST))
return node;
25620 switch (nd_type(rhs)) {
25622 if (local_id_ref(p, RNODE_LASGN(rhs)->nd_vid, &vidp)) {
25623 if (vidp) *vidp |= LVAR_USED;
25627 if (dvar_defined_ref(p, RNODE_DASGN(rhs)->nd_vid, &vidp)) {
25628 if (vidp) *vidp |= LVAR_USED;
25633 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
25634 mark_lvar_used(p, rhs->nd_head);
25641static int is_static_content(
NODE *node);
25646 if (!lhs)
return 0;
25648 switch (nd_type(lhs)) {
25656 set_nd_value(p, lhs, rhs);
25657 nd_set_loc(lhs, loc);
25660 case NODE_ATTRASGN:
25661 RNODE_ATTRASGN(lhs)->nd_args = arg_append(p, RNODE_ATTRASGN(lhs)->nd_args, rhs, loc);
25662 nd_set_loc(lhs, loc);
25676 NODE *void_node = 0, *vn;
25679 rb_warning0(
"empty expression");
25682 switch (nd_type(node)) {
25684 vn = RNODE_ENSURE(node)->nd_head;
25685 node = RNODE_ENSURE(node)->nd_ensr;
25687 if (vn && (vn = value_expr_check(p, vn))) {
25694 vn = RNODE_RESCUE(node)->nd_head;
25695 if (!vn || !(vn = value_expr_check(p, vn))) {
25696 if (!RNODE_RESCUE(node)->nd_else)
return NULL;
25698 if (!void_node) void_node = vn;
25699 for (
NODE *r = RNODE_RESCUE(node)->nd_resq; r; r = RNODE_RESBODY(r)->nd_next) {
25700 if (!nd_type_p(r, NODE_RESBODY)) {
25701 compile_error(p,
"unexpected node");
25704 if (!(vn = value_expr_check(p, RNODE_RESBODY(r)->nd_body))) {
25707 if (!void_node) void_node = vn;
25709 node = RNODE_RESCUE(node)->nd_else;
25710 if (!node)
return void_node;
25722 for (node = RNODE_CASE(node)->nd_body;
25723 node && nd_type_p(node, NODE_WHEN);
25724 node = RNODE_WHEN(node)->nd_next) {
25725 if (!(vn = value_expr_check(p, RNODE_WHEN(node)->nd_body))) {
25728 if (!void_node) void_node = vn;
25734 NODE *in = RNODE_CASE3(node)->nd_body;
25735 if (!in || !nd_type_p(in, NODE_IN)) {
25736 compile_error(p,
"unexpected node");
25739 if (!RNODE_IN(in)->nd_body) {
25744 vn = value_expr_check(p, RNODE_IN(in)->nd_body);
25745 if (!vn)
return NULL;
25746 if (!void_node) void_node = vn;
25747 in = RNODE_IN(in)->nd_next;
25748 }
while (in && nd_type_p(in, NODE_IN));
25754 while (RNODE_BLOCK(node)->nd_next) {
25755 vn = value_expr_check(p, RNODE_BLOCK(node)->nd_head);
25757 node = RNODE_BLOCK(node)->nd_next;
25759 node = RNODE_BLOCK(node)->nd_head;
25763 node = RNODE_BEGIN(node)->nd_body;
25768 if (!RNODE_IF(node)->nd_body) {
25771 else if (!RNODE_IF(node)->nd_else) {
25774 vn = value_expr_check(p, RNODE_IF(node)->nd_body);
25775 if (!vn)
return NULL;
25776 if (!void_node) void_node = vn;
25777 node = RNODE_IF(node)->nd_else;
25790 mark_lvar_used(p, node);
25802 return void_node ? void_node : node;
25808 NODE *void_node = value_expr_check(p, node);
25810 yyerror1(&void_node->nd_loc,
"void value expression");
25820 const char *useless = 0;
25824 if (!node || !(node = nd_once_body(node)))
return;
25825 switch (nd_type(node)) {
25827 switch (RNODE_OPCALL(node)->nd_mid) {
25846 useless = rb_id2name(RNODE_OPCALL(node)->nd_mid);
25857 case NODE_BACK_REF:
25858 useless =
"a variable";
25861 useless =
"a constant";
25866 case NODE_ENCODING:
25869 case NODE_RATIONAL:
25870 case NODE_IMAGINARY:
25875 useless =
"a literal";
25900 useless =
"defined?";
25905 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
25913 NODE *
const n = node;
25915 if (!node)
return n;
25916 if (!nd_type_p(node, NODE_BLOCK))
return n;
25918 while (RNODE_BLOCK(node)->nd_next) {
25919 void_expr(p, RNODE_BLOCK(node)->nd_head);
25920 node = RNODE_BLOCK(node)->nd_next;
25922 return RNODE_BLOCK(node)->nd_head;
25926remove_begin(
NODE *node)
25928 NODE **n = &node, *n1 = node;
25929 while (n1 && nd_type_p(n1, NODE_BEGIN) && RNODE_BEGIN(n1)->nd_body) {
25930 *n = n1 = RNODE_BEGIN(n1)->nd_body;
25938 NODE *node = *body;
25941 *body = NEW_NIL(&NULL_LOC);
25944#define subnodes(type, n1, n2) \
25945 ((!type(node)->n1) ? (type(node)->n2 ? (body = &type(node)->n2, 1) : 0) : \
25946 (!type(node)->n2) ? (body = &type(node)->n1, 1) : \
25947 (reduce_nodes(p, &type(node)->n1), body = &type(node)->n2, 1))
25950 int newline = (int)nd_fl_newline(node);
25951 switch (nd_type(node)) {
25957 *body = node = RNODE_BEGIN(node)->nd_body;
25958 if (newline && node) nd_set_fl_newline(node);
25961 body = &RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head;
25965 if (subnodes(RNODE_IF, nd_body, nd_else))
break;
25968 body = &RNODE_CASE(node)->nd_body;
25971 if (!subnodes(RNODE_WHEN, nd_body, nd_next))
goto end;
25974 body = &RNODE_ENSURE(node)->nd_head;
25978 if (RNODE_RESCUE(node)->nd_else) {
25979 body = &RNODE_RESCUE(node)->nd_resq;
25982 if (!subnodes(RNODE_RESCUE, nd_head, nd_resq))
goto end;
25988 if (newline && node) nd_set_fl_newline(node);
25995is_static_content(
NODE *node)
25997 if (!node)
return 1;
25998 switch (nd_type(node)) {
26000 if (!(node = RNODE_HASH(node)->nd_head))
break;
26003 if (!is_static_content(RNODE_LIST(node)->nd_head))
return 0;
26004 }
while ((node = RNODE_LIST(node)->nd_next) != 0);
26009 case NODE_ENCODING:
26012 case NODE_RATIONAL:
26013 case NODE_IMAGINARY:
26029 switch (nd_type(node)) {
26043 if (!get_nd_value(p, node))
return 1;
26044 if (is_static_content(get_nd_value(p, node))) {
26046 rb_warn0L(nd_line(get_nd_value(p, node)),
"found '= literal' in conditional, should be ==");
26057#define SWITCH_BY_COND_TYPE(t, w, arg) do { \
26059 case COND_IN_OP: break; \
26060 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
26061 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
26070 enum node_type
type;
26072 if (node == 0)
return 0;
26074 type = nd_type(node);
26075 value_expr(p, node);
26076 if (
type == NODE_INTEGER) {
26077 if (!e_option_supplied(p)) rb_warn0L(nd_line(node),
"integer literal in flip-flop");
26078 ID lineno = rb_intern(
"$.");
26079 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
26081 return cond0(p, node, COND_IN_FF, loc,
true);
26087 if (node == 0)
return 0;
26088 if (!(node = nd_once_body(node)))
return 0;
26089 assign_in_cond(p, node);
26091 switch (nd_type(node)) {
26093 RNODE_BEGIN(node)->nd_body = cond0(p, RNODE_BEGIN(node)->nd_body,
type, loc, top);
26100 SWITCH_BY_COND_TYPE(
type, warn,
"string ");
26104 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ");
26105 nd_set_type(node, NODE_MATCH);
26109 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning,
"regex ");
26111 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
26115 NODE *end = RNODE_BLOCK(node)->nd_end;
26116 NODE **expr = &RNODE_BLOCK(end)->nd_head;
26117 if (top) top = node == end;
26118 *expr = cond0(p, *expr,
type, loc, top);
26124 RNODE_AND(node)->nd_1st = cond0(p, RNODE_AND(node)->nd_1st, COND_IN_COND, loc,
true);
26125 RNODE_AND(node)->nd_2nd = cond0(p, RNODE_AND(node)->nd_2nd, COND_IN_COND, loc,
true);
26131 RNODE_DOT2(node)->nd_beg = range_op(p, RNODE_DOT2(node)->nd_beg, loc);
26132 RNODE_DOT2(node)->nd_end = range_op(p, RNODE_DOT2(node)->nd_end, loc);
26133 switch (nd_type(node)) {
26135 nd_set_type(node,NODE_FLIP2);
26140 nd_set_type(node, NODE_FLIP3);
26149 SWITCH_BY_COND_TYPE(
type, warning,
"symbol ");
26153 case NODE_ENCODING:
26156 case NODE_RATIONAL:
26157 case NODE_IMAGINARY:
26158 SWITCH_BY_COND_TYPE(
type, warning,
"");
26170 if (node == 0)
return 0;
26171 return cond0(p, node, COND_IN_COND, loc,
true);
26177 if (node == 0)
return 0;
26178 return cond0(p, node, COND_IN_OP, loc,
true);
26185 return NEW_NIL(&loc);
26191 if (!cc)
return right;
26192 cc = cond0(p, cc, COND_IN_COND, loc,
true);
26193 return newline_node(NEW_IF(cc, left, right, loc, if_keyword_loc, then_keyword_loc, end_keyword_loc));
26199 if (!cc)
return right;
26200 cc = cond0(p, cc, COND_IN_COND, loc,
true);
26201 return newline_node(NEW_UNLESS(cc, left, right, loc, keyword_loc, then_keyword_loc, end_keyword_loc));
26204#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))
26210 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
26212 value_expr(p, left);
26213 if (left && nd_type_p(left,
type)) {
26214 NODE *node = left, *second;
26215 while ((second = RNODE_AND(node)->nd_2nd) != 0 && nd_type_p(second,
type)) {
26218 RNODE_AND(node)->nd_2nd = NEW_AND_OR(
type, second, right, loc, op_loc);
26219 nd_set_line(RNODE_AND(node)->nd_2nd, op_loc->beg_pos.lineno);
26220 left->nd_loc.end_pos = loc->end_pos;
26223 op = NEW_AND_OR(
type, left, right, loc, op_loc);
26224 nd_set_line(op, op_loc->beg_pos.lineno);
26233 if (nd_type_p(node, NODE_BLOCK_PASS)) {
26234 compile_error(p,
"block argument should not be given");
26242 no_blockarg(p, node);
26243 if (nd_type_p(node, NODE_LIST) && !RNODE_LIST(node)->nd_next) {
26244 node = RNODE_LIST(node)->nd_head;
26253 switch (nd_type(node)) {
26255 RNODE_INTEGER(node)->minus = TRUE;
26258 RNODE_FLOAT(node)->minus = TRUE;
26260 case NODE_RATIONAL:
26261 RNODE_RATIONAL(node)->minus = TRUE;
26263 case NODE_IMAGINARY:
26264 RNODE_IMAGINARY(node)->minus = TRUE;
26267 node->nd_loc = *loc;
26275 if (!node1)
return (
NODE *)node2;
26276 node2->nd_head = node1;
26277 nd_set_first_lineno(node2, nd_first_lineno(node1));
26278 nd_set_first_column(node2, nd_first_column(node1));
26279 return (
NODE *)node2;
26287 if (args->pre_args_num)
return false;
26288 if (args->post_args_num)
return false;
26289 if (args->rest_arg)
return false;
26290 if (args->opt_args)
return false;
26291 if (args->block_arg)
return false;
26292 if (args->kw_args)
return false;
26293 if (args->kw_rest_arg)
return false;
26302 if (args->forwarding) {
26304 yyerror1(&RNODE(tail)->nd_loc,
"... after rest argument");
26307 rest_arg = idFWD_REST;
26310 args->pre_args_num = pre_args ? pre_args->nd_plen : 0;
26311 args->pre_init = pre_args ? pre_args->nd_next : 0;
26313 args->post_args_num = post_args ? post_args->nd_plen : 0;
26314 args->post_init = post_args ? post_args->nd_next : 0;
26315 args->first_post_arg = post_args ? post_args->nd_pid : 0;
26317 args->rest_arg = rest_arg;
26319 args->opt_args = opt_args;
26321 nd_set_loc(RNODE(tail), loc);
26331 if (p->error_p)
return node;
26333 if (block == idNil) {
26335 args->no_blockarg = TRUE;
26337 args->block_arg = block;
26338 args->kw_args = kw_args;
26347 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
26348 struct vtable *vtargs = p->lvtbl->args;
26351 if (block) block = vtargs->tbl[vtargs->pos-1];
26352 vtable_pop(vtargs, !!block + !!kw_rest_arg);
26353 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
26355 if (!NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body)))
26357 --required_kw_vars;
26358 kwn = kwn->nd_next;
26361 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
26362 ID vid = get_nd_vid(p, kwn->nd_body);
26363 if (NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body))) {
26364 *required_kw_vars++ = vid;
26371 arg_var(p, kw_bits);
26372 if (kw_rest_arg) arg_var(p, kw_rest_arg);
26373 if (block) arg_var(p, block);
26375 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
26377 else if (kw_rest_arg == idNil) {
26378 args->no_kwarg = 1;
26380 else if (kw_rest_arg) {
26381 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
26390 if (max_numparam > NO_PARAM || it_id) {
26392 YYLTYPE loc = RUBY_INIT_YYLLOC();
26393 args = new_empty_args_tail(p, 0);
26394 nd_set_loc(RNODE(args), &loc);
26396 args->nd_ainfo.pre_args_num = it_id ? 1 : max_numparam;
26404 RNODE_ARYPTN(aryptn)->nd_pconst = constant;
26407 NODE *pre_args = NEW_LIST(pre_arg, loc);
26408 if (RNODE_ARYPTN(aryptn)->pre_args) {
26409 RNODE_ARYPTN(aryptn)->pre_args = list_concat(pre_args, RNODE_ARYPTN(aryptn)->pre_args);
26412 RNODE_ARYPTN(aryptn)->pre_args = pre_args;
26422 rest_arg = rest_arg ? rest_arg : NODE_SPECIAL_NO_NAME_REST;
26427 NODE *node = NEW_ARYPTN(pre_args, rest_arg, post_args, loc);
26435 RNODE_FNDPTN(fndptn)->nd_pconst = constant;
26443 pre_rest_arg = pre_rest_arg ? pre_rest_arg : NODE_SPECIAL_NO_NAME_REST;
26444 post_rest_arg = post_rest_arg ? post_rest_arg : NODE_SPECIAL_NO_NAME_REST;
26445 NODE *node = NEW_FNDPTN(pre_rest_arg, args, post_rest_arg, loc);
26453 RNODE_HSHPTN(hshptn)->nd_pconst = constant;
26460 NODE *node, *kw_rest_arg_node;
26462 if (kw_rest_arg == idNil) {
26463 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
26465 else if (kw_rest_arg) {
26466 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
26469 kw_rest_arg_node = NULL;
26472 node = NEW_HSHPTN(0, kw_args, kw_rest_arg_node, loc);
26481 return NEW_SYM(STR_NEW0(), loc);
26484 switch (nd_type(node)) {
26486 nd_set_type(node, NODE_DSYM);
26487 nd_set_loc(node, loc);
26490 node = str_to_sym_node(p, node, loc);
26493 node = NEW_DSYM(0, 1, NEW_LIST(node, loc), loc);
26500nd_type_st_key_enable_p(
NODE *node)
26502 switch (nd_type(node)) {
26505 case NODE_RATIONAL:
26506 case NODE_IMAGINARY:
26512 case NODE_ENCODING:
26522 switch (nd_type(node)) {
26524 return rb_node_str_string_val(node);
26526 return rb_node_integer_literal_val(node);
26528 return rb_node_float_literal_val(node);
26529 case NODE_RATIONAL:
26530 return rb_node_rational_literal_val(node);
26531 case NODE_IMAGINARY:
26532 return rb_node_imaginary_literal_val(node);
26534 return rb_node_sym_string_val(node);
26536 return rb_node_regx_string_val(node);
26538 return rb_node_line_lineno_val(node);
26539 case NODE_ENCODING:
26540 return rb_node_encoding_val(node);
26542 return rb_node_file_path_val(node);
26544 rb_bug(
"unexpected node: %s", ruby_node_name(nd_type(node)));
26553 p->warn_duplicate_keys_table = st_init_table_with_size(&literal_type, RNODE_LIST(hash)->as.nd_alen / 2);
26554 while (hash && RNODE_LIST(hash)->nd_next) {
26555 NODE *head = RNODE_LIST(hash)->nd_head;
26556 NODE *value = RNODE_LIST(hash)->nd_next;
26557 NODE *next = RNODE_LIST(value)->nd_next;
26566 if (nd_type_st_key_enable_p(head)) {
26567 key = (st_data_t)head;
26569 if (st_delete(p->warn_duplicate_keys_table, &key, &data)) {
26570 rb_warn2L(nd_line((
NODE *)data),
26571 "key %+"PRIsWARN
" is duplicated and overwritten on line %d",
26572 nd_value(p, head), WARN_I(nd_line(head)));
26574 st_insert(p->warn_duplicate_keys_table, (st_data_t)key, (st_data_t)hash);
26578 st_free_table(p->warn_duplicate_keys_table);
26579 p->warn_duplicate_keys_table = NULL;
26585 if (hash) warn_duplicate_keys(p, hash);
26586 return NEW_HASH(hash, loc);
26592 if (is_private_local_id(p,
id)) {
26595 if (st_is_member(p->pvtbl,
id)) {
26596 yyerror1(loc,
"duplicated variable name");
26598 else if (p->ctxt.in_alt_pattern &&
id) {
26599 yyerror1(loc,
"variable capture in alternative pattern");
26602 p->ctxt.capture_in_pattern = 1;
26603 st_insert(p->pvtbl, (st_data_t)
id, 0);
26611 p->pktbl = st_init_numtable();
26613 else if (st_is_member(p->pktbl, key)) {
26614 yyerror1(loc,
"duplicated key name");
26617 st_insert(p->pktbl, (st_data_t)key, 0);
26623 return NEW_HASH(hash, loc);
26632 ID vid = get_nd_vid(p, lhs);
26633 YYLTYPE lhs_loc = lhs->nd_loc;
26635 set_nd_value(p, lhs, rhs);
26636 nd_set_loc(lhs, loc);
26637 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
26639 else if (op == tANDOP) {
26640 set_nd_value(p, lhs, rhs);
26641 nd_set_loc(lhs, loc);
26642 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
26646 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
26647 set_nd_value(p, asgn, rhs);
26648 nd_set_loc(asgn, loc);
26652 asgn = NEW_ERROR(loc);
26664 aryset_check(p, args);
26665 args = make_list(args, args_loc);
26666 asgn = NEW_OP_ASGN1(ary, op, args, rhs, loc, call_operator_loc, opening_loc, closing_loc, binary_operator_loc);
26678 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc, call_operator_loc, message_loc, binary_operator_loc);
26689 asgn = NEW_OP_CDECL(lhs, op, rhs, ctxt.shareable_constant_value, loc);
26692 asgn = NEW_ERROR(loc);
26701 if (p->ctxt.in_def) {
26703 yyerror1(loc,
"dynamic constant assignment");
26705 set_value(assign_error(p,
"dynamic constant assignment", p->s_lvalue));
26708 return NEW_CDECL(0, 0, (path), p->ctxt.shareable_constant_value, loc);
26715 a = dispatch2(assign_error, ERR_MESG(), a);
26724 NODE *result = head;
26726 NODE *tmp = rescue_else ? rescue_else : rescue;
26727 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
26729 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
26730 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
26733 result = NEW_ENSURE(result, ensure, loc);
26735 fixpos(result, head);
26744 if (!local->used)
return;
26745 cnt = local->used->pos;
26746 if (cnt != local->vars->pos) {
26747 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
26750 ID *v = local->vars->tbl;
26751 ID *u = local->used->tbl;
26752 for (
int i = 0; i < cnt; ++i) {
26753 if (!v[i] || (u[i] & LVAR_USED))
continue;
26754 if (is_private_local_id(p, v[i]))
continue;
26755 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
26764 int inherits_dvars = toplevel_scope && compile_for_eval;
26768 local->prev = p->lvtbl;
26769 local->args = vtable_alloc(0);
26770 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
26772 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
26773 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
26775 local->numparam.outer = 0;
26776 local->numparam.inner = 0;
26777 local->numparam.current = 0;
26779 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
26781# if WARN_PAST_SCOPE
26792 while (!DVARS_TERMINAL_P(table)) {
26793 struct vtable *cur_table = table;
26794 table = cur_table->prev;
26795 vtable_free(cur_table);
26802 vtable_chain_free(p, local->used);
26804# if WARN_PAST_SCOPE
26805 vtable_chain_free(p, local->past);
26808 vtable_chain_free(p, local->args);
26809 vtable_chain_free(p, local->vars);
26811 ruby_xfree_sized(local,
sizeof(
struct local_vars));
26818 if (p->lvtbl->used) {
26819 warn_unused_var(p, p->lvtbl);
26822 local_free(p, p->lvtbl);
26832 int cnt_args = vtable_size(p->lvtbl->args);
26833 int cnt_vars = vtable_size(p->lvtbl->vars);
26834 int cnt = cnt_args + cnt_vars;
26838 if (cnt <= 0)
return 0;
26839 tbl = rb_ast_new_local_table(p->ast, cnt);
26840 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
26842 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
26843 ID id = p->lvtbl->vars->tbl[i];
26844 if (!vtable_included(p->lvtbl->args,
id)) {
26845 tbl->ids[j++] = id;
26849 tbl = rb_ast_resize_latest_local_table(p->ast, j);
26858 if (!NUMPARAM_ID_P(
id))
return;
26859 compile_error(p,
"_%d is reserved for numbered parameter",
26860 NUMPARAM_ID_TO_IDX(
id));
26866 numparam_name(p,
id);
26867 vtable_add(p->lvtbl->args,
id);
26873 numparam_name(p,
id);
26874 vtable_add(p->lvtbl->vars,
id);
26875 if (p->lvtbl->used) {
26876 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
26884 return rb_local_defined(
id, iseq);
26891 struct vtable *vars, *args, *used;
26893 vars = p->lvtbl->vars;
26894 args = p->lvtbl->args;
26895 used = p->lvtbl->used;
26897 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26900 if (used) used = used->prev;
26903 if (vars && vars->prev == DVARS_INHERIT) {
26904 return rb_parser_local_defined(p,
id, p->parent_iseq);
26906 else if (vtable_included(args,
id)) {
26910 int i = vtable_included(vars,
id);
26911 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
26919 return local_id_ref(p,
id, NULL);
26925 if (local_id(p, idFWD_ALL))
return TRUE;
26926 compile_error(p,
"unexpected ...");
26933 arg_var(p, idFWD_REST);
26934 arg_var(p, idFWD_KWREST);
26935 arg_var(p, idFWD_BLOCK);
26936 arg_var(p, idFWD_ALL);
26942 bool conflict =
false;
26944 struct vtable *vars, *args;
26946 vars = p->lvtbl->vars;
26947 args = p->lvtbl->args;
26949 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26950 conflict |= (vtable_included(args, arg) && !(all && vtable_included(args, all)));
26955 bool found =
false;
26956 if (vars && vars->prev == DVARS_INHERIT && !found) {
26957 found = (rb_parser_local_defined(p, arg, p->parent_iseq) &&
26958 !(all && rb_parser_local_defined(p, all, p->parent_iseq)));
26961 found = (vtable_included(args, arg) &&
26962 !(all && vtable_included(args, all)));
26966 compile_error(p,
"no anonymous %s parameter", var);
26968 else if (conflict) {
26969 compile_error(p,
"anonymous %s parameter is also used within block", var);
26976 NODE *rest = NEW_LVAR(idFWD_REST, loc);
26977 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
26979 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc, &NULL_LOC);
26980 block->forwarding = TRUE;
26981 args = arg_append(p, args, new_hash(p, kwrest, loc), argsloc);
26982 return arg_blk_pass(args, block);
26989 NODE *inner = local->numparam.inner;
26990 if (!local->numparam.outer) {
26991 local->numparam.outer = local->numparam.current;
26993 local->numparam.inner = 0;
26994 local->numparam.current = 0;
27005 local->numparam.inner = prev_inner;
27007 else if (local->numparam.current) {
27009 local->numparam.inner = local->numparam.current;
27011 if (p->max_numparam > NO_PARAM) {
27013 local->numparam.current = local->numparam.outer;
27014 local->numparam.outer = 0;
27018 local->numparam.current = 0;
27023static const struct vtable *
27026 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
27027 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
27028 if (p->lvtbl->used) {
27029 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
27031 return p->lvtbl->args;
27037 struct vtable *tmp = *vtblp;
27038 *vtblp = tmp->prev;
27039# if WARN_PAST_SCOPE
27040 if (p->past_scope_enabled) {
27041 tmp->prev = p->lvtbl->past;
27042 p->lvtbl->past = tmp;
27054 if ((tmp = p->lvtbl->used) != 0) {
27055 warn_unused_var(p, p->lvtbl);
27056 p->lvtbl->used = p->lvtbl->used->prev;
27059 dyna_pop_vtable(p, &p->lvtbl->args);
27060 dyna_pop_vtable(p, &p->lvtbl->vars);
27066 while (p->lvtbl->args != lvargs) {
27068 if (!p->lvtbl->args) {
27070 ruby_xfree_sized(p->lvtbl,
sizeof(*p->lvtbl));
27080 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
27087 struct vtable *vars, *args, *used;
27090 args = p->lvtbl->args;
27091 vars = p->lvtbl->vars;
27092 used = p->lvtbl->used;
27094 while (!DVARS_TERMINAL_P(vars)) {
27095 if (vtable_included(args,
id)) {
27098 if ((i = vtable_included(vars,
id)) != 0) {
27099 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
27104 if (!vidrefp) used = 0;
27105 if (used) used = used->prev;
27108 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
27109 return rb_dvar_defined(
id, p->parent_iseq);
27119 return dvar_defined_ref(p,
id, NULL);
27125 return (vtable_included(p->lvtbl->args,
id) ||
27126 vtable_included(p->lvtbl->vars,
id));
27133 "regexp encoding option '%c' differs from source encoding '%s'",
27134 c, rb_enc_name(rb_parser_str_get_encoding(str)));
27141 int idx = rb_enc_find_index(name);
27143 rb_bug(
"unknown encoding name: %s", name);
27146 return rb_enc_from_index(idx);
27155 case ENC_ASCII8BIT:
27156 enc = rb_ascii8bit_encoding();
27159 enc = find_enc(p,
"EUC-JP");
27161 case ENC_Windows_31J:
27162 enc = find_enc(p,
"Windows-31J");
27165 enc = rb_utf8_encoding();
27178 int c = RE_OPTION_ENCODING_IDX(options);
27184 char_to_option_kcode(c, &opt, &idx);
27185 enc = kcode_to_enc(p, idx);
27186 if (enc != rb_parser_str_get_encoding(str) &&
27187 !rb_parser_is_ascii_string(p, str)) {
27190 rb_parser_string_set_encoding(str, enc);
27192 else if (RE_OPTION_ENCODING_NONE(options)) {
27193 if (!PARSER_ENCODING_IS_ASCII8BIT(p, str) &&
27194 !rb_parser_is_ascii_string(p, str)) {
27198 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
27200 else if (rb_is_usascii_enc(p->enc)) {
27201 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
27213 int c = rb_reg_fragment_setenc(p, str, options);
27214 if (c) reg_fragment_enc_error(p, str, c);
27217#ifndef UNIVERSAL_PARSER
27223 rb_parser_assignable_func assignable;
27227reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
27228 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
27233 long len = name_end - name;
27234 const char *s = (
const char *)name;
27236 return rb_reg_named_capture_assign_iter_impl(p, s,
len, enc, &arg->succ_block, arg->loc, arg->assignable);
27240reg_named_capture_assign(
struct parser_params* p,
VALUE regexp,
const YYLTYPE *loc, rb_parser_assignable_func assignable)
27245 arg.enc = rb_enc_get(regexp);
27246 arg.succ_block = 0;
27248 arg.assignable = assignable;
27249 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
27251 if (!arg.succ_block)
return 0;
27252 return RNODE_BLOCK(arg.succ_block)->nd_next;
27260 return assignable(p,
id, val, loc);
27264rb_reg_named_capture_assign_iter_impl(
struct parser_params *p,
const char *s,
long len,
27270 if (!
len)
return ST_CONTINUE;
27271 if (!VALID_SYMNAME_P(s,
len, enc, ID_LOCAL))
27272 return ST_CONTINUE;
27274 var = intern_cstr(s,
len, enc);
27275 if (
len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)
len)) {
27276 if (!lvar_defined(p, var))
return ST_CONTINUE;
27278 node = node_assign(p, assignable(p, var, 0, loc), NEW_SYM(rb_id2str(var), loc), NO_LEX_CTXT, loc);
27279 succ = *succ_block;
27280 if (!succ) succ = NEW_ERROR(loc);
27281 succ = block_append(p, succ, node);
27282 *succ_block = succ;
27283 return ST_CONTINUE;
27291 reg_fragment_setenc(p, str, options);
27292 str2 = rb_str_new_parser_string(str);
27293 return rb_parser_reg_compile(p, str2, options);
27300 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
27310 err = rb_errinfo();
27311 re = parser_reg_compile(p, str, options);
27313 VALUE m = rb_attr_get(rb_errinfo(), idMesg);
27314 rb_set_errinfo(err);
27315 compile_error(p,
"%"PRIsVALUE, m);
27323rb_ruby_parser_set_options(
struct parser_params *p,
int print,
int loop,
int chomp,
int split)
27325 p->do_print = print;
27327 p->do_chomp = chomp;
27328 p->do_split = split;
27334 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
27335 const YYLTYPE *
const LOC = &default_location;
27338 NODE *print = (
NODE *)NEW_FCALL(rb_intern(
"print"),
27339 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
27341 node = block_append(p, node, print);
27345 NODE *irs = NEW_LIST(NEW_GVAR(rb_intern(
"$/"), LOC), LOC);
27348 ID ifs = rb_intern(
"$;");
27349 ID fields = rb_intern(
"$F");
27350 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
27351 NODE *split = NEW_GASGN(fields,
27352 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
27353 rb_intern(
"split"), args, LOC),
27355 node = block_append(p, split, node);
27359 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
27360 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
27363 node = NEW_WHILE((
NODE *)NEW_FCALL(idGets, irs, LOC), node, 1, LOC, &NULL_LOC, &NULL_LOC);
27380 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
27388 p->command_start = TRUE;
27389 p->ruby_sourcefile_string =
Qnil;
27390 p->lex.lpar_beg = -1;
27391 string_buffer_init(p);
27393 p->delayed.token = NULL;
27394 p->frozen_string_literal = -1;
27395 rb_source_hash_init(&p->source_hash);
27397 p->error_buffer =
Qfalse;
27398 p->end_expect_token_locations = NULL;
27403 p->parsing_thread =
Qnil;
27405 p->s_lvalue =
Qnil;
27408 p->debug_buffer =
Qnil;
27409 p->debug_output = rb_ractor_stdout();
27410 p->enc = rb_utf8_encoding();
27415#define rb_ruby_parser_mark ripper_parser_mark
27416#define rb_ruby_parser_free ripper_parser_free
27417#define rb_ruby_parser_memsize ripper_parser_memsize
27421rb_ruby_parser_mark(
void *ptr)
27425 rb_gc_mark(p->ruby_sourcefile_string);
27427 rb_gc_mark(p->error_buffer);
27429 rb_gc_mark(p->value);
27430 rb_gc_mark(p->result);
27431 rb_gc_mark(p->parsing_thread);
27432 rb_gc_mark(p->s_value);
27433 rb_gc_mark(p->s_lvalue);
27434 rb_gc_mark(p->s_value_stack);
27436 rb_gc_mark(p->debug_buffer);
27437 rb_gc_mark(p->debug_output);
27441rb_ruby_parser_free(
void *ptr)
27447 rb_ast_free(p->ast);
27450 if (p->warn_duplicate_keys_table) {
27451 st_free_table(p->warn_duplicate_keys_table);
27456 rb_parser_ary_free(p, p->tokens);
27461 ruby_xfree_sized(p->tokenbuf, p->toksiz);
27464 for (local = p->lvtbl; local; local = prev) {
27465 prev = local->prev;
27466 local_free(p, local);
27471 while ((ptinfo = p->token_info) != 0) {
27472 p->token_info = ptinfo->next;
27476 string_buffer_free(p);
27479 st_free_table(p->pvtbl);
27482 if (CASE_LABELS_ENABLED_P(p->case_labels)) {
27483 st_free_table(p->case_labels);
27486 xfree(p->lex.strterm);
27487 p->lex.strterm = 0;
27493rb_ruby_parser_memsize(
const void *ptr)
27497 size_t size =
sizeof(*p);
27500 for (local = p->lvtbl; local; local = local->prev) {
27501 size +=
sizeof(*local);
27502 if (local->vars) size += local->vars->capa *
sizeof(
ID);
27508#undef rb_reserved_word
27511rb_reserved_word(
const char *str,
unsigned int len)
27513 return reserved_word(str,
len);
27516#ifdef UNIVERSAL_PARSER
27518rb_ruby_parser_allocate(
const rb_parser_config_t *config)
27522 p->config = config;
27527rb_ruby_parser_new(
const rb_parser_config_t *config)
27530 rb_parser_t *p = rb_ruby_parser_allocate(config);
27531 parser_initialize(p);
27536rb_ruby_parser_allocate(
void)
27544rb_ruby_parser_new(
void)
27548 parser_initialize(p);
27557 p->parent_iseq = base;
27564 p->debug_lines = rb_parser_ary_new_capa_for_script_line(p, 10);
27570 p->error_tolerant = 1;
27576 p->keep_tokens = 1;
27577 p->tokens = rb_parser_ary_new_capa_for_ast_token(p, 10);
27589 return p->ruby__end__seen;
27593rb_ruby_parser_set_yydebug(
rb_parser_t *p,
int flag)
27622 return p->debug_output;
27628 p->debug_output = output;
27634 return p->parsing_thread;
27640 p->parsing_thread = parsing_thread;
27644rb_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)
27646 p->lex.gets = gets;
27647 p->lex.input = input;
27649 p->ruby_sourcefile_string = sourcefile_string;
27650 p->ruby_sourcefile = sourcefile;
27651 p->ruby_sourceline = sourceline;
27667rb_ruby_parser_ruby_sourcefile_string(
rb_parser_t *p)
27669 return p->ruby_sourcefile_string;
27675 return p->ruby_sourceline;
27681 return p->lex.state;
27688 p->ast = rb_ast_new();
27689 ripper_yyparse((
void*)p);
27690 rb_ast_free(p->ast);
27693 p->eval_tree_begin = 0;
27699 return dedent_string(p,
string, width);
27705 return p->lex.input != 0;
27711 parser_initialize(p);
27717 return p->lex.ptok - p->lex.pbeg;
27723 return p->lex.pcur - p->lex.ptok;
27729 return p->lex.lastline;
27733rb_ruby_ripper_lex_state_name(
struct parser_params *p,
int state)
27735 return rb_parser_lex_state_name(p, (
enum lex_state_e)state);
27738#ifdef UNIVERSAL_PARSER
27740rb_ripper_parser_params_allocate(
const rb_parser_config_t *config)
27743 p->config = config;
27749rb_ruby_ripper_parser_allocate(
void)
27757rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
27760 VALUE mesg = p->debug_buffer;
27764 rb_str_vcatf(mesg, fmt, ap);
27766 if (char_at_end(p, mesg, 0) ==
'\n') {
27767 rb_io_write(p->debug_output, mesg);
27768 p->debug_buffer =
Qnil;
27776 int lineno, column;
27779 lineno = loc->end_pos.lineno;
27780 column = loc->end_pos.column;
27783 lineno = p->ruby_sourceline;
27787 rb_io_flush(p->debug_output);
27791 rb_syntax_error_append(p->error_buffer,
27792 p->ruby_sourcefile_string,
27799count_char(
const char *str,
int c)
27802 while (str[n] == c) ++n;
27813rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
27815 if (*yystr ==
'"') {
27816 size_t yyn = 0, bquote = 0;
27817 const char *yyp = yystr;
27823 bquote = count_char(yyp+1,
'\'') + 1;
27824 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
27830 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
27831 if (yyres) memcpy(yyres + yyn, yyp, bquote);
27837 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
27838 if (yyres) memcpy(yyres + yyn, yyp, 3);
27843 goto do_not_strip_quotes;
27847 goto do_not_strip_quotes;
27850 if (*++yyp !=
'\\')
27851 goto do_not_strip_quotes;
27866 do_not_strip_quotes: ;
27869 if (!yyres)
return strlen(yystr);
27871 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
27876#define validate(x) (void)(x)
27905 return rb_funcall(p->value, mid, 3, a, b, c);
27915 return rb_funcall(p->value, mid, 4, a, b, c, d);
27926 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
27939 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.