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"
87#ifdef UNIVERSAL_PARSER
89#include "internal/ruby_parser.h"
90#include "parser_node.h"
91#include "universal_parser.c"
94#define STATIC_ID2SYM p->config->static_id2sym
95#define rb_str_coderange_scan_restartable p->config->str_coderange_scan_restartable
101#include "internal/compile.h"
102#include "internal/compilers.h"
103#include "internal/complex.h"
104#include "internal/encoding.h"
105#include "internal/error.h"
106#include "internal/hash.h"
107#include "internal/io.h"
108#include "internal/numeric.h"
109#include "internal/parse.h"
110#include "internal/rational.h"
111#include "internal/re.h"
112#include "internal/ruby_parser.h"
113#include "internal/symbol.h"
114#include "internal/thread.h"
115#include "internal/variable.h"
117#include "parser_node.h"
121#include "ruby/regex.h"
130syntax_error_new(
void)
138#define compile_callback rb_suppress_tracing
141#define NODE_SPECIAL_EMPTY_ARGS ((NODE *)-1)
142#define NODE_EMPTY_ARGS_P(node) ((node) == NODE_SPECIAL_EMPTY_ARGS)
153 return (n1->minus != n2->minus ||
154 n1->base != n2->base ||
155 strcmp(n1->val, n2->val));
161 return (n1->minus != n2->minus ||
162 strcmp(n1->val, n2->val));
168 return (n1->minus != n2->minus ||
169 n1->base != n2->base ||
170 n1->seen_point != n2->seen_point ||
171 strcmp(n1->val, n2->val));
177 return (n1->minus != n2->minus ||
178 n1->base != n2->base ||
179 n1->seen_point != n2->seen_point ||
180 n1->type != n2->type ||
181 strcmp(n1->val, n2->val));
187 return (n1->options != n2->options ||
188 rb_parser_string_hash_cmp(n1->string, n2->string));
192static st_index_t rb_char_p_hash(
const char *c);
195literal_cmp(st_data_t val, st_data_t lit)
197 if (val == lit)
return 0;
199 NODE *node_val = RNODE(val);
200 NODE *node_lit = RNODE(lit);
201 enum node_type type_val = nd_type(node_val);
202 enum node_type type_lit = nd_type(node_lit);
204 if (type_val != type_lit) {
210 return node_integer_cmp(RNODE_INTEGER(node_val), RNODE_INTEGER(node_lit));
212 return node_float_cmp(RNODE_FLOAT(node_val), RNODE_FLOAT(node_lit));
214 return node_rational_cmp(RNODE_RATIONAL(node_val), RNODE_RATIONAL(node_lit));
216 return node_imaginary_cmp(RNODE_IMAGINARY(node_val), RNODE_IMAGINARY(node_lit));
218 return rb_parser_string_hash_cmp(RNODE_STR(node_val)->
string, RNODE_STR(node_lit)->
string);
220 return rb_parser_string_hash_cmp(RNODE_SYM(node_val)->
string, RNODE_SYM(node_lit)->
string);
222 return rb_parser_regx_hash_cmp(RNODE_REGX(node_val), RNODE_REGX(node_lit));
224 return node_val->nd_loc.beg_pos.lineno != node_lit->nd_loc.beg_pos.lineno;
226 return rb_parser_string_hash_cmp(RNODE_FILE(node_val)->path, RNODE_FILE(node_lit)->path);
228 return RNODE_ENCODING(node_val)->enc != RNODE_ENCODING(node_lit)->enc;
230#ifdef UNIVERSAL_PARSER
233 rb_bug(
"unexpected node: %s, %s", ruby_node_name(type_val), ruby_node_name(type_lit));
239literal_hash(st_data_t a)
242 enum node_type
type = nd_type(node);
246 return rb_char_p_hash(RNODE_INTEGER(node)->val);
248 return rb_char_p_hash(RNODE_FLOAT(node)->val);
250 return rb_char_p_hash(RNODE_RATIONAL(node)->val);
252 return rb_char_p_hash(RNODE_IMAGINARY(node)->val);
254 return rb_parser_str_hash(RNODE_STR(node)->
string);
256 return rb_parser_str_hash(RNODE_SYM(node)->
string);
258 return rb_parser_str_hash(RNODE_REGX(node)->
string);
260 return (st_index_t)node->nd_loc.beg_pos.lineno;
262 return rb_parser_str_hash(RNODE_FILE(node)->path);
264 return (st_index_t)RNODE_ENCODING(node)->enc;
266#ifdef UNIVERSAL_PARSER
269 rb_bug(
"unexpected node: %s", ruby_node_name(
type));
277 return '\0' <= c && c <=
'\x7f';
281#define ISASCII parse_isascii
286 return c ==
' ' || (
'\t' <= c && c <=
'\r');
290#define ISSPACE parse_isspace
295 return (
'\0' <= c && c <
' ') || c ==
'\x7f';
299#define ISCNTRL(c) parse_iscntrl(c)
304 return 'A' <= c && c <=
'Z';
310 return 'a' <= c && c <=
'z';
316 return parse_isupper(c) || parse_islower(c);
320#define ISALPHA(c) parse_isalpha(c)
325 return '0' <= c && c <=
'9';
329#define ISDIGIT(c) parse_isdigit(c)
338#define ISALNUM(c) parse_isalnum(c)
343 return ISDIGIT(c) || (
'A' <= c && c <=
'F') || (
'a' <= c && c <=
'f');
347#define ISXDIGIT(c) parse_isxdigit(c)
349#include "parser_st.h"
352#define STRCASECMP rb_parser_st_locale_insensitive_strcasecmp
355#define STRNCASECMP rb_parser_st_locale_insensitive_strncasecmp
358#include "ripper_init.h"
369 unsigned int in_defined: 1;
370 unsigned int in_kwarg: 1;
371 unsigned int in_argdef: 1;
372 unsigned int in_def: 1;
373 unsigned int in_class: 1;
374 unsigned int has_trailing_semicolon: 1;
375 BITFIELD(
enum rb_parser_shareability, shareable_constant_value, 2);
376 BITFIELD(
enum rescue_context, in_rescue, 2);
377 unsigned int cant_return: 1;
378 unsigned int in_alt_pattern: 1;
379 unsigned int capture_in_pattern: 1;
384#if defined(__GNUC__) && !defined(__clang__)
396#define NO_LEX_CTXT (struct lex_context){0}
398#ifndef WARN_PAST_SCOPE
399# define WARN_PAST_SCOPE 0
404#define yydebug (p->debug)
406#define YYFPRINTF(out, ...) rb_parser_printf(p, __VA_ARGS__)
407#define YY_LOCATION_PRINT(File, loc, p) \
408 rb_parser_printf(p, "%d.%d-%d.%d", \
409 (loc).beg_pos.lineno, (loc).beg_pos.column,\
410 (loc).end_pos.lineno, (loc).end_pos.column)
411#define YYLLOC_DEFAULT(Current, Rhs, N) \
415 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
416 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
420 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
421 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
425 (((Msgid)[0] == 'm') && (strcmp((Msgid), "memory exhausted") == 0) ? \
426 "nesting too deep" : (Msgid))
428#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
429 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
430#define RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(Current) \
431 rb_parser_set_location_of_delayed_token(p, &(Current))
432#define RUBY_SET_YYLLOC_OF_HEREDOC_END(Current) \
433 rb_parser_set_location_of_heredoc_end(p, &(Current))
434#define RUBY_SET_YYLLOC_OF_DUMMY_END(Current) \
435 rb_parser_set_location_of_dummy_end(p, &(Current))
436#define RUBY_SET_YYLLOC_OF_NONE(Current) \
437 rb_parser_set_location_of_none(p, &(Current))
438#define RUBY_SET_YYLLOC(Current) \
439 rb_parser_set_location(p, &(Current))
440#define RUBY_INIT_YYLLOC() \
442 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
443 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
446#define IS_lex_state_for(x, ls) ((x) & (ls))
447#define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
448#define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
449#define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
451# define SET_LEX_STATE(ls) \
452 parser_set_lex_state(p, ls, __LINE__)
453static inline enum lex_state_e parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line);
455typedef VALUE stack_type;
459# define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
460# define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
461# define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
462# define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
463# define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
467#define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
468#define COND_POP() BITSTACK_POP(cond_stack)
469#define COND_P() BITSTACK_SET_P(cond_stack)
470#define COND_SET(n) BITSTACK_SET(cond_stack, (n))
474#define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
475#define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
476#define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
477#define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
495 NODE *outer, *inner, *current;
512#define DVARS_INHERIT ((void*)1)
513#define DVARS_TOPSCOPE NULL
514#define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
541#define AFTER_HEREDOC_WITHOUT_TERMINATOR ((rb_parser_string_t *)1)
558 rb_parser_lex_gets_func *gets;
559 rb_parser_input_data input;
567 enum lex_state_e state;
575 stack_type cond_stack;
576 stack_type cmdarg_stack;
581 int heredoc_line_indent;
588 const char *ruby_sourcefile;
589 VALUE ruby_sourcefile_string;
609 st_table *warn_duplicate_keys_table;
616 NODE *eval_tree_begin;
620#ifdef UNIVERSAL_PARSER
621 const rb_parser_config_t *config;
624 signed int frozen_string_literal:2;
626 unsigned int command_start:1;
627 unsigned int eofp: 1;
628 unsigned int ruby__end__seen: 1;
629 unsigned int debug: 1;
630 unsigned int has_shebang: 1;
631 unsigned int token_seen: 1;
632 unsigned int token_info_enabled: 1;
634 unsigned int past_scope_enabled: 1;
636 unsigned int error_p: 1;
637 unsigned int cr_seen: 1;
642 unsigned int do_print: 1;
643 unsigned int do_loop: 1;
644 unsigned int do_chomp: 1;
645 unsigned int do_split: 1;
646 unsigned int error_tolerant: 1;
647 unsigned int keep_tokens: 1;
665 VALUE parsing_thread;
672#define NUMPARAM_ID_P(id) numparam_id_p(p, id)
673#define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - (tNUMPARAM_1 - 1))
674#define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 - 1 + (idx)))
678 if (!is_local_id(
id) ||
id < (tNUMPARAM_1 << ID_SCOPE_SHIFT))
return 0;
679 unsigned int idx = NUMPARAM_ID_TO_IDX(
id);
680 return idx > 0 && idx <= NUMPARAM_MAX;
689 rb_parser_printf(p,
"after-shift: %+"PRIsVALUE
"\n", p->s_value);
705 for (
int i = 0; i <
len; i++) {
708 rb_parser_printf(p,
"after-reduce pop: %+"PRIsVALUE
"\n", tos);
712 rb_parser_printf(p,
"after-reduce push: %+"PRIsVALUE
"\n", p->s_lvalue);
722 rb_parser_printf(p,
"after-shift-error-token:\n");
730 for (
int i = 0; i <
len; i++) {
733 rb_parser_printf(p,
"after-pop-stack pop: %+"PRIsVALUE
"\n", tos);
764#define intern_cstr(n,l,en) rb_intern3(n,l,en)
766#define STRING_NEW0() rb_parser_encoding_string_new(p,0,0,p->enc)
768#define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
769#define STR_NEW0() rb_enc_str_new(0,0,p->enc)
770#define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
771#define STR_NEW3(ptr,len,e,func) parser_str_new(p, (ptr),(len),(e),(func),p->enc)
772#define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
773#define VALID_SYMNAME_P(s, l, enc, type) (rb_enc_symname_type(s, l, enc, (1U<<(type))) == (int)(type))
779 long len = RSTRING_LEN(str);
780 return len > 0 ? (
unsigned char)RSTRING_PTR(str)[
len-1] : when_empty;
787 st_free_table(p->pvtbl);
794 if (p->pktbl) st_free_table(p->pktbl);
798#define STRING_BUF_DEFAULT_LEN 16
806 buf->head = buf->last =
xmalloc(size);
807 buf->head->len = STRING_BUF_DEFAULT_LEN;
809 buf->head->next = NULL;
817 if (buf->head->used >= buf->head->len) {
819 long n = buf->head->len * 2;
826 buf->last->next = elem;
829 buf->last->buf[buf->last->used++] = str;
840 for (
long i = 0; i < elem->used; i++) {
841 rb_parser_string_free(p, elem->buf[i]);
853debug_end_expect_token_locations(
struct parser_params *p,
const char *name)
856 VALUE mesg = rb_sprintf(
"%s: [", name);
861 rb_str_catf(mesg,
"[%d, %d]", loc->pos->lineno, loc->pos->column);
865 flush_debug_buffer(p, p->debug_output, mesg);
872 if(!p->error_tolerant)
return;
876 locations->pos = pos;
877 locations->prev = p->end_expect_token_locations;
878 p->end_expect_token_locations = locations;
880 debug_end_expect_token_locations(p,
"push_end_expect_token_locations");
886 if(!p->end_expect_token_locations)
return;
890 p->end_expect_token_locations = locations;
892 debug_end_expect_token_locations(p,
"pop_end_expect_token_locations");
898 return p->end_expect_token_locations;
902parser_token2char(
struct parser_params *p,
enum yytokentype tok)
905#define TOKEN2CHAR(tok) case tok: return (#tok);
906#define TOKEN2CHAR2(tok, name) case tok: return (name);
907 TOKEN2CHAR2(
' ',
"word_sep");
908 TOKEN2CHAR2(
'!',
"!")
909 TOKEN2CHAR2('%', "%");
910 TOKEN2CHAR2('&', "&");
911 TOKEN2CHAR2('*', "*");
912 TOKEN2CHAR2('+', "+");
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('\n', "nl");
928 TOKEN2CHAR2('{
', "\"{\"");
929 TOKEN2CHAR2('}
', "\"}\"");
930 TOKEN2CHAR2('[
', "\"[\"");
931 TOKEN2CHAR2(']
', "\"]\"");
932 TOKEN2CHAR2('(
', "\"(\"");
933 TOKEN2CHAR2(')
', "\")\"");
934 TOKEN2CHAR2('\\
', "backslash");
935 TOKEN2CHAR(keyword_class);
936 TOKEN2CHAR(keyword_module);
937 TOKEN2CHAR(keyword_def);
938 TOKEN2CHAR(keyword_undef);
939 TOKEN2CHAR(keyword_begin);
940 TOKEN2CHAR(keyword_rescue);
941 TOKEN2CHAR(keyword_ensure);
942 TOKEN2CHAR(keyword_end);
943 TOKEN2CHAR(keyword_if);
944 TOKEN2CHAR(keyword_unless);
945 TOKEN2CHAR(keyword_then);
946 TOKEN2CHAR(keyword_elsif);
947 TOKEN2CHAR(keyword_else);
948 TOKEN2CHAR(keyword_case);
949 TOKEN2CHAR(keyword_when);
950 TOKEN2CHAR(keyword_while);
951 TOKEN2CHAR(keyword_until);
952 TOKEN2CHAR(keyword_for);
953 TOKEN2CHAR(keyword_break);
954 TOKEN2CHAR(keyword_next);
955 TOKEN2CHAR(keyword_redo);
956 TOKEN2CHAR(keyword_retry);
957 TOKEN2CHAR(keyword_in);
958 TOKEN2CHAR(keyword_do);
959 TOKEN2CHAR(keyword_do_cond);
960 TOKEN2CHAR(keyword_do_block);
961 TOKEN2CHAR(keyword_do_LAMBDA);
962 TOKEN2CHAR(keyword_return);
963 TOKEN2CHAR(keyword_yield);
964 TOKEN2CHAR(keyword_super);
965 TOKEN2CHAR(keyword_self);
966 TOKEN2CHAR(keyword_nil);
967 TOKEN2CHAR(keyword_true);
968 TOKEN2CHAR(keyword_false);
969 TOKEN2CHAR(keyword_and);
970 TOKEN2CHAR(keyword_or);
971 TOKEN2CHAR(keyword_not);
972 TOKEN2CHAR(modifier_if);
973 TOKEN2CHAR(modifier_unless);
974 TOKEN2CHAR(modifier_while);
975 TOKEN2CHAR(modifier_until);
976 TOKEN2CHAR(modifier_rescue);
977 TOKEN2CHAR(keyword_alias);
978 TOKEN2CHAR(keyword_defined);
979 TOKEN2CHAR(keyword_BEGIN);
980 TOKEN2CHAR(keyword_END);
981 TOKEN2CHAR(keyword__LINE__);
982 TOKEN2CHAR(keyword__FILE__);
983 TOKEN2CHAR(keyword__ENCODING__);
984 TOKEN2CHAR(tIDENTIFIER);
988 TOKEN2CHAR(tCONSTANT);
991 TOKEN2CHAR(tINTEGER);
993 TOKEN2CHAR(tRATIONAL);
994 TOKEN2CHAR(tIMAGINARY);
996 TOKEN2CHAR(tNTH_REF);
997 TOKEN2CHAR(tBACK_REF);
998 TOKEN2CHAR(tSTRING_CONTENT);
999 TOKEN2CHAR(tREGEXP_END);
1000 TOKEN2CHAR(tDUMNY_END);
1003 TOKEN2CHAR(tUMINUS);
1014 TOKEN2CHAR(tNMATCH);
1023 TOKEN2CHAR(tANDDOT);
1024 TOKEN2CHAR(tCOLON2);
1025 TOKEN2CHAR(tCOLON3);
1026 TOKEN2CHAR(tOP_ASGN);
1028 TOKEN2CHAR(tLPAREN);
1029 TOKEN2CHAR(tLPAREN_ARG);
1030 TOKEN2CHAR(tLBRACK);
1031 TOKEN2CHAR(tLBRACE);
1032 TOKEN2CHAR(tLBRACE_ARG);
1036 TOKEN2CHAR(tLAMBDA);
1037 TOKEN2CHAR(tSYMBEG);
1038 TOKEN2CHAR(tSTRING_BEG);
1039 TOKEN2CHAR(tXSTRING_BEG);
1040 TOKEN2CHAR(tREGEXP_BEG);
1041 TOKEN2CHAR(tWORDS_BEG);
1042 TOKEN2CHAR(tQWORDS_BEG);
1043 TOKEN2CHAR(tSYMBOLS_BEG);
1044 TOKEN2CHAR(tQSYMBOLS_BEG);
1045 TOKEN2CHAR(tSTRING_END);
1046 TOKEN2CHAR(tSTRING_DEND);
1047 TOKEN2CHAR(tSTRING_DBEG);
1048 TOKEN2CHAR(tSTRING_DVAR);
1049 TOKEN2CHAR(tLAMBEG);
1050 TOKEN2CHAR(tLABEL_END);
1051 TOKEN2CHAR(tIGNORED_NL);
1052 TOKEN2CHAR(tCOMMENT);
1053 TOKEN2CHAR(tEMBDOC_BEG);
1054 TOKEN2CHAR(tEMBDOC);
1055 TOKEN2CHAR(tEMBDOC_END);
1056 TOKEN2CHAR(tHEREDOC_BEG);
1057 TOKEN2CHAR(tHEREDOC_END);
1058 TOKEN2CHAR(k__END__);
1059 TOKEN2CHAR(tLOWEST);
1060 TOKEN2CHAR(tUMINUS_NUM);
1061 TOKEN2CHAR(tLAST_TOKEN);
1066 rb_bug("parser_token2id: unknown token %d", tok);
1068 UNREACHABLE_RETURN(0);
1072push_end_expect_token_locations(struct parser_params *p, const rb_code_position_t *pos)
1077pop_end_expect_token_locations(struct parser_params *p)
1082RBIMPL_ATTR_NONNULL((1, 2, 3))
1083static int parser_yyerror(struct parser_params*, const YYLTYPE *yylloc, const char*);
1084RBIMPL_ATTR_NONNULL((1, 2))
1085static int parser_yyerror0(struct parser_params*, const char*);
1086#define yyerror0(msg) parser_yyerror0(p, (msg))
1087#define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
1088#define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
1089#define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
1090#define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
1091#define lex_eol_p(p) lex_eol_n_p(p, 0)
1092#define lex_eol_n_p(p,n) lex_eol_ptr_n_p(p, (p)->lex.pcur, n)
1093#define lex_eol_ptr_p(p,ptr) lex_eol_ptr_n_p(p,ptr,0)
1094#define lex_eol_ptr_n_p(p,ptr,n) ((ptr)+(n) >= (p)->lex.pend)
1096static void token_info_setup(token_info *ptinfo, const char *ptr, const rb_code_location_t *loc);
1097static void token_info_push(struct parser_params*, const char *token, const rb_code_location_t *loc);
1098static void token_info_pop(struct parser_params*, const char *token, const rb_code_location_t *loc);
1099static void token_info_warn(struct parser_params *p, const char *token, token_info *ptinfo_beg, int same, const rb_code_location_t *loc);
1100static void token_info_drop(struct parser_params *p, const char *token, rb_code_position_t beg_pos);
1103#define compile_for_eval (0)
1105#define compile_for_eval (p->parent_iseq != 0)
1108#define token_column ((int)(p->lex.ptok - p->lex.pbeg))
1110#define CALL_Q_P(q) ((q) == tANDDOT)
1111#define NEW_QCALL(q,r,m,a,loc) (CALL_Q_P(q) ? NEW_QCALL0(r,m,a,loc) : NEW_CALL(r,m,a,loc))
1113#define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
1115static enum yytokentype yylex(YYSTYPE*, YYLTYPE*, struct parser_params*);
1118rb_discard_node(struct parser_params *p, NODE *n)
1120 rb_ast_delete_node(p->ast, n);
1123static 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);
1124static 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);
1125static rb_node_block_t *rb_node_block_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
1126static 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);
1127static 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);
1128static 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);
1129static 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);
1130static 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);
1131static 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);
1132static 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);
1133static 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);
1134static 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);
1135static rb_node_iter_t *rb_node_iter_new(struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body, const YYLTYPE *loc);
1136static 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);
1137static rb_node_for_masgn_t *rb_node_for_masgn_new(struct parser_params *p, NODE *nd_var, const YYLTYPE *loc);
1138static rb_node_retry_t *rb_node_retry_new(struct parser_params *p, const YYLTYPE *loc);
1139static rb_node_begin_t *rb_node_begin_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1140static rb_node_rescue_t *rb_node_rescue_new(struct parser_params *p, NODE *nd_head, NODE *nd_resq, NODE *nd_else, const YYLTYPE *loc);
1141static 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);
1142static rb_node_ensure_t *rb_node_ensure_new(struct parser_params *p, NODE *nd_head, NODE *nd_ensr, const YYLTYPE *loc);
1143static 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);
1144static 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);
1145static rb_node_masgn_t *rb_node_masgn_new(struct parser_params *p, NODE *nd_head, NODE *nd_args, const YYLTYPE *loc);
1146static rb_node_lasgn_t *rb_node_lasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1147static rb_node_dasgn_t *rb_node_dasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1148static rb_node_gasgn_t *rb_node_gasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1149static rb_node_iasgn_t *rb_node_iasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1150static 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);
1151static rb_node_cvasgn_t *rb_node_cvasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1152static 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);
1153static 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);
1154static 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);
1155static 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);
1156static 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);
1157static rb_node_call_t *rb_node_call_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1158static rb_node_opcall_t *rb_node_opcall_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1159static rb_node_fcall_t *rb_node_fcall_new(struct parser_params *p, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1160static rb_node_vcall_t *rb_node_vcall_new(struct parser_params *p, ID nd_mid, const YYLTYPE *loc);
1161static rb_node_qcall_t *rb_node_qcall_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1162static 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);
1163static rb_node_zsuper_t * rb_node_zsuper_new(struct parser_params *p, const YYLTYPE *loc);
1164static rb_node_list_t *rb_node_list_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
1165static rb_node_list_t *rb_node_list_new2(struct parser_params *p, NODE *nd_head, long nd_alen, NODE *nd_next, const YYLTYPE *loc);
1166static rb_node_zlist_t *rb_node_zlist_new(struct parser_params *p, const YYLTYPE *loc);
1167static rb_node_hash_t *rb_node_hash_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
1168static rb_node_return_t *rb_node_return_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1169static 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);
1170static rb_node_lvar_t *rb_node_lvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1171static rb_node_dvar_t *rb_node_dvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1172static rb_node_gvar_t *rb_node_gvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1173static rb_node_ivar_t *rb_node_ivar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1174static rb_node_const_t *rb_node_const_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1175static rb_node_cvar_t *rb_node_cvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1176static rb_node_nth_ref_t *rb_node_nth_ref_new(struct parser_params *p, long nd_nth, const YYLTYPE *loc);
1177static rb_node_back_ref_t *rb_node_back_ref_new(struct parser_params *p, long nd_nth, const YYLTYPE *loc);
1178static rb_node_match2_t *rb_node_match2_new(struct parser_params *p, NODE *nd_recv, NODE *nd_value, const YYLTYPE *loc);
1179static rb_node_match3_t *rb_node_match3_new(struct parser_params *p, NODE *nd_recv, NODE *nd_value, const YYLTYPE *loc);
1180static rb_node_integer_t * rb_node_integer_new(struct parser_params *p, char* val, int base, const YYLTYPE *loc);
1181static rb_node_float_t * rb_node_float_new(struct parser_params *p, char* val, const YYLTYPE *loc);
1182static rb_node_rational_t * rb_node_rational_new(struct parser_params *p, char* val, int base, int seen_point, const YYLTYPE *loc);
1183static 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);
1184static rb_node_str_t *rb_node_str_new(struct parser_params *p, rb_parser_string_t *string, const YYLTYPE *loc);
1185static 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);
1186static rb_node_dstr_t *rb_node_dstr_new(struct parser_params *p, rb_parser_string_t *string, const YYLTYPE *loc);
1187static rb_node_xstr_t *rb_node_xstr_new(struct parser_params *p, rb_parser_string_t *string, const YYLTYPE *loc);
1188static 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);
1189static 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);
1190static 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);
1191static rb_node_once_t *rb_node_once_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1192static rb_node_args_t *rb_node_args_new(struct parser_params *p, const YYLTYPE *loc);
1193static rb_node_args_aux_t *rb_node_args_aux_new(struct parser_params *p, ID nd_pid, int nd_plen, const YYLTYPE *loc);
1194static rb_node_opt_arg_t *rb_node_opt_arg_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1195static rb_node_kw_arg_t *rb_node_kw_arg_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1196static rb_node_postarg_t *rb_node_postarg_new(struct parser_params *p, NODE *nd_1st, NODE *nd_2nd, const YYLTYPE *loc);
1197static rb_node_argscat_t *rb_node_argscat_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, const YYLTYPE *loc);
1198static rb_node_argspush_t *rb_node_argspush_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, const YYLTYPE *loc);
1199static rb_node_splat_t *rb_node_splat_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc, const YYLTYPE *operator_loc);
1200static rb_node_block_pass_t *rb_node_block_pass_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc, const YYLTYPE *operator_loc);
1201static rb_node_defn_t *rb_node_defn_new(struct parser_params *p, ID nd_mid, NODE *nd_defn, const YYLTYPE *loc);
1202static rb_node_defs_t *rb_node_defs_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_defn, const YYLTYPE *loc);
1203static 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);
1204static 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);
1205static rb_node_undef_t *rb_node_undef_new(struct parser_params *p, NODE *nd_undef, const YYLTYPE *loc);
1206static 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);
1207static 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);
1208static 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);
1209static 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);
1210static 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);
1211static 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);
1212static 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);
1213static rb_node_self_t *rb_node_self_new(struct parser_params *p, const YYLTYPE *loc);
1214static rb_node_nil_t *rb_node_nil_new(struct parser_params *p, const YYLTYPE *loc);
1215static rb_node_true_t *rb_node_true_new(struct parser_params *p, const YYLTYPE *loc);
1216static rb_node_false_t *rb_node_false_new(struct parser_params *p, const YYLTYPE *loc);
1217static rb_node_errinfo_t *rb_node_errinfo_new(struct parser_params *p, const YYLTYPE *loc);
1218static rb_node_defined_t *rb_node_defined_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1219static 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);
1220static rb_node_sym_t *rb_node_sym_new(struct parser_params *p, VALUE str, const YYLTYPE *loc);
1221static 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);
1222static rb_node_attrasgn_t *rb_node_attrasgn_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1223static 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);
1224static rb_node_aryptn_t *rb_node_aryptn_new(struct parser_params *p, NODE *pre_args, NODE *rest_arg, NODE *post_args, const YYLTYPE *loc);
1225static rb_node_hshptn_t *rb_node_hshptn_new(struct parser_params *p, NODE *nd_pconst, NODE *nd_pkwargs, NODE *nd_pkwrestarg, const YYLTYPE *loc);
1226static 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);
1227static rb_node_line_t *rb_node_line_new(struct parser_params *p, const YYLTYPE *loc);
1228static rb_node_file_t *rb_node_file_new(struct parser_params *p, VALUE str, const YYLTYPE *loc);
1229static rb_node_error_t *rb_node_error_new(struct parser_params *p, const YYLTYPE *loc);
1231#define NEW_SCOPE(a,b,c,loc) (NODE *)rb_node_scope_new(p,a,b,c,loc)
1232#define NEW_SCOPE2(t,a,b,c,loc) (NODE *)rb_node_scope_new2(p,t,a,b,c,loc)
1233#define NEW_BLOCK(a,loc) (NODE *)rb_node_block_new(p,a,loc)
1234#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)
1235#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)
1236#define NEW_CASE(h,b,loc,ck_loc,ek_loc) (NODE *)rb_node_case_new(p,h,b,loc,ck_loc,ek_loc)
1237#define NEW_CASE2(b,loc,ck_loc,ek_loc) (NODE *)rb_node_case2_new(p,b,loc,ck_loc,ek_loc)
1238#define NEW_CASE3(h,b,loc,ck_loc,ek_loc) (NODE *)rb_node_case3_new(p,h,b,loc,ck_loc,ek_loc)
1239#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)
1240#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)
1241#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)
1242#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)
1243#define NEW_ITER(a,b,loc) (NODE *)rb_node_iter_new(p,a,b,loc)
1244#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)
1245#define NEW_FOR_MASGN(v,loc) (NODE *)rb_node_for_masgn_new(p,v,loc)
1246#define NEW_RETRY(loc) (NODE *)rb_node_retry_new(p,loc)
1247#define NEW_BEGIN(b,loc) (NODE *)rb_node_begin_new(p,b,loc)
1248#define NEW_RESCUE(b,res,e,loc) (NODE *)rb_node_rescue_new(p,b,res,e,loc)
1249#define NEW_RESBODY(a,v,ex,n,loc) (NODE *)rb_node_resbody_new(p,a,v,ex,n,loc)
1250#define NEW_ENSURE(b,en,loc) (NODE *)rb_node_ensure_new(p,b,en,loc)
1251#define NEW_AND(f,s,loc,op_loc) (NODE *)rb_node_and_new(p,f,s,loc,op_loc)
1252#define NEW_OR(f,s,loc,op_loc) (NODE *)rb_node_or_new(p,f,s,loc,op_loc)
1253#define NEW_MASGN(l,r,loc) rb_node_masgn_new(p,l,r,loc)
1254#define NEW_LASGN(v,val,loc) (NODE *)rb_node_lasgn_new(p,v,val,loc)
1255#define NEW_DASGN(v,val,loc) (NODE *)rb_node_dasgn_new(p,v,val,loc)
1256#define NEW_GASGN(v,val,loc) (NODE *)rb_node_gasgn_new(p,v,val,loc)
1257#define NEW_IASGN(v,val,loc) (NODE *)rb_node_iasgn_new(p,v,val,loc)
1258#define NEW_CDECL(v,val,path,share,loc) (NODE *)rb_node_cdecl_new(p,v,val,path,share,loc)
1259#define NEW_CVASGN(v,val,loc) (NODE *)rb_node_cvasgn_new(p,v,val,loc)
1260#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)
1261#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)
1262#define NEW_OP_ASGN_OR(i,val,loc) (NODE *)rb_node_op_asgn_or_new(p,i,val,loc)
1263#define NEW_OP_ASGN_AND(i,val,loc) (NODE *)rb_node_op_asgn_and_new(p,i,val,loc)
1264#define NEW_OP_CDECL(v,op,val,share,loc) (NODE *)rb_node_op_cdecl_new(p,v,val,op,share,loc)
1265#define NEW_CALL(r,m,a,loc) (NODE *)rb_node_call_new(p,r,m,a,loc)
1266#define NEW_OPCALL(r,m,a,loc) (NODE *)rb_node_opcall_new(p,r,m,a,loc)
1267#define NEW_FCALL(m,a,loc) rb_node_fcall_new(p,m,a,loc)
1268#define NEW_VCALL(m,loc) (NODE *)rb_node_vcall_new(p,m,loc)
1269#define NEW_QCALL0(r,m,a,loc) (NODE *)rb_node_qcall_new(p,r,m,a,loc)
1270#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)
1271#define NEW_ZSUPER(loc) (NODE *)rb_node_zsuper_new(p,loc)
1272#define NEW_LIST(a,loc) (NODE *)rb_node_list_new(p,a,loc)
1273#define NEW_LIST2(h,l,n,loc) (NODE *)rb_node_list_new2(p,h,l,n,loc)
1274#define NEW_ZLIST(loc) (NODE *)rb_node_zlist_new(p,loc)
1275#define NEW_HASH(a,loc) (NODE *)rb_node_hash_new(p,a,loc)
1276#define NEW_RETURN(s,loc,k_loc) (NODE *)rb_node_return_new(p,s,loc,k_loc)
1277#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)
1278#define NEW_LVAR(v,loc) (NODE *)rb_node_lvar_new(p,v,loc)
1279#define NEW_DVAR(v,loc) (NODE *)rb_node_dvar_new(p,v,loc)
1280#define NEW_GVAR(v,loc) (NODE *)rb_node_gvar_new(p,v,loc)
1281#define NEW_IVAR(v,loc) (NODE *)rb_node_ivar_new(p,v,loc)
1282#define NEW_CONST(v,loc) (NODE *)rb_node_const_new(p,v,loc)
1283#define NEW_CVAR(v,loc) (NODE *)rb_node_cvar_new(p,v,loc)
1284#define NEW_NTH_REF(n,loc) (NODE *)rb_node_nth_ref_new(p,n,loc)
1285#define NEW_BACK_REF(n,loc) (NODE *)rb_node_back_ref_new(p,n,loc)
1286#define NEW_MATCH2(n1,n2,loc) (NODE *)rb_node_match2_new(p,n1,n2,loc)
1287#define NEW_MATCH3(r,n2,loc) (NODE *)rb_node_match3_new(p,r,n2,loc)
1288#define NEW_INTEGER(val, base,loc) (NODE *)rb_node_integer_new(p,val,base,loc)
1289#define NEW_FLOAT(val,loc) (NODE *)rb_node_float_new(p,val,loc)
1290#define NEW_RATIONAL(val,base,seen_point,loc) (NODE *)rb_node_rational_new(p,val,base,seen_point,loc)
1291#define NEW_IMAGINARY(val,base,seen_point,numeric_type,loc) (NODE *)rb_node_imaginary_new(p,val,base,seen_point,numeric_type,loc)
1292#define NEW_STR(s,loc) (NODE *)rb_node_str_new(p,s,loc)
1293#define NEW_DSTR0(s,l,n,loc) (NODE *)rb_node_dstr_new0(p,s,l,n,loc)
1294#define NEW_DSTR(s,loc) (NODE *)rb_node_dstr_new(p,s,loc)
1295#define NEW_XSTR(s,loc) (NODE *)rb_node_xstr_new(p,s,loc)
1296#define NEW_DXSTR(s,l,n,loc) (NODE *)rb_node_dxstr_new(p,s,l,n,loc)
1297#define NEW_EVSTR(n,loc,o_loc,c_loc) (NODE *)rb_node_evstr_new(p,n,loc,o_loc,c_loc)
1298#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)
1299#define NEW_ONCE(b,loc) (NODE *)rb_node_once_new(p,b,loc)
1300#define NEW_ARGS(loc) rb_node_args_new(p,loc)
1301#define NEW_ARGS_AUX(r,b,loc) rb_node_args_aux_new(p,r,b,loc)
1302#define NEW_OPT_ARG(v,loc) rb_node_opt_arg_new(p,v,loc)
1303#define NEW_KW_ARG(v,loc) rb_node_kw_arg_new(p,v,loc)
1304#define NEW_POSTARG(i,v,loc) (NODE *)rb_node_postarg_new(p,i,v,loc)
1305#define NEW_ARGSCAT(a,b,loc) (NODE *)rb_node_argscat_new(p,a,b,loc)
1306#define NEW_ARGSPUSH(a,b,loc) (NODE *)rb_node_argspush_new(p,a,b,loc)
1307#define NEW_SPLAT(a,loc,op_loc) (NODE *)rb_node_splat_new(p,a,loc,op_loc)
1308#define NEW_BLOCK_PASS(b,loc,o_loc) rb_node_block_pass_new(p,b,loc,o_loc)
1309#define NEW_DEFN(i,s,loc) (NODE *)rb_node_defn_new(p,i,s,loc)
1310#define NEW_DEFS(r,i,s,loc) (NODE *)rb_node_defs_new(p,r,i,s,loc)
1311#define NEW_ALIAS(n,o,loc,k_loc) (NODE *)rb_node_alias_new(p,n,o,loc,k_loc)
1312#define NEW_VALIAS(n,o,loc,k_loc) (NODE *)rb_node_valias_new(p,n,o,loc,k_loc)
1313#define NEW_UNDEF(i,loc) (NODE *)rb_node_undef_new(p,i,loc)
1314#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)
1315#define NEW_MODULE(n,b,loc,mk_loc,ek_loc) (NODE *)rb_node_module_new(p,n,b,loc,mk_loc,ek_loc)
1316#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)
1317#define NEW_COLON2(c,i,loc,d_loc,n_loc) (NODE *)rb_node_colon2_new(p,c,i,loc,d_loc,n_loc)
1318#define NEW_COLON3(i,loc,d_loc,n_loc) (NODE *)rb_node_colon3_new(p,i,loc,d_loc,n_loc)
1319#define NEW_DOT2(b,e,loc,op_loc) (NODE *)rb_node_dot2_new(p,b,e,loc,op_loc)
1320#define NEW_DOT3(b,e,loc,op_loc) (NODE *)rb_node_dot3_new(p,b,e,loc,op_loc)
1321#define NEW_SELF(loc) (NODE *)rb_node_self_new(p,loc)
1322#define NEW_NIL(loc) (NODE *)rb_node_nil_new(p,loc)
1323#define NEW_TRUE(loc) (NODE *)rb_node_true_new(p,loc)
1324#define NEW_FALSE(loc) (NODE *)rb_node_false_new(p,loc)
1325#define NEW_ERRINFO(loc) (NODE *)rb_node_errinfo_new(p,loc)
1326#define NEW_DEFINED(e,loc,k_loc) (NODE *)rb_node_defined_new(p,e,loc, k_loc)
1327#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)
1328#define NEW_SYM(str,loc) (NODE *)rb_node_sym_new(p,str,loc)
1329#define NEW_DSYM(s,l,n,loc) (NODE *)rb_node_dsym_new(p,s,l,n,loc)
1330#define NEW_ATTRASGN(r,m,a,loc) (NODE *)rb_node_attrasgn_new(p,r,m,a,loc)
1331#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)
1332#define NEW_ARYPTN(pre,r,post,loc) (NODE *)rb_node_aryptn_new(p,pre,r,post,loc)
1333#define NEW_HSHPTN(c,kw,kwrest,loc) (NODE *)rb_node_hshptn_new(p,c,kw,kwrest,loc)
1334#define NEW_FNDPTN(pre,a,post,loc) (NODE *)rb_node_fndptn_new(p,pre,a,post,loc)
1335#define NEW_LINE(loc) (NODE *)rb_node_line_new(p,loc)
1336#define NEW_FILE(str,loc) (NODE *)rb_node_file_new(p,str,loc)
1337#define NEW_ENCODING(loc) (NODE *)rb_node_encoding_new(p,loc)
1338#define NEW_ERROR(loc) (NODE *)rb_node_error_new(p,loc)
1340enum internal_node_type {
1341 NODE_INTERNAL_ONLY = NODE_LAST,
1348parser_node_name(int node)
1352 return "NODE_DEF_TEMP";
1354 return "NODE_EXITS";
1356 return ruby_node_name(node);
1360/* This node is parse.y internal */
1361struct RNode_DEF_TEMP {
1364 /* for NODE_DEFN/NODE_DEFS */
1366 struct RNode *nd_def;
1371 NODE *numparam_save;
1372 struct lex_context ctxt;
1376#define RNODE_DEF_TEMP(node) ((struct RNode_DEF_TEMP *)(node))
1378static rb_node_break_t *rb_node_break_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1379static rb_node_next_t *rb_node_next_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1380static rb_node_redo_t *rb_node_redo_new(struct parser_params *p, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1381static rb_node_def_temp_t *rb_node_def_temp_new(struct parser_params *p, const YYLTYPE *loc);
1382static rb_node_def_temp_t *def_head_save(struct parser_params *p, rb_node_def_temp_t *n);
1384#define NEW_BREAK(s,loc,k_loc) (NODE *)rb_node_break_new(p,s,loc,k_loc)
1385#define NEW_NEXT(s,loc,k_loc) (NODE *)rb_node_next_new(p,s,loc,k_loc)
1386#define NEW_REDO(loc,k_loc) (NODE *)rb_node_redo_new(p,loc,k_loc)
1387#define NEW_DEF_TEMP(loc) rb_node_def_temp_new(p,loc)
1389/* Make a new internal node, which should not be appeared in the
1390 * result AST and does not have node_id and location. */
1391static NODE* node_new_internal(struct parser_params *p, enum node_type type, size_t size, size_t alignment);
1392#define NODE_NEW_INTERNAL(ndtype, type) (type *)node_new_internal(p, (enum node_type)(ndtype), sizeof(type), RUBY_ALIGNOF(type))
1394static NODE *nd_set_loc(NODE *nd, const YYLTYPE *loc);
1397parser_get_node_id(struct parser_params *p)
1399 int node_id = p->node_id;
1405anddot_multiple_assignment_check(struct parser_params* p, const YYLTYPE *loc, ID id)
1407 if (id == tANDDOT) {
1408 yyerror1(loc, "&. inside multiple assignment destination");
1413set_line_body(NODE *body, int line)
1416 switch (nd_type(body)) {
1419 nd_set_line(body, line);
1424set_embraced_location(NODE *node, const rb_code_location_t *beg, const rb_code_location_t *end)
1426 RNODE_ITER(node)->nd_body->nd_loc = code_loc_gen(beg, end);
1427 nd_set_line(node, beg->end_pos.lineno);
1431last_expr_node(NODE *expr)
1434 if (nd_type_p(expr, NODE_BLOCK)) {
1435 expr = RNODE_BLOCK(RNODE_BLOCK(expr)->nd_end)->nd_head;
1437 else if (nd_type_p(expr, NODE_BEGIN) && RNODE_BEGIN(expr)->nd_body) {
1438 expr = RNODE_BEGIN(expr)->nd_body;
1448#define yyparse ruby_yyparse
1451static NODE* cond(struct parser_params *p, NODE *node, const YYLTYPE *loc);
1452static NODE* method_cond(struct parser_params *p, NODE *node, const YYLTYPE *loc);
1453static NODE *new_nil_at(struct parser_params *p, const rb_code_position_t *pos);
1454static NODE *new_if(struct parser_params*,NODE*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*);
1455static NODE *new_unless(struct parser_params*,NODE*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*);
1456static NODE *logop(struct parser_params*,ID,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
1458static NODE *newline_node(NODE*);
1459static void fixpos(NODE*,NODE*);
1461static int value_expr(struct parser_params*,NODE*);
1462static void void_expr(struct parser_params*,NODE*);
1463static NODE *remove_begin(NODE*);
1464static NODE *void_stmts(struct parser_params*,NODE*);
1465static void reduce_nodes(struct parser_params*,NODE**);
1466static void block_dup_check(struct parser_params*,NODE*,NODE*);
1468static NODE *block_append(struct parser_params*,NODE*,NODE*);
1469static NODE *list_append(struct parser_params*,NODE*,NODE*);
1470static NODE *list_concat(NODE*,NODE*);
1471static NODE *arg_append(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1472static NODE *last_arg_append(struct parser_params *p, NODE *args, NODE *last_arg, const YYLTYPE *loc);
1473static NODE *rest_arg_append(struct parser_params *p, NODE *args, NODE *rest_arg, const YYLTYPE *loc);
1474static NODE *literal_concat(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1475static NODE *new_evstr(struct parser_params*,NODE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*);
1476static NODE *new_dstr(struct parser_params*,NODE*,const YYLTYPE*);
1477static NODE *str2dstr(struct parser_params*,NODE*);
1478static NODE *evstr2dstr(struct parser_params*,NODE*);
1479static NODE *splat_array(NODE*);
1480static void mark_lvar_used(struct parser_params *p, NODE *rhs);
1482static NODE *call_bin_op(struct parser_params*,NODE*,ID,NODE*,const YYLTYPE*,const YYLTYPE*);
1483static NODE *call_uni_op(struct parser_params*,NODE*,ID,const YYLTYPE*,const YYLTYPE*);
1484static NODE *new_qcall(struct parser_params* p, ID atype, NODE *recv, ID mid, NODE *args, const YYLTYPE *op_loc, const YYLTYPE *loc);
1485static 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);
1486static 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;}
1488static bool args_info_empty_p(struct rb_args_info *args);
1489static 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*);
1490static rb_node_args_t *new_args_tail(struct parser_params*,rb_node_kw_arg_t*,ID,ID,const YYLTYPE*);
1491#define new_empty_args_tail(p, loc) new_args_tail(p, 0, 0, 0, loc)
1492static NODE *new_array_pattern(struct parser_params *p, NODE *constant, NODE *pre_arg, NODE *aryptn, const YYLTYPE *loc);
1493static NODE *new_array_pattern_tail(struct parser_params *p, NODE *pre_args, int has_rest, NODE *rest_arg, NODE *post_args, const YYLTYPE *loc);
1494static NODE *new_find_pattern(struct parser_params *p, NODE *constant, NODE *fndptn, const YYLTYPE *loc);
1495static NODE *new_find_pattern_tail(struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg, const YYLTYPE *loc);
1496static NODE *new_hash_pattern(struct parser_params *p, NODE *constant, NODE *hshptn, const YYLTYPE *loc);
1497static NODE *new_hash_pattern_tail(struct parser_params *p, NODE *kw_args, ID kw_rest_arg, const YYLTYPE *loc);
1499static rb_node_kw_arg_t *new_kw_arg(struct parser_params *p, NODE *k, const YYLTYPE *loc);
1500static rb_node_args_t *args_with_numbered(struct parser_params*,rb_node_args_t*,int,ID);
1502static NODE* negate_lit(struct parser_params*, NODE*);
1503static void no_blockarg(struct parser_params*,NODE*);
1504static NODE *ret_args(struct parser_params*,NODE*);
1505static NODE *arg_blk_pass(NODE*,rb_node_block_pass_t*);
1506static NODE *dsym_node(struct parser_params*,NODE*,const YYLTYPE*);
1508static NODE *gettable(struct parser_params*,ID,const YYLTYPE*);
1509static NODE *assignable(struct parser_params*,ID,NODE*,const YYLTYPE*);
1511static NODE *aryset(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1512static NODE *attrset(struct parser_params*,NODE*,ID,ID,const YYLTYPE*);
1514static VALUE rb_backref_error(struct parser_params*,NODE*);
1515static NODE *node_assign(struct parser_params*,NODE*,NODE*,struct lex_context,const YYLTYPE*);
1517static NODE *new_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1518static 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);
1519static 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);
1520static NODE *new_const_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1521static NODE *new_bodystmt(struct parser_params *p, NODE *head, NODE *rescue, NODE *rescue_else, NODE *ensure, const YYLTYPE *loc);
1523static NODE *const_decl(struct parser_params *p, NODE* path, const YYLTYPE *loc);
1525static rb_node_opt_arg_t *opt_arg_append(rb_node_opt_arg_t*, rb_node_opt_arg_t*);
1526static rb_node_kw_arg_t *kwd_append(rb_node_kw_arg_t*, rb_node_kw_arg_t*);
1528static NODE *new_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1529static NODE *new_unique_key_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1531static NODE *new_defined(struct parser_params *p, NODE *expr, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1533static NODE *new_regexp(struct parser_params *, NODE *, int, const YYLTYPE *, const YYLTYPE *, const YYLTYPE *, const YYLTYPE *);
1535#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
1537static NODE *new_xstring(struct parser_params *, NODE *, const YYLTYPE *loc);
1539static NODE *symbol_append(struct parser_params *p, NODE *symbols, NODE *symbol);
1541static NODE *match_op(struct parser_params*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
1543static rb_ast_id_table_t *local_tbl(struct parser_params*);
1545static VALUE reg_compile(struct parser_params*, rb_parser_string_t*, int);
1546static void reg_fragment_setenc(struct parser_params*, rb_parser_string_t*, int);
1548static int literal_concat0(struct parser_params *p, rb_parser_string_t *head, rb_parser_string_t *tail);
1549static NODE *heredoc_dedent(struct parser_params*,NODE*);
1551static void check_literal_when(struct parser_params *p, NODE *args, const YYLTYPE *loc);
1553static 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);
1556#define get_value(idx) (rb_ary_entry(p->s_value_stack, idx))
1557#define set_value(val) (p->s_lvalue = val)
1558static VALUE assign_error(struct parser_params *p, const char *mesg, VALUE a);
1559static int id_is_var(struct parser_params *p, ID id);
1562RUBY_SYMBOL_EXPORT_BEGIN
1563VALUE rb_parser_reg_compile(struct parser_params* p, VALUE str, int options);
1564int rb_reg_fragment_setenc(struct parser_params*, rb_parser_string_t *, int);
1565enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_state_e, enum lex_state_e, int);
1566VALUE rb_parser_lex_state_name(struct parser_params *p, enum lex_state_e state);
1567void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int);
1568PRINTF_ARGS(void rb_parser_fatal(struct parser_params *p, const char *fmt, ...), 2, 3);
1569YYLTYPE *rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc);
1570YYLTYPE *rb_parser_set_location_of_delayed_token(struct parser_params *p, YYLTYPE *yylloc);
1571YYLTYPE *rb_parser_set_location_of_heredoc_end(struct parser_params *p, YYLTYPE *yylloc);
1572YYLTYPE *rb_parser_set_location_of_dummy_end(struct parser_params *p, YYLTYPE *yylloc);
1573YYLTYPE *rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc);
1574YYLTYPE *rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc);
1575void ruby_show_error_line(struct parser_params *p, VALUE errbuf, const YYLTYPE *yylloc, int lineno, rb_parser_string_t *str);
1576RUBY_SYMBOL_EXPORT_END
1578static void flush_string_content(struct parser_params *p, rb_encoding *enc, size_t back);
1579static void error_duplicate_pattern_variable(struct parser_params *p, ID id, const YYLTYPE *loc);
1580static void error_duplicate_pattern_key(struct parser_params *p, ID id, const YYLTYPE *loc);
1581static VALUE formal_argument_error(struct parser_params*, ID);
1582static ID shadowing_lvar(struct parser_params*,ID);
1583static void new_bv(struct parser_params*,ID);
1585static void local_push(struct parser_params*,int);
1586static void local_pop(struct parser_params*);
1587static void local_var(struct parser_params*, ID);
1588static void arg_var(struct parser_params*, ID);
1589static int local_id(struct parser_params *p, ID id);
1590static int local_id_ref(struct parser_params*, ID, ID **);
1591#define internal_id rb_parser_internal_id
1592ID internal_id(struct parser_params*);
1593static NODE *new_args_forward_call(struct parser_params*, NODE*, const YYLTYPE*, const YYLTYPE*);
1594static int check_forwarding_args(struct parser_params*);
1595static void add_forwarding_args(struct parser_params *p);
1596static void forwarding_arg_check(struct parser_params *p, ID arg, ID all, const char *var);
1598static const struct vtable *dyna_push(struct parser_params *);
1599static void dyna_pop(struct parser_params*, const struct vtable *);
1600static int dyna_in_block(struct parser_params*);
1601#define dyna_var(p, id) local_var(p, id)
1602static int dvar_defined(struct parser_params*, ID);
1603#define dvar_defined_ref rb_parser_dvar_defined_ref
1604int dvar_defined_ref(struct parser_params*, ID, ID**);
1605static int dvar_curr(struct parser_params*,ID);
1607static int lvar_defined(struct parser_params*, ID);
1609static NODE *numparam_push(struct parser_params *p);
1610static void numparam_pop(struct parser_params *p, NODE *prev_inner);
1612#define METHOD_NOT '!
'
1614#define idFWD_REST '*
'
1615#define idFWD_KWREST idPow /* Use simple "**", as tDSTAR is "**arg" */
1616#define idFWD_BLOCK '&
'
1617#define idFWD_ALL idDot3
1618#define arg_FWD_BLOCK idFWD_BLOCK
1620#define RE_ONIG_OPTION_IGNORECASE 1
1621#define RE_ONIG_OPTION_EXTEND (RE_ONIG_OPTION_IGNORECASE<<1)
1622#define RE_ONIG_OPTION_MULTILINE (RE_ONIG_OPTION_EXTEND<<1)
1623#define RE_OPTION_ONCE (1<<16)
1624#define RE_OPTION_ENCODING_SHIFT 8
1625#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
1626#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
1627#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
1628#define RE_OPTION_MASK 0xff
1629#define RE_OPTION_ARG_ENCODING_NONE 32
1631#define CHECK_LITERAL_WHEN (st_table *)1
1632#define CASE_LABELS_ENABLED_P(case_labels) (case_labels && case_labels != CHECK_LITERAL_WHEN)
1634#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
1635RUBY_FUNC_EXPORTED size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr);
1637#define TOKEN2ID(tok) ( \
1638 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
1639 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
1640 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
1641 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
1642 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
1643 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
1644 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
1646/****** Ripper *******/
1650#include "eventids1.h"
1651#include "eventids2.h"
1653extern const struct ripper_parser_ids ripper_parser_ids;
1655static VALUE ripper_dispatch0(struct parser_params*,ID);
1656static VALUE ripper_dispatch1(struct parser_params*,ID,VALUE);
1657static VALUE ripper_dispatch2(struct parser_params*,ID,VALUE,VALUE);
1658static VALUE ripper_dispatch3(struct parser_params*,ID,VALUE,VALUE,VALUE);
1659static VALUE ripper_dispatch4(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE);
1660static VALUE ripper_dispatch5(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE);
1661static VALUE ripper_dispatch7(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE);
1662void ripper_error(struct parser_params *p);
1664#define dispatch0(n) ripper_dispatch0(p, RIPPER_ID(n))
1665#define dispatch1(n,a) ripper_dispatch1(p, RIPPER_ID(n), (a))
1666#define dispatch2(n,a,b) ripper_dispatch2(p, RIPPER_ID(n), (a), (b))
1667#define dispatch3(n,a,b,c) ripper_dispatch3(p, RIPPER_ID(n), (a), (b), (c))
1668#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, RIPPER_ID(n), (a), (b), (c), (d))
1669#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, RIPPER_ID(n), (a), (b), (c), (d), (e))
1670#define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, RIPPER_ID(n), (a), (b), (c), (d), (e), (f), (g))
1672#define yyparse ripper_yyparse
1675aryptn_pre_args(struct parser_params *p, VALUE pre_arg, VALUE pre_args)
1677 if (!NIL_P(pre_arg)) {
1678 if (!NIL_P(pre_args)) {
1679 rb_ary_unshift(pre_args, pre_arg);
1682 pre_args = rb_ary_new_from_args(1, pre_arg);
1688#define ID2VAL(id) STATIC_ID2SYM(id)
1689#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
1692#define KWD2EID(t, v) keyword_##t
1695new_scope_body(struct parser_params *p, rb_node_args_t *args, NODE *body, NODE *parent, const YYLTYPE *loc)
1697 body = remove_begin(body);
1698 reduce_nodes(p, &body);
1699 NODE *n = NEW_SCOPE(args, body, parent, loc);
1700 nd_set_line(n, loc->end_pos.lineno);
1701 set_line_body(body, loc->beg_pos.lineno);
1706rescued_expr(struct parser_params *p, NODE *arg, NODE *rescue,
1707 const YYLTYPE *arg_loc, const YYLTYPE *mod_loc, const YYLTYPE *res_loc)
1709 YYLTYPE loc = code_loc_gen(mod_loc, res_loc);
1710 rescue = NEW_RESBODY(0, 0, remove_begin(rescue), 0, &loc);
1711 loc.beg_pos = arg_loc->beg_pos;
1712 return NEW_RESCUE(arg, rescue, 0, &loc);
1715static NODE *add_block_exit(struct parser_params *p, NODE *node);
1716static rb_node_exits_t *init_block_exit(struct parser_params *p);
1717static rb_node_exits_t *allow_block_exit(struct parser_params *p);
1718static void restore_block_exit(struct parser_params *p, rb_node_exits_t *exits);
1719static void clear_block_exit(struct parser_params *p, bool error);
1722next_rescue_context(struct lex_context *next, const struct lex_context *outer, enum rescue_context def)
1724 next->in_rescue = outer->in_rescue == after_rescue ? after_rescue : def;
1728restore_defun(struct parser_params *p, rb_node_def_temp_t *temp)
1730 /* See: def_name action */
1731 struct lex_context ctxt = temp->save.ctxt;
1732 p->ctxt.in_def = ctxt.in_def;
1733 p->ctxt.shareable_constant_value = ctxt.shareable_constant_value;
1734 p->ctxt.in_rescue = ctxt.in_rescue;
1735 p->max_numparam = temp->save.max_numparam;
1736 numparam_pop(p, temp->save.numparam_save);
1737 clear_block_exit(p, true);
1741endless_method_name(struct parser_params *p, ID mid, const YYLTYPE *loc)
1743 if (is_attrset_id(mid)) {
1744 yyerror1(loc, "setter method cannot be defined in an endless method definition");
1746 token_info_drop(p, "def", loc->beg_pos);
1749#define debug_token_line(p, name, line) do { \
1751 const char *const pcur = p->lex.pcur; \
1752 const char *const ptok = p->lex.ptok; \
1753 rb_parser_printf(p, name ":%d (%d: %"PRIdPTRDIFF"|%"PRIdPTRDIFF"|%"PRIdPTRDIFF")\n", \
1754 line, p->ruby_sourceline, \
1755 ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur); \
1759#define begin_definition(k, loc_beg, loc_end) \
1761 if (!(p->ctxt.in_class = (k)[0] != 0)) { \
1762 /* singleton class */ \
1763 p->ctxt.cant_return = !p->ctxt.in_def; \
1764 p->ctxt.in_def = 0; \
1766 else if (p->ctxt.in_def) { \
1767 YYLTYPE loc = code_loc_gen(loc_beg, loc_end); \
1768 yyerror1(&loc, k " definition in method body"); \
1771 p->ctxt.cant_return = 1; \
1777# define ifndef_ripper(x) (x)
1778# define ifdef_ripper(r,x) (x)
1780# define ifndef_ripper(x)
1781# define ifdef_ripper(r,x) (r)
1784# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
1785# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
1786# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
1787# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
1788# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
1789# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
1790# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
1791# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
1792# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
1793# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
1794# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1795# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
1796# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
1797# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
1798# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1799# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
1800# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
1801# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
1802# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
1803# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1805extern const ID id_warn, id_warning, id_gets, id_assoc;
1806# define ERR_MESG() STR_NEW2(mesg) /* to bypass Ripper DSL */
1807# define WARN_S_L(s,l) STR_NEW(s,l)
1808# define WARN_S(s) STR_NEW2(s)
1809# define WARN_I(i) INT2NUM(i)
1810# define WARN_ID(i) rb_id2str(i)
1811# define PRIsWARN PRIsVALUE
1812# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
1813# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
1814# ifdef HAVE_VA_ARGS_MACRO
1815# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
1817# define WARN_CALL rb_funcall
1819# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
1820# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
1821# ifdef HAVE_VA_ARGS_MACRO
1822# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
1824# define WARNING_CALL rb_funcall
1826# define compile_error ripper_compile_error
1828# define WARN_S_L(s,l) s
1831# define WARN_ID(i) rb_id2name(i)
1832# define PRIsWARN PRIsVALUE
1833# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1834# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1835# define WARN_CALL rb_compile_warn
1836# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1837# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1838# define WARNING_CALL rb_compile_warning
1839PRINTF_ARGS(static void parser_compile_error(struct parser_params*, const rb_code_location_t *loc, const char *fmt, ...), 3, 4);
1840# define compile_error(p, ...) parser_compile_error(p, NULL, __VA_ARGS__)
1843#define RNODE_EXITS(node) ((rb_node_exits_t*)(node))
1846add_block_exit(struct parser_params *p, NODE *node)
1849 compile_error(p, "unexpected null node");
1852 switch (nd_type(node)) {
1853 case NODE_BREAK: case NODE_NEXT: case NODE_REDO: break;
1855 compile_error(p, "add_block_exit: unexpected node: %s", parser_node_name(nd_type(node)));
1858 if (!p->ctxt.in_defined) {
1859 rb_node_exits_t *exits = p->exits;
1861 RNODE_EXITS(exits->nd_stts)->nd_chain = node;
1862 exits->nd_stts = node;
1868static rb_node_exits_t *
1869init_block_exit(struct parser_params *p)
1871 rb_node_exits_t *old = p->exits;
1872 rb_node_exits_t *exits = NODE_NEW_INTERNAL(NODE_EXITS, rb_node_exits_t);
1873 exits->nd_chain = 0;
1874 exits->nd_stts = RNODE(exits);
1879static rb_node_exits_t *
1880allow_block_exit(struct parser_params *p)
1882 rb_node_exits_t *exits = p->exits;
1888restore_block_exit(struct parser_params *p, rb_node_exits_t *exits)
1894clear_block_exit(struct parser_params *p, bool error)
1896 rb_node_exits_t *exits = p->exits;
1899 for (NODE *e = RNODE(exits); (e = RNODE_EXITS(e)->nd_chain) != 0; ) {
1900 switch (nd_type(e)) {
1902 yyerror1(&e->nd_loc, "Invalid break");
1905 yyerror1(&e->nd_loc, "Invalid next");
1908 yyerror1(&e->nd_loc, "Invalid redo");
1911 yyerror1(&e->nd_loc, "unexpected node");
1912 goto end_checks; /* no nd_chain */
1917 exits->nd_stts = RNODE(exits);
1918 exits->nd_chain = 0;
1921#define WARN_EOL(tok) \
1922 (looking_at_eol_p(p) ? \
1923 (void)rb_warning0("'" tok "' at the end of line without an expression") : \
1925static int looking_at_eol_p(struct parser_params *p);
1928get_nd_value(struct parser_params *p, NODE *node)
1930 switch (nd_type(node)) {
1932 return RNODE_GASGN(node)->nd_value;
1934 return RNODE_IASGN(node)->nd_value;
1936 return RNODE_LASGN(node)->nd_value;
1938 return RNODE_DASGN(node)->nd_value;
1940 return RNODE_MASGN(node)->nd_value;
1942 return RNODE_CVASGN(node)->nd_value;
1944 return RNODE_CDECL(node)->nd_value;
1946 compile_error(p, "get_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1952set_nd_value(struct parser_params *p, NODE *node, NODE *rhs)
1954 switch (nd_type(node)) {
1956 RNODE_CDECL(node)->nd_value = rhs;
1959 RNODE_GASGN(node)->nd_value = rhs;
1962 RNODE_IASGN(node)->nd_value = rhs;
1965 RNODE_LASGN(node)->nd_value = rhs;
1968 RNODE_DASGN(node)->nd_value = rhs;
1971 RNODE_MASGN(node)->nd_value = rhs;
1974 RNODE_CVASGN(node)->nd_value = rhs;
1977 compile_error(p, "set_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1983get_nd_vid(struct parser_params *p, NODE *node)
1985 switch (nd_type(node)) {
1987 return RNODE_CDECL(node)->nd_vid;
1989 return RNODE_GASGN(node)->nd_vid;
1991 return RNODE_IASGN(node)->nd_vid;
1993 return RNODE_LASGN(node)->nd_vid;
1995 return RNODE_DASGN(node)->nd_vid;
1997 return RNODE_CVASGN(node)->nd_vid;
1999 compile_error(p, "get_nd_vid: unexpected node: %s", parser_node_name(nd_type(node)));
2005get_nd_args(struct parser_params *p, NODE *node)
2007 switch (nd_type(node)) {
2009 return RNODE_CALL(node)->nd_args;
2011 return RNODE_OPCALL(node)->nd_args;
2013 return RNODE_FCALL(node)->nd_args;
2015 return RNODE_QCALL(node)->nd_args;
2017 return RNODE_SUPER(node)->nd_args;
2026 compile_error(p, "get_nd_args: unexpected node: %s", parser_node_name(nd_type(node)));
2032djb2(const uint8_t *str, size_t len)
2034 st_index_t hash = 5381;
2036 for (size_t i = 0; i < len; i++) {
2037 hash = ((hash << 5) + hash) + str[i];
2044parser_memhash(const void *ptr, long len)
2046 return djb2(ptr, len);
2049#define PARSER_STRING_PTR(str) (str->ptr)
2050#define PARSER_STRING_LEN(str) (str->len)
2051#define PARSER_STRING_END(str) (&str->ptr[str->len])
2052#define STRING_SIZE(str) ((size_t)str->len + 1)
2053#define STRING_TERM_LEN(str) (1)
2054#define STRING_TERM_FILL(str) (str->ptr[str->len] = '\0
')
2055#define PARSER_STRING_RESIZE_CAPA_TERM(p,str,capacity,termlen) do {\
2056 REALLOC_N(str->ptr, char, (size_t)total + termlen); \
2059#define STRING_SET_LEN(str, n) do { \
2062#define PARSER_STRING_GETMEM(str, ptrvar, lenvar) \
2063 ((ptrvar) = str->ptr, \
2064 (lenvar) = str->len)
2067parser_string_char_at_end(struct parser_params *p, rb_parser_string_t *str, int when_empty)
2069 return PARSER_STRING_LEN(str) > 0 ? (unsigned char)PARSER_STRING_END(str)[-1] : when_empty;
2072static rb_parser_string_t *
2073rb_parser_string_new(rb_parser_t *p, const char *ptr, long len)
2075 rb_parser_string_t *str;
2078 rb_bug("negative string size (or size too big): %ld", len);
2081 str = xcalloc(1, sizeof(rb_parser_string_t));
2082 str->ptr = xcalloc(len + 1, sizeof(char));
2085 memcpy(PARSER_STRING_PTR(str), ptr, len);
2087 STRING_SET_LEN(str, len);
2088 STRING_TERM_FILL(str);
2092static rb_parser_string_t *
2093rb_parser_encoding_string_new(rb_parser_t *p, const char *ptr, long len, rb_encoding *enc)
2095 rb_parser_string_t *str = rb_parser_string_new(p, ptr, len);
2096 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2103rb_str_to_parser_string(rb_parser_t *p, VALUE str)
2106 rb_parser_string_t *ret = rb_parser_encoding_string_new(p, RSTRING_PTR(str), RSTRING_LEN(str), rb_enc_get(str));
2112rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str)
2115 xfree(PARSER_STRING_PTR(str));
2121rb_parser_str_hash(rb_parser_string_t *str)
2123 return parser_memhash((const void *)PARSER_STRING_PTR(str), PARSER_STRING_LEN(str));
2127rb_char_p_hash(const char *c)
2129 return parser_memhash((const void *)c, strlen(c));
2133rb_parser_str_capacity(rb_parser_string_t *str, const int termlen)
2135 return PARSER_STRING_LEN(str);
2140rb_parser_string_end(rb_parser_string_t *str)
2142 return &str->ptr[str->len];
2147rb_parser_string_set_encoding(rb_parser_string_t *str, rb_encoding *enc)
2153rb_parser_str_get_encoding(rb_parser_string_t *str)
2160PARSER_ENCODING_IS_ASCII8BIT(struct parser_params *p, rb_parser_string_t *str)
2162 return rb_parser_str_get_encoding(str) == rb_ascii8bit_encoding();
2167PARSER_ENC_CODERANGE(rb_parser_string_t *str)
2169 return str->coderange;
2173PARSER_ENC_CODERANGE_SET(rb_parser_string_t *str, int coderange)
2175 str->coderange = coderange;
2179PARSER_ENCODING_CODERANGE_SET(rb_parser_string_t *str, rb_encoding *enc, enum rb_parser_string_coderange_type cr)
2181 rb_parser_string_set_encoding(str, enc);
2182 PARSER_ENC_CODERANGE_SET(str, cr);
2186PARSER_ENC_CODERANGE_CLEAR(rb_parser_string_t *str)
2188 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2192PARSER_ENC_CODERANGE_ASCIIONLY(rb_parser_string_t *str)
2194 return PARSER_ENC_CODERANGE(str) == RB_PARSER_ENC_CODERANGE_7BIT;
2198PARSER_ENC_CODERANGE_CLEAN_P(int cr)
2200 return cr == RB_PARSER_ENC_CODERANGE_7BIT || cr == RB_PARSER_ENC_CODERANGE_VALID;
2204rb_parser_search_nonascii(const char *p, const char *e)
2208 for (; s < e; s++) {
2209 if (*s & 0x80) return s;
2216rb_parser_coderange_scan(struct parser_params *p, const char *ptr, long len, rb_encoding *enc)
2218 const char *e = ptr + len;
2220 if (enc == rb_ascii8bit_encoding()) {
2221 /* enc is ASCII-8BIT. ASCII-8BIT string never be broken. */
2222 ptr = rb_parser_search_nonascii(ptr, e);
2223 return ptr ? RB_PARSER_ENC_CODERANGE_VALID : RB_PARSER_ENC_CODERANGE_7BIT;
2226 /* parser string encoding is always asciicompat */
2227 ptr = rb_parser_search_nonascii(ptr, e);
2228 if (!ptr) return RB_PARSER_ENC_CODERANGE_7BIT;
2230 int ret = rb_enc_precise_mbclen(ptr, e, enc);
2231 if (!MBCLEN_CHARFOUND_P(ret)) return RB_PARSER_ENC_CODERANGE_BROKEN;
2232 ptr += MBCLEN_CHARFOUND_LEN(ret);
2233 if (ptr == e) break;
2234 ptr = rb_parser_search_nonascii(ptr, e);
2238 return RB_PARSER_ENC_CODERANGE_VALID;
2242rb_parser_enc_coderange_scan(struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2244 return rb_parser_coderange_scan(p, PARSER_STRING_PTR(str), PARSER_STRING_LEN(str), enc);
2248rb_parser_enc_str_coderange(struct parser_params *p, rb_parser_string_t *str)
2250 int cr = PARSER_ENC_CODERANGE(str);
2252 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2253 cr = rb_parser_enc_coderange_scan(p, str, rb_parser_str_get_encoding(str));
2254 PARSER_ENC_CODERANGE_SET(str, cr);
2260static rb_parser_string_t *
2261rb_parser_enc_associate(struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2263 if (rb_parser_str_get_encoding(str) == enc)
2265 if (!PARSER_ENC_CODERANGE_ASCIIONLY(str)) {
2266 PARSER_ENC_CODERANGE_CLEAR(str);
2268 rb_parser_string_set_encoding(str, enc);
2273rb_parser_is_ascii_string(struct parser_params *p, rb_parser_string_t *str)
2275 return rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_7BIT;
2279rb_parser_enc_compatible(struct parser_params *p, rb_parser_string_t *str1, rb_parser_string_t *str2)
2281 rb_encoding *enc1 = rb_parser_str_get_encoding(str1);
2282 rb_encoding *enc2 = rb_parser_str_get_encoding(str2);
2284 if (enc1 == NULL || enc2 == NULL)
2291 if (PARSER_STRING_LEN(str2) == 0)
2293 if (PARSER_STRING_LEN(str1) == 0)
2294 return rb_parser_is_ascii_string(p, str2) ? enc1 : enc2;
2298 cr1 = rb_parser_enc_str_coderange(p, str1);
2299 cr2 = rb_parser_enc_str_coderange(p, str2);
2302 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT) return enc2;
2303 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT) return enc1;
2306 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT) {
2310 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT) {
2318rb_parser_str_modify(rb_parser_string_t *str)
2320 PARSER_ENC_CODERANGE_CLEAR(str);
2324rb_parser_str_set_len(struct parser_params *p, rb_parser_string_t *str, long len)
2327 const int termlen = STRING_TERM_LEN(str);
2329 if (len > (capa = (long)(rb_parser_str_capacity(str, termlen))) || len < 0) {
2330 rb_bug("probable buffer overflow: %ld for %ld", len, capa);
2333 int cr = PARSER_ENC_CODERANGE(str);
2334 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2335 /* Leave unknown. */
2337 else if (len > PARSER_STRING_LEN(str)) {
2338 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2340 else if (len < PARSER_STRING_LEN(str)) {
2341 if (cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2342 /* ASCII-only string is keeping after truncated. Valid
2343 * and broken may be invalid or valid, leave unknown. */
2344 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2348 STRING_SET_LEN(str, len);
2349 STRING_TERM_FILL(str);
2352static rb_parser_string_t *
2353rb_parser_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len)
2355 rb_parser_str_modify(str);
2356 if (len == 0) return 0;
2358 long total, olen, off = -1;
2360 const int termlen = STRING_TERM_LEN(str);
2362 PARSER_STRING_GETMEM(str, sptr, olen);
2363 if (ptr >= sptr && ptr <= sptr + olen) {
2367 if (olen > LONG_MAX - len) {
2368 compile_error(p, "string sizes too big");
2372 PARSER_STRING_RESIZE_CAPA_TERM(p, str, total, termlen);
2373 sptr = PARSER_STRING_PTR(str);
2377 memcpy(sptr + olen, ptr, len);
2378 STRING_SET_LEN(str, total);
2379 STRING_TERM_FILL(str);
2384#define parser_str_cat(str, ptr, len) rb_parser_str_buf_cat(p, str, ptr, len)
2385#define parser_str_cat_cstr(str, lit) rb_parser_str_buf_cat(p, str, lit, strlen(lit))
2387static rb_parser_string_t *
2388rb_parser_enc_cr_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len,
2389 rb_encoding *ptr_enc, int ptr_cr, int *ptr_cr_ret)
2392 rb_encoding *str_enc, *res_enc;
2394 str_enc = rb_parser_str_get_encoding(str);
2395 str_cr = PARSER_STRING_LEN(str) ? PARSER_ENC_CODERANGE(str) : RB_PARSER_ENC_CODERANGE_7BIT;
2397 if (str_enc == ptr_enc) {
2398 if (str_cr != RB_PARSER_ENC_CODERANGE_UNKNOWN && ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2399 ptr_cr = rb_parser_coderange_scan(p, ptr, len, ptr_enc);
2403 /* parser string encoding is always asciicompat */
2404 if (ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2405 ptr_cr = rb_parser_coderange_scan(p, ptr, len, ptr_enc);
2407 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2408 if (str_enc == rb_ascii8bit_encoding() || ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2409 str_cr = rb_parser_enc_str_coderange(p, str);
2414 *ptr_cr_ret = ptr_cr;
2416 if (str_enc != ptr_enc &&
2417 str_cr != RB_PARSER_ENC_CODERANGE_7BIT &&
2418 ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2422 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2424 res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2426 else if (str_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2427 if (ptr_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2429 res_cr = RB_PARSER_ENC_CODERANGE_7BIT;
2436 else if (str_cr == RB_PARSER_ENC_CODERANGE_VALID) {
2438 if (PARSER_ENC_CODERANGE_CLEAN_P(ptr_cr))
2443 else { /* str_cr == RB_PARSER_ENC_CODERANGE_BROKEN */
2446 if (0 < len) res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2450 compile_error(p, "negative string size (or size too big)");
2452 parser_str_cat(str, ptr, len);
2453 PARSER_ENCODING_CODERANGE_SET(str, res_enc, res_cr);
2457 compile_error(p, "incompatible character encodings: %s and %s",
2458 rb_enc_name(str_enc), rb_enc_name(ptr_enc));
2459 UNREACHABLE_RETURN(0);
2463static rb_parser_string_t *
2464rb_parser_enc_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len,
2465 rb_encoding *ptr_enc)
2467 return rb_parser_enc_cr_str_buf_cat(p, str, ptr, len, ptr_enc, RB_PARSER_ENC_CODERANGE_UNKNOWN, NULL);
2470static rb_parser_string_t *
2471rb_parser_str_buf_append(struct parser_params *p, rb_parser_string_t *str, rb_parser_string_t *str2)
2473 int str2_cr = rb_parser_enc_str_coderange(p, str2);
2475 rb_parser_enc_cr_str_buf_cat(p, str, PARSER_STRING_PTR(str2), PARSER_STRING_LEN(str2),
2476 rb_parser_str_get_encoding(str2), str2_cr, &str2_cr);
2478 PARSER_ENC_CODERANGE_SET(str2, str2_cr);
2483static rb_parser_string_t *
2484rb_parser_str_resize(struct parser_params *p, rb_parser_string_t *str, long len)
2487 rb_bug("negative string size (or size too big)");
2490 long slen = PARSER_STRING_LEN(str);
2492 if (slen > len && PARSER_ENC_CODERANGE(str) != RB_PARSER_ENC_CODERANGE_7BIT) {
2493 PARSER_ENC_CODERANGE_CLEAR(str);
2498 const int termlen = STRING_TERM_LEN(str);
2500 if ((capa = slen) < len) {
2501 SIZED_REALLOC_N(str->ptr, char, (size_t)len + termlen, STRING_SIZE(str));
2503 else if (len == slen) return str;
2504 STRING_SET_LEN(str, len);
2505 STRING_TERM_FILL(str);
2510# define PARSER_ENC_STRING_GETMEM(str, ptrvar, lenvar, encvar) \
2511 ((ptrvar) = str->ptr, \
2512 (lenvar) = str->len, \
2513 (encvar) = str->enc)
2516rb_parser_string_hash_cmp(rb_parser_string_t *str1, rb_parser_string_t *str2)
2519 const char *ptr1, *ptr2;
2520 rb_encoding *enc1, *enc2;
2522 PARSER_ENC_STRING_GETMEM(str1, ptr1, len1, enc1);
2523 PARSER_ENC_STRING_GETMEM(str2, ptr2, len2, enc2);
2525 return (len1 != len2 ||
2527 memcmp(ptr1, ptr2, len1) != 0);
2531rb_parser_ary_extend(rb_parser_t *p, rb_parser_ary_t *ary, long len)
2534 if (ary->capa < len) {
2536 ary->data = (rb_parser_ary_data *)xrealloc(ary->data, sizeof(rb_parser_ary_data) * len);
2537 for (i = ary->len; i < len; i++) {
2544 * Do not call this directly.
2545 * Use rb_parser_ary_new_capa_for_XXX() instead.
2547static rb_parser_ary_t *
2548parser_ary_new_capa(rb_parser_t *p, long len)
2551 rb_bug("negative array size (or size too big): %ld", len);
2553 rb_parser_ary_t *ary = xcalloc(1, sizeof(rb_parser_ary_t));
2558 ary->data = (rb_parser_ary_data *)xcalloc(len, sizeof(rb_parser_ary_data));
2567static rb_parser_ary_t *
2568rb_parser_ary_new_capa_for_script_line(rb_parser_t *p, long len)
2570 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2571 ary->data_type = PARSER_ARY_DATA_SCRIPT_LINE;
2575static rb_parser_ary_t *
2576rb_parser_ary_new_capa_for_ast_token(rb_parser_t *p, long len)
2578 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2579 ary->data_type = PARSER_ARY_DATA_AST_TOKEN;
2584static rb_parser_ary_t *
2585rb_parser_ary_new_capa_for_node(rb_parser_t *p, long len)
2587 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2588 ary->data_type = PARSER_ARY_DATA_NODE;
2593 * Do not call this directly.
2594 * Use rb_parser_ary_push_XXX() instead.
2596static rb_parser_ary_t *
2597parser_ary_push(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ary_data val)
2599 if (ary->len == ary->capa) {
2600 rb_parser_ary_extend(p, ary, ary->len == 0 ? 1 : ary->len * 2);
2602 ary->data[ary->len++] = val;
2607static rb_parser_ary_t *
2608rb_parser_ary_push_ast_token(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ast_token_t *val)
2610 if (ary->data_type != PARSER_ARY_DATA_AST_TOKEN) {
2611 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2613 return parser_ary_push(p, ary, val);
2616static rb_parser_ary_t *
2617rb_parser_ary_push_script_line(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_string_t *val)
2619 if (ary->data_type != PARSER_ARY_DATA_SCRIPT_LINE) {
2620 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2622 return parser_ary_push(p, ary, val);
2626static rb_parser_ary_t *
2627rb_parser_ary_push_node(rb_parser_t *p, rb_parser_ary_t *ary, NODE *val)
2629 if (ary->data_type != PARSER_ARY_DATA_NODE) {
2630 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2632 return parser_ary_push(p, ary, val);
2637rb_parser_ast_token_free(rb_parser_t *p, rb_parser_ast_token_t *token)
2640 rb_parser_string_free(p, token->str);
2645rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary)
2647# define foreach_ary(ptr) \
2648 for (rb_parser_ary_data *ptr = ary->data, *const end_ary_data = ptr + ary->len; \
2649 ptr < end_ary_data; ptr++)
2650 switch (ary->data_type) {
2651 case PARSER_ARY_DATA_AST_TOKEN:
2652 foreach_ary(data) {rb_parser_ast_token_free(p, *data);}
2654 case PARSER_ARY_DATA_SCRIPT_LINE:
2655 foreach_ary(data) {rb_parser_string_free(p, *data);}
2657 case PARSER_ARY_DATA_NODE:
2658 /* Do nothing because nodes are freed when rb_ast_t is freed */
2661 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2675# define YY_CAST(Type, Val) static_cast<Type> (Val)
2676# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
2678# define YY_CAST(Type, Val) ((Type) (Val))
2679# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
2683# if defined __cplusplus
2684# if 201103L <= __cplusplus
2685# define YY_NULLPTR nullptr
2687# define YY_NULLPTR 0
2690# define YY_NULLPTR ((void*)0)
2698 YYSYMBOL_YYEMPTY = -2,
2699 YYSYMBOL_YYEOF = 0, /* "end-of-input" */
2700 YYSYMBOL_YYerror = 1, /* error */
2701 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
2702 YYSYMBOL_keyword_class = 3, /* "'class'" */
2703 YYSYMBOL_keyword_module = 4, /* "'module
'" */
2704 YYSYMBOL_keyword_def = 5, /* "'def
'" */
2705 YYSYMBOL_keyword_undef = 6, /* "'undef
'" */
2706 YYSYMBOL_keyword_begin = 7, /* "'begin
'" */
2707 YYSYMBOL_keyword_rescue = 8, /* "'rescue
'" */
2708 YYSYMBOL_keyword_ensure = 9, /* "'ensure
'" */
2709 YYSYMBOL_keyword_end = 10, /* "'end
'" */
2710 YYSYMBOL_keyword_if = 11, /* "'if'" */
2711 YYSYMBOL_keyword_unless = 12, /* "'unless
'" */
2712 YYSYMBOL_keyword_then = 13, /* "'then
'" */
2713 YYSYMBOL_keyword_elsif = 14, /* "'elsif
'" */
2714 YYSYMBOL_keyword_else = 15, /* "'else'" */
2715 YYSYMBOL_keyword_case = 16, /* "'case'" */
2716 YYSYMBOL_keyword_when = 17, /* "'when
'" */
2717 YYSYMBOL_keyword_while = 18, /* "'while'" */
2718 YYSYMBOL_keyword_until = 19, /* "'until
'" */
2719 YYSYMBOL_keyword_for = 20, /* "'for'" */
2720 YYSYMBOL_keyword_break = 21, /* "'break'" */
2721 YYSYMBOL_keyword_next = 22, /* "'next
'" */
2722 YYSYMBOL_keyword_redo = 23, /* "'redo
'" */
2723 YYSYMBOL_keyword_retry = 24, /* "'retry
'" */
2724 YYSYMBOL_keyword_in = 25, /* "'in
'" */
2725 YYSYMBOL_keyword_do = 26, /* "'do'" */
2726 YYSYMBOL_keyword_do_cond = 27, /* "'do' for condition" */
2727 YYSYMBOL_keyword_do_block = 28, /* "'do' for block" */
2728 YYSYMBOL_keyword_do_LAMBDA = 29, /* "'do' for lambda" */
2729 YYSYMBOL_keyword_return = 30, /* "'return'" */
2730 YYSYMBOL_keyword_yield = 31, /* "'yield
'" */
2731 YYSYMBOL_keyword_super = 32, /* "'super
'" */
2732 YYSYMBOL_keyword_self = 33, /* "'self
'" */
2733 YYSYMBOL_keyword_nil = 34, /* "'nil
'" */
2734 YYSYMBOL_keyword_true = 35, /* "'true'" */
2735 YYSYMBOL_keyword_false = 36, /* "'false'" */
2736 YYSYMBOL_keyword_and = 37, /* "'and
'" */
2737 YYSYMBOL_keyword_or = 38, /* "'or
'" */
2738 YYSYMBOL_keyword_not = 39, /* "'not
'" */
2739 YYSYMBOL_modifier_if = 40, /* "'if' modifier" */
2740 YYSYMBOL_modifier_unless = 41, /* "'unless
' modifier" */
2741 YYSYMBOL_modifier_while = 42, /* "'while' modifier" */
2742 YYSYMBOL_modifier_until = 43, /* "'until
' modifier" */
2743 YYSYMBOL_modifier_rescue = 44, /* "'rescue
' modifier" */
2744 YYSYMBOL_keyword_alias = 45, /* "'alias
'" */
2745 YYSYMBOL_keyword_defined = 46, /* "'defined?
'" */
2746 YYSYMBOL_keyword_BEGIN = 47, /* "'BEGIN
'" */
2747 YYSYMBOL_keyword_END = 48, /* "'END
'" */
2748 YYSYMBOL_keyword__LINE__ = 49, /* "'__LINE__
'" */
2749 YYSYMBOL_keyword__FILE__ = 50, /* "'__FILE__
'" */
2750 YYSYMBOL_keyword__ENCODING__ = 51, /* "'__ENCODING__
'" */
2751 YYSYMBOL_tIDENTIFIER = 52, /* "local variable or method" */
2752 YYSYMBOL_tFID = 53, /* "method" */
2753 YYSYMBOL_tGVAR = 54, /* "global variable" */
2754 YYSYMBOL_tIVAR = 55, /* "instance variable" */
2755 YYSYMBOL_tCONSTANT = 56, /* "constant" */
2756 YYSYMBOL_tCVAR = 57, /* "class variable" */
2757 YYSYMBOL_tLABEL = 58, /* "label" */
2758 YYSYMBOL_tINTEGER = 59, /* "integer literal" */
2759 YYSYMBOL_tFLOAT = 60, /* "float literal" */
2760 YYSYMBOL_tRATIONAL = 61, /* "rational literal" */
2761 YYSYMBOL_tIMAGINARY = 62, /* "imaginary literal" */
2762 YYSYMBOL_tCHAR = 63, /* "char literal" */
2763 YYSYMBOL_tNTH_REF = 64, /* "numbered reference" */
2764 YYSYMBOL_tBACK_REF = 65, /* "back reference" */
2765 YYSYMBOL_tSTRING_CONTENT = 66, /* "literal content" */
2766 YYSYMBOL_tREGEXP_END = 67, /* tREGEXP_END */
2767 YYSYMBOL_tDUMNY_END = 68, /* "dummy end" */
2768 YYSYMBOL_69_ = 69, /* '.
' */
2769 YYSYMBOL_70_backslash_ = 70, /* "backslash" */
2770 YYSYMBOL_tSP = 71, /* "escaped space" */
2771 YYSYMBOL_72_escaped_horizontal_tab_ = 72, /* "escaped horizontal tab" */
2772 YYSYMBOL_73_escaped_form_feed_ = 73, /* "escaped form feed" */
2773 YYSYMBOL_74_escaped_carriage_return_ = 74, /* "escaped carriage return" */
2774 YYSYMBOL_75_escaped_vertical_tab_ = 75, /* "escaped vertical tab" */
2775 YYSYMBOL_tUPLUS = 76, /* "unary+" */
2776 YYSYMBOL_tUMINUS = 77, /* "unary-" */
2777 YYSYMBOL_tPOW = 78, /* "**" */
2778 YYSYMBOL_tCMP = 79, /* "<=>" */
2779 YYSYMBOL_tEQ = 80, /* "==" */
2780 YYSYMBOL_tEQQ = 81, /* "===" */
2781 YYSYMBOL_tNEQ = 82, /* "!=" */
2782 YYSYMBOL_tGEQ = 83, /* ">=" */
2783 YYSYMBOL_tLEQ = 84, /* "<=" */
2784 YYSYMBOL_tANDOP = 85, /* "&&" */
2785 YYSYMBOL_tOROP = 86, /* "||" */
2786 YYSYMBOL_tMATCH = 87, /* "=~" */
2787 YYSYMBOL_tNMATCH = 88, /* "!~" */
2788 YYSYMBOL_tDOT2 = 89, /* ".." */
2789 YYSYMBOL_tDOT3 = 90, /* "..." */
2790 YYSYMBOL_tBDOT2 = 91, /* "(.." */
2791 YYSYMBOL_tBDOT3 = 92, /* "(..." */
2792 YYSYMBOL_tAREF = 93, /* "[]" */
2793 YYSYMBOL_tASET = 94, /* "[]=" */
2794 YYSYMBOL_tLSHFT = 95, /* "<<" */
2795 YYSYMBOL_tRSHFT = 96, /* ">>" */
2796 YYSYMBOL_tANDDOT = 97, /* "&." */
2797 YYSYMBOL_tCOLON2 = 98, /* "::" */
2798 YYSYMBOL_tCOLON3 = 99, /* ":: at EXPR_BEG" */
2799 YYSYMBOL_tOP_ASGN = 100, /* "operator-assignment" */
2800 YYSYMBOL_tASSOC = 101, /* "=>" */
2801 YYSYMBOL_tLPAREN = 102, /* "(" */
2802 YYSYMBOL_tLPAREN_ARG = 103, /* "( arg" */
2803 YYSYMBOL_tLBRACK = 104, /* "[" */
2804 YYSYMBOL_tLBRACE = 105, /* "{" */
2805 YYSYMBOL_tLBRACE_ARG = 106, /* "{ arg" */
2806 YYSYMBOL_tSTAR = 107, /* "*" */
2807 YYSYMBOL_tDSTAR = 108, /* "**arg" */
2808 YYSYMBOL_tAMPER = 109, /* "&" */
2809 YYSYMBOL_tLAMBDA = 110, /* "->" */
2810 YYSYMBOL_tSYMBEG = 111, /* "symbol literal" */
2811 YYSYMBOL_tSTRING_BEG = 112, /* "string literal" */
2812 YYSYMBOL_tXSTRING_BEG = 113, /* "backtick literal" */
2813 YYSYMBOL_tREGEXP_BEG = 114, /* "regexp literal" */
2814 YYSYMBOL_tWORDS_BEG = 115, /* "word list" */
2815 YYSYMBOL_tQWORDS_BEG = 116, /* "verbatim word list" */
2816 YYSYMBOL_tSYMBOLS_BEG = 117, /* "symbol list" */
2817 YYSYMBOL_tQSYMBOLS_BEG = 118, /* "verbatim symbol list" */
2818 YYSYMBOL_tSTRING_END = 119, /* "terminator" */
2819 YYSYMBOL_tSTRING_DEND = 120, /* "'}
'" */
2820 YYSYMBOL_tSTRING_DBEG = 121, /* "'#{
'" */
2821 YYSYMBOL_tSTRING_DVAR = 122, /* tSTRING_DVAR */
2822 YYSYMBOL_tLAMBEG = 123, /* tLAMBEG */
2823 YYSYMBOL_tLABEL_END = 124, /* tLABEL_END */
2824 YYSYMBOL_tIGNORED_NL = 125, /* tIGNORED_NL */
2825 YYSYMBOL_tCOMMENT = 126, /* tCOMMENT */
2826 YYSYMBOL_tEMBDOC_BEG = 127, /* tEMBDOC_BEG */
2827 YYSYMBOL_tEMBDOC = 128, /* tEMBDOC */
2828 YYSYMBOL_tEMBDOC_END = 129, /* tEMBDOC_END */
2829 YYSYMBOL_tHEREDOC_BEG = 130, /* tHEREDOC_BEG */
2830 YYSYMBOL_tHEREDOC_END = 131, /* tHEREDOC_END */
2831 YYSYMBOL_k__END__ = 132, /* k__END__ */
2832 YYSYMBOL_tLOWEST = 133, /* tLOWEST */
2833 YYSYMBOL_134_ = 134, /* '=
' */
2834 YYSYMBOL_135_ = 135, /* '?
' */
2835 YYSYMBOL_136_ = 136, /* ':
' */
2836 YYSYMBOL_137_ = 137, /* '>
' */
2837 YYSYMBOL_138_ = 138, /* '<
' */
2838 YYSYMBOL_139_ = 139, /* '|
' */
2839 YYSYMBOL_140_ = 140, /* '^
' */
2840 YYSYMBOL_141_ = 141, /* '&
' */
2841 YYSYMBOL_142_ = 142, /* '+
' */
2842 YYSYMBOL_143_ = 143, /* '-
' */
2843 YYSYMBOL_144_ = 144, /* '*
' */
2844 YYSYMBOL_145_ = 145, /* '/
' */
2845 YYSYMBOL_146_ = 146, /* '%
' */
2846 YYSYMBOL_tUMINUS_NUM = 147, /* tUMINUS_NUM */
2847 YYSYMBOL_148_ = 148, /* '!
' */
2848 YYSYMBOL_149_ = 149, /* '~
' */
2849 YYSYMBOL_tLAST_TOKEN = 150, /* tLAST_TOKEN */
2850 YYSYMBOL_151_ = 151, /* '{
' */
2851 YYSYMBOL_152_ = 152, /* '}
' */
2852 YYSYMBOL_153_ = 153, /* '[
' */
2853 YYSYMBOL_154_n_ = 154, /* '\n
' */
2854 YYSYMBOL_155_ = 155, /* ',
' */
2855 YYSYMBOL_156_ = 156, /* '`
' */
2856 YYSYMBOL_157_ = 157, /* '(
' */
2857 YYSYMBOL_158_ = 158, /* ')
' */
2858 YYSYMBOL_159_ = 159, /* ']
' */
2859 YYSYMBOL_160_ = 160, /* ';
' */
2860 YYSYMBOL_161_ = 161, /* ' ' */
2861 YYSYMBOL_YYACCEPT = 162, /* $accept */
2862 YYSYMBOL_option_terms = 163, /* option_terms */
2863 YYSYMBOL_compstmt_top_stmts = 164, /* compstmt_top_stmts */
2864 YYSYMBOL_165_1 = 165, /* $@1 */
2865 YYSYMBOL_program = 166, /* program */
2866 YYSYMBOL_top_stmts = 167, /* top_stmts */
2867 YYSYMBOL_top_stmt = 168, /* top_stmt */
2868 YYSYMBOL_block_open = 169, /* block_open */
2869 YYSYMBOL_begin_block = 170, /* begin_block */
2870 YYSYMBOL_compstmt_stmts = 171, /* compstmt_stmts */
2871 YYSYMBOL_172_2 = 172, /* $@2 */
2872 YYSYMBOL_173_3 = 173, /* $@3 */
2873 YYSYMBOL_bodystmt = 174, /* bodystmt */
2874 YYSYMBOL_175_4 = 175, /* $@4 */
2875 YYSYMBOL_stmts = 176, /* stmts */
2876 YYSYMBOL_stmt_or_begin = 177, /* stmt_or_begin */
2877 YYSYMBOL_178_5 = 178, /* $@5 */
2878 YYSYMBOL_allow_exits = 179, /* allow_exits */
2879 YYSYMBOL_k_END = 180, /* k_END */
2880 YYSYMBOL_181_6 = 181, /* $@6 */
2881 YYSYMBOL_stmt = 182, /* stmt */
2882 YYSYMBOL_asgn_mrhs = 183, /* asgn_mrhs */
2883 YYSYMBOL_asgn_command_rhs = 184, /* asgn_command_rhs */
2884 YYSYMBOL_command_asgn = 185, /* command_asgn */
2885 YYSYMBOL_op_asgn_command_rhs = 186, /* op_asgn_command_rhs */
2886 YYSYMBOL_def_endless_method_endless_command = 187, /* def_endless_method_endless_command */
2887 YYSYMBOL_endless_command = 188, /* endless_command */
2888 YYSYMBOL_option__n_ = 189, /* option_'\n
' */
2889 YYSYMBOL_command_rhs = 190, /* command_rhs */
2890 YYSYMBOL_expr = 191, /* expr */
2891 YYSYMBOL_192_7 = 192, /* $@7 */
2892 YYSYMBOL_193_8 = 193, /* $@8 */
2893 YYSYMBOL_def_name = 194, /* def_name */
2894 YYSYMBOL_defn_head = 195, /* defn_head */
2895 YYSYMBOL_196_9 = 196, /* $@9 */
2896 YYSYMBOL_defs_head = 197, /* defs_head */
2897 YYSYMBOL_value_expr_expr = 198, /* value_expr_expr */
2898 YYSYMBOL_expr_value = 199, /* expr_value */
2899 YYSYMBOL_200_10 = 200, /* $@10 */
2900 YYSYMBOL_201_11 = 201, /* $@11 */
2901 YYSYMBOL_expr_value_do = 202, /* expr_value_do */
2902 YYSYMBOL_command_call = 203, /* command_call */
2903 YYSYMBOL_value_expr_command_call = 204, /* value_expr_command_call */
2904 YYSYMBOL_command_call_value = 205, /* command_call_value */
2905 YYSYMBOL_block_command = 206, /* block_command */
2906 YYSYMBOL_cmd_brace_block = 207, /* cmd_brace_block */
2907 YYSYMBOL_fcall = 208, /* fcall */
2908 YYSYMBOL_command = 209, /* command */
2909 YYSYMBOL_mlhs = 210, /* mlhs */
2910 YYSYMBOL_mlhs_inner = 211, /* mlhs_inner */
2911 YYSYMBOL_mlhs_basic = 212, /* mlhs_basic */
2912 YYSYMBOL_mlhs_items_mlhs_item = 213, /* mlhs_items_mlhs_item */
2913 YYSYMBOL_mlhs_item = 214, /* mlhs_item */
2914 YYSYMBOL_mlhs_head = 215, /* mlhs_head */
2915 YYSYMBOL_mlhs_node = 216, /* mlhs_node */
2916 YYSYMBOL_lhs = 217, /* lhs */
2917 YYSYMBOL_cname = 218, /* cname */
2918 YYSYMBOL_cpath = 219, /* cpath */
2919 YYSYMBOL_fname = 220, /* fname */
2920 YYSYMBOL_fitem = 221, /* fitem */
2921 YYSYMBOL_undef_list = 222, /* undef_list */
2922 YYSYMBOL_223_12 = 223, /* $@12 */
2923 YYSYMBOL_op = 224, /* op */
2924 YYSYMBOL_reswords = 225, /* reswords */
2925 YYSYMBOL_asgn_arg_rhs = 226, /* asgn_arg_rhs */
2926 YYSYMBOL_arg = 227, /* arg */
2927 YYSYMBOL_op_asgn_arg_rhs = 228, /* op_asgn_arg_rhs */
2928 YYSYMBOL_range_expr_arg = 229, /* range_expr_arg */
2929 YYSYMBOL_def_endless_method_endless_arg = 230, /* def_endless_method_endless_arg */
2930 YYSYMBOL_ternary = 231, /* ternary */
2931 YYSYMBOL_endless_arg = 232, /* endless_arg */
2932 YYSYMBOL_relop = 233, /* relop */
2933 YYSYMBOL_rel_expr = 234, /* rel_expr */
2934 YYSYMBOL_lex_ctxt = 235, /* lex_ctxt */
2935 YYSYMBOL_begin_defined = 236, /* begin_defined */
2936 YYSYMBOL_after_rescue = 237, /* after_rescue */
2937 YYSYMBOL_value_expr_arg = 238, /* value_expr_arg */
2938 YYSYMBOL_arg_value = 239, /* arg_value */
2939 YYSYMBOL_aref_args = 240, /* aref_args */
2940 YYSYMBOL_arg_rhs = 241, /* arg_rhs */
2941 YYSYMBOL_paren_args = 242, /* paren_args */
2942 YYSYMBOL_opt_paren_args = 243, /* opt_paren_args */
2943 YYSYMBOL_opt_call_args = 244, /* opt_call_args */
2944 YYSYMBOL_value_expr_command = 245, /* value_expr_command */
2945 YYSYMBOL_call_args = 246, /* call_args */
2946 YYSYMBOL_247_13 = 247, /* $@13 */
2947 YYSYMBOL_command_args = 248, /* command_args */
2948 YYSYMBOL_block_arg = 249, /* block_arg */
2949 YYSYMBOL_opt_block_arg = 250, /* opt_block_arg */
2950 YYSYMBOL_args = 251, /* args */
2951 YYSYMBOL_arg_splat = 252, /* arg_splat */
2952 YYSYMBOL_mrhs_arg = 253, /* mrhs_arg */
2953 YYSYMBOL_mrhs = 254, /* mrhs */
2954 YYSYMBOL_primary = 255, /* primary */
2955 YYSYMBOL_256_14 = 256, /* $@14 */
2956 YYSYMBOL_257_15 = 257, /* $@15 */
2957 YYSYMBOL_258_16 = 258, /* @16 */
2958 YYSYMBOL_259_17 = 259, /* @17 */
2959 YYSYMBOL_260_18 = 260, /* $@18 */
2960 YYSYMBOL_261_19 = 261, /* $@19 */
2961 YYSYMBOL_262_20 = 262, /* $@20 */
2962 YYSYMBOL_263_21 = 263, /* $@21 */
2963 YYSYMBOL_264_22 = 264, /* $@22 */
2964 YYSYMBOL_265_23 = 265, /* $@23 */
2965 YYSYMBOL_266_24 = 266, /* $@24 */
2966 YYSYMBOL_value_expr_primary = 267, /* value_expr_primary */
2967 YYSYMBOL_primary_value = 268, /* primary_value */
2968 YYSYMBOL_k_begin = 269, /* k_begin */
2969 YYSYMBOL_k_if = 270, /* k_if */
2970 YYSYMBOL_k_unless = 271, /* k_unless */
2971 YYSYMBOL_k_while = 272, /* k_while */
2972 YYSYMBOL_k_until = 273, /* k_until */
2973 YYSYMBOL_k_case = 274, /* k_case */
2974 YYSYMBOL_k_for = 275, /* k_for */
2975 YYSYMBOL_k_class = 276, /* k_class */
2976 YYSYMBOL_k_module = 277, /* k_module */
2977 YYSYMBOL_k_def = 278, /* k_def */
2978 YYSYMBOL_k_do = 279, /* k_do */
2979 YYSYMBOL_k_do_block = 280, /* k_do_block */
2980 YYSYMBOL_k_rescue = 281, /* k_rescue */
2981 YYSYMBOL_k_ensure = 282, /* k_ensure */
2982 YYSYMBOL_k_when = 283, /* k_when */
2983 YYSYMBOL_k_else = 284, /* k_else */
2984 YYSYMBOL_k_elsif = 285, /* k_elsif */
2985 YYSYMBOL_k_end = 286, /* k_end */
2986 YYSYMBOL_k_return = 287, /* k_return */
2987 YYSYMBOL_k_yield = 288, /* k_yield */
2988 YYSYMBOL_then = 289, /* then */
2989 YYSYMBOL_do = 290, /* do */
2990 YYSYMBOL_if_tail = 291, /* if_tail */
2991 YYSYMBOL_opt_else = 292, /* opt_else */
2992 YYSYMBOL_for_var = 293, /* for_var */
2993 YYSYMBOL_f_marg = 294, /* f_marg */
2994 YYSYMBOL_mlhs_items_f_marg = 295, /* mlhs_items_f_marg */
2995 YYSYMBOL_f_margs = 296, /* f_margs */
2996 YYSYMBOL_f_rest_marg = 297, /* f_rest_marg */
2997 YYSYMBOL_f_any_kwrest = 298, /* f_any_kwrest */
2998 YYSYMBOL_299_25 = 299, /* $@25 */
2999 YYSYMBOL_f_eq = 300, /* f_eq */
3000 YYSYMBOL_f_kw_primary_value = 301, /* f_kw_primary_value */
3001 YYSYMBOL_f_kwarg_primary_value = 302, /* f_kwarg_primary_value */
3002 YYSYMBOL_opt_f_block_arg_none = 303, /* opt_f_block_arg_none */
3003 YYSYMBOL_args_tail_basic_primary_value_none = 304, /* args_tail_basic_primary_value_none */
3004 YYSYMBOL_block_args_tail = 305, /* block_args_tail */
3005 YYSYMBOL_excessed_comma = 306, /* excessed_comma */
3006 YYSYMBOL_f_opt_primary_value = 307, /* f_opt_primary_value */
3007 YYSYMBOL_f_opt_arg_primary_value = 308, /* f_opt_arg_primary_value */
3008 YYSYMBOL_opt_args_tail_block_args_tail_none = 309, /* opt_args_tail_block_args_tail_none */
3009 YYSYMBOL_args_list_primary_value_opt_args_tail_block_args_tail_none = 310, /* args-list_primary_value_opt_args_tail_block_args_tail_none */
3010 YYSYMBOL_block_param = 311, /* block_param */
3011 YYSYMBOL_tail_only_args_block_args_tail = 312, /* tail-only-args_block_args_tail */
3012 YYSYMBOL_opt_block_param_def = 313, /* opt_block_param_def */
3013 YYSYMBOL_block_param_def = 314, /* block_param_def */
3014 YYSYMBOL_opt_block_param = 315, /* opt_block_param */
3015 YYSYMBOL_opt_bv_decl = 316, /* opt_bv_decl */
3016 YYSYMBOL_bv_decls = 317, /* bv_decls */
3017 YYSYMBOL_bvar = 318, /* bvar */
3018 YYSYMBOL_max_numparam = 319, /* max_numparam */
3019 YYSYMBOL_numparam = 320, /* numparam */
3020 YYSYMBOL_it_id = 321, /* it_id */
3021 YYSYMBOL_322_26 = 322, /* @26 */
3022 YYSYMBOL_323_27 = 323, /* $@27 */
3023 YYSYMBOL_lambda = 324, /* lambda */
3024 YYSYMBOL_f_larglist = 325, /* f_larglist */
3025 YYSYMBOL_lambda_body = 326, /* lambda_body */
3026 YYSYMBOL_327_28 = 327, /* $@28 */
3027 YYSYMBOL_do_block = 328, /* do_block */
3028 YYSYMBOL_block_call = 329, /* block_call */
3029 YYSYMBOL_method_call = 330, /* method_call */
3030 YYSYMBOL_brace_block = 331, /* brace_block */
3031 YYSYMBOL_332_29 = 332, /* @29 */
3032 YYSYMBOL_brace_body = 333, /* brace_body */
3033 YYSYMBOL_334_30 = 334, /* @30 */
3034 YYSYMBOL_do_body = 335, /* do_body */
3035 YYSYMBOL_case_args = 336, /* case_args */
3036 YYSYMBOL_case_body = 337, /* case_body */
3037 YYSYMBOL_cases = 338, /* cases */
3038 YYSYMBOL_p_pvtbl = 339, /* p_pvtbl */
3039 YYSYMBOL_p_pktbl = 340, /* p_pktbl */
3040 YYSYMBOL_p_in_kwarg = 341, /* p_in_kwarg */
3041 YYSYMBOL_342_31 = 342, /* $@31 */
3042 YYSYMBOL_p_case_body = 343, /* p_case_body */
3043 YYSYMBOL_p_cases = 344, /* p_cases */
3044 YYSYMBOL_p_top_expr = 345, /* p_top_expr */
3045 YYSYMBOL_p_top_expr_body = 346, /* p_top_expr_body */
3046 YYSYMBOL_p_expr = 347, /* p_expr */
3047 YYSYMBOL_p_as = 348, /* p_as */
3048 YYSYMBOL_349_32 = 349, /* $@32 */
3049 YYSYMBOL_p_alt = 350, /* p_alt */
3050 YYSYMBOL_p_lparen = 351, /* p_lparen */
3051 YYSYMBOL_p_lbracket = 352, /* p_lbracket */
3052 YYSYMBOL_p_expr_basic = 353, /* p_expr_basic */
3053 YYSYMBOL_354_33 = 354, /* $@33 */
3054 YYSYMBOL_p_args = 355, /* p_args */
3055 YYSYMBOL_p_args_head = 356, /* p_args_head */
3056 YYSYMBOL_p_args_tail = 357, /* p_args_tail */
3057 YYSYMBOL_p_find = 358, /* p_find */
3058 YYSYMBOL_p_rest = 359, /* p_rest */
3059 YYSYMBOL_p_args_post = 360, /* p_args_post */
3060 YYSYMBOL_p_arg = 361, /* p_arg */
3061 YYSYMBOL_p_kwargs = 362, /* p_kwargs */
3062 YYSYMBOL_p_kwarg = 363, /* p_kwarg */
3063 YYSYMBOL_p_kw = 364, /* p_kw */
3064 YYSYMBOL_p_kw_label = 365, /* p_kw_label */
3065 YYSYMBOL_p_kwrest = 366, /* p_kwrest */
3066 YYSYMBOL_p_kwnorest = 367, /* p_kwnorest */
3067 YYSYMBOL_p_any_kwrest = 368, /* p_any_kwrest */
3068 YYSYMBOL_p_value = 369, /* p_value */
3069 YYSYMBOL_range_expr_p_primitive = 370, /* range_expr_p_primitive */
3070 YYSYMBOL_p_primitive = 371, /* p_primitive */
3071 YYSYMBOL_p_variable = 372, /* p_variable */
3072 YYSYMBOL_p_var_ref = 373, /* p_var_ref */
3073 YYSYMBOL_p_expr_ref = 374, /* p_expr_ref */
3074 YYSYMBOL_p_const = 375, /* p_const */
3075 YYSYMBOL_opt_rescue = 376, /* opt_rescue */
3076 YYSYMBOL_exc_list = 377, /* exc_list */
3077 YYSYMBOL_exc_var = 378, /* exc_var */
3078 YYSYMBOL_opt_ensure = 379, /* opt_ensure */
3079 YYSYMBOL_literal = 380, /* literal */
3080 YYSYMBOL_strings = 381, /* strings */
3081 YYSYMBOL_string = 382, /* string */
3082 YYSYMBOL_string1 = 383, /* string1 */
3083 YYSYMBOL_xstring = 384, /* xstring */
3084 YYSYMBOL_regexp = 385, /* regexp */
3085 YYSYMBOL_nonempty_list__ = 386, /* nonempty_list_' ' */
3086 YYSYMBOL_words_tWORDS_BEG_word_list = 387, /* words_tWORDS_BEG_word_list */
3087 YYSYMBOL_words = 388, /* words */
3088 YYSYMBOL_word_list = 389, /* word_list */
3089 YYSYMBOL_word = 390, /* word */
3090 YYSYMBOL_words_tSYMBOLS_BEG_symbol_list = 391, /* words_tSYMBOLS_BEG_symbol_list */
3091 YYSYMBOL_symbols = 392, /* symbols */
3092 YYSYMBOL_symbol_list = 393, /* symbol_list */
3093 YYSYMBOL_words_tQWORDS_BEG_qword_list = 394, /* words_tQWORDS_BEG_qword_list */
3094 YYSYMBOL_qwords = 395, /* qwords */
3095 YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list = 396, /* words_tQSYMBOLS_BEG_qsym_list */
3096 YYSYMBOL_qsymbols = 397, /* qsymbols */
3097 YYSYMBOL_qword_list = 398, /* qword_list */
3098 YYSYMBOL_qsym_list = 399, /* qsym_list */
3099 YYSYMBOL_string_contents = 400, /* string_contents */
3100 YYSYMBOL_xstring_contents = 401, /* xstring_contents */
3101 YYSYMBOL_regexp_contents = 402, /* regexp_contents */
3102 YYSYMBOL_string_content = 403, /* string_content */
3103 YYSYMBOL_404_34 = 404, /* @34 */
3104 YYSYMBOL_405_35 = 405, /* @35 */
3105 YYSYMBOL_406_36 = 406, /* @36 */
3106 YYSYMBOL_407_37 = 407, /* @37 */
3107 YYSYMBOL_string_dend = 408, /* string_dend */
3108 YYSYMBOL_string_dvar = 409, /* string_dvar */
3109 YYSYMBOL_symbol = 410, /* symbol */
3110 YYSYMBOL_ssym = 411, /* ssym */
3111 YYSYMBOL_sym = 412, /* sym */
3112 YYSYMBOL_dsym = 413, /* dsym */
3113 YYSYMBOL_numeric = 414, /* numeric */
3114 YYSYMBOL_simple_numeric = 415, /* simple_numeric */
3115 YYSYMBOL_nonlocal_var = 416, /* nonlocal_var */
3116 YYSYMBOL_user_variable = 417, /* user_variable */
3117 YYSYMBOL_keyword_variable = 418, /* keyword_variable */
3118 YYSYMBOL_var_ref = 419, /* var_ref */
3119 YYSYMBOL_var_lhs = 420, /* var_lhs */
3120 YYSYMBOL_backref = 421, /* backref */
3121 YYSYMBOL_422_38 = 422, /* $@38 */
3122 YYSYMBOL_superclass = 423, /* superclass */
3123 YYSYMBOL_f_opt_paren_args = 424, /* f_opt_paren_args */
3124 YYSYMBOL_f_empty_arg = 425, /* f_empty_arg */
3125 YYSYMBOL_f_paren_args = 426, /* f_paren_args */
3126 YYSYMBOL_f_arglist = 427, /* f_arglist */
3127 YYSYMBOL_428_39 = 428, /* @39 */
3128 YYSYMBOL_f_kw_arg_value = 429, /* f_kw_arg_value */
3129 YYSYMBOL_f_kwarg_arg_value = 430, /* f_kwarg_arg_value */
3130 YYSYMBOL_opt_f_block_arg_opt_comma = 431, /* opt_f_block_arg_opt_comma */
3131 YYSYMBOL_args_tail_basic_arg_value_opt_comma = 432, /* args_tail_basic_arg_value_opt_comma */
3132 YYSYMBOL_args_tail = 433, /* args_tail */
3133 YYSYMBOL_args_tail_basic_arg_value_none = 434, /* args_tail_basic_arg_value_none */
3134 YYSYMBOL_largs_tail = 435, /* largs_tail */
3135 YYSYMBOL_f_opt_arg_value = 436, /* f_opt_arg_value */
3136 YYSYMBOL_f_opt_arg_arg_value = 437, /* f_opt_arg_arg_value */
3137 YYSYMBOL_opt_args_tail_args_tail_opt_comma = 438, /* opt_args_tail_args_tail_opt_comma */
3138 YYSYMBOL_args_list_arg_value_opt_args_tail_args_tail_opt_comma = 439, /* args-list_arg_value_opt_args_tail_args_tail_opt_comma */
3139 YYSYMBOL_f_args_list_args_tail_opt_comma = 440, /* f_args-list_args_tail_opt_comma */
3140 YYSYMBOL_tail_only_args_args_tail = 441, /* tail-only-args_args_tail */
3141 YYSYMBOL_f_args = 442, /* f_args */
3142 YYSYMBOL_opt_args_tail_largs_tail_none = 443, /* opt_args_tail_largs_tail_none */
3143 YYSYMBOL_args_list_arg_value_opt_args_tail_largs_tail_none = 444, /* args-list_arg_value_opt_args_tail_largs_tail_none */
3144 YYSYMBOL_f_args_list_largs_tail_none = 445, /* f_args-list_largs_tail_none */
3145 YYSYMBOL_tail_only_args_largs_tail = 446, /* tail-only-args_largs_tail */
3146 YYSYMBOL_f_largs = 447, /* f_largs */
3147 YYSYMBOL_args_forward = 448, /* args_forward */
3148 YYSYMBOL_f_bad_arg = 449, /* f_bad_arg */
3149 YYSYMBOL_f_norm_arg = 450, /* f_norm_arg */
3150 YYSYMBOL_f_arg_asgn = 451, /* f_arg_asgn */
3151 YYSYMBOL_f_arg_item = 452, /* f_arg_item */
3152 YYSYMBOL_f_arg = 453, /* f_arg */
3153 YYSYMBOL_f_label = 454, /* f_label */
3154 YYSYMBOL_kwrest_mark = 455, /* kwrest_mark */
3155 YYSYMBOL_f_no_kwarg = 456, /* f_no_kwarg */
3156 YYSYMBOL_f_kwrest = 457, /* f_kwrest */
3157 YYSYMBOL_restarg_mark = 458, /* restarg_mark */
3158 YYSYMBOL_f_rest_arg = 459, /* f_rest_arg */
3159 YYSYMBOL_blkarg_mark = 460, /* blkarg_mark */
3160 YYSYMBOL_f_block_arg = 461, /* f_block_arg */
3161 YYSYMBOL_option__ = 462, /* option_',
' */
3162 YYSYMBOL_opt_comma = 463, /* opt_comma */
3163 YYSYMBOL_value_expr_singleton_expr = 464, /* value_expr_singleton_expr */
3164 YYSYMBOL_singleton = 465, /* singleton */
3165 YYSYMBOL_singleton_expr = 466, /* singleton_expr */
3166 YYSYMBOL_467_40 = 467, /* $@40 */
3167 YYSYMBOL_assoc_list = 468, /* assoc_list */
3168 YYSYMBOL_assocs = 469, /* assocs */
3169 YYSYMBOL_assoc = 470, /* assoc */
3170 YYSYMBOL_operation2 = 471, /* operation2 */
3171 YYSYMBOL_operation3 = 472, /* operation3 */
3172 YYSYMBOL_dot_or_colon = 473, /* dot_or_colon */
3173 YYSYMBOL_call_op = 474, /* call_op */
3174 YYSYMBOL_call_op2 = 475, /* call_op2 */
3175 YYSYMBOL_rparen = 476, /* rparen */
3176 YYSYMBOL_rbracket = 477, /* rbracket */
3177 YYSYMBOL_rbrace = 478, /* rbrace */
3178 YYSYMBOL_trailer = 479, /* trailer */
3179 YYSYMBOL_term = 480, /* term */
3180 YYSYMBOL_terms = 481, /* terms */
3181 YYSYMBOL_none = 482 /* none */
3183typedef enum yysymbol_kind_t yysymbol_kind_t;
3192/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
3193 <limits.h> and (if available) <stdint.h> are included
3194 so that the code can choose integer types of a good width. */
3196#ifndef __PTRDIFF_MAX__
3197# include <limits.h> /* INFRINGES ON USER NAME SPACE */
3198# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3199# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
3204/* Narrow types that promote to a signed type and that can represent a
3205 signed or unsigned integer of at least N bits. In tables they can
3206 save space and decrease cache pressure. Promoting to a signed type
3207 helps avoid bugs in integer arithmetic. */
3209#ifdef __INT_LEAST8_MAX__
3210typedef __INT_LEAST8_TYPE__ yytype_int8;
3211#elif defined YY_STDINT_H
3212typedef int_least8_t yytype_int8;
3214typedef signed char yytype_int8;
3217#ifdef __INT_LEAST16_MAX__
3218typedef __INT_LEAST16_TYPE__ yytype_int16;
3219#elif defined YY_STDINT_H
3220typedef int_least16_t yytype_int16;
3222typedef short yytype_int16;
3225/* Work around bug in HP-UX 11.23, which defines these macros
3226 incorrectly for preprocessor constants. This workaround can likely
3227 be removed in 2023, as HPE has promised support for HP-UX 11.23
3228 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
3229 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
3231# undef UINT_LEAST8_MAX
3232# undef UINT_LEAST16_MAX
3233# define UINT_LEAST8_MAX 255
3234# define UINT_LEAST16_MAX 65535
3237#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
3238typedef __UINT_LEAST8_TYPE__ yytype_uint8;
3239#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
3240 && UINT_LEAST8_MAX <= INT_MAX)
3241typedef uint_least8_t yytype_uint8;
3242#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
3243typedef unsigned char yytype_uint8;
3245typedef short yytype_uint8;
3248#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
3249typedef __UINT_LEAST16_TYPE__ yytype_uint16;
3250#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
3251 && UINT_LEAST16_MAX <= INT_MAX)
3252typedef uint_least16_t yytype_uint16;
3253#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
3254typedef unsigned short yytype_uint16;
3256typedef int yytype_uint16;
3260# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
3261# define YYPTRDIFF_T __PTRDIFF_TYPE__
3262# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
3263# elif defined PTRDIFF_MAX
3265# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
3267# define YYPTRDIFF_T ptrdiff_t
3268# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
3270# define YYPTRDIFF_T long
3271# define YYPTRDIFF_MAXIMUM LONG_MAX
3276# ifdef __SIZE_TYPE__
3277# define YYSIZE_T __SIZE_TYPE__
3278# elif defined size_t
3279# define YYSIZE_T size_t
3280# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3281# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
3282# define YYSIZE_T size_t
3284# define YYSIZE_T unsigned
3288#define YYSIZE_MAXIMUM \
3289 YY_CAST (YYPTRDIFF_T, \
3290 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
3291 ? YYPTRDIFF_MAXIMUM \
3292 : YY_CAST (YYSIZE_T, -1)))
3294#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
3297/* Stored state numbers (used for stacks). */
3298typedef yytype_int16 yy_state_t;
3300/* State numbers in computations. */
3301typedef int yy_state_fast_t;
3304# if defined YYENABLE_NLS && YYENABLE_NLS
3306# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
3307# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
3311# define YY_(Msgid) Msgid
3316#ifndef YY_ATTRIBUTE_PURE
3317# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
3318# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
3320# define YY_ATTRIBUTE_PURE
3324#ifndef YY_ATTRIBUTE_UNUSED
3325# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
3326# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
3328# define YY_ATTRIBUTE_UNUSED
3332/* Suppress unused-variable warnings by "using" E. */
3333#if ! defined lint || defined __GNUC__
3334# define YY_USE(E) ((void) (E))
3336# define YY_USE(E) /* empty */
3339/* Suppress an incorrect diagnostic about yylval being uninitialized. */
3340#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
3341# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
3342# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3343 _Pragma ("GCC diagnostic push") \
3344 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
3346# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3347 _Pragma ("GCC diagnostic push") \
3348 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
3349 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
3351# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
3352 _Pragma ("GCC diagnostic pop")
3354# define YY_INITIAL_VALUE(Value) Value
3356#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3357# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3358# define YY_IGNORE_MAYBE_UNINITIALIZED_END
3360#ifndef YY_INITIAL_VALUE
3361# define YY_INITIAL_VALUE(Value) /* Nothing. */
3364#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
3365# define YY_IGNORE_USELESS_CAST_BEGIN \
3366 _Pragma ("GCC diagnostic push") \
3367 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
3368# define YY_IGNORE_USELESS_CAST_END \
3369 _Pragma ("GCC diagnostic pop")
3371#ifndef YY_IGNORE_USELESS_CAST_BEGIN
3372# define YY_IGNORE_USELESS_CAST_BEGIN
3373# define YY_IGNORE_USELESS_CAST_END
3377#define YY_ASSERT(E) ((void) (0 && (E)))
3381/* The parser invokes alloca or malloc; define the necessary symbols. */
3383# ifdef YYSTACK_USE_ALLOCA
3384# if YYSTACK_USE_ALLOCA
3386# define YYSTACK_ALLOC __builtin_alloca
3387# elif defined __BUILTIN_VA_ARG_INCR
3388# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
3390# define YYSTACK_ALLOC __alloca
3391# elif defined _MSC_VER
3392# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
3393# define alloca _alloca
3395# define YYSTACK_ALLOC alloca
3396# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
3397# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
3398 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
3399# ifndef EXIT_SUCCESS
3400# define EXIT_SUCCESS 0
3407# ifdef YYSTACK_ALLOC
3408 /* Pacify GCC's
'empty if-body' warning. */
3409# define YYSTACK_FREE(Ptr) do { ; } while (0)
3410# ifndef YYSTACK_ALLOC_MAXIMUM
3415# define YYSTACK_ALLOC_MAXIMUM 4032
3418# define YYSTACK_ALLOC YYMALLOC
3419# define YYSTACK_FREE YYFREE
3420# ifndef YYSTACK_ALLOC_MAXIMUM
3421# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
3423# if (defined __cplusplus && ! defined EXIT_SUCCESS \
3424 && ! ((defined YYMALLOC || defined malloc) \
3425 && (defined YYFREE || defined free)))
3427# ifndef EXIT_SUCCESS
3428# define EXIT_SUCCESS 0
3432# define YYMALLOC malloc
3433# if ! defined malloc && ! defined EXIT_SUCCESS
3434void *malloc (YYSIZE_T);
3439# if ! defined free && ! defined EXIT_SUCCESS
3446#if (! defined yyoverflow \
3447 && (! defined __cplusplus \
3448 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
3449 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
3454 yy_state_t yyss_alloc;
3460# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
3464# define YYSTACK_BYTES(N) \
3465 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
3466 + YYSIZEOF (YYLTYPE)) \
3467 + 2 * YYSTACK_GAP_MAXIMUM)
3469# define YYCOPY_NEEDED 1
3476# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
3479 YYPTRDIFF_T yynewbytes; \
3480 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
3481 Stack = &yyptr->Stack_alloc; \
3482 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
3483 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
3489#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
3493# if defined __GNUC__ && 1 < __GNUC__
3494# define YYCOPY(Dst, Src, Count) \
3495 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
3497# define YYCOPY(Dst, Src, Count) \
3501 for (yyi = 0; yyi < (Count); yyi++) \
3502 (Dst)[yyi] = (Src)[yyi]; \
3515#define YYNTOKENS 162
3521#define YYNSTATES 1442
3524#define YYMAXUTOK 361
3529#define YYTRANSLATE(YYX) \
3530 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
3531 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
3536static const yytype_uint8 yytranslate[] =
3538 0, 2, 2, 2, 2, 2, 2, 2, 2, 72,
3539 154, 75, 73, 74, 2, 2, 2, 2, 2, 2,
3540 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3541 2, 2, 161, 148, 2, 2, 2, 146, 141, 2,
3542 157, 158, 144, 142, 155, 143, 69, 145, 2, 2,
3543 2, 2, 2, 2, 2, 2, 2, 2, 136, 160,
3544 138, 134, 137, 135, 2, 2, 2, 2, 2, 2,
3545 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3546 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3547 2, 153, 70, 159, 140, 2, 156, 2, 2, 2,
3548 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3549 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3550 2, 2, 2, 151, 139, 152, 149, 2, 89, 90,
3551 91, 92, 76, 77, 78, 79, 95, 96, 84, 83,
3552 80, 81, 82, 87, 88, 93, 94, 98, 85, 86,
3553 97, 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, 2, 2, 2, 2,
3563 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
3564 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3565 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
3566 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
3567 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
3568 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
3569 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
3570 65, 66, 67, 68, 71, 99, 100, 101, 102, 103,
3571 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
3572 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
3573 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
3579static const yytype_int16 yyrline[] =
3581 0, 3176, 3170, 3176, 3176, 3176, 3176, 3196, 3201, 3206,
3582 3213, 3218, 3225, 3227, 3245, 3241, 3246, 3245, 3257, 3254,
3583 3267, 3272, 3277, 3284, 3286, 3285, 3295, 3297, 3304, 3304,
3584 3309, 3314, 3322, 3331, 3338, 3344, 3350, 3361, 3372, 3381,
3585 3395, 3396, 3401, 3401, 3402, 3413, 3418, 3419, 3426, 3426,
3586 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3427, 3428,
3587 3428, 3428, 3431, 3432, 3438, 3438, 3438, 3445, 3446, 3453,
3588 3456, 3457, 3462, 3467, 3472, 3478, 3477, 3493, 3492, 3507,
3589 3510, 3521, 3531, 3530, 3544, 3544, 3545, 3551, 3551, 3551,
3590 3558, 3559, 3562, 3562, 3565, 3566, 3573, 3581, 3581, 3581,
3591 3588, 3595, 3604, 3609, 3614, 3619, 3624, 3630, 3636, 3642,
3592 3647, 3654, 3663, 3664, 3671, 3672, 3679, 3684, 3689, 3694,
3593 3694, 3694, 3699, 3704, 3709, 3714, 3719, 3724, 3731, 3732,
3594 3739, 3744, 3752, 3752, 3757, 3762, 3762, 3768, 3773, 3778,
3595 3783, 3791, 3791, 3796, 3801, 3801, 3806, 3811, 3816, 3821,
3596 3829, 3837, 3840, 3845, 3850, 3857, 3857, 3857, 3858, 3863,
3597 3866, 3871, 3874, 3879, 3879, 3887, 3888, 3889, 3890, 3891,
3598 3892, 3893, 3894, 3895, 3896, 3897, 3898, 3899, 3900, 3901,
3599 3902, 3903, 3904, 3905, 3906, 3907, 3908, 3909, 3910, 3911,
3600 3912, 3913, 3914, 3915, 3916, 3919, 3919, 3919, 3920, 3920,
3601 3921, 3921, 3921, 3922, 3922, 3922, 3922, 3923, 3923, 3923,
3602 3923, 3924, 3924, 3924, 3925, 3925, 3925, 3925, 3926, 3926,
3603 3926, 3926, 3927, 3927, 3927, 3927, 3928, 3928, 3928, 3928,
3604 3929, 3929, 3929, 3929, 3930, 3930, 3933, 3933, 3934, 3934,
3605 3934, 3934, 3934, 3934, 3934, 3934, 3934, 3935, 3935, 3935,
3606 3935, 3935, 3935, 3935, 3936, 3941, 3946, 3951, 3956, 3961,
3607 3966, 3971, 3976, 3981, 3986, 3991, 3996, 4001, 4002, 4007,
3608 4012, 4017, 4022, 4027, 4032, 4037, 4042, 4047, 4052, 4057,
3609 4064, 4064, 4064, 4065, 4066, 4069, 4078, 4079, 4085, 4092,
3610 4093, 4094, 4095, 4098, 4103, 4111, 4117, 4124, 4131, 4131,
3611 4134, 4135, 4136, 4141, 4148, 4153, 4162, 4167, 4177, 4189,
3612 4190, 4196, 4197, 4198, 4199, 4204, 4211, 4211, 4216, 4221,
3613 4226, 4232, 4238, 4242, 4242, 4280, 4285, 4293, 4298, 4306,
3614 4311, 4316, 4321, 4329, 4334, 4343, 4344, 4348, 4353, 4358,
3615 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4376, 4377, 4378,
3616 4379, 4385, 4384, 4397, 4397, 4403, 4409, 4414, 4419, 4424,
3617 4430, 4435, 4440, 4445, 4450, 4457, 4462, 4467, 4472, 4473,
3618 4479, 4481, 4493, 4502, 4511, 4520, 4519, 4534, 4533, 4546,
3619 4554, 4554, 4555, 4599, 4598, 4621, 4620, 4640, 4639, 4658,
3620 4656, 4673, 4671, 4686, 4691, 4696, 4701, 4716, 4716, 4719,
3621 4726, 4744, 4751, 4759, 4767, 4774, 4782, 4791, 4800, 4808,
3622 4815, 4822, 4830, 4837, 4843, 4858, 4865, 4870, 4876, 4883,
3623 4890, 4891, 4892, 4895, 4896, 4899, 4901, 4910, 4911, 4918,
3624 4919, 4922, 4927, 4935, 4935, 4935, 4940, 4945, 4950, 4955,
3625 4962, 4968, 4975, 4976, 4983, 4983, 4985, 4985, 4985, 4985,
3626 4985, 4985, 4985, 4985, 4985, 4985, 4985, 4988, 4996, 4996,
3627 4996, 4996, 4996, 4996, 4996, 4996, 4996, 4996, 4996, 4996,
3628 4996, 4996, 4996, 4996, 4996, 4996, 4997, 5003, 5008, 5008,
3629 5011, 5012, 5018, 5028, 5032, 5035, 5040, 5047, 5049, 5053,
3630 5058, 5061, 5067, 5072, 5079, 5085, 5078, 5112, 5119, 5128,
3631 5135, 5134, 5145, 5153, 5165, 5175, 5181, 5186, 5194, 5201,
3632 5212, 5218, 5223, 5229, 5239, 5244, 5252, 5258, 5266, 5268,
3633 5283, 5283, 5304, 5310, 5315, 5321, 5329, 5338, 5339, 5342,
3634 5343, 5345, 5358, 5365, 5373, 5374, 5377, 5378, 5384, 5392,
3635 5393, 5399, 5405, 5410, 5415, 5422, 5425, 5432, 5436, 5435,
3636 5448, 5451, 5458, 5465, 5466, 5467, 5474, 5481, 5488, 5494,
3637 5501, 5508, 5515, 5521, 5526, 5531, 5538, 5537, 5548, 5554,
3638 5562, 5568, 5573, 5578, 5583, 5588, 5591, 5592, 5599, 5604,
3639 5611, 5619, 5625, 5632, 5633, 5640, 5647, 5652, 5657, 5662,
3640 5669, 5671, 5678, 5684, 5696, 5697, 5712, 5717, 5724, 5730,
3641 5731, 5738, 5739, 5739, 5739, 5739, 5739, 5739, 5739, 5740,
3642 5741, 5742, 5745, 5745, 5745, 5745, 5745, 5745, 5745, 5745,
3643 5746, 5751, 5754, 5762, 5774, 5781, 5788, 5793, 5798, 5806,
3644 5826, 5829, 5834, 5838, 5841, 5846, 5849, 5856, 5859, 5860,
3645 5863, 5875, 5876, 5877, 5884, 5897, 5909, 5916, 5916, 5916,
3646 5916, 5920, 5924, 5931, 5933, 5940, 5940, 5944, 5948, 5955,
3647 5955, 5958, 5958, 5962, 5966, 5974, 5978, 5986, 5990, 5998,
3648 6002, 6010, 6014, 6040, 6043, 6042, 6057, 6065, 6069, 6073,
3649 6088, 6089, 6092, 6097, 6100, 6101, 6104, 6120, 6121, 6124,
3650 6132, 6133, 6141, 6142, 6143, 6144, 6147, 6148, 6149, 6152,
3651 6152, 6153, 6156, 6157, 6158, 6159, 6160, 6161, 6162, 6165,
3652 6175, 6182, 6182, 6189, 6190, 6194, 6193, 6203, 6206, 6207,
3653 6214, 6221, 6231, 6232, 6232, 6249, 6249, 6249, 6249, 6249,
3654 6249, 6249, 6249, 6249, 6249, 6249, 6250, 6259, 6259, 6259,
3655 6259, 6259, 6260, 6351, 6351, 6351, 6351, 6351, 6351, 6351,
3656 6351, 6351, 6351, 6351, 6351, 6351, 6351, 6351, 6351, 6351,
3657 6351, 6351, 6351, 6351, 6351, 6351, 6354, 6354, 6354, 6354,
3658 6354, 6354, 6354, 6354, 6354, 6354, 6354, 6354, 6354, 6354,
3659 6354, 6354, 6354, 6354, 6354, 6354, 6357, 6364, 6373, 6382,
3660 6391, 6402, 6403, 6413, 6420, 6425, 6444, 6446, 6457, 6477,
3661 6478, 6481, 6487, 6493, 6501, 6502, 6505, 6511, 6519, 6520,
3662 6523, 6529, 6534, 6542, 6542, 6542, 6550, 6550, 6580, 6582,
3663 6581, 6594, 6595, 6602, 6604, 6629, 6634, 6639, 6646, 6652,
3664 6657, 6670, 6670, 6670, 6671, 6674, 6675, 6676, 6679, 6680,
3665 6683, 6684, 6687, 6688, 6691, 6694, 6697, 6700, 6701, 6704,
3666 6712, 6719, 6720, 6724
3671#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
3676static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
3680static const char *
const yytname[] =
3682 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"'class'\"",
3683 "\"'module'\"",
"\"'def'\"",
"\"'undef'\"",
"\"'begin'\"",
3684 "\"'rescue'\"",
"\"'ensure'\"",
"\"'end'\"",
"\"'if'\"",
"\"'unless'\"",
3685 "\"'then'\"",
"\"'elsif'\"",
"\"'else'\"",
"\"'case'\"",
"\"'when'\"",
3686 "\"'while'\"",
"\"'until'\"",
"\"'for'\"",
"\"'break'\"",
"\"'next'\"",
3687 "\"'redo'\"",
"\"'retry'\"",
"\"'in'\"",
"\"'do'\"",
3688 "\"'do' for condition\"",
"\"'do' for block\"",
"\"'do' for lambda\"",
3689 "\"'return'\"",
"\"'yield'\"",
"\"'super'\"",
"\"'self'\"",
"\"'nil'\"",
3690 "\"'true'\"",
"\"'false'\"",
"\"'and'\"",
"\"'or'\"",
"\"'not'\"",
3691 "\"'if' modifier\"",
"\"'unless' modifier\"",
"\"'while' modifier\"",
3692 "\"'until' modifier\"",
"\"'rescue' modifier\"",
"\"'alias'\"",
3693 "\"'defined?'\"",
"\"'BEGIN'\"",
"\"'END'\"",
"\"'__LINE__'\"",
3694 "\"'__FILE__'\"",
"\"'__ENCODING__'\"",
"\"local variable or method\"",
3695 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
3696 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
3697 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
3698 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
3699 "\"literal content\"",
"tREGEXP_END",
"\"dummy end\"",
"'.'",
3700 "\"backslash\"",
"\"escaped space\"",
"\"escaped horizontal tab\"",
3701 "\"escaped form feed\"",
"\"escaped carriage return\"",
3702 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
3703 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
3704 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
3705 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
3706 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
3707 "\"( arg\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
"\"**arg\"",
3708 "\"&\"",
"\"->\"",
"\"symbol literal\"",
"\"string literal\"",
3709 "\"backtick literal\"",
"\"regexp literal\"",
"\"word list\"",
3710 "\"verbatim word list\"",
"\"symbol list\"",
"\"verbatim symbol list\"",
3711 "\"terminator\"",
"\"'}'\"",
"\"'#{'\"",
"tSTRING_DVAR",
"tLAMBEG",
3712 "tLABEL_END",
"tIGNORED_NL",
"tCOMMENT",
"tEMBDOC_BEG",
"tEMBDOC",
3713 "tEMBDOC_END",
"tHEREDOC_BEG",
"tHEREDOC_END",
"k__END__",
"tLOWEST",
3714 "'='",
"'?'",
"':'",
"'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
3715 "'*'",
"'/'",
"'%'",
"tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
3716 "'}'",
"'['",
"'\\n'",
"','",
"'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
3717 "$accept",
"option_terms",
"compstmt_top_stmts",
"$@1",
"program",
3718 "top_stmts",
"top_stmt",
"block_open",
"begin_block",
"compstmt_stmts",
3719 "$@2",
"$@3",
"bodystmt",
"$@4",
"stmts",
"stmt_or_begin",
"$@5",
3720 "allow_exits",
"k_END",
"$@6",
"stmt",
"asgn_mrhs",
"asgn_command_rhs",
3721 "command_asgn",
"op_asgn_command_rhs",
3722 "def_endless_method_endless_command",
"endless_command",
"option_'\\n'",
3723 "command_rhs",
"expr",
"$@7",
"$@8",
"def_name",
"defn_head",
"$@9",
3724 "defs_head",
"value_expr_expr",
"expr_value",
"$@10",
"$@11",
3725 "expr_value_do",
"command_call",
"value_expr_command_call",
3726 "command_call_value",
"block_command",
"cmd_brace_block",
"fcall",
3727 "command",
"mlhs",
"mlhs_inner",
"mlhs_basic",
"mlhs_items_mlhs_item",
3728 "mlhs_item",
"mlhs_head",
"mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
3729 "fitem",
"undef_list",
"$@12",
"op",
"reswords",
"asgn_arg_rhs",
"arg",
3730 "op_asgn_arg_rhs",
"range_expr_arg",
"def_endless_method_endless_arg",
3731 "ternary",
"endless_arg",
"relop",
"rel_expr",
"lex_ctxt",
3732 "begin_defined",
"after_rescue",
"value_expr_arg",
"arg_value",
3733 "aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
"opt_call_args",
3734 "value_expr_command",
"call_args",
"$@13",
"command_args",
"block_arg",
3735 "opt_block_arg",
"args",
"arg_splat",
"mrhs_arg",
"mrhs",
"primary",
3736 "$@14",
"$@15",
"@16",
"@17",
"$@18",
"$@19",
"$@20",
"$@21",
"$@22",
3737 "$@23",
"$@24",
"value_expr_primary",
"primary_value",
"k_begin",
"k_if",
3738 "k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
3739 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
3740 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"k_yield",
"then",
3741 "do",
"if_tail",
"opt_else",
"for_var",
"f_marg",
"mlhs_items_f_marg",
3742 "f_margs",
"f_rest_marg",
"f_any_kwrest",
"$@25",
"f_eq",
3743 "f_kw_primary_value",
"f_kwarg_primary_value",
"opt_f_block_arg_none",
3744 "args_tail_basic_primary_value_none",
"block_args_tail",
3745 "excessed_comma",
"f_opt_primary_value",
"f_opt_arg_primary_value",
3746 "opt_args_tail_block_args_tail_none",
3747 "args-list_primary_value_opt_args_tail_block_args_tail_none",
3748 "block_param",
"tail-only-args_block_args_tail",
"opt_block_param_def",
3749 "block_param_def",
"opt_block_param",
"opt_bv_decl",
"bv_decls",
"bvar",
3750 "max_numparam",
"numparam",
"it_id",
"@26",
"$@27",
"lambda",
3751 "f_larglist",
"lambda_body",
"$@28",
"do_block",
"block_call",
3752 "method_call",
"brace_block",
"@29",
"brace_body",
"@30",
"do_body",
3753 "case_args",
"case_body",
"cases",
"p_pvtbl",
"p_pktbl",
"p_in_kwarg",
3754 "$@31",
"p_case_body",
"p_cases",
"p_top_expr",
"p_top_expr_body",
3755 "p_expr",
"p_as",
"$@32",
"p_alt",
"p_lparen",
"p_lbracket",
3756 "p_expr_basic",
"$@33",
"p_args",
"p_args_head",
"p_args_tail",
"p_find",
3757 "p_rest",
"p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
3758 "p_kw_label",
"p_kwrest",
"p_kwnorest",
"p_any_kwrest",
"p_value",
3759 "range_expr_p_primitive",
"p_primitive",
"p_variable",
"p_var_ref",
3760 "p_expr_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
3761 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
3762 "regexp",
"nonempty_list_' '",
"words_tWORDS_BEG_word_list",
"words",
3763 "word_list",
"word",
"words_tSYMBOLS_BEG_symbol_list",
"symbols",
3764 "symbol_list",
"words_tQWORDS_BEG_qword_list",
"qwords",
3765 "words_tQSYMBOLS_BEG_qsym_list",
"qsymbols",
"qword_list",
"qsym_list",
3766 "string_contents",
"xstring_contents",
"regexp_contents",
3767 "string_content",
"@34",
"@35",
"@36",
"@37",
"string_dend",
3768 "string_dvar",
"symbol",
"ssym",
"sym",
"dsym",
"numeric",
3769 "simple_numeric",
"nonlocal_var",
"user_variable",
"keyword_variable",
3770 "var_ref",
"var_lhs",
"backref",
"$@38",
"superclass",
3771 "f_opt_paren_args",
"f_empty_arg",
"f_paren_args",
"f_arglist",
"@39",
3772 "f_kw_arg_value",
"f_kwarg_arg_value",
"opt_f_block_arg_opt_comma",
3773 "args_tail_basic_arg_value_opt_comma",
"args_tail",
3774 "args_tail_basic_arg_value_none",
"largs_tail",
"f_opt_arg_value",
3775 "f_opt_arg_arg_value",
"opt_args_tail_args_tail_opt_comma",
3776 "args-list_arg_value_opt_args_tail_args_tail_opt_comma",
3777 "f_args-list_args_tail_opt_comma",
"tail-only-args_args_tail",
"f_args",
3778 "opt_args_tail_largs_tail_none",
3779 "args-list_arg_value_opt_args_tail_largs_tail_none",
3780 "f_args-list_largs_tail_none",
"tail-only-args_largs_tail",
"f_largs",
3781 "args_forward",
"f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
"f_arg_item",
3782 "f_arg",
"f_label",
"kwrest_mark",
"f_no_kwarg",
"f_kwrest",
3783 "restarg_mark",
"f_rest_arg",
"blkarg_mark",
"f_block_arg",
"option_','",
3784 "opt_comma",
"value_expr_singleton_expr",
"singleton",
"singleton_expr",
3785 "$@40",
"assoc_list",
"assocs",
"assoc",
"operation2",
"operation3",
3786 "dot_or_colon",
"call_op",
"call_op2",
"rparen",
"rbracket",
"rbrace",
3787 "trailer",
"term",
"terms",
"none", YY_NULLPTR
3791yysymbol_name (yysymbol_kind_t yysymbol)
3793 return yytname[yysymbol];
3797#define YYPACT_NINF (-1205)
3799#define yypact_value_is_default(Yyn) \
3800 ((Yyn) == YYPACT_NINF)
3802#define YYTABLE_NINF (-854)
3804#define yytable_value_is_error(Yyn) \
3805 ((Yyn) == YYTABLE_NINF)
3809static const yytype_int16 yypact[] =
3811 -1205, 6086, 176, -1205, -1205, -1205, -1205, 10857, -1205, -1205,
3812 -1205, -1205, -1205, -1205, -1205, 11912, 11912, -1205, -1205, -1205,
3813 -1205, 7146, -1205, -1205, -1205, -1205, 590, 10703, 112, 91,
3814 -1205, -1205, -1205, -1205, 6522, 7302, -1205, -1205, 6678, -1205,
3815 -1205, -1205, -1205, -1205, -1205, -1205, -1205, 13472, 13472, 13472,
3816 13472, 257, 9616, 9774, 12392, 12632, 11158, -1205, 10549, -1205,
3817 -1205, -1205, 175, 175, 175, 175, 1157, 13592, 13472, -1205,
3818 678, -1205, -1205, 1296, -1205, -1205, -1205, -1205, -1205, 859,
3819 41, 41, -1205, -1205, 98, 372, 302, -1205, 292, 14192,
3820 -1205, 339, -1205, 3555, -1205, -1205, -1205, -1205, 627, 111,
3821 -1205, 574, -1205, 11792, 11792, -1205, -1205, 10236, 14310, 14428,
3822 14546, 10394, 11912, 7770, -1205, 88, 168, -1205, -1205, 368,
3823 -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205,
3824 -1205, -1205, -1205, -1205, -1205, -1205, -1205, 67, 344, -1205,
3825 413, 398, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205,
3826 -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205,
3827 -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205,
3828 -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205,
3829 -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205,
3830 -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205,
3831 -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205,
3832 -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205,
3833 470, -1205, -1205, -1205, -1205, -1205, -1205, 498, 13472, 358,
3834 9774, 13472, 13472, 13472, -1205, 13472, -1205, -1205, 553, 6336,
3835 -1205, 629, -1205, -1205, -1205, 577, -1205, 712, 56, 59,
3836 645, 62, 615, -1205, -1205, 12032, -1205, 11912, -1205, -1205,
3837 11533, 13712, 106, -1205, 618, -1205, 9932, -1205, -1205, -1205,
3838 -1205, -1205, 620, 41, 41, 98, -1205, 739, -1205, 630,
3839 727, 6492, 6492, 415, -1205, 9616, 654, 678, -1205, 1296,
3840 112, 689, -1205, -1205, 680, 759, 779, -1205, 629, 679,
3841 779, -1205, 112, 801, 1157, 14664, 692, 692, 708, -1205,
3842 749, 755, 825, 841, -1205, -1205, 1059, -1205, -1205, 1081,
3843 1086, 705, -1205, 715, 715, 715, 715, 805, -1205, -1205,
3844 -1205, -1205, -1205, -1205, -1205, 6238, 734, 11792, 11792, 11792,
3845 11792, -1205, 13712, 13712, 1820, 764, -1205, 769, -1205, 1820,
3846 775, -1205, -1205, -1205, -1205, 818, -1205, -1205, -1205, -1205,
3847 -1205, -1205, -1205, 9616, 11276, 781, -1205, -1205, 13472, 13472,
3848 13472, 13472, 13472, -1205, -1205, 13472, 13472, 13472, 13472, 13472,
3849 13472, 13472, 13472, -1205, 13472, -1205, -1205, 13472, 13472, 13472,
3850 13472, 13472, 13472, 13472, 13472, 13472, 13472, -1205, -1205, 15045,
3851 11912, 15143, 620, 8552, -1205, 859, -1205, 150, 150, 11792,
3852 9464, 9464, -1205, 678, 780, 873, -1205, -1205, 862, 917,
3853 133, 174, 188, 717, 874, 11792, 369, -1205, 847, 876,
3854 -1205, -1205, -1205, -1205, 136, 324, 328, 539, 543, 567,
3855 635, 648, 774, -1205, -1205, -1205, -1205, -1205, 793, -1205,
3856 -1205, 11394, -1205, -1205, -1205, 3994, -1205, -1205, -1205, -1205,
3857 -1205, -1205, 403, -1205, -1205, -1205, 1024, -1205, 13472, 12152,
3858 -1205, -1205, 15241, 11912, 15339, -1205, -1205, 12512, -1205, 13472,
3859 112, -1205, 824, 112, 833, -1205, -1205, 832, 89, -1205,
3860 -1205, -1205, -1205, -1205, 10857, -1205, -1205, 13472, 811, 868,
3861 870, 15437, 15339, -1205, 91, 112, -1205, -1205, 5713, 851,
3862 850, -1205, 12392, -1205, -1205, 12632, -1205, -1205, -1205, 618,
3863 879, -1205, 857, -1205, -1205, 14664, 15535, 11912, 15633, -1205,
3864 -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205,
3865 -1205, 1117, 113, 1177, 134, 13472, -1205, -1205, 10084, -1205,
3866 -1205, -1205, -1205, -1205, 11672, -1205, -1205, -1205, -1205, -1205,
3867 -1205, -1205, -1205, -1205, -1205, 1526, -1205, -1205, -1205, -1205,
3868 -1205, 861, -1205, -1205, -1205, 871, -1205, -1205, -1205, 875,
3869 -1205, -1205, -1205, 112, -1205, -1205, -1205, 880, -1205, 883,
3870 13472, 143, -1205, -1205, 976, 891, 381, -1205, 13832, 8552,
3871 678, 13832, 8552, -1205, 882, -1205, -1205, -1205, 142, 142,
3872 12752, 112, 14664, 894, -1205, 12872, -1205, 727, 3345, 3345,
3873 3345, 3345, 5063, 3746, 3345, 3345, 6492, 6492, 1184, 1184,
3874 -1205, 5555, 1132, 1132, 1387, 346, 346, 727, 727, 727,
3875 1614, 1614, 7926, 6834, 8238, 6990, 620, -1205, 112, 896,
3876 497, -1205, 504, -1205, 7458, -1205, -1205, 142, -1205, 8704,
3877 1041, 9160, 77, 142, 142, 1040, 1037, 211, 15731, 11912,
3878 15829, -1205, -1205, -1205, 879, -1205, -1205, -1205, -1205, 15927,
3879 11912, 16025, 8552, 13712, -1205, -1205, -1205, 112, -1205, -1205,
3880 -1205, -1205, 3311, 13952, 13952, 10857, -1205, 13472, 13472, -1205,
3881 629, -1205, -1205, 615, 6366, 7614, 112, 480, 520, 13472,
3882 13472, -1205, -1205, 12272, -1205, 12512, -1205, -1205, -1205, 13712,
3883 6336, -1205, 14072, 14072, 359, 620, 620, 13952, -1205, 48,
3884 -1205, -1205, 779, 14664, 857, 581, 68, 112, 72, 608,
3885 -1205, -1205, 1031, -1205, 631, -1205, 175, -1205, -1205, 631,
3886 175, -1205, 727, 904, -1205, 1526, 1303, -1205, 908, 112,
3887 913, -1205, 46, -1205, -1205, -1205, 808, -1205, 1820, -1205,
3888 -1205, -1205, 930, 13472, 1820, -1205, -1205, -1205, -1205, -1205,
3889 1112, -1205, -1205, -1205, 590, 1025, -1205, 6336, 1028, 142,
3890 -1205, 1025, 1028, 142, -1205, -1205, 922, -1205, -1205, -1205,
3891 -1205, -1205, 13472, -1205, -1205, -1205, 921, 923, 1045, -1205,
3892 -1205, 857, 14664, 1050, -1205, -1205, 1049, 947, 4500, -1205,
3893 -1205, -1205, 886, 540, -1205, -1205, 958, -1205, -1205, -1205,
3894 -1205, 818, 938, 544, 12152, -1205, -1205, -1205, -1205, 818,
3895 -1205, 1093, -1205, 943, -1205, 1092, -1205, -1205, -1205, -1205,
3896 -1205, -1205, 12992, 142, -1205, 1040, 142, 319, 438, 112,
3897 234, 280, 11792, 678, 11792, 8552, 1058, 68, -1205, 112,
3898 142, 89, 11011, -1205, 168, 372, -1205, 4787, -1205, -1205,
3899 -1205, -1205, 13472, -1205, -1205, -1205, -1205, 585, -1205, -1205,
3900 112, 955, 89, 590, -1205, -1205, -1205, -1205, 625, -1205,
3901 -1205, -1205, -1205, -1205, 715, -1205, 715, 715, 715, -1205,
3902 112, -1205, 1526, -1205, 1451, -1205, -1205, 1060, 861, -1205,
3903 -1205, 964, 966, -1205, -1205, 968, -1205, 979, -1205, 964,
3904 13832, -1205, -1205, -1205, -1205, -1205, -1205, -1205, 984, 13112,
3905 -1205, 857, 655, -1205, -1205, -1205, 16123, 11912, 16221, -1205,
3906 -1205, 13472, 13952, 13952, 1013, -1205, -1205, -1205, 13952, 13952,
3907 -1205, -1205, 13232, 1092, -1205, -1205, -1205, 9464, 11792, 142,
3908 -1205, -1205, 142, -1205, 13472, -1205, 120, -1205, -1205, 142,
3909 -1205, 353, 77, 8552, 678, 142, -1205, -1205, -1205, -1205,
3910 -1205, -1205, 13472, 13472, -1205, 13472, 13472, -1205, 12512, -1205,
3911 14072, 1518, 5934, -1205, -1205, 1016, 1019, -1205, 1112, -1205,
3912 1112, -1205, 1820, -1205, 1112, -1205, -1205, 1025, 1028, 13472,
3913 13472, -1205, -1205, 13472, 1027, 11672, 11672, 13952, 13472, 8082,
3914 8394, 112, 668, 685, 5121, 5121, 6336, -1205, -1205, -1205,
3915 -1205, -1205, 13952, -1205, -1205, -1205, -1205, 921, -1205, 1085,
3916 -1205, 1180, -1205, -1205, 150, -1205, -1205, -1205, 13352, 8856,
3917 -1205, -1205, -1205, 142, -1205, -1205, 13472, 1820, 1036, -1205,
3918 -1205, 1042, -1205, -1205, 1043, -1205, -1205, -1205, -1205, -1205,
3919 1051, 1057, -1205, 125, 1451, 1451, 964, 964, 1067, 964,
3920 6336, 6336, 1053, 1053, 984, -1205, -1205, 6336, 722, -1205,
3921 -1205, -1205, 1791, 1791, 515, -1205, 4950, 424, 1141, -1205,
3922 1074, -1205, -1205, 52, -1205, 1091, -1205, -1205, -1205, 1076,
3923 -1205, 1100, -1205, 14973, -1205, -1205, -1205, -1205, -1205, 909,
3924 -1205, -1205, -1205, 314, -1205, -1205, -1205, -1205, -1205, -1205,
3925 -1205, -1205, -1205, 672, -1205, -1205, -1205, 14782, 150, -1205,
3926 -1205, 9464, -1205, -1205, 9312, 8704, 13472, -1205, 573, 5121,
3927 9464, -1205, 112, 46, -1205, -1205, 74, 808, -1205, 1820,
3928 -1205, -1205, 1820, -1205, 1112, -1205, -1205, -1205, -1205, 1019,
3929 -1205, -1205, 1112, -1205, -1205, 2117, 10084, -1205, -1205, 8552,
3930 -1205, -1205, -1205, -1205, 14973, 73, 112, 5437, -1205, 112,
3931 1102, -1205, 1061, -1205, -1205, -1205, 1039, -1205, 11792, -1205,
3932 1188, 5437, -1205, 14973, 670, 1146, 1791, 1791, 515, 382,
3933 701, 5121, 5121, -1205, 1202, -1205, 899, 198, 227, 289,
3934 8552, 678, -1205, 943, -1205, -1205, -1205, -1205, 150, 970,
3935 142, 1099, 1105, -1205, -1205, 10084, -1205, 1036, -1205, 1109,
3936 1110, 1114, 1115, 1109, 964, 1036, -1205, 1127, -1205, -1205,
3937 -1205, 1128, -1205, -1205, -1205, 112, 880, 1131, 14900, 1133,
3938 -1205, -1205, -1205, 408, -1205, 1146, 1134, 1136, -1205, -1205,
3939 -1205, -1205, -1205, 112, -1205, -1205, 1137, 14973, 1140, -1205,
3940 -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205,
3941 112, 112, 112, 112, 112, 112, 350, 16319, 11912, 16417,
3942 1093, -1205, 1180, -1205, -1205, 11792, 11792, -1205, 1412, -1205,
3943 8552, 1120, -1205, 1112, -1205, 1112, -1205, 1820, -1205, 1112,
3944 -1205, -1205, -1205, -1205, 808, -1205, 2117, -1205, -1205, 1148,
3945 14900, 2117, -1205, -1205, 1244, 924, 1893, -1205, -1205, 14973,
3946 -1205, 670, -1205, 14973, -1205, 5437, 95, -1205, -1205, -1205,
3947 -1205, -1205, -1205, 360, 432, 112, 406, 442, -1205, -1205,
3948 9008, -1205, -1205, -1205, 865, -1205, -1205, 142, -1205, 1109,
3949 1109, 1149, 1109, -1205, 1036, -1205, -1205, 1150, 1151, -1205,
3950 924, 1153, 1155, -1205, 16515, 1150, 1158, 112, 1158, -1205,
3951 -1205, 451, 177, 1412, -1205, -1205, -1205, -1205, 1112, -1205,
3952 -1205, -1205, 1893, -1205, 1893, -1205, 2117, -1205, 1893, -1205,
3953 1159, 1166, -1205, 14973, -1205, -1205, -1205, -1205, -1205, 1109,
3954 1150, 1150, 1160, 1150, -1205, -1205, -1205, 1893, -1205, -1205,
3961static const yytype_int16 yydefact[] =
3963 2, 0, 0, 47, 406, 407, 408, 0, 399, 400,
3964 401, 404, 26, 26, 26, 393, 394, 395, 396, 418,
3965 419, 323, 703, 702, 704, 705, 64, 0, 64, 0,
3966 853, 707, 706, 708, 97, 99, 697, 696, 98, 698,
3967 692, 693, 694, 695, 641, 713, 714, 0, 0, 0,
3968 0, 0, 0, 0, 853, 853, 126, 494, 667, 667,
3969 669, 671, 0, 0, 0, 0, 0, 0, 0, 6,
3970 3, 8, 26, 10, 43, 49, 40, 58, 61, 46,
3971 723, 723, 70, 91, 323, 90, 0, 112, 0, 116,
3972 128, 0, 237, 79, 246, 253, 282, 283, 267, 284,
3973 398, 0, 351, 0, 0, 87, 87, 0, 0, 0,
3974 0, 0, 360, 323, 370, 94, 368, 340, 341, 640,
3975 642, 342, 343, 650, 344, 656, 346, 660, 345, 662,
3976 347, 639, 684, 685, 638, 690, 701, 709, 710, 348,
3977 0, 349, 7, 1, 205, 216, 206, 229, 202, 222,
3978 212, 211, 232, 233, 227, 210, 209, 204, 230, 234,
3979 235, 214, 203, 217, 221, 223, 215, 208, 224, 231,
3980 226, 225, 218, 228, 213, 201, 220, 219, 200, 207,
3981 198, 199, 195, 196, 197, 155, 157, 156, 190, 191,
3982 186, 168, 169, 170, 177, 174, 176, 171, 172, 192,
3983 193, 178, 179, 183, 187, 173, 175, 165, 166, 167,
3984 180, 181, 182, 184, 185, 188, 189, 194, 160, 162,
3985 33, 158, 159, 161, 402, 403, 405, 0, 827, 0,
3986 0, 334, 830, 326, 667, 0, 318, 316, 0, 298,
3987 299, 329, 317, 110, 322, 853, 330, 0, 709, 710,
3988 0, 349, 853, 823, 111, 853, 513, 0, 107, 65,
3989 64, 0, 0, 28, 853, 12, 0, 11, 27, 295,
3990 393, 394, 514, 723, 723, 0, 261, 0, 360, 363,
3991 262, 251, 252, 357, 24, 0, 0, 3, 21, 23,
3992 64, 114, 20, 353, 0, 64, 64, 300, 0, 0,
3993 64, 821, 64, 0, 0, 0, 723, 723, 124, 397,
3994 0, 132, 133, 140, 491, 687, 0, 686, 688, 0,
3995 0, 0, 647, 651, 663, 657, 665, 691, 74, 273,
3996 274, 850, 849, 5, 851, 0, 0, 0, 0, 0,
3997 0, 853, 0, 0, 720, 0, 719, 722, 389, 720,
3998 0, 391, 409, 518, 508, 100, 520, 367, 410, 520,
3999 503, 853, 130, 0, 122, 117, 853, 77, 0, 0,
4000 0, 0, 0, 291, 292, 0, 0, 0, 0, 249,
4001 250, 0, 0, 75, 0, 289, 290, 0, 0, 0,
4002 0, 0, 0, 0, 0, 0, 0, 840, 841, 843,
4003 853, 842, 0, 0, 86, 84, 85, 0, 0, 0,
4004 0, 0, 377, 3, 4, 0, 430, 429, 0, 0,
4005 709, 710, 349, 150, 151, 0, 0, 153, 853, 0,
4006 709, 710, 349, 387, 225, 218, 228, 213, 195, 196,
4007 197, 155, 156, 819, 81, 80, 818, 817, 0, 816,
4008 109, 64, 108, 843, 842, 0, 369, 643, 853, 853,
4009 163, 826, 357, 333, 829, 325, 0, 853, 0, 0,
4010 319, 328, 843, 853, 842, 853, 853, 0, 320, 786,
4011 64, 312, 853, 64, 853, 311, 324, 0, 64, 366,
4012 73, 30, 32, 31, 0, 853, 296, 0, 0, 0,
4013 0, 843, 842, 853, 0, 64, 355, 14, 0, 113,
4014 0, 358, 848, 847, 301, 848, 303, 359, 822, 0,
4015 139, 691, 127, 119, 722, 0, 843, 853, 842, 492,
4016 673, 689, 676, 674, 668, 644, 645, 670, 646, 672,
4017 648, 0, 0, 0, 0, 0, 852, 9, 0, 34,
4018 35, 36, 37, 297, 0, 71, 72, 792, 789, 788,
4019 787, 790, 798, 799, 786, 0, 805, 800, 809, 808,
4020 804, 813, 801, 764, 727, 813, 735, 762, 744, 813,
4021 760, 765, 763, 64, 736, 791, 793, 794, 796, 813,
4022 726, 803, 443, 442, 807, 813, 812, 734, 0, 0,
4023 0, 0, 0, 491, 0, 518, 101, 491, 0, 0,
4024 0, 64, 0, 118, 131, 0, 531, 259, 266, 268,
4025 269, 270, 277, 278, 271, 272, 247, 248, 275, 276,
4026 531, 64, 263, 264, 265, 254, 255, 256, 257, 258,
4027 293, 294, 831, 833, 832, 834, 323, 511, 64, 853,
4028 831, 833, 832, 834, 323, 512, 853, 0, 421, 0,
4029 420, 0, 0, 0, 0, 0, 375, 357, 843, 853,
4030 842, 380, 385, 150, 151, 152, 715, 383, 717, 843,
4031 853, 842, 0, 0, 838, 839, 82, 64, 362, 831,
4032 832, 507, 323, 0, 0, 0, 853, 0, 0, 825,
4033 331, 327, 332, 853, 831, 832, 64, 831, 832, 0,
4034 0, 824, 306, 313, 308, 315, 844, 365, 29, 0,
4035 279, 13, 0, 0, 356, 0, 853, 0, 25, 115,
4036 22, 354, 64, 0, 125, 835, 138, 64, 831, 832,
4037 493, 677, 0, 649, 0, 653, 0, 659, 655, 0,
4038 0, 661, 260, 0, 38, 0, 441, 433, 435, 64,
4039 438, 431, 814, 733, 815, 730, 814, 732, 814, 756,
4040 747, 721, 0, 0, 814, 761, 725, 598, 802, 806,
4041 814, 758, 811, 810, 64, 59, 62, 286, 280, 0,
4042 724, 60, 281, 0, 492, 516, 0, 492, 416, 417,
4043 517, 502, 334, 92, 93, 41, 336, 0, 45, 335,
4044 129, 123, 0, 0, 69, 48, 67, 0, 304, 329,
4045 236, 42, 0, 349, 529, 529, 0, 853, 853, 518,
4046 510, 104, 0, 515, 313, 853, 853, 310, 509, 102,
4047 309, 853, 352, 853, 422, 853, 424, 88, 423, 373,
4048 374, 413, 0, 0, 531, 0, 0, 835, 356, 64,
4049 831, 832, 0, 0, 0, 0, 150, 151, 154, 64,
4050 0, 64, 0, 361, 504, 95, 50, 304, 238, 57,
4051 245, 164, 0, 828, 321, 853, 853, 515, 853, 853,
4052 64, 853, 64, 64, 56, 244, 302, 120, 515, 26,
4053 678, 675, 682, 683, 652, 654, 664, 658, 666, 39,
4054 64, 440, 0, 795, 0, 729, 728, 803, 813, 746,
4055 745, 813, 813, 445, 743, 813, 797, 813, 794, 813,
4056 0, 853, 853, 390, 392, 493, 96, 493, 339, 0,
4057 853, 121, 357, 853, 853, 853, 843, 853, 842, 530,
4058 530, 0, 0, 0, 0, 105, 845, 853, 0, 0,
4059 103, 411, 853, 18, 630, 415, 414, 0, 0, 0,
4060 425, 427, 0, 89, 0, 522, 0, 378, 529, 0,
4061 379, 515, 0, 0, 0, 0, 515, 388, 820, 83,
4062 505, 506, 0, 0, 853, 0, 0, 307, 314, 364,
4063 0, 720, 0, 432, 434, 436, 439, 731, 814, 757,
4064 814, 754, 814, 750, 814, 752, 759, 66, 288, 0,
4065 0, 26, 26, 334, 337, 0, 0, 0, 0, 831,
4066 832, 64, 831, 832, 0, 0, 285, 54, 242, 55,
4067 243, 106, 0, 52, 240, 53, 241, 631, 632, 853,
4068 633, 853, 15, 428, 0, 371, 372, 523, 0, 0,
4069 530, 376, 381, 0, 716, 384, 0, 720, 853, 495,
4070 784, 853, 741, 782, 853, 780, 785, 783, 498, 742,
4071 853, 853, 740, 0, 0, 0, 813, 813, 813, 813,
4072 63, 287, 853, 853, 338, 44, 68, 305, 515, 622,
4073 628, 594, 0, 0, 0, 530, 64, 530, 582, 667,
4074 0, 621, 78, 539, 545, 547, 550, 543, 542, 578,
4075 544, 587, 590, 593, 599, 600, 589, 553, 608, 601,
4076 554, 609, 610, 611, 612, 613, 614, 615, 616, 618,
4077 617, 619, 620, 597, 76, 51, 239, 0, 0, 635,
4078 412, 0, 19, 637, 0, 0, 0, 524, 853, 0,
4079 0, 386, 64, 0, 739, 451, 0, 0, 738, 0,
4080 776, 767, 0, 781, 0, 778, 681, 680, 679, 437,
4081 755, 751, 814, 748, 753, 483, 0, 481, 480, 0,
4082 606, 607, 151, 626, 0, 570, 64, 571, 575, 64,
4083 0, 565, 0, 853, 568, 581, 0, 623, 0, 624,
4084 0, 540, 548, 0, 588, 592, 604, 605, 0, 530,
4085 530, 0, 0, 596, 0, 634, 0, 709, 710, 349,
4086 0, 3, 16, 853, 525, 527, 528, 526, 0, 536,
4087 0, 485, 0, 450, 500, 0, 496, 853, 766, 853,
4088 853, 853, 853, 853, 813, 853, 448, 853, 456, 478,
4089 459, 853, 475, 484, 479, 64, 794, 853, 447, 853,
4090 455, 519, 521, 64, 563, 585, 573, 572, 564, 576,
4091 846, 566, 595, 64, 546, 541, 578, 0, 579, 583,
4092 667, 591, 586, 602, 603, 627, 552, 562, 551, 558,
4093 64, 64, 64, 64, 64, 64, 357, 843, 853, 842,
4094 853, 636, 853, 426, 532, 0, 0, 382, 0, 497,
4095 0, 0, 737, 0, 777, 0, 774, 0, 770, 0,
4096 772, 779, 749, 454, 0, 453, 0, 471, 462, 0,
4097 0, 457, 476, 477, 0, 446, 0, 473, 569, 0,
4098 577, 0, 625, 0, 549, 0, 0, 555, 556, 557,
4099 559, 560, 561, 835, 356, 64, 831, 832, 629, 17,
4100 0, 537, 538, 489, 64, 487, 490, 0, 499, 853,
4101 853, 853, 853, 449, 853, 461, 460, 853, 853, 482,
4102 458, 853, 853, 357, 843, 853, 574, 64, 579, 580,
4103 584, 515, 853, 0, 486, 501, 775, 771, 0, 768,
4104 773, 452, 0, 472, 0, 469, 0, 465, 0, 467,
4105 835, 356, 474, 0, 567, 534, 535, 533, 488, 853,
4106 853, 853, 853, 853, 769, 470, 466, 0, 463, 468,
4111static const yytype_int16 yypgoto[] =
4113 -1205, -99, 1066, -1205, -1205, -1205, 990, -1205, 799, -46,
4114 -1205, -1205, -570, -1205, 182, 835, -1205, 20, -1205, -1205,
4115 11, -1205, -1205, -424, -1205, 6, -544, -24, -619, 37,
4116 -1205, -1205, 472, 2994, -1205, 3515, -1205, -14, -1205, -1205,
4117 1239, -47, -1205, 736, -1205, -102, 1406, 34, 1243, -143,
4118 21, -440, -72, -1205, 7, 3651, -412, 1237, -42, 1,
4119 -1205, -1205, 3, -1205, -1205, 4905, -1205, -1205, -1205, -1205,
4120 -499, 1265, -1205, -7, 869, 453, -1205, 1089, -1205, 107,
4121 63, 674, -338, -1205, 71, -1205, -25, -368, -184, 24,
4122 -364, -1205, -545, -43, -1205, -1205, -1205, -1205, -1205, -1205,
4123 -1205, -1205, -1205, -1205, -1205, -1205, 1388, -1205, -1205, -1205,
4124 -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205, -1205,
4125 -1205, -1205, 404, -1205, 478, 2212, 2587, -397, 386, 137,
4126 -803, -1205, -802, -843, 616, 463, 714, -1205, 122, 42,
4127 -1205, -999, -1205, 192, -1205, -1204, 54, -849, -1205, -1205,
4128 -1205, 306, -1205, -1205, 135, -1205, 8, 270, 110, -271,
4129 -1205, -1205, 761, -1205, -1205, -1205, 527, -1205, -1205, -101,
4130 -1205, -492, -1205, 1056, -1205, -775, -1205, -705, -668, -513,
4131 -1205, 10, -1205, -1205, -936, -418, -1205, -1205, -1205, -1205,
4132 -1205, 129, -1205, -781, -1205, -866, -698, -1068, -460, -1063,
4133 -1083, -1205, 195, -1205, -1205, -913, 203, -1205, -1205, -426,
4134 210, -1205, -1205, -1205, 115, -1205, -1205, 114, 995, 1038,
4135 -1205, 1304, 1277, 1476, -28, -1205, 1667, -1205, 884, -1205,
4136 1696, -1205, -1205, 1933, -1205, 2081, -1205, -1205, -56, -1205,
4137 -1205, -190, -1205, -1205, -1205, -1205, -1205, -1205, 17, -1205,
4138 -1205, -1205, -1205, 16, -49, 4165, 259, 1322, 4288, 3759,
4139 -1205, -1205, 83, -306, 737, 25, -1205, -719, -922, -530,
4140 -1205, 201, -1205, -852, -727, -651, -531, -1205, -1205, -1205,
4141 1087, -454, -1205, -1205, -1205, 367, -207, -1199, -327, -318,
4142 -678, 223, -301, -334, -1205, -706, -1205, -685, -1205, 371,
4143 -1205, -464, -1205, -1205, -1205, -1205, -1205, 61, -421, -374,
4144 -1205, -1205, -96, 1320, 464, 318, 40, -205, -52, -69,
4149static const yytype_int16 yydefgoto[] =
4151 0, 333, 69, 1, 2, 70, 71, 266, 267, 656,
4152 1154, 1312, 657, 1051, 287, 288, 504, 224, 72, 494,
4153 289, 74, 75, 76, 77, 78, 785, 487, 815, 79,
4154 630, 616, 444, 273, 872, 274, 406, 407, 409, 973,
4155 410, 82, 804, 816, 83, 606, 275, 85, 86, 290,
4156 87, 522, 88, 89, 90, 238, 427, 428, 218, 219,
4157 220, 695, 645, 222, 92, 93, 94, 95, 96, 97,
4158 788, 395, 98, 553, 497, 554, 240, 241, 294, 820,
4159 837, 838, 480, 242, 481, 257, 258, 244, 470, 649,
4160 246, 808, 809, 99, 403, 510, 855, 665, 862, 1160,
4161 865, 863, 682, 599, 602, 100, 277, 102, 103, 104,
4162 105, 106, 107, 108, 109, 110, 111, 356, 359, 962,
4163 1151, 852, 967, 968, 800, 278, 279, 659, 847, 969,
4164 970, 419, 757, 758, 759, 760, 571, 772, 773, 1256,
4165 1257, 1164, 1258, 1385, 1342, 1260, 1261, 1337, 1262, 1263,
4166 1264, 1186, 1187, 1265, 1242, 1374, 1375, 529, 740, 899,
4167 314, 1166, 114, 1069, 1246, 1320, 360, 115, 116, 357,
4168 603, 604, 607, 608, 976, 853, 1237, 949, 1034, 824,
4169 1370, 856, 1427, 1238, 1112, 1275, 1114, 1287, 1115, 1221,
4170 1222, 1116, 1351, 1196, 1197, 1198, 1118, 1119, 1288, 1200,
4171 1120, 1121, 1122, 1123, 1124, 572, 1126, 1127, 1128, 1129,
4172 1130, 1131, 1132, 1133, 963, 1049, 1148, 1152, 117, 118,
4173 119, 120, 121, 122, 323, 123, 124, 541, 744, 125,
4174 126, 543, 127, 128, 129, 130, 542, 544, 316, 320,
4175 321, 534, 742, 741, 900, 1002, 1178, 901, 131, 132,
4176 317, 133, 134, 135, 136, 248, 249, 139, 250, 251,
4177 864, 677, 345, 346, 347, 348, 349, 574, 575, 763,
4178 576, 919, 1072, 1248, 578, 579, 769, 580, 581, 582,
4179 583, 1170, 1075, 1076, 1077, 1078, 584, 585, 586, 928,
4180 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
4181 764, 770, 447, 448, 449, 683, 299, 484, 253, 725,
4182 647, 686, 681, 402, 489, 833, 1204, 514, 660, 414,
4189static const yytype_int16 yytable[] =
4191 142, 335, 261, 319, 264, 401, 286, 293, 412, 318,
4192 221, 661, 73, 309, 675, 456, 315, 365, 334, 454,
4193 328, 236, 236, 268, 223, 646, 587, 654, 263, 789,
4194 221, 587, 793, 225, 226, 324, 325, 326, 573, 245,
4195 245, 920, 972, 573, 223, 767, 309, 916, 483, 237,
4196 237, 292, 292, 297, 301, 334, 711, 791, 775, 355,
4197 918, 221, 648, 308, 781, 309, 309, 309, 478, 445,
4198 821, 1006, 1168, 291, 876, 879, 252, 252, 295, 1071,
4199 979, 692, 327, 922, 256, 734, 243, 254, 452, 927,
4200 408, 516, 336, 413, 711, 518, 926, -135, 646, 1144,
4201 654, 701, 792, 1244, 846, 702, 351, 765, 894, 701,
4202 1004, 765, 870, 796, 221, 296, 300, 825, 236, 1376,
4203 950, 1125, 1125, 925, 352, 1176, 342, 343, 726, 1276,
4204 537, 539, 1386, 658, 1277, 706, 245, -356, 1302, 1305,
4205 405, 405, 505, 1286, 405, 1071, 237, 354, 702, 1073,
4206 1289, 474, 798, 1210, 726, 568, -711, 397, -141, -712,
4207 491, 530, 476, 658, 350, -356, -356, -711, 1117, 1117,
4208 492, 493, 811, 252, 1210, -720, 143, 777, 466, 746,
4209 -397, 502, -113, 450, 286, 398, 453, 569, 507, 737,
4210 -141, 814, 966, -142, 352, 778, -149, 1245, 344, -142,
4211 750, -141, 854, -129, 1376, -703, -135, 1211, -397, -397,
4212 799, -141, 1386, -149, 528, 1073, 532, 533, 508, 1282,
4213 611, -356, -132, 1239, 792, -832, -135, -135, -585, 292,
4214 -135, 331, 747, 523, -703, 334, -148, 332, 761, 286,
4215 -142, 1179, 265, 259, 471, 1177, 1125, 1071, 1322, 353,
4216 1071, 471, 1071, 751, 485, 255, 1333, 496, 1335, -144,
4217 138, 236, 309, 236, -397, 142, 259, 868, 1397, 814,
4218 814, 513, 513, 1060, 331, 1058, 513, 73, 519, 482,
4219 332, 245, 1035, 1004, 292, 920, 1289, 1399, -132, 237,
4220 1289, 237, 1400, 1117, 711, 985, 726, 488, 490, 351,
4221 478, 1125, -149, 814, 331, -145, 291, 726, 1125, 1125,
4222 332, 138, 138, 283, 666, 312, 1081, 286, 252, 353,
4223 521, 309, 670, 549, 550, 551, 552, 1088, 486, -133,
4224 926, 859, 351, 1037, 1039, 256, 322, 954, 354, 1043,
4225 1045, 978, 869, -140, -146, 701, 73, 701, 312, 702,
4226 1074, 745, -141, 745, 610, 1235, 499, 500, -141, 615,
4227 1400, 334, 292, -148, 663, 664, -139, 421, 431, 431,
4228 431, 613, 941, -146, 405, 405, 405, 405, -143, 555,
4229 556, -142, 1081, 1236, 291, 1411, 1017, -142, 1007, -135,
4230 1009, 1011, 1159, -702, 1013, 662, 1015, -704, 1016, 485,
4231 358, 1071, 292, 1071, 653, 1071, 236, 1071, 1199, 292,
4232 292, 672, 1218, 1063, 462, 782, 1074, 1048, 1343, -144,
4233 1347, 673, -702, 1145, 368, 674, -704, 678, 761, 911,
4234 1285, 1018, 917, 783, 237, -136, 361, 1194, 1125, 1203,
4235 1300, 1303, 920, -149, -712, -147, 405, 362, 916, -149,
4236 587, 693, 694, 523, 765, -145, 587, 236, 653, 886,
4237 698, 1247, 405, -147, -143, 655, 701, 1219, 709, 710,
4238 702, 1220, 485, 366, -137, 245, -831, 653, -142, 236,
4239 59, 471, 309, 471, 1250, 237, 1071, 1252, 496, 138,
4240 392, 393, 394, -147, 926, 718, 727, 221, 459, -133,
4241 1269, 1018, 753, 696, -148, 653, 890, 237, -134, 1210,
4242 -148, 223, 252, 458, -146, 503, -832, -831, 691, 884,
4243 -146, 1251, 687, 1301, 1304, 138, 485, 896, 814, 814,
4244 703, 653, -149, 236, 814, 814, 259, -148, 1413, 1415,
4245 523, -64, 1417, 1419, 138, 577, 1422, 292, 790, -148,
4246 577, 1296, 1298, -140, 905, 1180, 1181, 1183, 1184, 905,
4247 -144, 237, 259, 803, 312, 754, -144, 673, 803, 309,
4248 -139, 1192, 646, 732, 654, 702, -64, 711, 259, 1059,
4249 888, 1435, 1436, 1438, 1439, 761, -147, 761, 966, -832,
4250 851, 1441, -147, -138, 138, -832, -145, 835, 292, 1425,
4251 920, 292, -145, 814, 836, -143, -137, 826, -705, 1031,
4252 848, -143, -707, 843, -144, 845, 1113, 1113, 814, 1272,
4253 889, 831, 138, 312, 832, 460, 1173, 1175, 1384, 839,
4254 701, -144, 786, -136, 807, 786, -706, -705, -145, 807,
4255 459, -707, 1381, 397, 957, 926, 803, 803, 471, 841,
4256 -134, 1388, -135, 840, -145, 260, 1392, 1155, 292, -136,
4257 292, 897, 138, 926, 1021, -706, 1022, 875, 485, 138,
4258 138, 398, 399, 653, -149, 236, 1190, 1191, -143, 485,
4259 803, 292, 832, 587, 653, 994, 236, 467, 1195, 882,
4260 309, 840, 1193, 902, 587, 1070, 881, 530, 221, -134,
4261 1143, 1143, 471, 237, -708, 1215, 777, 884, 513, 830,
4262 373, 374, 223, 832, 237, -137, 904, -699, 906, -143,
4263 871, 907, 908, 1332, 1223, 840, 948, 400, 1101, 955,
4264 468, 1432, 469, -708, 926, -137, -137, 960, -831, -137,
4265 523, 1113, -136, -97, 259, 475, -699, 260, 563, 587,
4266 1377, 1230, 532, 533, 509, 503, 892, 761, 761, -134,
4267 930, 1070, -136, -136, 385, 386, -136, 138, 835, 309,
4268 477, 530, 538, 990, 891, 495, 1273, 255, 567, -134,
4269 -134, 397, 1290, -134, 312, 836, -699, 451, 830, -148,
4270 1293, 1294, 322, 1195, 1079, 1324, 1326, 1328, 1330, 1331,
4271 878, 880, -144, 1195, 1195, 368, 1295, 138, 397, 398,
4272 472, 983, 506, 138, -699, -699, 878, 880, 397, -145,
4273 952, 953, 957, -112, -709, 1143, 532, 533, 958, 959,
4274 445, 517, 331, 917, 895, 832, 398, 501, 332, 511,
4275 964, 1314, 971, -700, 971, 832, 398, 526, 982, 344,
4276 984, 587, -709, -709, 587, 259, -143, 520, 138, -64,
4277 1079, 138, 684, 525, 292, 473, 562, 1266, -97, 1000,
4278 -699, 312, -700, 794, -97, 221, 540, 797, 992, 993,
4279 1143, 995, 996, 545, 1268, 548, 563, 1143, 1143, 1396,
4280 471, 685, 473, 1398, -710, 891, 342, 343, 598, 405,
4281 -98, 405, 527, -718, 935, 803, 803, 937, -709, 601,
4282 -349, 803, 803, 259, 512, 688, 567, 568, 138, 1001,
4283 138, 1053, -710, -710, 605, 1406, 1407, 1409, 1410, 667,
4284 848, 397, 1064, 259, 515, 726, 614, 1027, -349, -349,
4285 546, 138, 671, -700, 712, 397, 485, 714, -357, 569,
4286 1042, 653, 717, 236, 1054, 397, 1083, 965, 966, 398,
4287 668, 1050, 1079, 721, 786, 1079, 292, 1079, 397, 729,
4288 1365, -700, -700, 398, 679, 1434, -357, -357, -710, 713,
4289 803, 237, 292, 398, 946, 676, 807, 1066, 715, 895,
4290 716, 921, 312, 397, -349, 803, 398, 1307, 1216, 1217,
4291 917, 292, 722, 929, 723, 405, -129, 832, 731, 587,
4292 1315, 1316, 733, 1158, -444, 669, 762, 1143, 1266, 259,
4293 1403, 398, 1394, 1266, 887, -98, 766, -700, 779, 680,
4294 768, -98, -357, 1268, 795, 1268, 1095, 1096, 774, 947,
4295 1268, 1092, 1093, 524, 524, 1268, 780, 771, 1149, 812,
4296 1153, 834, 1308, 1206, 844, 898, 909, 851, 292, 1038,
4297 1040, 1209, 854, 912, 923, 1044, 1046, 1165, 914, 931,
4298 1165, 312, 932, 1171, 936, 810, -329, 680, 939, 1171,
4299 1171, 944, 832, 1202, -835, 36, 37, 801, 39, 940,
4300 530, 1188, 1188, 943, 951, 45, 46, 956, 1266, 1038,
4301 1040, 961, 1044, 1046, 309, 530, 942, 966, 1232, 1233,
4302 998, 1268, 778, 1268, 1240, 1268, 1079, 1268, 1079, 1008,
4303 1079, 1010, 1079, 1012, 138, 530, 1207, -835, 36, 37,
4304 1309, 39, 1311, 915, 1014, 842, 1268, 915, 1241, -333,
4305 1271, 849, 850, 535, 298, 532, 533, 530, 697, 1146,
4306 292, 873, 530, 292, 292, -835, -835, 971, 535, 292,
4307 532, 533, 508, 1282, 557, 1041, 558, 559, 560, 561,
4308 562, 1084, 832, 1146, 1085, 832, 1208, 981, 531, 334,
4309 532, 533, -331, 530, 1310, 292, 1147, 986, 292, 1150,
4310 563, 1163, 1185, 1205, 1283, 832, 1281, 1167, 1169, 1321,
4311 535, 1079, 532, 533, 564, 536, 1172, 532, 533, -835,
4312 368, -835, 1174, 1280, 565, -831, 40, 41, 42, 43,
4313 567, 568, 1182, 913, 1080, 309, 138, 381, 382, 292,
4314 1212, 1213, 971, 1086, 1356, 1087, 743, 1089, 532, 533,
4315 1099, 1241, 138, 530, 292, 405, 1165, 1210, 1171, 1171,
4316 1171, 1171, 1171, 569, 1165, 1214, 1165, 1279, 1306, 1318,
4317 1338, 138, 368, 1319, 1323, 1325, 1338, 933, 1338, 1327,
4318 1329, 934, 1378, 389, 390, 391, 392, 393, 394, 832,
4319 832, 832, 1334, 1336, 138, 138, 1341, 1389, 1346, 1349,
4320 1080, 1350, 1353, 1142, 1142, 1355, 748, 309, 532, 533,
4321 1393, 1371, 1372, 728, 1408, 1412, 1414, 485, 1416, 964,
4322 1418, 1153, 653, 1423, 236, 1437, -831, 461, 138, 292,
4323 463, 464, 465, -832, 1402, 547, 390, 391, 392, 393,
4324 394, 977, 498, 1231, 980, 988, 337, 338, 339, 340,
4325 341, 832, 237, 730, 989, 411, 805, 433, 987, 1098,
4326 1404, 416, 405, 405, 997, 557, 999, 558, 559, 560,
4327 561, 1142, 1142, 396, 719, 1142, 874, 1052, 1062, 292,
4328 1313, 910, 1082, 1202, 1003, 1005, 1383, 1259, 1171, 1171,
4329 1171, 1171, 1142, 1165, 1019, 1020, 1338, 1338, 1340, 101,
4330 1338, 1338, 1249, 1025, 1338, 1391, 1026, 1253, 1028, 1189,
4331 1339, 971, 991, 247, 247, 1254, 1228, 84, 1267, 1291,
4332 138, 1428, 1426, 138, 138, 609, 1354, 1292, 1142, 138,
4333 1284, 84, 84, 457, 1201, 1368, 1369, 749, 1171, 1338,
4334 1338, 1338, 1338, 446, 1162, 455, 600, 1424, 1082, 1338,
4335 101, 101, 0, 0, 310, 138, 0, 1055, 138, 0,
4336 1056, 0, 0, 1142, 0, 247, 1142, 1061, 84, 84,
4337 0, 0, 0, 1065, 1373, 368, 558, 559, 560, 561,
4338 1142, 0, 1142, 84, 0, 1142, 1142, 310, 0, 0,
4339 1142, 1142, 381, 382, 0, 0, 0, 0, 0, 138,
4340 0, 247, 247, 0, 0, 247, 418, 429, 429, 0,
4341 247, 0, 0, 557, 138, 558, 559, 560, 561, 84,
4342 84, 0, 0, 84, 1274, 0, 0, 1278, 84, 0,
4343 0, 0, 0, 0, 0, 0, 0, 431, 0, 390,
4344 391, 392, 393, 394, 1243, 0, 0, 1297, 1243, 0,
4345 1082, 1161, 0, 1082, 0, 1082, 1142, 0, 1379, 0,
4346 1380, 0, 1382, 755, 0, 0, 1270, 699, 700, 1387,
4347 0, 0, 0, 0, 0, 0, 298, 0, 0, 1395,
4348 557, 0, 558, 559, 560, 561, 562, 0, 557, 138,
4349 558, 559, 560, 561, 0, 0, 0, 0, 0, 0,
4350 0, 0, 0, 0, 0, 0, 563, 0, 0, 431,
4351 0, 700, 0, 0, 298, 0, 0, 0, 1142, 0,
4352 564, 0, 1142, 0, 1142, 0, 0, 0, 101, 0,
4353 565, 1360, 1361, 1362, 0, 566, 567, 568, 755, 138,
4354 0, 1429, 0, 756, 0, 0, 84, 1430, 0, 1431,
4355 0, 1433, 0, 247, 0, 247, 0, 0, 247, 247,
4356 0, 0, 0, 0, 101, 0, 0, 0, 0, 569,
4357 1440, 84, 570, 84, 0, 0, 84, 84, 0, 0,
4358 0, 0, 84, 101, 0, 1067, 0, 0, 0, 776,
4359 0, 0, 1142, 1401, 1299, 0, 0, 0, 0, 0,
4360 0, 84, 368, 310, 1082, 0, 1082, 0, 1082, 806,
4361 1082, 0, 0, 0, 819, 1243, 0, 1270, 0, 381,
4362 382, 0, 1270, 0, 0, 1068, 0, 1270, 1317, 0,
4363 0, 0, 0, 101, 0, 247, 247, 247, 247, 0,
4364 247, 247, 0, 0, 0, 0, 0, 1348, 0, 0,
4365 0, 84, 0, 84, 84, 84, 84, 1352, 84, 84,
4366 0, 101, 310, 387, 388, 389, 390, 391, 392, 393,
4367 394, 0, 0, 0, 1357, 1358, 1359, 0, 0, 84,
4368 0, 0, 0, 0, 0, 0, 0, 0, 0, 1082,
4369 0, 1068, 0, 1270, 0, 1270, 883, 1270, 247, 1270,
4370 0, 101, 0, 0, 0, 1111, 1111, 247, 101, 101,
4371 0, 0, 700, 0, 298, 0, 84, 0, 1270, 84,
4372 0, 0, 0, 247, 0, 84, 84, 84, 0, 0,
4373 0, 0, 0, 0, 22, 23, 24, 25, 0, 0,
4374 0, 84, 0, 0, 0, 0, 0, 0, 0, 247,
4375 31, 32, 33, 0, 0, 0, 0, 0, 0, 0,
4376 40, 41, 42, 43, 44, 1405, 0, 84, 0, 0,
4377 0, 247, 924, 1111, 1111, 0, 0, 1111, 0, 0,
4378 0, 0, 557, 0, 558, 559, 560, 561, 562, 84,
4379 0, 0, 0, 1068, 1111, 0, 1068, 0, 1068, 0,
4380 0, 938, 0, 0, 0, 0, 101, 0, 563, 1255,
4381 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4382 0, 0, 564, 310, 84, 247, 0, 0, 0, 0,
4383 1111, 0, 565, 700, 0, 0, 0, 566, 567, 568,
4384 0, 0, 0, 84, 0, 0, 101, 0, 304, 0,
4385 0, 975, 101, 0, 0, 557, 0, 558, 559, 560,
4386 561, 562, 0, 0, 84, 1111, 0, 0, 1111, 0,
4387 84, 569, 0, 0, 570, 0, 0, 0, 0, 0,
4388 0, 563, 1111, 0, 1111, 0, 0, 1111, 1111, 0,
4389 0, 0, 1111, 1111, 0, 0, 247, 101, 0, 247,
4390 101, 0, 0, 0, 0, 565, 0, 0, 247, 0,
4391 310, 567, 568, 822, 84, 84, 0, 84, 84, 0,
4392 0, 0, 0, 0, 0, 0, 84, 0, 0, 0,
4393 0, 84, 0, 0, 0, 0, 0, 0, 1024, 1134,
4394 1134, 0, 0, 0, 569, 0, 0, 1068, 0, 1068,
4395 0, 1068, 0, 1068, 0, 0, 0, 101, 1111, 101,
4396 1255, 1047, 0, 0, 0, 1255, 0, 247, 0, 0,
4397 1255, 0, 0, 1057, 0, 84, 0, 84, 247, 0,
4398 101, 247, 1135, 1135, 0, 84, 0, 0, 0, 0,
4399 0, 822, 822, 0, 0, 0, 84, 298, 84, 84,
4400 0, 0, 0, 0, 0, 0, 0, 1134, 1134, 84,
4401 84, 1134, 0, 0, 0, 0, 0, 247, 0, 0,
4402 1111, 0, 1094, 0, 1111, 822, 1111, 0, 1134, 0,
4403 0, 310, 1068, 0, 0, 84, 1255, 0, 1255, 0,
4404 1255, 0, 1255, 84, 0, 0, 0, 0, 0, 0,
4405 1135, 1135, 0, 0, 1135, 0, 0, 1157, 0, 0,
4406 0, 1255, 0, 0, 1134, 0, 0, 0, 0, 0,
4407 0, 1135, 0, 0, 0, 0, 0, 0, 0, 557,
4408 0, 558, 559, 560, 561, 562, 0, 0, 0, 0,
4409 0, 0, 0, 0, 1111, 0, 0, 0, 0, 1134,
4410 0, 0, 1134, 0, 0, 563, 0, 1135, 0, 0,
4411 310, 0, 0, 0, 0, 0, 1134, 0, 1134, 0,
4412 0, 1134, 1134, 112, 0, 0, 1134, 1134, 0, 565,
4413 0, 0, 0, 0, 566, 567, 568, 112, 112, 0,
4414 0, 0, 1135, 0, 0, 1135, 0, 0, 0, 0,
4415 0, 0, 0, 0, 0, 1234, 0, 0, 0, 1135,
4416 247, 1135, 247, 101, 1135, 1135, 0, 0, 569, 1135,
4417 1135, 570, 0, 0, 112, 112, 0, 0, 84, 0,
4418 84, 84, 0, 0, 0, 0, 0, 0, 0, 112,
4419 0, 0, 1134, 0, 0, 0, 0, 0, 0, 0,
4420 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4422 0, 1136, 1136, 0, 0, 112, 112, 0, 247, 112,
4423 0, 0, 0, 0, 112, 1135, 0, 0, 0, 0,
4424 0, 0, 0, 0, 0, 247, 84, 0, 0, 0,
4425 822, 822, 0, 0, 1134, 0, 822, 822, 1134, 0,
4426 1134, 0, 0, 84, 0, 101, 247, 0, 84, 84,
4427 0, 0, 0, 0, 84, 84, 0, 0, 0, 0,
4428 0, 101, 0, 84, 84, 0, 0, 0, 0, 1136,
4429 1136, 0, 0, 1136, 0, 0, 0, 1135, 0, 84,
4430 101, 1135, 0, 1135, 0, 0, 0, 0, 0, 0,
4431 1136, 0, 0, 0, 0, 0, 0, 0, 84, 0,
4432 0, 0, 0, 101, 101, 822, 0, 0, 1134, 0,
4433 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4434 822, 84, 84, 84, 0, 0, 1136, 0, 0, 0,
4435 0, 0, 112, 0, 0, 0, 0, 101, 84, 0,
4436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4437 0, 1135, 0, 0, 0, 84, 0, 112, 0, 112,
4438 0, 1136, 112, 112, 1136, 0, 0, 0, 112, 0,
4439 0, 0, 0, 0, 0, 0, 0, 0, 1136, 0,
4440 1136, 0, 0, 1136, 1136, 0, 0, 112, 1136, 1136,
4441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4442 1137, 1137, 0, 0, 0, 0, 0, 0, 0, 0,
4443 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4444 0, 0, 0, 0, 0, 1226, 0, 0, 0, 101,
4445 0, 0, 101, 101, 0, 0, 0, 112, 101, 112,
4446 112, 112, 112, 0, 112, 112, 0, 84, 0, 0,
4447 84, 84, 0, 0, 1136, 0, 84, 0, 0, 0,
4448 0, 0, 0, 0, 101, 112, 0, 101, 1137, 1137,
4449 0, 0, 1137, 0, 0, 0, 0, 0, 113, 0,
4450 0, 0, 84, 0, 0, 84, 247, 0, 0, 1137,
4451 0, 0, 113, 113, 0, 0, 0, 0, 0, 0,
4452 0, 0, 112, 0, 84, 112, 0, 0, 101, 0,
4453 0, 112, 112, 112, 0, 0, 1136, 0, 0, 0,
4454 1136, 0, 1136, 101, 0, 1137, 84, 112, 0, 113,
4455 113, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4456 0, 84, 0, 0, 113, 0, 1345, 0, 0, 0,
4457 0, 0, 0, 112, 0, 0, 0, 0, 0, 0,
4458 1137, 0, 0, 1137, 0, 0, 0, 0, 0, 0,
4459 0, 0, 0, 0, 0, 112, 0, 1137, 0, 1137,
4460 113, 113, 1137, 1137, 113, 0, 247, 1137, 1137, 113,
4461 1136, 1138, 1138, 247, 247, 0, 0, 0, 101, 0,
4462 0, 0, 0, 0, 84, 0, 0, 0, 0, 0,
4463 112, 84, 84, 0, 0, 0, 84, 0, 1390, 0,
4464 1139, 1139, 0, 0, 0, 0, 0, 0, 0, 112,
4465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4466 0, 0, 0, 0, 0, 0, 0, 0, 101, 0,
4467 112, 0, 0, 1137, 0, 0, 112, 0, 0, 1138,
4468 1138, 0, 0, 1138, 0, 0, 84, 0, 0, 0,
4469 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4470 1138, 0, 0, 0, 0, 0, 0, 0, 1139, 1139,
4471 0, 0, 1139, 0, 0, 0, 0, 0, 0, 0,
4472 112, 112, 0, 112, 112, 0, 0, 113, 0, 1139,
4473 0, 0, 112, 0, 0, 1137, 1138, 112, 0, 1137,
4474 0, 1137, 0, 0, 0, 0, 0, 0, 0, 0,
4475 0, 0, 113, 0, 113, 0, 0, 113, 113, 0,
4476 0, 0, 0, 113, 0, 1139, 0, 0, 0, 0,
4477 0, 1138, 0, 0, 1138, 0, 0, 0, 0, 0,
4478 0, 112, 113, 112, 0, 0, 0, 0, 1138, 0,
4479 1138, 112, 0, 1138, 1138, 0, 0, 0, 1138, 1138,
4480 1139, 0, 112, 1139, 112, 112, 0, 0, 0, 1137,
4481 0, 0, 0, 0, 0, 112, 112, 1139, 0, 1139,
4482 0, 0, 1139, 1139, 0, 0, 0, 1139, 1139, 0,
4483 0, 0, 113, 0, 113, 113, 113, 113, 0, 113,
4484 113, 112, 0, 0, 0, 0, 0, 0, 0, 112,
4485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4486 113, 0, 0, 0, 1138, 0, 0, 0, 0, 0,
4487 0, 0, 0, 0, 0, 0, 0, 1140, 1140, 0,
4488 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4489 0, 0, 0, 1139, 0, 0, 0, 113, 0, 0,
4490 113, 0, 0, 0, 0, 80, 113, 113, 113, 0,
4491 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,
4492 80, 0, 113, 0, 0, 0, 1138, 0, 0, 0,
4493 1138, 0, 1138, 0, 0, 0, 0, 0, 0, 0,
4494 0, 0, 0, 0, 0, 1140, 1140, 0, 113, 1140,
4495 0, 0, 0, 0, 0, 1139, 80, 80, 0, 1139,
4496 306, 1139, 0, 0, 0, 0, 1140, 0, 0, 0,
4497 113, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4498 0, 0, 0, 0, 112, 0, 112, 112, 0, 0,
4499 0, 0, 0, 306, 0, 0, 0, 0, 0, 0,
4500 1138, 0, 1140, 0, 0, 113, 0, 0, 0, 0,
4501 0, 0, 306, 306, 306, 0, 80, 0, 0, 0,
4502 0, 0, 0, 0, 113, 1141, 1141, 0, 0, 1139,
4503 0, 0, 0, 0, 0, 0, 0, 1140, 0, 0,
4504 1140, 0, 0, 0, 0, 113, 0, 0, 0, 0,
4505 0, 113, 112, 0, 1140, 0, 1140, 0, 0, 1140,
4506 1140, 0, 0, 0, 1140, 1140, 0, 0, 0, 112,
4507 0, 0, 0, 0, 112, 112, 0, 0, 0, 0,
4508 112, 112, 0, 0, 0, 0, 0, 0, 0, 112,
4509 112, 0, 0, 1141, 1141, 113, 113, 1141, 113, 113,
4510 0, 0, 0, 0, 0, 112, 0, 113, 0, 0,
4511 0, 0, 113, 0, 1141, 0, 0, 0, 0, 0,
4512 0, 0, 0, 0, 112, 0, 0, 0, 0, 0,
4513 1140, 0, 0, 0, 80, 0, 0, 0, 0, 0,
4514 0, 0, 0, 0, 0, 0, 0, 112, 112, 112,
4515 1141, 0, 0, 0, 0, 0, 113, 0, 113, 80,
4516 0, 80, 0, 0, 112, 0, 113, 0, 0, 0,
4517 80, 0, 0, 0, 0, 0, 0, 113, 0, 113,
4518 113, 112, 0, 0, 0, 1141, 0, 0, 1141, 80,
4519 113, 113, 1140, 0, 0, 0, 1140, 0, 1140, 0,
4520 0, 0, 1141, 0, 1141, 0, 0, 1141, 1141, 306,
4521 0, 0, 1141, 1141, 0, 0, 113, 0, 0, 0,
4522 0, -853, 0, 0, 113, 0, 0, 0, 0, -853,
4523 -853, -853, 0, 0, -853, -853, -853, 0, -853, 80,
4524 0, 0, 0, 0, 0, 0, -853, -853, -853, 0,
4525 0, 0, 0, 0, 0, 0, 0, 0, -853, -853,
4526 0, -853, -853, -853, -853, -853, 1140, 80, 306, 0,
4527 0, 0, 0, 112, 0, 0, 112, 112, 1141, 0,
4528 0, 0, 112, 0, 0, 0, 0, 0, 0, -853,
4529 -853, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4530 0, 0, 0, 0, 80, 0, 0, 80, 112, 0,
4531 0, 112, 0, 0, 80, 80, 0, 0, -853, -853,
4532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4533 112, 0, 0, 368, -854, -854, -854, -854, 373, 374,
4534 1141, -853, -854, -854, 1141, 0, 1141, 0, 0, 0,
4535 381, 382, 112, 0, 0, 80, 0, 0, 0, 113,
4536 0, 113, 113, 0, 0, 0, 0, 112, 0, 0,
4537 0, 0, -853, -853, 0, -853, 0, 80, 255, -853,
4538 0, -853, 0, 0, 0, 0, 0, 0, 0, 0,
4539 0, 0, 385, 386, 387, 388, 389, 390, 391, 392,
4540 393, 394, 0, 0, 0, 0, 0, 0, 0, 0,
4541 0, 0, 80, 0, 1141, 0, 0, 0, 0, 0,
4542 0, 0, 0, 0, 0, 0, 81, 113, 0, 306,
4543 112, 80, 0, 0, 0, 0, 0, 112, 112, 0,
4544 81, 81, 112, 0, 113, 0, 0, 0, 0, 113,
4545 113, 0, 80, 0, 0, 113, 113, 0, 80, 0,
4546 0, 0, 0, 0, 113, 113, 0, 0, 0, 0,
4547 0, 0, 0, 0, 0, 0, 0, 81, 81, 0,
4548 113, 307, 0, 0, 0, 0, 0, 0, 0, 0,
4549 367, 0, 112, 0, 0, 0, 0, 0, 0, 113,
4550 0, 0, 0, 80, 0, 0, 80, 0, 0, 0,
4551 0, 0, 0, 0, 307, 0, 306, 0, 0, 80,
4552 0, 0, 113, 113, 113, 0, 0, 0, 0, 0,
4553 0, 0, 0, 307, 307, 307, 0, 81, 0, 113,
4554 0, 0, 0, 368, 369, 370, 371, 372, 373, 374,
4555 375, 376, 377, 378, 379, 380, 113, 0, 0, 0,
4556 381, 382, 91, 80, 0, 80, 383, 0, 0, 0,
4557 0, 0, 0, 80, 0, 0, 0, 0, 0, 0,
4558 0, 0, 0, 0, 80, 0, 80, 0, 0, 0,
4559 0, 0, 0, 0, 0, 0, 0, 80, 80, 0,
4560 384, 0, 385, 386, 387, 388, 389, 390, 391, 392,
4561 393, 394, 0, 91, 91, 0, 0, 0, 0, 0,
4562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4563 0, 80, 0, 0, 0, 0, 0, 306, 0, 0,
4564 0, 0, 0, 0, 0, 0, 0, 0, 113, 0,
4565 0, 113, 113, 0, 0, 81, 0, 113, 0, 0,
4566 0, 0, 0, 0, 0, 0, 0, 0, 0, 417,
4567 141, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4568 81, 0, 81, 113, 0, 0, 113, 0, 0, 0,
4569 0, 81, 0, 0, 0, 0, 0, 0, 0, 0,
4570 0, 0, 0, 0, 0, 113, 0, 0, 0, 0,
4571 81, 0, 0, 0, 0, 0, 306, 0, 0, 0,
4572 0, 141, 141, 0, 0, 313, 0, 113, 0, 0,
4573 307, 0, 0, 0, 368, 369, 370, 371, 372, 373,
4574 374, 375, 113, 377, 378, 0, 0, 0, 0, 0,
4575 0, 381, 382, 0, 0, 0, 0, 0, 313, 0,
4576 81, 0, 0, 0, 0, 0, 0, 0, 0, 80,
4577 0, 0, 0, 0, 0, 0, 0, 422, 432, 432,
4578 0, 0, 0, 0, 0, 0, 0, 0, 81, 307,
4579 0, 91, 0, 385, 386, 387, 388, 389, 390, 391,
4580 392, 393, 394, 0, 0, 113, 0, 0, 0, 0,
4581 0, 0, 113, 113, 0, 0, 0, 113, 0, 0,
4582 0, 0, 0, 0, 0, 81, 0, 91, 81, 0,
4583 0, 0, 0, 0, 0, 81, 81, 0, 0, 0,
4584 0, 0, 0, 0, 0, 0, 91, 0, 0, 0,
4585 0, 80, 0, 0, 0, 0, 80, 80, 0, 0,
4586 0, 0, 80, 80, 0, 0, 0, 113, 0, 0,
4587 0, 80, 0, 0, 0, 0, 81, 0, 0, 0,
4588 0, 0, 0, 0, 0, 0, 0, 80, 0, 0,
4589 0, 0, 0, 0, 0, 0, 91, 0, 81, 141,
4590 0, 0, 0, 0, 0, 0, 80, 0, 0, 0,
4591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4592 0, 0, 0, 0, 91, 0, 0, 0, 0, 80,
4593 80, 80, 0, 81, 0, 141, 0, 0, 0, 0,
4594 0, 0, 0, 0, 0, 0, 80, 0, 0, 0,
4595 307, 0, 81, 0, 141, 0, 689, 651, 0, 0,
4596 690, 0, 0, 80, 91, 0, 0, 0, 0, 0,
4597 0, 91, 91, 81, 313, 0, 0, 0, 0, 81,
4598 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
4599 0, 197, 198, 0, 0, 0, 0, 199, 200, 201,
4600 202, 0, 0, 0, 141, 0, 0, 0, 0, 0,
4601 0, 203, 204, 0, 0, 0, 0, 0, 0, 0,
4602 0, 0, 0, 0, 81, 0, 0, 81, 0, 0,
4603 0, 0, 141, 313, 0, 0, 0, 307, 0, 0,
4604 81, 205, 206, 207, 208, 209, 210, 211, 212, 213,
4605 214, 306, 215, 216, 0, 80, 0, 0, 80, 80,
4606 217, 255, 0, 0, 80, 0, 0, 0, 0, 91,
4607 0, 0, 141, 0, 0, 0, 137, 0, 0, 141,
4608 141, 0, 0, 0, 81, 0, 81, 0, 0, 0,
4609 80, 0, 0, 80, 81, 0, 0, 0, 0, 0,
4610 0, 0, 0, 0, 0, 81, 0, 81, 0, 91,
4611 0, 0, 0, 0, 0, 91, 0, 0, 81, 81,
4612 0, 0, 0, 0, 0, 0, 0, 137, 137, 0,
4613 0, 311, 0, 0, 80, 0, 0, 0, 0, 0,
4614 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,
4615 0, 0, 81, 0, 0, 0, 0, 0, 307, 0,
4616 91, 0, 0, 91, 311, 0, 0, 0, 0, 0,
4617 0, 0, 306, 0, 0, 0, 817, 141, 0, 0,
4618 0, 0, 0, 420, 430, 430, 430, 0, 0, 0,
4619 0, 0, 0, 0, 313, 0, 0, 0, 0, 140,
4620 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4621 0, 0, 80, 0, 0, 0, 0, 141, 0, 0,
4622 91, 0, 91, 141, 80, 0, 0, 0, 0, 0,
4623 0, 0, 0, 0, 0, 0, 0, 307, 0, 0,
4624 0, 0, 0, 91, 306, 0, 0, 0, 0, 0,
4625 140, 140, 0, 0, 817, 817, 0, 0, 0, 0,
4626 0, 0, 0, 0, 0, 0, 0, 0, 141, 0,
4627 0, 141, 0, 0, 80, 0, 0, 0, 0, 0,
4628 0, 313, 0, 0, 823, 0, 0, 0, 817, 0,
4629 81, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4630 0, 0, 0, 0, 0, 137, 0, 0, 0, 0,
4631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4632 0, 0, 0, 0, 0, 0, 0, 0, 141, 0,
4633 141, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4634 0, 137, 0, 0, 0, 0, 0, 0, 0, 0,
4635 0, 141, 0, 0, 0, 0, 0, 0, 0, 0,
4636 137, 0, 823, 823, 0, 0, 0, 0, 0, 0,
4637 0, 0, 81, 0, 0, 0, 0, 81, 81, 0,
4638 311, 0, 0, 81, 81, 0, 0, 0, 0, 0,
4639 0, 0, 81, 0, 0, 0, 823, 0, 0, 0,
4640 0, 0, 313, 0, 0, 0, 0, 0, 81, 0,
4641 137, 903, 0, 0, 0, 0, 0, 0, 0, 0,
4642 0, 0, 0, 0, 0, 0, 91, 81, 140, 0,
4643 0, 0, 0, 0, 0, 0, 0, 0, 137, 311,
4644 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4645 81, 81, 81, 0, 945, 0, 0, 0, 0, 0,
4646 0, 0, 0, 0, 140, 0, 0, 81, 0, 0,
4647 0, 0, 0, 0, 0, 0, 0, 0, 137, 0,
4648 0, 313, 0, 140, 81, 137, 137, 0, 368, 369,
4649 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
4650 380, 0, 0, 0, 0, 381, 382, 0, 0, 0,
4651 0, 0, 0, 817, 817, 0, 0, 0, 0, 817,
4652 817, 0, 0, 0, 0, 0, 0, 0, 91, 0,
4653 0, 0, 0, 140, 141, 0, 0, 0, 0, 0,
4654 0, 0, 0, 0, 91, 384, 0, 385, 386, 387,
4655 388, 389, 390, 391, 392, 393, 394, 0, 0, 0,
4656 0, 140, 0, 91, 0, -298, 0, 0, 0, 0,
4657 0, 0, 307, 0, 0, 0, 81, 0, 0, 81,
4658 81, 0, 0, 137, 0, 81, 91, 91, 817, 0,
4659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4660 311, 140, 0, 817, 0, 0, 0, 0, 140, 140,
4661 0, 81, 0, 0, 81, 0, 0, 0, 0, 0,
4662 91, 823, 823, 137, 0, 0, 0, 823, 823, 137,
4663 0, 0, 0, 0, 0, 0, 141, 0, 0, 0,
4664 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4665 0, 0, 141, 0, 0, 81, 0, 0, 0, 0,
4666 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4667 81, 141, 0, 0, 137, 0, 0, 137, 0, 0,
4668 0, 0, 0, 0, 0, 0, 0, 311, 0, 0,
4669 0, 0, 0, 307, 141, 141, 823, 0, 0, 0,
4670 0, 0, 0, 0, 0, 0, 140, 0, 1225, 0,
4671 0, 823, 91, 0, 0, 91, 91, 0, 0, 0,
4672 0, 91, 0, 0, 0, 0, 0, 0, 141, 0,
4673 0, 0, 0, 81, 137, 0, 137, 0, 0, 0,
4674 0, 945, 0, 0, 0, 81, 140, 91, 0, 0,
4675 91, 0, 140, 0, 0, 0, 0, 137, 0, 0,
4676 0, 0, 0, 0, 0, 307, 0, 0, 0, 0,
4677 0, 0, 0, 0, 0, 368, 369, 370, 371, 372,
4678 373, 374, 375, 376, 377, 378, 379, 380, 0, 0,
4679 0, 91, 381, 382, 0, 81, 0, 140, 0, 0,
4680 140, 0, 0, 0, 0, 0, 91, 0, 311, 0,
4681 0, 0, 0, 140, 0, 0, 1229, 0, 0, 0,
4682 141, 0, 0, 141, 141, 0, 0, 0, 0, 141,
4683 239, 239, 384, 0, 385, 386, 387, 388, 389, 390,
4684 391, 392, 393, 394, 0, 0, 0, 0, 0, 0,
4685 0, 0, 0, 0, 0, 141, 0, 140, 141, 140,
4686 0, 0, 276, 280, 281, 282, 0, 0, 0, 239,
4687 239, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4688 140, 91, 329, 330, 0, 0, 0, 311, 0, 0,
4689 0, 140, 140, 22, 23, 24, 25, 0, 0, 141,
4690 0, 0, 0, 0, 0, 0, 0, 0, 0, 31,
4691 32, 33, 1099, 0, 141, 0, 1100, 0, 0, 40,
4692 41, 42, 43, 44, 0, 140, 0, 239, 0, 0,
4693 0, 91, 0, 0, 0, 0, 0, 432, 0, 0,
4694 137, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4695 0, 1102, 1103, 0, 0, 0, 0, 0, 0, 1104,
4696 0, 0, 1105, 0, 1106, 1107, 0, 1108, 0, 0,
4697 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
4698 0, 0, 0, 0, 0, 0, 0, 0, 0, 141,
4699 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4700 1110, 0, 0, 0, 0, 0, 0, 304, 0, 432,
4701 0, 0, 0, 0, 259, 0, 0, 0, 0, 0,
4702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4703 0, 0, 0, 0, 0, 0, 0, 0, 0, 141,
4704 0, 0, 137, 239, 0, 0, 239, 239, 239, 0,
4705 329, 368, 369, 370, 371, 372, 373, 374, 137, 0,
4706 377, 378, 0, 140, 22, 23, 24, 25, 381, 382,
4707 239, 0, 239, 0, 0, 0, 0, 137, 0, 0,
4708 31, 32, 33, 1099, 0, 0, 0, 1100, 0, 1101,
4709 40, 41, 42, 43, 44, 0, 0, 0, 0, 0,
4710 137, 137, 0, 0, 0, 0, 0, 0, 0, 563,
4711 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
4712 0, 0, 1102, 1103, 0, 0, 0, 0, 0, 0,
4713 1104, 0, 0, 1105, 137, 1106, 1107, 0, 1108, 567,
4714 0, 57, 58, 1109, 60, 61, 62, 63, 64, 65,
4715 140, 140, 0, 0, 0, 0, 140, 140, 0, 0,
4716 0, 0, 0, 0, 0, 140, 0, 0, 0, 0,
4717 0, 1110, 0, 0, 0, 0, 0, 0, 304, 0,
4718 0, 140, 0, 617, 618, 619, 620, 621, 0, 0,
4719 622, 623, 624, 625, 626, 627, 628, 629, 0, 631,
4720 140, 0, 632, 633, 634, 635, 636, 637, 638, 639,
4721 640, 641, 0, 0, 0, 239, 0, 0, 0, 0,
4722 0, 0, 1227, 140, 140, 140, 137, 0, 0, 137,
4723 137, 0, 0, 0, 0, 137, 0, 0, 0, 0,
4724 140, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4725 0, 0, 0, 0, 0, 0, 0, 140, 0, 0,
4726 0, 137, 0, 0, 137, 0, 239, 0, 0, 0,
4727 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4728 0, 0, 0, 239, 239, 0, 0, 0, 239, 0,
4729 0, 0, 239, 0, 282, 0, 0, 0, 0, 0,
4730 0, 0, 0, 0, 0, 137, 0, 0, 0, 0,
4731 0, 0, 720, 0, 0, 0, 0, 0, 0, 0,
4732 137, 0, 0, 0, 0, 0, 0, 239, 0, 0,
4733 239, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4734 0, 0, 239, 430, 0, 0, 0, 0, 0, 140,
4735 0, 0, 140, 140, 0, 0, 0, 0, 140, 0,
4736 752, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4737 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4738 22, 23, 24, 25, 140, 0, 0, 140, 0, 0,
4739 0, 0, 0, 0, 0, 137, 31, 32, 33, 1099,
4740 0, 0, 0, 1100, 0, 239, 40, 41, 42, 43,
4741 44, 0, 0, 787, 0, 430, 787, 0, 0, 0,
4742 0, 0, 0, 0, 0, 239, 0, 0, 140, 0,
4743 818, 0, 0, 0, 0, 0, 0, 0, 1102, 1103,
4744 0, 0, 0, 140, 0, 137, 1104, 0, 0, 1105,
4745 0, 1106, 1107, 0, 1108, 0, 0, 57, 58, 59,
4746 60, 61, 62, 63, 64, 65, 0, 0, 0, 0,
4747 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4748 0, 0, 0, 0, 239, 0, 0, 1110, 0, 0,
4749 0, 0, 0, 0, 304, 239, 0, 0, 0, 0,
4750 0, 0, 0, 0, 0, 0, 0, 0, 877, 877,
4751 0, 0, 239, 877, 0, 0, 0, 0, 140, 0,
4752 0, 0, 0, 0, 877, 877, 0, 0, 239, 0,
4753 239, 0, 0, 0, 0, 0, 0, 787, 787, 0,
4754 0, 0, 877, 368, 369, 370, 371, 372, 373, 374,
4755 375, 376, 377, 378, 379, 380, 0, 0, 0, 0,
4756 381, 382, 0, 0, 0, 0, 0, 0, 140, 0,
4757 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4758 0, 0, 0, 0, 0, 0, 0, 0, 239, 0,
4759 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4760 384, 0, 385, 386, 387, 388, 389, 390, 391, 392,
4761 393, 394, 0, 0, 0, 0, 0, 239, 0, 259,
4762 0, 0, 0, -4, 3, 0, 4, 5, 6, 7,
4763 8, -4, -4, -4, 9, 10, 0, -4, -4, 11,
4764 -4, 12, 13, 14, 15, 16, 17, 18, -4, 239,
4765 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
4766 0, 0, 26, 0, 0, 0, 0, 239, 27, 28,
4767 284, 30, 31, 32, 33, 34, 35, 36, 37, 38,
4768 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
4769 0, -4, 0, 0, 0, 0, 0, 877, 0, 47,
4770 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4771 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
4772 0, 0, 51, 0, 0, 52, 53, 54, 55, 0,
4773 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
4774 64, 65, 0, -4, 0, 787, 0, 0, 0, 0,
4775 0, 0, 0, 0, 239, 0, 0, 0, 0, 0,
4776 0, 0, 239, 0, 0, 0, 1036, 877, 877, 0,
4777 66, 67, 68, 877, 877, -4, 0, 239, 0, 0,
4778 0, -4, 0, 546, 0, 0, 0, 0, 0, 239,
4779 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4780 0, 0, 0, 0, 0, 0, 0, 877, 877, 0,
4781 877, 877, 0, 239, 0, 787, 0, 0, 0, 0,
4782 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4783 0, 0, 0, 0, 1090, 1091, 0, 0, 239, 0,
4784 0, 0, 877, 1097, -853, 3, 0, 4, 5, 6,
4785 7, 8, 0, 0, 0, 9, 10, 877, 0, 0,
4786 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
4787 0, 0, 0, 239, 19, 20, 21, 22, 23, 24,
4788 25, 877, 0, 26, 0, 0, 0, 0, 0, 27,
4789 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
4790 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
4791 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4792 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
4793 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
4794 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
4795 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
4796 63, 64, 65, 0, -853, 0, 0, 0, 0, 0,
4797 0, 239, 0, 0, 0, 0, 0, 0, 0, 0,
4798 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4799 0, 66, 67, 68, 0, 0, -853, 3, -853, 4,
4800 5, 6, 7, 8, -853, 0, 0, 9, 10, 0,
4801 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
4802 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
4803 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
4804 0, 27, 28, 29, 30, 31, 32, 33, 34, 35,
4805 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
4806 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
4807 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
4808 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
4809 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
4810 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
4811 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
4812 0, 0, 0, 239, 0, 0, 0, 0, 0, 0,
4813 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4814 0, 0, 0, 66, 67, 68, 0, 0, -4, 3,
4815 -853, 4, 5, 6, 7, 8, -853, 0, 0, 9,
4816 10, 0, 0, 0, 11, 0, 12, 13, 14, 15,
4817 16, 17, 18, 0, 0, 0, 0, 0, 19, 20,
4818 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
4819 0, 0, 0, 27, 28, 29, 30, 31, 32, 33,
4820 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
4821 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
4822 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
4823 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
4824 50, 0, 0, 0, 0, 0, 0, 51, 0, 0,
4825 52, 53, 54, 55, 0, 56, 0, 0, 57, 58,
4826 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
4827 0, 0, 0, 0, 0, 0, -835, 0, 0, 0,
4828 0, 0, 0, 0, -835, -835, -835, 0, 0, -835,
4829 -835, -835, 0, -835, 0, 66, 67, 68, 0, 0,
4830 -4, -835, -835, -835, -835, -835, 0, 0, 546, 0,
4831 0, 0, 0, -835, -835, 0, -835, -835, -835, -835,
4832 -835, 0, 0, 0, 368, 369, 370, 371, 372, 373,
4833 374, 375, 376, 377, 378, 379, 380, 0, 0, 0,
4834 0, 381, 382, 0, -835, -835, 0, 0, 0, 0,
4835 0, 0, 0, 0, -835, -835, -835, -835, -835, -835,
4836 -835, -835, -835, -835, -835, -835, -835, 0, 0, 0,
4837 0, -835, -835, -835, -835, 0, 885, -835, 0, 0,
4838 0, 384, -835, 385, 386, 387, 388, 389, 390, 391,
4839 392, 393, 394, 0, 0, 0, -835, 0, 0, -835,
4840 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4841 -146, -835, -835, -835, -835, -835, -835, -835, -835, -835,
4842 -835, -835, -835, 0, 0, 0, 0, -835, -835, -835,
4843 -835, -835, -699, 0, -835, -835, -835, 0, 0, 0,
4844 -699, -699, -699, 0, 0, -699, -699, -699, 0, -699,
4845 0, 0, 0, 0, 0, 0, 0, -699, 0, -699,
4846 -699, -699, 0, 0, 0, 0, 0, 0, 0, -699,
4847 -699, 0, -699, -699, -699, -699, -699, 0, 0, 0,
4848 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
4849 378, -854, -854, 0, 0, 0, 0, 381, 382, 0,
4850 -699, -699, 0, 0, 0, 0, 0, 0, 0, 0,
4851 -699, -699, -699, -699, -699, -699, -699, -699, -699, -699,
4852 -699, -699, -699, 0, 0, 0, 0, -699, -699, -699,
4853 -699, 0, -699, -699, 0, 0, 0, 0, -699, 385,
4854 386, 387, 388, 389, 390, 391, 392, 393, 394, 0,
4855 0, 0, -699, 0, 0, -699, 0, 0, 0, 0,
4856 0, 0, 0, 0, 0, 0, -699, -699, -699, -699,
4857 -699, -699, -699, -699, -699, -699, -699, -699, -699, 0,
4858 0, 0, 0, 0, -699, -699, -699, -699, -700, 0,
4859 -699, -699, -699, 0, 0, 0, -700, -700, -700, 0,
4860 0, -700, -700, -700, 0, -700, 0, 0, 0, 0,
4861 0, 0, 0, -700, 0, -700, -700, -700, 0, 0,
4862 0, 0, 0, 0, 0, -700, -700, 0, -700, -700,
4863 -700, -700, -700, 0, 0, 0, 0, 0, 0, 0,
4864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4865 0, 0, 0, 0, 0, 0, -700, -700, 0, 0,
4866 0, 0, 0, 0, 0, 0, -700, -700, -700, -700,
4867 -700, -700, -700, -700, -700, -700, -700, -700, -700, 0,
4868 0, 0, 0, -700, -700, -700, -700, 0, -700, -700,
4869 0, 0, 0, 0, -700, 0, 0, 0, 0, 0,
4870 0, 0, 0, 0, 0, 0, 0, 0, -700, 0,
4871 0, -700, 0, 0, 0, 0, 0, 0, 0, 0,
4872 0, 0, -700, -700, -700, -700, -700, -700, -700, -700,
4873 -700, -700, -700, -700, -700, 0, 0, 0, 0, 0,
4874 -700, -700, -700, -700, -836, 0, -700, -700, -700, 0,
4875 0, 0, -836, -836, -836, 0, 0, -836, -836, -836,
4876 0, -836, 0, 0, 0, 0, 0, 0, 0, -836,
4877 -836, -836, -836, -836, 0, 0, 0, 0, 0, 0,
4878 0, -836, -836, 0, -836, -836, -836, -836, -836, 0,
4879 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4880 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4881 0, 0, -836, -836, 0, 0, 0, 0, 0, 0,
4882 0, 0, -836, -836, -836, -836, -836, -836, -836, -836,
4883 -836, -836, -836, -836, -836, 0, 0, 0, 0, -836,
4884 -836, -836, -836, 0, 0, -836, 0, 0, 0, 0,
4885 -836, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4886 0, 0, 0, 0, -836, 0, 0, -836, 0, 0,
4887 0, 0, 0, 0, 0, 0, 0, 0, 0, -836,
4888 -836, -836, -836, -836, -836, -836, -836, -836, -836, -836,
4889 -836, 0, 0, 0, 0, -836, -836, -836, -836, -836,
4890 -837, 0, -836, -836, -836, 0, 0, 0, -837, -837,
4891 -837, 0, 0, -837, -837, -837, 0, -837, 0, 0,
4892 0, 0, 0, 0, 0, -837, -837, -837, -837, -837,
4893 0, 0, 0, 0, 0, 0, 0, -837, -837, 0,
4894 -837, -837, -837, -837, -837, 0, 0, 0, 0, 0,
4895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4896 0, 0, 0, 0, 0, 0, 0, 0, -837, -837,
4897 0, 0, 0, 0, 0, 0, 0, 0, -837, -837,
4898 -837, -837, -837, -837, -837, -837, -837, -837, -837, -837,
4899 -837, 0, 0, 0, 0, -837, -837, -837, -837, 0,
4900 0, -837, 0, 0, 0, 0, -837, 0, 0, 0,
4901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4902 -837, 0, 0, -837, 0, 0, 0, 0, 0, 0,
4903 0, 0, 0, 0, 0, -837, -837, -837, -837, -837,
4904 -837, -837, -837, -837, -837, -837, -837, 0, 0, 0,
4905 0, -837, -837, -837, -837, -837, -514, 0, -837, -837,
4906 -837, 0, 0, 0, -514, -514, -514, 0, 0, -514,
4907 -514, -514, 0, -514, 0, 0, 0, 0, 0, 0,
4908 0, -514, -514, -514, -514, 0, 0, 0, 0, 0,
4909 0, 0, 0, -514, -514, 0, -514, -514, -514, -514,
4910 -514, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4912 0, 0, 0, 0, -514, -514, 0, 0, 0, 0,
4913 0, 0, 0, 0, -514, -514, -514, -514, -514, -514,
4914 -514, -514, -514, -514, -514, -514, -514, 0, 0, 0,
4915 0, -514, -514, -514, -514, 0, 0, -514, 0, 0,
4916 0, 0, -514, 0, 0, 0, 0, 0, 0, 0,
4917 0, 0, 0, 0, 0, 0, -514, 0, 0, 0,
4918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4919 0, -514, 0, -514, -514, -514, -514, -514, -514, -514,
4920 -514, -514, -514, 0, 0, 0, 0, -514, -514, -514,
4921 -514, -514, -350, 255, -514, -514, -514, 0, 0, 0,
4922 -350, -350, -350, 0, 0, -350, -350, -350, 0, -350,
4923 0, 0, 0, 0, 0, 0, 0, -350, 0, -350,
4924 -350, -350, 0, 0, 0, 0, 0, 0, 0, -350,
4925 -350, 0, -350, -350, -350, -350, -350, 0, 0, 0,
4926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4927 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4928 -350, -350, 0, 0, 0, 0, 0, 0, 0, 0,
4929 -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
4930 -350, -350, -350, 0, 0, 0, 0, -350, -350, -350,
4931 -350, 0, 0, -350, 0, 0, 0, 0, -350, 0,
4932 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4933 0, 0, -350, 0, 0, -350, 0, 0, 0, 0,
4934 0, 0, 0, 0, 0, 0, 0, -350, -350, -350,
4935 -350, -350, -350, -350, -350, -350, -350, -350, -350, 0,
4936 0, 0, 0, 0, -350, -350, -350, -350, -853, 0,
4937 -350, -350, -350, 0, 0, 0, -853, -853, -853, 0,
4938 0, -853, -853, -853, 0, -853, 0, 0, 0, 0,
4939 0, 0, 0, -853, -853, -853, -853, 0, 0, 0,
4940 0, 0, 0, 0, 0, -853, -853, 0, -853, -853,
4941 -853, -853, -853, 0, 0, 0, 0, 0, 0, 0,
4942 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4943 0, 0, 0, 0, 0, 0, -853, -853, 0, 0,
4944 0, 0, 0, 0, 0, 0, -853, -853, -853, -853,
4945 -853, -853, -853, -853, -853, -853, -853, -853, -853, 0,
4946 0, 0, 0, -853, -853, -853, -853, 0, 0, -853,
4947 0, 0, 0, 0, -853, 0, 0, 0, 0, 0,
4948 0, 0, 0, 0, 0, 0, 0, 0, -853, 0,
4949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4950 0, 0, 0, -853, 0, -853, -853, -853, -853, -853,
4951 -853, -853, -853, -853, -853, 0, 0, 0, 0, -853,
4952 -853, -853, -853, -853, -356, 255, -853, -853, -853, 0,
4953 0, 0, -356, -356, -356, 0, 0, -356, -356, -356,
4954 0, -356, 0, 0, 0, 0, 0, 0, 0, -356,
4955 0, -356, -356, 0, 0, 0, 0, 0, 0, 0,
4956 0, -356, -356, 0, -356, -356, -356, -356, -356, 0,
4957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4958 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4959 0, 0, -356, -356, 0, 0, 0, 0, 0, 0,
4960 0, 0, -356, -356, -356, -356, -356, -356, -356, -356,
4961 -356, -356, -356, -356, -356, 0, 0, 0, 0, -356,
4962 -356, -356, -356, 0, 886, -356, 0, 0, 0, 0,
4963 -356, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4964 0, 0, 0, 0, -356, 0, 0, 0, 0, 0,
4965 0, 0, 0, 0, 0, 0, 0, 0, -147, -356,
4966 0, -356, -356, -356, -356, -356, -356, -356, -356, -356,
4967 -356, 0, 0, 0, 0, 829, -356, -356, -356, -356,
4968 -363, 0, -356, -356, -356, 0, 0, 0, -363, -363,
4969 -363, 0, 0, -363, -363, -363, 0, -363, 0, 0,
4970 0, 0, 0, 0, 0, -363, 0, -363, -363, 0,
4971 0, 0, 0, 0, 0, 0, 0, -363, -363, 0,
4972 -363, -363, -363, -363, -363, 0, 0, 0, 0, 0,
4973 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4974 0, 0, 0, 0, 0, 0, 0, 0, -363, -363,
4975 0, 0, 0, 0, 0, 0, 0, 0, -363, -363,
4976 -363, -363, -363, -363, -363, -363, -363, -363, -363, -363,
4977 -363, 0, 0, 0, 0, -363, -363, -363, -363, 0,
4978 0, -363, 0, 0, 0, 0, -363, 0, 0, 0,
4979 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4980 -363, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4981 0, 0, 0, 0, 0, -363, 0, -363, -363, -363,
4982 -363, -363, -363, -363, -363, -363, -363, 0, 0, 0,
4983 0, 0, -363, -363, -363, -363, -835, 451, -363, -363,
4984 -363, 0, 0, 0, -835, -835, -835, 0, 0, 0,
4985 -835, -835, 0, -835, 0, 0, 0, 0, 0, 0,
4986 0, -835, -835, 0, 0, 0, 0, 0, 0, 0,
4987 0, 0, 0, -835, -835, 0, -835, -835, -835, -835,
4988 -835, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4989 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4990 0, 0, 0, 0, -835, -835, 0, 0, 0, 0,
4991 0, 0, 0, 0, -835, -835, -835, -835, -835, -835,
4992 -835, -835, -835, -835, -835, -835, -835, 0, 0, 0,
4993 0, -835, -835, -835, -835, 0, 827, -835, 0, 0,
4994 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4995 0, 0, 0, 0, 0, 0, -835, 0, 0, 0,
4996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4997 -146, -835, 0, -835, -835, -835, -835, -835, -835, -835,
4998 -835, -835, -835, 0, 0, 0, 0, -835, -835, -835,
4999 -835, -137, -835, 0, -835, 0, -835, 0, 0, 0,
5000 -835, -835, -835, 0, 0, 0, -835, -835, 0, -835,
5001 0, 0, 0, 0, 0, 0, 0, -835, -835, 0,
5002 0, 0, 0, 0, 0, 0, 0, 0, 0, -835,
5003 -835, 0, -835, -835, -835, -835, -835, 0, 0, 0,
5004 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5005 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5006 -835, -835, 0, 0, 0, 0, 0, 0, 0, 0,
5007 -835, -835, -835, -835, -835, -835, -835, -835, -835, -835,
5008 -835, -835, -835, 0, 0, 0, 0, -835, -835, -835,
5009 -835, 0, 827, -835, 0, 0, 0, 0, 0, 0,
5010 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5011 0, 0, -835, 0, 0, 0, 0, 0, 0, 0,
5012 0, 0, 0, 0, 0, 0, -146, -835, 0, -835,
5013 -835, -835, -835, -835, -835, -835, -835, -835, -835, 0,
5014 0, 0, 0, -835, -835, -835, -835, -835, -356, 0,
5015 -835, 0, -835, 0, 0, 0, -356, -356, -356, 0,
5016 0, 0, -356, -356, 0, -356, 0, 0, 0, 0,
5017 0, 0, 0, -356, 0, 0, 0, 0, 0, 0,
5018 0, 0, 0, 0, 0, -356, -356, 0, -356, -356,
5019 -356, -356, -356, 0, 0, 0, 0, 0, 0, 0,
5020 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5021 0, 0, 0, 0, 0, 0, -356, -356, 0, 0,
5022 0, 0, 0, 0, 0, 0, -356, -356, -356, -356,
5023 -356, -356, -356, -356, -356, -356, -356, -356, -356, 0,
5024 0, 0, 0, -356, -356, -356, -356, 0, 828, -356,
5025 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5026 0, 0, 0, 0, 0, 0, 0, 0, -356, 0,
5027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5028 0, 0, -147, -356, 0, -356, -356, -356, -356, -356,
5029 -356, -356, -356, -356, -356, 0, 0, 0, 0, 829,
5030 -356, -356, -356, -138, -356, 0, -356, 0, -356, 0,
5031 0, 0, -356, -356, -356, 0, 0, 0, -356, -356,
5032 0, -356, 0, 0, 0, 0, 0, 0, 0, -356,
5033 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5034 0, -356, -356, 0, -356, -356, -356, -356, -356, 0,
5035 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5036 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5037 0, 0, -356, -356, 0, 0, 0, 0, 0, 0,
5038 0, 0, -356, -356, -356, -356, -356, -356, -356, -356,
5039 -356, -356, -356, -356, -356, 0, 0, 0, 0, -356,
5040 -356, -356, -356, 0, 828, -356, 0, 0, 0, 0,
5041 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5042 0, 0, 0, 0, -356, 0, 0, 0, 0, 0,
5043 0, 0, 0, 0, 0, 0, 0, 0, -147, -356,
5044 0, -356, -356, -356, -356, -356, -356, -356, -356, -356,
5045 -356, 0, 0, 0, 0, 829, -356, -356, -356, -356,
5046 0, 0, -356, 3, -356, 4, 5, 6, 7, 8,
5047 -853, -853, -853, 9, 10, 0, 0, -853, 11, 0,
5048 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5049 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5050 0, 26, 0, 0, 0, 0, 0, 27, 28, 284,
5051 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5052 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5053 -853, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5054 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5055 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5056 0, 51, 0, 0, 52, 53, 54, 55, 0, 56,
5057 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5058 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5059 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5060 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
5061 67, 68, 0, 0, 0, 3, -853, 4, 5, 6,
5062 7, 8, -853, 0, -853, 9, 10, 0, -853, -853,
5063 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5064 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5065 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5066 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
5067 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5068 0, 0, -853, 0, 0, 0, 0, 0, 0, 0,
5069 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5070 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5071 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5072 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5073 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5074 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5075 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5076 0, 66, 67, 68, 0, 0, 0, 3, -853, 4,
5077 5, 6, 7, 8, -853, 0, -853, 9, 10, 0,
5078 0, -853, 11, -853, 12, 13, 14, 15, 16, 17,
5079 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
5080 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
5081 0, 27, 28, 284, 30, 31, 32, 33, 34, 35,
5082 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5083 45, 46, 0, 0, -853, 0, 0, 0, 0, 0,
5084 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5085 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5086 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
5087 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
5088 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
5089 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5091 0, 0, 0, 66, 67, 68, 0, 0, 0, 3,
5092 -853, 4, 5, 6, 7, 8, -853, 0, -853, 9,
5093 10, 0, 0, -853, 11, 0, 12, 13, 14, 15,
5094 16, 17, 18, -853, 0, 0, 0, 0, 19, 20,
5095 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
5096 0, 0, 0, 27, 28, 284, 30, 31, 32, 33,
5097 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
5098 43, 44, 45, 46, 0, 0, -853, 0, 0, 0,
5099 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
5100 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
5101 50, 0, 0, 0, 0, 0, 0, 51, 0, 0,
5102 52, 53, 54, 55, 0, 56, 0, 0, 57, 58,
5103 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
5104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5106 0, 0, 0, 0, 0, 66, 67, 68, 0, 0,
5107 0, 3, -853, 4, 5, 6, 7, 8, -853, 0,
5108 -853, 9, 10, 0, 0, -853, 11, 0, 12, 13,
5109 14, 15, 16, 17, 18, 0, 0, 0, 0, 0,
5110 19, 20, 21, 22, 23, 24, 25, 0, 0, 26,
5111 0, 0, 0, 0, 0, 27, 28, 284, 30, 31,
5112 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
5113 41, 42, 43, 44, 45, 46, 0, 0, -853, 0,
5114 0, 0, 0, 0, 0, 0, 47, 48, 0, 0,
5115 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5116 0, 49, 50, 0, 0, 0, 0, 0, 0, 51,
5117 0, 0, 52, 53, 54, 55, 0, 56, 0, 0,
5118 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5119 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5120 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5121 0, 0, 0, 0, 0, 0, 0, 66, 67, 68,
5122 0, 0, 0, 3, -853, 4, 5, 6, 7, 8,
5123 -853, -853, -853, 9, 10, 0, 0, 0, 11, 0,
5124 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5125 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5126 0, 26, 0, 0, 0, 0, 0, 27, 28, 284,
5127 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5128 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5129 -853, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5130 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5131 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5132 0, 51, 0, 0, 52, 53, 54, 55, 0, 56,
5133 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5134 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5135 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5136 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
5137 67, 68, 0, 0, 0, 3, -853, 4, 5, 6,
5138 7, 8, -853, 0, -853, 9, 10, 0, 0, 0,
5139 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5140 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5141 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5142 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
5143 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5144 0, 0, -853, 0, 0, 0, 0, 0, 0, 0,
5145 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5146 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5147 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5148 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5149 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5150 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5151 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5152 0, 66, 67, 68, 0, 0, 0, 3, -853, 4,
5153 5, 6, 7, 8, -853, 0, 0, 9, 10, 0,
5154 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
5155 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
5156 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
5157 0, 27, 28, 284, 30, 31, 32, 33, 34, 35,
5158 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5159 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5160 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5161 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5162 0, 0, 0, 0, 0, 51, 0, 0, 285, 53,
5163 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
5164 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
5165 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5167 0, 0, 0, 66, 67, 68, 0, 0, 0, 0,
5168 -853, 0, 0, 0, -853, 3, -853, 4, 5, 6,
5169 7, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5170 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5171 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5172 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5173 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
5174 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5175 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5176 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5177 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5178 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5179 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5180 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5181 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5183 0, 66, 67, 68, 0, 0, 0, 0, -853, 0,
5184 0, 0, -853, 3, -853, 4, 5, 6, 7, 8,
5185 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5186 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5187 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5188 0, 26, 0, 0, 0, 0, 0, 27, 28, 29,
5189 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5190 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5191 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5193 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5194 0, 51, 0, 0, 52, 53, 54, 55, 0, 56,
5195 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5196 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5198 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
5199 67, 68, 0, 0, -853, 3, -853, 4, 5, 6,
5200 7, 8, -853, 0, 0, 9, 10, 0, 0, 0,
5201 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5202 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5203 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5204 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
5205 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5207 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5208 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5209 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5210 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5211 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5213 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5214 0, 66, 67, 68, 0, 0, -853, 404, -853, 4,
5215 5, 6, 0, 8, -853, 0, 0, 9, 10, 0,
5216 0, 0, 11, -3, 12, 13, 14, 15, 16, 17,
5217 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
5218 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
5219 0, 0, 28, 0, 0, 31, 32, 33, 34, 35,
5220 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5221 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5222 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5223 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5224 0, 0, 0, 0, 0, 229, 0, 0, 230, 53,
5225 54, 55, 0, 0, 0, 0, 57, 58, 59, 60,
5226 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
5227 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5229 0, 0, 0, 66, 67, 68, 0, 0, 0, 0,
5230 331, 0, 0, 0, 0, 0, 332, 144, 145, 146,
5231 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
5232 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
5233 167, 0, 0, 0, 168, 169, 170, 434, 435, 436,
5234 437, 175, 176, 177, 0, 0, 0, 0, 0, 178,
5235 179, 180, 181, 438, 439, 440, 441, 186, 36, 37,
5236 442, 39, 0, 0, 0, 0, 0, 0, 0, 0,
5237 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5238 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
5239 0, 197, 198, 0, 0, 0, 0, 199, 200, 201,
5240 202, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5241 0, 203, 204, 0, 0, 0, 0, 0, 0, 0,
5242 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5244 0, 205, 206, 207, 208, 209, 210, 211, 212, 213,
5245 214, 0, 215, 216, 0, 0, 0, 0, 0, 0,
5246 217, 443, 144, 145, 146, 147, 148, 149, 150, 151,
5247 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
5248 162, 163, 164, 165, 166, 167, 0, 0, 0, 168,
5249 169, 170, 171, 172, 173, 174, 175, 176, 177, 0,
5250 0, 0, 0, 0, 178, 179, 180, 181, 182, 183,
5251 184, 185, 186, 36, 37, 187, 39, 0, 0, 0,
5252 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5253 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5254 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5255 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5256 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5258 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5259 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5260 209, 210, 211, 212, 213, 214, 0, 215, 216, 0,
5261 0, 0, 0, 0, 0, 217, 144, 145, 146, 147,
5262 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
5263 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
5264 0, 0, 0, 168, 169, 170, 171, 172, 173, 174,
5265 175, 176, 177, 0, 0, 0, 0, 0, 178, 179,
5266 180, 181, 182, 183, 184, 185, 186, 262, 0, 187,
5267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5268 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5269 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5270 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5272 203, 204, 0, 0, 58, 0, 0, 0, 0, 0,
5273 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5275 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5276 0, 215, 216, 0, 0, 0, 0, 0, 0, 217,
5277 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
5278 154, 155, 156, 157, 158, 159, 160, 161, 162, 163,
5279 164, 165, 166, 167, 0, 0, 0, 168, 169, 170,
5280 171, 172, 173, 174, 175, 176, 177, 0, 0, 0,
5281 0, 0, 178, 179, 180, 181, 182, 183, 184, 185,
5282 186, 0, 0, 187, 0, 0, 0, 0, 0, 0,
5283 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5284 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5285 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5286 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5287 0, 0, 0, 0, 203, 204, 0, 0, 58, 0,
5288 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5289 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5290 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5291 211, 212, 213, 214, 0, 215, 216, 0, 0, 0,
5292 0, 0, 0, 217, 144, 145, 146, 147, 148, 149,
5293 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
5294 160, 161, 162, 163, 164, 165, 166, 167, 0, 0,
5295 0, 168, 169, 170, 171, 172, 173, 174, 175, 176,
5296 177, 0, 0, 0, 0, 0, 178, 179, 180, 181,
5297 182, 183, 184, 185, 186, 0, 0, 187, 0, 0,
5298 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5299 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5300 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5301 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5302 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5304 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5305 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5306 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5307 216, 4, 5, 6, 0, 8, 0, 217, 0, 9,
5308 10, 0, 0, 0, 11, 0, 12, 13, 14, 270,
5309 271, 17, 18, 0, 0, 0, 0, 0, 19, 20,
5310 272, 22, 23, 24, 25, 0, 0, 227, 0, 0,
5311 0, 0, 0, 0, 302, 0, 0, 31, 32, 33,
5312 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
5313 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
5314 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5316 0, 0, 0, 0, 0, 0, 0, 303, 0, 0,
5317 230, 53, 54, 55, 0, 0, 0, 0, 57, 58,
5318 59, 60, 61, 62, 63, 64, 65, 0, 0, 4,
5319 5, 6, 0, 8, 0, 0, 0, 9, 10, 0,
5320 0, 0, 11, 0, 12, 13, 14, 270, 271, 17,
5321 18, 0, 0, 0, 0, 304, 19, 20, 272, 22,
5322 23, 24, 25, 305, 0, 227, 0, 0, 0, 0,
5323 0, 0, 302, 0, 0, 31, 32, 33, 34, 35,
5324 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5325 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5327 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5328 0, 0, 0, 0, 0, 303, 0, 0, 230, 53,
5329 54, 55, 0, 0, 0, 0, 57, 58, 59, 60,
5330 61, 62, 63, 64, 65, 0, 0, 4, 5, 6,
5331 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5332 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5333 0, 0, 0, 304, 19, 20, 21, 22, 23, 24,
5334 25, 612, 0, 227, 0, 0, 0, 0, 0, 0,
5335 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5336 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5338 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5339 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5340 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5341 0, 231, 232, 233, 57, 58, 234, 60, 61, 62,
5342 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5344 0, 0, 0, 0, 0, 0, 4, 5, 6, 0,
5345 8, 66, 235, 68, 9, 10, 0, 0, 259, 11,
5346 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5347 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
5348 0, 0, 26, 0, 0, 0, 0, 0, 0, 28,
5349 0, 0, 31, 32, 33, 34, 35, 36, 37, 38,
5350 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5351 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
5352 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5353 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5354 0, 0, 229, 0, 0, 230, 53, 54, 55, 0,
5355 0, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5356 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5358 0, 0, 0, 3, 0, 4, 5, 6, 7, 8,
5359 66, 67, 68, 9, 10, 0, 0, 259, 11, 0,
5360 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5361 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5362 0, 26, 0, 0, 0, 0, 0, 27, 28, 0,
5363 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5364 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5365 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5367 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5368 0, 51, 0, 0, 52, 53, 54, 55, 0, 56,
5369 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5370 65, 0, 0, 404, 0, 4, 5, 6, 0, 8,
5371 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5372 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5373 67, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5374 0, 26, 0, 0, 0, 0, 0, 0, 28, 0,
5375 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5376 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5377 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5379 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5380 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5381 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5382 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5383 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5384 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5385 67, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5386 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5387 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5388 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5389 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5391 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5392 0, 229, 0, 0, 230, 53, 54, 55, 0, 231,
5393 232, 233, 57, 58, 234, 60, 61, 62, 63, 64,
5394 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5395 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5396 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5397 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5398 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5399 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5400 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5401 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5402 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5403 0, 0, 0, 49, 479, 0, 0, 0, 0, 0,
5404 0, 229, 0, 0, 230, 53, 54, 55, 0, 231,
5405 232, 233, 57, 58, 234, 60, 61, 62, 63, 64,
5406 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5407 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5408 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5409 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5410 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5411 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5412 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5413 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5415 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5416 0, 229, 0, 0, 230, 53, 54, 55, 0, 231,
5417 232, 233, 57, 58, 234, 60, 61, 62, 63, 64,
5418 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5419 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5420 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5421 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5422 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5423 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5424 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5425 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5427 0, 0, 0, 49, 479, 0, 0, 0, 0, 0,
5428 0, 229, 0, 0, 230, 53, 54, 55, 0, 231,
5429 232, 233, 57, 58, 234, 60, 61, 62, 63, 64,
5430 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5431 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5432 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5433 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5434 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5435 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5436 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5437 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5439 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5440 0, 229, 0, 0, 230, 53, 54, 55, 0, 231,
5441 232, 0, 57, 58, 234, 60, 61, 62, 63, 64,
5442 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5443 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5444 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5445 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5446 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5447 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5448 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5449 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5450 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5451 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5452 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5453 232, 233, 57, 58, 234, 60, 61, 62, 63, 64,
5454 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5455 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5456 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5457 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5458 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5459 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5460 228, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5461 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5463 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5464 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5465 232, 0, 57, 58, 234, 60, 61, 62, 63, 64,
5466 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5467 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5468 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5469 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5470 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5471 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5472 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5473 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5474 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5475 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5476 0, 229, 0, 0, 230, 53, 54, 55, 0, 802,
5477 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5478 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5479 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5480 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5481 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5482 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5483 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5484 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5485 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5487 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5488 0, 813, 0, 0, 230, 53, 54, 55, 0, 802,
5489 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5490 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5491 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5492 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5493 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5494 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5495 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5496 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5497 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5498 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5499 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5500 0, 229, 0, 0, 230, 53, 54, 55, 0, 974,
5501 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5502 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5503 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5504 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5505 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5506 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5507 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5508 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5509 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5510 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5511 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5512 0, 229, 0, 0, 230, 53, 54, 55, 0, 1023,
5513 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5514 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5515 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5516 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5517 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5518 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5519 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5520 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5521 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5523 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5524 0, 229, 0, 0, 230, 53, 54, 55, 0, 802,
5525 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5526 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5527 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5528 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5529 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5530 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5531 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5532 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5533 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5535 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5536 0, 229, 0, 0, 230, 53, 54, 55, 0, 1156,
5537 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5538 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5539 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5540 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5541 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5542 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5543 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5544 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5545 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5546 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5547 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5548 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5549 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5550 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5551 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5552 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5553 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5554 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5555 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5556 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5557 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5558 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5559 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5560 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5561 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5562 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5563 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5564 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5565 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5566 0, 26, 0, 0, 0, 0, 0, 0, 28, 0,
5567 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5568 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5569 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5571 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5572 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5573 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5574 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5575 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5576 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5577 67, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5578 0, 784, 0, 0, 0, 0, 0, 0, 28, 0,
5579 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5580 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5581 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5582 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5583 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5584 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5585 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5586 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5587 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5588 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5589 235, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5590 0, 227, 0, 0, 0, 0, 0, 0, 28, 0,
5591 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5592 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5593 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5594 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5595 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5596 0, 813, 0, 0, 230, 53, 54, 55, 0, 0,
5597 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5598 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5599 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5600 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5601 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5602 0, 893, 0, 0, 0, 0, 0, 0, 28, 0,
5603 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5604 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5605 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5606 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5607 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5608 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5609 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5610 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5611 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5612 12, 13, 14, 270, 271, 17, 18, 0, 0, 66,
5613 235, 68, 19, 20, 272, 22, 23, 24, 25, 0,
5614 0, 227, 0, 0, 0, 0, 0, 0, 302, 0,
5615 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5616 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5617 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5618 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5619 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5620 0, 303, 0, 0, 363, 53, 54, 55, 0, 364,
5621 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5622 65, 0, 0, 4, 5, 6, 0, 8, 0, 0,
5623 0, 9, 10, 0, 0, 0, 11, 0, 12, 13,
5624 14, 270, 271, 17, 18, 0, 0, 0, 0, 304,
5625 19, 20, 272, 22, 23, 24, 25, 0, 0, 227,
5626 0, 0, 0, 0, 0, 0, 302, 0, 0, 31,
5627 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
5628 41, 42, 43, 44, 45, 46, 0, 0, 0, 0,
5629 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5630 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5631 0, 0, 0, 0, 0, 0, 0, 0, 0, 415,
5632 0, 0, 52, 53, 54, 55, 0, 56, 0, 0,
5633 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5634 0, 4, 5, 6, 0, 8, 0, 0, 0, 9,
5635 10, 0, 0, 0, 11, 0, 12, 13, 14, 270,
5636 271, 17, 18, 0, 0, 0, 0, 304, 19, 20,
5637 272, 22, 23, 24, 25, 0, 0, 227, 0, 0,
5638 0, 0, 0, 0, 302, 0, 0, 31, 32, 33,
5639 423, 35, 36, 37, 424, 39, 0, 40, 41, 42,
5640 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
5641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5642 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5643 0, 0, 0, 425, 0, 0, 0, 426, 0, 0,
5644 230, 53, 54, 55, 0, 0, 0, 0, 57, 58,
5645 59, 60, 61, 62, 63, 64, 65, 0, 0, 4,
5646 5, 6, 0, 8, 0, 0, 0, 9, 10, 0,
5647 0, 0, 11, 0, 12, 13, 14, 270, 271, 17,
5648 18, 0, 0, 0, 0, 304, 19, 20, 272, 22,
5649 23, 24, 25, 0, 0, 227, 0, 0, 0, 0,
5650 0, 0, 302, 0, 0, 31, 32, 33, 423, 35,
5651 36, 37, 424, 39, 0, 40, 41, 42, 43, 44,
5652 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5653 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5654 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5655 0, 0, 0, 0, 0, 426, 0, 0, 230, 53,
5656 54, 55, 0, 0, 0, 0, 57, 58, 59, 60,
5657 61, 62, 63, 64, 65, 0, 0, 4, 5, 6,
5658 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5659 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5660 0, 0, 0, 304, 19, 20, 272, 22, 23, 24,
5661 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5662 302, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5663 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5664 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5666 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5667 0, 0, 0, 303, 0, 0, 363, 53, 54, 55,
5668 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5669 63, 64, 65, 0, 0, 4, 5, 6, 0, 8,
5670 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5671 12, 13, 14, 270, 271, 17, 18, 0, 0, 0,
5672 0, 304, 19, 20, 272, 22, 23, 24, 25, 0,
5673 0, 227, 0, 0, 0, 0, 0, 0, 302, 0,
5674 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5675 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5676 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5677 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5678 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5679 0, 1224, 0, 0, 230, 53, 54, 55, 0, 0,
5680 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5681 65, 0, 0, 4, 5, 6, 0, 8, 0, 0,
5682 0, 9, 10, 0, 0, 0, 11, 0, 12, 13,
5683 14, 270, 271, 17, 18, 0, 0, 0, 0, 304,
5684 19, 20, 272, 22, 23, 24, 25, 0, 0, 227,
5685 0, 0, 0, 0, 0, 0, 302, 0, 0, 31,
5686 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
5687 41, 42, 43, 44, 45, 46, 0, 0, 0, 0,
5688 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5689 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5690 0, 0, 0, 0, 0, 0, 0, 0, 0, 1344,
5691 0, 0, 230, 53, 54, 55, 22, 23, 24, 25,
5692 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5693 0, 0, 31, 32, 33, 1099, 0, 0, 0, 1100,
5694 0, 0, 40, 41, 42, 43, 44, 0, 0, 0,
5695 0, 0, 0, 0, 0, 0, 0, 304, 0, 0,
5696 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5697 0, 0, 0, 0, 1102, 1103, 0, 0, 0, 0,
5698 0, 0, 1104, 0, 0, 1105, 0, 1106, 1107, 0,
5699 0, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5700 64, 65, 0, 0, 0, 0, 0, 642, 643, 0,
5701 0, 644, 0, 0, 0, 0, 0, 0, 0, 0,
5702 0, 0, 0, 1110, 0, 0, 0, 0, 0, 0,
5703 304, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5704 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5705 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5706 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
5707 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5708 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5709 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5710 213, 214, 0, 215, 216, 650, 651, 0, 0, 652,
5711 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
5712 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5713 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5714 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5716 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5717 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5718 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5719 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5720 0, 215, 216, 704, 643, 0, 0, 705, 0, 217,
5721 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5722 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5723 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5724 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5725 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5726 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5727 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5728 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5729 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5730 216, 707, 651, 0, 0, 708, 0, 217, 0, 0,
5731 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5732 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5733 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5734 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5735 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5736 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5737 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5738 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5739 209, 210, 211, 212, 213, 214, 0, 215, 216, 704,
5740 643, 0, 0, 724, 0, 217, 0, 0, 0, 0,
5741 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5742 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5743 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5744 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5745 0, 0, 0, 0, 203, 204, 0, 0, 0, 0,
5746 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5747 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5748 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5749 211, 212, 213, 214, 0, 215, 216, 735, 643, 0,
5750 0, 736, 0, 217, 0, 0, 0, 0, 0, 0,
5751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5752 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5753 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5754 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5755 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
5756 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5757 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5758 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5759 213, 214, 0, 215, 216, 738, 651, 0, 0, 739,
5760 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
5761 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5762 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5763 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5765 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5766 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5768 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5769 0, 215, 216, 857, 643, 0, 0, 858, 0, 217,
5770 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5771 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5772 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5773 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5774 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5775 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5776 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5777 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5778 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5779 216, 860, 651, 0, 0, 861, 0, 217, 0, 0,
5780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5781 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5782 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5783 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5784 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5785 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5786 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5787 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5788 209, 210, 211, 212, 213, 214, 0, 215, 216, 866,
5789 643, 0, 0, 867, 0, 217, 0, 0, 0, 0,
5790 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5791 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5792 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5793 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5794 0, 0, 0, 0, 203, 204, 0, 0, 0, 0,
5795 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5796 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5797 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5798 211, 212, 213, 214, 0, 215, 216, 689, 651, 0,
5799 0, 690, 0, 217, 0, 0, 0, 0, 0, 0,
5800 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5801 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5802 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5803 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5804 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
5805 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5806 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5807 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5808 213, 214, 0, 215, 216, 1029, 643, 0, 0, 1030,
5809 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
5810 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5811 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5812 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5813 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5814 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5816 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5817 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5818 0, 215, 216, 1032, 651, 0, 0, 1033, 0, 217,
5819 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5820 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5821 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5822 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5823 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5824 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5825 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5826 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5827 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5828 216, 1363, 643, 0, 0, 1364, 0, 217, 0, 0,
5829 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5830 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5831 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5832 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5833 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5834 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5835 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5836 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5837 209, 210, 211, 212, 213, 214, 0, 215, 216, 1366,
5838 651, 0, 0, 1367, 0, 217, 0, 0, 0, 0,
5839 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5840 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5841 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5842 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5843 0, 0, 0, 0, 203, 204, 0, 0, 0, 0,
5844 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5845 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5846 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5847 211, 212, 213, 214, 0, 215, 216, 1420, 643, 0,
5848 0, 1421, 0, 217, 0, 0, 0, 0, 0, 0,
5849 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5850 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5851 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5852 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5853 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
5854 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5856 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5857 213, 214, 0, 215, 216, 0, 0, 0, 0, 0,
5861static const yytype_int16 yycheck[] =
5863 1, 70, 26, 59, 28, 101, 52, 53, 107, 58,
5864 7, 408, 1, 56, 426, 116, 58, 89, 70, 115,
5865 67, 15, 16, 30, 7, 399, 344, 401, 27, 599,
5866 27, 349, 602, 13, 14, 63, 64, 65, 344, 15,
5867 16, 768, 845, 349, 27, 575, 89, 766, 255, 15,
5868 16, 52, 53, 54, 55, 107, 477, 601, 589, 84,
5869 766, 58, 400, 56, 595, 108, 109, 110, 252, 111,
5870 615, 914, 1071, 52, 693, 694, 15, 16, 54, 1001,
5871 855, 455, 66, 768, 21, 525, 15, 16, 113, 774,
5872 104, 296, 72, 107, 515, 300, 774, 25, 472, 1035,
5873 474, 469, 601, 29, 27, 469, 81, 571, 727, 477,
5874 912, 575, 682, 605, 111, 54, 55, 630, 112, 1318,
5875 825, 1034, 1035, 774, 26, 0, 37, 38, 502, 1197,
5876 320, 321, 1336, 13, 1197, 473, 112, 69, 1221, 1222,
5877 103, 104, 285, 1211, 107, 1067, 112, 84, 512, 1001,
5878 1213, 247, 10, 101, 528, 109, 100, 69, 25, 100,
5879 54, 66, 100, 13, 81, 97, 98, 100, 1034, 1035,
5880 64, 65, 612, 112, 101, 134, 0, 34, 234, 66,
5881 69, 277, 134, 112, 230, 97, 98, 141, 287, 527,
5882 134, 615, 15, 134, 26, 52, 134, 123, 157, 25,
5883 66, 134, 25, 155, 1403, 69, 134, 155, 97, 98,
5884 68, 13, 1416, 25, 310, 1067, 121, 122, 287, 124,
5885 363, 153, 155, 1159, 723, 157, 154, 155, 155, 230,
5886 158, 154, 119, 305, 98, 287, 25, 160, 565, 285,
5887 13, 1084, 151, 154, 245, 120, 1159, 1169, 1247, 151,
5888 1172, 252, 1174, 119, 255, 157, 1255, 264, 1257, 25,
5889 1, 255, 305, 257, 153, 266, 154, 679, 1351, 693,
5890 694, 295, 296, 978, 154, 155, 300, 266, 302, 255,
5891 160, 257, 950, 1085, 285, 1012, 1349, 1355, 155, 255,
5892 1353, 257, 1355, 1159, 715, 865, 670, 260, 261, 274,
5893 484, 1214, 13, 727, 154, 25, 285, 681, 1221, 1222,
5894 160, 52, 53, 56, 413, 56, 1001, 363, 257, 151,
5895 304, 364, 418, 337, 338, 339, 340, 1012, 257, 155,
5896 1008, 669, 307, 952, 953, 272, 161, 829, 275, 958,
5897 959, 854, 680, 155, 25, 713, 335, 715, 89, 713,
5898 1001, 541, 154, 543, 361, 1158, 273, 274, 160, 366,
5899 1423, 413, 363, 13, 410, 411, 155, 108, 109, 110,
5900 111, 364, 812, 13, 337, 338, 339, 340, 25, 342,
5901 343, 154, 1067, 1158, 363, 1384, 930, 160, 918, 155,
5902 921, 922, 1060, 69, 925, 409, 927, 69, 929, 400,
5903 28, 1323, 403, 1325, 401, 1327, 400, 1329, 1106, 410,
5904 411, 425, 98, 983, 56, 34, 1067, 962, 1267, 13,
5905 1269, 52, 98, 1042, 78, 56, 98, 428, 755, 756,
5906 1211, 930, 766, 52, 400, 155, 134, 1105, 1351, 1107,
5907 1221, 1222, 1169, 154, 100, 13, 409, 155, 1167, 160,
5908 768, 458, 459, 525, 918, 13, 774, 451, 455, 100,
5909 467, 1167, 425, 25, 13, 402, 834, 153, 475, 476,
5910 834, 157, 473, 134, 155, 451, 157, 474, 134, 473,
5911 112, 482, 525, 484, 1169, 451, 1408, 1172, 495, 230,
5912 144, 145, 146, 134, 1172, 494, 503, 494, 100, 155,
5913 1185, 1000, 548, 100, 154, 502, 713, 473, 155, 101,
5914 160, 494, 451, 100, 154, 100, 157, 157, 455, 703,
5915 160, 1172, 451, 1221, 1222, 266, 527, 732, 952, 953,
5916 469, 528, 134, 527, 958, 959, 154, 134, 1387, 1388,
5917 612, 159, 1391, 1392, 285, 344, 1395, 548, 600, 134,
5918 349, 1219, 1220, 155, 744, 1086, 1087, 1088, 1089, 749,
5919 154, 527, 154, 610, 305, 554, 160, 52, 615, 612,
5920 155, 56, 946, 512, 948, 939, 152, 998, 154, 976,
5921 100, 1430, 1431, 1432, 1433, 912, 154, 914, 15, 157,
5922 17, 1440, 160, 155, 335, 157, 154, 100, 599, 1402,
5923 1327, 602, 160, 1027, 100, 154, 25, 631, 69, 947,
5924 662, 160, 69, 659, 134, 661, 1034, 1035, 1042, 1189,
5925 100, 646, 363, 364, 648, 155, 1080, 1081, 1334, 654,
5926 998, 134, 598, 25, 610, 601, 69, 98, 134, 615,
5927 100, 98, 1327, 69, 100, 1323, 693, 694, 649, 656,
5928 25, 1336, 155, 654, 134, 157, 1341, 1054, 659, 155,
5929 661, 733, 403, 1341, 935, 98, 937, 692, 669, 410,
5930 411, 97, 98, 670, 134, 669, 1102, 1103, 134, 680,
5931 727, 682, 706, 1001, 681, 100, 680, 134, 1106, 696,
5932 733, 692, 1104, 742, 1012, 1001, 695, 66, 695, 155,
5933 1034, 1035, 703, 669, 69, 1123, 34, 891, 732, 646,
5934 83, 84, 695, 737, 680, 134, 744, 69, 746, 134,
5935 683, 749, 750, 1254, 52, 726, 822, 153, 58, 831,
5936 101, 1416, 155, 98, 1412, 154, 155, 839, 157, 158,
5937 812, 1159, 134, 26, 154, 100, 98, 157, 78, 1067,
5938 1320, 1148, 121, 122, 290, 100, 719, 1084, 1085, 134,
5939 784, 1067, 154, 155, 137, 138, 158, 508, 100, 812,
5940 155, 66, 67, 874, 713, 157, 1194, 157, 108, 154,
5941 155, 69, 112, 158, 525, 100, 69, 157, 725, 134,
5942 1216, 1217, 161, 1211, 1001, 1249, 1250, 1251, 1252, 1253,
5943 693, 694, 134, 1221, 1222, 78, 1218, 548, 69, 97,
5944 98, 863, 158, 554, 97, 98, 709, 710, 69, 134,
5945 827, 828, 100, 134, 69, 1159, 121, 122, 835, 836,
5946 872, 152, 154, 1167, 727, 859, 97, 98, 160, 159,
5947 841, 1238, 843, 69, 845, 869, 97, 98, 862, 157,
5948 864, 1169, 97, 98, 1172, 154, 134, 56, 599, 158,
5949 1067, 602, 69, 155, 865, 153, 58, 1185, 151, 893,
5950 153, 612, 98, 603, 157, 872, 161, 607, 885, 886,
5951 1214, 888, 889, 78, 1185, 151, 78, 1221, 1222, 1349,
5952 891, 98, 153, 1353, 69, 834, 37, 38, 134, 862,
5953 26, 864, 153, 134, 794, 952, 953, 797, 153, 134,
5954 69, 958, 959, 154, 155, 451, 108, 109, 659, 899,
5955 661, 967, 97, 98, 106, 1379, 1380, 1381, 1382, 56,
5956 982, 69, 984, 154, 155, 1309, 155, 944, 97, 98,
5957 160, 682, 25, 69, 480, 69, 947, 483, 69, 141,
5958 957, 948, 488, 947, 968, 69, 1002, 14, 15, 97,
5959 98, 962, 1169, 152, 930, 1172, 967, 1174, 69, 505,
5960 1308, 97, 98, 97, 98, 1429, 97, 98, 153, 155,
5961 1027, 947, 983, 97, 98, 138, 962, 994, 155, 882,
5962 158, 768, 733, 69, 153, 1042, 97, 98, 89, 90,
5963 1334, 1002, 134, 780, 134, 968, 155, 1031, 158, 1327,
5964 40, 41, 155, 1059, 134, 153, 155, 1351, 1336, 154,
5965 155, 97, 98, 1341, 706, 151, 155, 153, 52, 153,
5966 155, 157, 153, 1334, 152, 1336, 1025, 1026, 155, 153,
5967 1341, 1021, 1022, 306, 307, 1346, 155, 583, 1049, 155,
5968 1051, 155, 153, 1109, 13, 737, 152, 17, 1059, 952,
5969 953, 1110, 25, 155, 134, 958, 959, 1068, 155, 44,
5970 1071, 812, 44, 1074, 152, 611, 155, 153, 155, 1080,
5971 1081, 134, 1106, 1107, 26, 54, 55, 609, 57, 44,
5972 66, 1092, 1093, 44, 136, 64, 65, 159, 1416, 992,
5973 993, 8, 995, 996, 1147, 66, 56, 15, 1154, 1155,
5974 155, 1412, 52, 1414, 1160, 1416, 1323, 1418, 1325, 155,
5975 1327, 155, 1329, 155, 865, 66, 52, 69, 54, 55,
5976 1226, 57, 1231, 762, 155, 657, 1437, 766, 1162, 155,
5977 1186, 663, 664, 119, 55, 121, 122, 66, 124, 1042,
5978 1151, 687, 66, 1154, 1155, 97, 98, 1158, 119, 1160,
5979 121, 122, 1231, 124, 52, 152, 54, 55, 56, 57,
5980 58, 155, 1196, 1066, 155, 1199, 102, 859, 119, 1231,
5981 121, 122, 155, 66, 1230, 1186, 101, 869, 1189, 9,
5982 78, 155, 139, 52, 1208, 1219, 1203, 155, 155, 1245,
5983 119, 1408, 121, 122, 92, 119, 155, 121, 122, 151,
5984 78, 153, 155, 152, 102, 157, 59, 60, 61, 62,
5985 108, 109, 155, 759, 1001, 1268, 967, 95, 96, 1230,
5986 139, 155, 1233, 1010, 1290, 1012, 119, 1014, 121, 122,
5987 52, 1265, 983, 66, 1245, 1208, 1247, 101, 1249, 1250,
5988 1251, 1252, 1253, 141, 1255, 155, 1257, 155, 56, 160,
5989 1261, 1002, 78, 158, 155, 155, 1267, 789, 1269, 155,
5990 155, 793, 152, 141, 142, 143, 144, 145, 146, 1303,
5991 1304, 1305, 155, 155, 1025, 1026, 155, 139, 155, 155,
5992 1067, 155, 155, 1034, 1035, 155, 119, 1340, 121, 122,
5993 56, 1315, 1316, 504, 155, 155, 155, 1308, 155, 1310,
5994 155, 1312, 1309, 155, 1308, 155, 157, 228, 1059, 1320,
5995 231, 232, 233, 157, 1370, 335, 142, 143, 144, 145,
5996 146, 853, 266, 1151, 856, 871, 40, 41, 42, 43,
5997 44, 1365, 1308, 508, 872, 106, 610, 110, 870, 1031,
5998 1374, 108, 1315, 1316, 890, 52, 892, 54, 55, 56,
5999 57, 1102, 1103, 98, 495, 1106, 692, 963, 982, 1370,
6000 1233, 755, 1001, 1397, 910, 912, 1334, 1185, 1379, 1380,
6001 1381, 1382, 1123, 1384, 931, 932, 1387, 1388, 1266, 1,
6002 1391, 1392, 1169, 940, 1395, 1341, 943, 1174, 945, 1093,
6003 1265, 1402, 875, 15, 16, 1182, 1147, 1, 1185, 1214,
6004 1151, 1403, 1402, 1154, 1155, 359, 1287, 1214, 1159, 1160,
6005 1210, 15, 16, 119, 1106, 1310, 1312, 543, 1429, 1430,
6006 1431, 1432, 1433, 111, 1067, 115, 349, 1397, 1067, 1440,
6007 52, 53, -1, -1, 56, 1186, -1, 969, 1189, -1,
6008 972, -1, -1, 1194, -1, 67, 1197, 979, 52, 53,
6009 -1, -1, -1, 985, 52, 78, 54, 55, 56, 57,
6010 1211, -1, 1213, 67, -1, 1216, 1217, 89, -1, -1,
6011 1221, 1222, 95, 96, -1, -1, -1, -1, -1, 1230,
6012 -1, 103, 104, -1, -1, 107, 108, 109, 110, -1,
6013 112, -1, -1, 52, 1245, 54, 55, 56, 57, 103,
6014 104, -1, -1, 107, 1196, -1, -1, 1199, 112, -1,
6015 -1, -1, -1, -1, -1, -1, -1, 1268, -1, 142,
6016 143, 144, 145, 146, 1163, -1, -1, 1219, 1167, -1,
6017 1169, 1063, -1, 1172, -1, 1174, 1287, -1, 1325, -1,
6018 1327, -1, 1329, 102, -1, -1, 1185, 468, 469, 1336,
6019 -1, -1, -1, -1, -1, -1, 477, -1, -1, 1346,
6020 52, -1, 54, 55, 56, 57, 58, -1, 52, 1320,
6021 54, 55, 56, 57, -1, -1, -1, -1, -1, -1,
6022 -1, -1, -1, -1, -1, -1, 78, -1, -1, 1340,
6023 -1, 512, -1, -1, 515, -1, -1, -1, 1349, -1,
6024 92, -1, 1353, -1, 1355, -1, -1, -1, 230, -1,
6025 102, 1303, 1304, 1305, -1, 107, 108, 109, 102, 1370,
6026 -1, 1408, -1, 107, -1, -1, 230, 1414, -1, 1416,
6027 -1, 1418, -1, 255, -1, 257, -1, -1, 260, 261,
6028 -1, -1, -1, -1, 266, -1, -1, -1, -1, 141,
6029 1437, 255, 144, 257, -1, -1, 260, 261, -1, -1,
6030 -1, -1, 266, 285, -1, 157, -1, -1, -1, 590,
6031 -1, -1, 1423, 1365, 1220, -1, -1, -1, -1, -1,
6032 -1, 285, 78, 305, 1323, -1, 1325, -1, 1327, 610,
6033 1329, -1, -1, -1, 615, 1334, -1, 1336, -1, 95,
6034 96, -1, 1341, -1, -1, 1001, -1, 1346, 1240, -1,
6035 -1, -1, -1, 335, -1, 337, 338, 339, 340, -1,
6036 342, 343, -1, -1, -1, -1, -1, 1273, -1, -1,
6037 -1, 335, -1, 337, 338, 339, 340, 1283, 342, 343,
6038 -1, 363, 364, 139, 140, 141, 142, 143, 144, 145,
6039 146, -1, -1, -1, 1300, 1301, 1302, -1, -1, 363,
6040 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1408,
6041 -1, 1067, -1, 1412, -1, 1414, 697, 1416, 400, 1418,
6042 -1, 403, -1, -1, -1, 1034, 1035, 409, 410, 411,
6043 -1, -1, 713, -1, 715, -1, 400, -1, 1437, 403,
6044 -1, -1, -1, 425, -1, 409, 410, 411, -1, -1,
6045 -1, -1, -1, -1, 33, 34, 35, 36, -1, -1,
6046 -1, 425, -1, -1, -1, -1, -1, -1, -1, 451,
6047 49, 50, 51, -1, -1, -1, -1, -1, -1, -1,
6048 59, 60, 61, 62, 63, 1377, -1, 451, -1, -1,
6049 -1, 473, 773, 1102, 1103, -1, -1, 1106, -1, -1,
6050 -1, -1, 52, -1, 54, 55, 56, 57, 58, 473,
6051 -1, -1, -1, 1169, 1123, -1, 1172, -1, 1174, -1,
6052 -1, 802, -1, -1, -1, -1, 508, -1, 78, 1185,
6053 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6054 -1, -1, 92, 525, 508, 527, -1, -1, -1, -1,
6055 1159, -1, 102, 834, -1, -1, -1, 107, 108, 109,
6056 -1, -1, -1, 527, -1, -1, 548, -1, 147, -1,
6057 -1, 852, 554, -1, -1, 52, -1, 54, 55, 56,
6058 57, 58, -1, -1, 548, 1194, -1, -1, 1197, -1,
6059 554, 141, -1, -1, 144, -1, -1, -1, -1, -1,
6060 -1, 78, 1211, -1, 1213, -1, -1, 1216, 1217, -1,
6061 -1, -1, 1221, 1222, -1, -1, 598, 599, -1, 601,
6062 602, -1, -1, -1, -1, 102, -1, -1, 610, -1,
6063 612, 108, 109, 615, 598, 599, -1, 601, 602, -1,
6064 -1, -1, -1, -1, -1, -1, 610, -1, -1, -1,
6065 -1, 615, -1, -1, -1, -1, -1, -1, 939, 1034,
6066 1035, -1, -1, -1, 141, -1, -1, 1323, -1, 1325,
6067 -1, 1327, -1, 1329, -1, -1, -1, 659, 1287, 661,
6068 1336, 962, -1, -1, -1, 1341, -1, 669, -1, -1,
6069 1346, -1, -1, 974, -1, 659, -1, 661, 680, -1,
6070 682, 683, 1034, 1035, -1, 669, -1, -1, -1, -1,
6071 -1, 693, 694, -1, -1, -1, 680, 998, 682, 683,
6072 -1, -1, -1, -1, -1, -1, -1, 1102, 1103, 693,
6073 694, 1106, -1, -1, -1, -1, -1, 719, -1, -1,
6074 1349, -1, 1023, -1, 1353, 727, 1355, -1, 1123, -1,
6075 -1, 733, 1408, -1, -1, 719, 1412, -1, 1414, -1,
6076 1416, -1, 1418, 727, -1, -1, -1, -1, -1, -1,
6077 1102, 1103, -1, -1, 1106, -1, -1, 1058, -1, -1,
6078 -1, 1437, -1, -1, 1159, -1, -1, -1, -1, -1,
6079 -1, 1123, -1, -1, -1, -1, -1, -1, -1, 52,
6080 -1, 54, 55, 56, 57, 58, -1, -1, -1, -1,
6081 -1, -1, -1, -1, 1423, -1, -1, -1, -1, 1194,
6082 -1, -1, 1197, -1, -1, 78, -1, 1159, -1, -1,
6083 812, -1, -1, -1, -1, -1, 1211, -1, 1213, -1,
6084 -1, 1216, 1217, 1, -1, -1, 1221, 1222, -1, 102,
6085 -1, -1, -1, -1, 107, 108, 109, 15, 16, -1,
6086 -1, -1, 1194, -1, -1, 1197, -1, -1, -1, -1,
6087 -1, -1, -1, -1, -1, 1156, -1, -1, -1, 1211,
6088 862, 1213, 864, 865, 1216, 1217, -1, -1, 141, 1221,
6089 1222, 144, -1, -1, 52, 53, -1, -1, 862, -1,
6090 864, 865, -1, -1, -1, -1, -1, -1, -1, 67,
6091 -1, -1, 1287, -1, -1, -1, -1, -1, -1, -1,
6092 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6093 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6094 -1, 1034, 1035, -1, -1, 103, 104, -1, 930, 107,
6095 -1, -1, -1, -1, 112, 1287, -1, -1, -1, -1,
6096 -1, -1, -1, -1, -1, 947, 930, -1, -1, -1,
6097 952, 953, -1, -1, 1349, -1, 958, 959, 1353, -1,
6098 1355, -1, -1, 947, -1, 967, 968, -1, 952, 953,
6099 -1, -1, -1, -1, 958, 959, -1, -1, -1, -1,
6100 -1, 983, -1, 967, 968, -1, -1, -1, -1, 1102,
6101 1103, -1, -1, 1106, -1, -1, -1, 1349, -1, 983,
6102 1002, 1353, -1, 1355, -1, -1, -1, -1, -1, -1,
6103 1123, -1, -1, -1, -1, -1, -1, -1, 1002, -1,
6104 -1, -1, -1, 1025, 1026, 1027, -1, -1, 1423, -1,
6105 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6106 1042, 1025, 1026, 1027, -1, -1, 1159, -1, -1, -1,
6107 -1, -1, 230, -1, -1, -1, -1, 1059, 1042, -1,
6108 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6109 -1, 1423, -1, -1, -1, 1059, -1, 255, -1, 257,
6110 -1, 1194, 260, 261, 1197, -1, -1, -1, 266, -1,
6111 -1, -1, -1, -1, -1, -1, -1, -1, 1211, -1,
6112 1213, -1, -1, 1216, 1217, -1, -1, 285, 1221, 1222,
6113 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6114 1034, 1035, -1, -1, -1, -1, -1, -1, -1, -1,
6115 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6116 -1, -1, -1, -1, -1, 1147, -1, -1, -1, 1151,
6117 -1, -1, 1154, 1155, -1, -1, -1, 335, 1160, 337,
6118 338, 339, 340, -1, 342, 343, -1, 1151, -1, -1,
6119 1154, 1155, -1, -1, 1287, -1, 1160, -1, -1, -1,
6120 -1, -1, -1, -1, 1186, 363, -1, 1189, 1102, 1103,
6121 -1, -1, 1106, -1, -1, -1, -1, -1, 1, -1,
6122 -1, -1, 1186, -1, -1, 1189, 1208, -1, -1, 1123,
6123 -1, -1, 15, 16, -1, -1, -1, -1, -1, -1,
6124 -1, -1, 400, -1, 1208, 403, -1, -1, 1230, -1,
6125 -1, 409, 410, 411, -1, -1, 1349, -1, -1, -1,
6126 1353, -1, 1355, 1245, -1, 1159, 1230, 425, -1, 52,
6127 53, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6128 -1, 1245, -1, -1, 67, -1, 1268, -1, -1, -1,
6129 -1, -1, -1, 451, -1, -1, -1, -1, -1, -1,
6130 1194, -1, -1, 1197, -1, -1, -1, -1, -1, -1,
6131 -1, -1, -1, -1, -1, 473, -1, 1211, -1, 1213,
6132 103, 104, 1216, 1217, 107, -1, 1308, 1221, 1222, 112,
6133 1423, 1034, 1035, 1315, 1316, -1, -1, -1, 1320, -1,
6134 -1, -1, -1, -1, 1308, -1, -1, -1, -1, -1,
6135 508, 1315, 1316, -1, -1, -1, 1320, -1, 1340, -1,
6136 1034, 1035, -1, -1, -1, -1, -1, -1, -1, 527,
6137 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6138 -1, -1, -1, -1, -1, -1, -1, -1, 1370, -1,
6139 548, -1, -1, 1287, -1, -1, 554, -1, -1, 1102,
6140 1103, -1, -1, 1106, -1, -1, 1370, -1, -1, -1,
6141 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6142 1123, -1, -1, -1, -1, -1, -1, -1, 1102, 1103,
6143 -1, -1, 1106, -1, -1, -1, -1, -1, -1, -1,
6144 598, 599, -1, 601, 602, -1, -1, 230, -1, 1123,
6145 -1, -1, 610, -1, -1, 1349, 1159, 615, -1, 1353,
6146 -1, 1355, -1, -1, -1, -1, -1, -1, -1, -1,
6147 -1, -1, 255, -1, 257, -1, -1, 260, 261, -1,
6148 -1, -1, -1, 266, -1, 1159, -1, -1, -1, -1,
6149 -1, 1194, -1, -1, 1197, -1, -1, -1, -1, -1,
6150 -1, 659, 285, 661, -1, -1, -1, -1, 1211, -1,
6151 1213, 669, -1, 1216, 1217, -1, -1, -1, 1221, 1222,
6152 1194, -1, 680, 1197, 682, 683, -1, -1, -1, 1423,
6153 -1, -1, -1, -1, -1, 693, 694, 1211, -1, 1213,
6154 -1, -1, 1216, 1217, -1, -1, -1, 1221, 1222, -1,
6155 -1, -1, 335, -1, 337, 338, 339, 340, -1, 342,
6156 343, 719, -1, -1, -1, -1, -1, -1, -1, 727,
6157 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6158 363, -1, -1, -1, 1287, -1, -1, -1, -1, -1,
6159 -1, -1, -1, -1, -1, -1, -1, 1034, 1035, -1,
6160 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6161 -1, -1, -1, 1287, -1, -1, -1, 400, -1, -1,
6162 403, -1, -1, -1, -1, 1, 409, 410, 411, -1,
6163 -1, -1, -1, -1, -1, -1, -1, -1, -1, 15,
6164 16, -1, 425, -1, -1, -1, 1349, -1, -1, -1,
6165 1353, -1, 1355, -1, -1, -1, -1, -1, -1, -1,
6166 -1, -1, -1, -1, -1, 1102, 1103, -1, 451, 1106,
6167 -1, -1, -1, -1, -1, 1349, 52, 53, -1, 1353,
6168 56, 1355, -1, -1, -1, -1, 1123, -1, -1, -1,
6169 473, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6170 -1, -1, -1, -1, 862, -1, 864, 865, -1, -1,
6171 -1, -1, -1, 89, -1, -1, -1, -1, -1, -1,
6172 1423, -1, 1159, -1, -1, 508, -1, -1, -1, -1,
6173 -1, -1, 108, 109, 110, -1, 112, -1, -1, -1,
6174 -1, -1, -1, -1, 527, 1034, 1035, -1, -1, 1423,
6175 -1, -1, -1, -1, -1, -1, -1, 1194, -1, -1,
6176 1197, -1, -1, -1, -1, 548, -1, -1, -1, -1,
6177 -1, 554, 930, -1, 1211, -1, 1213, -1, -1, 1216,
6178 1217, -1, -1, -1, 1221, 1222, -1, -1, -1, 947,
6179 -1, -1, -1, -1, 952, 953, -1, -1, -1, -1,
6180 958, 959, -1, -1, -1, -1, -1, -1, -1, 967,
6181 968, -1, -1, 1102, 1103, 598, 599, 1106, 601, 602,
6182 -1, -1, -1, -1, -1, 983, -1, 610, -1, -1,
6183 -1, -1, 615, -1, 1123, -1, -1, -1, -1, -1,
6184 -1, -1, -1, -1, 1002, -1, -1, -1, -1, -1,
6185 1287, -1, -1, -1, 230, -1, -1, -1, -1, -1,
6186 -1, -1, -1, -1, -1, -1, -1, 1025, 1026, 1027,
6187 1159, -1, -1, -1, -1, -1, 659, -1, 661, 255,
6188 -1, 257, -1, -1, 1042, -1, 669, -1, -1, -1,
6189 266, -1, -1, -1, -1, -1, -1, 680, -1, 682,
6190 683, 1059, -1, -1, -1, 1194, -1, -1, 1197, 285,
6191 693, 694, 1349, -1, -1, -1, 1353, -1, 1355, -1,
6192 -1, -1, 1211, -1, 1213, -1, -1, 1216, 1217, 305,
6193 -1, -1, 1221, 1222, -1, -1, 719, -1, -1, -1,
6194 -1, 0, -1, -1, 727, -1, -1, -1, -1, 8,
6195 9, 10, -1, -1, 13, 14, 15, -1, 17, 335,
6196 -1, -1, -1, -1, -1, -1, 25, 26, 27, -1,
6197 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
6198 -1, 40, 41, 42, 43, 44, 1423, 363, 364, -1,
6199 -1, -1, -1, 1151, -1, -1, 1154, 1155, 1287, -1,
6200 -1, -1, 1160, -1, -1, -1, -1, -1, -1, 68,
6201 69, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6202 -1, -1, -1, -1, 400, -1, -1, 403, 1186, -1,
6203 -1, 1189, -1, -1, 410, 411, -1, -1, 97, 98,
6204 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6205 1208, -1, -1, 78, 79, 80, 81, 82, 83, 84,
6206 1349, 120, 87, 88, 1353, -1, 1355, -1, -1, -1,
6207 95, 96, 1230, -1, -1, 451, -1, -1, -1, 862,
6208 -1, 864, 865, -1, -1, -1, -1, 1245, -1, -1,
6209 -1, -1, 151, 152, -1, 154, -1, 473, 157, 158,
6210 -1, 160, -1, -1, -1, -1, -1, -1, -1, -1,
6211 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
6212 145, 146, -1, -1, -1, -1, -1, -1, -1, -1,
6213 -1, -1, 508, -1, 1423, -1, -1, -1, -1, -1,
6214 -1, -1, -1, -1, -1, -1, 1, 930, -1, 525,
6215 1308, 527, -1, -1, -1, -1, -1, 1315, 1316, -1,
6216 15, 16, 1320, -1, 947, -1, -1, -1, -1, 952,
6217 953, -1, 548, -1, -1, 958, 959, -1, 554, -1,
6218 -1, -1, -1, -1, 967, 968, -1, -1, -1, -1,
6219 -1, -1, -1, -1, -1, -1, -1, 52, 53, -1,
6220 983, 56, -1, -1, -1, -1, -1, -1, -1, -1,
6221 25, -1, 1370, -1, -1, -1, -1, -1, -1, 1002,
6222 -1, -1, -1, 599, -1, -1, 602, -1, -1, -1,
6223 -1, -1, -1, -1, 89, -1, 612, -1, -1, 615,
6224 -1, -1, 1025, 1026, 1027, -1, -1, -1, -1, -1,
6225 -1, -1, -1, 108, 109, 110, -1, 112, -1, 1042,
6226 -1, -1, -1, 78, 79, 80, 81, 82, 83, 84,
6227 85, 86, 87, 88, 89, 90, 1059, -1, -1, -1,
6228 95, 96, 1, 659, -1, 661, 101, -1, -1, -1,
6229 -1, -1, -1, 669, -1, -1, -1, -1, -1, -1,
6230 -1, -1, -1, -1, 680, -1, 682, -1, -1, -1,
6231 -1, -1, -1, -1, -1, -1, -1, 693, 694, -1,
6232 135, -1, 137, 138, 139, 140, 141, 142, 143, 144,
6233 145, 146, -1, 52, 53, -1, -1, -1, -1, -1,
6234 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6235 -1, 727, -1, -1, -1, -1, -1, 733, -1, -1,
6236 -1, -1, -1, -1, -1, -1, -1, -1, 1151, -1,
6237 -1, 1154, 1155, -1, -1, 230, -1, 1160, -1, -1,
6238 -1, -1, -1, -1, -1, -1, -1, -1, -1, 108,
6239 1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6240 255, -1, 257, 1186, -1, -1, 1189, -1, -1, -1,
6241 -1, 266, -1, -1, -1, -1, -1, -1, -1, -1,
6242 -1, -1, -1, -1, -1, 1208, -1, -1, -1, -1,
6243 285, -1, -1, -1, -1, -1, 812, -1, -1, -1,
6244 -1, 52, 53, -1, -1, 56, -1, 1230, -1, -1,
6245 305, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6246 84, 85, 1245, 87, 88, -1, -1, -1, -1, -1,
6247 -1, 95, 96, -1, -1, -1, -1, -1, 89, -1,
6248 335, -1, -1, -1, -1, -1, -1, -1, -1, 865,
6249 -1, -1, -1, -1, -1, -1, -1, 108, 109, 110,
6250 -1, -1, -1, -1, -1, -1, -1, -1, 363, 364,
6251 -1, 230, -1, 137, 138, 139, 140, 141, 142, 143,
6252 144, 145, 146, -1, -1, 1308, -1, -1, -1, -1,
6253 -1, -1, 1315, 1316, -1, -1, -1, 1320, -1, -1,
6254 -1, -1, -1, -1, -1, 400, -1, 266, 403, -1,
6255 -1, -1, -1, -1, -1, 410, 411, -1, -1, -1,
6256 -1, -1, -1, -1, -1, -1, 285, -1, -1, -1,
6257 -1, 947, -1, -1, -1, -1, 952, 953, -1, -1,
6258 -1, -1, 958, 959, -1, -1, -1, 1370, -1, -1,
6259 -1, 967, -1, -1, -1, -1, 451, -1, -1, -1,
6260 -1, -1, -1, -1, -1, -1, -1, 983, -1, -1,
6261 -1, -1, -1, -1, -1, -1, 335, -1, 473, 230,
6262 -1, -1, -1, -1, -1, -1, 1002, -1, -1, -1,
6263 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6264 -1, -1, -1, -1, 363, -1, -1, -1, -1, 1025,
6265 1026, 1027, -1, 508, -1, 266, -1, -1, -1, -1,
6266 -1, -1, -1, -1, -1, -1, 1042, -1, -1, -1,
6267 525, -1, 527, -1, 285, -1, 52, 53, -1, -1,
6268 56, -1, -1, 1059, 403, -1, -1, -1, -1, -1,
6269 -1, 410, 411, 548, 305, -1, -1, -1, -1, 554,
6270 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
6271 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
6272 96, -1, -1, -1, 335, -1, -1, -1, -1, -1,
6273 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
6274 -1, -1, -1, -1, 599, -1, -1, 602, -1, -1,
6275 -1, -1, 363, 364, -1, -1, -1, 612, -1, -1,
6276 615, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6277 146, 1147, 148, 149, -1, 1151, -1, -1, 1154, 1155,
6278 156, 157, -1, -1, 1160, -1, -1, -1, -1, 508,
6279 -1, -1, 403, -1, -1, -1, 1, -1, -1, 410,
6280 411, -1, -1, -1, 659, -1, 661, -1, -1, -1,
6281 1186, -1, -1, 1189, 669, -1, -1, -1, -1, -1,
6282 -1, -1, -1, -1, -1, 680, -1, 682, -1, 548,
6283 -1, -1, -1, -1, -1, 554, -1, -1, 693, 694,
6284 -1, -1, -1, -1, -1, -1, -1, 52, 53, -1,
6285 -1, 56, -1, -1, 1230, -1, -1, -1, -1, -1,
6286 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1245,
6287 -1, -1, 727, -1, -1, -1, -1, -1, 733, -1,
6288 599, -1, -1, 602, 89, -1, -1, -1, -1, -1,
6289 -1, -1, 1268, -1, -1, -1, 615, 508, -1, -1,
6290 -1, -1, -1, 108, 109, 110, 111, -1, -1, -1,
6291 -1, -1, -1, -1, 525, -1, -1, -1, -1, 1,
6292 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6293 -1, -1, 1308, -1, -1, -1, -1, 548, -1, -1,
6294 659, -1, 661, 554, 1320, -1, -1, -1, -1, -1,
6295 -1, -1, -1, -1, -1, -1, -1, 812, -1, -1,
6296 -1, -1, -1, 682, 1340, -1, -1, -1, -1, -1,
6297 52, 53, -1, -1, 693, 694, -1, -1, -1, -1,
6298 -1, -1, -1, -1, -1, -1, -1, -1, 599, -1,
6299 -1, 602, -1, -1, 1370, -1, -1, -1, -1, -1,
6300 -1, 612, -1, -1, 615, -1, -1, -1, 727, -1,
6301 865, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6302 -1, -1, -1, -1, -1, 230, -1, -1, -1, -1,
6303 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6304 -1, -1, -1, -1, -1, -1, -1, -1, 659, -1,
6305 661, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6306 -1, 266, -1, -1, -1, -1, -1, -1, -1, -1,
6307 -1, 682, -1, -1, -1, -1, -1, -1, -1, -1,
6308 285, -1, 693, 694, -1, -1, -1, -1, -1, -1,
6309 -1, -1, 947, -1, -1, -1, -1, 952, 953, -1,
6310 305, -1, -1, 958, 959, -1, -1, -1, -1, -1,
6311 -1, -1, 967, -1, -1, -1, 727, -1, -1, -1,
6312 -1, -1, 733, -1, -1, -1, -1, -1, 983, -1,
6313 335, 742, -1, -1, -1, -1, -1, -1, -1, -1,
6314 -1, -1, -1, -1, -1, -1, 865, 1002, 230, -1,
6315 -1, -1, -1, -1, -1, -1, -1, -1, 363, 364,
6316 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6317 1025, 1026, 1027, -1, 44, -1, -1, -1, -1, -1,
6318 -1, -1, -1, -1, 266, -1, -1, 1042, -1, -1,
6319 -1, -1, -1, -1, -1, -1, -1, -1, 403, -1,
6320 -1, 812, -1, 285, 1059, 410, 411, -1, 78, 79,
6321 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6322 90, -1, -1, -1, -1, 95, 96, -1, -1, -1,
6323 -1, -1, -1, 952, 953, -1, -1, -1, -1, 958,
6324 959, -1, -1, -1, -1, -1, -1, -1, 967, -1,
6325 -1, -1, -1, 335, 865, -1, -1, -1, -1, -1,
6326 -1, -1, -1, -1, 983, 135, -1, 137, 138, 139,
6327 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6328 -1, 363, -1, 1002, -1, 155, -1, -1, -1, -1,
6329 -1, -1, 1147, -1, -1, -1, 1151, -1, -1, 1154,
6330 1155, -1, -1, 508, -1, 1160, 1025, 1026, 1027, -1,
6331 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6332 525, 403, -1, 1042, -1, -1, -1, -1, 410, 411,
6333 -1, 1186, -1, -1, 1189, -1, -1, -1, -1, -1,
6334 1059, 952, 953, 548, -1, -1, -1, 958, 959, 554,
6335 -1, -1, -1, -1, -1, -1, 967, -1, -1, -1,
6336 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6337 -1, -1, 983, -1, -1, 1230, -1, -1, -1, -1,
6338 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6339 1245, 1002, -1, -1, 599, -1, -1, 602, -1, -1,
6340 -1, -1, -1, -1, -1, -1, -1, 612, -1, -1,
6341 -1, -1, -1, 1268, 1025, 1026, 1027, -1, -1, -1,
6342 -1, -1, -1, -1, -1, -1, 508, -1, 1147, -1,
6343 -1, 1042, 1151, -1, -1, 1154, 1155, -1, -1, -1,
6344 -1, 1160, -1, -1, -1, -1, -1, -1, 1059, -1,
6345 -1, -1, -1, 1308, 659, -1, 661, -1, -1, -1,
6346 -1, 44, -1, -1, -1, 1320, 548, 1186, -1, -1,
6347 1189, -1, 554, -1, -1, -1, -1, 682, -1, -1,
6348 -1, -1, -1, -1, -1, 1340, -1, -1, -1, -1,
6349 -1, -1, -1, -1, -1, 78, 79, 80, 81, 82,
6350 83, 84, 85, 86, 87, 88, 89, 90, -1, -1,
6351 -1, 1230, 95, 96, -1, 1370, -1, 599, -1, -1,
6352 602, -1, -1, -1, -1, -1, 1245, -1, 733, -1,
6353 -1, -1, -1, 615, -1, -1, 1147, -1, -1, -1,
6354 1151, -1, -1, 1154, 1155, -1, -1, -1, -1, 1160,
6355 15, 16, 135, -1, 137, 138, 139, 140, 141, 142,
6356 143, 144, 145, 146, -1, -1, -1, -1, -1, -1,
6357 -1, -1, -1, -1, -1, 1186, -1, 659, 1189, 661,
6358 -1, -1, 47, 48, 49, 50, -1, -1, -1, 54,
6359 55, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6360 682, 1320, 67, 68, -1, -1, -1, 812, -1, -1,
6361 -1, 693, 694, 33, 34, 35, 36, -1, -1, 1230,
6362 -1, -1, -1, -1, -1, -1, -1, -1, -1, 49,
6363 50, 51, 52, -1, 1245, -1, 56, -1, -1, 59,
6364 60, 61, 62, 63, -1, 727, -1, 112, -1, -1,
6365 -1, 1370, -1, -1, -1, -1, -1, 1268, -1, -1,
6366 865, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6367 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6368 -1, -1, 102, -1, 104, 105, -1, 107, -1, -1,
6369 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6370 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1320,
6371 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6372 140, -1, -1, -1, -1, -1, -1, 147, -1, 1340,
6373 -1, -1, -1, -1, 154, -1, -1, -1, -1, -1,
6374 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6375 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1370,
6376 -1, -1, 967, 228, -1, -1, 231, 232, 233, -1,
6377 235, 78, 79, 80, 81, 82, 83, 84, 983, -1,
6378 87, 88, -1, 865, 33, 34, 35, 36, 95, 96,
6379 255, -1, 257, -1, -1, -1, -1, 1002, -1, -1,
6380 49, 50, 51, 52, -1, -1, -1, 56, -1, 58,
6381 59, 60, 61, 62, 63, -1, -1, -1, -1, -1,
6382 1025, 1026, -1, -1, -1, -1, -1, -1, -1, 78,
6383 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6384 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6385 99, -1, -1, 102, 1059, 104, 105, -1, 107, 108,
6386 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6387 952, 953, -1, -1, -1, -1, 958, 959, -1, -1,
6388 -1, -1, -1, -1, -1, 967, -1, -1, -1, -1,
6389 -1, 140, -1, -1, -1, -1, -1, -1, 147, -1,
6390 -1, 983, -1, 368, 369, 370, 371, 372, -1, -1,
6391 375, 376, 377, 378, 379, 380, 381, 382, -1, 384,
6392 1002, -1, 387, 388, 389, 390, 391, 392, 393, 394,
6393 395, 396, -1, -1, -1, 400, -1, -1, -1, -1,
6394 -1, -1, 1147, 1025, 1026, 1027, 1151, -1, -1, 1154,
6395 1155, -1, -1, -1, -1, 1160, -1, -1, -1, -1,
6396 1042, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6397 -1, -1, -1, -1, -1, -1, -1, 1059, -1, -1,
6398 -1, 1186, -1, -1, 1189, -1, 451, -1, -1, -1,
6399 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6400 -1, -1, -1, 468, 469, -1, -1, -1, 473, -1,
6401 -1, -1, 477, -1, 479, -1, -1, -1, -1, -1,
6402 -1, -1, -1, -1, -1, 1230, -1, -1, -1, -1,
6403 -1, -1, 497, -1, -1, -1, -1, -1, -1, -1,
6404 1245, -1, -1, -1, -1, -1, -1, 512, -1, -1,
6405 515, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6406 -1, -1, 527, 1268, -1, -1, -1, -1, -1, 1151,
6407 -1, -1, 1154, 1155, -1, -1, -1, -1, 1160, -1,
6408 545, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6409 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6410 33, 34, 35, 36, 1186, -1, -1, 1189, -1, -1,
6411 -1, -1, -1, -1, -1, 1320, 49, 50, 51, 52,
6412 -1, -1, -1, 56, -1, 590, 59, 60, 61, 62,
6413 63, -1, -1, 598, -1, 1340, 601, -1, -1, -1,
6414 -1, -1, -1, -1, -1, 610, -1, -1, 1230, -1,
6415 615, -1, -1, -1, -1, -1, -1, -1, 91, 92,
6416 -1, -1, -1, 1245, -1, 1370, 99, -1, -1, 102,
6417 -1, 104, 105, -1, 107, -1, -1, 110, 111, 112,
6418 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
6419 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6420 -1, -1, -1, -1, 669, -1, -1, 140, -1, -1,
6421 -1, -1, -1, -1, 147, 680, -1, -1, -1, -1,
6422 -1, -1, -1, -1, -1, -1, -1, -1, 693, 694,
6423 -1, -1, 697, 698, -1, -1, -1, -1, 1320, -1,
6424 -1, -1, -1, -1, 709, 710, -1, -1, 713, -1,
6425 715, -1, -1, -1, -1, -1, -1, 722, 723, -1,
6426 -1, -1, 727, 78, 79, 80, 81, 82, 83, 84,
6427 85, 86, 87, 88, 89, 90, -1, -1, -1, -1,
6428 95, 96, -1, -1, -1, -1, -1, -1, 1370, -1,
6429 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6430 -1, -1, -1, -1, -1, -1, -1, -1, 773, -1,
6431 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6432 135, -1, 137, 138, 139, 140, 141, 142, 143, 144,
6433 145, 146, -1, -1, -1, -1, -1, 802, -1, 154,
6434 -1, -1, -1, 0, 1, -1, 3, 4, 5, 6,
6435 7, 8, 9, 10, 11, 12, -1, 14, 15, 16,
6436 17, 18, 19, 20, 21, 22, 23, 24, 25, 834,
6437 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6438 -1, -1, 39, -1, -1, -1, -1, 852, 45, 46,
6439 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6440 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6441 -1, 68, -1, -1, -1, -1, -1, 882, -1, 76,
6442 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6443 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6444 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6445 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6446 117, 118, -1, 120, -1, 930, -1, -1, -1, -1,
6447 -1, -1, -1, -1, 939, -1, -1, -1, -1, -1,
6448 -1, -1, 947, -1, -1, -1, 951, 952, 953, -1,
6449 147, 148, 149, 958, 959, 152, -1, 962, -1, -1,
6450 -1, 158, -1, 160, -1, -1, -1, -1, -1, 974,
6451 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6452 -1, -1, -1, -1, -1, -1, -1, 992, 993, -1,
6453 995, 996, -1, 998, -1, 1000, -1, -1, -1, -1,
6454 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6455 -1, -1, -1, -1, 1019, 1020, -1, -1, 1023, -1,
6456 -1, -1, 1027, 1028, 0, 1, -1, 3, 4, 5,
6457 6, 7, -1, -1, -1, 11, 12, 1042, -1, -1,
6458 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6459 -1, -1, -1, 1058, 30, 31, 32, 33, 34, 35,
6460 36, 1066, -1, 39, -1, -1, -1, -1, -1, 45,
6461 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6462 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6463 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6464 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6465 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6466 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6467 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6468 116, 117, 118, -1, 120, -1, -1, -1, -1, -1,
6469 -1, 1156, -1, -1, -1, -1, -1, -1, -1, -1,
6470 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6471 -1, 147, 148, 149, -1, -1, 0, 1, 154, 3,
6472 4, 5, 6, 7, 160, -1, -1, 11, 12, -1,
6473 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6474 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6475 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6476 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6477 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6478 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6479 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6480 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6481 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6482 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6483 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6484 -1, -1, -1, 1308, -1, -1, -1, -1, -1, -1,
6485 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6486 -1, -1, -1, 147, 148, 149, -1, -1, 0, 1,
6487 154, 3, 4, 5, 6, 7, 160, -1, -1, 11,
6488 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6489 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6490 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6491 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6492 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6493 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6494 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6495 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6496 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6497 102, 103, 104, 105, -1, 107, -1, -1, 110, 111,
6498 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
6499 -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
6500 -1, -1, -1, -1, 8, 9, 10, -1, -1, 13,
6501 14, 15, -1, 17, -1, 147, 148, 149, -1, -1,
6502 152, 25, 26, 27, 28, 29, -1, -1, 160, -1,
6503 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6504 44, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6505 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6506 -1, 95, 96, -1, 68, 69, -1, -1, -1, -1,
6507 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6508 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6509 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
6510 -1, 135, 106, 137, 138, 139, 140, 141, 142, 143,
6511 144, 145, 146, -1, -1, -1, 120, -1, -1, 123,
6512 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6513 134, 135, 136, 137, 138, 139, 140, 141, 142, 143,
6514 144, 145, 146, -1, -1, -1, -1, 151, 152, 153,
6515 154, 155, 0, -1, 158, 159, 160, -1, -1, -1,
6516 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
6517 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
6518 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
6519 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
6520 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6521 88, 89, 90, -1, -1, -1, -1, 95, 96, -1,
6522 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
6523 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6524 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
6525 98, -1, 100, 101, -1, -1, -1, -1, 106, 137,
6526 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6527 -1, -1, 120, -1, -1, 123, -1, -1, -1, -1,
6528 -1, -1, -1, -1, -1, -1, 134, 135, 136, 137,
6529 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6530 -1, -1, -1, -1, 152, 153, 154, 155, 0, -1,
6531 158, 159, 160, -1, -1, -1, 8, 9, 10, -1,
6532 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
6533 -1, -1, -1, 25, -1, 27, 28, 29, -1, -1,
6534 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
6535 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
6536 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6537 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
6538 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6539 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6540 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
6541 -1, -1, -1, -1, 106, -1, -1, -1, -1, -1,
6542 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
6543 -1, 123, -1, -1, -1, -1, -1, -1, -1, -1,
6544 -1, -1, 134, 135, 136, 137, 138, 139, 140, 141,
6545 142, 143, 144, 145, 146, -1, -1, -1, -1, -1,
6546 152, 153, 154, 155, 0, -1, 158, 159, 160, -1,
6547 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
6548 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6549 26, 27, 28, 29, -1, -1, -1, -1, -1, -1,
6550 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6551 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6552 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6553 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6554 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6555 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6556 96, 97, 98, -1, -1, 101, -1, -1, -1, -1,
6557 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6558 -1, -1, -1, -1, 120, -1, -1, 123, -1, -1,
6559 -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
6560 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6561 146, -1, -1, -1, -1, 151, 152, 153, 154, 155,
6562 0, -1, 158, 159, 160, -1, -1, -1, 8, 9,
6563 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
6564 -1, -1, -1, -1, -1, 25, 26, 27, 28, 29,
6565 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
6566 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
6567 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6568 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
6569 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
6570 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6571 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
6572 -1, 101, -1, -1, -1, -1, 106, -1, -1, -1,
6573 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6574 120, -1, -1, 123, -1, -1, -1, -1, -1, -1,
6575 -1, -1, -1, -1, -1, 135, 136, 137, 138, 139,
6576 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6577 -1, 151, 152, 153, 154, 155, 0, -1, 158, 159,
6578 160, -1, -1, -1, 8, 9, 10, -1, -1, 13,
6579 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
6580 -1, 25, 26, 27, 28, -1, -1, -1, -1, -1,
6581 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6582 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6583 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6584 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
6585 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6586 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6587 -1, 95, 96, 97, 98, -1, -1, 101, -1, -1,
6588 -1, -1, 106, -1, -1, -1, -1, -1, -1, -1,
6589 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
6590 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6591 -1, 135, -1, 137, 138, 139, 140, 141, 142, 143,
6592 144, 145, 146, -1, -1, -1, -1, 151, 152, 153,
6593 154, 155, 0, 157, 158, 159, 160, -1, -1, -1,
6594 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
6595 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
6596 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
6597 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
6598 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6599 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6600 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
6601 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6602 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
6603 98, -1, -1, 101, -1, -1, -1, -1, 106, -1,
6604 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6605 -1, -1, 120, -1, -1, 123, -1, -1, -1, -1,
6606 -1, -1, -1, -1, -1, -1, -1, 135, 136, 137,
6607 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6608 -1, -1, -1, -1, 152, 153, 154, 155, 0, -1,
6609 158, 159, 160, -1, -1, -1, 8, 9, 10, -1,
6610 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
6611 -1, -1, -1, 25, 26, 27, 28, -1, -1, -1,
6612 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
6613 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
6614 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6615 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
6616 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6617 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6618 -1, -1, -1, 95, 96, 97, 98, -1, -1, 101,
6619 -1, -1, -1, -1, 106, -1, -1, -1, -1, -1,
6620 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
6621 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6622 -1, -1, -1, 135, -1, 137, 138, 139, 140, 141,
6623 142, 143, 144, 145, 146, -1, -1, -1, -1, 151,
6624 152, 153, 154, 155, 0, 157, 158, 159, 160, -1,
6625 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
6626 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6627 -1, 27, 28, -1, -1, -1, -1, -1, -1, -1,
6628 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6629 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6630 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6631 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6632 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6633 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6634 96, 97, 98, -1, 100, 101, -1, -1, -1, -1,
6635 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6636 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
6637 -1, -1, -1, -1, -1, -1, -1, -1, 134, 135,
6638 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6639 146, -1, -1, -1, -1, 151, 152, 153, 154, 155,
6640 0, -1, 158, 159, 160, -1, -1, -1, 8, 9,
6641 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
6642 -1, -1, -1, -1, -1, 25, -1, 27, 28, -1,
6643 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
6644 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
6645 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6646 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
6647 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
6648 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6649 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
6650 -1, 101, -1, -1, -1, -1, 106, -1, -1, -1,
6651 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6652 120, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6653 -1, -1, -1, -1, -1, 135, -1, 137, 138, 139,
6654 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6655 -1, -1, 152, 153, 154, 155, 0, 157, 158, 159,
6656 160, -1, -1, -1, 8, 9, 10, -1, -1, -1,
6657 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
6658 -1, 25, 26, -1, -1, -1, -1, -1, -1, -1,
6659 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6660 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6661 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6662 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
6663 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6664 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6665 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
6666 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6667 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
6668 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6669 134, 135, -1, 137, 138, 139, 140, 141, 142, 143,
6670 144, 145, 146, -1, -1, -1, -1, 151, 152, 153,
6671 154, 155, 0, -1, 158, -1, 160, -1, -1, -1,
6672 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
6673 -1, -1, -1, -1, -1, -1, -1, 25, 26, -1,
6674 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
6675 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
6676 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6677 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6678 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
6679 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6680 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
6681 98, -1, 100, 101, -1, -1, -1, -1, -1, -1,
6682 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6683 -1, -1, 120, -1, -1, -1, -1, -1, -1, -1,
6684 -1, -1, -1, -1, -1, -1, 134, 135, -1, 137,
6685 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6686 -1, -1, -1, 151, 152, 153, 154, 155, 0, -1,
6687 158, -1, 160, -1, -1, -1, 8, 9, 10, -1,
6688 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
6689 -1, -1, -1, 25, -1, -1, -1, -1, -1, -1,
6690 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
6691 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
6692 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6693 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
6694 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6695 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6696 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
6697 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6698 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
6699 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6700 -1, -1, 134, 135, -1, 137, 138, 139, 140, 141,
6701 142, 143, 144, 145, 146, -1, -1, -1, -1, 151,
6702 152, 153, 154, 155, 0, -1, 158, -1, 160, -1,
6703 -1, -1, 8, 9, 10, -1, -1, -1, 14, 15,
6704 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6705 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6706 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6707 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6708 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6709 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6710 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6711 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6712 96, 97, 98, -1, 100, 101, -1, -1, -1, -1,
6713 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6714 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
6715 -1, -1, -1, -1, -1, -1, -1, -1, 134, 135,
6716 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6717 146, -1, -1, -1, -1, 151, 152, 153, 154, 155,
6718 -1, -1, 158, 1, 160, 3, 4, 5, 6, 7,
6719 8, 9, 10, 11, 12, -1, -1, 15, 16, -1,
6720 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
6721 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6722 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6723 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6724 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6725 68, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6726 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6727 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6728 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
6729 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
6730 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6731 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6732 -1, -1, -1, -1, -1, -1, -1, -1, -1, 147,
6733 148, 149, -1, -1, -1, 1, 154, 3, 4, 5,
6734 6, 7, 160, -1, 10, 11, 12, -1, 14, 15,
6735 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6736 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6737 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6738 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6739 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6740 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
6741 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6742 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6743 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6744 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6745 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6746 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6747 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6748 -1, 147, 148, 149, -1, -1, -1, 1, 154, 3,
6749 4, 5, 6, 7, 160, -1, 10, 11, 12, -1,
6750 -1, 15, 16, 17, 18, 19, 20, 21, 22, 23,
6751 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6752 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6753 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6754 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6755 64, 65, -1, -1, 68, -1, -1, -1, -1, -1,
6756 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6757 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6758 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6759 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6760 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6761 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6762 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6763 -1, -1, -1, 147, 148, 149, -1, -1, -1, 1,
6764 154, 3, 4, 5, 6, 7, 160, -1, 10, 11,
6765 12, -1, -1, 15, 16, -1, 18, 19, 20, 21,
6766 22, 23, 24, 25, -1, -1, -1, -1, 30, 31,
6767 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6768 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6769 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6770 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
6771 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6772 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6773 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6774 102, 103, 104, 105, -1, 107, -1, -1, 110, 111,
6775 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
6776 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6777 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6778 -1, -1, -1, -1, -1, 147, 148, 149, -1, -1,
6779 -1, 1, 154, 3, 4, 5, 6, 7, 160, -1,
6780 10, 11, 12, -1, -1, 15, 16, -1, 18, 19,
6781 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
6782 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6783 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
6784 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6785 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
6786 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
6787 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6788 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6789 -1, -1, 102, 103, 104, 105, -1, 107, -1, -1,
6790 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6791 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6792 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6793 -1, -1, -1, -1, -1, -1, -1, 147, 148, 149,
6794 -1, -1, -1, 1, 154, 3, 4, 5, 6, 7,
6795 160, 9, 10, 11, 12, -1, -1, -1, 16, -1,
6796 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
6797 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6798 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6799 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6800 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6801 68, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6802 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6803 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6804 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
6805 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
6806 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6807 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6808 -1, -1, -1, -1, -1, -1, -1, -1, -1, 147,
6809 148, 149, -1, -1, -1, 1, 154, 3, 4, 5,
6810 6, 7, 160, -1, 10, 11, 12, -1, -1, -1,
6811 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6812 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6813 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6814 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6815 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6816 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
6817 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6818 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6819 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6820 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6821 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6822 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6823 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6824 -1, 147, 148, 149, -1, -1, -1, 1, 154, 3,
6825 4, 5, 6, 7, 160, -1, -1, 11, 12, -1,
6826 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6827 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6828 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6829 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6830 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6831 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6832 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6833 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6834 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6835 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6836 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6837 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6838 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6839 -1, -1, -1, 147, 148, 149, -1, -1, -1, -1,
6840 154, -1, -1, -1, 158, 1, 160, 3, 4, 5,
6841 6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6842 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6843 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6844 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6845 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6846 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6847 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6848 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6849 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6850 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6851 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6852 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6853 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6854 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6855 -1, 147, 148, 149, -1, -1, -1, -1, 154, -1,
6856 -1, -1, 158, 1, 160, 3, 4, 5, 6, 7,
6857 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
6858 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
6859 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6860 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6861 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6862 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6863 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6864 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6865 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6866 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
6867 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
6868 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6869 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6870 -1, -1, -1, -1, -1, -1, -1, -1, -1, 147,
6871 148, 149, -1, -1, 152, 1, 154, 3, 4, 5,
6872 6, 7, 160, -1, -1, 11, 12, -1, -1, -1,
6873 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6874 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6875 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6876 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6877 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6878 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6879 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6880 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6881 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6882 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6883 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6884 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6885 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6886 -1, 147, 148, 149, -1, -1, 152, 1, 154, 3,
6887 4, 5, -1, 7, 160, -1, -1, 11, 12, -1,
6888 -1, -1, 16, 17, 18, 19, 20, 21, 22, 23,
6889 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6890 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6891 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6892 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6893 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6894 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6895 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6896 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6897 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
6898 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6899 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6900 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6901 -1, -1, -1, 147, 148, 149, -1, -1, -1, -1,
6902 154, -1, -1, -1, -1, -1, 160, 3, 4, 5,
6903 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
6904 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
6905 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6906 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
6907 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6908 56, 57, -1, -1, -1, -1, -1, -1, -1, -1,
6909 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6910 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
6911 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
6912 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6913 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
6914 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6915 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6916 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6917 146, -1, 148, 149, -1, -1, -1, -1, -1, -1,
6918 156, 157, 3, 4, 5, 6, 7, 8, 9, 10,
6919 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
6920 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
6921 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
6922 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
6923 51, 52, 53, 54, 55, 56, 57, -1, -1, -1,
6924 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6925 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
6926 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
6927 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
6928 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
6929 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6930 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6931 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
6932 141, 142, 143, 144, 145, 146, -1, 148, 149, -1,
6933 -1, -1, -1, -1, -1, 156, 3, 4, 5, 6,
6934 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
6935 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
6936 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6937 37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
6938 47, 48, 49, 50, 51, 52, 53, 54, -1, 56,
6939 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6940 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6941 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
6942 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
6943 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6944 107, 108, -1, -1, 111, -1, -1, -1, -1, -1,
6945 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6946 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6947 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6948 -1, 148, 149, -1, -1, -1, -1, -1, -1, 156,
6949 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
6950 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
6951 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
6952 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
6953 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
6954 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
6955 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6956 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
6957 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
6958 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
6959 -1, -1, -1, -1, 107, 108, -1, -1, 111, -1,
6960 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6961 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6962 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
6963 143, 144, 145, 146, -1, 148, 149, -1, -1, -1,
6964 -1, -1, -1, 156, 3, 4, 5, 6, 7, 8,
6965 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
6966 19, 20, 21, 22, 23, 24, 25, 26, -1, -1,
6967 -1, 30, 31, 32, 33, 34, 35, 36, 37, 38,
6968 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6969 49, 50, 51, 52, 53, -1, -1, 56, -1, -1,
6970 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6971 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
6972 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
6973 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
6974 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
6975 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6976 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6977 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
6978 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
6979 149, 3, 4, 5, -1, 7, -1, 156, -1, 11,
6980 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6981 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6982 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6983 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6984 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6985 62, 63, 64, 65, -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, -1, -1, -1,
6988 -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6989 102, 103, 104, 105, -1, -1, -1, -1, 110, 111,
6990 112, 113, 114, 115, 116, 117, 118, -1, -1, 3,
6991 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6992 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6993 24, -1, -1, -1, -1, 147, 30, 31, 32, 33,
6994 34, 35, 36, 155, -1, 39, -1, -1, -1, -1,
6995 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6996 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6997 64, 65, -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, -1, -1, -1, -1, -1,
7000 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
7001 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
7002 114, 115, 116, 117, 118, -1, -1, 3, 4, 5,
7003 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7004 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7005 -1, -1, -1, 147, 30, 31, 32, 33, 34, 35,
7006 36, 155, -1, 39, -1, -1, -1, -1, -1, -1,
7007 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7008 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
7009 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7010 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7011 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7012 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7013 -1, 107, 108, 109, 110, 111, 112, 113, 114, 115,
7014 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
7015 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7016 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
7017 7, 147, 148, 149, 11, 12, -1, -1, 154, 16,
7018 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
7019 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
7020 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
7021 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
7022 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
7023 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7024 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7025 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
7026 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
7027 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
7028 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
7029 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7030 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
7031 147, 148, 149, 11, 12, -1, -1, 154, 16, -1,
7032 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
7033 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
7034 -1, 39, -1, -1, -1, -1, -1, 45, 46, -1,
7035 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7036 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7037 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7038 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7039 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7040 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7041 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7042 118, -1, -1, 1, -1, 3, 4, 5, -1, 7,
7043 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7044 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7045 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7046 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7047 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7048 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7049 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7050 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7051 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7052 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7053 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7054 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7055 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7056 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7057 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7058 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7059 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7060 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7061 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7062 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7063 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7064 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7065 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
7066 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7067 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7068 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7069 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7070 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7071 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7072 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7073 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7074 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7075 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7076 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7077 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
7078 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7079 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7080 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7081 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7082 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7083 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7084 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7085 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7086 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7087 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7088 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7089 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
7090 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7091 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7092 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7093 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7094 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7095 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7096 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7097 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7098 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7099 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7100 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7101 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
7102 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7103 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7104 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7105 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7106 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7107 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7108 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7109 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7110 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7111 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7112 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7113 108, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7114 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7115 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7116 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7117 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7118 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7119 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7120 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7121 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7122 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7123 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7124 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7125 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
7126 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7127 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7128 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7129 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7130 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7131 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7132 58, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7133 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7134 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7135 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7136 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7137 108, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7138 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7139 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7140 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7141 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7142 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7143 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7144 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7145 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7146 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7147 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7148 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7149 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7150 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7151 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7152 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7153 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7154 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7155 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7156 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7157 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7158 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7159 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7160 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7161 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7162 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7163 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7164 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7165 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7166 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7167 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7168 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7169 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7170 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7171 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7172 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7173 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7174 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7175 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7176 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7177 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7178 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7179 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7180 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7181 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7182 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7183 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7184 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7185 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7186 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7187 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7188 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7189 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7190 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7191 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7192 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7193 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7194 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7195 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7196 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7197 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7198 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7199 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7200 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7201 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7202 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7203 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7204 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7205 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7206 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7207 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7208 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7209 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7210 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7211 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7212 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7213 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7214 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7215 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7216 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7217 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7218 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7219 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7220 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7221 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7222 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7223 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7224 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7225 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7226 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7227 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7228 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7229 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7230 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7231 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7232 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7233 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7234 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7235 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7236 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7237 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7238 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7239 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7240 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7241 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7242 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7243 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7244 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7245 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7246 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7247 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7248 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7249 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7250 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7251 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7252 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7253 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7254 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7255 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7256 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7257 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7258 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7259 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7260 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7261 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7262 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7263 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7264 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7265 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7266 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7267 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7268 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7269 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7270 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7271 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7272 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7273 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7274 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7275 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7276 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7277 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7278 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7279 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7280 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7281 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7282 118, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7283 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7284 18, 19, 20, 21, 22, 23, 24, -1, -1, 147,
7285 148, 149, 30, 31, 32, 33, 34, 35, 36, -1,
7286 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7287 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7288 -1, 59, 60, 61, 62, 63, 64, 65, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7292 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7293 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7294 118, -1, -1, 3, 4, 5, -1, 7, -1, -1,
7295 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
7296 20, 21, 22, 23, 24, -1, -1, -1, -1, 147,
7297 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
7298 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
7299 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
7300 60, 61, 62, 63, 64, 65, -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, -1,
7303 -1, -1, -1, -1, -1, -1, -1, -1, -1, 99,
7304 -1, -1, 102, 103, 104, 105, -1, 107, -1, -1,
7305 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
7306 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
7307 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
7308 22, 23, 24, -1, -1, -1, -1, 147, 30, 31,
7309 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
7310 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
7311 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
7312 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
7313 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7314 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7315 -1, -1, -1, 95, -1, -1, -1, 99, -1, -1,
7316 102, 103, 104, 105, -1, -1, -1, -1, 110, 111,
7317 112, 113, 114, 115, 116, 117, 118, -1, -1, 3,
7318 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
7319 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
7320 24, -1, -1, -1, -1, 147, 30, 31, 32, 33,
7321 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
7322 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
7323 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
7324 64, 65, -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, -1, -1, -1, -1, -1,
7327 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
7328 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
7329 114, 115, 116, 117, 118, -1, -1, 3, 4, 5,
7330 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7331 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7332 -1, -1, -1, 147, 30, 31, 32, 33, 34, 35,
7333 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7334 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7335 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
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, -1, -1, -1, -1, -1, -1, -1,
7339 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7340 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
7341 116, 117, 118, -1, -1, 3, 4, 5, -1, 7,
7342 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7343 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
7344 -1, 147, 30, 31, 32, 33, 34, 35, 36, -1,
7345 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7346 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7347 -1, 59, 60, 61, 62, 63, 64, 65, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7351 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7352 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7353 118, -1, -1, 3, 4, 5, -1, 7, -1, -1,
7354 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
7355 20, 21, 22, 23, 24, -1, -1, -1, -1, 147,
7356 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
7357 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
7358 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
7359 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
7360 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7361 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7362 -1, -1, -1, -1, -1, -1, -1, -1, -1, 99,
7363 -1, -1, 102, 103, 104, 105, 33, 34, 35, 36,
7364 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
7365 -1, -1, 49, 50, 51, 52, -1, -1, -1, 56,
7366 -1, -1, 59, 60, 61, 62, 63, -1, -1, -1,
7367 -1, -1, -1, -1, -1, -1, -1, 147, -1, -1,
7368 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7369 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
7370 -1, -1, 99, -1, -1, 102, -1, 104, 105, -1,
7371 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
7372 117, 118, -1, -1, -1, -1, -1, 52, 53, -1,
7373 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
7374 -1, -1, -1, 140, -1, -1, -1, -1, -1, -1,
7375 147, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7376 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7377 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7378 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7379 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7380 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7381 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7382 145, 146, -1, 148, 149, 52, 53, -1, -1, 56,
7383 -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
7384 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7385 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7386 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7387 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7388 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
7389 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7390 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7391 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7392 -1, 148, 149, 52, 53, -1, -1, 56, -1, 156,
7393 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7394 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7395 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7396 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7397 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
7398 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7399 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7400 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
7401 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
7402 149, 52, 53, -1, -1, 56, -1, 156, -1, -1,
7403 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7404 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7405 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7406 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7407 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
7408 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7409 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7410 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
7411 141, 142, 143, 144, 145, 146, -1, 148, 149, 52,
7412 53, -1, -1, 56, -1, 156, -1, -1, -1, -1,
7413 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7414 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
7415 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7416 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7417 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
7418 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7419 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7420 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7421 143, 144, 145, 146, -1, 148, 149, 52, 53, -1,
7422 -1, 56, -1, 156, -1, -1, -1, -1, -1, -1,
7423 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7424 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7425 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7426 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7427 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7428 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7429 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7430 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7431 145, 146, -1, 148, 149, 52, 53, -1, -1, 56,
7432 -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
7433 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7434 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7435 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7436 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7437 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
7438 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7439 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7440 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7441 -1, 148, 149, 52, 53, -1, -1, 56, -1, 156,
7442 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7443 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7444 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7445 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7446 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
7447 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7448 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7449 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
7450 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
7451 149, 52, 53, -1, -1, 56, -1, 156, -1, -1,
7452 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7453 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7454 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7455 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7456 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
7457 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7458 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7459 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
7460 141, 142, 143, 144, 145, 146, -1, 148, 149, 52,
7461 53, -1, -1, 56, -1, 156, -1, -1, -1, -1,
7462 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7463 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
7464 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7465 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7466 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
7467 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7468 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7469 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7470 143, 144, 145, 146, -1, 148, 149, 52, 53, -1,
7471 -1, 56, -1, 156, -1, -1, -1, -1, -1, -1,
7472 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7473 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7474 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7475 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7476 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7477 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7478 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7479 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7480 145, 146, -1, 148, 149, 52, 53, -1, -1, 56,
7481 -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
7482 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7483 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7484 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7485 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7486 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
7487 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7488 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7489 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7490 -1, 148, 149, 52, 53, -1, -1, 56, -1, 156,
7491 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7492 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7493 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7494 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7495 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
7496 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7497 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7498 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
7499 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
7500 149, 52, 53, -1, -1, 56, -1, 156, -1, -1,
7501 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7502 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7503 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7504 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7505 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
7506 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7507 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7508 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
7509 141, 142, 143, 144, 145, 146, -1, 148, 149, 52,
7510 53, -1, -1, 56, -1, 156, -1, -1, -1, -1,
7511 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7512 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
7513 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7514 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7515 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
7516 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7517 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7518 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7519 143, 144, 145, 146, -1, 148, 149, 52, 53, -1,
7520 -1, 56, -1, 156, -1, -1, -1, -1, -1, -1,
7521 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7522 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7523 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7524 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7525 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7526 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7527 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7528 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7529 145, 146, -1, 148, 149, -1, -1, -1, -1, -1,
7535static const yytype_int16 yystos[] =
7537 0, 165, 166, 1, 3, 4, 5, 6, 7, 11,
7538 12, 16, 18, 19, 20, 21, 22, 23, 24, 30,
7539 31, 32, 33, 34, 35, 36, 39, 45, 46, 47,
7540 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7541 59, 60, 61, 62, 63, 64, 65, 76, 77, 91,
7542 92, 99, 102, 103, 104, 105, 107, 110, 111, 112,
7543 113, 114, 115, 116, 117, 118, 147, 148, 149, 164,
7544 167, 168, 180, 182, 183, 184, 185, 186, 187, 191,
7545 195, 197, 203, 206, 208, 209, 210, 212, 214, 215,
7546 216, 217, 226, 227, 228, 229, 230, 231, 234, 255,
7547 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
7548 277, 278, 287, 288, 324, 329, 330, 380, 381, 382,
7549 383, 384, 385, 387, 388, 391, 392, 394, 395, 396,
7550 397, 410, 411, 413, 414, 415, 416, 417, 418, 419,
7551 420, 421, 482, 0, 3, 4, 5, 6, 7, 8,
7552 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
7553 19, 20, 21, 22, 23, 24, 25, 26, 30, 31,
7554 32, 33, 34, 35, 36, 37, 38, 39, 45, 46,
7555 47, 48, 49, 50, 51, 52, 53, 56, 76, 77,
7556 78, 79, 80, 81, 82, 83, 84, 87, 88, 93,
7557 94, 95, 96, 107, 108, 137, 138, 139, 140, 141,
7558 142, 143, 144, 145, 146, 148, 149, 156, 220, 221,
7559 222, 224, 225, 410, 179, 179, 179, 39, 58, 99,
7560 102, 107, 108, 109, 112, 148, 187, 209, 217, 227,
7561 238, 239, 245, 246, 249, 251, 252, 268, 417, 418,
7562 420, 421, 469, 470, 246, 157, 242, 247, 248, 154,
7563 157, 189, 54, 221, 189, 151, 169, 170, 235, 482,
7564 21, 22, 32, 195, 197, 208, 227, 268, 287, 288,
7565 227, 227, 227, 56, 47, 102, 171, 176, 177, 182,
7566 211, 212, 482, 171, 240, 251, 469, 482, 239, 468,
7567 469, 482, 46, 99, 147, 155, 195, 197, 216, 255,
7568 268, 417, 418, 421, 322, 220, 400, 412, 416, 400,
7569 401, 402, 161, 386, 386, 386, 386, 415, 203, 227,
7570 227, 154, 160, 163, 480, 481, 179, 40, 41, 42,
7571 43, 44, 37, 38, 157, 424, 425, 426, 427, 428,
7572 424, 427, 26, 151, 242, 248, 279, 331, 28, 280,
7573 328, 134, 155, 102, 107, 214, 134, 25, 78, 79,
7574 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
7575 90, 95, 96, 101, 135, 137, 138, 139, 140, 141,
7576 142, 143, 144, 145, 146, 233, 233, 69, 97, 98,
7577 153, 474, 475, 256, 1, 191, 198, 199, 199, 200,
7578 202, 202, 163, 199, 481, 99, 210, 217, 268, 293,
7579 417, 418, 421, 52, 56, 95, 99, 218, 219, 268,
7580 417, 418, 421, 219, 33, 34, 35, 36, 49, 50,
7581 51, 52, 56, 157, 194, 220, 419, 464, 465, 466,
7582 246, 157, 248, 98, 474, 475, 331, 383, 100, 100,
7583 155, 239, 56, 239, 239, 239, 400, 134, 101, 155,
7584 250, 482, 98, 153, 474, 100, 100, 155, 250, 92,
7585 244, 246, 251, 448, 469, 482, 246, 189, 191, 476,
7586 191, 54, 64, 65, 181, 157, 235, 236, 164, 424,
7587 424, 98, 474, 100, 178, 211, 158, 163, 481, 476,
7588 257, 159, 155, 189, 479, 155, 479, 152, 479, 189,
7589 56, 415, 213, 214, 426, 155, 98, 153, 474, 319,
7590 66, 119, 121, 122, 403, 119, 119, 403, 67, 403,
7591 161, 389, 398, 393, 399, 78, 160, 168, 151, 199,
7592 199, 199, 199, 235, 237, 191, 191, 52, 54, 55,
7593 56, 57, 58, 78, 92, 102, 107, 108, 109, 141,
7594 144, 298, 367, 425, 429, 430, 432, 433, 436, 437,
7595 439, 440, 441, 442, 448, 449, 450, 451, 452, 453,
7596 454, 455, 456, 457, 458, 459, 460, 461, 134, 265,
7597 442, 134, 266, 332, 333, 106, 207, 334, 335, 335,
7598 235, 211, 155, 216, 155, 235, 193, 227, 227, 227,
7599 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7600 192, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7601 227, 227, 52, 53, 56, 224, 471, 472, 244, 251,
7602 52, 53, 56, 224, 471, 242, 171, 174, 13, 289,
7603 480, 289, 199, 171, 171, 259, 163, 56, 98, 153,
7604 474, 25, 199, 52, 56, 218, 138, 423, 482, 98,
7605 153, 474, 264, 467, 69, 98, 473, 246, 476, 52,
7606 56, 242, 471, 235, 235, 223, 100, 124, 235, 239,
7607 239, 249, 252, 469, 52, 56, 244, 52, 56, 235,
7608 235, 470, 476, 155, 476, 155, 158, 476, 221, 236,
7609 227, 152, 134, 134, 56, 471, 471, 235, 170, 476,
7610 177, 158, 469, 155, 213, 52, 56, 244, 52, 56,
7611 320, 405, 404, 119, 390, 403, 66, 119, 119, 390,
7612 66, 119, 227, 171, 182, 102, 107, 294, 295, 296,
7613 297, 450, 155, 431, 462, 463, 155, 431, 155, 438,
7614 463, 476, 299, 300, 155, 438, 239, 34, 52, 52,
7615 155, 438, 34, 52, 39, 188, 209, 227, 232, 174,
7616 480, 188, 232, 174, 319, 152, 333, 319, 10, 68,
7617 286, 286, 107, 203, 204, 205, 239, 251, 253, 254,
7618 476, 213, 155, 99, 185, 190, 205, 217, 227, 239,
7619 241, 254, 268, 421, 341, 341, 189, 100, 100, 151,
7620 242, 248, 189, 477, 155, 100, 100, 242, 243, 248,
7621 482, 235, 286, 171, 13, 171, 27, 290, 480, 286,
7622 286, 17, 283, 337, 25, 258, 343, 52, 56, 244,
7623 52, 56, 260, 263, 422, 262, 52, 56, 218, 244,
7624 174, 191, 196, 476, 243, 248, 190, 227, 241, 190,
7625 241, 221, 235, 239, 250, 100, 100, 477, 100, 100,
7626 448, 469, 191, 39, 190, 241, 479, 214, 477, 321,
7627 406, 409, 416, 421, 386, 403, 386, 386, 386, 152,
7628 296, 450, 155, 476, 155, 461, 429, 455, 457, 433,
7629 436, 453, 459, 134, 239, 437, 452, 459, 451, 453,
7630 189, 44, 44, 286, 286, 320, 152, 320, 239, 155,
7631 44, 213, 56, 44, 134, 44, 98, 153, 474, 339,
7632 339, 136, 235, 235, 333, 207, 159, 100, 235, 235,
7633 207, 8, 281, 376, 482, 14, 15, 284, 285, 291,
7634 292, 482, 292, 201, 107, 239, 336, 286, 341, 337,
7635 286, 477, 199, 480, 199, 174, 477, 286, 476, 194,
7636 331, 328, 235, 235, 100, 235, 235, 476, 155, 476,
7637 189, 179, 407, 476, 294, 297, 295, 431, 155, 438,
7638 155, 438, 155, 438, 155, 438, 438, 188, 232, 237,
7639 237, 321, 321, 107, 239, 237, 237, 235, 237, 52,
7640 56, 244, 52, 56, 340, 340, 227, 190, 241, 190,
7641 241, 152, 235, 190, 241, 190, 241, 239, 254, 377,
7642 482, 175, 284, 171, 199, 286, 286, 239, 155, 289,
7643 339, 286, 290, 174, 480, 286, 235, 157, 298, 325,
7644 425, 430, 434, 435, 437, 444, 445, 446, 447, 448,
7645 453, 459, 461, 171, 155, 155, 453, 453, 459, 453,
7646 227, 227, 179, 179, 239, 182, 182, 227, 477, 52,
7647 56, 58, 91, 92, 99, 102, 104, 105, 107, 112,
7648 140, 324, 346, 347, 348, 350, 353, 357, 358, 359,
7649 362, 363, 364, 365, 366, 367, 368, 369, 370, 371,
7650 372, 373, 374, 375, 380, 381, 384, 385, 388, 392,
7651 395, 397, 418, 455, 346, 190, 241, 101, 378, 482,
7652 9, 282, 379, 482, 172, 289, 107, 239, 171, 340,
7653 261, 286, 447, 155, 303, 482, 323, 155, 303, 155,
7654 443, 482, 155, 443, 155, 443, 0, 120, 408, 295,
7655 438, 438, 155, 438, 438, 139, 313, 314, 482, 313,
7656 371, 371, 56, 218, 340, 347, 355, 356, 357, 358,
7657 361, 477, 189, 340, 478, 52, 400, 52, 102, 416,
7658 101, 155, 139, 155, 155, 347, 89, 90, 98, 153,
7659 157, 351, 352, 52, 99, 217, 268, 417, 418, 421,
7660 289, 176, 171, 171, 239, 292, 337, 338, 345, 346,
7661 171, 189, 316, 461, 29, 123, 326, 457, 435, 453,
7662 459, 437, 459, 453, 453, 298, 301, 302, 304, 305,
7663 307, 308, 310, 311, 312, 315, 451, 453, 454, 459,
7664 461, 171, 174, 347, 477, 347, 359, 361, 477, 155,
7665 152, 235, 124, 199, 372, 355, 359, 349, 360, 361,
7666 112, 364, 368, 371, 371, 218, 340, 477, 340, 476,
7667 355, 358, 362, 355, 358, 362, 56, 98, 153, 474,
7668 171, 163, 173, 291, 289, 40, 41, 286, 160, 158,
7669 327, 171, 303, 155, 443, 155, 443, 155, 443, 155,
7670 443, 443, 438, 303, 155, 303, 155, 309, 482, 316,
7671 300, 155, 306, 309, 99, 268, 155, 309, 476, 155,
7672 155, 354, 476, 155, 353, 155, 400, 476, 476, 476,
7673 477, 477, 477, 52, 56, 244, 52, 56, 376, 379,
7674 342, 199, 199, 52, 317, 318, 449, 174, 152, 453,
7675 453, 459, 453, 301, 457, 305, 307, 453, 459, 139,
7676 268, 308, 459, 56, 98, 453, 360, 362, 360, 359,
7677 361, 477, 171, 155, 189, 286, 443, 443, 155, 443,
7678 443, 303, 155, 309, 155, 309, 155, 309, 155, 309,
7679 52, 56, 309, 155, 478, 292, 343, 344, 318, 453,
7680 453, 453, 459, 453, 443, 309, 309, 155, 309, 309,
7685static const yytype_int16 yyr1[] =
7687 0, 162, 165, 163, 163, 164, 166, 167, 167, 167,
7688 168, 168, 169, 170, 171, 172, 173, 174, 175, 174,
7689 176, 176, 176, 177, 178, 177, 179, 180, 181, 182,
7690 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
7691 182, 182, 183, 182, 182, 182, 182, 182, 184, 185,
7692 186, 186, 186, 186, 186, 186, 186, 186, 185, 187,
7693 187, 185, 188, 188, 189, 189, 188, 190, 190, 190,
7694 191, 191, 191, 191, 191, 192, 191, 193, 191, 191,
7695 194, 195, 196, 197, 198, 199, 199, 200, 201, 202,
7696 203, 203, 204, 205, 206, 206, 207, 208, 208, 208,
7697 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
7698 209, 209, 210, 210, 211, 211, 212, 212, 212, 213,
7699 213, 212, 212, 212, 212, 212, 212, 212, 214, 214,
7700 215, 215, 216, 216, 216, 216, 216, 216, 216, 216,
7701 216, 217, 217, 217, 217, 217, 217, 217, 217, 217,
7702 218, 218, 219, 219, 219, 220, 220, 220, 220, 220,
7703 221, 221, 222, 223, 222, 224, 224, 224, 224, 224,
7704 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7705 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7706 224, 224, 224, 224, 224, 225, 225, 225, 225, 225,
7707 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7708 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7709 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7710 225, 225, 225, 225, 225, 225, 226, 227, 228, 228,
7711 228, 228, 228, 228, 228, 228, 227, 229, 229, 229,
7712 229, 229, 229, 227, 227, 227, 227, 227, 227, 227,
7713 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7714 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7715 230, 230, 227, 227, 227, 231, 232, 232, 232, 233,
7716 233, 233, 233, 234, 234, 235, 236, 237, 238, 239,
7717 240, 240, 240, 240, 241, 241, 242, 242, 242, 243,
7718 243, 244, 244, 244, 244, 244, 245, 246, 246, 246,
7719 246, 246, 246, 247, 248, 249, 249, 250, 250, 251,
7720 251, 251, 251, 252, 252, 253, 253, 254, 254, 254,
7721 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7722 255, 256, 255, 257, 255, 255, 255, 255, 255, 255,
7723 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7724 255, 255, 255, 255, 255, 258, 255, 259, 255, 255,
7725 260, 261, 255, 262, 255, 263, 255, 264, 255, 265,
7726 255, 266, 255, 255, 255, 255, 255, 267, 268, 269,
7727 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
7728 280, 281, 282, 283, 284, 285, 286, 286, 287, 288,
7729 289, 289, 289, 290, 290, 291, 291, 292, 292, 293,
7730 293, 294, 294, 295, 295, 296, 296, 296, 296, 296,
7731 297, 297, 298, 298, 299, 300, 301, 301, 302, 302,
7732 303, 303, 304, 304, 304, 304, 305, 306, 307, 308,
7733 308, 309, 309, 310, 310, 310, 310, 310, 310, 310,
7734 310, 310, 310, 310, 310, 311, 311, 311, 312, 311,
7735 313, 313, 314, 315, 315, 316, 316, 317, 317, 318,
7736 318, 319, 320, 321, 322, 323, 324, 325, 325, 326,
7737 327, 326, 328, 329, 329, 329, 329, 329, 330, 330,
7738 330, 330, 330, 330, 330, 330, 331, 331, 332, 333,
7739 334, 335, 336, 336, 336, 336, 337, 338, 338, 339,
7740 340, 341, 342, 343, 344, 344, 345, 345, 345, 346,
7741 346, 346, 346, 346, 346, 347, 348, 348, 349, 350,
7742 350, 351, 352, 353, 353, 353, 353, 353, 353, 353,
7743 353, 353, 353, 353, 353, 353, 354, 353, 353, 353,
7744 355, 355, 355, 355, 355, 355, 356, 356, 357, 357,
7745 358, 359, 359, 360, 360, 361, 362, 362, 362, 362,
7746 363, 363, 364, 364, 365, 365, 366, 366, 367, 368,
7747 368, 369, 370, 370, 370, 370, 370, 370, 369, 369,
7748 369, 369, 371, 371, 371, 371, 371, 371, 371, 371,
7749 371, 371, 372, 373, 373, 374, 375, 375, 375, 376,
7750 376, 377, 377, 377, 378, 378, 379, 379, 380, 380,
7751 381, 382, 382, 382, 383, 384, 385, 386, 386, 387,
7752 388, 389, 389, 390, 390, 391, 392, 393, 393, 394,
7753 395, 396, 397, 398, 398, 399, 399, 400, 400, 401,
7754 401, 402, 402, 403, 404, 403, 405, 406, 407, 403,
7755 408, 408, 409, 409, 410, 410, 411, 412, 412, 413,
7756 414, 414, 415, 415, 415, 415, 416, 416, 416, 417,
7757 417, 417, 418, 418, 418, 418, 418, 418, 418, 419,
7758 419, 420, 420, 421, 421, 422, 423, 423, 424, 424,
7759 425, 426, 427, 428, 427, 429, 429, 430, 430, 431,
7760 431, 432, 432, 432, 432, 433, 433, 434, 434, 434,
7761 434, 435, 435, 436, 437, 437, 438, 438, 439, 439,
7762 439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
7763 440, 440, 441, 440, 440, 442, 443, 443, 444, 444,
7764 444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
7765 445, 445, 446, 445, 445, 447, 448, 449, 449, 449,
7766 449, 450, 450, 451, 452, 452, 453, 453, 454, 455,
7767 455, 456, 457, 457, 458, 458, 459, 459, 460, 460,
7768 461, 461, 461, 462, 462, 463, 464, 465, 466, 467,
7769 466, 468, 468, 469, 469, 470, 470, 470, 470, 470,
7770 470, 471, 471, 471, 471, 472, 472, 472, 473, 473,
7771 474, 474, 475, 475, 476, 477, 478, 479, 479, 480,
7776static const yytype_int8 yyr2[] =
7778 0, 2, 0, 0, 1, 2, 2, 1, 1, 3,
7779 1, 2, 1, 3, 2, 0, 0, 8, 0, 5,
7780 1, 1, 3, 1, 0, 3, 0, 2, 0, 4,
7781 3, 3, 3, 2, 3, 3, 3, 3, 4, 5,
7782 1, 4, 4, 1, 7, 4, 1, 1, 4, 1,
7783 4, 7, 6, 6, 6, 6, 5, 4, 1, 4,
7784 4, 1, 1, 4, 0, 1, 3, 1, 4, 1,
7785 1, 3, 3, 3, 2, 0, 7, 0, 7, 1,
7786 1, 2, 0, 5, 1, 1, 1, 0, 0, 4,
7787 1, 1, 1, 1, 1, 4, 3, 1, 1, 1,
7788 2, 3, 4, 5, 4, 5, 6, 2, 2, 2,
7789 2, 2, 1, 3, 1, 3, 1, 2, 3, 1,
7790 3, 5, 2, 4, 2, 4, 1, 3, 1, 3,
7791 2, 3, 1, 1, 4, 3, 3, 3, 3, 2,
7792 1, 1, 1, 4, 3, 3, 3, 3, 2, 1,
7793 1, 1, 2, 1, 3, 1, 1, 1, 1, 1,
7794 1, 1, 1, 0, 4, 1, 1, 1, 1, 1,
7795 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7796 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7797 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7798 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7799 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7800 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7801 1, 1, 1, 1, 1, 1, 4, 1, 4, 7,
7802 6, 6, 6, 6, 5, 4, 1, 3, 3, 2,
7803 2, 2, 2, 1, 3, 3, 3, 3, 3, 3,
7804 4, 2, 2, 3, 3, 3, 3, 1, 3, 3,
7805 3, 3, 3, 2, 2, 3, 3, 3, 3, 4,
7806 4, 4, 1, 1, 1, 6, 1, 4, 3, 1,
7807 1, 1, 1, 3, 3, 1, 1, 1, 1, 1,
7808 1, 2, 4, 2, 1, 4, 3, 5, 3, 1,
7809 1, 1, 1, 2, 4, 2, 1, 1, 1, 2,
7810 2, 4, 1, 0, 2, 2, 1, 2, 1, 1,
7811 1, 3, 3, 2, 1, 1, 1, 3, 4, 2,
7812 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7813 1, 0, 4, 0, 4, 3, 3, 2, 3, 3,
7814 1, 4, 3, 1, 6, 4, 3, 2, 1, 2,
7815 1, 6, 6, 4, 4, 0, 6, 0, 5, 5,
7816 0, 0, 9, 0, 6, 0, 7, 0, 5, 0,
7817 5, 0, 5, 1, 1, 1, 1, 1, 1, 1,
7818 1, 1, 2, 2, 1, 2, 1, 1, 1, 1,
7819 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7820 1, 1, 2, 1, 1, 1, 5, 1, 2, 1,
7821 1, 1, 3, 1, 3, 1, 3, 5, 1, 3,
7822 2, 1, 1, 1, 0, 2, 2, 1, 1, 3,
7823 2, 1, 4, 2, 2, 1, 1, 1, 3, 1,
7824 3, 2, 1, 6, 8, 4, 6, 4, 6, 4,
7825 6, 2, 4, 2, 4, 1, 2, 2, 1, 1,
7826 1, 1, 4, 0, 1, 1, 4, 1, 3, 1,
7827 1, 0, 0, 0, 0, 0, 9, 4, 1, 3,
7828 0, 4, 3, 2, 4, 5, 5, 3, 2, 4,
7829 4, 3, 3, 2, 1, 4, 3, 3, 0, 7,
7830 0, 7, 1, 2, 3, 4, 5, 1, 1, 0,
7831 0, 0, 0, 9, 1, 1, 1, 3, 3, 1,
7832 2, 3, 1, 1, 1, 1, 3, 1, 0, 4,
7833 1, 2, 2, 1, 1, 4, 4, 4, 3, 4,
7834 4, 4, 3, 3, 3, 2, 0, 6, 2, 4,
7835 1, 1, 2, 2, 4, 1, 2, 3, 1, 3,
7836 5, 2, 1, 1, 3, 1, 3, 1, 2, 1,
7837 1, 3, 2, 1, 1, 3, 2, 1, 2, 1,
7838 1, 1, 3, 3, 2, 2, 2, 2, 1, 1,
7839 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7840 1, 1, 1, 2, 2, 4, 2, 3, 1, 6,
7841 1, 1, 1, 1, 2, 1, 3, 1, 1, 1,
7842 1, 1, 1, 2, 3, 3, 3, 1, 2, 4,
7843 1, 0, 3, 1, 2, 4, 1, 0, 3, 4,
7844 1, 4, 1, 0, 3, 0, 3, 0, 2, 0,
7845 2, 0, 2, 1, 0, 3, 0, 0, 0, 6,
7846 1, 1, 1, 1, 1, 1, 2, 1, 1, 3,
7847 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
7848 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7849 1, 1, 1, 1, 1, 0, 4, 1, 1, 1,
7850 0, 3, 1, 0, 3, 2, 1, 1, 3, 2,
7851 1, 4, 2, 2, 1, 1, 1, 4, 2, 2,
7852 1, 1, 1, 3, 1, 3, 2, 1, 6, 8,
7853 4, 6, 4, 6, 4, 6, 2, 4, 2, 4,
7854 1, 2, 1, 1, 1, 1, 2, 1, 6, 8,
7855 4, 6, 4, 6, 4, 6, 2, 4, 2, 4,
7856 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
7857 1, 1, 1, 1, 1, 3, 1, 3, 1, 1,
7858 1, 1, 2, 1, 1, 1, 2, 1, 1, 1,
7859 2, 2, 1, 0, 1, 1, 1, 1, 1, 0,
7860 4, 1, 2, 1, 3, 3, 2, 1, 4, 2,
7861 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7862 1, 1, 1, 1, 2, 2, 2, 1, 1, 1,
7867enum { YYENOMEM = -2 };
7869#define yyerrok (yyerrstatus = 0)
7870#define yyclearin (yychar = YYEMPTY)
7872#define YYACCEPT goto yyacceptlab
7873#define YYABORT goto yyabortlab
7874#define YYERROR goto yyerrorlab
7875#define YYNOMEM goto yyexhaustedlab
7878#define YYRECOVERING() (!!yyerrstatus)
7880#define YYBACKUP(Token, Value) \
7882 if (yychar == YYEMPTY) \
7886 YYPOPSTACK (yylen); \
7892 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
7899#define YYERRCODE YYUNDEF
7905#ifndef YYLLOC_DEFAULT
7906# define YYLLOC_DEFAULT(Current, Rhs, N) \
7910 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
7911 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
7912 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
7913 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
7917 (Current).first_line = (Current).last_line = \
7918 YYRHSLOC (Rhs, 0).last_line; \
7919 (Current).first_column = (Current).last_column = \
7920 YYRHSLOC (Rhs, 0).last_column; \
7925#define YYRHSLOC(Rhs, K) ((Rhs)[K])
7933# define YYFPRINTF fprintf
7936# define YYDPRINTF(Args) \
7947# ifndef YYLOCATION_PRINT
7949# if defined YY_LOCATION_PRINT
7953# define YYLOCATION_PRINT(File, Loc, p) YY_LOCATION_PRINT(File, *(Loc), p)
7955# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
7961yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
7964 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
7965 if (0 <= yylocp->first_line)
7967 res += YYFPRINTF (yyo,
"%d", yylocp->first_line);
7968 if (0 <= yylocp->first_column)
7969 res += YYFPRINTF (yyo,
".%d", yylocp->first_column);
7971 if (0 <= yylocp->last_line)
7973 if (yylocp->first_line < yylocp->last_line)
7975 res += YYFPRINTF (yyo,
"-%d", yylocp->last_line);
7977 res += YYFPRINTF (yyo,
".%d", end_col);
7979 else if (0 <= end_col && yylocp->first_column < end_col)
7980 res += YYFPRINTF (yyo,
"-%d", end_col);
7985# define YYLOCATION_PRINT yy_location_print_
7989# define YY_LOCATION_PRINT(File, Loc, p) YYLOCATION_PRINT(File, &(Loc), p)
7993# define YYLOCATION_PRINT(File, Loc, p) ((void) 0)
7996# define YY_LOCATION_PRINT YYLOCATION_PRINT
8002# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p) \
8006 YYFPRINTF (stderr, "%s ", Title); \
8007 yy_symbol_print (stderr, \
8008 Kind, Value, Location, p); \
8009 YYFPRINTF (stderr, "\n"); \
8019yy_symbol_value_print (
FILE *yyo,
8022 FILE *yyoutput = yyo;
8024 YY_USE (yylocationp);
8028 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
8031 case YYSYMBOL_keyword_class:
8034 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8039 case YYSYMBOL_keyword_module:
8042 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8047 case YYSYMBOL_keyword_def:
8050 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8055 case YYSYMBOL_keyword_undef:
8058 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8063 case YYSYMBOL_keyword_begin:
8066 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8071 case YYSYMBOL_keyword_rescue:
8074 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8079 case YYSYMBOL_keyword_ensure:
8082 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8087 case YYSYMBOL_keyword_end:
8090 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8095 case YYSYMBOL_keyword_if:
8098 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8103 case YYSYMBOL_keyword_unless:
8106 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8111 case YYSYMBOL_keyword_then:
8114 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8119 case YYSYMBOL_keyword_elsif:
8122 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8127 case YYSYMBOL_keyword_else:
8130 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8135 case YYSYMBOL_keyword_case:
8138 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8143 case YYSYMBOL_keyword_when:
8146 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8151 case YYSYMBOL_keyword_while:
8154 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8159 case YYSYMBOL_keyword_until:
8162 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8167 case YYSYMBOL_keyword_for:
8170 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8175 case YYSYMBOL_keyword_break:
8178 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8183 case YYSYMBOL_keyword_next:
8186 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8191 case YYSYMBOL_keyword_redo:
8194 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8199 case YYSYMBOL_keyword_retry:
8202 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8207 case YYSYMBOL_keyword_in:
8210 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8215 case YYSYMBOL_keyword_do:
8218 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8223 case YYSYMBOL_keyword_do_cond:
8226 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8231 case YYSYMBOL_keyword_do_block:
8234 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8239 case YYSYMBOL_keyword_do_LAMBDA:
8242 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8247 case YYSYMBOL_keyword_return:
8250 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8255 case YYSYMBOL_keyword_yield:
8258 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8263 case YYSYMBOL_keyword_super:
8266 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8271 case YYSYMBOL_keyword_self:
8274 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8279 case YYSYMBOL_keyword_nil:
8282 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8287 case YYSYMBOL_keyword_true:
8290 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8295 case YYSYMBOL_keyword_false:
8298 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8303 case YYSYMBOL_keyword_and:
8306 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8311 case YYSYMBOL_keyword_or:
8314 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8319 case YYSYMBOL_keyword_not:
8322 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8327 case YYSYMBOL_modifier_if:
8330 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8335 case YYSYMBOL_modifier_unless:
8338 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8343 case YYSYMBOL_modifier_while:
8346 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8351 case YYSYMBOL_modifier_until:
8354 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8359 case YYSYMBOL_modifier_rescue:
8362 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8367 case YYSYMBOL_keyword_alias:
8370 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8375 case YYSYMBOL_keyword_defined:
8378 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8383 case YYSYMBOL_keyword_BEGIN:
8386 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8391 case YYSYMBOL_keyword_END:
8394 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8399 case YYSYMBOL_keyword__LINE__:
8402 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8407 case YYSYMBOL_keyword__FILE__:
8410 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8415 case YYSYMBOL_keyword__ENCODING__:
8418 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8423 case YYSYMBOL_tIDENTIFIER:
8426 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8434 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8439 case YYSYMBOL_tGVAR:
8442 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8447 case YYSYMBOL_tIVAR:
8450 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8455 case YYSYMBOL_tCONSTANT:
8458 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8463 case YYSYMBOL_tCVAR:
8466 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8471 case YYSYMBOL_tLABEL:
8474 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8479 case YYSYMBOL_tINTEGER:
8482 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8484 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8487 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8490 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8492 case NODE_IMAGINARY:
8493 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8502 case YYSYMBOL_tFLOAT:
8505 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8507 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8510 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8513 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8515 case NODE_IMAGINARY:
8516 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8525 case YYSYMBOL_tRATIONAL:
8528 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8530 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8533 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8536 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8538 case NODE_IMAGINARY:
8539 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8548 case YYSYMBOL_tIMAGINARY:
8551 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8553 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8556 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8559 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8561 case NODE_IMAGINARY:
8562 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8571 case YYSYMBOL_tCHAR:
8574 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8576 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8579 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8582 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8584 case NODE_IMAGINARY:
8585 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8594 case YYSYMBOL_tNTH_REF:
8597 rb_parser_printf(p,
"$%ld", RNODE_NTH_REF(((*yyvaluep).node))->nd_nth);
8602 case YYSYMBOL_tBACK_REF:
8605 rb_parser_printf(p,
"$%c", (
int)RNODE_BACK_REF(((*yyvaluep).node))->nd_nth);
8610 case YYSYMBOL_tSTRING_CONTENT:
8613 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8615 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8618 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8621 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8623 case NODE_IMAGINARY:
8624 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8636 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8641 case YYSYMBOL_70_backslash_:
8644 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8649 case YYSYMBOL_72_escaped_horizontal_tab_:
8652 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8657 case YYSYMBOL_73_escaped_form_feed_:
8660 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8665 case YYSYMBOL_74_escaped_carriage_return_:
8668 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8673 case YYSYMBOL_75_escaped_vertical_tab_:
8676 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8681 case YYSYMBOL_tANDDOT:
8684 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8689 case YYSYMBOL_tCOLON2:
8692 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8697 case YYSYMBOL_tOP_ASGN:
8700 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8705 case YYSYMBOL_compstmt_top_stmts:
8708 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8709 rb_parser_printf(p,
"NODE_SPECIAL");
8711 else if (((*yyvaluep).node)) {
8712 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8718 case YYSYMBOL_top_stmts:
8721 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8722 rb_parser_printf(p,
"NODE_SPECIAL");
8724 else if (((*yyvaluep).node)) {
8725 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8731 case YYSYMBOL_top_stmt:
8734 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8735 rb_parser_printf(p,
"NODE_SPECIAL");
8737 else if (((*yyvaluep).node)) {
8738 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8744 case YYSYMBOL_block_open:
8747 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
8748 rb_parser_printf(p,
"NODE_SPECIAL");
8750 else if (((*yyvaluep).node_exits)) {
8751 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8757 case YYSYMBOL_begin_block:
8760 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8761 rb_parser_printf(p,
"NODE_SPECIAL");
8763 else if (((*yyvaluep).node)) {
8764 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8770 case YYSYMBOL_compstmt_stmts:
8773 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8774 rb_parser_printf(p,
"NODE_SPECIAL");
8776 else if (((*yyvaluep).node)) {
8777 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8783 case YYSYMBOL_bodystmt:
8786 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8787 rb_parser_printf(p,
"NODE_SPECIAL");
8789 else if (((*yyvaluep).node)) {
8790 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8796 case YYSYMBOL_stmts:
8799 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8800 rb_parser_printf(p,
"NODE_SPECIAL");
8802 else if (((*yyvaluep).node)) {
8803 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8809 case YYSYMBOL_stmt_or_begin:
8812 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8813 rb_parser_printf(p,
"NODE_SPECIAL");
8815 else if (((*yyvaluep).node)) {
8816 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8822 case YYSYMBOL_allow_exits:
8825 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
8826 rb_parser_printf(p,
"NODE_SPECIAL");
8828 else if (((*yyvaluep).node_exits)) {
8829 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8838 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8839 rb_parser_printf(p,
"NODE_SPECIAL");
8841 else if (((*yyvaluep).node)) {
8842 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8848 case YYSYMBOL_asgn_mrhs:
8851 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8852 rb_parser_printf(p,
"NODE_SPECIAL");
8854 else if (((*yyvaluep).node)) {
8855 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8861 case YYSYMBOL_asgn_command_rhs:
8864 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8865 rb_parser_printf(p,
"NODE_SPECIAL");
8867 else if (((*yyvaluep).node)) {
8868 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8874 case YYSYMBOL_command_asgn:
8877 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8878 rb_parser_printf(p,
"NODE_SPECIAL");
8880 else if (((*yyvaluep).node)) {
8881 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8887 case YYSYMBOL_op_asgn_command_rhs:
8890 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8891 rb_parser_printf(p,
"NODE_SPECIAL");
8893 else if (((*yyvaluep).node)) {
8894 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8900 case YYSYMBOL_def_endless_method_endless_command:
8903 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8904 rb_parser_printf(p,
"NODE_SPECIAL");
8906 else if (((*yyvaluep).node)) {
8907 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8913 case YYSYMBOL_endless_command:
8916 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8917 rb_parser_printf(p,
"NODE_SPECIAL");
8919 else if (((*yyvaluep).node)) {
8920 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8926 case YYSYMBOL_command_rhs:
8929 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8930 rb_parser_printf(p,
"NODE_SPECIAL");
8932 else if (((*yyvaluep).node)) {
8933 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8942 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8943 rb_parser_printf(p,
"NODE_SPECIAL");
8945 else if (((*yyvaluep).node)) {
8946 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8952 case YYSYMBOL_def_name:
8955 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8960 case YYSYMBOL_defn_head:
8963 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
8964 rb_parser_printf(p,
"NODE_SPECIAL");
8966 else if (((*yyvaluep).node_def_temp)) {
8967 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8973 case YYSYMBOL_defs_head:
8976 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
8977 rb_parser_printf(p,
"NODE_SPECIAL");
8979 else if (((*yyvaluep).node_def_temp)) {
8980 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8986 case YYSYMBOL_value_expr_expr:
8989 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8990 rb_parser_printf(p,
"NODE_SPECIAL");
8992 else if (((*yyvaluep).node)) {
8993 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8999 case YYSYMBOL_expr_value:
9002 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9003 rb_parser_printf(p,
"NODE_SPECIAL");
9005 else if (((*yyvaluep).node)) {
9006 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9012 case YYSYMBOL_expr_value_do:
9015 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9016 rb_parser_printf(p,
"NODE_SPECIAL");
9018 else if (((*yyvaluep).node)) {
9019 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9025 case YYSYMBOL_command_call:
9028 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9029 rb_parser_printf(p,
"NODE_SPECIAL");
9031 else if (((*yyvaluep).node)) {
9032 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9038 case YYSYMBOL_value_expr_command_call:
9041 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9042 rb_parser_printf(p,
"NODE_SPECIAL");
9044 else if (((*yyvaluep).node)) {
9045 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9051 case YYSYMBOL_command_call_value:
9054 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9055 rb_parser_printf(p,
"NODE_SPECIAL");
9057 else if (((*yyvaluep).node)) {
9058 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9064 case YYSYMBOL_block_command:
9067 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9068 rb_parser_printf(p,
"NODE_SPECIAL");
9070 else if (((*yyvaluep).node)) {
9071 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9077 case YYSYMBOL_cmd_brace_block:
9080 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9081 rb_parser_printf(p,
"NODE_SPECIAL");
9083 else if (((*yyvaluep).node)) {
9084 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9090 case YYSYMBOL_fcall:
9093 if ((
NODE *)((*yyvaluep).node_fcall) == (
NODE *)-1) {
9094 rb_parser_printf(p,
"NODE_SPECIAL");
9096 else if (((*yyvaluep).node_fcall)) {
9097 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_fcall)))));
9103 case YYSYMBOL_command:
9106 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9107 rb_parser_printf(p,
"NODE_SPECIAL");
9109 else if (((*yyvaluep).node)) {
9110 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9119 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9120 rb_parser_printf(p,
"NODE_SPECIAL");
9122 else if (((*yyvaluep).node_masgn)) {
9123 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9129 case YYSYMBOL_mlhs_inner:
9132 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9133 rb_parser_printf(p,
"NODE_SPECIAL");
9135 else if (((*yyvaluep).node_masgn)) {
9136 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9142 case YYSYMBOL_mlhs_basic:
9145 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9146 rb_parser_printf(p,
"NODE_SPECIAL");
9148 else if (((*yyvaluep).node_masgn)) {
9149 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9155 case YYSYMBOL_mlhs_items_mlhs_item:
9158 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9159 rb_parser_printf(p,
"NODE_SPECIAL");
9161 else if (((*yyvaluep).node)) {
9162 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9168 case YYSYMBOL_mlhs_item:
9171 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9172 rb_parser_printf(p,
"NODE_SPECIAL");
9174 else if (((*yyvaluep).node)) {
9175 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9181 case YYSYMBOL_mlhs_head:
9184 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9185 rb_parser_printf(p,
"NODE_SPECIAL");
9187 else if (((*yyvaluep).node)) {
9188 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9194 case YYSYMBOL_mlhs_node:
9197 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9198 rb_parser_printf(p,
"NODE_SPECIAL");
9200 else if (((*yyvaluep).node)) {
9201 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9210 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9211 rb_parser_printf(p,
"NODE_SPECIAL");
9213 else if (((*yyvaluep).node)) {
9214 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9220 case YYSYMBOL_cname:
9223 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9228 case YYSYMBOL_cpath:
9231 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9232 rb_parser_printf(p,
"NODE_SPECIAL");
9234 else if (((*yyvaluep).node)) {
9235 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9241 case YYSYMBOL_fname:
9244 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9249 case YYSYMBOL_fitem:
9252 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9253 rb_parser_printf(p,
"NODE_SPECIAL");
9255 else if (((*yyvaluep).node)) {
9256 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9262 case YYSYMBOL_undef_list:
9265 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9266 rb_parser_printf(p,
"NODE_SPECIAL");
9268 else if (((*yyvaluep).node)) {
9269 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9278 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9283 case YYSYMBOL_reswords:
9286 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9291 case YYSYMBOL_asgn_arg_rhs:
9294 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9295 rb_parser_printf(p,
"NODE_SPECIAL");
9297 else if (((*yyvaluep).node)) {
9298 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9307 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9308 rb_parser_printf(p,
"NODE_SPECIAL");
9310 else if (((*yyvaluep).node)) {
9311 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9317 case YYSYMBOL_op_asgn_arg_rhs:
9320 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9321 rb_parser_printf(p,
"NODE_SPECIAL");
9323 else if (((*yyvaluep).node)) {
9324 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9330 case YYSYMBOL_range_expr_arg:
9333 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9334 rb_parser_printf(p,
"NODE_SPECIAL");
9336 else if (((*yyvaluep).node)) {
9337 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9343 case YYSYMBOL_def_endless_method_endless_arg:
9346 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9347 rb_parser_printf(p,
"NODE_SPECIAL");
9349 else if (((*yyvaluep).node)) {
9350 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9356 case YYSYMBOL_ternary:
9359 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9360 rb_parser_printf(p,
"NODE_SPECIAL");
9362 else if (((*yyvaluep).node)) {
9363 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9369 case YYSYMBOL_endless_arg:
9372 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9373 rb_parser_printf(p,
"NODE_SPECIAL");
9375 else if (((*yyvaluep).node)) {
9376 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9382 case YYSYMBOL_relop:
9385 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9390 case YYSYMBOL_rel_expr:
9393 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9394 rb_parser_printf(p,
"NODE_SPECIAL");
9396 else if (((*yyvaluep).node)) {
9397 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9403 case YYSYMBOL_value_expr_arg:
9406 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9407 rb_parser_printf(p,
"NODE_SPECIAL");
9409 else if (((*yyvaluep).node)) {
9410 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9416 case YYSYMBOL_arg_value:
9419 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9420 rb_parser_printf(p,
"NODE_SPECIAL");
9422 else if (((*yyvaluep).node)) {
9423 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9429 case YYSYMBOL_aref_args:
9432 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9433 rb_parser_printf(p,
"NODE_SPECIAL");
9435 else if (((*yyvaluep).node)) {
9436 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9442 case YYSYMBOL_arg_rhs:
9445 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9446 rb_parser_printf(p,
"NODE_SPECIAL");
9448 else if (((*yyvaluep).node)) {
9449 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9455 case YYSYMBOL_paren_args:
9458 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9459 rb_parser_printf(p,
"NODE_SPECIAL");
9461 else if (((*yyvaluep).node)) {
9462 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9468 case YYSYMBOL_opt_paren_args:
9471 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9472 rb_parser_printf(p,
"NODE_SPECIAL");
9474 else if (((*yyvaluep).node)) {
9475 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9481 case YYSYMBOL_opt_call_args:
9484 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9485 rb_parser_printf(p,
"NODE_SPECIAL");
9487 else if (((*yyvaluep).node)) {
9488 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9494 case YYSYMBOL_value_expr_command:
9497 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9498 rb_parser_printf(p,
"NODE_SPECIAL");
9500 else if (((*yyvaluep).node)) {
9501 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9507 case YYSYMBOL_call_args:
9510 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9511 rb_parser_printf(p,
"NODE_SPECIAL");
9513 else if (((*yyvaluep).node)) {
9514 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9520 case YYSYMBOL_command_args:
9523 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9524 rb_parser_printf(p,
"NODE_SPECIAL");
9526 else if (((*yyvaluep).node)) {
9527 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9533 case YYSYMBOL_block_arg:
9536 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
9537 rb_parser_printf(p,
"NODE_SPECIAL");
9539 else if (((*yyvaluep).node_block_pass)) {
9540 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9546 case YYSYMBOL_opt_block_arg:
9549 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
9550 rb_parser_printf(p,
"NODE_SPECIAL");
9552 else if (((*yyvaluep).node_block_pass)) {
9553 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9562 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9563 rb_parser_printf(p,
"NODE_SPECIAL");
9565 else if (((*yyvaluep).node)) {
9566 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9572 case YYSYMBOL_arg_splat:
9575 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9576 rb_parser_printf(p,
"NODE_SPECIAL");
9578 else if (((*yyvaluep).node)) {
9579 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9585 case YYSYMBOL_mrhs_arg:
9588 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9589 rb_parser_printf(p,
"NODE_SPECIAL");
9591 else if (((*yyvaluep).node)) {
9592 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9601 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9602 rb_parser_printf(p,
"NODE_SPECIAL");
9604 else if (((*yyvaluep).node)) {
9605 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9611 case YYSYMBOL_primary:
9614 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9615 rb_parser_printf(p,
"NODE_SPECIAL");
9617 else if (((*yyvaluep).node)) {
9618 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9624 case YYSYMBOL_value_expr_primary:
9627 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9628 rb_parser_printf(p,
"NODE_SPECIAL");
9630 else if (((*yyvaluep).node)) {
9631 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9637 case YYSYMBOL_primary_value:
9640 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9641 rb_parser_printf(p,
"NODE_SPECIAL");
9643 else if (((*yyvaluep).node)) {
9644 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9650 case YYSYMBOL_k_while:
9653 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9654 rb_parser_printf(p,
"NODE_SPECIAL");
9656 else if (((*yyvaluep).node_exits)) {
9657 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9663 case YYSYMBOL_k_until:
9666 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9667 rb_parser_printf(p,
"NODE_SPECIAL");
9669 else if (((*yyvaluep).node_exits)) {
9670 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9676 case YYSYMBOL_k_for:
9679 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9680 rb_parser_printf(p,
"NODE_SPECIAL");
9682 else if (((*yyvaluep).node_exits)) {
9683 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9689 case YYSYMBOL_k_def:
9692 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
9693 rb_parser_printf(p,
"NODE_SPECIAL");
9695 else if (((*yyvaluep).node_def_temp)) {
9696 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
9705 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9710 case YYSYMBOL_if_tail:
9713 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9714 rb_parser_printf(p,
"NODE_SPECIAL");
9716 else if (((*yyvaluep).node)) {
9717 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9723 case YYSYMBOL_opt_else:
9726 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9727 rb_parser_printf(p,
"NODE_SPECIAL");
9729 else if (((*yyvaluep).node)) {
9730 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9736 case YYSYMBOL_for_var:
9739 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9740 rb_parser_printf(p,
"NODE_SPECIAL");
9742 else if (((*yyvaluep).node)) {
9743 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9749 case YYSYMBOL_f_marg:
9752 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9753 rb_parser_printf(p,
"NODE_SPECIAL");
9755 else if (((*yyvaluep).node)) {
9756 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9762 case YYSYMBOL_mlhs_items_f_marg:
9765 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9766 rb_parser_printf(p,
"NODE_SPECIAL");
9768 else if (((*yyvaluep).node)) {
9769 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9775 case YYSYMBOL_f_margs:
9778 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9779 rb_parser_printf(p,
"NODE_SPECIAL");
9781 else if (((*yyvaluep).node_masgn)) {
9782 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9788 case YYSYMBOL_f_rest_marg:
9791 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9792 rb_parser_printf(p,
"NODE_SPECIAL");
9794 else if (((*yyvaluep).node)) {
9795 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9801 case YYSYMBOL_f_any_kwrest:
9804 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9809 case YYSYMBOL_f_kw_primary_value:
9812 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9813 rb_parser_printf(p,
"NODE_SPECIAL");
9815 else if (((*yyvaluep).node_kw_arg)) {
9816 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9822 case YYSYMBOL_f_kwarg_primary_value:
9825 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9826 rb_parser_printf(p,
"NODE_SPECIAL");
9828 else if (((*yyvaluep).node_kw_arg)) {
9829 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9835 case YYSYMBOL_opt_f_block_arg_none:
9838 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9843 case YYSYMBOL_args_tail_basic_primary_value_none:
9846 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9847 rb_parser_printf(p,
"NODE_SPECIAL");
9849 else if (((*yyvaluep).node_args)) {
9850 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9856 case YYSYMBOL_block_args_tail:
9859 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9860 rb_parser_printf(p,
"NODE_SPECIAL");
9862 else if (((*yyvaluep).node_args)) {
9863 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9869 case YYSYMBOL_excessed_comma:
9872 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9877 case YYSYMBOL_f_opt_primary_value:
9880 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9881 rb_parser_printf(p,
"NODE_SPECIAL");
9883 else if (((*yyvaluep).node_opt_arg)) {
9884 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9890 case YYSYMBOL_f_opt_arg_primary_value:
9893 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9894 rb_parser_printf(p,
"NODE_SPECIAL");
9896 else if (((*yyvaluep).node_opt_arg)) {
9897 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9903 case YYSYMBOL_opt_args_tail_block_args_tail_none:
9906 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9907 rb_parser_printf(p,
"NODE_SPECIAL");
9909 else if (((*yyvaluep).node_args)) {
9910 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9916 case YYSYMBOL_args_list_primary_value_opt_args_tail_block_args_tail_none:
9919 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9920 rb_parser_printf(p,
"NODE_SPECIAL");
9922 else if (((*yyvaluep).node_args)) {
9923 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9929 case YYSYMBOL_block_param:
9932 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9933 rb_parser_printf(p,
"NODE_SPECIAL");
9935 else if (((*yyvaluep).node_args)) {
9936 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9942 case YYSYMBOL_tail_only_args_block_args_tail:
9945 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9946 rb_parser_printf(p,
"NODE_SPECIAL");
9948 else if (((*yyvaluep).node_args)) {
9949 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9955 case YYSYMBOL_opt_block_param_def:
9958 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9959 rb_parser_printf(p,
"NODE_SPECIAL");
9961 else if (((*yyvaluep).node_args)) {
9962 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9968 case YYSYMBOL_block_param_def:
9971 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9972 rb_parser_printf(p,
"NODE_SPECIAL");
9974 else if (((*yyvaluep).node_args)) {
9975 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9981 case YYSYMBOL_opt_block_param:
9984 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9985 rb_parser_printf(p,
"NODE_SPECIAL");
9987 else if (((*yyvaluep).node_args)) {
9988 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9994 case YYSYMBOL_opt_bv_decl:
9997 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9999#line 10000 "parse.c"
10002 case YYSYMBOL_bv_decls:
10003#line 2627 "parse.y"
10005 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10007#line 10008 "parse.c"
10010 case YYSYMBOL_bvar:
10011#line 2627 "parse.y"
10013 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10015#line 10016 "parse.c"
10018 case YYSYMBOL_numparam:
10019#line 2618 "parse.y"
10021 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10022 rb_parser_printf(p,
"NODE_SPECIAL");
10024 else if (((*yyvaluep).node)) {
10025 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10028#line 10029 "parse.c"
10031 case YYSYMBOL_it_id:
10032#line 2627 "parse.y"
10034 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10036#line 10037 "parse.c"
10039 case YYSYMBOL_lambda:
10040#line 2618 "parse.y"
10042 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10043 rb_parser_printf(p,
"NODE_SPECIAL");
10045 else if (((*yyvaluep).node)) {
10046 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10049#line 10050 "parse.c"
10052 case YYSYMBOL_f_larglist:
10053#line 2618 "parse.y"
10055 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10056 rb_parser_printf(p,
"NODE_SPECIAL");
10058 else if (((*yyvaluep).node_args)) {
10059 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10062#line 10063 "parse.c"
10065 case YYSYMBOL_do_block:
10066#line 2618 "parse.y"
10068 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10069 rb_parser_printf(p,
"NODE_SPECIAL");
10071 else if (((*yyvaluep).node)) {
10072 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10075#line 10076 "parse.c"
10078 case YYSYMBOL_block_call:
10079#line 2618 "parse.y"
10081 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10082 rb_parser_printf(p,
"NODE_SPECIAL");
10084 else if (((*yyvaluep).node)) {
10085 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10088#line 10089 "parse.c"
10091 case YYSYMBOL_method_call:
10092#line 2618 "parse.y"
10094 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10095 rb_parser_printf(p,
"NODE_SPECIAL");
10097 else if (((*yyvaluep).node)) {
10098 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10101#line 10102 "parse.c"
10104 case YYSYMBOL_brace_block:
10105#line 2618 "parse.y"
10107 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10108 rb_parser_printf(p,
"NODE_SPECIAL");
10110 else if (((*yyvaluep).node)) {
10111 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10114#line 10115 "parse.c"
10117 case YYSYMBOL_brace_body:
10118#line 2618 "parse.y"
10120 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10121 rb_parser_printf(p,
"NODE_SPECIAL");
10123 else if (((*yyvaluep).node)) {
10124 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10127#line 10128 "parse.c"
10130 case YYSYMBOL_do_body:
10131#line 2618 "parse.y"
10133 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10134 rb_parser_printf(p,
"NODE_SPECIAL");
10136 else if (((*yyvaluep).node)) {
10137 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10140#line 10141 "parse.c"
10143 case YYSYMBOL_case_args:
10144#line 2618 "parse.y"
10146 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10147 rb_parser_printf(p,
"NODE_SPECIAL");
10149 else if (((*yyvaluep).node)) {
10150 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10153#line 10154 "parse.c"
10156 case YYSYMBOL_case_body:
10157#line 2618 "parse.y"
10159 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10160 rb_parser_printf(p,
"NODE_SPECIAL");
10162 else if (((*yyvaluep).node)) {
10163 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10166#line 10167 "parse.c"
10169 case YYSYMBOL_cases:
10170#line 2618 "parse.y"
10172 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10173 rb_parser_printf(p,
"NODE_SPECIAL");
10175 else if (((*yyvaluep).node)) {
10176 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10179#line 10180 "parse.c"
10182 case YYSYMBOL_p_case_body:
10183#line 2618 "parse.y"
10185 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10186 rb_parser_printf(p,
"NODE_SPECIAL");
10188 else if (((*yyvaluep).node)) {
10189 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10192#line 10193 "parse.c"
10195 case YYSYMBOL_p_cases:
10196#line 2618 "parse.y"
10198 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10199 rb_parser_printf(p,
"NODE_SPECIAL");
10201 else if (((*yyvaluep).node)) {
10202 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10205#line 10206 "parse.c"
10208 case YYSYMBOL_p_top_expr:
10209#line 2618 "parse.y"
10211 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10212 rb_parser_printf(p,
"NODE_SPECIAL");
10214 else if (((*yyvaluep).node)) {
10215 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10218#line 10219 "parse.c"
10221 case YYSYMBOL_p_top_expr_body:
10222#line 2618 "parse.y"
10224 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10225 rb_parser_printf(p,
"NODE_SPECIAL");
10227 else if (((*yyvaluep).node)) {
10228 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10231#line 10232 "parse.c"
10234 case YYSYMBOL_p_expr:
10235#line 2618 "parse.y"
10237 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10238 rb_parser_printf(p,
"NODE_SPECIAL");
10240 else if (((*yyvaluep).node)) {
10241 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10244#line 10245 "parse.c"
10247 case YYSYMBOL_p_as:
10248#line 2618 "parse.y"
10250 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10251 rb_parser_printf(p,
"NODE_SPECIAL");
10253 else if (((*yyvaluep).node)) {
10254 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10257#line 10258 "parse.c"
10260 case YYSYMBOL_p_alt:
10261#line 2618 "parse.y"
10263 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10264 rb_parser_printf(p,
"NODE_SPECIAL");
10266 else if (((*yyvaluep).node)) {
10267 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10270#line 10271 "parse.c"
10273 case YYSYMBOL_p_expr_basic:
10274#line 2618 "parse.y"
10276 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10277 rb_parser_printf(p,
"NODE_SPECIAL");
10279 else if (((*yyvaluep).node)) {
10280 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10283#line 10284 "parse.c"
10286 case YYSYMBOL_p_args:
10287#line 2618 "parse.y"
10289 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10290 rb_parser_printf(p,
"NODE_SPECIAL");
10292 else if (((*yyvaluep).node)) {
10293 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10296#line 10297 "parse.c"
10299 case YYSYMBOL_p_args_head:
10300#line 2618 "parse.y"
10302 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10303 rb_parser_printf(p,
"NODE_SPECIAL");
10305 else if (((*yyvaluep).node)) {
10306 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10309#line 10310 "parse.c"
10312 case YYSYMBOL_p_args_tail:
10313#line 2618 "parse.y"
10315 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10316 rb_parser_printf(p,
"NODE_SPECIAL");
10318 else if (((*yyvaluep).node)) {
10319 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10322#line 10323 "parse.c"
10325 case YYSYMBOL_p_find:
10326#line 2618 "parse.y"
10328 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10329 rb_parser_printf(p,
"NODE_SPECIAL");
10331 else if (((*yyvaluep).node)) {
10332 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10335#line 10336 "parse.c"
10338 case YYSYMBOL_p_rest:
10339#line 2618 "parse.y"
10341 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10342 rb_parser_printf(p,
"NODE_SPECIAL");
10344 else if (((*yyvaluep).node)) {
10345 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10348#line 10349 "parse.c"
10351 case YYSYMBOL_p_args_post:
10352#line 2618 "parse.y"
10354 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10355 rb_parser_printf(p,
"NODE_SPECIAL");
10357 else if (((*yyvaluep).node)) {
10358 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10361#line 10362 "parse.c"
10364 case YYSYMBOL_p_arg:
10365#line 2618 "parse.y"
10367 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10368 rb_parser_printf(p,
"NODE_SPECIAL");
10370 else if (((*yyvaluep).node)) {
10371 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10374#line 10375 "parse.c"
10377 case YYSYMBOL_p_kwargs:
10378#line 2618 "parse.y"
10380 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10381 rb_parser_printf(p,
"NODE_SPECIAL");
10383 else if (((*yyvaluep).node)) {
10384 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10387#line 10388 "parse.c"
10390 case YYSYMBOL_p_kwarg:
10391#line 2618 "parse.y"
10393 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10394 rb_parser_printf(p,
"NODE_SPECIAL");
10396 else if (((*yyvaluep).node)) {
10397 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10400#line 10401 "parse.c"
10403 case YYSYMBOL_p_kw:
10404#line 2618 "parse.y"
10406 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10407 rb_parser_printf(p,
"NODE_SPECIAL");
10409 else if (((*yyvaluep).node)) {
10410 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10413#line 10414 "parse.c"
10416 case YYSYMBOL_p_kw_label:
10417#line 2627 "parse.y"
10419 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10421#line 10422 "parse.c"
10424 case YYSYMBOL_p_kwrest:
10425#line 2627 "parse.y"
10427 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10429#line 10430 "parse.c"
10432 case YYSYMBOL_p_kwnorest:
10433#line 2627 "parse.y"
10435 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10437#line 10438 "parse.c"
10440 case YYSYMBOL_p_any_kwrest:
10441#line 2627 "parse.y"
10443 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10445#line 10446 "parse.c"
10448 case YYSYMBOL_p_value:
10449#line 2618 "parse.y"
10451 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10452 rb_parser_printf(p,
"NODE_SPECIAL");
10454 else if (((*yyvaluep).node)) {
10455 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10458#line 10459 "parse.c"
10461 case YYSYMBOL_range_expr_p_primitive:
10462#line 2618 "parse.y"
10464 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10465 rb_parser_printf(p,
"NODE_SPECIAL");
10467 else if (((*yyvaluep).node)) {
10468 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10471#line 10472 "parse.c"
10474 case YYSYMBOL_p_primitive:
10475#line 2618 "parse.y"
10477 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10478 rb_parser_printf(p,
"NODE_SPECIAL");
10480 else if (((*yyvaluep).node)) {
10481 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10484#line 10485 "parse.c"
10487 case YYSYMBOL_p_variable:
10488#line 2618 "parse.y"
10490 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10491 rb_parser_printf(p,
"NODE_SPECIAL");
10493 else if (((*yyvaluep).node)) {
10494 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10497#line 10498 "parse.c"
10500 case YYSYMBOL_p_var_ref:
10501#line 2618 "parse.y"
10503 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10504 rb_parser_printf(p,
"NODE_SPECIAL");
10506 else if (((*yyvaluep).node)) {
10507 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10510#line 10511 "parse.c"
10513 case YYSYMBOL_p_expr_ref:
10514#line 2618 "parse.y"
10516 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10517 rb_parser_printf(p,
"NODE_SPECIAL");
10519 else if (((*yyvaluep).node)) {
10520 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10523#line 10524 "parse.c"
10526 case YYSYMBOL_p_const:
10527#line 2618 "parse.y"
10529 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10530 rb_parser_printf(p,
"NODE_SPECIAL");
10532 else if (((*yyvaluep).node)) {
10533 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10536#line 10537 "parse.c"
10539 case YYSYMBOL_opt_rescue:
10540#line 2618 "parse.y"
10542 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10543 rb_parser_printf(p,
"NODE_SPECIAL");
10545 else if (((*yyvaluep).node)) {
10546 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10549#line 10550 "parse.c"
10552 case YYSYMBOL_exc_list:
10553#line 2618 "parse.y"
10555 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10556 rb_parser_printf(p,
"NODE_SPECIAL");
10558 else if (((*yyvaluep).node)) {
10559 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10562#line 10563 "parse.c"
10565 case YYSYMBOL_exc_var:
10566#line 2618 "parse.y"
10568 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10569 rb_parser_printf(p,
"NODE_SPECIAL");
10571 else if (((*yyvaluep).node)) {
10572 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10575#line 10576 "parse.c"
10578 case YYSYMBOL_opt_ensure:
10579#line 2618 "parse.y"
10581 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10582 rb_parser_printf(p,
"NODE_SPECIAL");
10584 else if (((*yyvaluep).node)) {
10585 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10588#line 10589 "parse.c"
10591 case YYSYMBOL_literal:
10592#line 2618 "parse.y"
10594 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10595 rb_parser_printf(p,
"NODE_SPECIAL");
10597 else if (((*yyvaluep).node)) {
10598 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10601#line 10602 "parse.c"
10604 case YYSYMBOL_strings:
10605#line 2618 "parse.y"
10607 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10608 rb_parser_printf(p,
"NODE_SPECIAL");
10610 else if (((*yyvaluep).node)) {
10611 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10614#line 10615 "parse.c"
10617 case YYSYMBOL_string:
10618#line 2618 "parse.y"
10620 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10621 rb_parser_printf(p,
"NODE_SPECIAL");
10623 else if (((*yyvaluep).node)) {
10624 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10627#line 10628 "parse.c"
10630 case YYSYMBOL_string1:
10631#line 2618 "parse.y"
10633 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10634 rb_parser_printf(p,
"NODE_SPECIAL");
10636 else if (((*yyvaluep).node)) {
10637 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10640#line 10641 "parse.c"
10643 case YYSYMBOL_xstring:
10644#line 2618 "parse.y"
10646 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10647 rb_parser_printf(p,
"NODE_SPECIAL");
10649 else if (((*yyvaluep).node)) {
10650 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10653#line 10654 "parse.c"
10656 case YYSYMBOL_regexp:
10657#line 2618 "parse.y"
10659 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10660 rb_parser_printf(p,
"NODE_SPECIAL");
10662 else if (((*yyvaluep).node)) {
10663 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10666#line 10667 "parse.c"
10669 case YYSYMBOL_words_tWORDS_BEG_word_list:
10670#line 2618 "parse.y"
10672 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10673 rb_parser_printf(p,
"NODE_SPECIAL");
10675 else if (((*yyvaluep).node)) {
10676 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10679#line 10680 "parse.c"
10682 case YYSYMBOL_words:
10683#line 2618 "parse.y"
10685 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10686 rb_parser_printf(p,
"NODE_SPECIAL");
10688 else if (((*yyvaluep).node)) {
10689 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10692#line 10693 "parse.c"
10695 case YYSYMBOL_word_list:
10696#line 2618 "parse.y"
10698 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10699 rb_parser_printf(p,
"NODE_SPECIAL");
10701 else if (((*yyvaluep).node)) {
10702 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10705#line 10706 "parse.c"
10708 case YYSYMBOL_word:
10709#line 2618 "parse.y"
10711 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10712 rb_parser_printf(p,
"NODE_SPECIAL");
10714 else if (((*yyvaluep).node)) {
10715 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10718#line 10719 "parse.c"
10721 case YYSYMBOL_words_tSYMBOLS_BEG_symbol_list:
10722#line 2618 "parse.y"
10724 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10725 rb_parser_printf(p,
"NODE_SPECIAL");
10727 else if (((*yyvaluep).node)) {
10728 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10731#line 10732 "parse.c"
10734 case YYSYMBOL_symbols:
10735#line 2618 "parse.y"
10737 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10738 rb_parser_printf(p,
"NODE_SPECIAL");
10740 else if (((*yyvaluep).node)) {
10741 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10744#line 10745 "parse.c"
10747 case YYSYMBOL_symbol_list:
10748#line 2618 "parse.y"
10750 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10751 rb_parser_printf(p,
"NODE_SPECIAL");
10753 else if (((*yyvaluep).node)) {
10754 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10757#line 10758 "parse.c"
10760 case YYSYMBOL_words_tQWORDS_BEG_qword_list:
10761#line 2618 "parse.y"
10763 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10764 rb_parser_printf(p,
"NODE_SPECIAL");
10766 else if (((*yyvaluep).node)) {
10767 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10770#line 10771 "parse.c"
10773 case YYSYMBOL_qwords:
10774#line 2618 "parse.y"
10776 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10777 rb_parser_printf(p,
"NODE_SPECIAL");
10779 else if (((*yyvaluep).node)) {
10780 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10783#line 10784 "parse.c"
10786 case YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list:
10787#line 2618 "parse.y"
10789 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10790 rb_parser_printf(p,
"NODE_SPECIAL");
10792 else if (((*yyvaluep).node)) {
10793 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10796#line 10797 "parse.c"
10799 case YYSYMBOL_qsymbols:
10800#line 2618 "parse.y"
10802 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10803 rb_parser_printf(p,
"NODE_SPECIAL");
10805 else if (((*yyvaluep).node)) {
10806 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10809#line 10810 "parse.c"
10812 case YYSYMBOL_qword_list:
10813#line 2618 "parse.y"
10815 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10816 rb_parser_printf(p,
"NODE_SPECIAL");
10818 else if (((*yyvaluep).node)) {
10819 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10822#line 10823 "parse.c"
10825 case YYSYMBOL_qsym_list:
10826#line 2618 "parse.y"
10828 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10829 rb_parser_printf(p,
"NODE_SPECIAL");
10831 else if (((*yyvaluep).node)) {
10832 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10835#line 10836 "parse.c"
10838 case YYSYMBOL_string_contents:
10839#line 2618 "parse.y"
10841 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10842 rb_parser_printf(p,
"NODE_SPECIAL");
10844 else if (((*yyvaluep).node)) {
10845 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10848#line 10849 "parse.c"
10851 case YYSYMBOL_xstring_contents:
10852#line 2618 "parse.y"
10854 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10855 rb_parser_printf(p,
"NODE_SPECIAL");
10857 else if (((*yyvaluep).node)) {
10858 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10861#line 10862 "parse.c"
10864 case YYSYMBOL_regexp_contents:
10865#line 2618 "parse.y"
10867 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10868 rb_parser_printf(p,
"NODE_SPECIAL");
10870 else if (((*yyvaluep).node)) {
10871 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10874#line 10875 "parse.c"
10877 case YYSYMBOL_string_content:
10878#line 2618 "parse.y"
10880 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10881 rb_parser_printf(p,
"NODE_SPECIAL");
10883 else if (((*yyvaluep).node)) {
10884 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10887#line 10888 "parse.c"
10890 case YYSYMBOL_string_dvar:
10891#line 2618 "parse.y"
10893 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10894 rb_parser_printf(p,
"NODE_SPECIAL");
10896 else if (((*yyvaluep).node)) {
10897 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10900#line 10901 "parse.c"
10903 case YYSYMBOL_symbol:
10904#line 2618 "parse.y"
10906 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10907 rb_parser_printf(p,
"NODE_SPECIAL");
10909 else if (((*yyvaluep).node)) {
10910 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10913#line 10914 "parse.c"
10916 case YYSYMBOL_ssym:
10917#line 2618 "parse.y"
10919 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10920 rb_parser_printf(p,
"NODE_SPECIAL");
10922 else if (((*yyvaluep).node)) {
10923 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10926#line 10927 "parse.c"
10930#line 2627 "parse.y"
10932 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10934#line 10935 "parse.c"
10937 case YYSYMBOL_dsym:
10938#line 2618 "parse.y"
10940 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10941 rb_parser_printf(p,
"NODE_SPECIAL");
10943 else if (((*yyvaluep).node)) {
10944 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10947#line 10948 "parse.c"
10950 case YYSYMBOL_numeric:
10951#line 2618 "parse.y"
10953 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10954 rb_parser_printf(p,
"NODE_SPECIAL");
10956 else if (((*yyvaluep).node)) {
10957 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10960#line 10961 "parse.c"
10963 case YYSYMBOL_simple_numeric:
10964#line 2618 "parse.y"
10966 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10967 rb_parser_printf(p,
"NODE_SPECIAL");
10969 else if (((*yyvaluep).node)) {
10970 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10973#line 10974 "parse.c"
10976 case YYSYMBOL_nonlocal_var:
10977#line 2627 "parse.y"
10979 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10981#line 10982 "parse.c"
10984 case YYSYMBOL_user_variable:
10985#line 2627 "parse.y"
10987 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10989#line 10990 "parse.c"
10992 case YYSYMBOL_keyword_variable:
10993#line 2627 "parse.y"
10995 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10997#line 10998 "parse.c"
11000 case YYSYMBOL_var_ref:
11001#line 2618 "parse.y"
11003 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11004 rb_parser_printf(p,
"NODE_SPECIAL");
11006 else if (((*yyvaluep).node)) {
11007 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11010#line 11011 "parse.c"
11013 case YYSYMBOL_var_lhs:
11014#line 2618 "parse.y"
11016 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11017 rb_parser_printf(p,
"NODE_SPECIAL");
11019 else if (((*yyvaluep).node)) {
11020 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11023#line 11024 "parse.c"
11026 case YYSYMBOL_backref:
11027#line 2618 "parse.y"
11029 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11030 rb_parser_printf(p,
"NODE_SPECIAL");
11032 else if (((*yyvaluep).node)) {
11033 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11036#line 11037 "parse.c"
11039 case YYSYMBOL_superclass:
11040#line 2618 "parse.y"
11042 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11043 rb_parser_printf(p,
"NODE_SPECIAL");
11045 else if (((*yyvaluep).node)) {
11046 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11049#line 11050 "parse.c"
11052 case YYSYMBOL_f_opt_paren_args:
11053#line 2618 "parse.y"
11055 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11056 rb_parser_printf(p,
"NODE_SPECIAL");
11058 else if (((*yyvaluep).node_args)) {
11059 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11062#line 11063 "parse.c"
11065 case YYSYMBOL_f_empty_arg:
11066#line 2618 "parse.y"
11068 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11069 rb_parser_printf(p,
"NODE_SPECIAL");
11071 else if (((*yyvaluep).node_args)) {
11072 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11075#line 11076 "parse.c"
11078 case YYSYMBOL_f_paren_args:
11079#line 2618 "parse.y"
11081 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11082 rb_parser_printf(p,
"NODE_SPECIAL");
11084 else if (((*yyvaluep).node_args)) {
11085 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11088#line 11089 "parse.c"
11091 case YYSYMBOL_f_arglist:
11092#line 2618 "parse.y"
11094 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11095 rb_parser_printf(p,
"NODE_SPECIAL");
11097 else if (((*yyvaluep).node_args)) {
11098 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11101#line 11102 "parse.c"
11104 case YYSYMBOL_f_kw_arg_value:
11105#line 2618 "parse.y"
11107 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
11108 rb_parser_printf(p,
"NODE_SPECIAL");
11110 else if (((*yyvaluep).node_kw_arg)) {
11111 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
11114#line 11115 "parse.c"
11117 case YYSYMBOL_f_kwarg_arg_value:
11118#line 2618 "parse.y"
11120 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
11121 rb_parser_printf(p,
"NODE_SPECIAL");
11123 else if (((*yyvaluep).node_kw_arg)) {
11124 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
11127#line 11128 "parse.c"
11130 case YYSYMBOL_opt_f_block_arg_opt_comma:
11131#line 2627 "parse.y"
11133 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11135#line 11136 "parse.c"
11138 case YYSYMBOL_args_tail_basic_arg_value_opt_comma:
11139#line 2618 "parse.y"
11141 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11142 rb_parser_printf(p,
"NODE_SPECIAL");
11144 else if (((*yyvaluep).node_args)) {
11145 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11148#line 11149 "parse.c"
11151 case YYSYMBOL_args_tail:
11152#line 2618 "parse.y"
11154 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11155 rb_parser_printf(p,
"NODE_SPECIAL");
11157 else if (((*yyvaluep).node_args)) {
11158 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11161#line 11162 "parse.c"
11164 case YYSYMBOL_args_tail_basic_arg_value_none:
11165#line 2618 "parse.y"
11167 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11168 rb_parser_printf(p,
"NODE_SPECIAL");
11170 else if (((*yyvaluep).node_args)) {
11171 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11174#line 11175 "parse.c"
11177 case YYSYMBOL_largs_tail:
11178#line 2618 "parse.y"
11180 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11181 rb_parser_printf(p,
"NODE_SPECIAL");
11183 else if (((*yyvaluep).node_args)) {
11184 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11187#line 11188 "parse.c"
11190 case YYSYMBOL_f_opt_arg_value:
11191#line 2618 "parse.y"
11193 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
11194 rb_parser_printf(p,
"NODE_SPECIAL");
11196 else if (((*yyvaluep).node_opt_arg)) {
11197 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
11200#line 11201 "parse.c"
11203 case YYSYMBOL_f_opt_arg_arg_value:
11204#line 2618 "parse.y"
11206 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
11207 rb_parser_printf(p,
"NODE_SPECIAL");
11209 else if (((*yyvaluep).node_opt_arg)) {
11210 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
11213#line 11214 "parse.c"
11216 case YYSYMBOL_opt_args_tail_args_tail_opt_comma:
11217#line 2618 "parse.y"
11219 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11220 rb_parser_printf(p,
"NODE_SPECIAL");
11222 else if (((*yyvaluep).node_args)) {
11223 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11226#line 11227 "parse.c"
11229 case YYSYMBOL_args_list_arg_value_opt_args_tail_args_tail_opt_comma:
11230#line 2618 "parse.y"
11232 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11233 rb_parser_printf(p,
"NODE_SPECIAL");
11235 else if (((*yyvaluep).node_args)) {
11236 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11239#line 11240 "parse.c"
11242 case YYSYMBOL_f_args_list_args_tail_opt_comma:
11243#line 2618 "parse.y"
11245 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11246 rb_parser_printf(p,
"NODE_SPECIAL");
11248 else if (((*yyvaluep).node_args)) {
11249 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11252#line 11253 "parse.c"
11255 case YYSYMBOL_tail_only_args_args_tail:
11256#line 2618 "parse.y"
11258 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11259 rb_parser_printf(p,
"NODE_SPECIAL");
11261 else if (((*yyvaluep).node_args)) {
11262 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11265#line 11266 "parse.c"
11268 case YYSYMBOL_f_args:
11269#line 2618 "parse.y"
11271 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11272 rb_parser_printf(p,
"NODE_SPECIAL");
11274 else if (((*yyvaluep).node_args)) {
11275 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11278#line 11279 "parse.c"
11281 case YYSYMBOL_opt_args_tail_largs_tail_none:
11282#line 2618 "parse.y"
11284 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11285 rb_parser_printf(p,
"NODE_SPECIAL");
11287 else if (((*yyvaluep).node_args)) {
11288 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11291#line 11292 "parse.c"
11294 case YYSYMBOL_args_list_arg_value_opt_args_tail_largs_tail_none:
11295#line 2618 "parse.y"
11297 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11298 rb_parser_printf(p,
"NODE_SPECIAL");
11300 else if (((*yyvaluep).node_args)) {
11301 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11304#line 11305 "parse.c"
11307 case YYSYMBOL_f_args_list_largs_tail_none:
11308#line 2618 "parse.y"
11310 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11311 rb_parser_printf(p,
"NODE_SPECIAL");
11313 else if (((*yyvaluep).node_args)) {
11314 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11317#line 11318 "parse.c"
11320 case YYSYMBOL_tail_only_args_largs_tail:
11321#line 2618 "parse.y"
11323 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11324 rb_parser_printf(p,
"NODE_SPECIAL");
11326 else if (((*yyvaluep).node_args)) {
11327 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11330#line 11331 "parse.c"
11333 case YYSYMBOL_f_largs:
11334#line 2618 "parse.y"
11336 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11337 rb_parser_printf(p,
"NODE_SPECIAL");
11339 else if (((*yyvaluep).node_args)) {
11340 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11343#line 11344 "parse.c"
11346 case YYSYMBOL_args_forward:
11347#line 2627 "parse.y"
11349 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11351#line 11352 "parse.c"
11354 case YYSYMBOL_f_bad_arg:
11355#line 2627 "parse.y"
11357 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11359#line 11360 "parse.c"
11362 case YYSYMBOL_f_norm_arg:
11363#line 2627 "parse.y"
11365 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11367#line 11368 "parse.c"
11370 case YYSYMBOL_f_arg_asgn:
11371#line 2627 "parse.y"
11373 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11375#line 11376 "parse.c"
11378 case YYSYMBOL_f_arg_item:
11379#line 2618 "parse.y"
11381 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
11382 rb_parser_printf(p,
"NODE_SPECIAL");
11384 else if (((*yyvaluep).node_args_aux)) {
11385 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11388#line 11389 "parse.c"
11391 case YYSYMBOL_f_arg:
11392#line 2618 "parse.y"
11394 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
11395 rb_parser_printf(p,
"NODE_SPECIAL");
11397 else if (((*yyvaluep).node_args_aux)) {
11398 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11401#line 11402 "parse.c"
11404 case YYSYMBOL_f_label:
11405#line 2627 "parse.y"
11407 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11409#line 11410 "parse.c"
11412 case YYSYMBOL_f_no_kwarg:
11413#line 2627 "parse.y"
11415 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11417#line 11418 "parse.c"
11420 case YYSYMBOL_f_kwrest:
11421#line 2627 "parse.y"
11423 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11425#line 11426 "parse.c"
11428 case YYSYMBOL_f_rest_arg:
11429#line 2627 "parse.y"
11431 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11433#line 11434 "parse.c"
11436 case YYSYMBOL_f_block_arg:
11437#line 2627 "parse.y"
11439 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11441#line 11442 "parse.c"
11444 case YYSYMBOL_opt_comma:
11445#line 2627 "parse.y"
11447 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11449#line 11450 "parse.c"
11452 case YYSYMBOL_value_expr_singleton_expr:
11453#line 2618 "parse.y"
11455 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11456 rb_parser_printf(p,
"NODE_SPECIAL");
11458 else if (((*yyvaluep).node)) {
11459 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11462#line 11463 "parse.c"
11465 case YYSYMBOL_singleton:
11466#line 2618 "parse.y"
11468 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11469 rb_parser_printf(p,
"NODE_SPECIAL");
11471 else if (((*yyvaluep).node)) {
11472 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11475#line 11476 "parse.c"
11478 case YYSYMBOL_singleton_expr:
11479#line 2618 "parse.y"
11481 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11482 rb_parser_printf(p,
"NODE_SPECIAL");
11484 else if (((*yyvaluep).node)) {
11485 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11488#line 11489 "parse.c"
11491 case YYSYMBOL_assoc_list:
11492#line 2618 "parse.y"
11494 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11495 rb_parser_printf(p,
"NODE_SPECIAL");
11497 else if (((*yyvaluep).node)) {
11498 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11501#line 11502 "parse.c"
11504 case YYSYMBOL_assocs:
11505#line 2618 "parse.y"
11507 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11508 rb_parser_printf(p,
"NODE_SPECIAL");
11510 else if (((*yyvaluep).node)) {
11511 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11514#line 11515 "parse.c"
11517 case YYSYMBOL_assoc:
11518#line 2618 "parse.y"
11520 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11521 rb_parser_printf(p,
"NODE_SPECIAL");
11523 else if (((*yyvaluep).node)) {
11524 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11527#line 11528 "parse.c"
11530 case YYSYMBOL_operation2:
11531#line 2627 "parse.y"
11533 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11535#line 11536 "parse.c"
11538 case YYSYMBOL_operation3:
11539#line 2627 "parse.y"
11541 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11543#line 11544 "parse.c"
11546 case YYSYMBOL_dot_or_colon:
11547#line 2627 "parse.y"
11549 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11551#line 11552 "parse.c"
11554 case YYSYMBOL_call_op:
11555#line 2627 "parse.y"
11557 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11559#line 11560 "parse.c"
11562 case YYSYMBOL_call_op2:
11563#line 2627 "parse.y"
11565 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11567#line 11568 "parse.c"
11570 case YYSYMBOL_none:
11571#line 2618 "parse.y"
11573 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11574 rb_parser_printf(p,
"NODE_SPECIAL");
11576 else if (((*yyvaluep).node)) {
11577 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11580#line 11581 "parse.c"
11586 YY_IGNORE_MAYBE_UNINITIALIZED_END
11595yy_symbol_print (
FILE *yyo,
11598 YYFPRINTF (yyo,
"%s %s (",
11599 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
11601 YYLOCATION_PRINT (yyo, yylocationp, p);
11602 YYFPRINTF (yyo,
": ");
11603 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
11604 YYFPRINTF (yyo,
")");
11613yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop,
struct parser_params *p)
11615 YYFPRINTF (stderr,
"Stack now");
11616 for (; yybottom <= yytop; yybottom++)
11618 int yybot = *yybottom;
11619 YYFPRINTF (stderr,
" %d", yybot);
11621 YYFPRINTF (stderr,
"\n");
11624# define YY_STACK_PRINT(Bottom, Top, p) \
11627 yy_stack_print ((Bottom), (Top), p); \
11636yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp,
YYLTYPE *yylsp,
11639 int yylno = yyrline[yyrule];
11640 int yynrhs = yyr2[yyrule];
11642 YYFPRINTF (stderr,
"Reducing stack by rule %d (line %d):\n",
11643 yyrule - 1, yylno);
11645 for (yyi = 0; yyi < yynrhs; yyi++)
11647 YYFPRINTF (stderr,
" $%d = ", yyi + 1);
11648 yy_symbol_print (stderr,
11649 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
11650 &yyvsp[(yyi + 1) - (yynrhs)],
11651 &(yylsp[(yyi + 1) - (yynrhs)]), p);
11652 YYFPRINTF (stderr,
"\n");
11656# define YY_REDUCE_PRINT(Rule, p) \
11659 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
11668# define YYDPRINTF(Args) ((void) 0)
11669# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p)
11670# define YY_STACK_PRINT(Bottom, Top, p)
11671# define YY_REDUCE_PRINT(Rule, p)
11677# define YYINITDEPTH 200
11688# define YYMAXDEPTH 10000
11696 yysymbol_kind_t yytoken;
11708 yysymbol_kind_t yyarg[],
int yyargn)
11712 int yyn = yypact[+*yyctx->yyssp];
11713 if (!yypact_value_is_default (yyn))
11718 int yyxbegin = yyn < 0 ? -yyn : 0;
11720 int yychecklim = YYLAST - yyn + 1;
11721 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
11723 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
11724 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
11725 && !yytable_value_is_error (yytable[yyx + yyn]))
11729 else if (yycount == yyargn)
11732 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
11735 if (yyarg && yycount == 0 && 0 < yyargn)
11736 yyarg[0] = YYSYMBOL_YYEMPTY;
11744# if defined __GLIBC__ && defined _STRING_H
11745# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
11749yystrlen (
const char *yystr)
11752 for (yylen = 0; yystr[yylen]; yylen++)
11760# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
11761# define yystpcpy stpcpy
11766yystpcpy (
char *yydest,
const char *yysrc)
11768 char *yyd = yydest;
11769 const char *yys = yysrc;
11771 while ((*yyd++ = *yys++) !=
'\0')
11788yytnamerr (
char *yyres,
const char *yystr)
11792 YYPTRDIFF_T yyn = 0;
11793 char const *yyp = yystr;
11799 goto do_not_strip_quotes;
11802 if (*++yyp !=
'\\')
11803 goto do_not_strip_quotes;
11819 do_not_strip_quotes: ;
11823 return yystpcpy (yyres, yystr) - yyres;
11825 return yystrlen (yystr);
11832 yysymbol_kind_t yyarg[],
int yyargn)
11859 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
11863 yyarg[yycount] = yyctx->yytoken;
11865 yyn = yypcontext_expected_tokens (yyctx,
11866 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
11867 if (yyn == YYENOMEM)
11884yysyntax_error (YYPTRDIFF_T *yymsg_alloc,
char **yymsg,
11887 enum { YYARGS_MAX = 5 };
11889 const char *yyformat = YY_NULLPTR;
11892 yysymbol_kind_t yyarg[YYARGS_MAX];
11894 YYPTRDIFF_T yysize = 0;
11897 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
11898 if (yycount == YYENOMEM)
11903#define YYCASE_(N, S) \
11908 YYCASE_(0, YY_(
"syntax error"));
11909 YYCASE_(1, YY_(
"syntax error, unexpected %s"));
11910 YYCASE_(2, YY_(
"syntax error, unexpected %s, expecting %s"));
11911 YYCASE_(3, YY_(
"syntax error, unexpected %s, expecting %s or %s"));
11912 YYCASE_(4, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
11913 YYCASE_(5, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
11919 yysize = yystrlen (yyformat) - 2 * yycount + 1;
11922 for (yyi = 0; yyi < yycount; ++yyi)
11924 YYPTRDIFF_T yysize1
11925 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
11926 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
11933 if (*yymsg_alloc < yysize)
11935 *yymsg_alloc = 2 * yysize;
11936 if (! (yysize <= *yymsg_alloc
11937 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
11938 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
11946 char *yyp = *yymsg;
11948 while ((*yyp = *yyformat) !=
'\0')
11949 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
11951 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
11969yydestruct (
const char *yymsg,
11973 YY_USE (yylocationp);
11976 yymsg =
"Deleting";
11977 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp, p);
11979 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
11982 case YYSYMBOL_258_16:
11983#line 2655 "parse.y"
11985 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11987#line 11988 "parse.c"
11990 case YYSYMBOL_259_17:
11991#line 2655 "parse.y"
11993 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11995#line 11996 "parse.c"
12001 YY_IGNORE_MAYBE_UNINITIALIZED_END
12024static const YYSTYPE yyval_default = {};
12025(void) yyval_default;
12027YY_INITIAL_VALUE (
static const YYSTYPE yyval_default;)
12029YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
12032static const YYLTYPE yyloc_default
12033# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
12037YYLTYPE yylloc = yyloc_default;
12043 yy_state_fast_t yystate = 0;
12045 int yyerrstatus = 0;
12051 YYPTRDIFF_T yystacksize = YYINITDEPTH;
12054 yy_state_t yyssa[YYINITDEPTH];
12055 yy_state_t *yyss = yyssa;
12056 yy_state_t *yyssp = yyss;
12072 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
12082 char yymsgbuf[128];
12083 char *yymsg = yymsgbuf;
12084 YYPTRDIFF_T yymsg_alloc =
sizeof yymsgbuf;
12086#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
12092 YYDPRINTF ((stderr,
"Starting parse\n"));
12098#line 2662 "parse.y"
12100 RUBY_SET_YYLLOC_OF_NONE(yylloc);
12103#line 12104 "parse.c"
12122 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
12123 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
12124 YY_IGNORE_USELESS_CAST_BEGIN
12125 *yyssp = YY_CAST (yy_state_t, yystate);
12126 YY_IGNORE_USELESS_CAST_END
12127 YY_STACK_PRINT (yyss, yyssp, p);
12129 if (yyss + yystacksize - 1 <= yyssp)
12130#if !defined yyoverflow && !defined YYSTACK_RELOCATE
12135 YYPTRDIFF_T yysize = yyssp - yyss + 1;
12137# if defined yyoverflow
12142 yy_state_t *yyss1 = yyss;
12150 yyoverflow (YY_(
"memory exhausted"),
12151 &yyss1, yysize * YYSIZEOF (*yyssp),
12152 &yyvs1, yysize * YYSIZEOF (*yyvsp),
12153 &yyls1, yysize * YYSIZEOF (*yylsp),
12161 if (YYMAXDEPTH <= yystacksize)
12164 if (YYMAXDEPTH < yystacksize)
12165 yystacksize = YYMAXDEPTH;
12168 yy_state_t *yyss1 = yyss;
12169 union yyalloc *yyptr =
12170 YY_CAST (
union yyalloc *,
12171 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
12174 YYSTACK_RELOCATE (yyss_alloc, yyss);
12175 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
12176 YYSTACK_RELOCATE (yyls_alloc, yyls);
12177# undef YYSTACK_RELOCATE
12178 if (yyss1 != yyssa)
12179 YYSTACK_FREE (yyss1);
12183 yyssp = yyss + yysize - 1;
12184 yyvsp = yyvs + yysize - 1;
12185 yylsp = yyls + yysize - 1;
12187 YY_IGNORE_USELESS_CAST_BEGIN
12188 YYDPRINTF ((stderr,
"Stack size increased to %ld\n",
12189 YY_CAST (
long, yystacksize)));
12190 YY_IGNORE_USELESS_CAST_END
12192 if (yyss + yystacksize - 1 <= yyssp)
12198 if (yystate == YYFINAL)
12212 yyn = yypact[yystate];
12213 if (yypact_value_is_default (yyn))
12219 if (yychar == YYEMPTY)
12221 YYDPRINTF ((stderr,
"Reading a token\n"));
12222 yychar = yylex (&yylval, &yylloc, p);
12225 if (yychar <= END_OF_INPUT)
12227 yychar = END_OF_INPUT;
12228 yytoken = YYSYMBOL_YYEOF;
12229 YYDPRINTF ((stderr,
"Now at end of input.\n"));
12231 else if (yychar == YYerror)
12238 yytoken = YYSYMBOL_YYerror;
12239 yyerror_range[1] = yylloc;
12244 yytoken = YYTRANSLATE (yychar);
12245 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc, p);
12251 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
12253 yyn = yytable[yyn];
12256 if (yytable_value_is_error (yyn))
12268 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc, p);
12270 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
12272 YY_IGNORE_MAYBE_UNINITIALIZED_END
12275#line 2665 "parse.y"
12277#line 12278 "parse.c"
12289 yyn = yydefact[yystate];
12310 yyval = yyvsp[1-yylen];
12312#line 2666 "parse.y"
12313 {before_reduce(yylen, p);}
12314#line 12315 "parse.c"
12318 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
12319 yyerror_range[1] = yyloc;
12320 YY_REDUCE_PRINT (yyn, p);
12324#line 3170 "parse.y"
12326 SET_LEX_STATE(EXPR_BEG);
12327 local_push(p, ifndef_ripper(1)+0);
12329 if (!ifndef_ripper(p->do_loop) + 0) init_block_exit(p);
12331#line 12332 "parse.c"
12335#line 2985 "parse.y"
12337 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
12339#line 12340 "parse.c"
12343#line 3177 "parse.y"
12345 if ((yyvsp[0].node) && !compile_for_eval) {
12346 NODE *node = (yyvsp[0].node);
12348 if (nd_type_p(node, NODE_BLOCK)) {
12349 while (RNODE_BLOCK(node)->nd_next) {
12350 node = RNODE_BLOCK(node)->nd_next;
12352 node = RNODE_BLOCK(node)->nd_head;
12354 node = remove_begin(node);
12355 void_expr(p, node);
12357 p->eval_tree = NEW_SCOPE(0, block_append(p, p->eval_tree, (yyvsp[0].node)), NULL, &(yyloc));
12361#line 12362 "parse.c"
12365#line 3197 "parse.y"
12367 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12370#line 12371 "parse.c"
12374#line 3202 "parse.y"
12376 (yyval.node) = newline_node((yyvsp[0].node));
12379#line 12380 "parse.c"
12383#line 3207 "parse.y"
12385 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12388#line 12389 "parse.c"
12392#line 3214 "parse.y"
12394 clear_block_exit(p,
true);
12395 (yyval.node) = (yyvsp[0].node);
12397#line 12398 "parse.c"
12401#line 3219 "parse.y"
12403 (yyval.node) = (yyvsp[0].node);
12406#line 12407 "parse.c"
12410#line 3225 "parse.y"
12411 {(yyval.node_exits) = init_block_exit(p);}
12412#line 12413 "parse.c"
12416#line 3228 "parse.y"
12418 restore_block_exit(p, (yyvsp[-2].node_exits));
12419 p->eval_tree_begin = block_append(p, p->eval_tree_begin,
12420 NEW_BEGIN((yyvsp[-1].node), &(yyloc)));
12421 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12424#line 12425 "parse.c"
12428#line 2985 "parse.y"
12430 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
12432#line 12433 "parse.c"
12436#line 3241 "parse.y"
12438 if (!(yyvsp[-1].node)) yyerror1(&(yylsp[0]),
"else without rescue is useless");
12439 next_rescue_context(&p->ctxt, &(yyvsp[-2].ctxt), after_else);
12441#line 12442 "parse.c"
12445#line 3246 "parse.y"
12447 next_rescue_context(&p->ctxt, &(yyvsp[-4].ctxt), after_ensure);
12449#line 12450 "parse.c"
12453#line 3250 "parse.y"
12455 (yyval.node) = new_bodystmt(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12458#line 12459 "parse.c"
12462#line 3257 "parse.y"
12464 next_rescue_context(&p->ctxt, &(yyvsp[-1].ctxt), after_ensure);
12466#line 12467 "parse.c"
12470#line 3261 "parse.y"
12472 (yyval.node) = new_bodystmt(p, (yyvsp[-4].node), (yyvsp[-2].node), 0, (yyvsp[0].node), &(yyloc));
12475#line 12476 "parse.c"
12479#line 3268 "parse.y"
12481 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12484#line 12485 "parse.c"
12488#line 3273 "parse.y"
12490 (yyval.node) = newline_node((yyvsp[0].node));
12493#line 12494 "parse.c"
12497#line 3278 "parse.y"
12499 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12502#line 12503 "parse.c"
12506#line 3286 "parse.y"
12508 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
12510#line 12511 "parse.c"
12514#line 3290 "parse.y"
12516 (yyval.node) = (yyvsp[0].node);
12518#line 12519 "parse.c"
12522#line 3295 "parse.y"
12523 {(yyval.node_exits) = allow_block_exit(p);}
12524#line 12525 "parse.c"
12528#line 3298 "parse.y"
12530 (yyval.ctxt) = (yyvsp[0].ctxt);
12531 p->ctxt.in_rescue = before_rescue;
12534#line 12535 "parse.c"
12538#line 3304 "parse.y"
12539 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
12540#line 12541 "parse.c"
12544#line 3305 "parse.y"
12546 (yyval.node) = NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
12549#line 12550 "parse.c"
12553#line 3310 "parse.y"
12555 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].id), &(yyloc), &(yylsp[-2]));
12558#line 12559 "parse.c"
12562#line 3315 "parse.y"
12566 buf[1] = (char)RNODE_BACK_REF((yyvsp[0].node))->nd_nth;
12567 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), rb_intern2(buf, 2), &(yyloc), &(yylsp[-2]));
12570#line 12571 "parse.c"
12574#line 3323 "parse.y"
12576 static const char mesg[] =
"can't make alias for the number variables";
12578 yyerror1(&(yylsp[0]), mesg);
12580 (yyval.node) = NEW_ERROR(&(yyloc));
12583#line 12584 "parse.c"
12587#line 3332 "parse.y"
12589 nd_set_first_loc((yyvsp[0].node), (yylsp[-1]).beg_pos);
12590 RNODE_UNDEF((yyvsp[0].node))->keyword_loc = (yylsp[-1]);
12591 (yyval.node) = (yyvsp[0].node);
12594#line 12595 "parse.c"
12598#line 3339 "parse.y"
12600 (yyval.node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12601 fixpos((yyval.node), (yyvsp[0].node));
12604#line 12605 "parse.c"
12608#line 3345 "parse.y"
12610 (yyval.node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12611 fixpos((yyval.node), (yyvsp[0].node));
12614#line 12615 "parse.c"
12618#line 3351 "parse.y"
12620 clear_block_exit(p,
false);
12621 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12622 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12625 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12629#line 12630 "parse.c"
12633#line 3362 "parse.y"
12635 clear_block_exit(p,
false);
12636 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12637 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12640 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12644#line 12645 "parse.c"
12648#line 3373 "parse.y"
12650 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12652 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12653 resq = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12654 (yyval.node) = NEW_RESCUE(remove_begin((yyvsp[-3].node)), resq, 0, &(yyloc));
12657#line 12658 "parse.c"
12661#line 3382 "parse.y"
12663 if (p->ctxt.in_def) {
12664 rb_warn0(
"END in method; use at_exit");
12666 restore_block_exit(p, (yyvsp[-3].node_exits));
12667 p->ctxt = (yyvsp[-4].ctxt);
12669 NODE *scope = NEW_SCOPE2(0 , 0 , (yyvsp[-1].node) , NULL , &(yyloc));
12670 (yyval.node) = NEW_POSTEXE(scope, &(yyloc), &(yylsp[-4]), &(yylsp[-2]), &(yylsp[0]));
12671 RNODE_SCOPE(scope)->nd_parent = (yyval.node);
12675#line 12676 "parse.c"
12679#line 3397 "parse.y"
12681 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12684#line 12685 "parse.c"
12688#line 2920 "parse.y"
12690 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12693#line 12694 "parse.c"
12697#line 3404 "parse.y"
12699 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12700 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12701 (yyvsp[0].node) = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12702 loc.beg_pos = (yylsp[-3]).beg_pos;
12703 (yyvsp[-3].node) = NEW_RESCUE((yyvsp[-3].node), (yyvsp[0].node), 0, &loc);
12704 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-6].node_masgn), (yyvsp[-3].node), (yyvsp[-4].ctxt), &(yyloc));
12707#line 12708 "parse.c"
12711#line 3414 "parse.y"
12713 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12716#line 12717 "parse.c"
12720#line 3420 "parse.y"
12723 (yyval.node) = NEW_ERROR(&(yyloc));
12725#line 12726 "parse.c"
12729#line 2920 "parse.y"
12731 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12734#line 12735 "parse.c"
12738#line 3055 "parse.y"
12740 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12743#line 12744 "parse.c"
12747#line 3060 "parse.y"
12749 (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]));
12752#line 12753 "parse.c"
12756#line 3065 "parse.y"
12758 (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]));
12761#line 12762 "parse.c"
12765#line 3070 "parse.y"
12767 (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]));
12770#line 12771 "parse.c"
12774#line 3075 "parse.y"
12776 (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]));
12779#line 12780 "parse.c"
12783#line 3080 "parse.y"
12785 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
12786 (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));
12789#line 12790 "parse.c"
12793#line 3086 "parse.y"
12795 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
12796 (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));
12799#line 12800 "parse.c"
12803#line 3092 "parse.y"
12805 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
12806 (yyval.node) = NEW_ERROR(&(yyloc));
12809#line 12810 "parse.c"
12813#line 2960 "parse.y"
12815 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12816 restore_defun(p, (yyvsp[-3].node_def_temp));
12817 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12818 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
12819 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
12824#line 12825 "parse.c"
12828#line 2971 "parse.y"
12830 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12831 restore_defun(p, (yyvsp[-3].node_def_temp));
12832 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12833 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
12834 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
12839#line 12840 "parse.c"
12843#line 3433 "parse.y"
12845 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12846 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12849#line 12850 "parse.c"
12853#line 3439 "parse.y"
12855 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12858#line 12859 "parse.c"
12862#line 3447 "parse.y"
12864 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12865 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12866 (yyval.node) = NEW_RESCUE((yyvsp[-3].node), NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc));
12869#line 12870 "parse.c"
12873#line 3458 "parse.y"
12875 (yyval.node) = logop(p, idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12878#line 12879 "parse.c"
12882#line 3463 "parse.y"
12884 (yyval.node) = logop(p, idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12887#line 12888 "parse.c"
12891#line 3468 "parse.y"
12893 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12896#line 12897 "parse.c"
12900#line 3473 "parse.y"
12902 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
12905#line 12906 "parse.c"
12909#line 3478 "parse.y"
12911 value_expr(p, (yyvsp[-1].node));
12913#line 12914 "parse.c"
12917#line 3483 "parse.y"
12919 pop_pktbl(p, (yyvsp[-1].tbl));
12920 pop_pvtbl(p, (yyvsp[-2].tbl));
12921 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12922 p->ctxt.in_alt_pattern = (yyvsp[-3].ctxt).in_alt_pattern;
12923 p->ctxt.capture_in_pattern = (yyvsp[-3].ctxt).capture_in_pattern;
12924 (yyval.node) = NEW_CASE3((yyvsp[-6].node), NEW_IN((yyvsp[0].node), 0, 0, &(yylsp[0]), &NULL_LOC, &NULL_LOC, &(yylsp[-5])), &(yyloc), &NULL_LOC, &NULL_LOC);
12927#line 12928 "parse.c"
12931#line 3493 "parse.y"
12933 value_expr(p, (yyvsp[-1].node));
12935#line 12936 "parse.c"
12939#line 3498 "parse.y"
12941 pop_pktbl(p, (yyvsp[-1].tbl));
12942 pop_pvtbl(p, (yyvsp[-2].tbl));
12943 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12944 p->ctxt.in_alt_pattern = (yyvsp[-3].ctxt).in_alt_pattern;
12945 p->ctxt.capture_in_pattern = (yyvsp[-3].ctxt).capture_in_pattern;
12946 (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);
12949#line 12950 "parse.c"
12953#line 3511 "parse.y"
12955 numparam_name(p, (yyvsp[0].
id));
12957 p->ctxt.in_def = 1;
12958 p->ctxt.in_rescue = before_rescue;
12959 p->ctxt.cant_return = 0;
12960 (yyval.id) = (yyvsp[0].
id);
12962#line 12963 "parse.c"
12966#line 3522 "parse.y"
12968 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-1].node_def_temp));
12969 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12970 (yyval.node_def_temp)->nd_def = NEW_DEFN((yyvsp[0].
id), 0, &(yyloc));
12973#line 12974 "parse.c"
12977#line 3531 "parse.y"
12979 SET_LEX_STATE(EXPR_FNAME);
12981#line 12982 "parse.c"
12985#line 3535 "parse.y"
12987 SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL);
12988 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-4].node_def_temp));
12989 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12990 (yyval.node_def_temp)->nd_def = NEW_DEFS((yyvsp[-3].node), (yyvsp[0].id), 0, &(yyloc));
12993#line 12994 "parse.c"
12997#line 3155 "parse.y"
12999 value_expr(p, (yyvsp[0].node));
13000 (yyval.node) = (yyvsp[0].node);
13002#line 13003 "parse.c"
13006#line 3546 "parse.y"
13008 (yyval.node) = NEW_ERROR(&(yyloc));
13010#line 13011 "parse.c"
13014#line 3551 "parse.y"
13016#line 13017 "parse.c"
13020#line 3551 "parse.y"
13022#line 13023 "parse.c"
13026#line 3552 "parse.y"
13028 (yyval.node) = (yyvsp[-2].node);
13031#line 13032 "parse.c"
13035#line 3155 "parse.y"
13037 value_expr(p, (yyvsp[0].node));
13038 (yyval.node) = (yyvsp[0].node);
13040#line 13041 "parse.c"
13044#line 3567 "parse.y"
13046 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13049#line 13050 "parse.c"
13053#line 3574 "parse.y"
13055 (yyval.node) = (yyvsp[-1].node);
13056 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
13059#line 13060 "parse.c"
13063#line 3582 "parse.y"
13065 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
13068#line 13069 "parse.c"
13072#line 3582 "parse.y"
13074 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
13077#line 13078 "parse.c"
13081#line 3582 "parse.y"
13083 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
13086#line 13087 "parse.c"
13090#line 3589 "parse.y"
13092 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
13093 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
13094 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
13097#line 13098 "parse.c"
13101#line 3596 "parse.y"
13103 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
13104 (yyvsp[-2].node_fcall)->nd_args = (yyvsp[-1].node);
13105 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-2].node_fcall), (yyvsp[0].node), &(yyloc));
13106 fixpos((yyval.node), RNODE((yyvsp[-2].node_fcall)));
13107 nd_set_last_loc((yyvsp[-2].node_fcall), (yylsp[-1]).end_pos);
13110#line 13111 "parse.c"
13114#line 3605 "parse.y"
13116 (yyval.node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
13119#line 13120 "parse.c"
13123#line 3610 "parse.y"
13125 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
13128#line 13129 "parse.c"
13132#line 3615 "parse.y"
13134 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
13137#line 13138 "parse.c"
13141#line 3620 "parse.y"
13143 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-4].node), (yyvsp[-2].id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
13146#line 13147 "parse.c"
13150#line 3625 "parse.y"
13152 set_embraced_location((yyvsp[-1].node), &(yylsp[-2]), &(yylsp[0]));
13153 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-5].node), (yyvsp[-3].id), 0, (yyvsp[-1].node), &(yylsp[-3]), &(yyloc));
13156#line 13157 "parse.c"
13160#line 3631 "parse.y"
13162 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
13163 fixpos((yyval.node), (yyvsp[0].node));
13166#line 13167 "parse.c"
13170#line 3637 "parse.y"
13172 (yyval.node) = NEW_YIELD((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
13173 fixpos((yyval.node), (yyvsp[0].node));
13176#line 13177 "parse.c"
13180#line 3643 "parse.y"
13182 (yyval.node) = NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc), &(yylsp[-1]));
13185#line 13186 "parse.c"
13189#line 3648 "parse.y"
13192 args = ret_args(p, (yyvsp[0].node));
13193 (yyval.node) = add_block_exit(p, NEW_BREAK(args, &(yyloc), &(yylsp[-1])));
13196#line 13197 "parse.c"
13200#line 3655 "parse.y"
13203 args = ret_args(p, (yyvsp[0].node));
13204 (yyval.node) = add_block_exit(p, NEW_NEXT(args, &(yyloc), &(yylsp[-1])));
13207#line 13208 "parse.c"
13211#line 3665 "parse.y"
13213 (yyval.node_masgn) = (yyvsp[-1].node_masgn);
13216#line 13217 "parse.c"
13220#line 3673 "parse.y"
13222 (yyval.node_masgn) = NEW_MASGN(NEW_LIST((
NODE *)(yyvsp[-1].node_masgn), &(yyloc)), 0, &(yyloc));
13225#line 13226 "parse.c"
13229#line 3680 "parse.y"
13231 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
13234#line 13235 "parse.c"
13238#line 3685 "parse.y"
13240 (yyval.node_masgn) = NEW_MASGN(list_append(p, (yyvsp[-1].node), (yyvsp[0].node)), 0, &(yyloc));
13243#line 13244 "parse.c"
13247#line 3690 "parse.y"
13249 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
13252#line 13253 "parse.c"
13256#line 3042 "parse.y"
13258 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
13261#line 13262 "parse.c"
13265#line 3047 "parse.y"
13267 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
13270#line 13271 "parse.c"
13274#line 3695 "parse.y"
13276 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
13279#line 13280 "parse.c"
13283#line 3700 "parse.y"
13285 (yyval.node_masgn) = NEW_MASGN((yyvsp[-1].node), NODE_SPECIAL_NO_NAME_REST, &(yyloc));
13288#line 13289 "parse.c"
13292#line 3705 "parse.y"
13294 (yyval.node_masgn) = NEW_MASGN((yyvsp[-3].node), NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
13297#line 13298 "parse.c"
13301#line 3710 "parse.y"
13303 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
13306#line 13307 "parse.c"
13310#line 3715 "parse.y"
13312 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
13315#line 13316 "parse.c"
13319#line 3720 "parse.y"
13321 (yyval.node_masgn) = NEW_MASGN(0, NODE_SPECIAL_NO_NAME_REST, &(yyloc));
13324#line 13325 "parse.c"
13328#line 3725 "parse.y"
13330 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
13333#line 13334 "parse.c"
13337#line 3733 "parse.y"
13339 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
13342#line 13343 "parse.c"
13346#line 3740 "parse.y"
13348 (yyval.node) = NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
13351#line 13352 "parse.c"
13355#line 3745 "parse.y"
13357 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
13360#line 13361 "parse.c"
13364#line 3753 "parse.y"
13367 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13369#line 13370 "parse.c"
13373#line 3753 "parse.y"
13376 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13378#line 13379 "parse.c"
13382#line 3758 "parse.y"
13384 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13387#line 13388 "parse.c"
13391#line 3763 "parse.y"
13393 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13394 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13397#line 13398 "parse.c"
13401#line 3763 "parse.y"
13403 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13404 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13407#line 13408 "parse.c"
13411#line 3769 "parse.y"
13413 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
13416#line 13417 "parse.c"
13420#line 3774 "parse.y"
13423 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13425#line 13426 "parse.c"
13429#line 3779 "parse.y"
13432 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13434#line 13435 "parse.c"
13438#line 3784 "parse.y"
13440 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13441 (yyval.node) = NEW_ERROR(&(yyloc));
13444#line 13445 "parse.c"
13448#line 3792 "parse.y"
13451 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13453#line 13454 "parse.c"
13457#line 3792 "parse.y"
13460 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13462#line 13463 "parse.c"
13466#line 3797 "parse.y"
13468 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13471#line 13472 "parse.c"
13475#line 3802 "parse.y"
13477 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13480#line 13481 "parse.c"
13484#line 3802 "parse.y"
13486 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13489#line 13490 "parse.c"
13493#line 3807 "parse.y"
13495 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
13498#line 13499 "parse.c"
13502#line 3812 "parse.y"
13505 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13507#line 13508 "parse.c"
13511#line 3817 "parse.y"
13514 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13516#line 13517 "parse.c"
13520#line 3822 "parse.y"
13522 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13523 (yyval.node) = NEW_ERROR(&(yyloc));
13526#line 13527 "parse.c"
13530#line 3830 "parse.y"
13532 static const char mesg[] =
"class/module name must be CONSTANT";
13534 yyerror1(&(yylsp[0]), mesg);
13538#line 13539 "parse.c"
13542#line 3841 "parse.y"
13544 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
13547#line 13548 "parse.c"
13551#line 3846 "parse.y"
13553 (yyval.node) = NEW_COLON2(0, (yyvsp[0].
id), &(yyloc), &NULL_LOC, &(yylsp[0]));
13556#line 13557 "parse.c"
13560#line 3851 "parse.y"
13562 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
13565#line 13566 "parse.c"
13569#line 3859 "parse.y"
13571 SET_LEX_STATE(EXPR_ENDFN);
13572 (yyval.id) = (yyvsp[0].
id);
13574#line 13575 "parse.c"
13578#line 3867 "parse.y"
13580 (yyval.node) = NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc));
13583#line 13584 "parse.c"
13587#line 3875 "parse.y"
13589 (yyval.node) = NEW_UNDEF((yyvsp[0].node), &(yyloc));
13592#line 13593 "parse.c"
13596#line 3879 "parse.y"
13597 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
13598#line 13599 "parse.c"
13602#line 3880 "parse.y"
13604 nd_set_last_loc((yyvsp[-3].node), (yylsp[0]).end_pos);
13605 rb_parser_ary_push_node(p, RNODE_UNDEF((yyvsp[-3].node))->nd_undefs, (yyvsp[0].node));
13608#line 13609 "parse.c"
13612#line 3887 "parse.y"
13613 { (yyval.id) =
'|'; }
13614#line 13615 "parse.c"
13618#line 3888 "parse.y"
13619 { (yyval.id) =
'^'; }
13620#line 13621 "parse.c"
13624#line 3889 "parse.y"
13625 { (yyval.id) =
'&'; }
13626#line 13627 "parse.c"
13630#line 3890 "parse.y"
13631 { (yyval.id) = tCMP; }
13632#line 13633 "parse.c"
13636#line 3891 "parse.y"
13637 { (yyval.id) = tEQ; }
13638#line 13639 "parse.c"
13642#line 3892 "parse.y"
13643 { (yyval.id) = tEQQ; }
13644#line 13645 "parse.c"
13648#line 3893 "parse.y"
13649 { (yyval.id) = tMATCH; }
13650#line 13651 "parse.c"
13654#line 3894 "parse.y"
13655 { (yyval.id) = tNMATCH; }
13656#line 13657 "parse.c"
13660#line 3895 "parse.y"
13661 { (yyval.id) =
'>'; }
13662#line 13663 "parse.c"
13666#line 3896 "parse.y"
13667 { (yyval.id) = tGEQ; }
13668#line 13669 "parse.c"
13672#line 3897 "parse.y"
13673 { (yyval.id) =
'<'; }
13674#line 13675 "parse.c"
13678#line 3898 "parse.y"
13679 { (yyval.id) = tLEQ; }
13680#line 13681 "parse.c"
13684#line 3899 "parse.y"
13685 { (yyval.id) = tNEQ; }
13686#line 13687 "parse.c"
13690#line 3900 "parse.y"
13691 { (yyval.id) = tLSHFT; }
13692#line 13693 "parse.c"
13696#line 3901 "parse.y"
13697 { (yyval.id) = tRSHFT; }
13698#line 13699 "parse.c"
13702#line 3902 "parse.y"
13703 { (yyval.id) =
'+'; }
13704#line 13705 "parse.c"
13708#line 3903 "parse.y"
13709 { (yyval.id) =
'-'; }
13710#line 13711 "parse.c"
13714#line 3904 "parse.y"
13715 { (yyval.id) =
'*'; }
13716#line 13717 "parse.c"
13720#line 3905 "parse.y"
13721 { (yyval.id) =
'*'; }
13722#line 13723 "parse.c"
13726#line 3906 "parse.y"
13727 { (yyval.id) =
'/'; }
13728#line 13729 "parse.c"
13732#line 3907 "parse.y"
13733 { (yyval.id) =
'%'; }
13734#line 13735 "parse.c"
13738#line 3908 "parse.y"
13739 { (yyval.id) = tPOW; }
13740#line 13741 "parse.c"
13744#line 3909 "parse.y"
13745 { (yyval.id) = tDSTAR; }
13746#line 13747 "parse.c"
13750#line 3910 "parse.y"
13751 { (yyval.id) =
'!'; }
13752#line 13753 "parse.c"
13756#line 3911 "parse.y"
13757 { (yyval.id) =
'~'; }
13758#line 13759 "parse.c"
13762#line 3912 "parse.y"
13763 { (yyval.id) = tUPLUS; }
13764#line 13765 "parse.c"
13768#line 3913 "parse.y"
13769 { (yyval.id) = tUMINUS; }
13770#line 13771 "parse.c"
13774#line 3914 "parse.y"
13775 { (yyval.id) = tAREF; }
13776#line 13777 "parse.c"
13780#line 3915 "parse.y"
13781 { (yyval.id) = tASET; }
13782#line 13783 "parse.c"
13786#line 3916 "parse.y"
13787 { (yyval.id) =
'`'; }
13788#line 13789 "parse.c"
13792#line 2920 "parse.y"
13794 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13797#line 13798 "parse.c"
13801#line 3055 "parse.y"
13803 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13806#line 13807 "parse.c"
13810#line 3060 "parse.y"
13812 (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]));
13815#line 13816 "parse.c"
13819#line 3065 "parse.y"
13821 (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]));
13824#line 13825 "parse.c"
13828#line 3070 "parse.y"
13830 (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]));
13833#line 13834 "parse.c"
13837#line 3075 "parse.y"
13839 (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]));
13842#line 13843 "parse.c"
13846#line 3080 "parse.y"
13848 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
13849 (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));
13852#line 13853 "parse.c"
13856#line 3086 "parse.y"
13858 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
13859 (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));
13862#line 13863 "parse.c"
13866#line 3092 "parse.y"
13868 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
13869 (yyval.node) = NEW_ERROR(&(yyloc));
13872#line 13873 "parse.c"
13876#line 3114 "parse.y"
13878 value_expr(p, (yyvsp[-2].node));
13879 value_expr(p, (yyvsp[0].node));
13880 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13883#line 13884 "parse.c"
13887#line 3121 "parse.y"
13889 value_expr(p, (yyvsp[-2].node));
13890 value_expr(p, (yyvsp[0].node));
13891 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13894#line 13895 "parse.c"
13898#line 3128 "parse.y"
13900 value_expr(p, (yyvsp[-1].node));
13901 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13904#line 13905 "parse.c"
13908#line 3134 "parse.y"
13910 value_expr(p, (yyvsp[-1].node));
13911 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13914#line 13915 "parse.c"
13918#line 3140 "parse.y"
13920 value_expr(p, (yyvsp[0].node));
13921 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13924#line 13925 "parse.c"
13928#line 3146 "parse.y"
13930 value_expr(p, (yyvsp[0].node));
13931 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13934#line 13935 "parse.c"
13938#line 3937 "parse.y"
13940 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13943#line 13944 "parse.c"
13947#line 3942 "parse.y"
13949 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13952#line 13953 "parse.c"
13956#line 3947 "parse.y"
13958 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13961#line 13962 "parse.c"
13965#line 3952 "parse.y"
13967 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13970#line 13971 "parse.c"
13974#line 3957 "parse.y"
13976 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13979#line 13980 "parse.c"
13983#line 3962 "parse.y"
13985 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13988#line 13989 "parse.c"
13992#line 3967 "parse.y"
13994 (yyval.node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)), idUMinus, &(yylsp[-3]), &(yyloc));
13997#line 13998 "parse.c"
14001#line 3972 "parse.y"
14003 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUPlus, &(yylsp[-1]), &(yyloc));
14006#line 14007 "parse.c"
14010#line 3977 "parse.y"
14012 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUMinus, &(yylsp[-1]), &(yyloc));
14015#line 14016 "parse.c"
14019#line 3982 "parse.y"
14021 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14024#line 14025 "parse.c"
14028#line 3987 "parse.y"
14030 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14033#line 14034 "parse.c"
14037#line 3992 "parse.y"
14039 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14042#line 14043 "parse.c"
14046#line 3997 "parse.y"
14048 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14051#line 14052 "parse.c"
14055#line 4003 "parse.y"
14057 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14060#line 14061 "parse.c"
14064#line 4008 "parse.y"
14066 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14069#line 14070 "parse.c"
14073#line 4013 "parse.y"
14075 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14078#line 14079 "parse.c"
14082#line 4018 "parse.y"
14084 (yyval.node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14087#line 14088 "parse.c"
14091#line 4023 "parse.y"
14093 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14096#line 14097 "parse.c"
14100#line 4028 "parse.y"
14102 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
14105#line 14106 "parse.c"
14109#line 4033 "parse.y"
14111 (yyval.node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
14114#line 14115 "parse.c"
14118#line 4038 "parse.y"
14120 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14123#line 14124 "parse.c"
14127#line 4043 "parse.y"
14129 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14132#line 14133 "parse.c"
14136#line 4048 "parse.y"
14138 (yyval.node) = logop(p, idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14141#line 14142 "parse.c"
14145#line 4053 "parse.y"
14147 (yyval.node) = logop(p, idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14150#line 14151 "parse.c"
14154#line 4058 "parse.y"
14156 p->ctxt.in_defined = (yyvsp[-1].ctxt).in_defined;
14157 (yyval.node) = new_defined(p, (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
14158 p->ctxt.has_trailing_semicolon = (yyvsp[-1].ctxt).has_trailing_semicolon;
14161#line 14162 "parse.c"
14165#line 2960 "parse.y"
14167 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
14168 restore_defun(p, (yyvsp[-3].node_def_temp));
14169 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
14170 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
14171 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
14176#line 14177 "parse.c"
14180#line 2971 "parse.y"
14182 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
14183 restore_defun(p, (yyvsp[-3].node_def_temp));
14184 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
14185 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
14186 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
14191#line 14192 "parse.c"
14195#line 4070 "parse.y"
14197 value_expr(p, (yyvsp[-5].node));
14198 (yyval.node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc), &NULL_LOC, &(yylsp[-1]), &NULL_LOC);
14199 fixpos((yyval.node), (yyvsp[-5].node));
14202#line 14203 "parse.c"
14206#line 4080 "parse.y"
14208 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
14209 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14212#line 14213 "parse.c"
14216#line 4086 "parse.y"
14218 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
14221#line 14222 "parse.c"
14225#line 4092 "parse.y"
14226 {(yyval.id) =
'>';}
14227#line 14228 "parse.c"
14231#line 4093 "parse.y"
14232 {(yyval.id) =
'<';}
14233#line 14234 "parse.c"
14237#line 4094 "parse.y"
14238 {(yyval.id) = idGE;}
14239#line 14240 "parse.c"
14243#line 4095 "parse.y"
14244 {(yyval.id) = idLE;}
14245#line 14246 "parse.c"
14249#line 4099 "parse.y"
14251 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14254#line 14255 "parse.c"
14258#line 4104 "parse.y"
14260 rb_warning1(
"comparison '%s' after comparison", WARN_ID((yyvsp[-1].
id)));
14261 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14264#line 14265 "parse.c"
14268#line 4112 "parse.y"
14270 (yyval.ctxt) = p->ctxt;
14272#line 14273 "parse.c"
14276#line 4118 "parse.y"
14278 p->ctxt.in_defined = 1;
14279 (yyval.ctxt) = (yyvsp[0].ctxt);
14281#line 14282 "parse.c"
14285#line 4125 "parse.y"
14287 p->ctxt.in_rescue = after_rescue;
14288 (yyval.ctxt) = (yyvsp[0].ctxt);
14290#line 14291 "parse.c"
14294#line 3155 "parse.y"
14296 value_expr(p, (yyvsp[0].node));
14297 (yyval.node) = (yyvsp[0].node);
14299#line 14300 "parse.c"
14303#line 4137 "parse.y"
14305 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14308#line 14309 "parse.c"
14312#line 4142 "parse.y"
14314 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
14317#line 14318 "parse.c"
14321#line 4149 "parse.y"
14323 value_expr(p, (yyvsp[0].node));
14324 (yyval.node) = (yyvsp[0].node);
14326#line 14327 "parse.c"
14330#line 4154 "parse.y"
14332 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
14333 value_expr(p, (yyvsp[-3].node));
14334 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14337#line 14338 "parse.c"
14341#line 4163 "parse.y"
14343 (yyval.node) = (yyvsp[-1].node);
14346#line 14347 "parse.c"
14350#line 4168 "parse.y"
14352 if (!check_forwarding_args(p)) {
14356 (yyval.node) = new_args_forward_call(p, (yyvsp[-3].node), &(yylsp[-1]), &(yyloc));
14360#line 14361 "parse.c"
14364#line 4178 "parse.y"
14366 if (!check_forwarding_args(p)) {
14370 (yyval.node) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
14374#line 14375 "parse.c"
14378#line 4191 "parse.y"
14380 (yyval.node) = (yyvsp[0].node) ? (yyvsp[0].node) : NODE_SPECIAL_EMPTY_ARGS;
14382#line 14383 "parse.c"
14386#line 4200 "parse.y"
14388 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14391#line 14392 "parse.c"
14395#line 4205 "parse.y"
14397 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14400#line 14401 "parse.c"
14404#line 3155 "parse.y"
14406 value_expr(p, (yyvsp[0].node));
14407 (yyval.node) = (yyvsp[0].node);
14409#line 14410 "parse.c"
14413#line 4212 "parse.y"
14415 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14418#line 14419 "parse.c"
14422#line 4217 "parse.y"
14424 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14427#line 14428 "parse.c"
14431#line 4222 "parse.y"
14433 (yyval.node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node_block_pass));
14436#line 14437 "parse.c"
14440#line 4227 "parse.y"
14442 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14443 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14446#line 14447 "parse.c"
14450#line 4233 "parse.y"
14452 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14453 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14456#line 14457 "parse.c"
14460#line 4242 "parse.y"
14471 case '(':
case tLPAREN:
case tLPAREN_ARG:
case '[':
case tLBRACK:
14474 if (lookahead) CMDARG_POP();
14476 if (lookahead) CMDARG_PUSH(0);
14478#line 14479 "parse.c"
14482#line 4260 "parse.y"
14495 if (lookahead) CMDARG_POP();
14497 if (lookahead) CMDARG_PUSH(0);
14498 (yyval.node) = (yyvsp[0].node);
14501#line 14502 "parse.c"
14505#line 4281 "parse.y"
14507 (yyval.node_block_pass) = NEW_BLOCK_PASS((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14510#line 14511 "parse.c"
14514#line 4286 "parse.y"
14516 forwarding_arg_check(p, idFWD_BLOCK, idFWD_ALL,
"block");
14517 (yyval.node_block_pass) = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14520#line 14521 "parse.c"
14524#line 4294 "parse.y"
14526 (yyval.node_block_pass) = (yyvsp[0].node_block_pass);
14529#line 14530 "parse.c"
14533#line 4299 "parse.y"
14535 (yyval.node_block_pass) = 0;
14538#line 14539 "parse.c"
14542#line 4307 "parse.y"
14544 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14547#line 14548 "parse.c"
14551#line 4312 "parse.y"
14553 (yyval.node) = (yyvsp[0].node);
14556#line 14557 "parse.c"
14560#line 4317 "parse.y"
14562 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14565#line 14566 "parse.c"
14569#line 4322 "parse.y"
14571 (yyval.node) = rest_arg_append(p, (yyvsp[-2].node), RNODE_SPLAT((yyvsp[0].node))->nd_head, &(yyloc));
14574#line 14575 "parse.c"
14578#line 4330 "parse.y"
14580 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14583#line 14584 "parse.c"
14587#line 4335 "parse.y"
14589 forwarding_arg_check(p, idFWD_REST, idFWD_ALL,
"rest");
14590 (yyval.node) = NEW_SPLAT(NEW_LVAR(idFWD_REST, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14593#line 14594 "parse.c"
14597#line 4349 "parse.y"
14599 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14602#line 14603 "parse.c"
14606#line 4354 "parse.y"
14608 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
14611#line 14612 "parse.c"
14615#line 4359 "parse.y"
14617 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14620#line 14621 "parse.c"
14624#line 4380 "parse.y"
14626 (yyval.node) = (
NODE *)NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
14629#line 14630 "parse.c"
14633#line 4385 "parse.y"
14637#line 14638 "parse.c"
14641#line 4390 "parse.y"
14644 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14645 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
14646 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14649#line 14650 "parse.c"
14653#line 4397 "parse.y"
14654 {SET_LEX_STATE(EXPR_ENDARG);}
14655#line 14656 "parse.c"
14659#line 4398 "parse.y"
14661 if (nd_type_p((yyvsp[-2].node), NODE_SELF)) RNODE_SELF((yyvsp[-2].node))->nd_state = 0;
14662 (yyval.node) = (yyvsp[-2].node);
14665#line 14666 "parse.c"
14669#line 4404 "parse.y"
14671 if (nd_type_p((yyvsp[-1].node), NODE_SELF)) RNODE_SELF((yyvsp[-1].node))->nd_state = 0;
14672 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
14675#line 14676 "parse.c"
14679#line 4410 "parse.y"
14681 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
14684#line 14685 "parse.c"
14688#line 4415 "parse.y"
14690 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
14693#line 14694 "parse.c"
14697#line 4420 "parse.y"
14699 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14702#line 14703 "parse.c"
14706#line 4425 "parse.y"
14708 (yyval.node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
14709 RNODE_HASH((yyval.node))->nd_brace = TRUE;
14712#line 14713 "parse.c"
14716#line 4431 "parse.y"
14718 (yyval.node) = NEW_RETURN(0, &(yyloc), &(yylsp[0]));
14721#line 14722 "parse.c"
14725#line 4436 "parse.y"
14727 (yyval.node) = NEW_YIELD((yyvsp[-1].node), &(yyloc), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14730#line 14731 "parse.c"
14734#line 4441 "parse.y"
14736 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
14739#line 14740 "parse.c"
14743#line 4446 "parse.y"
14745 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[0]), &NULL_LOC, &NULL_LOC);
14748#line 14749 "parse.c"
14752#line 4451 "parse.y"
14754 p->ctxt.in_defined = (yyvsp[-2].ctxt).in_defined;
14755 (yyval.node) = new_defined(p, (yyvsp[-1].node), &(yyloc), &(yylsp[-5]));
14756 p->ctxt.has_trailing_semicolon = (yyvsp[-2].ctxt).has_trailing_semicolon;
14759#line 14760 "parse.c"
14763#line 4458 "parse.y"
14765 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])), METHOD_NOT, &(yylsp[-3]), &(yyloc));
14768#line 14769 "parse.c"
14772#line 4463 "parse.y"
14774 (yyval.node) = call_uni_op(p, method_cond(p, NEW_NIL(&(yylsp[-1])), &(yylsp[-1])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
14777#line 14778 "parse.c"
14781#line 4468 "parse.y"
14783 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-1].node_fcall), (yyvsp[0].node), &(yyloc));
14786#line 14787 "parse.c"
14790#line 4474 "parse.y"
14792 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
14793 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14796#line 14797 "parse.c"
14800#line 4484 "parse.y"
14802 if ((yyvsp[-1].node) && nd_type_p((yyvsp[-1].node), NODE_IF))
14803 RNODE_IF((yyvsp[-1].node))->end_keyword_loc = (yylsp[0]);
14805 (yyval.node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14806 fixpos((yyval.node), (yyvsp[-4].node));
14809#line 14810 "parse.c"
14813#line 4496 "parse.y"
14815 (yyval.node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14816 fixpos((yyval.node), (yyvsp[-4].node));
14819#line 14820 "parse.c"
14823#line 4504 "parse.y"
14825 restore_block_exit(p, (yyvsp[-3].node_exits));
14826 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14827 fixpos((yyval.node), (yyvsp[-2].node));
14830#line 14831 "parse.c"
14834#line 4513 "parse.y"
14836 restore_block_exit(p, (yyvsp[-3].node_exits));
14837 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14838 fixpos((yyval.node), (yyvsp[-2].node));
14841#line 14842 "parse.c"
14845#line 4520 "parse.y"
14847 (yyval.labels) = p->case_labels;
14848 p->case_labels = CHECK_LITERAL_WHEN;
14850#line 14851 "parse.c"
14854#line 4526 "parse.y"
14856 if (CASE_LABELS_ENABLED_P(p->case_labels)) st_free_table(p->case_labels);
14857 p->case_labels = (yyvsp[-2].labels);
14858 (yyval.node) = NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[0]));
14859 fixpos((yyval.node), (yyvsp[-4].node));
14862#line 14863 "parse.c"
14866#line 4534 "parse.y"
14868 (yyval.labels) = p->case_labels;
14869 p->case_labels = 0;
14871#line 14872 "parse.c"
14875#line 4540 "parse.y"
14877 if (p->case_labels) st_free_table(p->case_labels);
14878 p->case_labels = (yyvsp[-2].labels);
14879 (yyval.node) = NEW_CASE2((yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14882#line 14883 "parse.c"
14886#line 4549 "parse.y"
14888 (yyval.node) = NEW_CASE3((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14891#line 14892 "parse.c"
14895#line 4554 "parse.y"
14897#line 14898 "parse.c"
14901#line 4554 "parse.y"
14903#line 14904 "parse.c"
14907#line 4557 "parse.y"
14909 restore_block_exit(p, (yyvsp[-8].node_exits));
14919 ID id = internal_id(p);
14922 NODE *scope, *internal_var = NEW_DVAR(
id, &(yylsp[-7]));
14926 switch (nd_type((yyvsp[-7].node))) {
14929 set_nd_value(p, (yyvsp[-7].node), internal_var);
14932 m->nd_next = (yyvsp[-7].node);
14935 m->nd_next = node_assign(p, (yyvsp[-7].node), NEW_FOR_MASGN(internal_var, &(yylsp[-7])), NO_LEX_CTXT, &(yylsp[-7]));
14938 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]));
14941 args = new_args(p, m, 0,
id, 0, new_empty_args_tail(p, &(yylsp[-7])), &(yylsp[-7]));
14942 scope = NEW_SCOPE2(tbl, args, (yyvsp[-1].node), NULL, &(yyloc));
14943 YYLTYPE do_keyword_loc = (yyvsp[-3].id) == keyword_do_cond ? (yylsp[-3]) : NULL_LOC;
14944 (yyval.node) = NEW_FOR((yyvsp[-4].node), scope, &(yyloc), &(yylsp[-8]), &(yylsp[-6]), &do_keyword_loc, &(yylsp[0]));
14945 RNODE_SCOPE(scope)->nd_parent = (yyval.node);
14946 fixpos((yyval.node), (yyvsp[-7].node));
14949#line 14950 "parse.c"
14953#line 4599 "parse.y"
14955 begin_definition(
"class", &(yylsp[-2]), &(yylsp[-1]));
14957#line 14958 "parse.c"
14961#line 4604 "parse.y"
14963 YYLTYPE inheritance_operator_loc = NULL_LOC;
14964 if ((yyvsp[-3].node)) {
14965 inheritance_operator_loc = (yylsp[-3]);
14966 inheritance_operator_loc.end_pos.column = inheritance_operator_loc.beg_pos.column + 1;
14968 (yyval.node) = NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc), &(yylsp[-5]), &inheritance_operator_loc, &(yylsp[0]));
14969 nd_set_line(RNODE_CLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14970 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14971 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14974 p->ctxt.in_class = (yyvsp[-5].ctxt).in_class;
14975 p->ctxt.cant_return = (yyvsp[-5].ctxt).cant_return;
14976 p->ctxt.shareable_constant_value = (yyvsp[-5].ctxt).shareable_constant_value;
14978#line 14979 "parse.c"
14982#line 4621 "parse.y"
14984 begin_definition(
"", &(yylsp[-2]), &(yylsp[-1]));
14986#line 14987 "parse.c"
14990#line 4627 "parse.y"
14992 (yyval.node) = NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-6]), &(yylsp[-5]), &(yylsp[0]));
14993 nd_set_line(RNODE_SCLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14994 set_line_body((yyvsp[-1].node), nd_line((yyvsp[-4].node)));
14995 fixpos((yyval.node), (yyvsp[-4].node));
14998 p->ctxt.in_def = (yyvsp[-6].ctxt).in_def;
14999 p->ctxt.in_class = (yyvsp[-6].ctxt).in_class;
15000 p->ctxt.cant_return = (yyvsp[-6].ctxt).cant_return;
15001 p->ctxt.shareable_constant_value = (yyvsp[-6].ctxt).shareable_constant_value;
15003#line 15004 "parse.c"
15007#line 4640 "parse.y"
15009 begin_definition(
"module", &(yylsp[-1]), &(yylsp[0]));
15011#line 15012 "parse.c"
15015#line 4645 "parse.y"
15017 (yyval.node) = NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
15018 nd_set_line(RNODE_MODULE((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
15019 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
15020 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
15023 p->ctxt.in_class = (yyvsp[-4].ctxt).in_class;
15024 p->ctxt.cant_return = (yyvsp[-4].ctxt).cant_return;
15025 p->ctxt.shareable_constant_value = (yyvsp[-4].ctxt).shareable_constant_value;
15027#line 15028 "parse.c"
15031#line 4658 "parse.y"
15033 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15035#line 15036 "parse.c"
15039#line 4663 "parse.y"
15041 restore_defun(p, (yyvsp[-4].node_def_temp));
15042 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
15043 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), (yyval.node), &(yyloc));
15044 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[-1].node);
15048#line 15049 "parse.c"
15052#line 4673 "parse.y"
15054 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15056#line 15057 "parse.c"
15060#line 4678 "parse.y"
15062 restore_defun(p, (yyvsp[-4].node_def_temp));
15063 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
15064 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), (yyval.node), &(yyloc));
15065 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[-1].node);
15069#line 15070 "parse.c"
15073#line 4687 "parse.y"
15075 (yyval.node) = add_block_exit(p, NEW_BREAK(0, &(yyloc), &(yylsp[0])));
15078#line 15079 "parse.c"
15082#line 4692 "parse.y"
15084 (yyval.node) = add_block_exit(p, NEW_NEXT(0, &(yyloc), &(yylsp[0])));
15087#line 15088 "parse.c"
15091#line 4697 "parse.y"
15093 (yyval.node) = add_block_exit(p, NEW_REDO(&(yyloc), &(yylsp[0])));
15096#line 15097 "parse.c"
15100#line 4702 "parse.y"
15102 if (!p->ctxt.in_defined) {
15103 switch (p->ctxt.in_rescue) {
15104 case before_rescue: yyerror1(&(yylsp[0]),
"Invalid retry without rescue");
break;
15105 case after_rescue:
break;
15106 case after_else: yyerror1(&(yylsp[0]),
"Invalid retry after else");
break;
15107 case after_ensure: yyerror1(&(yylsp[0]),
"Invalid retry after ensure");
break;
15110 (yyval.node) = NEW_RETRY(&(yyloc));
15113#line 15114 "parse.c"
15117#line 3155 "parse.y"
15119 value_expr(p, (yyvsp[0].node));
15120 (yyval.node) = (yyvsp[0].node);
15122#line 15123 "parse.c"
15126#line 4720 "parse.y"
15128 token_info_push(p,
"begin", &(yyloc));
15129 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15131#line 15132 "parse.c"
15135#line 4727 "parse.y"
15138 token_info_push(p,
"if", &(yyloc));
15139 if (p->token_info && p->token_info->nonspc &&
15140 p->token_info->next && !strcmp(p->token_info->next->token,
"else")) {
15142 const char *beg = p->lex.pbeg + p->token_info->next->beg.column;
15144 while (beg < tok &&
ISSPACE(*beg)) beg++;
15146 p->token_info->nonspc = 0;
15149 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15151#line 15152 "parse.c"
15155#line 4745 "parse.y"
15157 token_info_push(p,
"unless", &(yyloc));
15158 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15160#line 15161 "parse.c"
15164#line 4752 "parse.y"
15166 (yyval.node_exits) = (yyvsp[0].node_exits);
15167 token_info_push(p,
"while", &(yyloc));
15168 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15170#line 15171 "parse.c"
15174#line 4760 "parse.y"
15176 (yyval.node_exits) = (yyvsp[0].node_exits);
15177 token_info_push(p,
"until", &(yyloc));
15178 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15180#line 15181 "parse.c"
15184#line 4768 "parse.y"
15186 token_info_push(p,
"case", &(yyloc));
15187 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15189#line 15190 "parse.c"
15193#line 4775 "parse.y"
15195 (yyval.node_exits) = (yyvsp[0].node_exits);
15196 token_info_push(p,
"for", &(yyloc));
15197 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15199#line 15200 "parse.c"
15203#line 4783 "parse.y"
15205 token_info_push(p,
"class", &(yyloc));
15206 (yyval.ctxt) = p->ctxt;
15207 p->ctxt.in_rescue = before_rescue;
15208 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15210#line 15211 "parse.c"
15214#line 4792 "parse.y"
15216 token_info_push(p,
"module", &(yyloc));
15217 (yyval.ctxt) = p->ctxt;
15218 p->ctxt.in_rescue = before_rescue;
15219 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15221#line 15222 "parse.c"
15225#line 4801 "parse.y"
15227 token_info_push(p,
"def", &(yyloc));
15228 (yyval.node_def_temp) = NEW_DEF_TEMP(&(yyloc));
15229 p->ctxt.in_argdef = 1;
15231#line 15232 "parse.c"
15235#line 4809 "parse.y"
15237 token_info_push(p,
"do", &(yyloc));
15238 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15240#line 15241 "parse.c"
15244#line 4816 "parse.y"
15246 token_info_push(p,
"do", &(yyloc));
15247 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15249#line 15250 "parse.c"
15253#line 4823 "parse.y"
15255 token_info_warn(p,
"rescue", p->token_info, 1, &(yyloc));
15256 (yyval.ctxt) = p->ctxt;
15257 p->ctxt.in_rescue = after_rescue;
15259#line 15260 "parse.c"
15263#line 4831 "parse.y"
15265 token_info_warn(p,
"ensure", p->token_info, 1, &(yyloc));
15266 (yyval.ctxt) = p->ctxt;
15268#line 15269 "parse.c"
15272#line 4838 "parse.y"
15274 token_info_warn(p,
"when", p->token_info, 0, &(yyloc));
15276#line 15277 "parse.c"
15280#line 4844 "parse.y"
15283 int same = ptinfo_beg && strcmp(ptinfo_beg->token,
"case") != 0;
15284 token_info_warn(p,
"else", p->token_info, same, &(yyloc));
15287 e.next = ptinfo_beg->next;
15289 token_info_setup(&e, p->lex.pbeg, &(yyloc));
15290 if (!e.nonspc) *ptinfo_beg = e;
15293#line 15294 "parse.c"
15297#line 4859 "parse.y"
15300 token_info_warn(p,
"elsif", p->token_info, 1, &(yyloc));
15302#line 15303 "parse.c"
15306#line 4866 "parse.y"
15308 token_info_pop(p,
"end", &(yyloc));
15309 pop_end_expect_token_locations(p);
15311#line 15312 "parse.c"
15315#line 4871 "parse.y"
15317 compile_error(p,
"syntax error, unexpected end-of-input");
15319#line 15320 "parse.c"
15323#line 4877 "parse.y"
15325 if (p->ctxt.cant_return && !dyna_in_block(p))
15326 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
15328#line 15329 "parse.c"
15332#line 4884 "parse.y"
15334 if (!p->ctxt.in_defined && !p->ctxt.in_def && !compile_for_eval)
15335 yyerror1(&(yylsp[0]),
"Invalid yield");
15337#line 15338 "parse.c"
15341#line 4896 "parse.y"
15342 { (yyval.id) = keyword_do_cond; }
15343#line 15344 "parse.c"
15347#line 4903 "parse.y"
15349 (yyval.node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]), &NULL_LOC);
15350 fixpos((yyval.node), (yyvsp[-3].node));
15353#line 15354 "parse.c"
15357#line 4912 "parse.y"
15359 (yyval.node) = (yyvsp[0].node);
15362#line 15363 "parse.c"
15366#line 4923 "parse.y"
15368 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15369 mark_lvar_used(p, (yyval.node));
15371#line 15372 "parse.c"
15375#line 4928 "parse.y"
15377 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
15380#line 15381 "parse.c"
15384#line 3042 "parse.y"
15386 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15389#line 15390 "parse.c"
15393#line 3047 "parse.y"
15395 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
15398#line 15399 "parse.c"
15402#line 4936 "parse.y"
15404 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
15407#line 15408 "parse.c"
15411#line 4941 "parse.y"
15413 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15416#line 15417 "parse.c"
15420#line 4946 "parse.y"
15422 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15425#line 15426 "parse.c"
15429#line 4951 "parse.y"
15431 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
15434#line 15435 "parse.c"
15438#line 4956 "parse.y"
15440 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15443#line 15444 "parse.c"
15447#line 4963 "parse.y"
15450 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15451 mark_lvar_used(p, (yyval.node));
15453#line 15454 "parse.c"
15457#line 4969 "parse.y"
15459 (yyval.node) = NODE_SPECIAL_NO_NAME_REST;
15462#line 15463 "parse.c"
15466#line 4977 "parse.y"
15468 (yyval.id) = idNil;
15471#line 15472 "parse.c"
15475#line 4983 "parse.y"
15476 {p->ctxt.in_argdef = 0;}
15477#line 15478 "parse.c"
15481#line 3014 "parse.y"
15483 p->ctxt.in_argdef = 1;
15484 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15487#line 15488 "parse.c"
15491#line 3020 "parse.y"
15493 p->ctxt.in_argdef = 1;
15494 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
15497#line 15498 "parse.c"
15501#line 3029 "parse.y"
15503 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
15506#line 15507 "parse.c"
15510#line 3034 "parse.y"
15512 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
15515#line 15516 "parse.c"
15519#line 2951 "parse.y"
15521 (yyval.id) = (yyvsp[0].
id);
15524#line 15525 "parse.c"
15528#line 2928 "parse.y"
15530 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
15533#line 15534 "parse.c"
15537#line 2933 "parse.y"
15539 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
15542#line 15543 "parse.c"
15546#line 2938 "parse.y"
15548 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
15551#line 15552 "parse.c"
15555#line 2943 "parse.y"
15557 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
15560#line 15561 "parse.c"
15564#line 4989 "parse.y"
15567 (yyval.id) = NODE_SPECIAL_EXCESSIVE_COMMA;
15570#line 15571 "parse.c"
15574#line 2992 "parse.y"
15576 p->ctxt.in_argdef = 1;
15577 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15580#line 15581 "parse.c"
15584#line 3001 "parse.y"
15586 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
15589#line 15590 "parse.c"
15593#line 3006 "parse.y"
15595 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
15598#line 15599 "parse.c"
15602#line 3101 "parse.y"
15604 (yyval.node_args) = (yyvsp[0].node_args);
15607#line 15608 "parse.c"
15611#line 3106 "parse.y"
15613 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
15616#line 15617 "parse.c"
15620#line 6271 "parse.y"
15622 (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));
15625#line 15626 "parse.c"
15629#line 6276 "parse.y"
15631 (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));
15634#line 15635 "parse.c"
15638#line 6281 "parse.y"
15640 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15643#line 15644 "parse.c"
15647#line 6286 "parse.y"
15649 (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));
15652#line 15653 "parse.c"
15656#line 6291 "parse.y"
15658 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
15661#line 15662 "parse.c"
15665#line 6296 "parse.y"
15667 (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));
15670#line 15671 "parse.c"
15674#line 6301 "parse.y"
15676 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
15679#line 15680 "parse.c"
15683#line 6306 "parse.y"
15685 (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));
15688#line 15689 "parse.c"
15692#line 6311 "parse.y"
15694 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15697#line 15698 "parse.c"
15701#line 6316 "parse.y"
15703 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15706#line 15707 "parse.c"
15710#line 6321 "parse.y"
15712 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
15715#line 15716 "parse.c"
15719#line 6326 "parse.y"
15721 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15724#line 15725 "parse.c"
15728#line 4998 "parse.y"
15730 (yyval.node_args) = new_empty_args_tail(p, &(yylsp[0]));
15731 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, (yyvsp[0].id), 0, (yyval.node_args), &(yyloc));
15734#line 15735 "parse.c"
15738#line 5004 "parse.y"
15740 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15743#line 15744 "parse.c"
15747#line 6334 "parse.y"
15749 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15752#line 15753 "parse.c"
15756#line 5013 "parse.y"
15758 p->command_start = TRUE;
15760#line 15761 "parse.c"
15764#line 5019 "parse.y"
15766 p->max_numparam = ORDINAL_PARAM;
15767 p->ctxt.in_argdef = 0;
15768 (yyval.node_args) = (yyvsp[-2].node_args);
15771#line 15772 "parse.c"
15775#line 5028 "parse.y"
15777 (yyval.node_args) = 0;
15780#line 15781 "parse.c"
15784#line 5036 "parse.y"
15789#line 15790 "parse.c"
15793#line 5041 "parse.y"
15798#line 15799 "parse.c"
15802#line 5054 "parse.y"
15804 new_bv(p, (yyvsp[0].
id));
15807#line 15808 "parse.c"
15811#line 5061 "parse.y"
15813 (yyval.num) = p->max_numparam;
15814 p->max_numparam = 0;
15816#line 15817 "parse.c"
15820#line 5067 "parse.y"
15822 (yyval.node) = numparam_push(p);
15824#line 15825 "parse.c"
15828#line 5072 "parse.y"
15830 (yyval.id) = p->it_id;
15833#line 15834 "parse.c"
15837#line 5079 "parse.y"
15839 token_info_push(p,
"->", &(yylsp[0]));
15840 (yyval.vars) = dyna_push(p);
15842#line 15843 "parse.c"
15846#line 5085 "parse.y"
15850#line 15851 "parse.c"
15854#line 5089 "parse.y"
15856 int max_numparam = p->max_numparam;
15857 ID it_id = p->it_id;
15858 p->lex.lpar_beg = (yyvsp[-8].num);
15859 p->max_numparam = (yyvsp[-6].num);
15860 p->it_id = (yyvsp[-4].id);
15861 restore_block_exit(p, (yyvsp[-3].node_exits));
15863 (yyvsp[-2].node_args) = args_with_numbered(p, (yyvsp[-2].node_args), max_numparam, it_id);
15865 YYLTYPE loc = code_loc_gen(&(yylsp[-8]), &(yylsp[0]));
15866 (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);
15867 nd_set_line(RNODE_LAMBDA((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
15868 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
15869 nd_set_first_loc((yyval.node), (yylsp[-8]).beg_pos);
15870 xfree((yyvsp[0].locations_lambda_body));
15873 numparam_pop(p, (yyvsp[-5].node));
15874 dyna_pop(p, (yyvsp[-7].vars));
15876#line 15877 "parse.c"
15880#line 5113 "parse.y"
15882 p->ctxt.in_argdef = 0;
15883 (yyval.node_args) = (yyvsp[-2].node_args);
15884 p->max_numparam = ORDINAL_PARAM;
15887#line 15888 "parse.c"
15891#line 5120 "parse.y"
15893 p->ctxt.in_argdef = 0;
15894 if (!args_info_empty_p(&(yyvsp[0].node_args)->nd_ainfo))
15895 p->max_numparam = ORDINAL_PARAM;
15896 (yyval.node_args) = (yyvsp[0].node_args);
15898#line 15899 "parse.c"
15902#line 5129 "parse.y"
15904 token_info_pop(p,
"}", &(yylsp[0]));
15905 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-2]), &(yylsp[0]));
15908#line 15909 "parse.c"
15912#line 5135 "parse.y"
15914 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15916#line 15917 "parse.c"
15920#line 5139 "parse.y"
15922 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-3]), &(yylsp[0]));
15925#line 15926 "parse.c"
15929#line 5146 "parse.y"
15931 (yyval.node) = (yyvsp[-1].node);
15932 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15935#line 15936 "parse.c"
15939#line 5154 "parse.y"
15941 if (nd_type_p((yyvsp[-1].node), NODE_YIELD)) {
15942 compile_error(p,
"block given to yield");
15945 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
15947 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15948 fixpos((yyval.node), (yyvsp[-1].node));
15951#line 15952 "parse.c"
15955#line 5166 "parse.y"
15957 bool has_args = (yyvsp[0].node) != 0;
15958 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15959 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15965#line 15966 "parse.c"
15969#line 5176 "parse.y"
15971 if (NODE_EMPTY_ARGS_P((yyvsp[-1].node))) (yyvsp[-1].node) = 0;
15972 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15975#line 15976 "parse.c"
15979#line 5182 "parse.y"
15981 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15984#line 15985 "parse.c"
15988#line 5187 "parse.y"
15990 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15991 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15994#line 15995 "parse.c"
15998#line 5195 "parse.y"
16000 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
16001 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
16002 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
16005#line 16006 "parse.c"
16009#line 5202 "parse.y"
16011 bool has_args = (yyvsp[0].node) != 0;
16012 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
16013 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
16014 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
16020#line 16021 "parse.c"
16024#line 5213 "parse.y"
16026 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
16027 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
16030#line 16031 "parse.c"
16034#line 5219 "parse.y"
16036 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-2].node), (yyvsp[0].id), 0, &(yylsp[0]), &(yyloc));
16039#line 16040 "parse.c"
16043#line 5224 "parse.y"
16045 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
16046 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
16049#line 16050 "parse.c"
16053#line 5230 "parse.y"
16057 lparen_loc.end_pos.column = lparen_loc.beg_pos.column + 1;
16058 rparen_loc.beg_pos.column = rparen_loc.end_pos.column - 1;
16060 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &lparen_loc, &rparen_loc);
16063#line 16064 "parse.c"
16067#line 5240 "parse.y"
16069 (yyval.node) = NEW_ZSUPER(&(yyloc));
16072#line 16073 "parse.c"
16076#line 5245 "parse.y"
16078 (yyval.node) = NEW_CALL((yyvsp[-3].node), tAREF, (yyvsp[-1].node), &(yyloc));
16079 fixpos((yyval.node), (yyvsp[-3].node));
16082#line 16083 "parse.c"
16086#line 5253 "parse.y"
16088 (yyval.node) = (yyvsp[-1].node);
16089 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
16092#line 16093 "parse.c"
16096#line 5259 "parse.y"
16098 (yyval.node) = (yyvsp[-1].node);
16099 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
16102#line 16103 "parse.c"
16106#line 5266 "parse.y"
16107 {(yyval.vars) = dyna_push(p);}
16108#line 16109 "parse.c"
16112#line 5269 "parse.y"
16114 int max_numparam = p->max_numparam;
16115 ID it_id = p->it_id;
16116 p->max_numparam = (yyvsp[-5].num);
16117 p->it_id = (yyvsp[-3].id);
16118 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
16119 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
16121 restore_block_exit(p, (yyvsp[-2].node_exits));
16122 numparam_pop(p, (yyvsp[-4].node));
16123 dyna_pop(p, (yyvsp[-6].vars));
16125#line 16126 "parse.c"
16129#line 5283 "parse.y"
16131 (yyval.vars) = dyna_push(p);
16134#line 16135 "parse.c"
16138#line 5289 "parse.y"
16140 int max_numparam = p->max_numparam;
16141 ID it_id = p->it_id;
16142 p->max_numparam = (yyvsp[-5].num);
16143 p->it_id = (yyvsp[-3].id);
16144 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
16145 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
16148 restore_block_exit(p, (yyvsp[-2].node_exits));
16149 numparam_pop(p, (yyvsp[-4].node));
16150 dyna_pop(p, (yyvsp[-6].vars));
16152#line 16153 "parse.c"
16156#line 5305 "parse.y"
16158 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
16159 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16162#line 16163 "parse.c"
16166#line 5311 "parse.y"
16168 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16171#line 16172 "parse.c"
16175#line 5316 "parse.y"
16177 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
16178 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16181#line 16182 "parse.c"
16185#line 5322 "parse.y"
16187 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
16190#line 16191 "parse.c"
16194#line 5331 "parse.y"
16196 (yyval.node) = NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]));
16197 fixpos((yyval.node), (yyvsp[-3].node));
16200#line 16201 "parse.c"
16204#line 5342 "parse.y"
16205 {(yyval.tbl) = p->pvtbl; p->pvtbl = st_init_numtable();}
16206#line 16207 "parse.c"
16210#line 5343 "parse.y"
16211 {(yyval.tbl) = p->pktbl; p->pktbl = 0;}
16212#line 16213 "parse.c"
16216#line 5345 "parse.y"
16218 (yyval.ctxt) = p->ctxt;
16219 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
16220 p->command_start = FALSE;
16221 p->ctxt.in_kwarg = 1;
16222 p->ctxt.in_alt_pattern = 0;
16223 p->ctxt.capture_in_pattern = 0;
16225#line 16226 "parse.c"
16229#line 5358 "parse.y"
16231 pop_pktbl(p, (yyvsp[-2].tbl));
16232 pop_pvtbl(p, (yyvsp[-3].tbl));
16233 p->ctxt.in_kwarg = (yyvsp[-4].ctxt).in_kwarg;
16234 p->ctxt.in_alt_pattern = (yyvsp[-4].ctxt).in_alt_pattern;
16235 p->ctxt.capture_in_pattern = (yyvsp[-4].ctxt).capture_in_pattern;
16237#line 16238 "parse.c"
16241#line 5367 "parse.y"
16243 (yyval.node) = NEW_IN((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-8]), &(yylsp[-3]), &NULL_LOC);
16246#line 16247 "parse.c"
16250#line 5379 "parse.y"
16252 (yyval.node) = new_if(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
16253 fixpos((yyval.node), (yyvsp[0].node));
16256#line 16257 "parse.c"
16260#line 5385 "parse.y"
16262 (yyval.node) = new_unless(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
16263 fixpos((yyval.node), (yyvsp[0].node));
16266#line 16267 "parse.c"
16270#line 5394 "parse.y"
16272 (yyval.node) = new_array_pattern_tail(p, 0, 1, 0, 0, &(yyloc));
16273 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-1].node), (yyval.node), &(yyloc));
16276#line 16277 "parse.c"
16280#line 5400 "parse.y"
16282 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16283 nd_set_first_loc((yyval.node), (yylsp[-2]).beg_pos);
16286#line 16287 "parse.c"
16290#line 5406 "parse.y"
16292 (yyval.node) = new_find_pattern(p, 0, (yyvsp[0].node), &(yyloc));
16295#line 16296 "parse.c"
16299#line 5411 "parse.y"
16301 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[0].node), &(yyloc));
16304#line 16305 "parse.c"
16308#line 5416 "parse.y"
16310 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[0].node), &(yyloc));
16313#line 16314 "parse.c"
16317#line 5426 "parse.y"
16319 NODE *n = NEW_LIST((yyvsp[-2].node), &(yyloc));
16320 n = list_append(p, n, (yyvsp[0].node));
16321 (yyval.node) = new_hash(p, n, &(yyloc));
16324#line 16325 "parse.c"
16328#line 5436 "parse.y"
16330 p->ctxt.in_alt_pattern = 1;
16332#line 16333 "parse.c"
16336#line 5440 "parse.y"
16338 if (p->ctxt.capture_in_pattern) {
16339 yyerror1(&(yylsp[-2]),
"alternative pattern after variable capture");
16341 p->ctxt.in_alt_pattern = 0;
16342 (yyval.node) = NEW_OR((yyvsp[-3].node), (yyvsp[0].node), &(yyloc), &(yylsp[-2]));
16345#line 16346 "parse.c"
16349#line 5452 "parse.y"
16351 (yyval.tbl) = (yyvsp[0].tbl);
16354#line 16355 "parse.c"
16358#line 5459 "parse.y"
16360 (yyval.tbl) = (yyvsp[0].tbl);
16363#line 16364 "parse.c"
16367#line 5468 "parse.y"
16369 pop_pktbl(p, (yyvsp[-2].tbl));
16370 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
16371 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16374#line 16375 "parse.c"
16378#line 5475 "parse.y"
16380 pop_pktbl(p, (yyvsp[-2].tbl));
16381 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16382 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16385#line 16386 "parse.c"
16389#line 5482 "parse.y"
16391 pop_pktbl(p, (yyvsp[-2].tbl));
16392 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16393 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16396#line 16397 "parse.c"
16400#line 5489 "parse.y"
16402 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16403 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
16406#line 16407 "parse.c"
16410#line 5495 "parse.y"
16412 pop_pktbl(p, (yyvsp[-2].tbl));
16413 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
16414 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16417#line 16418 "parse.c"
16421#line 5502 "parse.y"
16423 pop_pktbl(p, (yyvsp[-2].tbl));
16424 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16425 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16428#line 16429 "parse.c"
16432#line 5509 "parse.y"
16434 pop_pktbl(p, (yyvsp[-2].tbl));
16435 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16436 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16439#line 16440 "parse.c"
16443#line 5516 "parse.y"
16445 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16446 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
16449#line 16450 "parse.c"
16453#line 5522 "parse.y"
16455 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[-1].node), &(yyloc));
16458#line 16459 "parse.c"
16462#line 5527 "parse.y"
16464 (yyval.node) = new_find_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16467#line 16468 "parse.c"
16471#line 5532 "parse.y"
16473 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16474 (yyval.node) = new_array_pattern(p, 0, 0, (yyval.node), &(yyloc));
16477#line 16478 "parse.c"
16481#line 5538 "parse.y"
16483 p->ctxt.in_kwarg = 0;
16485#line 16486 "parse.c"
16489#line 5542 "parse.y"
16491 pop_pktbl(p, (yyvsp[-4].tbl));
16492 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
16493 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16496#line 16497 "parse.c"
16500#line 5549 "parse.y"
16502 (yyval.node) = new_hash_pattern_tail(p, 0, 0, &(yyloc));
16503 (yyval.node) = new_hash_pattern(p, 0, (yyval.node), &(yyloc));
16506#line 16507 "parse.c"
16510#line 5555 "parse.y"
16512 pop_pktbl(p, (yyvsp[-2].tbl));
16513 (yyval.node) = (yyvsp[-1].node);
16516#line 16517 "parse.c"
16520#line 5563 "parse.y"
16522 NODE *pre_args = NEW_LIST((yyvsp[0].node), &(yyloc));
16523 (yyval.node) = new_array_pattern_tail(p, pre_args, 0, 0, 0, &(yyloc));
16526#line 16527 "parse.c"
16530#line 5569 "parse.y"
16532 (yyval.node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0, 0, &(yyloc));
16535#line 16536 "parse.c"
16539#line 5574 "parse.y"
16541 (yyval.node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, 0, 0, &(yyloc));
16544#line 16545 "parse.c"
16548#line 5579 "parse.y"
16550 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, (yyvsp[0].node), 0, &(yyloc));
16553#line 16554 "parse.c"
16557#line 5584 "parse.y"
16559 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16562#line 16563 "parse.c"
16566#line 5593 "parse.y"
16568 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
16571#line 16572 "parse.c"
16575#line 5600 "parse.y"
16577 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[0].node), 0, &(yyloc));
16580#line 16581 "parse.c"
16584#line 5605 "parse.y"
16586 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16589#line 16590 "parse.c"
16593#line 5612 "parse.y"
16595 (yyval.node) = new_find_pattern_tail(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16598#line 16599 "parse.c"
16602#line 5620 "parse.y"
16604 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16606 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16608#line 16609 "parse.c"
16612#line 5626 "parse.y"
16617#line 16618 "parse.c"
16621#line 5634 "parse.y"
16623 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16626#line 16627 "parse.c"
16630#line 5641 "parse.y"
16632 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16635#line 16636 "parse.c"
16639#line 5648 "parse.y"
16641 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].id), &(yyloc));
16644#line 16645 "parse.c"
16648#line 5653 "parse.y"
16650 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
16653#line 16654 "parse.c"
16657#line 5658 "parse.y"
16659 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
16662#line 16663 "parse.c"
16666#line 5663 "parse.y"
16668 (yyval.node) = new_hash_pattern_tail(p, new_hash(p, 0, &(yyloc)), (yyvsp[0].
id), &(yyloc));
16671#line 16672 "parse.c"
16675#line 5672 "parse.y"
16677 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16680#line 16681 "parse.c"
16684#line 5679 "parse.y"
16686 error_duplicate_pattern_key(p, (yyvsp[-1].
id), &(yylsp[-1]));
16687 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
16690#line 16691 "parse.c"
16694#line 5685 "parse.y"
16696 error_duplicate_pattern_key(p, (yyvsp[0].
id), &(yylsp[0]));
16697 if ((yyvsp[0].
id) && !is_local_id((yyvsp[0].
id))) {
16698 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
16700 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16701 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
16704#line 16705 "parse.c"
16708#line 5698 "parse.y"
16710 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
16711 if (!(yyvsp[-1].node) || nd_type_p((yyvsp[-1].node), NODE_STR)) {
16712 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
16713 (yyval.id) =
rb_sym2id(rb_node_sym_string_val(node));
16716 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
16717 (yyval.id) = rb_intern_str(STR_NEW0());
16721#line 16722 "parse.c"
16725#line 5713 "parse.y"
16727 (yyval.id) = (yyvsp[0].
id);
16730#line 16731 "parse.c"
16734#line 5718 "parse.y"
16739#line 16740 "parse.c"
16743#line 5725 "parse.y"
16747#line 16748 "parse.c"
16751#line 5732 "parse.y"
16753 (yyval.id) = idNil;
16756#line 16757 "parse.c"
16760#line 3114 "parse.y"
16762 value_expr(p, (yyvsp[-2].node));
16763 value_expr(p, (yyvsp[0].node));
16764 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16767#line 16768 "parse.c"
16771#line 3121 "parse.y"
16773 value_expr(p, (yyvsp[-2].node));
16774 value_expr(p, (yyvsp[0].node));
16775 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16778#line 16779 "parse.c"
16782#line 3128 "parse.y"
16784 value_expr(p, (yyvsp[-1].node));
16785 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16788#line 16789 "parse.c"
16792#line 3134 "parse.y"
16794 value_expr(p, (yyvsp[-1].node));
16795 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16798#line 16799 "parse.c"
16802#line 3140 "parse.y"
16804 value_expr(p, (yyvsp[0].node));
16805 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16808#line 16809 "parse.c"
16812#line 3146 "parse.y"
16814 value_expr(p, (yyvsp[0].node));
16815 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16818#line 16819 "parse.c"
16822#line 5747 "parse.y"
16824 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16827#line 16828 "parse.c"
16831#line 5755 "parse.y"
16833 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16835 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16837#line 16838 "parse.c"
16841#line 5763 "parse.y"
16843 NODE *n = gettable(p, (yyvsp[0].
id), &(yyloc));
16845 n = NEW_ERROR(&(yyloc));
16847 else if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
16848 compile_error(p,
"%"PRIsVALUE
": no such local variable", rb_id2str((yyvsp[0].
id)));
16853#line 16854 "parse.c"
16857#line 5775 "parse.y"
16859 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16862#line 16863 "parse.c"
16866#line 5782 "parse.y"
16868 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
16871#line 16872 "parse.c"
16875#line 5789 "parse.y"
16877 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
16880#line 16881 "parse.c"
16884#line 5794 "parse.y"
16886 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
16889#line 16890 "parse.c"
16893#line 5799 "parse.y"
16895 (yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc));
16898#line 16899 "parse.c"
16902#line 5808 "parse.y"
16904 NODE *err = (yyvsp[-3].node);
16905 if ((yyvsp[-3].node)) {
16906 err = NEW_ERRINFO(&(yylsp[-3]));
16907 err = node_assign(p, (yyvsp[-3].node), err, NO_LEX_CTXT, &(yylsp[-3]));
16909 (yyval.node) = NEW_RESBODY((yyvsp[-4].node), (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16910 if ((yyvsp[-4].node)) {
16911 fixpos((yyval.node), (yyvsp[-4].node));
16913 else if ((yyvsp[-3].node)) {
16914 fixpos((yyval.node), (yyvsp[-3].node));
16917 fixpos((yyval.node), (yyvsp[-1].node));
16921#line 16922 "parse.c"
16925#line 5830 "parse.y"
16927 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16930#line 16931 "parse.c"
16934#line 5835 "parse.y"
16936 if (!((yyval.node) = splat_array((yyvsp[0].node)))) (yyval.node) = (yyvsp[0].node);
16938#line 16939 "parse.c"
16942#line 5842 "parse.y"
16944 (yyval.node) = (yyvsp[0].node);
16947#line 16948 "parse.c"
16951#line 5850 "parse.y"
16953 p->ctxt.in_rescue = (yyvsp[-2].ctxt).in_rescue;
16954 (yyval.node) = (yyvsp[-1].node);
16955 void_expr(p, void_stmts(p, (yyval.node)));
16958#line 16959 "parse.c"
16962#line 5864 "parse.y"
16964 if (!(yyvsp[0].node)) {
16965 (yyval.node) = NEW_STR(STRING_NEW0(), &(yyloc));
16968 (yyval.node) = evstr2dstr(p, (yyvsp[0].node));
16972#line 16973 "parse.c"
16976#line 5878 "parse.y"
16978 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16981#line 16982 "parse.c"
16985#line 5885 "parse.y"
16987 (yyval.node) = heredoc_dedent(p, (yyvsp[-1].node));
16988 if ((yyval.node)) nd_set_loc((yyval.node), &(yyloc));
16990 if (p->heredoc_indent > 0) {
16992 p->heredoc_indent = 0;
16996#line 16997 "parse.c"
17000#line 5898 "parse.y"
17002 (yyval.node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
17004 if (p->heredoc_indent > 0) {
17006 p->heredoc_indent = 0;
17010#line 17011 "parse.c"
17014#line 5910 "parse.y"
17016 (yyval.node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
17019#line 17020 "parse.c"
17023#line 3163 "parse.y"
17025 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
17028#line 17029 "parse.c"
17032#line 5920 "parse.y"
17037#line 17038 "parse.c"
17041#line 5925 "parse.y"
17043 (yyval.node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
17046#line 17047 "parse.c"
17050#line 5934 "parse.y"
17052 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
17055#line 17056 "parse.c"
17059#line 3163 "parse.y"
17061 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
17064#line 17065 "parse.c"
17068#line 5944 "parse.y"
17073#line 17074 "parse.c"
17077#line 5949 "parse.y"
17079 (yyval.node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
17082#line 17083 "parse.c"
17086#line 3163 "parse.y"
17088 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
17091#line 17092 "parse.c"
17095#line 3163 "parse.y"
17097 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
17100#line 17101 "parse.c"
17104#line 5962 "parse.y"
17109#line 17110 "parse.c"
17113#line 5967 "parse.y"
17115 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
17118#line 17119 "parse.c"
17122#line 5974 "parse.y"
17127#line 17128 "parse.c"
17131#line 5979 "parse.y"
17133 (yyval.node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
17136#line 17137 "parse.c"
17140#line 5986 "parse.y"
17145#line 17146 "parse.c"
17149#line 5991 "parse.y"
17151 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
17154#line 17155 "parse.c"
17158#line 5998 "parse.y"
17163#line 17164 "parse.c"
17167#line 6003 "parse.y"
17169 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
17172#line 17173 "parse.c"
17176#line 6010 "parse.y"
17181#line 17182 "parse.c"
17185#line 6015 "parse.y"
17187 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
17189 (yyval.node) = tail;
17192 (yyval.node) = head;
17195 switch (nd_type(head)) {
17197 head = str2dstr(p, head);
17202 head = list_append(p, NEW_DSTR(0, &(yyloc)), head);
17205 (yyval.node) = list_append(p, head, tail);
17209#line 17210 "parse.c"
17213#line 6043 "parse.y"
17216 (yyval.strterm) = p->lex.strterm;
17217 p->lex.strterm = 0;
17218 SET_LEX_STATE(EXPR_BEG);
17220#line 17221 "parse.c"
17224#line 6050 "parse.y"
17226 p->lex.strterm = (yyvsp[-1].strterm);
17227 (yyval.node) = NEW_EVSTR((yyvsp[0].node), &(yyloc), &(yylsp[-2]), &NULL_LOC);
17228 nd_set_line((yyval.node), (yylsp[0]).end_pos.lineno);
17231#line 17232 "parse.c"
17235#line 6057 "parse.y"
17240 (yyval.strterm) = p->lex.strterm;
17241 p->lex.strterm = 0;
17242 SET_LEX_STATE(EXPR_BEG);
17244#line 17245 "parse.c"
17248#line 6065 "parse.y"
17250 (yyval.num) = p->lex.brace_nest;
17251 p->lex.brace_nest = 0;
17253#line 17254 "parse.c"
17257#line 6069 "parse.y"
17259 (yyval.num) = p->heredoc_indent;
17260 p->heredoc_indent = 0;
17262#line 17263 "parse.c"
17266#line 6074 "parse.y"
17270 p->lex.strterm = (yyvsp[-4].strterm);
17271 SET_LEX_STATE((yyvsp[-5].state));
17272 p->lex.brace_nest = (yyvsp[-3].num);
17273 p->heredoc_indent = (yyvsp[-2].num);
17274 p->heredoc_line_indent = -1;
17275 if ((yyvsp[-1].node)) nd_unset_fl_newline((yyvsp[-1].node));
17276 (yyval.node) = new_evstr(p, (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[0]));
17279#line 17280 "parse.c"
17283#line 6093 "parse.y"
17285 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17288#line 17289 "parse.c"
17292#line 6105 "parse.y"
17294 SET_LEX_STATE(EXPR_END);
17295 VALUE str = rb_id2str((yyvsp[0].
id));
17302 if (!str) str = STR_NEW0();
17303 (yyval.node) = NEW_SYM(str, &(yyloc));
17306#line 17307 "parse.c"
17310#line 6125 "parse.y"
17312 SET_LEX_STATE(EXPR_END);
17313 (yyval.node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
17316#line 17317 "parse.c"
17320#line 6134 "parse.y"
17322 (yyval.node) = (yyvsp[0].node);
17323 negate_lit(p, (yyval.node));
17326#line 17327 "parse.c"
17330#line 6156 "parse.y"
17331 {(yyval.id) = KWD2EID(nil, (yyvsp[0].
id));}
17332#line 17333 "parse.c"
17336#line 6157 "parse.y"
17337 {(yyval.id) = KWD2EID(self, (yyvsp[0].
id));}
17338#line 17339 "parse.c"
17342#line 6158 "parse.y"
17343 {(yyval.id) = KWD2EID(
true, (yyvsp[0].
id));}
17344#line 17345 "parse.c"
17348#line 6159 "parse.y"
17349 {(yyval.id) = KWD2EID(
false, (yyvsp[0].
id));}
17350#line 17351 "parse.c"
17354#line 6160 "parse.y"
17355 {(yyval.id) = KWD2EID(_FILE__, (yyvsp[0].
id));}
17356#line 17357 "parse.c"
17360#line 6161 "parse.y"
17361 {(yyval.id) = KWD2EID(_LINE__, (yyvsp[0].
id));}
17362#line 17363 "parse.c"
17366#line 6162 "parse.y"
17367 {(yyval.id) = KWD2EID(_ENCODING__, (yyvsp[0].
id));}
17368#line 17369 "parse.c"
17372#line 6166 "parse.y"
17374 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17375 if (ifdef_ripper(id_is_var(p, (yyvsp[0].
id)),
false)) {
17382#line 17383 "parse.c"
17386#line 6176 "parse.y"
17388 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17391#line 17392 "parse.c"
17395#line 6183 "parse.y"
17398 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
17400#line 17401 "parse.c"
17404#line 6183 "parse.y"
17407 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
17409#line 17410 "parse.c"
17413#line 6194 "parse.y"
17415 SET_LEX_STATE(EXPR_BEG);
17416 p->command_start = TRUE;
17418#line 17419 "parse.c"
17422#line 6199 "parse.y"
17424 (yyval.node) = (yyvsp[-1].node);
17427#line 17428 "parse.c"
17431#line 6208 "parse.y"
17433 p->ctxt.in_argdef = 0;
17435#line 17436 "parse.c"
17439#line 6214 "parse.y"
17441 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
17442 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyval.node_args), &(yyloc));
17445#line 17446 "parse.c"
17449#line 6222 "parse.y"
17451 (yyval.node_args) = (yyvsp[-1].node_args);
17453 SET_LEX_STATE(EXPR_BEG);
17454 p->command_start = TRUE;
17455 p->ctxt.in_argdef = 0;
17457#line 17458 "parse.c"
17461#line 6232 "parse.y"
17463 (yyval.ctxt) = p->ctxt;
17464 p->ctxt.in_kwarg = 1;
17465 p->ctxt.in_argdef = 1;
17466 SET_LEX_STATE(p->lex.state|EXPR_LABEL);
17468#line 17469 "parse.c"
17472#line 6239 "parse.y"
17474 p->ctxt.in_kwarg = (yyvsp[-2].ctxt).in_kwarg;
17475 p->ctxt.in_argdef = 0;
17476 (yyval.node_args) = (yyvsp[-1].node_args);
17477 SET_LEX_STATE(EXPR_BEG);
17478 p->command_start = TRUE;
17481#line 17482 "parse.c"
17485#line 3014 "parse.y"
17487 p->ctxt.in_argdef = 1;
17488 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17491#line 17492 "parse.c"
17495#line 3020 "parse.y"
17497 p->ctxt.in_argdef = 1;
17498 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
17501#line 17502 "parse.c"
17505#line 3029 "parse.y"
17507 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
17510#line 17511 "parse.c"
17514#line 3034 "parse.y"
17516 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
17519#line 17520 "parse.c"
17523#line 2951 "parse.y"
17525 (yyval.id) = (yyvsp[0].
id);
17528#line 17529 "parse.c"
17532#line 2928 "parse.y"
17534 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
17537#line 17538 "parse.c"
17541#line 2933 "parse.y"
17543 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
17546#line 17547 "parse.c"
17550#line 2938 "parse.y"
17552 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
17555#line 17556 "parse.c"
17559#line 2943 "parse.y"
17561 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
17564#line 17565 "parse.c"
17568#line 6251 "parse.y"
17570 add_forwarding_args(p);
17571 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[0].
id), arg_FWD_BLOCK, &(yylsp[0]));
17572 (yyval.node_args)->nd_ainfo.forwarding = 1;
17575#line 17576 "parse.c"
17579#line 2928 "parse.y"
17581 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
17584#line 17585 "parse.c"
17588#line 2933 "parse.y"
17590 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
17593#line 17594 "parse.c"
17597#line 2938 "parse.y"
17599 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
17602#line 17603 "parse.c"
17606#line 2943 "parse.y"
17608 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
17611#line 17612 "parse.c"
17615#line 6261 "parse.y"
17617 yyerror1(&(yylsp[0]),
"unexpected ... in lambda argument");
17618 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
17619 (yyval.node_args)->nd_ainfo.forwarding = 1;
17622#line 17623 "parse.c"
17626#line 2992 "parse.y"
17628 p->ctxt.in_argdef = 1;
17629 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17632#line 17633 "parse.c"
17636#line 3001 "parse.y"
17638 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
17641#line 17642 "parse.c"
17645#line 3006 "parse.y"
17647 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
17650#line 17651 "parse.c"
17654#line 3101 "parse.y"
17656 (yyval.node_args) = (yyvsp[0].node_args);
17659#line 17660 "parse.c"
17663#line 3106 "parse.y"
17665 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
17668#line 17669 "parse.c"
17672#line 6271 "parse.y"
17674 (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));
17677#line 17678 "parse.c"
17681#line 6276 "parse.y"
17683 (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));
17686#line 17687 "parse.c"
17690#line 6281 "parse.y"
17692 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17695#line 17696 "parse.c"
17699#line 6286 "parse.y"
17701 (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));
17704#line 17705 "parse.c"
17708#line 6291 "parse.y"
17710 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17713#line 17714 "parse.c"
17717#line 6296 "parse.y"
17719 (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));
17722#line 17723 "parse.c"
17726#line 6301 "parse.y"
17728 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17731#line 17732 "parse.c"
17735#line 6306 "parse.y"
17737 (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));
17740#line 17741 "parse.c"
17744#line 6311 "parse.y"
17746 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17749#line 17750 "parse.c"
17753#line 6316 "parse.y"
17755 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17758#line 17759 "parse.c"
17762#line 6321 "parse.y"
17764 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17767#line 17768 "parse.c"
17771#line 6326 "parse.y"
17773 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17776#line 17777 "parse.c"
17780#line 6343 "parse.y"
17782 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17785#line 17786 "parse.c"
17789#line 6334 "parse.y"
17791 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17794#line 17795 "parse.c"
17798#line 3101 "parse.y"
17800 (yyval.node_args) = (yyvsp[0].node_args);
17803#line 17804 "parse.c"
17807#line 3106 "parse.y"
17809 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
17812#line 17813 "parse.c"
17816#line 6271 "parse.y"
17818 (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));
17821#line 17822 "parse.c"
17825#line 6276 "parse.y"
17827 (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));
17830#line 17831 "parse.c"
17834#line 6281 "parse.y"
17836 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17839#line 17840 "parse.c"
17843#line 6286 "parse.y"
17845 (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));
17848#line 17849 "parse.c"
17852#line 6291 "parse.y"
17854 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17857#line 17858 "parse.c"
17861#line 6296 "parse.y"
17863 (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));
17866#line 17867 "parse.c"
17870#line 6301 "parse.y"
17872 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17875#line 17876 "parse.c"
17879#line 6306 "parse.y"
17881 (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));
17884#line 17885 "parse.c"
17888#line 6311 "parse.y"
17890 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17893#line 17894 "parse.c"
17897#line 6316 "parse.y"
17899 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17902#line 17903 "parse.c"
17906#line 6321 "parse.y"
17908 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17911#line 17912 "parse.c"
17915#line 6326 "parse.y"
17917 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17920#line 17921 "parse.c"
17924#line 6343 "parse.y"
17926 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17929#line 17930 "parse.c"
17933#line 6334 "parse.y"
17935 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17938#line 17939 "parse.c"
17942#line 6358 "parse.y"
17944 (yyval.id) = idFWD_KWREST;
17947#line 17948 "parse.c"
17951#line 6365 "parse.y"
17953 static const char mesg[] =
"formal argument cannot be a constant";
17955 yyerror1(&(yylsp[0]), mesg);
17960#line 17961 "parse.c"
17964#line 6374 "parse.y"
17966 static const char mesg[] =
"formal argument cannot be an instance variable";
17968 yyerror1(&(yylsp[0]), mesg);
17973#line 17974 "parse.c"
17977#line 6383 "parse.y"
17979 static const char mesg[] =
"formal argument cannot be a global variable";
17981 yyerror1(&(yylsp[0]), mesg);
17986#line 17987 "parse.c"
17990#line 6392 "parse.y"
17992 static const char mesg[] =
"formal argument cannot be a class variable";
17994 yyerror1(&(yylsp[0]), mesg);
17999#line 18000 "parse.c"
18003#line 6404 "parse.y"
18005 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
18009 p->max_numparam = ORDINAL_PARAM;
18011#line 18012 "parse.c"
18015#line 6414 "parse.y"
18017 arg_var(p, (yyvsp[0].
id));
18018 (yyval.id) = (yyvsp[0].
id);
18020#line 18021 "parse.c"
18024#line 6421 "parse.y"
18026 (yyval.node_args_aux) = NEW_ARGS_AUX((yyvsp[0].
id), 1, &NULL_LOC);
18029#line 18030 "parse.c"
18033#line 6426 "parse.y"
18035 ID tid = internal_id(p);
18037 loc.beg_pos = (yylsp[-1]).beg_pos;
18038 loc.end_pos = (yylsp[-1]).beg_pos;
18040 if (dyna_in_block(p)) {
18041 (yyvsp[-1].node_masgn)->nd_value = NEW_DVAR(tid, &loc);
18044 (yyvsp[-1].node_masgn)->nd_value = NEW_LVAR(tid, &loc);
18046 (yyval.node_args_aux) = NEW_ARGS_AUX(tid, 1, &NULL_LOC);
18047 (yyval.node_args_aux)->nd_next = (
NODE *)(yyvsp[-1].node_masgn);
18050#line 18051 "parse.c"
18054#line 6447 "parse.y"
18056 (yyval.node_args_aux) = (yyvsp[-2].node_args_aux);
18057 (yyval.node_args_aux)->nd_plen++;
18058 (yyval.node_args_aux)->nd_next = block_append(p, (yyval.node_args_aux)->nd_next, (yyvsp[0].node_args_aux)->nd_next);
18059 rb_discard_node(p, (
NODE *)(yyvsp[0].node_args_aux));
18062#line 18063 "parse.c"
18066#line 6458 "parse.y"
18068 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
18079 arg_var(p, ifdef_ripper(0, (yyvsp[0].
id)));
18081 p->max_numparam = ORDINAL_PARAM;
18082 p->ctxt.in_argdef = 0;
18084#line 18085 "parse.c"
18088#line 6482 "parse.y"
18092#line 18093 "parse.c"
18096#line 6488 "parse.y"
18098 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
18099 (yyval.id) = (yyvsp[0].
id);
18102#line 18103 "parse.c"
18106#line 6494 "parse.y"
18108 arg_var(p, idFWD_KWREST);
18109 (yyval.id) = idFWD_KWREST;
18112#line 18113 "parse.c"
18116#line 6506 "parse.y"
18118 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
18119 (yyval.id) = (yyvsp[0].
id);
18122#line 18123 "parse.c"
18126#line 6512 "parse.y"
18128 arg_var(p, idFWD_REST);
18129 (yyval.id) = idFWD_REST;
18132#line 18133 "parse.c"
18136#line 6524 "parse.y"
18138 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
18139 (yyval.id) = (yyvsp[0].
id);
18142#line 18143 "parse.c"
18146#line 6530 "parse.y"
18148 (yyval.id) = idNil;
18151#line 18152 "parse.c"
18155#line 6535 "parse.y"
18157 arg_var(p, idFWD_BLOCK);
18158 (yyval.id) = idFWD_BLOCK;
18161#line 18162 "parse.c"
18165#line 6543 "parse.y"
18170#line 18171 "parse.c"
18174#line 3155 "parse.y"
18176 value_expr(p, (yyvsp[0].node));
18177 (yyval.node) = (yyvsp[0].node);
18179#line 18180 "parse.c"
18183#line 6551 "parse.y"
18185 NODE *expr = last_expr_node((yyvsp[0].node));
18186 switch (nd_type(expr)) {
18196 case NODE_ENCODING:
18199 case NODE_RATIONAL:
18200 case NODE_IMAGINARY:
18204 yyerror1(&expr->nd_loc,
"can't define singleton method for literals");
18209 (yyval.node) = (yyvsp[0].node);
18211#line 18212 "parse.c"
18215#line 6582 "parse.y"
18217 SET_LEX_STATE(EXPR_BEG);
18218 p->ctxt.in_argdef = 0;
18220#line 18221 "parse.c"
18224#line 6587 "parse.y"
18226 p->ctxt.in_argdef = 1;
18227 (yyval.node) = (yyvsp[-1].node);
18230#line 18231 "parse.c"
18234#line 6596 "parse.y"
18236 (yyval.node) = (yyvsp[-1].node);
18239#line 18240 "parse.c"
18243#line 6605 "parse.y"
18245 NODE *assocs = (yyvsp[-2].node);
18246 NODE *tail = (yyvsp[0].node);
18251 if (RNODE_LIST(assocs)->nd_head) {
18252 NODE *n = RNODE_LIST(tail)->nd_next;
18253 if (!RNODE_LIST(tail)->nd_head && nd_type_p(n, NODE_LIST) &&
18254 nd_type_p((n = RNODE_LIST(n)->nd_head), NODE_HASH)) {
18256 tail = RNODE_HASH(n)->nd_head;
18260 assocs = list_concat(assocs, tail);
18263 (yyval.node) = assocs;
18266#line 18267 "parse.c"
18270#line 6630 "parse.y"
18272 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
18275#line 18276 "parse.c"
18279#line 6635 "parse.y"
18281 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
18284#line 18285 "parse.c"
18288#line 6640 "parse.y"
18290 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
18291 if (!val) val = NEW_ERROR(&(yyloc));
18292 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
18295#line 18296 "parse.c"
18299#line 6647 "parse.y"
18301 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
18302 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
18305#line 18306 "parse.c"
18309#line 6653 "parse.y"
18311 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
18314#line 18315 "parse.c"
18318#line 6658 "parse.y"
18320 forwarding_arg_check(p, idFWD_KWREST, idFWD_ALL,
"keyword rest");
18321 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)),
18322 NEW_LVAR(idFWD_KWREST, &(yyloc)));
18325#line 18326 "parse.c"
18329#line 6705 "parse.y"
18333 if (p->ctxt.in_defined) {
18334 p->ctxt.has_trailing_semicolon = 1;
18337#line 18338 "parse.c"
18341#line 6713 "parse.y"
18343 (yyloc).end_pos = (yyloc).beg_pos;
18346#line 18347 "parse.c"
18350#line 6720 "parse.y"
18352#line 18353 "parse.c"
18356#line 6724 "parse.y"
18361#line 18362 "parse.c"
18365#line 18366 "parse.c"
18380 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc, p);
18382 YYPOPSTACK (yylen);
18384#line 2667 "parse.y"
18385 {after_reduce(yylen, p);}
18386#line 18387 "parse.c"
18397 const int yylhs = yyr1[yyn] - YYNTOKENS;
18398 const int yyi = yypgoto[yylhs] + *yyssp;
18399 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
18401 : yydefgoto[yylhs]);
18413 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
18420 = {yyssp, yytoken, &yylloc};
18421 char const *yymsgp = YY_(
"syntax error");
18422 int yysyntax_error_status;
18423 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
18424 if (yysyntax_error_status == 0)
18426 else if (yysyntax_error_status == -1)
18428 if (yymsg != yymsgbuf)
18429 YYSTACK_FREE (yymsg);
18430 yymsg = YY_CAST (
char *,
18431 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
18434 yysyntax_error_status
18435 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
18441 yymsg_alloc =
sizeof yymsgbuf;
18442 yysyntax_error_status = YYENOMEM;
18445 yyerror (&yylloc, p, yymsgp);
18446 if (yysyntax_error_status == YYENOMEM)
18451 yyerror_range[1] = yylloc;
18452 if (yyerrstatus == 3)
18457 if (yychar <= END_OF_INPUT)
18460 if (yychar == END_OF_INPUT)
18465 yydestruct (
"Error: discarding",
18466 yytoken, &yylval, &yylloc, p);
18488 YYPOPSTACK (yylen);
18490#line 2669 "parse.y"
18491 {after_pop_stack(yylen, p);}
18492#line 18493 "parse.c"
18495 YY_STACK_PRINT (yyss, yyssp, p);
18509 yyn = yypact[yystate];
18510 if (!yypact_value_is_default (yyn))
18512 yyn += YYSYMBOL_YYerror;
18513 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
18515 yyn = yytable[yyn];
18525 yyerror_range[1] = *yylsp;
18526 yydestruct (
"Error: popping",
18527 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
18530#line 2669 "parse.y"
18531 {after_pop_stack(1, p);}
18532#line 18533 "parse.c"
18535 YY_STACK_PRINT (yyss, yyssp, p);
18538 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
18540 YY_IGNORE_MAYBE_UNINITIALIZED_END
18542 yyerror_range[2] = yylloc;
18544 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
18547 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp, p);
18549#line 2668 "parse.y"
18550 {after_shift_error_token(p);}
18551#line 18552 "parse.c"
18578 yyerror (&yylloc, p, YY_(
"memory exhausted"));
18587 if (yychar != YYEMPTY)
18591 yytoken = YYTRANSLATE (yychar);
18592 yydestruct (
"Cleanup: discarding lookahead",
18593 yytoken, &yylval, &yylloc, p);
18597 YYPOPSTACK (yylen);
18598 YY_STACK_PRINT (yyss, yyssp, p);
18599 while (yyssp != yyss)
18601 yydestruct (
"Cleanup: popping",
18602 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
18607 YYSTACK_FREE (yyss);
18609 if (yymsg != yymsgbuf)
18610 YYSTACK_FREE (yymsg);
18614#line 6729 "parse.y"
18619# define yylval (*p->lval)
18627#define set_parser_s_value(x) (ifdef_ripper(p->s_value = (x), (void)0))
18629# define set_yylval_node(x) { \
18630 YYLTYPE _cur_loc; \
18631 rb_parser_set_location(p, &_cur_loc); \
18632 yylval.node = (x); \
18633 set_parser_s_value(STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)); \
18635# define set_yylval_str(x) \
18637 set_yylval_node(NEW_STR(x, &_cur_loc)); \
18638 set_parser_s_value(rb_str_new_mutable_parser_string(x)); \
18640# define set_yylval_num(x) { \
18641 yylval.num = (x); \
18642 set_parser_s_value(x); \
18644# define set_yylval_id(x) (yylval.id = (x))
18645# define set_yylval_name(x) { \
18646 (yylval.id = (x)); \
18647 set_parser_s_value(ID2SYM(x)); \
18649# define yylval_id() (yylval.id)
18651#define set_yylval_noname() set_yylval_id(keyword_nil)
18652#define has_delayed_token(p) (p->delayed.token != NULL)
18655#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
18656#define dispatch_scan_event(p, t) parser_dispatch_scan_event(p, t, __LINE__)
18661 const char *
const pcur = p->lex.pcur;
18662 const char *
const ptok = p->lex.ptok;
18663 if (p->keep_tokens && (pcur < ptok)) {
18664 rb_bug(
"lex.pcur < lex.ptok. (line: %d) %"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"",
18665 p->ruby_sourceline, ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur);
18667 return pcur > ptok;
18674 case '"':
return "\\\"";
18675 case '\\':
return "\\\\";
18676 case '\0':
return "\\0";
18677 case '\n':
return "\\n";
18678 case '\r':
return "\\r";
18679 case '\t':
return "\\t";
18680 case '\f':
return "\\f";
18681 case '\013':
return "\\v";
18682 case '\010':
return "\\b";
18683 case '\007':
return "\\a";
18684 case '\033':
return "\\e";
18685 case '\x7f':
return "\\c?";
18694 const char *ptr = str->ptr;
18695 const char *pend = ptr + str->len;
18696 const char *prev = ptr;
18697 char charbuf[5] = {
'\\',
'x', 0, 0, 0};
18700 while (ptr < pend) {
18703 int n = rb_enc_precise_mbclen(ptr, pend, enc);
18705 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18706 n = rb_enc_mbminlen(enc);
18707 if (pend < ptr + n)
18708 n = (int)(pend - ptr);
18710 c = *ptr & 0xf0 >> 4;
18711 charbuf[2] = (c < 10) ?
'0' + c :
'A' + c - 10;
18713 charbuf[3] = (c < 10) ?
'0' + c :
'A' + c - 10;
18714 parser_str_cat(result, charbuf, 4);
18720 c = rb_enc_mbc_to_codepoint(ptr, pend, enc);
18722 cc = escaped_char(c);
18724 if (ptr - n > prev) parser_str_cat(result, prev, ptr - n - prev);
18725 parser_str_cat_cstr(result, cc);
18728 else if (rb_enc_isascii(c, enc) &&
ISPRINT(c)) {
18731 if (ptr - n > prev) {
18732 parser_str_cat(result, prev, ptr - n - prev);
18735 parser_str_cat(result, prev, ptr - prev);
18739 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18748 token->id = p->token_id;
18749 token->type_name = parser_token2char(p, t);
18751 token->loc.beg_pos = p->yylloc->beg_pos;
18752 token->loc.end_pos = p->yylloc->end_pos;
18753 rb_parser_ary_push_ast_token(p, p->tokens, token);
18758 rb_parser_printf(p,
"Append tokens (line: %d) [%d, :%s, \"%s\", [%d, %d, %d, %d]]\n",
18759 line, token->id, token->type_name, str_escaped->ptr,
18760 token->loc.beg_pos.lineno, token->loc.beg_pos.column,
18761 token->loc.end_pos.lineno, token->loc.end_pos.column);
18762 rb_parser_string_free(p, str_escaped);
18767parser_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t,
int line)
18769 debug_token_line(p,
"parser_dispatch_scan_event", line);
18771 if (!parser_has_token(p))
return;
18773 RUBY_SET_YYLLOC(*p->yylloc);
18775 if (p->keep_tokens) {
18776 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pcur - p->lex.ptok, p->enc);
18777 parser_append_tokens(p, str, t, line);
18783#define dispatch_delayed_token(p, t) parser_dispatch_delayed_token(p, t, __LINE__)
18785parser_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t,
int line)
18787 debug_token_line(p,
"parser_dispatch_delayed_token", line);
18789 if (!has_delayed_token(p))
return;
18791 RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(*p->yylloc);
18793 if (p->keep_tokens) {
18795 parser_append_tokens(p, p->delayed.token, t, line);
18798 rb_parser_string_free(p, p->delayed.token);
18801 p->delayed.token = NULL;
18804#define literal_flush(p, ptr) ((void)(ptr))
18809 if (p->lex.pcur < p->lex.ptok) rb_raise(
rb_eRuntimeError,
"lex.pcur < lex.ptok");
18810 return p->lex.pcur > p->lex.ptok;
18814ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
18816 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
18817 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
18818 RUBY_SET_YYLLOC(*p->yylloc);
18824ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
18826 if (!ripper_has_scan_event(p))
return;
18828 set_parser_s_value(ripper_scan_event_val(p, t));
18830#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
18833ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
18836 int saved_line = p->ruby_sourceline;
18837 const char *saved_tokp = p->lex.ptok;
18838 VALUE s_value, str;
18840 if (!has_delayed_token(p))
return;
18841 p->ruby_sourceline = p->delayed.beg_line;
18842 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
18843 str = rb_str_new_mutable_parser_string(p->delayed.token);
18844 rb_parser_string_free(p, p->delayed.token);
18845 s_value = ripper_dispatch1(p, ripper_token2eventid(t), str);
18846 set_parser_s_value(s_value);
18847 p->delayed.token = NULL;
18848 p->ruby_sourceline = saved_line;
18849 p->lex.ptok = saved_tokp;
18851#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
18857 return rb_enc_isalnum((
unsigned char)*ptr, enc) || *ptr ==
'_' || !
ISASCII(*ptr);
18863 const char *ptr = p->lex.pcur + at;
18864 if (lex_eol_ptr_n_p(p, ptr,
len-1))
return false;
18865 if (memcmp(ptr, str,
len))
return false;
18866 if (lex_eol_ptr_n_p(p, ptr,
len))
return true;
18867 switch (ptr[
len]) {
18868 case '!':
case '?':
return false;
18870 return !is_identchar(p, ptr+
len, p->lex.pend, p->enc);
18876 return !(p)->eofp && is_identchar(p, p->lex.pcur-1, p->lex.pend, p->enc);
18882 return ISASCII(*(p->lex.pcur-1));
18888 int column = 1, nonspc = 0, i;
18889 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
18890 if (*ptr ==
'\t') {
18891 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
18894 if (*ptr !=
' ' && *ptr !=
'\t') {
18899 ptinfo->beg = loc->beg_pos;
18900 ptinfo->indent = column;
18901 ptinfo->nonspc = nonspc;
18909 if (!p->token_info_enabled)
return;
18911 ptinfo->token = token;
18912 ptinfo->next = p->token_info;
18913 token_info_setup(ptinfo, p->lex.pbeg, loc);
18915 p->token_info = ptinfo;
18923 if (!ptinfo_beg)
return;
18926 token_info_warn(p, token, ptinfo_beg, 1, loc);
18928 p->token_info = ptinfo_beg->next;
18929 ruby_xfree_sized(ptinfo_beg,
sizeof(*ptinfo_beg));
18937 if (!ptinfo_beg)
return;
18938 p->token_info = ptinfo_beg->next;
18940 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
18941 ptinfo_beg->beg.column != beg_pos.column ||
18942 strcmp(ptinfo_beg->token, token)) {
18943 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
18944 beg_pos.lineno, beg_pos.column, token,
18945 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
18946 ptinfo_beg->token);
18949 ruby_xfree_sized(ptinfo_beg,
sizeof(*ptinfo_beg));
18955 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
18956 if (!p->token_info_enabled)
return;
18957 if (!ptinfo_beg)
return;
18958 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
18959 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
18960 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
18961 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
18962 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
18963 rb_warn3L(ptinfo_end->beg.lineno,
18964 "mismatched indentations at '%s' with '%s' at %d",
18965 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
18969parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
18971 int len = rb_enc_precise_mbclen(ptr, p->lex.pend, p->enc);
18973 compile_error(p,
"invalid multibyte char (%s)", rb_enc_name(p->enc));
18984 int lineno = p->ruby_sourceline;
18988 else if (yylloc->beg_pos.lineno == lineno) {
18989 str = p->lex.lastline;
18994 ruby_show_error_line(p, p->error_buffer, yylloc, lineno, str);
19004 yylloc = RUBY_SET_YYLLOC(current);
19006 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
19007 p->ruby_sourceline != yylloc->end_pos.lineno)) {
19011 parser_compile_error(p, yylloc,
"%s", msg);
19012 parser_show_error_line(p, yylloc);
19020 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
19027 const int max_line_margin = 30;
19028 const char *ptr, *ptr_end, *pt, *pb;
19029 const char *pre =
"", *post =
"", *pend;
19030 const char *code =
"", *caret =
"";
19032 const char *
const pbeg = PARSER_STRING_PTR(str);
19037 if (!yylloc)
return;
19038 pend = rb_parser_string_end(str);
19039 if (pend > pbeg && pend[-1] ==
'\n') {
19040 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
19044 if (lineno == yylloc->end_pos.lineno &&
19045 (pend - pbeg) > yylloc->end_pos.column) {
19046 pt = pbeg + yylloc->end_pos.column;
19049 ptr = ptr_end = pt;
19050 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
19051 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
19053 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
19054 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
19056 len = ptr_end - ptr;
19059 ptr = rb_enc_prev_char(pbeg, ptr, pt, rb_parser_str_get_encoding(str));
19060 if (ptr > pbeg) pre =
"...";
19062 if (ptr_end < pend) {
19063 ptr_end = rb_enc_prev_char(pt, ptr_end, pend, rb_parser_str_get_encoding(str));
19064 if (ptr_end < pend) post =
"...";
19068 if (lineno == yylloc->beg_pos.lineno) {
19069 pb += yylloc->beg_pos.column;
19070 if (pb > pt) pb = pt;
19072 if (pb < ptr) pb = ptr;
19073 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
19076 if (
RTEST(errbuf)) {
19077 mesg = rb_attr_get(errbuf, idMesg);
19078 if (char_at_end(p, mesg,
'\n') !=
'\n')
19082 mesg = rb_enc_str_new(0, 0, rb_parser_str_get_encoding(str));
19084 if (!errbuf && rb_stderr_tty_p()) {
19085#define CSI_BEGIN "\033["
19088 CSI_BEGIN
""CSI_SGR
"%s"
19089 CSI_BEGIN
"1"CSI_SGR
"%.*s"
19090 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
19091 CSI_BEGIN
";1"CSI_SGR
"%.*s"
19092 CSI_BEGIN
""CSI_SGR
"%s"
19095 (
int)(pb - ptr), ptr,
19096 (
int)(pt - pb), pb,
19097 (
int)(ptr_end - pt), pt,
19103 len = ptr_end - ptr;
19104 lim = pt < pend ? pt : pend;
19105 i = (int)(lim - ptr);
19111 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
19117 memset(p2,
'~', (lim - ptr));
19121 rb_str_catf(mesg,
"%s%.*s%s\n""%s%s\n",
19122 pre, (
int)
len, code, post,
19125 if (!errbuf) rb_write_error_str(mesg);
19132 const char *pcur = 0, *ptok = 0;
19133 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
19134 p->ruby_sourceline == yylloc->end_pos.lineno) {
19135 pcur = p->lex.pcur;
19136 ptok = p->lex.ptok;
19137 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
19138 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
19140 parser_yyerror0(p, msg);
19142 p->lex.ptok = ptok;
19143 p->lex.pcur = pcur;
19151 dispatch1(parse_error, STR_NEW2(msg));
19163vtable_size(
const struct vtable *tbl)
19165 if (!DVARS_TERMINAL_P(tbl)) {
19183 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
19188#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
19191vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
19196 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
19199 if (!DVARS_TERMINAL_P(tbl)) {
19201 ruby_xfree_sized(tbl->tbl, tbl->capa *
sizeof(
ID));
19203 ruby_xfree_sized(tbl,
sizeof(*tbl));
19206#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
19209vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
19214 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
19215 line, name, (
void *)tbl, rb_id2name(
id));
19218 if (DVARS_TERMINAL_P(tbl)) {
19219 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
19222 if (tbl->pos == tbl->capa) {
19223 tbl->capa = tbl->capa * 2;
19224 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
19226 tbl->tbl[tbl->pos++] = id;
19228#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
19231vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
19232 struct vtable *tbl,
int n)
19235 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
19236 line, name, (
void *)tbl, n);
19238 if (tbl->pos < n) {
19239 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
19244#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
19247vtable_included(
const struct vtable * tbl,
ID id)
19251 if (!DVARS_TERMINAL_P(tbl)) {
19252 for (i = 0; i < tbl->pos; i++) {
19253 if (tbl->tbl[i] ==
id) {
19266 return strcmp(p->ruby_sourcefile,
"-e") == 0;
19273yycompile0(
VALUE arg)
19280 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string) && !e_option_supplied(p)) {
19284 if (p->debug_lines) {
19285 p->ast->body.script_lines = p->debug_lines;
19289#define RUBY_DTRACE_PARSE_HOOK(name) \
19290 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
19291 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
19293 RUBY_DTRACE_PARSE_HOOK(BEGIN);
19295 RUBY_DTRACE_PARSE_HOOK(END);
19297 p->debug_lines = 0;
19299 xfree(p->lex.strterm);
19300 p->lex.strterm = 0;
19301 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
19302 if (n || p->error_p) {
19303 VALUE mesg = p->error_buffer;
19305 mesg = syntax_error_new();
19307 if (!p->error_tolerant) {
19308 rb_set_errinfo(mesg);
19312 tree = p->eval_tree;
19314 tree = NEW_NIL(&NULL_LOC);
19319 NODE *body = parser_append_options(p, RNODE_SCOPE(tree)->nd_body);
19320 prelude = block_append(p, p->eval_tree_begin, body);
19321 RNODE_SCOPE(tree)->nd_body = prelude;
19322 p->ast->body.frozen_string_literal = p->frozen_string_literal;
19323 p->ast->body.coverage_enabled = cov;
19324 if (p->keep_tokens) {
19325 p->ast->node_buffer->tokens = tokens;
19329 p->ast->body.root = tree;
19330 p->ast->body.line_count = p->line_count;
19338 if (
NIL_P(fname)) {
19339 p->ruby_sourcefile_string =
Qnil;
19340 p->ruby_sourcefile =
"(none)";
19343 p->ruby_sourcefile_string = rb_str_to_interned_str(fname);
19346 p->ruby_sourceline = line - 1;
19350 p->ast = ast = rb_ast_new();
19351 compile_callback(yycompile0, (
VALUE)p);
19365 rb_encoding *enc = rb_parser_str_get_encoding(s);
19366 if (!rb_enc_asciicompat(enc)) {
19367 rb_raise(rb_eArgError,
"invalid source encoding");
19376 if (!line)
return 0;
19378 string_buffer_append(p, line);
19379 must_be_ascii_compatible(p, line);
19385rb_parser_compile(
rb_parser_t *p, rb_parser_lex_gets_func *gets,
VALUE fname, rb_parser_input_data input,
int line)
19387 p->lex.gets = gets;
19388 p->lex.input = input;
19389 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
19391 return yycompile(p, fname, line);
19395#define STR_FUNC_ESCAPE 0x01
19396#define STR_FUNC_EXPAND 0x02
19397#define STR_FUNC_REGEXP 0x04
19398#define STR_FUNC_QWORDS 0x08
19399#define STR_FUNC_SYMBOL 0x10
19400#define STR_FUNC_INDENT 0x20
19401#define STR_FUNC_LABEL 0x40
19402#define STR_FUNC_LIST 0x4000
19403#define STR_FUNC_TERM 0x8000
19406 str_label = STR_FUNC_LABEL,
19408 str_dquote = (STR_FUNC_EXPAND),
19409 str_xquote = (STR_FUNC_EXPAND),
19410 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
19411 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
19412 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
19413 str_ssym = (STR_FUNC_SYMBOL),
19414 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
19422 pstr = rb_parser_encoding_string_new(p, ptr,
len, enc);
19424 if (!(func & STR_FUNC_REGEXP)) {
19425 if (rb_parser_is_ascii_string(p, pstr)) {
19427 else if (rb_is_usascii_enc((
void *)enc0) && enc != rb_utf8_encoding()) {
19429 enc = rb_ascii8bit_encoding();
19430 PARSER_ENCODING_CODERANGE_SET(pstr, enc, RB_PARSER_ENC_CODERANGE_VALID);
19440 return strterm->heredoc;
19444new_strterm(
struct parser_params *p,
int func,
int term,
int paren)
19447 strterm->u.literal.func = func;
19448 strterm->u.literal.term = term;
19449 strterm->u.literal.paren = paren;
19457 strterm->heredoc =
true;
19461#define peek(p,c) peek_n(p, (c), 0)
19462#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
19463#define peekc(p) peekc_n(p, 0)
19464#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
19466#define add_delayed_token(p, tok, end) parser_add_delayed_token(p, tok, end, __LINE__)
19468parser_add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end,
int line)
19470 debug_token_line(p,
"add_delayed_token", line);
19473 if (has_delayed_token(p)) {
19474 bool next_line = parser_string_char_at_end(p, p->delayed.token, 0) ==
'\n';
19475 int end_line = (next_line ? 1 : 0) + p->delayed.end_line;
19476 int end_col = (next_line ? 0 : p->delayed.end_col);
19477 if (end_line != p->ruby_sourceline || end_col != tok - p->lex.pbeg) {
19478 dispatch_delayed_token(p, tSTRING_CONTENT);
19481 if (!has_delayed_token(p)) {
19482 p->delayed.token = rb_parser_string_new(p, 0, 0);
19483 rb_parser_enc_associate(p, p->delayed.token, p->enc);
19484 p->delayed.beg_line = p->ruby_sourceline;
19485 p->delayed.beg_col =
rb_long2int(tok - p->lex.pbeg);
19487 parser_str_cat(p->delayed.token, tok, end - tok);
19488 p->delayed.end_line = p->ruby_sourceline;
19489 p->delayed.end_col =
rb_long2int(end - p->lex.pbeg);
19497 p->lex.pbeg = p->lex.pcur = PARSER_STRING_PTR(str);
19498 p->lex.pend = p->lex.pcur + PARSER_STRING_LEN(str);
19499 p->lex.lastline = str;
19506 p->lex.nextline = 0;
19511 if (!lex_eol_ptr_p(p, p->lex.pbeg) && *(p->lex.pend-1) !=
'\n') {
19515 if (!p->lex.input || !(str = lex_getline(p))) {
19522 if (p->debug_lines) {
19523 if (set_encoding) rb_parser_enc_associate(p, str, p->enc);
19525 rb_parser_ary_push_script_line(p, p->debug_lines, copy);
19528 p->cr_seen = FALSE;
19530 else if (str == AFTER_HEREDOC_WITHOUT_TERMINATOR) {
19534 add_delayed_token(p, p->lex.ptok, p->lex.pend);
19535 if (p->heredoc_end > 0) {
19536 p->ruby_sourceline = p->heredoc_end;
19537 p->heredoc_end = 0;
19539 p->ruby_sourceline++;
19540 set_lastline(p, str);
19548 if (peek(p,
'\n')) {
19560 if (UNLIKELY(lex_eol_p(p) || p->eofp || p->lex.nextline > AFTER_HEREDOC_WITHOUT_TERMINATOR)) {
19561 if (nextline(p, set_encoding))
return -1;
19563 c = (
unsigned char)*p->lex.pcur++;
19564 if (UNLIKELY(c ==
'\r')) {
19565 c = parser_cr(p, c);
19570#define nextc(p) nextc0(p, TRUE)
19575 if (c == -1)
return;
19578 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
19583#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
19585#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
19586#define tok(p) (p)->tokenbuf
19587#define toklen(p) (p)->tokidx
19592 const char *ptr = p->lex.pcur;
19593 while (!lex_eol_ptr_p(p, ptr)) {
19594 int c = (
unsigned char)*ptr++;
19595 int eol = (c ==
'\n' || c ==
'#');
19607 if (!p->tokenbuf) {
19609 p->tokenbuf =
ALLOC_N(
char, 60);
19611 if (p->toksiz > 4096) {
19615 return p->tokenbuf;
19623 if (p->tokidx >= p->toksiz) {
19624 do {p->toksiz *= 2;}
while (p->toksiz < p->tokidx);
19625 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19627 return &p->tokenbuf[p->tokidx-n];
19633 p->tokenbuf[p->tokidx++] = (char)c;
19634 if (p->tokidx >= p->toksiz) {
19636 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19645 c = (int)ruby_scan_hex(p->lex.pcur, 2, numlen);
19648 yyerror0(
"invalid hex escape");
19649 dispatch_scan_event(p, tSTRING_CONTENT);
19652 p->lex.pcur += *numlen;
19656#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
19659escaped_control_code(
int c)
19685#define WARN_SPACE_CHAR(c, prefix) \
19686 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c))
19690 int regexp_literal,
const char *begin)
19692 const int wide = !begin;
19694 int codepoint = (int)ruby_scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
19696 p->lex.pcur += numlen;
19697 if (p->lex.strterm == NULL ||
19698 strterm_is_heredoc(p->lex.strterm) ||
19699 (p->lex.strterm->u.literal.func != str_regexp)) {
19700 if (!begin) begin = p->lex.pcur;
19701 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
19702 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19703 yyerror0(
"invalid Unicode escape");
19704 dispatch_scan_event(p, tSTRING_CONTENT);
19705 return wide && numlen > 0;
19707 if (codepoint > 0x10ffff) {
19708 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19709 yyerror0(
"invalid Unicode codepoint (too large)");
19710 dispatch_scan_event(p, tSTRING_CONTENT);
19713 if ((codepoint & 0xfffff800) == 0xd800) {
19714 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19715 yyerror0(
"invalid Unicode codepoint");
19716 dispatch_scan_event(p, tSTRING_CONTENT);
19720 if (regexp_literal) {
19721 tokcopy(p, (
int)numlen);
19723 else if (codepoint >= 0x80) {
19725 if (*encp && utf8 != *encp) {
19726 YYLTYPE loc = RUBY_INIT_YYLLOC();
19727 compile_error(p,
"UTF-8 mixed within %s source", rb_enc_name(*encp));
19728 parser_show_error_line(p, &loc);
19732 tokaddmbc(p, codepoint, *encp);
19735 tokadd(p, codepoint);
19745 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19747 p->lex.pcur +=
len - 1;
19755 int term,
int symbol_literal,
int regexp_literal)
19762 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
19764 const int open_brace =
'{', close_brace =
'}';
19766 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
19768 if (peek(p, open_brace)) {
19769 if (regexp_literal && p->lex.strterm->u.literal.func == str_regexp) {
19776 tokadd(p, open_brace);
19777 while (!lex_eol_ptr_p(p, ++p->lex.pcur)) {
19779 if (c == close_brace) {
19784 else if (c == term) {
19787 if (c ==
'\\' && !lex_eol_n_p(p, 1)) {
19789 c = *++p->lex.pcur;
19791 tokadd_mbchar(p, c);
19795 const char *second = NULL;
19796 int c, last = nextc(p);
19797 if (lex_eol_p(p))
goto unterminated;
19798 while (
ISSPACE(c = peekc(p)) && !lex_eol_ptr_p(p, ++p->lex.pcur));
19799 while (c != close_brace) {
19800 if (c == term)
goto unterminated;
19801 if (second == multiple_codepoints)
19802 second = p->lex.pcur;
19803 if (regexp_literal) tokadd(p, last);
19804 if (!tokadd_codepoint(p, encp, regexp_literal, NULL)) {
19807 while (
ISSPACE(c = peekc(p))) {
19808 if (lex_eol_ptr_p(p, ++p->lex.pcur))
goto unterminated;
19811 if (term == -1 && !second)
19812 second = multiple_codepoints;
19815 if (c != close_brace) {
19817 flush_string_content(p, rb_utf8_encoding(), 0);
19818 yyerror0(
"unterminated Unicode escape");
19819 dispatch_scan_event(p, tSTRING_CONTENT);
19822 if (second && second != multiple_codepoints) {
19823 const char *pcur = p->lex.pcur;
19824 p->lex.pcur = second;
19825 dispatch_scan_event(p, tSTRING_CONTENT);
19827 p->lex.pcur = pcur;
19828 yyerror0(multiple_codepoints);
19832 if (regexp_literal) tokadd(p, close_brace);
19837 if (!tokadd_codepoint(p, encp, regexp_literal, p->lex.pcur -
rb_strlen_lit(
"\\u"))) {
19844#define ESCAPE_CONTROL 1
19845#define ESCAPE_META 2
19848read_escape(
struct parser_params *p,
int flags,
const char *begin)
19853 switch (c = nextc(p)) {
19878 case '0':
case '1':
case '2':
case '3':
19879 case '4':
case '5':
case '6':
case '7':
19881 c = (int)ruby_scan_oct(p->lex.pcur, 3, &numlen);
19882 p->lex.pcur += numlen;
19886 c = tok_hex(p, &numlen);
19887 if (numlen == 0)
return 0;
19897 if (flags & ESCAPE_META)
goto eof;
19898 if ((c = nextc(p)) !=
'-') {
19901 if ((c = nextc(p)) ==
'\\') {
19902 switch (peekc(p)) {
19903 case 'u':
case 'U':
19907 return read_escape(p, flags|ESCAPE_META, begin) | 0x80;
19909 else if (c == -1)
goto eof;
19915 int c2 = escaped_control_code(c);
19917 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
19918 WARN_SPACE_CHAR(c2,
"\\M-");
19921 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
19924 else if (
ISCNTRL(c))
goto eof;
19925 return ((c & 0xff) | 0x80);
19929 if ((c = nextc(p)) !=
'-') {
19933 if (flags & ESCAPE_CONTROL)
goto eof;
19934 if ((c = nextc(p))==
'\\') {
19935 switch (peekc(p)) {
19936 case 'u':
case 'U':
19940 c = read_escape(p, flags|ESCAPE_CONTROL, begin);
19944 else if (c == -1)
goto eof;
19950 int c2 = escaped_control_code(c);
19953 if (flags & ESCAPE_META) {
19954 WARN_SPACE_CHAR(c2,
"\\M-");
19957 WARN_SPACE_CHAR(c2,
"");
19961 if (flags & ESCAPE_META) {
19962 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
19965 WARN_SPACE_CHAR(c2,
"\\C-");
19969 else if (
ISCNTRL(c))
goto eof;
19975 flush_string_content(p, p->enc, p->lex.pcur - begin);
19976 yyerror0(
"Invalid escape character syntax");
19977 dispatch_scan_event(p, tSTRING_CONTENT);
19992 int len = rb_enc_codelen(c, enc);
19993 rb_enc_mbcput(c, tokspace(p,
len), enc);
20001 const char *begin = p->lex.pcur;
20003 switch (c = nextc(p)) {
20007 case '0':
case '1':
case '2':
case '3':
20008 case '4':
case '5':
case '6':
case '7':
20010 ruby_scan_oct(--p->lex.pcur, 3, &numlen);
20011 if (numlen == 0)
goto eof;
20012 p->lex.pcur += numlen;
20013 tokcopy(p, (
int)numlen + 1);
20019 tok_hex(p, &numlen);
20020 if (numlen == 0)
return -1;
20021 tokcopy(p, (
int)numlen + 2);
20027 flush_string_content(p, p->enc, p->lex.pcur - begin);
20028 yyerror0(
"Invalid escape character syntax");
20040char_to_option(
int c)
20046 val = RE_ONIG_OPTION_IGNORECASE;
20049 val = RE_ONIG_OPTION_EXTEND;
20052 val = RE_ONIG_OPTION_MULTILINE;
20061#define ARG_ENCODING_FIXED 16
20062#define ARG_ENCODING_NONE 32
20063#define ENC_ASCII8BIT 1
20064#define ENC_EUC_JP 2
20065#define ENC_Windows_31J 3
20069char_to_option_kcode(
int c,
int *option,
int *kcode)
20075 *kcode = ENC_ASCII8BIT;
20076 return (*option = ARG_ENCODING_NONE);
20078 *kcode = ENC_EUC_JP;
20081 *kcode = ENC_Windows_31J;
20088 return (*option = char_to_option(c));
20090 *option = ARG_ENCODING_FIXED;
20103 while (c = nextc(p),
ISALPHA(c)) {
20105 options |= RE_OPTION_ONCE;
20107 else if (char_to_option_kcode(c, &opt, &kc)) {
20109 if (kc != ENC_ASCII8BIT) kcode = c;
20123 YYLTYPE loc = RUBY_INIT_YYLLOC();
20125 compile_error(p,
"unknown regexp option%s - %*s",
20126 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
20127 parser_show_error_line(p, &loc);
20129 return options | RE_OPTION_ENCODING(kcode);
20135 int len = parser_precise_mbclen(p, p->lex.pcur-1);
20136 if (
len < 0)
return -1;
20138 p->lex.pcur += --
len;
20139 if (
len > 0) tokcopy(p,
len);
20144simple_re_meta(
int c)
20147 case '$':
case '*':
case '+':
case '.':
20148 case '?':
case '^':
case '|':
20149 case ')':
case ']':
case '}':
case '>':
20157parser_update_heredoc_indent(
struct parser_params *p,
int c)
20159 if (p->heredoc_line_indent == -1) {
20160 if (c ==
'\n') p->heredoc_line_indent = 0;
20164 p->heredoc_line_indent++;
20167 else if (c ==
'\t') {
20168 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
20169 p->heredoc_line_indent = w * TAB_WIDTH;
20172 else if (c !=
'\n') {
20173 if (p->heredoc_indent > p->heredoc_line_indent) {
20174 p->heredoc_indent = p->heredoc_line_indent;
20176 p->heredoc_line_indent = -1;
20180 p->heredoc_line_indent = 0;
20189 YYLTYPE loc = RUBY_INIT_YYLLOC();
20190 const char *n1 = rb_enc_name(enc1), *n2 = rb_enc_name(enc2);
20191 compile_error(p,
"%s mixed within %s source", n1, n2);
20192 parser_show_error_line(p, &loc);
20198 const char *pos = p->lex.pcur;
20200 parser_mixed_error(p, enc1, enc2);
20205nibble_char_upper(
unsigned int c)
20208 return c + (c < 10 ?
'0' :
'A' - 10);
20213 int func,
int term,
int paren,
long *nest,
20217 bool erred =
false;
20219 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
20220 int top_of_line = FALSE;
20223#define mixed_error(enc1, enc2) \
20224 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
20225#define mixed_escape(beg, enc1, enc2) \
20226 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
20228 while ((c = nextc(p)) != -1) {
20229 if (p->heredoc_indent > 0) {
20230 parser_update_heredoc_indent(p, c);
20233 if (top_of_line && heredoc_end == p->ruby_sourceline) {
20239 if (paren && c == paren) {
20242 else if (c == term) {
20243 if (!nest || !*nest) {
20249 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && !lex_eol_p(p)) {
20250 unsigned char c2 = *p->lex.pcur;
20251 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
20256 else if (c ==
'\\') {
20260 if (func & STR_FUNC_QWORDS)
break;
20261 if (func & STR_FUNC_EXPAND) {
20262 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
20273 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
20277 if ((func & STR_FUNC_EXPAND) == 0) {
20281 tokadd_utf8(p, enc, term,
20282 func & STR_FUNC_SYMBOL,
20283 func & STR_FUNC_REGEXP);
20287 if (c == -1)
return -1;
20289 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
20292 if (func & STR_FUNC_REGEXP) {
20298 c = read_escape(p, 0, p->lex.pcur - 1);
20303 *t++ = nibble_char_upper(c >> 4);
20304 *t++ = nibble_char_upper(c);
20309 if (c == term && !simple_re_meta(c)) {
20314 if ((c = tokadd_escape(p)) < 0)
20316 if (*enc && *enc != *encp) {
20317 mixed_escape(p->lex.ptok+2, *enc, *encp);
20321 else if (func & STR_FUNC_EXPAND) {
20323 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
20324 c = read_escape(p, 0, p->lex.pcur - 1);
20326 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
20329 else if (c != term && !(paren && c == paren)) {
20336 else if (!parser_isascii(p)) {
20341 else if (*enc != *encp) {
20342 mixed_error(*enc, *encp);
20345 if (tokadd_mbchar(p, c) == -1)
return -1;
20348 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
20356 else if (*enc != *encp) {
20357 mixed_error(*enc, *encp);
20363 top_of_line = (c ==
'\n');
20367 if (*enc) *encp = *enc;
20371#define NEW_STRTERM(func, term, paren) new_strterm(p, func, term, paren)
20376 p->lex.pcur -= back;
20377 if (has_delayed_token(p)) {
20378 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
20380 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20381 p->delayed.end_line = p->ruby_sourceline;
20382 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
20384 dispatch_delayed_token(p, tSTRING_CONTENT);
20385 p->lex.ptok = p->lex.pcur;
20387 dispatch_scan_event(p, tSTRING_CONTENT);
20388 p->lex.pcur += back;
20394#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
20395#define SPECIAL_PUNCT(idx) ( \
20396 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
20397 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
20398 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
20399 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
20400 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
20402const uint_least32_t ruby_global_name_punct_bits[] = {
20408#undef SPECIAL_PUNCT
20411static enum yytokentype
20412parser_peek_variable_name(struct parser_params *p)
20415 const char *ptr = p->lex.pcur;
20417 if (lex_eol_ptr_n_p(p, ptr, 1)) return 0;
20421 if ((c = *ptr) == '-') {
20422 if (lex_eol_ptr_p(p, ++ptr)) return 0;
20425 else if (is_global_name_punct(c) || ISDIGIT(c)) {
20426 return tSTRING_DVAR;
20430 if ((c = *ptr) == '@') {
20431 if (lex_eol_ptr_p(p, ++ptr)) return 0;
20437 p->command_start = TRUE;
20438 yylval.state = p->lex.state;
20439 return tSTRING_DBEG;
20443 if (!ISASCII(c) || c == '_' || ISALPHA(c))
20444 return tSTRING_DVAR;
20448#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
20449#define IS_END() IS_lex_state(EXPR_END_ANY)
20450#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
20451#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
20452#define IS_LABEL_POSSIBLE() (\
20453 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
20455#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
20456#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
20458static inline enum yytokentype
20459parser_string_term(struct parser_params *p, int func)
20461 xfree(p->lex.strterm);
20462 p->lex.strterm = 0;
20463 if (func & STR_FUNC_REGEXP) {
20464 set_yylval_num(regx_options(p));
20465 dispatch_scan_event(p, tREGEXP_END);
20466 SET_LEX_STATE(EXPR_END);
20467 return tREGEXP_END;
20469 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
20471 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
20474 SET_LEX_STATE(EXPR_END);
20475 return tSTRING_END;
20478static enum yytokentype
20479parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
20481 int func = quote->func;
20482 int term = quote->term;
20483 int paren = quote->paren;
20485 rb_encoding *enc = p->enc;
20486 rb_encoding *base_enc = 0;
20487 rb_parser_string_t *lit;
20489 if (func & STR_FUNC_TERM) {
20490 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
20491 SET_LEX_STATE(EXPR_END);
20492 xfree(p->lex.strterm);
20493 p->lex.strterm = 0;
20494 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
20497 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
20498 while (c != '\n' && ISSPACE(c = nextc(p)));
20501 if (func & STR_FUNC_LIST) {
20502 quote->func &= ~STR_FUNC_LIST;
20505 if (c == term && !quote->nest) {
20506 if (func & STR_FUNC_QWORDS) {
20507 quote->func |= STR_FUNC_TERM;
20508 pushback(p, c); /* dispatch the term at tSTRING_END */
20509 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20512 return parser_string_term(p, func);
20515 if (!ISSPACE(c)) pushback(p, c);
20516 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20520 if ((func & STR_FUNC_EXPAND) && c == '#') {
20521 enum yytokentype t = parser_peek_variable_name(p);
20527 if (tokadd_string(p, func, term, paren, "e->nest,
20528 &enc, &base_enc) == -1) {
20531# define unterminated_literal(mesg) yyerror0(mesg)
20533# define unterminated_literal(mesg) compile_error(p, mesg)
20535 literal_flush(p, p->lex.pcur);
20536 if (func & STR_FUNC_QWORDS) {
20537 /* no content to add, bailing out here */
20538 unterminated_literal("unterminated list meets end of file");
20539 xfree(p->lex.strterm);
20540 p->lex.strterm = 0;
20541 return tSTRING_END;
20543 if (func & STR_FUNC_REGEXP) {
20544 unterminated_literal("unterminated regexp meets end of file");
20547 unterminated_literal("unterminated string meets end of file");
20549 quote->func |= STR_FUNC_TERM;
20554 lit = STR_NEW3(tok(p), toklen(p), enc, func);
20555 set_yylval_str(lit);
20556 flush_string_content(p, enc, 0);
20558 return tSTRING_CONTENT;
20561static enum yytokentype
20562heredoc_identifier(struct parser_params *p)
20565 * term_len is length of `<<"END"` except `END`,
20566 * in this case term_len is 4 (<, <, " and ").
20568 long len, offset = p->lex.pcur - p->lex.pbeg;
20569 int c = nextc(p), term, func = 0, quote = 0;
20570 enum yytokentype token = tSTRING_BEG;
20575 func = STR_FUNC_INDENT;
20578 else if (c == '~') {
20580 func = STR_FUNC_INDENT;
20586 func |= str_squote; goto quoted;
20588 func |= str_dquote;
goto quoted;
20590 token = tXSTRING_BEG;
20591 func |= str_xquote;
goto quoted;
20598 while ((c = nextc(p)) != term) {
20599 if (c == -1 || c ==
'\r' || c ==
'\n') {
20600 yyerror0(
"unterminated here document identifier");
20607 if (!parser_is_identchar(p)) {
20609 if (func & STR_FUNC_INDENT) {
20610 pushback(p, indent > 0 ?
'~' :
'-');
20614 func |= str_dquote;
20616 int n = parser_precise_mbclen(p, p->lex.pcur-1);
20617 if (n < 0)
return 0;
20618 p->lex.pcur += --n;
20619 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
20624 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
20625 if ((
unsigned long)
len >= HERETERM_LENGTH_MAX)
20626 yyerror0(
"too long here document identifier");
20627 dispatch_scan_event(p, tHEREDOC_BEG);
20630 p->lex.strterm = new_heredoc(p);
20632 here->offset = offset;
20633 here->sourceline = p->ruby_sourceline;
20634 here->length = (unsigned)
len;
20635 here->quote = quote;
20637 here->lastline = p->lex.lastline;
20640 p->heredoc_indent = indent;
20641 p->heredoc_line_indent = 0;
20651 p->lex.strterm = 0;
20652 line = here->lastline;
20653 p->lex.lastline = line;
20654 p->lex.pbeg = PARSER_STRING_PTR(line);
20655 p->lex.pend = p->lex.pbeg + PARSER_STRING_LEN(line);
20656 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
20657 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
20658 p->heredoc_end = p->ruby_sourceline;
20659 p->ruby_sourceline = (int)here->sourceline;
20660 if (p->eofp) p->lex.nextline = AFTER_HEREDOC_WITHOUT_TERMINATOR;
20666dedent_string_column(
const char *str,
long len,
int width)
20670 for (i = 0; i <
len && col < width; i++) {
20671 if (str[i] ==
' ') {
20674 else if (str[i] ==
'\t') {
20675 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
20676 if (n > width)
break;
20694 len = PARSER_STRING_LEN(
string);
20695 str = PARSER_STRING_PTR(
string);
20697 i = dedent_string_column(str,
len, width);
20700 rb_parser_str_modify(
string);
20701 str = PARSER_STRING_PTR(
string);
20702 if (PARSER_STRING_LEN(
string) !=
len)
20703 rb_fatal(
"literal string changed: %s", PARSER_STRING_PTR(
string));
20705 rb_parser_str_set_len(p,
string,
len - i);
20712 NODE *node, *str_node, *prev_node;
20713 int indent = p->heredoc_indent;
20716 if (indent <= 0)
return root;
20717 if (!root)
return root;
20719 prev_node = node = str_node = root;
20720 if (nd_type_p(root, NODE_LIST)) str_node = RNODE_LIST(root)->nd_head;
20724 if (nd_fl_newline(str_node)) {
20725 dedent_string(p, lit, indent);
20730 else if (!literal_concat0(p, prev_lit, lit)) {
20734 NODE *end = RNODE_LIST(node)->as.nd_end;
20735 node = RNODE_LIST(prev_node)->nd_next = RNODE_LIST(node)->nd_next;
20737 if (nd_type_p(prev_node, NODE_DSTR))
20738 nd_set_type(prev_node, NODE_STR);
20741 RNODE_LIST(node)->as.nd_end = end;
20746 while ((nd_type_p(node, NODE_LIST) || nd_type_p(node, NODE_DSTR)) && (node = RNODE_LIST(prev_node = node)->nd_next) != 0) {
20748 if (!nd_type_p(node, NODE_LIST))
break;
20749 if ((str_node = RNODE_LIST(node)->nd_head) != 0) {
20750 enum node_type
type = nd_type(str_node);
20751 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
20761whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
20763 const char *beg = p->lex.pbeg;
20764 const char *ptr = p->lex.pend;
20766 if (ptr - beg <
len)
return FALSE;
20767 if (ptr > beg && ptr[-1] ==
'\n') {
20768 if (--ptr > beg && ptr[-1] ==
'\r') --ptr;
20769 if (ptr - beg <
len)
return FALSE;
20771 if (strncmp(eos, ptr -=
len,
len))
return FALSE;
20773 while (beg < ptr &&
ISSPACE(*beg)) beg++;
20781 if (strncmp(p->lex.pcur, word,
len))
return 0;
20782 if (lex_eol_n_p(p,
len))
return 1;
20783 int c = (
unsigned char)p->lex.pcur[
len];
20786 case '\0':
case '\004':
case '\032':
return 1;
20791#define NUM_SUFFIX_R (1<<0)
20792#define NUM_SUFFIX_I (1<<1)
20793#define NUM_SUFFIX_ALL 3
20799 const char *lastp = p->lex.pcur;
20801 while ((c = nextc(p)) != -1) {
20802 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
20803 result |= (mask & NUM_SUFFIX_I);
20804 mask &= ~NUM_SUFFIX_I;
20806 mask &= ~NUM_SUFFIX_R;
20809 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
20810 result |= (mask & NUM_SUFFIX_R);
20811 mask &= ~NUM_SUFFIX_R;
20815 p->lex.pcur = lastp;
20816 literal_flush(p, p->lex.pcur);
20825static enum yytokentype
20826set_number_literal(
struct parser_params *p,
enum yytokentype
type,
int suffix,
int base,
int seen_point)
20828 enum rb_numeric_type numeric_type = integer_literal;
20830 if (
type == tFLOAT) {
20831 numeric_type = float_literal;
20834 if (suffix & NUM_SUFFIX_R) {
20836 numeric_type = rational_literal;
20838 if (suffix & NUM_SUFFIX_I) {
20844 set_yylval_node(NEW_INTEGER(
strdup(tok(p)), base, &_cur_loc));
20847 set_yylval_node(NEW_FLOAT(
strdup(tok(p)), &_cur_loc));
20850 set_yylval_node(NEW_RATIONAL(
strdup(tok(p)), base, seen_point, &_cur_loc));
20853 set_yylval_node(NEW_IMAGINARY(
strdup(tok(p)), base, seen_point, numeric_type, &_cur_loc));
20854 (void)numeric_type;
20857 rb_bug(
"unexpected token: %d",
type);
20859 SET_LEX_STATE(EXPR_END);
20863#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
20865parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
20867 if (has_delayed_token(p))
20868 dispatch_delayed_token(p, tSTRING_CONTENT);
20871 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
20872 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
20874 if (p->keep_tokens) {
20875 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pend - p->lex.ptok, p->enc);
20876 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
20877 parser_append_tokens(p, str, tHEREDOC_END, line);
20881 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
20886static enum yytokentype
20889 int c, func, indent = 0;
20890 const char *eos, *ptr, *ptr_end;
20900 eos = PARSER_STRING_PTR(here->lastline) + here->offset;
20901 len = here->length;
20902 indent = (func = here->func) & STR_FUNC_INDENT;
20904 if ((c = nextc(p)) == -1) {
20907 if (!has_delayed_token(p)) {
20908 dispatch_scan_event(p, tSTRING_CONTENT);
20910 else if (p->delayed.end_line + 1 == p->ruby_sourceline) {
20911 if ((
len = p->lex.pcur - p->lex.ptok) > 0) {
20912 if (!(func & STR_FUNC_REGEXP)) {
20916 rb_is_usascii_enc(p->enc) &&
20917 enc != rb_utf8_encoding()) {
20918 enc = rb_ascii8bit_encoding();
20921 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20923 dispatch_delayed_token(p, tSTRING_CONTENT);
20926 dispatch_delayed_token(p, tSTRING_CONTENT);
20927 dispatch_scan_event(p, tSTRING_CONTENT);
20931 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20932 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
20935 SET_LEX_STATE(EXPR_END);
20936 return tSTRING_END;
20942 else if (p->heredoc_line_indent == -1) {
20947 p->heredoc_line_indent = 0;
20949 else if (whole_match_p(p, eos,
len, indent)) {
20950 dispatch_heredoc_end(p);
20952 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20954 SET_LEX_STATE(EXPR_END);
20955 return tSTRING_END;
20958 if (!(func & STR_FUNC_EXPAND)) {
20960 ptr = PARSER_STRING_PTR(p->lex.lastline);
20961 ptr_end = p->lex.pend;
20962 if (ptr_end > ptr) {
20963 switch (ptr_end[-1]) {
20965 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
20974 if (p->heredoc_indent > 0) {
20976 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
20978 p->heredoc_line_indent = 0;
20982 parser_str_cat(str, ptr, ptr_end - ptr);
20984 str = rb_parser_encoding_string_new(p, ptr, ptr_end - ptr, enc);
20985 if (!lex_eol_ptr_p(p, ptr_end)) parser_str_cat_cstr(str,
"\n");
20987 if (p->heredoc_indent > 0) {
20990 if (nextc(p) == -1) {
20992 rb_parser_string_free(p, str);
20997 }
while (!whole_match_p(p, eos,
len, indent));
21003 enum yytokentype t = parser_peek_variable_name(p);
21004 if (p->heredoc_line_indent != -1) {
21005 if (p->heredoc_indent > p->heredoc_line_indent) {
21006 p->heredoc_indent = p->heredoc_line_indent;
21008 p->heredoc_line_indent = -1;
21017 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
21018 if (p->eofp)
goto error;
21022 if (c ==
'\\') p->heredoc_line_indent = -1;
21024 str = STR_NEW3(tok(p), toklen(p), enc, func);
21026 set_yylval_str(str);
21028 if (bol) nd_set_fl_newline(yylval.node);
21030 flush_string_content(p, enc, 0);
21031 return tSTRING_CONTENT;
21033 tokadd(p, nextc(p));
21034 if (p->heredoc_indent > 0) {
21039 if ((c = nextc(p)) == -1)
goto error;
21040 }
while (!whole_match_p(p, eos,
len, indent));
21041 str = STR_NEW3(tok(p), toklen(p), enc, func);
21043 dispatch_heredoc_end(p);
21044 heredoc_restore(p, &p->lex.strterm->u.heredoc);
21046 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
21049 s_value = p->s_value;
21051 set_yylval_str(str);
21053 set_parser_s_value(s_value);
21057 if (bol) nd_set_fl_newline(yylval.node);
21059 return tSTRING_CONTENT;
21069 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after '%c' operator", WARN_I(c));
21072 rb_warning1(
"ambiguous first argument; put parentheses or a space even after '%c' operator", WARN_I(c));
21085 switch (id_type(
id)) {
21089# define ERR(mesg) (yyerror0(mesg), Qtrue)
21091# define ERR(mesg) WARN_S(mesg)
21094 return ERR(
"formal argument cannot be a constant");
21096 return ERR(
"formal argument cannot be an instance variable");
21098 return ERR(
"formal argument cannot be a global variable");
21100 return ERR(
"formal argument cannot be a class variable");
21102 return ERR(
"formal argument must be local variable");
21105 shadowing_lvar(p,
id);
21113 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
21122 if (
len > 5 && name[nlen =
len - 5] ==
'-') {
21123 if (rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
21126 if (
len > 4 && name[nlen =
len - 4] ==
'-') {
21127 if (rb_memcicmp(name + nlen + 1,
"dos", 3) == 0)
21129 if (rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
21130 !(
len == 8 && rb_memcicmp(name,
"utf8-mac",
len) == 0))
21138parser_set_encode(
struct parser_params *p,
const char *name)
21144 const char *wrong = 0;
21146 case 'e':
case 'E': wrong =
"external";
break;
21147 case 'i':
case 'I': wrong =
"internal";
break;
21148 case 'f':
case 'F': wrong =
"filesystem";
break;
21149 case 'l':
case 'L': wrong =
"locale";
break;
21151 if (wrong &&
STRCASECMP(name, wrong) == 0)
goto unknown;
21152 idx = rb_enc_find_index(name);
21155 excargs[1] = rb_sprintf(
"unknown encoding name: %s", name);
21157 excargs[0] = rb_eArgError;
21158 excargs[2] = rb_make_backtrace();
21159 rb_ary_unshift(excargs[2], rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
21160 VALUE exc = rb_make_exception(3, excargs);
21161 ruby_show_error_line(p, exc, &(
YYLTYPE)RUBY_INIT_YYLLOC(), p->ruby_sourceline, p->lex.lastline);
21163 rb_ast_free(p->ast);
21168 enc = rb_enc_from_index(idx);
21169 if (!rb_enc_asciicompat(enc)) {
21170 excargs[1] = rb_sprintf(
"%s is not ASCII compatible", rb_enc_name(enc));
21175 if (p->debug_lines) {
21177 for (i = 0; i < p->debug_lines->len; i++) {
21178 rb_parser_enc_associate(p, p->debug_lines->data[i], enc);
21187 if (p->token_seen)
return false;
21188 return (p->line_count == (p->has_shebang ? 2 : 1));
21191typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
21192typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
21194static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
21197magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
21199 if (!comment_at_top(p)) {
21202 parser_set_encode(p, val);
21206parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
21209 case 't':
case 'T':
21214 case 'f':
case 'F':
21220 return parser_invalid_pragma_value(p, name, val);
21224parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
21226 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
21231parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
21233 int b = parser_get_bool(p, name, val);
21234 if (b >= 0) p->token_info_enabled = b;
21238parser_set_frozen_string_literal(
struct parser_params *p,
const char *name,
const char *val)
21242 if (p->token_seen) {
21243 rb_warning1(
"'%s' is ignored after any tokens", WARN_S(name));
21247 b = parser_get_bool(p, name, val);
21250 p->frozen_string_literal = b;
21254parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
21256 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
21257 if (*s ==
' ' || *s ==
'\t')
continue;
21258 if (*s ==
'#')
break;
21259 rb_warning1(
"'%s' is ignored unless in comment-only line", WARN_S(name));
21264 case 'n':
case 'N':
21266 p->ctxt.shareable_constant_value = rb_parser_shareable_none;
21270 case 'l':
case 'L':
21272 p->ctxt.shareable_constant_value = rb_parser_shareable_literal;
21276 case 'e':
case 'E':
21277 if (
STRCASECMP(val,
"experimental_copy") == 0) {
21278 p->ctxt.shareable_constant_value = rb_parser_shareable_copy;
21281 if (
STRCASECMP(val,
"experimental_everything") == 0) {
21282 p->ctxt.shareable_constant_value = rb_parser_shareable_everything;
21287 parser_invalid_pragma_value(p, name, val);
21290# if WARN_PAST_SCOPE
21292parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
21294 int b = parser_get_bool(p, name, val);
21295 if (b >= 0) p->past_scope_enabled = b;
21301 rb_magic_comment_setter_t func;
21302 rb_magic_comment_length_t length;
21306 {
"coding", magic_comment_encoding, parser_encode_length},
21307 {
"encoding", magic_comment_encoding, parser_encode_length},
21308 {
"frozen_string_literal", parser_set_frozen_string_literal},
21309 {
"shareable_constant_value", parser_set_shareable_constant_value},
21310 {
"warn_indent", parser_set_token_info},
21311# if WARN_PAST_SCOPE
21312 {
"warn_past_scope", parser_set_past_scope},
21317magic_comment_marker(
const char *str,
long len)
21324 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
21325 return str + i + 1;
21330 if (i + 1 >=
len)
return 0;
21331 if (str[i+1] !=
'-') {
21334 else if (str[i-1] !=
'-') {
21338 return str + i + 2;
21353 VALUE name = 0, val = 0;
21354 const char *beg, *end, *vbeg, *vend;
21355#define str_copy(_s, _p, _n) ((_s) \
21356 ? (void)(rb_str_resize((_s), (_n)), \
21357 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
21358 : (void)((_s) = STR_NEW((_p), (_n))))
21360 if (
len <= 7)
return FALSE;
21361 if (!!(beg = magic_comment_marker(str,
len))) {
21362 if (!(end = magic_comment_marker(beg, str +
len - beg)))
21366 len = end - beg - 3;
21376 for (;
len > 0 && *str; str++, --
len) {
21378 case '\'':
case '"':
case ':':
case ';':
21383 for (beg = str;
len > 0; str++, --
len) {
21385 case '\'':
case '"':
case ':':
case ';':
21396 if (!indicator)
return FALSE;
21400 do str++;
while (--
len > 0 &&
ISSPACE(*str));
21402 const char *tok_beg = str;
21404 for (vbeg = ++str; --
len > 0 && *str !=
'"'; str++) {
21405 if (*str ==
'\\') {
21417 for (vbeg = str;
len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --
len, str++);
21420 const char *tok_end = str;
21422 while (
len > 0 && (*str ==
';' ||
ISSPACE(*str))) --
len, str++;
21426 if (
len)
return FALSE;
21430 str_copy(name, beg, n);
21431 s = RSTRING_PTR(name);
21432 for (i = 0; i < n; ++i) {
21433 if (s[i] ==
'-') s[i] =
'_';
21436 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
21439 n = (*mc->length)(p, vbeg, n);
21441 str_copy(val, vbeg, n);
21442 p->lex.ptok = tok_beg;
21443 p->lex.pcur = tok_end;
21444 (*mc->func)(p, mc->name, RSTRING_PTR(val));
21447 }
while (++mc < magic_comments + numberof(magic_comments));
21449 str_copy(val, vbeg, vend - vbeg);
21458set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
21461 const char *beg = str;
21465 if (send - str <= 6)
return;
21467 case 'C':
case 'c': str += 6;
continue;
21468 case 'O':
case 'o': str += 5;
continue;
21469 case 'D':
case 'd': str += 4;
continue;
21470 case 'I':
case 'i': str += 3;
continue;
21471 case 'N':
case 'n': str += 2;
continue;
21472 case 'G':
case 'g': str += 1;
continue;
21473 case '=':
case ':':
21487 if (++str >= send)
return;
21490 if (*str !=
'=' && *str !=
':')
return;
21495 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
21496 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
21499 parser_set_encode(p, RSTRING_PTR(s));
21500 rb_str_resize(s, 0);
21506 int c = nextc0(p, FALSE);
21510 if (peek(p,
'!')) p->has_shebang = 1;
21513 if (!lex_eol_n_p(p, 2) &&
21514 (
unsigned char)p->lex.pcur[0] == 0xbb &&
21515 (
unsigned char)p->lex.pcur[1] == 0xbf) {
21516 p->enc = rb_utf8_encoding();
21519 if (p->debug_lines) {
21520 rb_parser_string_set_encoding(p->lex.lastline, p->enc);
21523 p->lex.pbeg = p->lex.pcur;
21532 p->enc = rb_parser_str_get_encoding(p->lex.lastline);
21536#define ambiguous_operator(tok, op, syn) ( \
21537 rb_warning0("'"op"' after local variable or literal is interpreted as binary operator"), \
21538 rb_warning0("even though it seems like "syn""))
21540#define ambiguous_operator(tok, op, syn) \
21541 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
21543#define warn_balanced(tok, op, syn) ((void) \
21544 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
21545 space_seen && !ISSPACE(c) && \
21546 (ambiguous_operator(tok, op, syn), 0)), \
21547 (enum yytokentype)(tok))
21549static enum yytokentype
21552 yyerror0(
"numeric literal without digits");
21553 if (peek(p,
'_')) nextc(p);
21555 return set_number_literal(p, tINTEGER, 0, 10, 0);
21558static enum yytokentype
21561 int is_float, seen_point, seen_e, nondigit;
21564 is_float = seen_point = seen_e = nondigit = 0;
21565 SET_LEX_STATE(EXPR_END);
21567 if (c ==
'-' || c ==
'+') {
21572 int start = toklen(p);
21574 if (c ==
'x' || c ==
'X') {
21580 if (nondigit)
break;
21587 }
while ((c = nextc(p)) != -1);
21591 if (toklen(p) == start) {
21592 return no_digits(p);
21594 else if (nondigit)
goto trailing_uc;
21595 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21596 return set_number_literal(p, tINTEGER, suffix, 16, 0);
21598 if (c ==
'b' || c ==
'B') {
21601 if (c ==
'0' || c ==
'1') {
21604 if (nondigit)
break;
21608 if (c !=
'0' && c !=
'1')
break;
21611 }
while ((c = nextc(p)) != -1);
21615 if (toklen(p) == start) {
21616 return no_digits(p);
21618 else if (nondigit)
goto trailing_uc;
21619 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21620 return set_number_literal(p, tINTEGER, suffix, 2, 0);
21622 if (c ==
'd' || c ==
'D') {
21628 if (nondigit)
break;
21635 }
while ((c = nextc(p)) != -1);
21639 if (toklen(p) == start) {
21640 return no_digits(p);
21642 else if (nondigit)
goto trailing_uc;
21643 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21644 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21650 if (c ==
'o' || c ==
'O') {
21653 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
21655 return no_digits(p);
21658 if (c >=
'0' && c <=
'7') {
21663 if (nondigit)
break;
21667 if (c <
'0' || c >
'9')
break;
21668 if (c >
'7')
goto invalid_octal;
21671 }
while ((c = nextc(p)) != -1);
21672 if (toklen(p) > start) {
21675 if (nondigit)
goto trailing_uc;
21676 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21677 return set_number_literal(p, tINTEGER, suffix, 8, 0);
21684 if (c >
'7' && c <=
'9') {
21686 yyerror0(
"Invalid octal digit");
21688 else if (c ==
'.' || c ==
'e' || c ==
'E') {
21694 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21695 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21701 case '0':
case '1':
case '2':
case '3':
case '4':
21702 case '5':
case '6':
case '7':
case '8':
case '9':
21708 if (nondigit)
goto trailing_uc;
21709 if (seen_point || seen_e) {
21714 if (c0 == -1 || !
ISDIGIT(c0)) {
21720 seen_point = toklen(p);
21739 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
21745 tokadd(p, nondigit);
21749 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
21753 if (nondigit)
goto decode_num;
21767 literal_flush(p, p->lex.pcur - 1);
21768 YYLTYPE loc = RUBY_INIT_YYLLOC();
21769 compile_error(p,
"trailing '%c' in number", nondigit);
21770 parser_show_error_line(p, &loc);
21774 enum yytokentype
type = tFLOAT;
21776 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
21777 if (suffix & NUM_SUFFIX_R) {
21782 if (
errno == ERANGE) {
21783 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
21787 return set_number_literal(p,
type, suffix, 0, seen_point);
21789 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21790 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21793static enum yytokentype
21799 const char *start = p->lex.pcur;
21802 SET_LEX_STATE(EXPR_VALUE);
21807 compile_error(p,
"incomplete character syntax");
21810 if (rb_enc_isspace(c, p->enc)) {
21812 int c2 = escaped_control_code(c);
21814 WARN_SPACE_CHAR(c2,
"?");
21819 SET_LEX_STATE(EXPR_VALUE);
21824 int w = parser_precise_mbclen(p, start);
21825 if (is_identchar(p, start, p->lex.pend, p->enc) &&
21826 !(lex_eol_ptr_n_p(p, start, w) || !is_identchar(p, start + w, p->lex.pend, p->enc))) {
21828 const char *ptr = start;
21830 int n = parser_precise_mbclen(p, ptr);
21831 if (n < 0)
return -1;
21833 }
while (!lex_eol_ptr_p(p, ptr) && is_identchar(p, ptr, p->lex.pend, p->enc));
21834 rb_warn2(
"'?' just followed by '%.*s' is interpreted as" \
21835 " a conditional operator, put a space after '?'",
21836 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
21840 else if (c ==
'\\') {
21841 if (peek(p,
'u')) {
21843 enc = rb_utf8_encoding();
21844 tokadd_utf8(p, &enc, -1, 0, 0);
21846 else if (!
ISASCII(c = peekc(p)) && c != -1) {
21848 if (tokadd_mbchar(p, c) == -1)
return 0;
21856 if (tokadd_mbchar(p, c) == -1)
return 0;
21859 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
21860 set_yylval_str(lit);
21861 SET_LEX_STATE(EXPR_END);
21865static enum yytokentype
21866parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
21869 const char *ptok = p->lex.pcur;
21877 if (c == -1)
goto unterminated;
21880 if (!
ISASCII(c))
goto unknown;
21885 if (rb_enc_isalnum(term, p->enc) || !parser_isascii(p)) {
21888 c = parser_precise_mbclen(p, p->lex.pcur);
21889 if (c < 0)
return 0;
21891 yyerror0(
"unknown type of %string");
21897 compile_error(p,
"unterminated quoted string meets end of file");
21901 if (term ==
'(') term =
')';
21902 else if (term ==
'[') term =
']';
21903 else if (term ==
'{') term =
'}';
21904 else if (term ==
'<') term =
'>';
21907 p->lex.ptok = ptok-1;
21910 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
21911 return tSTRING_BEG;
21914 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
21915 return tSTRING_BEG;
21918 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21922 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21923 return tQWORDS_BEG;
21926 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21927 return tSYMBOLS_BEG;
21930 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21931 return tQSYMBOLS_BEG;
21934 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
21935 return tXSTRING_BEG;
21938 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
21939 return tREGEXP_BEG;
21942 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
21943 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
21947 yyerror0(
"unknown type of %string");
21951 if ((c = nextc(p)) ==
'=') {
21952 set_yylval_id(
'%');
21953 SET_LEX_STATE(EXPR_BEG);
21956 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
21959 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21961 return warn_balanced(
'%',
"%%",
"string literal");
21968 if (tokadd_mbchar(p, c) == -1)
return -1;
21970 }
while (parser_is_identchar(p));
21978 ID ident = TOK_INTERN();
21980 set_yylval_name(ident);
21990 unsigned long n = ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &
len, &overflow);
21991 const unsigned long nth_ref_max =
21992 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
21996 if (overflow || n > nth_ref_max) {
21998 rb_warn1(
"'%s' is too big for a number variable, always nil", WARN_S(tok(p)));
22006static enum yytokentype
22007parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
22009 const char *ptr = p->lex.pcur;
22012 SET_LEX_STATE(EXPR_END);
22013 p->lex.ptok = ptr - 1;
22019 if (parser_is_identchar(p)) {
22051 if (parser_is_identchar(p)) {
22052 if (tokadd_mbchar(p, c) == -1)
return 0;
22067 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
22072 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
22075 case '1':
case '2':
case '3':
22076 case '4':
case '5':
case '6':
22077 case '7':
case '8':
case '9':
22082 }
while (c != -1 &&
ISDIGIT(c));
22084 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
22086 c = parse_numvar(p);
22087 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
22091 if (!parser_is_identchar(p)) {
22092 YYLTYPE loc = RUBY_INIT_YYLLOC();
22094 compile_error(p,
"'$' without identifiers is not allowed as a global variable name");
22098 compile_error(p,
"'$%c' is not allowed as a global variable name", c);
22100 parser_show_error_line(p, &loc);
22101 set_yylval_noname();
22109 if (tokadd_ident(p, c))
return 0;
22110 SET_LEX_STATE(EXPR_END);
22111 if (VALID_SYMNAME_P(tok(p), toklen(p), p->enc, ID_GLOBAL)) {
22115 compile_error(p,
"'%.*s' is not allowed as a global variable name", toklen(p), tok(p));
22116 set_yylval_noname();
22124 if (n < 0)
return false;
22126 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
22129 if (p->max_numparam == ORDINAL_PARAM) {
22130 compile_error(p,
"ordinary parameter is defined");
22133 struct vtable *args = p->lvtbl->args;
22134 if (p->max_numparam < n) {
22135 p->max_numparam = n;
22137 while (n > args->pos) {
22138 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
22143static enum yytokentype
22144parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
22146 const char *ptr = p->lex.pcur;
22147 enum yytokentype result = tIVAR;
22148 register int c = nextc(p);
22151 p->lex.ptok = ptr - 1;
22159 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
22160 if (c == -1 || !parser_is_identchar(p)) {
22162 RUBY_SET_YYLLOC(loc);
22163 if (result == tIVAR) {
22164 compile_error(p,
"'@' without identifiers is not allowed as an instance variable name");
22167 compile_error(p,
"'@@' without identifiers is not allowed as a class variable name");
22169 parser_show_error_line(p, &loc);
22170 set_yylval_noname();
22171 SET_LEX_STATE(EXPR_END);
22176 RUBY_SET_YYLLOC(loc);
22177 if (result == tIVAR) {
22178 compile_error(p,
"'@%c' is not allowed as an instance variable name", c);
22181 compile_error(p,
"'@@%c' is not allowed as a class variable name", c);
22183 parser_show_error_line(p, &loc);
22184 set_yylval_noname();
22185 SET_LEX_STATE(EXPR_END);
22189 if (tokadd_ident(p, c))
return 0;
22194static enum yytokentype
22197 enum yytokentype result;
22198 bool is_ascii =
true;
22199 const enum lex_state_e last_state = p->lex.state;
22201 int enforce_keyword_end = 0;
22204 if (!
ISASCII(c)) is_ascii =
false;
22205 if (tokadd_mbchar(p, c) == -1)
return 0;
22207 }
while (parser_is_identchar(p));
22208 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
22212 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
22213 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
22214 result = tIDENTIFIER;
22218 result = tCONSTANT;
22223 if (IS_LABEL_POSSIBLE()) {
22224 if (IS_LABEL_SUFFIX(0)) {
22225 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
22233 if (peek_end_expect_token_locations(p)) {
22235 int lineno, column;
22236 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
22238 end_pos = peek_end_expect_token_locations(p)->pos;
22239 lineno = end_pos->lineno;
22240 column = end_pos->column;
22243 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
22244 p->ruby_sourceline, beg_pos, lineno, column);
22247 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
22250 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
22251 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
22252 enforce_keyword_end = 1;
22258 if (is_ascii && (!IS_lex_state(EXPR_DOT) || enforce_keyword_end)) {
22262 kw = rb_reserved_word(tok(p), toklen(p));
22264 enum lex_state_e state = p->lex.state;
22265 if (IS_lex_state_for(state, EXPR_FNAME)) {
22266 SET_LEX_STATE(EXPR_ENDFN);
22267 set_yylval_name(rb_intern2(tok(p), toklen(p)));
22270 SET_LEX_STATE(kw->state);
22271 if (IS_lex_state(EXPR_BEG)) {
22272 p->command_start = TRUE;
22274 if (kw->id[0] == keyword_do) {
22275 if (lambda_beginning_p()) {
22276 p->lex.lpar_beg = -1;
22277 return keyword_do_LAMBDA;
22279 if (COND_P())
return keyword_do_cond;
22280 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
22281 return keyword_do_block;
22284 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
22287 if (kw->id[0] != kw->id[1])
22288 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
22294 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
22296 SET_LEX_STATE(EXPR_CMDARG);
22299 SET_LEX_STATE(EXPR_ARG);
22302 else if (p->lex.state == EXPR_FNAME) {
22303 SET_LEX_STATE(EXPR_ENDFN);
22306 SET_LEX_STATE(EXPR_END);
22309 ident = tokenize_ident(p);
22310 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
22311 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
22312 (result == tIDENTIFIER) &&
22313 (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
22314 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
22325 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
22329static enum yytokentype
22333 int space_seen = 0;
22336 enum lex_state_e last_state;
22337 int fallthru = FALSE;
22338 int token_seen = p->token_seen;
22340 if (p->lex.strterm) {
22341 if (strterm_is_heredoc(p->lex.strterm)) {
22343 return here_document(p, &p->lex.strterm->u.heredoc);
22347 return parse_string(p, &p->lex.strterm->u.literal);
22350 cmd_state = p->command_start;
22351 p->command_start = FALSE;
22352 p->token_seen = TRUE;
22357 last_state = p->lex.state;
22358 switch (c = nextc(p)) {
22365 if (p->end_expect_token_locations) {
22366 pop_end_expect_token_locations(p);
22367 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
22372 RUBY_SET_YYLLOC(*p->yylloc);
22373 return END_OF_INPUT;
22379 case ' ':
case '\t':
case '\f':
22382 while ((c = nextc(p))) {
22387 case ' ':
case '\t':
case '\f':
22396 dispatch_scan_event(p, tSP);
22403 p->token_seen = token_seen;
22404 const char *
const pcur = p->lex.pcur, *
const ptok = p->lex.ptok;
22406 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
22407 if (comment_at_top(p)) {
22408 set_file_encoding(p, p->lex.pcur, p->lex.pend);
22411 p->lex.pcur = pcur, p->lex.ptok = ptok;
22413 dispatch_scan_event(p, tCOMMENT);
22417 p->token_seen = token_seen;
22419 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
22420 !IS_lex_state(EXPR_LABELED));
22421 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
22423 dispatch_scan_event(p, tIGNORED_NL);
22426 if (!c && p->ctxt.in_kwarg) {
22427 goto normal_newline;
22432 switch (c = nextc(p)) {
22433 case ' ':
case '\t':
case '\f':
case '\r':
22440 dispatch_scan_event(p, tSP);
22445 if (peek_word_at(p,
"nd", 2, 0))
goto leading_logical;
22448 if (peek_word_at(p,
"r", 1, 0))
goto leading_logical;
22451 if (peek(p,
'|'))
goto leading_logical;
22454 if (peek(p,
'&')) {
22457 dispatch_delayed_token(p, tIGNORED_NL);
22463 dispatch_delayed_token(p, tIGNORED_NL);
22464 if (peek(p,
'.') == (c ==
'&')) {
22466 dispatch_scan_event(p, tSP);
22472 p->ruby_sourceline--;
22473 p->lex.nextline = p->lex.lastline;
22474 set_lastline(p, prevline);
22476 if (c == -1 && space_seen) {
22477 dispatch_scan_event(p, tSP);
22482 RUBY_SET_YYLLOC(*p->yylloc);
22484 goto normal_newline;
22488 p->command_start = TRUE;
22489 SET_LEX_STATE(EXPR_BEG);
22493 if ((c = nextc(p)) ==
'*') {
22494 if ((c = nextc(p)) ==
'=') {
22495 set_yylval_id(idPow);
22496 SET_LEX_STATE(EXPR_BEG);
22500 if (IS_SPCARG(c)) {
22501 rb_warning0(
"'**' interpreted as argument prefix");
22504 else if (IS_BEG()) {
22508 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
22513 set_yylval_id(
'*');
22514 SET_LEX_STATE(EXPR_BEG);
22518 if (IS_SPCARG(c)) {
22519 rb_warning0(
"'*' interpreted as argument prefix");
22522 else if (IS_BEG()) {
22526 c = warn_balanced(
'*',
"*",
"argument prefix");
22529 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22534 if (IS_AFTER_OPERATOR()) {
22535 SET_LEX_STATE(EXPR_ARG);
22541 SET_LEX_STATE(EXPR_BEG);
22555 if (word_match_p(p,
"begin", 5)) {
22556 int first_p = TRUE;
22559 dispatch_scan_event(p, tEMBDOC_BEG);
22563 dispatch_scan_event(p, tEMBDOC);
22568 compile_error(p,
"embedded document meets end of file");
22569 return END_OF_INPUT;
22571 if (c ==
'=' && word_match_p(p,
"end", 3)) {
22577 dispatch_scan_event(p, tEMBDOC_END);
22582 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22583 if ((c = nextc(p)) ==
'=') {
22584 if ((c = nextc(p)) ==
'=') {
22593 else if (c ==
'>') {
22602 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
22604 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
22605 enum yytokentype token = heredoc_identifier(p);
22606 if (token)
return token < 0 ? 0 : token;
22608 if (IS_AFTER_OPERATOR()) {
22609 SET_LEX_STATE(EXPR_ARG);
22612 if (IS_lex_state(EXPR_CLASS))
22613 p->command_start = TRUE;
22614 SET_LEX_STATE(EXPR_BEG);
22617 if ((c = nextc(p)) ==
'>') {
22624 if ((c = nextc(p)) ==
'=') {
22625 set_yylval_id(idLTLT);
22626 SET_LEX_STATE(EXPR_BEG);
22630 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
22636 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22637 if ((c = nextc(p)) ==
'=') {
22641 if ((c = nextc(p)) ==
'=') {
22642 set_yylval_id(idGTGT);
22643 SET_LEX_STATE(EXPR_BEG);
22653 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22654 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
22655 p->lex.ptok = p->lex.pcur-1;
22656 return tSTRING_BEG;
22659 if (IS_lex_state(EXPR_FNAME)) {
22660 SET_LEX_STATE(EXPR_ENDFN);
22663 if (IS_lex_state(EXPR_DOT)) {
22665 SET_LEX_STATE(EXPR_CMDARG);
22667 SET_LEX_STATE(EXPR_ARG);
22670 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
22671 return tXSTRING_BEG;
22674 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22675 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
22676 p->lex.ptok = p->lex.pcur-1;
22677 return tSTRING_BEG;
22680 return parse_qmark(p, space_seen);
22683 if ((c = nextc(p)) ==
'&') {
22684 SET_LEX_STATE(EXPR_BEG);
22685 if ((c = nextc(p)) ==
'=') {
22686 set_yylval_id(idANDOP);
22687 SET_LEX_STATE(EXPR_BEG);
22693 else if (c ==
'=') {
22694 set_yylval_id(
'&');
22695 SET_LEX_STATE(EXPR_BEG);
22698 else if (c ==
'.') {
22699 set_yylval_id(idANDDOT);
22700 SET_LEX_STATE(EXPR_DOT);
22704 if (IS_SPCARG(c)) {
22706 (c = peekc_n(p, 1)) == -1 ||
22707 !(c ==
'\'' || c ==
'"' ||
22708 is_identchar(p, (p->lex.pcur+1), p->lex.pend, p->enc))) {
22709 rb_warning0(
"'&' interpreted as argument prefix");
22713 else if (IS_BEG()) {
22717 c = warn_balanced(
'&',
"&",
"argument prefix");
22719 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22723 if ((c = nextc(p)) ==
'|') {
22724 SET_LEX_STATE(EXPR_BEG);
22725 if ((c = nextc(p)) ==
'=') {
22726 set_yylval_id(idOROP);
22727 SET_LEX_STATE(EXPR_BEG);
22731 if (IS_lex_state_for(last_state, EXPR_BEG)) {
22739 set_yylval_id(
'|');
22740 SET_LEX_STATE(EXPR_BEG);
22743 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
22749 if (IS_AFTER_OPERATOR()) {
22750 SET_LEX_STATE(EXPR_ARG);
22758 set_yylval_id(
'+');
22759 SET_LEX_STATE(EXPR_BEG);
22762 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
22763 SET_LEX_STATE(EXPR_BEG);
22766 return parse_numeric(p,
'+');
22770 SET_LEX_STATE(EXPR_BEG);
22772 return warn_balanced(
'+',
"+",
"unary operator");
22776 if (IS_AFTER_OPERATOR()) {
22777 SET_LEX_STATE(EXPR_ARG);
22785 set_yylval_id(
'-');
22786 SET_LEX_STATE(EXPR_BEG);
22790 SET_LEX_STATE(EXPR_ENDFN);
22791 yylval.num = p->lex.lpar_beg;
22792 p->lex.lpar_beg = p->lex.paren_nest;
22795 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
22796 SET_LEX_STATE(EXPR_BEG);
22799 return tUMINUS_NUM;
22803 SET_LEX_STATE(EXPR_BEG);
22805 return warn_balanced(
'-',
"-",
"unary operator");
22808 int is_beg = IS_BEG();
22809 SET_LEX_STATE(EXPR_BEG);
22810 if ((c = nextc(p)) ==
'.') {
22811 if ((c = nextc(p)) ==
'.') {
22812 if (p->ctxt.in_argdef || IS_LABEL_POSSIBLE()) {
22813 SET_LEX_STATE(EXPR_ENDARG);
22816 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
22817 rb_warn0(
"... at EOL, should be parenthesized?");
22819 return is_beg ? tBDOT3 : tDOT3;
22822 return is_beg ? tBDOT2 : tDOT2;
22826 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
22827 parse_numeric(p,
'.');
22829 yyerror0(
"unexpected fraction part after numeric literal");
22832 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
22834 SET_LEX_STATE(EXPR_END);
22835 p->lex.ptok = p->lex.pcur;
22838 set_yylval_id(
'.');
22839 SET_LEX_STATE(EXPR_DOT);
22843 case '0':
case '1':
case '2':
case '3':
case '4':
22844 case '5':
case '6':
case '7':
case '8':
case '9':
22845 return parse_numeric(p, c);
22850 SET_LEX_STATE(EXPR_ENDFN);
22851 p->lex.paren_nest--;
22857 SET_LEX_STATE(EXPR_END);
22858 p->lex.paren_nest--;
22863 if (!p->lex.brace_nest--)
return tSTRING_DEND;
22866 SET_LEX_STATE(EXPR_END);
22867 p->lex.paren_nest--;
22873 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
22874 SET_LEX_STATE(EXPR_BEG);
22877 set_yylval_id(idCOLON2);
22878 SET_LEX_STATE(EXPR_DOT);
22881 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
22883 c = warn_balanced(
':',
":",
"symbol literal");
22884 SET_LEX_STATE(EXPR_BEG);
22889 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
22892 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
22898 SET_LEX_STATE(EXPR_FNAME);
22903 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22904 return tREGEXP_BEG;
22906 if ((c = nextc(p)) ==
'=') {
22907 set_yylval_id(
'/');
22908 SET_LEX_STATE(EXPR_BEG);
22912 if (IS_SPCARG(c)) {
22913 arg_ambiguous(p,
'/');
22914 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22915 return tREGEXP_BEG;
22917 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22918 return warn_balanced(
'/',
"/",
"regexp literal");
22921 if ((c = nextc(p)) ==
'=') {
22922 set_yylval_id(
'^');
22923 SET_LEX_STATE(EXPR_BEG);
22926 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22931 SET_LEX_STATE(EXPR_BEG);
22932 p->command_start = TRUE;
22936 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22940 if (IS_AFTER_OPERATOR()) {
22941 if ((c = nextc(p)) !=
'@') {
22944 SET_LEX_STATE(EXPR_ARG);
22947 SET_LEX_STATE(EXPR_BEG);
22955 else if (!space_seen) {
22958 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
22961 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
22962 rb_warning0(
"parentheses after method name is interpreted as "
22963 "an argument list, not a decomposed argument");
22965 p->lex.paren_nest++;
22968 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22972 p->lex.paren_nest++;
22973 if (IS_AFTER_OPERATOR()) {
22974 if ((c = nextc(p)) ==
']') {
22975 p->lex.paren_nest--;
22976 SET_LEX_STATE(EXPR_ARG);
22977 if ((c = nextc(p)) ==
'=') {
22984 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
22987 else if (IS_BEG()) {
22990 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
22993 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22999 ++p->lex.brace_nest;
23000 if (lambda_beginning_p())
23002 else if (IS_lex_state(EXPR_LABELED))
23004 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
23006 else if (IS_lex_state(EXPR_ENDARG))
23010 if (c != tLBRACE) {
23011 p->command_start = TRUE;
23012 SET_LEX_STATE(EXPR_BEG);
23015 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
23017 ++p->lex.paren_nest;
23026 dispatch_scan_event(p, tSP);
23029 if (c ==
' ')
return tSP;
23035 return parse_percent(p, space_seen, last_state);
23038 return parse_gvar(p, last_state);
23041 return parse_atmark(p, last_state);
23044 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
23045 p->ruby__end__seen = 1;
23049 dispatch_scan_event(p, k__END__);
23051 return END_OF_INPUT;
23057 if (!parser_is_identchar(p)) {
23058 compile_error(p,
"Invalid char '\\x%02X' in expression", c);
23067 return parse_ident(p, c, cmd_state);
23070static enum yytokentype
23073 enum yytokentype t;
23077 p->yylloc = yylloc;
23079 t = parser_yylex(p);
23081 if (has_delayed_token(p))
23082 dispatch_delayed_token(p, t);
23083 else if (t != END_OF_INPUT)
23084 dispatch_scan_event(p, t);
23089#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
23092node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment)
23094 NODE *n = rb_ast_newnode(p->ast,
type, size, alignment);
23096 rb_node_init(n,
type);
23104 nd_set_line(nd, loc->beg_pos.lineno);
23111 NODE *n = node_new_internal(p,
type, size, alignment);
23113 nd_set_loc(n, loc);
23114 nd_set_node_id(n, parser_get_node_id(p));
23118#define NODE_NEWNODE(node_type, type, loc) (type *)(node_newnode(p, node_type, sizeof(type), RUBY_ALIGNOF(type), loc))
23124 nd_tbl = local_tbl(p);
23126 n->nd_tbl = nd_tbl;
23127 n->nd_body = nd_body;
23128 n->nd_parent = nd_parent;
23129 n->nd_args = nd_args;
23138 n->nd_tbl = nd_tbl;
23139 n->nd_body = nd_body;
23140 n->nd_parent = nd_parent;
23141 n->nd_args = nd_args;
23150 n->nd_mid = nd_mid;
23151 n->nd_defn = nd_defn;
23160 n->nd_recv = nd_recv;
23161 n->nd_mid = nd_mid;
23162 n->nd_defn = nd_defn;
23171 n->nd_head = nd_head;
23172 n->nd_end = (
NODE *)n;
23182 n->nd_body = nd_body;
23183 n->nd_iter = nd_iter;
23184 n->for_keyword_loc = *for_keyword_loc;
23185 n->in_keyword_loc = *in_keyword_loc;
23186 n->do_keyword_loc = *do_keyword_loc;
23187 n->end_keyword_loc = *end_keyword_loc;
23196 n->nd_var = nd_var;
23213 n->nd_body = nd_body;
23222 n->nd_head = nd_head;
23223 n->nd_resq = nd_resq;
23224 n->nd_else = nd_else;
23233 n->nd_args = nd_args;
23234 n->nd_exc_var = nd_exc_var;
23235 n->nd_body = nd_body;
23236 n->nd_next = nd_next;
23245 n->nd_head = nd_head;
23246 n->nd_ensr = nd_ensr;
23255 n->nd_1st = nd_1st;
23256 n->nd_2nd = nd_2nd;
23257 n->operator_loc = *operator_loc;
23266 n->nd_1st = nd_1st;
23267 n->nd_2nd = nd_2nd;
23268 n->operator_loc = *operator_loc;
23277 n->nd_stts = nd_stts;
23278 n->keyword_loc = *keyword_loc;
23285 if (nd_head) no_blockarg(p, nd_head);
23288 n->nd_head = nd_head;
23289 n->keyword_loc = *keyword_loc;
23290 n->lparen_loc = *lparen_loc;
23291 n->rparen_loc = *rparen_loc;
23300 n->nd_cond = nd_cond;
23301 n->nd_body = nd_body;
23302 n->nd_else = nd_else;
23303 n->if_keyword_loc = *if_keyword_loc;
23304 n->then_keyword_loc = *then_keyword_loc;
23305 n->end_keyword_loc = *end_keyword_loc;
23314 n->nd_cond = nd_cond;
23315 n->nd_body = nd_body;
23316 n->nd_else = nd_else;
23317 n->keyword_loc = *keyword_loc;
23318 n->then_keyword_loc = *then_keyword_loc;
23319 n->end_keyword_loc = *end_keyword_loc;
23328 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
23330 RNODE_SCOPE(scope)->nd_parent = &n->node;
23331 n->nd_cpath = nd_cpath;
23332 n->nd_body = scope;
23333 n->nd_super = nd_super;
23334 n->class_keyword_loc = *class_keyword_loc;
23335 n->inheritance_operator_loc = *inheritance_operator_loc;
23336 n->end_keyword_loc = *end_keyword_loc;
23345 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
23347 RNODE_SCOPE(scope)->nd_parent = &n->node;
23348 n->nd_recv = nd_recv;
23349 n->nd_body = scope;
23350 n->class_keyword_loc = *class_keyword_loc;
23351 n->operator_loc = *operator_loc;
23352 n->end_keyword_loc = *end_keyword_loc;
23361 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
23363 RNODE_SCOPE(scope)->nd_parent = &n->node;
23364 n->nd_cpath = nd_cpath;
23365 n->nd_body = scope;
23366 n->module_keyword_loc = *module_keyword_loc;
23367 n->end_keyword_loc = *end_keyword_loc;
23376 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
23378 RNODE_SCOPE(scope)->nd_parent = &n->node;
23379 n->nd_body = scope;
23389 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
23390 YYLTYPE lambda_loc = code_loc_gen(operator_loc, closing_loc);
23392 RNODE_SCOPE(scope)->nd_parent = &n->node;
23393 n->nd_body = scope;
23394 n->operator_loc = *operator_loc;
23395 n->opening_loc = *opening_loc;
23396 n->closing_loc = *closing_loc;
23405 n->nd_head = nd_head;
23406 n->nd_body = nd_body;
23407 n->case_keyword_loc = *case_keyword_loc;
23408 n->end_keyword_loc = *end_keyword_loc;
23418 n->nd_body = nd_body;
23419 n->case_keyword_loc = *case_keyword_loc;
23420 n->end_keyword_loc = *end_keyword_loc;
23429 n->nd_head = nd_head;
23430 n->nd_body = nd_body;
23431 n->case_keyword_loc = *case_keyword_loc;
23432 n->end_keyword_loc = *end_keyword_loc;
23441 n->nd_head = nd_head;
23442 n->nd_body = nd_body;
23443 n->nd_next = nd_next;
23444 n->keyword_loc = *keyword_loc;
23445 n->then_keyword_loc = *then_keyword_loc;
23454 n->nd_head = nd_head;
23455 n->nd_body = nd_body;
23456 n->nd_next = nd_next;
23457 n->in_keyword_loc = *in_keyword_loc;
23458 n->then_keyword_loc = *then_keyword_loc;
23459 n->operator_loc = *operator_loc;
23468 n->nd_cond = nd_cond;
23469 n->nd_body = nd_body;
23470 n->nd_state = nd_state;
23471 n->keyword_loc = *keyword_loc;
23472 n->closing_loc = *closing_loc;
23481 n->nd_cond = nd_cond;
23482 n->nd_body = nd_body;
23483 n->nd_state = nd_state;
23484 n->keyword_loc = *keyword_loc;
23485 n->closing_loc = *closing_loc;
23494 n->nd_head = nd_head;
23495 n->nd_mid = nd_mid;
23496 n->delimiter_loc = *delimiter_loc;
23497 n->name_loc = *name_loc;
23506 n->nd_mid = nd_mid;
23507 n->delimiter_loc = *delimiter_loc;
23508 n->name_loc = *name_loc;
23517 n->nd_beg = nd_beg;
23518 n->nd_end = nd_end;
23519 n->operator_loc = *operator_loc;
23528 n->nd_beg = nd_beg;
23529 n->nd_end = nd_end;
23530 n->operator_loc = *operator_loc;
23573 n->nd_args = nd_args;
23574 n->keyword_loc = *keyword_loc;
23575 n->lparen_loc = *lparen_loc;
23576 n->rparen_loc = *rparen_loc;
23593 n->nd_recv = nd_recv;
23594 n->nd_value = nd_value;
23604 n->nd_recv = nd_recv;
23605 n->nd_value = nd_value;
23613 return rb_node_list_new2(p, nd_head, 1, 0, loc);
23620 n->nd_head = nd_head;
23621 n->as.nd_alen = nd_alen;
23622 n->nd_next = nd_next;
23639 n->nd_head = nd_head;
23649 n->nd_head = nd_head;
23651 n->nd_args = nd_args;
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_vid = nd_vid;
23681 n->nd_value = nd_value;
23690 n->nd_vid = nd_vid;
23691 n->nd_value = nd_value;
23700 n->nd_vid = nd_vid;
23701 n->nd_value = nd_value;
23710 n->nd_recv = nd_recv;
23711 n->nd_mid = nd_mid;
23712 n->nd_index = index;
23713 n->nd_rvalue = rvalue;
23714 n->call_operator_loc = *call_operator_loc;
23715 n->opening_loc = *opening_loc;
23716 n->closing_loc = *closing_loc;
23717 n->binary_operator_loc = *binary_operator_loc;
23726 n->nd_recv = nd_recv;
23727 n->nd_value = nd_value;
23728 n->nd_vid = nd_vid;
23729 n->nd_mid = nd_mid;
23730 n->nd_aid = nd_aid;
23731 n->call_operator_loc = *call_operator_loc;
23732 n->message_loc = *message_loc;
23733 n->binary_operator_loc = *binary_operator_loc;
23742 n->nd_head = nd_head;
23743 n->nd_value = nd_value;
23752 n->nd_head = nd_head;
23753 n->nd_value = nd_value;
23762 n->nd_vid = nd_vid;
23771 n->nd_vid = nd_vid;
23780 n->nd_vid = nd_vid;
23789 n->nd_vid = nd_vid;
23798 n->nd_vid = nd_vid;
23807 n->nd_vid = nd_vid;
23816 n->nd_nth = nd_nth;
23825 n->nd_nth = nd_nth;
23852rb_node_rational_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
const YYLTYPE *loc)
23858 n->seen_point = seen_point;
23864rb_node_imaginary_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
enum rb_numeric_type numeric_type,
const YYLTYPE *loc)
23870 n->seen_point = seen_point;
23871 n->type = numeric_type;
23880 n->string = string;
23890 n->string = string;
23891 n->as.nd_alen = nd_alen;
23900 return rb_node_dstr_new0(p,
string, 1, 0, loc);
23907 n->string = string;
23916 n->string = string;
23917 n->as.nd_alen = nd_alen;
23927 n->string = rb_str_to_parser_string(p, str);
23936 n->string = string;
23937 n->as.nd_alen = nd_alen;
23947 n->nd_body = nd_body;
23948 n->opening_loc = *opening_loc;
23949 n->closing_loc = *closing_loc;
23958 n->string = string;
23959 n->options = options & RE_OPTION_MASK;
23960 n->opening_loc = *opening_loc;
23961 n->content_loc = *content_loc;
23962 n->closing_loc = *closing_loc;
23971 n->nd_recv = nd_recv;
23972 n->nd_mid = nd_mid;
23973 n->nd_args = nd_args;
23982 n->nd_recv = nd_recv;
23983 n->nd_mid = nd_mid;
23984 n->nd_args = nd_args;
23993 n->nd_mid = nd_mid;
23994 n->nd_args = nd_args;
24003 n->nd_recv = nd_recv;
24004 n->nd_mid = nd_mid;
24005 n->nd_args = nd_args;
24014 n->nd_mid = nd_mid;
24023 n->nd_body = nd_body;
24041 n->nd_pid = nd_pid;
24042 n->nd_plen = nd_plen;
24052 n->nd_body = nd_body;
24062 n->nd_body = nd_body;
24072 n->nd_1st = nd_1st;
24073 n->nd_2nd = nd_2nd;
24082 n->nd_head = nd_head;
24083 n->nd_body = nd_body;
24092 n->nd_head = nd_head;
24093 n->nd_body = nd_body;
24102 n->nd_head = nd_head;
24103 n->operator_loc = *operator_loc;
24114 n->nd_body = nd_body;
24115 n->operator_loc = *operator_loc;
24124 n->nd_1st = nd_1st;
24125 n->nd_2nd = nd_2nd;
24126 n->keyword_loc = *keyword_loc;
24135 n->nd_alias = nd_alias;
24136 n->nd_orig = nd_orig;
24137 n->keyword_loc = *keyword_loc;
24146 n->nd_undefs = rb_parser_ary_new_capa_for_node(p, 1);
24147 n->keyword_loc = NULL_LOC;
24148 rb_parser_ary_push_node(p, n->nd_undefs, nd_undef);
24165 n->nd_head = nd_head;
24166 n->keyword_loc = *keyword_loc;
24175 n->nd_body = nd_body;
24176 n->keyword_loc = *keyword_loc;
24177 n->opening_loc = *opening_loc;
24178 n->closing_loc = *closing_loc;
24187 n->nd_recv = nd_recv;
24188 n->nd_mid = nd_mid;
24189 n->nd_args = nd_args;
24199 n->pre_args = pre_args;
24200 n->rest_arg = rest_arg;
24201 n->post_args = post_args;
24210 n->nd_pconst = nd_pconst;
24211 n->nd_pkwargs = nd_pkwargs;
24212 n->nd_pkwrestarg = nd_pkwrestarg;
24222 n->pre_rest_arg = pre_rest_arg;
24224 n->post_rest_arg = post_rest_arg;
24241 n->path = rb_str_to_parser_string(p, str);
24256rb_node_cdecl_new(
struct parser_params *p,
ID nd_vid,
NODE *nd_value,
NODE *nd_else,
enum rb_parser_shareability shareability,
const YYLTYPE *loc)
24259 n->nd_vid = nd_vid;
24260 n->nd_value = nd_value;
24261 n->nd_else = nd_else;
24262 n->shareability = shareability;
24268rb_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)
24271 n->nd_head = nd_head;
24272 n->nd_value = nd_value;
24273 n->nd_aid = nd_aid;
24274 n->shareability = shareability;
24291 n->nd_stts = nd_stts;
24293 n->keyword_loc = *keyword_loc;
24302 n->nd_stts = nd_stts;
24304 n->keyword_loc = *keyword_loc;
24314 n->keyword_loc = *keyword_loc;
24323 n->save.numparam_save = 0;
24324 n->save.max_numparam = 0;
24325 n->save.ctxt = p->ctxt;
24335 n->save.numparam_save = numparam_push(p);
24336 n->save.max_numparam = p->max_numparam;
24341static enum node_type
24342nodetype(
NODE *node)
24344 return (
enum node_type)nd_type(node);
24348nodeline(
NODE *node)
24350 return nd_line(node);
24355newline_node(
NODE *node)
24358 node = remove_begin(node);
24359 nd_set_fl_newline(node);
24369 nd_set_line(node, nd_line(orig));
24375 NODE *end, *h = head, *nd;
24377 if (tail == 0)
return head;
24379 if (h == 0)
return tail;
24380 switch (nd_type(h)) {
24382 h = end = NEW_BLOCK(head, &head->nd_loc);
24386 end = RNODE_BLOCK(h)->nd_end;
24390 nd = RNODE_BLOCK(end)->nd_head;
24391 switch (nd_type(nd)) {
24397 rb_warning0L(nd_line(tail),
"statement not reached");
24404 if (!nd_type_p(tail, NODE_BLOCK)) {
24405 tail = NEW_BLOCK(tail, &tail->nd_loc);
24407 RNODE_BLOCK(end)->nd_next = tail;
24408 RNODE_BLOCK(h)->nd_end = RNODE_BLOCK(tail)->nd_end;
24409 nd_set_last_loc(head, nd_last_loc(tail));
24419 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
24420 if (RNODE_LIST(list)->nd_next) {
24421 last = RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end;
24427 RNODE_LIST(list)->as.nd_alen += 1;
24428 RNODE_LIST(last)->nd_next = NEW_LIST(item, &item->nd_loc);
24429 RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end = RNODE_LIST(last)->nd_next;
24431 nd_set_last_loc(list, nd_last_loc(item));
24438list_concat(
NODE *head,
NODE *tail)
24442 if (RNODE_LIST(head)->nd_next) {
24443 last = RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end;
24449 RNODE_LIST(head)->as.nd_alen += RNODE_LIST(tail)->as.nd_alen;
24450 RNODE_LIST(last)->nd_next = tail;
24451 if (RNODE_LIST(tail)->nd_next) {
24452 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = RNODE_LIST(RNODE_LIST(tail)->nd_next)->as.nd_end;
24455 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = tail;
24458 nd_set_last_loc(head, nd_last_loc(tail));
24466 if (!tail)
return 1;
24467 if (!rb_parser_enc_compatible(p, head, tail)) {
24468 compile_error(p,
"string literal encodings differ (%s / %s)",
24469 rb_enc_name(rb_parser_str_get_encoding(head)),
24470 rb_enc_name(rb_parser_str_get_encoding(tail)));
24471 rb_parser_str_resize(p, head, 0);
24472 rb_parser_str_resize(p, tail, 0);
24475 rb_parser_str_buf_append(p, head, tail);
24482 if (htype != NODE_DSTR)
return NULL;
24483 if (RNODE_DSTR(head)->nd_next) {
24484 head = RNODE_LIST(RNODE_LIST(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_head;
24485 if (!head || !nd_type_p(head, NODE_STR))
return NULL;
24497 if (!orig)
return NULL;
24498 copy = rb_parser_string_new(p, PARSER_STRING_PTR(orig), PARSER_STRING_LEN(orig));
24499 copy->coderange = orig->coderange;
24500 copy->enc = orig->enc;
24509 enum node_type htype;
24512 if (!head)
return tail;
24513 if (!tail)
return head;
24515 htype = nd_type(head);
24516 if (htype == NODE_EVSTR) {
24517 head = new_dstr(p, head, loc);
24520 if (p->heredoc_indent > 0) {
24523 head = str2dstr(p, head);
24525 return list_append(p, head, tail);
24530 switch (nd_type(tail)) {
24532 if ((lit = string_literal_head(p, htype, head)) !=
false) {
24536 lit = RNODE_DSTR(head)->string;
24538 if (htype == NODE_STR) {
24539 if (!literal_concat0(p, lit, RNODE_STR(tail)->
string)) {
24541 rb_discard_node(p, head);
24542 rb_discard_node(p, tail);
24545 rb_discard_node(p, tail);
24548 list_append(p, head, tail);
24553 if (htype == NODE_STR) {
24554 if (!literal_concat0(p, RNODE_STR(head)->
string, RNODE_DSTR(tail)->
string))
24556 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24557 RNODE_DSTR(tail)->string = RNODE_STR(head)->string;
24558 RNODE_STR(head)->string = NULL;
24559 rb_discard_node(p, head);
24562 else if (!RNODE_DSTR(tail)->
string) {
24564 RNODE_DSTR(head)->as.nd_alen += RNODE_DSTR(tail)->as.nd_alen - 1;
24565 if (!RNODE_DSTR(head)->nd_next) {
24566 RNODE_DSTR(head)->nd_next = RNODE_DSTR(tail)->nd_next;
24568 else if (RNODE_DSTR(tail)->nd_next) {
24569 RNODE_DSTR(RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_next = RNODE_DSTR(tail)->nd_next;
24570 RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end = RNODE_DSTR(RNODE_DSTR(tail)->nd_next)->as.nd_end;
24572 rb_discard_node(p, tail);
24574 else if ((lit = string_literal_head(p, htype, head)) !=
false) {
24575 if (!literal_concat0(p, lit, RNODE_DSTR(tail)->
string))
24577 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24578 RNODE_DSTR(tail)->string = 0;
24582 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));
24583 RNODE_DSTR(tail)->string = 0;
24588 if (htype == NODE_STR) {
24589 head = str2dstr(p, head);
24590 RNODE_DSTR(head)->as.nd_alen = 1;
24592 list_append(p, head, tail);
24599nd_copy_flag(
NODE *new_node,
NODE *old_node)
24601 if (nd_fl_newline(old_node)) nd_set_fl_newline(new_node);
24602 nd_set_line(new_node, nd_line(old_node));
24603 new_node->nd_loc = old_node->nd_loc;
24604 new_node->node_id = old_node->node_id;
24611 nd_copy_flag(new_node, node);
24612 RNODE_DSTR(new_node)->string = RNODE_STR(node)->string;
24613 RNODE_DSTR(new_node)->as.nd_alen = 0;
24614 RNODE_DSTR(new_node)->nd_next = 0;
24615 RNODE_STR(node)->string = 0;
24624 nd_copy_flag(new_node, node);
24625 RNODE_REGX(new_node)->string = RNODE_STR(node)->string;
24626 RNODE_REGX(new_node)->options = options;
24627 nd_set_loc(new_node, loc);
24628 RNODE_REGX(new_node)->opening_loc = *opening_loc;
24629 RNODE_REGX(new_node)->content_loc = *content_loc;
24630 RNODE_REGX(new_node)->closing_loc = *closing_loc;
24631 RNODE_STR(node)->string = 0;
24639 if (nd_type_p(node, NODE_EVSTR)) {
24640 node = new_dstr(p, node, &node->nd_loc);
24651 switch (nd_type(node)) {
24653 return str2dstr(p, node);
24660 return NEW_EVSTR(head, loc, opening_loc, closing_loc);
24666 NODE *dstr = NEW_DSTR(STRING_NEW0(), loc);
24667 return list_append(p, dstr, node);
24675 value_expr(p, recv);
24676 value_expr(p, arg1);
24677 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
24678 nd_set_line(expr, op_loc->beg_pos.lineno);
24686 value_expr(p, recv);
24687 opcall = NEW_OPCALL(recv,
id, 0, loc);
24688 nd_set_line(opcall, op_loc->beg_pos.lineno);
24695 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
24696 nd_set_line(qcall, op_loc->beg_pos.lineno);
24704 if (block) block_dup_check(p, args, block);
24705 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
24706 if (block) ret = method_add_block(p, ret, block, loc);
24716 body->opening_loc = *opening_loc;
24717 body->closing_loc = *closing_loc;
24721#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? RNODE_ONCE(node)->nd_body : node)
24724last_expr_once_body(
NODE *node)
24726 if (!node)
return 0;
24727 return nd_once_body(node);
24734 int line = op_loc->beg_pos.lineno;
24736 value_expr(p, node1);
24737 value_expr(p, node2);
24739 if ((n = last_expr_once_body(node1)) != 0) {
24740 switch (nd_type(n)) {
24743 NODE *match = NEW_MATCH2(node1, node2, loc);
24744 nd_set_line(match, line);
24750 const VALUE lit = rb_node_regx_string_val(n);
24752 NODE *match = NEW_MATCH2(node1, node2, loc);
24753 RNODE_MATCH2(match)->nd_args = reg_named_capture_assign(p, lit, loc, assignable);
24754 nd_set_line(match, line);
24761 if ((n = last_expr_once_body(node2)) != 0) {
24764 switch (nd_type(n)) {
24766 match3 = NEW_MATCH3(node2, node1, loc);
24771 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
24772 nd_set_line(n, line);
24776# if WARN_PAST_SCOPE
24780 struct vtable *past = p->lvtbl->past;
24782 if (vtable_included(past,
id))
return 1;
24793 NODE *outer = local->numparam.outer;
24794 NODE *inner = local->numparam.inner;
24795 if (outer || inner) {
24796 NODE *used = outer ? outer : inner;
24797 compile_error(p,
"numbered parameter is already used in %s block\n"
24798 "%s:%d: numbered parameter is already used here",
24799 outer ?
"outer" :
"inner",
24800 p->ruby_sourcefile, nd_line(used));
24801 parser_show_error_line(p, &used->nd_loc);
24810 NODE *numparam = p->lvtbl->numparam.current;
24812 compile_error(p,
"'it' is not allowed when a numbered parameter is already used\n"
24813 "%s:%d: numbered parameter is already used here",
24814 p->ruby_sourcefile, nd_line(numparam));
24815 parser_show_error_line(p, &numparam->nd_loc);
24824 NODE *it = p->lvtbl->it;
24826 compile_error(p,
"numbered parameters are not allowed when 'it' is already used\n"
24827 "%s:%d: 'it' is already used here",
24828 p->ruby_sourcefile, nd_line(it));
24829 parser_show_error_line(p, &it->nd_loc);
24842 return NEW_SELF(loc);
24844 return NEW_NIL(loc);
24846 return NEW_TRUE(loc);
24847 case keyword_false:
24848 return NEW_FALSE(loc);
24849 case keyword__FILE__:
24851 VALUE file = p->ruby_sourcefile_string;
24854 node = NEW_FILE(file, loc);
24857 case keyword__LINE__:
24858 return NEW_LINE(loc);
24859 case keyword__ENCODING__:
24860 return NEW_ENCODING(loc);
24863 switch (id_type(
id)) {
24865 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
24866 if (NUMPARAM_ID_P(
id) && (numparam_nested_p(p) || it_used_p(p)))
return 0;
24867 if (vidp) *vidp |= LVAR_USED;
24868 node = NEW_DVAR(
id, loc);
24871 if (local_id_ref(p,
id, &vidp)) {
24872 if (vidp) *vidp |= LVAR_USED;
24873 node = NEW_LVAR(
id, loc);
24876 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
24877 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
24878 if (numparam_nested_p(p) || it_used_p(p))
return 0;
24879 node = NEW_DVAR(
id, loc);
24881 if (!local->numparam.current) local->numparam.current = node;
24884# if WARN_PAST_SCOPE
24886 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
24890 if (dyna_in_block(p) &&
id == idIt && !(DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev))) {
24891 if (numparam_used_p(p))
return 0;
24892 if (p->max_numparam == ORDINAL_PARAM) {
24893 compile_error(p,
"ordinary parameter is defined");
24897 p->it_id = idItImplicit;
24898 vtable_add(p->lvtbl->args, p->it_id);
24900 NODE *node = NEW_DVAR(p->it_id, loc);
24901 if (!p->lvtbl->it) p->lvtbl->it = node;
24904 return NEW_VCALL(
id, loc);
24906 return NEW_GVAR(
id, loc);
24908 return NEW_IVAR(
id, loc);
24910 return NEW_CONST(
id, loc);
24912 return NEW_CVAR(
id, loc);
24914 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24922 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24924 while (opts->nd_next) {
24925 opts = opts->nd_next;
24926 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24928 opts->nd_next = opt;
24938 opt_arg_append(RNODE_OPT_ARG(kwlist), RNODE_OPT_ARG(kw));
24946 int had_trailing_semicolon = p->ctxt.has_trailing_semicolon;
24947 p->ctxt.has_trailing_semicolon = 0;
24951 if (nd_type_p(n, NODE_BEGIN)) {
24952 n = RNODE_BEGIN(n)->nd_body;
24954 else if (nd_type_p(n, NODE_BLOCK) && RNODE_BLOCK(n)->nd_end == n) {
24955 n = RNODE_BLOCK(n)->nd_head;
24962 if (had_trailing_semicolon && !nd_type_p(expr, NODE_BLOCK)) {
24963 NODE *block = NEW_BLOCK(expr, loc);
24964 return NEW_DEFINED(block, loc, keyword_loc);
24967 return NEW_DEFINED(n, loc, keyword_loc);
24975 if (rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_BROKEN) {
24976 yyerror1(loc,
"invalid symbol");
24980 lit = rb_str_new_parser_string(str);
24982 return NEW_SYM(lit, loc);
24988 enum node_type
type = nd_type(symbol);
24991 nd_set_type(symbol, NODE_DSYM);
24994 symbol = str_to_sym_node(p, symbol, &RNODE(symbol)->nd_loc);
24997 compile_error(p,
"unexpected node as symbol: %s", parser_node_name(
type));
24999 return list_append(p, symbols, symbol);
25005 if (dreg->string) {
25006 reg_fragment_setenc(p, dreg->string, options);
25008 for (
struct RNode_LIST *list = dreg->nd_next; list; list = RNODE_LIST(list->nd_next)) {
25009 NODE *frag = list->nd_head;
25010 if (nd_type_p(frag, NODE_STR)) {
25011 reg_fragment_setenc(p, RNODE_STR(frag)->
string, options);
25013 else if (nd_type_p(frag, NODE_DSTR)) {
25014 dregex_fragment_setenc(p, RNODE_DSTR(frag), options);
25025 reg_compile(p, str, options);
25026 node = NEW_REGX(str, options, loc, opening_loc, content_loc, closing_loc);
25029 switch (nd_type(node)) {
25033 reg_compile(p, RNODE_STR(node)->
string, options);
25034 node = str2regx(p, node, options, loc, opening_loc, content_loc, closing_loc);
25038 node = NEW_DSTR0(STRING_NEW0(), 1, NEW_LIST(node, loc), loc);
25041 nd_set_type(node, NODE_DREGX);
25042 nd_set_loc(node, loc);
25044 dreg->as.nd_cflag = options & RE_OPTION_MASK;
25045 if (dreg->nd_next) {
25046 dregex_fragment_setenc(p, dreg, options);
25048 if (options & RE_OPTION_ONCE) {
25049 node = NEW_ONCE(node, loc);
25060 return NEW_KW_ARG((k), loc);
25067 NODE *xstr = NEW_XSTR(STRING_NEW0(), loc);
25070 switch (nd_type(node)) {
25072 nd_set_type(node, NODE_XSTR);
25073 nd_set_loc(node, loc);
25076 nd_set_type(node, NODE_DXSTR);
25077 nd_set_loc(node, loc);
25080 node = NEW_DXSTR(0, 1, NEW_LIST(node, loc), loc);
25092static int nd_type_st_key_enable_p(
NODE *node);
25098 if (!arg || !p->case_labels)
return;
25099 if (!nd_type_st_key_enable_p(arg))
return;
25101 if (p->case_labels == CHECK_LITERAL_WHEN) {
25102 p->case_labels = st_init_table(&literal_type);
25106 if (st_lookup(p->case_labels, (st_data_t)arg, &line)) {
25107 rb_warning2(
"'when' clause on line %d duplicates 'when' clause on line %d and is ignored",
25108 WARN_I((
int)nd_line(arg)), WARN_I((
int)line));
25112 st_insert(p->case_labels, (st_data_t)arg, (st_data_t)p->ruby_sourceline);
25119 if (is_notop_id(
id)) {
25120 switch (
id & ID_SCOPE_MASK) {
25121 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
25124 if (dyna_in_block(p)) {
25125 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
25127 if (local_id(p,
id))
return 1;
25132 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
25137static inline enum lex_state_e
25138parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
25141 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
25143 return p->lex.state = ls;
25150 VALUE mesg = p->debug_buffer;
25152 if (!
NIL_P(mesg) && RSTRING_LEN(mesg)) {
25153 p->debug_buffer =
Qnil;
25154 rb_io_puts(1, &mesg, out);
25156 if (!
NIL_P(str) && RSTRING_LEN(str)) {
25157 rb_io_write(p->debug_output, str);
25161static const char rb_parser_lex_state_names[][8] = {
25162 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
25163 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
25164 "LABEL",
"LABELED",
"FITEM",
25171 unsigned int mask = 1;
25172 static const char none[] =
"NONE";
25174 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
25175 if ((
unsigned)state & mask) {
25190rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
25191 enum lex_state_e to,
int line)
25195 append_lex_state_name(p, from, mesg);
25197 append_lex_state_name(p, to, mesg);
25198 rb_str_catf(mesg,
" at line %d\n", line);
25199 flush_debug_buffer(p, p->debug_output, mesg);
25204rb_parser_lex_state_name(
struct parser_params *p,
enum lex_state_e state)
25206 return rb_str_to_interned_str(append_lex_state_name(p, state,
rb_str_new(0, 0)));
25216 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
25217 for (; mask && !(stack & mask); mask >>= 1)
continue;
25218 for (; mask; mask >>= 1)
rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
25223rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
25224 const char *name,
int line)
25226 VALUE mesg = rb_sprintf(
"%s: ", name);
25227 append_bitstack_value(p, stack, mesg);
25228 rb_str_catf(mesg,
" at line %d\n", line);
25229 flush_debug_buffer(p, p->debug_output, mesg);
25233rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
25239 rb_str_vcatf(mesg, fmt, ap);
25241 yyerror0(RSTRING_PTR(mesg));
25245 append_lex_state_name(p, p->lex.state, mesg);
25246 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
25247 rb_str_resize(mesg, 0);
25248 append_bitstack_value(p, p->cond_stack, mesg);
25249 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
25250 rb_str_resize(mesg, 0);
25251 append_bitstack_value(p, p->cmdarg_stack, mesg);
25252 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
25253 if (p->debug_output == rb_ractor_stdout())
25254 p->debug_output = rb_ractor_stderr();
25259rb_parser_set_pos(
YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
25261 yylloc->beg_pos.lineno = sourceline;
25262 yylloc->beg_pos.column = beg_pos;
25263 yylloc->end_pos.lineno = sourceline;
25264 yylloc->end_pos.column = end_pos;
25271 int sourceline = here->sourceline;
25272 int beg_pos = (int)here->offset - here->quote
25273 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
25274 int end_pos = (int)here->offset + here->length + here->quote;
25276 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25282 yylloc->beg_pos.lineno = p->delayed.beg_line;
25283 yylloc->beg_pos.column = p->delayed.beg_col;
25284 yylloc->end_pos.lineno = p->delayed.end_line;
25285 yylloc->end_pos.column = p->delayed.end_col;
25293 int sourceline = p->ruby_sourceline;
25294 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
25295 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
25296 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25302 yylloc->end_pos = yylloc->beg_pos;
25310 int sourceline = p->ruby_sourceline;
25311 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
25312 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
25313 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25319 int sourceline = p->ruby_sourceline;
25320 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
25321 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
25322 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25329 if (!
id)
return -1;
25332 *err =
"Can't change the value of self";
25335 *err =
"Can't assign to nil";
25338 *err =
"Can't assign to true";
25340 case keyword_false:
25341 *err =
"Can't assign to false";
25343 case keyword__FILE__:
25344 *err =
"Can't assign to __FILE__";
25346 case keyword__LINE__:
25347 *err =
"Can't assign to __LINE__";
25349 case keyword__ENCODING__:
25350 *err =
"Can't assign to __ENCODING__";
25353 switch (id_type(
id)) {
25355 if (dyna_in_block(p)) {
25356 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
25357 compile_error(p,
"Can't assign to numbered parameter _%d",
25358 NUMPARAM_ID_TO_IDX(
id));
25361 if (dvar_curr(p,
id))
return NODE_DASGN;
25362 if (dvar_defined(p,
id))
return NODE_DASGN;
25363 if (local_id(p,
id))
return NODE_LASGN;
25368 if (!local_id(p,
id)) local_var(p,
id);
25372 case ID_GLOBAL:
return NODE_GASGN;
25373 case ID_INSTANCE:
return NODE_IASGN;
25375 if (!p->ctxt.in_def)
return NODE_CDECL;
25376 *err =
"dynamic constant assignment";
25378 case ID_CLASS:
return NODE_CVASGN;
25380 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
25388 const char *err = 0;
25389 int node_type = assignable0(p,
id, &err);
25390 switch (node_type) {
25391 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
25392 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
25393 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
25394 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
25395 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, p->ctxt.shareable_constant_value, loc);
25396 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
25400 if (err) yyerror1(loc, err);
25402 if (err) set_value(assign_error(p, err, p->s_lvalue));
25404 return NEW_ERROR(loc);
25411 if (name == idUScore)
return 1;
25412 if (!is_local_id(name))
return 0;
25413 s = rb_id2str(name);
25415 return RSTRING_PTR(s)[0] ==
'_';
25421 if (dyna_in_block(p)) {
25422 if (dvar_curr(p, name)) {
25423 if (is_private_local_id(p, name))
return 1;
25424 yyerror0(
"duplicated argument name");
25426 else if (dvar_defined(p, name) || local_id(p, name)) {
25427 vtable_add(p->lvtbl->vars, name);
25428 if (p->lvtbl->used) {
25429 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
25435 if (local_id(p, name)) {
25436 if (is_private_local_id(p, name))
return 1;
25437 yyerror0(
"duplicated argument name");
25446 shadowing_lvar_0(p, name);
25454 if (!is_local_id(name)) {
25455 compile_error(p,
"invalid local variable - %"PRIsVALUE,
25459 if (!shadowing_lvar_0(p, name))
return;
25462 if (dvar_defined_ref(p, name, &vidp)) {
25463 if (vidp) *vidp |= LVAR_USED;
25470 NODE *block = 0, *kwds = 0;
25471 if (args && nd_type_p(args, NODE_BLOCK_PASS)) {
25472 block = RNODE_BLOCK_PASS(args)->nd_body;
25473 args = RNODE_BLOCK_PASS(args)->nd_head;
25475 if (args && nd_type_p(args, NODE_ARGSCAT)) {
25476 args = RNODE_ARGSCAT(args)->nd_body;
25478 if (args && nd_type_p(args, NODE_ARGSPUSH)) {
25479 kwds = RNODE_ARGSPUSH(args)->nd_body;
25482 for (
NODE *next = args; next && nd_type_p(next, NODE_LIST);
25483 next = RNODE_LIST(next)->nd_next) {
25484 kwds = RNODE_LIST(next)->nd_head;
25487 if (kwds && nd_type_p(kwds, NODE_HASH) && !RNODE_HASH(kwds)->nd_brace) {
25488 yyerror1(&kwds->nd_loc,
"keyword arg given in index assignment");
25491 yyerror1(&block->nd_loc,
"block arg given in index assignment");
25498 aryset_check(p, idx);
25499 return NEW_ATTRASGN(recv, tASET, idx, loc);
25505 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
25506 compile_error(p,
"both block arg and actual block given");
25513 if (!CALL_Q_P(atype))
id = rb_id_attrset(
id);
25514 return NEW_ATTRASGN(recv,
id, 0, loc);
25521# define ERR(...) (compile_error(p, __VA_ARGS__), Qtrue)
25523# define ERR(...) rb_sprintf(__VA_ARGS__)
25525 switch (nd_type(node)) {
25527 return ERR(
"Can't set variable $%ld", RNODE_NTH_REF(node)->nd_nth);
25528 case NODE_BACK_REF:
25529 return ERR(
"Can't set variable $%c", (
int)RNODE_BACK_REF(node)->nd_nth);
25538 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
25539 switch (nd_type(node1)) {
25541 return list_append(p, node1, node2);
25542 case NODE_BLOCK_PASS:
25543 RNODE_BLOCK_PASS(node1)->nd_head = arg_append(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25544 node1->nd_loc.end_pos = RNODE_BLOCK_PASS(node1)->nd_head->nd_loc.end_pos;
25546 case NODE_ARGSPUSH:
25547 RNODE_ARGSPUSH(node1)->nd_body = list_append(p, NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, &RNODE_ARGSPUSH(node1)->nd_body->nd_loc), node2);
25548 node1->nd_loc.end_pos = RNODE_ARGSPUSH(node1)->nd_body->nd_loc.end_pos;
25549 nd_set_type(node1, NODE_ARGSCAT);
25552 if (!nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25553 RNODE_ARGSCAT(node1)->nd_body = list_append(p, RNODE_ARGSCAT(node1)->nd_body, node2);
25554 node1->nd_loc.end_pos = RNODE_ARGSCAT(node1)->nd_body->nd_loc.end_pos;
25557 return NEW_ARGSPUSH(node1, node2, loc);
25563 if (!node2)
return node1;
25564 switch (nd_type(node1)) {
25565 case NODE_BLOCK_PASS:
25566 if (RNODE_BLOCK_PASS(node1)->nd_head)
25567 RNODE_BLOCK_PASS(node1)->nd_head = arg_concat(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25569 RNODE_LIST(node1)->nd_head = NEW_LIST(node2, loc);
25571 case NODE_ARGSPUSH:
25572 if (!nd_type_p(node2, NODE_LIST))
break;
25573 RNODE_ARGSPUSH(node1)->nd_body = list_concat(NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, loc), node2);
25574 nd_set_type(node1, NODE_ARGSCAT);
25577 if (!nd_type_p(node2, NODE_LIST) ||
25578 !nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25579 RNODE_ARGSCAT(node1)->nd_body = list_concat(RNODE_ARGSCAT(node1)->nd_body, node2);
25582 return NEW_ARGSCAT(node1, node2, loc);
25589 if ((n1 = splat_array(args)) != 0) {
25590 return list_append(p, n1, last_arg);
25592 return arg_append(p, args, last_arg, loc);
25599 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
25600 return list_concat(n1, rest_arg);
25602 return arg_concat(p, args, rest_arg, loc);
25606splat_array(
NODE* node)
25608 if (nd_type_p(node, NODE_SPLAT)) node = RNODE_SPLAT(node)->nd_head;
25609 if (nd_type_p(node, NODE_LIST))
return node;
25618 switch (nd_type(rhs)) {
25620 if (local_id_ref(p, RNODE_LASGN(rhs)->nd_vid, &vidp)) {
25621 if (vidp) *vidp |= LVAR_USED;
25625 if (dvar_defined_ref(p, RNODE_DASGN(rhs)->nd_vid, &vidp)) {
25626 if (vidp) *vidp |= LVAR_USED;
25631 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
25632 mark_lvar_used(p, rhs->nd_head);
25639static int is_static_content(
NODE *node);
25644 if (!lhs)
return 0;
25646 switch (nd_type(lhs)) {
25654 set_nd_value(p, lhs, rhs);
25655 nd_set_loc(lhs, loc);
25658 case NODE_ATTRASGN:
25659 RNODE_ATTRASGN(lhs)->nd_args = arg_append(p, RNODE_ATTRASGN(lhs)->nd_args, rhs, loc);
25660 nd_set_loc(lhs, loc);
25674 NODE *void_node = 0, *vn;
25677 rb_warning0(
"empty expression");
25680 switch (nd_type(node)) {
25682 vn = RNODE_ENSURE(node)->nd_head;
25683 node = RNODE_ENSURE(node)->nd_ensr;
25685 if (vn && (vn = value_expr_check(p, vn))) {
25692 vn = RNODE_RESCUE(node)->nd_head;
25693 if (!vn || !(vn = value_expr_check(p, vn))) {
25694 if (!RNODE_RESCUE(node)->nd_else)
return NULL;
25696 if (!void_node) void_node = vn;
25697 for (
NODE *r = RNODE_RESCUE(node)->nd_resq; r; r = RNODE_RESBODY(r)->nd_next) {
25698 if (!nd_type_p(r, NODE_RESBODY)) {
25699 compile_error(p,
"unexpected node");
25702 if (!(vn = value_expr_check(p, RNODE_RESBODY(r)->nd_body))) {
25705 if (!void_node) void_node = vn;
25707 node = RNODE_RESCUE(node)->nd_else;
25708 if (!node)
return void_node;
25720 for (node = RNODE_CASE(node)->nd_body;
25721 node && nd_type_p(node, NODE_WHEN);
25722 node = RNODE_WHEN(node)->nd_next) {
25723 if (!(vn = value_expr_check(p, RNODE_WHEN(node)->nd_body))) {
25726 if (!void_node) void_node = vn;
25732 NODE *in = RNODE_CASE3(node)->nd_body;
25733 if (!in || !nd_type_p(in, NODE_IN)) {
25734 compile_error(p,
"unexpected node");
25737 if (!RNODE_IN(in)->nd_body) {
25742 vn = value_expr_check(p, RNODE_IN(in)->nd_body);
25743 if (!vn)
return NULL;
25744 if (!void_node) void_node = vn;
25745 in = RNODE_IN(in)->nd_next;
25746 }
while (in && nd_type_p(in, NODE_IN));
25752 while (RNODE_BLOCK(node)->nd_next) {
25753 vn = value_expr_check(p, RNODE_BLOCK(node)->nd_head);
25755 node = RNODE_BLOCK(node)->nd_next;
25757 node = RNODE_BLOCK(node)->nd_head;
25761 node = RNODE_BEGIN(node)->nd_body;
25766 if (!RNODE_IF(node)->nd_body) {
25769 else if (!RNODE_IF(node)->nd_else) {
25772 vn = value_expr_check(p, RNODE_IF(node)->nd_body);
25773 if (!vn)
return NULL;
25774 if (!void_node) void_node = vn;
25775 node = RNODE_IF(node)->nd_else;
25780 node = RNODE_AND(node)->nd_1st;
25786 mark_lvar_used(p, node);
25798 return void_node ? void_node : node;
25804 NODE *void_node = value_expr_check(p, node);
25806 yyerror1(&void_node->nd_loc,
"void value expression");
25816 const char *useless = 0;
25820 if (!node || !(node = nd_once_body(node)))
return;
25821 switch (nd_type(node)) {
25823 switch (RNODE_OPCALL(node)->nd_mid) {
25842 useless = rb_id2name(RNODE_OPCALL(node)->nd_mid);
25853 case NODE_BACK_REF:
25854 useless =
"a variable";
25857 useless =
"a constant";
25862 case NODE_ENCODING:
25865 case NODE_RATIONAL:
25866 case NODE_IMAGINARY:
25871 useless =
"a literal";
25896 useless =
"defined?";
25901 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
25909 NODE *
const n = node;
25911 if (!node)
return n;
25912 if (!nd_type_p(node, NODE_BLOCK))
return n;
25914 while (RNODE_BLOCK(node)->nd_next) {
25915 void_expr(p, RNODE_BLOCK(node)->nd_head);
25916 node = RNODE_BLOCK(node)->nd_next;
25918 return RNODE_BLOCK(node)->nd_head;
25922remove_begin(
NODE *node)
25924 NODE **n = &node, *n1 = node;
25925 while (n1 && nd_type_p(n1, NODE_BEGIN) && RNODE_BEGIN(n1)->nd_body) {
25926 *n = n1 = RNODE_BEGIN(n1)->nd_body;
25934 NODE *node = *body;
25937 *body = NEW_NIL(&NULL_LOC);
25940#define subnodes(type, n1, n2) \
25941 ((!type(node)->n1) ? (type(node)->n2 ? (body = &type(node)->n2, 1) : 0) : \
25942 (!type(node)->n2) ? (body = &type(node)->n1, 1) : \
25943 (reduce_nodes(p, &type(node)->n1), body = &type(node)->n2, 1))
25946 int newline = (int)nd_fl_newline(node);
25947 switch (nd_type(node)) {
25953 *body = node = RNODE_BEGIN(node)->nd_body;
25954 if (newline && node) nd_set_fl_newline(node);
25957 body = &RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head;
25961 if (subnodes(RNODE_IF, nd_body, nd_else))
break;
25964 body = &RNODE_CASE(node)->nd_body;
25967 if (!subnodes(RNODE_WHEN, nd_body, nd_next))
goto end;
25970 body = &RNODE_ENSURE(node)->nd_head;
25974 if (RNODE_RESCUE(node)->nd_else) {
25975 body = &RNODE_RESCUE(node)->nd_resq;
25978 if (!subnodes(RNODE_RESCUE, nd_head, nd_resq))
goto end;
25984 if (newline && node) nd_set_fl_newline(node);
25991is_static_content(
NODE *node)
25993 if (!node)
return 1;
25994 switch (nd_type(node)) {
25996 if (!(node = RNODE_HASH(node)->nd_head))
break;
25999 if (!is_static_content(RNODE_LIST(node)->nd_head))
return 0;
26000 }
while ((node = RNODE_LIST(node)->nd_next) != 0);
26005 case NODE_ENCODING:
26008 case NODE_RATIONAL:
26009 case NODE_IMAGINARY:
26025 switch (nd_type(node)) {
26039 if (!get_nd_value(p, node))
return 1;
26040 if (is_static_content(get_nd_value(p, node))) {
26042 rb_warn0L(nd_line(get_nd_value(p, node)),
"found '= literal' in conditional, should be ==");
26053#define SWITCH_BY_COND_TYPE(t, w, arg) do { \
26055 case COND_IN_OP: break; \
26056 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
26057 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
26066 enum node_type
type;
26068 if (node == 0)
return 0;
26070 type = nd_type(node);
26071 value_expr(p, node);
26072 if (
type == NODE_INTEGER) {
26073 if (!e_option_supplied(p)) rb_warn0L(nd_line(node),
"integer literal in flip-flop");
26074 ID lineno = rb_intern(
"$.");
26075 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
26077 return cond0(p, node, COND_IN_FF, loc,
true);
26083 if (node == 0)
return 0;
26084 if (!(node = nd_once_body(node)))
return 0;
26085 assign_in_cond(p, node);
26087 switch (nd_type(node)) {
26089 RNODE_BEGIN(node)->nd_body = cond0(p, RNODE_BEGIN(node)->nd_body,
type, loc, top);
26096 SWITCH_BY_COND_TYPE(
type, warn,
"string ");
26100 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ");
26101 nd_set_type(node, NODE_MATCH);
26105 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning,
"regex ");
26107 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
26111 NODE *end = RNODE_BLOCK(node)->nd_end;
26112 NODE **expr = &RNODE_BLOCK(end)->nd_head;
26113 if (top) top = node == end;
26114 *expr = cond0(p, *expr,
type, loc, top);
26120 RNODE_AND(node)->nd_1st = cond0(p, RNODE_AND(node)->nd_1st, COND_IN_COND, loc,
true);
26121 RNODE_AND(node)->nd_2nd = cond0(p, RNODE_AND(node)->nd_2nd, COND_IN_COND, loc,
true);
26127 RNODE_DOT2(node)->nd_beg = range_op(p, RNODE_DOT2(node)->nd_beg, loc);
26128 RNODE_DOT2(node)->nd_end = range_op(p, RNODE_DOT2(node)->nd_end, loc);
26129 switch (nd_type(node)) {
26131 nd_set_type(node,NODE_FLIP2);
26136 nd_set_type(node, NODE_FLIP3);
26145 SWITCH_BY_COND_TYPE(
type, warning,
"symbol ");
26149 case NODE_ENCODING:
26152 case NODE_RATIONAL:
26153 case NODE_IMAGINARY:
26154 SWITCH_BY_COND_TYPE(
type, warning,
"");
26166 if (node == 0)
return 0;
26167 return cond0(p, node, COND_IN_COND, loc,
true);
26173 if (node == 0)
return 0;
26174 return cond0(p, node, COND_IN_OP, loc,
true);
26181 return NEW_NIL(&loc);
26187 if (!cc)
return right;
26188 cc = cond0(p, cc, COND_IN_COND, loc,
true);
26189 return newline_node(NEW_IF(cc, left, right, loc, if_keyword_loc, then_keyword_loc, end_keyword_loc));
26195 if (!cc)
return right;
26196 cc = cond0(p, cc, COND_IN_COND, loc,
true);
26197 return newline_node(NEW_UNLESS(cc, left, right, loc, keyword_loc, then_keyword_loc, end_keyword_loc));
26200#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))
26206 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
26208 value_expr(p, left);
26209 if (left && nd_type_p(left,
type)) {
26210 NODE *node = left, *second;
26211 while ((second = RNODE_AND(node)->nd_2nd) != 0 && nd_type_p(second,
type)) {
26214 RNODE_AND(node)->nd_2nd = NEW_AND_OR(
type, second, right, loc, op_loc);
26215 nd_set_line(RNODE_AND(node)->nd_2nd, op_loc->beg_pos.lineno);
26216 left->nd_loc.end_pos = loc->end_pos;
26219 op = NEW_AND_OR(
type, left, right, loc, op_loc);
26220 nd_set_line(op, op_loc->beg_pos.lineno);
26229 if (nd_type_p(node, NODE_BLOCK_PASS)) {
26230 compile_error(p,
"block argument should not be given");
26238 no_blockarg(p, node);
26239 if (nd_type_p(node, NODE_LIST) && !RNODE_LIST(node)->nd_next) {
26240 node = RNODE_LIST(node)->nd_head;
26249 switch (nd_type(node)) {
26251 RNODE_INTEGER(node)->minus = TRUE;
26254 RNODE_FLOAT(node)->minus = TRUE;
26256 case NODE_RATIONAL:
26257 RNODE_RATIONAL(node)->minus = TRUE;
26259 case NODE_IMAGINARY:
26260 RNODE_IMAGINARY(node)->minus = TRUE;
26270 if (!node1)
return (
NODE *)node2;
26271 node2->nd_head = node1;
26272 nd_set_first_lineno(node2, nd_first_lineno(node1));
26273 nd_set_first_column(node2, nd_first_column(node1));
26274 return (
NODE *)node2;
26282 if (args->pre_args_num)
return false;
26283 if (args->post_args_num)
return false;
26284 if (args->rest_arg)
return false;
26285 if (args->opt_args)
return false;
26286 if (args->block_arg)
return false;
26287 if (args->kw_args)
return false;
26288 if (args->kw_rest_arg)
return false;
26297 if (args->forwarding) {
26299 yyerror1(&RNODE(tail)->nd_loc,
"... after rest argument");
26302 rest_arg = idFWD_REST;
26305 args->pre_args_num = pre_args ? pre_args->nd_plen : 0;
26306 args->pre_init = pre_args ? pre_args->nd_next : 0;
26308 args->post_args_num = post_args ? post_args->nd_plen : 0;
26309 args->post_init = post_args ? post_args->nd_next : 0;
26310 args->first_post_arg = post_args ? post_args->nd_pid : 0;
26312 args->rest_arg = rest_arg;
26314 args->opt_args = opt_args;
26316 nd_set_loc(RNODE(tail), loc);
26326 if (p->error_p)
return node;
26328 if (block == idNil) {
26330 args->no_blockarg = TRUE;
26332 args->block_arg = block;
26333 args->kw_args = kw_args;
26342 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
26343 struct vtable *vtargs = p->lvtbl->args;
26346 if (block) block = vtargs->tbl[vtargs->pos-1];
26347 vtable_pop(vtargs, !!block + !!kw_rest_arg);
26348 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
26350 if (!NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body)))
26352 --required_kw_vars;
26353 kwn = kwn->nd_next;
26356 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
26357 ID vid = get_nd_vid(p, kwn->nd_body);
26358 if (NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body))) {
26359 *required_kw_vars++ = vid;
26366 arg_var(p, kw_bits);
26367 if (kw_rest_arg) arg_var(p, kw_rest_arg);
26368 if (block) arg_var(p, block);
26370 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
26372 else if (kw_rest_arg == idNil) {
26373 args->no_kwarg = 1;
26375 else if (kw_rest_arg) {
26376 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
26385 if (max_numparam > NO_PARAM || it_id) {
26387 YYLTYPE loc = RUBY_INIT_YYLLOC();
26388 args = new_empty_args_tail(p, 0);
26389 nd_set_loc(RNODE(args), &loc);
26391 args->nd_ainfo.pre_args_num = it_id ? 1 : max_numparam;
26399 RNODE_ARYPTN(aryptn)->nd_pconst = constant;
26402 NODE *pre_args = NEW_LIST(pre_arg, loc);
26403 if (RNODE_ARYPTN(aryptn)->pre_args) {
26404 RNODE_ARYPTN(aryptn)->pre_args = list_concat(pre_args, RNODE_ARYPTN(aryptn)->pre_args);
26407 RNODE_ARYPTN(aryptn)->pre_args = pre_args;
26417 rest_arg = rest_arg ? rest_arg : NODE_SPECIAL_NO_NAME_REST;
26422 NODE *node = NEW_ARYPTN(pre_args, rest_arg, post_args, loc);
26430 RNODE_FNDPTN(fndptn)->nd_pconst = constant;
26438 pre_rest_arg = pre_rest_arg ? pre_rest_arg : NODE_SPECIAL_NO_NAME_REST;
26439 post_rest_arg = post_rest_arg ? post_rest_arg : NODE_SPECIAL_NO_NAME_REST;
26440 NODE *node = NEW_FNDPTN(pre_rest_arg, args, post_rest_arg, loc);
26448 RNODE_HSHPTN(hshptn)->nd_pconst = constant;
26455 NODE *node, *kw_rest_arg_node;
26457 if (kw_rest_arg == idNil) {
26458 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
26460 else if (kw_rest_arg) {
26461 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
26464 kw_rest_arg_node = NULL;
26467 node = NEW_HSHPTN(0, kw_args, kw_rest_arg_node, loc);
26476 return NEW_SYM(STR_NEW0(), loc);
26479 switch (nd_type(node)) {
26481 nd_set_type(node, NODE_DSYM);
26482 nd_set_loc(node, loc);
26485 node = str_to_sym_node(p, node, loc);
26488 node = NEW_DSYM(0, 1, NEW_LIST(node, loc), loc);
26495nd_type_st_key_enable_p(
NODE *node)
26497 switch (nd_type(node)) {
26500 case NODE_RATIONAL:
26501 case NODE_IMAGINARY:
26507 case NODE_ENCODING:
26517 switch (nd_type(node)) {
26519 return rb_node_str_string_val(node);
26521 return rb_node_integer_literal_val(node);
26523 return rb_node_float_literal_val(node);
26524 case NODE_RATIONAL:
26525 return rb_node_rational_literal_val(node);
26526 case NODE_IMAGINARY:
26527 return rb_node_imaginary_literal_val(node);
26529 return rb_node_sym_string_val(node);
26531 return rb_node_regx_string_val(node);
26533 return rb_node_line_lineno_val(node);
26534 case NODE_ENCODING:
26535 return rb_node_encoding_val(node);
26537 return rb_node_file_path_val(node);
26539 rb_bug(
"unexpected node: %s", ruby_node_name(nd_type(node)));
26548 p->warn_duplicate_keys_table = st_init_table_with_size(&literal_type, RNODE_LIST(hash)->as.nd_alen / 2);
26549 while (hash && RNODE_LIST(hash)->nd_next) {
26550 NODE *head = RNODE_LIST(hash)->nd_head;
26551 NODE *value = RNODE_LIST(hash)->nd_next;
26552 NODE *next = RNODE_LIST(value)->nd_next;
26561 if (nd_type_st_key_enable_p(head)) {
26562 key = (st_data_t)head;
26564 if (st_delete(p->warn_duplicate_keys_table, &key, &data)) {
26565 rb_warn2L(nd_line((
NODE *)data),
26566 "key %+"PRIsWARN
" is duplicated and overwritten on line %d",
26567 nd_value(p, head), WARN_I(nd_line(head)));
26569 st_insert(p->warn_duplicate_keys_table, (st_data_t)key, (st_data_t)hash);
26573 st_free_table(p->warn_duplicate_keys_table);
26574 p->warn_duplicate_keys_table = NULL;
26580 if (hash) warn_duplicate_keys(p, hash);
26581 return NEW_HASH(hash, loc);
26587 if (is_private_local_id(p,
id)) {
26590 if (st_is_member(p->pvtbl,
id)) {
26591 yyerror1(loc,
"duplicated variable name");
26593 else if (p->ctxt.in_alt_pattern &&
id) {
26594 yyerror1(loc,
"variable capture in alternative pattern");
26597 p->ctxt.capture_in_pattern = 1;
26598 st_insert(p->pvtbl, (st_data_t)
id, 0);
26606 p->pktbl = st_init_numtable();
26608 else if (st_is_member(p->pktbl, key)) {
26609 yyerror1(loc,
"duplicated key name");
26612 st_insert(p->pktbl, (st_data_t)key, 0);
26618 return NEW_HASH(hash, loc);
26627 ID vid = get_nd_vid(p, lhs);
26628 YYLTYPE lhs_loc = lhs->nd_loc;
26630 set_nd_value(p, lhs, rhs);
26631 nd_set_loc(lhs, loc);
26632 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
26634 else if (op == tANDOP) {
26635 set_nd_value(p, lhs, rhs);
26636 nd_set_loc(lhs, loc);
26637 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
26641 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
26642 set_nd_value(p, asgn, rhs);
26643 nd_set_loc(asgn, loc);
26647 asgn = NEW_ERROR(loc);
26659 aryset_check(p, args);
26660 args = make_list(args, args_loc);
26661 asgn = NEW_OP_ASGN1(ary, op, args, rhs, loc, call_operator_loc, opening_loc, closing_loc, binary_operator_loc);
26673 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc, call_operator_loc, message_loc, binary_operator_loc);
26684 asgn = NEW_OP_CDECL(lhs, op, rhs, ctxt.shareable_constant_value, loc);
26687 asgn = NEW_ERROR(loc);
26696 if (p->ctxt.in_def) {
26698 yyerror1(loc,
"dynamic constant assignment");
26700 set_value(assign_error(p,
"dynamic constant assignment", p->s_lvalue));
26703 return NEW_CDECL(0, 0, (path), p->ctxt.shareable_constant_value, loc);
26710 a = dispatch2(assign_error, ERR_MESG(), a);
26719 NODE *result = head;
26721 NODE *tmp = rescue_else ? rescue_else : rescue;
26722 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
26724 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
26725 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
26728 result = NEW_ENSURE(result, ensure, loc);
26730 fixpos(result, head);
26739 if (!local->used)
return;
26740 cnt = local->used->pos;
26741 if (cnt != local->vars->pos) {
26742 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
26745 ID *v = local->vars->tbl;
26746 ID *u = local->used->tbl;
26747 for (
int i = 0; i < cnt; ++i) {
26748 if (!v[i] || (u[i] & LVAR_USED))
continue;
26749 if (is_private_local_id(p, v[i]))
continue;
26750 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
26759 int inherits_dvars = toplevel_scope && compile_for_eval;
26763 local->prev = p->lvtbl;
26764 local->args = vtable_alloc(0);
26765 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
26767 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
26768 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
26770 local->numparam.outer = 0;
26771 local->numparam.inner = 0;
26772 local->numparam.current = 0;
26774 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
26776# if WARN_PAST_SCOPE
26787 while (!DVARS_TERMINAL_P(table)) {
26788 struct vtable *cur_table = table;
26789 table = cur_table->prev;
26790 vtable_free(cur_table);
26797 vtable_chain_free(p, local->used);
26799# if WARN_PAST_SCOPE
26800 vtable_chain_free(p, local->past);
26803 vtable_chain_free(p, local->args);
26804 vtable_chain_free(p, local->vars);
26806 ruby_xfree_sized(local,
sizeof(
struct local_vars));
26813 if (p->lvtbl->used) {
26814 warn_unused_var(p, p->lvtbl);
26817 local_free(p, p->lvtbl);
26827 int cnt_args = vtable_size(p->lvtbl->args);
26828 int cnt_vars = vtable_size(p->lvtbl->vars);
26829 int cnt = cnt_args + cnt_vars;
26833 if (cnt <= 0)
return 0;
26834 tbl = rb_ast_new_local_table(p->ast, cnt);
26835 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
26837 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
26838 ID id = p->lvtbl->vars->tbl[i];
26839 if (!vtable_included(p->lvtbl->args,
id)) {
26840 tbl->ids[j++] = id;
26844 tbl = rb_ast_resize_latest_local_table(p->ast, j);
26853 if (!NUMPARAM_ID_P(
id))
return;
26854 compile_error(p,
"_%d is reserved for numbered parameter",
26855 NUMPARAM_ID_TO_IDX(
id));
26861 numparam_name(p,
id);
26862 vtable_add(p->lvtbl->args,
id);
26868 numparam_name(p,
id);
26869 vtable_add(p->lvtbl->vars,
id);
26870 if (p->lvtbl->used) {
26871 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
26879 return rb_local_defined(
id, iseq);
26886 struct vtable *vars, *args, *used;
26888 vars = p->lvtbl->vars;
26889 args = p->lvtbl->args;
26890 used = p->lvtbl->used;
26892 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26895 if (used) used = used->prev;
26898 if (vars && vars->prev == DVARS_INHERIT) {
26899 return rb_parser_local_defined(p,
id, p->parent_iseq);
26901 else if (vtable_included(args,
id)) {
26905 int i = vtable_included(vars,
id);
26906 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
26914 return local_id_ref(p,
id, NULL);
26920 if (local_id(p, idFWD_ALL))
return TRUE;
26921 compile_error(p,
"unexpected ...");
26928 arg_var(p, idFWD_REST);
26929 arg_var(p, idFWD_KWREST);
26930 arg_var(p, idFWD_BLOCK);
26931 arg_var(p, idFWD_ALL);
26937 bool conflict =
false;
26939 struct vtable *vars, *args;
26941 vars = p->lvtbl->vars;
26942 args = p->lvtbl->args;
26944 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26945 conflict |= (vtable_included(args, arg) && !(all && vtable_included(args, all)));
26950 bool found =
false;
26951 if (vars && vars->prev == DVARS_INHERIT && !found) {
26952 found = (rb_parser_local_defined(p, arg, p->parent_iseq) &&
26953 !(all && rb_parser_local_defined(p, all, p->parent_iseq)));
26956 found = (vtable_included(args, arg) &&
26957 !(all && vtable_included(args, all)));
26961 compile_error(p,
"no anonymous %s parameter", var);
26963 else if (conflict) {
26964 compile_error(p,
"anonymous %s parameter is also used within block", var);
26971 NODE *rest = NEW_LVAR(idFWD_REST, loc);
26972 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
26974 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc, &NULL_LOC);
26975 block->forwarding = TRUE;
26976 args = arg_append(p, args, new_hash(p, kwrest, loc), argsloc);
26977 return arg_blk_pass(args, block);
26984 NODE *inner = local->numparam.inner;
26985 if (!local->numparam.outer) {
26986 local->numparam.outer = local->numparam.current;
26988 local->numparam.inner = 0;
26989 local->numparam.current = 0;
27000 local->numparam.inner = prev_inner;
27002 else if (local->numparam.current) {
27004 local->numparam.inner = local->numparam.current;
27006 if (p->max_numparam > NO_PARAM) {
27008 local->numparam.current = local->numparam.outer;
27009 local->numparam.outer = 0;
27013 local->numparam.current = 0;
27018static const struct vtable *
27021 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
27022 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
27023 if (p->lvtbl->used) {
27024 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
27026 return p->lvtbl->args;
27032 struct vtable *tmp = *vtblp;
27033 *vtblp = tmp->prev;
27034# if WARN_PAST_SCOPE
27035 if (p->past_scope_enabled) {
27036 tmp->prev = p->lvtbl->past;
27037 p->lvtbl->past = tmp;
27049 if ((tmp = p->lvtbl->used) != 0) {
27050 warn_unused_var(p, p->lvtbl);
27051 p->lvtbl->used = p->lvtbl->used->prev;
27054 dyna_pop_vtable(p, &p->lvtbl->args);
27055 dyna_pop_vtable(p, &p->lvtbl->vars);
27061 while (p->lvtbl->args != lvargs) {
27063 if (!p->lvtbl->args) {
27065 ruby_xfree_sized(p->lvtbl,
sizeof(*p->lvtbl));
27075 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
27082 struct vtable *vars, *args, *used;
27085 args = p->lvtbl->args;
27086 vars = p->lvtbl->vars;
27087 used = p->lvtbl->used;
27089 while (!DVARS_TERMINAL_P(vars)) {
27090 if (vtable_included(args,
id)) {
27093 if ((i = vtable_included(vars,
id)) != 0) {
27094 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
27099 if (!vidrefp) used = 0;
27100 if (used) used = used->prev;
27103 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
27104 return rb_dvar_defined(
id, p->parent_iseq);
27114 return dvar_defined_ref(p,
id, NULL);
27120 return (vtable_included(p->lvtbl->args,
id) ||
27121 vtable_included(p->lvtbl->vars,
id));
27128 "regexp encoding option '%c' differs from source encoding '%s'",
27129 c, rb_enc_name(rb_parser_str_get_encoding(str)));
27136 int idx = rb_enc_find_index(name);
27138 rb_bug(
"unknown encoding name: %s", name);
27141 return rb_enc_from_index(idx);
27150 case ENC_ASCII8BIT:
27151 enc = rb_ascii8bit_encoding();
27154 enc = find_enc(p,
"EUC-JP");
27156 case ENC_Windows_31J:
27157 enc = find_enc(p,
"Windows-31J");
27160 enc = rb_utf8_encoding();
27173 int c = RE_OPTION_ENCODING_IDX(options);
27179 char_to_option_kcode(c, &opt, &idx);
27180 enc = kcode_to_enc(p, idx);
27181 if (enc != rb_parser_str_get_encoding(str) &&
27182 !rb_parser_is_ascii_string(p, str)) {
27185 rb_parser_string_set_encoding(str, enc);
27187 else if (RE_OPTION_ENCODING_NONE(options)) {
27188 if (!PARSER_ENCODING_IS_ASCII8BIT(p, str) &&
27189 !rb_parser_is_ascii_string(p, str)) {
27193 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
27195 else if (rb_is_usascii_enc(p->enc)) {
27196 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
27208 int c = rb_reg_fragment_setenc(p, str, options);
27209 if (c) reg_fragment_enc_error(p, str, c);
27212#ifndef UNIVERSAL_PARSER
27218 rb_parser_assignable_func assignable;
27222reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
27223 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
27228 long len = name_end - name;
27229 const char *s = (
const char *)name;
27231 return rb_reg_named_capture_assign_iter_impl(p, s,
len, enc, &arg->succ_block, arg->loc, arg->assignable);
27235reg_named_capture_assign(
struct parser_params* p,
VALUE regexp,
const YYLTYPE *loc, rb_parser_assignable_func assignable)
27240 arg.enc = rb_enc_get(regexp);
27241 arg.succ_block = 0;
27243 arg.assignable = assignable;
27244 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
27246 if (!arg.succ_block)
return 0;
27247 return RNODE_BLOCK(arg.succ_block)->nd_next;
27255 return assignable(p,
id, val, loc);
27259rb_reg_named_capture_assign_iter_impl(
struct parser_params *p,
const char *s,
long len,
27265 if (!
len)
return ST_CONTINUE;
27266 if (!VALID_SYMNAME_P(s,
len, enc, ID_LOCAL))
27267 return ST_CONTINUE;
27269 var = intern_cstr(s,
len, enc);
27270 if (
len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)
len)) {
27271 if (!lvar_defined(p, var))
return ST_CONTINUE;
27273 node = node_assign(p, assignable(p, var, 0, loc), NEW_SYM(rb_id2str(var), loc), NO_LEX_CTXT, loc);
27274 succ = *succ_block;
27275 if (!succ) succ = NEW_ERROR(loc);
27276 succ = block_append(p, succ, node);
27277 *succ_block = succ;
27278 return ST_CONTINUE;
27286 reg_fragment_setenc(p, str, options);
27287 str2 = rb_str_new_parser_string(str);
27288 return rb_parser_reg_compile(p, str2, options);
27295 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
27305 err = rb_errinfo();
27306 re = parser_reg_compile(p, str, options);
27308 VALUE m = rb_attr_get(rb_errinfo(), idMesg);
27309 rb_set_errinfo(err);
27310 compile_error(p,
"%"PRIsVALUE, m);
27318rb_ruby_parser_set_options(
struct parser_params *p,
int print,
int loop,
int chomp,
int split)
27320 p->do_print = print;
27322 p->do_chomp = chomp;
27323 p->do_split = split;
27329 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
27330 const YYLTYPE *
const LOC = &default_location;
27333 NODE *print = (
NODE *)NEW_FCALL(rb_intern(
"print"),
27334 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
27336 node = block_append(p, node, print);
27340 NODE *irs = NEW_LIST(NEW_GVAR(rb_intern(
"$/"), LOC), LOC);
27343 ID ifs = rb_intern(
"$;");
27344 ID fields = rb_intern(
"$F");
27345 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
27346 NODE *split = NEW_GASGN(fields,
27347 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
27348 rb_intern(
"split"), args, LOC),
27350 node = block_append(p, split, node);
27354 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
27355 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
27358 node = NEW_WHILE((
NODE *)NEW_FCALL(idGets, irs, LOC), node, 1, LOC, &NULL_LOC, &NULL_LOC);
27375 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
27383 p->command_start = TRUE;
27384 p->ruby_sourcefile_string =
Qnil;
27385 p->lex.lpar_beg = -1;
27386 string_buffer_init(p);
27388 p->delayed.token = NULL;
27389 p->frozen_string_literal = -1;
27391 p->error_buffer =
Qfalse;
27392 p->end_expect_token_locations = NULL;
27397 p->parsing_thread =
Qnil;
27399 p->s_lvalue =
Qnil;
27402 p->debug_buffer =
Qnil;
27403 p->debug_output = rb_ractor_stdout();
27404 p->enc = rb_utf8_encoding();
27409#define rb_ruby_parser_mark ripper_parser_mark
27410#define rb_ruby_parser_free ripper_parser_free
27411#define rb_ruby_parser_memsize ripper_parser_memsize
27415rb_ruby_parser_mark(
void *ptr)
27419 rb_gc_mark(p->ruby_sourcefile_string);
27421 rb_gc_mark(p->error_buffer);
27423 rb_gc_mark(p->value);
27424 rb_gc_mark(p->result);
27425 rb_gc_mark(p->parsing_thread);
27426 rb_gc_mark(p->s_value);
27427 rb_gc_mark(p->s_lvalue);
27428 rb_gc_mark(p->s_value_stack);
27430 rb_gc_mark(p->debug_buffer);
27431 rb_gc_mark(p->debug_output);
27435rb_ruby_parser_free(
void *ptr)
27441 rb_ast_free(p->ast);
27444 if (p->warn_duplicate_keys_table) {
27445 st_free_table(p->warn_duplicate_keys_table);
27450 rb_parser_ary_free(p, p->tokens);
27455 ruby_xfree_sized(p->tokenbuf, p->toksiz);
27458 for (local = p->lvtbl; local; local = prev) {
27459 prev = local->prev;
27460 local_free(p, local);
27465 while ((ptinfo = p->token_info) != 0) {
27466 p->token_info = ptinfo->next;
27470 string_buffer_free(p);
27473 st_free_table(p->pvtbl);
27476 if (CASE_LABELS_ENABLED_P(p->case_labels)) {
27477 st_free_table(p->case_labels);
27480 xfree(p->lex.strterm);
27481 p->lex.strterm = 0;
27487rb_ruby_parser_memsize(
const void *ptr)
27491 size_t size =
sizeof(*p);
27494 for (local = p->lvtbl; local; local = local->prev) {
27495 size +=
sizeof(*local);
27496 if (local->vars) size += local->vars->capa *
sizeof(
ID);
27502#undef rb_reserved_word
27505rb_reserved_word(
const char *str,
unsigned int len)
27507 return reserved_word(str,
len);
27510#ifdef UNIVERSAL_PARSER
27512rb_ruby_parser_allocate(
const rb_parser_config_t *config)
27516 p->config = config;
27521rb_ruby_parser_new(
const rb_parser_config_t *config)
27524 rb_parser_t *p = rb_ruby_parser_allocate(config);
27525 parser_initialize(p);
27530rb_ruby_parser_allocate(
void)
27538rb_ruby_parser_new(
void)
27542 parser_initialize(p);
27551 p->parent_iseq = base;
27558 p->debug_lines = rb_parser_ary_new_capa_for_script_line(p, 10);
27564 p->error_tolerant = 1;
27570 p->keep_tokens = 1;
27571 p->tokens = rb_parser_ary_new_capa_for_ast_token(p, 10);
27583 return p->ruby__end__seen;
27587rb_ruby_parser_set_yydebug(
rb_parser_t *p,
int flag)
27616 return p->debug_output;
27622 p->debug_output = output;
27628 return p->parsing_thread;
27634 p->parsing_thread = parsing_thread;
27638rb_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)
27640 p->lex.gets = gets;
27641 p->lex.input = input;
27643 p->ruby_sourcefile_string = sourcefile_string;
27644 p->ruby_sourcefile = sourcefile;
27645 p->ruby_sourceline = sourceline;
27661rb_ruby_parser_ruby_sourcefile_string(
rb_parser_t *p)
27663 return p->ruby_sourcefile_string;
27669 return p->ruby_sourceline;
27675 return p->lex.state;
27682 p->ast = rb_ast_new();
27683 ripper_yyparse((
void*)p);
27684 rb_ast_free(p->ast);
27687 p->eval_tree_begin = 0;
27693 return dedent_string(p,
string, width);
27699 return p->lex.input != 0;
27705 parser_initialize(p);
27711 return p->lex.ptok - p->lex.pbeg;
27717 return p->lex.pcur - p->lex.ptok;
27723 return p->lex.lastline;
27727rb_ruby_ripper_lex_state_name(
struct parser_params *p,
int state)
27729 return rb_parser_lex_state_name(p, (
enum lex_state_e)state);
27732#ifdef UNIVERSAL_PARSER
27734rb_ripper_parser_params_allocate(
const rb_parser_config_t *config)
27737 p->config = config;
27743rb_ruby_ripper_parser_allocate(
void)
27751rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
27754 VALUE mesg = p->debug_buffer;
27758 rb_str_vcatf(mesg, fmt, ap);
27760 if (char_at_end(p, mesg, 0) ==
'\n') {
27761 rb_io_write(p->debug_output, mesg);
27762 p->debug_buffer =
Qnil;
27770 int lineno, column;
27773 lineno = loc->end_pos.lineno;
27774 column = loc->end_pos.column;
27777 lineno = p->ruby_sourceline;
27781 rb_io_flush(p->debug_output);
27785 rb_syntax_error_append(p->error_buffer,
27786 p->ruby_sourcefile_string,
27793count_char(
const char *str,
int c)
27796 while (str[n] == c) ++n;
27807rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
27809 if (*yystr ==
'"') {
27810 size_t yyn = 0, bquote = 0;
27811 const char *yyp = yystr;
27817 bquote = count_char(yyp+1,
'\'') + 1;
27818 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
27824 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
27825 if (yyres) memcpy(yyres + yyn, yyp, bquote);
27831 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
27832 if (yyres) memcpy(yyres + yyn, yyp, 3);
27837 goto do_not_strip_quotes;
27841 goto do_not_strip_quotes;
27844 if (*++yyp !=
'\\')
27845 goto do_not_strip_quotes;
27860 do_not_strip_quotes: ;
27863 if (!yyres)
return strlen(yystr);
27865 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
27870#define validate(x) (void)(x)
27899 return rb_funcall(p->value, mid, 3, a, b, c);
27909 return rb_funcall(p->value, mid, 4, a, b, c, d);
27920 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
27933 return rb_funcall(p->value, mid, 7, a, b, c, d, e, f, g);
#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.
#define RREGEXP_PTR(obj)
Convenient accessor macro.
#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.