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_args_tail_basic_primary_value = 303, /* args_tail_basic_primary_value */
3003 YYSYMBOL_block_args_tail = 304, /* block_args_tail */
3004 YYSYMBOL_opt_args_tail_block_args_tail = 305, /* opt_args_tail_block_args_tail */
3005 YYSYMBOL_block_args_opt_tail = 306, /* block_args-opt_tail */
3006 YYSYMBOL_excessed_comma = 307, /* excessed_comma */
3007 YYSYMBOL_f_opt_primary_value = 308, /* f_opt_primary_value */
3008 YYSYMBOL_f_opt_arg_primary_value = 309, /* f_opt_arg_primary_value */
3009 YYSYMBOL_args_list_primary_value_block_args_opt_tail = 310, /* args-list_primary_value_block_args-opt_tail */
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_args_tail_basic_arg_value = 431, /* args_tail_basic_arg_value */
3131 YYSYMBOL_args_tail = 432, /* args_tail */
3132 YYSYMBOL_opt_args_tail_args_tail = 433, /* opt_args_tail_args_tail */
3133 YYSYMBOL_f_args_opt_tail = 434, /* f_args-opt_tail */
3134 YYSYMBOL_f_opt_arg_value = 435, /* f_opt_arg_value */
3135 YYSYMBOL_f_opt_arg_arg_value = 436, /* f_opt_arg_arg_value */
3136 YYSYMBOL_args_list_arg_value_f_args_opt_tail = 437, /* args-list_arg_value_f_args-opt_tail */
3137 YYSYMBOL_f_args = 438, /* f_args */
3138 YYSYMBOL_tail_only_args_args_tail = 439, /* tail-only-args_args_tail */
3139 YYSYMBOL_args_forward = 440, /* args_forward */
3140 YYSYMBOL_f_bad_arg = 441, /* f_bad_arg */
3141 YYSYMBOL_f_norm_arg = 442, /* f_norm_arg */
3142 YYSYMBOL_f_arg_asgn = 443, /* f_arg_asgn */
3143 YYSYMBOL_f_arg_item = 444, /* f_arg_item */
3144 YYSYMBOL_f_arg = 445, /* f_arg */
3145 YYSYMBOL_f_label = 446, /* f_label */
3146 YYSYMBOL_kwrest_mark = 447, /* kwrest_mark */
3147 YYSYMBOL_f_no_kwarg = 448, /* f_no_kwarg */
3148 YYSYMBOL_f_kwrest = 449, /* f_kwrest */
3149 YYSYMBOL_restarg_mark = 450, /* restarg_mark */
3150 YYSYMBOL_f_rest_arg = 451, /* f_rest_arg */
3151 YYSYMBOL_blkarg_mark = 452, /* blkarg_mark */
3152 YYSYMBOL_f_block_arg = 453, /* f_block_arg */
3153 YYSYMBOL_opt_f_block_arg = 454, /* opt_f_block_arg */
3154 YYSYMBOL_value_expr_singleton_expr = 455, /* value_expr_singleton_expr */
3155 YYSYMBOL_singleton = 456, /* singleton */
3156 YYSYMBOL_singleton_expr = 457, /* singleton_expr */
3157 YYSYMBOL_458_40 = 458, /* $@40 */
3158 YYSYMBOL_assoc_list = 459, /* assoc_list */
3159 YYSYMBOL_assocs = 460, /* assocs */
3160 YYSYMBOL_assoc = 461, /* assoc */
3161 YYSYMBOL_operation2 = 462, /* operation2 */
3162 YYSYMBOL_operation3 = 463, /* operation3 */
3163 YYSYMBOL_dot_or_colon = 464, /* dot_or_colon */
3164 YYSYMBOL_call_op = 465, /* call_op */
3165 YYSYMBOL_call_op2 = 466, /* call_op2 */
3166 YYSYMBOL_rparen = 467, /* rparen */
3167 YYSYMBOL_rbracket = 468, /* rbracket */
3168 YYSYMBOL_rbrace = 469, /* rbrace */
3169 YYSYMBOL_trailer = 470, /* trailer */
3170 YYSYMBOL_term = 471, /* term */
3171 YYSYMBOL_terms = 472, /* terms */
3172 YYSYMBOL_none = 473 /* none */
3174typedef enum yysymbol_kind_t yysymbol_kind_t;
3183/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
3184 <limits.h> and (if available) <stdint.h> are included
3185 so that the code can choose integer types of a good width. */
3187#ifndef __PTRDIFF_MAX__
3188# include <limits.h> /* INFRINGES ON USER NAME SPACE */
3189# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3190# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
3195/* Narrow types that promote to a signed type and that can represent a
3196 signed or unsigned integer of at least N bits. In tables they can
3197 save space and decrease cache pressure. Promoting to a signed type
3198 helps avoid bugs in integer arithmetic. */
3200#ifdef __INT_LEAST8_MAX__
3201typedef __INT_LEAST8_TYPE__ yytype_int8;
3202#elif defined YY_STDINT_H
3203typedef int_least8_t yytype_int8;
3205typedef signed char yytype_int8;
3208#ifdef __INT_LEAST16_MAX__
3209typedef __INT_LEAST16_TYPE__ yytype_int16;
3210#elif defined YY_STDINT_H
3211typedef int_least16_t yytype_int16;
3213typedef short yytype_int16;
3216/* Work around bug in HP-UX 11.23, which defines these macros
3217 incorrectly for preprocessor constants. This workaround can likely
3218 be removed in 2023, as HPE has promised support for HP-UX 11.23
3219 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
3220 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
3222# undef UINT_LEAST8_MAX
3223# undef UINT_LEAST16_MAX
3224# define UINT_LEAST8_MAX 255
3225# define UINT_LEAST16_MAX 65535
3228#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
3229typedef __UINT_LEAST8_TYPE__ yytype_uint8;
3230#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
3231 && UINT_LEAST8_MAX <= INT_MAX)
3232typedef uint_least8_t yytype_uint8;
3233#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
3234typedef unsigned char yytype_uint8;
3236typedef short yytype_uint8;
3239#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
3240typedef __UINT_LEAST16_TYPE__ yytype_uint16;
3241#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
3242 && UINT_LEAST16_MAX <= INT_MAX)
3243typedef uint_least16_t yytype_uint16;
3244#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
3245typedef unsigned short yytype_uint16;
3247typedef int yytype_uint16;
3251# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
3252# define YYPTRDIFF_T __PTRDIFF_TYPE__
3253# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
3254# elif defined PTRDIFF_MAX
3256# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
3258# define YYPTRDIFF_T ptrdiff_t
3259# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
3261# define YYPTRDIFF_T long
3262# define YYPTRDIFF_MAXIMUM LONG_MAX
3267# ifdef __SIZE_TYPE__
3268# define YYSIZE_T __SIZE_TYPE__
3269# elif defined size_t
3270# define YYSIZE_T size_t
3271# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3272# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
3273# define YYSIZE_T size_t
3275# define YYSIZE_T unsigned
3279#define YYSIZE_MAXIMUM \
3280 YY_CAST (YYPTRDIFF_T, \
3281 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
3282 ? YYPTRDIFF_MAXIMUM \
3283 : YY_CAST (YYSIZE_T, -1)))
3285#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
3288/* Stored state numbers (used for stacks). */
3289typedef yytype_int16 yy_state_t;
3291/* State numbers in computations. */
3292typedef int yy_state_fast_t;
3295# if defined YYENABLE_NLS && YYENABLE_NLS
3297# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
3298# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
3302# define YY_(Msgid) Msgid
3307#ifndef YY_ATTRIBUTE_PURE
3308# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
3309# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
3311# define YY_ATTRIBUTE_PURE
3315#ifndef YY_ATTRIBUTE_UNUSED
3316# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
3317# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
3319# define YY_ATTRIBUTE_UNUSED
3323/* Suppress unused-variable warnings by "using" E. */
3324#if ! defined lint || defined __GNUC__
3325# define YY_USE(E) ((void) (E))
3327# define YY_USE(E) /* empty */
3330/* Suppress an incorrect diagnostic about yylval being uninitialized. */
3331#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
3332# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
3333# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3334 _Pragma ("GCC diagnostic push") \
3335 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
3337# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3338 _Pragma ("GCC diagnostic push") \
3339 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
3340 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
3342# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
3343 _Pragma ("GCC diagnostic pop")
3345# define YY_INITIAL_VALUE(Value) Value
3347#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3348# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3349# define YY_IGNORE_MAYBE_UNINITIALIZED_END
3351#ifndef YY_INITIAL_VALUE
3352# define YY_INITIAL_VALUE(Value) /* Nothing. */
3355#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
3356# define YY_IGNORE_USELESS_CAST_BEGIN \
3357 _Pragma ("GCC diagnostic push") \
3358 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
3359# define YY_IGNORE_USELESS_CAST_END \
3360 _Pragma ("GCC diagnostic pop")
3362#ifndef YY_IGNORE_USELESS_CAST_BEGIN
3363# define YY_IGNORE_USELESS_CAST_BEGIN
3364# define YY_IGNORE_USELESS_CAST_END
3368#define YY_ASSERT(E) ((void) (0 && (E)))
3372/* The parser invokes alloca or malloc; define the necessary symbols. */
3374# ifdef YYSTACK_USE_ALLOCA
3375# if YYSTACK_USE_ALLOCA
3377# define YYSTACK_ALLOC __builtin_alloca
3378# elif defined __BUILTIN_VA_ARG_INCR
3379# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
3381# define YYSTACK_ALLOC __alloca
3382# elif defined _MSC_VER
3383# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
3384# define alloca _alloca
3386# define YYSTACK_ALLOC alloca
3387# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
3388# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
3389 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
3390# ifndef EXIT_SUCCESS
3391# define EXIT_SUCCESS 0
3398# ifdef YYSTACK_ALLOC
3399 /* Pacify GCC's
'empty if-body' warning. */
3400# define YYSTACK_FREE(Ptr) do { ; } while (0)
3401# ifndef YYSTACK_ALLOC_MAXIMUM
3406# define YYSTACK_ALLOC_MAXIMUM 4032
3409# define YYSTACK_ALLOC YYMALLOC
3410# define YYSTACK_FREE YYFREE
3411# ifndef YYSTACK_ALLOC_MAXIMUM
3412# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
3414# if (defined __cplusplus && ! defined EXIT_SUCCESS \
3415 && ! ((defined YYMALLOC || defined malloc) \
3416 && (defined YYFREE || defined free)))
3418# ifndef EXIT_SUCCESS
3419# define EXIT_SUCCESS 0
3423# define YYMALLOC malloc
3424# if ! defined malloc && ! defined EXIT_SUCCESS
3425void *malloc (YYSIZE_T);
3430# if ! defined free && ! defined EXIT_SUCCESS
3437#if (! defined yyoverflow \
3438 && (! defined __cplusplus \
3439 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
3440 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
3445 yy_state_t yyss_alloc;
3451# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
3455# define YYSTACK_BYTES(N) \
3456 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
3457 + YYSIZEOF (YYLTYPE)) \
3458 + 2 * YYSTACK_GAP_MAXIMUM)
3460# define YYCOPY_NEEDED 1
3467# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
3470 YYPTRDIFF_T yynewbytes; \
3471 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
3472 Stack = &yyptr->Stack_alloc; \
3473 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
3474 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
3480#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
3484# if defined __GNUC__ && 1 < __GNUC__
3485# define YYCOPY(Dst, Src, Count) \
3486 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
3488# define YYCOPY(Dst, Src, Count) \
3492 for (yyi = 0; yyi < (Count); yyi++) \
3493 (Dst)[yyi] = (Src)[yyi]; \
3506#define YYNTOKENS 162
3512#define YYNSTATES 1386
3515#define YYMAXUTOK 361
3520#define YYTRANSLATE(YYX) \
3521 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
3522 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
3527static const yytype_uint8 yytranslate[] =
3529 0, 2, 2, 2, 2, 2, 2, 2, 2, 72,
3530 154, 75, 73, 74, 2, 2, 2, 2, 2, 2,
3531 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3532 2, 2, 161, 148, 2, 2, 2, 146, 141, 2,
3533 157, 158, 144, 142, 155, 143, 69, 145, 2, 2,
3534 2, 2, 2, 2, 2, 2, 2, 2, 136, 160,
3535 138, 134, 137, 135, 2, 2, 2, 2, 2, 2,
3536 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3537 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3538 2, 153, 70, 159, 140, 2, 156, 2, 2, 2,
3539 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3540 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3541 2, 2, 2, 151, 139, 152, 149, 2, 89, 90,
3542 91, 92, 76, 77, 78, 79, 95, 96, 84, 83,
3543 80, 81, 82, 87, 88, 93, 94, 98, 85, 86,
3544 97, 2, 2, 2, 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, 2, 2, 2, 2, 2, 2, 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, 2, 2, 2, 2, 2, 2, 2,
3551 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3552 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3553 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3554 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
3555 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3556 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
3557 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
3558 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
3559 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
3560 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
3561 65, 66, 67, 68, 71, 99, 100, 101, 102, 103,
3562 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
3563 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
3564 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
3570static const yytype_int16 yyrline[] =
3572 0, 3167, 3161, 3167, 3167, 3167, 3167, 3187, 3192, 3197,
3573 3204, 3209, 3216, 3218, 3236, 3232, 3237, 3236, 3248, 3245,
3574 3258, 3263, 3268, 3275, 3277, 3276, 3286, 3288, 3295, 3295,
3575 3300, 3305, 3313, 3322, 3329, 3335, 3341, 3352, 3363, 3372,
3576 3386, 3387, 3392, 3392, 3393, 3404, 3409, 3410, 3417, 3417,
3577 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3419,
3578 3419, 3419, 3422, 3423, 3429, 3429, 3429, 3436, 3437, 3444,
3579 3447, 3448, 3453, 3458, 3463, 3469, 3468, 3484, 3483, 3498,
3580 3501, 3512, 3522, 3521, 3535, 3535, 3536, 3542, 3542, 3542,
3581 3549, 3550, 3553, 3553, 3556, 3557, 3564, 3572, 3572, 3572,
3582 3579, 3586, 3595, 3600, 3605, 3610, 3615, 3621, 3627, 3633,
3583 3638, 3645, 3654, 3655, 3662, 3663, 3670, 3675, 3680, 3685,
3584 3685, 3685, 3690, 3695, 3700, 3705, 3710, 3715, 3722, 3723,
3585 3730, 3735, 3743, 3743, 3748, 3753, 3753, 3759, 3764, 3769,
3586 3774, 3782, 3782, 3787, 3792, 3792, 3797, 3802, 3807, 3812,
3587 3820, 3828, 3831, 3836, 3841, 3848, 3848, 3848, 3849, 3854,
3588 3857, 3862, 3865, 3870, 3870, 3878, 3879, 3880, 3881, 3882,
3589 3883, 3884, 3885, 3886, 3887, 3888, 3889, 3890, 3891, 3892,
3590 3893, 3894, 3895, 3896, 3897, 3898, 3899, 3900, 3901, 3902,
3591 3903, 3904, 3905, 3906, 3907, 3910, 3910, 3910, 3911, 3911,
3592 3912, 3912, 3912, 3913, 3913, 3913, 3913, 3914, 3914, 3914,
3593 3914, 3915, 3915, 3915, 3916, 3916, 3916, 3916, 3917, 3917,
3594 3917, 3917, 3918, 3918, 3918, 3918, 3919, 3919, 3919, 3919,
3595 3920, 3920, 3920, 3920, 3921, 3921, 3924, 3924, 3925, 3925,
3596 3925, 3925, 3925, 3925, 3925, 3925, 3925, 3926, 3926, 3926,
3597 3926, 3926, 3926, 3926, 3927, 3932, 3937, 3942, 3947, 3952,
3598 3957, 3962, 3967, 3972, 3977, 3982, 3987, 3992, 3993, 3998,
3599 4003, 4008, 4013, 4018, 4023, 4028, 4033, 4038, 4043, 4048,
3600 4055, 4055, 4055, 4056, 4057, 4060, 4069, 4070, 4076, 4083,
3601 4084, 4085, 4086, 4089, 4094, 4102, 4108, 4115, 4122, 4122,
3602 4125, 4126, 4127, 4132, 4139, 4144, 4153, 4158, 4168, 4180,
3603 4181, 4187, 4188, 4189, 4190, 4195, 4202, 4202, 4207, 4212,
3604 4217, 4223, 4229, 4233, 4233, 4271, 4276, 4284, 4289, 4297,
3605 4302, 4307, 4312, 4320, 4325, 4334, 4335, 4339, 4344, 4349,
3606 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4368, 4369,
3607 4370, 4376, 4375, 4388, 4388, 4394, 4400, 4405, 4410, 4415,
3608 4421, 4426, 4431, 4436, 4441, 4448, 4453, 4458, 4463, 4464,
3609 4470, 4472, 4484, 4493, 4502, 4511, 4510, 4525, 4524, 4537,
3610 4545, 4545, 4546, 4590, 4589, 4612, 4611, 4631, 4630, 4649,
3611 4647, 4664, 4662, 4677, 4682, 4687, 4692, 4707, 4707, 4710,
3612 4717, 4735, 4742, 4750, 4758, 4765, 4773, 4782, 4791, 4799,
3613 4806, 4813, 4821, 4828, 4834, 4849, 4856, 4861, 4867, 4874,
3614 4881, 4882, 4883, 4886, 4887, 4890, 4892, 4901, 4902, 4909,
3615 4910, 4913, 4918, 4926, 4926, 4926, 4931, 4936, 4941, 4946,
3616 4953, 4959, 4966, 4967, 4974, 4974, 4976, 4976, 4976, 4976,
3617 4976, 4976, 4976, 4976, 4976, 4979, 4979, 4979, 4982, 4990,
3618 4990, 4990, 4990, 4990, 4990, 4990, 4990, 4990, 4990, 4990,
3619 4990, 4990, 4990, 4990, 4990, 4991, 4997, 5002, 5002, 5005,
3620 5006, 5012, 5022, 5026, 5029, 5034, 5041, 5043, 5047, 5052,
3621 5055, 5061, 5066, 5073, 5079, 5072, 5106, 5113, 5122, 5129,
3622 5128, 5139, 5147, 5159, 5169, 5175, 5180, 5188, 5195, 5206,
3623 5212, 5217, 5223, 5233, 5238, 5246, 5252, 5260, 5262, 5277,
3624 5277, 5298, 5304, 5309, 5315, 5323, 5332, 5333, 5336, 5337,
3625 5339, 5352, 5359, 5367, 5368, 5371, 5372, 5378, 5386, 5387,
3626 5393, 5399, 5404, 5409, 5416, 5419, 5426, 5430, 5429, 5442,
3627 5445, 5452, 5459, 5460, 5461, 5468, 5475, 5482, 5488, 5495,
3628 5502, 5509, 5515, 5520, 5525, 5532, 5531, 5542, 5548, 5556,
3629 5562, 5567, 5572, 5577, 5582, 5585, 5586, 5593, 5598, 5605,
3630 5613, 5619, 5626, 5627, 5634, 5641, 5646, 5651, 5656, 5663,
3631 5665, 5672, 5678, 5690, 5691, 5706, 5711, 5718, 5724, 5725,
3632 5732, 5733, 5733, 5733, 5733, 5733, 5733, 5733, 5734, 5735,
3633 5736, 5739, 5739, 5739, 5739, 5739, 5739, 5739, 5739, 5740,
3634 5745, 5748, 5756, 5768, 5775, 5782, 5787, 5792, 5800, 5820,
3635 5823, 5828, 5832, 5835, 5840, 5843, 5850, 5853, 5854, 5857,
3636 5869, 5870, 5871, 5878, 5891, 5903, 5910, 5910, 5910, 5910,
3637 5914, 5918, 5925, 5927, 5934, 5934, 5938, 5942, 5949, 5949,
3638 5952, 5952, 5956, 5960, 5968, 5972, 5980, 5984, 5992, 5996,
3639 6004, 6008, 6034, 6037, 6036, 6051, 6059, 6063, 6067, 6082,
3640 6083, 6086, 6091, 6094, 6095, 6098, 6114, 6115, 6118, 6126,
3641 6127, 6135, 6136, 6137, 6138, 6141, 6142, 6143, 6146, 6146,
3642 6147, 6150, 6151, 6152, 6153, 6154, 6155, 6156, 6159, 6169,
3643 6176, 6176, 6183, 6184, 6188, 6187, 6197, 6200, 6201, 6208,
3644 6215, 6225, 6226, 6226, 6243, 6243, 6243, 6243, 6243, 6243,
3645 6243, 6243, 6243, 6244, 6332, 6332, 6332, 6335, 6335, 6335,
3646 6335, 6335, 6335, 6335, 6335, 6335, 6335, 6335, 6335, 6335,
3647 6335, 6335, 6335, 6336, 6341, 6341, 6342, 6346, 6353, 6362,
3648 6371, 6380, 6391, 6392, 6402, 6409, 6414, 6433, 6435, 6446,
3649 6466, 6467, 6470, 6476, 6482, 6490, 6491, 6494, 6500, 6508,
3650 6509, 6512, 6518, 6523, 6531, 6536, 6540, 6540, 6570, 6572,
3651 6571, 6584, 6585, 6592, 6594, 6619, 6624, 6629, 6636, 6642,
3652 6647, 6660, 6660, 6660, 6661, 6664, 6665, 6666, 6669, 6670,
3653 6673, 6674, 6677, 6678, 6681, 6684, 6687, 6690, 6691, 6694,
3654 6702, 6709, 6710, 6714
3659#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
3664static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
3668static const char *
const yytname[] =
3670 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"'class'\"",
3671 "\"'module'\"",
"\"'def'\"",
"\"'undef'\"",
"\"'begin'\"",
3672 "\"'rescue'\"",
"\"'ensure'\"",
"\"'end'\"",
"\"'if'\"",
"\"'unless'\"",
3673 "\"'then'\"",
"\"'elsif'\"",
"\"'else'\"",
"\"'case'\"",
"\"'when'\"",
3674 "\"'while'\"",
"\"'until'\"",
"\"'for'\"",
"\"'break'\"",
"\"'next'\"",
3675 "\"'redo'\"",
"\"'retry'\"",
"\"'in'\"",
"\"'do'\"",
3676 "\"'do' for condition\"",
"\"'do' for block\"",
"\"'do' for lambda\"",
3677 "\"'return'\"",
"\"'yield'\"",
"\"'super'\"",
"\"'self'\"",
"\"'nil'\"",
3678 "\"'true'\"",
"\"'false'\"",
"\"'and'\"",
"\"'or'\"",
"\"'not'\"",
3679 "\"'if' modifier\"",
"\"'unless' modifier\"",
"\"'while' modifier\"",
3680 "\"'until' modifier\"",
"\"'rescue' modifier\"",
"\"'alias'\"",
3681 "\"'defined?'\"",
"\"'BEGIN'\"",
"\"'END'\"",
"\"'__LINE__'\"",
3682 "\"'__FILE__'\"",
"\"'__ENCODING__'\"",
"\"local variable or method\"",
3683 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
3684 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
3685 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
3686 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
3687 "\"literal content\"",
"tREGEXP_END",
"\"dummy end\"",
"'.'",
3688 "\"backslash\"",
"\"escaped space\"",
"\"escaped horizontal tab\"",
3689 "\"escaped form feed\"",
"\"escaped carriage return\"",
3690 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
3691 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
3692 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
3693 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
3694 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
3695 "\"( arg\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
"\"**arg\"",
3696 "\"&\"",
"\"->\"",
"\"symbol literal\"",
"\"string literal\"",
3697 "\"backtick literal\"",
"\"regexp literal\"",
"\"word list\"",
3698 "\"verbatim word list\"",
"\"symbol list\"",
"\"verbatim symbol list\"",
3699 "\"terminator\"",
"\"'}'\"",
"\"'#{'\"",
"tSTRING_DVAR",
"tLAMBEG",
3700 "tLABEL_END",
"tIGNORED_NL",
"tCOMMENT",
"tEMBDOC_BEG",
"tEMBDOC",
3701 "tEMBDOC_END",
"tHEREDOC_BEG",
"tHEREDOC_END",
"k__END__",
"tLOWEST",
3702 "'='",
"'?'",
"':'",
"'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
3703 "'*'",
"'/'",
"'%'",
"tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
3704 "'}'",
"'['",
"'\\n'",
"','",
"'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
3705 "$accept",
"option_terms",
"compstmt_top_stmts",
"$@1",
"program",
3706 "top_stmts",
"top_stmt",
"block_open",
"begin_block",
"compstmt_stmts",
3707 "$@2",
"$@3",
"bodystmt",
"$@4",
"stmts",
"stmt_or_begin",
"$@5",
3708 "allow_exits",
"k_END",
"$@6",
"stmt",
"asgn_mrhs",
"asgn_command_rhs",
3709 "command_asgn",
"op_asgn_command_rhs",
3710 "def_endless_method_endless_command",
"endless_command",
"option_'\\n'",
3711 "command_rhs",
"expr",
"$@7",
"$@8",
"def_name",
"defn_head",
"$@9",
3712 "defs_head",
"value_expr_expr",
"expr_value",
"$@10",
"$@11",
3713 "expr_value_do",
"command_call",
"value_expr_command_call",
3714 "command_call_value",
"block_command",
"cmd_brace_block",
"fcall",
3715 "command",
"mlhs",
"mlhs_inner",
"mlhs_basic",
"mlhs_items_mlhs_item",
3716 "mlhs_item",
"mlhs_head",
"mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
3717 "fitem",
"undef_list",
"$@12",
"op",
"reswords",
"asgn_arg_rhs",
"arg",
3718 "op_asgn_arg_rhs",
"range_expr_arg",
"def_endless_method_endless_arg",
3719 "ternary",
"endless_arg",
"relop",
"rel_expr",
"lex_ctxt",
3720 "begin_defined",
"after_rescue",
"value_expr_arg",
"arg_value",
3721 "aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
"opt_call_args",
3722 "value_expr_command",
"call_args",
"$@13",
"command_args",
"block_arg",
3723 "opt_block_arg",
"args",
"arg_splat",
"mrhs_arg",
"mrhs",
"primary",
3724 "$@14",
"$@15",
"@16",
"@17",
"$@18",
"$@19",
"$@20",
"$@21",
"$@22",
3725 "$@23",
"$@24",
"value_expr_primary",
"primary_value",
"k_begin",
"k_if",
3726 "k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
3727 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
3728 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"k_yield",
"then",
3729 "do",
"if_tail",
"opt_else",
"for_var",
"f_marg",
"mlhs_items_f_marg",
3730 "f_margs",
"f_rest_marg",
"f_any_kwrest",
"$@25",
"f_eq",
3731 "f_kw_primary_value",
"f_kwarg_primary_value",
3732 "args_tail_basic_primary_value",
"block_args_tail",
3733 "opt_args_tail_block_args_tail",
"block_args-opt_tail",
"excessed_comma",
3734 "f_opt_primary_value",
"f_opt_arg_primary_value",
3735 "args-list_primary_value_block_args-opt_tail",
"block_param",
3736 "tail-only-args_block_args_tail",
"opt_block_param_def",
3737 "block_param_def",
"opt_block_param",
"opt_bv_decl",
"bv_decls",
"bvar",
3738 "max_numparam",
"numparam",
"it_id",
"@26",
"$@27",
"lambda",
3739 "f_larglist",
"lambda_body",
"$@28",
"do_block",
"block_call",
3740 "method_call",
"brace_block",
"@29",
"brace_body",
"@30",
"do_body",
3741 "case_args",
"case_body",
"cases",
"p_pvtbl",
"p_pktbl",
"p_in_kwarg",
3742 "$@31",
"p_case_body",
"p_cases",
"p_top_expr",
"p_top_expr_body",
3743 "p_expr",
"p_as",
"$@32",
"p_alt",
"p_lparen",
"p_lbracket",
3744 "p_expr_basic",
"$@33",
"p_args",
"p_args_head",
"p_args_tail",
"p_find",
3745 "p_rest",
"p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
3746 "p_kw_label",
"p_kwrest",
"p_kwnorest",
"p_any_kwrest",
"p_value",
3747 "range_expr_p_primitive",
"p_primitive",
"p_variable",
"p_var_ref",
3748 "p_expr_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
3749 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
3750 "regexp",
"nonempty_list_' '",
"words_tWORDS_BEG_word_list",
"words",
3751 "word_list",
"word",
"words_tSYMBOLS_BEG_symbol_list",
"symbols",
3752 "symbol_list",
"words_tQWORDS_BEG_qword_list",
"qwords",
3753 "words_tQSYMBOLS_BEG_qsym_list",
"qsymbols",
"qword_list",
"qsym_list",
3754 "string_contents",
"xstring_contents",
"regexp_contents",
3755 "string_content",
"@34",
"@35",
"@36",
"@37",
"string_dend",
3756 "string_dvar",
"symbol",
"ssym",
"sym",
"dsym",
"numeric",
3757 "simple_numeric",
"nonlocal_var",
"user_variable",
"keyword_variable",
3758 "var_ref",
"var_lhs",
"backref",
"$@38",
"superclass",
3759 "f_opt_paren_args",
"f_empty_arg",
"f_paren_args",
"f_arglist",
"@39",
3760 "f_kw_arg_value",
"f_kwarg_arg_value",
"args_tail_basic_arg_value",
3761 "args_tail",
"opt_args_tail_args_tail",
"f_args-opt_tail",
3762 "f_opt_arg_value",
"f_opt_arg_arg_value",
3763 "args-list_arg_value_f_args-opt_tail",
"f_args",
3764 "tail-only-args_args_tail",
"args_forward",
"f_bad_arg",
"f_norm_arg",
3765 "f_arg_asgn",
"f_arg_item",
"f_arg",
"f_label",
"kwrest_mark",
3766 "f_no_kwarg",
"f_kwrest",
"restarg_mark",
"f_rest_arg",
"blkarg_mark",
3767 "f_block_arg",
"opt_f_block_arg",
"value_expr_singleton_expr",
3768 "singleton",
"singleton_expr",
"$@40",
"assoc_list",
"assocs",
"assoc",
3769 "operation2",
"operation3",
"dot_or_colon",
"call_op",
"call_op2",
3770 "rparen",
"rbracket",
"rbrace",
"trailer",
"term",
"terms",
"none", YY_NULLPTR
3774yysymbol_name (yysymbol_kind_t yysymbol)
3776 return yytname[yysymbol];
3780#define YYPACT_NINF (-1142)
3782#define yypact_value_is_default(Yyn) \
3783 ((Yyn) == YYPACT_NINF)
3785#define YYTABLE_NINF (-824)
3787#define yytable_value_is_error(Yyn) \
3788 ((Yyn) == YYTABLE_NINF)
3792static const yytype_int16 yypact[] =
3794 -1142, 6313, 179, -1142, -1142, -1142, -1142, 10926, -1142, -1142,
3795 -1142, -1142, -1142, -1142, -1142, 11981, 11981, -1142, -1142, -1142,
3796 -1142, 7215, -1142, -1142, -1142, -1142, 694, 10772, 99, 119,
3797 -1142, -1142, -1142, -1142, 6591, 7371, -1142, -1142, 6747, -1142,
3798 -1142, -1142, -1142, -1142, -1142, -1142, -1142, 13541, 13541, 13541,
3799 13541, 281, 9685, 9843, 12461, 12701, 11227, -1142, 10618, -1142,
3800 -1142, -1142, 265, 265, 265, 265, 1291, 13661, 13541, -1142,
3801 517, -1142, -1142, 1302, -1142, -1142, -1142, -1142, -1142, 166,
3802 250, 250, -1142, -1142, 442, 452, 359, -1142, 345, 14261,
3803 -1142, 391, -1142, 3092, -1142, -1142, -1142, -1142, 1030, 485,
3804 -1142, 551, -1142, 11861, 11861, -1142, -1142, 10305, 14379, 14497,
3805 14615, 10463, 11981, 7839, -1142, 804, 95, -1142, -1142, 436,
3806 -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142,
3807 -1142, -1142, -1142, -1142, -1142, -1142, -1142, 35, 405, -1142,
3808 474, 410, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142,
3809 -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142,
3810 -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142,
3811 -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142,
3812 -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142,
3813 -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142,
3814 -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142,
3815 -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142,
3816 426, -1142, -1142, -1142, -1142, -1142, -1142, 476, 13541, 584,
3817 9843, 13541, 13541, 13541, -1142, 13541, -1142, -1142, 473, 5382,
3818 -1142, 549, -1142, -1142, -1142, 547, -1142, 638, 67, 82,
3819 613, 357, 564, -1142, -1142, 12101, -1142, 11981, -1142, -1142,
3820 11602, 13781, 116, -1142, 576, -1142, 10001, -1142, -1142, -1142,
3821 -1142, -1142, 593, 250, 250, 442, -1142, 669, -1142, 611,
3822 692, 6561, 6561, 472, -1142, 9685, 629, 517, -1142, 1302,
3823 99, 663, -1142, -1142, 648, 706, 750, -1142, 549, 672,
3824 750, -1142, 99, 759, 1291, 14733, 688, 688, 713, -1142,
3825 675, 677, 735, 810, -1142, -1142, 326, -1142, -1142, 745,
3826 833, 118, -1142, 709, 709, 709, 709, 841, -1142, -1142,
3827 -1142, -1142, -1142, -1142, -1142, 6465, 734, 11861, 11861, 11861,
3828 11861, -1142, 13781, 13781, 1852, 778, -1142, 789, -1142, 1852,
3829 791, -1142, -1142, -1142, -1142, 836, -1142, -1142, -1142, -1142,
3830 -1142, -1142, -1142, 9685, 11345, 794, -1142, -1142, 13541, 13541,
3831 13541, 13541, 13541, -1142, -1142, 13541, 13541, 13541, 13541, 13541,
3832 13541, 13541, 13541, -1142, 13541, -1142, -1142, 13541, 13541, 13541,
3833 13541, 13541, 13541, 13541, 13541, 13541, 13541, -1142, -1142, 5303,
3834 11981, 15013, 593, 8621, -1142, 166, -1142, 153, 153, 11861,
3835 9533, 9533, -1142, 517, 784, 890, -1142, -1142, 868, 937,
3836 123, 124, 143, 800, 824, 11861, 807, -1142, 818, 874,
3837 -1142, -1142, -1142, -1142, 85, 128, 488, 565, 612, 691,
3838 695, 702, 760, -1142, -1142, -1142, -1142, -1142, 774, -1142,
3839 -1142, 11463, -1142, -1142, -1142, 5184, -1142, -1142, -1142, -1142,
3840 -1142, -1142, 365, -1142, -1142, -1142, 662, -1142, 13541, 12221,
3841 -1142, -1142, 15111, 11981, 15209, -1142, -1142, 12581, -1142, 13541,
3842 99, -1142, 813, 99, 823, -1142, -1142, 815, 94, -1142,
3843 -1142, -1142, -1142, -1142, 10926, -1142, -1142, 13541, 830, 872,
3844 877, 15307, 15209, -1142, 119, 99, -1142, -1142, 5856, 857,
3845 866, -1142, 12461, -1142, -1142, 12701, -1142, -1142, -1142, 576,
3846 889, -1142, 875, -1142, -1142, 14733, 15405, 11981, 15503, -1142,
3847 -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142,
3848 -1142, 998, 111, 1008, 266, 13541, -1142, -1142, 10153, -1142,
3849 -1142, -1142, -1142, -1142, 11741, -1142, -1142, -1142, -1142, -1142,
3850 -1142, -1142, -1142, -1142, -1142, 1123, -1142, -1142, -1142, -1142,
3851 -1142, 880, -1142, -1142, -1142, 884, -1142, -1142, -1142, 888,
3852 -1142, 99, -1142, -1142, -1142, -1142, 920, -1142, 903, 13541,
3853 347, -1142, -1142, 1003, 910, 443, -1142, 13901, 8621, 517,
3854 13901, 8621, -1142, 917, -1142, -1142, -1142, 168, 168, 12821,
3855 99, 14733, 915, -1142, 12941, -1142, 692, 3611, 3611, 3611,
3856 3611, 4287, 3751, 3611, 3611, 6561, 6561, 738, 738, -1142,
3857 4066, 1245, 1245, 1465, 607, 607, 692, 692, 692, 1067,
3858 1067, 7995, 6903, 8307, 7059, 593, -1142, 99, 921, 484,
3859 -1142, 491, -1142, 7527, -1142, -1142, 168, -1142, 8773, 1064,
3860 9229, 229, 168, 168, 1063, 1060, 148, 15601, 11981, 15699,
3861 -1142, -1142, -1142, 889, -1142, -1142, -1142, -1142, 15797, 11981,
3862 15895, 8621, 13781, -1142, -1142, -1142, 99, -1142, -1142, -1142,
3863 -1142, 3453, 14021, 14021, 10926, -1142, 13541, 13541, -1142, 549,
3864 -1142, -1142, 564, 5595, 7683, 99, 392, 445, 13541, 13541,
3865 -1142, -1142, 12341, -1142, 12581, -1142, -1142, -1142, 13781, 5382,
3866 -1142, 14141, 14141, 53, 593, 593, 14021, -1142, 272, -1142,
3867 -1142, 750, 14733, 875, 317, 661, 99, 97, 375, -1142,
3868 -1142, 1018, -1142, 71, -1142, 265, -1142, -1142, 71, 265,
3869 -1142, 692, 945, -1142, 1123, 1216, -1142, 933, 99, 943,
3870 -1142, 367, -1142, -1142, 938, -1142, 1852, -1142, -1142, -1142,
3871 969, 13541, 1852, -1142, -1142, -1142, -1142, -1142, 1988, -1142,
3872 -1142, -1142, 694, 1062, -1142, 5382, 1066, 168, -1142, 1062,
3873 1066, 168, -1142, -1142, 959, -1142, -1142, -1142, -1142, -1142,
3874 13541, -1142, -1142, -1142, 957, 961, 1077, -1142, -1142, 875,
3875 14733, 1069, -1142, -1142, 1082, 999, 4744, -1142, -1142, -1142,
3876 931, 536, -1142, -1142, 996, -1142, -1142, -1142, -1142, 836,
3877 975, 679, 12221, -1142, -1142, -1142, -1142, 836, -1142, 1128,
3878 -1142, 924, -1142, 1131, -1142, -1142, -1142, -1142, -1142, -1142,
3879 13061, 168, -1142, 1063, 168, 225, 297, 99, 174, 192,
3880 11861, 517, 11861, 8621, 900, 661, -1142, 99, 168, 94,
3881 11080, -1142, 95, 452, -1142, 5010, -1142, -1142, -1142, -1142,
3882 13541, -1142, -1142, -1142, -1142, 554, -1142, -1142, 99, 997,
3883 94, 694, -1142, -1142, -1142, -1142, 477, -1142, -1142, -1142,
3884 -1142, -1142, 709, -1142, 709, 709, 709, -1142, 99, -1142,
3885 1123, -1142, 1188, -1142, -1142, 1103, 880, -1142, -1142, 1001,
3886 1015, -1142, -1142, 1016, -1142, 1017, -1142, 1001, 13901, -1142,
3887 -1142, -1142, -1142, -1142, -1142, -1142, 1019, 13181, -1142, 875,
3888 566, -1142, -1142, -1142, 15993, 11981, 16091, -1142, -1142, 13541,
3889 14021, 14021, 1035, -1142, -1142, -1142, 14021, 14021, -1142, -1142,
3890 13301, 1131, -1142, -1142, -1142, 9533, 11861, 168, -1142, -1142,
3891 168, -1142, 13541, -1142, 151, -1142, -1142, 168, -1142, 212,
3892 229, 8621, 517, 168, -1142, -1142, -1142, -1142, -1142, -1142,
3893 13541, 13541, -1142, 13541, 13541, -1142, 12581, -1142, 14141, 1690,
3894 6161, -1142, -1142, 1029, 1040, -1142, 1988, -1142, 1988, -1142,
3895 1852, -1142, 1988, -1142, -1142, 1062, 1066, 13541, 13541, -1142,
3896 -1142, 13541, 1043, 11741, 11741, 14021, 13541, 8151, 8463, 99,
3897 598, 656, 5977, 5977, 5382, -1142, -1142, -1142, -1142, -1142,
3898 14021, -1142, -1142, -1142, -1142, 957, -1142, 1089, -1142, 1190,
3899 -1142, -1142, 153, -1142, -1142, -1142, 13421, 8925, -1142, -1142,
3900 -1142, 168, -1142, -1142, 13541, 1852, -1142, -1142, 129, 1188,
3901 1188, 1001, 1001, 1046, 1001, 5382, 5382, 1065, 1065, 1019,
3902 -1142, -1142, 5382, 676, -1142, -1142, -1142, 1453, 1453, 834,
3903 -1142, 3762, 6, 1151, -1142, 1210, -1142, -1142, 60, -1142,
3904 1080, -1142, -1142, -1142, 1050, -1142, 1068, -1142, 4549, -1142,
3905 -1142, -1142, -1142, -1142, 871, -1142, -1142, -1142, 65, -1142,
3906 -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, 567, -1142,
3907 -1142, -1142, 14851, 153, -1142, -1142, 9533, -1142, -1142, 9381,
3908 8773, 13541, -1142, 438, 5977, 9533, -1142, 99, 104, -1142,
3909 -1142, -1142, 1040, -1142, -1142, 1988, -1142, -1142, 1612, 10153,
3910 -1142, -1142, 8621, -1142, -1142, -1142, -1142, 4549, 88, 99,
3911 3995, -1142, 99, 1071, -1142, 1072, -1142, -1142, -1142, 812,
3912 -1142, 11861, -1142, 1175, 3995, -1142, 4549, 816, 1132, 1453,
3913 1453, 834, 455, 560, 5977, 5977, -1142, 1173, -1142, 936,
3914 198, 211, 215, 8621, 517, -1142, 924, -1142, -1142, -1142,
3915 -1142, 153, 944, 168, 1078, 1079, -1142, 10153, -1142, 1001,
3916 880, -1142, 1084, -1142, -1142, -1142, 1091, -1142, -1142, -1142,
3917 99, 920, 1095, 14969, 1100, -1142, -1142, -1142, 254, -1142,
3918 1132, 1102, 1106, -1142, -1142, -1142, -1142, -1142, 99, -1142,
3919 -1142, 1111, 4549, 1120, -1142, -1142, -1142, -1142, -1142, -1142,
3920 -1142, -1142, -1142, -1142, -1142, 99, 99, 99, 99, 99,
3921 99, 268, 16189, 11981, 16287, 1128, -1142, 1190, -1142, -1142,
3922 11861, 11861, -1142, 1259, -1142, 8621, 1124, -1142, -1142, 938,
3923 -1142, 1612, -1142, -1142, 1141, 14969, 1612, -1142, -1142, 1227,
3924 940, 1824, -1142, -1142, 4549, -1142, 816, -1142, 4549, -1142,
3925 3995, 699, -1142, -1142, -1142, -1142, -1142, -1142, 107, 196,
3926 99, 277, 289, -1142, -1142, 9077, -1142, -1142, -1142, 837,
3927 -1142, -1142, 168, -1142, -1142, 880, -1142, -1142, 1127, 1130,
3928 -1142, 940, 1133, 1137, -1142, 16385, 1127, 1138, 99, 1138,
3929 -1142, -1142, 328, 376, 1259, -1142, -1142, -1142, 1824, -1142,
3930 1824, -1142, 1612, -1142, 1824, -1142, 1129, 1143, -1142, 4549,
3931 -1142, -1142, -1142, -1142, -1142, 1127, 1127, 1140, 1127, -1142,
3932 -1142, 1824, -1142, -1142, 1127, -1142
3938static const yytype_int16 yydefact[] =
3940 2, 0, 0, 47, 406, 407, 408, 0, 399, 400,
3941 401, 404, 26, 26, 26, 393, 394, 395, 396, 418,
3942 419, 323, 702, 701, 703, 704, 64, 0, 64, 0,
3943 823, 706, 705, 707, 97, 99, 696, 695, 98, 697,
3944 691, 692, 693, 694, 640, 712, 713, 0, 0, 0,
3945 0, 0, 0, 0, 823, 823, 126, 493, 666, 666,
3946 668, 670, 0, 0, 0, 0, 0, 0, 0, 6,
3947 3, 8, 26, 10, 43, 49, 40, 58, 61, 46,
3948 722, 722, 70, 91, 323, 90, 0, 112, 0, 116,
3949 128, 0, 237, 79, 246, 253, 282, 283, 267, 284,
3950 398, 0, 351, 0, 0, 87, 87, 0, 0, 0,
3951 0, 0, 360, 323, 370, 94, 368, 340, 341, 639,
3952 641, 342, 343, 649, 344, 655, 346, 659, 345, 661,
3953 347, 638, 683, 684, 637, 689, 700, 708, 709, 348,
3954 0, 349, 7, 1, 205, 216, 206, 229, 202, 222,
3955 212, 211, 232, 233, 227, 210, 209, 204, 230, 234,
3956 235, 214, 203, 217, 221, 223, 215, 208, 224, 231,
3957 226, 225, 218, 228, 213, 201, 220, 219, 200, 207,
3958 198, 199, 195, 196, 197, 155, 157, 156, 190, 191,
3959 186, 168, 169, 170, 177, 174, 176, 171, 172, 192,
3960 193, 178, 179, 183, 187, 173, 175, 165, 166, 167,
3961 180, 181, 182, 184, 185, 188, 189, 194, 160, 162,
3962 33, 158, 159, 161, 402, 403, 405, 0, 797, 0,
3963 0, 334, 800, 326, 666, 0, 318, 316, 0, 298,
3964 299, 329, 317, 110, 322, 823, 330, 0, 708, 709,
3965 0, 349, 823, 793, 111, 823, 512, 0, 107, 65,
3966 64, 0, 0, 28, 823, 12, 0, 11, 27, 295,
3967 393, 394, 513, 722, 722, 0, 261, 0, 360, 363,
3968 262, 251, 252, 357, 24, 0, 0, 3, 21, 23,
3969 64, 114, 20, 353, 0, 64, 64, 300, 0, 0,
3970 64, 791, 64, 0, 0, 0, 722, 722, 124, 397,
3971 0, 132, 133, 140, 490, 686, 0, 685, 687, 0,
3972 0, 0, 646, 650, 662, 656, 664, 690, 74, 273,
3973 274, 820, 819, 5, 821, 0, 0, 0, 0, 0,
3974 0, 823, 0, 0, 719, 0, 718, 721, 389, 719,
3975 0, 391, 409, 517, 507, 100, 519, 367, 410, 519,
3976 502, 823, 130, 0, 122, 117, 823, 77, 0, 0,
3977 0, 0, 0, 291, 292, 0, 0, 0, 0, 249,
3978 250, 0, 0, 75, 0, 289, 290, 0, 0, 0,
3979 0, 0, 0, 0, 0, 0, 0, 810, 811, 813,
3980 823, 812, 0, 0, 86, 84, 85, 0, 0, 0,
3981 0, 0, 377, 3, 4, 0, 430, 429, 0, 0,
3982 708, 709, 349, 150, 151, 0, 0, 153, 823, 0,
3983 708, 709, 349, 387, 225, 218, 228, 213, 195, 196,
3984 197, 155, 156, 789, 81, 80, 788, 787, 0, 786,
3985 109, 64, 108, 813, 812, 0, 369, 642, 823, 823,
3986 163, 796, 357, 333, 799, 325, 0, 823, 0, 0,
3987 319, 328, 813, 823, 812, 823, 823, 0, 320, 757,
3988 64, 312, 823, 64, 823, 311, 324, 0, 64, 366,
3989 73, 30, 32, 31, 0, 823, 296, 0, 0, 0,
3990 0, 813, 812, 823, 0, 64, 355, 14, 0, 113,
3991 0, 358, 818, 817, 301, 818, 303, 359, 792, 0,
3992 139, 690, 127, 119, 721, 0, 813, 823, 812, 491,
3993 672, 688, 675, 673, 667, 643, 644, 669, 645, 671,
3994 647, 0, 0, 0, 0, 0, 822, 9, 0, 34,
3995 35, 36, 37, 297, 0, 71, 72, 763, 760, 759,
3996 758, 761, 769, 770, 757, 0, 776, 771, 780, 779,
3997 775, 823, 772, 756, 726, 823, 732, 754, 738, 735,
3998 752, 64, 755, 733, 762, 764, 765, 767, 735, 725,
3999 774, 443, 442, 778, 735, 783, 731, 0, 0, 0,
4000 0, 0, 490, 0, 517, 101, 490, 0, 0, 0,
4001 64, 0, 118, 131, 0, 530, 259, 266, 268, 269,
4002 270, 277, 278, 271, 272, 247, 248, 275, 276, 530,
4003 64, 263, 264, 265, 254, 255, 256, 257, 258, 293,
4004 294, 801, 803, 802, 804, 323, 510, 64, 823, 801,
4005 803, 802, 804, 323, 511, 823, 0, 421, 0, 420,
4006 0, 0, 0, 0, 0, 375, 357, 813, 823, 812,
4007 380, 385, 150, 151, 152, 714, 383, 716, 813, 823,
4008 812, 0, 0, 808, 809, 82, 64, 362, 801, 802,
4009 506, 323, 0, 0, 0, 823, 0, 0, 795, 331,
4010 327, 332, 823, 801, 802, 64, 801, 802, 0, 0,
4011 794, 306, 313, 308, 315, 814, 365, 29, 0, 279,
4012 13, 0, 0, 356, 0, 823, 0, 25, 115, 22,
4013 354, 64, 0, 125, 805, 138, 64, 801, 802, 492,
4014 676, 0, 648, 0, 652, 0, 658, 654, 0, 0,
4015 660, 260, 0, 38, 0, 441, 433, 435, 64, 438,
4016 431, 0, 730, 785, 0, 729, 0, 736, 748, 720,
4017 0, 0, 0, 753, 724, 597, 773, 777, 0, 750,
4018 782, 781, 64, 59, 62, 286, 280, 0, 723, 60,
4019 281, 0, 491, 515, 0, 491, 416, 417, 516, 501,
4020 334, 92, 93, 41, 336, 0, 45, 335, 129, 123,
4021 0, 0, 69, 48, 67, 0, 304, 329, 236, 42,
4022 0, 349, 528, 528, 0, 823, 823, 517, 509, 104,
4023 0, 514, 313, 823, 823, 310, 508, 102, 309, 823,
4024 352, 823, 422, 823, 424, 88, 423, 373, 374, 413,
4025 0, 0, 530, 0, 0, 805, 356, 64, 801, 802,
4026 0, 0, 0, 0, 150, 151, 154, 64, 0, 64,
4027 0, 361, 503, 95, 50, 304, 238, 57, 245, 164,
4028 0, 798, 321, 823, 823, 514, 823, 823, 64, 823,
4029 64, 64, 56, 244, 302, 120, 514, 26, 677, 674,
4030 681, 682, 651, 653, 663, 657, 665, 39, 64, 440,
4031 0, 766, 0, 784, 727, 774, 823, 734, 739, 735,
4032 735, 445, 737, 735, 768, 735, 765, 735, 0, 823,
4033 823, 390, 392, 492, 96, 492, 339, 0, 823, 121,
4034 357, 823, 823, 823, 813, 823, 812, 529, 529, 0,
4035 0, 0, 0, 105, 815, 823, 0, 0, 103, 411,
4036 823, 18, 629, 415, 414, 0, 0, 0, 425, 427,
4037 0, 89, 0, 521, 0, 378, 528, 0, 379, 514,
4038 0, 0, 0, 0, 514, 388, 790, 83, 504, 505,
4039 0, 0, 823, 0, 0, 307, 314, 364, 0, 719,
4040 0, 432, 434, 436, 439, 728, 0, 749, 0, 746,
4041 0, 742, 0, 744, 751, 66, 288, 0, 0, 26,
4042 26, 334, 337, 0, 0, 0, 0, 801, 802, 64,
4043 801, 802, 0, 0, 285, 54, 242, 55, 243, 106,
4044 0, 52, 240, 53, 241, 630, 631, 823, 632, 823,
4045 15, 428, 0, 371, 372, 522, 0, 0, 529, 376,
4046 381, 0, 715, 384, 0, 719, 494, 497, 0, 0,
4047 0, 735, 735, 735, 735, 63, 287, 823, 823, 338,
4048 44, 68, 305, 514, 621, 627, 593, 0, 0, 0,
4049 529, 64, 529, 581, 666, 0, 620, 78, 538, 544,
4050 546, 549, 542, 541, 577, 543, 586, 589, 592, 598,
4051 599, 588, 552, 607, 600, 553, 608, 609, 610, 611,
4052 612, 613, 614, 615, 617, 616, 618, 619, 596, 76,
4053 51, 239, 0, 0, 634, 412, 0, 19, 636, 0,
4054 0, 0, 523, 823, 0, 0, 386, 64, 0, 680,
4055 679, 678, 437, 747, 743, 0, 740, 745, 482, 0,
4056 480, 479, 0, 605, 606, 151, 625, 0, 569, 64,
4057 570, 574, 64, 0, 564, 0, 823, 567, 580, 0,
4058 622, 0, 623, 0, 539, 547, 0, 587, 591, 603,
4059 604, 0, 529, 529, 0, 0, 595, 0, 633, 0,
4060 708, 709, 349, 0, 3, 16, 823, 524, 526, 527,
4061 525, 0, 535, 0, 484, 0, 499, 0, 495, 735,
4062 823, 448, 823, 454, 477, 460, 456, 474, 483, 478,
4063 64, 765, 456, 447, 456, 453, 518, 520, 64, 562,
4064 584, 572, 571, 563, 575, 816, 565, 594, 64, 545,
4065 540, 577, 0, 578, 582, 666, 590, 585, 601, 602,
4066 626, 551, 561, 550, 557, 64, 64, 64, 64, 64,
4067 64, 357, 813, 823, 812, 823, 635, 823, 426, 531,
4068 0, 0, 382, 0, 496, 0, 0, 741, 452, 0,
4069 451, 0, 457, 470, 0, 0, 458, 476, 475, 0,
4070 446, 0, 472, 568, 0, 576, 0, 624, 0, 548,
4071 0, 0, 554, 555, 556, 558, 559, 560, 805, 356,
4072 64, 801, 802, 628, 17, 0, 536, 537, 488, 64,
4073 486, 489, 0, 498, 449, 823, 455, 461, 456, 456,
4074 481, 459, 456, 456, 357, 813, 456, 573, 64, 578,
4075 579, 583, 514, 823, 0, 485, 500, 450, 0, 471,
4076 0, 468, 0, 464, 0, 466, 805, 356, 473, 0,
4077 566, 533, 534, 532, 487, 456, 456, 456, 456, 469,
4078 465, 0, 462, 467, 456, 463
4082static const yytype_int16 yypgoto[] =
4084 -1142, -99, 1036, -1142, -1142, -1142, 963, -1142, 797, -17,
4085 -1142, -1142, -568, -1142, 169, 796, -1142, -2, -1142, -1142,
4086 26, -1142, -1142, -521, -1142, 5, -552, 49, -518, -66,
4087 -1142, -1142, 451, 2956, -1142, 3333, -1142, -21, -1142, -1142,
4088 1200, 69, -1142, 711, -1142, -426, 1369, -10, 1214, -128,
4089 24, -413, -9, -1142, -16, 4079, -403, 1215, -51, 7,
4090 -1142, -1142, -5, -1142, -1142, 5114, -1142, -1142, -1142, -1142,
4091 -508, 1228, -1142, 1032, 838, 72, -1142, 1226, -1142, 456,
4092 58, 646, -386, -1142, 100, -1142, 46, -374, -221, 28,
4093 -373, -1142, -582, 15, -1142, -1142, -1142, -1142, -1142, -1142,
4094 -1142, -1142, -1142, -1142, -1142, -1142, 992, -1142, -1142, -1142,
4095 -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142, -1142,
4096 -1142, -1142, 377, -1142, -456, 2003, 2380, -399, 368, 141,
4097 -815, -1142, -816, -812, 600, 447, 170, -1142, 127, 73,
4098 -1142, -1142, 202, 131, -540, -1142, -1141, 68, -1142, -1142,
4099 -1142, 287, -1142, -1142, 142, -1142, 20, 290, 125, -208,
4100 -1142, -1142, 450, -1142, -1142, -1142, 500, -1142, -1142, -103,
4101 -1142, -526, -1142, 1020, -1142, -807, -1142, -689, -867, -528,
4102 -1142, 22, -1142, -1142, -906, -571, -1142, -1142, -1142, -1142,
4103 -1142, 130, -1142, -3, -1142, -886, -618, -1019, -394, -752,
4104 -711, -1142, 189, -1142, -1142, -566, 190, -1142, -1142, -545,
4105 197, -1142, -1142, -1142, 106, -1142, -1142, 117, 643, 990,
4106 -1142, 1264, 1274, 1429, 0, -1142, 1503, -1142, 853, -1142,
4107 1715, -1142, -1142, 1727, -1142, 1942, -1142, -1142, -58, -1142,
4108 -1142, -177, -1142, -1142, -1142, -1142, -1142, -1142, 12, -1142,
4109 -1142, -1142, -1142, 19, -54, 3910, -1, 1288, 4294, 3718,
4110 -1142, -1142, -32, -288, 697, 47, -1142, 636, -1142, -1142,
4111 -287, -1142, -504, -716, 632, -1142, -323, -1142, -226, -1121,
4112 -466, -302, -698, -640, 70, -659, -1142, -739, -1142, -570,
4113 -1142, -449, -530, -1142, -1142, -1142, -1142, -1142, 43, -404,
4114 -383, -1142, -1142, -91, 1290, 366, -202, 61, -182, -53,
4119static const yytype_int16 yydefgoto[] =
4121 0, 333, 69, 1, 2, 70, 71, 266, 267, 655,
4122 1139, 1277, 656, 1049, 287, 288, 504, 224, 72, 494,
4123 289, 74, 75, 76, 77, 78, 783, 487, 813, 79,
4124 629, 615, 444, 273, 870, 274, 406, 407, 409, 971,
4125 410, 82, 802, 814, 83, 605, 275, 85, 86, 290,
4126 87, 522, 88, 89, 90, 238, 427, 428, 218, 219,
4127 220, 694, 644, 222, 92, 93, 94, 95, 96, 97,
4128 786, 395, 98, 553, 497, 554, 240, 241, 294, 818,
4129 835, 836, 480, 242, 481, 257, 258, 244, 470, 648,
4130 246, 806, 807, 99, 403, 510, 853, 664, 860, 1145,
4131 863, 861, 681, 598, 601, 100, 277, 102, 103, 104,
4132 105, 106, 107, 108, 109, 110, 111, 356, 359, 960,
4133 1136, 850, 965, 966, 798, 278, 279, 658, 845, 967,
4134 968, 419, 756, 757, 758, 759, 571, 770, 771, 1221,
4135 1222, 1223, 1336, 1292, 1293, 1298, 1225, 1226, 1227, 1228,
4136 1229, 1159, 1160, 1230, 1215, 1329, 1330, 529, 739, 897,
4137 314, 1148, 114, 1066, 1218, 1285, 360, 115, 116, 357,
4138 602, 603, 606, 607, 974, 851, 1210, 947, 1032, 822,
4139 1325, 854, 1373, 1211, 1097, 1240, 1099, 1252, 1100, 1194,
4140 1195, 1101, 1306, 1169, 1170, 1171, 1103, 1104, 1253, 1173,
4141 1105, 1106, 1107, 1108, 1109, 572, 1111, 1112, 1113, 1114,
4142 1115, 1116, 1117, 1118, 961, 1047, 1133, 1137, 117, 118,
4143 119, 120, 121, 122, 323, 123, 124, 541, 743, 125,
4144 126, 543, 127, 128, 129, 130, 542, 544, 316, 320,
4145 321, 534, 741, 740, 898, 1000, 1151, 899, 131, 132,
4146 317, 133, 134, 135, 136, 248, 249, 139, 250, 251,
4147 862, 676, 345, 346, 347, 348, 349, 574, 575, 576,
4148 917, 767, 768, 578, 579, 580, 581, 582, 583, 584,
4149 585, 926, 587, 588, 589, 590, 591, 592, 593, 594,
4150 595, 596, 762, 447, 448, 449, 682, 299, 484, 253,
4151 724, 646, 685, 680, 402, 489, 831, 1177, 514, 659,
4158static const yytype_int16 yytable[] =
4160 138, 319, 221, 335, 318, 237, 237, 315, 412, 660,
4161 401, 225, 226, 456, 647, 142, 645, 334, 653, 223,
4162 236, 236, 221, 674, 454, 916, 599, 73, 970, 483,
4163 787, 478, 819, 791, 263, 286, 293, 405, 405, 223,
4164 308, 405, 586, 245, 245, 765, 977, 586, 789, 350,
4165 918, 138, 138, 221, 334, 312, 573, 577, 252, 252,
4166 445, 573, 577, 324, 325, 326, 292, 292, 297, 301,
4167 336, 309, 691, 710, 924, 261, 291, 264, 794, 256,
4168 365, 1033, 295, 408, 773, 327, 413, 705, 312, 645,
4169 779, 653, 790, 812, 1002, 700, 701, 296, 300, 760,
4170 1004, 823, 237, 700, 309, 915, 221, 421, 431, 431,
4171 431, 710, 733, 868, 516, 243, 254, 236, 518, 725,
4172 -146, 352, -135, 309, 309, 309, 919, 1129, 351, 1149,
4173 355, 342, 343, 1216, 948, -710, 328, 530, 927, 701,
4174 245, 736, 354, 537, 539, 725, 1102, 1102, -141, -142,
4175 1337, 1241, 799, 884, -702, 252, 474, 505, -64, 452,
4176 259, 1183, 1331, 1191, 657, 1251, 657, -710, -149, -141,
4177 491, 812, 812, -148, 874, 877, 466, 745, 796, 143,
4178 492, 493, -711, -702, 530, 538, 502, -147, 507, 1183,
4179 -132, 1144, 532, 533, 488, 490, 920, -701, 809, -144,
4180 840, -141, 925, 342, 343, 812, 847, 848, 892, -147,
4181 -802, -141, 450, 286, 790, 1184, -142, -145, 1192, 528,
4182 508, 1337, 1193, 1167, -142, 1176, -701, 1217, -149, 138,
4183 746, -135, 322, 1331, 334, 610, 797, -143, 1212, 532,
4184 533, 499, 500, -584, 292, 237, 353, 237, 259, 1150,
4185 -146, -135, -135, 259, 1002, -135, 844, 1152, 1102, 471,
4186 236, -146, 236, 478, -801, 138, 471, -146, 286, 485,
4187 265, 405, 405, 405, 405, 866, 555, 556, -132, -133,
4188 142, -148, 857, 482, 138, 245, 725, 1058, 760, 909,
4189 -144, 1350, 73, 867, 918, 983, 523, 725, -140, 292,
4190 252, 952, -145, -139, 312, 331, 1056, 331, 924, 291,
4191 710, 332, 913, 332, 665, 913, 549, 550, 551, 552,
4192 309, 351, -147, 521, 976, 1261, 1263, 669, 1208, -135,
4193 256, 931, 749, 354, 138, 932, 1209, 283, 700, 701,
4194 700, -143, -137, 405, 513, 513, 286, -136, 612, 513,
4195 -147, 519, -141, -802, 351, 1183, -147, 486, -141, 405,
4196 334, 73, 138, 312, 744, -142, 744, -134, 1071, -149,
4197 1072, -142, 1074, 1128, 1128, -149, 1015, 292, 1046, 309,
4198 -137, 775, -801, 331, -719, 750, 1005, 291, 661, 332,
4199 237, 964, 530, 662, 663, 975, 652, 939, 978, 776,
4200 -136, 852, 138, 953, 671, 236, -113, 344, 259, 138,
4201 138, 958, 985, 1061, 485, 1007, 1009, 292, 1242, 1011,
4202 1016, 1013, -148, 1014, 292, 292, 322, -129, -148, 812,
4203 812, -144, 1035, 1037, 1254, 812, 812, -144, 1041, 1043,
4204 1073, 237, 677, -145, 760, 531, 760, 532, 533, -145,
4205 652, -137, -138, 964, -802, 849, 236, 476, 700, 701,
4206 654, 1098, 1098, 237, 586, 695, 1110, 1110, 352, 652,
4207 586, -137, -137, 1172, -801, -137, 568, 780, 236, 245,
4208 358, 882, -143, 1267, 1270, 1128, 888, 485, -143, 221,
4209 1016, -149, 886, 361, 252, 781, 471, 652, 471, -148,
4210 362, 717, -134, 885, 812, -711, 223, 138, 569, -136,
4211 459, 1053, 702, 690, 1054, 1219, 523, 237, 1232, 812,
4212 1168, 1059, 1130, 652, 312, 366, -144, 1063, 1128, -136,
4213 -136, 752, 236, -136, 896, 1128, 1128, 1188, 1371, -142,
4214 309, 485, 1163, 1164, -149, 887, 788, 138, 59, 894,
4215 1335, 686, 1254, 138, -397, 731, 1254, -703, 1351, 1029,
4216 -133, 645, 292, 653, 701, -140, 903, 1153, 1154, 1156,
4217 1157, 903, 503, 1098, 458, 1057, 1266, 1269, 1110, -145,
4218 753, 460, -397, -397, 833, 763, -703, 784, 1234, 763,
4219 784, 834, 710, 353, 1237, 1348, 1238, 138, 924, 255,
4220 138, 775, 523, 760, 760, 1146, -148, 467, 846, 259,
4221 312, -134, 292, 1168, -64, 292, 869, 1351, -144, 1196,
4222 397, 1110, 700, 1168, 1168, -145, 309, -139, 1110, 1110,
4223 915, -134, -134, 260, -704, -134, 459, 805, -397, -135,
4224 462, 841, 805, 843, 1258, 1259, -136, 1128, 398, 399,
4225 468, 1338, 890, 1140, 992, 979, 509, 138, 237, 138,
4226 924, 1346, 471, -704, 652, 984, 503, 838, 882, 237,
4227 -149, 331, 292, 236, 292, 652, 1067, 332, 801, 824,
4228 138, -706, 485, 801, 236, 368, 1166, 900, -143, 221,
4229 1288, 829, 1290, 485, 1302, 292, 830, 586, 833, 837,
4230 -148, 879, 469, 828, 400, 838, 223, 397, 586, 1235,
4231 -706, 573, 577, 475, 259, 1287, 471, 1332, -64, 477,
4232 1375, 1339, 1376, 895, 1378, 1019, 1343, 1020, 530, 946,
4233 -356, 312, -144, 495, 1203, 398, 472, 873, 397, 838,
4234 1110, 1384, 1147, 902, 397, 904, -708, 309, 905, 906,
4235 255, 392, 393, 394, 830, 889, 834, 1282, -356, -356,
4236 -705, 801, 801, 586, -707, 530, 398, 501, 451, 988,
4237 368, -698, 398, 526, -708, -708, 955, 573, 577, 955,
4238 513, 535, 828, 532, 533, 830, 696, 506, 1260, -705,
4239 -145, 473, 1377, -707, 405, 801, 405, -112, 1359, 1361,
4240 -698, 523, 1363, 1365, -709, 1357, 1368, 511, 981, 312,
4241 -143, 530, 1279, -143, -356, 520, 368, 687, -802, 445,
4242 532, 533, 473, 1247, 517, 309, -97, 1083, 527, -699,
4243 -708, 928, -709, -709, -134, 1379, 1380, 1382, 1383, 980,
4244 913, 982, 1235, 683, 1385, 344, 711, 1235, 259, 713,
4245 -98, 260, 1235, 962, 716, 969, 1231, 969, -699, 672,
4246 259, 512, 138, 673, 535, 221, 532, 533, 525, -698,
4247 540, 728, 684, 397, 1086, 889, 1356, 292, 530, -349,
4248 390, 391, 392, 393, 394, 548, 672, 1320, -709, 1174,
4249 1165, 725, 792, -699, 563, 999, 795, -698, -698, 530,
4250 405, 398, 453, 471, 259, 515, 830, -349, -349, 1235,
4251 1347, 1235, 597, 1235, 1349, 1235, 830, 933, 784, 545,
4252 935, -699, -699, -717, 567, 600, -805, 846, 1255, 1062,
4253 763, 535, 1235, 532, 533, 237, 1247, 397, 963, 964,
4254 998, 652, 604, 397, 546, 1052, 666, 769, 1051, 613,
4255 236, -97, 536, -698, 532, 533, 675, -97, -357, 485,
4256 1189, 1190, 670, -349, 138, 398, 667, 1239, 712, -805,
4257 1243, 398, 678, 715, 1048, -98, 808, -699, 714, 292,
4258 138, -98, 720, 1068, 1280, 1281, -357, -357, 805, 1231,
4259 1262, 259, 1354, 101, 1231, 292, 562, -805, -805, 138,
4260 397, 1017, 1018, 524, 524, 397, 721, 247, 247, 397,
4261 1023, 722, -129, 1024, 292, 1026, 563, 1077, 1078, 801,
4262 801, 668, 138, 138, 730, 801, 801, 679, 398, 944,
4263 732, 1127, 1127, 398, 1272, 761, 1179, 398, 1345, 764,
4264 1143, 1182, -357, 766, 101, 101, 567, 568, 310, 1080,
4265 1081, -805, 871, -805, -444, 777, 138, -801, 772, 247,
4266 1231, 1134, 268, 1138, 530, 778, 1315, 1316, 1317, 793,
4267 810, 292, 36, 37, 530, 39, 832, 842, 830, 569,
4268 849, 310, 45, 46, 945, 852, 1127, 1127, 910, 1273,
4269 1127, 1161, 1161, 679, 801, 247, 247, 907, 912, 247,
4270 418, 429, 429, 921, 247, 1276, 929, 1127, 1274, 801,
4271 930, 934, -329, 373, 374, 405, 937, 742, 1352, 532,
4272 533, 938, 1205, 1206, 911, 940, 941, 747, 1213, 532,
4273 533, 1201, 949, 942, 954, 138, 959, 508, 138, 138,
4274 830, 1175, 1236, 1127, 138, 368, 964, 309, 876, 878,
4275 292, 334, 996, 292, 292, 776, 1006, 969, 138, 292,
4276 1248, 138, 381, 382, 876, 878, 1127, 385, 386, 1127,
4277 1008, 1010, 1012, 292, -333, 557, 292, 558, 559, 560,
4278 561, 1250, 893, 1127, 1069, 1127, 1275, 1039, 1127, 1127,
4279 1132, 1265, 1268, 1127, 1127, 1070, 1214, 1311, -331, 1135,
4280 1286, 1155, 138, 1178, 1158, 1186, 387, 388, 389, 390,
4281 391, 392, 393, 394, 405, 405, 138, 292, 830, 1185,
4282 969, 830, 101, 1187, 1245, 754, 1244, 1084, 1233, 1271,
4283 755, 292, 431, 1183, 763, 986, 763, 1284, 1283, 1289,
4284 557, 830, 558, 559, 560, 561, 1291, 247, 309, 247,
4285 1296, 1127, 247, 247, 995, 1301, 997, 1304, 101, 1326,
4286 1327, 1305, 1180, 237, 36, 37, 1308, 39, 557, 652,
4287 558, 559, 560, 561, 1001, 1310, 1333, 101, 236, 1214,
4288 1340, 298, 1358, 1344, 138, 1360, -801, 485, 1362, 962,
4289 754, 1138, 1364, 1369, 431, 1381, 496, 310, 547, 292,
4290 -802, 727, 498, 1127, 729, 1204, 411, 1127, 1353, 1127,
4291 309, 1328, 1181, 558, 559, 560, 561, 830, 830, 830,
4292 803, 987, 416, 368, 138, 433, 396, 101, 1220, 247,
4293 247, 247, 247, 718, 247, 247, 893, 872, 1050, 292,
4294 381, 382, 337, 338, 339, 340, 341, 1278, 1060, 763,
4295 40, 41, 42, 43, 908, 101, 310, 1003, 1295, 1233,
4296 1224, 1233, 1334, 1297, 1342, 1162, 1233, 969, 1127, 830,
4297 84, 1233, 1294, 989, 1374, 1372, 1256, 1257, 1355, 608,
4298 1249, 1323, 1309, 457, 84, 84, 389, 390, 391, 392,
4299 393, 394, 247, 609, 1324, 101, 748, 1175, 614, 446,
4300 914, 247, 101, 101, 923, 455, 1036, 1038, 0, 1370,
4301 0, 0, 1042, 1044, 0, 0, 0, 247, 0, 0,
4302 0, 84, 84, 0, 0, 0, 0, 0, 1233, 0,
4303 1233, 0, 1233, 0, 1233, 0, 84, 0, 0, 0,
4304 0, 0, 0, 247, 0, 0, 1036, 1038, 0, 1042,
4305 1044, 1233, 0, 0, 461, 0, 0, 463, 464, 465,
4306 0, 1220, 0, 0, 0, 247, 1220, 0, 0, 0,
4307 0, 1220, 84, 84, 0, 0, 84, 0, 0, 0,
4308 0, 84, 1096, 1096, 0, 0, 22, 23, 24, 25,
4309 692, 693, 0, 0, 0, 0, 1131, 0, 0, 697,
4310 101, 0, 31, 32, 33, 0, 0, 708, 709, 0,
4311 0, 0, 40, 41, 42, 43, 44, 310, 0, 247,
4312 1131, 0, 0, 0, 0, 0, 0, 496, 1220, 0,
4313 1220, 0, 1220, 0, 1220, 726, 0, 1096, 1096, 0,
4314 101, 1096, 0, 368, 0, 0, 101, 0, 0, 0,
4315 0, 1220, 0, 0, 0, 0, 0, 0, 1096, 1264,
4316 381, 382, 0, 57, 58, 59, 60, 61, 62, 63,
4317 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
4318 0, 0, 0, 0, 0, 0, 0, 0, 0, 247,
4319 101, 0, 247, 101, 1096, 0, 0, 0, 0, 84,
4320 304, 247, 0, 310, 1303, 0, 820, 390, 391, 392,
4321 393, 394, 0, 0, 1307, 0, 0, 1096, 0, 0,
4322 1096, 0, 0, 0, 84, 0, 84, 0, 0, 84,
4323 84, 1312, 1313, 1314, 1096, 84, 1096, 0, 0, 1096,
4324 1096, 0, 0, 0, 1096, 1096, 0, 0, 0, 0,
4325 101, 0, 101, 0, 84, 0, 0, 0, 0, 0,
4326 247, 0, 0, 0, 557, 0, 558, 559, 560, 561,
4327 562, 247, 0, 101, 247, 1119, 1119, 0, 0, 0,
4328 0, 0, 0, 0, 820, 820, 0, 839, 0, 0,
4329 563, 0, 0, 0, 698, 699, 0, 0, 0, 0,
4330 0, 0, 1096, 298, 84, 0, 84, 84, 84, 84,
4331 247, 84, 84, 0, 565, 0, 0, 0, 820, 566,
4332 567, 568, 0, 0, 310, 0, 0, 880, 0, 0,
4333 1119, 1119, 84, 0, 1119, 0, 0, 0, 699, 0,
4334 0, 298, 557, 0, 558, 559, 560, 561, 562, 0,
4335 0, 1119, 0, 569, 1096, 0, 570, 0, 1096, 0,
4336 1096, 0, 0, 0, 0, 0, 0, 0, 563, 84,
4337 0, 0, 84, 0, 0, 0, 0, 0, 84, 84,
4338 84, 0, 564, 0, 0, 0, 0, 1119, 0, 0,
4339 0, 0, 565, 0, 84, 0, 0, 566, 567, 568,
4340 0, 0, 310, 0, 0, 0, 0, 0, 0, 0,
4341 1119, 0, 0, 1119, 0, 774, 0, 0, 0, 1096,
4342 84, 0, 0, 0, 0, 0, 0, 1119, 0, 1119,
4343 0, 569, 1119, 1119, 570, 804, 0, 1119, 1119, 0,
4344 817, 0, 84, 0, 0, 0, 0, 1065, 0, 0,
4345 0, 0, 247, 0, 247, 101, 0, 950, 951, 0,
4346 0, 0, 0, 0, 0, 956, 957, 0, 0, 0,
4347 0, 0, 0, 0, 0, 0, 557, 84, 558, 559,
4348 560, 561, 562, 0, 0, 0, 0, 0, 0, 0,
4349 0, 0, 0, 0, 0, 1119, 84, 0, 0, 0,
4350 0, 0, 563, 0, 557, 0, 558, 559, 560, 561,
4351 562, 0, 0, 0, 0, 990, 991, 84, 993, 994,
4352 247, 0, 881, 84, 0, 0, 565, 0, 0, 0,
4353 563, 0, 567, 568, 0, 0, 0, 247, 699, 0,
4354 298, 0, 820, 820, 564, 0, 0, 1119, 820, 820,
4355 0, 1119, 0, 1119, 565, 0, 0, 101, 247, 566,
4356 567, 568, 0, 0, 0, 569, 84, 84, 0, 84,
4357 84, 0, 0, 101, 1025, 0, 0, 0, 84, 0,
4358 0, 0, 0, 84, 0, 0, 0, 1040, 0, 0,
4359 0, 0, 101, 569, 0, 0, 570, 922, 0, 0,
4360 0, 0, 0, 0, 112, 0, 0, 0, 0, 0,
4361 0, 0, 1119, 0, 0, 101, 101, 820, 112, 112,
4362 0, 0, 1120, 1120, 1064, 0, 936, 84, 0, 84,
4363 0, 0, 820, 0, 0, 0, 0, 84, 0, 0,
4364 557, 0, 558, 559, 560, 561, 562, 0, 84, 101,
4365 84, 84, 0, 0, 0, 112, 112, 0, 699, 0,
4366 0, 84, 84, 0, 0, 0, 563, 0, 0, 0,
4367 112, 0, 0, 0, 0, 0, 973, 1120, 1120, 0,
4368 564, 1120, 0, 0, 0, 0, 0, 84, 0, 0,
4369 565, 0, 0, 0, 0, 84, 567, 568, 1120, 0,
4370 0, 0, 0, 0, 0, 0, 112, 112, 0, 0,
4371 112, 0, 0, 0, 0, 112, 0, 0, 0, 0,
4372 0, 0, 0, 0, 1199, 0, 0, 0, 101, 569,
4373 0, 101, 101, 0, 1120, 0, 0, 101, 0, 0,
4374 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4375 0, 101, 0, 0, 101, 0, 0, 1120, 0, 0,
4376 1120, 0, 0, 1022, 0, 0, 0, 0, 0, 0,
4377 0, 0, 0, 247, 1120, 0, 1120, 0, 0, 1120,
4378 1120, 0, 0, 0, 1120, 1120, 1045, 0, 0, 0,
4379 0, 0, 0, 0, 0, 101, 0, 0, 1055, 0,
4380 0, 0, 0, 0, 0, 0, 0, 0, 1246, 101,
4381 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4382 0, 0, 298, 0, 0, 1300, 0, 0, 0, 84,
4383 0, 84, 84, 112, 0, 0, 0, 0, 0, 0,
4384 0, 0, 1120, 0, 0, 0, 0, 1079, 0, 0,
4385 0, 0, 0, 0, 0, 0, 0, 0, 112, 0,
4386 112, 0, 0, 112, 112, 247, 0, 0, 0, 112,
4387 0, 0, 247, 247, 0, 0, 0, 101, 0, 0,
4388 0, 0, 1142, 0, 0, 0, 0, 1341, 112, 0,
4389 0, 0, 0, 0, 1120, 0, 0, 84, 1120, 0,
4390 1120, 0, 0, 0, 0, 0, 1121, 1121, 0, 0,
4391 0, 0, 0, 0, 84, 0, 0, 101, 0, 84,
4392 84, 0, 0, 0, 0, 84, 84, 0, 0, 0,
4393 0, 0, 0, 0, 84, 84, 0, 0, 112, 0,
4394 112, 112, 112, 112, 0, 112, 112, 0, 0, 0,
4395 84, 0, 0, 0, 0, 0, 0, 0, 0, 1120,
4396 0, 1121, 1121, 0, 0, 1121, 112, 1207, 0, 84,
4397 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4398 0, 113, 1121, 0, 0, 0, 0, 0, 0, 0,
4399 0, 0, 84, 84, 84, 113, 113, 0, 0, 0,
4400 0, 0, 0, 112, 0, 0, 112, 0, 0, 84,
4401 0, 0, 112, 112, 112, 0, 0, 0, 1121, 0,
4402 0, 0, 0, 0, 0, 0, 84, 0, 112, 0,
4403 0, 0, 113, 113, 0, 0, 0, 0, 0, 0,
4404 0, 1121, 0, 0, 1121, 0, 0, 113, 0, 0,
4405 0, 0, 0, 0, 112, 0, 0, 0, 1121, 0,
4406 1121, 1122, 1122, 1121, 1121, 0, 0, 0, 1121, 1121,
4407 0, 0, 0, 0, 0, 0, 112, 0, 0, 0,
4408 0, 0, 0, 113, 113, 0, 0, 113, 0, 0,
4409 0, 0, 113, 0, 0, 0, 0, 0, 0, 0,
4410 0, 0, 0, 0, 0, 84, 0, 0, 84, 84,
4411 0, 112, 0, 0, 84, 0, 1122, 1122, 0, 0,
4412 1122, 0, 0, 0, 0, 0, 1121, 0, 84, 0,
4413 112, 84, 0, 0, 0, 1123, 1123, 1122, 0, 0,
4414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4415 84, 112, 0, 0, 0, 0, 0, 112, 0, 0,
4416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4417 0, 0, 84, 1122, 0, 0, 0, 0, 1121, 0,
4418 0, 0, 1121, 0, 1121, 0, 84, 0, 0, 0,
4419 1123, 1123, 0, 0, 1123, 0, 1122, 0, 0, 1122,
4420 112, 112, 0, 112, 112, 0, 0, 0, 0, 0,
4421 113, 1123, 112, 1122, 0, 1122, 0, 112, 1122, 1122,
4422 0, 0, 0, 1122, 1122, 0, 0, 0, 0, 0,
4423 0, 0, 0, 0, 0, 113, 0, 113, 0, 0,
4424 113, 113, 84, 1121, 0, 0, 113, 1123, 0, 84,
4425 84, 0, 0, 0, 84, 0, 0, 0, 0, 0,
4426 0, 112, 0, 112, 0, 113, 0, 0, 0, 0,
4427 1123, 112, 0, 1123, 0, 0, 0, 0, 0, 0,
4428 0, 1122, 112, 0, 112, 112, 0, 1123, 0, 1123,
4429 0, 0, 1123, 1123, 84, 112, 112, 1123, 1123, 0,
4430 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4431 0, 0, 0, 0, 0, 113, 0, 113, 113, 113,
4432 113, 112, 113, 113, 0, 0, 0, 0, 0, 112,
4433 0, 0, 0, 1122, 0, 0, 0, 1122, 0, 1122,
4434 0, 0, 0, 113, 0, 0, 0, 1124, 1124, 0,
4435 0, 0, 0, 0, 0, 1123, 0, 0, 0, 1125,
4436 1125, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4438 113, 0, 0, 113, 0, 0, 0, 0, 0, 113,
4439 113, 113, 0, 0, 0, 0, 0, 0, 1122, 0,
4440 0, 0, 1124, 1124, 0, 113, 1124, 1123, 0, 0,
4441 0, 1123, 0, 1123, 1125, 1125, 0, 0, 1125, 0,
4442 0, 0, 0, 1124, 0, 0, 0, 0, 0, 0,
4443 0, 113, 0, 0, 0, 1125, 0, 0, 0, 0,
4444 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4445 0, 0, 0, 113, 0, 0, 0, 0, 0, 1124,
4446 0, 0, 0, 112, 0, 112, 112, 0, 0, 0,
4447 0, 1125, 1123, 0, 0, 0, 0, 0, 0, 0,
4448 0, 0, 1124, 0, 0, 1124, 0, 0, 113, 0,
4449 0, 0, 0, 0, 1125, 0, 0, 1125, 0, 1124,
4450 0, 1124, 0, 0, 1124, 1124, 0, 113, 0, 1124,
4451 1124, 1125, 0, 1125, 0, 0, 1125, 1125, 0, 0,
4452 0, 1125, 1125, 0, 0, 0, 0, 0, 113, 0,
4453 0, 112, 0, 0, 113, 0, 0, 0, 0, 0,
4454 0, 0, 0, 0, 0, 0, 0, 0, 112, 0,
4455 0, 0, 0, 112, 112, 0, 0, 80, 0, 112,
4456 112, 0, 0, 0, 0, 0, 0, 1124, 112, 112,
4457 0, 80, 80, 0, 1126, 1126, 0, 113, 113, 1125,
4458 113, 113, 0, 0, 112, 0, 0, 0, 0, 113,
4459 0, 0, 0, 0, 113, 0, 0, 0, 0, 0,
4460 0, 0, 0, 112, 0, 0, 0, 0, 80, 80,
4461 0, 0, 306, 0, 0, 0, 0, 0, 0, 1124,
4462 0, 0, 0, 1124, 0, 1124, 112, 112, 112, 1126,
4463 1126, 1125, 0, 1126, 0, 1125, 0, 1125, 113, 0,
4464 113, 0, 0, 112, 0, 306, 0, 0, 113, 0,
4465 1126, 0, 0, 0, 0, 0, 0, 0, 0, 113,
4466 112, 113, 113, 0, 306, 306, 306, 0, 80, 0,
4467 0, 0, 113, 113, 0, 0, 0, 0, 0, 0,
4468 0, 0, 0, 0, 1124, 0, 1126, 0, 0, 0,
4469 0, 0, 0, 0, 0, 0, 1125, 0, 113, 0,
4470 0, 0, 0, 0, 0, 0, 113, 0, 0, 1126,
4471 0, 0, 1126, 0, 0, 0, 0, 367, 0, 0,
4472 0, 0, 0, 0, 0, 0, 1126, 0, 1126, 0,
4473 0, 1126, 1126, 0, 0, 0, 1126, 1126, 0, 112,
4474 0, 0, 112, 112, 0, 0, 0, 0, 112, 0,
4475 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4476 0, 0, 112, 0, 0, 112, 0, 0, 0, 0,
4477 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
4478 378, 379, 380, 0, 112, 0, 80, 381, 382, 0,
4479 0, 0, 0, 383, 1126, 0, 0, 0, 0, 0,
4480 0, 0, 0, 0, 0, 0, 112, 0, 0, 0,
4481 0, 80, 0, 80, 0, 0, 0, 0, 0, 0,
4482 112, 0, 80, 0, 0, 0, 0, 384, 0, 385,
4483 386, 387, 388, 389, 390, 391, 392, 393, 394, 0,
4484 113, 80, 113, 113, 0, 0, 1126, 0, 0, 0,
4485 1126, 0, 1126, 0, 0, 0, 0, 0, 0, 0,
4486 0, 306, 0, 0, 0, 0, 0, 0, 0, 0,
4487 0, 0, 0, 0, 0, 0, 112, 0, 0, 0,
4488 0, 0, 0, 112, 112, 0, 0, 0, 112, 0,
4489 0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
4490 0, 0, 0, 0, 0, 0, 0, 0, 113, 0,
4491 0, 1126, 0, 0, 0, 0, 0, 0, 0, 80,
4492 306, 0, 0, 0, 0, 113, 0, 0, 112, 0,
4493 113, 113, 0, 0, 81, 0, 113, 113, 0, 0,
4494 0, 0, 0, 0, 0, 113, 113, 0, 81, 81,
4495 0, 0, 0, 0, 0, 0, 80, 0, 0, 80,
4496 0, 113, 0, 0, 0, 0, 80, 80, 0, 0,
4497 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4498 113, 0, 0, 0, 0, 81, 81, 0, 0, 307,
4499 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4500 0, 0, 0, 113, 113, 113, 0, 80, 0, 0,
4501 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4502 113, 0, 307, 0, 0, 0, 0, 0, 0, 80,
4503 0, 0, 0, 0, 0, 0, 0, 113, 0, 0,
4504 0, 307, 307, 307, 0, 81, 0, 0, 0, 0,
4505 0, 0, 0, -823, 0, 0, 0, 0, 0, 0,
4506 0, -823, -823, -823, 80, 0, -823, -823, -823, 0,
4507 -823, 0, 0, 0, 0, 0, 0, 0, -823, -823,
4508 -823, 306, 0, 80, 0, 0, 0, 0, 0, 0,
4509 -823, -823, 0, -823, -823, -823, -823, -823, 0, 0,
4510 0, 0, 0, 0, 80, 0, 0, 0, 0, 0,
4511 80, 0, 0, 0, 0, 0, 113, 0, 0, 113,
4512 113, -823, -823, 0, 0, 113, 0, 0, 0, 0,
4513 0, 0, 0, 0, 0, 0, 0, 0, 0, 113,
4514 0, 0, 113, 0, 0, 0, 0, 0, 0, 0,
4515 -823, -823, 0, 0, 80, 0, 0, 80, 0, 0,
4516 0, 113, 0, 81, 0, 0, 0, 306, 0, 0,
4517 80, 0, 0, -823, 0, 0, 0, 0, 0, 0,
4518 0, 0, 0, 113, 0, 0, 0, 0, 81, 0,
4519 81, 0, 0, 0, 0, 0, 0, 113, 0, 81,
4520 0, 0, 0, 0, -823, -823, 0, -823, 0, 0,
4521 255, -823, 0, -823, 80, 0, 80, 0, 81, 0,
4522 0, 0, 0, 0, 80, 0, 0, 0, 0, 0,
4523 0, 0, 0, 0, 0, 80, 0, 80, 307, 0,
4524 0, 0, 0, 0, 0, 0, 0, 0, 80, 80,
4525 0, 0, 0, 113, 0, 0, 0, 0, 0, 0,
4526 113, 113, 0, 0, 0, 113, 0, 0, 81, 0,
4527 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4528 0, 0, 80, 0, 0, 0, 0, 0, 306, 368,
4529 -824, -824, -824, -824, 373, 374, 81, 307, -824, -824,
4530 0, 0, 0, 0, 0, 113, 381, 382, 0, 0,
4531 0, 0, 0, 0, 0, 0, 0, 0, 0, 141,
4532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4533 0, 0, 0, 81, 0, 0, 81, 0, 0, 0,
4534 0, 0, 0, 81, 81, 0, 0, 0, 385, 386,
4535 387, 388, 389, 390, 391, 392, 393, 394, 0, 0,
4536 0, 0, 0, 0, 0, 0, 306, 0, 0, 0,
4537 141, 141, 0, 0, 313, 0, 0, 0, 0, 0,
4538 0, 0, 0, 0, 81, 0, 0, 0, 0, 0,
4539 0, 0, 0, 0, 0, 22, 23, 24, 25, 0,
4540 0, 0, 0, 0, 0, 0, 81, 313, 0, 0,
4541 0, 31, 32, 33, 1084, 0, 0, 0, 1085, 80,
4542 0, 40, 41, 42, 43, 44, 422, 432, 432, 368,
4543 369, 370, 371, 372, 373, 374, 375, 0, 377, 378,
4544 0, 81, 0, 0, 0, 0, 381, 382, 0, 0,
4545 0, 0, 0, 1087, 1088, 0, 0, 0, 307, 0,
4546 81, 1089, 0, 0, 1090, 0, 1091, 1092, 0, 1093,
4547 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
4548 65, 81, 0, 0, 0, 0, 0, 81, 385, 386,
4549 387, 388, 389, 390, 391, 392, 393, 394, 0, 0,
4550 0, 80, 1095, 0, 0, 0, 80, 80, 0, 304,
4551 0, 137, 80, 80, 0, 0, 259, 0, 0, 0,
4552 0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
4553 0, 81, 0, 0, 81, 0, 0, 80, 0, 0,
4554 0, 0, 0, 0, 307, 0, 0, 81, 141, 0,
4555 0, 0, 0, 0, 0, 0, 80, 0, 0, 0,
4556 0, 0, 137, 137, 0, 0, 311, 0, 0, 0,
4557 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,
4558 80, 80, 0, 0, 141, 0, 0, 0, 0, 0,
4559 0, 81, 0, 81, 0, 0, 80, 0, 0, 311,
4560 0, 81, 0, 141, 0, 0, 0, 0, 0, 0,
4561 0, 0, 81, 80, 81, 0, 0, 0, 420, 430,
4562 430, 430, 0, 313, 0, 81, 81, 0, 22, 23,
4563 24, 25, 0, 0, 0, 0, 0, 0, 0, 0,
4564 0, 0, 0, 0, 31, 32, 33, 1084, 0, 0,
4565 0, 1085, 0, 141, 40, 41, 42, 43, 44, 81,
4566 0, 0, 0, 0, 0, 307, 0, 0, 0, 0,
4567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4568 91, 141, 313, 0, 0, 0, 1087, 1088, 306, 0,
4569 0, 0, 80, 0, 1089, 80, 80, 1090, 0, 1091,
4570 1092, 80, 1093, 0, 0, 57, 58, 59, 60, 61,
4571 62, 63, 64, 65, 0, 80, 0, 0, 80, 0,
4572 0, 141, 0, 0, 0, 0, 0, 0, 141, 141,
4573 0, 91, 91, 0, 0, 1095, 0, 0, 0, 0,
4574 137, 0, 304, 307, 368, 369, 370, 371, 372, 373,
4575 374, 375, 376, 377, 378, 379, 380, 0, 0, 80,
4576 0, 381, 382, 0, 0, 0, 0, 0, 0, 0,
4577 0, 0, 0, 80, 0, 0, 137, 0, 0, 0,
4578 0, 0, 0, 0, 0, 0, 0, 417, 0, 306,
4579 0, 0, 0, 0, 0, 137, 81, 0, 0, 0,
4580 0, 384, 0, 385, 386, 387, 388, 389, 390, 391,
4581 392, 393, 394, 0, 0, 311, 0, 0, 0, 0,
4582 259, 0, 0, 0, 0, 0, 141, 0, 0, 80,
4583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4584 0, 80, 0, 313, 0, 137, 0, 0, 0, 0,
4585 0, 306, 0, 0, 0, 0, 0, 0, 0, 0,
4586 0, 0, 0, 0, 0, 0, 141, 0, 0, 0,
4587 0, 0, 141, 137, 311, 0, 0, 0, 81, 0,
4588 0, 80, 0, 81, 81, 0, 0, 0, 0, 81,
4589 81, 0, 0, 0, 0, 140, 0, 0, 81, 0,
4590 0, 0, 0, 0, 0, 0, 0, 0, 0, 91,
4591 0, 0, 0, 137, 81, 0, 141, 0, 0, 141,
4592 137, 137, 0, 0, 0, 0, 0, 0, 0, 313,
4593 0, 0, 821, 81, 0, 0, 0, 0, 0, 0,
4594 0, 0, 0, 0, 0, 91, 140, 140, 0, 0,
4595 0, 0, 0, 0, 0, 0, 81, 81, 81, 0,
4596 0, 0, 0, 0, 91, 368, 369, 370, 371, 372,
4597 373, 374, 0, 81, 377, 378, 141, 0, 141, 0,
4598 0, 0, 381, 382, 0, 0, 0, 0, 0, 0,
4599 81, 0, 0, 0, 0, 0, 0, 0, 0, 141,
4600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4601 821, 821, 0, 0, 91, 0, 0, 0, 137, 0,
4602 0, 0, 0, 0, 385, 386, 387, 388, 389, 390,
4603 391, 392, 393, 394, 0, 311, 0, 0, 0, 0,
4604 0, 0, 91, 0, 821, 0, 0, 0, 0, 0,
4605 313, 0, 0, 0, 0, 0, 0, 0, 137, 901,
4606 0, 0, 0, 0, 137, 307, 0, 0, 0, 81,
4607 0, 0, 81, 81, 0, 0, 0, 0, 81, 0,
4608 0, 0, 91, 0, 0, 0, 0, 0, 0, 91,
4609 91, 0, 81, 0, 0, 81, 0, 0, 0, 0,
4610 0, 0, 0, 0, 0, 0, 0, 0, 137, 0,
4611 0, 137, 0, 0, 0, 0, 0, 0, 0, 0,
4612 0, 311, 0, 0, 140, 0, 0, 0, 313, 0,
4613 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
4614 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4615 81, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4616 140, 0, 0, 0, 0, 0, 307, 0, 137, 0,
4617 137, 0, 0, 0, 0, 0, 0, 0, 0, 140,
4618 0, 141, 22, 23, 24, 25, 0, 91, 0, 0,
4619 0, 137, 0, 0, 0, 0, 0, 0, 31, 32,
4620 33, 1084, 0, 0, 0, 1085, 81, 0, 40, 41,
4621 42, 43, 44, 0, 0, 0, 0, 0, 81, 0,
4622 0, 0, 0, 0, 0, 0, 0, 91, 307, 140,
4623 0, 0, 0, 91, 0, 0, 0, 0, 0, 0,
4624 1087, 1088, 311, 0, 0, 0, 0, 0, 1089, 0,
4625 0, 1090, 0, 1091, 1092, 0, 0, 140, 81, 57,
4626 58, 59, 60, 61, 62, 63, 64, 65, 821, 821,
4627 0, 0, 0, 0, 821, 821, 0, 91, 0, 0,
4628 91, 0, 0, 141, 0, 0, 0, 0, 0, 1095,
4629 0, 0, 0, 815, 0, 0, 304, 140, 0, 141,
4630 0, 0, 0, 0, 140, 140, 0, 0, 0, 0,
4631 0, 0, 0, 0, 0, 0, 0, 0, 141, 0,
4632 311, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4633 0, 0, 0, 0, 0, 0, 0, 91, 0, 91,
4634 0, 141, 141, 821, 0, 0, 0, 0, 0, 0,
4635 0, 0, 0, 0, 0, 0, 0, 0, 821, 0,
4636 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4637 0, 815, 815, 137, 0, 141, 0, 0, 0, 0,
4638 0, 0, 0, 0, 0, 0, 0, 0, 943, 0,
4639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4640 0, 0, 140, 0, 0, 815, 0, 0, 0, 0,
4641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4642 0, 0, 368, 369, 370, 371, 372, 373, 374, 375,
4643 376, 377, 378, 379, 380, 0, 0, 0, 0, 381,
4644 382, 0, 140, 0, 0, 0, 0, 0, 140, 0,
4645 1202, 0, 0, 0, 141, 0, 0, 141, 141, 0,
4646 0, 0, 0, 141, 0, 0, 0, 0, 0, 0,
4647 0, 0, 0, 0, 0, 137, 0, 141, 0, 384,
4648 141, 385, 386, 387, 388, 389, 390, 391, 392, 393,
4649 394, 137, 140, 0, 0, 140, 0, 0, 0, -298,
4650 0, 0, 0, 0, 0, 0, 0, 0, 140, 0,
4651 137, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4652 0, 141, 0, 0, 0, 0, 0, 0, 0, 0,
4653 0, 0, 0, 137, 137, 141, 0, 0, 0, 0,
4654 0, 0, 91, 0, 0, 0, 0, 0, 0, 0,
4655 0, 432, 140, 0, 140, 0, 0, 0, 0, 0,
4656 0, 0, 0, 0, 0, 0, 0, 137, 0, 0,
4657 0, 0, 0, 0, 0, 140, 0, 0, 0, 0,
4658 0, 0, 0, 0, 0, 0, 140, 140, 0, 0,
4659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4660 0, 0, 0, 141, 0, 0, 0, 0, 0, 0,
4661 0, 0, 0, 432, 0, 0, 0, 0, 0, 0,
4662 140, 0, 0, 0, 0, 0, 0, 0, 0, 815,
4663 815, 0, 0, 0, 0, 815, 815, 0, 0, 0,
4664 0, 0, 1200, 141, 91, 0, 137, 0, 0, 137,
4665 137, 0, 0, 0, 943, 137, 0, 0, 0, 0,
4666 91, 0, 0, 0, 0, 0, 0, 0, 0, 137,
4667 0, 0, 137, 0, 0, 0, 0, 0, 0, 91,
4668 0, 0, 0, 0, 0, 0, 0, 0, 368, 369,
4669 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
4670 380, 0, 91, 91, 815, 381, 382, 0, 0, 0,
4671 0, 0, 0, 137, 0, 0, 0, 0, 0, 815,
4672 0, 0, 0, 0, 0, 0, 0, 137, 0, 239,
4673 239, 0, 0, 0, 0, 0, 91, 0, 0, 0,
4674 0, 0, 0, 430, 0, 384, 0, 385, 386, 387,
4675 388, 389, 390, 391, 392, 393, 394, 140, 0, 0,
4676 0, 276, 280, 281, 282, 0, 0, 0, 239, 239,
4677 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4678 0, 329, 330, 0, 0, 0, 0, 0, 0, 0,
4679 0, 0, 0, 0, 0, 137, 0, 0, 0, 0,
4680 0, 0, 0, 0, 0, 430, 0, 0, 0, 0,
4681 0, 1198, 0, 0, 0, 91, 0, 0, 91, 91,
4682 0, 0, 0, 0, 91, 0, 239, 0, 0, 0,
4683 0, 0, 0, 0, 0, 137, 688, 650, 91, 0,
4684 689, 91, 0, 0, 140, 140, 0, 0, 0, 0,
4685 140, 140, 0, 0, 0, 0, 0, 0, 0, 140,
4686 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
4687 0, 197, 198, 0, 0, 140, 0, 199, 200, 201,
4688 202, 0, 91, 0, 0, 0, 0, 0, 0, 0,
4689 0, 203, 204, 0, 140, 0, 91, 0, 0, 0,
4690 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4691 0, 0, 0, 0, 0, 0, 0, 140, 140, 140,
4692 0, 205, 206, 207, 208, 209, 210, 211, 212, 213,
4693 214, 0, 215, 216, 140, 0, 0, 0, 0, 0,
4694 217, 255, 239, 0, 0, 239, 239, 239, 0, 329,
4695 0, 140, 0, 0, 0, 641, 642, 0, 0, 643,
4696 0, 0, 0, 0, 91, 0, 0, 0, 0, 239,
4697 0, 239, 0, 0, 0, 0, 0, 0, 0, 188,
4698 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
4699 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
4700 0, 0, 0, 0, 91, 0, 0, 0, 0, 0,
4701 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
4702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4703 140, 0, 0, 140, 140, 0, 0, 0, 0, 140,
4704 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
4705 0, 215, 216, 140, 0, 0, 140, 0, 0, 217,
4706 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
4707 378, 379, 380, 0, 0, 0, 0, 381, 382, 0,
4708 0, 0, 616, 617, 618, 619, 620, 0, 0, 621,
4709 622, 623, 624, 625, 626, 627, 628, 140, 630, 0,
4710 0, 631, 632, 633, 634, 635, 636, 637, 638, 639,
4711 640, 140, 0, 0, 239, 0, 0, 384, 0, 385,
4712 386, 387, 388, 389, 390, 391, 392, 393, 394, 0,
4713 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4714 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4716 0, 0, 0, 0, 0, 239, 0, 0, 0, 0,
4717 0, 0, 0, 0, 0, 0, 0, 0, 0, 140,
4718 0, 0, 239, 239, 0, 0, 0, 239, 0, 0,
4719 0, 239, 0, 282, 0, -805, 0, 0, 0, 0,
4720 0, 0, 0, -805, -805, -805, 0, 0, -805, -805,
4721 -805, 719, -805, 0, 0, 0, 0, 0, 0, 140,
4722 -805, -805, -805, -805, -805, 0, 239, 0, 0, 239,
4723 0, 0, -805, -805, 0, -805, -805, -805, -805, -805,
4724 0, 239, 0, 0, 0, 0, 0, 0, 0, 0,
4725 0, 0, 0, 0, 0, 0, 0, 0, 0, 751,
4726 0, 0, 0, -805, -805, 0, 0, 0, 0, 0,
4727 0, 0, 0, -805, -805, -805, -805, -805, -805, -805,
4728 -805, -805, -805, -805, -805, -805, 0, 0, 0, 0,
4729 -805, -805, -805, -805, 0, 883, -805, 0, 0, 0,
4730 0, -805, 0, 239, 0, 0, 0, 0, 0, 0,
4731 0, 785, 0, 0, 785, -805, 0, 0, -805, 0,
4732 0, 0, 0, 239, 0, 0, 0, 0, 816, -146,
4733 -805, -805, -805, -805, -805, -805, -805, -805, -805, -805,
4734 -805, -805, 0, 0, 0, 0, -805, -805, -805, -805,
4735 -805, 0, 0, -805, -805, -805, 0, 0, 0, 0,
4736 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4737 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4738 0, 0, 239, 0, 0, 0, 0, 0, 0, 0,
4739 0, 0, 0, 239, 0, 0, 0, 0, 0, 0,
4740 0, 0, 0, 0, 0, 0, 875, 875, 0, 0,
4741 239, 875, 0, 0, 0, 0, 0, 0, 0, 0,
4742 0, 0, 875, 875, 0, 0, 239, 0, 239, 0,
4743 0, 0, 0, 0, 0, 785, 785, 0, 0, 0,
4744 875, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4745 0, 0, 0, 0, 0, 0, -4, 3, 0, 4,
4746 5, 6, 7, 8, -4, -4, -4, 9, 10, 0,
4747 -4, -4, 11, -4, 12, 13, 14, 15, 16, 17,
4748 18, -4, 0, 0, 0, 239, 19, 20, 21, 22,
4749 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
4750 0, 27, 28, 284, 30, 31, 32, 33, 34, 35,
4751 36, 37, 38, 39, 239, 40, 41, 42, 43, 44,
4752 45, 46, 0, 0, -4, 0, 0, 0, 0, 0,
4753 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
4754 0, 0, 0, 0, 0, 0, 239, 49, 50, 0,
4755 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
4756 54, 55, 0, 56, 239, 0, 57, 58, 59, 60,
4757 61, 62, 63, 64, 65, 0, -4, 0, 0, 0,
4758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4759 0, 0, 0, 0, 875, 0, 0, 0, 0, 0,
4760 0, 0, 0, 66, 67, 68, 0, 0, -4, 0,
4761 22, 23, 24, 25, -4, 0, 546, 0, 0, 0,
4762 0, 0, 0, 0, 0, 0, 31, 32, 33, 1084,
4763 0, 0, 0, 1085, 0, 1086, 40, 41, 42, 43,
4764 44, 0, 785, 0, 0, 0, 0, 0, 0, 0,
4765 0, 239, 0, 0, 0, 563, 0, 0, 0, 239,
4766 0, 0, 0, 1034, 875, 875, 0, 0, 1087, 1088,
4767 875, 875, 0, 0, 239, 0, 1089, 0, 0, 1090,
4768 0, 1091, 1092, 0, 1093, 567, 239, 57, 58, 1094,
4769 60, 61, 62, 63, 64, 65, 0, 0, 0, 0,
4770 0, 0, 0, 0, 875, 875, 0, 875, 875, 0,
4771 239, 0, 785, 0, 0, 0, 0, 1095, 0, 0,
4772 0, 0, 0, 0, 304, 0, 0, 0, 0, 0,
4773 0, 1075, 1076, 0, 0, 239, 0, 0, 0, 875,
4774 1082, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4775 0, 0, 0, 0, 875, 0, 0, 0, 0, 0,
4776 0, -823, 3, 0, 4, 5, 6, 7, 8, 0,
4777 239, 0, 9, 10, 0, 0, 0, 11, 875, 12,
4778 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
4779 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
4780 26, 0, 0, 0, 0, 0, 27, 28, 284, 30,
4781 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
4782 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
4783 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
4784 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4785 0, 0, 49, 50, 0, 239, 0, 0, 0, 0,
4786 51, 0, 0, 52, 53, 54, 55, 0, 56, 0,
4787 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4788 0, -823, 0, 0, 0, 0, 0, 0, 0, 0,
4789 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4790 0, 0, 0, 0, 0, 0, 0, 0, 66, 67,
4791 68, 0, 0, -823, 3, -823, 4, 5, 6, 7,
4792 8, -823, 0, 0, 9, 10, 0, 0, 0, 11,
4793 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
4794 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
4795 0, 0, 26, 0, 0, 0, 0, 0, 27, 28,
4796 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
4797 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
4798 0, 0, 0, 0, 0, 0, 0, 239, 0, 47,
4799 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4800 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
4801 0, 0, 51, 0, 0, 52, 53, 54, 55, 0,
4802 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
4803 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
4804 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4805 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4806 66, 67, 68, 0, 0, -4, 3, -823, 4, 5,
4807 6, 7, 8, -823, 0, 0, 9, 10, 0, 0,
4808 0, 11, 0, 12, 13, 14, 15, 16, 17, 18,
4809 0, 0, 0, 0, 0, 19, 20, 21, 22, 23,
4810 24, 25, 0, 0, 26, 0, 0, 0, 0, 0,
4811 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
4812 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
4813 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4814 0, 47, 48, 0, 0, 0, 0, 0, 0, 0,
4815 0, 0, 0, 0, 0, 0, 49, 50, 0, 0,
4816 0, 0, 0, 0, 51, 0, 0, 52, 53, 54,
4817 55, 0, 56, 0, 0, 57, 58, 59, 60, 61,
4818 62, 63, 64, 65, 0, 0, 0, 0, 0, 0,
4819 0, -698, 0, 0, 0, 0, 0, 0, 0, -698,
4820 -698, -698, 0, 0, -698, -698, -698, 0, -698, 0,
4821 0, 0, 66, 67, 68, 0, -698, -4, -698, -698,
4822 -698, 0, 0, 0, 0, 546, 0, 0, -698, -698,
4823 0, -698, -698, -698, -698, -698, 0, 0, 0, 368,
4824 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
4825 -824, -824, 0, 0, 0, 0, 381, 382, 0, -698,
4826 -698, 0, 0, 0, 0, 0, 0, 0, 0, -698,
4827 -698, -698, -698, -698, -698, -698, -698, -698, -698, -698,
4828 -698, -698, 0, 0, 0, 0, -698, -698, -698, -698,
4829 0, -698, -698, 0, 0, 0, 0, -698, 385, 386,
4830 387, 388, 389, 390, 391, 392, 393, 394, 0, 0,
4831 0, -698, 0, 0, -698, 0, 0, 0, 0, 0,
4832 0, 0, 0, 0, 0, -698, -698, -698, -698, -698,
4833 -698, -698, -698, -698, -698, -698, -698, -698, 0, 0,
4834 0, 0, 0, -698, -698, -698, -698, -699, 0, -698,
4835 -698, -698, 0, 0, 0, -699, -699, -699, 0, 0,
4836 -699, -699, -699, 0, -699, 0, 0, 0, 0, 0,
4837 0, 0, -699, 0, -699, -699, -699, 0, 0, 0,
4838 0, 0, 0, 0, -699, -699, 0, -699, -699, -699,
4839 -699, -699, 0, 0, 0, 0, 0, 0, 0, 0,
4840 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4841 0, 0, 0, 0, 0, -699, -699, 0, 0, 0,
4842 0, 0, 0, 0, 0, -699, -699, -699, -699, -699,
4843 -699, -699, -699, -699, -699, -699, -699, -699, 0, 0,
4844 0, 0, -699, -699, -699, -699, 0, -699, -699, 0,
4845 0, 0, 0, -699, 0, 0, 0, 0, 0, 0,
4846 0, 0, 0, 0, 0, 0, 0, -699, 0, 0,
4847 -699, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4848 0, -699, -699, -699, -699, -699, -699, -699, -699, -699,
4849 -699, -699, -699, -699, 0, 0, 0, 0, 0, -699,
4850 -699, -699, -699, -806, 0, -699, -699, -699, 0, 0,
4851 0, -806, -806, -806, 0, 0, -806, -806, -806, 0,
4852 -806, 0, 0, 0, 0, 0, 0, 0, -806, -806,
4853 -806, -806, -806, 0, 0, 0, 0, 0, 0, 0,
4854 -806, -806, 0, -806, -806, -806, -806, -806, 0, 0,
4855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4857 0, -806, -806, 0, 0, 0, 0, 0, 0, 0,
4858 0, -806, -806, -806, -806, -806, -806, -806, -806, -806,
4859 -806, -806, -806, -806, 0, 0, 0, 0, -806, -806,
4860 -806, -806, 0, 0, -806, 0, 0, 0, 0, -806,
4861 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4862 0, 0, 0, -806, 0, 0, -806, 0, 0, 0,
4863 0, 0, 0, 0, 0, 0, 0, 0, -806, -806,
4864 -806, -806, -806, -806, -806, -806, -806, -806, -806, -806,
4865 0, 0, 0, 0, -806, -806, -806, -806, -806, -807,
4866 0, -806, -806, -806, 0, 0, 0, -807, -807, -807,
4867 0, 0, -807, -807, -807, 0, -807, 0, 0, 0,
4868 0, 0, 0, 0, -807, -807, -807, -807, -807, 0,
4869 0, 0, 0, 0, 0, 0, -807, -807, 0, -807,
4870 -807, -807, -807, -807, 0, 0, 0, 0, 0, 0,
4871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4872 0, 0, 0, 0, 0, 0, 0, -807, -807, 0,
4873 0, 0, 0, 0, 0, 0, 0, -807, -807, -807,
4874 -807, -807, -807, -807, -807, -807, -807, -807, -807, -807,
4875 0, 0, 0, 0, -807, -807, -807, -807, 0, 0,
4876 -807, 0, 0, 0, 0, -807, 0, 0, 0, 0,
4877 0, 0, 0, 0, 0, 0, 0, 0, 0, -807,
4878 0, 0, -807, 0, 0, 0, 0, 0, 0, 0,
4879 0, 0, 0, 0, -807, -807, -807, -807, -807, -807,
4880 -807, -807, -807, -807, -807, -807, 0, 0, 0, 0,
4881 -807, -807, -807, -807, -807, -513, 0, -807, -807, -807,
4882 0, 0, 0, -513, -513, -513, 0, 0, -513, -513,
4883 -513, 0, -513, 0, 0, 0, 0, 0, 0, 0,
4884 -513, -513, -513, -513, 0, 0, 0, 0, 0, 0,
4885 0, 0, -513, -513, 0, -513, -513, -513, -513, -513,
4886 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4888 0, 0, 0, -513, -513, 0, 0, 0, 0, 0,
4889 0, 0, 0, -513, -513, -513, -513, -513, -513, -513,
4890 -513, -513, -513, -513, -513, -513, 0, 0, 0, 0,
4891 -513, -513, -513, -513, 0, 0, -513, 0, 0, 0,
4892 0, -513, 0, 0, 0, 0, 0, 0, 0, 0,
4893 0, 0, 0, 0, 0, -513, 0, 0, 0, 0,
4894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4895 -513, 0, -513, -513, -513, -513, -513, -513, -513, -513,
4896 -513, -513, 0, 0, 0, 0, -513, -513, -513, -513,
4897 -513, -350, 255, -513, -513, -513, 0, 0, 0, -350,
4898 -350, -350, 0, 0, -350, -350, -350, 0, -350, 0,
4899 0, 0, 0, 0, 0, 0, -350, 0, -350, -350,
4900 -350, 0, 0, 0, 0, 0, 0, 0, -350, -350,
4901 0, -350, -350, -350, -350, -350, 0, 0, 0, 0,
4902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4903 0, 0, 0, 0, 0, 0, 0, 0, 0, -350,
4904 -350, 0, 0, 0, 0, 0, 0, 0, 0, -350,
4905 -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
4906 -350, -350, 0, 0, 0, 0, -350, -350, -350, -350,
4907 0, 0, -350, 0, 0, 0, 0, -350, 0, 0,
4908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4909 0, -350, 0, 0, -350, 0, 0, 0, 0, 0,
4910 0, 0, 0, 0, 0, 0, -350, -350, -350, -350,
4911 -350, -350, -350, -350, -350, -350, -350, -350, 0, 0,
4912 0, 0, 0, -350, -350, -350, -350, -823, 0, -350,
4913 -350, -350, 0, 0, 0, -823, -823, -823, 0, 0,
4914 -823, -823, -823, 0, -823, 0, 0, 0, 0, 0,
4915 0, 0, -823, -823, -823, -823, 0, 0, 0, 0,
4916 0, 0, 0, 0, -823, -823, 0, -823, -823, -823,
4917 -823, -823, 0, 0, 0, 0, 0, 0, 0, 0,
4918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4919 0, 0, 0, 0, 0, -823, -823, 0, 0, 0,
4920 0, 0, 0, 0, 0, -823, -823, -823, -823, -823,
4921 -823, -823, -823, -823, -823, -823, -823, -823, 0, 0,
4922 0, 0, -823, -823, -823, -823, 0, 0, -823, 0,
4923 0, 0, 0, -823, 0, 0, 0, 0, 0, 0,
4924 0, 0, 0, 0, 0, 0, 0, -823, 0, 0,
4925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4926 0, 0, -823, 0, -823, -823, -823, -823, -823, -823,
4927 -823, -823, -823, -823, 0, 0, 0, 0, -823, -823,
4928 -823, -823, -823, -356, 255, -823, -823, -823, 0, 0,
4929 0, -356, -356, -356, 0, 0, -356, -356, -356, 0,
4930 -356, 0, 0, 0, 0, 0, 0, 0, -356, 0,
4931 -356, -356, 0, 0, 0, 0, 0, 0, 0, 0,
4932 -356, -356, 0, -356, -356, -356, -356, -356, 0, 0,
4933 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4935 0, -356, -356, 0, 0, 0, 0, 0, 0, 0,
4936 0, -356, -356, -356, -356, -356, -356, -356, -356, -356,
4937 -356, -356, -356, -356, 0, 0, 0, 0, -356, -356,
4938 -356, -356, 0, 884, -356, 0, 0, 0, 0, -356,
4939 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4940 0, 0, 0, -356, 0, 0, 0, 0, 0, 0,
4941 0, 0, 0, 0, 0, 0, 0, -147, -356, 0,
4942 -356, -356, -356, -356, -356, -356, -356, -356, -356, -356,
4943 0, 0, 0, 0, 827, -356, -356, -356, -356, -363,
4944 0, -356, -356, -356, 0, 0, 0, -363, -363, -363,
4945 0, 0, -363, -363, -363, 0, -363, 0, 0, 0,
4946 0, 0, 0, 0, -363, 0, -363, -363, 0, 0,
4947 0, 0, 0, 0, 0, 0, -363, -363, 0, -363,
4948 -363, -363, -363, -363, 0, 0, 0, 0, 0, 0,
4949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4950 0, 0, 0, 0, 0, 0, 0, -363, -363, 0,
4951 0, 0, 0, 0, 0, 0, 0, -363, -363, -363,
4952 -363, -363, -363, -363, -363, -363, -363, -363, -363, -363,
4953 0, 0, 0, 0, -363, -363, -363, -363, 0, 0,
4954 -363, 0, 0, 0, 0, -363, 0, 0, 0, 0,
4955 0, 0, 0, 0, 0, 0, 0, 0, 0, -363,
4956 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4957 0, 0, 0, 0, -363, 0, -363, -363, -363, -363,
4958 -363, -363, -363, -363, -363, -363, 0, 0, 0, 0,
4959 0, -363, -363, -363, -363, -805, 451, -363, -363, -363,
4960 0, 0, 0, -805, -805, -805, 0, 0, 0, -805,
4961 -805, 0, -805, 0, 0, 0, 0, 0, 0, 0,
4962 -805, -805, 0, 0, 0, 0, 0, 0, 0, 0,
4963 0, 0, -805, -805, 0, -805, -805, -805, -805, -805,
4964 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4965 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4966 0, 0, 0, -805, -805, 0, 0, 0, 0, 0,
4967 0, 0, 0, -805, -805, -805, -805, -805, -805, -805,
4968 -805, -805, -805, -805, -805, -805, 0, 0, 0, 0,
4969 -805, -805, -805, -805, 0, 825, -805, 0, 0, 0,
4970 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4971 0, 0, 0, 0, 0, -805, 0, 0, 0, 0,
4972 0, 0, 0, 0, 0, 0, 0, 0, 0, -146,
4973 -805, 0, -805, -805, -805, -805, -805, -805, -805, -805,
4974 -805, -805, 0, 0, 0, 0, -805, -805, -805, -805,
4975 -137, -805, 0, -805, 0, -805, 0, 0, 0, -805,
4976 -805, -805, 0, 0, 0, -805, -805, 0, -805, 0,
4977 0, 0, 0, 0, 0, 0, -805, -805, 0, 0,
4978 0, 0, 0, 0, 0, 0, 0, 0, -805, -805,
4979 0, -805, -805, -805, -805, -805, 0, 0, 0, 0,
4980 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4981 0, 0, 0, 0, 0, 0, 0, 0, 0, -805,
4982 -805, 0, 0, 0, 0, 0, 0, 0, 0, -805,
4983 -805, -805, -805, -805, -805, -805, -805, -805, -805, -805,
4984 -805, -805, 0, 0, 0, 0, -805, -805, -805, -805,
4985 0, 825, -805, 0, 0, 0, 0, 0, 0, 0,
4986 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4987 0, -805, 0, 0, 0, 0, 0, 0, 0, 0,
4988 0, 0, 0, 0, 0, -146, -805, 0, -805, -805,
4989 -805, -805, -805, -805, -805, -805, -805, -805, 0, 0,
4990 0, 0, -805, -805, -805, -805, -805, -356, 0, -805,
4991 0, -805, 0, 0, 0, -356, -356, -356, 0, 0,
4992 0, -356, -356, 0, -356, 0, 0, 0, 0, 0,
4993 0, 0, -356, 0, 0, 0, 0, 0, 0, 0,
4994 0, 0, 0, 0, -356, -356, 0, -356, -356, -356,
4995 -356, -356, 0, 0, 0, 0, 0, 0, 0, 0,
4996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4997 0, 0, 0, 0, 0, -356, -356, 0, 0, 0,
4998 0, 0, 0, 0, 0, -356, -356, -356, -356, -356,
4999 -356, -356, -356, -356, -356, -356, -356, -356, 0, 0,
5000 0, 0, -356, -356, -356, -356, 0, 826, -356, 0,
5001 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5002 0, 0, 0, 0, 0, 0, 0, -356, 0, 0,
5003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5004 0, -147, -356, 0, -356, -356, -356, -356, -356, -356,
5005 -356, -356, -356, -356, 0, 0, 0, 0, 827, -356,
5006 -356, -356, -138, -356, 0, -356, 0, -356, 0, 0,
5007 0, -356, -356, -356, 0, 0, 0, -356, -356, 0,
5008 -356, 0, 0, 0, 0, 0, 0, 0, -356, 0,
5009 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5010 -356, -356, 0, -356, -356, -356, -356, -356, 0, 0,
5011 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5012 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5013 0, -356, -356, 0, 0, 0, 0, 0, 0, 0,
5014 0, -356, -356, -356, -356, -356, -356, -356, -356, -356,
5015 -356, -356, -356, -356, 0, 0, 0, 0, -356, -356,
5016 -356, -356, 0, 826, -356, 0, 0, 0, 0, 0,
5017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5018 0, 0, 0, -356, 0, 0, 0, 0, 0, 0,
5019 0, 0, 0, 0, 0, 0, 0, -147, -356, 0,
5020 -356, -356, -356, -356, -356, -356, -356, -356, -356, -356,
5021 0, 0, 0, 0, 827, -356, -356, -356, -356, 0,
5022 0, -356, 3, -356, 4, 5, 6, 7, 8, -823,
5023 -823, -823, 9, 10, 0, 0, -823, 11, 0, 12,
5024 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
5025 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5026 26, 0, 0, 0, 0, 0, 27, 28, 284, 30,
5027 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5028 40, 41, 42, 43, 44, 45, 46, 0, 0, -823,
5029 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5030 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5031 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5032 51, 0, 0, 52, 53, 54, 55, 0, 56, 0,
5033 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5034 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5035 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5036 0, 0, 0, 0, 0, 0, 0, 0, 66, 67,
5037 68, 0, 0, 0, 3, -823, 4, 5, 6, 7,
5038 8, -823, 0, -823, 9, 10, 0, -823, -823, 11,
5039 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5040 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
5041 0, 0, 26, 0, 0, 0, 0, 0, 27, 28,
5042 284, 30, 31, 32, 33, 34, 35, 36, 37, 38,
5043 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5044 0, -823, 0, 0, 0, 0, 0, 0, 0, 47,
5045 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5046 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5047 0, 0, 51, 0, 0, 52, 53, 54, 55, 0,
5048 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5049 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5050 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5051 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5052 66, 67, 68, 0, 0, 0, 3, -823, 4, 5,
5053 6, 7, 8, -823, 0, -823, 9, 10, 0, 0,
5054 -823, 11, -823, 12, 13, 14, 15, 16, 17, 18,
5055 0, 0, 0, 0, 0, 19, 20, 21, 22, 23,
5056 24, 25, 0, 0, 26, 0, 0, 0, 0, 0,
5057 27, 28, 284, 30, 31, 32, 33, 34, 35, 36,
5058 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
5059 46, 0, 0, -823, 0, 0, 0, 0, 0, 0,
5060 0, 47, 48, 0, 0, 0, 0, 0, 0, 0,
5061 0, 0, 0, 0, 0, 0, 49, 50, 0, 0,
5062 0, 0, 0, 0, 51, 0, 0, 52, 53, 54,
5063 55, 0, 56, 0, 0, 57, 58, 59, 60, 61,
5064 62, 63, 64, 65, 0, 0, 0, 0, 0, 0,
5065 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5066 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5067 0, 0, 66, 67, 68, 0, 0, 0, 3, -823,
5068 4, 5, 6, 7, 8, -823, 0, -823, 9, 10,
5069 0, 0, -823, 11, 0, 12, 13, 14, 15, 16,
5070 17, 18, -823, 0, 0, 0, 0, 19, 20, 21,
5071 22, 23, 24, 25, 0, 0, 26, 0, 0, 0,
5072 0, 0, 27, 28, 284, 30, 31, 32, 33, 34,
5073 35, 36, 37, 38, 39, 0, 40, 41, 42, 43,
5074 44, 45, 46, 0, 0, -823, 0, 0, 0, 0,
5075 0, 0, 0, 47, 48, 0, 0, 0, 0, 0,
5076 0, 0, 0, 0, 0, 0, 0, 0, 49, 50,
5077 0, 0, 0, 0, 0, 0, 51, 0, 0, 52,
5078 53, 54, 55, 0, 56, 0, 0, 57, 58, 59,
5079 60, 61, 62, 63, 64, 65, 0, 0, 0, 0,
5080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5081 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5082 0, 0, 0, 0, 66, 67, 68, 0, 0, 0,
5083 3, -823, 4, 5, 6, 7, 8, -823, 0, -823,
5084 9, 10, 0, 0, -823, 11, 0, 12, 13, 14,
5085 15, 16, 17, 18, 0, 0, 0, 0, 0, 19,
5086 20, 21, 22, 23, 24, 25, 0, 0, 26, 0,
5087 0, 0, 0, 0, 27, 28, 284, 30, 31, 32,
5088 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5089 42, 43, 44, 45, 46, 0, 0, -823, 0, 0,
5090 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5092 49, 50, 0, 0, 0, 0, 0, 0, 51, 0,
5093 0, 52, 53, 54, 55, 0, 56, 0, 0, 57,
5094 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5095 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5096 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5097 0, 0, 0, 0, 0, 0, 66, 67, 68, 0,
5098 0, 0, 3, -823, 4, 5, 6, 7, 8, -823,
5099 -823, -823, 9, 10, 0, 0, 0, 11, 0, 12,
5100 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
5101 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5102 26, 0, 0, 0, 0, 0, 27, 28, 284, 30,
5103 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5104 40, 41, 42, 43, 44, 45, 46, 0, 0, -823,
5105 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5106 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5107 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5108 51, 0, 0, 52, 53, 54, 55, 0, 56, 0,
5109 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5110 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5111 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5112 0, 0, 0, 0, 0, 0, 0, 0, 66, 67,
5113 68, 0, 0, 0, 3, -823, 4, 5, 6, 7,
5114 8, -823, 0, -823, 9, 10, 0, 0, 0, 11,
5115 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5116 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
5117 0, 0, 26, 0, 0, 0, 0, 0, 27, 28,
5118 284, 30, 31, 32, 33, 34, 35, 36, 37, 38,
5119 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5120 0, -823, 0, 0, 0, 0, 0, 0, 0, 47,
5121 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5122 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5123 0, 0, 51, 0, 0, 52, 53, 54, 55, 0,
5124 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5125 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5128 66, 67, 68, 0, 0, 0, 3, -823, 4, 5,
5129 6, 7, 8, -823, 0, 0, 9, 10, 0, 0,
5130 0, 11, 0, 12, 13, 14, 15, 16, 17, 18,
5131 0, 0, 0, 0, 0, 19, 20, 21, 22, 23,
5132 24, 25, 0, 0, 26, 0, 0, 0, 0, 0,
5133 27, 28, 284, 30, 31, 32, 33, 34, 35, 36,
5134 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
5135 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5136 0, 47, 48, 0, 0, 0, 0, 0, 0, 0,
5137 0, 0, 0, 0, 0, 0, 49, 50, 0, 0,
5138 0, 0, 0, 0, 51, 0, 0, 285, 53, 54,
5139 55, 0, 56, 0, 0, 57, 58, 59, 60, 61,
5140 62, 63, 64, 65, 0, 0, 0, 0, 0, 0,
5141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5143 0, 0, 66, 67, 68, 0, 0, 0, 0, -823,
5144 0, 0, 0, -823, 3, -823, 4, 5, 6, 7,
5145 8, 0, 0, 0, 9, 10, 0, 0, 0, 11,
5146 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5147 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
5148 0, 0, 26, 0, 0, 0, 0, 0, 27, 28,
5149 284, 30, 31, 32, 33, 34, 35, 36, 37, 38,
5150 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5151 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
5152 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5153 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5154 0, 0, 51, 0, 0, 52, 53, 54, 55, 0,
5155 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5156 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5158 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5159 66, 67, 68, 0, 0, 0, 0, -823, 0, 0,
5160 0, -823, 3, -823, 4, 5, 6, 7, 8, 0,
5161 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5162 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
5163 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5164 26, 0, 0, 0, 0, 0, 27, 28, 29, 30,
5165 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5166 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5167 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5169 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5170 51, 0, 0, 52, 53, 54, 55, 0, 56, 0,
5171 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5173 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5174 0, 0, 0, 0, 0, 0, 0, 0, 66, 67,
5175 68, 0, 0, -823, 3, -823, 4, 5, 6, 7,
5176 8, -823, 0, 0, 9, 10, 0, 0, 0, 11,
5177 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5178 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
5179 0, 0, 26, 0, 0, 0, 0, 0, 27, 28,
5180 284, 30, 31, 32, 33, 34, 35, 36, 37, 38,
5181 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5182 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
5183 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5184 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5185 0, 0, 51, 0, 0, 52, 53, 54, 55, 0,
5186 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5187 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5189 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5190 66, 67, 68, 0, 0, -823, 404, -823, 4, 5,
5191 6, 0, 8, -823, 0, 0, 9, 10, 0, 0,
5192 0, 11, -3, 12, 13, 14, 15, 16, 17, 18,
5193 0, 0, 0, 0, 0, 19, 20, 21, 22, 23,
5194 24, 25, 0, 0, 26, 0, 0, 0, 0, 0,
5195 0, 28, 0, 0, 31, 32, 33, 34, 35, 36,
5196 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
5197 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5198 0, 47, 48, 0, 0, 0, 0, 0, 0, 0,
5199 0, 0, 0, 0, 0, 0, 49, 50, 0, 0,
5200 0, 0, 0, 0, 229, 0, 0, 230, 53, 54,
5201 55, 0, 0, 0, 0, 57, 58, 59, 60, 61,
5202 62, 63, 64, 65, 0, 0, 0, 0, 0, 0,
5203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5205 0, 0, 66, 67, 68, 0, 0, 0, 0, 331,
5206 0, 0, 0, 0, 0, 332, 144, 145, 146, 147,
5207 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
5208 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
5209 0, 0, 0, 168, 169, 170, 434, 435, 436, 437,
5210 175, 176, 177, 0, 0, 0, 0, 0, 178, 179,
5211 180, 181, 438, 439, 440, 441, 186, 36, 37, 442,
5212 39, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5213 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5214 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5215 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5216 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5217 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5220 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5221 0, 215, 216, 0, 0, 0, 0, 0, 0, 217,
5222 443, 144, 145, 146, 147, 148, 149, 150, 151, 152,
5223 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
5224 163, 164, 165, 166, 167, 0, 0, 0, 168, 169,
5225 170, 171, 172, 173, 174, 175, 176, 177, 0, 0,
5226 0, 0, 0, 178, 179, 180, 181, 182, 183, 184,
5227 185, 186, 36, 37, 187, 39, 0, 0, 0, 0,
5228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5229 0, 0, 0, 0, 188, 189, 190, 191, 192, 193,
5230 194, 195, 196, 0, 0, 197, 198, 0, 0, 0,
5231 0, 199, 200, 201, 202, 0, 0, 0, 0, 0,
5232 0, 0, 0, 0, 0, 203, 204, 0, 0, 0,
5233 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5234 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5235 0, 0, 0, 0, 0, 205, 206, 207, 208, 209,
5236 210, 211, 212, 213, 214, 0, 215, 216, 0, 0,
5237 0, 0, 0, 0, 217, 144, 145, 146, 147, 148,
5238 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
5239 159, 160, 161, 162, 163, 164, 165, 166, 167, 0,
5240 0, 0, 168, 169, 170, 171, 172, 173, 174, 175,
5241 176, 177, 0, 0, 0, 0, 0, 178, 179, 180,
5242 181, 182, 183, 184, 185, 186, 262, 0, 187, 0,
5243 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5244 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
5245 190, 191, 192, 193, 194, 195, 196, 0, 0, 197,
5246 198, 0, 0, 0, 0, 199, 200, 201, 202, 0,
5247 0, 0, 0, 0, 0, 0, 0, 0, 0, 203,
5248 204, 0, 0, 58, 0, 0, 0, 0, 0, 0,
5249 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5250 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
5251 206, 207, 208, 209, 210, 211, 212, 213, 214, 0,
5252 215, 216, 0, 0, 0, 0, 0, 0, 217, 144,
5253 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
5254 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
5255 165, 166, 167, 0, 0, 0, 168, 169, 170, 171,
5256 172, 173, 174, 175, 176, 177, 0, 0, 0, 0,
5257 0, 178, 179, 180, 181, 182, 183, 184, 185, 186,
5258 0, 0, 187, 0, 0, 0, 0, 0, 0, 0,
5259 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5260 0, 0, 188, 189, 190, 191, 192, 193, 194, 195,
5261 196, 0, 0, 197, 198, 0, 0, 0, 0, 199,
5262 200, 201, 202, 0, 0, 0, 0, 0, 0, 0,
5263 0, 0, 0, 203, 204, 0, 0, 58, 0, 0,
5264 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5265 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5266 0, 0, 0, 205, 206, 207, 208, 209, 210, 211,
5267 212, 213, 214, 0, 215, 216, 0, 0, 0, 0,
5268 0, 0, 217, 144, 145, 146, 147, 148, 149, 150,
5269 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
5270 161, 162, 163, 164, 165, 166, 167, 0, 0, 0,
5271 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
5272 0, 0, 0, 0, 0, 178, 179, 180, 181, 182,
5273 183, 184, 185, 186, 0, 0, 187, 0, 0, 0,
5274 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5275 0, 0, 0, 0, 0, 0, 188, 189, 190, 191,
5276 192, 193, 194, 195, 196, 0, 0, 197, 198, 0,
5277 0, 0, 0, 199, 200, 201, 202, 0, 0, 0,
5278 0, 0, 0, 0, 0, 0, 0, 203, 204, 0,
5279 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5280 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5281 0, 0, 0, 0, 0, 0, 0, 205, 206, 207,
5282 208, 209, 210, 211, 212, 213, 214, 0, 215, 216,
5283 4, 5, 6, 0, 8, 0, 217, 0, 9, 10,
5284 0, 0, 0, 11, 0, 12, 13, 14, 270, 271,
5285 17, 18, 0, 0, 0, 0, 0, 19, 20, 272,
5286 22, 23, 24, 25, 0, 0, 227, 0, 0, 0,
5287 0, 0, 0, 302, 0, 0, 31, 32, 33, 34,
5288 35, 36, 37, 38, 39, 0, 40, 41, 42, 43,
5289 44, 45, 46, 0, 0, 0, 0, 0, 0, 0,
5290 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5291 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5292 0, 0, 0, 0, 0, 0, 303, 0, 0, 230,
5293 53, 54, 55, 0, 0, 0, 0, 57, 58, 59,
5294 60, 61, 62, 63, 64, 65, 0, 0, 4, 5,
5295 6, 0, 8, 0, 0, 0, 9, 10, 0, 0,
5296 0, 11, 0, 12, 13, 14, 270, 271, 17, 18,
5297 0, 0, 0, 0, 304, 19, 20, 272, 22, 23,
5298 24, 25, 305, 0, 227, 0, 0, 0, 0, 0,
5299 0, 302, 0, 0, 31, 32, 33, 34, 35, 36,
5300 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
5301 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5304 0, 0, 0, 0, 303, 0, 0, 230, 53, 54,
5305 55, 0, 0, 0, 0, 57, 58, 59, 60, 61,
5306 62, 63, 64, 65, 0, 0, 4, 5, 6, 0,
5307 8, 0, 0, 0, 9, 10, 0, 0, 0, 11,
5308 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5309 0, 0, 304, 19, 20, 21, 22, 23, 24, 25,
5310 611, 0, 227, 0, 0, 0, 0, 0, 0, 28,
5311 0, 0, 31, 32, 33, 34, 35, 36, 37, 38,
5312 39, 228, 40, 41, 42, 43, 44, 45, 46, 0,
5313 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
5314 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5315 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5316 0, 0, 229, 0, 0, 230, 53, 54, 55, 0,
5317 231, 232, 233, 57, 58, 234, 60, 61, 62, 63,
5318 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5319 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5320 0, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5321 66, 235, 68, 9, 10, 0, 0, 259, 11, 0,
5322 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5323 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5324 0, 26, 0, 0, 0, 0, 0, 0, 28, 0,
5325 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5326 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5327 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5328 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5329 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5330 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5331 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5332 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5333 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5334 0, 0, 3, 0, 4, 5, 6, 7, 8, 66,
5335 67, 68, 9, 10, 0, 0, 259, 11, 0, 12,
5336 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
5337 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5338 26, 0, 0, 0, 0, 0, 27, 28, 0, 30,
5339 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5340 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5341 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5343 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5344 51, 0, 0, 52, 53, 54, 55, 0, 56, 0,
5345 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5346 0, 0, 404, 0, 4, 5, 6, 0, 8, 0,
5347 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5348 13, 14, 15, 16, 17, 18, 0, 0, 66, 67,
5349 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5350 26, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5351 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5352 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5353 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5355 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5356 229, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5357 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5358 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5359 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5360 13, 14, 15, 16, 17, 18, 0, 0, 66, 67,
5361 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5362 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5363 31, 32, 33, 34, 35, 36, 37, 38, 39, 228,
5364 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5365 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5367 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5368 229, 0, 0, 230, 53, 54, 55, 0, 231, 232,
5369 233, 57, 58, 234, 60, 61, 62, 63, 64, 65,
5370 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5371 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5372 13, 14, 15, 16, 17, 18, 0, 0, 66, 235,
5373 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5374 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5375 31, 32, 33, 34, 35, 36, 37, 38, 39, 228,
5376 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5377 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5378 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5379 0, 0, 49, 479, 0, 0, 0, 0, 0, 0,
5380 229, 0, 0, 230, 53, 54, 55, 0, 231, 232,
5381 233, 57, 58, 234, 60, 61, 62, 63, 64, 65,
5382 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5383 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5384 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5385 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5386 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5387 31, 32, 33, 34, 35, 36, 37, 38, 39, 228,
5388 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5389 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5391 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5392 229, 0, 0, 230, 53, 54, 55, 0, 231, 232,
5393 233, 57, 58, 234, 60, 61, 62, 63, 64, 65,
5394 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5395 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5396 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5397 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5398 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5399 31, 32, 33, 34, 35, 36, 37, 38, 39, 228,
5400 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5401 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5402 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5403 0, 0, 49, 479, 0, 0, 0, 0, 0, 0,
5404 229, 0, 0, 230, 53, 54, 55, 0, 231, 232,
5405 233, 57, 58, 234, 60, 61, 62, 63, 64, 65,
5406 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5407 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5408 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5409 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5410 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5411 31, 32, 33, 34, 35, 36, 37, 38, 39, 228,
5412 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5413 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5415 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5416 229, 0, 0, 230, 53, 54, 55, 0, 231, 232,
5417 0, 57, 58, 234, 60, 61, 62, 63, 64, 65,
5418 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5419 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5420 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5421 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5422 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5423 31, 32, 33, 34, 35, 36, 37, 38, 39, 228,
5424 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5425 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5426 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5427 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5428 229, 0, 0, 230, 53, 54, 55, 0, 0, 232,
5429 233, 57, 58, 234, 60, 61, 62, 63, 64, 65,
5430 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5431 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5432 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5433 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5434 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5435 31, 32, 33, 34, 35, 36, 37, 38, 39, 228,
5436 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5437 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5439 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5440 229, 0, 0, 230, 53, 54, 55, 0, 0, 232,
5441 0, 57, 58, 234, 60, 61, 62, 63, 64, 65,
5442 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5443 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5444 13, 14, 15, 16, 17, 18, 0, 0, 66, 235,
5445 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5446 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5447 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5448 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5449 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5450 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5451 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5452 229, 0, 0, 230, 53, 54, 55, 0, 800, 0,
5453 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5454 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5455 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5456 13, 14, 15, 16, 17, 18, 0, 0, 66, 235,
5457 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5458 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5459 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5460 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5461 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5463 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5464 811, 0, 0, 230, 53, 54, 55, 0, 800, 0,
5465 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5466 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5467 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5468 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5469 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5470 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5471 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5472 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5473 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5474 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5475 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5476 229, 0, 0, 230, 53, 54, 55, 0, 972, 0,
5477 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5478 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5479 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5480 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5481 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5482 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5483 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5484 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5485 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5487 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5488 229, 0, 0, 230, 53, 54, 55, 0, 1021, 0,
5489 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5490 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5491 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5492 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5493 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5494 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5495 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5496 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5497 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5498 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5499 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5500 229, 0, 0, 230, 53, 54, 55, 0, 800, 0,
5501 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5502 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5503 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5504 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5505 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5506 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5507 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5508 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5509 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5510 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5511 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5512 229, 0, 0, 230, 53, 54, 55, 0, 1141, 0,
5513 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5514 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5515 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5516 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5517 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5518 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5519 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5520 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5521 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5522 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5523 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5524 229, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5525 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5526 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5527 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5528 13, 14, 15, 16, 17, 18, 0, 0, 66, 235,
5529 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5530 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5531 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5532 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5533 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5535 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5536 229, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5537 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5538 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5539 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5540 13, 14, 15, 16, 17, 18, 0, 0, 66, 235,
5541 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5542 26, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5543 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5544 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5545 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5546 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5547 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5548 229, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5549 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5550 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5551 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5552 13, 14, 15, 16, 17, 18, 0, 0, 66, 67,
5553 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5554 782, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5555 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5556 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5557 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5558 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5559 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5560 229, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5561 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5562 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5563 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5564 13, 14, 15, 16, 17, 18, 0, 0, 66, 235,
5565 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5566 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5567 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5568 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5569 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5571 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5572 811, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5573 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5574 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5575 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5576 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5577 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5578 891, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5579 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5580 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5581 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5582 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5583 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5584 229, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5585 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5586 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5587 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5588 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5589 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5590 227, 0, 0, 0, 0, 0, 0, 302, 0, 0,
5591 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5592 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5593 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5594 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5595 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5596 303, 0, 0, 363, 53, 54, 55, 0, 364, 0,
5597 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5598 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5599 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5600 270, 271, 17, 18, 0, 0, 0, 0, 304, 19,
5601 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5602 0, 0, 0, 0, 0, 302, 0, 0, 31, 32,
5603 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5604 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5606 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5607 0, 0, 0, 0, 0, 0, 0, 0, 415, 0,
5608 0, 52, 53, 54, 55, 0, 56, 0, 0, 57,
5609 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5610 4, 5, 6, 0, 8, 0, 0, 0, 9, 10,
5611 0, 0, 0, 11, 0, 12, 13, 14, 270, 271,
5612 17, 18, 0, 0, 0, 0, 304, 19, 20, 272,
5613 22, 23, 24, 25, 0, 0, 227, 0, 0, 0,
5614 0, 0, 0, 302, 0, 0, 31, 32, 33, 423,
5615 35, 36, 37, 424, 39, 0, 40, 41, 42, 43,
5616 44, 45, 46, 0, 0, 0, 0, 0, 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, 425, 0, 0, 0, 426, 0, 0, 230,
5620 53, 54, 55, 0, 0, 0, 0, 57, 58, 59,
5621 60, 61, 62, 63, 64, 65, 0, 0, 4, 5,
5622 6, 0, 8, 0, 0, 0, 9, 10, 0, 0,
5623 0, 11, 0, 12, 13, 14, 270, 271, 17, 18,
5624 0, 0, 0, 0, 304, 19, 20, 272, 22, 23,
5625 24, 25, 0, 0, 227, 0, 0, 0, 0, 0,
5626 0, 302, 0, 0, 31, 32, 33, 423, 35, 36,
5627 37, 424, 39, 0, 40, 41, 42, 43, 44, 45,
5628 46, 0, 0, 0, 0, 0, 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, 426, 0, 0, 230, 53, 54,
5632 55, 0, 0, 0, 0, 57, 58, 59, 60, 61,
5633 62, 63, 64, 65, 0, 0, 4, 5, 6, 0,
5634 8, 0, 0, 0, 9, 10, 0, 0, 0, 11,
5635 0, 12, 13, 14, 270, 271, 17, 18, 0, 0,
5636 0, 0, 304, 19, 20, 272, 22, 23, 24, 25,
5637 0, 0, 227, 0, 0, 0, 0, 0, 0, 302,
5638 0, 0, 31, 32, 33, 34, 35, 36, 37, 38,
5639 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5640 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5642 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5643 0, 0, 303, 0, 0, 363, 53, 54, 55, 0,
5644 0, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5645 64, 65, 0, 0, 4, 5, 6, 0, 8, 0,
5646 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5647 13, 14, 270, 271, 17, 18, 0, 0, 0, 0,
5648 304, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5649 227, 0, 0, 0, 0, 0, 0, 302, 0, 0,
5650 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5651 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5652 0, 0, 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 1197, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5656 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5657 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5658 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5659 270, 271, 17, 18, 0, 0, 0, 0, 304, 19,
5660 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5661 0, 0, 0, 0, 0, 302, 0, 0, 31, 32,
5662 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5663 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
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, 649, 650, 0, 1299, 651,
5667 0, 230, 53, 54, 55, 0, 0, 0, 0, 57,
5668 58, 59, 60, 61, 62, 63, 64, 65, 0, 188,
5669 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5670 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5671 0, 0, 0, 0, 0, 0, 304, 0, 0, 0,
5672 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5673 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5675 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5676 0, 215, 216, 703, 642, 0, 0, 704, 0, 217,
5677 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5678 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5679 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5680 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5681 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5682 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5683 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5684 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5685 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5686 216, 706, 650, 0, 0, 707, 0, 217, 0, 0,
5687 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5688 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5689 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5690 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5691 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5692 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5693 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5694 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5695 209, 210, 211, 212, 213, 214, 0, 215, 216, 703,
5696 642, 0, 0, 723, 0, 217, 0, 0, 0, 0,
5697 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5698 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5699 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5700 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5701 0, 0, 0, 0, 203, 204, 0, 0, 0, 0,
5702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5703 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5704 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5705 211, 212, 213, 214, 0, 215, 216, 734, 642, 0,
5706 0, 735, 0, 217, 0, 0, 0, 0, 0, 0,
5707 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5708 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5709 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5710 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5711 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
5712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5713 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5714 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5715 213, 214, 0, 215, 216, 737, 650, 0, 0, 738,
5716 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
5717 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5718 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5719 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5720 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5721 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5722 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5723 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5724 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5725 0, 215, 216, 855, 642, 0, 0, 856, 0, 217,
5726 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5727 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5728 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5729 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5730 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5731 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5732 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5733 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5734 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5735 216, 858, 650, 0, 0, 859, 0, 217, 0, 0,
5736 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5737 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5738 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5739 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5740 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5741 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5742 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5743 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5744 209, 210, 211, 212, 213, 214, 0, 215, 216, 864,
5745 642, 0, 0, 865, 0, 217, 0, 0, 0, 0,
5746 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5747 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5748 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5749 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5750 0, 0, 0, 0, 203, 204, 0, 0, 0, 0,
5751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5753 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5754 211, 212, 213, 214, 0, 215, 216, 688, 650, 0,
5755 0, 689, 0, 217, 0, 0, 0, 0, 0, 0,
5756 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5757 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5758 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5759 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5760 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
5761 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5762 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5763 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5764 213, 214, 0, 215, 216, 1027, 642, 0, 0, 1028,
5765 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
5766 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5767 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5768 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5769 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5770 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5771 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5772 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5773 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5774 0, 215, 216, 1030, 650, 0, 0, 1031, 0, 217,
5775 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5776 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5777 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5778 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5779 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5781 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5782 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5783 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5784 216, 1318, 642, 0, 0, 1319, 0, 217, 0, 0,
5785 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5786 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5787 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5788 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5789 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5790 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5791 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5792 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5793 209, 210, 211, 212, 213, 214, 0, 215, 216, 1321,
5794 650, 0, 0, 1322, 0, 217, 0, 0, 0, 0,
5795 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5796 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5797 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5798 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5799 0, 0, 0, 0, 203, 204, 0, 0, 0, 0,
5800 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5801 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5802 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5803 211, 212, 213, 214, 0, 215, 216, 1366, 642, 0,
5804 0, 1367, 0, 217, 0, 0, 0, 0, 0, 0,
5805 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5806 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5807 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5808 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5809 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
5810 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5811 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5812 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5813 213, 214, 0, 215, 216, 0, 0, 0, 0, 0,
5817static const yytype_int16 yycheck[] =
5819 1, 59, 7, 70, 58, 15, 16, 58, 107, 408,
5820 101, 13, 14, 116, 400, 1, 399, 70, 401, 7,
5821 15, 16, 27, 426, 115, 764, 349, 1, 843, 255,
5822 598, 252, 614, 601, 27, 52, 53, 103, 104, 27,
5823 56, 107, 344, 15, 16, 575, 853, 349, 600, 81,
5824 766, 52, 53, 58, 107, 56, 344, 344, 15, 16,
5825 111, 349, 349, 63, 64, 65, 52, 53, 54, 55,
5826 72, 56, 455, 477, 772, 26, 52, 28, 604, 21,
5827 89, 948, 54, 104, 588, 66, 107, 473, 89, 472,
5828 594, 474, 600, 614, 910, 469, 469, 54, 55, 565,
5829 912, 629, 112, 477, 89, 764, 111, 108, 109, 110,
5830 111, 515, 525, 681, 296, 15, 16, 112, 300, 502,
5831 13, 26, 25, 108, 109, 110, 766, 1033, 81, 0,
5832 84, 37, 38, 29, 823, 100, 67, 66, 778, 512,
5833 112, 527, 84, 320, 321, 528, 1032, 1033, 25, 25,
5834 1291, 1170, 608, 100, 69, 112, 247, 285, 152, 113,
5835 154, 101, 1283, 98, 13, 1184, 13, 100, 25, 134,
5836 54, 692, 693, 25, 692, 693, 234, 66, 10, 0,
5837 64, 65, 100, 98, 66, 67, 277, 134, 287, 101,
5838 155, 1058, 121, 122, 260, 261, 766, 69, 611, 25,
5839 656, 134, 772, 37, 38, 726, 662, 663, 726, 13,
5840 157, 13, 112, 230, 722, 155, 134, 25, 153, 310,
5841 287, 1362, 157, 1090, 13, 1092, 98, 123, 13, 230,
5842 119, 134, 161, 1354, 287, 363, 68, 25, 1144, 121,
5843 122, 273, 274, 155, 230, 255, 151, 257, 154, 120,
5844 25, 154, 155, 154, 1070, 158, 27, 1069, 1144, 245,
5845 255, 154, 257, 484, 157, 266, 252, 160, 285, 255,
5846 151, 337, 338, 339, 340, 678, 342, 343, 155, 155,
5847 266, 13, 668, 255, 285, 257, 669, 976, 754, 755,
5848 13, 1310, 266, 679, 1010, 863, 305, 680, 155, 285,
5849 257, 827, 13, 155, 305, 154, 155, 154, 1006, 285,
5850 714, 160, 761, 160, 413, 764, 337, 338, 339, 340,
5851 305, 274, 25, 304, 852, 1192, 1193, 418, 1143, 155,
5852 272, 787, 66, 275, 335, 791, 1143, 56, 712, 712,
5853 714, 13, 25, 409, 295, 296, 363, 155, 364, 300,
5854 154, 302, 154, 157, 307, 101, 160, 257, 160, 425,
5855 413, 335, 363, 364, 541, 154, 543, 155, 1008, 154,
5856 1010, 160, 1012, 1032, 1033, 160, 928, 363, 960, 364,
5857 155, 34, 157, 154, 134, 119, 916, 363, 409, 160,
5858 400, 15, 66, 410, 411, 851, 401, 810, 854, 52,
5859 25, 25, 403, 829, 425, 400, 134, 157, 154, 410,
5860 411, 837, 868, 981, 400, 919, 920, 403, 1170, 923,
5861 928, 925, 154, 927, 410, 411, 161, 155, 160, 950,
5862 951, 154, 950, 951, 1186, 956, 957, 160, 956, 957,
5863 1010, 451, 428, 154, 910, 119, 912, 121, 122, 160,
5864 455, 134, 155, 15, 157, 17, 451, 100, 832, 832,
5865 402, 1032, 1033, 473, 766, 100, 1032, 1033, 26, 474,
5866 772, 154, 155, 1091, 157, 158, 109, 34, 473, 451,
5867 28, 702, 154, 1194, 1195, 1144, 712, 473, 160, 494,
5868 998, 134, 100, 134, 451, 52, 482, 502, 484, 134,
5869 155, 494, 25, 705, 1025, 100, 494, 508, 141, 134,
5870 100, 967, 469, 455, 970, 1155, 525, 527, 1158, 1040,
5871 1091, 977, 1040, 528, 525, 134, 134, 983, 1187, 154,
5872 155, 548, 527, 158, 736, 1194, 1195, 1108, 1353, 134,
5873 525, 527, 1087, 1088, 134, 100, 599, 548, 112, 731,
5874 1289, 451, 1304, 554, 69, 512, 1308, 69, 1310, 945,
5875 155, 944, 548, 946, 937, 155, 743, 1071, 1072, 1073,
5876 1074, 748, 100, 1144, 100, 974, 1194, 1195, 1144, 134,
5877 554, 155, 97, 98, 100, 571, 98, 597, 1158, 575,
5878 600, 100, 996, 151, 1162, 1306, 1167, 598, 1296, 157,
5879 601, 34, 611, 1069, 1070, 1061, 134, 134, 661, 154,
5880 611, 134, 598, 1184, 159, 601, 682, 1369, 134, 52,
5881 69, 1187, 996, 1194, 1195, 134, 611, 155, 1194, 1195,
5882 1289, 154, 155, 157, 69, 158, 100, 609, 153, 155,
5883 56, 658, 614, 660, 1189, 1190, 155, 1306, 97, 98,
5884 101, 1291, 718, 1052, 100, 857, 290, 658, 668, 660,
5885 1358, 1301, 648, 98, 669, 867, 100, 653, 889, 679,
5886 134, 154, 658, 668, 660, 680, 999, 160, 609, 630,
5887 681, 69, 668, 614, 679, 78, 1089, 741, 134, 694,
5888 1220, 645, 1222, 679, 1234, 681, 647, 999, 100, 653,
5889 134, 694, 155, 645, 153, 691, 694, 69, 1010, 1158,
5890 98, 999, 999, 100, 154, 1219, 702, 1285, 158, 155,
5891 1360, 1291, 1362, 732, 1364, 933, 1296, 935, 66, 820,
5892 69, 732, 134, 157, 1133, 97, 98, 691, 69, 725,
5893 1306, 1381, 1065, 743, 69, 745, 69, 732, 748, 749,
5894 157, 144, 145, 146, 705, 712, 100, 1213, 97, 98,
5895 69, 692, 693, 1065, 69, 66, 97, 98, 157, 872,
5896 78, 69, 97, 98, 97, 98, 100, 1065, 1065, 100,
5897 731, 119, 724, 121, 122, 736, 124, 158, 1191, 98,
5898 134, 153, 1362, 98, 860, 726, 862, 134, 1338, 1339,
5899 98, 810, 1342, 1343, 69, 1335, 1346, 159, 861, 810,
5900 134, 66, 1211, 134, 153, 56, 78, 451, 157, 870,
5901 121, 122, 153, 124, 152, 810, 26, 1029, 153, 69,
5902 153, 782, 97, 98, 155, 1375, 1376, 1377, 1378, 860,
5903 1289, 862, 1291, 69, 1384, 157, 480, 1296, 154, 483,
5904 26, 157, 1301, 839, 488, 841, 1158, 843, 98, 52,
5905 154, 155, 863, 56, 119, 870, 121, 122, 155, 69,
5906 161, 505, 98, 69, 58, 832, 1332, 863, 66, 69,
5907 142, 143, 144, 145, 146, 151, 52, 1273, 153, 1091,
5908 56, 1274, 602, 69, 78, 897, 606, 97, 98, 66,
5909 966, 97, 98, 889, 154, 155, 857, 97, 98, 1358,
5910 1304, 1360, 134, 1362, 1308, 1364, 867, 792, 928, 78,
5911 795, 97, 98, 134, 108, 134, 26, 980, 112, 982,
5912 916, 119, 1381, 121, 122, 945, 124, 69, 14, 15,
5913 891, 946, 106, 69, 160, 966, 56, 581, 965, 155,
5914 945, 151, 119, 153, 121, 122, 138, 157, 69, 945,
5915 89, 90, 25, 153, 965, 97, 98, 1169, 155, 69,
5916 1172, 97, 98, 158, 960, 151, 610, 153, 155, 965,
5917 981, 157, 152, 1000, 40, 41, 97, 98, 960, 1291,
5918 1192, 154, 155, 1, 1296, 981, 58, 97, 98, 1000,
5919 69, 929, 930, 306, 307, 69, 134, 15, 16, 69,
5920 938, 134, 155, 941, 1000, 943, 78, 1019, 1020, 950,
5921 951, 153, 1023, 1024, 158, 956, 957, 153, 97, 98,
5922 155, 1032, 1033, 97, 98, 155, 1094, 97, 98, 155,
5923 1057, 1095, 153, 155, 52, 53, 108, 109, 56, 1023,
5924 1024, 151, 686, 153, 134, 52, 1057, 157, 155, 67,
5925 1362, 1047, 30, 1049, 66, 155, 1268, 1269, 1270, 152,
5926 155, 1057, 54, 55, 66, 57, 155, 13, 1029, 141,
5927 17, 89, 64, 65, 153, 25, 1087, 1088, 155, 153,
5928 1091, 1077, 1078, 153, 1025, 103, 104, 152, 155, 107,
5929 108, 109, 110, 134, 112, 1204, 44, 1108, 1199, 1040,
5930 44, 152, 155, 83, 84, 1181, 155, 119, 1320, 121,
5931 122, 44, 1139, 1140, 758, 56, 44, 119, 1145, 121,
5932 122, 1132, 136, 134, 159, 1136, 8, 1204, 1139, 1140,
5933 1091, 1092, 1159, 1144, 1145, 78, 15, 1132, 692, 693,
5934 1136, 1204, 155, 1139, 1140, 52, 155, 1143, 1159, 1145,
5935 1181, 1162, 95, 96, 708, 709, 1167, 137, 138, 1170,
5936 155, 155, 155, 1159, 155, 52, 1162, 54, 55, 56,
5937 57, 1184, 726, 1184, 155, 1186, 1203, 152, 1189, 1190,
5938 101, 1194, 1195, 1194, 1195, 155, 1147, 1255, 155, 9,
5939 1217, 155, 1203, 52, 139, 155, 139, 140, 141, 142,
5940 143, 144, 145, 146, 1280, 1281, 1217, 1203, 1169, 139,
5941 1206, 1172, 230, 155, 152, 102, 155, 52, 1158, 56,
5942 107, 1217, 1233, 101, 1220, 869, 1222, 158, 160, 155,
5943 52, 1192, 54, 55, 56, 57, 155, 255, 1233, 257,
5944 155, 1252, 260, 261, 888, 155, 890, 155, 266, 1280,
5945 1281, 155, 52, 1273, 54, 55, 155, 57, 52, 1274,
5946 54, 55, 56, 57, 908, 155, 152, 285, 1273, 1230,
5947 139, 55, 155, 56, 1285, 155, 157, 1273, 155, 1275,
5948 102, 1277, 155, 155, 1295, 155, 264, 305, 335, 1285,
5949 157, 504, 266, 1304, 508, 1136, 106, 1308, 1325, 1310,
5950 1295, 52, 102, 54, 55, 56, 57, 1268, 1269, 1270,
5951 609, 870, 108, 78, 1325, 110, 98, 335, 1158, 337,
5952 338, 339, 340, 495, 342, 343, 880, 691, 961, 1325,
5953 95, 96, 40, 41, 42, 43, 44, 1206, 980, 1335,
5954 59, 60, 61, 62, 754, 363, 364, 910, 1231, 1289,
5955 1158, 1291, 1289, 1232, 1296, 1078, 1296, 1353, 1369, 1320,
5956 1, 1301, 1230, 873, 1354, 1353, 1187, 1187, 1329, 359,
5957 1183, 1275, 1252, 119, 15, 16, 141, 142, 143, 144,
5958 145, 146, 400, 361, 1277, 403, 543, 1348, 366, 111,
5959 764, 409, 410, 411, 772, 115, 950, 951, -1, 1348,
5960 -1, -1, 956, 957, -1, -1, -1, 425, -1, -1,
5961 -1, 52, 53, -1, -1, -1, -1, -1, 1358, -1,
5962 1360, -1, 1362, -1, 1364, -1, 67, -1, -1, -1,
5963 -1, -1, -1, 451, -1, -1, 990, 991, -1, 993,
5964 994, 1381, -1, -1, 228, -1, -1, 231, 232, 233,
5965 -1, 1291, -1, -1, -1, 473, 1296, -1, -1, -1,
5966 -1, 1301, 103, 104, -1, -1, 107, -1, -1, -1,
5967 -1, 112, 1032, 1033, -1, -1, 33, 34, 35, 36,
5968 458, 459, -1, -1, -1, -1, 1040, -1, -1, 467,
5969 508, -1, 49, 50, 51, -1, -1, 475, 476, -1,
5970 -1, -1, 59, 60, 61, 62, 63, 525, -1, 527,
5971 1064, -1, -1, -1, -1, -1, -1, 495, 1358, -1,
5972 1360, -1, 1362, -1, 1364, 503, -1, 1087, 1088, -1,
5973 548, 1091, -1, 78, -1, -1, 554, -1, -1, -1,
5974 -1, 1381, -1, -1, -1, -1, -1, -1, 1108, 1193,
5975 95, 96, -1, 110, 111, 112, 113, 114, 115, 116,
5976 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
5977 -1, -1, -1, -1, -1, -1, -1, -1, -1, 597,
5978 598, -1, 600, 601, 1144, -1, -1, -1, -1, 230,
5979 147, 609, -1, 611, 1238, -1, 614, 142, 143, 144,
5980 145, 146, -1, -1, 1248, -1, -1, 1167, -1, -1,
5981 1170, -1, -1, -1, 255, -1, 257, -1, -1, 260,
5982 261, 1265, 1266, 1267, 1184, 266, 1186, -1, -1, 1189,
5983 1190, -1, -1, -1, 1194, 1195, -1, -1, -1, -1,
5984 658, -1, 660, -1, 285, -1, -1, -1, -1, -1,
5985 668, -1, -1, -1, 52, -1, 54, 55, 56, 57,
5986 58, 679, -1, 681, 682, 1032, 1033, -1, -1, -1,
5987 -1, -1, -1, -1, 692, 693, -1, 655, -1, -1,
5988 78, -1, -1, -1, 468, 469, -1, -1, -1, -1,
5989 -1, -1, 1252, 477, 335, -1, 337, 338, 339, 340,
5990 718, 342, 343, -1, 102, -1, -1, -1, 726, 107,
5991 108, 109, -1, -1, 732, -1, -1, 695, -1, -1,
5992 1087, 1088, 363, -1, 1091, -1, -1, -1, 512, -1,
5993 -1, 515, 52, -1, 54, 55, 56, 57, 58, -1,
5994 -1, 1108, -1, 141, 1304, -1, 144, -1, 1308, -1,
5995 1310, -1, -1, -1, -1, -1, -1, -1, 78, 400,
5996 -1, -1, 403, -1, -1, -1, -1, -1, 409, 410,
5997 411, -1, 92, -1, -1, -1, -1, 1144, -1, -1,
5998 -1, -1, 102, -1, 425, -1, -1, 107, 108, 109,
5999 -1, -1, 810, -1, -1, -1, -1, -1, -1, -1,
6000 1167, -1, -1, 1170, -1, 589, -1, -1, -1, 1369,
6001 451, -1, -1, -1, -1, -1, -1, 1184, -1, 1186,
6002 -1, 141, 1189, 1190, 144, 609, -1, 1194, 1195, -1,
6003 614, -1, 473, -1, -1, -1, -1, 157, -1, -1,
6004 -1, -1, 860, -1, 862, 863, -1, 825, 826, -1,
6005 -1, -1, -1, -1, -1, 833, 834, -1, -1, -1,
6006 -1, -1, -1, -1, -1, -1, 52, 508, 54, 55,
6007 56, 57, 58, -1, -1, -1, -1, -1, -1, -1,
6008 -1, -1, -1, -1, -1, 1252, 527, -1, -1, -1,
6009 -1, -1, 78, -1, 52, -1, 54, 55, 56, 57,
6010 58, -1, -1, -1, -1, 883, 884, 548, 886, 887,
6011 928, -1, 696, 554, -1, -1, 102, -1, -1, -1,
6012 78, -1, 108, 109, -1, -1, -1, 945, 712, -1,
6013 714, -1, 950, 951, 92, -1, -1, 1304, 956, 957,
6014 -1, 1308, -1, 1310, 102, -1, -1, 965, 966, 107,
6015 108, 109, -1, -1, -1, 141, 597, 598, -1, 600,
6016 601, -1, -1, 981, 942, -1, -1, -1, 609, -1,
6017 -1, -1, -1, 614, -1, -1, -1, 955, -1, -1,
6018 -1, -1, 1000, 141, -1, -1, 144, 771, -1, -1,
6019 -1, -1, -1, -1, 1, -1, -1, -1, -1, -1,
6020 -1, -1, 1369, -1, -1, 1023, 1024, 1025, 15, 16,
6021 -1, -1, 1032, 1033, 992, -1, 800, 658, -1, 660,
6022 -1, -1, 1040, -1, -1, -1, -1, 668, -1, -1,
6023 52, -1, 54, 55, 56, 57, 58, -1, 679, 1057,
6024 681, 682, -1, -1, -1, 52, 53, -1, 832, -1,
6025 -1, 692, 693, -1, -1, -1, 78, -1, -1, -1,
6026 67, -1, -1, -1, -1, -1, 850, 1087, 1088, -1,
6027 92, 1091, -1, -1, -1, -1, -1, 718, -1, -1,
6028 102, -1, -1, -1, -1, 726, 108, 109, 1108, -1,
6029 -1, -1, -1, -1, -1, -1, 103, 104, -1, -1,
6030 107, -1, -1, -1, -1, 112, -1, -1, -1, -1,
6031 -1, -1, -1, -1, 1132, -1, -1, -1, 1136, 141,
6032 -1, 1139, 1140, -1, 1144, -1, -1, 1145, -1, -1,
6033 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6034 -1, 1159, -1, -1, 1162, -1, -1, 1167, -1, -1,
6035 1170, -1, -1, 937, -1, -1, -1, -1, -1, -1,
6036 -1, -1, -1, 1181, 1184, -1, 1186, -1, -1, 1189,
6037 1190, -1, -1, -1, 1194, 1195, 960, -1, -1, -1,
6038 -1, -1, -1, -1, -1, 1203, -1, -1, 972, -1,
6039 -1, -1, -1, -1, -1, -1, -1, -1, 1176, 1217,
6040 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6041 -1, -1, 996, -1, -1, 1233, -1, -1, -1, 860,
6042 -1, 862, 863, 230, -1, -1, -1, -1, -1, -1,
6043 -1, -1, 1252, -1, -1, -1, -1, 1021, -1, -1,
6044 -1, -1, -1, -1, -1, -1, -1, -1, 255, -1,
6045 257, -1, -1, 260, 261, 1273, -1, -1, -1, 266,
6046 -1, -1, 1280, 1281, -1, -1, -1, 1285, -1, -1,
6047 -1, -1, 1056, -1, -1, -1, -1, 1295, 285, -1,
6048 -1, -1, -1, -1, 1304, -1, -1, 928, 1308, -1,
6049 1310, -1, -1, -1, -1, -1, 1032, 1033, -1, -1,
6050 -1, -1, -1, -1, 945, -1, -1, 1325, -1, 950,
6051 951, -1, -1, -1, -1, 956, 957, -1, -1, -1,
6052 -1, -1, -1, -1, 965, 966, -1, -1, 335, -1,
6053 337, 338, 339, 340, -1, 342, 343, -1, -1, -1,
6054 981, -1, -1, -1, -1, -1, -1, -1, -1, 1369,
6055 -1, 1087, 1088, -1, -1, 1091, 363, 1141, -1, 1000,
6056 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6057 -1, 1, 1108, -1, -1, -1, -1, -1, -1, -1,
6058 -1, -1, 1023, 1024, 1025, 15, 16, -1, -1, -1,
6059 -1, -1, -1, 400, -1, -1, 403, -1, -1, 1040,
6060 -1, -1, 409, 410, 411, -1, -1, -1, 1144, -1,
6061 -1, -1, -1, -1, -1, -1, 1057, -1, 425, -1,
6062 -1, -1, 52, 53, -1, -1, -1, -1, -1, -1,
6063 -1, 1167, -1, -1, 1170, -1, -1, 67, -1, -1,
6064 -1, -1, -1, -1, 451, -1, -1, -1, 1184, -1,
6065 1186, 1032, 1033, 1189, 1190, -1, -1, -1, 1194, 1195,
6066 -1, -1, -1, -1, -1, -1, 473, -1, -1, -1,
6067 -1, -1, -1, 103, 104, -1, -1, 107, -1, -1,
6068 -1, -1, 112, -1, -1, -1, -1, -1, -1, -1,
6069 -1, -1, -1, -1, -1, 1136, -1, -1, 1139, 1140,
6070 -1, 508, -1, -1, 1145, -1, 1087, 1088, -1, -1,
6071 1091, -1, -1, -1, -1, -1, 1252, -1, 1159, -1,
6072 527, 1162, -1, -1, -1, 1032, 1033, 1108, -1, -1,
6073 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6074 1181, 548, -1, -1, -1, -1, -1, 554, -1, -1,
6075 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6076 -1, -1, 1203, 1144, -1, -1, -1, -1, 1304, -1,
6077 -1, -1, 1308, -1, 1310, -1, 1217, -1, -1, -1,
6078 1087, 1088, -1, -1, 1091, -1, 1167, -1, -1, 1170,
6079 597, 598, -1, 600, 601, -1, -1, -1, -1, -1,
6080 230, 1108, 609, 1184, -1, 1186, -1, 614, 1189, 1190,
6081 -1, -1, -1, 1194, 1195, -1, -1, -1, -1, -1,
6082 -1, -1, -1, -1, -1, 255, -1, 257, -1, -1,
6083 260, 261, 1273, 1369, -1, -1, 266, 1144, -1, 1280,
6084 1281, -1, -1, -1, 1285, -1, -1, -1, -1, -1,
6085 -1, 658, -1, 660, -1, 285, -1, -1, -1, -1,
6086 1167, 668, -1, 1170, -1, -1, -1, -1, -1, -1,
6087 -1, 1252, 679, -1, 681, 682, -1, 1184, -1, 1186,
6088 -1, -1, 1189, 1190, 1325, 692, 693, 1194, 1195, -1,
6089 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6090 -1, -1, -1, -1, -1, 335, -1, 337, 338, 339,
6091 340, 718, 342, 343, -1, -1, -1, -1, -1, 726,
6092 -1, -1, -1, 1304, -1, -1, -1, 1308, -1, 1310,
6093 -1, -1, -1, 363, -1, -1, -1, 1032, 1033, -1,
6094 -1, -1, -1, -1, -1, 1252, -1, -1, -1, 1032,
6095 1033, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6096 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6097 400, -1, -1, 403, -1, -1, -1, -1, -1, 409,
6098 410, 411, -1, -1, -1, -1, -1, -1, 1369, -1,
6099 -1, -1, 1087, 1088, -1, 425, 1091, 1304, -1, -1,
6100 -1, 1308, -1, 1310, 1087, 1088, -1, -1, 1091, -1,
6101 -1, -1, -1, 1108, -1, -1, -1, -1, -1, -1,
6102 -1, 451, -1, -1, -1, 1108, -1, -1, -1, -1,
6103 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6104 -1, -1, -1, 473, -1, -1, -1, -1, -1, 1144,
6105 -1, -1, -1, 860, -1, 862, 863, -1, -1, -1,
6106 -1, 1144, 1369, -1, -1, -1, -1, -1, -1, -1,
6107 -1, -1, 1167, -1, -1, 1170, -1, -1, 508, -1,
6108 -1, -1, -1, -1, 1167, -1, -1, 1170, -1, 1184,
6109 -1, 1186, -1, -1, 1189, 1190, -1, 527, -1, 1194,
6110 1195, 1184, -1, 1186, -1, -1, 1189, 1190, -1, -1,
6111 -1, 1194, 1195, -1, -1, -1, -1, -1, 548, -1,
6112 -1, 928, -1, -1, 554, -1, -1, -1, -1, -1,
6113 -1, -1, -1, -1, -1, -1, -1, -1, 945, -1,
6114 -1, -1, -1, 950, 951, -1, -1, 1, -1, 956,
6115 957, -1, -1, -1, -1, -1, -1, 1252, 965, 966,
6116 -1, 15, 16, -1, 1032, 1033, -1, 597, 598, 1252,
6117 600, 601, -1, -1, 981, -1, -1, -1, -1, 609,
6118 -1, -1, -1, -1, 614, -1, -1, -1, -1, -1,
6119 -1, -1, -1, 1000, -1, -1, -1, -1, 52, 53,
6120 -1, -1, 56, -1, -1, -1, -1, -1, -1, 1304,
6121 -1, -1, -1, 1308, -1, 1310, 1023, 1024, 1025, 1087,
6122 1088, 1304, -1, 1091, -1, 1308, -1, 1310, 658, -1,
6123 660, -1, -1, 1040, -1, 89, -1, -1, 668, -1,
6124 1108, -1, -1, -1, -1, -1, -1, -1, -1, 679,
6125 1057, 681, 682, -1, 108, 109, 110, -1, 112, -1,
6126 -1, -1, 692, 693, -1, -1, -1, -1, -1, -1,
6127 -1, -1, -1, -1, 1369, -1, 1144, -1, -1, -1,
6128 -1, -1, -1, -1, -1, -1, 1369, -1, 718, -1,
6129 -1, -1, -1, -1, -1, -1, 726, -1, -1, 1167,
6130 -1, -1, 1170, -1, -1, -1, -1, 25, -1, -1,
6131 -1, -1, -1, -1, -1, -1, 1184, -1, 1186, -1,
6132 -1, 1189, 1190, -1, -1, -1, 1194, 1195, -1, 1136,
6133 -1, -1, 1139, 1140, -1, -1, -1, -1, 1145, -1,
6134 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6135 -1, -1, 1159, -1, -1, 1162, -1, -1, -1, -1,
6136 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6137 88, 89, 90, -1, 1181, -1, 230, 95, 96, -1,
6138 -1, -1, -1, 101, 1252, -1, -1, -1, -1, -1,
6139 -1, -1, -1, -1, -1, -1, 1203, -1, -1, -1,
6140 -1, 255, -1, 257, -1, -1, -1, -1, -1, -1,
6141 1217, -1, 266, -1, -1, -1, -1, 135, -1, 137,
6142 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6143 860, 285, 862, 863, -1, -1, 1304, -1, -1, -1,
6144 1308, -1, 1310, -1, -1, -1, -1, -1, -1, -1,
6145 -1, 305, -1, -1, -1, -1, -1, -1, -1, -1,
6146 -1, -1, -1, -1, -1, -1, 1273, -1, -1, -1,
6147 -1, -1, -1, 1280, 1281, -1, -1, -1, 1285, -1,
6148 -1, 335, -1, -1, -1, -1, -1, -1, -1, -1,
6149 -1, -1, -1, -1, -1, -1, -1, -1, 928, -1,
6150 -1, 1369, -1, -1, -1, -1, -1, -1, -1, 363,
6151 364, -1, -1, -1, -1, 945, -1, -1, 1325, -1,
6152 950, 951, -1, -1, 1, -1, 956, 957, -1, -1,
6153 -1, -1, -1, -1, -1, 965, 966, -1, 15, 16,
6154 -1, -1, -1, -1, -1, -1, 400, -1, -1, 403,
6155 -1, 981, -1, -1, -1, -1, 410, 411, -1, -1,
6156 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6157 1000, -1, -1, -1, -1, 52, 53, -1, -1, 56,
6158 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6159 -1, -1, -1, 1023, 1024, 1025, -1, 451, -1, -1,
6160 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6161 1040, -1, 89, -1, -1, -1, -1, -1, -1, 473,
6162 -1, -1, -1, -1, -1, -1, -1, 1057, -1, -1,
6163 -1, 108, 109, 110, -1, 112, -1, -1, -1, -1,
6164 -1, -1, -1, 0, -1, -1, -1, -1, -1, -1,
6165 -1, 8, 9, 10, 508, -1, 13, 14, 15, -1,
6166 17, -1, -1, -1, -1, -1, -1, -1, 25, 26,
6167 27, 525, -1, 527, -1, -1, -1, -1, -1, -1,
6168 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
6169 -1, -1, -1, -1, 548, -1, -1, -1, -1, -1,
6170 554, -1, -1, -1, -1, -1, 1136, -1, -1, 1139,
6171 1140, 68, 69, -1, -1, 1145, -1, -1, -1, -1,
6172 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1159,
6173 -1, -1, 1162, -1, -1, -1, -1, -1, -1, -1,
6174 97, 98, -1, -1, 598, -1, -1, 601, -1, -1,
6175 -1, 1181, -1, 230, -1, -1, -1, 611, -1, -1,
6176 614, -1, -1, 120, -1, -1, -1, -1, -1, -1,
6177 -1, -1, -1, 1203, -1, -1, -1, -1, 255, -1,
6178 257, -1, -1, -1, -1, -1, -1, 1217, -1, 266,
6179 -1, -1, -1, -1, 151, 152, -1, 154, -1, -1,
6180 157, 158, -1, 160, 658, -1, 660, -1, 285, -1,
6181 -1, -1, -1, -1, 668, -1, -1, -1, -1, -1,
6182 -1, -1, -1, -1, -1, 679, -1, 681, 305, -1,
6183 -1, -1, -1, -1, -1, -1, -1, -1, 692, 693,
6184 -1, -1, -1, 1273, -1, -1, -1, -1, -1, -1,
6185 1280, 1281, -1, -1, -1, 1285, -1, -1, 335, -1,
6186 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6187 -1, -1, 726, -1, -1, -1, -1, -1, 732, 78,
6188 79, 80, 81, 82, 83, 84, 363, 364, 87, 88,
6189 -1, -1, -1, -1, -1, 1325, 95, 96, -1, -1,
6190 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1,
6191 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6192 -1, -1, -1, 400, -1, -1, 403, -1, -1, -1,
6193 -1, -1, -1, 410, 411, -1, -1, -1, 137, 138,
6194 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6195 -1, -1, -1, -1, -1, -1, 810, -1, -1, -1,
6196 52, 53, -1, -1, 56, -1, -1, -1, -1, -1,
6197 -1, -1, -1, -1, 451, -1, -1, -1, -1, -1,
6198 -1, -1, -1, -1, -1, 33, 34, 35, 36, -1,
6199 -1, -1, -1, -1, -1, -1, 473, 89, -1, -1,
6200 -1, 49, 50, 51, 52, -1, -1, -1, 56, 863,
6201 -1, 59, 60, 61, 62, 63, 108, 109, 110, 78,
6202 79, 80, 81, 82, 83, 84, 85, -1, 87, 88,
6203 -1, 508, -1, -1, -1, -1, 95, 96, -1, -1,
6204 -1, -1, -1, 91, 92, -1, -1, -1, 525, -1,
6205 527, 99, -1, -1, 102, -1, 104, 105, -1, 107,
6206 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
6207 118, 548, -1, -1, -1, -1, -1, 554, 137, 138,
6208 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6209 -1, 945, 140, -1, -1, -1, 950, 951, -1, 147,
6210 -1, 1, 956, 957, -1, -1, 154, -1, -1, -1,
6211 -1, 965, -1, -1, -1, -1, -1, -1, -1, -1,
6212 -1, 598, -1, -1, 601, -1, -1, 981, -1, -1,
6213 -1, -1, -1, -1, 611, -1, -1, 614, 230, -1,
6214 -1, -1, -1, -1, -1, -1, 1000, -1, -1, -1,
6215 -1, -1, 52, 53, -1, -1, 56, -1, -1, -1,
6216 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1023,
6217 1024, 1025, -1, -1, 266, -1, -1, -1, -1, -1,
6218 -1, 658, -1, 660, -1, -1, 1040, -1, -1, 89,
6219 -1, 668, -1, 285, -1, -1, -1, -1, -1, -1,
6220 -1, -1, 679, 1057, 681, -1, -1, -1, 108, 109,
6221 110, 111, -1, 305, -1, 692, 693, -1, 33, 34,
6222 35, 36, -1, -1, -1, -1, -1, -1, -1, -1,
6223 -1, -1, -1, -1, 49, 50, 51, 52, -1, -1,
6224 -1, 56, -1, 335, 59, 60, 61, 62, 63, 726,
6225 -1, -1, -1, -1, -1, 732, -1, -1, -1, -1,
6226 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6227 1, 363, 364, -1, -1, -1, 91, 92, 1132, -1,
6228 -1, -1, 1136, -1, 99, 1139, 1140, 102, -1, 104,
6229 105, 1145, 107, -1, -1, 110, 111, 112, 113, 114,
6230 115, 116, 117, 118, -1, 1159, -1, -1, 1162, -1,
6231 -1, 403, -1, -1, -1, -1, -1, -1, 410, 411,
6232 -1, 52, 53, -1, -1, 140, -1, -1, -1, -1,
6233 230, -1, 147, 810, 78, 79, 80, 81, 82, 83,
6234 84, 85, 86, 87, 88, 89, 90, -1, -1, 1203,
6235 -1, 95, 96, -1, -1, -1, -1, -1, -1, -1,
6236 -1, -1, -1, 1217, -1, -1, 266, -1, -1, -1,
6237 -1, -1, -1, -1, -1, -1, -1, 108, -1, 1233,
6238 -1, -1, -1, -1, -1, 285, 863, -1, -1, -1,
6239 -1, 135, -1, 137, 138, 139, 140, 141, 142, 143,
6240 144, 145, 146, -1, -1, 305, -1, -1, -1, -1,
6241 154, -1, -1, -1, -1, -1, 508, -1, -1, 1273,
6242 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6243 -1, 1285, -1, 525, -1, 335, -1, -1, -1, -1,
6244 -1, 1295, -1, -1, -1, -1, -1, -1, -1, -1,
6245 -1, -1, -1, -1, -1, -1, 548, -1, -1, -1,
6246 -1, -1, 554, 363, 364, -1, -1, -1, 945, -1,
6247 -1, 1325, -1, 950, 951, -1, -1, -1, -1, 956,
6248 957, -1, -1, -1, -1, 1, -1, -1, 965, -1,
6249 -1, -1, -1, -1, -1, -1, -1, -1, -1, 230,
6250 -1, -1, -1, 403, 981, -1, 598, -1, -1, 601,
6251 410, 411, -1, -1, -1, -1, -1, -1, -1, 611,
6252 -1, -1, 614, 1000, -1, -1, -1, -1, -1, -1,
6253 -1, -1, -1, -1, -1, 266, 52, 53, -1, -1,
6254 -1, -1, -1, -1, -1, -1, 1023, 1024, 1025, -1,
6255 -1, -1, -1, -1, 285, 78, 79, 80, 81, 82,
6256 83, 84, -1, 1040, 87, 88, 658, -1, 660, -1,
6257 -1, -1, 95, 96, -1, -1, -1, -1, -1, -1,
6258 1057, -1, -1, -1, -1, -1, -1, -1, -1, 681,
6259 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6260 692, 693, -1, -1, 335, -1, -1, -1, 508, -1,
6261 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
6262 143, 144, 145, 146, -1, 525, -1, -1, -1, -1,
6263 -1, -1, 363, -1, 726, -1, -1, -1, -1, -1,
6264 732, -1, -1, -1, -1, -1, -1, -1, 548, 741,
6265 -1, -1, -1, -1, 554, 1132, -1, -1, -1, 1136,
6266 -1, -1, 1139, 1140, -1, -1, -1, -1, 1145, -1,
6267 -1, -1, 403, -1, -1, -1, -1, -1, -1, 410,
6268 411, -1, 1159, -1, -1, 1162, -1, -1, -1, -1,
6269 -1, -1, -1, -1, -1, -1, -1, -1, 598, -1,
6270 -1, 601, -1, -1, -1, -1, -1, -1, -1, -1,
6271 -1, 611, -1, -1, 230, -1, -1, -1, 810, -1,
6272 -1, -1, -1, -1, -1, -1, 1203, -1, -1, -1,
6273 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6274 1217, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6275 266, -1, -1, -1, -1, -1, 1233, -1, 658, -1,
6276 660, -1, -1, -1, -1, -1, -1, -1, -1, 285,
6277 -1, 863, 33, 34, 35, 36, -1, 508, -1, -1,
6278 -1, 681, -1, -1, -1, -1, -1, -1, 49, 50,
6279 51, 52, -1, -1, -1, 56, 1273, -1, 59, 60,
6280 61, 62, 63, -1, -1, -1, -1, -1, 1285, -1,
6281 -1, -1, -1, -1, -1, -1, -1, 548, 1295, 335,
6282 -1, -1, -1, 554, -1, -1, -1, -1, -1, -1,
6283 91, 92, 732, -1, -1, -1, -1, -1, 99, -1,
6284 -1, 102, -1, 104, 105, -1, -1, 363, 1325, 110,
6285 111, 112, 113, 114, 115, 116, 117, 118, 950, 951,
6286 -1, -1, -1, -1, 956, 957, -1, 598, -1, -1,
6287 601, -1, -1, 965, -1, -1, -1, -1, -1, 140,
6288 -1, -1, -1, 614, -1, -1, 147, 403, -1, 981,
6289 -1, -1, -1, -1, 410, 411, -1, -1, -1, -1,
6290 -1, -1, -1, -1, -1, -1, -1, -1, 1000, -1,
6291 810, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6292 -1, -1, -1, -1, -1, -1, -1, 658, -1, 660,
6293 -1, 1023, 1024, 1025, -1, -1, -1, -1, -1, -1,
6294 -1, -1, -1, -1, -1, -1, -1, -1, 1040, -1,
6295 681, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6296 -1, 692, 693, 863, -1, 1057, -1, -1, -1, -1,
6297 -1, -1, -1, -1, -1, -1, -1, -1, 44, -1,
6298 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6299 -1, -1, 508, -1, -1, 726, -1, -1, -1, -1,
6300 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6301 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6302 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6303 96, -1, 548, -1, -1, -1, -1, -1, 554, -1,
6304 1132, -1, -1, -1, 1136, -1, -1, 1139, 1140, -1,
6305 -1, -1, -1, 1145, -1, -1, -1, -1, -1, -1,
6306 -1, -1, -1, -1, -1, 965, -1, 1159, -1, 135,
6307 1162, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6308 146, 981, 598, -1, -1, 601, -1, -1, -1, 155,
6309 -1, -1, -1, -1, -1, -1, -1, -1, 614, -1,
6310 1000, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6311 -1, 1203, -1, -1, -1, -1, -1, -1, -1, -1,
6312 -1, -1, -1, 1023, 1024, 1217, -1, -1, -1, -1,
6313 -1, -1, 863, -1, -1, -1, -1, -1, -1, -1,
6314 -1, 1233, 658, -1, 660, -1, -1, -1, -1, -1,
6315 -1, -1, -1, -1, -1, -1, -1, 1057, -1, -1,
6316 -1, -1, -1, -1, -1, 681, -1, -1, -1, -1,
6317 -1, -1, -1, -1, -1, -1, 692, 693, -1, -1,
6318 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6319 -1, -1, -1, 1285, -1, -1, -1, -1, -1, -1,
6320 -1, -1, -1, 1295, -1, -1, -1, -1, -1, -1,
6321 726, -1, -1, -1, -1, -1, -1, -1, -1, 950,
6322 951, -1, -1, -1, -1, 956, 957, -1, -1, -1,
6323 -1, -1, 1132, 1325, 965, -1, 1136, -1, -1, 1139,
6324 1140, -1, -1, -1, 44, 1145, -1, -1, -1, -1,
6325 981, -1, -1, -1, -1, -1, -1, -1, -1, 1159,
6326 -1, -1, 1162, -1, -1, -1, -1, -1, -1, 1000,
6327 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
6328 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6329 90, -1, 1023, 1024, 1025, 95, 96, -1, -1, -1,
6330 -1, -1, -1, 1203, -1, -1, -1, -1, -1, 1040,
6331 -1, -1, -1, -1, -1, -1, -1, 1217, -1, 15,
6332 16, -1, -1, -1, -1, -1, 1057, -1, -1, -1,
6333 -1, -1, -1, 1233, -1, 135, -1, 137, 138, 139,
6334 140, 141, 142, 143, 144, 145, 146, 863, -1, -1,
6335 -1, 47, 48, 49, 50, -1, -1, -1, 54, 55,
6336 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6337 -1, 67, 68, -1, -1, -1, -1, -1, -1, -1,
6338 -1, -1, -1, -1, -1, 1285, -1, -1, -1, -1,
6339 -1, -1, -1, -1, -1, 1295, -1, -1, -1, -1,
6340 -1, 1132, -1, -1, -1, 1136, -1, -1, 1139, 1140,
6341 -1, -1, -1, -1, 1145, -1, 112, -1, -1, -1,
6342 -1, -1, -1, -1, -1, 1325, 52, 53, 1159, -1,
6343 56, 1162, -1, -1, 950, 951, -1, -1, -1, -1,
6344 956, 957, -1, -1, -1, -1, -1, -1, -1, 965,
6345 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
6346 -1, 87, 88, -1, -1, 981, -1, 93, 94, 95,
6347 96, -1, 1203, -1, -1, -1, -1, -1, -1, -1,
6348 -1, 107, 108, -1, 1000, -1, 1217, -1, -1, -1,
6349 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6350 -1, -1, -1, -1, -1, -1, -1, 1023, 1024, 1025,
6351 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6352 146, -1, 148, 149, 1040, -1, -1, -1, -1, -1,
6353 156, 157, 228, -1, -1, 231, 232, 233, -1, 235,
6354 -1, 1057, -1, -1, -1, 52, 53, -1, -1, 56,
6355 -1, -1, -1, -1, 1285, -1, -1, -1, -1, 255,
6356 -1, 257, -1, -1, -1, -1, -1, -1, -1, 76,
6357 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
6358 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
6359 -1, -1, -1, -1, 1325, -1, -1, -1, -1, -1,
6360 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
6361 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6362 1136, -1, -1, 1139, 1140, -1, -1, -1, -1, 1145,
6363 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6364 -1, 148, 149, 1159, -1, -1, 1162, -1, -1, 156,
6365 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6366 88, 89, 90, -1, -1, -1, -1, 95, 96, -1,
6367 -1, -1, 368, 369, 370, 371, 372, -1, -1, 375,
6368 376, 377, 378, 379, 380, 381, 382, 1203, 384, -1,
6369 -1, 387, 388, 389, 390, 391, 392, 393, 394, 395,
6370 396, 1217, -1, -1, 400, -1, -1, 135, -1, 137,
6371 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6372 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6373 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6374 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6375 -1, -1, -1, -1, -1, 451, -1, -1, -1, -1,
6376 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1285,
6377 -1, -1, 468, 469, -1, -1, -1, 473, -1, -1,
6378 -1, 477, -1, 479, -1, 0, -1, -1, -1, -1,
6379 -1, -1, -1, 8, 9, 10, -1, -1, 13, 14,
6380 15, 497, 17, -1, -1, -1, -1, -1, -1, 1325,
6381 25, 26, 27, 28, 29, -1, 512, -1, -1, 515,
6382 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
6383 -1, 527, -1, -1, -1, -1, -1, -1, -1, -1,
6384 -1, -1, -1, -1, -1, -1, -1, -1, -1, 545,
6385 -1, -1, -1, 68, 69, -1, -1, -1, -1, -1,
6386 -1, -1, -1, 78, 79, 80, 81, 82, 83, 84,
6387 85, 86, 87, 88, 89, 90, -1, -1, -1, -1,
6388 95, 96, 97, 98, -1, 100, 101, -1, -1, -1,
6389 -1, 106, -1, 589, -1, -1, -1, -1, -1, -1,
6390 -1, 597, -1, -1, 600, 120, -1, -1, 123, -1,
6391 -1, -1, -1, 609, -1, -1, -1, -1, 614, 134,
6392 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
6393 145, 146, -1, -1, -1, -1, 151, 152, 153, 154,
6394 155, -1, -1, 158, 159, 160, -1, -1, -1, -1,
6395 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6396 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6397 -1, -1, 668, -1, -1, -1, -1, -1, -1, -1,
6398 -1, -1, -1, 679, -1, -1, -1, -1, -1, -1,
6399 -1, -1, -1, -1, -1, -1, 692, 693, -1, -1,
6400 696, 697, -1, -1, -1, -1, -1, -1, -1, -1,
6401 -1, -1, 708, 709, -1, -1, 712, -1, 714, -1,
6402 -1, -1, -1, -1, -1, 721, 722, -1, -1, -1,
6403 726, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6404 -1, -1, -1, -1, -1, -1, 0, 1, -1, 3,
6405 4, 5, 6, 7, 8, 9, 10, 11, 12, -1,
6406 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
6407 24, 25, -1, -1, -1, 771, 30, 31, 32, 33,
6408 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6409 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6410 54, 55, 56, 57, 800, 59, 60, 61, 62, 63,
6411 64, 65, -1, -1, 68, -1, -1, -1, -1, -1,
6412 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6413 -1, -1, -1, -1, -1, -1, 832, 91, 92, -1,
6414 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6415 104, 105, -1, 107, 850, -1, 110, 111, 112, 113,
6416 114, 115, 116, 117, 118, -1, 120, -1, -1, -1,
6417 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6418 -1, -1, -1, -1, 880, -1, -1, -1, -1, -1,
6419 -1, -1, -1, 147, 148, 149, -1, -1, 152, -1,
6420 33, 34, 35, 36, 158, -1, 160, -1, -1, -1,
6421 -1, -1, -1, -1, -1, -1, 49, 50, 51, 52,
6422 -1, -1, -1, 56, -1, 58, 59, 60, 61, 62,
6423 63, -1, 928, -1, -1, -1, -1, -1, -1, -1,
6424 -1, 937, -1, -1, -1, 78, -1, -1, -1, 945,
6425 -1, -1, -1, 949, 950, 951, -1, -1, 91, 92,
6426 956, 957, -1, -1, 960, -1, 99, -1, -1, 102,
6427 -1, 104, 105, -1, 107, 108, 972, 110, 111, 112,
6428 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
6429 -1, -1, -1, -1, 990, 991, -1, 993, 994, -1,
6430 996, -1, 998, -1, -1, -1, -1, 140, -1, -1,
6431 -1, -1, -1, -1, 147, -1, -1, -1, -1, -1,
6432 -1, 1017, 1018, -1, -1, 1021, -1, -1, -1, 1025,
6433 1026, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6434 -1, -1, -1, -1, 1040, -1, -1, -1, -1, -1,
6435 -1, 0, 1, -1, 3, 4, 5, 6, 7, -1,
6436 1056, -1, 11, 12, -1, -1, -1, 16, 1064, 18,
6437 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6438 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6439 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6440 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6441 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6442 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6443 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6444 -1, -1, 91, 92, -1, 1141, -1, -1, -1, -1,
6445 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
6446 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6447 -1, 120, -1, -1, -1, -1, -1, -1, -1, -1,
6448 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6449 -1, -1, -1, -1, -1, -1, -1, -1, 147, 148,
6450 149, -1, -1, 0, 1, 154, 3, 4, 5, 6,
6451 7, 160, -1, -1, 11, 12, -1, -1, -1, 16,
6452 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6453 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6454 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6455 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6456 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6457 -1, -1, -1, -1, -1, -1, -1, 1273, -1, 76,
6458 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6459 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6460 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6461 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6462 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
6463 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6464 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6465 147, 148, 149, -1, -1, 0, 1, 154, 3, 4,
6466 5, 6, 7, 160, -1, -1, 11, 12, -1, -1,
6467 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6468 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6469 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6470 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
6471 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6472 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6473 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6474 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6475 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
6476 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
6477 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
6478 -1, 0, -1, -1, -1, -1, -1, -1, -1, 8,
6479 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
6480 -1, -1, 147, 148, 149, -1, 25, 152, 27, 28,
6481 29, -1, -1, -1, -1, 160, -1, -1, 37, 38,
6482 -1, 40, 41, 42, 43, 44, -1, -1, -1, 78,
6483 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6484 89, 90, -1, -1, -1, -1, 95, 96, -1, 68,
6485 69, -1, -1, -1, -1, -1, -1, -1, -1, 78,
6486 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6487 89, 90, -1, -1, -1, -1, 95, 96, 97, 98,
6488 -1, 100, 101, -1, -1, -1, -1, 106, 137, 138,
6489 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6490 -1, 120, -1, -1, 123, -1, -1, -1, -1, -1,
6491 -1, -1, -1, -1, -1, 134, 135, 136, 137, 138,
6492 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6493 -1, -1, -1, 152, 153, 154, 155, 0, -1, 158,
6494 159, 160, -1, -1, -1, 8, 9, 10, -1, -1,
6495 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
6496 -1, -1, 25, -1, 27, 28, 29, -1, -1, -1,
6497 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
6498 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
6499 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6500 -1, -1, -1, -1, -1, 68, 69, -1, -1, -1,
6501 -1, -1, -1, -1, -1, 78, 79, 80, 81, 82,
6502 83, 84, 85, 86, 87, 88, 89, 90, -1, -1,
6503 -1, -1, 95, 96, 97, 98, -1, 100, 101, -1,
6504 -1, -1, -1, 106, -1, -1, -1, -1, -1, -1,
6505 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
6506 123, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6507 -1, 134, 135, 136, 137, 138, 139, 140, 141, 142,
6508 143, 144, 145, 146, -1, -1, -1, -1, -1, 152,
6509 153, 154, 155, 0, -1, 158, 159, 160, -1, -1,
6510 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
6511 17, -1, -1, -1, -1, -1, -1, -1, 25, 26,
6512 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
6513 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
6514 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6515 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6516 -1, 68, 69, -1, -1, -1, -1, -1, -1, -1,
6517 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6518 87, 88, 89, 90, -1, -1, -1, -1, 95, 96,
6519 97, 98, -1, -1, 101, -1, -1, -1, -1, 106,
6520 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6521 -1, -1, -1, 120, -1, -1, 123, -1, -1, -1,
6522 -1, -1, -1, -1, -1, -1, -1, -1, 135, 136,
6523 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6524 -1, -1, -1, -1, 151, 152, 153, 154, 155, 0,
6525 -1, 158, 159, 160, -1, -1, -1, 8, 9, 10,
6526 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
6527 -1, -1, -1, -1, 25, 26, 27, 28, 29, -1,
6528 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
6529 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
6530 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6531 -1, -1, -1, -1, -1, -1, -1, 68, 69, -1,
6532 -1, -1, -1, -1, -1, -1, -1, 78, 79, 80,
6533 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
6534 -1, -1, -1, -1, 95, 96, 97, 98, -1, -1,
6535 101, -1, -1, -1, -1, 106, -1, -1, -1, -1,
6536 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
6537 -1, -1, 123, -1, -1, -1, -1, -1, -1, -1,
6538 -1, -1, -1, -1, 135, 136, 137, 138, 139, 140,
6539 141, 142, 143, 144, 145, 146, -1, -1, -1, -1,
6540 151, 152, 153, 154, 155, 0, -1, 158, 159, 160,
6541 -1, -1, -1, 8, 9, 10, -1, -1, 13, 14,
6542 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
6543 25, 26, 27, 28, -1, -1, -1, -1, -1, -1,
6544 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
6545 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6546 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6547 -1, -1, -1, 68, 69, -1, -1, -1, -1, -1,
6548 -1, -1, -1, 78, 79, 80, 81, 82, 83, 84,
6549 85, 86, 87, 88, 89, 90, -1, -1, -1, -1,
6550 95, 96, 97, 98, -1, -1, 101, -1, -1, -1,
6551 -1, 106, -1, -1, -1, -1, -1, -1, -1, -1,
6552 -1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
6553 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6554 135, -1, 137, 138, 139, 140, 141, 142, 143, 144,
6555 145, 146, -1, -1, -1, -1, 151, 152, 153, 154,
6556 155, 0, 157, 158, 159, 160, -1, -1, -1, 8,
6557 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
6558 -1, -1, -1, -1, -1, -1, 25, -1, 27, 28,
6559 29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
6560 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
6561 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6562 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
6563 69, -1, -1, -1, -1, -1, -1, -1, -1, 78,
6564 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6565 89, 90, -1, -1, -1, -1, 95, 96, 97, 98,
6566 -1, -1, 101, -1, -1, -1, -1, 106, -1, -1,
6567 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6568 -1, 120, -1, -1, 123, -1, -1, -1, -1, -1,
6569 -1, -1, -1, -1, -1, -1, 135, 136, 137, 138,
6570 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6571 -1, -1, -1, 152, 153, 154, 155, 0, -1, 158,
6572 159, 160, -1, -1, -1, 8, 9, 10, -1, -1,
6573 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
6574 -1, -1, 25, 26, 27, 28, -1, -1, -1, -1,
6575 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
6576 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
6577 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6578 -1, -1, -1, -1, -1, 68, 69, -1, -1, -1,
6579 -1, -1, -1, -1, -1, 78, 79, 80, 81, 82,
6580 83, 84, 85, 86, 87, 88, 89, 90, -1, -1,
6581 -1, -1, 95, 96, 97, 98, -1, -1, 101, -1,
6582 -1, -1, -1, 106, -1, -1, -1, -1, -1, -1,
6583 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
6584 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6585 -1, -1, 135, -1, 137, 138, 139, 140, 141, 142,
6586 143, 144, 145, 146, -1, -1, -1, -1, 151, 152,
6587 153, 154, 155, 0, 157, 158, 159, 160, -1, -1,
6588 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
6589 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
6590 27, 28, -1, -1, -1, -1, -1, -1, -1, -1,
6591 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
6592 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6593 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6594 -1, 68, 69, -1, -1, -1, -1, -1, -1, -1,
6595 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6596 87, 88, 89, 90, -1, -1, -1, -1, 95, 96,
6597 97, 98, -1, 100, 101, -1, -1, -1, -1, 106,
6598 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6599 -1, -1, -1, 120, -1, -1, -1, -1, -1, -1,
6600 -1, -1, -1, -1, -1, -1, -1, 134, 135, -1,
6601 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6602 -1, -1, -1, -1, 151, 152, 153, 154, 155, 0,
6603 -1, 158, 159, 160, -1, -1, -1, 8, 9, 10,
6604 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
6605 -1, -1, -1, -1, 25, -1, 27, 28, -1, -1,
6606 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
6607 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
6608 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6609 -1, -1, -1, -1, -1, -1, -1, 68, 69, -1,
6610 -1, -1, -1, -1, -1, -1, -1, 78, 79, 80,
6611 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
6612 -1, -1, -1, -1, 95, 96, 97, 98, -1, -1,
6613 101, -1, -1, -1, -1, 106, -1, -1, -1, -1,
6614 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
6615 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6616 -1, -1, -1, -1, 135, -1, 137, 138, 139, 140,
6617 141, 142, 143, 144, 145, 146, -1, -1, -1, -1,
6618 -1, 152, 153, 154, 155, 0, 157, 158, 159, 160,
6619 -1, -1, -1, 8, 9, 10, -1, -1, -1, 14,
6620 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
6621 25, 26, -1, -1, -1, -1, -1, -1, -1, -1,
6622 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
6623 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6624 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6625 -1, -1, -1, 68, 69, -1, -1, -1, -1, -1,
6626 -1, -1, -1, 78, 79, 80, 81, 82, 83, 84,
6627 85, 86, 87, 88, 89, 90, -1, -1, -1, -1,
6628 95, 96, 97, 98, -1, 100, 101, -1, -1, -1,
6629 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6630 -1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
6631 -1, -1, -1, -1, -1, -1, -1, -1, -1, 134,
6632 135, -1, 137, 138, 139, 140, 141, 142, 143, 144,
6633 145, 146, -1, -1, -1, -1, 151, 152, 153, 154,
6634 155, 0, -1, 158, -1, 160, -1, -1, -1, 8,
6635 9, 10, -1, -1, -1, 14, 15, -1, 17, -1,
6636 -1, -1, -1, -1, -1, -1, 25, 26, -1, -1,
6637 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
6638 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
6639 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6640 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
6641 69, -1, -1, -1, -1, -1, -1, -1, -1, 78,
6642 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6643 89, 90, -1, -1, -1, -1, 95, 96, 97, 98,
6644 -1, 100, 101, -1, -1, -1, -1, -1, -1, -1,
6645 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6646 -1, 120, -1, -1, -1, -1, -1, -1, -1, -1,
6647 -1, -1, -1, -1, -1, 134, 135, -1, 137, 138,
6648 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6649 -1, -1, 151, 152, 153, 154, 155, 0, -1, 158,
6650 -1, 160, -1, -1, -1, 8, 9, 10, -1, -1,
6651 -1, 14, 15, -1, 17, -1, -1, -1, -1, -1,
6652 -1, -1, 25, -1, -1, -1, -1, -1, -1, -1,
6653 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
6654 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
6655 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6656 -1, -1, -1, -1, -1, 68, 69, -1, -1, -1,
6657 -1, -1, -1, -1, -1, 78, 79, 80, 81, 82,
6658 83, 84, 85, 86, 87, 88, 89, 90, -1, -1,
6659 -1, -1, 95, 96, 97, 98, -1, 100, 101, -1,
6660 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6661 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
6662 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6663 -1, 134, 135, -1, 137, 138, 139, 140, 141, 142,
6664 143, 144, 145, 146, -1, -1, -1, -1, 151, 152,
6665 153, 154, 155, 0, -1, 158, -1, 160, -1, -1,
6666 -1, 8, 9, 10, -1, -1, -1, 14, 15, -1,
6667 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
6668 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6669 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
6670 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6671 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6672 -1, 68, 69, -1, -1, -1, -1, -1, -1, -1,
6673 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6674 87, 88, 89, 90, -1, -1, -1, -1, 95, 96,
6675 97, 98, -1, 100, 101, -1, -1, -1, -1, -1,
6676 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6677 -1, -1, -1, 120, -1, -1, -1, -1, -1, -1,
6678 -1, -1, -1, -1, -1, -1, -1, 134, 135, -1,
6679 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6680 -1, -1, -1, -1, 151, 152, 153, 154, 155, -1,
6681 -1, 158, 1, 160, 3, 4, 5, 6, 7, 8,
6682 9, 10, 11, 12, -1, -1, 15, 16, -1, 18,
6683 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6684 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6685 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6686 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6687 59, 60, 61, 62, 63, 64, 65, -1, -1, 68,
6688 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6689 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6690 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6691 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
6692 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6693 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6694 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6695 -1, -1, -1, -1, -1, -1, -1, -1, 147, 148,
6696 149, -1, -1, -1, 1, 154, 3, 4, 5, 6,
6697 7, 160, -1, 10, 11, 12, -1, 14, 15, 16,
6698 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6699 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6700 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6701 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6702 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6703 -1, 68, -1, -1, -1, -1, -1, -1, -1, 76,
6704 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6705 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6706 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6707 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6708 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
6709 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6710 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6711 147, 148, 149, -1, -1, -1, 1, 154, 3, 4,
6712 5, 6, 7, 160, -1, 10, 11, 12, -1, -1,
6713 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
6714 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6715 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6716 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
6717 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6718 65, -1, -1, 68, -1, -1, -1, -1, -1, -1,
6719 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6720 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6721 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
6722 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
6723 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
6724 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6725 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6726 -1, -1, 147, 148, 149, -1, -1, -1, 1, 154,
6727 3, 4, 5, 6, 7, 160, -1, 10, 11, 12,
6728 -1, -1, 15, 16, -1, 18, 19, 20, 21, 22,
6729 23, 24, 25, -1, -1, -1, -1, 30, 31, 32,
6730 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6731 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
6732 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
6733 63, 64, 65, -1, -1, 68, -1, -1, -1, -1,
6734 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
6735 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
6736 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6737 103, 104, 105, -1, 107, -1, -1, 110, 111, 112,
6738 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
6739 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6740 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6741 -1, -1, -1, -1, 147, 148, 149, -1, -1, -1,
6742 1, 154, 3, 4, 5, 6, 7, 160, -1, 10,
6743 11, 12, -1, -1, 15, 16, -1, 18, 19, 20,
6744 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
6745 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6746 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
6747 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
6748 61, 62, 63, 64, 65, -1, -1, 68, -1, -1,
6749 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6750 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6751 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6752 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
6753 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6754 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6755 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6756 -1, -1, -1, -1, -1, -1, 147, 148, 149, -1,
6757 -1, -1, 1, 154, 3, 4, 5, 6, 7, 160,
6758 9, 10, 11, 12, -1, -1, -1, 16, -1, 18,
6759 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6760 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6761 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6762 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6763 59, 60, 61, 62, 63, 64, 65, -1, -1, 68,
6764 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6765 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6766 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6767 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
6768 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6769 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6770 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6771 -1, -1, -1, -1, -1, -1, -1, -1, 147, 148,
6772 149, -1, -1, -1, 1, 154, 3, 4, 5, 6,
6773 7, 160, -1, 10, 11, 12, -1, -1, -1, 16,
6774 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6775 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6776 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6777 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6778 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6779 -1, 68, -1, -1, -1, -1, -1, -1, -1, 76,
6780 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6781 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6782 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6783 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6784 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
6785 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6786 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6787 147, 148, 149, -1, -1, -1, 1, 154, 3, 4,
6788 5, 6, 7, 160, -1, -1, 11, 12, -1, -1,
6789 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6790 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6791 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6792 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
6793 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6794 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6795 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6796 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6797 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
6798 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
6799 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
6800 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6801 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6802 -1, -1, 147, 148, 149, -1, -1, -1, -1, 154,
6803 -1, -1, -1, 158, 1, 160, 3, 4, 5, 6,
6804 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
6805 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6806 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6807 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6808 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6809 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6810 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6811 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6812 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6813 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6814 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6815 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
6816 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6817 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6818 147, 148, 149, -1, -1, -1, -1, 154, -1, -1,
6819 -1, 158, 1, 160, 3, 4, 5, 6, 7, -1,
6820 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6821 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6822 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6823 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6824 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6825 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6826 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6827 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6828 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6829 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
6830 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6831 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6832 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6833 -1, -1, -1, -1, -1, -1, -1, -1, 147, 148,
6834 149, -1, -1, 152, 1, 154, 3, 4, 5, 6,
6835 7, 160, -1, -1, 11, 12, -1, -1, -1, 16,
6836 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6837 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6838 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6839 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6840 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6841 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6842 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6843 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6844 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6845 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6846 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
6847 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6848 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6849 147, 148, 149, -1, -1, 152, 1, 154, 3, 4,
6850 5, -1, 7, 160, -1, -1, 11, 12, -1, -1,
6851 -1, 16, 17, 18, 19, 20, 21, 22, 23, 24,
6852 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6853 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6854 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6855 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6856 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6857 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6858 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6859 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
6860 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
6861 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
6862 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6863 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6864 -1, -1, 147, 148, 149, -1, -1, -1, -1, 154,
6865 -1, -1, -1, -1, -1, 160, 3, 4, 5, 6,
6866 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
6867 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
6868 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6869 37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
6870 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6871 57, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6872 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6873 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
6874 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
6875 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6876 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
6877 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6878 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6879 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6880 -1, 148, 149, -1, -1, -1, -1, -1, -1, 156,
6881 157, 3, 4, 5, 6, 7, 8, 9, 10, 11,
6882 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
6883 22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
6884 32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
6885 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6886 52, 53, 54, 55, 56, 57, -1, -1, -1, -1,
6887 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6888 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
6889 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
6890 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
6891 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
6892 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6893 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6894 -1, -1, -1, -1, -1, 137, 138, 139, 140, 141,
6895 142, 143, 144, 145, 146, -1, 148, 149, -1, -1,
6896 -1, -1, -1, -1, 156, 3, 4, 5, 6, 7,
6897 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
6898 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
6899 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
6900 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6901 48, 49, 50, 51, 52, 53, 54, -1, 56, -1,
6902 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6903 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6904 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
6905 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
6906 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
6907 108, -1, -1, 111, -1, -1, -1, -1, -1, -1,
6908 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6909 -1, -1, -1, -1, -1, -1, -1, -1, -1, 137,
6910 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6911 148, 149, -1, -1, -1, -1, -1, -1, 156, 3,
6912 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
6913 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
6914 24, 25, 26, -1, -1, -1, 30, 31, 32, 33,
6915 34, 35, 36, 37, 38, 39, -1, -1, -1, -1,
6916 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6917 -1, -1, 56, -1, -1, -1, -1, -1, -1, -1,
6918 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6919 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
6920 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
6921 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
6922 -1, -1, -1, 107, 108, -1, -1, 111, -1, -1,
6923 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6924 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6925 -1, -1, -1, 137, 138, 139, 140, 141, 142, 143,
6926 144, 145, 146, -1, 148, 149, -1, -1, -1, -1,
6927 -1, -1, 156, 3, 4, 5, 6, 7, 8, 9,
6928 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
6929 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
6930 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
6931 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
6932 50, 51, 52, 53, -1, -1, 56, -1, -1, -1,
6933 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6934 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
6935 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
6936 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
6937 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
6938 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6939 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6940 -1, -1, -1, -1, -1, -1, -1, 137, 138, 139,
6941 140, 141, 142, 143, 144, 145, 146, -1, 148, 149,
6942 3, 4, 5, -1, 7, -1, 156, -1, 11, 12,
6943 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
6944 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
6945 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6946 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
6947 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
6948 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
6949 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6950 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6951 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6952 103, 104, 105, -1, -1, -1, -1, 110, 111, 112,
6953 113, 114, 115, 116, 117, 118, -1, -1, 3, 4,
6954 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
6955 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6956 -1, -1, -1, -1, 147, 30, 31, 32, 33, 34,
6957 35, 36, 155, -1, 39, -1, -1, -1, -1, -1,
6958 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6959 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6960 65, -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, -1, -1, -1, -1, -1, -1,
6963 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
6964 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
6965 115, 116, 117, 118, -1, -1, 3, 4, 5, -1,
6966 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
6967 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6968 -1, -1, 147, 30, 31, 32, 33, 34, 35, 36,
6969 155, -1, 39, -1, -1, -1, -1, -1, -1, 46,
6970 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
6971 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
6972 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6973 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6974 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6975 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6976 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
6977 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
6978 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6979 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
6980 147, 148, 149, 11, 12, -1, -1, 154, 16, -1,
6981 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
6982 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6983 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
6984 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6985 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6986 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6987 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6988 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6989 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
6990 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
6991 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6992 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6993 -1, -1, 1, -1, 3, 4, 5, 6, 7, 147,
6994 148, 149, 11, 12, -1, -1, 154, 16, -1, 18,
6995 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6996 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6997 39, -1, -1, -1, -1, -1, 45, 46, -1, 48,
6998 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6999 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7000 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7001 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7002 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7003 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7004 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7005 -1, -1, 1, -1, 3, 4, 5, -1, 7, -1,
7006 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7007 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7008 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7009 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7010 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7011 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7012 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7013 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7014 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7015 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7016 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7017 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7018 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7019 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7020 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7021 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7022 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7023 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7024 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7025 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7026 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7027 99, -1, -1, 102, 103, 104, 105, -1, 107, 108,
7028 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7029 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7030 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7031 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7032 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7033 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7034 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7035 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7036 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7037 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7038 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7039 99, -1, -1, 102, 103, 104, 105, -1, 107, 108,
7040 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7041 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7042 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7043 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7044 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7045 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7046 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7047 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7048 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7049 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7050 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7051 99, -1, -1, 102, 103, 104, 105, -1, 107, 108,
7052 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7053 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7054 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7055 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7056 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7057 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7058 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7059 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7060 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7061 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7062 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7063 99, -1, -1, 102, 103, 104, 105, -1, 107, 108,
7064 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7065 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7066 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7067 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7068 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7069 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7070 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7071 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7072 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7073 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7074 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7075 99, -1, -1, 102, 103, 104, 105, -1, 107, 108,
7076 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7077 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7078 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7079 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7080 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7081 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7082 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7083 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7084 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7085 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7086 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7087 99, -1, -1, 102, 103, 104, 105, -1, -1, 108,
7088 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7089 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7090 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7091 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7092 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7093 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7094 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7095 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7096 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7097 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7098 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7099 99, -1, -1, 102, 103, 104, 105, -1, -1, 108,
7100 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7101 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7102 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7103 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7104 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7105 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7106 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7107 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7108 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7109 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7110 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7111 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7112 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7113 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7114 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7115 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7116 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7117 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7118 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7119 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7120 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7121 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7122 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7123 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7124 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7125 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7126 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7127 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7128 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7129 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7130 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7131 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7132 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7133 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7134 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7135 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7136 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7137 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7138 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7139 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7140 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7141 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7142 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7143 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7144 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7145 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7146 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7147 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7148 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7149 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7150 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7151 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7152 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7153 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7154 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7155 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7156 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7157 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7158 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7159 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7160 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7161 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7162 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7163 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7164 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7165 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7166 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7167 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7168 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7169 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7170 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7171 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7172 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7173 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7174 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7175 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7176 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7177 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7178 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7179 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7180 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7181 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7182 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7183 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7184 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7185 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7186 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7187 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7188 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7189 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7190 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7191 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7192 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7193 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7194 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7195 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7196 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7197 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7198 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7199 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7200 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7201 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7202 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7203 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7204 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7205 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7206 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7207 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7208 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7209 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7210 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7211 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7212 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7213 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7214 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7215 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7216 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7217 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7218 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7219 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7220 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7221 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7222 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7223 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7224 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7225 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7226 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7227 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7228 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7229 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7230 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7231 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7232 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7233 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7234 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7235 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7236 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7237 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7238 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7239 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7240 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7241 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7242 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7243 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7244 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7245 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7246 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7247 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7248 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7249 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7250 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7251 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7252 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7253 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7254 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7255 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7256 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7257 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7258 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7259 21, 22, 23, 24, -1, -1, -1, -1, 147, 30,
7260 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7261 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7262 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7263 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7264 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7265 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7266 -1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
7267 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
7268 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7269 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
7270 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
7271 23, 24, -1, -1, -1, -1, 147, 30, 31, 32,
7272 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
7273 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
7274 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
7275 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
7276 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7277 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7278 -1, -1, 95, -1, -1, -1, 99, -1, -1, 102,
7279 103, 104, 105, -1, -1, -1, -1, 110, 111, 112,
7280 113, 114, 115, 116, 117, 118, -1, -1, 3, 4,
7281 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
7282 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
7283 -1, -1, -1, -1, 147, 30, 31, 32, 33, 34,
7284 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
7285 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
7286 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
7287 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7288 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7289 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7290 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
7291 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
7292 115, 116, 117, 118, -1, -1, 3, 4, 5, -1,
7293 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
7294 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
7295 -1, -1, 147, 30, 31, 32, 33, 34, 35, 36,
7296 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
7297 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
7298 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
7299 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7300 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7301 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7302 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
7303 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
7304 117, 118, -1, -1, 3, 4, 5, -1, 7, -1,
7305 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7306 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
7307 147, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7308 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7309 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7310 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7311 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7312 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7313 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7314 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7315 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7316 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7317 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7318 21, 22, 23, 24, -1, -1, -1, -1, 147, 30,
7319 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7320 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7321 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7322 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7323 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7324 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7325 -1, -1, -1, -1, -1, 52, 53, -1, 99, 56,
7326 -1, 102, 103, 104, 105, -1, -1, -1, -1, 110,
7327 111, 112, 113, 114, 115, 116, 117, 118, -1, 76,
7328 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7329 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7330 -1, -1, -1, -1, -1, -1, 147, -1, -1, -1,
7331 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
7332 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7333 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7334 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7335 -1, 148, 149, 52, 53, -1, -1, 56, -1, 156,
7336 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7337 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7338 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7339 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7340 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
7341 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7342 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7343 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
7344 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
7345 149, 52, 53, -1, -1, 56, -1, 156, -1, -1,
7346 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7347 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7348 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7349 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7350 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
7351 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7352 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7353 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
7354 141, 142, 143, 144, 145, 146, -1, 148, 149, 52,
7355 53, -1, -1, 56, -1, 156, -1, -1, -1, -1,
7356 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7357 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
7358 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7359 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7360 -1, -1, -1, -1, 107, 108, -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, -1,
7363 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7364 143, 144, 145, 146, -1, 148, 149, 52, 53, -1,
7365 -1, 56, -1, 156, -1, -1, -1, -1, -1, -1,
7366 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7367 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7368 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7369 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7370 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7371 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7372 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7373 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7374 145, 146, -1, 148, 149, 52, 53, -1, -1, 56,
7375 -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
7376 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7377 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7378 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7379 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7380 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
7381 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7382 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7383 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7384 -1, 148, 149, 52, 53, -1, -1, 56, -1, 156,
7385 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7386 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7387 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7388 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7389 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
7390 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7391 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7392 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
7393 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
7394 149, 52, 53, -1, -1, 56, -1, 156, -1, -1,
7395 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7396 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7397 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7398 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7399 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
7400 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7401 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7402 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
7403 141, 142, 143, 144, 145, 146, -1, 148, 149, 52,
7404 53, -1, -1, 56, -1, 156, -1, -1, -1, -1,
7405 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7406 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
7407 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7408 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7409 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
7410 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7411 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7412 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7413 143, 144, 145, 146, -1, 148, 149, 52, 53, -1,
7414 -1, 56, -1, 156, -1, -1, -1, -1, -1, -1,
7415 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7416 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7417 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7418 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7419 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7420 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7421 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7422 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7423 145, 146, -1, 148, 149, 52, 53, -1, -1, 56,
7424 -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
7425 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7426 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7427 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7428 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7429 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
7430 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7431 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7432 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7433 -1, 148, 149, 52, 53, -1, -1, 56, -1, 156,
7434 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7435 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7436 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7437 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7438 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
7439 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7440 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7441 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
7442 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
7443 149, 52, 53, -1, -1, 56, -1, 156, -1, -1,
7444 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7445 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7446 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7447 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7448 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
7449 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7450 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7451 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
7452 141, 142, 143, 144, 145, 146, -1, 148, 149, 52,
7453 53, -1, -1, 56, -1, 156, -1, -1, -1, -1,
7454 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7455 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
7456 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7457 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7458 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
7459 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7460 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7461 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7462 143, 144, 145, 146, -1, 148, 149, 52, 53, -1,
7463 -1, 56, -1, 156, -1, -1, -1, -1, -1, -1,
7464 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7465 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7466 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7467 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7468 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7469 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7470 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7471 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7472 145, 146, -1, 148, 149, -1, -1, -1, -1, -1,
7478static const yytype_int16 yystos[] =
7480 0, 165, 166, 1, 3, 4, 5, 6, 7, 11,
7481 12, 16, 18, 19, 20, 21, 22, 23, 24, 30,
7482 31, 32, 33, 34, 35, 36, 39, 45, 46, 47,
7483 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7484 59, 60, 61, 62, 63, 64, 65, 76, 77, 91,
7485 92, 99, 102, 103, 104, 105, 107, 110, 111, 112,
7486 113, 114, 115, 116, 117, 118, 147, 148, 149, 164,
7487 167, 168, 180, 182, 183, 184, 185, 186, 187, 191,
7488 195, 197, 203, 206, 208, 209, 210, 212, 214, 215,
7489 216, 217, 226, 227, 228, 229, 230, 231, 234, 255,
7490 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
7491 277, 278, 287, 288, 324, 329, 330, 380, 381, 382,
7492 383, 384, 385, 387, 388, 391, 392, 394, 395, 396,
7493 397, 410, 411, 413, 414, 415, 416, 417, 418, 419,
7494 420, 421, 473, 0, 3, 4, 5, 6, 7, 8,
7495 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
7496 19, 20, 21, 22, 23, 24, 25, 26, 30, 31,
7497 32, 33, 34, 35, 36, 37, 38, 39, 45, 46,
7498 47, 48, 49, 50, 51, 52, 53, 56, 76, 77,
7499 78, 79, 80, 81, 82, 83, 84, 87, 88, 93,
7500 94, 95, 96, 107, 108, 137, 138, 139, 140, 141,
7501 142, 143, 144, 145, 146, 148, 149, 156, 220, 221,
7502 222, 224, 225, 410, 179, 179, 179, 39, 58, 99,
7503 102, 107, 108, 109, 112, 148, 187, 209, 217, 227,
7504 238, 239, 245, 246, 249, 251, 252, 268, 417, 418,
7505 420, 421, 460, 461, 246, 157, 242, 247, 248, 154,
7506 157, 189, 54, 221, 189, 151, 169, 170, 235, 473,
7507 21, 22, 32, 195, 197, 208, 227, 268, 287, 288,
7508 227, 227, 227, 56, 47, 102, 171, 176, 177, 182,
7509 211, 212, 473, 171, 240, 251, 460, 473, 239, 459,
7510 460, 473, 46, 99, 147, 155, 195, 197, 216, 255,
7511 268, 417, 418, 421, 322, 220, 400, 412, 416, 400,
7512 401, 402, 161, 386, 386, 386, 386, 415, 203, 227,
7513 227, 154, 160, 163, 471, 472, 179, 40, 41, 42,
7514 43, 44, 37, 38, 157, 424, 425, 426, 427, 428,
7515 424, 427, 26, 151, 242, 248, 279, 331, 28, 280,
7516 328, 134, 155, 102, 107, 214, 134, 25, 78, 79,
7517 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
7518 90, 95, 96, 101, 135, 137, 138, 139, 140, 141,
7519 142, 143, 144, 145, 146, 233, 233, 69, 97, 98,
7520 153, 465, 466, 256, 1, 191, 198, 199, 199, 200,
7521 202, 202, 163, 199, 472, 99, 210, 217, 268, 293,
7522 417, 418, 421, 52, 56, 95, 99, 218, 219, 268,
7523 417, 418, 421, 219, 33, 34, 35, 36, 49, 50,
7524 51, 52, 56, 157, 194, 220, 419, 455, 456, 457,
7525 246, 157, 248, 98, 465, 466, 331, 383, 100, 100,
7526 155, 239, 56, 239, 239, 239, 400, 134, 101, 155,
7527 250, 473, 98, 153, 465, 100, 100, 155, 250, 92,
7528 244, 246, 251, 440, 460, 473, 246, 189, 191, 467,
7529 191, 54, 64, 65, 181, 157, 235, 236, 164, 424,
7530 424, 98, 465, 100, 178, 211, 158, 163, 472, 467,
7531 257, 159, 155, 189, 470, 155, 470, 152, 470, 189,
7532 56, 415, 213, 214, 426, 155, 98, 153, 465, 319,
7533 66, 119, 121, 122, 403, 119, 119, 403, 67, 403,
7534 161, 389, 398, 393, 399, 78, 160, 168, 151, 199,
7535 199, 199, 199, 235, 237, 191, 191, 52, 54, 55,
7536 56, 57, 58, 78, 92, 102, 107, 108, 109, 141,
7537 144, 298, 367, 425, 429, 430, 431, 432, 435, 436,
7538 437, 438, 439, 440, 441, 442, 443, 444, 445, 446,
7539 447, 448, 449, 450, 451, 452, 453, 134, 265, 438,
7540 134, 266, 332, 333, 106, 207, 334, 335, 335, 235,
7541 211, 155, 216, 155, 235, 193, 227, 227, 227, 227,
7542 227, 227, 227, 227, 227, 227, 227, 227, 227, 192,
7543 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7544 227, 52, 53, 56, 224, 462, 463, 244, 251, 52,
7545 53, 56, 224, 462, 242, 171, 174, 13, 289, 471,
7546 289, 199, 171, 171, 259, 163, 56, 98, 153, 465,
7547 25, 199, 52, 56, 218, 138, 423, 473, 98, 153,
7548 465, 264, 458, 69, 98, 464, 246, 467, 52, 56,
7549 242, 462, 235, 235, 223, 100, 124, 235, 239, 239,
7550 249, 252, 460, 52, 56, 244, 52, 56, 235, 235,
7551 461, 467, 155, 467, 155, 158, 467, 221, 236, 227,
7552 152, 134, 134, 56, 462, 462, 235, 170, 467, 177,
7553 158, 460, 155, 213, 52, 56, 244, 52, 56, 320,
7554 405, 404, 119, 390, 403, 66, 119, 119, 390, 66,
7555 119, 227, 171, 182, 102, 107, 294, 295, 296, 297,
7556 442, 155, 454, 473, 155, 454, 155, 433, 434, 467,
7557 299, 300, 155, 434, 239, 34, 52, 52, 155, 434,
7558 34, 52, 39, 188, 209, 227, 232, 174, 471, 188,
7559 232, 174, 319, 152, 333, 319, 10, 68, 286, 286,
7560 107, 203, 204, 205, 239, 251, 253, 254, 467, 213,
7561 155, 99, 185, 190, 205, 217, 227, 239, 241, 254,
7562 268, 421, 341, 341, 189, 100, 100, 151, 242, 248,
7563 189, 468, 155, 100, 100, 242, 243, 248, 473, 235,
7564 286, 171, 13, 171, 27, 290, 471, 286, 286, 17,
7565 283, 337, 25, 258, 343, 52, 56, 244, 52, 56,
7566 260, 263, 422, 262, 52, 56, 218, 244, 174, 191,
7567 196, 467, 243, 248, 190, 227, 241, 190, 241, 221,
7568 235, 239, 250, 100, 100, 468, 100, 100, 440, 460,
7569 191, 39, 190, 241, 470, 214, 468, 321, 406, 409,
7570 416, 421, 386, 403, 386, 386, 386, 152, 296, 442,
7571 155, 467, 155, 453, 429, 447, 449, 432, 435, 445,
7572 451, 134, 239, 436, 444, 451, 443, 445, 189, 44,
7573 44, 286, 286, 320, 152, 320, 239, 155, 44, 213,
7574 56, 44, 134, 44, 98, 153, 465, 339, 339, 136,
7575 235, 235, 333, 207, 159, 100, 235, 235, 207, 8,
7576 281, 376, 473, 14, 15, 284, 285, 291, 292, 473,
7577 292, 201, 107, 239, 336, 286, 341, 337, 286, 468,
7578 199, 471, 199, 174, 468, 286, 467, 194, 331, 328,
7579 235, 235, 100, 235, 235, 467, 155, 467, 189, 179,
7580 407, 467, 294, 297, 295, 454, 155, 434, 155, 434,
7581 155, 434, 155, 434, 434, 188, 232, 237, 237, 321,
7582 321, 107, 239, 237, 237, 235, 237, 52, 56, 244,
7583 52, 56, 340, 340, 227, 190, 241, 190, 241, 152,
7584 235, 190, 241, 190, 241, 239, 254, 377, 473, 175,
7585 284, 171, 199, 286, 286, 239, 155, 289, 339, 286,
7586 290, 174, 471, 286, 235, 157, 325, 438, 171, 155,
7587 155, 445, 445, 451, 445, 227, 227, 179, 179, 239,
7588 182, 182, 227, 468, 52, 56, 58, 91, 92, 99,
7589 102, 104, 105, 107, 112, 140, 324, 346, 347, 348,
7590 350, 353, 357, 358, 359, 362, 363, 364, 365, 366,
7591 367, 368, 369, 370, 371, 372, 373, 374, 375, 380,
7592 381, 384, 385, 388, 392, 395, 397, 418, 447, 346,
7593 190, 241, 101, 378, 473, 9, 282, 379, 473, 172,
7594 289, 107, 239, 171, 340, 261, 286, 438, 323, 0,
7595 120, 408, 295, 434, 434, 155, 434, 434, 139, 313,
7596 314, 473, 313, 371, 371, 56, 218, 340, 347, 355,
7597 356, 357, 358, 361, 468, 189, 340, 469, 52, 400,
7598 52, 102, 416, 101, 155, 139, 155, 155, 347, 89,
7599 90, 98, 153, 157, 351, 352, 52, 99, 217, 268,
7600 417, 418, 421, 289, 176, 171, 171, 239, 292, 337,
7601 338, 345, 346, 171, 189, 316, 29, 123, 326, 445,
7602 298, 301, 302, 303, 304, 308, 309, 310, 311, 312,
7603 315, 443, 445, 446, 451, 453, 171, 174, 347, 468,
7604 347, 359, 361, 468, 155, 152, 235, 124, 199, 372,
7605 355, 359, 349, 360, 361, 112, 364, 368, 371, 371,
7606 218, 340, 468, 340, 467, 355, 358, 362, 355, 358,
7607 362, 56, 98, 153, 465, 171, 163, 173, 291, 289,
7608 40, 41, 286, 160, 158, 327, 171, 434, 454, 155,
7609 454, 155, 305, 306, 316, 300, 155, 305, 307, 99,
7610 268, 155, 306, 467, 155, 155, 354, 467, 155, 353,
7611 155, 400, 467, 467, 467, 468, 468, 468, 52, 56,
7612 244, 52, 56, 376, 379, 342, 199, 199, 52, 317,
7613 318, 441, 174, 152, 301, 449, 304, 308, 445, 451,
7614 139, 268, 309, 451, 56, 98, 445, 360, 362, 360,
7615 359, 361, 468, 171, 155, 189, 286, 454, 155, 306,
7616 155, 306, 155, 306, 155, 306, 52, 56, 306, 155,
7617 469, 292, 343, 344, 318, 445, 445, 451, 445, 306,
7618 306, 155, 306, 306, 445, 306
7622static const yytype_int16 yyr1[] =
7624 0, 162, 165, 163, 163, 164, 166, 167, 167, 167,
7625 168, 168, 169, 170, 171, 172, 173, 174, 175, 174,
7626 176, 176, 176, 177, 178, 177, 179, 180, 181, 182,
7627 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
7628 182, 182, 183, 182, 182, 182, 182, 182, 184, 185,
7629 186, 186, 186, 186, 186, 186, 186, 186, 185, 187,
7630 187, 185, 188, 188, 189, 189, 188, 190, 190, 190,
7631 191, 191, 191, 191, 191, 192, 191, 193, 191, 191,
7632 194, 195, 196, 197, 198, 199, 199, 200, 201, 202,
7633 203, 203, 204, 205, 206, 206, 207, 208, 208, 208,
7634 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
7635 209, 209, 210, 210, 211, 211, 212, 212, 212, 213,
7636 213, 212, 212, 212, 212, 212, 212, 212, 214, 214,
7637 215, 215, 216, 216, 216, 216, 216, 216, 216, 216,
7638 216, 217, 217, 217, 217, 217, 217, 217, 217, 217,
7639 218, 218, 219, 219, 219, 220, 220, 220, 220, 220,
7640 221, 221, 222, 223, 222, 224, 224, 224, 224, 224,
7641 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7642 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7643 224, 224, 224, 224, 224, 225, 225, 225, 225, 225,
7644 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7645 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7646 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7647 225, 225, 225, 225, 225, 225, 226, 227, 228, 228,
7648 228, 228, 228, 228, 228, 228, 227, 229, 229, 229,
7649 229, 229, 229, 227, 227, 227, 227, 227, 227, 227,
7650 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7651 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7652 230, 230, 227, 227, 227, 231, 232, 232, 232, 233,
7653 233, 233, 233, 234, 234, 235, 236, 237, 238, 239,
7654 240, 240, 240, 240, 241, 241, 242, 242, 242, 243,
7655 243, 244, 244, 244, 244, 244, 245, 246, 246, 246,
7656 246, 246, 246, 247, 248, 249, 249, 250, 250, 251,
7657 251, 251, 251, 252, 252, 253, 253, 254, 254, 254,
7658 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7659 255, 256, 255, 257, 255, 255, 255, 255, 255, 255,
7660 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7661 255, 255, 255, 255, 255, 258, 255, 259, 255, 255,
7662 260, 261, 255, 262, 255, 263, 255, 264, 255, 265,
7663 255, 266, 255, 255, 255, 255, 255, 267, 268, 269,
7664 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
7665 280, 281, 282, 283, 284, 285, 286, 286, 287, 288,
7666 289, 289, 289, 290, 290, 291, 291, 292, 292, 293,
7667 293, 294, 294, 295, 295, 296, 296, 296, 296, 296,
7668 297, 297, 298, 298, 299, 300, 301, 301, 302, 302,
7669 303, 303, 303, 303, 304, 305, 305, 306, 307, 308,
7670 309, 309, 310, 310, 310, 310, 310, 310, 310, 310,
7671 310, 310, 310, 310, 311, 311, 311, 312, 311, 313,
7672 313, 314, 315, 315, 316, 316, 317, 317, 318, 318,
7673 319, 320, 321, 322, 323, 324, 325, 325, 326, 327,
7674 326, 328, 329, 329, 329, 329, 329, 330, 330, 330,
7675 330, 330, 330, 330, 330, 331, 331, 332, 333, 334,
7676 335, 336, 336, 336, 336, 337, 338, 338, 339, 340,
7677 341, 342, 343, 344, 344, 345, 345, 345, 346, 346,
7678 346, 346, 346, 346, 347, 348, 348, 349, 350, 350,
7679 351, 352, 353, 353, 353, 353, 353, 353, 353, 353,
7680 353, 353, 353, 353, 353, 354, 353, 353, 353, 355,
7681 355, 355, 355, 355, 355, 356, 356, 357, 357, 358,
7682 359, 359, 360, 360, 361, 362, 362, 362, 362, 363,
7683 363, 364, 364, 365, 365, 366, 366, 367, 368, 368,
7684 369, 370, 370, 370, 370, 370, 370, 369, 369, 369,
7685 369, 371, 371, 371, 371, 371, 371, 371, 371, 371,
7686 371, 372, 373, 373, 374, 375, 375, 375, 376, 376,
7687 377, 377, 377, 378, 378, 379, 379, 380, 380, 381,
7688 382, 382, 382, 383, 384, 385, 386, 386, 387, 388,
7689 389, 389, 390, 390, 391, 392, 393, 393, 394, 395,
7690 396, 397, 398, 398, 399, 399, 400, 400, 401, 401,
7691 402, 402, 403, 404, 403, 405, 406, 407, 403, 408,
7692 408, 409, 409, 410, 410, 411, 412, 412, 413, 414,
7693 414, 415, 415, 415, 415, 416, 416, 416, 417, 417,
7694 417, 418, 418, 418, 418, 418, 418, 418, 419, 419,
7695 420, 420, 421, 421, 422, 423, 423, 424, 424, 425,
7696 426, 427, 428, 427, 429, 429, 430, 430, 431, 431,
7697 431, 431, 432, 432, 433, 433, 434, 435, 436, 436,
7698 437, 437, 437, 437, 437, 437, 437, 437, 437, 437,
7699 437, 437, 438, 438, 439, 438, 438, 440, 441, 441,
7700 441, 441, 442, 442, 443, 444, 444, 445, 445, 446,
7701 447, 447, 448, 449, 449, 450, 450, 451, 451, 452,
7702 452, 453, 453, 453, 454, 454, 455, 456, 457, 458,
7703 457, 459, 459, 460, 460, 461, 461, 461, 461, 461,
7704 461, 462, 462, 462, 462, 463, 463, 463, 464, 464,
7705 465, 465, 466, 466, 467, 468, 469, 470, 470, 471,
7710static const yytype_int8 yyr2[] =
7712 0, 2, 0, 0, 1, 2, 2, 1, 1, 3,
7713 1, 2, 1, 3, 2, 0, 0, 8, 0, 5,
7714 1, 1, 3, 1, 0, 3, 0, 2, 0, 4,
7715 3, 3, 3, 2, 3, 3, 3, 3, 4, 5,
7716 1, 4, 4, 1, 7, 4, 1, 1, 4, 1,
7717 4, 7, 6, 6, 6, 6, 5, 4, 1, 4,
7718 4, 1, 1, 4, 0, 1, 3, 1, 4, 1,
7719 1, 3, 3, 3, 2, 0, 7, 0, 7, 1,
7720 1, 2, 0, 5, 1, 1, 1, 0, 0, 4,
7721 1, 1, 1, 1, 1, 4, 3, 1, 1, 1,
7722 2, 3, 4, 5, 4, 5, 6, 2, 2, 2,
7723 2, 2, 1, 3, 1, 3, 1, 2, 3, 1,
7724 3, 5, 2, 4, 2, 4, 1, 3, 1, 3,
7725 2, 3, 1, 1, 4, 3, 3, 3, 3, 2,
7726 1, 1, 1, 4, 3, 3, 3, 3, 2, 1,
7727 1, 1, 2, 1, 3, 1, 1, 1, 1, 1,
7728 1, 1, 1, 0, 4, 1, 1, 1, 1, 1,
7729 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7730 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7731 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7732 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7733 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7734 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7735 1, 1, 1, 1, 1, 1, 4, 1, 4, 7,
7736 6, 6, 6, 6, 5, 4, 1, 3, 3, 2,
7737 2, 2, 2, 1, 3, 3, 3, 3, 3, 3,
7738 4, 2, 2, 3, 3, 3, 3, 1, 3, 3,
7739 3, 3, 3, 2, 2, 3, 3, 3, 3, 4,
7740 4, 4, 1, 1, 1, 6, 1, 4, 3, 1,
7741 1, 1, 1, 3, 3, 1, 1, 1, 1, 1,
7742 1, 2, 4, 2, 1, 4, 3, 5, 3, 1,
7743 1, 1, 1, 2, 4, 2, 1, 1, 1, 2,
7744 2, 4, 1, 0, 2, 2, 1, 2, 1, 1,
7745 1, 3, 3, 2, 1, 1, 1, 3, 4, 2,
7746 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7747 1, 0, 4, 0, 4, 3, 3, 2, 3, 3,
7748 1, 4, 3, 1, 6, 4, 3, 2, 1, 2,
7749 1, 6, 6, 4, 4, 0, 6, 0, 5, 5,
7750 0, 0, 9, 0, 6, 0, 7, 0, 5, 0,
7751 5, 0, 5, 1, 1, 1, 1, 1, 1, 1,
7752 1, 1, 2, 2, 1, 2, 1, 1, 1, 1,
7753 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7754 1, 1, 2, 1, 1, 1, 5, 1, 2, 1,
7755 1, 1, 3, 1, 3, 1, 3, 5, 1, 3,
7756 2, 1, 1, 1, 0, 2, 2, 1, 1, 3,
7757 4, 2, 2, 1, 1, 2, 0, 1, 1, 3,
7758 1, 3, 6, 8, 4, 6, 4, 6, 4, 6,
7759 2, 4, 2, 4, 1, 2, 2, 1, 1, 1,
7760 1, 4, 0, 1, 1, 4, 1, 3, 1, 1,
7761 0, 0, 0, 0, 0, 9, 4, 1, 3, 0,
7762 4, 3, 2, 4, 5, 5, 3, 2, 4, 4,
7763 3, 3, 2, 1, 4, 3, 3, 0, 7, 0,
7764 7, 1, 2, 3, 4, 5, 1, 1, 0, 0,
7765 0, 0, 9, 1, 1, 1, 3, 3, 1, 2,
7766 3, 1, 1, 1, 1, 3, 1, 0, 4, 1,
7767 2, 2, 1, 1, 4, 4, 4, 3, 4, 4,
7768 4, 3, 3, 3, 2, 0, 6, 2, 4, 1,
7769 1, 2, 2, 4, 1, 2, 3, 1, 3, 5,
7770 2, 1, 1, 3, 1, 3, 1, 2, 1, 1,
7771 3, 2, 1, 1, 3, 2, 1, 2, 1, 1,
7772 1, 3, 3, 2, 2, 2, 2, 1, 1, 1,
7773 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7774 1, 1, 2, 2, 4, 2, 3, 1, 6, 1,
7775 1, 1, 1, 2, 1, 3, 1, 1, 1, 1,
7776 1, 1, 2, 3, 3, 3, 1, 2, 4, 1,
7777 0, 3, 1, 2, 4, 1, 0, 3, 4, 1,
7778 4, 1, 0, 3, 0, 3, 0, 2, 0, 2,
7779 0, 2, 1, 0, 3, 0, 0, 0, 6, 1,
7780 1, 1, 1, 1, 1, 2, 1, 1, 3, 1,
7781 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7782 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7783 1, 1, 1, 1, 0, 4, 1, 1, 1, 0,
7784 3, 1, 0, 3, 2, 1, 1, 3, 4, 2,
7785 2, 1, 1, 1, 2, 0, 1, 3, 1, 3,
7786 6, 8, 4, 6, 4, 6, 4, 6, 2, 4,
7787 2, 4, 1, 2, 1, 1, 1, 1, 1, 1,
7788 1, 1, 1, 1, 1, 1, 3, 1, 3, 1,
7789 1, 1, 1, 2, 1, 1, 1, 2, 1, 1,
7790 1, 2, 2, 1, 2, 1, 1, 1, 1, 0,
7791 4, 1, 2, 1, 3, 3, 2, 1, 4, 2,
7792 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7793 1, 1, 1, 1, 2, 2, 2, 1, 1, 1,
7798enum { YYENOMEM = -2 };
7800#define yyerrok (yyerrstatus = 0)
7801#define yyclearin (yychar = YYEMPTY)
7803#define YYACCEPT goto yyacceptlab
7804#define YYABORT goto yyabortlab
7805#define YYERROR goto yyerrorlab
7806#define YYNOMEM goto yyexhaustedlab
7809#define YYRECOVERING() (!!yyerrstatus)
7811#define YYBACKUP(Token, Value) \
7813 if (yychar == YYEMPTY) \
7817 YYPOPSTACK (yylen); \
7823 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
7830#define YYERRCODE YYUNDEF
7836#ifndef YYLLOC_DEFAULT
7837# define YYLLOC_DEFAULT(Current, Rhs, N) \
7841 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
7842 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
7843 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
7844 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
7848 (Current).first_line = (Current).last_line = \
7849 YYRHSLOC (Rhs, 0).last_line; \
7850 (Current).first_column = (Current).last_column = \
7851 YYRHSLOC (Rhs, 0).last_column; \
7856#define YYRHSLOC(Rhs, K) ((Rhs)[K])
7864# define YYFPRINTF fprintf
7867# define YYDPRINTF(Args) \
7878# ifndef YYLOCATION_PRINT
7880# if defined YY_LOCATION_PRINT
7884# define YYLOCATION_PRINT(File, Loc, p) YY_LOCATION_PRINT(File, *(Loc), p)
7886# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
7892yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
7895 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
7896 if (0 <= yylocp->first_line)
7898 res += YYFPRINTF (yyo,
"%d", yylocp->first_line);
7899 if (0 <= yylocp->first_column)
7900 res += YYFPRINTF (yyo,
".%d", yylocp->first_column);
7902 if (0 <= yylocp->last_line)
7904 if (yylocp->first_line < yylocp->last_line)
7906 res += YYFPRINTF (yyo,
"-%d", yylocp->last_line);
7908 res += YYFPRINTF (yyo,
".%d", end_col);
7910 else if (0 <= end_col && yylocp->first_column < end_col)
7911 res += YYFPRINTF (yyo,
"-%d", end_col);
7916# define YYLOCATION_PRINT yy_location_print_
7920# define YY_LOCATION_PRINT(File, Loc, p) YYLOCATION_PRINT(File, &(Loc), p)
7924# define YYLOCATION_PRINT(File, Loc, p) ((void) 0)
7927# define YY_LOCATION_PRINT YYLOCATION_PRINT
7933# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p) \
7937 YYFPRINTF (stderr, "%s ", Title); \
7938 yy_symbol_print (stderr, \
7939 Kind, Value, Location, p); \
7940 YYFPRINTF (stderr, "\n"); \
7950yy_symbol_value_print (
FILE *yyo,
7953 FILE *yyoutput = yyo;
7955 YY_USE (yylocationp);
7959 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
7962 case YYSYMBOL_keyword_class:
7965 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7970 case YYSYMBOL_keyword_module:
7973 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7978 case YYSYMBOL_keyword_def:
7981 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7986 case YYSYMBOL_keyword_undef:
7989 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7994 case YYSYMBOL_keyword_begin:
7997 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8002 case YYSYMBOL_keyword_rescue:
8005 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8010 case YYSYMBOL_keyword_ensure:
8013 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8018 case YYSYMBOL_keyword_end:
8021 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8026 case YYSYMBOL_keyword_if:
8029 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8034 case YYSYMBOL_keyword_unless:
8037 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8042 case YYSYMBOL_keyword_then:
8045 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8050 case YYSYMBOL_keyword_elsif:
8053 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8058 case YYSYMBOL_keyword_else:
8061 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8066 case YYSYMBOL_keyword_case:
8069 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8074 case YYSYMBOL_keyword_when:
8077 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8082 case YYSYMBOL_keyword_while:
8085 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8090 case YYSYMBOL_keyword_until:
8093 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8098 case YYSYMBOL_keyword_for:
8101 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8106 case YYSYMBOL_keyword_break:
8109 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8114 case YYSYMBOL_keyword_next:
8117 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8122 case YYSYMBOL_keyword_redo:
8125 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8130 case YYSYMBOL_keyword_retry:
8133 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8138 case YYSYMBOL_keyword_in:
8141 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8146 case YYSYMBOL_keyword_do:
8149 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8154 case YYSYMBOL_keyword_do_cond:
8157 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8162 case YYSYMBOL_keyword_do_block:
8165 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8170 case YYSYMBOL_keyword_do_LAMBDA:
8173 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8178 case YYSYMBOL_keyword_return:
8181 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8186 case YYSYMBOL_keyword_yield:
8189 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8194 case YYSYMBOL_keyword_super:
8197 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8202 case YYSYMBOL_keyword_self:
8205 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8210 case YYSYMBOL_keyword_nil:
8213 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8218 case YYSYMBOL_keyword_true:
8221 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8226 case YYSYMBOL_keyword_false:
8229 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8234 case YYSYMBOL_keyword_and:
8237 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8242 case YYSYMBOL_keyword_or:
8245 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8250 case YYSYMBOL_keyword_not:
8253 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8258 case YYSYMBOL_modifier_if:
8261 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8266 case YYSYMBOL_modifier_unless:
8269 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8274 case YYSYMBOL_modifier_while:
8277 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8282 case YYSYMBOL_modifier_until:
8285 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8290 case YYSYMBOL_modifier_rescue:
8293 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8298 case YYSYMBOL_keyword_alias:
8301 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8306 case YYSYMBOL_keyword_defined:
8309 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8314 case YYSYMBOL_keyword_BEGIN:
8317 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8322 case YYSYMBOL_keyword_END:
8325 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8330 case YYSYMBOL_keyword__LINE__:
8333 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8338 case YYSYMBOL_keyword__FILE__:
8341 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8346 case YYSYMBOL_keyword__ENCODING__:
8349 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8354 case YYSYMBOL_tIDENTIFIER:
8357 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8365 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8370 case YYSYMBOL_tGVAR:
8373 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8378 case YYSYMBOL_tIVAR:
8381 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8386 case YYSYMBOL_tCONSTANT:
8389 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8394 case YYSYMBOL_tCVAR:
8397 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8402 case YYSYMBOL_tLABEL:
8405 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8410 case YYSYMBOL_tINTEGER:
8413 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8415 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8418 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8421 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8423 case NODE_IMAGINARY:
8424 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8433 case YYSYMBOL_tFLOAT:
8436 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8438 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8441 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8444 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8446 case NODE_IMAGINARY:
8447 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8456 case YYSYMBOL_tRATIONAL:
8459 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8461 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8464 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8467 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8469 case NODE_IMAGINARY:
8470 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8479 case YYSYMBOL_tIMAGINARY:
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_tCHAR:
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_tNTH_REF:
8528 rb_parser_printf(p,
"$%ld", RNODE_NTH_REF(((*yyvaluep).node))->nd_nth);
8533 case YYSYMBOL_tBACK_REF:
8536 rb_parser_printf(p,
"$%c", (
int)RNODE_BACK_REF(((*yyvaluep).node))->nd_nth);
8541 case YYSYMBOL_tSTRING_CONTENT:
8544 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8546 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8549 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8552 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8554 case NODE_IMAGINARY:
8555 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8567 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8572 case YYSYMBOL_70_backslash_:
8575 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8580 case YYSYMBOL_72_escaped_horizontal_tab_:
8583 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8588 case YYSYMBOL_73_escaped_form_feed_:
8591 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8596 case YYSYMBOL_74_escaped_carriage_return_:
8599 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8604 case YYSYMBOL_75_escaped_vertical_tab_:
8607 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8612 case YYSYMBOL_tANDDOT:
8615 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8620 case YYSYMBOL_tCOLON2:
8623 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8628 case YYSYMBOL_tOP_ASGN:
8631 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8636 case YYSYMBOL_compstmt_top_stmts:
8639 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8640 rb_parser_printf(p,
"NODE_SPECIAL");
8642 else if (((*yyvaluep).node)) {
8643 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8649 case YYSYMBOL_top_stmts:
8652 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8653 rb_parser_printf(p,
"NODE_SPECIAL");
8655 else if (((*yyvaluep).node)) {
8656 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8662 case YYSYMBOL_top_stmt:
8665 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8666 rb_parser_printf(p,
"NODE_SPECIAL");
8668 else if (((*yyvaluep).node)) {
8669 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8675 case YYSYMBOL_block_open:
8678 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
8679 rb_parser_printf(p,
"NODE_SPECIAL");
8681 else if (((*yyvaluep).node_exits)) {
8682 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8688 case YYSYMBOL_begin_block:
8691 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8692 rb_parser_printf(p,
"NODE_SPECIAL");
8694 else if (((*yyvaluep).node)) {
8695 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8701 case YYSYMBOL_compstmt_stmts:
8704 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8705 rb_parser_printf(p,
"NODE_SPECIAL");
8707 else if (((*yyvaluep).node)) {
8708 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8714 case YYSYMBOL_bodystmt:
8717 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8718 rb_parser_printf(p,
"NODE_SPECIAL");
8720 else if (((*yyvaluep).node)) {
8721 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8727 case YYSYMBOL_stmts:
8730 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8731 rb_parser_printf(p,
"NODE_SPECIAL");
8733 else if (((*yyvaluep).node)) {
8734 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8740 case YYSYMBOL_stmt_or_begin:
8743 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8744 rb_parser_printf(p,
"NODE_SPECIAL");
8746 else if (((*yyvaluep).node)) {
8747 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8753 case YYSYMBOL_allow_exits:
8756 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
8757 rb_parser_printf(p,
"NODE_SPECIAL");
8759 else if (((*yyvaluep).node_exits)) {
8760 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8769 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8770 rb_parser_printf(p,
"NODE_SPECIAL");
8772 else if (((*yyvaluep).node)) {
8773 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8779 case YYSYMBOL_asgn_mrhs:
8782 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8783 rb_parser_printf(p,
"NODE_SPECIAL");
8785 else if (((*yyvaluep).node)) {
8786 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8792 case YYSYMBOL_asgn_command_rhs:
8795 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8796 rb_parser_printf(p,
"NODE_SPECIAL");
8798 else if (((*yyvaluep).node)) {
8799 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8805 case YYSYMBOL_command_asgn:
8808 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8809 rb_parser_printf(p,
"NODE_SPECIAL");
8811 else if (((*yyvaluep).node)) {
8812 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8818 case YYSYMBOL_op_asgn_command_rhs:
8821 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8822 rb_parser_printf(p,
"NODE_SPECIAL");
8824 else if (((*yyvaluep).node)) {
8825 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8831 case YYSYMBOL_def_endless_method_endless_command:
8834 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8835 rb_parser_printf(p,
"NODE_SPECIAL");
8837 else if (((*yyvaluep).node)) {
8838 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8844 case YYSYMBOL_endless_command:
8847 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8848 rb_parser_printf(p,
"NODE_SPECIAL");
8850 else if (((*yyvaluep).node)) {
8851 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8857 case YYSYMBOL_command_rhs:
8860 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8861 rb_parser_printf(p,
"NODE_SPECIAL");
8863 else if (((*yyvaluep).node)) {
8864 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8873 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8874 rb_parser_printf(p,
"NODE_SPECIAL");
8876 else if (((*yyvaluep).node)) {
8877 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8883 case YYSYMBOL_def_name:
8886 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8891 case YYSYMBOL_defn_head:
8894 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
8895 rb_parser_printf(p,
"NODE_SPECIAL");
8897 else if (((*yyvaluep).node_def_temp)) {
8898 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8904 case YYSYMBOL_defs_head:
8907 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
8908 rb_parser_printf(p,
"NODE_SPECIAL");
8910 else if (((*yyvaluep).node_def_temp)) {
8911 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8917 case YYSYMBOL_value_expr_expr:
8920 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8921 rb_parser_printf(p,
"NODE_SPECIAL");
8923 else if (((*yyvaluep).node)) {
8924 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8930 case YYSYMBOL_expr_value:
8933 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8934 rb_parser_printf(p,
"NODE_SPECIAL");
8936 else if (((*yyvaluep).node)) {
8937 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8943 case YYSYMBOL_expr_value_do:
8946 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8947 rb_parser_printf(p,
"NODE_SPECIAL");
8949 else if (((*yyvaluep).node)) {
8950 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8956 case YYSYMBOL_command_call:
8959 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8960 rb_parser_printf(p,
"NODE_SPECIAL");
8962 else if (((*yyvaluep).node)) {
8963 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8969 case YYSYMBOL_value_expr_command_call:
8972 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8973 rb_parser_printf(p,
"NODE_SPECIAL");
8975 else if (((*yyvaluep).node)) {
8976 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8982 case YYSYMBOL_command_call_value:
8985 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8986 rb_parser_printf(p,
"NODE_SPECIAL");
8988 else if (((*yyvaluep).node)) {
8989 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8995 case YYSYMBOL_block_command:
8998 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8999 rb_parser_printf(p,
"NODE_SPECIAL");
9001 else if (((*yyvaluep).node)) {
9002 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9008 case YYSYMBOL_cmd_brace_block:
9011 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9012 rb_parser_printf(p,
"NODE_SPECIAL");
9014 else if (((*yyvaluep).node)) {
9015 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9021 case YYSYMBOL_fcall:
9024 if ((
NODE *)((*yyvaluep).node_fcall) == (
NODE *)-1) {
9025 rb_parser_printf(p,
"NODE_SPECIAL");
9027 else if (((*yyvaluep).node_fcall)) {
9028 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_fcall)))));
9034 case YYSYMBOL_command:
9037 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9038 rb_parser_printf(p,
"NODE_SPECIAL");
9040 else if (((*yyvaluep).node)) {
9041 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9050 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9051 rb_parser_printf(p,
"NODE_SPECIAL");
9053 else if (((*yyvaluep).node_masgn)) {
9054 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9060 case YYSYMBOL_mlhs_inner:
9063 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9064 rb_parser_printf(p,
"NODE_SPECIAL");
9066 else if (((*yyvaluep).node_masgn)) {
9067 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9073 case YYSYMBOL_mlhs_basic:
9076 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9077 rb_parser_printf(p,
"NODE_SPECIAL");
9079 else if (((*yyvaluep).node_masgn)) {
9080 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9086 case YYSYMBOL_mlhs_items_mlhs_item:
9089 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9090 rb_parser_printf(p,
"NODE_SPECIAL");
9092 else if (((*yyvaluep).node)) {
9093 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9099 case YYSYMBOL_mlhs_item:
9102 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9103 rb_parser_printf(p,
"NODE_SPECIAL");
9105 else if (((*yyvaluep).node)) {
9106 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9112 case YYSYMBOL_mlhs_head:
9115 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9116 rb_parser_printf(p,
"NODE_SPECIAL");
9118 else if (((*yyvaluep).node)) {
9119 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9125 case YYSYMBOL_mlhs_node:
9128 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9129 rb_parser_printf(p,
"NODE_SPECIAL");
9131 else if (((*yyvaluep).node)) {
9132 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9141 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9142 rb_parser_printf(p,
"NODE_SPECIAL");
9144 else if (((*yyvaluep).node)) {
9145 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9151 case YYSYMBOL_cname:
9154 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9159 case YYSYMBOL_cpath:
9162 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9163 rb_parser_printf(p,
"NODE_SPECIAL");
9165 else if (((*yyvaluep).node)) {
9166 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9172 case YYSYMBOL_fname:
9175 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9180 case YYSYMBOL_fitem:
9183 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9184 rb_parser_printf(p,
"NODE_SPECIAL");
9186 else if (((*yyvaluep).node)) {
9187 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9193 case YYSYMBOL_undef_list:
9196 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9197 rb_parser_printf(p,
"NODE_SPECIAL");
9199 else if (((*yyvaluep).node)) {
9200 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9209 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9214 case YYSYMBOL_reswords:
9217 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9222 case YYSYMBOL_asgn_arg_rhs:
9225 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9226 rb_parser_printf(p,
"NODE_SPECIAL");
9228 else if (((*yyvaluep).node)) {
9229 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9238 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9239 rb_parser_printf(p,
"NODE_SPECIAL");
9241 else if (((*yyvaluep).node)) {
9242 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9248 case YYSYMBOL_op_asgn_arg_rhs:
9251 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9252 rb_parser_printf(p,
"NODE_SPECIAL");
9254 else if (((*yyvaluep).node)) {
9255 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9261 case YYSYMBOL_range_expr_arg:
9264 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9265 rb_parser_printf(p,
"NODE_SPECIAL");
9267 else if (((*yyvaluep).node)) {
9268 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9274 case YYSYMBOL_def_endless_method_endless_arg:
9277 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9278 rb_parser_printf(p,
"NODE_SPECIAL");
9280 else if (((*yyvaluep).node)) {
9281 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9287 case YYSYMBOL_ternary:
9290 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9291 rb_parser_printf(p,
"NODE_SPECIAL");
9293 else if (((*yyvaluep).node)) {
9294 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9300 case YYSYMBOL_endless_arg:
9303 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9304 rb_parser_printf(p,
"NODE_SPECIAL");
9306 else if (((*yyvaluep).node)) {
9307 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9313 case YYSYMBOL_relop:
9316 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9321 case YYSYMBOL_rel_expr:
9324 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9325 rb_parser_printf(p,
"NODE_SPECIAL");
9327 else if (((*yyvaluep).node)) {
9328 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9334 case YYSYMBOL_value_expr_arg:
9337 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9338 rb_parser_printf(p,
"NODE_SPECIAL");
9340 else if (((*yyvaluep).node)) {
9341 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9347 case YYSYMBOL_arg_value:
9350 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9351 rb_parser_printf(p,
"NODE_SPECIAL");
9353 else if (((*yyvaluep).node)) {
9354 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9360 case YYSYMBOL_aref_args:
9363 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9364 rb_parser_printf(p,
"NODE_SPECIAL");
9366 else if (((*yyvaluep).node)) {
9367 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9373 case YYSYMBOL_arg_rhs:
9376 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9377 rb_parser_printf(p,
"NODE_SPECIAL");
9379 else if (((*yyvaluep).node)) {
9380 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9386 case YYSYMBOL_paren_args:
9389 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9390 rb_parser_printf(p,
"NODE_SPECIAL");
9392 else if (((*yyvaluep).node)) {
9393 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9399 case YYSYMBOL_opt_paren_args:
9402 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9403 rb_parser_printf(p,
"NODE_SPECIAL");
9405 else if (((*yyvaluep).node)) {
9406 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9412 case YYSYMBOL_opt_call_args:
9415 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9416 rb_parser_printf(p,
"NODE_SPECIAL");
9418 else if (((*yyvaluep).node)) {
9419 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9425 case YYSYMBOL_value_expr_command:
9428 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9429 rb_parser_printf(p,
"NODE_SPECIAL");
9431 else if (((*yyvaluep).node)) {
9432 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9438 case YYSYMBOL_call_args:
9441 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9442 rb_parser_printf(p,
"NODE_SPECIAL");
9444 else if (((*yyvaluep).node)) {
9445 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9451 case YYSYMBOL_command_args:
9454 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9455 rb_parser_printf(p,
"NODE_SPECIAL");
9457 else if (((*yyvaluep).node)) {
9458 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9464 case YYSYMBOL_block_arg:
9467 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
9468 rb_parser_printf(p,
"NODE_SPECIAL");
9470 else if (((*yyvaluep).node_block_pass)) {
9471 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9477 case YYSYMBOL_opt_block_arg:
9480 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
9481 rb_parser_printf(p,
"NODE_SPECIAL");
9483 else if (((*yyvaluep).node_block_pass)) {
9484 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9493 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9494 rb_parser_printf(p,
"NODE_SPECIAL");
9496 else if (((*yyvaluep).node)) {
9497 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9503 case YYSYMBOL_arg_splat:
9506 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9507 rb_parser_printf(p,
"NODE_SPECIAL");
9509 else if (((*yyvaluep).node)) {
9510 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9516 case YYSYMBOL_mrhs_arg:
9519 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9520 rb_parser_printf(p,
"NODE_SPECIAL");
9522 else if (((*yyvaluep).node)) {
9523 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9532 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9533 rb_parser_printf(p,
"NODE_SPECIAL");
9535 else if (((*yyvaluep).node)) {
9536 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9542 case YYSYMBOL_primary:
9545 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9546 rb_parser_printf(p,
"NODE_SPECIAL");
9548 else if (((*yyvaluep).node)) {
9549 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9555 case YYSYMBOL_value_expr_primary:
9558 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9559 rb_parser_printf(p,
"NODE_SPECIAL");
9561 else if (((*yyvaluep).node)) {
9562 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9568 case YYSYMBOL_primary_value:
9571 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9572 rb_parser_printf(p,
"NODE_SPECIAL");
9574 else if (((*yyvaluep).node)) {
9575 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9581 case YYSYMBOL_k_while:
9584 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9585 rb_parser_printf(p,
"NODE_SPECIAL");
9587 else if (((*yyvaluep).node_exits)) {
9588 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9594 case YYSYMBOL_k_until:
9597 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9598 rb_parser_printf(p,
"NODE_SPECIAL");
9600 else if (((*yyvaluep).node_exits)) {
9601 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9607 case YYSYMBOL_k_for:
9610 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9611 rb_parser_printf(p,
"NODE_SPECIAL");
9613 else if (((*yyvaluep).node_exits)) {
9614 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9620 case YYSYMBOL_k_def:
9623 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
9624 rb_parser_printf(p,
"NODE_SPECIAL");
9626 else if (((*yyvaluep).node_def_temp)) {
9627 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
9636 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9641 case YYSYMBOL_if_tail:
9644 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9645 rb_parser_printf(p,
"NODE_SPECIAL");
9647 else if (((*yyvaluep).node)) {
9648 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9654 case YYSYMBOL_opt_else:
9657 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9658 rb_parser_printf(p,
"NODE_SPECIAL");
9660 else if (((*yyvaluep).node)) {
9661 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9667 case YYSYMBOL_for_var:
9670 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9671 rb_parser_printf(p,
"NODE_SPECIAL");
9673 else if (((*yyvaluep).node)) {
9674 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9680 case YYSYMBOL_f_marg:
9683 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9684 rb_parser_printf(p,
"NODE_SPECIAL");
9686 else if (((*yyvaluep).node)) {
9687 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9693 case YYSYMBOL_mlhs_items_f_marg:
9696 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9697 rb_parser_printf(p,
"NODE_SPECIAL");
9699 else if (((*yyvaluep).node)) {
9700 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9706 case YYSYMBOL_f_margs:
9709 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9710 rb_parser_printf(p,
"NODE_SPECIAL");
9712 else if (((*yyvaluep).node_masgn)) {
9713 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9719 case YYSYMBOL_f_rest_marg:
9722 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9723 rb_parser_printf(p,
"NODE_SPECIAL");
9725 else if (((*yyvaluep).node)) {
9726 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9732 case YYSYMBOL_f_any_kwrest:
9735 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9740 case YYSYMBOL_f_kw_primary_value:
9743 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9744 rb_parser_printf(p,
"NODE_SPECIAL");
9746 else if (((*yyvaluep).node_kw_arg)) {
9747 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9753 case YYSYMBOL_f_kwarg_primary_value:
9756 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9757 rb_parser_printf(p,
"NODE_SPECIAL");
9759 else if (((*yyvaluep).node_kw_arg)) {
9760 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9766 case YYSYMBOL_args_tail_basic_primary_value:
9769 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9770 rb_parser_printf(p,
"NODE_SPECIAL");
9772 else if (((*yyvaluep).node_args)) {
9773 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9779 case YYSYMBOL_block_args_tail:
9782 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9783 rb_parser_printf(p,
"NODE_SPECIAL");
9785 else if (((*yyvaluep).node_args)) {
9786 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9792 case YYSYMBOL_opt_args_tail_block_args_tail:
9795 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9796 rb_parser_printf(p,
"NODE_SPECIAL");
9798 else if (((*yyvaluep).node_args)) {
9799 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9805 case YYSYMBOL_block_args_opt_tail:
9808 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9809 rb_parser_printf(p,
"NODE_SPECIAL");
9811 else if (((*yyvaluep).node_args)) {
9812 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9818 case YYSYMBOL_excessed_comma:
9821 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9826 case YYSYMBOL_f_opt_primary_value:
9829 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9830 rb_parser_printf(p,
"NODE_SPECIAL");
9832 else if (((*yyvaluep).node_opt_arg)) {
9833 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9839 case YYSYMBOL_f_opt_arg_primary_value:
9842 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9843 rb_parser_printf(p,
"NODE_SPECIAL");
9845 else if (((*yyvaluep).node_opt_arg)) {
9846 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9852 case YYSYMBOL_args_list_primary_value_block_args_opt_tail:
9855 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9856 rb_parser_printf(p,
"NODE_SPECIAL");
9858 else if (((*yyvaluep).node_args)) {
9859 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9865 case YYSYMBOL_block_param:
9868 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9869 rb_parser_printf(p,
"NODE_SPECIAL");
9871 else if (((*yyvaluep).node_args)) {
9872 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9878 case YYSYMBOL_tail_only_args_block_args_tail:
9881 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9882 rb_parser_printf(p,
"NODE_SPECIAL");
9884 else if (((*yyvaluep).node_args)) {
9885 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9891 case YYSYMBOL_opt_block_param_def:
9894 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9895 rb_parser_printf(p,
"NODE_SPECIAL");
9897 else if (((*yyvaluep).node_args)) {
9898 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9904 case YYSYMBOL_block_param_def:
9907 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9908 rb_parser_printf(p,
"NODE_SPECIAL");
9910 else if (((*yyvaluep).node_args)) {
9911 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9917 case YYSYMBOL_opt_block_param:
9920 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9921 rb_parser_printf(p,
"NODE_SPECIAL");
9923 else if (((*yyvaluep).node_args)) {
9924 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9930 case YYSYMBOL_opt_bv_decl:
9933 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9938 case YYSYMBOL_bv_decls:
9941 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9949 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9954 case YYSYMBOL_numparam:
9957 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9958 rb_parser_printf(p,
"NODE_SPECIAL");
9960 else if (((*yyvaluep).node)) {
9961 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9967 case YYSYMBOL_it_id:
9970 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9975 case YYSYMBOL_lambda:
9978 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9979 rb_parser_printf(p,
"NODE_SPECIAL");
9981 else if (((*yyvaluep).node)) {
9982 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9988 case YYSYMBOL_f_larglist:
9991 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9992 rb_parser_printf(p,
"NODE_SPECIAL");
9994 else if (((*yyvaluep).node_args)) {
9995 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10001 case YYSYMBOL_do_block:
10002#line 2618 "parse.y"
10004 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10005 rb_parser_printf(p,
"NODE_SPECIAL");
10007 else if (((*yyvaluep).node)) {
10008 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10011#line 10012 "parse.c"
10014 case YYSYMBOL_block_call:
10015#line 2618 "parse.y"
10017 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10018 rb_parser_printf(p,
"NODE_SPECIAL");
10020 else if (((*yyvaluep).node)) {
10021 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10024#line 10025 "parse.c"
10027 case YYSYMBOL_method_call:
10028#line 2618 "parse.y"
10030 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10031 rb_parser_printf(p,
"NODE_SPECIAL");
10033 else if (((*yyvaluep).node)) {
10034 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10037#line 10038 "parse.c"
10040 case YYSYMBOL_brace_block:
10041#line 2618 "parse.y"
10043 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10044 rb_parser_printf(p,
"NODE_SPECIAL");
10046 else if (((*yyvaluep).node)) {
10047 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10050#line 10051 "parse.c"
10053 case YYSYMBOL_brace_body:
10054#line 2618 "parse.y"
10056 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10057 rb_parser_printf(p,
"NODE_SPECIAL");
10059 else if (((*yyvaluep).node)) {
10060 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10063#line 10064 "parse.c"
10066 case YYSYMBOL_do_body:
10067#line 2618 "parse.y"
10069 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10070 rb_parser_printf(p,
"NODE_SPECIAL");
10072 else if (((*yyvaluep).node)) {
10073 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10076#line 10077 "parse.c"
10079 case YYSYMBOL_case_args:
10080#line 2618 "parse.y"
10082 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10083 rb_parser_printf(p,
"NODE_SPECIAL");
10085 else if (((*yyvaluep).node)) {
10086 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10089#line 10090 "parse.c"
10092 case YYSYMBOL_case_body:
10093#line 2618 "parse.y"
10095 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10096 rb_parser_printf(p,
"NODE_SPECIAL");
10098 else if (((*yyvaluep).node)) {
10099 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10102#line 10103 "parse.c"
10105 case YYSYMBOL_cases:
10106#line 2618 "parse.y"
10108 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10109 rb_parser_printf(p,
"NODE_SPECIAL");
10111 else if (((*yyvaluep).node)) {
10112 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10115#line 10116 "parse.c"
10118 case YYSYMBOL_p_case_body:
10119#line 2618 "parse.y"
10121 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10122 rb_parser_printf(p,
"NODE_SPECIAL");
10124 else if (((*yyvaluep).node)) {
10125 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10128#line 10129 "parse.c"
10131 case YYSYMBOL_p_cases:
10132#line 2618 "parse.y"
10134 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10135 rb_parser_printf(p,
"NODE_SPECIAL");
10137 else if (((*yyvaluep).node)) {
10138 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10141#line 10142 "parse.c"
10144 case YYSYMBOL_p_top_expr:
10145#line 2618 "parse.y"
10147 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10148 rb_parser_printf(p,
"NODE_SPECIAL");
10150 else if (((*yyvaluep).node)) {
10151 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10154#line 10155 "parse.c"
10157 case YYSYMBOL_p_top_expr_body:
10158#line 2618 "parse.y"
10160 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10161 rb_parser_printf(p,
"NODE_SPECIAL");
10163 else if (((*yyvaluep).node)) {
10164 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10167#line 10168 "parse.c"
10170 case YYSYMBOL_p_expr:
10171#line 2618 "parse.y"
10173 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10174 rb_parser_printf(p,
"NODE_SPECIAL");
10176 else if (((*yyvaluep).node)) {
10177 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10180#line 10181 "parse.c"
10183 case YYSYMBOL_p_as:
10184#line 2618 "parse.y"
10186 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10187 rb_parser_printf(p,
"NODE_SPECIAL");
10189 else if (((*yyvaluep).node)) {
10190 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10193#line 10194 "parse.c"
10196 case YYSYMBOL_p_alt:
10197#line 2618 "parse.y"
10199 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10200 rb_parser_printf(p,
"NODE_SPECIAL");
10202 else if (((*yyvaluep).node)) {
10203 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10206#line 10207 "parse.c"
10209 case YYSYMBOL_p_expr_basic:
10210#line 2618 "parse.y"
10212 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10213 rb_parser_printf(p,
"NODE_SPECIAL");
10215 else if (((*yyvaluep).node)) {
10216 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10219#line 10220 "parse.c"
10222 case YYSYMBOL_p_args:
10223#line 2618 "parse.y"
10225 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10226 rb_parser_printf(p,
"NODE_SPECIAL");
10228 else if (((*yyvaluep).node)) {
10229 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10232#line 10233 "parse.c"
10235 case YYSYMBOL_p_args_head:
10236#line 2618 "parse.y"
10238 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10239 rb_parser_printf(p,
"NODE_SPECIAL");
10241 else if (((*yyvaluep).node)) {
10242 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10245#line 10246 "parse.c"
10248 case YYSYMBOL_p_args_tail:
10249#line 2618 "parse.y"
10251 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10252 rb_parser_printf(p,
"NODE_SPECIAL");
10254 else if (((*yyvaluep).node)) {
10255 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10258#line 10259 "parse.c"
10261 case YYSYMBOL_p_find:
10262#line 2618 "parse.y"
10264 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10265 rb_parser_printf(p,
"NODE_SPECIAL");
10267 else if (((*yyvaluep).node)) {
10268 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10271#line 10272 "parse.c"
10274 case YYSYMBOL_p_rest:
10275#line 2618 "parse.y"
10277 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10278 rb_parser_printf(p,
"NODE_SPECIAL");
10280 else if (((*yyvaluep).node)) {
10281 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10284#line 10285 "parse.c"
10287 case YYSYMBOL_p_args_post:
10288#line 2618 "parse.y"
10290 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10291 rb_parser_printf(p,
"NODE_SPECIAL");
10293 else if (((*yyvaluep).node)) {
10294 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10297#line 10298 "parse.c"
10300 case YYSYMBOL_p_arg:
10301#line 2618 "parse.y"
10303 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10304 rb_parser_printf(p,
"NODE_SPECIAL");
10306 else if (((*yyvaluep).node)) {
10307 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10310#line 10311 "parse.c"
10313 case YYSYMBOL_p_kwargs:
10314#line 2618 "parse.y"
10316 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10317 rb_parser_printf(p,
"NODE_SPECIAL");
10319 else if (((*yyvaluep).node)) {
10320 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10323#line 10324 "parse.c"
10326 case YYSYMBOL_p_kwarg:
10327#line 2618 "parse.y"
10329 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10330 rb_parser_printf(p,
"NODE_SPECIAL");
10332 else if (((*yyvaluep).node)) {
10333 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10336#line 10337 "parse.c"
10339 case YYSYMBOL_p_kw:
10340#line 2618 "parse.y"
10342 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10343 rb_parser_printf(p,
"NODE_SPECIAL");
10345 else if (((*yyvaluep).node)) {
10346 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10349#line 10350 "parse.c"
10352 case YYSYMBOL_p_kw_label:
10353#line 2627 "parse.y"
10355 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10357#line 10358 "parse.c"
10360 case YYSYMBOL_p_kwrest:
10361#line 2627 "parse.y"
10363 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10365#line 10366 "parse.c"
10368 case YYSYMBOL_p_kwnorest:
10369#line 2627 "parse.y"
10371 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10373#line 10374 "parse.c"
10376 case YYSYMBOL_p_any_kwrest:
10377#line 2627 "parse.y"
10379 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10381#line 10382 "parse.c"
10384 case YYSYMBOL_p_value:
10385#line 2618 "parse.y"
10387 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10388 rb_parser_printf(p,
"NODE_SPECIAL");
10390 else if (((*yyvaluep).node)) {
10391 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10394#line 10395 "parse.c"
10397 case YYSYMBOL_range_expr_p_primitive:
10398#line 2618 "parse.y"
10400 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10401 rb_parser_printf(p,
"NODE_SPECIAL");
10403 else if (((*yyvaluep).node)) {
10404 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10407#line 10408 "parse.c"
10410 case YYSYMBOL_p_primitive:
10411#line 2618 "parse.y"
10413 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10414 rb_parser_printf(p,
"NODE_SPECIAL");
10416 else if (((*yyvaluep).node)) {
10417 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10420#line 10421 "parse.c"
10423 case YYSYMBOL_p_variable:
10424#line 2618 "parse.y"
10426 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10427 rb_parser_printf(p,
"NODE_SPECIAL");
10429 else if (((*yyvaluep).node)) {
10430 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10433#line 10434 "parse.c"
10436 case YYSYMBOL_p_var_ref:
10437#line 2618 "parse.y"
10439 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10440 rb_parser_printf(p,
"NODE_SPECIAL");
10442 else if (((*yyvaluep).node)) {
10443 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10446#line 10447 "parse.c"
10449 case YYSYMBOL_p_expr_ref:
10450#line 2618 "parse.y"
10452 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10453 rb_parser_printf(p,
"NODE_SPECIAL");
10455 else if (((*yyvaluep).node)) {
10456 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10459#line 10460 "parse.c"
10462 case YYSYMBOL_p_const:
10463#line 2618 "parse.y"
10465 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10466 rb_parser_printf(p,
"NODE_SPECIAL");
10468 else if (((*yyvaluep).node)) {
10469 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10472#line 10473 "parse.c"
10475 case YYSYMBOL_opt_rescue:
10476#line 2618 "parse.y"
10478 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10479 rb_parser_printf(p,
"NODE_SPECIAL");
10481 else if (((*yyvaluep).node)) {
10482 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10485#line 10486 "parse.c"
10488 case YYSYMBOL_exc_list:
10489#line 2618 "parse.y"
10491 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10492 rb_parser_printf(p,
"NODE_SPECIAL");
10494 else if (((*yyvaluep).node)) {
10495 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10498#line 10499 "parse.c"
10501 case YYSYMBOL_exc_var:
10502#line 2618 "parse.y"
10504 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10505 rb_parser_printf(p,
"NODE_SPECIAL");
10507 else if (((*yyvaluep).node)) {
10508 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10511#line 10512 "parse.c"
10514 case YYSYMBOL_opt_ensure:
10515#line 2618 "parse.y"
10517 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10518 rb_parser_printf(p,
"NODE_SPECIAL");
10520 else if (((*yyvaluep).node)) {
10521 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10524#line 10525 "parse.c"
10527 case YYSYMBOL_literal:
10528#line 2618 "parse.y"
10530 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10531 rb_parser_printf(p,
"NODE_SPECIAL");
10533 else if (((*yyvaluep).node)) {
10534 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10537#line 10538 "parse.c"
10540 case YYSYMBOL_strings:
10541#line 2618 "parse.y"
10543 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10544 rb_parser_printf(p,
"NODE_SPECIAL");
10546 else if (((*yyvaluep).node)) {
10547 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10550#line 10551 "parse.c"
10553 case YYSYMBOL_string:
10554#line 2618 "parse.y"
10556 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10557 rb_parser_printf(p,
"NODE_SPECIAL");
10559 else if (((*yyvaluep).node)) {
10560 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10563#line 10564 "parse.c"
10566 case YYSYMBOL_string1:
10567#line 2618 "parse.y"
10569 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10570 rb_parser_printf(p,
"NODE_SPECIAL");
10572 else if (((*yyvaluep).node)) {
10573 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10576#line 10577 "parse.c"
10579 case YYSYMBOL_xstring:
10580#line 2618 "parse.y"
10582 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10583 rb_parser_printf(p,
"NODE_SPECIAL");
10585 else if (((*yyvaluep).node)) {
10586 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10589#line 10590 "parse.c"
10592 case YYSYMBOL_regexp:
10593#line 2618 "parse.y"
10595 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10596 rb_parser_printf(p,
"NODE_SPECIAL");
10598 else if (((*yyvaluep).node)) {
10599 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10602#line 10603 "parse.c"
10605 case YYSYMBOL_words_tWORDS_BEG_word_list:
10606#line 2618 "parse.y"
10608 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10609 rb_parser_printf(p,
"NODE_SPECIAL");
10611 else if (((*yyvaluep).node)) {
10612 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10615#line 10616 "parse.c"
10618 case YYSYMBOL_words:
10619#line 2618 "parse.y"
10621 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10622 rb_parser_printf(p,
"NODE_SPECIAL");
10624 else if (((*yyvaluep).node)) {
10625 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10628#line 10629 "parse.c"
10631 case YYSYMBOL_word_list:
10632#line 2618 "parse.y"
10634 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10635 rb_parser_printf(p,
"NODE_SPECIAL");
10637 else if (((*yyvaluep).node)) {
10638 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10641#line 10642 "parse.c"
10644 case YYSYMBOL_word:
10645#line 2618 "parse.y"
10647 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10648 rb_parser_printf(p,
"NODE_SPECIAL");
10650 else if (((*yyvaluep).node)) {
10651 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10654#line 10655 "parse.c"
10657 case YYSYMBOL_words_tSYMBOLS_BEG_symbol_list:
10658#line 2618 "parse.y"
10660 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10661 rb_parser_printf(p,
"NODE_SPECIAL");
10663 else if (((*yyvaluep).node)) {
10664 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10667#line 10668 "parse.c"
10670 case YYSYMBOL_symbols:
10671#line 2618 "parse.y"
10673 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10674 rb_parser_printf(p,
"NODE_SPECIAL");
10676 else if (((*yyvaluep).node)) {
10677 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10680#line 10681 "parse.c"
10683 case YYSYMBOL_symbol_list:
10684#line 2618 "parse.y"
10686 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10687 rb_parser_printf(p,
"NODE_SPECIAL");
10689 else if (((*yyvaluep).node)) {
10690 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10693#line 10694 "parse.c"
10696 case YYSYMBOL_words_tQWORDS_BEG_qword_list:
10697#line 2618 "parse.y"
10699 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10700 rb_parser_printf(p,
"NODE_SPECIAL");
10702 else if (((*yyvaluep).node)) {
10703 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10706#line 10707 "parse.c"
10709 case YYSYMBOL_qwords:
10710#line 2618 "parse.y"
10712 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10713 rb_parser_printf(p,
"NODE_SPECIAL");
10715 else if (((*yyvaluep).node)) {
10716 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10719#line 10720 "parse.c"
10722 case YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list:
10723#line 2618 "parse.y"
10725 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10726 rb_parser_printf(p,
"NODE_SPECIAL");
10728 else if (((*yyvaluep).node)) {
10729 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10732#line 10733 "parse.c"
10735 case YYSYMBOL_qsymbols:
10736#line 2618 "parse.y"
10738 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10739 rb_parser_printf(p,
"NODE_SPECIAL");
10741 else if (((*yyvaluep).node)) {
10742 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10745#line 10746 "parse.c"
10748 case YYSYMBOL_qword_list:
10749#line 2618 "parse.y"
10751 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10752 rb_parser_printf(p,
"NODE_SPECIAL");
10754 else if (((*yyvaluep).node)) {
10755 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10758#line 10759 "parse.c"
10761 case YYSYMBOL_qsym_list:
10762#line 2618 "parse.y"
10764 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10765 rb_parser_printf(p,
"NODE_SPECIAL");
10767 else if (((*yyvaluep).node)) {
10768 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10771#line 10772 "parse.c"
10774 case YYSYMBOL_string_contents:
10775#line 2618 "parse.y"
10777 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10778 rb_parser_printf(p,
"NODE_SPECIAL");
10780 else if (((*yyvaluep).node)) {
10781 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10784#line 10785 "parse.c"
10787 case YYSYMBOL_xstring_contents:
10788#line 2618 "parse.y"
10790 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10791 rb_parser_printf(p,
"NODE_SPECIAL");
10793 else if (((*yyvaluep).node)) {
10794 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10797#line 10798 "parse.c"
10800 case YYSYMBOL_regexp_contents:
10801#line 2618 "parse.y"
10803 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10804 rb_parser_printf(p,
"NODE_SPECIAL");
10806 else if (((*yyvaluep).node)) {
10807 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10810#line 10811 "parse.c"
10813 case YYSYMBOL_string_content:
10814#line 2618 "parse.y"
10816 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10817 rb_parser_printf(p,
"NODE_SPECIAL");
10819 else if (((*yyvaluep).node)) {
10820 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10823#line 10824 "parse.c"
10826 case YYSYMBOL_string_dvar:
10827#line 2618 "parse.y"
10829 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10830 rb_parser_printf(p,
"NODE_SPECIAL");
10832 else if (((*yyvaluep).node)) {
10833 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10836#line 10837 "parse.c"
10839 case YYSYMBOL_symbol:
10840#line 2618 "parse.y"
10842 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10843 rb_parser_printf(p,
"NODE_SPECIAL");
10845 else if (((*yyvaluep).node)) {
10846 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10849#line 10850 "parse.c"
10852 case YYSYMBOL_ssym:
10853#line 2618 "parse.y"
10855 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10856 rb_parser_printf(p,
"NODE_SPECIAL");
10858 else if (((*yyvaluep).node)) {
10859 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10862#line 10863 "parse.c"
10866#line 2627 "parse.y"
10868 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10870#line 10871 "parse.c"
10873 case YYSYMBOL_dsym:
10874#line 2618 "parse.y"
10876 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10877 rb_parser_printf(p,
"NODE_SPECIAL");
10879 else if (((*yyvaluep).node)) {
10880 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10883#line 10884 "parse.c"
10886 case YYSYMBOL_numeric:
10887#line 2618 "parse.y"
10889 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10890 rb_parser_printf(p,
"NODE_SPECIAL");
10892 else if (((*yyvaluep).node)) {
10893 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10896#line 10897 "parse.c"
10899 case YYSYMBOL_simple_numeric:
10900#line 2618 "parse.y"
10902 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10903 rb_parser_printf(p,
"NODE_SPECIAL");
10905 else if (((*yyvaluep).node)) {
10906 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10909#line 10910 "parse.c"
10912 case YYSYMBOL_nonlocal_var:
10913#line 2627 "parse.y"
10915 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10917#line 10918 "parse.c"
10920 case YYSYMBOL_user_variable:
10921#line 2627 "parse.y"
10923 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10925#line 10926 "parse.c"
10928 case YYSYMBOL_keyword_variable:
10929#line 2627 "parse.y"
10931 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10933#line 10934 "parse.c"
10936 case YYSYMBOL_var_ref:
10937#line 2618 "parse.y"
10939 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10940 rb_parser_printf(p,
"NODE_SPECIAL");
10942 else if (((*yyvaluep).node)) {
10943 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10946#line 10947 "parse.c"
10949 case YYSYMBOL_var_lhs:
10950#line 2618 "parse.y"
10952 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10953 rb_parser_printf(p,
"NODE_SPECIAL");
10955 else if (((*yyvaluep).node)) {
10956 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10959#line 10960 "parse.c"
10962 case YYSYMBOL_backref:
10963#line 2618 "parse.y"
10965 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10966 rb_parser_printf(p,
"NODE_SPECIAL");
10968 else if (((*yyvaluep).node)) {
10969 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10972#line 10973 "parse.c"
10975 case YYSYMBOL_superclass:
10976#line 2618 "parse.y"
10978 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10979 rb_parser_printf(p,
"NODE_SPECIAL");
10981 else if (((*yyvaluep).node)) {
10982 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10985#line 10986 "parse.c"
10988 case YYSYMBOL_f_opt_paren_args:
10989#line 2618 "parse.y"
10991 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10992 rb_parser_printf(p,
"NODE_SPECIAL");
10994 else if (((*yyvaluep).node_args)) {
10995 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10998#line 10999 "parse.c"
11001 case YYSYMBOL_f_empty_arg:
11002#line 2618 "parse.y"
11004 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11005 rb_parser_printf(p,
"NODE_SPECIAL");
11007 else if (((*yyvaluep).node_args)) {
11008 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11011#line 11012 "parse.c"
11014 case YYSYMBOL_f_paren_args:
11015#line 2618 "parse.y"
11017 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11018 rb_parser_printf(p,
"NODE_SPECIAL");
11020 else if (((*yyvaluep).node_args)) {
11021 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11024#line 11025 "parse.c"
11027 case YYSYMBOL_f_arglist:
11028#line 2618 "parse.y"
11030 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11031 rb_parser_printf(p,
"NODE_SPECIAL");
11033 else if (((*yyvaluep).node_args)) {
11034 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11037#line 11038 "parse.c"
11040 case YYSYMBOL_f_kw_arg_value:
11041#line 2618 "parse.y"
11043 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
11044 rb_parser_printf(p,
"NODE_SPECIAL");
11046 else if (((*yyvaluep).node_kw_arg)) {
11047 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
11050#line 11051 "parse.c"
11053 case YYSYMBOL_f_kwarg_arg_value:
11054#line 2618 "parse.y"
11056 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
11057 rb_parser_printf(p,
"NODE_SPECIAL");
11059 else if (((*yyvaluep).node_kw_arg)) {
11060 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
11063#line 11064 "parse.c"
11066 case YYSYMBOL_args_tail_basic_arg_value:
11067#line 2618 "parse.y"
11069 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11070 rb_parser_printf(p,
"NODE_SPECIAL");
11072 else if (((*yyvaluep).node_args)) {
11073 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11076#line 11077 "parse.c"
11079 case YYSYMBOL_args_tail:
11080#line 2618 "parse.y"
11082 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11083 rb_parser_printf(p,
"NODE_SPECIAL");
11085 else if (((*yyvaluep).node_args)) {
11086 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11089#line 11090 "parse.c"
11092 case YYSYMBOL_opt_args_tail_args_tail:
11093#line 2618 "parse.y"
11095 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11096 rb_parser_printf(p,
"NODE_SPECIAL");
11098 else if (((*yyvaluep).node_args)) {
11099 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11102#line 11103 "parse.c"
11105 case YYSYMBOL_f_args_opt_tail:
11106#line 2618 "parse.y"
11108 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11109 rb_parser_printf(p,
"NODE_SPECIAL");
11111 else if (((*yyvaluep).node_args)) {
11112 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11115#line 11116 "parse.c"
11118 case YYSYMBOL_f_opt_arg_value:
11119#line 2618 "parse.y"
11121 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
11122 rb_parser_printf(p,
"NODE_SPECIAL");
11124 else if (((*yyvaluep).node_opt_arg)) {
11125 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
11128#line 11129 "parse.c"
11131 case YYSYMBOL_f_opt_arg_arg_value:
11132#line 2618 "parse.y"
11134 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
11135 rb_parser_printf(p,
"NODE_SPECIAL");
11137 else if (((*yyvaluep).node_opt_arg)) {
11138 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
11141#line 11142 "parse.c"
11144 case YYSYMBOL_args_list_arg_value_f_args_opt_tail:
11145#line 2618 "parse.y"
11147 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11148 rb_parser_printf(p,
"NODE_SPECIAL");
11150 else if (((*yyvaluep).node_args)) {
11151 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11154#line 11155 "parse.c"
11157 case YYSYMBOL_f_args:
11158#line 2618 "parse.y"
11160 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11161 rb_parser_printf(p,
"NODE_SPECIAL");
11163 else if (((*yyvaluep).node_args)) {
11164 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11167#line 11168 "parse.c"
11170 case YYSYMBOL_tail_only_args_args_tail:
11171#line 2618 "parse.y"
11173 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11174 rb_parser_printf(p,
"NODE_SPECIAL");
11176 else if (((*yyvaluep).node_args)) {
11177 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11180#line 11181 "parse.c"
11183 case YYSYMBOL_args_forward:
11184#line 2627 "parse.y"
11186 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11188#line 11189 "parse.c"
11191 case YYSYMBOL_f_bad_arg:
11192#line 2627 "parse.y"
11194 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11196#line 11197 "parse.c"
11199 case YYSYMBOL_f_norm_arg:
11200#line 2627 "parse.y"
11202 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11204#line 11205 "parse.c"
11207 case YYSYMBOL_f_arg_asgn:
11208#line 2627 "parse.y"
11210 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11212#line 11213 "parse.c"
11215 case YYSYMBOL_f_arg_item:
11216#line 2618 "parse.y"
11218 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
11219 rb_parser_printf(p,
"NODE_SPECIAL");
11221 else if (((*yyvaluep).node_args_aux)) {
11222 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11225#line 11226 "parse.c"
11228 case YYSYMBOL_f_arg:
11229#line 2618 "parse.y"
11231 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
11232 rb_parser_printf(p,
"NODE_SPECIAL");
11234 else if (((*yyvaluep).node_args_aux)) {
11235 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11238#line 11239 "parse.c"
11241 case YYSYMBOL_f_label:
11242#line 2627 "parse.y"
11244 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11246#line 11247 "parse.c"
11249 case YYSYMBOL_f_no_kwarg:
11250#line 2627 "parse.y"
11252 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11254#line 11255 "parse.c"
11257 case YYSYMBOL_f_kwrest:
11258#line 2627 "parse.y"
11260 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11262#line 11263 "parse.c"
11265 case YYSYMBOL_f_rest_arg:
11266#line 2627 "parse.y"
11268 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11270#line 11271 "parse.c"
11273 case YYSYMBOL_f_block_arg:
11274#line 2627 "parse.y"
11276 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11278#line 11279 "parse.c"
11281 case YYSYMBOL_opt_f_block_arg:
11282#line 2627 "parse.y"
11284 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11286#line 11287 "parse.c"
11289 case YYSYMBOL_value_expr_singleton_expr:
11290#line 2618 "parse.y"
11292 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11293 rb_parser_printf(p,
"NODE_SPECIAL");
11295 else if (((*yyvaluep).node)) {
11296 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11299#line 11300 "parse.c"
11302 case YYSYMBOL_singleton:
11303#line 2618 "parse.y"
11305 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11306 rb_parser_printf(p,
"NODE_SPECIAL");
11308 else if (((*yyvaluep).node)) {
11309 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11312#line 11313 "parse.c"
11315 case YYSYMBOL_singleton_expr:
11316#line 2618 "parse.y"
11318 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11319 rb_parser_printf(p,
"NODE_SPECIAL");
11321 else if (((*yyvaluep).node)) {
11322 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11325#line 11326 "parse.c"
11328 case YYSYMBOL_assoc_list:
11329#line 2618 "parse.y"
11331 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11332 rb_parser_printf(p,
"NODE_SPECIAL");
11334 else if (((*yyvaluep).node)) {
11335 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11338#line 11339 "parse.c"
11341 case YYSYMBOL_assocs:
11342#line 2618 "parse.y"
11344 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11345 rb_parser_printf(p,
"NODE_SPECIAL");
11347 else if (((*yyvaluep).node)) {
11348 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11351#line 11352 "parse.c"
11354 case YYSYMBOL_assoc:
11355#line 2618 "parse.y"
11357 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11358 rb_parser_printf(p,
"NODE_SPECIAL");
11360 else if (((*yyvaluep).node)) {
11361 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11364#line 11365 "parse.c"
11367 case YYSYMBOL_operation2:
11368#line 2627 "parse.y"
11370 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11372#line 11373 "parse.c"
11375 case YYSYMBOL_operation3:
11376#line 2627 "parse.y"
11378 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11380#line 11381 "parse.c"
11383 case YYSYMBOL_dot_or_colon:
11384#line 2627 "parse.y"
11386 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11388#line 11389 "parse.c"
11391 case YYSYMBOL_call_op:
11392#line 2627 "parse.y"
11394 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11396#line 11397 "parse.c"
11399 case YYSYMBOL_call_op2:
11400#line 2627 "parse.y"
11402 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11404#line 11405 "parse.c"
11407 case YYSYMBOL_none:
11408#line 2618 "parse.y"
11410 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11411 rb_parser_printf(p,
"NODE_SPECIAL");
11413 else if (((*yyvaluep).node)) {
11414 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11417#line 11418 "parse.c"
11423 YY_IGNORE_MAYBE_UNINITIALIZED_END
11432yy_symbol_print (
FILE *yyo,
11435 YYFPRINTF (yyo,
"%s %s (",
11436 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
11438 YYLOCATION_PRINT (yyo, yylocationp, p);
11439 YYFPRINTF (yyo,
": ");
11440 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
11441 YYFPRINTF (yyo,
")");
11450yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop,
struct parser_params *p)
11452 YYFPRINTF (stderr,
"Stack now");
11453 for (; yybottom <= yytop; yybottom++)
11455 int yybot = *yybottom;
11456 YYFPRINTF (stderr,
" %d", yybot);
11458 YYFPRINTF (stderr,
"\n");
11461# define YY_STACK_PRINT(Bottom, Top, p) \
11464 yy_stack_print ((Bottom), (Top), p); \
11473yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp,
YYLTYPE *yylsp,
11476 int yylno = yyrline[yyrule];
11477 int yynrhs = yyr2[yyrule];
11479 YYFPRINTF (stderr,
"Reducing stack by rule %d (line %d):\n",
11480 yyrule - 1, yylno);
11482 for (yyi = 0; yyi < yynrhs; yyi++)
11484 YYFPRINTF (stderr,
" $%d = ", yyi + 1);
11485 yy_symbol_print (stderr,
11486 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
11487 &yyvsp[(yyi + 1) - (yynrhs)],
11488 &(yylsp[(yyi + 1) - (yynrhs)]), p);
11489 YYFPRINTF (stderr,
"\n");
11493# define YY_REDUCE_PRINT(Rule, p) \
11496 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
11505# define YYDPRINTF(Args) ((void) 0)
11506# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p)
11507# define YY_STACK_PRINT(Bottom, Top, p)
11508# define YY_REDUCE_PRINT(Rule, p)
11514# define YYINITDEPTH 200
11525# define YYMAXDEPTH 10000
11533 yysymbol_kind_t yytoken;
11545 yysymbol_kind_t yyarg[],
int yyargn)
11549 int yyn = yypact[+*yyctx->yyssp];
11550 if (!yypact_value_is_default (yyn))
11555 int yyxbegin = yyn < 0 ? -yyn : 0;
11557 int yychecklim = YYLAST - yyn + 1;
11558 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
11560 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
11561 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
11562 && !yytable_value_is_error (yytable[yyx + yyn]))
11566 else if (yycount == yyargn)
11569 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
11572 if (yyarg && yycount == 0 && 0 < yyargn)
11573 yyarg[0] = YYSYMBOL_YYEMPTY;
11581# if defined __GLIBC__ && defined _STRING_H
11582# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
11586yystrlen (
const char *yystr)
11589 for (yylen = 0; yystr[yylen]; yylen++)
11597# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
11598# define yystpcpy stpcpy
11603yystpcpy (
char *yydest,
const char *yysrc)
11605 char *yyd = yydest;
11606 const char *yys = yysrc;
11608 while ((*yyd++ = *yys++) !=
'\0')
11625yytnamerr (
char *yyres,
const char *yystr)
11629 YYPTRDIFF_T yyn = 0;
11630 char const *yyp = yystr;
11636 goto do_not_strip_quotes;
11639 if (*++yyp !=
'\\')
11640 goto do_not_strip_quotes;
11656 do_not_strip_quotes: ;
11660 return yystpcpy (yyres, yystr) - yyres;
11662 return yystrlen (yystr);
11669 yysymbol_kind_t yyarg[],
int yyargn)
11696 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
11700 yyarg[yycount] = yyctx->yytoken;
11702 yyn = yypcontext_expected_tokens (yyctx,
11703 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
11704 if (yyn == YYENOMEM)
11721yysyntax_error (YYPTRDIFF_T *yymsg_alloc,
char **yymsg,
11724 enum { YYARGS_MAX = 5 };
11726 const char *yyformat = YY_NULLPTR;
11729 yysymbol_kind_t yyarg[YYARGS_MAX];
11731 YYPTRDIFF_T yysize = 0;
11734 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
11735 if (yycount == YYENOMEM)
11740#define YYCASE_(N, S) \
11745 YYCASE_(0, YY_(
"syntax error"));
11746 YYCASE_(1, YY_(
"syntax error, unexpected %s"));
11747 YYCASE_(2, YY_(
"syntax error, unexpected %s, expecting %s"));
11748 YYCASE_(3, YY_(
"syntax error, unexpected %s, expecting %s or %s"));
11749 YYCASE_(4, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
11750 YYCASE_(5, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
11756 yysize = yystrlen (yyformat) - 2 * yycount + 1;
11759 for (yyi = 0; yyi < yycount; ++yyi)
11761 YYPTRDIFF_T yysize1
11762 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
11763 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
11770 if (*yymsg_alloc < yysize)
11772 *yymsg_alloc = 2 * yysize;
11773 if (! (yysize <= *yymsg_alloc
11774 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
11775 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
11783 char *yyp = *yymsg;
11785 while ((*yyp = *yyformat) !=
'\0')
11786 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
11788 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
11806yydestruct (
const char *yymsg,
11810 YY_USE (yylocationp);
11813 yymsg =
"Deleting";
11814 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp, p);
11816 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
11819 case YYSYMBOL_258_16:
11820#line 2655 "parse.y"
11822 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11824#line 11825 "parse.c"
11827 case YYSYMBOL_259_17:
11828#line 2655 "parse.y"
11830 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11832#line 11833 "parse.c"
11838 YY_IGNORE_MAYBE_UNINITIALIZED_END
11861static const YYSTYPE yyval_default = {};
11862(void) yyval_default;
11864YY_INITIAL_VALUE (
static const YYSTYPE yyval_default;)
11866YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
11869static const YYLTYPE yyloc_default
11870# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
11874YYLTYPE yylloc = yyloc_default;
11880 yy_state_fast_t yystate = 0;
11882 int yyerrstatus = 0;
11888 YYPTRDIFF_T yystacksize = YYINITDEPTH;
11891 yy_state_t yyssa[YYINITDEPTH];
11892 yy_state_t *yyss = yyssa;
11893 yy_state_t *yyssp = yyss;
11909 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
11919 char yymsgbuf[128];
11920 char *yymsg = yymsgbuf;
11921 YYPTRDIFF_T yymsg_alloc =
sizeof yymsgbuf;
11923#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
11929 YYDPRINTF ((stderr,
"Starting parse\n"));
11935#line 2662 "parse.y"
11937 RUBY_SET_YYLLOC_OF_NONE(yylloc);
11940#line 11941 "parse.c"
11959 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
11960 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
11961 YY_IGNORE_USELESS_CAST_BEGIN
11962 *yyssp = YY_CAST (yy_state_t, yystate);
11963 YY_IGNORE_USELESS_CAST_END
11964 YY_STACK_PRINT (yyss, yyssp, p);
11966 if (yyss + yystacksize - 1 <= yyssp)
11967#if !defined yyoverflow && !defined YYSTACK_RELOCATE
11972 YYPTRDIFF_T yysize = yyssp - yyss + 1;
11974# if defined yyoverflow
11979 yy_state_t *yyss1 = yyss;
11987 yyoverflow (YY_(
"memory exhausted"),
11988 &yyss1, yysize * YYSIZEOF (*yyssp),
11989 &yyvs1, yysize * YYSIZEOF (*yyvsp),
11990 &yyls1, yysize * YYSIZEOF (*yylsp),
11998 if (YYMAXDEPTH <= yystacksize)
12001 if (YYMAXDEPTH < yystacksize)
12002 yystacksize = YYMAXDEPTH;
12005 yy_state_t *yyss1 = yyss;
12006 union yyalloc *yyptr =
12007 YY_CAST (
union yyalloc *,
12008 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
12011 YYSTACK_RELOCATE (yyss_alloc, yyss);
12012 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
12013 YYSTACK_RELOCATE (yyls_alloc, yyls);
12014# undef YYSTACK_RELOCATE
12015 if (yyss1 != yyssa)
12016 YYSTACK_FREE (yyss1);
12020 yyssp = yyss + yysize - 1;
12021 yyvsp = yyvs + yysize - 1;
12022 yylsp = yyls + yysize - 1;
12024 YY_IGNORE_USELESS_CAST_BEGIN
12025 YYDPRINTF ((stderr,
"Stack size increased to %ld\n",
12026 YY_CAST (
long, yystacksize)));
12027 YY_IGNORE_USELESS_CAST_END
12029 if (yyss + yystacksize - 1 <= yyssp)
12035 if (yystate == YYFINAL)
12049 yyn = yypact[yystate];
12050 if (yypact_value_is_default (yyn))
12056 if (yychar == YYEMPTY)
12058 YYDPRINTF ((stderr,
"Reading a token\n"));
12059 yychar = yylex (&yylval, &yylloc, p);
12062 if (yychar <= END_OF_INPUT)
12064 yychar = END_OF_INPUT;
12065 yytoken = YYSYMBOL_YYEOF;
12066 YYDPRINTF ((stderr,
"Now at end of input.\n"));
12068 else if (yychar == YYerror)
12075 yytoken = YYSYMBOL_YYerror;
12076 yyerror_range[1] = yylloc;
12081 yytoken = YYTRANSLATE (yychar);
12082 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc, p);
12088 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
12090 yyn = yytable[yyn];
12093 if (yytable_value_is_error (yyn))
12105 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc, p);
12107 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
12109 YY_IGNORE_MAYBE_UNINITIALIZED_END
12112#line 2665 "parse.y"
12114#line 12115 "parse.c"
12126 yyn = yydefact[yystate];
12147 yyval = yyvsp[1-yylen];
12149#line 2666 "parse.y"
12150 {before_reduce(yylen, p);}
12151#line 12152 "parse.c"
12155 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
12156 yyerror_range[1] = yyloc;
12157 YY_REDUCE_PRINT (yyn, p);
12161#line 3161 "parse.y"
12163 SET_LEX_STATE(EXPR_BEG);
12164 local_push(p, ifndef_ripper(1)+0);
12166 if (!ifndef_ripper(p->do_loop) + 0) init_block_exit(p);
12168#line 12169 "parse.c"
12172#line 2976 "parse.y"
12174 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
12176#line 12177 "parse.c"
12180#line 3168 "parse.y"
12182 if ((yyvsp[0].node) && !compile_for_eval) {
12183 NODE *node = (yyvsp[0].node);
12185 if (nd_type_p(node, NODE_BLOCK)) {
12186 while (RNODE_BLOCK(node)->nd_next) {
12187 node = RNODE_BLOCK(node)->nd_next;
12189 node = RNODE_BLOCK(node)->nd_head;
12191 node = remove_begin(node);
12192 void_expr(p, node);
12194 p->eval_tree = NEW_SCOPE(0, block_append(p, p->eval_tree, (yyvsp[0].node)), NULL, &(yyloc));
12198#line 12199 "parse.c"
12202#line 3188 "parse.y"
12204 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12207#line 12208 "parse.c"
12211#line 3193 "parse.y"
12213 (yyval.node) = newline_node((yyvsp[0].node));
12216#line 12217 "parse.c"
12220#line 3198 "parse.y"
12222 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12225#line 12226 "parse.c"
12229#line 3205 "parse.y"
12231 clear_block_exit(p,
true);
12232 (yyval.node) = (yyvsp[0].node);
12234#line 12235 "parse.c"
12238#line 3210 "parse.y"
12240 (yyval.node) = (yyvsp[0].node);
12243#line 12244 "parse.c"
12247#line 3216 "parse.y"
12248 {(yyval.node_exits) = init_block_exit(p);}
12249#line 12250 "parse.c"
12253#line 3219 "parse.y"
12255 restore_block_exit(p, (yyvsp[-2].node_exits));
12256 p->eval_tree_begin = block_append(p, p->eval_tree_begin,
12257 NEW_BEGIN((yyvsp[-1].node), &(yyloc)));
12258 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12261#line 12262 "parse.c"
12265#line 2976 "parse.y"
12267 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
12269#line 12270 "parse.c"
12273#line 3232 "parse.y"
12275 if (!(yyvsp[-1].node)) yyerror1(&(yylsp[0]),
"else without rescue is useless");
12276 next_rescue_context(&p->ctxt, &(yyvsp[-2].ctxt), after_else);
12278#line 12279 "parse.c"
12282#line 3237 "parse.y"
12284 next_rescue_context(&p->ctxt, &(yyvsp[-4].ctxt), after_ensure);
12286#line 12287 "parse.c"
12290#line 3241 "parse.y"
12292 (yyval.node) = new_bodystmt(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12295#line 12296 "parse.c"
12299#line 3248 "parse.y"
12301 next_rescue_context(&p->ctxt, &(yyvsp[-1].ctxt), after_ensure);
12303#line 12304 "parse.c"
12307#line 3252 "parse.y"
12309 (yyval.node) = new_bodystmt(p, (yyvsp[-4].node), (yyvsp[-2].node), 0, (yyvsp[0].node), &(yyloc));
12312#line 12313 "parse.c"
12316#line 3259 "parse.y"
12318 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12321#line 12322 "parse.c"
12325#line 3264 "parse.y"
12327 (yyval.node) = newline_node((yyvsp[0].node));
12330#line 12331 "parse.c"
12334#line 3269 "parse.y"
12336 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12339#line 12340 "parse.c"
12343#line 3277 "parse.y"
12345 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
12347#line 12348 "parse.c"
12351#line 3281 "parse.y"
12353 (yyval.node) = (yyvsp[0].node);
12355#line 12356 "parse.c"
12359#line 3286 "parse.y"
12360 {(yyval.node_exits) = allow_block_exit(p);}
12361#line 12362 "parse.c"
12365#line 3289 "parse.y"
12367 (yyval.ctxt) = (yyvsp[0].ctxt);
12368 p->ctxt.in_rescue = before_rescue;
12371#line 12372 "parse.c"
12375#line 3295 "parse.y"
12376 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
12377#line 12378 "parse.c"
12381#line 3296 "parse.y"
12383 (yyval.node) = NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
12386#line 12387 "parse.c"
12390#line 3301 "parse.y"
12392 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].id), &(yyloc), &(yylsp[-2]));
12395#line 12396 "parse.c"
12399#line 3306 "parse.y"
12403 buf[1] = (char)RNODE_BACK_REF((yyvsp[0].node))->nd_nth;
12404 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), rb_intern2(buf, 2), &(yyloc), &(yylsp[-2]));
12407#line 12408 "parse.c"
12411#line 3314 "parse.y"
12413 static const char mesg[] =
"can't make alias for the number variables";
12415 yyerror1(&(yylsp[0]), mesg);
12417 (yyval.node) = NEW_ERROR(&(yyloc));
12420#line 12421 "parse.c"
12424#line 3323 "parse.y"
12426 nd_set_first_loc((yyvsp[0].node), (yylsp[-1]).beg_pos);
12427 RNODE_UNDEF((yyvsp[0].node))->keyword_loc = (yylsp[-1]);
12428 (yyval.node) = (yyvsp[0].node);
12431#line 12432 "parse.c"
12435#line 3330 "parse.y"
12437 (yyval.node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12438 fixpos((yyval.node), (yyvsp[0].node));
12441#line 12442 "parse.c"
12445#line 3336 "parse.y"
12447 (yyval.node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12448 fixpos((yyval.node), (yyvsp[0].node));
12451#line 12452 "parse.c"
12455#line 3342 "parse.y"
12457 clear_block_exit(p,
false);
12458 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12459 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12462 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12466#line 12467 "parse.c"
12470#line 3353 "parse.y"
12472 clear_block_exit(p,
false);
12473 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12474 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12477 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12481#line 12482 "parse.c"
12485#line 3364 "parse.y"
12487 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12489 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12490 resq = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12491 (yyval.node) = NEW_RESCUE(remove_begin((yyvsp[-3].node)), resq, 0, &(yyloc));
12494#line 12495 "parse.c"
12498#line 3373 "parse.y"
12500 if (p->ctxt.in_def) {
12501 rb_warn0(
"END in method; use at_exit");
12503 restore_block_exit(p, (yyvsp[-3].node_exits));
12504 p->ctxt = (yyvsp[-4].ctxt);
12506 NODE *scope = NEW_SCOPE2(0 , 0 , (yyvsp[-1].node) , NULL , &(yyloc));
12507 (yyval.node) = NEW_POSTEXE(scope, &(yyloc), &(yylsp[-4]), &(yylsp[-2]), &(yylsp[0]));
12508 RNODE_SCOPE(scope)->nd_parent = (yyval.node);
12512#line 12513 "parse.c"
12516#line 3388 "parse.y"
12518 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12521#line 12522 "parse.c"
12525#line 2920 "parse.y"
12527 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12530#line 12531 "parse.c"
12534#line 3395 "parse.y"
12536 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12537 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12538 (yyvsp[0].node) = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12539 loc.beg_pos = (yylsp[-3]).beg_pos;
12540 (yyvsp[-3].node) = NEW_RESCUE((yyvsp[-3].node), (yyvsp[0].node), 0, &loc);
12541 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-6].node_masgn), (yyvsp[-3].node), (yyvsp[-4].ctxt), &(yyloc));
12544#line 12545 "parse.c"
12548#line 3405 "parse.y"
12550 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12553#line 12554 "parse.c"
12557#line 3411 "parse.y"
12560 (yyval.node) = NEW_ERROR(&(yyloc));
12562#line 12563 "parse.c"
12566#line 2920 "parse.y"
12568 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12571#line 12572 "parse.c"
12575#line 3046 "parse.y"
12577 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12580#line 12581 "parse.c"
12584#line 3051 "parse.y"
12586 (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]));
12589#line 12590 "parse.c"
12593#line 3056 "parse.y"
12595 (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]));
12598#line 12599 "parse.c"
12602#line 3061 "parse.y"
12604 (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]));
12607#line 12608 "parse.c"
12611#line 3066 "parse.y"
12613 (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]));
12616#line 12617 "parse.c"
12620#line 3071 "parse.y"
12622 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
12623 (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));
12626#line 12627 "parse.c"
12630#line 3077 "parse.y"
12632 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
12633 (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));
12636#line 12637 "parse.c"
12640#line 3083 "parse.y"
12642 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
12643 (yyval.node) = NEW_ERROR(&(yyloc));
12646#line 12647 "parse.c"
12650#line 2951 "parse.y"
12652 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12653 restore_defun(p, (yyvsp[-3].node_def_temp));
12654 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12655 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
12656 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
12661#line 12662 "parse.c"
12665#line 2962 "parse.y"
12667 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12668 restore_defun(p, (yyvsp[-3].node_def_temp));
12669 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12670 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
12671 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
12676#line 12677 "parse.c"
12680#line 3424 "parse.y"
12682 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12683 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12686#line 12687 "parse.c"
12690#line 3430 "parse.y"
12692 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12695#line 12696 "parse.c"
12699#line 3438 "parse.y"
12701 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12702 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12703 (yyval.node) = NEW_RESCUE((yyvsp[-3].node), NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc));
12706#line 12707 "parse.c"
12710#line 3449 "parse.y"
12712 (yyval.node) = logop(p, idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12715#line 12716 "parse.c"
12719#line 3454 "parse.y"
12721 (yyval.node) = logop(p, idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12724#line 12725 "parse.c"
12728#line 3459 "parse.y"
12730 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12733#line 12734 "parse.c"
12737#line 3464 "parse.y"
12739 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
12742#line 12743 "parse.c"
12746#line 3469 "parse.y"
12748 value_expr(p, (yyvsp[-1].node));
12750#line 12751 "parse.c"
12754#line 3474 "parse.y"
12756 pop_pktbl(p, (yyvsp[-1].tbl));
12757 pop_pvtbl(p, (yyvsp[-2].tbl));
12758 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12759 p->ctxt.in_alt_pattern = (yyvsp[-3].ctxt).in_alt_pattern;
12760 p->ctxt.capture_in_pattern = (yyvsp[-3].ctxt).capture_in_pattern;
12761 (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);
12764#line 12765 "parse.c"
12768#line 3484 "parse.y"
12770 value_expr(p, (yyvsp[-1].node));
12772#line 12773 "parse.c"
12776#line 3489 "parse.y"
12778 pop_pktbl(p, (yyvsp[-1].tbl));
12779 pop_pvtbl(p, (yyvsp[-2].tbl));
12780 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12781 p->ctxt.in_alt_pattern = (yyvsp[-3].ctxt).in_alt_pattern;
12782 p->ctxt.capture_in_pattern = (yyvsp[-3].ctxt).capture_in_pattern;
12783 (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);
12786#line 12787 "parse.c"
12790#line 3502 "parse.y"
12792 numparam_name(p, (yyvsp[0].
id));
12794 p->ctxt.in_def = 1;
12795 p->ctxt.in_rescue = before_rescue;
12796 p->ctxt.cant_return = 0;
12797 (yyval.id) = (yyvsp[0].
id);
12799#line 12800 "parse.c"
12803#line 3513 "parse.y"
12805 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-1].node_def_temp));
12806 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12807 (yyval.node_def_temp)->nd_def = NEW_DEFN((yyvsp[0].
id), 0, &(yyloc));
12810#line 12811 "parse.c"
12814#line 3522 "parse.y"
12816 SET_LEX_STATE(EXPR_FNAME);
12818#line 12819 "parse.c"
12822#line 3526 "parse.y"
12824 SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL);
12825 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-4].node_def_temp));
12826 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12827 (yyval.node_def_temp)->nd_def = NEW_DEFS((yyvsp[-3].node), (yyvsp[0].id), 0, &(yyloc));
12830#line 12831 "parse.c"
12834#line 3146 "parse.y"
12836 value_expr(p, (yyvsp[0].node));
12837 (yyval.node) = (yyvsp[0].node);
12839#line 12840 "parse.c"
12843#line 3537 "parse.y"
12845 (yyval.node) = NEW_ERROR(&(yyloc));
12847#line 12848 "parse.c"
12851#line 3542 "parse.y"
12853#line 12854 "parse.c"
12857#line 3542 "parse.y"
12859#line 12860 "parse.c"
12863#line 3543 "parse.y"
12865 (yyval.node) = (yyvsp[-2].node);
12868#line 12869 "parse.c"
12872#line 3146 "parse.y"
12874 value_expr(p, (yyvsp[0].node));
12875 (yyval.node) = (yyvsp[0].node);
12877#line 12878 "parse.c"
12881#line 3558 "parse.y"
12883 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12886#line 12887 "parse.c"
12890#line 3565 "parse.y"
12892 (yyval.node) = (yyvsp[-1].node);
12893 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
12896#line 12897 "parse.c"
12900#line 3573 "parse.y"
12902 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
12905#line 12906 "parse.c"
12909#line 3573 "parse.y"
12911 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
12914#line 12915 "parse.c"
12918#line 3573 "parse.y"
12920 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
12923#line 12924 "parse.c"
12927#line 3580 "parse.y"
12929 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
12930 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
12931 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
12934#line 12935 "parse.c"
12938#line 3587 "parse.y"
12940 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
12941 (yyvsp[-2].node_fcall)->nd_args = (yyvsp[-1].node);
12942 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-2].node_fcall), (yyvsp[0].node), &(yyloc));
12943 fixpos((yyval.node), RNODE((yyvsp[-2].node_fcall)));
12944 nd_set_last_loc((yyvsp[-2].node_fcall), (yylsp[-1]).end_pos);
12947#line 12948 "parse.c"
12951#line 3596 "parse.y"
12953 (yyval.node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
12956#line 12957 "parse.c"
12960#line 3601 "parse.y"
12962 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
12965#line 12966 "parse.c"
12969#line 3606 "parse.y"
12971 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
12974#line 12975 "parse.c"
12978#line 3611 "parse.y"
12980 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-4].node), (yyvsp[-2].id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
12983#line 12984 "parse.c"
12987#line 3616 "parse.y"
12989 set_embraced_location((yyvsp[-1].node), &(yylsp[-2]), &(yylsp[0]));
12990 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-5].node), (yyvsp[-3].id), 0, (yyvsp[-1].node), &(yylsp[-3]), &(yyloc));
12993#line 12994 "parse.c"
12997#line 3622 "parse.y"
12999 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
13000 fixpos((yyval.node), (yyvsp[0].node));
13003#line 13004 "parse.c"
13007#line 3628 "parse.y"
13009 (yyval.node) = NEW_YIELD((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
13010 fixpos((yyval.node), (yyvsp[0].node));
13013#line 13014 "parse.c"
13017#line 3634 "parse.y"
13019 (yyval.node) = NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc), &(yylsp[-1]));
13022#line 13023 "parse.c"
13026#line 3639 "parse.y"
13029 args = ret_args(p, (yyvsp[0].node));
13030 (yyval.node) = add_block_exit(p, NEW_BREAK(args, &(yyloc), &(yylsp[-1])));
13033#line 13034 "parse.c"
13037#line 3646 "parse.y"
13040 args = ret_args(p, (yyvsp[0].node));
13041 (yyval.node) = add_block_exit(p, NEW_NEXT(args, &(yyloc), &(yylsp[-1])));
13044#line 13045 "parse.c"
13048#line 3656 "parse.y"
13050 (yyval.node_masgn) = (yyvsp[-1].node_masgn);
13053#line 13054 "parse.c"
13057#line 3664 "parse.y"
13059 (yyval.node_masgn) = NEW_MASGN(NEW_LIST((
NODE *)(yyvsp[-1].node_masgn), &(yyloc)), 0, &(yyloc));
13062#line 13063 "parse.c"
13066#line 3671 "parse.y"
13068 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
13071#line 13072 "parse.c"
13075#line 3676 "parse.y"
13077 (yyval.node_masgn) = NEW_MASGN(list_append(p, (yyvsp[-1].node), (yyvsp[0].node)), 0, &(yyloc));
13080#line 13081 "parse.c"
13084#line 3681 "parse.y"
13086 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
13089#line 13090 "parse.c"
13093#line 3033 "parse.y"
13095 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
13098#line 13099 "parse.c"
13102#line 3038 "parse.y"
13104 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
13107#line 13108 "parse.c"
13111#line 3686 "parse.y"
13113 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
13116#line 13117 "parse.c"
13120#line 3691 "parse.y"
13122 (yyval.node_masgn) = NEW_MASGN((yyvsp[-1].node), NODE_SPECIAL_NO_NAME_REST, &(yyloc));
13125#line 13126 "parse.c"
13129#line 3696 "parse.y"
13131 (yyval.node_masgn) = NEW_MASGN((yyvsp[-3].node), NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
13134#line 13135 "parse.c"
13138#line 3701 "parse.y"
13140 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
13143#line 13144 "parse.c"
13147#line 3706 "parse.y"
13149 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
13152#line 13153 "parse.c"
13156#line 3711 "parse.y"
13158 (yyval.node_masgn) = NEW_MASGN(0, NODE_SPECIAL_NO_NAME_REST, &(yyloc));
13161#line 13162 "parse.c"
13165#line 3716 "parse.y"
13167 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
13170#line 13171 "parse.c"
13174#line 3724 "parse.y"
13176 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
13179#line 13180 "parse.c"
13183#line 3731 "parse.y"
13185 (yyval.node) = NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
13188#line 13189 "parse.c"
13192#line 3736 "parse.y"
13194 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
13197#line 13198 "parse.c"
13201#line 3744 "parse.y"
13204 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13206#line 13207 "parse.c"
13210#line 3744 "parse.y"
13213 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13215#line 13216 "parse.c"
13219#line 3749 "parse.y"
13221 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13224#line 13225 "parse.c"
13228#line 3754 "parse.y"
13230 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13231 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13234#line 13235 "parse.c"
13238#line 3754 "parse.y"
13240 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13241 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13244#line 13245 "parse.c"
13248#line 3760 "parse.y"
13250 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
13253#line 13254 "parse.c"
13257#line 3765 "parse.y"
13260 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13262#line 13263 "parse.c"
13266#line 3770 "parse.y"
13269 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13271#line 13272 "parse.c"
13275#line 3775 "parse.y"
13277 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13278 (yyval.node) = NEW_ERROR(&(yyloc));
13281#line 13282 "parse.c"
13285#line 3783 "parse.y"
13288 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13290#line 13291 "parse.c"
13294#line 3783 "parse.y"
13297 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13299#line 13300 "parse.c"
13303#line 3788 "parse.y"
13305 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13308#line 13309 "parse.c"
13312#line 3793 "parse.y"
13314 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13317#line 13318 "parse.c"
13321#line 3793 "parse.y"
13323 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13326#line 13327 "parse.c"
13330#line 3798 "parse.y"
13332 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
13335#line 13336 "parse.c"
13339#line 3803 "parse.y"
13342 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13344#line 13345 "parse.c"
13348#line 3808 "parse.y"
13351 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13353#line 13354 "parse.c"
13357#line 3813 "parse.y"
13359 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13360 (yyval.node) = NEW_ERROR(&(yyloc));
13363#line 13364 "parse.c"
13367#line 3821 "parse.y"
13369 static const char mesg[] =
"class/module name must be CONSTANT";
13371 yyerror1(&(yylsp[0]), mesg);
13375#line 13376 "parse.c"
13379#line 3832 "parse.y"
13381 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
13384#line 13385 "parse.c"
13388#line 3837 "parse.y"
13390 (yyval.node) = NEW_COLON2(0, (yyvsp[0].
id), &(yyloc), &NULL_LOC, &(yylsp[0]));
13393#line 13394 "parse.c"
13397#line 3842 "parse.y"
13399 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
13402#line 13403 "parse.c"
13406#line 3850 "parse.y"
13408 SET_LEX_STATE(EXPR_ENDFN);
13409 (yyval.id) = (yyvsp[0].
id);
13411#line 13412 "parse.c"
13415#line 3858 "parse.y"
13417 (yyval.node) = NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc));
13420#line 13421 "parse.c"
13424#line 3866 "parse.y"
13426 (yyval.node) = NEW_UNDEF((yyvsp[0].node), &(yyloc));
13429#line 13430 "parse.c"
13433#line 3870 "parse.y"
13434 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
13435#line 13436 "parse.c"
13439#line 3871 "parse.y"
13441 nd_set_last_loc((yyvsp[-3].node), (yylsp[0]).end_pos);
13442 rb_parser_ary_push_node(p, RNODE_UNDEF((yyvsp[-3].node))->nd_undefs, (yyvsp[0].node));
13445#line 13446 "parse.c"
13449#line 3878 "parse.y"
13450 { (yyval.id) =
'|'; }
13451#line 13452 "parse.c"
13455#line 3879 "parse.y"
13456 { (yyval.id) =
'^'; }
13457#line 13458 "parse.c"
13461#line 3880 "parse.y"
13462 { (yyval.id) =
'&'; }
13463#line 13464 "parse.c"
13467#line 3881 "parse.y"
13468 { (yyval.id) = tCMP; }
13469#line 13470 "parse.c"
13473#line 3882 "parse.y"
13474 { (yyval.id) = tEQ; }
13475#line 13476 "parse.c"
13479#line 3883 "parse.y"
13480 { (yyval.id) = tEQQ; }
13481#line 13482 "parse.c"
13485#line 3884 "parse.y"
13486 { (yyval.id) = tMATCH; }
13487#line 13488 "parse.c"
13491#line 3885 "parse.y"
13492 { (yyval.id) = tNMATCH; }
13493#line 13494 "parse.c"
13497#line 3886 "parse.y"
13498 { (yyval.id) =
'>'; }
13499#line 13500 "parse.c"
13503#line 3887 "parse.y"
13504 { (yyval.id) = tGEQ; }
13505#line 13506 "parse.c"
13509#line 3888 "parse.y"
13510 { (yyval.id) =
'<'; }
13511#line 13512 "parse.c"
13515#line 3889 "parse.y"
13516 { (yyval.id) = tLEQ; }
13517#line 13518 "parse.c"
13521#line 3890 "parse.y"
13522 { (yyval.id) = tNEQ; }
13523#line 13524 "parse.c"
13527#line 3891 "parse.y"
13528 { (yyval.id) = tLSHFT; }
13529#line 13530 "parse.c"
13533#line 3892 "parse.y"
13534 { (yyval.id) = tRSHFT; }
13535#line 13536 "parse.c"
13539#line 3893 "parse.y"
13540 { (yyval.id) =
'+'; }
13541#line 13542 "parse.c"
13545#line 3894 "parse.y"
13546 { (yyval.id) =
'-'; }
13547#line 13548 "parse.c"
13551#line 3895 "parse.y"
13552 { (yyval.id) =
'*'; }
13553#line 13554 "parse.c"
13557#line 3896 "parse.y"
13558 { (yyval.id) =
'*'; }
13559#line 13560 "parse.c"
13563#line 3897 "parse.y"
13564 { (yyval.id) =
'/'; }
13565#line 13566 "parse.c"
13569#line 3898 "parse.y"
13570 { (yyval.id) =
'%'; }
13571#line 13572 "parse.c"
13575#line 3899 "parse.y"
13576 { (yyval.id) = tPOW; }
13577#line 13578 "parse.c"
13581#line 3900 "parse.y"
13582 { (yyval.id) = tDSTAR; }
13583#line 13584 "parse.c"
13587#line 3901 "parse.y"
13588 { (yyval.id) =
'!'; }
13589#line 13590 "parse.c"
13593#line 3902 "parse.y"
13594 { (yyval.id) =
'~'; }
13595#line 13596 "parse.c"
13599#line 3903 "parse.y"
13600 { (yyval.id) = tUPLUS; }
13601#line 13602 "parse.c"
13605#line 3904 "parse.y"
13606 { (yyval.id) = tUMINUS; }
13607#line 13608 "parse.c"
13611#line 3905 "parse.y"
13612 { (yyval.id) = tAREF; }
13613#line 13614 "parse.c"
13617#line 3906 "parse.y"
13618 { (yyval.id) = tASET; }
13619#line 13620 "parse.c"
13623#line 3907 "parse.y"
13624 { (yyval.id) =
'`'; }
13625#line 13626 "parse.c"
13629#line 2920 "parse.y"
13631 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13634#line 13635 "parse.c"
13638#line 3046 "parse.y"
13640 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13643#line 13644 "parse.c"
13647#line 3051 "parse.y"
13649 (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]));
13652#line 13653 "parse.c"
13656#line 3056 "parse.y"
13658 (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]));
13661#line 13662 "parse.c"
13665#line 3061 "parse.y"
13667 (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]));
13670#line 13671 "parse.c"
13674#line 3066 "parse.y"
13676 (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]));
13679#line 13680 "parse.c"
13683#line 3071 "parse.y"
13685 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
13686 (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));
13689#line 13690 "parse.c"
13693#line 3077 "parse.y"
13695 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
13696 (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));
13699#line 13700 "parse.c"
13703#line 3083 "parse.y"
13705 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
13706 (yyval.node) = NEW_ERROR(&(yyloc));
13709#line 13710 "parse.c"
13713#line 3105 "parse.y"
13715 value_expr(p, (yyvsp[-2].node));
13716 value_expr(p, (yyvsp[0].node));
13717 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13720#line 13721 "parse.c"
13724#line 3112 "parse.y"
13726 value_expr(p, (yyvsp[-2].node));
13727 value_expr(p, (yyvsp[0].node));
13728 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13731#line 13732 "parse.c"
13735#line 3119 "parse.y"
13737 value_expr(p, (yyvsp[-1].node));
13738 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13741#line 13742 "parse.c"
13745#line 3125 "parse.y"
13747 value_expr(p, (yyvsp[-1].node));
13748 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13751#line 13752 "parse.c"
13755#line 3131 "parse.y"
13757 value_expr(p, (yyvsp[0].node));
13758 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13761#line 13762 "parse.c"
13765#line 3137 "parse.y"
13767 value_expr(p, (yyvsp[0].node));
13768 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13771#line 13772 "parse.c"
13775#line 3928 "parse.y"
13777 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13780#line 13781 "parse.c"
13784#line 3933 "parse.y"
13786 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13789#line 13790 "parse.c"
13793#line 3938 "parse.y"
13795 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13798#line 13799 "parse.c"
13802#line 3943 "parse.y"
13804 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13807#line 13808 "parse.c"
13811#line 3948 "parse.y"
13813 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13816#line 13817 "parse.c"
13820#line 3953 "parse.y"
13822 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13825#line 13826 "parse.c"
13829#line 3958 "parse.y"
13831 (yyval.node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)), idUMinus, &(yylsp[-3]), &(yyloc));
13834#line 13835 "parse.c"
13838#line 3963 "parse.y"
13840 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUPlus, &(yylsp[-1]), &(yyloc));
13843#line 13844 "parse.c"
13847#line 3968 "parse.y"
13849 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUMinus, &(yylsp[-1]), &(yyloc));
13852#line 13853 "parse.c"
13856#line 3973 "parse.y"
13858 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13861#line 13862 "parse.c"
13865#line 3978 "parse.y"
13867 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13870#line 13871 "parse.c"
13874#line 3983 "parse.y"
13876 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13879#line 13880 "parse.c"
13883#line 3988 "parse.y"
13885 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13888#line 13889 "parse.c"
13892#line 3994 "parse.y"
13894 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13897#line 13898 "parse.c"
13901#line 3999 "parse.y"
13903 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13906#line 13907 "parse.c"
13910#line 4004 "parse.y"
13912 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13915#line 13916 "parse.c"
13919#line 4009 "parse.y"
13921 (yyval.node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13924#line 13925 "parse.c"
13928#line 4014 "parse.y"
13930 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13933#line 13934 "parse.c"
13937#line 4019 "parse.y"
13939 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
13942#line 13943 "parse.c"
13946#line 4024 "parse.y"
13948 (yyval.node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
13951#line 13952 "parse.c"
13955#line 4029 "parse.y"
13957 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13960#line 13961 "parse.c"
13964#line 4034 "parse.y"
13966 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13969#line 13970 "parse.c"
13973#line 4039 "parse.y"
13975 (yyval.node) = logop(p, idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13978#line 13979 "parse.c"
13982#line 4044 "parse.y"
13984 (yyval.node) = logop(p, idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13987#line 13988 "parse.c"
13991#line 4049 "parse.y"
13993 p->ctxt.in_defined = (yyvsp[-1].ctxt).in_defined;
13994 (yyval.node) = new_defined(p, (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
13995 p->ctxt.has_trailing_semicolon = (yyvsp[-1].ctxt).has_trailing_semicolon;
13998#line 13999 "parse.c"
14002#line 2951 "parse.y"
14004 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
14005 restore_defun(p, (yyvsp[-3].node_def_temp));
14006 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
14007 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
14008 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
14013#line 14014 "parse.c"
14017#line 2962 "parse.y"
14019 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
14020 restore_defun(p, (yyvsp[-3].node_def_temp));
14021 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
14022 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
14023 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
14028#line 14029 "parse.c"
14032#line 4061 "parse.y"
14034 value_expr(p, (yyvsp[-5].node));
14035 (yyval.node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc), &NULL_LOC, &(yylsp[-1]), &NULL_LOC);
14036 fixpos((yyval.node), (yyvsp[-5].node));
14039#line 14040 "parse.c"
14043#line 4071 "parse.y"
14045 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
14046 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14049#line 14050 "parse.c"
14053#line 4077 "parse.y"
14055 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
14058#line 14059 "parse.c"
14062#line 4083 "parse.y"
14063 {(yyval.id) =
'>';}
14064#line 14065 "parse.c"
14068#line 4084 "parse.y"
14069 {(yyval.id) =
'<';}
14070#line 14071 "parse.c"
14074#line 4085 "parse.y"
14075 {(yyval.id) = idGE;}
14076#line 14077 "parse.c"
14080#line 4086 "parse.y"
14081 {(yyval.id) = idLE;}
14082#line 14083 "parse.c"
14086#line 4090 "parse.y"
14088 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14091#line 14092 "parse.c"
14095#line 4095 "parse.y"
14097 rb_warning1(
"comparison '%s' after comparison", WARN_ID((yyvsp[-1].
id)));
14098 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14101#line 14102 "parse.c"
14105#line 4103 "parse.y"
14107 (yyval.ctxt) = p->ctxt;
14109#line 14110 "parse.c"
14113#line 4109 "parse.y"
14115 p->ctxt.in_defined = 1;
14116 (yyval.ctxt) = (yyvsp[0].ctxt);
14118#line 14119 "parse.c"
14122#line 4116 "parse.y"
14124 p->ctxt.in_rescue = after_rescue;
14125 (yyval.ctxt) = (yyvsp[0].ctxt);
14127#line 14128 "parse.c"
14131#line 3146 "parse.y"
14133 value_expr(p, (yyvsp[0].node));
14134 (yyval.node) = (yyvsp[0].node);
14136#line 14137 "parse.c"
14140#line 4128 "parse.y"
14142 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14145#line 14146 "parse.c"
14149#line 4133 "parse.y"
14151 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
14154#line 14155 "parse.c"
14158#line 4140 "parse.y"
14160 value_expr(p, (yyvsp[0].node));
14161 (yyval.node) = (yyvsp[0].node);
14163#line 14164 "parse.c"
14167#line 4145 "parse.y"
14169 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
14170 value_expr(p, (yyvsp[-3].node));
14171 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14174#line 14175 "parse.c"
14178#line 4154 "parse.y"
14180 (yyval.node) = (yyvsp[-1].node);
14183#line 14184 "parse.c"
14187#line 4159 "parse.y"
14189 if (!check_forwarding_args(p)) {
14193 (yyval.node) = new_args_forward_call(p, (yyvsp[-3].node), &(yylsp[-1]), &(yyloc));
14197#line 14198 "parse.c"
14201#line 4169 "parse.y"
14203 if (!check_forwarding_args(p)) {
14207 (yyval.node) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
14211#line 14212 "parse.c"
14215#line 4182 "parse.y"
14217 (yyval.node) = (yyvsp[0].node) ? (yyvsp[0].node) : NODE_SPECIAL_EMPTY_ARGS;
14219#line 14220 "parse.c"
14223#line 4191 "parse.y"
14225 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14228#line 14229 "parse.c"
14232#line 4196 "parse.y"
14234 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14237#line 14238 "parse.c"
14241#line 3146 "parse.y"
14243 value_expr(p, (yyvsp[0].node));
14244 (yyval.node) = (yyvsp[0].node);
14246#line 14247 "parse.c"
14250#line 4203 "parse.y"
14252 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14255#line 14256 "parse.c"
14259#line 4208 "parse.y"
14261 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14264#line 14265 "parse.c"
14268#line 4213 "parse.y"
14270 (yyval.node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node_block_pass));
14273#line 14274 "parse.c"
14277#line 4218 "parse.y"
14279 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14280 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14283#line 14284 "parse.c"
14287#line 4224 "parse.y"
14289 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14290 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14293#line 14294 "parse.c"
14297#line 4233 "parse.y"
14308 case '(':
case tLPAREN:
case tLPAREN_ARG:
case '[':
case tLBRACK:
14311 if (lookahead) CMDARG_POP();
14313 if (lookahead) CMDARG_PUSH(0);
14315#line 14316 "parse.c"
14319#line 4251 "parse.y"
14332 if (lookahead) CMDARG_POP();
14334 if (lookahead) CMDARG_PUSH(0);
14335 (yyval.node) = (yyvsp[0].node);
14338#line 14339 "parse.c"
14342#line 4272 "parse.y"
14344 (yyval.node_block_pass) = NEW_BLOCK_PASS((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14347#line 14348 "parse.c"
14351#line 4277 "parse.y"
14353 forwarding_arg_check(p, idFWD_BLOCK, idFWD_ALL,
"block");
14354 (yyval.node_block_pass) = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14357#line 14358 "parse.c"
14361#line 4285 "parse.y"
14363 (yyval.node_block_pass) = (yyvsp[0].node_block_pass);
14366#line 14367 "parse.c"
14370#line 4290 "parse.y"
14372 (yyval.node_block_pass) = 0;
14375#line 14376 "parse.c"
14379#line 4298 "parse.y"
14381 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14384#line 14385 "parse.c"
14388#line 4303 "parse.y"
14390 (yyval.node) = (yyvsp[0].node);
14393#line 14394 "parse.c"
14397#line 4308 "parse.y"
14399 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14402#line 14403 "parse.c"
14406#line 4313 "parse.y"
14408 (yyval.node) = rest_arg_append(p, (yyvsp[-2].node), RNODE_SPLAT((yyvsp[0].node))->nd_head, &(yyloc));
14411#line 14412 "parse.c"
14415#line 4321 "parse.y"
14417 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14420#line 14421 "parse.c"
14424#line 4326 "parse.y"
14426 forwarding_arg_check(p, idFWD_REST, idFWD_ALL,
"rest");
14427 (yyval.node) = NEW_SPLAT(NEW_LVAR(idFWD_REST, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14430#line 14431 "parse.c"
14434#line 4340 "parse.y"
14436 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14439#line 14440 "parse.c"
14443#line 4345 "parse.y"
14445 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
14448#line 14449 "parse.c"
14452#line 4350 "parse.y"
14454 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14457#line 14458 "parse.c"
14461#line 4371 "parse.y"
14463 (yyval.node) = (
NODE *)NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
14466#line 14467 "parse.c"
14470#line 4376 "parse.y"
14474#line 14475 "parse.c"
14478#line 4381 "parse.y"
14481 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14482 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
14483 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14486#line 14487 "parse.c"
14490#line 4388 "parse.y"
14491 {SET_LEX_STATE(EXPR_ENDARG);}
14492#line 14493 "parse.c"
14496#line 4389 "parse.y"
14498 if (nd_type_p((yyvsp[-2].node), NODE_SELF)) RNODE_SELF((yyvsp[-2].node))->nd_state = 0;
14499 (yyval.node) = (yyvsp[-2].node);
14502#line 14503 "parse.c"
14506#line 4395 "parse.y"
14508 if (nd_type_p((yyvsp[-1].node), NODE_SELF)) RNODE_SELF((yyvsp[-1].node))->nd_state = 0;
14509 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
14512#line 14513 "parse.c"
14516#line 4401 "parse.y"
14518 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
14521#line 14522 "parse.c"
14525#line 4406 "parse.y"
14527 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
14530#line 14531 "parse.c"
14534#line 4411 "parse.y"
14536 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14539#line 14540 "parse.c"
14543#line 4416 "parse.y"
14545 (yyval.node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
14546 RNODE_HASH((yyval.node))->nd_brace = TRUE;
14549#line 14550 "parse.c"
14553#line 4422 "parse.y"
14555 (yyval.node) = NEW_RETURN(0, &(yyloc), &(yylsp[0]));
14558#line 14559 "parse.c"
14562#line 4427 "parse.y"
14564 (yyval.node) = NEW_YIELD((yyvsp[-1].node), &(yyloc), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14567#line 14568 "parse.c"
14571#line 4432 "parse.y"
14573 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
14576#line 14577 "parse.c"
14580#line 4437 "parse.y"
14582 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[0]), &NULL_LOC, &NULL_LOC);
14585#line 14586 "parse.c"
14589#line 4442 "parse.y"
14591 p->ctxt.in_defined = (yyvsp[-2].ctxt).in_defined;
14592 (yyval.node) = new_defined(p, (yyvsp[-1].node), &(yyloc), &(yylsp[-5]));
14593 p->ctxt.has_trailing_semicolon = (yyvsp[-2].ctxt).has_trailing_semicolon;
14596#line 14597 "parse.c"
14600#line 4449 "parse.y"
14602 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])), METHOD_NOT, &(yylsp[-3]), &(yyloc));
14605#line 14606 "parse.c"
14609#line 4454 "parse.y"
14611 (yyval.node) = call_uni_op(p, method_cond(p, NEW_NIL(&(yylsp[-1])), &(yylsp[-1])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
14614#line 14615 "parse.c"
14618#line 4459 "parse.y"
14620 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-1].node_fcall), (yyvsp[0].node), &(yyloc));
14623#line 14624 "parse.c"
14627#line 4465 "parse.y"
14629 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
14630 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14633#line 14634 "parse.c"
14637#line 4475 "parse.y"
14639 if ((yyvsp[-1].node) && nd_type_p((yyvsp[-1].node), NODE_IF))
14640 RNODE_IF((yyvsp[-1].node))->end_keyword_loc = (yylsp[0]);
14642 (yyval.node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14643 fixpos((yyval.node), (yyvsp[-4].node));
14646#line 14647 "parse.c"
14650#line 4487 "parse.y"
14652 (yyval.node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14653 fixpos((yyval.node), (yyvsp[-4].node));
14656#line 14657 "parse.c"
14660#line 4495 "parse.y"
14662 restore_block_exit(p, (yyvsp[-3].node_exits));
14663 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14664 fixpos((yyval.node), (yyvsp[-2].node));
14667#line 14668 "parse.c"
14671#line 4504 "parse.y"
14673 restore_block_exit(p, (yyvsp[-3].node_exits));
14674 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14675 fixpos((yyval.node), (yyvsp[-2].node));
14678#line 14679 "parse.c"
14682#line 4511 "parse.y"
14684 (yyval.labels) = p->case_labels;
14685 p->case_labels = CHECK_LITERAL_WHEN;
14687#line 14688 "parse.c"
14691#line 4517 "parse.y"
14693 if (CASE_LABELS_ENABLED_P(p->case_labels)) st_free_table(p->case_labels);
14694 p->case_labels = (yyvsp[-2].labels);
14695 (yyval.node) = NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[0]));
14696 fixpos((yyval.node), (yyvsp[-4].node));
14699#line 14700 "parse.c"
14703#line 4525 "parse.y"
14705 (yyval.labels) = p->case_labels;
14706 p->case_labels = 0;
14708#line 14709 "parse.c"
14712#line 4531 "parse.y"
14714 if (p->case_labels) st_free_table(p->case_labels);
14715 p->case_labels = (yyvsp[-2].labels);
14716 (yyval.node) = NEW_CASE2((yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14719#line 14720 "parse.c"
14723#line 4540 "parse.y"
14725 (yyval.node) = NEW_CASE3((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14728#line 14729 "parse.c"
14732#line 4545 "parse.y"
14734#line 14735 "parse.c"
14738#line 4545 "parse.y"
14740#line 14741 "parse.c"
14744#line 4548 "parse.y"
14746 restore_block_exit(p, (yyvsp[-8].node_exits));
14756 ID id = internal_id(p);
14759 NODE *scope, *internal_var = NEW_DVAR(
id, &(yylsp[-7]));
14763 switch (nd_type((yyvsp[-7].node))) {
14766 set_nd_value(p, (yyvsp[-7].node), internal_var);
14769 m->nd_next = (yyvsp[-7].node);
14772 m->nd_next = node_assign(p, (yyvsp[-7].node), NEW_FOR_MASGN(internal_var, &(yylsp[-7])), NO_LEX_CTXT, &(yylsp[-7]));
14775 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]));
14778 args = new_args(p, m, 0,
id, 0, new_empty_args_tail(p, &(yylsp[-7])), &(yylsp[-7]));
14779 scope = NEW_SCOPE2(tbl, args, (yyvsp[-1].node), NULL, &(yyloc));
14780 YYLTYPE do_keyword_loc = (yyvsp[-3].id) == keyword_do_cond ? (yylsp[-3]) : NULL_LOC;
14781 (yyval.node) = NEW_FOR((yyvsp[-4].node), scope, &(yyloc), &(yylsp[-8]), &(yylsp[-6]), &do_keyword_loc, &(yylsp[0]));
14782 RNODE_SCOPE(scope)->nd_parent = (yyval.node);
14783 fixpos((yyval.node), (yyvsp[-7].node));
14786#line 14787 "parse.c"
14790#line 4590 "parse.y"
14792 begin_definition(
"class", &(yylsp[-2]), &(yylsp[-1]));
14794#line 14795 "parse.c"
14798#line 4595 "parse.y"
14800 YYLTYPE inheritance_operator_loc = NULL_LOC;
14801 if ((yyvsp[-3].node)) {
14802 inheritance_operator_loc = (yylsp[-3]);
14803 inheritance_operator_loc.end_pos.column = inheritance_operator_loc.beg_pos.column + 1;
14805 (yyval.node) = NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc), &(yylsp[-5]), &inheritance_operator_loc, &(yylsp[0]));
14806 nd_set_line(RNODE_CLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14807 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14808 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14811 p->ctxt.in_class = (yyvsp[-5].ctxt).in_class;
14812 p->ctxt.cant_return = (yyvsp[-5].ctxt).cant_return;
14813 p->ctxt.shareable_constant_value = (yyvsp[-5].ctxt).shareable_constant_value;
14815#line 14816 "parse.c"
14819#line 4612 "parse.y"
14821 begin_definition(
"", &(yylsp[-2]), &(yylsp[-1]));
14823#line 14824 "parse.c"
14827#line 4618 "parse.y"
14829 (yyval.node) = NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-6]), &(yylsp[-5]), &(yylsp[0]));
14830 nd_set_line(RNODE_SCLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14831 set_line_body((yyvsp[-1].node), nd_line((yyvsp[-4].node)));
14832 fixpos((yyval.node), (yyvsp[-4].node));
14835 p->ctxt.in_def = (yyvsp[-6].ctxt).in_def;
14836 p->ctxt.in_class = (yyvsp[-6].ctxt).in_class;
14837 p->ctxt.cant_return = (yyvsp[-6].ctxt).cant_return;
14838 p->ctxt.shareable_constant_value = (yyvsp[-6].ctxt).shareable_constant_value;
14840#line 14841 "parse.c"
14844#line 4631 "parse.y"
14846 begin_definition(
"module", &(yylsp[-1]), &(yylsp[0]));
14848#line 14849 "parse.c"
14852#line 4636 "parse.y"
14854 (yyval.node) = NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14855 nd_set_line(RNODE_MODULE((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14856 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14857 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14860 p->ctxt.in_class = (yyvsp[-4].ctxt).in_class;
14861 p->ctxt.cant_return = (yyvsp[-4].ctxt).cant_return;
14862 p->ctxt.shareable_constant_value = (yyvsp[-4].ctxt).shareable_constant_value;
14864#line 14865 "parse.c"
14868#line 4649 "parse.y"
14870 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14872#line 14873 "parse.c"
14876#line 4654 "parse.y"
14878 restore_defun(p, (yyvsp[-4].node_def_temp));
14879 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
14880 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), (yyval.node), &(yyloc));
14881 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[-1].node);
14885#line 14886 "parse.c"
14889#line 4664 "parse.y"
14891 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14893#line 14894 "parse.c"
14897#line 4669 "parse.y"
14899 restore_defun(p, (yyvsp[-4].node_def_temp));
14900 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
14901 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), (yyval.node), &(yyloc));
14902 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[-1].node);
14906#line 14907 "parse.c"
14910#line 4678 "parse.y"
14912 (yyval.node) = add_block_exit(p, NEW_BREAK(0, &(yyloc), &(yylsp[0])));
14915#line 14916 "parse.c"
14919#line 4683 "parse.y"
14921 (yyval.node) = add_block_exit(p, NEW_NEXT(0, &(yyloc), &(yylsp[0])));
14924#line 14925 "parse.c"
14928#line 4688 "parse.y"
14930 (yyval.node) = add_block_exit(p, NEW_REDO(&(yyloc), &(yylsp[0])));
14933#line 14934 "parse.c"
14937#line 4693 "parse.y"
14939 if (!p->ctxt.in_defined) {
14940 switch (p->ctxt.in_rescue) {
14941 case before_rescue: yyerror1(&(yylsp[0]),
"Invalid retry without rescue");
break;
14942 case after_rescue:
break;
14943 case after_else: yyerror1(&(yylsp[0]),
"Invalid retry after else");
break;
14944 case after_ensure: yyerror1(&(yylsp[0]),
"Invalid retry after ensure");
break;
14947 (yyval.node) = NEW_RETRY(&(yyloc));
14950#line 14951 "parse.c"
14954#line 3146 "parse.y"
14956 value_expr(p, (yyvsp[0].node));
14957 (yyval.node) = (yyvsp[0].node);
14959#line 14960 "parse.c"
14963#line 4711 "parse.y"
14965 token_info_push(p,
"begin", &(yyloc));
14966 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14968#line 14969 "parse.c"
14972#line 4718 "parse.y"
14975 token_info_push(p,
"if", &(yyloc));
14976 if (p->token_info && p->token_info->nonspc &&
14977 p->token_info->next && !strcmp(p->token_info->next->token,
"else")) {
14979 const char *beg = p->lex.pbeg + p->token_info->next->beg.column;
14981 while (beg < tok &&
ISSPACE(*beg)) beg++;
14983 p->token_info->nonspc = 0;
14986 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14988#line 14989 "parse.c"
14992#line 4736 "parse.y"
14994 token_info_push(p,
"unless", &(yyloc));
14995 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14997#line 14998 "parse.c"
15001#line 4743 "parse.y"
15003 (yyval.node_exits) = (yyvsp[0].node_exits);
15004 token_info_push(p,
"while", &(yyloc));
15005 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15007#line 15008 "parse.c"
15011#line 4751 "parse.y"
15013 (yyval.node_exits) = (yyvsp[0].node_exits);
15014 token_info_push(p,
"until", &(yyloc));
15015 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15017#line 15018 "parse.c"
15021#line 4759 "parse.y"
15023 token_info_push(p,
"case", &(yyloc));
15024 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15026#line 15027 "parse.c"
15030#line 4766 "parse.y"
15032 (yyval.node_exits) = (yyvsp[0].node_exits);
15033 token_info_push(p,
"for", &(yyloc));
15034 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15036#line 15037 "parse.c"
15040#line 4774 "parse.y"
15042 token_info_push(p,
"class", &(yyloc));
15043 (yyval.ctxt) = p->ctxt;
15044 p->ctxt.in_rescue = before_rescue;
15045 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15047#line 15048 "parse.c"
15051#line 4783 "parse.y"
15053 token_info_push(p,
"module", &(yyloc));
15054 (yyval.ctxt) = p->ctxt;
15055 p->ctxt.in_rescue = before_rescue;
15056 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15058#line 15059 "parse.c"
15062#line 4792 "parse.y"
15064 token_info_push(p,
"def", &(yyloc));
15065 (yyval.node_def_temp) = NEW_DEF_TEMP(&(yyloc));
15066 p->ctxt.in_argdef = 1;
15068#line 15069 "parse.c"
15072#line 4800 "parse.y"
15074 token_info_push(p,
"do", &(yyloc));
15075 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15077#line 15078 "parse.c"
15081#line 4807 "parse.y"
15083 token_info_push(p,
"do", &(yyloc));
15084 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15086#line 15087 "parse.c"
15090#line 4814 "parse.y"
15092 token_info_warn(p,
"rescue", p->token_info, 1, &(yyloc));
15093 (yyval.ctxt) = p->ctxt;
15094 p->ctxt.in_rescue = after_rescue;
15096#line 15097 "parse.c"
15100#line 4822 "parse.y"
15102 token_info_warn(p,
"ensure", p->token_info, 1, &(yyloc));
15103 (yyval.ctxt) = p->ctxt;
15105#line 15106 "parse.c"
15109#line 4829 "parse.y"
15111 token_info_warn(p,
"when", p->token_info, 0, &(yyloc));
15113#line 15114 "parse.c"
15117#line 4835 "parse.y"
15120 int same = ptinfo_beg && strcmp(ptinfo_beg->token,
"case") != 0;
15121 token_info_warn(p,
"else", p->token_info, same, &(yyloc));
15124 e.next = ptinfo_beg->next;
15126 token_info_setup(&e, p->lex.pbeg, &(yyloc));
15127 if (!e.nonspc) *ptinfo_beg = e;
15130#line 15131 "parse.c"
15134#line 4850 "parse.y"
15137 token_info_warn(p,
"elsif", p->token_info, 1, &(yyloc));
15139#line 15140 "parse.c"
15143#line 4857 "parse.y"
15145 token_info_pop(p,
"end", &(yyloc));
15146 pop_end_expect_token_locations(p);
15148#line 15149 "parse.c"
15152#line 4862 "parse.y"
15154 compile_error(p,
"syntax error, unexpected end-of-input");
15156#line 15157 "parse.c"
15160#line 4868 "parse.y"
15162 if (p->ctxt.cant_return && !dyna_in_block(p))
15163 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
15165#line 15166 "parse.c"
15169#line 4875 "parse.y"
15171 if (!p->ctxt.in_defined && !p->ctxt.in_def && !compile_for_eval)
15172 yyerror1(&(yylsp[0]),
"Invalid yield");
15174#line 15175 "parse.c"
15178#line 4887 "parse.y"
15179 { (yyval.id) = keyword_do_cond; }
15180#line 15181 "parse.c"
15184#line 4894 "parse.y"
15186 (yyval.node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]), &NULL_LOC);
15187 fixpos((yyval.node), (yyvsp[-3].node));
15190#line 15191 "parse.c"
15194#line 4903 "parse.y"
15196 (yyval.node) = (yyvsp[0].node);
15199#line 15200 "parse.c"
15203#line 4914 "parse.y"
15205 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15206 mark_lvar_used(p, (yyval.node));
15208#line 15209 "parse.c"
15212#line 4919 "parse.y"
15214 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
15217#line 15218 "parse.c"
15221#line 3033 "parse.y"
15223 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15226#line 15227 "parse.c"
15230#line 3038 "parse.y"
15232 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
15235#line 15236 "parse.c"
15239#line 4927 "parse.y"
15241 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
15244#line 15245 "parse.c"
15248#line 4932 "parse.y"
15250 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15253#line 15254 "parse.c"
15257#line 4937 "parse.y"
15259 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15262#line 15263 "parse.c"
15266#line 4942 "parse.y"
15268 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
15271#line 15272 "parse.c"
15275#line 4947 "parse.y"
15277 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15280#line 15281 "parse.c"
15284#line 4954 "parse.y"
15287 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15288 mark_lvar_used(p, (yyval.node));
15290#line 15291 "parse.c"
15294#line 4960 "parse.y"
15296 (yyval.node) = NODE_SPECIAL_NO_NAME_REST;
15299#line 15300 "parse.c"
15303#line 4968 "parse.y"
15305 (yyval.id) = idNil;
15308#line 15309 "parse.c"
15312#line 4974 "parse.y"
15313 {p->ctxt.in_argdef = 0;}
15314#line 15315 "parse.c"
15318#line 3005 "parse.y"
15320 p->ctxt.in_argdef = 1;
15321 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15324#line 15325 "parse.c"
15328#line 3011 "parse.y"
15330 p->ctxt.in_argdef = 1;
15331 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
15334#line 15335 "parse.c"
15338#line 3020 "parse.y"
15340 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
15343#line 15344 "parse.c"
15347#line 3025 "parse.y"
15349 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
15352#line 15353 "parse.c"
15356#line 2928 "parse.y"
15358 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
15361#line 15362 "parse.c"
15365#line 2933 "parse.y"
15367 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
15370#line 15371 "parse.c"
15374#line 2938 "parse.y"
15376 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
15379#line 15380 "parse.c"
15383#line 2943 "parse.y"
15385 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
15388#line 15389 "parse.c"
15392#line 3092 "parse.y"
15394 (yyval.node_args) = (yyvsp[0].node_args);
15397#line 15398 "parse.c"
15401#line 3097 "parse.y"
15403 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
15406#line 15407 "parse.c"
15410#line 4983 "parse.y"
15413 (yyval.id) = NODE_SPECIAL_EXCESSIVE_COMMA;
15416#line 15417 "parse.c"
15420#line 2983 "parse.y"
15422 p->ctxt.in_argdef = 1;
15423 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15426#line 15427 "parse.c"
15430#line 2992 "parse.y"
15432 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
15435#line 15436 "parse.c"
15439#line 2997 "parse.y"
15441 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
15444#line 15445 "parse.c"
15448#line 6263 "parse.y"
15450 (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));
15453#line 15454 "parse.c"
15457#line 6268 "parse.y"
15459 (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));
15462#line 15463 "parse.c"
15466#line 6273 "parse.y"
15468 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15471#line 15472 "parse.c"
15475#line 6278 "parse.y"
15477 (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));
15480#line 15481 "parse.c"
15484#line 6283 "parse.y"
15486 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
15489#line 15490 "parse.c"
15493#line 6288 "parse.y"
15495 (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));
15498#line 15499 "parse.c"
15502#line 6293 "parse.y"
15504 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
15507#line 15508 "parse.c"
15511#line 6298 "parse.y"
15513 (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));
15516#line 15517 "parse.c"
15520#line 6303 "parse.y"
15522 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15525#line 15526 "parse.c"
15529#line 6308 "parse.y"
15531 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15534#line 15535 "parse.c"
15538#line 6313 "parse.y"
15540 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
15543#line 15544 "parse.c"
15547#line 6318 "parse.y"
15549 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15552#line 15553 "parse.c"
15556#line 4992 "parse.y"
15558 (yyval.node_args) = new_empty_args_tail(p, &(yylsp[0]));
15559 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, (yyvsp[0].id), 0, (yyval.node_args), &(yyloc));
15562#line 15563 "parse.c"
15566#line 4998 "parse.y"
15568 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15571#line 15572 "parse.c"
15575#line 6326 "parse.y"
15577 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15580#line 15581 "parse.c"
15584#line 5007 "parse.y"
15586 p->command_start = TRUE;
15588#line 15589 "parse.c"
15592#line 5013 "parse.y"
15594 p->max_numparam = ORDINAL_PARAM;
15595 p->ctxt.in_argdef = 0;
15596 (yyval.node_args) = (yyvsp[-2].node_args);
15599#line 15600 "parse.c"
15603#line 5022 "parse.y"
15605 (yyval.node_args) = 0;
15608#line 15609 "parse.c"
15612#line 5030 "parse.y"
15617#line 15618 "parse.c"
15621#line 5035 "parse.y"
15626#line 15627 "parse.c"
15630#line 5048 "parse.y"
15632 new_bv(p, (yyvsp[0].
id));
15635#line 15636 "parse.c"
15639#line 5055 "parse.y"
15641 (yyval.num) = p->max_numparam;
15642 p->max_numparam = 0;
15644#line 15645 "parse.c"
15648#line 5061 "parse.y"
15650 (yyval.node) = numparam_push(p);
15652#line 15653 "parse.c"
15656#line 5066 "parse.y"
15658 (yyval.id) = p->it_id;
15661#line 15662 "parse.c"
15665#line 5073 "parse.y"
15667 token_info_push(p,
"->", &(yylsp[0]));
15668 (yyval.vars) = dyna_push(p);
15670#line 15671 "parse.c"
15674#line 5079 "parse.y"
15678#line 15679 "parse.c"
15682#line 5083 "parse.y"
15684 int max_numparam = p->max_numparam;
15685 ID it_id = p->it_id;
15686 p->lex.lpar_beg = (yyvsp[-8].num);
15687 p->max_numparam = (yyvsp[-6].num);
15688 p->it_id = (yyvsp[-4].id);
15689 restore_block_exit(p, (yyvsp[-3].node_exits));
15691 (yyvsp[-2].node_args) = args_with_numbered(p, (yyvsp[-2].node_args), max_numparam, it_id);
15693 YYLTYPE loc = code_loc_gen(&(yylsp[-8]), &(yylsp[0]));
15694 (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);
15695 nd_set_line(RNODE_LAMBDA((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
15696 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
15697 nd_set_first_loc((yyval.node), (yylsp[-8]).beg_pos);
15698 xfree((yyvsp[0].locations_lambda_body));
15701 numparam_pop(p, (yyvsp[-5].node));
15702 dyna_pop(p, (yyvsp[-7].vars));
15704#line 15705 "parse.c"
15708#line 5107 "parse.y"
15710 p->ctxt.in_argdef = 0;
15711 (yyval.node_args) = (yyvsp[-2].node_args);
15712 p->max_numparam = ORDINAL_PARAM;
15715#line 15716 "parse.c"
15719#line 5114 "parse.y"
15721 p->ctxt.in_argdef = 0;
15722 if (!args_info_empty_p(&(yyvsp[0].node_args)->nd_ainfo))
15723 p->max_numparam = ORDINAL_PARAM;
15724 (yyval.node_args) = (yyvsp[0].node_args);
15726#line 15727 "parse.c"
15730#line 5123 "parse.y"
15732 token_info_pop(p,
"}", &(yylsp[0]));
15733 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-2]), &(yylsp[0]));
15736#line 15737 "parse.c"
15740#line 5129 "parse.y"
15742 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15744#line 15745 "parse.c"
15748#line 5133 "parse.y"
15750 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-3]), &(yylsp[0]));
15753#line 15754 "parse.c"
15757#line 5140 "parse.y"
15759 (yyval.node) = (yyvsp[-1].node);
15760 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15763#line 15764 "parse.c"
15767#line 5148 "parse.y"
15769 if (nd_type_p((yyvsp[-1].node), NODE_YIELD)) {
15770 compile_error(p,
"block given to yield");
15773 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
15775 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15776 fixpos((yyval.node), (yyvsp[-1].node));
15779#line 15780 "parse.c"
15783#line 5160 "parse.y"
15785 bool has_args = (yyvsp[0].node) != 0;
15786 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15787 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15793#line 15794 "parse.c"
15797#line 5170 "parse.y"
15799 if (NODE_EMPTY_ARGS_P((yyvsp[-1].node))) (yyvsp[-1].node) = 0;
15800 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15803#line 15804 "parse.c"
15807#line 5176 "parse.y"
15809 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15812#line 15813 "parse.c"
15816#line 5181 "parse.y"
15818 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15819 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15822#line 15823 "parse.c"
15826#line 5189 "parse.y"
15828 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
15829 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
15830 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
15833#line 15834 "parse.c"
15837#line 5196 "parse.y"
15839 bool has_args = (yyvsp[0].node) != 0;
15840 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15841 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15842 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15848#line 15849 "parse.c"
15852#line 5207 "parse.y"
15854 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15855 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15858#line 15859 "parse.c"
15862#line 5213 "parse.y"
15864 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-2].node), (yyvsp[0].id), 0, &(yylsp[0]), &(yyloc));
15867#line 15868 "parse.c"
15871#line 5218 "parse.y"
15873 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15874 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15877#line 15878 "parse.c"
15881#line 5224 "parse.y"
15885 lparen_loc.end_pos.column = lparen_loc.beg_pos.column + 1;
15886 rparen_loc.beg_pos.column = rparen_loc.end_pos.column - 1;
15888 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &lparen_loc, &rparen_loc);
15891#line 15892 "parse.c"
15895#line 5234 "parse.y"
15897 (yyval.node) = NEW_ZSUPER(&(yyloc));
15900#line 15901 "parse.c"
15904#line 5239 "parse.y"
15906 (yyval.node) = NEW_CALL((yyvsp[-3].node), tAREF, (yyvsp[-1].node), &(yyloc));
15907 fixpos((yyval.node), (yyvsp[-3].node));
15910#line 15911 "parse.c"
15914#line 5247 "parse.y"
15916 (yyval.node) = (yyvsp[-1].node);
15917 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15920#line 15921 "parse.c"
15924#line 5253 "parse.y"
15926 (yyval.node) = (yyvsp[-1].node);
15927 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15930#line 15931 "parse.c"
15934#line 5260 "parse.y"
15935 {(yyval.vars) = dyna_push(p);}
15936#line 15937 "parse.c"
15940#line 5263 "parse.y"
15942 int max_numparam = p->max_numparam;
15943 ID it_id = p->it_id;
15944 p->max_numparam = (yyvsp[-5].num);
15945 p->it_id = (yyvsp[-3].id);
15946 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
15947 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
15949 restore_block_exit(p, (yyvsp[-2].node_exits));
15950 numparam_pop(p, (yyvsp[-4].node));
15951 dyna_pop(p, (yyvsp[-6].vars));
15953#line 15954 "parse.c"
15957#line 5277 "parse.y"
15959 (yyval.vars) = dyna_push(p);
15962#line 15963 "parse.c"
15966#line 5283 "parse.y"
15968 int max_numparam = p->max_numparam;
15969 ID it_id = p->it_id;
15970 p->max_numparam = (yyvsp[-5].num);
15971 p->it_id = (yyvsp[-3].id);
15972 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
15973 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
15976 restore_block_exit(p, (yyvsp[-2].node_exits));
15977 numparam_pop(p, (yyvsp[-4].node));
15978 dyna_pop(p, (yyvsp[-6].vars));
15980#line 15981 "parse.c"
15984#line 5299 "parse.y"
15986 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
15987 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15990#line 15991 "parse.c"
15994#line 5305 "parse.y"
15996 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
15999#line 16000 "parse.c"
16003#line 5310 "parse.y"
16005 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
16006 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16009#line 16010 "parse.c"
16013#line 5316 "parse.y"
16015 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
16018#line 16019 "parse.c"
16022#line 5325 "parse.y"
16024 (yyval.node) = NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]));
16025 fixpos((yyval.node), (yyvsp[-3].node));
16028#line 16029 "parse.c"
16032#line 5336 "parse.y"
16033 {(yyval.tbl) = p->pvtbl; p->pvtbl = st_init_numtable();}
16034#line 16035 "parse.c"
16038#line 5337 "parse.y"
16039 {(yyval.tbl) = p->pktbl; p->pktbl = 0;}
16040#line 16041 "parse.c"
16044#line 5339 "parse.y"
16046 (yyval.ctxt) = p->ctxt;
16047 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
16048 p->command_start = FALSE;
16049 p->ctxt.in_kwarg = 1;
16050 p->ctxt.in_alt_pattern = 0;
16051 p->ctxt.capture_in_pattern = 0;
16053#line 16054 "parse.c"
16057#line 5352 "parse.y"
16059 pop_pktbl(p, (yyvsp[-2].tbl));
16060 pop_pvtbl(p, (yyvsp[-3].tbl));
16061 p->ctxt.in_kwarg = (yyvsp[-4].ctxt).in_kwarg;
16062 p->ctxt.in_alt_pattern = (yyvsp[-4].ctxt).in_alt_pattern;
16063 p->ctxt.capture_in_pattern = (yyvsp[-4].ctxt).capture_in_pattern;
16065#line 16066 "parse.c"
16069#line 5361 "parse.y"
16071 (yyval.node) = NEW_IN((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-8]), &(yylsp[-3]), &NULL_LOC);
16074#line 16075 "parse.c"
16078#line 5373 "parse.y"
16080 (yyval.node) = new_if(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
16081 fixpos((yyval.node), (yyvsp[0].node));
16084#line 16085 "parse.c"
16088#line 5379 "parse.y"
16090 (yyval.node) = new_unless(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
16091 fixpos((yyval.node), (yyvsp[0].node));
16094#line 16095 "parse.c"
16098#line 5388 "parse.y"
16100 (yyval.node) = new_array_pattern_tail(p, 0, 1, 0, 0, &(yyloc));
16101 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-1].node), (yyval.node), &(yyloc));
16104#line 16105 "parse.c"
16108#line 5394 "parse.y"
16110 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16111 nd_set_first_loc((yyval.node), (yylsp[-2]).beg_pos);
16114#line 16115 "parse.c"
16118#line 5400 "parse.y"
16120 (yyval.node) = new_find_pattern(p, 0, (yyvsp[0].node), &(yyloc));
16123#line 16124 "parse.c"
16127#line 5405 "parse.y"
16129 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[0].node), &(yyloc));
16132#line 16133 "parse.c"
16136#line 5410 "parse.y"
16138 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[0].node), &(yyloc));
16141#line 16142 "parse.c"
16145#line 5420 "parse.y"
16147 NODE *n = NEW_LIST((yyvsp[-2].node), &(yyloc));
16148 n = list_append(p, n, (yyvsp[0].node));
16149 (yyval.node) = new_hash(p, n, &(yyloc));
16152#line 16153 "parse.c"
16156#line 5430 "parse.y"
16158 p->ctxt.in_alt_pattern = 1;
16160#line 16161 "parse.c"
16164#line 5434 "parse.y"
16166 if (p->ctxt.capture_in_pattern) {
16167 yyerror1(&(yylsp[-2]),
"alternative pattern after variable capture");
16169 p->ctxt.in_alt_pattern = 0;
16170 (yyval.node) = NEW_OR((yyvsp[-3].node), (yyvsp[0].node), &(yyloc), &(yylsp[-2]));
16173#line 16174 "parse.c"
16177#line 5446 "parse.y"
16179 (yyval.tbl) = (yyvsp[0].tbl);
16182#line 16183 "parse.c"
16186#line 5453 "parse.y"
16188 (yyval.tbl) = (yyvsp[0].tbl);
16191#line 16192 "parse.c"
16195#line 5462 "parse.y"
16197 pop_pktbl(p, (yyvsp[-2].tbl));
16198 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
16199 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16202#line 16203 "parse.c"
16206#line 5469 "parse.y"
16208 pop_pktbl(p, (yyvsp[-2].tbl));
16209 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16210 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16213#line 16214 "parse.c"
16217#line 5476 "parse.y"
16219 pop_pktbl(p, (yyvsp[-2].tbl));
16220 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16221 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16224#line 16225 "parse.c"
16228#line 5483 "parse.y"
16230 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16231 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
16234#line 16235 "parse.c"
16238#line 5489 "parse.y"
16240 pop_pktbl(p, (yyvsp[-2].tbl));
16241 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
16242 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16245#line 16246 "parse.c"
16249#line 5496 "parse.y"
16251 pop_pktbl(p, (yyvsp[-2].tbl));
16252 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16253 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16256#line 16257 "parse.c"
16260#line 5503 "parse.y"
16262 pop_pktbl(p, (yyvsp[-2].tbl));
16263 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16264 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16267#line 16268 "parse.c"
16271#line 5510 "parse.y"
16273 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16274 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
16277#line 16278 "parse.c"
16281#line 5516 "parse.y"
16283 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[-1].node), &(yyloc));
16286#line 16287 "parse.c"
16290#line 5521 "parse.y"
16292 (yyval.node) = new_find_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16295#line 16296 "parse.c"
16299#line 5526 "parse.y"
16301 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16302 (yyval.node) = new_array_pattern(p, 0, 0, (yyval.node), &(yyloc));
16305#line 16306 "parse.c"
16309#line 5532 "parse.y"
16311 p->ctxt.in_kwarg = 0;
16313#line 16314 "parse.c"
16317#line 5536 "parse.y"
16319 pop_pktbl(p, (yyvsp[-4].tbl));
16320 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
16321 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16324#line 16325 "parse.c"
16328#line 5543 "parse.y"
16330 (yyval.node) = new_hash_pattern_tail(p, 0, 0, &(yyloc));
16331 (yyval.node) = new_hash_pattern(p, 0, (yyval.node), &(yyloc));
16334#line 16335 "parse.c"
16338#line 5549 "parse.y"
16340 pop_pktbl(p, (yyvsp[-2].tbl));
16341 (yyval.node) = (yyvsp[-1].node);
16344#line 16345 "parse.c"
16348#line 5557 "parse.y"
16350 NODE *pre_args = NEW_LIST((yyvsp[0].node), &(yyloc));
16351 (yyval.node) = new_array_pattern_tail(p, pre_args, 0, 0, 0, &(yyloc));
16354#line 16355 "parse.c"
16358#line 5563 "parse.y"
16360 (yyval.node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0, 0, &(yyloc));
16363#line 16364 "parse.c"
16367#line 5568 "parse.y"
16369 (yyval.node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, 0, 0, &(yyloc));
16372#line 16373 "parse.c"
16376#line 5573 "parse.y"
16378 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, (yyvsp[0].node), 0, &(yyloc));
16381#line 16382 "parse.c"
16385#line 5578 "parse.y"
16387 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16390#line 16391 "parse.c"
16394#line 5587 "parse.y"
16396 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
16399#line 16400 "parse.c"
16403#line 5594 "parse.y"
16405 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[0].node), 0, &(yyloc));
16408#line 16409 "parse.c"
16412#line 5599 "parse.y"
16414 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16417#line 16418 "parse.c"
16421#line 5606 "parse.y"
16423 (yyval.node) = new_find_pattern_tail(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16426#line 16427 "parse.c"
16430#line 5614 "parse.y"
16432 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16434 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16436#line 16437 "parse.c"
16440#line 5620 "parse.y"
16445#line 16446 "parse.c"
16449#line 5628 "parse.y"
16451 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16454#line 16455 "parse.c"
16458#line 5635 "parse.y"
16460 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16463#line 16464 "parse.c"
16467#line 5642 "parse.y"
16469 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].id), &(yyloc));
16472#line 16473 "parse.c"
16476#line 5647 "parse.y"
16478 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
16481#line 16482 "parse.c"
16485#line 5652 "parse.y"
16487 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
16490#line 16491 "parse.c"
16494#line 5657 "parse.y"
16496 (yyval.node) = new_hash_pattern_tail(p, new_hash(p, 0, &(yyloc)), (yyvsp[0].
id), &(yyloc));
16499#line 16500 "parse.c"
16503#line 5666 "parse.y"
16505 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16508#line 16509 "parse.c"
16512#line 5673 "parse.y"
16514 error_duplicate_pattern_key(p, (yyvsp[-1].
id), &(yylsp[-1]));
16515 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
16518#line 16519 "parse.c"
16522#line 5679 "parse.y"
16524 error_duplicate_pattern_key(p, (yyvsp[0].
id), &(yylsp[0]));
16525 if ((yyvsp[0].
id) && !is_local_id((yyvsp[0].
id))) {
16526 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
16528 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16529 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
16532#line 16533 "parse.c"
16536#line 5692 "parse.y"
16538 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
16539 if (!(yyvsp[-1].node) || nd_type_p((yyvsp[-1].node), NODE_STR)) {
16540 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
16541 (yyval.id) =
rb_sym2id(rb_node_sym_string_val(node));
16544 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
16545 (yyval.id) = rb_intern_str(STR_NEW0());
16549#line 16550 "parse.c"
16553#line 5707 "parse.y"
16555 (yyval.id) = (yyvsp[0].
id);
16558#line 16559 "parse.c"
16562#line 5712 "parse.y"
16567#line 16568 "parse.c"
16571#line 5719 "parse.y"
16575#line 16576 "parse.c"
16579#line 5726 "parse.y"
16581 (yyval.id) = idNil;
16584#line 16585 "parse.c"
16588#line 3105 "parse.y"
16590 value_expr(p, (yyvsp[-2].node));
16591 value_expr(p, (yyvsp[0].node));
16592 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16595#line 16596 "parse.c"
16599#line 3112 "parse.y"
16601 value_expr(p, (yyvsp[-2].node));
16602 value_expr(p, (yyvsp[0].node));
16603 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16606#line 16607 "parse.c"
16610#line 3119 "parse.y"
16612 value_expr(p, (yyvsp[-1].node));
16613 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16616#line 16617 "parse.c"
16620#line 3125 "parse.y"
16622 value_expr(p, (yyvsp[-1].node));
16623 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16626#line 16627 "parse.c"
16630#line 3131 "parse.y"
16632 value_expr(p, (yyvsp[0].node));
16633 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16636#line 16637 "parse.c"
16640#line 3137 "parse.y"
16642 value_expr(p, (yyvsp[0].node));
16643 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16646#line 16647 "parse.c"
16650#line 5741 "parse.y"
16652 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16655#line 16656 "parse.c"
16659#line 5749 "parse.y"
16661 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16663 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16665#line 16666 "parse.c"
16669#line 5757 "parse.y"
16671 NODE *n = gettable(p, (yyvsp[0].
id), &(yyloc));
16673 n = NEW_ERROR(&(yyloc));
16675 else if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
16676 compile_error(p,
"%"PRIsVALUE
": no such local variable", rb_id2str((yyvsp[0].
id)));
16681#line 16682 "parse.c"
16685#line 5769 "parse.y"
16687 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16690#line 16691 "parse.c"
16694#line 5776 "parse.y"
16696 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
16699#line 16700 "parse.c"
16703#line 5783 "parse.y"
16705 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
16708#line 16709 "parse.c"
16712#line 5788 "parse.y"
16714 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
16717#line 16718 "parse.c"
16721#line 5793 "parse.y"
16723 (yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc));
16726#line 16727 "parse.c"
16730#line 5802 "parse.y"
16732 NODE *err = (yyvsp[-3].node);
16733 if ((yyvsp[-3].node)) {
16734 err = NEW_ERRINFO(&(yylsp[-3]));
16735 err = node_assign(p, (yyvsp[-3].node), err, NO_LEX_CTXT, &(yylsp[-3]));
16737 (yyval.node) = NEW_RESBODY((yyvsp[-4].node), (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16738 if ((yyvsp[-4].node)) {
16739 fixpos((yyval.node), (yyvsp[-4].node));
16741 else if ((yyvsp[-3].node)) {
16742 fixpos((yyval.node), (yyvsp[-3].node));
16745 fixpos((yyval.node), (yyvsp[-1].node));
16749#line 16750 "parse.c"
16753#line 5824 "parse.y"
16755 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16758#line 16759 "parse.c"
16762#line 5829 "parse.y"
16764 if (!((yyval.node) = splat_array((yyvsp[0].node)))) (yyval.node) = (yyvsp[0].node);
16766#line 16767 "parse.c"
16770#line 5836 "parse.y"
16772 (yyval.node) = (yyvsp[0].node);
16775#line 16776 "parse.c"
16779#line 5844 "parse.y"
16781 p->ctxt.in_rescue = (yyvsp[-2].ctxt).in_rescue;
16782 (yyval.node) = (yyvsp[-1].node);
16783 void_expr(p, void_stmts(p, (yyval.node)));
16786#line 16787 "parse.c"
16790#line 5858 "parse.y"
16792 if (!(yyvsp[0].node)) {
16793 (yyval.node) = NEW_STR(STRING_NEW0(), &(yyloc));
16796 (yyval.node) = evstr2dstr(p, (yyvsp[0].node));
16800#line 16801 "parse.c"
16804#line 5872 "parse.y"
16806 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16809#line 16810 "parse.c"
16813#line 5879 "parse.y"
16815 (yyval.node) = heredoc_dedent(p, (yyvsp[-1].node));
16816 if ((yyval.node)) nd_set_loc((yyval.node), &(yyloc));
16818 if (p->heredoc_indent > 0) {
16820 p->heredoc_indent = 0;
16824#line 16825 "parse.c"
16828#line 5892 "parse.y"
16830 (yyval.node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
16832 if (p->heredoc_indent > 0) {
16834 p->heredoc_indent = 0;
16838#line 16839 "parse.c"
16842#line 5904 "parse.y"
16844 (yyval.node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
16847#line 16848 "parse.c"
16851#line 3154 "parse.y"
16853 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16856#line 16857 "parse.c"
16860#line 5914 "parse.y"
16865#line 16866 "parse.c"
16869#line 5919 "parse.y"
16871 (yyval.node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
16874#line 16875 "parse.c"
16878#line 5928 "parse.y"
16880 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16883#line 16884 "parse.c"
16887#line 3154 "parse.y"
16889 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16892#line 16893 "parse.c"
16896#line 5938 "parse.y"
16901#line 16902 "parse.c"
16905#line 5943 "parse.y"
16907 (yyval.node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
16910#line 16911 "parse.c"
16914#line 3154 "parse.y"
16916 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16919#line 16920 "parse.c"
16923#line 3154 "parse.y"
16925 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16928#line 16929 "parse.c"
16932#line 5956 "parse.y"
16937#line 16938 "parse.c"
16941#line 5961 "parse.y"
16943 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
16946#line 16947 "parse.c"
16950#line 5968 "parse.y"
16955#line 16956 "parse.c"
16959#line 5973 "parse.y"
16961 (yyval.node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
16964#line 16965 "parse.c"
16968#line 5980 "parse.y"
16973#line 16974 "parse.c"
16977#line 5985 "parse.y"
16979 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16982#line 16983 "parse.c"
16986#line 5992 "parse.y"
16991#line 16992 "parse.c"
16995#line 5997 "parse.y"
16997 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
17000#line 17001 "parse.c"
17004#line 6004 "parse.y"
17009#line 17010 "parse.c"
17013#line 6009 "parse.y"
17015 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
17017 (yyval.node) = tail;
17020 (yyval.node) = head;
17023 switch (nd_type(head)) {
17025 head = str2dstr(p, head);
17030 head = list_append(p, NEW_DSTR(0, &(yyloc)), head);
17033 (yyval.node) = list_append(p, head, tail);
17037#line 17038 "parse.c"
17041#line 6037 "parse.y"
17044 (yyval.strterm) = p->lex.strterm;
17045 p->lex.strterm = 0;
17046 SET_LEX_STATE(EXPR_BEG);
17048#line 17049 "parse.c"
17052#line 6044 "parse.y"
17054 p->lex.strterm = (yyvsp[-1].strterm);
17055 (yyval.node) = NEW_EVSTR((yyvsp[0].node), &(yyloc), &(yylsp[-2]), &NULL_LOC);
17056 nd_set_line((yyval.node), (yylsp[0]).end_pos.lineno);
17059#line 17060 "parse.c"
17063#line 6051 "parse.y"
17068 (yyval.strterm) = p->lex.strterm;
17069 p->lex.strterm = 0;
17070 SET_LEX_STATE(EXPR_BEG);
17072#line 17073 "parse.c"
17076#line 6059 "parse.y"
17078 (yyval.num) = p->lex.brace_nest;
17079 p->lex.brace_nest = 0;
17081#line 17082 "parse.c"
17085#line 6063 "parse.y"
17087 (yyval.num) = p->heredoc_indent;
17088 p->heredoc_indent = 0;
17090#line 17091 "parse.c"
17094#line 6068 "parse.y"
17098 p->lex.strterm = (yyvsp[-4].strterm);
17099 SET_LEX_STATE((yyvsp[-5].state));
17100 p->lex.brace_nest = (yyvsp[-3].num);
17101 p->heredoc_indent = (yyvsp[-2].num);
17102 p->heredoc_line_indent = -1;
17103 if ((yyvsp[-1].node)) nd_unset_fl_newline((yyvsp[-1].node));
17104 (yyval.node) = new_evstr(p, (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[0]));
17107#line 17108 "parse.c"
17111#line 6087 "parse.y"
17113 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17116#line 17117 "parse.c"
17120#line 6099 "parse.y"
17122 SET_LEX_STATE(EXPR_END);
17123 VALUE str = rb_id2str((yyvsp[0].
id));
17130 if (!str) str = STR_NEW0();
17131 (yyval.node) = NEW_SYM(str, &(yyloc));
17134#line 17135 "parse.c"
17138#line 6119 "parse.y"
17140 SET_LEX_STATE(EXPR_END);
17141 (yyval.node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
17144#line 17145 "parse.c"
17148#line 6128 "parse.y"
17150 (yyval.node) = (yyvsp[0].node);
17151 negate_lit(p, (yyval.node));
17154#line 17155 "parse.c"
17158#line 6150 "parse.y"
17159 {(yyval.id) = KWD2EID(nil, (yyvsp[0].
id));}
17160#line 17161 "parse.c"
17164#line 6151 "parse.y"
17165 {(yyval.id) = KWD2EID(self, (yyvsp[0].
id));}
17166#line 17167 "parse.c"
17170#line 6152 "parse.y"
17171 {(yyval.id) = KWD2EID(
true, (yyvsp[0].
id));}
17172#line 17173 "parse.c"
17176#line 6153 "parse.y"
17177 {(yyval.id) = KWD2EID(
false, (yyvsp[0].
id));}
17178#line 17179 "parse.c"
17182#line 6154 "parse.y"
17183 {(yyval.id) = KWD2EID(_FILE__, (yyvsp[0].
id));}
17184#line 17185 "parse.c"
17188#line 6155 "parse.y"
17189 {(yyval.id) = KWD2EID(_LINE__, (yyvsp[0].
id));}
17190#line 17191 "parse.c"
17194#line 6156 "parse.y"
17195 {(yyval.id) = KWD2EID(_ENCODING__, (yyvsp[0].
id));}
17196#line 17197 "parse.c"
17200#line 6160 "parse.y"
17202 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17203 if (ifdef_ripper(id_is_var(p, (yyvsp[0].
id)),
false)) {
17210#line 17211 "parse.c"
17214#line 6170 "parse.y"
17216 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17219#line 17220 "parse.c"
17223#line 6177 "parse.y"
17226 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
17228#line 17229 "parse.c"
17232#line 6177 "parse.y"
17235 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
17237#line 17238 "parse.c"
17241#line 6188 "parse.y"
17243 SET_LEX_STATE(EXPR_BEG);
17244 p->command_start = TRUE;
17246#line 17247 "parse.c"
17250#line 6193 "parse.y"
17252 (yyval.node) = (yyvsp[-1].node);
17255#line 17256 "parse.c"
17259#line 6202 "parse.y"
17261 p->ctxt.in_argdef = 0;
17263#line 17264 "parse.c"
17267#line 6208 "parse.y"
17269 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
17270 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyval.node_args), &(yyloc));
17273#line 17274 "parse.c"
17277#line 6216 "parse.y"
17279 (yyval.node_args) = (yyvsp[-1].node_args);
17281 SET_LEX_STATE(EXPR_BEG);
17282 p->command_start = TRUE;
17283 p->ctxt.in_argdef = 0;
17285#line 17286 "parse.c"
17289#line 6226 "parse.y"
17291 (yyval.ctxt) = p->ctxt;
17292 p->ctxt.in_kwarg = 1;
17293 p->ctxt.in_argdef = 1;
17294 SET_LEX_STATE(p->lex.state|EXPR_LABEL);
17296#line 17297 "parse.c"
17300#line 6233 "parse.y"
17302 p->ctxt.in_kwarg = (yyvsp[-2].ctxt).in_kwarg;
17303 p->ctxt.in_argdef = 0;
17304 (yyval.node_args) = (yyvsp[-1].node_args);
17305 SET_LEX_STATE(EXPR_BEG);
17306 p->command_start = TRUE;
17309#line 17310 "parse.c"
17313#line 3005 "parse.y"
17315 p->ctxt.in_argdef = 1;
17316 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17319#line 17320 "parse.c"
17323#line 3011 "parse.y"
17325 p->ctxt.in_argdef = 1;
17326 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
17329#line 17330 "parse.c"
17333#line 3020 "parse.y"
17335 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
17338#line 17339 "parse.c"
17342#line 3025 "parse.y"
17344 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
17347#line 17348 "parse.c"
17351#line 2928 "parse.y"
17353 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
17356#line 17357 "parse.c"
17360#line 2933 "parse.y"
17362 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
17365#line 17366 "parse.c"
17369#line 2938 "parse.y"
17371 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
17374#line 17375 "parse.c"
17378#line 2943 "parse.y"
17380 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
17383#line 17384 "parse.c"
17387#line 6245 "parse.y"
17389 ID fwd = (yyvsp[0].id);
17390 if (lambda_beginning_p() ||
17391 (p->lex.lpar_beg >= 0 && p->lex.lpar_beg+1 == p->lex.paren_nest)) {
17392 yyerror0(
"unexpected ... in lambda argument");
17396 add_forwarding_args(p);
17398 (yyval.node_args) = new_args_tail(p, 0, fwd, arg_FWD_BLOCK, &(yylsp[0]));
17399 (yyval.node_args)->nd_ainfo.forwarding = 1;
17402#line 17403 "parse.c"
17406#line 3092 "parse.y"
17408 (yyval.node_args) = (yyvsp[0].node_args);
17411#line 17412 "parse.c"
17415#line 3097 "parse.y"
17417 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
17420#line 17421 "parse.c"
17424#line 2983 "parse.y"
17426 p->ctxt.in_argdef = 1;
17427 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17430#line 17431 "parse.c"
17434#line 2992 "parse.y"
17436 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
17439#line 17440 "parse.c"
17443#line 2997 "parse.y"
17445 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
17448#line 17449 "parse.c"
17452#line 6263 "parse.y"
17454 (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));
17457#line 17458 "parse.c"
17461#line 6268 "parse.y"
17463 (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));
17466#line 17467 "parse.c"
17470#line 6273 "parse.y"
17472 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17475#line 17476 "parse.c"
17479#line 6278 "parse.y"
17481 (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));
17484#line 17485 "parse.c"
17488#line 6283 "parse.y"
17490 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17493#line 17494 "parse.c"
17497#line 6288 "parse.y"
17499 (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));
17502#line 17503 "parse.c"
17506#line 6293 "parse.y"
17508 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17511#line 17512 "parse.c"
17515#line 6298 "parse.y"
17517 (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));
17520#line 17521 "parse.c"
17524#line 6303 "parse.y"
17526 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17529#line 17530 "parse.c"
17533#line 6308 "parse.y"
17535 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17538#line 17539 "parse.c"
17542#line 6313 "parse.y"
17544 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17547#line 17548 "parse.c"
17551#line 6318 "parse.y"
17553 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17556#line 17557 "parse.c"
17560#line 6337 "parse.y"
17562 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17565#line 17566 "parse.c"
17569#line 6326 "parse.y"
17571 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17574#line 17575 "parse.c"
17578#line 6347 "parse.y"
17580 (yyval.id) = idFWD_KWREST;
17583#line 17584 "parse.c"
17587#line 6354 "parse.y"
17589 static const char mesg[] =
"formal argument cannot be a constant";
17591 yyerror1(&(yylsp[0]), mesg);
17596#line 17597 "parse.c"
17600#line 6363 "parse.y"
17602 static const char mesg[] =
"formal argument cannot be an instance variable";
17604 yyerror1(&(yylsp[0]), mesg);
17609#line 17610 "parse.c"
17613#line 6372 "parse.y"
17615 static const char mesg[] =
"formal argument cannot be a global variable";
17617 yyerror1(&(yylsp[0]), mesg);
17622#line 17623 "parse.c"
17626#line 6381 "parse.y"
17628 static const char mesg[] =
"formal argument cannot be a class variable";
17630 yyerror1(&(yylsp[0]), mesg);
17635#line 17636 "parse.c"
17639#line 6393 "parse.y"
17641 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
17645 p->max_numparam = ORDINAL_PARAM;
17647#line 17648 "parse.c"
17651#line 6403 "parse.y"
17653 arg_var(p, (yyvsp[0].
id));
17654 (yyval.id) = (yyvsp[0].
id);
17656#line 17657 "parse.c"
17660#line 6410 "parse.y"
17662 (yyval.node_args_aux) = NEW_ARGS_AUX((yyvsp[0].
id), 1, &NULL_LOC);
17665#line 17666 "parse.c"
17669#line 6415 "parse.y"
17671 ID tid = internal_id(p);
17673 loc.beg_pos = (yylsp[-1]).beg_pos;
17674 loc.end_pos = (yylsp[-1]).beg_pos;
17676 if (dyna_in_block(p)) {
17677 (yyvsp[-1].node_masgn)->nd_value = NEW_DVAR(tid, &loc);
17680 (yyvsp[-1].node_masgn)->nd_value = NEW_LVAR(tid, &loc);
17682 (yyval.node_args_aux) = NEW_ARGS_AUX(tid, 1, &NULL_LOC);
17683 (yyval.node_args_aux)->nd_next = (
NODE *)(yyvsp[-1].node_masgn);
17686#line 17687 "parse.c"
17690#line 6436 "parse.y"
17692 (yyval.node_args_aux) = (yyvsp[-2].node_args_aux);
17693 (yyval.node_args_aux)->nd_plen++;
17694 (yyval.node_args_aux)->nd_next = block_append(p, (yyval.node_args_aux)->nd_next, (yyvsp[0].node_args_aux)->nd_next);
17695 rb_discard_node(p, (
NODE *)(yyvsp[0].node_args_aux));
17698#line 17699 "parse.c"
17702#line 6447 "parse.y"
17704 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
17715 arg_var(p, ifdef_ripper(0, (yyvsp[0].
id)));
17717 p->max_numparam = ORDINAL_PARAM;
17718 p->ctxt.in_argdef = 0;
17720#line 17721 "parse.c"
17724#line 6471 "parse.y"
17728#line 17729 "parse.c"
17732#line 6477 "parse.y"
17734 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
17735 (yyval.id) = (yyvsp[0].
id);
17738#line 17739 "parse.c"
17742#line 6483 "parse.y"
17744 arg_var(p, idFWD_KWREST);
17745 (yyval.id) = idFWD_KWREST;
17748#line 17749 "parse.c"
17752#line 6495 "parse.y"
17754 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
17755 (yyval.id) = (yyvsp[0].
id);
17758#line 17759 "parse.c"
17762#line 6501 "parse.y"
17764 arg_var(p, idFWD_REST);
17765 (yyval.id) = idFWD_REST;
17768#line 17769 "parse.c"
17772#line 6513 "parse.y"
17774 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
17775 (yyval.id) = (yyvsp[0].
id);
17778#line 17779 "parse.c"
17782#line 6519 "parse.y"
17784 (yyval.id) = idNil;
17787#line 17788 "parse.c"
17791#line 6524 "parse.y"
17793 arg_var(p, idFWD_BLOCK);
17794 (yyval.id) = idFWD_BLOCK;
17797#line 17798 "parse.c"
17801#line 6532 "parse.y"
17803 (yyval.id) = (yyvsp[0].
id);
17806#line 17807 "parse.c"
17810#line 3146 "parse.y"
17812 value_expr(p, (yyvsp[0].node));
17813 (yyval.node) = (yyvsp[0].node);
17815#line 17816 "parse.c"
17819#line 6541 "parse.y"
17821 NODE *expr = last_expr_node((yyvsp[0].node));
17822 switch (nd_type(expr)) {
17832 case NODE_ENCODING:
17835 case NODE_RATIONAL:
17836 case NODE_IMAGINARY:
17840 yyerror1(&expr->nd_loc,
"can't define singleton method for literals");
17845 (yyval.node) = (yyvsp[0].node);
17847#line 17848 "parse.c"
17851#line 6572 "parse.y"
17853 SET_LEX_STATE(EXPR_BEG);
17854 p->ctxt.in_argdef = 0;
17856#line 17857 "parse.c"
17860#line 6577 "parse.y"
17862 p->ctxt.in_argdef = 1;
17863 (yyval.node) = (yyvsp[-1].node);
17866#line 17867 "parse.c"
17870#line 6586 "parse.y"
17872 (yyval.node) = (yyvsp[-1].node);
17875#line 17876 "parse.c"
17879#line 6595 "parse.y"
17881 NODE *assocs = (yyvsp[-2].node);
17882 NODE *tail = (yyvsp[0].node);
17887 if (RNODE_LIST(assocs)->nd_head) {
17888 NODE *n = RNODE_LIST(tail)->nd_next;
17889 if (!RNODE_LIST(tail)->nd_head && nd_type_p(n, NODE_LIST) &&
17890 nd_type_p((n = RNODE_LIST(n)->nd_head), NODE_HASH)) {
17892 tail = RNODE_HASH(n)->nd_head;
17896 assocs = list_concat(assocs, tail);
17899 (yyval.node) = assocs;
17902#line 17903 "parse.c"
17906#line 6620 "parse.y"
17908 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
17911#line 17912 "parse.c"
17915#line 6625 "parse.y"
17917 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
17920#line 17921 "parse.c"
17924#line 6630 "parse.y"
17926 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
17927 if (!val) val = NEW_ERROR(&(yyloc));
17928 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
17931#line 17932 "parse.c"
17935#line 6637 "parse.y"
17937 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
17938 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
17941#line 17942 "parse.c"
17945#line 6643 "parse.y"
17947 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
17950#line 17951 "parse.c"
17954#line 6648 "parse.y"
17956 forwarding_arg_check(p, idFWD_KWREST, idFWD_ALL,
"keyword rest");
17957 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)),
17958 NEW_LVAR(idFWD_KWREST, &(yyloc)));
17961#line 17962 "parse.c"
17965#line 6695 "parse.y"
17969 if (p->ctxt.in_defined) {
17970 p->ctxt.has_trailing_semicolon = 1;
17973#line 17974 "parse.c"
17977#line 6703 "parse.y"
17979 (yyloc).end_pos = (yyloc).beg_pos;
17982#line 17983 "parse.c"
17986#line 6710 "parse.y"
17988#line 17989 "parse.c"
17992#line 6714 "parse.y"
17997#line 17998 "parse.c"
18001#line 18002 "parse.c"
18016 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc, p);
18018 YYPOPSTACK (yylen);
18020#line 2667 "parse.y"
18021 {after_reduce(yylen, p);}
18022#line 18023 "parse.c"
18033 const int yylhs = yyr1[yyn] - YYNTOKENS;
18034 const int yyi = yypgoto[yylhs] + *yyssp;
18035 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
18037 : yydefgoto[yylhs]);
18049 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
18056 = {yyssp, yytoken, &yylloc};
18057 char const *yymsgp = YY_(
"syntax error");
18058 int yysyntax_error_status;
18059 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
18060 if (yysyntax_error_status == 0)
18062 else if (yysyntax_error_status == -1)
18064 if (yymsg != yymsgbuf)
18065 YYSTACK_FREE (yymsg);
18066 yymsg = YY_CAST (
char *,
18067 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
18070 yysyntax_error_status
18071 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
18077 yymsg_alloc =
sizeof yymsgbuf;
18078 yysyntax_error_status = YYENOMEM;
18081 yyerror (&yylloc, p, yymsgp);
18082 if (yysyntax_error_status == YYENOMEM)
18087 yyerror_range[1] = yylloc;
18088 if (yyerrstatus == 3)
18093 if (yychar <= END_OF_INPUT)
18096 if (yychar == END_OF_INPUT)
18101 yydestruct (
"Error: discarding",
18102 yytoken, &yylval, &yylloc, p);
18124 YYPOPSTACK (yylen);
18126#line 2669 "parse.y"
18127 {after_pop_stack(yylen, p);}
18128#line 18129 "parse.c"
18131 YY_STACK_PRINT (yyss, yyssp, p);
18145 yyn = yypact[yystate];
18146 if (!yypact_value_is_default (yyn))
18148 yyn += YYSYMBOL_YYerror;
18149 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
18151 yyn = yytable[yyn];
18161 yyerror_range[1] = *yylsp;
18162 yydestruct (
"Error: popping",
18163 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
18166#line 2669 "parse.y"
18167 {after_pop_stack(1, p);}
18168#line 18169 "parse.c"
18171 YY_STACK_PRINT (yyss, yyssp, p);
18174 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
18176 YY_IGNORE_MAYBE_UNINITIALIZED_END
18178 yyerror_range[2] = yylloc;
18180 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
18183 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp, p);
18185#line 2668 "parse.y"
18186 {after_shift_error_token(p);}
18187#line 18188 "parse.c"
18214 yyerror (&yylloc, p, YY_(
"memory exhausted"));
18223 if (yychar != YYEMPTY)
18227 yytoken = YYTRANSLATE (yychar);
18228 yydestruct (
"Cleanup: discarding lookahead",
18229 yytoken, &yylval, &yylloc, p);
18233 YYPOPSTACK (yylen);
18234 YY_STACK_PRINT (yyss, yyssp, p);
18235 while (yyssp != yyss)
18237 yydestruct (
"Cleanup: popping",
18238 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
18243 YYSTACK_FREE (yyss);
18245 if (yymsg != yymsgbuf)
18246 YYSTACK_FREE (yymsg);
18250#line 6719 "parse.y"
18255# define yylval (*p->lval)
18263#define set_parser_s_value(x) (ifdef_ripper(p->s_value = (x), (void)0))
18265# define set_yylval_node(x) { \
18266 YYLTYPE _cur_loc; \
18267 rb_parser_set_location(p, &_cur_loc); \
18268 yylval.node = (x); \
18269 set_parser_s_value(STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)); \
18271# define set_yylval_str(x) \
18273 set_yylval_node(NEW_STR(x, &_cur_loc)); \
18274 set_parser_s_value(rb_str_new_mutable_parser_string(x)); \
18276# define set_yylval_num(x) { \
18277 yylval.num = (x); \
18278 set_parser_s_value(x); \
18280# define set_yylval_id(x) (yylval.id = (x))
18281# define set_yylval_name(x) { \
18282 (yylval.id = (x)); \
18283 set_parser_s_value(ID2SYM(x)); \
18285# define yylval_id() (yylval.id)
18287#define set_yylval_noname() set_yylval_id(keyword_nil)
18288#define has_delayed_token(p) (p->delayed.token != NULL)
18291#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
18292#define dispatch_scan_event(p, t) parser_dispatch_scan_event(p, t, __LINE__)
18297 const char *
const pcur = p->lex.pcur;
18298 const char *
const ptok = p->lex.ptok;
18299 if (p->keep_tokens && (pcur < ptok)) {
18300 rb_bug(
"lex.pcur < lex.ptok. (line: %d) %"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"",
18301 p->ruby_sourceline, ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur);
18303 return pcur > ptok;
18310 case '"':
return "\\\"";
18311 case '\\':
return "\\\\";
18312 case '\0':
return "\\0";
18313 case '\n':
return "\\n";
18314 case '\r':
return "\\r";
18315 case '\t':
return "\\t";
18316 case '\f':
return "\\f";
18317 case '\013':
return "\\v";
18318 case '\010':
return "\\b";
18319 case '\007':
return "\\a";
18320 case '\033':
return "\\e";
18321 case '\x7f':
return "\\c?";
18330 const char *ptr = str->ptr;
18331 const char *pend = ptr + str->len;
18332 const char *prev = ptr;
18333 char charbuf[5] = {
'\\',
'x', 0, 0, 0};
18336 while (ptr < pend) {
18339 int n = rb_enc_precise_mbclen(ptr, pend, enc);
18341 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18342 n = rb_enc_mbminlen(enc);
18343 if (pend < ptr + n)
18344 n = (int)(pend - ptr);
18346 c = *ptr & 0xf0 >> 4;
18347 charbuf[2] = (c < 10) ?
'0' + c :
'A' + c - 10;
18349 charbuf[3] = (c < 10) ?
'0' + c :
'A' + c - 10;
18350 parser_str_cat(result, charbuf, 4);
18356 c = rb_enc_mbc_to_codepoint(ptr, pend, enc);
18358 cc = escaped_char(c);
18360 if (ptr - n > prev) parser_str_cat(result, prev, ptr - n - prev);
18361 parser_str_cat_cstr(result, cc);
18364 else if (rb_enc_isascii(c, enc) &&
ISPRINT(c)) {
18367 if (ptr - n > prev) {
18368 parser_str_cat(result, prev, ptr - n - prev);
18371 parser_str_cat(result, prev, ptr - prev);
18375 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18384 token->id = p->token_id;
18385 token->type_name = parser_token2char(p, t);
18387 token->loc.beg_pos = p->yylloc->beg_pos;
18388 token->loc.end_pos = p->yylloc->end_pos;
18389 rb_parser_ary_push_ast_token(p, p->tokens, token);
18394 rb_parser_printf(p,
"Append tokens (line: %d) [%d, :%s, \"%s\", [%d, %d, %d, %d]]\n",
18395 line, token->id, token->type_name, str_escaped->ptr,
18396 token->loc.beg_pos.lineno, token->loc.beg_pos.column,
18397 token->loc.end_pos.lineno, token->loc.end_pos.column);
18398 rb_parser_string_free(p, str_escaped);
18403parser_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t,
int line)
18405 debug_token_line(p,
"parser_dispatch_scan_event", line);
18407 if (!parser_has_token(p))
return;
18409 RUBY_SET_YYLLOC(*p->yylloc);
18411 if (p->keep_tokens) {
18412 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pcur - p->lex.ptok, p->enc);
18413 parser_append_tokens(p, str, t, line);
18419#define dispatch_delayed_token(p, t) parser_dispatch_delayed_token(p, t, __LINE__)
18421parser_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t,
int line)
18423 debug_token_line(p,
"parser_dispatch_delayed_token", line);
18425 if (!has_delayed_token(p))
return;
18427 RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(*p->yylloc);
18429 if (p->keep_tokens) {
18431 parser_append_tokens(p, p->delayed.token, t, line);
18434 rb_parser_string_free(p, p->delayed.token);
18437 p->delayed.token = NULL;
18440#define literal_flush(p, ptr) ((void)(ptr))
18445 if (p->lex.pcur < p->lex.ptok) rb_raise(
rb_eRuntimeError,
"lex.pcur < lex.ptok");
18446 return p->lex.pcur > p->lex.ptok;
18450ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
18452 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
18453 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
18454 RUBY_SET_YYLLOC(*p->yylloc);
18460ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
18462 if (!ripper_has_scan_event(p))
return;
18464 set_parser_s_value(ripper_scan_event_val(p, t));
18466#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
18469ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
18472 int saved_line = p->ruby_sourceline;
18473 const char *saved_tokp = p->lex.ptok;
18474 VALUE s_value, str;
18476 if (!has_delayed_token(p))
return;
18477 p->ruby_sourceline = p->delayed.beg_line;
18478 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
18479 str = rb_str_new_mutable_parser_string(p->delayed.token);
18480 rb_parser_string_free(p, p->delayed.token);
18481 s_value = ripper_dispatch1(p, ripper_token2eventid(t), str);
18482 set_parser_s_value(s_value);
18483 p->delayed.token = NULL;
18484 p->ruby_sourceline = saved_line;
18485 p->lex.ptok = saved_tokp;
18487#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
18493 return rb_enc_isalnum((
unsigned char)*ptr, enc) || *ptr ==
'_' || !
ISASCII(*ptr);
18499 const char *ptr = p->lex.pcur + at;
18500 if (lex_eol_ptr_n_p(p, ptr,
len-1))
return false;
18501 if (memcmp(ptr, str,
len))
return false;
18502 if (lex_eol_ptr_n_p(p, ptr,
len))
return true;
18503 return !is_identchar(p, ptr+
len, p->lex.pend, p->enc);
18509 return !(p)->eofp && is_identchar(p, p->lex.pcur-1, p->lex.pend, p->enc);
18515 return ISASCII(*(p->lex.pcur-1));
18521 int column = 1, nonspc = 0, i;
18522 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
18523 if (*ptr ==
'\t') {
18524 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
18527 if (*ptr !=
' ' && *ptr !=
'\t') {
18532 ptinfo->beg = loc->beg_pos;
18533 ptinfo->indent = column;
18534 ptinfo->nonspc = nonspc;
18542 if (!p->token_info_enabled)
return;
18544 ptinfo->token = token;
18545 ptinfo->next = p->token_info;
18546 token_info_setup(ptinfo, p->lex.pbeg, loc);
18548 p->token_info = ptinfo;
18556 if (!ptinfo_beg)
return;
18559 token_info_warn(p, token, ptinfo_beg, 1, loc);
18561 p->token_info = ptinfo_beg->next;
18562 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
18570 if (!ptinfo_beg)
return;
18571 p->token_info = ptinfo_beg->next;
18573 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
18574 ptinfo_beg->beg.column != beg_pos.column ||
18575 strcmp(ptinfo_beg->token, token)) {
18576 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
18577 beg_pos.lineno, beg_pos.column, token,
18578 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
18579 ptinfo_beg->token);
18582 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
18588 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
18589 if (!p->token_info_enabled)
return;
18590 if (!ptinfo_beg)
return;
18591 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
18592 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
18593 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
18594 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
18595 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
18596 rb_warn3L(ptinfo_end->beg.lineno,
18597 "mismatched indentations at '%s' with '%s' at %d",
18598 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
18602parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
18604 int len = rb_enc_precise_mbclen(ptr, p->lex.pend, p->enc);
18606 compile_error(p,
"invalid multibyte char (%s)", rb_enc_name(p->enc));
18617 int lineno = p->ruby_sourceline;
18621 else if (yylloc->beg_pos.lineno == lineno) {
18622 str = p->lex.lastline;
18627 ruby_show_error_line(p, p->error_buffer, yylloc, lineno, str);
18637 yylloc = RUBY_SET_YYLLOC(current);
18639 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
18640 p->ruby_sourceline != yylloc->end_pos.lineno)) {
18644 parser_compile_error(p, yylloc,
"%s", msg);
18645 parser_show_error_line(p, yylloc);
18653 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
18660 const int max_line_margin = 30;
18661 const char *ptr, *ptr_end, *pt, *pb;
18662 const char *pre =
"", *post =
"", *pend;
18663 const char *code =
"", *caret =
"";
18665 const char *
const pbeg = PARSER_STRING_PTR(str);
18670 if (!yylloc)
return;
18671 pend = rb_parser_string_end(str);
18672 if (pend > pbeg && pend[-1] ==
'\n') {
18673 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
18677 if (lineno == yylloc->end_pos.lineno &&
18678 (pend - pbeg) > yylloc->end_pos.column) {
18679 pt = pbeg + yylloc->end_pos.column;
18682 ptr = ptr_end = pt;
18683 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
18684 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
18686 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
18687 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
18689 len = ptr_end - ptr;
18692 ptr = rb_enc_prev_char(pbeg, ptr, pt, rb_parser_str_get_encoding(str));
18693 if (ptr > pbeg) pre =
"...";
18695 if (ptr_end < pend) {
18696 ptr_end = rb_enc_prev_char(pt, ptr_end, pend, rb_parser_str_get_encoding(str));
18697 if (ptr_end < pend) post =
"...";
18701 if (lineno == yylloc->beg_pos.lineno) {
18702 pb += yylloc->beg_pos.column;
18703 if (pb > pt) pb = pt;
18705 if (pb < ptr) pb = ptr;
18706 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
18709 if (
RTEST(errbuf)) {
18710 mesg = rb_attr_get(errbuf, idMesg);
18711 if (char_at_end(p, mesg,
'\n') !=
'\n')
18715 mesg = rb_enc_str_new(0, 0, rb_parser_str_get_encoding(str));
18717 if (!errbuf && rb_stderr_tty_p()) {
18718#define CSI_BEGIN "\033["
18721 CSI_BEGIN
""CSI_SGR
"%s"
18722 CSI_BEGIN
"1"CSI_SGR
"%.*s"
18723 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
18724 CSI_BEGIN
";1"CSI_SGR
"%.*s"
18725 CSI_BEGIN
""CSI_SGR
"%s"
18728 (
int)(pb - ptr), ptr,
18729 (
int)(pt - pb), pb,
18730 (
int)(ptr_end - pt), pt,
18736 len = ptr_end - ptr;
18737 lim = pt < pend ? pt : pend;
18738 i = (int)(lim - ptr);
18744 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
18750 memset(p2,
'~', (lim - ptr));
18754 rb_str_catf(mesg,
"%s%.*s%s\n""%s%s\n",
18755 pre, (
int)
len, code, post,
18758 if (!errbuf) rb_write_error_str(mesg);
18765 const char *pcur = 0, *ptok = 0;
18766 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
18767 p->ruby_sourceline == yylloc->end_pos.lineno) {
18768 pcur = p->lex.pcur;
18769 ptok = p->lex.ptok;
18770 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
18771 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
18773 parser_yyerror0(p, msg);
18775 p->lex.ptok = ptok;
18776 p->lex.pcur = pcur;
18784 dispatch1(parse_error, STR_NEW2(msg));
18796vtable_size(
const struct vtable *tbl)
18798 if (!DVARS_TERMINAL_P(tbl)) {
18816 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
18821#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
18824vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
18829 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
18832 if (!DVARS_TERMINAL_P(tbl)) {
18834 ruby_sized_xfree(tbl->tbl, tbl->capa *
sizeof(
ID));
18836 ruby_sized_xfree(tbl,
sizeof(*tbl));
18839#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
18842vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
18847 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
18848 line, name, (
void *)tbl, rb_id2name(
id));
18851 if (DVARS_TERMINAL_P(tbl)) {
18852 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
18855 if (tbl->pos == tbl->capa) {
18856 tbl->capa = tbl->capa * 2;
18857 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
18859 tbl->tbl[tbl->pos++] = id;
18861#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
18864vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
18865 struct vtable *tbl,
int n)
18868 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
18869 line, name, (
void *)tbl, n);
18871 if (tbl->pos < n) {
18872 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
18877#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
18880vtable_included(
const struct vtable * tbl,
ID id)
18884 if (!DVARS_TERMINAL_P(tbl)) {
18885 for (i = 0; i < tbl->pos; i++) {
18886 if (tbl->tbl[i] ==
id) {
18899 return strcmp(p->ruby_sourcefile,
"-e") == 0;
18906yycompile0(
VALUE arg)
18913 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string) && !e_option_supplied(p)) {
18917 if (p->debug_lines) {
18918 p->ast->body.script_lines = p->debug_lines;
18922#define RUBY_DTRACE_PARSE_HOOK(name) \
18923 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
18924 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
18926 RUBY_DTRACE_PARSE_HOOK(BEGIN);
18928 RUBY_DTRACE_PARSE_HOOK(END);
18930 p->debug_lines = 0;
18932 xfree(p->lex.strterm);
18933 p->lex.strterm = 0;
18934 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
18935 if (n || p->error_p) {
18936 VALUE mesg = p->error_buffer;
18938 mesg = syntax_error_new();
18940 if (!p->error_tolerant) {
18941 rb_set_errinfo(mesg);
18945 tree = p->eval_tree;
18947 tree = NEW_NIL(&NULL_LOC);
18952 NODE *body = parser_append_options(p, RNODE_SCOPE(tree)->nd_body);
18953 prelude = block_append(p, p->eval_tree_begin, body);
18954 RNODE_SCOPE(tree)->nd_body = prelude;
18955 p->ast->body.frozen_string_literal = p->frozen_string_literal;
18956 p->ast->body.coverage_enabled = cov;
18957 if (p->keep_tokens) {
18958 p->ast->node_buffer->tokens = tokens;
18962 p->ast->body.root = tree;
18963 p->ast->body.line_count = p->line_count;
18971 if (
NIL_P(fname)) {
18972 p->ruby_sourcefile_string =
Qnil;
18973 p->ruby_sourcefile =
"(none)";
18976 p->ruby_sourcefile_string = rb_str_to_interned_str(fname);
18979 p->ruby_sourceline = line - 1;
18983 p->ast = ast = rb_ast_new();
18984 compile_callback(yycompile0, (
VALUE)p);
18998 rb_encoding *enc = rb_parser_str_get_encoding(s);
18999 if (!rb_enc_asciicompat(enc)) {
19000 rb_raise(rb_eArgError,
"invalid source encoding");
19009 if (!line)
return 0;
19011 string_buffer_append(p, line);
19012 must_be_ascii_compatible(p, line);
19018rb_parser_compile(
rb_parser_t *p, rb_parser_lex_gets_func *gets,
VALUE fname, rb_parser_input_data input,
int line)
19020 p->lex.gets = gets;
19021 p->lex.input = input;
19022 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
19024 return yycompile(p, fname, line);
19028#define STR_FUNC_ESCAPE 0x01
19029#define STR_FUNC_EXPAND 0x02
19030#define STR_FUNC_REGEXP 0x04
19031#define STR_FUNC_QWORDS 0x08
19032#define STR_FUNC_SYMBOL 0x10
19033#define STR_FUNC_INDENT 0x20
19034#define STR_FUNC_LABEL 0x40
19035#define STR_FUNC_LIST 0x4000
19036#define STR_FUNC_TERM 0x8000
19039 str_label = STR_FUNC_LABEL,
19041 str_dquote = (STR_FUNC_EXPAND),
19042 str_xquote = (STR_FUNC_EXPAND),
19043 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
19044 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
19045 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
19046 str_ssym = (STR_FUNC_SYMBOL),
19047 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
19055 pstr = rb_parser_encoding_string_new(p, ptr,
len, enc);
19057 if (!(func & STR_FUNC_REGEXP)) {
19058 if (rb_parser_is_ascii_string(p, pstr)) {
19060 else if (rb_is_usascii_enc((
void *)enc0) && enc != rb_utf8_encoding()) {
19062 enc = rb_ascii8bit_encoding();
19063 PARSER_ENCODING_CODERANGE_SET(pstr, enc, RB_PARSER_ENC_CODERANGE_VALID);
19073 return strterm->heredoc;
19077new_strterm(
struct parser_params *p,
int func,
int term,
int paren)
19080 strterm->u.literal.func = func;
19081 strterm->u.literal.term = term;
19082 strterm->u.literal.paren = paren;
19090 strterm->heredoc =
true;
19094#define peek(p,c) peek_n(p, (c), 0)
19095#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
19096#define peekc(p) peekc_n(p, 0)
19097#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
19099#define add_delayed_token(p, tok, end) parser_add_delayed_token(p, tok, end, __LINE__)
19101parser_add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end,
int line)
19103 debug_token_line(p,
"add_delayed_token", line);
19106 if (has_delayed_token(p)) {
19107 bool next_line = parser_string_char_at_end(p, p->delayed.token, 0) ==
'\n';
19108 int end_line = (next_line ? 1 : 0) + p->delayed.end_line;
19109 int end_col = (next_line ? 0 : p->delayed.end_col);
19110 if (end_line != p->ruby_sourceline || end_col != tok - p->lex.pbeg) {
19111 dispatch_delayed_token(p, tSTRING_CONTENT);
19114 if (!has_delayed_token(p)) {
19115 p->delayed.token = rb_parser_string_new(p, 0, 0);
19116 rb_parser_enc_associate(p, p->delayed.token, p->enc);
19117 p->delayed.beg_line = p->ruby_sourceline;
19118 p->delayed.beg_col =
rb_long2int(tok - p->lex.pbeg);
19120 parser_str_cat(p->delayed.token, tok, end - tok);
19121 p->delayed.end_line = p->ruby_sourceline;
19122 p->delayed.end_col =
rb_long2int(end - p->lex.pbeg);
19130 p->lex.pbeg = p->lex.pcur = PARSER_STRING_PTR(str);
19131 p->lex.pend = p->lex.pcur + PARSER_STRING_LEN(str);
19132 p->lex.lastline = str;
19139 p->lex.nextline = 0;
19144 if (!lex_eol_ptr_p(p, p->lex.pbeg) && *(p->lex.pend-1) !=
'\n') {
19148 if (!p->lex.input || !(str = lex_getline(p))) {
19155 if (p->debug_lines) {
19156 if (set_encoding) rb_parser_enc_associate(p, str, p->enc);
19158 rb_parser_ary_push_script_line(p, p->debug_lines, copy);
19161 p->cr_seen = FALSE;
19163 else if (str == AFTER_HEREDOC_WITHOUT_TERMINATOR) {
19167 add_delayed_token(p, p->lex.ptok, p->lex.pend);
19168 if (p->heredoc_end > 0) {
19169 p->ruby_sourceline = p->heredoc_end;
19170 p->heredoc_end = 0;
19172 p->ruby_sourceline++;
19173 set_lastline(p, str);
19181 if (peek(p,
'\n')) {
19193 if (UNLIKELY(lex_eol_p(p) || p->eofp || p->lex.nextline > AFTER_HEREDOC_WITHOUT_TERMINATOR)) {
19194 if (nextline(p, set_encoding))
return -1;
19196 c = (
unsigned char)*p->lex.pcur++;
19197 if (UNLIKELY(c ==
'\r')) {
19198 c = parser_cr(p, c);
19203#define nextc(p) nextc0(p, TRUE)
19208 if (c == -1)
return;
19211 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
19216#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
19218#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
19219#define tok(p) (p)->tokenbuf
19220#define toklen(p) (p)->tokidx
19225 const char *ptr = p->lex.pcur;
19226 while (!lex_eol_ptr_p(p, ptr)) {
19227 int c = (
unsigned char)*ptr++;
19228 int eol = (c ==
'\n' || c ==
'#');
19240 if (!p->tokenbuf) {
19242 p->tokenbuf =
ALLOC_N(
char, 60);
19244 if (p->toksiz > 4096) {
19248 return p->tokenbuf;
19256 if (p->tokidx >= p->toksiz) {
19257 do {p->toksiz *= 2;}
while (p->toksiz < p->tokidx);
19258 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19260 return &p->tokenbuf[p->tokidx-n];
19266 p->tokenbuf[p->tokidx++] = (char)c;
19267 if (p->tokidx >= p->toksiz) {
19269 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19278 c = (int)ruby_scan_hex(p->lex.pcur, 2, numlen);
19281 yyerror0(
"invalid hex escape");
19282 dispatch_scan_event(p, tSTRING_CONTENT);
19285 p->lex.pcur += *numlen;
19289#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
19292escaped_control_code(
int c)
19318#define WARN_SPACE_CHAR(c, prefix) \
19319 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c))
19323 int regexp_literal,
const char *begin)
19325 const int wide = !begin;
19327 int codepoint = (int)ruby_scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
19329 p->lex.pcur += numlen;
19330 if (p->lex.strterm == NULL ||
19331 strterm_is_heredoc(p->lex.strterm) ||
19332 (p->lex.strterm->u.literal.func != str_regexp)) {
19333 if (!begin) begin = p->lex.pcur;
19334 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
19335 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19336 yyerror0(
"invalid Unicode escape");
19337 dispatch_scan_event(p, tSTRING_CONTENT);
19338 return wide && numlen > 0;
19340 if (codepoint > 0x10ffff) {
19341 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19342 yyerror0(
"invalid Unicode codepoint (too large)");
19343 dispatch_scan_event(p, tSTRING_CONTENT);
19346 if ((codepoint & 0xfffff800) == 0xd800) {
19347 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19348 yyerror0(
"invalid Unicode codepoint");
19349 dispatch_scan_event(p, tSTRING_CONTENT);
19353 if (regexp_literal) {
19354 tokcopy(p, (
int)numlen);
19356 else if (codepoint >= 0x80) {
19358 if (*encp && utf8 != *encp) {
19359 YYLTYPE loc = RUBY_INIT_YYLLOC();
19360 compile_error(p,
"UTF-8 mixed within %s source", rb_enc_name(*encp));
19361 parser_show_error_line(p, &loc);
19365 tokaddmbc(p, codepoint, *encp);
19368 tokadd(p, codepoint);
19378 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19380 p->lex.pcur +=
len - 1;
19388 int term,
int symbol_literal,
int regexp_literal)
19395 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
19397 const int open_brace =
'{', close_brace =
'}';
19399 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
19401 if (peek(p, open_brace)) {
19402 if (regexp_literal && p->lex.strterm->u.literal.func == str_regexp) {
19409 tokadd(p, open_brace);
19410 while (!lex_eol_ptr_p(p, ++p->lex.pcur)) {
19412 if (c == close_brace) {
19417 else if (c == term) {
19420 if (c ==
'\\' && !lex_eol_n_p(p, 1)) {
19422 c = *++p->lex.pcur;
19424 tokadd_mbchar(p, c);
19428 const char *second = NULL;
19429 int c, last = nextc(p);
19430 if (lex_eol_p(p))
goto unterminated;
19431 while (
ISSPACE(c = peekc(p)) && !lex_eol_ptr_p(p, ++p->lex.pcur));
19432 while (c != close_brace) {
19433 if (c == term)
goto unterminated;
19434 if (second == multiple_codepoints)
19435 second = p->lex.pcur;
19436 if (regexp_literal) tokadd(p, last);
19437 if (!tokadd_codepoint(p, encp, regexp_literal, NULL)) {
19440 while (
ISSPACE(c = peekc(p))) {
19441 if (lex_eol_ptr_p(p, ++p->lex.pcur))
goto unterminated;
19444 if (term == -1 && !second)
19445 second = multiple_codepoints;
19448 if (c != close_brace) {
19450 flush_string_content(p, rb_utf8_encoding(), 0);
19451 yyerror0(
"unterminated Unicode escape");
19452 dispatch_scan_event(p, tSTRING_CONTENT);
19455 if (second && second != multiple_codepoints) {
19456 const char *pcur = p->lex.pcur;
19457 p->lex.pcur = second;
19458 dispatch_scan_event(p, tSTRING_CONTENT);
19460 p->lex.pcur = pcur;
19461 yyerror0(multiple_codepoints);
19465 if (regexp_literal) tokadd(p, close_brace);
19470 if (!tokadd_codepoint(p, encp, regexp_literal, p->lex.pcur -
rb_strlen_lit(
"\\u"))) {
19477#define ESCAPE_CONTROL 1
19478#define ESCAPE_META 2
19481read_escape(
struct parser_params *p,
int flags,
const char *begin)
19486 switch (c = nextc(p)) {
19511 case '0':
case '1':
case '2':
case '3':
19512 case '4':
case '5':
case '6':
case '7':
19514 c = (int)ruby_scan_oct(p->lex.pcur, 3, &numlen);
19515 p->lex.pcur += numlen;
19519 c = tok_hex(p, &numlen);
19520 if (numlen == 0)
return 0;
19530 if (flags & ESCAPE_META)
goto eof;
19531 if ((c = nextc(p)) !=
'-') {
19534 if ((c = nextc(p)) ==
'\\') {
19535 switch (peekc(p)) {
19536 case 'u':
case 'U':
19540 return read_escape(p, flags|ESCAPE_META, begin) | 0x80;
19542 else if (c == -1)
goto eof;
19548 int c2 = escaped_control_code(c);
19550 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
19551 WARN_SPACE_CHAR(c2,
"\\M-");
19554 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
19557 else if (
ISCNTRL(c))
goto eof;
19558 return ((c & 0xff) | 0x80);
19562 if ((c = nextc(p)) !=
'-') {
19566 if (flags & ESCAPE_CONTROL)
goto eof;
19567 if ((c = nextc(p))==
'\\') {
19568 switch (peekc(p)) {
19569 case 'u':
case 'U':
19573 c = read_escape(p, flags|ESCAPE_CONTROL, begin);
19577 else if (c == -1)
goto eof;
19583 int c2 = escaped_control_code(c);
19586 if (flags & ESCAPE_META) {
19587 WARN_SPACE_CHAR(c2,
"\\M-");
19590 WARN_SPACE_CHAR(c2,
"");
19594 if (flags & ESCAPE_META) {
19595 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
19598 WARN_SPACE_CHAR(c2,
"\\C-");
19602 else if (
ISCNTRL(c))
goto eof;
19608 flush_string_content(p, p->enc, p->lex.pcur - begin);
19609 yyerror0(
"Invalid escape character syntax");
19610 dispatch_scan_event(p, tSTRING_CONTENT);
19625 int len = rb_enc_codelen(c, enc);
19626 rb_enc_mbcput(c, tokspace(p,
len), enc);
19634 const char *begin = p->lex.pcur;
19636 switch (c = nextc(p)) {
19640 case '0':
case '1':
case '2':
case '3':
19641 case '4':
case '5':
case '6':
case '7':
19643 ruby_scan_oct(--p->lex.pcur, 3, &numlen);
19644 if (numlen == 0)
goto eof;
19645 p->lex.pcur += numlen;
19646 tokcopy(p, (
int)numlen + 1);
19652 tok_hex(p, &numlen);
19653 if (numlen == 0)
return -1;
19654 tokcopy(p, (
int)numlen + 2);
19660 flush_string_content(p, p->enc, p->lex.pcur - begin);
19661 yyerror0(
"Invalid escape character syntax");
19673char_to_option(
int c)
19679 val = RE_ONIG_OPTION_IGNORECASE;
19682 val = RE_ONIG_OPTION_EXTEND;
19685 val = RE_ONIG_OPTION_MULTILINE;
19694#define ARG_ENCODING_FIXED 16
19695#define ARG_ENCODING_NONE 32
19696#define ENC_ASCII8BIT 1
19697#define ENC_EUC_JP 2
19698#define ENC_Windows_31J 3
19702char_to_option_kcode(
int c,
int *option,
int *kcode)
19708 *kcode = ENC_ASCII8BIT;
19709 return (*option = ARG_ENCODING_NONE);
19711 *kcode = ENC_EUC_JP;
19714 *kcode = ENC_Windows_31J;
19721 return (*option = char_to_option(c));
19723 *option = ARG_ENCODING_FIXED;
19736 while (c = nextc(p),
ISALPHA(c)) {
19738 options |= RE_OPTION_ONCE;
19740 else if (char_to_option_kcode(c, &opt, &kc)) {
19742 if (kc != ENC_ASCII8BIT) kcode = c;
19756 YYLTYPE loc = RUBY_INIT_YYLLOC();
19758 compile_error(p,
"unknown regexp option%s - %*s",
19759 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
19760 parser_show_error_line(p, &loc);
19762 return options | RE_OPTION_ENCODING(kcode);
19768 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19769 if (
len < 0)
return -1;
19771 p->lex.pcur += --
len;
19772 if (
len > 0) tokcopy(p,
len);
19777simple_re_meta(
int c)
19780 case '$':
case '*':
case '+':
case '.':
19781 case '?':
case '^':
case '|':
19782 case ')':
case ']':
case '}':
case '>':
19790parser_update_heredoc_indent(
struct parser_params *p,
int c)
19792 if (p->heredoc_line_indent == -1) {
19793 if (c ==
'\n') p->heredoc_line_indent = 0;
19797 p->heredoc_line_indent++;
19800 else if (c ==
'\t') {
19801 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
19802 p->heredoc_line_indent = w * TAB_WIDTH;
19805 else if (c !=
'\n') {
19806 if (p->heredoc_indent > p->heredoc_line_indent) {
19807 p->heredoc_indent = p->heredoc_line_indent;
19809 p->heredoc_line_indent = -1;
19813 p->heredoc_line_indent = 0;
19822 YYLTYPE loc = RUBY_INIT_YYLLOC();
19823 const char *n1 = rb_enc_name(enc1), *n2 = rb_enc_name(enc2);
19824 compile_error(p,
"%s mixed within %s source", n1, n2);
19825 parser_show_error_line(p, &loc);
19831 const char *pos = p->lex.pcur;
19833 parser_mixed_error(p, enc1, enc2);
19838nibble_char_upper(
unsigned int c)
19841 return c + (c < 10 ?
'0' :
'A' - 10);
19846 int func,
int term,
int paren,
long *nest,
19850 bool erred =
false;
19852 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
19853 int top_of_line = FALSE;
19856#define mixed_error(enc1, enc2) \
19857 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
19858#define mixed_escape(beg, enc1, enc2) \
19859 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
19861 while ((c = nextc(p)) != -1) {
19862 if (p->heredoc_indent > 0) {
19863 parser_update_heredoc_indent(p, c);
19866 if (top_of_line && heredoc_end == p->ruby_sourceline) {
19872 if (paren && c == paren) {
19875 else if (c == term) {
19876 if (!nest || !*nest) {
19882 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && !lex_eol_p(p)) {
19883 unsigned char c2 = *p->lex.pcur;
19884 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
19889 else if (c ==
'\\') {
19893 if (func & STR_FUNC_QWORDS)
break;
19894 if (func & STR_FUNC_EXPAND) {
19895 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
19906 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
19910 if ((func & STR_FUNC_EXPAND) == 0) {
19914 tokadd_utf8(p, enc, term,
19915 func & STR_FUNC_SYMBOL,
19916 func & STR_FUNC_REGEXP);
19920 if (c == -1)
return -1;
19922 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
19925 if (func & STR_FUNC_REGEXP) {
19931 c = read_escape(p, 0, p->lex.pcur - 1);
19936 *t++ = nibble_char_upper(c >> 4);
19937 *t++ = nibble_char_upper(c);
19942 if (c == term && !simple_re_meta(c)) {
19947 if ((c = tokadd_escape(p)) < 0)
19949 if (*enc && *enc != *encp) {
19950 mixed_escape(p->lex.ptok+2, *enc, *encp);
19954 else if (func & STR_FUNC_EXPAND) {
19956 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
19957 c = read_escape(p, 0, p->lex.pcur - 1);
19959 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
19962 else if (c != term && !(paren && c == paren)) {
19969 else if (!parser_isascii(p)) {
19974 else if (*enc != *encp) {
19975 mixed_error(*enc, *encp);
19978 if (tokadd_mbchar(p, c) == -1)
return -1;
19981 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
19989 else if (*enc != *encp) {
19990 mixed_error(*enc, *encp);
19996 top_of_line = (c ==
'\n');
20000 if (*enc) *encp = *enc;
20004#define NEW_STRTERM(func, term, paren) new_strterm(p, func, term, paren)
20009 p->lex.pcur -= back;
20010 if (has_delayed_token(p)) {
20011 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
20013 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20014 p->delayed.end_line = p->ruby_sourceline;
20015 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
20017 dispatch_delayed_token(p, tSTRING_CONTENT);
20018 p->lex.ptok = p->lex.pcur;
20020 dispatch_scan_event(p, tSTRING_CONTENT);
20021 p->lex.pcur += back;
20027#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
20028#define SPECIAL_PUNCT(idx) ( \
20029 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
20030 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
20031 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
20032 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
20033 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
20035const uint_least32_t ruby_global_name_punct_bits[] = {
20041#undef SPECIAL_PUNCT
20044static enum yytokentype
20045parser_peek_variable_name(struct parser_params *p)
20048 const char *ptr = p->lex.pcur;
20050 if (lex_eol_ptr_n_p(p, ptr, 1)) return 0;
20054 if ((c = *ptr) == '-') {
20055 if (lex_eol_ptr_p(p, ++ptr)) return 0;
20058 else if (is_global_name_punct(c) || ISDIGIT(c)) {
20059 return tSTRING_DVAR;
20063 if ((c = *ptr) == '@') {
20064 if (lex_eol_ptr_p(p, ++ptr)) return 0;
20070 p->command_start = TRUE;
20071 yylval.state = p->lex.state;
20072 return tSTRING_DBEG;
20076 if (!ISASCII(c) || c == '_' || ISALPHA(c))
20077 return tSTRING_DVAR;
20081#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
20082#define IS_END() IS_lex_state(EXPR_END_ANY)
20083#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
20084#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
20085#define IS_LABEL_POSSIBLE() (\
20086 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
20088#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
20089#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
20091static inline enum yytokentype
20092parser_string_term(struct parser_params *p, int func)
20094 xfree(p->lex.strterm);
20095 p->lex.strterm = 0;
20096 if (func & STR_FUNC_REGEXP) {
20097 set_yylval_num(regx_options(p));
20098 dispatch_scan_event(p, tREGEXP_END);
20099 SET_LEX_STATE(EXPR_END);
20100 return tREGEXP_END;
20102 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
20104 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
20107 SET_LEX_STATE(EXPR_END);
20108 return tSTRING_END;
20111static enum yytokentype
20112parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
20114 int func = quote->func;
20115 int term = quote->term;
20116 int paren = quote->paren;
20118 rb_encoding *enc = p->enc;
20119 rb_encoding *base_enc = 0;
20120 rb_parser_string_t *lit;
20122 if (func & STR_FUNC_TERM) {
20123 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
20124 SET_LEX_STATE(EXPR_END);
20125 xfree(p->lex.strterm);
20126 p->lex.strterm = 0;
20127 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
20130 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
20131 while (c != '\n' && ISSPACE(c = nextc(p)));
20134 if (func & STR_FUNC_LIST) {
20135 quote->func &= ~STR_FUNC_LIST;
20138 if (c == term && !quote->nest) {
20139 if (func & STR_FUNC_QWORDS) {
20140 quote->func |= STR_FUNC_TERM;
20141 pushback(p, c); /* dispatch the term at tSTRING_END */
20142 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20145 return parser_string_term(p, func);
20148 if (!ISSPACE(c)) pushback(p, c);
20149 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20153 if ((func & STR_FUNC_EXPAND) && c == '#') {
20154 enum yytokentype t = parser_peek_variable_name(p);
20160 if (tokadd_string(p, func, term, paren, "e->nest,
20161 &enc, &base_enc) == -1) {
20164# define unterminated_literal(mesg) yyerror0(mesg)
20166# define unterminated_literal(mesg) compile_error(p, mesg)
20168 literal_flush(p, p->lex.pcur);
20169 if (func & STR_FUNC_QWORDS) {
20170 /* no content to add, bailing out here */
20171 unterminated_literal("unterminated list meets end of file");
20172 xfree(p->lex.strterm);
20173 p->lex.strterm = 0;
20174 return tSTRING_END;
20176 if (func & STR_FUNC_REGEXP) {
20177 unterminated_literal("unterminated regexp meets end of file");
20180 unterminated_literal("unterminated string meets end of file");
20182 quote->func |= STR_FUNC_TERM;
20187 lit = STR_NEW3(tok(p), toklen(p), enc, func);
20188 set_yylval_str(lit);
20189 flush_string_content(p, enc, 0);
20191 return tSTRING_CONTENT;
20194static enum yytokentype
20195heredoc_identifier(struct parser_params *p)
20198 * term_len is length of `<<"END"` except `END`,
20199 * in this case term_len is 4 (<, <, " and ").
20201 long len, offset = p->lex.pcur - p->lex.pbeg;
20202 int c = nextc(p), term, func = 0, quote = 0;
20203 enum yytokentype token = tSTRING_BEG;
20208 func = STR_FUNC_INDENT;
20211 else if (c == '~') {
20213 func = STR_FUNC_INDENT;
20219 func |= str_squote; goto quoted;
20221 func |= str_dquote;
goto quoted;
20223 token = tXSTRING_BEG;
20224 func |= str_xquote;
goto quoted;
20231 while ((c = nextc(p)) != term) {
20232 if (c == -1 || c ==
'\r' || c ==
'\n') {
20233 yyerror0(
"unterminated here document identifier");
20240 if (!parser_is_identchar(p)) {
20242 if (func & STR_FUNC_INDENT) {
20243 pushback(p, indent > 0 ?
'~' :
'-');
20247 func |= str_dquote;
20249 int n = parser_precise_mbclen(p, p->lex.pcur-1);
20250 if (n < 0)
return 0;
20251 p->lex.pcur += --n;
20252 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
20257 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
20258 if ((
unsigned long)
len >= HERETERM_LENGTH_MAX)
20259 yyerror0(
"too long here document identifier");
20260 dispatch_scan_event(p, tHEREDOC_BEG);
20263 p->lex.strterm = new_heredoc(p);
20265 here->offset = offset;
20266 here->sourceline = p->ruby_sourceline;
20267 here->length = (unsigned)
len;
20268 here->quote = quote;
20270 here->lastline = p->lex.lastline;
20273 p->heredoc_indent = indent;
20274 p->heredoc_line_indent = 0;
20284 p->lex.strterm = 0;
20285 line = here->lastline;
20286 p->lex.lastline = line;
20287 p->lex.pbeg = PARSER_STRING_PTR(line);
20288 p->lex.pend = p->lex.pbeg + PARSER_STRING_LEN(line);
20289 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
20290 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
20291 p->heredoc_end = p->ruby_sourceline;
20292 p->ruby_sourceline = (int)here->sourceline;
20293 if (p->eofp) p->lex.nextline = AFTER_HEREDOC_WITHOUT_TERMINATOR;
20299dedent_string_column(
const char *str,
long len,
int width)
20303 for (i = 0; i <
len && col < width; i++) {
20304 if (str[i] ==
' ') {
20307 else if (str[i] ==
'\t') {
20308 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
20309 if (n > width)
break;
20327 len = PARSER_STRING_LEN(
string);
20328 str = PARSER_STRING_PTR(
string);
20330 i = dedent_string_column(str,
len, width);
20333 rb_parser_str_modify(
string);
20334 str = PARSER_STRING_PTR(
string);
20335 if (PARSER_STRING_LEN(
string) !=
len)
20336 rb_fatal(
"literal string changed: %s", PARSER_STRING_PTR(
string));
20338 rb_parser_str_set_len(p,
string,
len - i);
20345 NODE *node, *str_node, *prev_node;
20346 int indent = p->heredoc_indent;
20349 if (indent <= 0)
return root;
20350 if (!root)
return root;
20352 prev_node = node = str_node = root;
20353 if (nd_type_p(root, NODE_LIST)) str_node = RNODE_LIST(root)->nd_head;
20357 if (nd_fl_newline(str_node)) {
20358 dedent_string(p, lit, indent);
20363 else if (!literal_concat0(p, prev_lit, lit)) {
20367 NODE *end = RNODE_LIST(node)->as.nd_end;
20368 node = RNODE_LIST(prev_node)->nd_next = RNODE_LIST(node)->nd_next;
20370 if (nd_type_p(prev_node, NODE_DSTR))
20371 nd_set_type(prev_node, NODE_STR);
20374 RNODE_LIST(node)->as.nd_end = end;
20379 while ((nd_type_p(node, NODE_LIST) || nd_type_p(node, NODE_DSTR)) && (node = RNODE_LIST(prev_node = node)->nd_next) != 0) {
20381 if (!nd_type_p(node, NODE_LIST))
break;
20382 if ((str_node = RNODE_LIST(node)->nd_head) != 0) {
20383 enum node_type
type = nd_type(str_node);
20384 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
20394whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
20396 const char *beg = p->lex.pbeg;
20397 const char *ptr = p->lex.pend;
20399 if (ptr - beg <
len)
return FALSE;
20400 if (ptr > beg && ptr[-1] ==
'\n') {
20401 if (--ptr > beg && ptr[-1] ==
'\r') --ptr;
20402 if (ptr - beg <
len)
return FALSE;
20404 if (strncmp(eos, ptr -=
len,
len))
return FALSE;
20406 while (beg < ptr &&
ISSPACE(*beg)) beg++;
20414 if (strncmp(p->lex.pcur, word,
len))
return 0;
20415 if (lex_eol_n_p(p,
len))
return 1;
20416 int c = (
unsigned char)p->lex.pcur[
len];
20419 case '\0':
case '\004':
case '\032':
return 1;
20424#define NUM_SUFFIX_R (1<<0)
20425#define NUM_SUFFIX_I (1<<1)
20426#define NUM_SUFFIX_ALL 3
20432 const char *lastp = p->lex.pcur;
20434 while ((c = nextc(p)) != -1) {
20435 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
20436 result |= (mask & NUM_SUFFIX_I);
20437 mask &= ~NUM_SUFFIX_I;
20439 mask &= ~NUM_SUFFIX_R;
20442 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
20443 result |= (mask & NUM_SUFFIX_R);
20444 mask &= ~NUM_SUFFIX_R;
20448 p->lex.pcur = lastp;
20449 literal_flush(p, p->lex.pcur);
20458static enum yytokentype
20459set_number_literal(
struct parser_params *p,
enum yytokentype
type,
int suffix,
int base,
int seen_point)
20461 enum rb_numeric_type numeric_type = integer_literal;
20463 if (
type == tFLOAT) {
20464 numeric_type = float_literal;
20467 if (suffix & NUM_SUFFIX_R) {
20469 numeric_type = rational_literal;
20471 if (suffix & NUM_SUFFIX_I) {
20477 set_yylval_node(NEW_INTEGER(
strdup(tok(p)), base, &_cur_loc));
20480 set_yylval_node(NEW_FLOAT(
strdup(tok(p)), &_cur_loc));
20483 set_yylval_node(NEW_RATIONAL(
strdup(tok(p)), base, seen_point, &_cur_loc));
20486 set_yylval_node(NEW_IMAGINARY(
strdup(tok(p)), base, seen_point, numeric_type, &_cur_loc));
20487 (void)numeric_type;
20490 rb_bug(
"unexpected token: %d",
type);
20492 SET_LEX_STATE(EXPR_END);
20496#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
20498parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
20500 if (has_delayed_token(p))
20501 dispatch_delayed_token(p, tSTRING_CONTENT);
20504 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
20505 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
20507 if (p->keep_tokens) {
20508 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pend - p->lex.ptok, p->enc);
20509 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
20510 parser_append_tokens(p, str, tHEREDOC_END, line);
20514 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
20519static enum yytokentype
20522 int c, func, indent = 0;
20523 const char *eos, *ptr, *ptr_end;
20533 eos = PARSER_STRING_PTR(here->lastline) + here->offset;
20534 len = here->length;
20535 indent = (func = here->func) & STR_FUNC_INDENT;
20537 if ((c = nextc(p)) == -1) {
20540 if (!has_delayed_token(p)) {
20541 dispatch_scan_event(p, tSTRING_CONTENT);
20543 else if (p->delayed.end_line + 1 == p->ruby_sourceline) {
20544 if ((
len = p->lex.pcur - p->lex.ptok) > 0) {
20545 if (!(func & STR_FUNC_REGEXP)) {
20549 rb_is_usascii_enc(p->enc) &&
20550 enc != rb_utf8_encoding()) {
20551 enc = rb_ascii8bit_encoding();
20554 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20556 dispatch_delayed_token(p, tSTRING_CONTENT);
20559 dispatch_delayed_token(p, tSTRING_CONTENT);
20560 dispatch_scan_event(p, tSTRING_CONTENT);
20564 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20565 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
20568 SET_LEX_STATE(EXPR_END);
20569 return tSTRING_END;
20575 else if (p->heredoc_line_indent == -1) {
20580 p->heredoc_line_indent = 0;
20582 else if (whole_match_p(p, eos,
len, indent)) {
20583 dispatch_heredoc_end(p);
20585 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20587 SET_LEX_STATE(EXPR_END);
20588 return tSTRING_END;
20591 if (!(func & STR_FUNC_EXPAND)) {
20593 ptr = PARSER_STRING_PTR(p->lex.lastline);
20594 ptr_end = p->lex.pend;
20595 if (ptr_end > ptr) {
20596 switch (ptr_end[-1]) {
20598 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
20607 if (p->heredoc_indent > 0) {
20609 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
20611 p->heredoc_line_indent = 0;
20615 parser_str_cat(str, ptr, ptr_end - ptr);
20617 str = rb_parser_encoding_string_new(p, ptr, ptr_end - ptr, enc);
20618 if (!lex_eol_ptr_p(p, ptr_end)) parser_str_cat_cstr(str,
"\n");
20620 if (p->heredoc_indent > 0) {
20623 if (nextc(p) == -1) {
20625 rb_parser_string_free(p, str);
20630 }
while (!whole_match_p(p, eos,
len, indent));
20636 enum yytokentype t = parser_peek_variable_name(p);
20637 if (p->heredoc_line_indent != -1) {
20638 if (p->heredoc_indent > p->heredoc_line_indent) {
20639 p->heredoc_indent = p->heredoc_line_indent;
20641 p->heredoc_line_indent = -1;
20650 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
20651 if (p->eofp)
goto error;
20655 if (c ==
'\\') p->heredoc_line_indent = -1;
20657 str = STR_NEW3(tok(p), toklen(p), enc, func);
20659 set_yylval_str(str);
20661 if (bol) nd_set_fl_newline(yylval.node);
20663 flush_string_content(p, enc, 0);
20664 return tSTRING_CONTENT;
20666 tokadd(p, nextc(p));
20667 if (p->heredoc_indent > 0) {
20672 if ((c = nextc(p)) == -1)
goto error;
20673 }
while (!whole_match_p(p, eos,
len, indent));
20674 str = STR_NEW3(tok(p), toklen(p), enc, func);
20676 dispatch_heredoc_end(p);
20677 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20679 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
20682 s_value = p->s_value;
20684 set_yylval_str(str);
20686 set_parser_s_value(s_value);
20690 if (bol) nd_set_fl_newline(yylval.node);
20692 return tSTRING_CONTENT;
20702 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after '%c' operator", WARN_I(c));
20705 rb_warning1(
"ambiguous first argument; put parentheses or a space even after '%c' operator", WARN_I(c));
20718 switch (id_type(
id)) {
20722# define ERR(mesg) (yyerror0(mesg), Qtrue)
20724# define ERR(mesg) WARN_S(mesg)
20727 return ERR(
"formal argument cannot be a constant");
20729 return ERR(
"formal argument cannot be an instance variable");
20731 return ERR(
"formal argument cannot be a global variable");
20733 return ERR(
"formal argument cannot be a class variable");
20735 return ERR(
"formal argument must be local variable");
20738 shadowing_lvar(p,
id);
20746 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
20755 if (
len > 5 && name[nlen =
len - 5] ==
'-') {
20756 if (rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
20759 if (
len > 4 && name[nlen =
len - 4] ==
'-') {
20760 if (rb_memcicmp(name + nlen + 1,
"dos", 3) == 0)
20762 if (rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
20763 !(
len == 8 && rb_memcicmp(name,
"utf8-mac",
len) == 0))
20771parser_set_encode(
struct parser_params *p,
const char *name)
20777 const char *wrong = 0;
20779 case 'e':
case 'E': wrong =
"external";
break;
20780 case 'i':
case 'I': wrong =
"internal";
break;
20781 case 'f':
case 'F': wrong =
"filesystem";
break;
20782 case 'l':
case 'L': wrong =
"locale";
break;
20784 if (wrong &&
STRCASECMP(name, wrong) == 0)
goto unknown;
20785 idx = rb_enc_find_index(name);
20788 excargs[1] = rb_sprintf(
"unknown encoding name: %s", name);
20790 excargs[0] = rb_eArgError;
20791 excargs[2] = rb_make_backtrace();
20792 rb_ary_unshift(excargs[2], rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
20793 VALUE exc = rb_make_exception(3, excargs);
20794 ruby_show_error_line(p, exc, &(
YYLTYPE)RUBY_INIT_YYLLOC(), p->ruby_sourceline, p->lex.lastline);
20796 rb_ast_free(p->ast);
20801 enc = rb_enc_from_index(idx);
20802 if (!rb_enc_asciicompat(enc)) {
20803 excargs[1] = rb_sprintf(
"%s is not ASCII compatible", rb_enc_name(enc));
20808 if (p->debug_lines) {
20810 for (i = 0; i < p->debug_lines->len; i++) {
20811 rb_parser_enc_associate(p, p->debug_lines->data[i], enc);
20820 if (p->token_seen)
return false;
20821 return (p->line_count == (p->has_shebang ? 2 : 1));
20824typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
20825typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
20827static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
20830magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
20832 if (!comment_at_top(p)) {
20835 parser_set_encode(p, val);
20839parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
20842 case 't':
case 'T':
20847 case 'f':
case 'F':
20853 return parser_invalid_pragma_value(p, name, val);
20857parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
20859 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
20864parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
20866 int b = parser_get_bool(p, name, val);
20867 if (b >= 0) p->token_info_enabled = b;
20871parser_set_frozen_string_literal(
struct parser_params *p,
const char *name,
const char *val)
20875 if (p->token_seen) {
20876 rb_warning1(
"'%s' is ignored after any tokens", WARN_S(name));
20880 b = parser_get_bool(p, name, val);
20883 p->frozen_string_literal = b;
20887parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
20889 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
20890 if (*s ==
' ' || *s ==
'\t')
continue;
20891 if (*s ==
'#')
break;
20892 rb_warning1(
"'%s' is ignored unless in comment-only line", WARN_S(name));
20897 case 'n':
case 'N':
20899 p->ctxt.shareable_constant_value = rb_parser_shareable_none;
20903 case 'l':
case 'L':
20905 p->ctxt.shareable_constant_value = rb_parser_shareable_literal;
20909 case 'e':
case 'E':
20910 if (
STRCASECMP(val,
"experimental_copy") == 0) {
20911 p->ctxt.shareable_constant_value = rb_parser_shareable_copy;
20914 if (
STRCASECMP(val,
"experimental_everything") == 0) {
20915 p->ctxt.shareable_constant_value = rb_parser_shareable_everything;
20920 parser_invalid_pragma_value(p, name, val);
20923# if WARN_PAST_SCOPE
20925parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
20927 int b = parser_get_bool(p, name, val);
20928 if (b >= 0) p->past_scope_enabled = b;
20934 rb_magic_comment_setter_t func;
20935 rb_magic_comment_length_t length;
20939 {
"coding", magic_comment_encoding, parser_encode_length},
20940 {
"encoding", magic_comment_encoding, parser_encode_length},
20941 {
"frozen_string_literal", parser_set_frozen_string_literal},
20942 {
"shareable_constant_value", parser_set_shareable_constant_value},
20943 {
"warn_indent", parser_set_token_info},
20944# if WARN_PAST_SCOPE
20945 {
"warn_past_scope", parser_set_past_scope},
20950magic_comment_marker(
const char *str,
long len)
20957 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
20958 return str + i + 1;
20963 if (i + 1 >=
len)
return 0;
20964 if (str[i+1] !=
'-') {
20967 else if (str[i-1] !=
'-') {
20971 return str + i + 2;
20986 VALUE name = 0, val = 0;
20987 const char *beg, *end, *vbeg, *vend;
20988#define str_copy(_s, _p, _n) ((_s) \
20989 ? (void)(rb_str_resize((_s), (_n)), \
20990 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
20991 : (void)((_s) = STR_NEW((_p), (_n))))
20993 if (
len <= 7)
return FALSE;
20994 if (!!(beg = magic_comment_marker(str,
len))) {
20995 if (!(end = magic_comment_marker(beg, str +
len - beg)))
20999 len = end - beg - 3;
21009 for (;
len > 0 && *str; str++, --
len) {
21011 case '\'':
case '"':
case ':':
case ';':
21016 for (beg = str;
len > 0; str++, --
len) {
21018 case '\'':
case '"':
case ':':
case ';':
21029 if (!indicator)
return FALSE;
21033 do str++;
while (--
len > 0 &&
ISSPACE(*str));
21035 const char *tok_beg = str;
21037 for (vbeg = ++str; --
len > 0 && *str !=
'"'; str++) {
21038 if (*str ==
'\\') {
21050 for (vbeg = str;
len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --
len, str++);
21053 const char *tok_end = str;
21055 while (
len > 0 && (*str ==
';' ||
ISSPACE(*str))) --
len, str++;
21059 if (
len)
return FALSE;
21063 str_copy(name, beg, n);
21064 s = RSTRING_PTR(name);
21065 for (i = 0; i < n; ++i) {
21066 if (s[i] ==
'-') s[i] =
'_';
21069 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
21072 n = (*mc->length)(p, vbeg, n);
21074 str_copy(val, vbeg, n);
21075 p->lex.ptok = tok_beg;
21076 p->lex.pcur = tok_end;
21077 (*mc->func)(p, mc->name, RSTRING_PTR(val));
21080 }
while (++mc < magic_comments + numberof(magic_comments));
21082 str_copy(val, vbeg, vend - vbeg);
21091set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
21094 const char *beg = str;
21098 if (send - str <= 6)
return;
21100 case 'C':
case 'c': str += 6;
continue;
21101 case 'O':
case 'o': str += 5;
continue;
21102 case 'D':
case 'd': str += 4;
continue;
21103 case 'I':
case 'i': str += 3;
continue;
21104 case 'N':
case 'n': str += 2;
continue;
21105 case 'G':
case 'g': str += 1;
continue;
21106 case '=':
case ':':
21120 if (++str >= send)
return;
21123 if (*str !=
'=' && *str !=
':')
return;
21128 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
21129 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
21132 parser_set_encode(p, RSTRING_PTR(s));
21133 rb_str_resize(s, 0);
21139 int c = nextc0(p, FALSE);
21143 if (peek(p,
'!')) p->has_shebang = 1;
21146 if (!lex_eol_n_p(p, 2) &&
21147 (
unsigned char)p->lex.pcur[0] == 0xbb &&
21148 (
unsigned char)p->lex.pcur[1] == 0xbf) {
21149 p->enc = rb_utf8_encoding();
21152 if (p->debug_lines) {
21153 rb_parser_string_set_encoding(p->lex.lastline, p->enc);
21156 p->lex.pbeg = p->lex.pcur;
21165 p->enc = rb_parser_str_get_encoding(p->lex.lastline);
21169#define ambiguous_operator(tok, op, syn) ( \
21170 rb_warning0("'"op"' after local variable or literal is interpreted as binary operator"), \
21171 rb_warning0("even though it seems like "syn""))
21173#define ambiguous_operator(tok, op, syn) \
21174 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
21176#define warn_balanced(tok, op, syn) ((void) \
21177 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
21178 space_seen && !ISSPACE(c) && \
21179 (ambiguous_operator(tok, op, syn), 0)), \
21180 (enum yytokentype)(tok))
21182static enum yytokentype
21185 yyerror0(
"numeric literal without digits");
21186 if (peek(p,
'_')) nextc(p);
21188 return set_number_literal(p, tINTEGER, 0, 10, 0);
21191static enum yytokentype
21194 int is_float, seen_point, seen_e, nondigit;
21197 is_float = seen_point = seen_e = nondigit = 0;
21198 SET_LEX_STATE(EXPR_END);
21200 if (c ==
'-' || c ==
'+') {
21205 int start = toklen(p);
21207 if (c ==
'x' || c ==
'X') {
21213 if (nondigit)
break;
21220 }
while ((c = nextc(p)) != -1);
21224 if (toklen(p) == start) {
21225 return no_digits(p);
21227 else if (nondigit)
goto trailing_uc;
21228 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21229 return set_number_literal(p, tINTEGER, suffix, 16, 0);
21231 if (c ==
'b' || c ==
'B') {
21234 if (c ==
'0' || c ==
'1') {
21237 if (nondigit)
break;
21241 if (c !=
'0' && c !=
'1')
break;
21244 }
while ((c = nextc(p)) != -1);
21248 if (toklen(p) == start) {
21249 return no_digits(p);
21251 else if (nondigit)
goto trailing_uc;
21252 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21253 return set_number_literal(p, tINTEGER, suffix, 2, 0);
21255 if (c ==
'd' || c ==
'D') {
21261 if (nondigit)
break;
21268 }
while ((c = nextc(p)) != -1);
21272 if (toklen(p) == start) {
21273 return no_digits(p);
21275 else if (nondigit)
goto trailing_uc;
21276 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21277 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21283 if (c ==
'o' || c ==
'O') {
21286 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
21288 return no_digits(p);
21291 if (c >=
'0' && c <=
'7') {
21296 if (nondigit)
break;
21300 if (c <
'0' || c >
'9')
break;
21301 if (c >
'7')
goto invalid_octal;
21304 }
while ((c = nextc(p)) != -1);
21305 if (toklen(p) > start) {
21308 if (nondigit)
goto trailing_uc;
21309 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21310 return set_number_literal(p, tINTEGER, suffix, 8, 0);
21317 if (c >
'7' && c <=
'9') {
21319 yyerror0(
"Invalid octal digit");
21321 else if (c ==
'.' || c ==
'e' || c ==
'E') {
21327 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21328 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21334 case '0':
case '1':
case '2':
case '3':
case '4':
21335 case '5':
case '6':
case '7':
case '8':
case '9':
21341 if (nondigit)
goto trailing_uc;
21342 if (seen_point || seen_e) {
21347 if (c0 == -1 || !
ISDIGIT(c0)) {
21353 seen_point = toklen(p);
21372 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
21378 tokadd(p, nondigit);
21382 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
21386 if (nondigit)
goto decode_num;
21400 literal_flush(p, p->lex.pcur - 1);
21401 YYLTYPE loc = RUBY_INIT_YYLLOC();
21402 compile_error(p,
"trailing '%c' in number", nondigit);
21403 parser_show_error_line(p, &loc);
21407 enum yytokentype
type = tFLOAT;
21409 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
21410 if (suffix & NUM_SUFFIX_R) {
21415 if (
errno == ERANGE) {
21416 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
21420 return set_number_literal(p,
type, suffix, 0, seen_point);
21422 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21423 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21426static enum yytokentype
21432 const char *start = p->lex.pcur;
21435 SET_LEX_STATE(EXPR_VALUE);
21440 compile_error(p,
"incomplete character syntax");
21443 if (rb_enc_isspace(c, p->enc)) {
21445 int c2 = escaped_control_code(c);
21447 WARN_SPACE_CHAR(c2,
"?");
21452 SET_LEX_STATE(EXPR_VALUE);
21457 int w = parser_precise_mbclen(p, start);
21458 if (is_identchar(p, start, p->lex.pend, p->enc) &&
21459 !(lex_eol_ptr_n_p(p, start, w) || !is_identchar(p, start + w, p->lex.pend, p->enc))) {
21461 const char *ptr = start;
21463 int n = parser_precise_mbclen(p, ptr);
21464 if (n < 0)
return -1;
21466 }
while (!lex_eol_ptr_p(p, ptr) && is_identchar(p, ptr, p->lex.pend, p->enc));
21467 rb_warn2(
"'?' just followed by '%.*s' is interpreted as" \
21468 " a conditional operator, put a space after '?'",
21469 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
21473 else if (c ==
'\\') {
21474 if (peek(p,
'u')) {
21476 enc = rb_utf8_encoding();
21477 tokadd_utf8(p, &enc, -1, 0, 0);
21479 else if (!
ISASCII(c = peekc(p)) && c != -1) {
21481 if (tokadd_mbchar(p, c) == -1)
return 0;
21489 if (tokadd_mbchar(p, c) == -1)
return 0;
21492 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
21493 set_yylval_str(lit);
21494 SET_LEX_STATE(EXPR_END);
21498static enum yytokentype
21499parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
21502 const char *ptok = p->lex.pcur;
21510 if (c == -1)
goto unterminated;
21513 if (!
ISASCII(c))
goto unknown;
21518 if (rb_enc_isalnum(term, p->enc) || !parser_isascii(p)) {
21521 c = parser_precise_mbclen(p, p->lex.pcur);
21522 if (c < 0)
return 0;
21524 yyerror0(
"unknown type of %string");
21530 compile_error(p,
"unterminated quoted string meets end of file");
21534 if (term ==
'(') term =
')';
21535 else if (term ==
'[') term =
']';
21536 else if (term ==
'{') term =
'}';
21537 else if (term ==
'<') term =
'>';
21540 p->lex.ptok = ptok-1;
21543 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
21544 return tSTRING_BEG;
21547 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
21548 return tSTRING_BEG;
21551 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21555 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21556 return tQWORDS_BEG;
21559 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21560 return tSYMBOLS_BEG;
21563 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21564 return tQSYMBOLS_BEG;
21567 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
21568 return tXSTRING_BEG;
21571 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
21572 return tREGEXP_BEG;
21575 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
21576 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
21580 yyerror0(
"unknown type of %string");
21584 if ((c = nextc(p)) ==
'=') {
21585 set_yylval_id(
'%');
21586 SET_LEX_STATE(EXPR_BEG);
21589 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
21592 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21594 return warn_balanced(
'%',
"%%",
"string literal");
21601 if (tokadd_mbchar(p, c) == -1)
return -1;
21603 }
while (parser_is_identchar(p));
21611 ID ident = TOK_INTERN();
21613 set_yylval_name(ident);
21623 unsigned long n = ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &
len, &overflow);
21624 const unsigned long nth_ref_max =
21625 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
21629 if (overflow || n > nth_ref_max) {
21631 rb_warn1(
"'%s' is too big for a number variable, always nil", WARN_S(tok(p)));
21639static enum yytokentype
21640parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
21642 const char *ptr = p->lex.pcur;
21645 SET_LEX_STATE(EXPR_END);
21646 p->lex.ptok = ptr - 1;
21652 if (parser_is_identchar(p)) {
21684 if (parser_is_identchar(p)) {
21685 if (tokadd_mbchar(p, c) == -1)
return 0;
21700 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
21705 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
21708 case '1':
case '2':
case '3':
21709 case '4':
case '5':
case '6':
21710 case '7':
case '8':
case '9':
21715 }
while (c != -1 &&
ISDIGIT(c));
21717 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
21719 c = parse_numvar(p);
21720 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
21724 if (!parser_is_identchar(p)) {
21725 YYLTYPE loc = RUBY_INIT_YYLLOC();
21727 compile_error(p,
"'$' without identifiers is not allowed as a global variable name");
21731 compile_error(p,
"'$%c' is not allowed as a global variable name", c);
21733 parser_show_error_line(p, &loc);
21734 set_yylval_noname();
21742 if (tokadd_ident(p, c))
return 0;
21743 SET_LEX_STATE(EXPR_END);
21744 if (VALID_SYMNAME_P(tok(p), toklen(p), p->enc, ID_GLOBAL)) {
21748 compile_error(p,
"'%.*s' is not allowed as a global variable name", toklen(p), tok(p));
21749 set_yylval_noname();
21757 if (n < 0)
return false;
21759 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
21762 if (p->max_numparam == ORDINAL_PARAM) {
21763 compile_error(p,
"ordinary parameter is defined");
21766 struct vtable *args = p->lvtbl->args;
21767 if (p->max_numparam < n) {
21768 p->max_numparam = n;
21770 while (n > args->pos) {
21771 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
21776static enum yytokentype
21777parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
21779 const char *ptr = p->lex.pcur;
21780 enum yytokentype result = tIVAR;
21781 register int c = nextc(p);
21784 p->lex.ptok = ptr - 1;
21792 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
21793 if (c == -1 || !parser_is_identchar(p)) {
21795 RUBY_SET_YYLLOC(loc);
21796 if (result == tIVAR) {
21797 compile_error(p,
"'@' without identifiers is not allowed as an instance variable name");
21800 compile_error(p,
"'@@' without identifiers is not allowed as a class variable name");
21802 parser_show_error_line(p, &loc);
21803 set_yylval_noname();
21804 SET_LEX_STATE(EXPR_END);
21809 RUBY_SET_YYLLOC(loc);
21810 if (result == tIVAR) {
21811 compile_error(p,
"'@%c' is not allowed as an instance variable name", c);
21814 compile_error(p,
"'@@%c' is not allowed as a class variable name", c);
21816 parser_show_error_line(p, &loc);
21817 set_yylval_noname();
21818 SET_LEX_STATE(EXPR_END);
21822 if (tokadd_ident(p, c))
return 0;
21827static enum yytokentype
21830 enum yytokentype result;
21831 bool is_ascii =
true;
21832 const enum lex_state_e last_state = p->lex.state;
21834 int enforce_keyword_end = 0;
21837 if (!
ISASCII(c)) is_ascii =
false;
21838 if (tokadd_mbchar(p, c) == -1)
return 0;
21840 }
while (parser_is_identchar(p));
21841 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
21845 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
21846 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
21847 result = tIDENTIFIER;
21851 result = tCONSTANT;
21856 if (IS_LABEL_POSSIBLE()) {
21857 if (IS_LABEL_SUFFIX(0)) {
21858 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
21866 if (peek_end_expect_token_locations(p)) {
21868 int lineno, column;
21869 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
21871 end_pos = peek_end_expect_token_locations(p)->pos;
21872 lineno = end_pos->lineno;
21873 column = end_pos->column;
21876 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
21877 p->ruby_sourceline, beg_pos, lineno, column);
21880 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
21883 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
21884 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
21885 enforce_keyword_end = 1;
21891 if (is_ascii && (!IS_lex_state(EXPR_DOT) || enforce_keyword_end)) {
21895 kw = rb_reserved_word(tok(p), toklen(p));
21897 enum lex_state_e state = p->lex.state;
21898 if (IS_lex_state_for(state, EXPR_FNAME)) {
21899 SET_LEX_STATE(EXPR_ENDFN);
21900 set_yylval_name(rb_intern2(tok(p), toklen(p)));
21903 SET_LEX_STATE(kw->state);
21904 if (IS_lex_state(EXPR_BEG)) {
21905 p->command_start = TRUE;
21907 if (kw->id[0] == keyword_do) {
21908 if (lambda_beginning_p()) {
21909 p->lex.lpar_beg = -1;
21910 return keyword_do_LAMBDA;
21912 if (COND_P())
return keyword_do_cond;
21913 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
21914 return keyword_do_block;
21917 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
21920 if (kw->id[0] != kw->id[1])
21921 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
21927 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
21929 SET_LEX_STATE(EXPR_CMDARG);
21932 SET_LEX_STATE(EXPR_ARG);
21935 else if (p->lex.state == EXPR_FNAME) {
21936 SET_LEX_STATE(EXPR_ENDFN);
21939 SET_LEX_STATE(EXPR_END);
21942 ident = tokenize_ident(p);
21943 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
21944 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
21945 (result == tIDENTIFIER) &&
21946 (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
21947 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
21958 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
21962static enum yytokentype
21966 int space_seen = 0;
21969 enum lex_state_e last_state;
21970 int fallthru = FALSE;
21971 int token_seen = p->token_seen;
21973 if (p->lex.strterm) {
21974 if (strterm_is_heredoc(p->lex.strterm)) {
21976 return here_document(p, &p->lex.strterm->u.heredoc);
21980 return parse_string(p, &p->lex.strterm->u.literal);
21983 cmd_state = p->command_start;
21984 p->command_start = FALSE;
21985 p->token_seen = TRUE;
21990 last_state = p->lex.state;
21991 switch (c = nextc(p)) {
21998 if (p->end_expect_token_locations) {
21999 pop_end_expect_token_locations(p);
22000 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
22005 RUBY_SET_YYLLOC(*p->yylloc);
22006 return END_OF_INPUT;
22012 case ' ':
case '\t':
case '\f':
22015 while ((c = nextc(p))) {
22020 case ' ':
case '\t':
case '\f':
22029 dispatch_scan_event(p, tSP);
22036 p->token_seen = token_seen;
22037 const char *
const pcur = p->lex.pcur, *
const ptok = p->lex.ptok;
22039 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
22040 if (comment_at_top(p)) {
22041 set_file_encoding(p, p->lex.pcur, p->lex.pend);
22044 p->lex.pcur = pcur, p->lex.ptok = ptok;
22046 dispatch_scan_event(p, tCOMMENT);
22050 p->token_seen = token_seen;
22052 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
22053 !IS_lex_state(EXPR_LABELED));
22054 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
22056 dispatch_scan_event(p, tIGNORED_NL);
22059 if (!c && p->ctxt.in_kwarg) {
22060 goto normal_newline;
22065 switch (c = nextc(p)) {
22066 case ' ':
case '\t':
case '\f':
case '\r':
22073 dispatch_scan_event(p, tSP);
22078 if (peek_word_at(p,
"nd", 2, 0))
goto leading_logical;
22081 if (peek_word_at(p,
"r", 1, 0))
goto leading_logical;
22084 if (peek(p,
'|'))
goto leading_logical;
22087 if (peek(p,
'&')) {
22090 dispatch_delayed_token(p, tIGNORED_NL);
22096 dispatch_delayed_token(p, tIGNORED_NL);
22097 if (peek(p,
'.') == (c ==
'&')) {
22099 dispatch_scan_event(p, tSP);
22105 p->ruby_sourceline--;
22106 p->lex.nextline = p->lex.lastline;
22107 set_lastline(p, prevline);
22109 if (c == -1 && space_seen) {
22110 dispatch_scan_event(p, tSP);
22115 RUBY_SET_YYLLOC(*p->yylloc);
22117 goto normal_newline;
22121 p->command_start = TRUE;
22122 SET_LEX_STATE(EXPR_BEG);
22126 if ((c = nextc(p)) ==
'*') {
22127 if ((c = nextc(p)) ==
'=') {
22128 set_yylval_id(idPow);
22129 SET_LEX_STATE(EXPR_BEG);
22133 if (IS_SPCARG(c)) {
22134 rb_warning0(
"'**' interpreted as argument prefix");
22137 else if (IS_BEG()) {
22141 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
22146 set_yylval_id(
'*');
22147 SET_LEX_STATE(EXPR_BEG);
22151 if (IS_SPCARG(c)) {
22152 rb_warning0(
"'*' interpreted as argument prefix");
22155 else if (IS_BEG()) {
22159 c = warn_balanced(
'*',
"*",
"argument prefix");
22162 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22167 if (IS_AFTER_OPERATOR()) {
22168 SET_LEX_STATE(EXPR_ARG);
22174 SET_LEX_STATE(EXPR_BEG);
22188 if (word_match_p(p,
"begin", 5)) {
22189 int first_p = TRUE;
22192 dispatch_scan_event(p, tEMBDOC_BEG);
22196 dispatch_scan_event(p, tEMBDOC);
22201 compile_error(p,
"embedded document meets end of file");
22202 return END_OF_INPUT;
22204 if (c ==
'=' && word_match_p(p,
"end", 3)) {
22210 dispatch_scan_event(p, tEMBDOC_END);
22215 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22216 if ((c = nextc(p)) ==
'=') {
22217 if ((c = nextc(p)) ==
'=') {
22226 else if (c ==
'>') {
22235 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
22237 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
22238 enum yytokentype token = heredoc_identifier(p);
22239 if (token)
return token < 0 ? 0 : token;
22241 if (IS_AFTER_OPERATOR()) {
22242 SET_LEX_STATE(EXPR_ARG);
22245 if (IS_lex_state(EXPR_CLASS))
22246 p->command_start = TRUE;
22247 SET_LEX_STATE(EXPR_BEG);
22250 if ((c = nextc(p)) ==
'>') {
22257 if ((c = nextc(p)) ==
'=') {
22258 set_yylval_id(idLTLT);
22259 SET_LEX_STATE(EXPR_BEG);
22263 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
22269 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22270 if ((c = nextc(p)) ==
'=') {
22274 if ((c = nextc(p)) ==
'=') {
22275 set_yylval_id(idGTGT);
22276 SET_LEX_STATE(EXPR_BEG);
22286 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22287 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
22288 p->lex.ptok = p->lex.pcur-1;
22289 return tSTRING_BEG;
22292 if (IS_lex_state(EXPR_FNAME)) {
22293 SET_LEX_STATE(EXPR_ENDFN);
22296 if (IS_lex_state(EXPR_DOT)) {
22298 SET_LEX_STATE(EXPR_CMDARG);
22300 SET_LEX_STATE(EXPR_ARG);
22303 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
22304 return tXSTRING_BEG;
22307 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22308 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
22309 p->lex.ptok = p->lex.pcur-1;
22310 return tSTRING_BEG;
22313 return parse_qmark(p, space_seen);
22316 if ((c = nextc(p)) ==
'&') {
22317 SET_LEX_STATE(EXPR_BEG);
22318 if ((c = nextc(p)) ==
'=') {
22319 set_yylval_id(idANDOP);
22320 SET_LEX_STATE(EXPR_BEG);
22326 else if (c ==
'=') {
22327 set_yylval_id(
'&');
22328 SET_LEX_STATE(EXPR_BEG);
22331 else if (c ==
'.') {
22332 set_yylval_id(idANDDOT);
22333 SET_LEX_STATE(EXPR_DOT);
22337 if (IS_SPCARG(c)) {
22339 (c = peekc_n(p, 1)) == -1 ||
22340 !(c ==
'\'' || c ==
'"' ||
22341 is_identchar(p, (p->lex.pcur+1), p->lex.pend, p->enc))) {
22342 rb_warning0(
"'&' interpreted as argument prefix");
22346 else if (IS_BEG()) {
22350 c = warn_balanced(
'&',
"&",
"argument prefix");
22352 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22356 if ((c = nextc(p)) ==
'|') {
22357 SET_LEX_STATE(EXPR_BEG);
22358 if ((c = nextc(p)) ==
'=') {
22359 set_yylval_id(idOROP);
22360 SET_LEX_STATE(EXPR_BEG);
22364 if (IS_lex_state_for(last_state, EXPR_BEG)) {
22372 set_yylval_id(
'|');
22373 SET_LEX_STATE(EXPR_BEG);
22376 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
22382 if (IS_AFTER_OPERATOR()) {
22383 SET_LEX_STATE(EXPR_ARG);
22391 set_yylval_id(
'+');
22392 SET_LEX_STATE(EXPR_BEG);
22395 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
22396 SET_LEX_STATE(EXPR_BEG);
22399 return parse_numeric(p,
'+');
22403 SET_LEX_STATE(EXPR_BEG);
22405 return warn_balanced(
'+',
"+",
"unary operator");
22409 if (IS_AFTER_OPERATOR()) {
22410 SET_LEX_STATE(EXPR_ARG);
22418 set_yylval_id(
'-');
22419 SET_LEX_STATE(EXPR_BEG);
22423 SET_LEX_STATE(EXPR_ENDFN);
22424 yylval.num = p->lex.lpar_beg;
22425 p->lex.lpar_beg = p->lex.paren_nest;
22428 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
22429 SET_LEX_STATE(EXPR_BEG);
22432 return tUMINUS_NUM;
22436 SET_LEX_STATE(EXPR_BEG);
22438 return warn_balanced(
'-',
"-",
"unary operator");
22441 int is_beg = IS_BEG();
22442 SET_LEX_STATE(EXPR_BEG);
22443 if ((c = nextc(p)) ==
'.') {
22444 if ((c = nextc(p)) ==
'.') {
22445 if (p->ctxt.in_argdef || IS_LABEL_POSSIBLE()) {
22446 SET_LEX_STATE(EXPR_ENDARG);
22449 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
22450 rb_warn0(
"... at EOL, should be parenthesized?");
22452 return is_beg ? tBDOT3 : tDOT3;
22455 return is_beg ? tBDOT2 : tDOT2;
22459 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
22460 parse_numeric(p,
'.');
22462 yyerror0(
"unexpected fraction part after numeric literal");
22465 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
22467 SET_LEX_STATE(EXPR_END);
22468 p->lex.ptok = p->lex.pcur;
22471 set_yylval_id(
'.');
22472 SET_LEX_STATE(EXPR_DOT);
22476 case '0':
case '1':
case '2':
case '3':
case '4':
22477 case '5':
case '6':
case '7':
case '8':
case '9':
22478 return parse_numeric(p, c);
22483 SET_LEX_STATE(EXPR_ENDFN);
22484 p->lex.paren_nest--;
22490 SET_LEX_STATE(EXPR_END);
22491 p->lex.paren_nest--;
22496 if (!p->lex.brace_nest--)
return tSTRING_DEND;
22499 SET_LEX_STATE(EXPR_END);
22500 p->lex.paren_nest--;
22506 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
22507 SET_LEX_STATE(EXPR_BEG);
22510 set_yylval_id(idCOLON2);
22511 SET_LEX_STATE(EXPR_DOT);
22514 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
22516 c = warn_balanced(
':',
":",
"symbol literal");
22517 SET_LEX_STATE(EXPR_BEG);
22522 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
22525 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
22531 SET_LEX_STATE(EXPR_FNAME);
22536 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22537 return tREGEXP_BEG;
22539 if ((c = nextc(p)) ==
'=') {
22540 set_yylval_id(
'/');
22541 SET_LEX_STATE(EXPR_BEG);
22545 if (IS_SPCARG(c)) {
22546 arg_ambiguous(p,
'/');
22547 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22548 return tREGEXP_BEG;
22550 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22551 return warn_balanced(
'/',
"/",
"regexp literal");
22554 if ((c = nextc(p)) ==
'=') {
22555 set_yylval_id(
'^');
22556 SET_LEX_STATE(EXPR_BEG);
22559 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22564 SET_LEX_STATE(EXPR_BEG);
22565 p->command_start = TRUE;
22569 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22573 if (IS_AFTER_OPERATOR()) {
22574 if ((c = nextc(p)) !=
'@') {
22577 SET_LEX_STATE(EXPR_ARG);
22580 SET_LEX_STATE(EXPR_BEG);
22588 else if (!space_seen) {
22591 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
22594 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
22595 rb_warning0(
"parentheses after method name is interpreted as "
22596 "an argument list, not a decomposed argument");
22598 p->lex.paren_nest++;
22601 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22605 p->lex.paren_nest++;
22606 if (IS_AFTER_OPERATOR()) {
22607 if ((c = nextc(p)) ==
']') {
22608 p->lex.paren_nest--;
22609 SET_LEX_STATE(EXPR_ARG);
22610 if ((c = nextc(p)) ==
'=') {
22617 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
22620 else if (IS_BEG()) {
22623 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
22626 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22632 ++p->lex.brace_nest;
22633 if (lambda_beginning_p())
22635 else if (IS_lex_state(EXPR_LABELED))
22637 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
22639 else if (IS_lex_state(EXPR_ENDARG))
22643 if (c != tLBRACE) {
22644 p->command_start = TRUE;
22645 SET_LEX_STATE(EXPR_BEG);
22648 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22650 ++p->lex.paren_nest;
22659 dispatch_scan_event(p, tSP);
22662 if (c ==
' ')
return tSP;
22668 return parse_percent(p, space_seen, last_state);
22671 return parse_gvar(p, last_state);
22674 return parse_atmark(p, last_state);
22677 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
22678 p->ruby__end__seen = 1;
22682 dispatch_scan_event(p, k__END__);
22684 return END_OF_INPUT;
22690 if (!parser_is_identchar(p)) {
22691 compile_error(p,
"Invalid char '\\x%02X' in expression", c);
22700 return parse_ident(p, c, cmd_state);
22703static enum yytokentype
22706 enum yytokentype t;
22710 p->yylloc = yylloc;
22712 t = parser_yylex(p);
22714 if (has_delayed_token(p))
22715 dispatch_delayed_token(p, t);
22716 else if (t != END_OF_INPUT)
22717 dispatch_scan_event(p, t);
22722#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
22725node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment)
22727 NODE *n = rb_ast_newnode(p->ast,
type, size, alignment);
22729 rb_node_init(n,
type);
22737 nd_set_line(nd, loc->beg_pos.lineno);
22744 NODE *n = node_new_internal(p,
type, size, alignment);
22746 nd_set_loc(n, loc);
22747 nd_set_node_id(n, parser_get_node_id(p));
22751#define NODE_NEWNODE(node_type, type, loc) (type *)(node_newnode(p, node_type, sizeof(type), RUBY_ALIGNOF(type), loc))
22757 nd_tbl = local_tbl(p);
22759 n->nd_tbl = nd_tbl;
22760 n->nd_body = nd_body;
22761 n->nd_parent = nd_parent;
22762 n->nd_args = nd_args;
22771 n->nd_tbl = nd_tbl;
22772 n->nd_body = nd_body;
22773 n->nd_parent = nd_parent;
22774 n->nd_args = nd_args;
22783 n->nd_mid = nd_mid;
22784 n->nd_defn = nd_defn;
22793 n->nd_recv = nd_recv;
22794 n->nd_mid = nd_mid;
22795 n->nd_defn = nd_defn;
22804 n->nd_head = nd_head;
22805 n->nd_end = (
NODE *)n;
22815 n->nd_body = nd_body;
22816 n->nd_iter = nd_iter;
22817 n->for_keyword_loc = *for_keyword_loc;
22818 n->in_keyword_loc = *in_keyword_loc;
22819 n->do_keyword_loc = *do_keyword_loc;
22820 n->end_keyword_loc = *end_keyword_loc;
22829 n->nd_var = nd_var;
22846 n->nd_body = nd_body;
22855 n->nd_head = nd_head;
22856 n->nd_resq = nd_resq;
22857 n->nd_else = nd_else;
22866 n->nd_args = nd_args;
22867 n->nd_exc_var = nd_exc_var;
22868 n->nd_body = nd_body;
22869 n->nd_next = nd_next;
22878 n->nd_head = nd_head;
22879 n->nd_ensr = nd_ensr;
22888 n->nd_1st = nd_1st;
22889 n->nd_2nd = nd_2nd;
22890 n->operator_loc = *operator_loc;
22899 n->nd_1st = nd_1st;
22900 n->nd_2nd = nd_2nd;
22901 n->operator_loc = *operator_loc;
22910 n->nd_stts = nd_stts;
22911 n->keyword_loc = *keyword_loc;
22918 if (nd_head) no_blockarg(p, nd_head);
22921 n->nd_head = nd_head;
22922 n->keyword_loc = *keyword_loc;
22923 n->lparen_loc = *lparen_loc;
22924 n->rparen_loc = *rparen_loc;
22933 n->nd_cond = nd_cond;
22934 n->nd_body = nd_body;
22935 n->nd_else = nd_else;
22936 n->if_keyword_loc = *if_keyword_loc;
22937 n->then_keyword_loc = *then_keyword_loc;
22938 n->end_keyword_loc = *end_keyword_loc;
22947 n->nd_cond = nd_cond;
22948 n->nd_body = nd_body;
22949 n->nd_else = nd_else;
22950 n->keyword_loc = *keyword_loc;
22951 n->then_keyword_loc = *then_keyword_loc;
22952 n->end_keyword_loc = *end_keyword_loc;
22961 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
22963 RNODE_SCOPE(scope)->nd_parent = &n->node;
22964 n->nd_cpath = nd_cpath;
22965 n->nd_body = scope;
22966 n->nd_super = nd_super;
22967 n->class_keyword_loc = *class_keyword_loc;
22968 n->inheritance_operator_loc = *inheritance_operator_loc;
22969 n->end_keyword_loc = *end_keyword_loc;
22978 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
22980 RNODE_SCOPE(scope)->nd_parent = &n->node;
22981 n->nd_recv = nd_recv;
22982 n->nd_body = scope;
22983 n->class_keyword_loc = *class_keyword_loc;
22984 n->operator_loc = *operator_loc;
22985 n->end_keyword_loc = *end_keyword_loc;
22994 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
22996 RNODE_SCOPE(scope)->nd_parent = &n->node;
22997 n->nd_cpath = nd_cpath;
22998 n->nd_body = scope;
22999 n->module_keyword_loc = *module_keyword_loc;
23000 n->end_keyword_loc = *end_keyword_loc;
23009 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
23011 RNODE_SCOPE(scope)->nd_parent = &n->node;
23012 n->nd_body = scope;
23022 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
23023 YYLTYPE lambda_loc = code_loc_gen(operator_loc, closing_loc);
23025 RNODE_SCOPE(scope)->nd_parent = &n->node;
23026 n->nd_body = scope;
23027 n->operator_loc = *operator_loc;
23028 n->opening_loc = *opening_loc;
23029 n->closing_loc = *closing_loc;
23038 n->nd_head = nd_head;
23039 n->nd_body = nd_body;
23040 n->case_keyword_loc = *case_keyword_loc;
23041 n->end_keyword_loc = *end_keyword_loc;
23051 n->nd_body = nd_body;
23052 n->case_keyword_loc = *case_keyword_loc;
23053 n->end_keyword_loc = *end_keyword_loc;
23062 n->nd_head = nd_head;
23063 n->nd_body = nd_body;
23064 n->case_keyword_loc = *case_keyword_loc;
23065 n->end_keyword_loc = *end_keyword_loc;
23074 n->nd_head = nd_head;
23075 n->nd_body = nd_body;
23076 n->nd_next = nd_next;
23077 n->keyword_loc = *keyword_loc;
23078 n->then_keyword_loc = *then_keyword_loc;
23087 n->nd_head = nd_head;
23088 n->nd_body = nd_body;
23089 n->nd_next = nd_next;
23090 n->in_keyword_loc = *in_keyword_loc;
23091 n->then_keyword_loc = *then_keyword_loc;
23092 n->operator_loc = *operator_loc;
23101 n->nd_cond = nd_cond;
23102 n->nd_body = nd_body;
23103 n->nd_state = nd_state;
23104 n->keyword_loc = *keyword_loc;
23105 n->closing_loc = *closing_loc;
23114 n->nd_cond = nd_cond;
23115 n->nd_body = nd_body;
23116 n->nd_state = nd_state;
23117 n->keyword_loc = *keyword_loc;
23118 n->closing_loc = *closing_loc;
23127 n->nd_head = nd_head;
23128 n->nd_mid = nd_mid;
23129 n->delimiter_loc = *delimiter_loc;
23130 n->name_loc = *name_loc;
23139 n->nd_mid = nd_mid;
23140 n->delimiter_loc = *delimiter_loc;
23141 n->name_loc = *name_loc;
23150 n->nd_beg = nd_beg;
23151 n->nd_end = nd_end;
23152 n->operator_loc = *operator_loc;
23161 n->nd_beg = nd_beg;
23162 n->nd_end = nd_end;
23163 n->operator_loc = *operator_loc;
23206 n->nd_args = nd_args;
23207 n->keyword_loc = *keyword_loc;
23208 n->lparen_loc = *lparen_loc;
23209 n->rparen_loc = *rparen_loc;
23226 n->nd_recv = nd_recv;
23227 n->nd_value = nd_value;
23237 n->nd_recv = nd_recv;
23238 n->nd_value = nd_value;
23246 return rb_node_list_new2(p, nd_head, 1, 0, loc);
23253 n->nd_head = nd_head;
23254 n->as.nd_alen = nd_alen;
23255 n->nd_next = nd_next;
23272 n->nd_head = nd_head;
23282 n->nd_head = nd_head;
23284 n->nd_args = nd_args;
23293 n->nd_vid = nd_vid;
23294 n->nd_value = nd_value;
23303 n->nd_vid = nd_vid;
23304 n->nd_value = nd_value;
23313 n->nd_vid = nd_vid;
23314 n->nd_value = nd_value;
23323 n->nd_vid = nd_vid;
23324 n->nd_value = nd_value;
23333 n->nd_vid = nd_vid;
23334 n->nd_value = nd_value;
23343 n->nd_recv = nd_recv;
23344 n->nd_mid = nd_mid;
23345 n->nd_index = index;
23346 n->nd_rvalue = rvalue;
23347 n->call_operator_loc = *call_operator_loc;
23348 n->opening_loc = *opening_loc;
23349 n->closing_loc = *closing_loc;
23350 n->binary_operator_loc = *binary_operator_loc;
23359 n->nd_recv = nd_recv;
23360 n->nd_value = nd_value;
23361 n->nd_vid = nd_vid;
23362 n->nd_mid = nd_mid;
23363 n->nd_aid = nd_aid;
23364 n->call_operator_loc = *call_operator_loc;
23365 n->message_loc = *message_loc;
23366 n->binary_operator_loc = *binary_operator_loc;
23375 n->nd_head = nd_head;
23376 n->nd_value = nd_value;
23385 n->nd_head = nd_head;
23386 n->nd_value = nd_value;
23395 n->nd_vid = nd_vid;
23404 n->nd_vid = nd_vid;
23413 n->nd_vid = nd_vid;
23422 n->nd_vid = nd_vid;
23431 n->nd_vid = nd_vid;
23440 n->nd_vid = nd_vid;
23449 n->nd_nth = nd_nth;
23458 n->nd_nth = nd_nth;
23485rb_node_rational_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
const YYLTYPE *loc)
23491 n->seen_point = seen_point;
23497rb_node_imaginary_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
enum rb_numeric_type numeric_type,
const YYLTYPE *loc)
23503 n->seen_point = seen_point;
23504 n->type = numeric_type;
23513 n->string = string;
23523 n->string = string;
23524 n->as.nd_alen = nd_alen;
23533 return rb_node_dstr_new0(p,
string, 1, 0, loc);
23540 n->string = string;
23549 n->string = string;
23550 n->as.nd_alen = nd_alen;
23560 n->string = rb_str_to_parser_string(p, str);
23569 n->string = string;
23570 n->as.nd_alen = nd_alen;
23580 n->nd_body = nd_body;
23581 n->opening_loc = *opening_loc;
23582 n->closing_loc = *closing_loc;
23591 n->string = string;
23592 n->options = options & RE_OPTION_MASK;
23593 n->opening_loc = *opening_loc;
23594 n->content_loc = *content_loc;
23595 n->closing_loc = *closing_loc;
23604 n->nd_recv = nd_recv;
23605 n->nd_mid = nd_mid;
23606 n->nd_args = nd_args;
23615 n->nd_recv = nd_recv;
23616 n->nd_mid = nd_mid;
23617 n->nd_args = nd_args;
23626 n->nd_mid = nd_mid;
23627 n->nd_args = nd_args;
23636 n->nd_recv = nd_recv;
23637 n->nd_mid = nd_mid;
23638 n->nd_args = nd_args;
23647 n->nd_mid = nd_mid;
23656 n->nd_body = nd_body;
23674 n->nd_pid = nd_pid;
23675 n->nd_plen = nd_plen;
23685 n->nd_body = nd_body;
23695 n->nd_body = nd_body;
23705 n->nd_1st = nd_1st;
23706 n->nd_2nd = nd_2nd;
23715 n->nd_head = nd_head;
23716 n->nd_body = nd_body;
23725 n->nd_head = nd_head;
23726 n->nd_body = nd_body;
23735 n->nd_head = nd_head;
23736 n->operator_loc = *operator_loc;
23747 n->nd_body = nd_body;
23748 n->operator_loc = *operator_loc;
23757 n->nd_1st = nd_1st;
23758 n->nd_2nd = nd_2nd;
23759 n->keyword_loc = *keyword_loc;
23768 n->nd_alias = nd_alias;
23769 n->nd_orig = nd_orig;
23770 n->keyword_loc = *keyword_loc;
23779 n->nd_undefs = rb_parser_ary_new_capa_for_node(p, 1);
23780 n->keyword_loc = NULL_LOC;
23781 rb_parser_ary_push_node(p, n->nd_undefs, nd_undef);
23798 n->nd_head = nd_head;
23799 n->keyword_loc = *keyword_loc;
23808 n->nd_body = nd_body;
23809 n->keyword_loc = *keyword_loc;
23810 n->opening_loc = *opening_loc;
23811 n->closing_loc = *closing_loc;
23820 n->nd_recv = nd_recv;
23821 n->nd_mid = nd_mid;
23822 n->nd_args = nd_args;
23832 n->pre_args = pre_args;
23833 n->rest_arg = rest_arg;
23834 n->post_args = post_args;
23843 n->nd_pconst = nd_pconst;
23844 n->nd_pkwargs = nd_pkwargs;
23845 n->nd_pkwrestarg = nd_pkwrestarg;
23855 n->pre_rest_arg = pre_rest_arg;
23857 n->post_rest_arg = post_rest_arg;
23874 n->path = rb_str_to_parser_string(p, str);
23889rb_node_cdecl_new(
struct parser_params *p,
ID nd_vid,
NODE *nd_value,
NODE *nd_else,
enum rb_parser_shareability shareability,
const YYLTYPE *loc)
23892 n->nd_vid = nd_vid;
23893 n->nd_value = nd_value;
23894 n->nd_else = nd_else;
23895 n->shareability = shareability;
23901rb_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)
23904 n->nd_head = nd_head;
23905 n->nd_value = nd_value;
23906 n->nd_aid = nd_aid;
23907 n->shareability = shareability;
23924 n->nd_stts = nd_stts;
23926 n->keyword_loc = *keyword_loc;
23935 n->nd_stts = nd_stts;
23937 n->keyword_loc = *keyword_loc;
23947 n->keyword_loc = *keyword_loc;
23956 n->save.numparam_save = 0;
23957 n->save.max_numparam = 0;
23958 n->save.ctxt = p->ctxt;
23968 n->save.numparam_save = numparam_push(p);
23969 n->save.max_numparam = p->max_numparam;
23974static enum node_type
23975nodetype(
NODE *node)
23977 return (
enum node_type)nd_type(node);
23981nodeline(
NODE *node)
23983 return nd_line(node);
23988newline_node(
NODE *node)
23991 node = remove_begin(node);
23992 nd_set_fl_newline(node);
24002 nd_set_line(node, nd_line(orig));
24008 NODE *end, *h = head, *nd;
24010 if (tail == 0)
return head;
24012 if (h == 0)
return tail;
24013 switch (nd_type(h)) {
24015 h = end = NEW_BLOCK(head, &head->nd_loc);
24019 end = RNODE_BLOCK(h)->nd_end;
24023 nd = RNODE_BLOCK(end)->nd_head;
24024 switch (nd_type(nd)) {
24030 rb_warning0L(nd_line(tail),
"statement not reached");
24037 if (!nd_type_p(tail, NODE_BLOCK)) {
24038 tail = NEW_BLOCK(tail, &tail->nd_loc);
24040 RNODE_BLOCK(end)->nd_next = tail;
24041 RNODE_BLOCK(h)->nd_end = RNODE_BLOCK(tail)->nd_end;
24042 nd_set_last_loc(head, nd_last_loc(tail));
24052 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
24053 if (RNODE_LIST(list)->nd_next) {
24054 last = RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end;
24060 RNODE_LIST(list)->as.nd_alen += 1;
24061 RNODE_LIST(last)->nd_next = NEW_LIST(item, &item->nd_loc);
24062 RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end = RNODE_LIST(last)->nd_next;
24064 nd_set_last_loc(list, nd_last_loc(item));
24071list_concat(
NODE *head,
NODE *tail)
24075 if (RNODE_LIST(head)->nd_next) {
24076 last = RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end;
24082 RNODE_LIST(head)->as.nd_alen += RNODE_LIST(tail)->as.nd_alen;
24083 RNODE_LIST(last)->nd_next = tail;
24084 if (RNODE_LIST(tail)->nd_next) {
24085 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = RNODE_LIST(RNODE_LIST(tail)->nd_next)->as.nd_end;
24088 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = tail;
24091 nd_set_last_loc(head, nd_last_loc(tail));
24099 if (!tail)
return 1;
24100 if (!rb_parser_enc_compatible(p, head, tail)) {
24101 compile_error(p,
"string literal encodings differ (%s / %s)",
24102 rb_enc_name(rb_parser_str_get_encoding(head)),
24103 rb_enc_name(rb_parser_str_get_encoding(tail)));
24104 rb_parser_str_resize(p, head, 0);
24105 rb_parser_str_resize(p, tail, 0);
24108 rb_parser_str_buf_append(p, head, tail);
24115 if (htype != NODE_DSTR)
return NULL;
24116 if (RNODE_DSTR(head)->nd_next) {
24117 head = RNODE_LIST(RNODE_LIST(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_head;
24118 if (!head || !nd_type_p(head, NODE_STR))
return NULL;
24130 if (!orig)
return NULL;
24131 copy = rb_parser_string_new(p, PARSER_STRING_PTR(orig), PARSER_STRING_LEN(orig));
24132 copy->coderange = orig->coderange;
24133 copy->enc = orig->enc;
24142 enum node_type htype;
24145 if (!head)
return tail;
24146 if (!tail)
return head;
24148 htype = nd_type(head);
24149 if (htype == NODE_EVSTR) {
24150 head = new_dstr(p, head, loc);
24153 if (p->heredoc_indent > 0) {
24156 head = str2dstr(p, head);
24158 return list_append(p, head, tail);
24163 switch (nd_type(tail)) {
24165 if ((lit = string_literal_head(p, htype, head)) !=
false) {
24169 lit = RNODE_DSTR(head)->string;
24171 if (htype == NODE_STR) {
24172 if (!literal_concat0(p, lit, RNODE_STR(tail)->
string)) {
24174 rb_discard_node(p, head);
24175 rb_discard_node(p, tail);
24178 rb_discard_node(p, tail);
24181 list_append(p, head, tail);
24186 if (htype == NODE_STR) {
24187 if (!literal_concat0(p, RNODE_STR(head)->
string, RNODE_DSTR(tail)->
string))
24189 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24190 RNODE_DSTR(tail)->string = RNODE_STR(head)->string;
24191 RNODE_STR(head)->string = NULL;
24192 rb_discard_node(p, head);
24195 else if (!RNODE_DSTR(tail)->
string) {
24197 RNODE_DSTR(head)->as.nd_alen += RNODE_DSTR(tail)->as.nd_alen - 1;
24198 if (!RNODE_DSTR(head)->nd_next) {
24199 RNODE_DSTR(head)->nd_next = RNODE_DSTR(tail)->nd_next;
24201 else if (RNODE_DSTR(tail)->nd_next) {
24202 RNODE_DSTR(RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_next = RNODE_DSTR(tail)->nd_next;
24203 RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end = RNODE_DSTR(RNODE_DSTR(tail)->nd_next)->as.nd_end;
24205 rb_discard_node(p, tail);
24207 else if ((lit = string_literal_head(p, htype, head)) !=
false) {
24208 if (!literal_concat0(p, lit, RNODE_DSTR(tail)->
string))
24210 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24211 RNODE_DSTR(tail)->string = 0;
24215 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));
24216 RNODE_DSTR(tail)->string = 0;
24221 if (htype == NODE_STR) {
24222 head = str2dstr(p, head);
24223 RNODE_DSTR(head)->as.nd_alen = 1;
24225 list_append(p, head, tail);
24232nd_copy_flag(
NODE *new_node,
NODE *old_node)
24234 if (nd_fl_newline(old_node)) nd_set_fl_newline(new_node);
24235 nd_set_line(new_node, nd_line(old_node));
24236 new_node->nd_loc = old_node->nd_loc;
24237 new_node->node_id = old_node->node_id;
24244 nd_copy_flag(new_node, node);
24245 RNODE_DSTR(new_node)->string = RNODE_STR(node)->string;
24246 RNODE_DSTR(new_node)->as.nd_alen = 0;
24247 RNODE_DSTR(new_node)->nd_next = 0;
24248 RNODE_STR(node)->string = 0;
24257 nd_copy_flag(new_node, node);
24258 RNODE_REGX(new_node)->string = RNODE_STR(node)->string;
24259 RNODE_REGX(new_node)->options = options;
24260 nd_set_loc(new_node, loc);
24261 RNODE_REGX(new_node)->opening_loc = *opening_loc;
24262 RNODE_REGX(new_node)->content_loc = *content_loc;
24263 RNODE_REGX(new_node)->closing_loc = *closing_loc;
24264 RNODE_STR(node)->string = 0;
24272 if (nd_type_p(node, NODE_EVSTR)) {
24273 node = new_dstr(p, node, &node->nd_loc);
24284 switch (nd_type(node)) {
24286 return str2dstr(p, node);
24293 return NEW_EVSTR(head, loc, opening_loc, closing_loc);
24299 NODE *dstr = NEW_DSTR(STRING_NEW0(), loc);
24300 return list_append(p, dstr, node);
24308 value_expr(p, recv);
24309 value_expr(p, arg1);
24310 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
24311 nd_set_line(expr, op_loc->beg_pos.lineno);
24319 value_expr(p, recv);
24320 opcall = NEW_OPCALL(recv,
id, 0, loc);
24321 nd_set_line(opcall, op_loc->beg_pos.lineno);
24328 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
24329 nd_set_line(qcall, op_loc->beg_pos.lineno);
24337 if (block) block_dup_check(p, args, block);
24338 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
24339 if (block) ret = method_add_block(p, ret, block, loc);
24349 body->opening_loc = *opening_loc;
24350 body->closing_loc = *closing_loc;
24354#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? RNODE_ONCE(node)->nd_body : node)
24357last_expr_once_body(
NODE *node)
24359 if (!node)
return 0;
24360 return nd_once_body(node);
24367 int line = op_loc->beg_pos.lineno;
24369 value_expr(p, node1);
24370 value_expr(p, node2);
24372 if ((n = last_expr_once_body(node1)) != 0) {
24373 switch (nd_type(n)) {
24376 NODE *match = NEW_MATCH2(node1, node2, loc);
24377 nd_set_line(match, line);
24383 const VALUE lit = rb_node_regx_string_val(n);
24385 NODE *match = NEW_MATCH2(node1, node2, loc);
24386 RNODE_MATCH2(match)->nd_args = reg_named_capture_assign(p, lit, loc, assignable);
24387 nd_set_line(match, line);
24394 if ((n = last_expr_once_body(node2)) != 0) {
24397 switch (nd_type(n)) {
24399 match3 = NEW_MATCH3(node2, node1, loc);
24404 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
24405 nd_set_line(n, line);
24409# if WARN_PAST_SCOPE
24413 struct vtable *past = p->lvtbl->past;
24415 if (vtable_included(past,
id))
return 1;
24426 NODE *outer = local->numparam.outer;
24427 NODE *inner = local->numparam.inner;
24428 if (outer || inner) {
24429 NODE *used = outer ? outer : inner;
24430 compile_error(p,
"numbered parameter is already used in %s block\n"
24431 "%s:%d: numbered parameter is already used here",
24432 outer ?
"outer" :
"inner",
24433 p->ruby_sourcefile, nd_line(used));
24434 parser_show_error_line(p, &used->nd_loc);
24443 NODE *numparam = p->lvtbl->numparam.current;
24445 compile_error(p,
"'it' is not allowed when a numbered parameter is already used\n"
24446 "%s:%d: numbered parameter is already used here",
24447 p->ruby_sourcefile, nd_line(numparam));
24448 parser_show_error_line(p, &numparam->nd_loc);
24457 NODE *it = p->lvtbl->it;
24459 compile_error(p,
"numbered parameters are not allowed when 'it' is already used\n"
24460 "%s:%d: 'it' is already used here",
24461 p->ruby_sourcefile, nd_line(it));
24462 parser_show_error_line(p, &it->nd_loc);
24475 return NEW_SELF(loc);
24477 return NEW_NIL(loc);
24479 return NEW_TRUE(loc);
24480 case keyword_false:
24481 return NEW_FALSE(loc);
24482 case keyword__FILE__:
24484 VALUE file = p->ruby_sourcefile_string;
24487 node = NEW_FILE(file, loc);
24490 case keyword__LINE__:
24491 return NEW_LINE(loc);
24492 case keyword__ENCODING__:
24493 return NEW_ENCODING(loc);
24496 switch (id_type(
id)) {
24498 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
24499 if (NUMPARAM_ID_P(
id) && (numparam_nested_p(p) || it_used_p(p)))
return 0;
24500 if (vidp) *vidp |= LVAR_USED;
24501 node = NEW_DVAR(
id, loc);
24504 if (local_id_ref(p,
id, &vidp)) {
24505 if (vidp) *vidp |= LVAR_USED;
24506 node = NEW_LVAR(
id, loc);
24509 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
24510 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
24511 if (numparam_nested_p(p) || it_used_p(p))
return 0;
24512 node = NEW_DVAR(
id, loc);
24514 if (!local->numparam.current) local->numparam.current = node;
24517# if WARN_PAST_SCOPE
24519 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
24523 if (dyna_in_block(p) &&
id == idIt && !(DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev))) {
24524 if (numparam_used_p(p))
return 0;
24525 if (p->max_numparam == ORDINAL_PARAM) {
24526 compile_error(p,
"ordinary parameter is defined");
24530 p->it_id = idItImplicit;
24531 vtable_add(p->lvtbl->args, p->it_id);
24533 NODE *node = NEW_DVAR(p->it_id, loc);
24534 if (!p->lvtbl->it) p->lvtbl->it = node;
24537 return NEW_VCALL(
id, loc);
24539 return NEW_GVAR(
id, loc);
24541 return NEW_IVAR(
id, loc);
24543 return NEW_CONST(
id, loc);
24545 return NEW_CVAR(
id, loc);
24547 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24555 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24557 while (opts->nd_next) {
24558 opts = opts->nd_next;
24559 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24561 opts->nd_next = opt;
24571 opt_arg_append(RNODE_OPT_ARG(kwlist), RNODE_OPT_ARG(kw));
24579 int had_trailing_semicolon = p->ctxt.has_trailing_semicolon;
24580 p->ctxt.has_trailing_semicolon = 0;
24584 if (nd_type_p(n, NODE_BEGIN)) {
24585 n = RNODE_BEGIN(n)->nd_body;
24587 else if (nd_type_p(n, NODE_BLOCK) && RNODE_BLOCK(n)->nd_end == n) {
24588 n = RNODE_BLOCK(n)->nd_head;
24595 if (had_trailing_semicolon && !nd_type_p(expr, NODE_BLOCK)) {
24596 NODE *block = NEW_BLOCK(expr, loc);
24597 return NEW_DEFINED(block, loc, keyword_loc);
24600 return NEW_DEFINED(n, loc, keyword_loc);
24608 if (rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_BROKEN) {
24609 yyerror1(loc,
"invalid symbol");
24613 lit = rb_str_new_parser_string(str);
24615 return NEW_SYM(lit, loc);
24621 enum node_type
type = nd_type(symbol);
24624 nd_set_type(symbol, NODE_DSYM);
24627 symbol = str_to_sym_node(p, symbol, &RNODE(symbol)->nd_loc);
24630 compile_error(p,
"unexpected node as symbol: %s", parser_node_name(
type));
24632 return list_append(p, symbols, symbol);
24638 if (dreg->string) {
24639 reg_fragment_setenc(p, dreg->string, options);
24641 for (
struct RNode_LIST *list = dreg->nd_next; list; list = RNODE_LIST(list->nd_next)) {
24642 NODE *frag = list->nd_head;
24643 if (nd_type_p(frag, NODE_STR)) {
24644 reg_fragment_setenc(p, RNODE_STR(frag)->
string, options);
24646 else if (nd_type_p(frag, NODE_DSTR)) {
24647 dregex_fragment_setenc(p, RNODE_DSTR(frag), options);
24658 reg_compile(p, str, options);
24659 node = NEW_REGX(str, options, loc, opening_loc, content_loc, closing_loc);
24662 switch (nd_type(node)) {
24666 reg_compile(p, RNODE_STR(node)->
string, options);
24667 node = str2regx(p, node, options, loc, opening_loc, content_loc, closing_loc);
24671 node = NEW_DSTR0(STRING_NEW0(), 1, NEW_LIST(node, loc), loc);
24674 nd_set_type(node, NODE_DREGX);
24675 nd_set_loc(node, loc);
24677 dreg->as.nd_cflag = options & RE_OPTION_MASK;
24678 if (dreg->nd_next) {
24679 dregex_fragment_setenc(p, dreg, options);
24681 if (options & RE_OPTION_ONCE) {
24682 node = NEW_ONCE(node, loc);
24693 return NEW_KW_ARG((k), loc);
24700 NODE *xstr = NEW_XSTR(STRING_NEW0(), loc);
24703 switch (nd_type(node)) {
24705 nd_set_type(node, NODE_XSTR);
24706 nd_set_loc(node, loc);
24709 nd_set_type(node, NODE_DXSTR);
24710 nd_set_loc(node, loc);
24713 node = NEW_DXSTR(0, 1, NEW_LIST(node, loc), loc);
24725static int nd_type_st_key_enable_p(
NODE *node);
24731 if (!arg || !p->case_labels)
return;
24732 if (!nd_type_st_key_enable_p(arg))
return;
24734 if (p->case_labels == CHECK_LITERAL_WHEN) {
24735 p->case_labels = st_init_table(&literal_type);
24739 if (st_lookup(p->case_labels, (st_data_t)arg, &line)) {
24740 rb_warning2(
"'when' clause on line %d duplicates 'when' clause on line %d and is ignored",
24741 WARN_I((
int)nd_line(arg)), WARN_I((
int)line));
24745 st_insert(p->case_labels, (st_data_t)arg, (st_data_t)p->ruby_sourceline);
24752 if (is_notop_id(
id)) {
24753 switch (
id & ID_SCOPE_MASK) {
24754 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
24757 if (dyna_in_block(p)) {
24758 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
24760 if (local_id(p,
id))
return 1;
24765 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24770static inline enum lex_state_e
24771parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
24774 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
24776 return p->lex.state = ls;
24783 VALUE mesg = p->debug_buffer;
24785 if (!
NIL_P(mesg) && RSTRING_LEN(mesg)) {
24786 p->debug_buffer =
Qnil;
24787 rb_io_puts(1, &mesg, out);
24789 if (!
NIL_P(str) && RSTRING_LEN(str)) {
24790 rb_io_write(p->debug_output, str);
24794static const char rb_parser_lex_state_names[][8] = {
24795 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
24796 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
24797 "LABEL",
"LABELED",
"FITEM",
24804 unsigned int mask = 1;
24805 static const char none[] =
"NONE";
24807 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
24808 if ((
unsigned)state & mask) {
24823rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
24824 enum lex_state_e to,
int line)
24828 append_lex_state_name(p, from, mesg);
24830 append_lex_state_name(p, to, mesg);
24831 rb_str_catf(mesg,
" at line %d\n", line);
24832 flush_debug_buffer(p, p->debug_output, mesg);
24837rb_parser_lex_state_name(
struct parser_params *p,
enum lex_state_e state)
24839 return rb_str_to_interned_str(append_lex_state_name(p, state,
rb_str_new(0, 0)));
24849 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
24850 for (; mask && !(stack & mask); mask >>= 1)
continue;
24851 for (; mask; mask >>= 1)
rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
24856rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
24857 const char *name,
int line)
24859 VALUE mesg = rb_sprintf(
"%s: ", name);
24860 append_bitstack_value(p, stack, mesg);
24861 rb_str_catf(mesg,
" at line %d\n", line);
24862 flush_debug_buffer(p, p->debug_output, mesg);
24866rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
24872 rb_str_vcatf(mesg, fmt, ap);
24874 yyerror0(RSTRING_PTR(mesg));
24878 append_lex_state_name(p, p->lex.state, mesg);
24879 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
24880 rb_str_resize(mesg, 0);
24881 append_bitstack_value(p, p->cond_stack, mesg);
24882 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
24883 rb_str_resize(mesg, 0);
24884 append_bitstack_value(p, p->cmdarg_stack, mesg);
24885 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
24886 if (p->debug_output == rb_ractor_stdout())
24887 p->debug_output = rb_ractor_stderr();
24892rb_parser_set_pos(
YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
24894 yylloc->beg_pos.lineno = sourceline;
24895 yylloc->beg_pos.column = beg_pos;
24896 yylloc->end_pos.lineno = sourceline;
24897 yylloc->end_pos.column = end_pos;
24904 int sourceline = here->sourceline;
24905 int beg_pos = (int)here->offset - here->quote
24906 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
24907 int end_pos = (int)here->offset + here->length + here->quote;
24909 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24915 yylloc->beg_pos.lineno = p->delayed.beg_line;
24916 yylloc->beg_pos.column = p->delayed.beg_col;
24917 yylloc->end_pos.lineno = p->delayed.end_line;
24918 yylloc->end_pos.column = p->delayed.end_col;
24926 int sourceline = p->ruby_sourceline;
24927 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24928 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
24929 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24935 yylloc->end_pos = yylloc->beg_pos;
24943 int sourceline = p->ruby_sourceline;
24944 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24945 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
24946 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24952 int sourceline = p->ruby_sourceline;
24953 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24954 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
24955 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24962 if (!
id)
return -1;
24965 *err =
"Can't change the value of self";
24968 *err =
"Can't assign to nil";
24971 *err =
"Can't assign to true";
24973 case keyword_false:
24974 *err =
"Can't assign to false";
24976 case keyword__FILE__:
24977 *err =
"Can't assign to __FILE__";
24979 case keyword__LINE__:
24980 *err =
"Can't assign to __LINE__";
24982 case keyword__ENCODING__:
24983 *err =
"Can't assign to __ENCODING__";
24986 switch (id_type(
id)) {
24988 if (dyna_in_block(p)) {
24989 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
24990 compile_error(p,
"Can't assign to numbered parameter _%d",
24991 NUMPARAM_ID_TO_IDX(
id));
24994 if (dvar_curr(p,
id))
return NODE_DASGN;
24995 if (dvar_defined(p,
id))
return NODE_DASGN;
24996 if (local_id(p,
id))
return NODE_LASGN;
25001 if (!local_id(p,
id)) local_var(p,
id);
25005 case ID_GLOBAL:
return NODE_GASGN;
25006 case ID_INSTANCE:
return NODE_IASGN;
25008 if (!p->ctxt.in_def)
return NODE_CDECL;
25009 *err =
"dynamic constant assignment";
25011 case ID_CLASS:
return NODE_CVASGN;
25013 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
25021 const char *err = 0;
25022 int node_type = assignable0(p,
id, &err);
25023 switch (node_type) {
25024 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
25025 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
25026 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
25027 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
25028 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, p->ctxt.shareable_constant_value, loc);
25029 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
25033 if (err) yyerror1(loc, err);
25035 if (err) set_value(assign_error(p, err, p->s_lvalue));
25037 return NEW_ERROR(loc);
25044 if (name == idUScore)
return 1;
25045 if (!is_local_id(name))
return 0;
25046 s = rb_id2str(name);
25048 return RSTRING_PTR(s)[0] ==
'_';
25054 if (dyna_in_block(p)) {
25055 if (dvar_curr(p, name)) {
25056 if (is_private_local_id(p, name))
return 1;
25057 yyerror0(
"duplicated argument name");
25059 else if (dvar_defined(p, name) || local_id(p, name)) {
25060 vtable_add(p->lvtbl->vars, name);
25061 if (p->lvtbl->used) {
25062 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
25068 if (local_id(p, name)) {
25069 if (is_private_local_id(p, name))
return 1;
25070 yyerror0(
"duplicated argument name");
25079 shadowing_lvar_0(p, name);
25087 if (!is_local_id(name)) {
25088 compile_error(p,
"invalid local variable - %"PRIsVALUE,
25092 if (!shadowing_lvar_0(p, name))
return;
25095 if (dvar_defined_ref(p, name, &vidp)) {
25096 if (vidp) *vidp |= LVAR_USED;
25103 NODE *block = 0, *kwds = 0;
25104 if (args && nd_type_p(args, NODE_BLOCK_PASS)) {
25105 block = RNODE_BLOCK_PASS(args)->nd_body;
25106 args = RNODE_BLOCK_PASS(args)->nd_head;
25108 if (args && nd_type_p(args, NODE_ARGSCAT)) {
25109 args = RNODE_ARGSCAT(args)->nd_body;
25111 if (args && nd_type_p(args, NODE_ARGSPUSH)) {
25112 kwds = RNODE_ARGSPUSH(args)->nd_body;
25115 for (
NODE *next = args; next && nd_type_p(next, NODE_LIST);
25116 next = RNODE_LIST(next)->nd_next) {
25117 kwds = RNODE_LIST(next)->nd_head;
25120 if (kwds && nd_type_p(kwds, NODE_HASH) && !RNODE_HASH(kwds)->nd_brace) {
25121 yyerror1(&kwds->nd_loc,
"keyword arg given in index assignment");
25124 yyerror1(&block->nd_loc,
"block arg given in index assignment");
25131 aryset_check(p, idx);
25132 return NEW_ATTRASGN(recv, tASET, idx, loc);
25138 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
25139 compile_error(p,
"both block arg and actual block given");
25146 if (!CALL_Q_P(atype))
id = rb_id_attrset(
id);
25147 return NEW_ATTRASGN(recv,
id, 0, loc);
25154# define ERR(...) (compile_error(p, __VA_ARGS__), Qtrue)
25156# define ERR(...) rb_sprintf(__VA_ARGS__)
25158 switch (nd_type(node)) {
25160 return ERR(
"Can't set variable $%ld", RNODE_NTH_REF(node)->nd_nth);
25161 case NODE_BACK_REF:
25162 return ERR(
"Can't set variable $%c", (
int)RNODE_BACK_REF(node)->nd_nth);
25171 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
25172 switch (nd_type(node1)) {
25174 return list_append(p, node1, node2);
25175 case NODE_BLOCK_PASS:
25176 RNODE_BLOCK_PASS(node1)->nd_head = arg_append(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25177 node1->nd_loc.end_pos = RNODE_BLOCK_PASS(node1)->nd_head->nd_loc.end_pos;
25179 case NODE_ARGSPUSH:
25180 RNODE_ARGSPUSH(node1)->nd_body = list_append(p, NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, &RNODE_ARGSPUSH(node1)->nd_body->nd_loc), node2);
25181 node1->nd_loc.end_pos = RNODE_ARGSPUSH(node1)->nd_body->nd_loc.end_pos;
25182 nd_set_type(node1, NODE_ARGSCAT);
25185 if (!nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25186 RNODE_ARGSCAT(node1)->nd_body = list_append(p, RNODE_ARGSCAT(node1)->nd_body, node2);
25187 node1->nd_loc.end_pos = RNODE_ARGSCAT(node1)->nd_body->nd_loc.end_pos;
25190 return NEW_ARGSPUSH(node1, node2, loc);
25196 if (!node2)
return node1;
25197 switch (nd_type(node1)) {
25198 case NODE_BLOCK_PASS:
25199 if (RNODE_BLOCK_PASS(node1)->nd_head)
25200 RNODE_BLOCK_PASS(node1)->nd_head = arg_concat(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25202 RNODE_LIST(node1)->nd_head = NEW_LIST(node2, loc);
25204 case NODE_ARGSPUSH:
25205 if (!nd_type_p(node2, NODE_LIST))
break;
25206 RNODE_ARGSPUSH(node1)->nd_body = list_concat(NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, loc), node2);
25207 nd_set_type(node1, NODE_ARGSCAT);
25210 if (!nd_type_p(node2, NODE_LIST) ||
25211 !nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25212 RNODE_ARGSCAT(node1)->nd_body = list_concat(RNODE_ARGSCAT(node1)->nd_body, node2);
25215 return NEW_ARGSCAT(node1, node2, loc);
25222 if ((n1 = splat_array(args)) != 0) {
25223 return list_append(p, n1, last_arg);
25225 return arg_append(p, args, last_arg, loc);
25232 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
25233 return list_concat(n1, rest_arg);
25235 return arg_concat(p, args, rest_arg, loc);
25239splat_array(
NODE* node)
25241 if (nd_type_p(node, NODE_SPLAT)) node = RNODE_SPLAT(node)->nd_head;
25242 if (nd_type_p(node, NODE_LIST))
return node;
25251 switch (nd_type(rhs)) {
25253 if (local_id_ref(p, RNODE_LASGN(rhs)->nd_vid, &vidp)) {
25254 if (vidp) *vidp |= LVAR_USED;
25258 if (dvar_defined_ref(p, RNODE_DASGN(rhs)->nd_vid, &vidp)) {
25259 if (vidp) *vidp |= LVAR_USED;
25264 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
25265 mark_lvar_used(p, rhs->nd_head);
25272static int is_static_content(
NODE *node);
25277 if (!lhs)
return 0;
25279 switch (nd_type(lhs)) {
25287 set_nd_value(p, lhs, rhs);
25288 nd_set_loc(lhs, loc);
25291 case NODE_ATTRASGN:
25292 RNODE_ATTRASGN(lhs)->nd_args = arg_append(p, RNODE_ATTRASGN(lhs)->nd_args, rhs, loc);
25293 nd_set_loc(lhs, loc);
25307 NODE *void_node = 0, *vn;
25310 rb_warning0(
"empty expression");
25313 switch (nd_type(node)) {
25315 vn = RNODE_ENSURE(node)->nd_head;
25316 node = RNODE_ENSURE(node)->nd_ensr;
25318 if (vn && (vn = value_expr_check(p, vn))) {
25325 vn = RNODE_RESCUE(node)->nd_head;
25326 if (!vn || !(vn = value_expr_check(p, vn))) {
25327 if (!RNODE_RESCUE(node)->nd_else)
return NULL;
25329 if (!void_node) void_node = vn;
25330 for (
NODE *r = RNODE_RESCUE(node)->nd_resq; r; r = RNODE_RESBODY(r)->nd_next) {
25331 if (!nd_type_p(r, NODE_RESBODY)) {
25332 compile_error(p,
"unexpected node");
25335 if (!(vn = value_expr_check(p, RNODE_RESBODY(r)->nd_body))) {
25338 if (!void_node) void_node = vn;
25340 node = RNODE_RESCUE(node)->nd_else;
25341 if (!node)
return void_node;
25353 for (node = RNODE_CASE(node)->nd_body;
25354 node && nd_type_p(node, NODE_WHEN);
25355 node = RNODE_WHEN(node)->nd_next) {
25356 if (!(vn = value_expr_check(p, RNODE_WHEN(node)->nd_body))) {
25359 if (!void_node) void_node = vn;
25365 NODE *in = RNODE_CASE3(node)->nd_body;
25366 if (!in || !nd_type_p(in, NODE_IN)) {
25367 compile_error(p,
"unexpected node");
25370 if (!RNODE_IN(in)->nd_body) {
25375 vn = value_expr_check(p, RNODE_IN(in)->nd_body);
25376 if (!vn)
return NULL;
25377 if (!void_node) void_node = vn;
25378 in = RNODE_IN(in)->nd_next;
25379 }
while (in && nd_type_p(in, NODE_IN));
25385 while (RNODE_BLOCK(node)->nd_next) {
25386 vn = value_expr_check(p, RNODE_BLOCK(node)->nd_head);
25388 node = RNODE_BLOCK(node)->nd_next;
25390 node = RNODE_BLOCK(node)->nd_head;
25394 node = RNODE_BEGIN(node)->nd_body;
25399 if (!RNODE_IF(node)->nd_body) {
25402 else if (!RNODE_IF(node)->nd_else) {
25405 vn = value_expr_check(p, RNODE_IF(node)->nd_body);
25406 if (!vn)
return NULL;
25407 if (!void_node) void_node = vn;
25408 node = RNODE_IF(node)->nd_else;
25413 node = RNODE_AND(node)->nd_1st;
25419 mark_lvar_used(p, node);
25431 return void_node ? void_node : node;
25437 NODE *void_node = value_expr_check(p, node);
25439 yyerror1(&void_node->nd_loc,
"void value expression");
25449 const char *useless = 0;
25453 if (!node || !(node = nd_once_body(node)))
return;
25454 switch (nd_type(node)) {
25456 switch (RNODE_OPCALL(node)->nd_mid) {
25475 useless = rb_id2name(RNODE_OPCALL(node)->nd_mid);
25486 case NODE_BACK_REF:
25487 useless =
"a variable";
25490 useless =
"a constant";
25495 case NODE_ENCODING:
25498 case NODE_RATIONAL:
25499 case NODE_IMAGINARY:
25504 useless =
"a literal";
25529 useless =
"defined?";
25534 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
25542 NODE *
const n = node;
25544 if (!node)
return n;
25545 if (!nd_type_p(node, NODE_BLOCK))
return n;
25547 while (RNODE_BLOCK(node)->nd_next) {
25548 void_expr(p, RNODE_BLOCK(node)->nd_head);
25549 node = RNODE_BLOCK(node)->nd_next;
25551 return RNODE_BLOCK(node)->nd_head;
25555remove_begin(
NODE *node)
25557 NODE **n = &node, *n1 = node;
25558 while (n1 && nd_type_p(n1, NODE_BEGIN) && RNODE_BEGIN(n1)->nd_body) {
25559 *n = n1 = RNODE_BEGIN(n1)->nd_body;
25567 NODE *node = *body;
25570 *body = NEW_NIL(&NULL_LOC);
25573#define subnodes(type, n1, n2) \
25574 ((!type(node)->n1) ? (type(node)->n2 ? (body = &type(node)->n2, 1) : 0) : \
25575 (!type(node)->n2) ? (body = &type(node)->n1, 1) : \
25576 (reduce_nodes(p, &type(node)->n1), body = &type(node)->n2, 1))
25579 int newline = (int)nd_fl_newline(node);
25580 switch (nd_type(node)) {
25586 *body = node = RNODE_BEGIN(node)->nd_body;
25587 if (newline && node) nd_set_fl_newline(node);
25590 body = &RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head;
25594 if (subnodes(RNODE_IF, nd_body, nd_else))
break;
25597 body = &RNODE_CASE(node)->nd_body;
25600 if (!subnodes(RNODE_WHEN, nd_body, nd_next))
goto end;
25603 body = &RNODE_ENSURE(node)->nd_head;
25607 if (RNODE_RESCUE(node)->nd_else) {
25608 body = &RNODE_RESCUE(node)->nd_resq;
25611 if (!subnodes(RNODE_RESCUE, nd_head, nd_resq))
goto end;
25617 if (newline && node) nd_set_fl_newline(node);
25624is_static_content(
NODE *node)
25626 if (!node)
return 1;
25627 switch (nd_type(node)) {
25629 if (!(node = RNODE_HASH(node)->nd_head))
break;
25632 if (!is_static_content(RNODE_LIST(node)->nd_head))
return 0;
25633 }
while ((node = RNODE_LIST(node)->nd_next) != 0);
25638 case NODE_ENCODING:
25641 case NODE_RATIONAL:
25642 case NODE_IMAGINARY:
25658 switch (nd_type(node)) {
25672 if (!get_nd_value(p, node))
return 1;
25673 if (is_static_content(get_nd_value(p, node))) {
25675 rb_warn0L(nd_line(get_nd_value(p, node)),
"found '= literal' in conditional, should be ==");
25686#define SWITCH_BY_COND_TYPE(t, w, arg) do { \
25688 case COND_IN_OP: break; \
25689 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
25690 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
25699 enum node_type
type;
25701 if (node == 0)
return 0;
25703 type = nd_type(node);
25704 value_expr(p, node);
25705 if (
type == NODE_INTEGER) {
25706 if (!e_option_supplied(p)) rb_warn0L(nd_line(node),
"integer literal in flip-flop");
25707 ID lineno = rb_intern(
"$.");
25708 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
25710 return cond0(p, node, COND_IN_FF, loc,
true);
25716 if (node == 0)
return 0;
25717 if (!(node = nd_once_body(node)))
return 0;
25718 assign_in_cond(p, node);
25720 switch (nd_type(node)) {
25722 RNODE_BEGIN(node)->nd_body = cond0(p, RNODE_BEGIN(node)->nd_body,
type, loc, top);
25729 SWITCH_BY_COND_TYPE(
type, warn,
"string ");
25733 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ");
25734 nd_set_type(node, NODE_MATCH);
25738 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning,
"regex ");
25740 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
25744 NODE *end = RNODE_BLOCK(node)->nd_end;
25745 NODE **expr = &RNODE_BLOCK(end)->nd_head;
25746 if (top) top = node == end;
25747 *expr = cond0(p, *expr,
type, loc, top);
25753 RNODE_AND(node)->nd_1st = cond0(p, RNODE_AND(node)->nd_1st, COND_IN_COND, loc,
true);
25754 RNODE_AND(node)->nd_2nd = cond0(p, RNODE_AND(node)->nd_2nd, COND_IN_COND, loc,
true);
25760 RNODE_DOT2(node)->nd_beg = range_op(p, RNODE_DOT2(node)->nd_beg, loc);
25761 RNODE_DOT2(node)->nd_end = range_op(p, RNODE_DOT2(node)->nd_end, loc);
25762 switch (nd_type(node)) {
25764 nd_set_type(node,NODE_FLIP2);
25769 nd_set_type(node, NODE_FLIP3);
25778 SWITCH_BY_COND_TYPE(
type, warning,
"symbol ");
25782 case NODE_ENCODING:
25785 case NODE_RATIONAL:
25786 case NODE_IMAGINARY:
25787 SWITCH_BY_COND_TYPE(
type, warning,
"");
25799 if (node == 0)
return 0;
25800 return cond0(p, node, COND_IN_COND, loc,
true);
25806 if (node == 0)
return 0;
25807 return cond0(p, node, COND_IN_OP, loc,
true);
25814 return NEW_NIL(&loc);
25820 if (!cc)
return right;
25821 cc = cond0(p, cc, COND_IN_COND, loc,
true);
25822 return newline_node(NEW_IF(cc, left, right, loc, if_keyword_loc, then_keyword_loc, end_keyword_loc));
25828 if (!cc)
return right;
25829 cc = cond0(p, cc, COND_IN_COND, loc,
true);
25830 return newline_node(NEW_UNLESS(cc, left, right, loc, keyword_loc, then_keyword_loc, end_keyword_loc));
25833#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))
25839 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
25841 value_expr(p, left);
25842 if (left && nd_type_p(left,
type)) {
25843 NODE *node = left, *second;
25844 while ((second = RNODE_AND(node)->nd_2nd) != 0 && nd_type_p(second,
type)) {
25847 RNODE_AND(node)->nd_2nd = NEW_AND_OR(
type, second, right, loc, op_loc);
25848 nd_set_line(RNODE_AND(node)->nd_2nd, op_loc->beg_pos.lineno);
25849 left->nd_loc.end_pos = loc->end_pos;
25852 op = NEW_AND_OR(
type, left, right, loc, op_loc);
25853 nd_set_line(op, op_loc->beg_pos.lineno);
25862 if (nd_type_p(node, NODE_BLOCK_PASS)) {
25863 compile_error(p,
"block argument should not be given");
25871 no_blockarg(p, node);
25872 if (nd_type_p(node, NODE_LIST) && !RNODE_LIST(node)->nd_next) {
25873 node = RNODE_LIST(node)->nd_head;
25882 switch (nd_type(node)) {
25884 RNODE_INTEGER(node)->minus = TRUE;
25887 RNODE_FLOAT(node)->minus = TRUE;
25889 case NODE_RATIONAL:
25890 RNODE_RATIONAL(node)->minus = TRUE;
25892 case NODE_IMAGINARY:
25893 RNODE_IMAGINARY(node)->minus = TRUE;
25903 if (!node1)
return (
NODE *)node2;
25904 node2->nd_head = node1;
25905 nd_set_first_lineno(node2, nd_first_lineno(node1));
25906 nd_set_first_column(node2, nd_first_column(node1));
25907 return (
NODE *)node2;
25915 if (args->pre_args_num)
return false;
25916 if (args->post_args_num)
return false;
25917 if (args->rest_arg)
return false;
25918 if (args->opt_args)
return false;
25919 if (args->block_arg)
return false;
25920 if (args->kw_args)
return false;
25921 if (args->kw_rest_arg)
return false;
25930 if (args->forwarding) {
25932 yyerror1(&RNODE(tail)->nd_loc,
"... after rest argument");
25935 rest_arg = idFWD_REST;
25938 args->pre_args_num = pre_args ? pre_args->nd_plen : 0;
25939 args->pre_init = pre_args ? pre_args->nd_next : 0;
25941 args->post_args_num = post_args ? post_args->nd_plen : 0;
25942 args->post_init = post_args ? post_args->nd_next : 0;
25943 args->first_post_arg = post_args ? post_args->nd_pid : 0;
25945 args->rest_arg = rest_arg;
25947 args->opt_args = opt_args;
25949 nd_set_loc(RNODE(tail), loc);
25959 if (p->error_p)
return node;
25961 if (block == idNil) {
25963 args->no_blockarg = TRUE;
25965 args->block_arg = block;
25966 args->kw_args = kw_args;
25975 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
25976 struct vtable *vtargs = p->lvtbl->args;
25979 if (block) block = vtargs->tbl[vtargs->pos-1];
25980 vtable_pop(vtargs, !!block + !!kw_rest_arg);
25981 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
25983 if (!NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body)))
25985 --required_kw_vars;
25986 kwn = kwn->nd_next;
25989 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
25990 ID vid = get_nd_vid(p, kwn->nd_body);
25991 if (NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body))) {
25992 *required_kw_vars++ = vid;
25999 arg_var(p, kw_bits);
26000 if (kw_rest_arg) arg_var(p, kw_rest_arg);
26001 if (block) arg_var(p, block);
26003 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
26005 else if (kw_rest_arg == idNil) {
26006 args->no_kwarg = 1;
26008 else if (kw_rest_arg) {
26009 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
26018 if (max_numparam > NO_PARAM || it_id) {
26020 YYLTYPE loc = RUBY_INIT_YYLLOC();
26021 args = new_empty_args_tail(p, 0);
26022 nd_set_loc(RNODE(args), &loc);
26024 args->nd_ainfo.pre_args_num = it_id ? 1 : max_numparam;
26032 RNODE_ARYPTN(aryptn)->nd_pconst = constant;
26035 NODE *pre_args = NEW_LIST(pre_arg, loc);
26036 if (RNODE_ARYPTN(aryptn)->pre_args) {
26037 RNODE_ARYPTN(aryptn)->pre_args = list_concat(pre_args, RNODE_ARYPTN(aryptn)->pre_args);
26040 RNODE_ARYPTN(aryptn)->pre_args = pre_args;
26050 rest_arg = rest_arg ? rest_arg : NODE_SPECIAL_NO_NAME_REST;
26055 NODE *node = NEW_ARYPTN(pre_args, rest_arg, post_args, loc);
26063 RNODE_FNDPTN(fndptn)->nd_pconst = constant;
26071 pre_rest_arg = pre_rest_arg ? pre_rest_arg : NODE_SPECIAL_NO_NAME_REST;
26072 post_rest_arg = post_rest_arg ? post_rest_arg : NODE_SPECIAL_NO_NAME_REST;
26073 NODE *node = NEW_FNDPTN(pre_rest_arg, args, post_rest_arg, loc);
26081 RNODE_HSHPTN(hshptn)->nd_pconst = constant;
26088 NODE *node, *kw_rest_arg_node;
26090 if (kw_rest_arg == idNil) {
26091 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
26093 else if (kw_rest_arg) {
26094 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
26097 kw_rest_arg_node = NULL;
26100 node = NEW_HSHPTN(0, kw_args, kw_rest_arg_node, loc);
26109 return NEW_SYM(STR_NEW0(), loc);
26112 switch (nd_type(node)) {
26114 nd_set_type(node, NODE_DSYM);
26115 nd_set_loc(node, loc);
26118 node = str_to_sym_node(p, node, loc);
26121 node = NEW_DSYM(0, 1, NEW_LIST(node, loc), loc);
26128nd_type_st_key_enable_p(
NODE *node)
26130 switch (nd_type(node)) {
26133 case NODE_RATIONAL:
26134 case NODE_IMAGINARY:
26140 case NODE_ENCODING:
26150 switch (nd_type(node)) {
26152 return rb_node_str_string_val(node);
26154 return rb_node_integer_literal_val(node);
26156 return rb_node_float_literal_val(node);
26157 case NODE_RATIONAL:
26158 return rb_node_rational_literal_val(node);
26159 case NODE_IMAGINARY:
26160 return rb_node_imaginary_literal_val(node);
26162 return rb_node_sym_string_val(node);
26164 return rb_node_regx_string_val(node);
26166 return rb_node_line_lineno_val(node);
26167 case NODE_ENCODING:
26168 return rb_node_encoding_val(node);
26170 return rb_node_file_path_val(node);
26172 rb_bug(
"unexpected node: %s", ruby_node_name(nd_type(node)));
26181 p->warn_duplicate_keys_table = st_init_table_with_size(&literal_type, RNODE_LIST(hash)->as.nd_alen / 2);
26182 while (hash && RNODE_LIST(hash)->nd_next) {
26183 NODE *head = RNODE_LIST(hash)->nd_head;
26184 NODE *value = RNODE_LIST(hash)->nd_next;
26185 NODE *next = RNODE_LIST(value)->nd_next;
26194 if (nd_type_st_key_enable_p(head)) {
26195 key = (st_data_t)head;
26197 if (st_delete(p->warn_duplicate_keys_table, &key, &data)) {
26198 rb_warn2L(nd_line((
NODE *)data),
26199 "key %+"PRIsWARN
" is duplicated and overwritten on line %d",
26200 nd_value(p, head), WARN_I(nd_line(head)));
26202 st_insert(p->warn_duplicate_keys_table, (st_data_t)key, (st_data_t)hash);
26206 st_free_table(p->warn_duplicate_keys_table);
26207 p->warn_duplicate_keys_table = NULL;
26213 if (hash) warn_duplicate_keys(p, hash);
26214 return NEW_HASH(hash, loc);
26220 if (is_private_local_id(p,
id)) {
26223 if (st_is_member(p->pvtbl,
id)) {
26224 yyerror1(loc,
"duplicated variable name");
26226 else if (p->ctxt.in_alt_pattern &&
id) {
26227 yyerror1(loc,
"variable capture in alternative pattern");
26230 p->ctxt.capture_in_pattern = 1;
26231 st_insert(p->pvtbl, (st_data_t)
id, 0);
26239 p->pktbl = st_init_numtable();
26241 else if (st_is_member(p->pktbl, key)) {
26242 yyerror1(loc,
"duplicated key name");
26245 st_insert(p->pktbl, (st_data_t)key, 0);
26251 return NEW_HASH(hash, loc);
26260 ID vid = get_nd_vid(p, lhs);
26261 YYLTYPE lhs_loc = lhs->nd_loc;
26263 set_nd_value(p, lhs, rhs);
26264 nd_set_loc(lhs, loc);
26265 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
26267 else if (op == tANDOP) {
26268 set_nd_value(p, lhs, rhs);
26269 nd_set_loc(lhs, loc);
26270 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
26274 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
26275 set_nd_value(p, asgn, rhs);
26276 nd_set_loc(asgn, loc);
26280 asgn = NEW_ERROR(loc);
26292 aryset_check(p, args);
26293 args = make_list(args, args_loc);
26294 asgn = NEW_OP_ASGN1(ary, op, args, rhs, loc, call_operator_loc, opening_loc, closing_loc, binary_operator_loc);
26306 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc, call_operator_loc, message_loc, binary_operator_loc);
26317 asgn = NEW_OP_CDECL(lhs, op, rhs, ctxt.shareable_constant_value, loc);
26320 asgn = NEW_ERROR(loc);
26329 if (p->ctxt.in_def) {
26331 yyerror1(loc,
"dynamic constant assignment");
26333 set_value(assign_error(p,
"dynamic constant assignment", p->s_lvalue));
26336 return NEW_CDECL(0, 0, (path), p->ctxt.shareable_constant_value, loc);
26343 a = dispatch2(assign_error, ERR_MESG(), a);
26352 NODE *result = head;
26354 NODE *tmp = rescue_else ? rescue_else : rescue;
26355 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
26357 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
26358 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
26361 result = NEW_ENSURE(result, ensure, loc);
26363 fixpos(result, head);
26372 if (!local->used)
return;
26373 cnt = local->used->pos;
26374 if (cnt != local->vars->pos) {
26375 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
26378 ID *v = local->vars->tbl;
26379 ID *u = local->used->tbl;
26380 for (
int i = 0; i < cnt; ++i) {
26381 if (!v[i] || (u[i] & LVAR_USED))
continue;
26382 if (is_private_local_id(p, v[i]))
continue;
26383 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
26392 int inherits_dvars = toplevel_scope && compile_for_eval;
26396 local->prev = p->lvtbl;
26397 local->args = vtable_alloc(0);
26398 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
26400 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
26401 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
26403 local->numparam.outer = 0;
26404 local->numparam.inner = 0;
26405 local->numparam.current = 0;
26407 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
26409# if WARN_PAST_SCOPE
26420 while (!DVARS_TERMINAL_P(table)) {
26421 struct vtable *cur_table = table;
26422 table = cur_table->prev;
26423 vtable_free(cur_table);
26430 vtable_chain_free(p, local->used);
26432# if WARN_PAST_SCOPE
26433 vtable_chain_free(p, local->past);
26436 vtable_chain_free(p, local->args);
26437 vtable_chain_free(p, local->vars);
26439 ruby_sized_xfree(local,
sizeof(
struct local_vars));
26446 if (p->lvtbl->used) {
26447 warn_unused_var(p, p->lvtbl);
26450 local_free(p, p->lvtbl);
26460 int cnt_args = vtable_size(p->lvtbl->args);
26461 int cnt_vars = vtable_size(p->lvtbl->vars);
26462 int cnt = cnt_args + cnt_vars;
26466 if (cnt <= 0)
return 0;
26467 tbl = rb_ast_new_local_table(p->ast, cnt);
26468 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
26470 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
26471 ID id = p->lvtbl->vars->tbl[i];
26472 if (!vtable_included(p->lvtbl->args,
id)) {
26473 tbl->ids[j++] = id;
26477 tbl = rb_ast_resize_latest_local_table(p->ast, j);
26486 if (!NUMPARAM_ID_P(
id))
return;
26487 compile_error(p,
"_%d is reserved for numbered parameter",
26488 NUMPARAM_ID_TO_IDX(
id));
26494 numparam_name(p,
id);
26495 vtable_add(p->lvtbl->args,
id);
26501 numparam_name(p,
id);
26502 vtable_add(p->lvtbl->vars,
id);
26503 if (p->lvtbl->used) {
26504 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
26512 return rb_local_defined(
id, iseq);
26519 struct vtable *vars, *args, *used;
26521 vars = p->lvtbl->vars;
26522 args = p->lvtbl->args;
26523 used = p->lvtbl->used;
26525 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26528 if (used) used = used->prev;
26531 if (vars && vars->prev == DVARS_INHERIT) {
26532 return rb_parser_local_defined(p,
id, p->parent_iseq);
26534 else if (vtable_included(args,
id)) {
26538 int i = vtable_included(vars,
id);
26539 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
26547 return local_id_ref(p,
id, NULL);
26553 if (local_id(p, idFWD_ALL))
return TRUE;
26554 compile_error(p,
"unexpected ...");
26561 arg_var(p, idFWD_REST);
26562 arg_var(p, idFWD_KWREST);
26563 arg_var(p, idFWD_BLOCK);
26564 arg_var(p, idFWD_ALL);
26570 bool conflict =
false;
26572 struct vtable *vars, *args;
26574 vars = p->lvtbl->vars;
26575 args = p->lvtbl->args;
26577 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26578 conflict |= (vtable_included(args, arg) && !(all && vtable_included(args, all)));
26583 bool found =
false;
26584 if (vars && vars->prev == DVARS_INHERIT && !found) {
26585 found = (rb_parser_local_defined(p, arg, p->parent_iseq) &&
26586 !(all && rb_parser_local_defined(p, all, p->parent_iseq)));
26589 found = (vtable_included(args, arg) &&
26590 !(all && vtable_included(args, all)));
26594 compile_error(p,
"no anonymous %s parameter", var);
26596 else if (conflict) {
26597 compile_error(p,
"anonymous %s parameter is also used within block", var);
26604 NODE *rest = NEW_LVAR(idFWD_REST, loc);
26605 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
26607 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc, &NULL_LOC);
26608 block->forwarding = TRUE;
26609 args = arg_append(p, args, new_hash(p, kwrest, loc), argsloc);
26610 return arg_blk_pass(args, block);
26617 NODE *inner = local->numparam.inner;
26618 if (!local->numparam.outer) {
26619 local->numparam.outer = local->numparam.current;
26621 local->numparam.inner = 0;
26622 local->numparam.current = 0;
26633 local->numparam.inner = prev_inner;
26635 else if (local->numparam.current) {
26637 local->numparam.inner = local->numparam.current;
26639 if (p->max_numparam > NO_PARAM) {
26641 local->numparam.current = local->numparam.outer;
26642 local->numparam.outer = 0;
26646 local->numparam.current = 0;
26651static const struct vtable *
26654 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
26655 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
26656 if (p->lvtbl->used) {
26657 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
26659 return p->lvtbl->args;
26665 struct vtable *tmp = *vtblp;
26666 *vtblp = tmp->prev;
26667# if WARN_PAST_SCOPE
26668 if (p->past_scope_enabled) {
26669 tmp->prev = p->lvtbl->past;
26670 p->lvtbl->past = tmp;
26682 if ((tmp = p->lvtbl->used) != 0) {
26683 warn_unused_var(p, p->lvtbl);
26684 p->lvtbl->used = p->lvtbl->used->prev;
26687 dyna_pop_vtable(p, &p->lvtbl->args);
26688 dyna_pop_vtable(p, &p->lvtbl->vars);
26694 while (p->lvtbl->args != lvargs) {
26696 if (!p->lvtbl->args) {
26698 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
26708 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
26715 struct vtable *vars, *args, *used;
26718 args = p->lvtbl->args;
26719 vars = p->lvtbl->vars;
26720 used = p->lvtbl->used;
26722 while (!DVARS_TERMINAL_P(vars)) {
26723 if (vtable_included(args,
id)) {
26726 if ((i = vtable_included(vars,
id)) != 0) {
26727 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
26732 if (!vidrefp) used = 0;
26733 if (used) used = used->prev;
26736 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
26737 return rb_dvar_defined(
id, p->parent_iseq);
26747 return dvar_defined_ref(p,
id, NULL);
26753 return (vtable_included(p->lvtbl->args,
id) ||
26754 vtable_included(p->lvtbl->vars,
id));
26761 "regexp encoding option '%c' differs from source encoding '%s'",
26762 c, rb_enc_name(rb_parser_str_get_encoding(str)));
26769 int idx = rb_enc_find_index(name);
26771 rb_bug(
"unknown encoding name: %s", name);
26774 return rb_enc_from_index(idx);
26783 case ENC_ASCII8BIT:
26784 enc = rb_ascii8bit_encoding();
26787 enc = find_enc(p,
"EUC-JP");
26789 case ENC_Windows_31J:
26790 enc = find_enc(p,
"Windows-31J");
26793 enc = rb_utf8_encoding();
26806 int c = RE_OPTION_ENCODING_IDX(options);
26812 char_to_option_kcode(c, &opt, &idx);
26813 enc = kcode_to_enc(p, idx);
26814 if (enc != rb_parser_str_get_encoding(str) &&
26815 !rb_parser_is_ascii_string(p, str)) {
26818 rb_parser_string_set_encoding(str, enc);
26820 else if (RE_OPTION_ENCODING_NONE(options)) {
26821 if (!PARSER_ENCODING_IS_ASCII8BIT(p, str) &&
26822 !rb_parser_is_ascii_string(p, str)) {
26826 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
26828 else if (rb_is_usascii_enc(p->enc)) {
26829 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
26841 int c = rb_reg_fragment_setenc(p, str, options);
26842 if (c) reg_fragment_enc_error(p, str, c);
26845#ifndef UNIVERSAL_PARSER
26851 rb_parser_assignable_func assignable;
26855reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
26856 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
26861 long len = name_end - name;
26862 const char *s = (
const char *)name;
26864 return rb_reg_named_capture_assign_iter_impl(p, s,
len, enc, &arg->succ_block, arg->loc, arg->assignable);
26868reg_named_capture_assign(
struct parser_params* p,
VALUE regexp,
const YYLTYPE *loc, rb_parser_assignable_func assignable)
26873 arg.enc = rb_enc_get(regexp);
26874 arg.succ_block = 0;
26876 arg.assignable = assignable;
26877 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
26879 if (!arg.succ_block)
return 0;
26880 return RNODE_BLOCK(arg.succ_block)->nd_next;
26888 return assignable(p,
id, val, loc);
26892rb_reg_named_capture_assign_iter_impl(
struct parser_params *p,
const char *s,
long len,
26898 if (!
len)
return ST_CONTINUE;
26899 if (!VALID_SYMNAME_P(s,
len, enc, ID_LOCAL))
26900 return ST_CONTINUE;
26902 var = intern_cstr(s,
len, enc);
26903 if (
len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)
len)) {
26904 if (!lvar_defined(p, var))
return ST_CONTINUE;
26906 node = node_assign(p, assignable(p, var, 0, loc), NEW_SYM(rb_id2str(var), loc), NO_LEX_CTXT, loc);
26907 succ = *succ_block;
26908 if (!succ) succ = NEW_ERROR(loc);
26909 succ = block_append(p, succ, node);
26910 *succ_block = succ;
26911 return ST_CONTINUE;
26919 reg_fragment_setenc(p, str, options);
26920 str2 = rb_str_new_parser_string(str);
26921 return rb_parser_reg_compile(p, str2, options);
26928 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
26938 err = rb_errinfo();
26939 re = parser_reg_compile(p, str, options);
26941 VALUE m = rb_attr_get(rb_errinfo(), idMesg);
26942 rb_set_errinfo(err);
26943 compile_error(p,
"%"PRIsVALUE, m);
26951rb_ruby_parser_set_options(
struct parser_params *p,
int print,
int loop,
int chomp,
int split)
26953 p->do_print = print;
26955 p->do_chomp = chomp;
26956 p->do_split = split;
26962 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
26963 const YYLTYPE *
const LOC = &default_location;
26966 NODE *print = (
NODE *)NEW_FCALL(rb_intern(
"print"),
26967 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
26969 node = block_append(p, node, print);
26973 NODE *irs = NEW_LIST(NEW_GVAR(rb_intern(
"$/"), LOC), LOC);
26976 ID ifs = rb_intern(
"$;");
26977 ID fields = rb_intern(
"$F");
26978 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
26979 NODE *split = NEW_GASGN(fields,
26980 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
26981 rb_intern(
"split"), args, LOC),
26983 node = block_append(p, split, node);
26987 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
26988 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
26991 node = NEW_WHILE((
NODE *)NEW_FCALL(idGets, irs, LOC), node, 1, LOC, &NULL_LOC, &NULL_LOC);
27008 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
27016 p->command_start = TRUE;
27017 p->ruby_sourcefile_string =
Qnil;
27018 p->lex.lpar_beg = -1;
27019 string_buffer_init(p);
27021 p->delayed.token = NULL;
27022 p->frozen_string_literal = -1;
27024 p->error_buffer =
Qfalse;
27025 p->end_expect_token_locations = NULL;
27030 p->parsing_thread =
Qnil;
27032 p->s_lvalue =
Qnil;
27035 p->debug_buffer =
Qnil;
27036 p->debug_output = rb_ractor_stdout();
27037 p->enc = rb_utf8_encoding();
27042#define rb_ruby_parser_mark ripper_parser_mark
27043#define rb_ruby_parser_free ripper_parser_free
27044#define rb_ruby_parser_memsize ripper_parser_memsize
27048rb_ruby_parser_mark(
void *ptr)
27052 rb_gc_mark(p->ruby_sourcefile_string);
27054 rb_gc_mark(p->error_buffer);
27056 rb_gc_mark(p->value);
27057 rb_gc_mark(p->result);
27058 rb_gc_mark(p->parsing_thread);
27059 rb_gc_mark(p->s_value);
27060 rb_gc_mark(p->s_lvalue);
27061 rb_gc_mark(p->s_value_stack);
27063 rb_gc_mark(p->debug_buffer);
27064 rb_gc_mark(p->debug_output);
27068rb_ruby_parser_free(
void *ptr)
27074 rb_ast_free(p->ast);
27077 if (p->warn_duplicate_keys_table) {
27078 st_free_table(p->warn_duplicate_keys_table);
27083 rb_parser_ary_free(p, p->tokens);
27088 ruby_sized_xfree(p->tokenbuf, p->toksiz);
27091 for (local = p->lvtbl; local; local = prev) {
27092 prev = local->prev;
27093 local_free(p, local);
27098 while ((ptinfo = p->token_info) != 0) {
27099 p->token_info = ptinfo->next;
27103 string_buffer_free(p);
27106 st_free_table(p->pvtbl);
27109 if (CASE_LABELS_ENABLED_P(p->case_labels)) {
27110 st_free_table(p->case_labels);
27113 xfree(p->lex.strterm);
27114 p->lex.strterm = 0;
27120rb_ruby_parser_memsize(
const void *ptr)
27124 size_t size =
sizeof(*p);
27127 for (local = p->lvtbl; local; local = local->prev) {
27128 size +=
sizeof(*local);
27129 if (local->vars) size += local->vars->capa *
sizeof(
ID);
27135#undef rb_reserved_word
27138rb_reserved_word(
const char *str,
unsigned int len)
27140 return reserved_word(str,
len);
27143#ifdef UNIVERSAL_PARSER
27145rb_ruby_parser_allocate(
const rb_parser_config_t *config)
27149 p->config = config;
27154rb_ruby_parser_new(
const rb_parser_config_t *config)
27157 rb_parser_t *p = rb_ruby_parser_allocate(config);
27158 parser_initialize(p);
27163rb_ruby_parser_allocate(
void)
27171rb_ruby_parser_new(
void)
27175 parser_initialize(p);
27184 p->parent_iseq = base;
27191 p->debug_lines = rb_parser_ary_new_capa_for_script_line(p, 10);
27197 p->error_tolerant = 1;
27203 p->keep_tokens = 1;
27204 p->tokens = rb_parser_ary_new_capa_for_ast_token(p, 10);
27216 return p->ruby__end__seen;
27220rb_ruby_parser_set_yydebug(
rb_parser_t *p,
int flag)
27249 return p->debug_output;
27255 p->debug_output = output;
27261 return p->parsing_thread;
27267 p->parsing_thread = parsing_thread;
27271rb_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)
27273 p->lex.gets = gets;
27274 p->lex.input = input;
27276 p->ruby_sourcefile_string = sourcefile_string;
27277 p->ruby_sourcefile = sourcefile;
27278 p->ruby_sourceline = sourceline;
27294rb_ruby_parser_ruby_sourcefile_string(
rb_parser_t *p)
27296 return p->ruby_sourcefile_string;
27302 return p->ruby_sourceline;
27308 return p->lex.state;
27315 p->ast = rb_ast_new();
27316 ripper_yyparse((
void*)p);
27317 rb_ast_free(p->ast);
27320 p->eval_tree_begin = 0;
27326 return dedent_string(p,
string, width);
27332 return p->lex.input != 0;
27338 parser_initialize(p);
27344 return p->lex.ptok - p->lex.pbeg;
27350 return p->lex.pcur - p->lex.ptok;
27356 return p->lex.lastline;
27360rb_ruby_ripper_lex_state_name(
struct parser_params *p,
int state)
27362 return rb_parser_lex_state_name(p, (
enum lex_state_e)state);
27365#ifdef UNIVERSAL_PARSER
27367rb_ripper_parser_params_allocate(
const rb_parser_config_t *config)
27370 p->config = config;
27376rb_ruby_ripper_parser_allocate(
void)
27384rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
27387 VALUE mesg = p->debug_buffer;
27391 rb_str_vcatf(mesg, fmt, ap);
27393 if (char_at_end(p, mesg, 0) ==
'\n') {
27394 rb_io_write(p->debug_output, mesg);
27395 p->debug_buffer =
Qnil;
27403 int lineno, column;
27406 lineno = loc->end_pos.lineno;
27407 column = loc->end_pos.column;
27410 lineno = p->ruby_sourceline;
27414 rb_io_flush(p->debug_output);
27418 rb_syntax_error_append(p->error_buffer,
27419 p->ruby_sourcefile_string,
27426count_char(
const char *str,
int c)
27429 while (str[n] == c) ++n;
27440rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
27442 if (*yystr ==
'"') {
27443 size_t yyn = 0, bquote = 0;
27444 const char *yyp = yystr;
27450 bquote = count_char(yyp+1,
'\'') + 1;
27451 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
27457 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
27458 if (yyres) memcpy(yyres + yyn, yyp, bquote);
27464 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
27465 if (yyres) memcpy(yyres + yyn, yyp, 3);
27470 goto do_not_strip_quotes;
27474 goto do_not_strip_quotes;
27477 if (*++yyp !=
'\\')
27478 goto do_not_strip_quotes;
27493 do_not_strip_quotes: ;
27496 if (!yyres)
return strlen(yystr);
27498 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
27503#define validate(x) (void)(x)
27532 return rb_funcall(p->value, mid, 3, a, b, c);
27542 return rb_funcall(p->value, mid, 4, a, b, c, d);
27553 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
27566 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.