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, 6627, 6632, 6637, 6644,
3663 6650, 6655, 6668, 6668, 6668, 6669, 6672, 6673, 6674, 6677,
3664 6678, 6681, 6682, 6685, 6686, 6689, 6692, 6695, 6698, 6699,
3665 6702, 6710, 6717, 6718, 6722
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 if (RNODE_LIST(assocs)->nd_head) {
18226 NODE *n = RNODE_LIST(tail)->nd_next;
18227 if (!RNODE_LIST(tail)->nd_head && nd_type_p(n, NODE_LIST) &&
18228 nd_type_p((n = RNODE_LIST(n)->nd_head), NODE_HASH)) {
18230 tail = RNODE_HASH(n)->nd_head;
18234 assocs = list_concat(assocs, tail);
18237 (yyval.node) = assocs;
18240#line 18241 "parse.c"
18244#line 6628 "parse.y"
18246 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
18249#line 18250 "parse.c"
18253#line 6633 "parse.y"
18255 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
18258#line 18259 "parse.c"
18262#line 6638 "parse.y"
18264 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
18265 if (!val) val = NEW_ERROR(&(yyloc));
18266 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
18269#line 18270 "parse.c"
18273#line 6645 "parse.y"
18275 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
18276 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
18279#line 18280 "parse.c"
18283#line 6651 "parse.y"
18285 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
18288#line 18289 "parse.c"
18292#line 6656 "parse.y"
18294 forwarding_arg_check(p, idFWD_KWREST, idFWD_ALL,
"keyword rest");
18295 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)),
18296 NEW_LVAR(idFWD_KWREST, &(yyloc)));
18299#line 18300 "parse.c"
18303#line 6703 "parse.y"
18307 if (p->ctxt.in_defined) {
18308 p->ctxt.has_trailing_semicolon = 1;
18311#line 18312 "parse.c"
18315#line 6711 "parse.y"
18317 (yyloc).end_pos = (yyloc).beg_pos;
18320#line 18321 "parse.c"
18324#line 6718 "parse.y"
18326#line 18327 "parse.c"
18330#line 6722 "parse.y"
18335#line 18336 "parse.c"
18339#line 18340 "parse.c"
18354 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc, p);
18356 YYPOPSTACK (yylen);
18358#line 2665 "parse.y"
18359 {after_reduce(yylen, p);}
18360#line 18361 "parse.c"
18371 const int yylhs = yyr1[yyn] - YYNTOKENS;
18372 const int yyi = yypgoto[yylhs] + *yyssp;
18373 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
18375 : yydefgoto[yylhs]);
18387 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
18394 = {yyssp, yytoken, &yylloc};
18395 char const *yymsgp = YY_(
"syntax error");
18396 int yysyntax_error_status;
18397 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
18398 if (yysyntax_error_status == 0)
18400 else if (yysyntax_error_status == -1)
18402 if (yymsg != yymsgbuf)
18403 YYSTACK_FREE (yymsg);
18404 yymsg = YY_CAST (
char *,
18405 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
18408 yysyntax_error_status
18409 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
18415 yymsg_alloc =
sizeof yymsgbuf;
18416 yysyntax_error_status = YYENOMEM;
18419 yyerror (&yylloc, p, yymsgp);
18420 if (yysyntax_error_status == YYENOMEM)
18425 yyerror_range[1] = yylloc;
18426 if (yyerrstatus == 3)
18431 if (yychar <= END_OF_INPUT)
18434 if (yychar == END_OF_INPUT)
18439 yydestruct (
"Error: discarding",
18440 yytoken, &yylval, &yylloc, p);
18462 YYPOPSTACK (yylen);
18464#line 2667 "parse.y"
18465 {after_pop_stack(yylen, p);}
18466#line 18467 "parse.c"
18469 YY_STACK_PRINT (yyss, yyssp, p);
18483 yyn = yypact[yystate];
18484 if (!yypact_value_is_default (yyn))
18486 yyn += YYSYMBOL_YYerror;
18487 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
18489 yyn = yytable[yyn];
18499 yyerror_range[1] = *yylsp;
18500 yydestruct (
"Error: popping",
18501 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
18504#line 2667 "parse.y"
18505 {after_pop_stack(1, p);}
18506#line 18507 "parse.c"
18509 YY_STACK_PRINT (yyss, yyssp, p);
18512 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
18514 YY_IGNORE_MAYBE_UNINITIALIZED_END
18516 yyerror_range[2] = yylloc;
18518 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
18521 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp, p);
18523#line 2666 "parse.y"
18524 {after_shift_error_token(p);}
18525#line 18526 "parse.c"
18552 yyerror (&yylloc, p, YY_(
"memory exhausted"));
18561 if (yychar != YYEMPTY)
18565 yytoken = YYTRANSLATE (yychar);
18566 yydestruct (
"Cleanup: discarding lookahead",
18567 yytoken, &yylval, &yylloc, p);
18571 YYPOPSTACK (yylen);
18572 YY_STACK_PRINT (yyss, yyssp, p);
18573 while (yyssp != yyss)
18575 yydestruct (
"Cleanup: popping",
18576 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
18581 YYSTACK_FREE (yyss);
18583 if (yymsg != yymsgbuf)
18584 YYSTACK_FREE (yymsg);
18588#line 6727 "parse.y"
18593# define yylval (*p->lval)
18601#define set_parser_s_value(x) (ifdef_ripper(p->s_value = (x), (void)0))
18603# define set_yylval_node(x) { \
18604 YYLTYPE _cur_loc; \
18605 rb_parser_set_location(p, &_cur_loc); \
18606 yylval.node = (x); \
18607 set_parser_s_value(STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)); \
18609# define set_yylval_str(x) \
18611 set_yylval_node(NEW_STR(x, &_cur_loc)); \
18612 set_parser_s_value(rb_str_new_mutable_parser_string(x)); \
18614# define set_yylval_num(x) { \
18615 yylval.num = (x); \
18616 set_parser_s_value(x); \
18618# define set_yylval_id(x) (yylval.id = (x))
18619# define set_yylval_name(x) { \
18620 (yylval.id = (x)); \
18621 set_parser_s_value(ID2SYM(x)); \
18623# define yylval_id() (yylval.id)
18625#define set_yylval_noname() set_yylval_id(keyword_nil)
18626#define has_delayed_token(p) (p->delayed.token != NULL)
18629#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
18630#define dispatch_scan_event(p, t) parser_dispatch_scan_event(p, t, __LINE__)
18635 const char *
const pcur = p->lex.pcur;
18636 const char *
const ptok = p->lex.ptok;
18637 if (p->keep_tokens && (pcur < ptok)) {
18638 rb_bug(
"lex.pcur < lex.ptok. (line: %d) %"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"",
18639 p->ruby_sourceline, ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur);
18641 return pcur > ptok;
18648 case '"':
return "\\\"";
18649 case '\\':
return "\\\\";
18650 case '\0':
return "\\0";
18651 case '\n':
return "\\n";
18652 case '\r':
return "\\r";
18653 case '\t':
return "\\t";
18654 case '\f':
return "\\f";
18655 case '\013':
return "\\v";
18656 case '\010':
return "\\b";
18657 case '\007':
return "\\a";
18658 case '\033':
return "\\e";
18659 case '\x7f':
return "\\c?";
18668 const char *ptr = str->ptr;
18669 const char *pend = ptr + str->len;
18670 const char *prev = ptr;
18671 char charbuf[5] = {
'\\',
'x', 0, 0, 0};
18674 while (ptr < pend) {
18677 int n = rb_enc_precise_mbclen(ptr, pend, enc);
18679 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18680 n = rb_enc_mbminlen(enc);
18681 if (pend < ptr + n)
18682 n = (int)(pend - ptr);
18684 c = *ptr & 0xf0 >> 4;
18685 charbuf[2] = (c < 10) ?
'0' + c :
'A' + c - 10;
18687 charbuf[3] = (c < 10) ?
'0' + c :
'A' + c - 10;
18688 parser_str_cat(result, charbuf, 4);
18694 c = rb_enc_mbc_to_codepoint(ptr, pend, enc);
18696 cc = escaped_char(c);
18698 if (ptr - n > prev) parser_str_cat(result, prev, ptr - n - prev);
18699 parser_str_cat_cstr(result, cc);
18702 else if (rb_enc_isascii(c, enc) &&
ISPRINT(c)) {
18705 if (ptr - n > prev) {
18706 parser_str_cat(result, prev, ptr - n - prev);
18709 parser_str_cat(result, prev, ptr - prev);
18713 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18722 token->id = p->token_id;
18723 token->type_name = parser_token2char(p, t);
18725 token->loc.beg_pos = p->yylloc->beg_pos;
18726 token->loc.end_pos = p->yylloc->end_pos;
18727 rb_parser_ary_push_ast_token(p, p->tokens, token);
18732 rb_parser_printf(p,
"Append tokens (line: %d) [%d, :%s, \"%s\", [%d, %d, %d, %d]]\n",
18733 line, token->id, token->type_name, str_escaped->ptr,
18734 token->loc.beg_pos.lineno, token->loc.beg_pos.column,
18735 token->loc.end_pos.lineno, token->loc.end_pos.column);
18736 rb_parser_string_free(p, str_escaped);
18741parser_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t,
int line)
18743 debug_token_line(p,
"parser_dispatch_scan_event", line);
18745 if (!parser_has_token(p))
return;
18747 RUBY_SET_YYLLOC(*p->yylloc);
18749 if (p->keep_tokens) {
18750 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pcur - p->lex.ptok, p->enc);
18751 parser_append_tokens(p, str, t, line);
18757#define dispatch_delayed_token(p, t) parser_dispatch_delayed_token(p, t, __LINE__)
18759parser_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t,
int line)
18761 debug_token_line(p,
"parser_dispatch_delayed_token", line);
18763 if (!has_delayed_token(p))
return;
18765 RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(*p->yylloc);
18767 if (p->keep_tokens) {
18769 parser_append_tokens(p, p->delayed.token, t, line);
18772 rb_parser_string_free(p, p->delayed.token);
18775 p->delayed.token = NULL;
18778#define literal_flush(p, ptr) ((void)(ptr))
18783 if (p->lex.pcur < p->lex.ptok) rb_raise(
rb_eRuntimeError,
"lex.pcur < lex.ptok");
18784 return p->lex.pcur > p->lex.ptok;
18788ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
18790 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
18791 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
18792 RUBY_SET_YYLLOC(*p->yylloc);
18798ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
18800 if (!ripper_has_scan_event(p))
return;
18802 set_parser_s_value(ripper_scan_event_val(p, t));
18804#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
18807ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
18810 int saved_line = p->ruby_sourceline;
18811 const char *saved_tokp = p->lex.ptok;
18812 VALUE s_value, str;
18814 if (!has_delayed_token(p))
return;
18815 p->ruby_sourceline = p->delayed.beg_line;
18816 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
18817 str = rb_str_new_mutable_parser_string(p->delayed.token);
18818 rb_parser_string_free(p, p->delayed.token);
18819 s_value = ripper_dispatch1(p, ripper_token2eventid(t), str);
18820 set_parser_s_value(s_value);
18821 p->delayed.token = NULL;
18822 p->ruby_sourceline = saved_line;
18823 p->lex.ptok = saved_tokp;
18825#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
18831 return rb_enc_isalnum((
unsigned char)*ptr, enc) || *ptr ==
'_' || !
ISASCII(*ptr);
18837 const char *ptr = p->lex.pcur + at;
18838 if (lex_eol_ptr_n_p(p, ptr,
len-1))
return false;
18839 if (memcmp(ptr, str,
len))
return false;
18840 if (lex_eol_ptr_n_p(p, ptr,
len))
return true;
18841 switch (ptr[
len]) {
18842 case '!':
case '?':
return false;
18844 return !is_identchar(p, ptr+
len, p->lex.pend, p->enc);
18850 return !(p)->eofp && is_identchar(p, p->lex.pcur-1, p->lex.pend, p->enc);
18856 return ISASCII(*(p->lex.pcur-1));
18862 int column = 1, nonspc = 0, i;
18863 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
18864 if (*ptr ==
'\t') {
18865 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
18868 if (*ptr !=
' ' && *ptr !=
'\t') {
18873 ptinfo->beg = loc->beg_pos;
18874 ptinfo->indent = column;
18875 ptinfo->nonspc = nonspc;
18883 if (!p->token_info_enabled)
return;
18885 ptinfo->token = token;
18886 ptinfo->next = p->token_info;
18887 token_info_setup(ptinfo, p->lex.pbeg, loc);
18889 p->token_info = ptinfo;
18897 if (!ptinfo_beg)
return;
18900 token_info_warn(p, token, ptinfo_beg, 1, loc);
18902 p->token_info = ptinfo_beg->next;
18903 ruby_xfree_sized(ptinfo_beg,
sizeof(*ptinfo_beg));
18911 if (!ptinfo_beg)
return;
18912 p->token_info = ptinfo_beg->next;
18914 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
18915 ptinfo_beg->beg.column != beg_pos.column ||
18916 strcmp(ptinfo_beg->token, token)) {
18917 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
18918 beg_pos.lineno, beg_pos.column, token,
18919 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
18920 ptinfo_beg->token);
18923 ruby_xfree_sized(ptinfo_beg,
sizeof(*ptinfo_beg));
18929 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
18930 if (!p->token_info_enabled)
return;
18931 if (!ptinfo_beg)
return;
18932 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
18933 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
18934 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
18935 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
18936 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
18937 rb_warn3L(ptinfo_end->beg.lineno,
18938 "mismatched indentations at '%s' with '%s' at %d",
18939 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
18943parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
18945 int len = rb_enc_precise_mbclen(ptr, p->lex.pend, p->enc);
18947 compile_error(p,
"invalid multibyte char (%s)", rb_enc_name(p->enc));
18958 int lineno = p->ruby_sourceline;
18962 else if (yylloc->beg_pos.lineno == lineno) {
18963 str = p->lex.lastline;
18968 ruby_show_error_line(p, p->error_buffer, yylloc, lineno, str);
18978 yylloc = RUBY_SET_YYLLOC(current);
18980 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
18981 p->ruby_sourceline != yylloc->end_pos.lineno)) {
18985 parser_compile_error(p, yylloc,
"%s", msg);
18986 parser_show_error_line(p, yylloc);
18994 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
19001 const int max_line_margin = 30;
19002 const char *ptr, *ptr_end, *pt, *pb;
19003 const char *pre =
"", *post =
"", *pend;
19004 const char *code =
"", *caret =
"";
19006 const char *
const pbeg = PARSER_STRING_PTR(str);
19011 if (!yylloc)
return;
19012 pend = rb_parser_string_end(str);
19013 if (pend > pbeg && pend[-1] ==
'\n') {
19014 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
19018 if (lineno == yylloc->end_pos.lineno &&
19019 (pend - pbeg) > yylloc->end_pos.column) {
19020 pt = pbeg + yylloc->end_pos.column;
19023 ptr = ptr_end = pt;
19024 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
19025 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
19027 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
19028 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
19030 len = ptr_end - ptr;
19033 ptr = rb_enc_prev_char(pbeg, ptr, pt, rb_parser_str_get_encoding(str));
19034 if (ptr > pbeg) pre =
"...";
19036 if (ptr_end < pend) {
19037 ptr_end = rb_enc_prev_char(pt, ptr_end, pend, rb_parser_str_get_encoding(str));
19038 if (ptr_end < pend) post =
"...";
19042 if (lineno == yylloc->beg_pos.lineno) {
19043 pb += yylloc->beg_pos.column;
19044 if (pb > pt) pb = pt;
19046 if (pb < ptr) pb = ptr;
19047 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
19050 if (
RTEST(errbuf)) {
19051 mesg = rb_attr_get(errbuf, idMesg);
19052 if (char_at_end(p, mesg,
'\n') !=
'\n')
19056 mesg = rb_enc_str_new(0, 0, rb_parser_str_get_encoding(str));
19058 if (!errbuf && rb_stderr_tty_p()) {
19059#define CSI_BEGIN "\033["
19062 CSI_BEGIN
""CSI_SGR
"%s"
19063 CSI_BEGIN
"1"CSI_SGR
"%.*s"
19064 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
19065 CSI_BEGIN
";1"CSI_SGR
"%.*s"
19066 CSI_BEGIN
""CSI_SGR
"%s"
19069 (
int)(pb - ptr), ptr,
19070 (
int)(pt - pb), pb,
19071 (
int)(ptr_end - pt), pt,
19077 len = ptr_end - ptr;
19078 lim = pt < pend ? pt : pend;
19079 i = (int)(lim - ptr);
19085 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
19091 memset(p2,
'~', (lim - ptr));
19095 rb_str_catf(mesg,
"%s%.*s%s\n""%s%s\n",
19096 pre, (
int)
len, code, post,
19099 if (!errbuf) rb_write_error_str(mesg);
19106 const char *pcur = 0, *ptok = 0;
19107 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
19108 p->ruby_sourceline == yylloc->end_pos.lineno) {
19109 pcur = p->lex.pcur;
19110 ptok = p->lex.ptok;
19111 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
19112 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
19114 parser_yyerror0(p, msg);
19116 p->lex.ptok = ptok;
19117 p->lex.pcur = pcur;
19125 dispatch1(parse_error, STR_NEW2(msg));
19137vtable_size(
const struct vtable *tbl)
19139 if (!DVARS_TERMINAL_P(tbl)) {
19157 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
19162#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
19165vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
19170 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
19173 if (!DVARS_TERMINAL_P(tbl)) {
19175 ruby_xfree_sized(tbl->tbl, tbl->capa *
sizeof(
ID));
19177 ruby_xfree_sized(tbl,
sizeof(*tbl));
19180#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
19183vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
19188 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
19189 line, name, (
void *)tbl, rb_id2name(
id));
19192 if (DVARS_TERMINAL_P(tbl)) {
19193 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
19196 if (tbl->pos == tbl->capa) {
19197 tbl->capa = tbl->capa * 2;
19198 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
19200 tbl->tbl[tbl->pos++] = id;
19202#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
19205vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
19206 struct vtable *tbl,
int n)
19209 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
19210 line, name, (
void *)tbl, n);
19212 if (tbl->pos < n) {
19213 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
19218#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
19221vtable_included(
const struct vtable * tbl,
ID id)
19225 if (!DVARS_TERMINAL_P(tbl)) {
19226 for (i = 0; i < tbl->pos; i++) {
19227 if (tbl->tbl[i] ==
id) {
19240 return strcmp(p->ruby_sourcefile,
"-e") == 0;
19247yycompile0(
VALUE arg)
19254 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string) && !e_option_supplied(p)) {
19258 if (p->debug_lines) {
19259 p->ast->body.script_lines = p->debug_lines;
19263#define RUBY_DTRACE_PARSE_HOOK(name) \
19264 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
19265 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
19267 RUBY_DTRACE_PARSE_HOOK(BEGIN);
19269 RUBY_DTRACE_PARSE_HOOK(END);
19271 p->debug_lines = 0;
19273 xfree(p->lex.strterm);
19274 p->lex.strterm = 0;
19275 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
19276 if (n || p->error_p) {
19277 VALUE mesg = p->error_buffer;
19279 mesg = syntax_error_new();
19281 if (!p->error_tolerant) {
19282 rb_set_errinfo(mesg);
19286 tree = p->eval_tree;
19288 tree = NEW_NIL(&NULL_LOC);
19293 NODE *body = parser_append_options(p, RNODE_SCOPE(tree)->nd_body);
19294 prelude = block_append(p, p->eval_tree_begin, body);
19295 RNODE_SCOPE(tree)->nd_body = prelude;
19296 p->ast->body.frozen_string_literal = p->frozen_string_literal;
19297 p->ast->body.coverage_enabled = cov;
19298 if (p->keep_tokens) {
19299 p->ast->node_buffer->tokens = tokens;
19303 p->ast->body.root = tree;
19304 p->ast->body.line_count = p->line_count;
19312 if (
NIL_P(fname)) {
19313 p->ruby_sourcefile_string =
Qnil;
19314 p->ruby_sourcefile =
"(none)";
19317 p->ruby_sourcefile_string = rb_str_to_interned_str(fname);
19320 p->ruby_sourceline = line - 1;
19324 p->ast = ast = rb_ast_new();
19325 compile_callback(yycompile0, (
VALUE)p);
19326 ast->body.source_hash = rb_source_hash_finalize(&p->source_hash);
19327 ast->body.has_source_hash = 1;
19341 rb_encoding *enc = rb_parser_str_get_encoding(s);
19342 if (!rb_enc_asciicompat(enc)) {
19343 rb_raise(rb_eArgError,
"invalid source encoding");
19352 if (!line)
return 0;
19354 rb_source_hash_update(&p->source_hash, (
const uint8_t *)line->ptr, (
size_t)line->len);
19355 string_buffer_append(p, line);
19356 must_be_ascii_compatible(p, line);
19362rb_parser_compile(
rb_parser_t *p, rb_parser_lex_gets_func *gets,
VALUE fname, rb_parser_input_data input,
int line)
19364 p->lex.gets = gets;
19365 p->lex.input = input;
19366 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
19368 return yycompile(p, fname, line);
19372#define STR_FUNC_ESCAPE 0x01
19373#define STR_FUNC_EXPAND 0x02
19374#define STR_FUNC_REGEXP 0x04
19375#define STR_FUNC_QWORDS 0x08
19376#define STR_FUNC_SYMBOL 0x10
19377#define STR_FUNC_INDENT 0x20
19378#define STR_FUNC_LABEL 0x40
19379#define STR_FUNC_LIST 0x4000
19380#define STR_FUNC_TERM 0x8000
19383 str_label = STR_FUNC_LABEL,
19385 str_dquote = (STR_FUNC_EXPAND),
19386 str_xquote = (STR_FUNC_EXPAND),
19387 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
19388 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
19389 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
19390 str_ssym = (STR_FUNC_SYMBOL),
19391 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
19399 pstr = rb_parser_encoding_string_new(p, ptr,
len, enc);
19401 if (!(func & STR_FUNC_REGEXP)) {
19402 if (rb_parser_is_ascii_string(p, pstr)) {
19404 else if (rb_is_usascii_enc((
void *)enc0) && enc != rb_utf8_encoding()) {
19406 enc = rb_ascii8bit_encoding();
19407 PARSER_ENCODING_CODERANGE_SET(pstr, enc, RB_PARSER_ENC_CODERANGE_VALID);
19417 return strterm->heredoc;
19421new_strterm(
struct parser_params *p,
int func,
int term,
int paren)
19424 strterm->u.literal.func = func;
19425 strterm->u.literal.term = term;
19426 strterm->u.literal.paren = paren;
19434 strterm->heredoc =
true;
19438#define peek(p,c) peek_n(p, (c), 0)
19439#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
19440#define peekc(p) peekc_n(p, 0)
19441#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
19443#define add_delayed_token(p, tok, end) parser_add_delayed_token(p, tok, end, __LINE__)
19445parser_add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end,
int line)
19447 debug_token_line(p,
"add_delayed_token", line);
19450 if (has_delayed_token(p)) {
19451 bool next_line = parser_string_char_at_end(p, p->delayed.token, 0) ==
'\n';
19452 int end_line = (next_line ? 1 : 0) + p->delayed.end_line;
19453 int end_col = (next_line ? 0 : p->delayed.end_col);
19454 if (end_line != p->ruby_sourceline || end_col != tok - p->lex.pbeg) {
19455 dispatch_delayed_token(p, tSTRING_CONTENT);
19458 if (!has_delayed_token(p)) {
19459 p->delayed.token = rb_parser_string_new(p, 0, 0);
19460 rb_parser_enc_associate(p, p->delayed.token, p->enc);
19461 p->delayed.beg_line = p->ruby_sourceline;
19462 p->delayed.beg_col =
rb_long2int(tok - p->lex.pbeg);
19464 parser_str_cat(p->delayed.token, tok, end - tok);
19465 p->delayed.end_line = p->ruby_sourceline;
19466 p->delayed.end_col =
rb_long2int(end - p->lex.pbeg);
19474 p->lex.pbeg = p->lex.pcur = PARSER_STRING_PTR(str);
19475 p->lex.pend = p->lex.pcur + PARSER_STRING_LEN(str);
19476 p->lex.lastline = str;
19483 p->lex.nextline = 0;
19488 if (!lex_eol_ptr_p(p, p->lex.pbeg) && *(p->lex.pend-1) !=
'\n') {
19492 if (!p->lex.input || !(str = lex_getline(p))) {
19499 if (p->debug_lines) {
19500 if (set_encoding) rb_parser_enc_associate(p, str, p->enc);
19502 rb_parser_ary_push_script_line(p, p->debug_lines, copy);
19505 p->cr_seen = FALSE;
19507 else if (str == AFTER_HEREDOC_WITHOUT_TERMINATOR) {
19511 add_delayed_token(p, p->lex.ptok, p->lex.pend);
19512 if (p->heredoc_end > 0) {
19513 p->ruby_sourceline = p->heredoc_end;
19514 p->heredoc_end = 0;
19516 p->ruby_sourceline++;
19517 set_lastline(p, str);
19525 if (peek(p,
'\n')) {
19537 if (UNLIKELY(lex_eol_p(p) || p->eofp || p->lex.nextline > AFTER_HEREDOC_WITHOUT_TERMINATOR)) {
19538 if (nextline(p, set_encoding))
return -1;
19540 c = (
unsigned char)*p->lex.pcur++;
19541 if (UNLIKELY(c ==
'\r')) {
19542 c = parser_cr(p, c);
19547#define nextc(p) nextc0(p, TRUE)
19552 if (c == -1)
return;
19555 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
19560#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
19562#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
19563#define tok(p) (p)->tokenbuf
19564#define toklen(p) (p)->tokidx
19569 const char *ptr = p->lex.pcur;
19570 while (!lex_eol_ptr_p(p, ptr)) {
19571 int c = (
unsigned char)*ptr++;
19572 int eol = (c ==
'\n' || c ==
'#');
19584 if (!p->tokenbuf) {
19586 p->tokenbuf =
ALLOC_N(
char, 60);
19588 if (p->toksiz > 4096) {
19592 return p->tokenbuf;
19600 if (p->tokidx >= p->toksiz) {
19601 do {p->toksiz *= 2;}
while (p->toksiz <= p->tokidx);
19602 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19604 return &p->tokenbuf[p->tokidx-n];
19610 p->tokenbuf[p->tokidx++] = (char)c;
19611 if (p->tokidx >= p->toksiz) {
19613 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19622 c = (int)ruby_scan_hex(p->lex.pcur, 2, numlen);
19625 yyerror0(
"invalid hex escape");
19626 dispatch_scan_event(p, tSTRING_CONTENT);
19629 p->lex.pcur += *numlen;
19633#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
19636escaped_control_code(
int c)
19662#define WARN_SPACE_CHAR(c, prefix) \
19663 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c))
19667 int regexp_literal,
const char *begin)
19669 const int wide = !begin;
19671 int codepoint = (int)ruby_scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
19673 p->lex.pcur += numlen;
19674 if (p->lex.strterm == NULL ||
19675 strterm_is_heredoc(p->lex.strterm) ||
19676 (p->lex.strterm->u.literal.func != str_regexp)) {
19677 if (!begin) begin = p->lex.pcur;
19678 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
19679 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19680 yyerror0(
"invalid Unicode escape");
19681 dispatch_scan_event(p, tSTRING_CONTENT);
19682 return wide && numlen > 0;
19684 if (codepoint > 0x10ffff) {
19685 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19686 yyerror0(
"invalid Unicode codepoint (too large)");
19687 dispatch_scan_event(p, tSTRING_CONTENT);
19690 if ((codepoint & 0xfffff800) == 0xd800) {
19691 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19692 yyerror0(
"invalid Unicode codepoint");
19693 dispatch_scan_event(p, tSTRING_CONTENT);
19697 if (regexp_literal) {
19698 tokcopy(p, (
int)numlen);
19700 else if (codepoint >= 0x80) {
19702 if (*encp && utf8 != *encp) {
19703 YYLTYPE loc = RUBY_INIT_YYLLOC();
19704 compile_error(p,
"UTF-8 mixed within %s source", rb_enc_name(*encp));
19705 parser_show_error_line(p, &loc);
19709 tokaddmbc(p, codepoint, *encp);
19712 tokadd(p, codepoint);
19722 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19724 p->lex.pcur +=
len - 1;
19732 int term,
int symbol_literal,
int regexp_literal)
19739 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
19741 const int open_brace =
'{', close_brace =
'}';
19743 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
19745 if (peek(p, open_brace)) {
19746 if (regexp_literal && p->lex.strterm->u.literal.func == str_regexp) {
19753 tokadd(p, open_brace);
19754 while (!lex_eol_ptr_p(p, ++p->lex.pcur)) {
19756 if (c == close_brace) {
19761 else if (c == term) {
19764 if (c ==
'\\' && !lex_eol_n_p(p, 1)) {
19766 c = *++p->lex.pcur;
19768 tokadd_mbchar(p, c);
19772 const char *second = NULL;
19773 int c, last = nextc(p);
19774 if (lex_eol_p(p))
goto unterminated;
19775 while (
ISSPACE(c = peekc(p)) && !lex_eol_ptr_p(p, ++p->lex.pcur));
19776 while (c != close_brace) {
19777 if (c == term)
goto unterminated;
19778 if (second == multiple_codepoints)
19779 second = p->lex.pcur;
19780 if (regexp_literal) tokadd(p, last);
19781 if (!tokadd_codepoint(p, encp, regexp_literal, NULL)) {
19784 while (
ISSPACE(c = peekc(p))) {
19785 if (lex_eol_ptr_p(p, ++p->lex.pcur))
goto unterminated;
19788 if (term == -1 && !second)
19789 second = multiple_codepoints;
19792 if (c != close_brace) {
19794 flush_string_content(p, rb_utf8_encoding(), 0);
19795 yyerror0(
"unterminated Unicode escape");
19796 dispatch_scan_event(p, tSTRING_CONTENT);
19799 if (second && second != multiple_codepoints) {
19800 const char *pcur = p->lex.pcur;
19801 p->lex.pcur = second;
19802 dispatch_scan_event(p, tSTRING_CONTENT);
19804 p->lex.pcur = pcur;
19805 yyerror0(multiple_codepoints);
19809 if (regexp_literal) tokadd(p, close_brace);
19814 if (!tokadd_codepoint(p, encp, regexp_literal, p->lex.pcur -
rb_strlen_lit(
"\\u"))) {
19821#define ESCAPE_CONTROL 1
19822#define ESCAPE_META 2
19825read_escape(
struct parser_params *p,
int flags,
const char *begin)
19830 switch (c = nextc(p)) {
19855 case '0':
case '1':
case '2':
case '3':
19856 case '4':
case '5':
case '6':
case '7':
19858 c = (int)ruby_scan_oct(p->lex.pcur, 3, &numlen);
19859 p->lex.pcur += numlen;
19863 c = tok_hex(p, &numlen);
19864 if (numlen == 0)
return 0;
19874 if (flags & ESCAPE_META)
goto eof;
19875 if ((c = nextc(p)) !=
'-') {
19878 if ((c = nextc(p)) ==
'\\') {
19879 switch (peekc(p)) {
19880 case 'u':
case 'U':
19884 return read_escape(p, flags|ESCAPE_META, begin) | 0x80;
19886 else if (c == -1)
goto eof;
19892 int c2 = escaped_control_code(c);
19894 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
19895 WARN_SPACE_CHAR(c2,
"\\M-");
19898 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
19901 else if (
ISCNTRL(c))
goto eof;
19902 return ((c & 0xff) | 0x80);
19906 if ((c = nextc(p)) !=
'-') {
19910 if (flags & ESCAPE_CONTROL)
goto eof;
19911 if ((c = nextc(p))==
'\\') {
19912 switch (peekc(p)) {
19913 case 'u':
case 'U':
19917 c = read_escape(p, flags|ESCAPE_CONTROL, begin);
19921 else if (c == -1)
goto eof;
19927 int c2 = escaped_control_code(c);
19930 if (flags & ESCAPE_META) {
19931 WARN_SPACE_CHAR(c2,
"\\M-");
19934 WARN_SPACE_CHAR(c2,
"");
19938 if (flags & ESCAPE_META) {
19939 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
19942 WARN_SPACE_CHAR(c2,
"\\C-");
19946 else if (
ISCNTRL(c))
goto eof;
19952 flush_string_content(p, p->enc, p->lex.pcur - begin);
19953 yyerror0(
"Invalid escape character syntax");
19954 dispatch_scan_event(p, tSTRING_CONTENT);
19969 int len = rb_enc_codelen(c, enc);
19970 rb_enc_mbcput(c, tokspace(p,
len), enc);
19978 const char *begin = p->lex.pcur;
19980 switch (c = nextc(p)) {
19984 case '0':
case '1':
case '2':
case '3':
19985 case '4':
case '5':
case '6':
case '7':
19987 ruby_scan_oct(--p->lex.pcur, 3, &numlen);
19988 if (numlen == 0)
goto eof;
19989 p->lex.pcur += numlen;
19990 tokcopy(p, (
int)numlen + 1);
19996 tok_hex(p, &numlen);
19997 if (numlen == 0)
return -1;
19998 tokcopy(p, (
int)numlen + 2);
20004 flush_string_content(p, p->enc, p->lex.pcur - begin);
20005 yyerror0(
"Invalid escape character syntax");
20017char_to_option(
int c)
20023 val = RE_ONIG_OPTION_IGNORECASE;
20026 val = RE_ONIG_OPTION_EXTEND;
20029 val = RE_ONIG_OPTION_MULTILINE;
20038#define ARG_ENCODING_FIXED 16
20039#define ARG_ENCODING_NONE 32
20040#define ENC_ASCII8BIT 1
20041#define ENC_EUC_JP 2
20042#define ENC_Windows_31J 3
20046char_to_option_kcode(
int c,
int *option,
int *kcode)
20052 *kcode = ENC_ASCII8BIT;
20053 return (*option = ARG_ENCODING_NONE);
20055 *kcode = ENC_EUC_JP;
20058 *kcode = ENC_Windows_31J;
20065 return (*option = char_to_option(c));
20067 *option = ARG_ENCODING_FIXED;
20080 while (c = nextc(p),
ISALPHA(c)) {
20082 options |= RE_OPTION_ONCE;
20084 else if (char_to_option_kcode(c, &opt, &kc)) {
20086 if (kc != ENC_ASCII8BIT) kcode = c;
20100 YYLTYPE loc = RUBY_INIT_YYLLOC();
20102 compile_error(p,
"unknown regexp option%s - %*s",
20103 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
20104 parser_show_error_line(p, &loc);
20106 return options | RE_OPTION_ENCODING(kcode);
20112 int len = parser_precise_mbclen(p, p->lex.pcur-1);
20113 if (
len < 0)
return -1;
20115 p->lex.pcur += --
len;
20116 if (
len > 0) tokcopy(p,
len);
20121simple_re_meta(
int c)
20124 case '$':
case '*':
case '+':
case '.':
20125 case '?':
case '^':
case '|':
20126 case ')':
case ']':
case '}':
case '>':
20134parser_update_heredoc_indent(
struct parser_params *p,
int c)
20136 if (p->heredoc_line_indent == -1) {
20137 if (c ==
'\n') p->heredoc_line_indent = 0;
20141 p->heredoc_line_indent++;
20144 else if (c ==
'\t') {
20145 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
20146 p->heredoc_line_indent = w * TAB_WIDTH;
20149 else if (c !=
'\n') {
20150 if (p->heredoc_indent > p->heredoc_line_indent) {
20151 p->heredoc_indent = p->heredoc_line_indent;
20153 p->heredoc_line_indent = -1;
20157 p->heredoc_line_indent = 0;
20166 YYLTYPE loc = RUBY_INIT_YYLLOC();
20167 const char *n1 = rb_enc_name(enc1), *n2 = rb_enc_name(enc2);
20168 compile_error(p,
"%s mixed within %s source", n1, n2);
20169 parser_show_error_line(p, &loc);
20175 const char *pos = p->lex.pcur;
20177 parser_mixed_error(p, enc1, enc2);
20182nibble_char_upper(
unsigned int c)
20185 return c + (c < 10 ?
'0' :
'A' - 10);
20190 int func,
int term,
int paren,
long *nest,
20194 bool erred =
false;
20196 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
20197 int top_of_line = FALSE;
20200#define mixed_error(enc1, enc2) \
20201 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
20202#define mixed_escape(beg, enc1, enc2) \
20203 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
20205 while ((c = nextc(p)) != -1) {
20206 if (p->heredoc_indent > 0) {
20207 parser_update_heredoc_indent(p, c);
20210 if (top_of_line && heredoc_end == p->ruby_sourceline) {
20216 if (paren && c == paren) {
20219 else if (c == term) {
20220 if (!nest || !*nest) {
20226 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && !lex_eol_p(p)) {
20227 unsigned char c2 = *p->lex.pcur;
20228 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
20233 else if (c ==
'\\') {
20237 if (func & STR_FUNC_QWORDS)
break;
20238 if (func & STR_FUNC_EXPAND) {
20239 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
20250 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
20254 if ((func & STR_FUNC_EXPAND) == 0) {
20258 tokadd_utf8(p, enc, term,
20259 func & STR_FUNC_SYMBOL,
20260 func & STR_FUNC_REGEXP);
20264 if (c == -1)
return -1;
20266 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
20269 if (func & STR_FUNC_REGEXP) {
20275 c = read_escape(p, 0, p->lex.pcur - 1);
20280 *t++ = nibble_char_upper(c >> 4);
20281 *t++ = nibble_char_upper(c);
20286 if (c == term && !simple_re_meta(c)) {
20291 if ((c = tokadd_escape(p)) < 0)
20293 if (*enc && *enc != *encp) {
20294 mixed_escape(p->lex.ptok+2, *enc, *encp);
20298 else if (func & STR_FUNC_EXPAND) {
20300 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
20301 c = read_escape(p, 0, p->lex.pcur - 1);
20303 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
20306 else if (c != term && !(paren && c == paren)) {
20313 else if (!parser_isascii(p)) {
20318 else if (*enc != *encp) {
20319 mixed_error(*enc, *encp);
20322 if (tokadd_mbchar(p, c) == -1)
return -1;
20325 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
20333 else if (*enc != *encp) {
20334 mixed_error(*enc, *encp);
20340 top_of_line = (c ==
'\n');
20344 if (*enc) *encp = *enc;
20348#define NEW_STRTERM(func, term, paren) new_strterm(p, func, term, paren)
20353 p->lex.pcur -= back;
20354 if (has_delayed_token(p)) {
20355 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
20357 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20358 p->delayed.end_line = p->ruby_sourceline;
20359 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
20361 dispatch_delayed_token(p, tSTRING_CONTENT);
20362 p->lex.ptok = p->lex.pcur;
20364 dispatch_scan_event(p, tSTRING_CONTENT);
20365 p->lex.pcur += back;
20371#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
20372#define SPECIAL_PUNCT(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) | \
20376 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
20377 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
20379const uint_least32_t ruby_global_name_punct_bits[] = {
20385#undef SPECIAL_PUNCT
20388static enum yytokentype
20389parser_peek_variable_name(struct parser_params *p)
20392 const char *ptr = p->lex.pcur;
20394 if (lex_eol_ptr_n_p(p, ptr, 1)) return 0;
20398 if ((c = *ptr) == '-') {
20399 if (lex_eol_ptr_p(p, ++ptr)) return 0;
20402 else if (is_global_name_punct(c) || ISDIGIT(c)) {
20403 return tSTRING_DVAR;
20407 if ((c = *ptr) == '@') {
20408 if (lex_eol_ptr_p(p, ++ptr)) return 0;
20414 p->command_start = TRUE;
20415 yylval.state = p->lex.state;
20416 return tSTRING_DBEG;
20420 if (!ISASCII(c) || c == '_' || ISALPHA(c))
20421 return tSTRING_DVAR;
20425#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
20426#define IS_END() IS_lex_state(EXPR_END_ANY)
20427#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
20428#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
20429#define IS_LABEL_POSSIBLE() (\
20430 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
20432#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
20433#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
20435static inline enum yytokentype
20436parser_string_term(struct parser_params *p, int func)
20438 xfree(p->lex.strterm);
20439 p->lex.strterm = 0;
20440 if (func & STR_FUNC_REGEXP) {
20441 set_yylval_num(regx_options(p));
20442 dispatch_scan_event(p, tREGEXP_END);
20443 SET_LEX_STATE(EXPR_END);
20444 return tREGEXP_END;
20446 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
20448 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
20451 SET_LEX_STATE(EXPR_END);
20452 return tSTRING_END;
20455static enum yytokentype
20456parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
20458 int func = quote->func;
20459 int term = quote->term;
20460 int paren = quote->paren;
20462 rb_encoding *enc = p->enc;
20463 rb_encoding *base_enc = 0;
20464 rb_parser_string_t *lit;
20466 if (func & STR_FUNC_TERM) {
20467 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
20468 SET_LEX_STATE(EXPR_END);
20469 xfree(p->lex.strterm);
20470 p->lex.strterm = 0;
20471 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
20474 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
20475 while (c != '\n' && ISSPACE(c = nextc(p)));
20478 if (func & STR_FUNC_LIST) {
20479 quote->func &= ~STR_FUNC_LIST;
20482 if (c == term && !quote->nest) {
20483 if (func & STR_FUNC_QWORDS) {
20484 quote->func |= STR_FUNC_TERM;
20485 pushback(p, c); /* dispatch the term at tSTRING_END */
20486 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20489 return parser_string_term(p, func);
20492 if (!ISSPACE(c)) pushback(p, c);
20493 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20497 if ((func & STR_FUNC_EXPAND) && c == '#') {
20498 enum yytokentype t = parser_peek_variable_name(p);
20504 if (tokadd_string(p, func, term, paren, "e->nest,
20505 &enc, &base_enc) == -1) {
20508# define unterminated_literal(mesg) yyerror0(mesg)
20510# define unterminated_literal(mesg) compile_error(p, mesg)
20512 literal_flush(p, p->lex.pcur);
20513 if (func & STR_FUNC_QWORDS) {
20514 /* no content to add, bailing out here */
20515 unterminated_literal("unterminated list meets end of file");
20516 xfree(p->lex.strterm);
20517 p->lex.strterm = 0;
20518 return tSTRING_END;
20520 if (func & STR_FUNC_REGEXP) {
20521 unterminated_literal("unterminated regexp meets end of file");
20524 unterminated_literal("unterminated string meets end of file");
20526 quote->func |= STR_FUNC_TERM;
20531 lit = STR_NEW3(tok(p), toklen(p), enc, func);
20532 set_yylval_str(lit);
20533 flush_string_content(p, enc, 0);
20535 return tSTRING_CONTENT;
20538static enum yytokentype
20539heredoc_identifier(struct parser_params *p)
20542 * term_len is length of `<<"END"` except `END`,
20543 * in this case term_len is 4 (<, <, " and ").
20545 long len, offset = p->lex.pcur - p->lex.pbeg;
20546 int c = nextc(p), term, func = 0, quote = 0;
20547 enum yytokentype token = tSTRING_BEG;
20552 func = STR_FUNC_INDENT;
20555 else if (c == '~') {
20557 func = STR_FUNC_INDENT;
20563 func |= str_squote; goto quoted;
20565 func |= str_dquote;
goto quoted;
20567 token = tXSTRING_BEG;
20568 func |= str_xquote;
goto quoted;
20575 while ((c = nextc(p)) != term) {
20576 if (c == -1 || c ==
'\r' || c ==
'\n') {
20577 yyerror0(
"unterminated here document identifier");
20584 if (!parser_is_identchar(p)) {
20586 if (func & STR_FUNC_INDENT) {
20587 pushback(p, indent > 0 ?
'~' :
'-');
20591 func |= str_dquote;
20593 int n = parser_precise_mbclen(p, p->lex.pcur-1);
20594 if (n < 0)
return 0;
20595 p->lex.pcur += --n;
20596 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
20601 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
20602 if ((
unsigned long)
len >= HERETERM_LENGTH_MAX)
20603 yyerror0(
"too long here document identifier");
20604 dispatch_scan_event(p, tHEREDOC_BEG);
20607 p->lex.strterm = new_heredoc(p);
20609 here->offset = offset;
20610 here->sourceline = p->ruby_sourceline;
20611 here->length = (unsigned)
len;
20612 here->quote = quote;
20614 here->lastline = p->lex.lastline;
20617 p->heredoc_indent = indent;
20618 p->heredoc_line_indent = 0;
20628 p->lex.strterm = 0;
20629 line = here->lastline;
20630 p->lex.lastline = line;
20631 p->lex.pbeg = PARSER_STRING_PTR(line);
20632 p->lex.pend = p->lex.pbeg + PARSER_STRING_LEN(line);
20633 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
20634 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
20635 p->heredoc_end = p->ruby_sourceline;
20636 p->ruby_sourceline = (int)here->sourceline;
20637 if (p->eofp) p->lex.nextline = AFTER_HEREDOC_WITHOUT_TERMINATOR;
20643dedent_string_column(
const char *str,
long len,
int width)
20647 for (i = 0; i <
len && col < width; i++) {
20648 if (str[i] ==
' ') {
20651 else if (str[i] ==
'\t') {
20652 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
20653 if (n > width)
break;
20671 len = PARSER_STRING_LEN(
string);
20672 str = PARSER_STRING_PTR(
string);
20674 i = dedent_string_column(str,
len, width);
20677 rb_parser_str_modify(
string);
20678 str = PARSER_STRING_PTR(
string);
20679 if (PARSER_STRING_LEN(
string) !=
len)
20680 rb_fatal(
"literal string changed: %s", PARSER_STRING_PTR(
string));
20682 rb_parser_str_set_len(p,
string,
len - i);
20689 NODE *node, *str_node, *prev_node;
20690 int indent = p->heredoc_indent;
20693 if (indent <= 0)
return root;
20694 if (!root)
return root;
20696 prev_node = node = str_node = root;
20697 if (nd_type_p(root, NODE_LIST)) str_node = RNODE_LIST(root)->nd_head;
20701 if (nd_fl_newline(str_node)) {
20702 dedent_string(p, lit, indent);
20707 else if (!literal_concat0(p, prev_lit, lit)) {
20711 NODE *end = RNODE_LIST(node)->as.nd_end;
20712 node = RNODE_LIST(prev_node)->nd_next = RNODE_LIST(node)->nd_next;
20714 if (nd_type_p(prev_node, NODE_DSTR))
20715 nd_set_type(prev_node, NODE_STR);
20718 RNODE_LIST(node)->as.nd_end = end;
20723 while ((nd_type_p(node, NODE_LIST) || nd_type_p(node, NODE_DSTR)) && (node = RNODE_LIST(prev_node = node)->nd_next) != 0) {
20725 if (!nd_type_p(node, NODE_LIST))
break;
20726 if ((str_node = RNODE_LIST(node)->nd_head) != 0) {
20727 enum node_type
type = nd_type(str_node);
20728 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
20738whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
20740 const char *beg = p->lex.pbeg;
20741 const char *ptr = p->lex.pend;
20743 if (ptr - beg <
len)
return FALSE;
20744 if (ptr > beg && ptr[-1] ==
'\n') {
20745 if (--ptr > beg && ptr[-1] ==
'\r') --ptr;
20746 if (ptr - beg <
len)
return FALSE;
20748 if (strncmp(eos, ptr -=
len,
len))
return FALSE;
20750 while (beg < ptr &&
ISSPACE(*beg)) beg++;
20758 if (strncmp(p->lex.pcur, word,
len))
return 0;
20759 if (lex_eol_n_p(p,
len))
return 1;
20760 int c = (
unsigned char)p->lex.pcur[
len];
20763 case '\0':
case '\004':
case '\032':
return 1;
20768#define NUM_SUFFIX_R (1<<0)
20769#define NUM_SUFFIX_I (1<<1)
20770#define NUM_SUFFIX_ALL 3
20776 const char *lastp = p->lex.pcur;
20778 while ((c = nextc(p)) != -1) {
20779 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
20780 result |= (mask & NUM_SUFFIX_I);
20781 mask &= ~NUM_SUFFIX_I;
20783 mask &= ~NUM_SUFFIX_R;
20786 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
20787 result |= (mask & NUM_SUFFIX_R);
20788 mask &= ~NUM_SUFFIX_R;
20792 p->lex.pcur = lastp;
20801static enum yytokentype
20802set_number_literal(
struct parser_params *p,
enum yytokentype
type,
int suffix,
int base,
int seen_point)
20804 enum rb_numeric_type numeric_type = integer_literal;
20806 if (
type == tFLOAT) {
20807 numeric_type = float_literal;
20810 if (suffix & NUM_SUFFIX_R) {
20812 numeric_type = rational_literal;
20814 if (suffix & NUM_SUFFIX_I) {
20820 set_yylval_node(NEW_INTEGER(
strdup(tok(p)), base, &_cur_loc));
20823 set_yylval_node(NEW_FLOAT(
strdup(tok(p)), &_cur_loc));
20826 set_yylval_node(NEW_RATIONAL(
strdup(tok(p)), base, seen_point, &_cur_loc));
20829 set_yylval_node(NEW_IMAGINARY(
strdup(tok(p)), base, seen_point, numeric_type, &_cur_loc));
20830 (void)numeric_type;
20833 rb_bug(
"unexpected token: %d",
type);
20835 SET_LEX_STATE(EXPR_END);
20839#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
20841parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
20843 if (has_delayed_token(p))
20844 dispatch_delayed_token(p, tSTRING_CONTENT);
20847 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
20848 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
20850 if (p->keep_tokens) {
20851 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pend - p->lex.ptok, p->enc);
20852 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
20853 parser_append_tokens(p, str, tHEREDOC_END, line);
20857 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
20862static enum yytokentype
20865 int c, func, indent = 0;
20866 const char *eos, *ptr, *ptr_end;
20876 eos = PARSER_STRING_PTR(here->lastline) + here->offset;
20877 len = here->length;
20878 indent = (func = here->func) & STR_FUNC_INDENT;
20880 if ((c = nextc(p)) == -1) {
20883 if (!has_delayed_token(p)) {
20884 dispatch_scan_event(p, tSTRING_CONTENT);
20886 else if (p->delayed.end_line + 1 == p->ruby_sourceline) {
20887 if ((
len = p->lex.pcur - p->lex.ptok) > 0) {
20888 if (!(func & STR_FUNC_REGEXP)) {
20892 rb_is_usascii_enc(p->enc) &&
20893 enc != rb_utf8_encoding()) {
20894 enc = rb_ascii8bit_encoding();
20897 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20899 dispatch_delayed_token(p, tSTRING_CONTENT);
20902 dispatch_delayed_token(p, tSTRING_CONTENT);
20903 dispatch_scan_event(p, tSTRING_CONTENT);
20907 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20908 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
20911 SET_LEX_STATE(EXPR_END);
20912 return tSTRING_END;
20918 else if (p->heredoc_line_indent == -1) {
20923 p->heredoc_line_indent = 0;
20925 else if (whole_match_p(p, eos,
len, indent)) {
20926 dispatch_heredoc_end(p);
20928 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20930 SET_LEX_STATE(EXPR_END);
20931 return tSTRING_END;
20934 if (!(func & STR_FUNC_EXPAND)) {
20936 ptr = PARSER_STRING_PTR(p->lex.lastline);
20937 ptr_end = p->lex.pend;
20938 if (ptr_end > ptr) {
20939 switch (ptr_end[-1]) {
20941 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
20950 if (p->heredoc_indent > 0) {
20952 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
20954 p->heredoc_line_indent = 0;
20958 parser_str_cat(str, ptr, ptr_end - ptr);
20960 str = rb_parser_encoding_string_new(p, ptr, ptr_end - ptr, enc);
20961 if (!lex_eol_ptr_p(p, ptr_end)) parser_str_cat_cstr(str,
"\n");
20963 if (p->heredoc_indent > 0) {
20966 if (nextc(p) == -1) {
20968 rb_parser_string_free(p, str);
20973 }
while (!whole_match_p(p, eos,
len, indent));
20979 enum yytokentype t = parser_peek_variable_name(p);
20980 if (p->heredoc_line_indent != -1) {
20981 if (p->heredoc_indent > p->heredoc_line_indent) {
20982 p->heredoc_indent = p->heredoc_line_indent;
20984 p->heredoc_line_indent = -1;
20993 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
20994 if (p->eofp)
goto error;
20998 if (c ==
'\\') p->heredoc_line_indent = -1;
21000 str = STR_NEW3(tok(p), toklen(p), enc, func);
21002 set_yylval_str(str);
21004 if (bol) nd_set_fl_newline(yylval.node);
21006 flush_string_content(p, enc, 0);
21007 return tSTRING_CONTENT;
21009 tokadd(p, nextc(p));
21010 if (p->heredoc_indent > 0) {
21015 if ((c = nextc(p)) == -1)
goto error;
21016 }
while (!whole_match_p(p, eos,
len, indent));
21017 str = STR_NEW3(tok(p), toklen(p), enc, func);
21019 dispatch_heredoc_end(p);
21020 heredoc_restore(p, &p->lex.strterm->u.heredoc);
21022 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
21025 s_value = p->s_value;
21027 set_yylval_str(str);
21029 set_parser_s_value(s_value);
21033 if (bol) nd_set_fl_newline(yylval.node);
21035 return tSTRING_CONTENT;
21044 rb_warning1(
"ambiguous first argument; put parentheses or a space even after '%c' operator", WARN_I(c));
21056 switch (id_type(
id)) {
21060# define ERR(mesg) (yyerror0(mesg), Qtrue)
21062# define ERR(mesg) WARN_S(mesg)
21065 return ERR(
"formal argument cannot be a constant");
21067 return ERR(
"formal argument cannot be an instance variable");
21069 return ERR(
"formal argument cannot be a global variable");
21071 return ERR(
"formal argument cannot be a class variable");
21073 return ERR(
"formal argument must be local variable");
21076 shadowing_lvar(p,
id);
21084 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
21093 if (
len > 5 && name[nlen =
len - 5] ==
'-') {
21094 if (rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
21097 if (
len > 4 && name[nlen =
len - 4] ==
'-') {
21098 if (rb_memcicmp(name + nlen + 1,
"dos", 3) == 0)
21100 if (rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
21101 !(
len == 8 && rb_memcicmp(name,
"utf8-mac",
len) == 0))
21109parser_set_encode(
struct parser_params *p,
const char *name)
21115 const char *wrong = 0;
21117 case 'e':
case 'E': wrong =
"external";
break;
21118 case 'i':
case 'I': wrong =
"internal";
break;
21119 case 'f':
case 'F': wrong =
"filesystem";
break;
21120 case 'l':
case 'L': wrong =
"locale";
break;
21122 if (wrong &&
STRCASECMP(name, wrong) == 0)
goto unknown;
21123 idx = rb_enc_find_index(name);
21126 excargs[1] = rb_sprintf(
"unknown encoding name: %s", name);
21128 excargs[0] = rb_eArgError;
21129 excargs[2] = rb_make_backtrace();
21130 rb_ary_unshift(excargs[2], rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
21131 VALUE exc = rb_make_exception(3, excargs);
21132 ruby_show_error_line(p, exc, &(
YYLTYPE)RUBY_INIT_YYLLOC(), p->ruby_sourceline, p->lex.lastline);
21134 rb_ast_free(p->ast);
21139 enc = rb_enc_from_index(idx);
21140 if (!rb_enc_asciicompat(enc)) {
21141 excargs[1] = rb_sprintf(
"%s is not ASCII compatible", rb_enc_name(enc));
21146 if (p->debug_lines) {
21148 for (i = 0; i < p->debug_lines->len; i++) {
21149 rb_parser_enc_associate(p, p->debug_lines->data[i], enc);
21158 if (p->token_seen)
return false;
21159 return (p->line_count == (p->has_shebang ? 2 : 1));
21162typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
21163typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
21165static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
21168magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
21170 if (!comment_at_top(p)) {
21173 parser_set_encode(p, val);
21177parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
21180 case 't':
case 'T':
21185 case 'f':
case 'F':
21191 return parser_invalid_pragma_value(p, name, val);
21195parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
21197 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
21202parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
21204 int b = parser_get_bool(p, name, val);
21205 if (b >= 0) p->token_info_enabled = b;
21209parser_set_frozen_string_literal(
struct parser_params *p,
const char *name,
const char *val)
21213 if (p->token_seen) {
21214 rb_warning1(
"'%s' is ignored after any tokens", WARN_S(name));
21218 b = parser_get_bool(p, name, val);
21221 p->frozen_string_literal = b;
21225parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
21227 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
21228 if (*s ==
' ' || *s ==
'\t')
continue;
21229 if (*s ==
'#')
break;
21230 rb_warning1(
"'%s' is ignored unless in comment-only line", WARN_S(name));
21235 case 'n':
case 'N':
21237 p->ctxt.shareable_constant_value = rb_parser_shareable_none;
21241 case 'l':
case 'L':
21243 p->ctxt.shareable_constant_value = rb_parser_shareable_literal;
21247 case 'e':
case 'E':
21248 if (
STRCASECMP(val,
"experimental_copy") == 0) {
21249 p->ctxt.shareable_constant_value = rb_parser_shareable_copy;
21252 if (
STRCASECMP(val,
"experimental_everything") == 0) {
21253 p->ctxt.shareable_constant_value = rb_parser_shareable_everything;
21258 parser_invalid_pragma_value(p, name, val);
21261# if WARN_PAST_SCOPE
21263parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
21265 int b = parser_get_bool(p, name, val);
21266 if (b >= 0) p->past_scope_enabled = b;
21272 rb_magic_comment_setter_t func;
21273 rb_magic_comment_length_t length;
21277 {
"coding", magic_comment_encoding, parser_encode_length},
21278 {
"encoding", magic_comment_encoding, parser_encode_length},
21279 {
"frozen_string_literal", parser_set_frozen_string_literal},
21280 {
"shareable_constant_value", parser_set_shareable_constant_value},
21281 {
"warn_indent", parser_set_token_info},
21282# if WARN_PAST_SCOPE
21283 {
"warn_past_scope", parser_set_past_scope},
21288magic_comment_marker(
const char *str,
long len)
21295 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
21296 return str + i + 1;
21301 if (i + 1 >=
len)
return 0;
21302 if (str[i+1] !=
'-') {
21305 else if (str[i-1] !=
'-') {
21309 return str + i + 2;
21324 VALUE name = 0, val = 0;
21325 const char *beg, *end, *vbeg, *vend;
21326#define str_copy(_s, _p, _n) ((_s) \
21327 ? (void)(rb_str_resize((_s), (_n)), \
21328 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
21329 : (void)((_s) = STR_NEW((_p), (_n))))
21331 if (
len <= 7)
return FALSE;
21332 if (!!(beg = magic_comment_marker(str,
len))) {
21333 if (!(end = magic_comment_marker(beg, str +
len - beg)))
21337 len = end - beg - 3;
21347 for (;
len > 0 && *str; str++, --
len) {
21349 case '\'':
case '"':
case ':':
case ';':
21354 for (beg = str;
len > 0; str++, --
len) {
21356 case '\'':
case '"':
case ':':
case ';':
21367 if (!indicator)
return FALSE;
21371 do str++;
while (--
len > 0 &&
ISSPACE(*str));
21373 const char *tok_beg = str;
21375 for (vbeg = ++str; --
len > 0 && *str !=
'"'; str++) {
21376 if (*str ==
'\\') {
21388 for (vbeg = str;
len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --
len, str++);
21391 const char *tok_end = str;
21393 while (
len > 0 && (*str ==
';' ||
ISSPACE(*str))) --
len, str++;
21397 if (
len)
return FALSE;
21401 str_copy(name, beg, n);
21402 s = RSTRING_PTR(name);
21403 for (i = 0; i < n; ++i) {
21404 if (s[i] ==
'-') s[i] =
'_';
21407 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
21410 n = (*mc->length)(p, vbeg, n);
21412 str_copy(val, vbeg, n);
21413 p->lex.ptok = tok_beg;
21414 p->lex.pcur = tok_end;
21415 (*mc->func)(p, mc->name, RSTRING_PTR(val));
21418 }
while (++mc < magic_comments + numberof(magic_comments));
21420 str_copy(val, vbeg, vend - vbeg);
21429set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
21432 const char *beg = str;
21436 if (send - str <= 6)
return;
21438 case 'C':
case 'c': str += 6;
continue;
21439 case 'O':
case 'o': str += 5;
continue;
21440 case 'D':
case 'd': str += 4;
continue;
21441 case 'I':
case 'i': str += 3;
continue;
21442 case 'N':
case 'n': str += 2;
continue;
21443 case 'G':
case 'g': str += 1;
continue;
21444 case '=':
case ':':
21458 if (++str >= send)
return;
21461 if (*str !=
'=' && *str !=
':')
return;
21466 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
21467 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
21470 parser_set_encode(p, RSTRING_PTR(s));
21471 rb_str_resize(s, 0);
21477 int c = nextc0(p, FALSE);
21481 if (peek(p,
'!')) p->has_shebang = 1;
21484 if (!lex_eol_n_p(p, 2) &&
21485 (
unsigned char)p->lex.pcur[0] == 0xbb &&
21486 (
unsigned char)p->lex.pcur[1] == 0xbf) {
21487 p->enc = rb_utf8_encoding();
21490 if (p->debug_lines) {
21491 rb_parser_string_set_encoding(p->lex.lastline, p->enc);
21494 p->lex.pbeg = p->lex.pcur;
21503 p->enc = rb_parser_str_get_encoding(p->lex.lastline);
21507#define ambiguous_operator(tok, op, syn) ( \
21508 rb_warning0("'"op"' after local variable or literal is interpreted as binary operator"), \
21509 rb_warning0("even though it seems like "syn""))
21511#define ambiguous_operator(tok, op, syn) \
21512 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
21514#define warn_balanced(tok, op, syn) ((void) \
21515 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
21516 space_seen && !ISSPACE(c) && \
21517 (ambiguous_operator(tok, op, syn), 0)), \
21518 (enum yytokentype)(tok))
21520static enum yytokentype
21523 yyerror0(
"numeric literal without digits");
21524 if (peek(p,
'_')) nextc(p);
21526 return set_number_literal(p, tINTEGER, 0, 10, 0);
21529static enum yytokentype
21532 int is_float, seen_point, seen_e, nondigit;
21535 is_float = seen_point = seen_e = nondigit = 0;
21536 SET_LEX_STATE(EXPR_END);
21538 if (c ==
'-' || c ==
'+') {
21543 int start = toklen(p);
21545 if (c ==
'x' || c ==
'X') {
21551 if (nondigit)
break;
21558 }
while ((c = nextc(p)) != -1);
21562 if (toklen(p) == start) {
21563 return no_digits(p);
21565 else if (nondigit)
goto trailing_uc;
21566 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21567 return set_number_literal(p, tINTEGER, suffix, 16, 0);
21569 if (c ==
'b' || c ==
'B') {
21572 if (c ==
'0' || c ==
'1') {
21575 if (nondigit)
break;
21579 if (c !=
'0' && c !=
'1')
break;
21582 }
while ((c = nextc(p)) != -1);
21586 if (toklen(p) == start) {
21587 return no_digits(p);
21589 else if (nondigit)
goto trailing_uc;
21590 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21591 return set_number_literal(p, tINTEGER, suffix, 2, 0);
21593 if (c ==
'd' || c ==
'D') {
21599 if (nondigit)
break;
21606 }
while ((c = nextc(p)) != -1);
21610 if (toklen(p) == start) {
21611 return no_digits(p);
21613 else if (nondigit)
goto trailing_uc;
21614 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21615 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21621 if (c ==
'o' || c ==
'O') {
21624 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
21626 return no_digits(p);
21629 if (c >=
'0' && c <=
'7') {
21634 if (nondigit)
break;
21638 if (c <
'0' || c >
'9')
break;
21639 if (c >
'7')
goto invalid_octal;
21642 }
while ((c = nextc(p)) != -1);
21643 if (toklen(p) > start) {
21646 if (nondigit)
goto trailing_uc;
21647 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21648 return set_number_literal(p, tINTEGER, suffix, 8, 0);
21655 if (c >
'7' && c <=
'9') {
21657 yyerror0(
"Invalid octal digit");
21659 else if (c ==
'.' || c ==
'e' || c ==
'E') {
21665 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21666 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21672 case '0':
case '1':
case '2':
case '3':
case '4':
21673 case '5':
case '6':
case '7':
case '8':
case '9':
21679 if (nondigit)
goto trailing_uc;
21680 if (seen_point || seen_e) {
21685 if (c0 == -1 || !
ISDIGIT(c0)) {
21691 seen_point = toklen(p);
21710 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
21716 tokadd(p, nondigit);
21720 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
21724 if (nondigit)
goto decode_num;
21738 literal_flush(p, p->lex.pcur - 1);
21739 YYLTYPE loc = RUBY_INIT_YYLLOC();
21740 compile_error(p,
"trailing '%c' in number", nondigit);
21741 parser_show_error_line(p, &loc);
21745 enum yytokentype
type = tFLOAT;
21747 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
21748 if (suffix & NUM_SUFFIX_R) {
21753 if (
errno == ERANGE) {
21754 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
21758 return set_number_literal(p,
type, suffix, 0, seen_point);
21760 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21761 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21764static enum yytokentype
21770 const char *start = p->lex.pcur;
21773 SET_LEX_STATE(EXPR_VALUE);
21778 compile_error(p,
"incomplete character syntax");
21781 if (rb_enc_isspace(c, p->enc)) {
21783 int c2 = escaped_control_code(c);
21785 WARN_SPACE_CHAR(c2,
"?");
21790 SET_LEX_STATE(EXPR_VALUE);
21795 int w = parser_precise_mbclen(p, start);
21796 if (is_identchar(p, start, p->lex.pend, p->enc) &&
21797 !(lex_eol_ptr_n_p(p, start, w) || !is_identchar(p, start + w, p->lex.pend, p->enc))) {
21799 const char *ptr = start;
21801 int n = parser_precise_mbclen(p, ptr);
21802 if (n < 0)
return -1;
21804 }
while (!lex_eol_ptr_p(p, ptr) && is_identchar(p, ptr, p->lex.pend, p->enc));
21805 rb_warn2(
"'?' just followed by '%.*s' is interpreted as" \
21806 " a conditional operator, put a space after '?'",
21807 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
21811 else if (c ==
'\\') {
21812 if (peek(p,
'u')) {
21814 enc = rb_utf8_encoding();
21815 tokadd_utf8(p, &enc, -1, 0, 0);
21817 else if (!
ISASCII(c = peekc(p)) && c != -1) {
21819 if (tokadd_mbchar(p, c) == -1)
return 0;
21827 if (tokadd_mbchar(p, c) == -1)
return 0;
21830 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
21831 set_yylval_str(lit);
21832 SET_LEX_STATE(EXPR_END);
21836static enum yytokentype
21837parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
21840 const char *ptok = p->lex.pcur;
21848 if (c == -1)
goto unterminated;
21851 if (!
ISASCII(c))
goto unknown;
21856 if (rb_enc_isalnum(term, p->enc) || !parser_isascii(p)) {
21859 c = parser_precise_mbclen(p, p->lex.pcur);
21860 if (c < 0)
return 0;
21862 yyerror0(
"unknown type of %string");
21868 compile_error(p,
"unterminated quoted string meets end of file");
21872 if (term ==
'(') term =
')';
21873 else if (term ==
'[') term =
']';
21874 else if (term ==
'{') term =
'}';
21875 else if (term ==
'<') term =
'>';
21878 p->lex.ptok = ptok-1;
21881 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
21882 return tSTRING_BEG;
21885 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
21886 return tSTRING_BEG;
21889 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21893 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21894 return tQWORDS_BEG;
21897 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21898 return tSYMBOLS_BEG;
21901 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21902 return tQSYMBOLS_BEG;
21905 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
21906 return tXSTRING_BEG;
21909 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
21910 return tREGEXP_BEG;
21913 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
21914 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
21918 yyerror0(
"unknown type of %string");
21922 if ((c = nextc(p)) ==
'=') {
21923 set_yylval_id(
'%');
21924 SET_LEX_STATE(EXPR_BEG);
21927 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
21930 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21932 return warn_balanced(
'%',
"%%",
"string literal");
21939 if (tokadd_mbchar(p, c) == -1)
return -1;
21941 }
while (parser_is_identchar(p));
21949 ID ident = TOK_INTERN();
21951 set_yylval_name(ident);
21961 unsigned long n = ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &
len, &overflow);
21962 const unsigned long nth_ref_max =
21963 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
21967 if (overflow || n > nth_ref_max) {
21969 rb_warn1(
"'%s' is too big for a number variable, always nil", WARN_S(tok(p)));
21977static enum yytokentype
21978parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
21980 const char *ptr = p->lex.pcur;
21983 SET_LEX_STATE(EXPR_END);
21984 p->lex.ptok = ptr - 1;
21990 if (parser_is_identchar(p)) {
22022 if (parser_is_identchar(p)) {
22023 if (tokadd_mbchar(p, c) == -1)
return 0;
22038 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
22043 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
22046 case '1':
case '2':
case '3':
22047 case '4':
case '5':
case '6':
22048 case '7':
case '8':
case '9':
22053 }
while (c != -1 &&
ISDIGIT(c));
22055 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
22057 c = parse_numvar(p);
22058 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
22062 if (!parser_is_identchar(p)) {
22063 YYLTYPE loc = RUBY_INIT_YYLLOC();
22065 compile_error(p,
"'$' without identifiers is not allowed as a global variable name");
22069 compile_error(p,
"'$%c' is not allowed as a global variable name", c);
22071 parser_show_error_line(p, &loc);
22072 set_yylval_noname();
22080 if (tokadd_ident(p, c))
return 0;
22081 SET_LEX_STATE(EXPR_END);
22082 if (VALID_SYMNAME_P(tok(p), toklen(p), p->enc, ID_GLOBAL)) {
22086 compile_error(p,
"'%.*s' is not allowed as a global variable name", toklen(p), tok(p));
22087 set_yylval_noname();
22095 if (n < 0)
return false;
22097 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
22100 if (p->max_numparam == ORDINAL_PARAM) {
22101 compile_error(p,
"ordinary parameter is defined");
22104 struct vtable *args = p->lvtbl->args;
22105 if (p->max_numparam < n) {
22106 p->max_numparam = n;
22108 while (n > args->pos) {
22109 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
22114static enum yytokentype
22115parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
22117 const char *ptr = p->lex.pcur;
22118 enum yytokentype result = tIVAR;
22119 register int c = nextc(p);
22122 p->lex.ptok = ptr - 1;
22130 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
22131 if (c == -1 || !parser_is_identchar(p)) {
22133 RUBY_SET_YYLLOC(loc);
22134 if (result == tIVAR) {
22135 compile_error(p,
"'@' without identifiers is not allowed as an instance variable name");
22138 compile_error(p,
"'@@' without identifiers is not allowed as a class variable name");
22140 parser_show_error_line(p, &loc);
22141 set_yylval_noname();
22142 SET_LEX_STATE(EXPR_END);
22147 RUBY_SET_YYLLOC(loc);
22148 if (result == tIVAR) {
22149 compile_error(p,
"'@%c' is not allowed as an instance variable name", c);
22152 compile_error(p,
"'@@%c' is not allowed as a class variable name", c);
22154 parser_show_error_line(p, &loc);
22155 set_yylval_noname();
22156 SET_LEX_STATE(EXPR_END);
22160 if (tokadd_ident(p, c))
return 0;
22165static enum yytokentype
22168 enum yytokentype result;
22169 bool is_ascii =
true;
22170 const enum lex_state_e last_state = p->lex.state;
22172 int enforce_keyword_end = 0;
22175 if (!
ISASCII(c)) is_ascii =
false;
22176 if (tokadd_mbchar(p, c) == -1)
return 0;
22178 }
while (parser_is_identchar(p));
22179 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
22183 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
22184 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
22185 result = tIDENTIFIER;
22189 result = tCONSTANT;
22194 if (IS_LABEL_POSSIBLE()) {
22195 if (IS_LABEL_SUFFIX(0)) {
22196 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
22204 if (peek_end_expect_token_locations(p)) {
22206 int lineno, column;
22207 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
22209 end_pos = peek_end_expect_token_locations(p)->pos;
22210 lineno = end_pos->lineno;
22211 column = end_pos->column;
22214 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
22215 p->ruby_sourceline, beg_pos, lineno, column);
22218 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
22221 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
22222 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
22223 enforce_keyword_end = 1;
22229 if (is_ascii && (!IS_lex_state(EXPR_DOT) || enforce_keyword_end)) {
22233 kw = rb_reserved_word(tok(p), toklen(p));
22235 enum lex_state_e state = p->lex.state;
22236 if (IS_lex_state_for(state, EXPR_FNAME)) {
22237 SET_LEX_STATE(EXPR_ENDFN);
22238 set_yylval_name(rb_intern2(tok(p), toklen(p)));
22241 SET_LEX_STATE(kw->state);
22242 if (IS_lex_state(EXPR_BEG)) {
22243 p->command_start = TRUE;
22245 if (kw->id[0] == keyword_do) {
22246 if (lambda_beginning_p()) {
22247 p->lex.lpar_beg = -1;
22248 return keyword_do_LAMBDA;
22250 if (COND_P())
return keyword_do_cond;
22251 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
22252 return keyword_do_block;
22255 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
22258 if (kw->id[0] != kw->id[1])
22259 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
22265 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
22267 SET_LEX_STATE(EXPR_CMDARG);
22270 SET_LEX_STATE(EXPR_ARG);
22273 else if (p->lex.state == EXPR_FNAME) {
22274 SET_LEX_STATE(EXPR_ENDFN);
22277 SET_LEX_STATE(EXPR_END);
22280 ident = tokenize_ident(p);
22281 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
22282 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
22283 (result == tIDENTIFIER) &&
22284 (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
22285 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
22296 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
22300static enum yytokentype
22304 int space_seen = 0;
22307 enum lex_state_e last_state;
22308 int fallthru = FALSE;
22309 int token_seen = p->token_seen;
22311 if (p->lex.strterm) {
22312 if (strterm_is_heredoc(p->lex.strterm)) {
22314 return here_document(p, &p->lex.strterm->u.heredoc);
22318 return parse_string(p, &p->lex.strterm->u.literal);
22321 cmd_state = p->command_start;
22322 p->command_start = FALSE;
22323 p->token_seen = TRUE;
22328 last_state = p->lex.state;
22329 switch (c = nextc(p)) {
22336 if (p->end_expect_token_locations) {
22337 pop_end_expect_token_locations(p);
22338 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
22343 RUBY_SET_YYLLOC(*p->yylloc);
22344 return END_OF_INPUT;
22350 case ' ':
case '\t':
case '\f':
22353 while ((c = nextc(p))) {
22358 case ' ':
case '\t':
case '\f':
22367 dispatch_scan_event(p, tSP);
22374 p->token_seen = token_seen;
22375 const char *
const pcur = p->lex.pcur, *
const ptok = p->lex.ptok;
22377 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
22378 if (comment_at_top(p)) {
22379 set_file_encoding(p, p->lex.pcur, p->lex.pend);
22382 p->lex.pcur = pcur, p->lex.ptok = ptok;
22384 dispatch_scan_event(p, tCOMMENT);
22388 p->token_seen = token_seen;
22390 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
22391 !IS_lex_state(EXPR_LABELED));
22392 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
22394 dispatch_scan_event(p, tIGNORED_NL);
22397 if (!c && p->ctxt.in_kwarg) {
22398 goto normal_newline;
22403 switch (c = nextc(p)) {
22404 case ' ':
case '\t':
case '\f':
case '\r':
22411 dispatch_scan_event(p, tSP);
22416 if (peek_word_at(p,
"nd", 2, 0))
goto leading_logical;
22419 if (peek_word_at(p,
"r", 1, 0))
goto leading_logical;
22422 if (peek(p,
'|'))
goto leading_logical;
22425 if (peek(p,
'&')) {
22428 dispatch_delayed_token(p, tIGNORED_NL);
22434 dispatch_delayed_token(p, tIGNORED_NL);
22435 if (peek(p,
'.') == (c ==
'&')) {
22437 dispatch_scan_event(p, tSP);
22443 p->ruby_sourceline--;
22444 p->lex.nextline = p->lex.lastline;
22445 set_lastline(p, prevline);
22447 if (c == -1 && space_seen) {
22448 dispatch_scan_event(p, tSP);
22453 RUBY_SET_YYLLOC(*p->yylloc);
22455 goto normal_newline;
22459 p->command_start = TRUE;
22460 SET_LEX_STATE(EXPR_BEG);
22464 if ((c = nextc(p)) ==
'*') {
22465 if ((c = nextc(p)) ==
'=') {
22466 set_yylval_id(idPow);
22467 SET_LEX_STATE(EXPR_BEG);
22471 if (IS_SPCARG(c)) {
22472 rb_warning0(
"'**' interpreted as argument prefix");
22475 else if (IS_BEG()) {
22479 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
22484 set_yylval_id(
'*');
22485 SET_LEX_STATE(EXPR_BEG);
22489 if (IS_SPCARG(c)) {
22490 rb_warning0(
"'*' interpreted as argument prefix");
22493 else if (IS_BEG()) {
22497 c = warn_balanced(
'*',
"*",
"argument prefix");
22500 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22505 if (IS_AFTER_OPERATOR()) {
22506 SET_LEX_STATE(EXPR_ARG);
22512 SET_LEX_STATE(EXPR_BEG);
22526 if (word_match_p(p,
"begin", 5)) {
22527 int first_p = TRUE;
22530 dispatch_scan_event(p, tEMBDOC_BEG);
22534 dispatch_scan_event(p, tEMBDOC);
22539 compile_error(p,
"embedded document meets end of file");
22540 return END_OF_INPUT;
22542 if (c ==
'=' && word_match_p(p,
"end", 3)) {
22548 dispatch_scan_event(p, tEMBDOC_END);
22553 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22554 if ((c = nextc(p)) ==
'=') {
22555 if ((c = nextc(p)) ==
'=') {
22564 else if (c ==
'>') {
22573 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
22575 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
22576 enum yytokentype token = heredoc_identifier(p);
22577 if (token)
return token < 0 ? 0 : token;
22579 if (IS_AFTER_OPERATOR()) {
22580 SET_LEX_STATE(EXPR_ARG);
22583 if (IS_lex_state(EXPR_CLASS))
22584 p->command_start = TRUE;
22585 SET_LEX_STATE(EXPR_BEG);
22588 if ((c = nextc(p)) ==
'>') {
22595 if ((c = nextc(p)) ==
'=') {
22596 set_yylval_id(idLTLT);
22597 SET_LEX_STATE(EXPR_BEG);
22601 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
22607 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22608 if ((c = nextc(p)) ==
'=') {
22612 if ((c = nextc(p)) ==
'=') {
22613 set_yylval_id(idGTGT);
22614 SET_LEX_STATE(EXPR_BEG);
22624 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22625 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
22626 p->lex.ptok = p->lex.pcur-1;
22627 return tSTRING_BEG;
22630 if (IS_lex_state(EXPR_FNAME)) {
22631 SET_LEX_STATE(EXPR_ENDFN);
22634 if (IS_lex_state(EXPR_DOT)) {
22636 SET_LEX_STATE(EXPR_CMDARG);
22638 SET_LEX_STATE(EXPR_ARG);
22641 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
22642 return tXSTRING_BEG;
22645 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22646 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
22647 p->lex.ptok = p->lex.pcur-1;
22648 return tSTRING_BEG;
22651 return parse_qmark(p, space_seen);
22654 if ((c = nextc(p)) ==
'&') {
22655 SET_LEX_STATE(EXPR_BEG);
22656 if ((c = nextc(p)) ==
'=') {
22657 set_yylval_id(idANDOP);
22658 SET_LEX_STATE(EXPR_BEG);
22664 else if (c ==
'=') {
22665 set_yylval_id(
'&');
22666 SET_LEX_STATE(EXPR_BEG);
22669 else if (c ==
'.') {
22670 set_yylval_id(idANDDOT);
22671 SET_LEX_STATE(EXPR_DOT);
22675 if (IS_SPCARG(c)) {
22677 (c = peekc_n(p, 1)) == -1 ||
22678 !(c ==
'\'' || c ==
'"' ||
22679 is_identchar(p, (p->lex.pcur+1), p->lex.pend, p->enc))) {
22680 rb_warning0(
"'&' interpreted as argument prefix");
22684 else if (IS_BEG()) {
22688 c = warn_balanced(
'&',
"&",
"argument prefix");
22690 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22694 if ((c = nextc(p)) ==
'|') {
22695 SET_LEX_STATE(EXPR_BEG);
22696 if ((c = nextc(p)) ==
'=') {
22697 set_yylval_id(idOROP);
22698 SET_LEX_STATE(EXPR_BEG);
22702 if (IS_lex_state_for(last_state, EXPR_BEG)) {
22710 set_yylval_id(
'|');
22711 SET_LEX_STATE(EXPR_BEG);
22714 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
22720 if (IS_AFTER_OPERATOR()) {
22721 SET_LEX_STATE(EXPR_ARG);
22729 set_yylval_id(
'+');
22730 SET_LEX_STATE(EXPR_BEG);
22733 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
22734 SET_LEX_STATE(EXPR_BEG);
22737 return parse_numeric(p,
'+');
22741 SET_LEX_STATE(EXPR_BEG);
22743 return warn_balanced(
'+',
"+",
"unary operator");
22747 if (IS_AFTER_OPERATOR()) {
22748 SET_LEX_STATE(EXPR_ARG);
22756 set_yylval_id(
'-');
22757 SET_LEX_STATE(EXPR_BEG);
22761 SET_LEX_STATE(EXPR_ENDFN);
22762 yylval.num = p->lex.lpar_beg;
22763 p->lex.lpar_beg = p->lex.paren_nest;
22766 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
22767 SET_LEX_STATE(EXPR_BEG);
22770 return tUMINUS_NUM;
22774 SET_LEX_STATE(EXPR_BEG);
22776 return warn_balanced(
'-',
"-",
"unary operator");
22779 int is_beg = IS_BEG();
22780 SET_LEX_STATE(EXPR_BEG);
22781 if ((c = nextc(p)) ==
'.') {
22782 if ((c = nextc(p)) ==
'.') {
22783 if (p->ctxt.in_argdef || IS_LABEL_POSSIBLE()) {
22784 SET_LEX_STATE(EXPR_ENDARG);
22787 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
22788 rb_warn0(
"... at EOL, should be parenthesized?");
22790 return is_beg ? tBDOT3 : tDOT3;
22793 return is_beg ? tBDOT2 : tDOT2;
22797 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
22798 parse_numeric(p,
'.');
22800 yyerror0(
"unexpected fraction part after numeric literal");
22803 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
22805 SET_LEX_STATE(EXPR_END);
22806 p->lex.ptok = p->lex.pcur;
22809 set_yylval_id(
'.');
22810 SET_LEX_STATE(EXPR_DOT);
22814 case '0':
case '1':
case '2':
case '3':
case '4':
22815 case '5':
case '6':
case '7':
case '8':
case '9':
22816 return parse_numeric(p, c);
22821 SET_LEX_STATE(EXPR_ENDFN);
22822 p->lex.paren_nest--;
22828 SET_LEX_STATE(EXPR_END);
22829 p->lex.paren_nest--;
22834 if (!p->lex.brace_nest--)
return tSTRING_DEND;
22837 SET_LEX_STATE(EXPR_END);
22838 p->lex.paren_nest--;
22844 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
22845 SET_LEX_STATE(EXPR_BEG);
22848 set_yylval_id(idCOLON2);
22849 SET_LEX_STATE(EXPR_DOT);
22852 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
22854 c = warn_balanced(
':',
":",
"symbol literal");
22855 SET_LEX_STATE(EXPR_BEG);
22860 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
22863 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
22869 SET_LEX_STATE(EXPR_FNAME);
22874 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22875 return tREGEXP_BEG;
22877 if ((c = nextc(p)) ==
'=') {
22878 set_yylval_id(
'/');
22879 SET_LEX_STATE(EXPR_BEG);
22883 if (IS_SPCARG(c)) {
22884 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22885 return tREGEXP_BEG;
22887 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22888 return warn_balanced(
'/',
"/",
"regexp literal");
22891 if ((c = nextc(p)) ==
'=') {
22892 set_yylval_id(
'^');
22893 SET_LEX_STATE(EXPR_BEG);
22896 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22901 SET_LEX_STATE(EXPR_BEG);
22902 p->command_start = TRUE;
22906 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22910 if (IS_AFTER_OPERATOR()) {
22911 if ((c = nextc(p)) !=
'@') {
22914 SET_LEX_STATE(EXPR_ARG);
22917 SET_LEX_STATE(EXPR_BEG);
22925 else if (!space_seen) {
22928 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
22931 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
22932 rb_warning0(
"parentheses after method name is interpreted as "
22933 "an argument list, not a decomposed argument");
22935 p->lex.paren_nest++;
22938 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22942 p->lex.paren_nest++;
22943 if (IS_AFTER_OPERATOR()) {
22944 if ((c = nextc(p)) ==
']') {
22945 p->lex.paren_nest--;
22946 SET_LEX_STATE(EXPR_ARG);
22947 if ((c = nextc(p)) ==
'=') {
22954 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
22957 else if (IS_BEG()) {
22960 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
22963 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22969 ++p->lex.brace_nest;
22970 if (lambda_beginning_p())
22972 else if (IS_lex_state(EXPR_LABELED))
22974 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
22976 else if (IS_lex_state(EXPR_ENDARG))
22980 if (c != tLBRACE) {
22981 p->command_start = TRUE;
22982 SET_LEX_STATE(EXPR_BEG);
22985 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22987 ++p->lex.paren_nest;
22996 dispatch_scan_event(p, tSP);
22999 if (c ==
' ')
return tSP;
23005 return parse_percent(p, space_seen, last_state);
23008 return parse_gvar(p, last_state);
23011 return parse_atmark(p, last_state);
23014 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
23015 p->ruby__end__seen = 1;
23019 dispatch_scan_event(p, k__END__);
23021 return END_OF_INPUT;
23027 if (!parser_is_identchar(p)) {
23028 compile_error(p,
"Invalid char '\\x%02X' in expression", c);
23037 return parse_ident(p, c, cmd_state);
23040static enum yytokentype
23043 enum yytokentype t;
23047 p->yylloc = yylloc;
23049 t = parser_yylex(p);
23051 if (has_delayed_token(p))
23052 dispatch_delayed_token(p, t);
23053 else if (t != END_OF_INPUT)
23054 dispatch_scan_event(p, t);
23059#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
23062node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment)
23064 NODE *n = rb_ast_newnode(p->ast,
type, size, alignment);
23066 rb_node_init(n,
type);
23074 nd_set_line(nd, loc->beg_pos.lineno);
23081 NODE *n = node_new_internal(p,
type, size, alignment);
23083 nd_set_loc(n, loc);
23084 nd_set_node_id(n, parser_get_node_id(p));
23088#define NODE_NEWNODE(node_type, type, loc) (type *)(node_newnode(p, node_type, sizeof(type), RUBY_ALIGNOF(type), loc))
23094 nd_tbl = local_tbl(p);
23096 n->nd_tbl = nd_tbl;
23097 n->nd_body = nd_body;
23098 n->nd_parent = nd_parent;
23099 n->nd_args = nd_args;
23108 n->nd_tbl = nd_tbl;
23109 n->nd_body = nd_body;
23110 n->nd_parent = nd_parent;
23111 n->nd_args = nd_args;
23120 n->nd_mid = nd_mid;
23121 n->nd_defn = nd_defn;
23130 n->nd_recv = nd_recv;
23131 n->nd_mid = nd_mid;
23132 n->nd_defn = nd_defn;
23141 n->nd_head = nd_head;
23142 n->nd_end = (
NODE *)n;
23152 n->nd_body = nd_body;
23153 n->nd_iter = nd_iter;
23154 n->for_keyword_loc = *for_keyword_loc;
23155 n->in_keyword_loc = *in_keyword_loc;
23156 n->do_keyword_loc = *do_keyword_loc;
23157 n->end_keyword_loc = *end_keyword_loc;
23166 n->nd_var = nd_var;
23183 n->nd_body = nd_body;
23192 n->nd_head = nd_head;
23193 n->nd_resq = nd_resq;
23194 n->nd_else = nd_else;
23203 n->nd_args = nd_args;
23204 n->nd_exc_var = nd_exc_var;
23205 n->nd_body = nd_body;
23206 n->nd_next = nd_next;
23215 n->nd_head = nd_head;
23216 n->nd_ensr = nd_ensr;
23225 n->nd_1st = nd_1st;
23226 n->nd_2nd = nd_2nd;
23227 n->operator_loc = *operator_loc;
23236 n->nd_1st = nd_1st;
23237 n->nd_2nd = nd_2nd;
23238 n->operator_loc = *operator_loc;
23247 n->nd_stts = nd_stts;
23248 n->keyword_loc = *keyword_loc;
23255 if (nd_head) no_blockarg(p, nd_head);
23258 n->nd_head = nd_head;
23259 n->keyword_loc = *keyword_loc;
23260 n->lparen_loc = *lparen_loc;
23261 n->rparen_loc = *rparen_loc;
23270 n->nd_cond = nd_cond;
23271 n->nd_body = nd_body;
23272 n->nd_else = nd_else;
23273 n->if_keyword_loc = *if_keyword_loc;
23274 n->then_keyword_loc = *then_keyword_loc;
23275 n->end_keyword_loc = *end_keyword_loc;
23284 n->nd_cond = nd_cond;
23285 n->nd_body = nd_body;
23286 n->nd_else = nd_else;
23287 n->keyword_loc = *keyword_loc;
23288 n->then_keyword_loc = *then_keyword_loc;
23289 n->end_keyword_loc = *end_keyword_loc;
23298 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
23300 RNODE_SCOPE(scope)->nd_parent = &n->node;
23301 n->nd_cpath = nd_cpath;
23302 n->nd_body = scope;
23303 n->nd_super = nd_super;
23304 n->class_keyword_loc = *class_keyword_loc;
23305 n->inheritance_operator_loc = *inheritance_operator_loc;
23306 n->end_keyword_loc = *end_keyword_loc;
23315 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
23317 RNODE_SCOPE(scope)->nd_parent = &n->node;
23318 n->nd_recv = nd_recv;
23319 n->nd_body = scope;
23320 n->class_keyword_loc = *class_keyword_loc;
23321 n->operator_loc = *operator_loc;
23322 n->end_keyword_loc = *end_keyword_loc;
23331 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
23333 RNODE_SCOPE(scope)->nd_parent = &n->node;
23334 n->nd_cpath = nd_cpath;
23335 n->nd_body = scope;
23336 n->module_keyword_loc = *module_keyword_loc;
23337 n->end_keyword_loc = *end_keyword_loc;
23346 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
23348 RNODE_SCOPE(scope)->nd_parent = &n->node;
23349 n->nd_body = scope;
23359 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
23360 YYLTYPE lambda_loc = code_loc_gen(operator_loc, closing_loc);
23362 RNODE_SCOPE(scope)->nd_parent = &n->node;
23363 n->nd_body = scope;
23364 n->operator_loc = *operator_loc;
23365 n->opening_loc = *opening_loc;
23366 n->closing_loc = *closing_loc;
23375 n->nd_head = nd_head;
23376 n->nd_body = nd_body;
23377 n->case_keyword_loc = *case_keyword_loc;
23378 n->end_keyword_loc = *end_keyword_loc;
23388 n->nd_body = nd_body;
23389 n->case_keyword_loc = *case_keyword_loc;
23390 n->end_keyword_loc = *end_keyword_loc;
23399 n->nd_head = nd_head;
23400 n->nd_body = nd_body;
23401 n->case_keyword_loc = *case_keyword_loc;
23402 n->end_keyword_loc = *end_keyword_loc;
23411 n->nd_head = nd_head;
23412 n->nd_body = nd_body;
23413 n->nd_next = nd_next;
23414 n->keyword_loc = *keyword_loc;
23415 n->then_keyword_loc = *then_keyword_loc;
23424 n->nd_head = nd_head;
23425 n->nd_body = nd_body;
23426 n->nd_next = nd_next;
23427 n->in_keyword_loc = *in_keyword_loc;
23428 n->then_keyword_loc = *then_keyword_loc;
23429 n->operator_loc = *operator_loc;
23438 n->nd_cond = nd_cond;
23439 n->nd_body = nd_body;
23440 n->nd_state = nd_state;
23441 n->keyword_loc = *keyword_loc;
23442 n->closing_loc = *closing_loc;
23451 n->nd_cond = nd_cond;
23452 n->nd_body = nd_body;
23453 n->nd_state = nd_state;
23454 n->keyword_loc = *keyword_loc;
23455 n->closing_loc = *closing_loc;
23464 n->nd_head = nd_head;
23465 n->nd_mid = nd_mid;
23466 n->delimiter_loc = *delimiter_loc;
23467 n->name_loc = *name_loc;
23476 n->nd_mid = nd_mid;
23477 n->delimiter_loc = *delimiter_loc;
23478 n->name_loc = *name_loc;
23487 n->nd_beg = nd_beg;
23488 n->nd_end = nd_end;
23489 n->operator_loc = *operator_loc;
23498 n->nd_beg = nd_beg;
23499 n->nd_end = nd_end;
23500 n->operator_loc = *operator_loc;
23543 n->nd_args = nd_args;
23544 n->keyword_loc = *keyword_loc;
23545 n->lparen_loc = *lparen_loc;
23546 n->rparen_loc = *rparen_loc;
23563 n->nd_recv = nd_recv;
23564 n->nd_value = nd_value;
23574 n->nd_recv = nd_recv;
23575 n->nd_value = nd_value;
23583 return rb_node_list_new2(p, nd_head, 1, 0, loc);
23590 n->nd_head = nd_head;
23591 n->as.nd_alen = nd_alen;
23592 n->nd_next = nd_next;
23609 n->nd_head = nd_head;
23619 n->nd_head = nd_head;
23621 n->nd_args = nd_args;
23630 n->nd_vid = nd_vid;
23631 n->nd_value = nd_value;
23640 n->nd_vid = nd_vid;
23641 n->nd_value = nd_value;
23650 n->nd_vid = nd_vid;
23651 n->nd_value = nd_value;
23660 n->nd_vid = nd_vid;
23661 n->nd_value = nd_value;
23670 n->nd_vid = nd_vid;
23671 n->nd_value = nd_value;
23680 n->nd_recv = nd_recv;
23681 n->nd_mid = nd_mid;
23682 n->nd_index = index;
23683 n->nd_rvalue = rvalue;
23684 n->call_operator_loc = *call_operator_loc;
23685 n->opening_loc = *opening_loc;
23686 n->closing_loc = *closing_loc;
23687 n->binary_operator_loc = *binary_operator_loc;
23696 n->nd_recv = nd_recv;
23697 n->nd_value = nd_value;
23698 n->nd_vid = nd_vid;
23699 n->nd_mid = nd_mid;
23700 n->nd_aid = nd_aid;
23701 n->call_operator_loc = *call_operator_loc;
23702 n->message_loc = *message_loc;
23703 n->binary_operator_loc = *binary_operator_loc;
23712 n->nd_head = nd_head;
23713 n->nd_value = nd_value;
23722 n->nd_head = nd_head;
23723 n->nd_value = nd_value;
23732 n->nd_vid = nd_vid;
23741 n->nd_vid = nd_vid;
23750 n->nd_vid = nd_vid;
23759 n->nd_vid = nd_vid;
23768 n->nd_vid = nd_vid;
23777 n->nd_vid = nd_vid;
23786 n->nd_nth = nd_nth;
23795 n->nd_nth = nd_nth;
23822rb_node_rational_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
const YYLTYPE *loc)
23828 n->seen_point = seen_point;
23834rb_node_imaginary_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
enum rb_numeric_type numeric_type,
const YYLTYPE *loc)
23840 n->seen_point = seen_point;
23841 n->type = numeric_type;
23850 n->string = string;
23860 n->string = string;
23861 n->as.nd_alen = nd_alen;
23870 return rb_node_dstr_new0(p,
string, 1, 0, loc);
23877 n->string = string;
23886 n->string = string;
23887 n->as.nd_alen = nd_alen;
23897 n->string = rb_str_to_parser_string(p, str);
23906 n->string = string;
23907 n->as.nd_alen = nd_alen;
23917 n->nd_body = nd_body;
23918 n->opening_loc = *opening_loc;
23919 n->closing_loc = *closing_loc;
23928 n->string = string;
23929 n->options = options & RE_OPTION_MASK;
23930 n->opening_loc = *opening_loc;
23931 n->content_loc = *content_loc;
23932 n->closing_loc = *closing_loc;
23941 n->nd_recv = nd_recv;
23942 n->nd_mid = nd_mid;
23943 n->nd_args = nd_args;
23952 n->nd_recv = nd_recv;
23953 n->nd_mid = nd_mid;
23954 n->nd_args = nd_args;
23963 n->nd_mid = nd_mid;
23964 n->nd_args = nd_args;
23973 n->nd_recv = nd_recv;
23974 n->nd_mid = nd_mid;
23975 n->nd_args = nd_args;
23984 n->nd_mid = nd_mid;
23993 n->nd_body = nd_body;
24011 n->nd_pid = nd_pid;
24012 n->nd_plen = nd_plen;
24022 n->nd_body = nd_body;
24032 n->nd_body = nd_body;
24042 n->nd_1st = nd_1st;
24043 n->nd_2nd = nd_2nd;
24052 n->nd_head = nd_head;
24053 n->nd_body = nd_body;
24062 n->nd_head = nd_head;
24063 n->nd_body = nd_body;
24072 n->nd_head = nd_head;
24073 n->operator_loc = *operator_loc;
24084 n->nd_body = nd_body;
24085 n->operator_loc = *operator_loc;
24094 n->nd_1st = nd_1st;
24095 n->nd_2nd = nd_2nd;
24096 n->keyword_loc = *keyword_loc;
24105 n->nd_alias = nd_alias;
24106 n->nd_orig = nd_orig;
24107 n->keyword_loc = *keyword_loc;
24116 n->nd_undefs = rb_parser_ary_new_capa_for_node(p, 1);
24117 n->keyword_loc = NULL_LOC;
24118 rb_parser_ary_push_node(p, n->nd_undefs, nd_undef);
24135 n->nd_head = nd_head;
24136 n->keyword_loc = *keyword_loc;
24145 n->nd_body = nd_body;
24146 n->keyword_loc = *keyword_loc;
24147 n->opening_loc = *opening_loc;
24148 n->closing_loc = *closing_loc;
24157 n->nd_recv = nd_recv;
24158 n->nd_mid = nd_mid;
24159 n->nd_args = nd_args;
24169 n->pre_args = pre_args;
24170 n->rest_arg = rest_arg;
24171 n->post_args = post_args;
24180 n->nd_pconst = nd_pconst;
24181 n->nd_pkwargs = nd_pkwargs;
24182 n->nd_pkwrestarg = nd_pkwrestarg;
24192 n->pre_rest_arg = pre_rest_arg;
24194 n->post_rest_arg = post_rest_arg;
24211 n->path = rb_str_to_parser_string(p, str);
24226rb_node_cdecl_new(
struct parser_params *p,
ID nd_vid,
NODE *nd_value,
NODE *nd_else,
enum rb_parser_shareability shareability,
const YYLTYPE *loc)
24229 n->nd_vid = nd_vid;
24230 n->nd_value = nd_value;
24231 n->nd_else = nd_else;
24232 n->shareability = shareability;
24238rb_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)
24241 n->nd_head = nd_head;
24242 n->nd_value = nd_value;
24243 n->nd_aid = nd_aid;
24244 n->shareability = shareability;
24261 n->nd_stts = nd_stts;
24263 n->keyword_loc = *keyword_loc;
24272 n->nd_stts = nd_stts;
24274 n->keyword_loc = *keyword_loc;
24284 n->keyword_loc = *keyword_loc;
24293 n->save.numparam_save = 0;
24294 n->save.max_numparam = 0;
24295 n->save.ctxt = p->ctxt;
24305 n->save.numparam_save = numparam_push(p);
24306 n->save.max_numparam = p->max_numparam;
24311static enum node_type
24312nodetype(
NODE *node)
24314 return (
enum node_type)nd_type(node);
24318nodeline(
NODE *node)
24320 return nd_line(node);
24325newline_node(
NODE *node)
24328 node = remove_begin(node);
24329 nd_set_fl_newline(node);
24339 nd_set_line(node, nd_line(orig));
24345 NODE *end, *h = head, *nd;
24347 if (tail == 0)
return head;
24349 if (h == 0)
return tail;
24350 switch (nd_type(h)) {
24352 h = end = NEW_BLOCK(head, &head->nd_loc);
24356 end = RNODE_BLOCK(h)->nd_end;
24360 nd = RNODE_BLOCK(end)->nd_head;
24361 switch (nd_type(nd)) {
24367 rb_warning0L(nd_line(tail),
"statement not reached");
24374 if (!nd_type_p(tail, NODE_BLOCK)) {
24375 tail = NEW_BLOCK(tail, &tail->nd_loc);
24377 RNODE_BLOCK(end)->nd_next = tail;
24378 RNODE_BLOCK(h)->nd_end = RNODE_BLOCK(tail)->nd_end;
24379 nd_set_last_loc(head, nd_last_loc(tail));
24389 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
24390 if (RNODE_LIST(list)->nd_next) {
24391 last = RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end;
24397 RNODE_LIST(list)->as.nd_alen += 1;
24398 RNODE_LIST(last)->nd_next = NEW_LIST(item, &item->nd_loc);
24399 RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end = RNODE_LIST(last)->nd_next;
24401 nd_set_last_loc(list, nd_last_loc(item));
24408list_concat(
NODE *head,
NODE *tail)
24412 if (RNODE_LIST(head)->nd_next) {
24413 last = RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end;
24419 RNODE_LIST(head)->as.nd_alen += RNODE_LIST(tail)->as.nd_alen;
24420 RNODE_LIST(last)->nd_next = tail;
24421 if (RNODE_LIST(tail)->nd_next) {
24422 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = RNODE_LIST(RNODE_LIST(tail)->nd_next)->as.nd_end;
24425 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = tail;
24428 nd_set_last_loc(head, nd_last_loc(tail));
24436 if (!tail)
return 1;
24437 if (!rb_parser_enc_compatible(p, head, tail)) {
24438 compile_error(p,
"string literal encodings differ (%s / %s)",
24439 rb_enc_name(rb_parser_str_get_encoding(head)),
24440 rb_enc_name(rb_parser_str_get_encoding(tail)));
24441 rb_parser_str_resize(p, head, 0);
24442 rb_parser_str_resize(p, tail, 0);
24445 rb_parser_str_buf_append(p, head, tail);
24452 if (htype != NODE_DSTR)
return NULL;
24453 if (RNODE_DSTR(head)->nd_next) {
24454 head = RNODE_LIST(RNODE_LIST(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_head;
24455 if (!head || !nd_type_p(head, NODE_STR))
return NULL;
24467 if (!orig)
return NULL;
24468 copy = rb_parser_string_new(p, PARSER_STRING_PTR(orig), PARSER_STRING_LEN(orig));
24469 copy->coderange = orig->coderange;
24470 copy->enc = orig->enc;
24479 enum node_type htype;
24482 if (!head)
return tail;
24483 if (!tail)
return head;
24485 htype = nd_type(head);
24486 if (htype == NODE_EVSTR) {
24487 head = new_dstr(p, head, loc);
24490 if (p->heredoc_indent > 0) {
24493 head = str2dstr(p, head);
24495 return list_append(p, head, tail);
24500 switch (nd_type(tail)) {
24502 if ((lit = string_literal_head(p, htype, head)) !=
false) {
24506 lit = RNODE_DSTR(head)->string;
24508 if (htype == NODE_STR) {
24509 if (!literal_concat0(p, lit, RNODE_STR(tail)->
string)) {
24511 rb_discard_node(p, head);
24512 rb_discard_node(p, tail);
24515 rb_discard_node(p, tail);
24518 list_append(p, head, tail);
24523 if (htype == NODE_STR) {
24524 if (!literal_concat0(p, RNODE_STR(head)->
string, RNODE_DSTR(tail)->
string))
24526 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24527 RNODE_DSTR(tail)->string = RNODE_STR(head)->string;
24528 RNODE_STR(head)->string = NULL;
24529 rb_discard_node(p, head);
24532 else if (!RNODE_DSTR(tail)->
string) {
24534 RNODE_DSTR(head)->as.nd_alen += RNODE_DSTR(tail)->as.nd_alen - 1;
24535 if (!RNODE_DSTR(head)->nd_next) {
24536 RNODE_DSTR(head)->nd_next = RNODE_DSTR(tail)->nd_next;
24538 else if (RNODE_DSTR(tail)->nd_next) {
24539 RNODE_DSTR(RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_next = RNODE_DSTR(tail)->nd_next;
24540 RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end = RNODE_DSTR(RNODE_DSTR(tail)->nd_next)->as.nd_end;
24542 rb_discard_node(p, tail);
24544 else if ((lit = string_literal_head(p, htype, head)) !=
false) {
24545 if (!literal_concat0(p, lit, RNODE_DSTR(tail)->
string))
24547 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24548 RNODE_DSTR(tail)->string = 0;
24552 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));
24553 RNODE_DSTR(tail)->string = 0;
24558 if (htype == NODE_STR) {
24559 head = str2dstr(p, head);
24560 RNODE_DSTR(head)->as.nd_alen = 1;
24562 list_append(p, head, tail);
24569nd_copy_flag(
NODE *new_node,
NODE *old_node)
24571 if (nd_fl_newline(old_node)) nd_set_fl_newline(new_node);
24572 nd_set_line(new_node, nd_line(old_node));
24573 new_node->nd_loc = old_node->nd_loc;
24574 new_node->node_id = old_node->node_id;
24581 nd_copy_flag(new_node, node);
24582 RNODE_DSTR(new_node)->string = RNODE_STR(node)->string;
24583 RNODE_DSTR(new_node)->as.nd_alen = 0;
24584 RNODE_DSTR(new_node)->nd_next = 0;
24585 RNODE_STR(node)->string = 0;
24594 nd_copy_flag(new_node, node);
24595 RNODE_REGX(new_node)->string = RNODE_STR(node)->string;
24596 RNODE_REGX(new_node)->options = options;
24597 nd_set_loc(new_node, loc);
24598 RNODE_REGX(new_node)->opening_loc = *opening_loc;
24599 RNODE_REGX(new_node)->content_loc = *content_loc;
24600 RNODE_REGX(new_node)->closing_loc = *closing_loc;
24601 RNODE_STR(node)->string = 0;
24609 if (nd_type_p(node, NODE_EVSTR)) {
24610 node = new_dstr(p, node, &node->nd_loc);
24621 switch (nd_type(node)) {
24623 return str2dstr(p, node);
24630 return NEW_EVSTR(head, loc, opening_loc, closing_loc);
24636 NODE *dstr = NEW_DSTR(STRING_NEW0(), loc);
24637 return list_append(p, dstr, node);
24645 value_expr(p, recv);
24646 value_expr(p, arg1);
24647 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
24648 nd_set_line(expr, op_loc->beg_pos.lineno);
24656 value_expr(p, recv);
24657 opcall = NEW_OPCALL(recv,
id, 0, loc);
24658 nd_set_line(opcall, op_loc->beg_pos.lineno);
24665 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
24666 nd_set_line(qcall, op_loc->beg_pos.lineno);
24674 if (block) block_dup_check(p, args, block);
24675 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
24676 if (block) ret = method_add_block(p, ret, block, loc);
24686 body->opening_loc = *opening_loc;
24687 body->closing_loc = *closing_loc;
24695 enum node_type
type = nd_type(m);
24698 compile_error(p,
"block given to yield");
24701 body = &RNODE_RETURN(m)->nd_stts;
24705 body = &RNODE_EXITS(m)->nd_stts;
24708 compile_error(p,
"command_add_block: unexpected node: NODE_REDO");
24711 compile_error(p,
"command_add_block: unexpected node: NODE_RETRY");
24714 block_dup_check(p, get_nd_args(p, m), b);
24715 return method_add_block(p, m, b, loc);
24717 RUBY_ASSERT(*body,
"no argument %s with do_block", parser_node_name(
type));
24718 YYLTYPE b_loc = code_loc_gen(&(*body)->nd_loc, loc);
24719 *body = command_add_block(p, *body, b, &b_loc);
24720 m->nd_loc.end_pos = loc->end_pos;
24724#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? RNODE_ONCE(node)->nd_body : node)
24727last_expr_once_body(
NODE *node)
24729 if (!node)
return 0;
24730 return nd_once_body(node);
24737 int line = op_loc->beg_pos.lineno;
24739 value_expr(p, node1);
24740 value_expr(p, node2);
24742 if ((n = last_expr_once_body(node1)) != 0) {
24743 switch (nd_type(n)) {
24746 NODE *match = NEW_MATCH2(node1, node2, loc);
24747 nd_set_line(match, line);
24753 const VALUE lit = rb_node_regx_string_val(n);
24755 NODE *match = NEW_MATCH2(node1, node2, loc);
24756 RNODE_MATCH2(match)->nd_args = reg_named_capture_assign(p, lit, loc, assignable);
24757 nd_set_line(match, line);
24764 if ((n = last_expr_once_body(node2)) != 0) {
24767 switch (nd_type(n)) {
24769 match3 = NEW_MATCH3(node2, node1, loc);
24774 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
24775 nd_set_line(n, line);
24779# if WARN_PAST_SCOPE
24783 struct vtable *past = p->lvtbl->past;
24785 if (vtable_included(past,
id))
return 1;
24796 NODE *outer = local->numparam.outer;
24797 NODE *inner = local->numparam.inner;
24798 if (outer || inner) {
24799 NODE *used = outer ? outer : inner;
24800 compile_error(p,
"numbered parameter is already used in %s block\n"
24801 "%s:%d: numbered parameter is already used here",
24802 outer ?
"outer" :
"inner",
24803 p->ruby_sourcefile, nd_line(used));
24804 parser_show_error_line(p, &used->nd_loc);
24813 NODE *numparam = p->lvtbl->numparam.current;
24815 compile_error(p,
"'it' is not allowed when a numbered parameter is already used\n"
24816 "%s:%d: numbered parameter is already used here",
24817 p->ruby_sourcefile, nd_line(numparam));
24818 parser_show_error_line(p, &numparam->nd_loc);
24827 NODE *it = p->lvtbl->it;
24829 compile_error(p,
"numbered parameters are not allowed when 'it' is already used\n"
24830 "%s:%d: 'it' is already used here",
24831 p->ruby_sourcefile, nd_line(it));
24832 parser_show_error_line(p, &it->nd_loc);
24845 return NEW_SELF(loc);
24847 return NEW_NIL(loc);
24849 return NEW_TRUE(loc);
24850 case keyword_false:
24851 return NEW_FALSE(loc);
24852 case keyword__FILE__:
24854 VALUE file = p->ruby_sourcefile_string;
24857 node = NEW_FILE(file, loc);
24860 case keyword__LINE__:
24861 return NEW_LINE(loc);
24862 case keyword__ENCODING__:
24863 return NEW_ENCODING(loc);
24866 switch (id_type(
id)) {
24868 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
24869 if (NUMPARAM_ID_P(
id) && (numparam_nested_p(p) || it_used_p(p)))
return 0;
24870 if (vidp) *vidp |= LVAR_USED;
24871 node = NEW_DVAR(
id, loc);
24874 if (local_id_ref(p,
id, &vidp)) {
24875 if (vidp) *vidp |= LVAR_USED;
24876 node = NEW_LVAR(
id, loc);
24879 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
24880 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
24881 if (numparam_nested_p(p) || it_used_p(p))
return 0;
24882 node = NEW_DVAR(
id, loc);
24884 if (!local->numparam.current) local->numparam.current = node;
24887# if WARN_PAST_SCOPE
24889 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
24893 if (dyna_in_block(p) &&
id == idIt && !(DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev))) {
24894 if (numparam_used_p(p))
return 0;
24895 if (p->max_numparam == ORDINAL_PARAM) {
24896 compile_error(p,
"ordinary parameter is defined");
24900 p->it_id = idItImplicit;
24901 vtable_add(p->lvtbl->args, p->it_id);
24903 NODE *node = NEW_DVAR(p->it_id, loc);
24904 if (!p->lvtbl->it) p->lvtbl->it = node;
24907 return NEW_VCALL(
id, loc);
24909 return NEW_GVAR(
id, loc);
24911 return NEW_IVAR(
id, loc);
24913 return NEW_CONST(
id, loc);
24915 return NEW_CVAR(
id, loc);
24917 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24925 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24927 while (opts->nd_next) {
24928 opts = opts->nd_next;
24929 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24931 opts->nd_next = opt;
24941 opt_arg_append(RNODE_OPT_ARG(kwlist), RNODE_OPT_ARG(kw));
24949 int had_trailing_semicolon = p->ctxt.has_trailing_semicolon;
24950 p->ctxt.has_trailing_semicolon = 0;
24954 if (nd_type_p(n, NODE_BEGIN)) {
24955 n = RNODE_BEGIN(n)->nd_body;
24957 else if (nd_type_p(n, NODE_BLOCK) && RNODE_BLOCK(n)->nd_end == n) {
24958 n = RNODE_BLOCK(n)->nd_head;
24965 if (had_trailing_semicolon && !nd_type_p(expr, NODE_BLOCK)) {
24966 NODE *block = NEW_BLOCK(expr, loc);
24967 return NEW_DEFINED(block, loc, keyword_loc);
24970 return NEW_DEFINED(n, loc, keyword_loc);
24978 if (rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_BROKEN) {
24979 yyerror1(loc,
"invalid symbol");
24983 lit = rb_str_new_parser_string(str);
24985 return NEW_SYM(lit, loc);
24991 enum node_type
type = nd_type(symbol);
24994 nd_set_type(symbol, NODE_DSYM);
24997 symbol = str_to_sym_node(p, symbol, &RNODE(symbol)->nd_loc);
25000 compile_error(p,
"unexpected node as symbol: %s", parser_node_name(
type));
25002 return list_append(p, symbols, symbol);
25008 if (dreg->string) {
25009 reg_fragment_setenc(p, dreg->string, options);
25011 for (
struct RNode_LIST *list = dreg->nd_next; list; list = RNODE_LIST(list->nd_next)) {
25012 NODE *frag = list->nd_head;
25013 if (nd_type_p(frag, NODE_STR)) {
25014 reg_fragment_setenc(p, RNODE_STR(frag)->
string, options);
25016 else if (nd_type_p(frag, NODE_DSTR)) {
25017 dregex_fragment_setenc(p, RNODE_DSTR(frag), options);
25028 reg_compile(p, str, options);
25029 node = NEW_REGX(str, options, loc, opening_loc, content_loc, closing_loc);
25032 switch (nd_type(node)) {
25036 reg_compile(p, RNODE_STR(node)->
string, options);
25037 node = str2regx(p, node, options, loc, opening_loc, content_loc, closing_loc);
25041 node = NEW_DSTR0(STRING_NEW0(), 1, NEW_LIST(node, loc), loc);
25044 nd_set_type(node, NODE_DREGX);
25045 nd_set_loc(node, loc);
25047 dreg->as.nd_cflag = options & RE_OPTION_MASK;
25048 if (dreg->nd_next) {
25049 dregex_fragment_setenc(p, dreg, options);
25051 if (options & RE_OPTION_ONCE) {
25052 node = NEW_ONCE(node, loc);
25063 return NEW_KW_ARG((k), loc);
25070 NODE *xstr = NEW_XSTR(STRING_NEW0(), loc);
25073 switch (nd_type(node)) {
25075 nd_set_type(node, NODE_XSTR);
25076 nd_set_loc(node, loc);
25079 nd_set_type(node, NODE_DXSTR);
25080 nd_set_loc(node, loc);
25083 node = NEW_DXSTR(0, 1, NEW_LIST(node, loc), loc);
25095static int nd_type_st_key_enable_p(
NODE *node);
25101 if (!arg || !p->case_labels)
return;
25102 if (!nd_type_st_key_enable_p(arg))
return;
25104 if (p->case_labels == CHECK_LITERAL_WHEN) {
25105 p->case_labels = st_init_table(&literal_type);
25109 if (st_lookup(p->case_labels, (st_data_t)arg, &line)) {
25110 rb_warning2(
"'when' clause on line %d duplicates 'when' clause on line %d and is ignored",
25111 WARN_I((
int)nd_line(arg)), WARN_I((
int)line));
25115 st_insert(p->case_labels, (st_data_t)arg, (st_data_t)p->ruby_sourceline);
25122 if (is_notop_id(
id)) {
25123 switch (
id & ID_SCOPE_MASK) {
25124 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
25127 if (dyna_in_block(p)) {
25128 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
25130 if (local_id(p,
id))
return 1;
25135 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
25140static inline enum lex_state_e
25141parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
25144 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
25146 return p->lex.state = ls;
25153 VALUE mesg = p->debug_buffer;
25155 if (!
NIL_P(mesg) && RSTRING_LEN(mesg)) {
25156 p->debug_buffer =
Qnil;
25157 rb_io_puts(1, &mesg, out);
25159 if (!
NIL_P(str) && RSTRING_LEN(str)) {
25160 rb_io_write(p->debug_output, str);
25164static const char rb_parser_lex_state_names[][8] = {
25165 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
25166 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
25167 "LABEL",
"LABELED",
"FITEM",
25174 unsigned int mask = 1;
25175 static const char none[] =
"NONE";
25177 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
25178 if ((
unsigned)state & mask) {
25193rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
25194 enum lex_state_e to,
int line)
25198 append_lex_state_name(p, from, mesg);
25200 append_lex_state_name(p, to, mesg);
25201 rb_str_catf(mesg,
" at line %d\n", line);
25202 flush_debug_buffer(p, p->debug_output, mesg);
25207rb_parser_lex_state_name(
struct parser_params *p,
enum lex_state_e state)
25209 return rb_str_to_interned_str(append_lex_state_name(p, state,
rb_str_new(0, 0)));
25219 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
25220 for (; mask && !(stack & mask); mask >>= 1)
continue;
25221 for (; mask; mask >>= 1)
rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
25226rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
25227 const char *name,
int line)
25229 VALUE mesg = rb_sprintf(
"%s: ", name);
25230 append_bitstack_value(p, stack, mesg);
25231 rb_str_catf(mesg,
" at line %d\n", line);
25232 flush_debug_buffer(p, p->debug_output, mesg);
25236rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
25242 rb_str_vcatf(mesg, fmt, ap);
25244 yyerror0(RSTRING_PTR(mesg));
25248 append_lex_state_name(p, p->lex.state, mesg);
25249 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
25250 rb_str_resize(mesg, 0);
25251 append_bitstack_value(p, p->cond_stack, mesg);
25252 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
25253 rb_str_resize(mesg, 0);
25254 append_bitstack_value(p, p->cmdarg_stack, mesg);
25255 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
25256 if (p->debug_output == rb_ractor_stdout())
25257 p->debug_output = rb_ractor_stderr();
25262rb_parser_set_pos(
YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
25264 yylloc->beg_pos.lineno = sourceline;
25265 yylloc->beg_pos.column = beg_pos;
25266 yylloc->end_pos.lineno = sourceline;
25267 yylloc->end_pos.column = end_pos;
25274 int sourceline = here->sourceline;
25275 int beg_pos = (int)here->offset - here->quote
25276 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
25277 int end_pos = (int)here->offset + here->length + here->quote;
25279 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25285 yylloc->beg_pos.lineno = p->delayed.beg_line;
25286 yylloc->beg_pos.column = p->delayed.beg_col;
25287 yylloc->end_pos.lineno = p->delayed.end_line;
25288 yylloc->end_pos.column = p->delayed.end_col;
25296 int sourceline = p->ruby_sourceline;
25297 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
25298 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
25299 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25305 yylloc->end_pos = yylloc->beg_pos;
25313 int sourceline = p->ruby_sourceline;
25314 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
25315 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
25316 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25322 int sourceline = p->ruby_sourceline;
25323 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
25324 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
25325 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25332 if (!
id)
return -1;
25335 *err =
"Can't change the value of self";
25338 *err =
"Can't assign to nil";
25341 *err =
"Can't assign to true";
25343 case keyword_false:
25344 *err =
"Can't assign to false";
25346 case keyword__FILE__:
25347 *err =
"Can't assign to __FILE__";
25349 case keyword__LINE__:
25350 *err =
"Can't assign to __LINE__";
25352 case keyword__ENCODING__:
25353 *err =
"Can't assign to __ENCODING__";
25356 switch (id_type(
id)) {
25358 if (dyna_in_block(p)) {
25359 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
25360 compile_error(p,
"Can't assign to numbered parameter _%d",
25361 NUMPARAM_ID_TO_IDX(
id));
25364 if (dvar_curr(p,
id))
return NODE_DASGN;
25365 if (dvar_defined(p,
id))
return NODE_DASGN;
25366 if (local_id(p,
id))
return NODE_LASGN;
25371 if (!local_id(p,
id)) local_var(p,
id);
25375 case ID_GLOBAL:
return NODE_GASGN;
25376 case ID_INSTANCE:
return NODE_IASGN;
25378 if (!p->ctxt.in_def)
return NODE_CDECL;
25379 *err =
"dynamic constant assignment";
25381 case ID_CLASS:
return NODE_CVASGN;
25383 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
25391 const char *err = 0;
25392 int node_type = assignable0(p,
id, &err);
25393 switch (node_type) {
25394 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
25395 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
25396 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
25397 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
25398 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, p->ctxt.shareable_constant_value, loc);
25399 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
25403 if (err) yyerror1(loc, err);
25405 if (err) set_value(assign_error(p, err, p->s_lvalue));
25407 return NEW_ERROR(loc);
25414 if (name == idUScore)
return 1;
25415 if (!is_local_id(name))
return 0;
25416 s = rb_id2str(name);
25418 return RSTRING_PTR(s)[0] ==
'_';
25424 if (dyna_in_block(p)) {
25425 if (dvar_curr(p, name)) {
25426 if (is_private_local_id(p, name))
return 1;
25427 yyerror0(
"duplicated argument name");
25429 else if (dvar_defined(p, name) || local_id(p, name)) {
25430 vtable_add(p->lvtbl->vars, name);
25431 if (p->lvtbl->used) {
25432 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
25438 if (local_id(p, name)) {
25439 if (is_private_local_id(p, name))
return 1;
25440 yyerror0(
"duplicated argument name");
25449 shadowing_lvar_0(p, name);
25457 if (!is_local_id(name)) {
25458 compile_error(p,
"invalid local variable - %"PRIsVALUE,
25462 if (!shadowing_lvar_0(p, name))
return;
25465 if (dvar_defined_ref(p, name, &vidp)) {
25466 if (vidp) *vidp |= LVAR_USED;
25473 NODE *block = 0, *kwds = 0;
25474 if (args && nd_type_p(args, NODE_BLOCK_PASS)) {
25475 block = RNODE_BLOCK_PASS(args)->nd_body;
25476 args = RNODE_BLOCK_PASS(args)->nd_head;
25478 if (args && nd_type_p(args, NODE_ARGSCAT)) {
25479 args = RNODE_ARGSCAT(args)->nd_body;
25481 if (args && nd_type_p(args, NODE_ARGSPUSH)) {
25482 kwds = RNODE_ARGSPUSH(args)->nd_body;
25485 for (
NODE *next = args; next && nd_type_p(next, NODE_LIST);
25486 next = RNODE_LIST(next)->nd_next) {
25487 kwds = RNODE_LIST(next)->nd_head;
25490 if (kwds && nd_type_p(kwds, NODE_HASH) && !RNODE_HASH(kwds)->nd_brace) {
25491 yyerror1(&kwds->nd_loc,
"keyword arg given in index assignment");
25494 yyerror1(&block->nd_loc,
"block arg given in index assignment");
25501 aryset_check(p, idx);
25502 return NEW_ATTRASGN(recv, tASET, idx, loc);
25508 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
25509 compile_error(p,
"both block arg and actual block given");
25516 if (!CALL_Q_P(atype))
id = rb_id_attrset(
id);
25517 return NEW_ATTRASGN(recv,
id, 0, loc);
25524# define ERR(...) (compile_error(p, __VA_ARGS__), Qtrue)
25526# define ERR(...) rb_sprintf(__VA_ARGS__)
25528 switch (nd_type(node)) {
25530 return ERR(
"Can't set variable $%ld", RNODE_NTH_REF(node)->nd_nth);
25531 case NODE_BACK_REF:
25532 return ERR(
"Can't set variable $%c", (
int)RNODE_BACK_REF(node)->nd_nth);
25541 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
25542 switch (nd_type(node1)) {
25544 return list_append(p, node1, node2);
25545 case NODE_BLOCK_PASS:
25546 RNODE_BLOCK_PASS(node1)->nd_head = arg_append(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25547 node1->nd_loc.end_pos = RNODE_BLOCK_PASS(node1)->nd_head->nd_loc.end_pos;
25549 case NODE_ARGSPUSH:
25550 RNODE_ARGSPUSH(node1)->nd_body = list_append(p, NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, &RNODE_ARGSPUSH(node1)->nd_body->nd_loc), node2);
25551 node1->nd_loc.end_pos = RNODE_ARGSPUSH(node1)->nd_body->nd_loc.end_pos;
25552 nd_set_type(node1, NODE_ARGSCAT);
25555 if (!nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25556 RNODE_ARGSCAT(node1)->nd_body = list_append(p, RNODE_ARGSCAT(node1)->nd_body, node2);
25557 node1->nd_loc.end_pos = RNODE_ARGSCAT(node1)->nd_body->nd_loc.end_pos;
25560 return NEW_ARGSPUSH(node1, node2, loc);
25566 if (!node2)
return node1;
25567 switch (nd_type(node1)) {
25568 case NODE_BLOCK_PASS:
25569 if (RNODE_BLOCK_PASS(node1)->nd_head)
25570 RNODE_BLOCK_PASS(node1)->nd_head = arg_concat(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25572 RNODE_LIST(node1)->nd_head = NEW_LIST(node2, loc);
25574 case NODE_ARGSPUSH:
25575 if (!nd_type_p(node2, NODE_LIST))
break;
25576 RNODE_ARGSPUSH(node1)->nd_body = list_concat(NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, loc), node2);
25577 nd_set_type(node1, NODE_ARGSCAT);
25580 if (!nd_type_p(node2, NODE_LIST) ||
25581 !nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25582 RNODE_ARGSCAT(node1)->nd_body = list_concat(RNODE_ARGSCAT(node1)->nd_body, node2);
25585 return NEW_ARGSCAT(node1, node2, loc);
25592 if ((n1 = splat_array(args)) != 0) {
25593 return list_append(p, n1, last_arg);
25595 return arg_append(p, args, last_arg, loc);
25602 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
25603 return list_concat(n1, rest_arg);
25605 return arg_concat(p, args, rest_arg, loc);
25609splat_array(
NODE* node)
25611 if (nd_type_p(node, NODE_SPLAT)) node = RNODE_SPLAT(node)->nd_head;
25612 if (nd_type_p(node, NODE_LIST))
return node;
25621 switch (nd_type(rhs)) {
25623 if (local_id_ref(p, RNODE_LASGN(rhs)->nd_vid, &vidp)) {
25624 if (vidp) *vidp |= LVAR_USED;
25628 if (dvar_defined_ref(p, RNODE_DASGN(rhs)->nd_vid, &vidp)) {
25629 if (vidp) *vidp |= LVAR_USED;
25634 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
25635 mark_lvar_used(p, rhs->nd_head);
25642static int is_static_content(
NODE *node);
25647 if (!lhs)
return 0;
25649 switch (nd_type(lhs)) {
25657 set_nd_value(p, lhs, rhs);
25658 nd_set_loc(lhs, loc);
25661 case NODE_ATTRASGN:
25662 RNODE_ATTRASGN(lhs)->nd_args = arg_append(p, RNODE_ATTRASGN(lhs)->nd_args, rhs, loc);
25663 nd_set_loc(lhs, loc);
25677 NODE *void_node = 0, *vn;
25680 rb_warning0(
"empty expression");
25683 switch (nd_type(node)) {
25685 vn = RNODE_ENSURE(node)->nd_head;
25686 node = RNODE_ENSURE(node)->nd_ensr;
25688 if (vn && (vn = value_expr_check(p, vn))) {
25695 vn = RNODE_RESCUE(node)->nd_head;
25696 if (!vn || !(vn = value_expr_check(p, vn))) {
25697 if (!RNODE_RESCUE(node)->nd_else)
return NULL;
25699 if (!void_node) void_node = vn;
25700 for (
NODE *r = RNODE_RESCUE(node)->nd_resq; r; r = RNODE_RESBODY(r)->nd_next) {
25701 if (!nd_type_p(r, NODE_RESBODY)) {
25702 compile_error(p,
"unexpected node");
25705 if (!(vn = value_expr_check(p, RNODE_RESBODY(r)->nd_body))) {
25708 if (!void_node) void_node = vn;
25710 node = RNODE_RESCUE(node)->nd_else;
25711 if (!node)
return void_node;
25723 for (node = RNODE_CASE(node)->nd_body;
25724 node && nd_type_p(node, NODE_WHEN);
25725 node = RNODE_WHEN(node)->nd_next) {
25726 if (!(vn = value_expr_check(p, RNODE_WHEN(node)->nd_body))) {
25729 if (!void_node) void_node = vn;
25735 NODE *in = RNODE_CASE3(node)->nd_body;
25736 if (!in || !nd_type_p(in, NODE_IN)) {
25737 compile_error(p,
"unexpected node");
25740 if (!RNODE_IN(in)->nd_body) {
25745 vn = value_expr_check(p, RNODE_IN(in)->nd_body);
25746 if (!vn)
return NULL;
25747 if (!void_node) void_node = vn;
25748 in = RNODE_IN(in)->nd_next;
25749 }
while (in && nd_type_p(in, NODE_IN));
25755 while (RNODE_BLOCK(node)->nd_next) {
25756 vn = value_expr_check(p, RNODE_BLOCK(node)->nd_head);
25758 node = RNODE_BLOCK(node)->nd_next;
25760 node = RNODE_BLOCK(node)->nd_head;
25764 node = RNODE_BEGIN(node)->nd_body;
25769 if (!RNODE_IF(node)->nd_body) {
25772 else if (!RNODE_IF(node)->nd_else) {
25775 vn = value_expr_check(p, RNODE_IF(node)->nd_body);
25776 if (!vn)
return NULL;
25777 if (!void_node) void_node = vn;
25778 node = RNODE_IF(node)->nd_else;
25783 node = RNODE_AND(node)->nd_1st;
25789 mark_lvar_used(p, node);
25801 return void_node ? void_node : node;
25807 NODE *void_node = value_expr_check(p, node);
25809 yyerror1(&void_node->nd_loc,
"void value expression");
25819 const char *useless = 0;
25823 if (!node || !(node = nd_once_body(node)))
return;
25824 switch (nd_type(node)) {
25826 switch (RNODE_OPCALL(node)->nd_mid) {
25845 useless = rb_id2name(RNODE_OPCALL(node)->nd_mid);
25856 case NODE_BACK_REF:
25857 useless =
"a variable";
25860 useless =
"a constant";
25865 case NODE_ENCODING:
25868 case NODE_RATIONAL:
25869 case NODE_IMAGINARY:
25874 useless =
"a literal";
25899 useless =
"defined?";
25904 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
25912 NODE *
const n = node;
25914 if (!node)
return n;
25915 if (!nd_type_p(node, NODE_BLOCK))
return n;
25917 while (RNODE_BLOCK(node)->nd_next) {
25918 void_expr(p, RNODE_BLOCK(node)->nd_head);
25919 node = RNODE_BLOCK(node)->nd_next;
25921 return RNODE_BLOCK(node)->nd_head;
25925remove_begin(
NODE *node)
25927 NODE **n = &node, *n1 = node;
25928 while (n1 && nd_type_p(n1, NODE_BEGIN) && RNODE_BEGIN(n1)->nd_body) {
25929 *n = n1 = RNODE_BEGIN(n1)->nd_body;
25937 NODE *node = *body;
25940 *body = NEW_NIL(&NULL_LOC);
25943#define subnodes(type, n1, n2) \
25944 ((!type(node)->n1) ? (type(node)->n2 ? (body = &type(node)->n2, 1) : 0) : \
25945 (!type(node)->n2) ? (body = &type(node)->n1, 1) : \
25946 (reduce_nodes(p, &type(node)->n1), body = &type(node)->n2, 1))
25949 int newline = (int)nd_fl_newline(node);
25950 switch (nd_type(node)) {
25956 *body = node = RNODE_BEGIN(node)->nd_body;
25957 if (newline && node) nd_set_fl_newline(node);
25960 body = &RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head;
25964 if (subnodes(RNODE_IF, nd_body, nd_else))
break;
25967 body = &RNODE_CASE(node)->nd_body;
25970 if (!subnodes(RNODE_WHEN, nd_body, nd_next))
goto end;
25973 body = &RNODE_ENSURE(node)->nd_head;
25977 if (RNODE_RESCUE(node)->nd_else) {
25978 body = &RNODE_RESCUE(node)->nd_resq;
25981 if (!subnodes(RNODE_RESCUE, nd_head, nd_resq))
goto end;
25987 if (newline && node) nd_set_fl_newline(node);
25994is_static_content(
NODE *node)
25996 if (!node)
return 1;
25997 switch (nd_type(node)) {
25999 if (!(node = RNODE_HASH(node)->nd_head))
break;
26002 if (!is_static_content(RNODE_LIST(node)->nd_head))
return 0;
26003 }
while ((node = RNODE_LIST(node)->nd_next) != 0);
26008 case NODE_ENCODING:
26011 case NODE_RATIONAL:
26012 case NODE_IMAGINARY:
26028 switch (nd_type(node)) {
26042 if (!get_nd_value(p, node))
return 1;
26043 if (is_static_content(get_nd_value(p, node))) {
26045 rb_warn0L(nd_line(get_nd_value(p, node)),
"found '= literal' in conditional, should be ==");
26056#define SWITCH_BY_COND_TYPE(t, w, arg) do { \
26058 case COND_IN_OP: break; \
26059 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
26060 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
26069 enum node_type
type;
26071 if (node == 0)
return 0;
26073 type = nd_type(node);
26074 value_expr(p, node);
26075 if (
type == NODE_INTEGER) {
26076 if (!e_option_supplied(p)) rb_warn0L(nd_line(node),
"integer literal in flip-flop");
26077 ID lineno = rb_intern(
"$.");
26078 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
26080 return cond0(p, node, COND_IN_FF, loc,
true);
26086 if (node == 0)
return 0;
26087 if (!(node = nd_once_body(node)))
return 0;
26088 assign_in_cond(p, node);
26090 switch (nd_type(node)) {
26092 RNODE_BEGIN(node)->nd_body = cond0(p, RNODE_BEGIN(node)->nd_body,
type, loc, top);
26099 SWITCH_BY_COND_TYPE(
type, warn,
"string ");
26103 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ");
26104 nd_set_type(node, NODE_MATCH);
26108 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning,
"regex ");
26110 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
26114 NODE *end = RNODE_BLOCK(node)->nd_end;
26115 NODE **expr = &RNODE_BLOCK(end)->nd_head;
26116 if (top) top = node == end;
26117 *expr = cond0(p, *expr,
type, loc, top);
26123 RNODE_AND(node)->nd_1st = cond0(p, RNODE_AND(node)->nd_1st, COND_IN_COND, loc,
true);
26124 RNODE_AND(node)->nd_2nd = cond0(p, RNODE_AND(node)->nd_2nd, COND_IN_COND, loc,
true);
26130 RNODE_DOT2(node)->nd_beg = range_op(p, RNODE_DOT2(node)->nd_beg, loc);
26131 RNODE_DOT2(node)->nd_end = range_op(p, RNODE_DOT2(node)->nd_end, loc);
26132 switch (nd_type(node)) {
26134 nd_set_type(node,NODE_FLIP2);
26139 nd_set_type(node, NODE_FLIP3);
26148 SWITCH_BY_COND_TYPE(
type, warning,
"symbol ");
26152 case NODE_ENCODING:
26155 case NODE_RATIONAL:
26156 case NODE_IMAGINARY:
26157 SWITCH_BY_COND_TYPE(
type, warning,
"");
26169 if (node == 0)
return 0;
26170 return cond0(p, node, COND_IN_COND, loc,
true);
26176 if (node == 0)
return 0;
26177 return cond0(p, node, COND_IN_OP, loc,
true);
26184 return NEW_NIL(&loc);
26190 if (!cc)
return right;
26191 cc = cond0(p, cc, COND_IN_COND, loc,
true);
26192 return newline_node(NEW_IF(cc, left, right, loc, if_keyword_loc, then_keyword_loc, end_keyword_loc));
26198 if (!cc)
return right;
26199 cc = cond0(p, cc, COND_IN_COND, loc,
true);
26200 return newline_node(NEW_UNLESS(cc, left, right, loc, keyword_loc, then_keyword_loc, end_keyword_loc));
26203#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))
26209 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
26211 value_expr(p, left);
26212 if (left && nd_type_p(left,
type)) {
26213 NODE *node = left, *second;
26214 while ((second = RNODE_AND(node)->nd_2nd) != 0 && nd_type_p(second,
type)) {
26217 RNODE_AND(node)->nd_2nd = NEW_AND_OR(
type, second, right, loc, op_loc);
26218 nd_set_line(RNODE_AND(node)->nd_2nd, op_loc->beg_pos.lineno);
26219 left->nd_loc.end_pos = loc->end_pos;
26222 op = NEW_AND_OR(
type, left, right, loc, op_loc);
26223 nd_set_line(op, op_loc->beg_pos.lineno);
26232 if (nd_type_p(node, NODE_BLOCK_PASS)) {
26233 compile_error(p,
"block argument should not be given");
26241 no_blockarg(p, node);
26242 if (nd_type_p(node, NODE_LIST) && !RNODE_LIST(node)->nd_next) {
26243 node = RNODE_LIST(node)->nd_head;
26252 switch (nd_type(node)) {
26254 RNODE_INTEGER(node)->minus = TRUE;
26257 RNODE_FLOAT(node)->minus = TRUE;
26259 case NODE_RATIONAL:
26260 RNODE_RATIONAL(node)->minus = TRUE;
26262 case NODE_IMAGINARY:
26263 RNODE_IMAGINARY(node)->minus = TRUE;
26266 node->nd_loc = *loc;
26274 if (!node1)
return (
NODE *)node2;
26275 node2->nd_head = node1;
26276 nd_set_first_lineno(node2, nd_first_lineno(node1));
26277 nd_set_first_column(node2, nd_first_column(node1));
26278 return (
NODE *)node2;
26286 if (args->pre_args_num)
return false;
26287 if (args->post_args_num)
return false;
26288 if (args->rest_arg)
return false;
26289 if (args->opt_args)
return false;
26290 if (args->block_arg)
return false;
26291 if (args->kw_args)
return false;
26292 if (args->kw_rest_arg)
return false;
26301 if (args->forwarding) {
26303 yyerror1(&RNODE(tail)->nd_loc,
"... after rest argument");
26306 rest_arg = idFWD_REST;
26309 args->pre_args_num = pre_args ? pre_args->nd_plen : 0;
26310 args->pre_init = pre_args ? pre_args->nd_next : 0;
26312 args->post_args_num = post_args ? post_args->nd_plen : 0;
26313 args->post_init = post_args ? post_args->nd_next : 0;
26314 args->first_post_arg = post_args ? post_args->nd_pid : 0;
26316 args->rest_arg = rest_arg;
26318 args->opt_args = opt_args;
26320 nd_set_loc(RNODE(tail), loc);
26330 if (p->error_p)
return node;
26332 if (block == idNil) {
26334 args->no_blockarg = TRUE;
26336 args->block_arg = block;
26337 args->kw_args = kw_args;
26346 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
26347 struct vtable *vtargs = p->lvtbl->args;
26350 if (block) block = vtargs->tbl[vtargs->pos-1];
26351 vtable_pop(vtargs, !!block + !!kw_rest_arg);
26352 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
26354 if (!NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body)))
26356 --required_kw_vars;
26357 kwn = kwn->nd_next;
26360 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
26361 ID vid = get_nd_vid(p, kwn->nd_body);
26362 if (NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body))) {
26363 *required_kw_vars++ = vid;
26370 arg_var(p, kw_bits);
26371 if (kw_rest_arg) arg_var(p, kw_rest_arg);
26372 if (block) arg_var(p, block);
26374 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
26376 else if (kw_rest_arg == idNil) {
26377 args->no_kwarg = 1;
26379 else if (kw_rest_arg) {
26380 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
26389 if (max_numparam > NO_PARAM || it_id) {
26391 YYLTYPE loc = RUBY_INIT_YYLLOC();
26392 args = new_empty_args_tail(p, 0);
26393 nd_set_loc(RNODE(args), &loc);
26395 args->nd_ainfo.pre_args_num = it_id ? 1 : max_numparam;
26403 RNODE_ARYPTN(aryptn)->nd_pconst = constant;
26406 NODE *pre_args = NEW_LIST(pre_arg, loc);
26407 if (RNODE_ARYPTN(aryptn)->pre_args) {
26408 RNODE_ARYPTN(aryptn)->pre_args = list_concat(pre_args, RNODE_ARYPTN(aryptn)->pre_args);
26411 RNODE_ARYPTN(aryptn)->pre_args = pre_args;
26421 rest_arg = rest_arg ? rest_arg : NODE_SPECIAL_NO_NAME_REST;
26426 NODE *node = NEW_ARYPTN(pre_args, rest_arg, post_args, loc);
26434 RNODE_FNDPTN(fndptn)->nd_pconst = constant;
26442 pre_rest_arg = pre_rest_arg ? pre_rest_arg : NODE_SPECIAL_NO_NAME_REST;
26443 post_rest_arg = post_rest_arg ? post_rest_arg : NODE_SPECIAL_NO_NAME_REST;
26444 NODE *node = NEW_FNDPTN(pre_rest_arg, args, post_rest_arg, loc);
26452 RNODE_HSHPTN(hshptn)->nd_pconst = constant;
26459 NODE *node, *kw_rest_arg_node;
26461 if (kw_rest_arg == idNil) {
26462 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
26464 else if (kw_rest_arg) {
26465 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
26468 kw_rest_arg_node = NULL;
26471 node = NEW_HSHPTN(0, kw_args, kw_rest_arg_node, loc);
26480 return NEW_SYM(STR_NEW0(), loc);
26483 switch (nd_type(node)) {
26485 nd_set_type(node, NODE_DSYM);
26486 nd_set_loc(node, loc);
26489 node = str_to_sym_node(p, node, loc);
26492 node = NEW_DSYM(0, 1, NEW_LIST(node, loc), loc);
26499nd_type_st_key_enable_p(
NODE *node)
26501 switch (nd_type(node)) {
26504 case NODE_RATIONAL:
26505 case NODE_IMAGINARY:
26511 case NODE_ENCODING:
26521 switch (nd_type(node)) {
26523 return rb_node_str_string_val(node);
26525 return rb_node_integer_literal_val(node);
26527 return rb_node_float_literal_val(node);
26528 case NODE_RATIONAL:
26529 return rb_node_rational_literal_val(node);
26530 case NODE_IMAGINARY:
26531 return rb_node_imaginary_literal_val(node);
26533 return rb_node_sym_string_val(node);
26535 return rb_node_regx_string_val(node);
26537 return rb_node_line_lineno_val(node);
26538 case NODE_ENCODING:
26539 return rb_node_encoding_val(node);
26541 return rb_node_file_path_val(node);
26543 rb_bug(
"unexpected node: %s", ruby_node_name(nd_type(node)));
26552 p->warn_duplicate_keys_table = st_init_table_with_size(&literal_type, RNODE_LIST(hash)->as.nd_alen / 2);
26553 while (hash && RNODE_LIST(hash)->nd_next) {
26554 NODE *head = RNODE_LIST(hash)->nd_head;
26555 NODE *value = RNODE_LIST(hash)->nd_next;
26556 NODE *next = RNODE_LIST(value)->nd_next;
26565 if (nd_type_st_key_enable_p(head)) {
26566 key = (st_data_t)head;
26568 if (st_delete(p->warn_duplicate_keys_table, &key, &data)) {
26569 rb_warn2L(nd_line((
NODE *)data),
26570 "key %+"PRIsWARN
" is duplicated and overwritten on line %d",
26571 nd_value(p, head), WARN_I(nd_line(head)));
26573 st_insert(p->warn_duplicate_keys_table, (st_data_t)key, (st_data_t)hash);
26577 st_free_table(p->warn_duplicate_keys_table);
26578 p->warn_duplicate_keys_table = NULL;
26584 if (hash) warn_duplicate_keys(p, hash);
26585 return NEW_HASH(hash, loc);
26591 if (is_private_local_id(p,
id)) {
26594 if (st_is_member(p->pvtbl,
id)) {
26595 yyerror1(loc,
"duplicated variable name");
26597 else if (p->ctxt.in_alt_pattern &&
id) {
26598 yyerror1(loc,
"variable capture in alternative pattern");
26601 p->ctxt.capture_in_pattern = 1;
26602 st_insert(p->pvtbl, (st_data_t)
id, 0);
26610 p->pktbl = st_init_numtable();
26612 else if (st_is_member(p->pktbl, key)) {
26613 yyerror1(loc,
"duplicated key name");
26616 st_insert(p->pktbl, (st_data_t)key, 0);
26622 return NEW_HASH(hash, loc);
26631 ID vid = get_nd_vid(p, lhs);
26632 YYLTYPE lhs_loc = lhs->nd_loc;
26634 set_nd_value(p, lhs, rhs);
26635 nd_set_loc(lhs, loc);
26636 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
26638 else if (op == tANDOP) {
26639 set_nd_value(p, lhs, rhs);
26640 nd_set_loc(lhs, loc);
26641 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
26645 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
26646 set_nd_value(p, asgn, rhs);
26647 nd_set_loc(asgn, loc);
26651 asgn = NEW_ERROR(loc);
26663 aryset_check(p, args);
26664 args = make_list(args, args_loc);
26665 asgn = NEW_OP_ASGN1(ary, op, args, rhs, loc, call_operator_loc, opening_loc, closing_loc, binary_operator_loc);
26677 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc, call_operator_loc, message_loc, binary_operator_loc);
26688 asgn = NEW_OP_CDECL(lhs, op, rhs, ctxt.shareable_constant_value, loc);
26691 asgn = NEW_ERROR(loc);
26700 if (p->ctxt.in_def) {
26702 yyerror1(loc,
"dynamic constant assignment");
26704 set_value(assign_error(p,
"dynamic constant assignment", p->s_lvalue));
26707 return NEW_CDECL(0, 0, (path), p->ctxt.shareable_constant_value, loc);
26714 a = dispatch2(assign_error, ERR_MESG(), a);
26723 NODE *result = head;
26725 NODE *tmp = rescue_else ? rescue_else : rescue;
26726 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
26728 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
26729 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
26732 result = NEW_ENSURE(result, ensure, loc);
26734 fixpos(result, head);
26743 if (!local->used)
return;
26744 cnt = local->used->pos;
26745 if (cnt != local->vars->pos) {
26746 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
26749 ID *v = local->vars->tbl;
26750 ID *u = local->used->tbl;
26751 for (
int i = 0; i < cnt; ++i) {
26752 if (!v[i] || (u[i] & LVAR_USED))
continue;
26753 if (is_private_local_id(p, v[i]))
continue;
26754 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
26763 int inherits_dvars = toplevel_scope && compile_for_eval;
26767 local->prev = p->lvtbl;
26768 local->args = vtable_alloc(0);
26769 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
26771 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
26772 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
26774 local->numparam.outer = 0;
26775 local->numparam.inner = 0;
26776 local->numparam.current = 0;
26778 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
26780# if WARN_PAST_SCOPE
26791 while (!DVARS_TERMINAL_P(table)) {
26792 struct vtable *cur_table = table;
26793 table = cur_table->prev;
26794 vtable_free(cur_table);
26801 vtable_chain_free(p, local->used);
26803# if WARN_PAST_SCOPE
26804 vtable_chain_free(p, local->past);
26807 vtable_chain_free(p, local->args);
26808 vtable_chain_free(p, local->vars);
26810 ruby_xfree_sized(local,
sizeof(
struct local_vars));
26817 if (p->lvtbl->used) {
26818 warn_unused_var(p, p->lvtbl);
26821 local_free(p, p->lvtbl);
26831 int cnt_args = vtable_size(p->lvtbl->args);
26832 int cnt_vars = vtable_size(p->lvtbl->vars);
26833 int cnt = cnt_args + cnt_vars;
26837 if (cnt <= 0)
return 0;
26838 tbl = rb_ast_new_local_table(p->ast, cnt);
26839 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
26841 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
26842 ID id = p->lvtbl->vars->tbl[i];
26843 if (!vtable_included(p->lvtbl->args,
id)) {
26844 tbl->ids[j++] = id;
26848 tbl = rb_ast_resize_latest_local_table(p->ast, j);
26857 if (!NUMPARAM_ID_P(
id))
return;
26858 compile_error(p,
"_%d is reserved for numbered parameter",
26859 NUMPARAM_ID_TO_IDX(
id));
26865 numparam_name(p,
id);
26866 vtable_add(p->lvtbl->args,
id);
26872 numparam_name(p,
id);
26873 vtable_add(p->lvtbl->vars,
id);
26874 if (p->lvtbl->used) {
26875 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
26883 return rb_local_defined(
id, iseq);
26890 struct vtable *vars, *args, *used;
26892 vars = p->lvtbl->vars;
26893 args = p->lvtbl->args;
26894 used = p->lvtbl->used;
26896 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26899 if (used) used = used->prev;
26902 if (vars && vars->prev == DVARS_INHERIT) {
26903 return rb_parser_local_defined(p,
id, p->parent_iseq);
26905 else if (vtable_included(args,
id)) {
26909 int i = vtable_included(vars,
id);
26910 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
26918 return local_id_ref(p,
id, NULL);
26924 if (local_id(p, idFWD_ALL))
return TRUE;
26925 compile_error(p,
"unexpected ...");
26932 arg_var(p, idFWD_REST);
26933 arg_var(p, idFWD_KWREST);
26934 arg_var(p, idFWD_BLOCK);
26935 arg_var(p, idFWD_ALL);
26941 bool conflict =
false;
26943 struct vtable *vars, *args;
26945 vars = p->lvtbl->vars;
26946 args = p->lvtbl->args;
26948 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26949 conflict |= (vtable_included(args, arg) && !(all && vtable_included(args, all)));
26954 bool found =
false;
26955 if (vars && vars->prev == DVARS_INHERIT && !found) {
26956 found = (rb_parser_local_defined(p, arg, p->parent_iseq) &&
26957 !(all && rb_parser_local_defined(p, all, p->parent_iseq)));
26960 found = (vtable_included(args, arg) &&
26961 !(all && vtable_included(args, all)));
26965 compile_error(p,
"no anonymous %s parameter", var);
26967 else if (conflict) {
26968 compile_error(p,
"anonymous %s parameter is also used within block", var);
26975 NODE *rest = NEW_LVAR(idFWD_REST, loc);
26976 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
26978 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc, &NULL_LOC);
26979 block->forwarding = TRUE;
26980 args = arg_append(p, args, new_hash(p, kwrest, loc), argsloc);
26981 return arg_blk_pass(args, block);
26988 NODE *inner = local->numparam.inner;
26989 if (!local->numparam.outer) {
26990 local->numparam.outer = local->numparam.current;
26992 local->numparam.inner = 0;
26993 local->numparam.current = 0;
27004 local->numparam.inner = prev_inner;
27006 else if (local->numparam.current) {
27008 local->numparam.inner = local->numparam.current;
27010 if (p->max_numparam > NO_PARAM) {
27012 local->numparam.current = local->numparam.outer;
27013 local->numparam.outer = 0;
27017 local->numparam.current = 0;
27022static const struct vtable *
27025 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
27026 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
27027 if (p->lvtbl->used) {
27028 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
27030 return p->lvtbl->args;
27036 struct vtable *tmp = *vtblp;
27037 *vtblp = tmp->prev;
27038# if WARN_PAST_SCOPE
27039 if (p->past_scope_enabled) {
27040 tmp->prev = p->lvtbl->past;
27041 p->lvtbl->past = tmp;
27053 if ((tmp = p->lvtbl->used) != 0) {
27054 warn_unused_var(p, p->lvtbl);
27055 p->lvtbl->used = p->lvtbl->used->prev;
27058 dyna_pop_vtable(p, &p->lvtbl->args);
27059 dyna_pop_vtable(p, &p->lvtbl->vars);
27065 while (p->lvtbl->args != lvargs) {
27067 if (!p->lvtbl->args) {
27069 ruby_xfree_sized(p->lvtbl,
sizeof(*p->lvtbl));
27079 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
27086 struct vtable *vars, *args, *used;
27089 args = p->lvtbl->args;
27090 vars = p->lvtbl->vars;
27091 used = p->lvtbl->used;
27093 while (!DVARS_TERMINAL_P(vars)) {
27094 if (vtable_included(args,
id)) {
27097 if ((i = vtable_included(vars,
id)) != 0) {
27098 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
27103 if (!vidrefp) used = 0;
27104 if (used) used = used->prev;
27107 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
27108 return rb_dvar_defined(
id, p->parent_iseq);
27118 return dvar_defined_ref(p,
id, NULL);
27124 return (vtable_included(p->lvtbl->args,
id) ||
27125 vtable_included(p->lvtbl->vars,
id));
27132 "regexp encoding option '%c' differs from source encoding '%s'",
27133 c, rb_enc_name(rb_parser_str_get_encoding(str)));
27140 int idx = rb_enc_find_index(name);
27142 rb_bug(
"unknown encoding name: %s", name);
27145 return rb_enc_from_index(idx);
27154 case ENC_ASCII8BIT:
27155 enc = rb_ascii8bit_encoding();
27158 enc = find_enc(p,
"EUC-JP");
27160 case ENC_Windows_31J:
27161 enc = find_enc(p,
"Windows-31J");
27164 enc = rb_utf8_encoding();
27177 int c = RE_OPTION_ENCODING_IDX(options);
27183 char_to_option_kcode(c, &opt, &idx);
27184 enc = kcode_to_enc(p, idx);
27185 if (enc != rb_parser_str_get_encoding(str) &&
27186 !rb_parser_is_ascii_string(p, str)) {
27189 rb_parser_string_set_encoding(str, enc);
27191 else if (RE_OPTION_ENCODING_NONE(options)) {
27192 if (!PARSER_ENCODING_IS_ASCII8BIT(p, str) &&
27193 !rb_parser_is_ascii_string(p, str)) {
27197 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
27199 else if (rb_is_usascii_enc(p->enc)) {
27200 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
27212 int c = rb_reg_fragment_setenc(p, str, options);
27213 if (c) reg_fragment_enc_error(p, str, c);
27216#ifndef UNIVERSAL_PARSER
27222 rb_parser_assignable_func assignable;
27226reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
27227 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
27232 long len = name_end - name;
27233 const char *s = (
const char *)name;
27235 return rb_reg_named_capture_assign_iter_impl(p, s,
len, enc, &arg->succ_block, arg->loc, arg->assignable);
27239reg_named_capture_assign(
struct parser_params* p,
VALUE regexp,
const YYLTYPE *loc, rb_parser_assignable_func assignable)
27244 arg.enc = rb_enc_get(regexp);
27245 arg.succ_block = 0;
27247 arg.assignable = assignable;
27248 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
27250 if (!arg.succ_block)
return 0;
27251 return RNODE_BLOCK(arg.succ_block)->nd_next;
27259 return assignable(p,
id, val, loc);
27263rb_reg_named_capture_assign_iter_impl(
struct parser_params *p,
const char *s,
long len,
27269 if (!
len)
return ST_CONTINUE;
27270 if (!VALID_SYMNAME_P(s,
len, enc, ID_LOCAL))
27271 return ST_CONTINUE;
27273 var = intern_cstr(s,
len, enc);
27274 if (
len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)
len)) {
27275 if (!lvar_defined(p, var))
return ST_CONTINUE;
27277 node = node_assign(p, assignable(p, var, 0, loc), NEW_SYM(rb_id2str(var), loc), NO_LEX_CTXT, loc);
27278 succ = *succ_block;
27279 if (!succ) succ = NEW_ERROR(loc);
27280 succ = block_append(p, succ, node);
27281 *succ_block = succ;
27282 return ST_CONTINUE;
27290 reg_fragment_setenc(p, str, options);
27291 str2 = rb_str_new_parser_string(str);
27292 return rb_parser_reg_compile(p, str2, options);
27299 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
27309 err = rb_errinfo();
27310 re = parser_reg_compile(p, str, options);
27312 VALUE m = rb_attr_get(rb_errinfo(), idMesg);
27313 rb_set_errinfo(err);
27314 compile_error(p,
"%"PRIsVALUE, m);
27322rb_ruby_parser_set_options(
struct parser_params *p,
int print,
int loop,
int chomp,
int split)
27324 p->do_print = print;
27326 p->do_chomp = chomp;
27327 p->do_split = split;
27333 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
27334 const YYLTYPE *
const LOC = &default_location;
27337 NODE *print = (
NODE *)NEW_FCALL(rb_intern(
"print"),
27338 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
27340 node = block_append(p, node, print);
27344 NODE *irs = NEW_LIST(NEW_GVAR(rb_intern(
"$/"), LOC), LOC);
27347 ID ifs = rb_intern(
"$;");
27348 ID fields = rb_intern(
"$F");
27349 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
27350 NODE *split = NEW_GASGN(fields,
27351 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
27352 rb_intern(
"split"), args, LOC),
27354 node = block_append(p, split, node);
27358 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
27359 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
27362 node = NEW_WHILE((
NODE *)NEW_FCALL(idGets, irs, LOC), node, 1, LOC, &NULL_LOC, &NULL_LOC);
27379 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
27387 p->command_start = TRUE;
27388 p->ruby_sourcefile_string =
Qnil;
27389 p->lex.lpar_beg = -1;
27390 string_buffer_init(p);
27392 p->delayed.token = NULL;
27393 p->frozen_string_literal = -1;
27394 rb_source_hash_init(&p->source_hash);
27396 p->error_buffer =
Qfalse;
27397 p->end_expect_token_locations = NULL;
27402 p->parsing_thread =
Qnil;
27404 p->s_lvalue =
Qnil;
27407 p->debug_buffer =
Qnil;
27408 p->debug_output = rb_ractor_stdout();
27409 p->enc = rb_utf8_encoding();
27414#define rb_ruby_parser_mark ripper_parser_mark
27415#define rb_ruby_parser_free ripper_parser_free
27416#define rb_ruby_parser_memsize ripper_parser_memsize
27420rb_ruby_parser_mark(
void *ptr)
27424 rb_gc_mark(p->ruby_sourcefile_string);
27426 rb_gc_mark(p->error_buffer);
27428 rb_gc_mark(p->value);
27429 rb_gc_mark(p->result);
27430 rb_gc_mark(p->parsing_thread);
27431 rb_gc_mark(p->s_value);
27432 rb_gc_mark(p->s_lvalue);
27433 rb_gc_mark(p->s_value_stack);
27435 rb_gc_mark(p->debug_buffer);
27436 rb_gc_mark(p->debug_output);
27440rb_ruby_parser_free(
void *ptr)
27446 rb_ast_free(p->ast);
27449 if (p->warn_duplicate_keys_table) {
27450 st_free_table(p->warn_duplicate_keys_table);
27455 rb_parser_ary_free(p, p->tokens);
27460 ruby_xfree_sized(p->tokenbuf, p->toksiz);
27463 for (local = p->lvtbl; local; local = prev) {
27464 prev = local->prev;
27465 local_free(p, local);
27470 while ((ptinfo = p->token_info) != 0) {
27471 p->token_info = ptinfo->next;
27475 string_buffer_free(p);
27478 st_free_table(p->pvtbl);
27481 if (CASE_LABELS_ENABLED_P(p->case_labels)) {
27482 st_free_table(p->case_labels);
27485 xfree(p->lex.strterm);
27486 p->lex.strterm = 0;
27492rb_ruby_parser_memsize(
const void *ptr)
27496 size_t size =
sizeof(*p);
27499 for (local = p->lvtbl; local; local = local->prev) {
27500 size +=
sizeof(*local);
27501 if (local->vars) size += local->vars->capa *
sizeof(
ID);
27507#undef rb_reserved_word
27510rb_reserved_word(
const char *str,
unsigned int len)
27512 return reserved_word(str,
len);
27515#ifdef UNIVERSAL_PARSER
27517rb_ruby_parser_allocate(
const rb_parser_config_t *config)
27521 p->config = config;
27526rb_ruby_parser_new(
const rb_parser_config_t *config)
27529 rb_parser_t *p = rb_ruby_parser_allocate(config);
27530 parser_initialize(p);
27535rb_ruby_parser_allocate(
void)
27543rb_ruby_parser_new(
void)
27547 parser_initialize(p);
27556 p->parent_iseq = base;
27563 p->debug_lines = rb_parser_ary_new_capa_for_script_line(p, 10);
27569 p->error_tolerant = 1;
27575 p->keep_tokens = 1;
27576 p->tokens = rb_parser_ary_new_capa_for_ast_token(p, 10);
27588 return p->ruby__end__seen;
27592rb_ruby_parser_set_yydebug(
rb_parser_t *p,
int flag)
27621 return p->debug_output;
27627 p->debug_output = output;
27633 return p->parsing_thread;
27639 p->parsing_thread = parsing_thread;
27643rb_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)
27645 p->lex.gets = gets;
27646 p->lex.input = input;
27648 p->ruby_sourcefile_string = sourcefile_string;
27649 p->ruby_sourcefile = sourcefile;
27650 p->ruby_sourceline = sourceline;
27666rb_ruby_parser_ruby_sourcefile_string(
rb_parser_t *p)
27668 return p->ruby_sourcefile_string;
27674 return p->ruby_sourceline;
27680 return p->lex.state;
27687 p->ast = rb_ast_new();
27688 ripper_yyparse((
void*)p);
27689 rb_ast_free(p->ast);
27692 p->eval_tree_begin = 0;
27698 return dedent_string(p,
string, width);
27704 return p->lex.input != 0;
27710 parser_initialize(p);
27716 return p->lex.ptok - p->lex.pbeg;
27722 return p->lex.pcur - p->lex.ptok;
27728 return p->lex.lastline;
27732rb_ruby_ripper_lex_state_name(
struct parser_params *p,
int state)
27734 return rb_parser_lex_state_name(p, (
enum lex_state_e)state);
27737#ifdef UNIVERSAL_PARSER
27739rb_ripper_parser_params_allocate(
const rb_parser_config_t *config)
27742 p->config = config;
27748rb_ruby_ripper_parser_allocate(
void)
27756rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
27759 VALUE mesg = p->debug_buffer;
27763 rb_str_vcatf(mesg, fmt, ap);
27765 if (char_at_end(p, mesg, 0) ==
'\n') {
27766 rb_io_write(p->debug_output, mesg);
27767 p->debug_buffer =
Qnil;
27775 int lineno, column;
27778 lineno = loc->end_pos.lineno;
27779 column = loc->end_pos.column;
27782 lineno = p->ruby_sourceline;
27786 rb_io_flush(p->debug_output);
27790 rb_syntax_error_append(p->error_buffer,
27791 p->ruby_sourcefile_string,
27798count_char(
const char *str,
int c)
27801 while (str[n] == c) ++n;
27812rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
27814 if (*yystr ==
'"') {
27815 size_t yyn = 0, bquote = 0;
27816 const char *yyp = yystr;
27822 bquote = count_char(yyp+1,
'\'') + 1;
27823 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
27829 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
27830 if (yyres) memcpy(yyres + yyn, yyp, bquote);
27836 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
27837 if (yyres) memcpy(yyres + yyn, yyp, 3);
27842 goto do_not_strip_quotes;
27846 goto do_not_strip_quotes;
27849 if (*++yyp !=
'\\')
27850 goto do_not_strip_quotes;
27865 do_not_strip_quotes: ;
27868 if (!yyres)
return strlen(yystr);
27870 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
27875#define validate(x) (void)(x)
27904 return rb_funcall(p->value, mid, 3, a, b, c);
27914 return rb_funcall(p->value, mid, 4, a, b, c, d);
27925 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
27938 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.