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*,const YYLTYPE*);
1503static void no_blockarg(struct parser_params*,NODE*);
1504static NODE *ret_args(struct parser_params*,NODE*);
1505static NODE *arg_blk_pass(NODE*,rb_node_block_pass_t*);
1506static NODE *dsym_node(struct parser_params*,NODE*,const YYLTYPE*);
1508static NODE *gettable(struct parser_params*,ID,const YYLTYPE*);
1509static NODE *assignable(struct parser_params*,ID,NODE*,const YYLTYPE*);
1511static NODE *aryset(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1512static NODE *attrset(struct parser_params*,NODE*,ID,ID,const YYLTYPE*);
1514static VALUE rb_backref_error(struct parser_params*,NODE*);
1515static NODE *node_assign(struct parser_params*,NODE*,NODE*,struct lex_context,const YYLTYPE*);
1517static NODE *new_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1518static NODE *new_ary_op_assign(struct parser_params *p, NODE *ary, NODE *args, ID op, NODE *rhs, const YYLTYPE *args_loc, const YYLTYPE *loc, const YYLTYPE *call_operator_loc, const YYLTYPE *opening_loc, const YYLTYPE *closing_loc, const YYLTYPE *binary_operator_loc);
1519static NODE *new_attr_op_assign(struct parser_params *p, NODE *lhs, ID atype, ID attr, ID op, NODE *rhs, const YYLTYPE *loc, const YYLTYPE *call_operator_loc, const YYLTYPE *message_loc, const YYLTYPE *binary_operator_loc);
1520static NODE *new_const_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1521static NODE *new_bodystmt(struct parser_params *p, NODE *head, NODE *rescue, NODE *rescue_else, NODE *ensure, const YYLTYPE *loc);
1523static NODE *const_decl(struct parser_params *p, NODE* path, const YYLTYPE *loc);
1525static rb_node_opt_arg_t *opt_arg_append(rb_node_opt_arg_t*, rb_node_opt_arg_t*);
1526static rb_node_kw_arg_t *kwd_append(rb_node_kw_arg_t*, rb_node_kw_arg_t*);
1528static NODE *new_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1529static NODE *new_unique_key_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1531static NODE *new_defined(struct parser_params *p, NODE *expr, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1533static NODE *new_regexp(struct parser_params *, NODE *, int, const YYLTYPE *, const YYLTYPE *, const YYLTYPE *, const YYLTYPE *);
1535#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
1537static NODE *new_xstring(struct parser_params *, NODE *, const YYLTYPE *loc);
1539static NODE *symbol_append(struct parser_params *p, NODE *symbols, NODE *symbol);
1541static NODE *match_op(struct parser_params*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
1543static rb_ast_id_table_t *local_tbl(struct parser_params*);
1545static VALUE reg_compile(struct parser_params*, rb_parser_string_t*, int);
1546static void reg_fragment_setenc(struct parser_params*, rb_parser_string_t*, int);
1548static int literal_concat0(struct parser_params *p, rb_parser_string_t *head, rb_parser_string_t *tail);
1549static NODE *heredoc_dedent(struct parser_params*,NODE*);
1551static void check_literal_when(struct parser_params *p, NODE *args, const YYLTYPE *loc);
1553static rb_locations_lambda_body_t* new_locations_lambda_body(struct parser_params *p, NODE *node, const YYLTYPE *loc, const YYLTYPE *opening_loc, const YYLTYPE *closing_loc);
1556#define get_value(idx) (rb_ary_entry(p->s_value_stack, idx))
1557#define set_value(val) (p->s_lvalue = val)
1558static VALUE assign_error(struct parser_params *p, const char *mesg, VALUE a);
1559static int id_is_var(struct parser_params *p, ID id);
1562RUBY_SYMBOL_EXPORT_BEGIN
1563VALUE rb_parser_reg_compile(struct parser_params* p, VALUE str, int options);
1564int rb_reg_fragment_setenc(struct parser_params*, rb_parser_string_t *, int);
1565enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_state_e, enum lex_state_e, int);
1566VALUE rb_parser_lex_state_name(struct parser_params *p, enum lex_state_e state);
1567void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int);
1568PRINTF_ARGS(void rb_parser_fatal(struct parser_params *p, const char *fmt, ...), 2, 3);
1569YYLTYPE *rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc);
1570YYLTYPE *rb_parser_set_location_of_delayed_token(struct parser_params *p, YYLTYPE *yylloc);
1571YYLTYPE *rb_parser_set_location_of_heredoc_end(struct parser_params *p, YYLTYPE *yylloc);
1572YYLTYPE *rb_parser_set_location_of_dummy_end(struct parser_params *p, YYLTYPE *yylloc);
1573YYLTYPE *rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc);
1574YYLTYPE *rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc);
1575void ruby_show_error_line(struct parser_params *p, VALUE errbuf, const YYLTYPE *yylloc, int lineno, rb_parser_string_t *str);
1576RUBY_SYMBOL_EXPORT_END
1578static void flush_string_content(struct parser_params *p, rb_encoding *enc, size_t back);
1579static void error_duplicate_pattern_variable(struct parser_params *p, ID id, const YYLTYPE *loc);
1580static void error_duplicate_pattern_key(struct parser_params *p, ID id, const YYLTYPE *loc);
1581static VALUE formal_argument_error(struct parser_params*, ID);
1582static ID shadowing_lvar(struct parser_params*,ID);
1583static void new_bv(struct parser_params*,ID);
1585static void local_push(struct parser_params*,int);
1586static void local_pop(struct parser_params*);
1587static void local_var(struct parser_params*, ID);
1588static void arg_var(struct parser_params*, ID);
1589static int local_id(struct parser_params *p, ID id);
1590static int local_id_ref(struct parser_params*, ID, ID **);
1591#define internal_id rb_parser_internal_id
1592ID internal_id(struct parser_params*);
1593static NODE *new_args_forward_call(struct parser_params*, NODE*, const YYLTYPE*, const YYLTYPE*);
1594static int check_forwarding_args(struct parser_params*);
1595static void add_forwarding_args(struct parser_params *p);
1596static void forwarding_arg_check(struct parser_params *p, ID arg, ID all, const char *var);
1598static const struct vtable *dyna_push(struct parser_params *);
1599static void dyna_pop(struct parser_params*, const struct vtable *);
1600static int dyna_in_block(struct parser_params*);
1601#define dyna_var(p, id) local_var(p, id)
1602static int dvar_defined(struct parser_params*, ID);
1603#define dvar_defined_ref rb_parser_dvar_defined_ref
1604int dvar_defined_ref(struct parser_params*, ID, ID**);
1605static int dvar_curr(struct parser_params*,ID);
1607static int lvar_defined(struct parser_params*, ID);
1609static NODE *numparam_push(struct parser_params *p);
1610static void numparam_pop(struct parser_params *p, NODE *prev_inner);
1612#define METHOD_NOT '!
'
1614#define idFWD_REST '*
'
1615#define idFWD_KWREST idPow /* Use simple "**", as tDSTAR is "**arg" */
1616#define idFWD_BLOCK '&
'
1617#define idFWD_ALL idDot3
1618#define arg_FWD_BLOCK idFWD_BLOCK
1620#define RE_ONIG_OPTION_IGNORECASE 1
1621#define RE_ONIG_OPTION_EXTEND (RE_ONIG_OPTION_IGNORECASE<<1)
1622#define RE_ONIG_OPTION_MULTILINE (RE_ONIG_OPTION_EXTEND<<1)
1623#define RE_OPTION_ONCE (1<<16)
1624#define RE_OPTION_ENCODING_SHIFT 8
1625#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
1626#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
1627#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
1628#define RE_OPTION_MASK 0xff
1629#define RE_OPTION_ARG_ENCODING_NONE 32
1631#define CHECK_LITERAL_WHEN (st_table *)1
1632#define CASE_LABELS_ENABLED_P(case_labels) (case_labels && case_labels != CHECK_LITERAL_WHEN)
1634#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
1635RUBY_FUNC_EXPORTED size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr);
1637#define TOKEN2ID(tok) ( \
1638 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
1639 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
1640 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
1641 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
1642 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
1643 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
1644 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
1646/****** Ripper *******/
1650#include "eventids1.h"
1651#include "eventids2.h"
1653extern const struct ripper_parser_ids ripper_parser_ids;
1655static VALUE ripper_dispatch0(struct parser_params*,ID);
1656static VALUE ripper_dispatch1(struct parser_params*,ID,VALUE);
1657static VALUE ripper_dispatch2(struct parser_params*,ID,VALUE,VALUE);
1658static VALUE ripper_dispatch3(struct parser_params*,ID,VALUE,VALUE,VALUE);
1659static VALUE ripper_dispatch4(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE);
1660static VALUE ripper_dispatch5(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE);
1661static VALUE ripper_dispatch7(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE);
1662void ripper_error(struct parser_params *p);
1664#define dispatch0(n) ripper_dispatch0(p, RIPPER_ID(n))
1665#define dispatch1(n,a) ripper_dispatch1(p, RIPPER_ID(n), (a))
1666#define dispatch2(n,a,b) ripper_dispatch2(p, RIPPER_ID(n), (a), (b))
1667#define dispatch3(n,a,b,c) ripper_dispatch3(p, RIPPER_ID(n), (a), (b), (c))
1668#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, RIPPER_ID(n), (a), (b), (c), (d))
1669#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, RIPPER_ID(n), (a), (b), (c), (d), (e))
1670#define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, RIPPER_ID(n), (a), (b), (c), (d), (e), (f), (g))
1672#define yyparse ripper_yyparse
1675aryptn_pre_args(struct parser_params *p, VALUE pre_arg, VALUE pre_args)
1677 if (!NIL_P(pre_arg)) {
1678 if (!NIL_P(pre_args)) {
1679 rb_ary_unshift(pre_args, pre_arg);
1682 pre_args = rb_ary_new_from_args(1, pre_arg);
1688#define ID2VAL(id) STATIC_ID2SYM(id)
1689#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
1692#define KWD2EID(t, v) keyword_##t
1695new_scope_body(struct parser_params *p, rb_node_args_t *args, NODE *body, NODE *parent, const YYLTYPE *loc)
1697 body = remove_begin(body);
1698 reduce_nodes(p, &body);
1699 NODE *n = NEW_SCOPE(args, body, parent, loc);
1700 nd_set_line(n, loc->end_pos.lineno);
1701 set_line_body(body, loc->beg_pos.lineno);
1706rescued_expr(struct parser_params *p, NODE *arg, NODE *rescue,
1707 const YYLTYPE *arg_loc, const YYLTYPE *mod_loc, const YYLTYPE *res_loc)
1709 YYLTYPE loc = code_loc_gen(mod_loc, res_loc);
1710 rescue = NEW_RESBODY(0, 0, remove_begin(rescue), 0, &loc);
1711 loc.beg_pos = arg_loc->beg_pos;
1712 return NEW_RESCUE(arg, rescue, 0, &loc);
1715static NODE *add_block_exit(struct parser_params *p, NODE *node);
1716static rb_node_exits_t *init_block_exit(struct parser_params *p);
1717static rb_node_exits_t *allow_block_exit(struct parser_params *p);
1718static void restore_block_exit(struct parser_params *p, rb_node_exits_t *exits);
1719static void clear_block_exit(struct parser_params *p, bool error);
1722next_rescue_context(struct lex_context *next, const struct lex_context *outer, enum rescue_context def)
1724 next->in_rescue = outer->in_rescue == after_rescue ? after_rescue : def;
1728restore_defun(struct parser_params *p, rb_node_def_temp_t *temp)
1730 /* See: def_name action */
1731 struct lex_context ctxt = temp->save.ctxt;
1732 p->ctxt.in_def = ctxt.in_def;
1733 p->ctxt.shareable_constant_value = ctxt.shareable_constant_value;
1734 p->ctxt.in_rescue = ctxt.in_rescue;
1735 p->max_numparam = temp->save.max_numparam;
1736 numparam_pop(p, temp->save.numparam_save);
1737 clear_block_exit(p, true);
1741endless_method_name(struct parser_params *p, ID mid, const YYLTYPE *loc)
1743 if (is_attrset_id(mid)) {
1744 yyerror1(loc, "setter method cannot be defined in an endless method definition");
1746 token_info_drop(p, "def", loc->beg_pos);
1749#define debug_token_line(p, name, line) do { \
1751 const char *const pcur = p->lex.pcur; \
1752 const char *const ptok = p->lex.ptok; \
1753 rb_parser_printf(p, name ":%d (%d: %"PRIdPTRDIFF"|%"PRIdPTRDIFF"|%"PRIdPTRDIFF")\n", \
1754 line, p->ruby_sourceline, \
1755 ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur); \
1759#define begin_definition(k, loc_beg, loc_end) \
1761 if (!(p->ctxt.in_class = (k)[0] != 0)) { \
1762 /* singleton class */ \
1763 p->ctxt.cant_return = !p->ctxt.in_def; \
1764 p->ctxt.in_def = 0; \
1766 else if (p->ctxt.in_def) { \
1767 YYLTYPE loc = code_loc_gen(loc_beg, loc_end); \
1768 yyerror1(&loc, k " definition in method body"); \
1771 p->ctxt.cant_return = 1; \
1777# define ifndef_ripper(x) (x)
1778# define ifdef_ripper(r,x) (x)
1780# define ifndef_ripper(x)
1781# define ifdef_ripper(r,x) (r)
1784# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
1785# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
1786# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
1787# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
1788# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
1789# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
1790# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
1791# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
1792# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
1793# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
1794# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1795# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
1796# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
1797# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
1798# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1799# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
1800# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
1801# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
1802# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
1803# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1805extern const ID id_warn, id_warning, id_gets, id_assoc;
1806# define ERR_MESG() STR_NEW2(mesg) /* to bypass Ripper DSL */
1807# define WARN_S_L(s,l) STR_NEW(s,l)
1808# define WARN_S(s) STR_NEW2(s)
1809# define WARN_I(i) INT2NUM(i)
1810# define WARN_ID(i) rb_id2str(i)
1811# define PRIsWARN PRIsVALUE
1812# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
1813# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
1814# ifdef HAVE_VA_ARGS_MACRO
1815# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
1817# define WARN_CALL rb_funcall
1819# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
1820# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
1821# ifdef HAVE_VA_ARGS_MACRO
1822# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
1824# define WARNING_CALL rb_funcall
1826# define compile_error ripper_compile_error
1828# define WARN_S_L(s,l) s
1831# define WARN_ID(i) rb_id2name(i)
1832# define PRIsWARN PRIsVALUE
1833# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1834# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1835# define WARN_CALL rb_compile_warn
1836# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1837# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1838# define WARNING_CALL rb_compile_warning
1839PRINTF_ARGS(static void parser_compile_error(struct parser_params*, const rb_code_location_t *loc, const char *fmt, ...), 3, 4);
1840# define compile_error(p, ...) parser_compile_error(p, NULL, __VA_ARGS__)
1843#define RNODE_EXITS(node) ((rb_node_exits_t*)(node))
1846add_block_exit(struct parser_params *p, NODE *node)
1849 compile_error(p, "unexpected null node");
1852 switch (nd_type(node)) {
1853 case NODE_BREAK: case NODE_NEXT: case NODE_REDO: break;
1855 compile_error(p, "add_block_exit: unexpected node: %s", parser_node_name(nd_type(node)));
1858 if (!p->ctxt.in_defined) {
1859 rb_node_exits_t *exits = p->exits;
1861 RNODE_EXITS(exits->nd_stts)->nd_chain = node;
1862 exits->nd_stts = node;
1868static rb_node_exits_t *
1869init_block_exit(struct parser_params *p)
1871 rb_node_exits_t *old = p->exits;
1872 rb_node_exits_t *exits = NODE_NEW_INTERNAL(NODE_EXITS, rb_node_exits_t);
1873 exits->nd_chain = 0;
1874 exits->nd_stts = RNODE(exits);
1879static rb_node_exits_t *
1880allow_block_exit(struct parser_params *p)
1882 rb_node_exits_t *exits = p->exits;
1888restore_block_exit(struct parser_params *p, rb_node_exits_t *exits)
1894clear_block_exit(struct parser_params *p, bool error)
1896 rb_node_exits_t *exits = p->exits;
1899 for (NODE *e = RNODE(exits); (e = RNODE_EXITS(e)->nd_chain) != 0; ) {
1900 switch (nd_type(e)) {
1902 yyerror1(&e->nd_loc, "Invalid break");
1905 yyerror1(&e->nd_loc, "Invalid next");
1908 yyerror1(&e->nd_loc, "Invalid redo");
1911 yyerror1(&e->nd_loc, "unexpected node");
1912 goto end_checks; /* no nd_chain */
1917 exits->nd_stts = RNODE(exits);
1918 exits->nd_chain = 0;
1921#define WARN_EOL(tok) \
1922 (looking_at_eol_p(p) ? \
1923 (void)rb_warning0("'" tok "' at the end of line without an expression") : \
1925static int looking_at_eol_p(struct parser_params *p);
1928get_nd_value(struct parser_params *p, NODE *node)
1930 switch (nd_type(node)) {
1932 return RNODE_GASGN(node)->nd_value;
1934 return RNODE_IASGN(node)->nd_value;
1936 return RNODE_LASGN(node)->nd_value;
1938 return RNODE_DASGN(node)->nd_value;
1940 return RNODE_MASGN(node)->nd_value;
1942 return RNODE_CVASGN(node)->nd_value;
1944 return RNODE_CDECL(node)->nd_value;
1946 compile_error(p, "get_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1952set_nd_value(struct parser_params *p, NODE *node, NODE *rhs)
1954 switch (nd_type(node)) {
1956 RNODE_CDECL(node)->nd_value = rhs;
1959 RNODE_GASGN(node)->nd_value = rhs;
1962 RNODE_IASGN(node)->nd_value = rhs;
1965 RNODE_LASGN(node)->nd_value = rhs;
1968 RNODE_DASGN(node)->nd_value = rhs;
1971 RNODE_MASGN(node)->nd_value = rhs;
1974 RNODE_CVASGN(node)->nd_value = rhs;
1977 compile_error(p, "set_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1983get_nd_vid(struct parser_params *p, NODE *node)
1985 switch (nd_type(node)) {
1987 return RNODE_CDECL(node)->nd_vid;
1989 return RNODE_GASGN(node)->nd_vid;
1991 return RNODE_IASGN(node)->nd_vid;
1993 return RNODE_LASGN(node)->nd_vid;
1995 return RNODE_DASGN(node)->nd_vid;
1997 return RNODE_CVASGN(node)->nd_vid;
1999 compile_error(p, "get_nd_vid: unexpected node: %s", parser_node_name(nd_type(node)));
2005get_nd_args(struct parser_params *p, NODE *node)
2007 switch (nd_type(node)) {
2009 return RNODE_CALL(node)->nd_args;
2011 return RNODE_OPCALL(node)->nd_args;
2013 return RNODE_FCALL(node)->nd_args;
2015 return RNODE_QCALL(node)->nd_args;
2017 return RNODE_SUPER(node)->nd_args;
2026 compile_error(p, "get_nd_args: unexpected node: %s", parser_node_name(nd_type(node)));
2032djb2(const uint8_t *str, size_t len)
2034 st_index_t hash = 5381;
2036 for (size_t i = 0; i < len; i++) {
2037 hash = ((hash << 5) + hash) + str[i];
2044parser_memhash(const void *ptr, long len)
2046 return djb2(ptr, len);
2049#define PARSER_STRING_PTR(str) (str->ptr)
2050#define PARSER_STRING_LEN(str) (str->len)
2051#define PARSER_STRING_END(str) (&str->ptr[str->len])
2052#define STRING_SIZE(str) ((size_t)str->len + 1)
2053#define STRING_TERM_LEN(str) (1)
2054#define STRING_TERM_FILL(str) (str->ptr[str->len] = '\0
')
2055#define PARSER_STRING_RESIZE_CAPA_TERM(p,str,capacity,termlen) do {\
2056 REALLOC_N(str->ptr, char, (size_t)total + termlen); \
2059#define STRING_SET_LEN(str, n) do { \
2062#define PARSER_STRING_GETMEM(str, ptrvar, lenvar) \
2063 ((ptrvar) = str->ptr, \
2064 (lenvar) = str->len)
2067parser_string_char_at_end(struct parser_params *p, rb_parser_string_t *str, int when_empty)
2069 return PARSER_STRING_LEN(str) > 0 ? (unsigned char)PARSER_STRING_END(str)[-1] : when_empty;
2072static rb_parser_string_t *
2073rb_parser_string_new(rb_parser_t *p, const char *ptr, long len)
2075 rb_parser_string_t *str;
2078 rb_bug("negative string size (or size too big): %ld", len);
2081 str = xcalloc(1, sizeof(rb_parser_string_t));
2082 str->ptr = xcalloc(len + 1, sizeof(char));
2085 memcpy(PARSER_STRING_PTR(str), ptr, len);
2087 STRING_SET_LEN(str, len);
2088 STRING_TERM_FILL(str);
2092static rb_parser_string_t *
2093rb_parser_encoding_string_new(rb_parser_t *p, const char *ptr, long len, rb_encoding *enc)
2095 rb_parser_string_t *str = rb_parser_string_new(p, ptr, len);
2096 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2103rb_str_to_parser_string(rb_parser_t *p, VALUE str)
2106 rb_parser_string_t *ret = rb_parser_encoding_string_new(p, RSTRING_PTR(str), RSTRING_LEN(str), rb_enc_get(str));
2112rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str)
2115 xfree(PARSER_STRING_PTR(str));
2121rb_parser_str_hash(rb_parser_string_t *str)
2123 return parser_memhash((const void *)PARSER_STRING_PTR(str), PARSER_STRING_LEN(str));
2127rb_char_p_hash(const char *c)
2129 return parser_memhash((const void *)c, strlen(c));
2133rb_parser_str_capacity(rb_parser_string_t *str, const int termlen)
2135 return PARSER_STRING_LEN(str);
2140rb_parser_string_end(rb_parser_string_t *str)
2142 return &str->ptr[str->len];
2147rb_parser_string_set_encoding(rb_parser_string_t *str, rb_encoding *enc)
2153rb_parser_str_get_encoding(rb_parser_string_t *str)
2160PARSER_ENCODING_IS_ASCII8BIT(struct parser_params *p, rb_parser_string_t *str)
2162 return rb_parser_str_get_encoding(str) == rb_ascii8bit_encoding();
2167PARSER_ENC_CODERANGE(rb_parser_string_t *str)
2169 return str->coderange;
2173PARSER_ENC_CODERANGE_SET(rb_parser_string_t *str, int coderange)
2175 str->coderange = coderange;
2179PARSER_ENCODING_CODERANGE_SET(rb_parser_string_t *str, rb_encoding *enc, enum rb_parser_string_coderange_type cr)
2181 rb_parser_string_set_encoding(str, enc);
2182 PARSER_ENC_CODERANGE_SET(str, cr);
2186PARSER_ENC_CODERANGE_CLEAR(rb_parser_string_t *str)
2188 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2192PARSER_ENC_CODERANGE_ASCIIONLY(rb_parser_string_t *str)
2194 return PARSER_ENC_CODERANGE(str) == RB_PARSER_ENC_CODERANGE_7BIT;
2198PARSER_ENC_CODERANGE_CLEAN_P(int cr)
2200 return cr == RB_PARSER_ENC_CODERANGE_7BIT || cr == RB_PARSER_ENC_CODERANGE_VALID;
2204rb_parser_search_nonascii(const char *p, const char *e)
2208 for (; s < e; s++) {
2209 if (*s & 0x80) return s;
2216rb_parser_coderange_scan(struct parser_params *p, const char *ptr, long len, rb_encoding *enc)
2218 const char *e = ptr + len;
2220 if (enc == rb_ascii8bit_encoding()) {
2221 /* enc is ASCII-8BIT. ASCII-8BIT string never be broken. */
2222 ptr = rb_parser_search_nonascii(ptr, e);
2223 return ptr ? RB_PARSER_ENC_CODERANGE_VALID : RB_PARSER_ENC_CODERANGE_7BIT;
2226 /* parser string encoding is always asciicompat */
2227 ptr = rb_parser_search_nonascii(ptr, e);
2228 if (!ptr) return RB_PARSER_ENC_CODERANGE_7BIT;
2230 int ret = rb_enc_precise_mbclen(ptr, e, enc);
2231 if (!MBCLEN_CHARFOUND_P(ret)) return RB_PARSER_ENC_CODERANGE_BROKEN;
2232 ptr += MBCLEN_CHARFOUND_LEN(ret);
2233 if (ptr == e) break;
2234 ptr = rb_parser_search_nonascii(ptr, e);
2238 return RB_PARSER_ENC_CODERANGE_VALID;
2242rb_parser_enc_coderange_scan(struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2244 return rb_parser_coderange_scan(p, PARSER_STRING_PTR(str), PARSER_STRING_LEN(str), enc);
2248rb_parser_enc_str_coderange(struct parser_params *p, rb_parser_string_t *str)
2250 int cr = PARSER_ENC_CODERANGE(str);
2252 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2253 cr = rb_parser_enc_coderange_scan(p, str, rb_parser_str_get_encoding(str));
2254 PARSER_ENC_CODERANGE_SET(str, cr);
2260static rb_parser_string_t *
2261rb_parser_enc_associate(struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2263 if (rb_parser_str_get_encoding(str) == enc)
2265 if (!PARSER_ENC_CODERANGE_ASCIIONLY(str)) {
2266 PARSER_ENC_CODERANGE_CLEAR(str);
2268 rb_parser_string_set_encoding(str, enc);
2273rb_parser_is_ascii_string(struct parser_params *p, rb_parser_string_t *str)
2275 return rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_7BIT;
2279rb_parser_enc_compatible(struct parser_params *p, rb_parser_string_t *str1, rb_parser_string_t *str2)
2281 rb_encoding *enc1 = rb_parser_str_get_encoding(str1);
2282 rb_encoding *enc2 = rb_parser_str_get_encoding(str2);
2284 if (enc1 == NULL || enc2 == NULL)
2291 if (PARSER_STRING_LEN(str2) == 0)
2293 if (PARSER_STRING_LEN(str1) == 0)
2294 return rb_parser_is_ascii_string(p, str2) ? enc1 : enc2;
2298 cr1 = rb_parser_enc_str_coderange(p, str1);
2299 cr2 = rb_parser_enc_str_coderange(p, str2);
2302 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT) return enc2;
2303 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT) return enc1;
2306 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT) {
2310 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT) {
2318rb_parser_str_modify(rb_parser_string_t *str)
2320 PARSER_ENC_CODERANGE_CLEAR(str);
2324rb_parser_str_set_len(struct parser_params *p, rb_parser_string_t *str, long len)
2327 const int termlen = STRING_TERM_LEN(str);
2329 if (len > (capa = (long)(rb_parser_str_capacity(str, termlen))) || len < 0) {
2330 rb_bug("probable buffer overflow: %ld for %ld", len, capa);
2333 int cr = PARSER_ENC_CODERANGE(str);
2334 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2335 /* Leave unknown. */
2337 else if (len > PARSER_STRING_LEN(str)) {
2338 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2340 else if (len < PARSER_STRING_LEN(str)) {
2341 if (cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2342 /* ASCII-only string is keeping after truncated. Valid
2343 * and broken may be invalid or valid, leave unknown. */
2344 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2348 STRING_SET_LEN(str, len);
2349 STRING_TERM_FILL(str);
2352static rb_parser_string_t *
2353rb_parser_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len)
2355 rb_parser_str_modify(str);
2356 if (len == 0) return 0;
2358 long total, olen, off = -1;
2360 const int termlen = STRING_TERM_LEN(str);
2362 PARSER_STRING_GETMEM(str, sptr, olen);
2363 if (ptr >= sptr && ptr <= sptr + olen) {
2367 if (olen > LONG_MAX - len) {
2368 compile_error(p, "string sizes too big");
2372 PARSER_STRING_RESIZE_CAPA_TERM(p, str, total, termlen);
2373 sptr = PARSER_STRING_PTR(str);
2377 memcpy(sptr + olen, ptr, len);
2378 STRING_SET_LEN(str, total);
2379 STRING_TERM_FILL(str);
2384#define parser_str_cat(str, ptr, len) rb_parser_str_buf_cat(p, str, ptr, len)
2385#define parser_str_cat_cstr(str, lit) rb_parser_str_buf_cat(p, str, lit, strlen(lit))
2387static rb_parser_string_t *
2388rb_parser_enc_cr_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len,
2389 rb_encoding *ptr_enc, int ptr_cr, int *ptr_cr_ret)
2392 rb_encoding *str_enc, *res_enc;
2394 str_enc = rb_parser_str_get_encoding(str);
2395 str_cr = PARSER_STRING_LEN(str) ? PARSER_ENC_CODERANGE(str) : RB_PARSER_ENC_CODERANGE_7BIT;
2397 if (str_enc == ptr_enc) {
2398 if (str_cr != RB_PARSER_ENC_CODERANGE_UNKNOWN && ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2399 ptr_cr = rb_parser_coderange_scan(p, ptr, len, ptr_enc);
2403 /* parser string encoding is always asciicompat */
2404 if (ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2405 ptr_cr = rb_parser_coderange_scan(p, ptr, len, ptr_enc);
2407 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2408 if (str_enc == rb_ascii8bit_encoding() || ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2409 str_cr = rb_parser_enc_str_coderange(p, str);
2414 *ptr_cr_ret = ptr_cr;
2416 if (str_enc != ptr_enc &&
2417 str_cr != RB_PARSER_ENC_CODERANGE_7BIT &&
2418 ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2422 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2424 res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2426 else if (str_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2427 if (ptr_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2429 res_cr = RB_PARSER_ENC_CODERANGE_7BIT;
2436 else if (str_cr == RB_PARSER_ENC_CODERANGE_VALID) {
2438 if (PARSER_ENC_CODERANGE_CLEAN_P(ptr_cr))
2443 else { /* str_cr == RB_PARSER_ENC_CODERANGE_BROKEN */
2446 if (0 < len) res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2450 compile_error(p, "negative string size (or size too big)");
2452 parser_str_cat(str, ptr, len);
2453 PARSER_ENCODING_CODERANGE_SET(str, res_enc, res_cr);
2457 compile_error(p, "incompatible character encodings: %s and %s",
2458 rb_enc_name(str_enc), rb_enc_name(ptr_enc));
2459 UNREACHABLE_RETURN(0);
2463static rb_parser_string_t *
2464rb_parser_enc_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len,
2465 rb_encoding *ptr_enc)
2467 return rb_parser_enc_cr_str_buf_cat(p, str, ptr, len, ptr_enc, RB_PARSER_ENC_CODERANGE_UNKNOWN, NULL);
2470static rb_parser_string_t *
2471rb_parser_str_buf_append(struct parser_params *p, rb_parser_string_t *str, rb_parser_string_t *str2)
2473 int str2_cr = rb_parser_enc_str_coderange(p, str2);
2475 rb_parser_enc_cr_str_buf_cat(p, str, PARSER_STRING_PTR(str2), PARSER_STRING_LEN(str2),
2476 rb_parser_str_get_encoding(str2), str2_cr, &str2_cr);
2478 PARSER_ENC_CODERANGE_SET(str2, str2_cr);
2483static rb_parser_string_t *
2484rb_parser_str_resize(struct parser_params *p, rb_parser_string_t *str, long len)
2487 rb_bug("negative string size (or size too big)");
2490 long slen = PARSER_STRING_LEN(str);
2492 if (slen > len && PARSER_ENC_CODERANGE(str) != RB_PARSER_ENC_CODERANGE_7BIT) {
2493 PARSER_ENC_CODERANGE_CLEAR(str);
2498 const int termlen = STRING_TERM_LEN(str);
2500 if ((capa = slen) < len) {
2501 SIZED_REALLOC_N(str->ptr, char, (size_t)len + termlen, STRING_SIZE(str));
2503 else if (len == slen) return str;
2504 STRING_SET_LEN(str, len);
2505 STRING_TERM_FILL(str);
2510# define PARSER_ENC_STRING_GETMEM(str, ptrvar, lenvar, encvar) \
2511 ((ptrvar) = str->ptr, \
2512 (lenvar) = str->len, \
2513 (encvar) = str->enc)
2516rb_parser_string_hash_cmp(rb_parser_string_t *str1, rb_parser_string_t *str2)
2519 const char *ptr1, *ptr2;
2520 rb_encoding *enc1, *enc2;
2522 PARSER_ENC_STRING_GETMEM(str1, ptr1, len1, enc1);
2523 PARSER_ENC_STRING_GETMEM(str2, ptr2, len2, enc2);
2525 return (len1 != len2 ||
2527 memcmp(ptr1, ptr2, len1) != 0);
2531rb_parser_ary_extend(rb_parser_t *p, rb_parser_ary_t *ary, long len)
2534 if (ary->capa < len) {
2536 ary->data = (rb_parser_ary_data *)xrealloc(ary->data, sizeof(rb_parser_ary_data) * len);
2537 for (i = ary->len; i < len; i++) {
2544 * Do not call this directly.
2545 * Use rb_parser_ary_new_capa_for_XXX() instead.
2547static rb_parser_ary_t *
2548parser_ary_new_capa(rb_parser_t *p, long len)
2551 rb_bug("negative array size (or size too big): %ld", len);
2553 rb_parser_ary_t *ary = xcalloc(1, sizeof(rb_parser_ary_t));
2558 ary->data = (rb_parser_ary_data *)xcalloc(len, sizeof(rb_parser_ary_data));
2567static rb_parser_ary_t *
2568rb_parser_ary_new_capa_for_script_line(rb_parser_t *p, long len)
2570 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2571 ary->data_type = PARSER_ARY_DATA_SCRIPT_LINE;
2575static rb_parser_ary_t *
2576rb_parser_ary_new_capa_for_ast_token(rb_parser_t *p, long len)
2578 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2579 ary->data_type = PARSER_ARY_DATA_AST_TOKEN;
2584static rb_parser_ary_t *
2585rb_parser_ary_new_capa_for_node(rb_parser_t *p, long len)
2587 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2588 ary->data_type = PARSER_ARY_DATA_NODE;
2593 * Do not call this directly.
2594 * Use rb_parser_ary_push_XXX() instead.
2596static rb_parser_ary_t *
2597parser_ary_push(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ary_data val)
2599 if (ary->len == ary->capa) {
2600 rb_parser_ary_extend(p, ary, ary->len == 0 ? 1 : ary->len * 2);
2602 ary->data[ary->len++] = val;
2607static rb_parser_ary_t *
2608rb_parser_ary_push_ast_token(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ast_token_t *val)
2610 if (ary->data_type != PARSER_ARY_DATA_AST_TOKEN) {
2611 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2613 return parser_ary_push(p, ary, val);
2616static rb_parser_ary_t *
2617rb_parser_ary_push_script_line(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_string_t *val)
2619 if (ary->data_type != PARSER_ARY_DATA_SCRIPT_LINE) {
2620 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2622 return parser_ary_push(p, ary, val);
2626static rb_parser_ary_t *
2627rb_parser_ary_push_node(rb_parser_t *p, rb_parser_ary_t *ary, NODE *val)
2629 if (ary->data_type != PARSER_ARY_DATA_NODE) {
2630 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2632 return parser_ary_push(p, ary, val);
2637rb_parser_ast_token_free(rb_parser_t *p, rb_parser_ast_token_t *token)
2640 rb_parser_string_free(p, token->str);
2645rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary)
2647# define foreach_ary(ptr) \
2648 for (rb_parser_ary_data *ptr = ary->data, *const end_ary_data = ptr + ary->len; \
2649 ptr < end_ary_data; ptr++)
2650 switch (ary->data_type) {
2651 case PARSER_ARY_DATA_AST_TOKEN:
2652 foreach_ary(data) {rb_parser_ast_token_free(p, *data);}
2654 case PARSER_ARY_DATA_SCRIPT_LINE:
2655 foreach_ary(data) {rb_parser_string_free(p, *data);}
2657 case PARSER_ARY_DATA_NODE:
2658 /* Do nothing because nodes are freed when rb_ast_t is freed */
2661 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2675# define YY_CAST(Type, Val) static_cast<Type> (Val)
2676# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
2678# define YY_CAST(Type, Val) ((Type) (Val))
2679# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
2683# if defined __cplusplus
2684# if 201103L <= __cplusplus
2685# define YY_NULLPTR nullptr
2687# define YY_NULLPTR 0
2690# define YY_NULLPTR ((void*)0)
2698 YYSYMBOL_YYEMPTY = -2,
2699 YYSYMBOL_YYEOF = 0, /* "end-of-input" */
2700 YYSYMBOL_YYerror = 1, /* error */
2701 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
2702 YYSYMBOL_keyword_class = 3, /* "'class'" */
2703 YYSYMBOL_keyword_module = 4, /* "'module
'" */
2704 YYSYMBOL_keyword_def = 5, /* "'def
'" */
2705 YYSYMBOL_keyword_undef = 6, /* "'undef
'" */
2706 YYSYMBOL_keyword_begin = 7, /* "'begin
'" */
2707 YYSYMBOL_keyword_rescue = 8, /* "'rescue
'" */
2708 YYSYMBOL_keyword_ensure = 9, /* "'ensure
'" */
2709 YYSYMBOL_keyword_end = 10, /* "'end
'" */
2710 YYSYMBOL_keyword_if = 11, /* "'if'" */
2711 YYSYMBOL_keyword_unless = 12, /* "'unless
'" */
2712 YYSYMBOL_keyword_then = 13, /* "'then
'" */
2713 YYSYMBOL_keyword_elsif = 14, /* "'elsif
'" */
2714 YYSYMBOL_keyword_else = 15, /* "'else'" */
2715 YYSYMBOL_keyword_case = 16, /* "'case'" */
2716 YYSYMBOL_keyword_when = 17, /* "'when
'" */
2717 YYSYMBOL_keyword_while = 18, /* "'while'" */
2718 YYSYMBOL_keyword_until = 19, /* "'until
'" */
2719 YYSYMBOL_keyword_for = 20, /* "'for'" */
2720 YYSYMBOL_keyword_break = 21, /* "'break'" */
2721 YYSYMBOL_keyword_next = 22, /* "'next
'" */
2722 YYSYMBOL_keyword_redo = 23, /* "'redo
'" */
2723 YYSYMBOL_keyword_retry = 24, /* "'retry
'" */
2724 YYSYMBOL_keyword_in = 25, /* "'in
'" */
2725 YYSYMBOL_keyword_do = 26, /* "'do'" */
2726 YYSYMBOL_keyword_do_cond = 27, /* "'do' for condition" */
2727 YYSYMBOL_keyword_do_block = 28, /* "'do' for block" */
2728 YYSYMBOL_keyword_do_LAMBDA = 29, /* "'do' for lambda" */
2729 YYSYMBOL_keyword_return = 30, /* "'return'" */
2730 YYSYMBOL_keyword_yield = 31, /* "'yield
'" */
2731 YYSYMBOL_keyword_super = 32, /* "'super
'" */
2732 YYSYMBOL_keyword_self = 33, /* "'self
'" */
2733 YYSYMBOL_keyword_nil = 34, /* "'nil
'" */
2734 YYSYMBOL_keyword_true = 35, /* "'true'" */
2735 YYSYMBOL_keyword_false = 36, /* "'false'" */
2736 YYSYMBOL_keyword_and = 37, /* "'and
'" */
2737 YYSYMBOL_keyword_or = 38, /* "'or
'" */
2738 YYSYMBOL_keyword_not = 39, /* "'not
'" */
2739 YYSYMBOL_modifier_if = 40, /* "'if' modifier" */
2740 YYSYMBOL_modifier_unless = 41, /* "'unless
' modifier" */
2741 YYSYMBOL_modifier_while = 42, /* "'while' modifier" */
2742 YYSYMBOL_modifier_until = 43, /* "'until
' modifier" */
2743 YYSYMBOL_modifier_rescue = 44, /* "'rescue
' modifier" */
2744 YYSYMBOL_keyword_alias = 45, /* "'alias
'" */
2745 YYSYMBOL_keyword_defined = 46, /* "'defined?
'" */
2746 YYSYMBOL_keyword_BEGIN = 47, /* "'BEGIN
'" */
2747 YYSYMBOL_keyword_END = 48, /* "'END
'" */
2748 YYSYMBOL_keyword__LINE__ = 49, /* "'__LINE__
'" */
2749 YYSYMBOL_keyword__FILE__ = 50, /* "'__FILE__
'" */
2750 YYSYMBOL_keyword__ENCODING__ = 51, /* "'__ENCODING__
'" */
2751 YYSYMBOL_tIDENTIFIER = 52, /* "local variable or method" */
2752 YYSYMBOL_tFID = 53, /* "method" */
2753 YYSYMBOL_tGVAR = 54, /* "global variable" */
2754 YYSYMBOL_tIVAR = 55, /* "instance variable" */
2755 YYSYMBOL_tCONSTANT = 56, /* "constant" */
2756 YYSYMBOL_tCVAR = 57, /* "class variable" */
2757 YYSYMBOL_tLABEL = 58, /* "label" */
2758 YYSYMBOL_tINTEGER = 59, /* "integer literal" */
2759 YYSYMBOL_tFLOAT = 60, /* "float literal" */
2760 YYSYMBOL_tRATIONAL = 61, /* "rational literal" */
2761 YYSYMBOL_tIMAGINARY = 62, /* "imaginary literal" */
2762 YYSYMBOL_tCHAR = 63, /* "char literal" */
2763 YYSYMBOL_tNTH_REF = 64, /* "numbered reference" */
2764 YYSYMBOL_tBACK_REF = 65, /* "back reference" */
2765 YYSYMBOL_tSTRING_CONTENT = 66, /* "literal content" */
2766 YYSYMBOL_tREGEXP_END = 67, /* tREGEXP_END */
2767 YYSYMBOL_tDUMNY_END = 68, /* "dummy end" */
2768 YYSYMBOL_69_ = 69, /* '.
' */
2769 YYSYMBOL_70_backslash_ = 70, /* "backslash" */
2770 YYSYMBOL_tSP = 71, /* "escaped space" */
2771 YYSYMBOL_72_escaped_horizontal_tab_ = 72, /* "escaped horizontal tab" */
2772 YYSYMBOL_73_escaped_form_feed_ = 73, /* "escaped form feed" */
2773 YYSYMBOL_74_escaped_carriage_return_ = 74, /* "escaped carriage return" */
2774 YYSYMBOL_75_escaped_vertical_tab_ = 75, /* "escaped vertical tab" */
2775 YYSYMBOL_tUPLUS = 76, /* "unary+" */
2776 YYSYMBOL_tUMINUS = 77, /* "unary-" */
2777 YYSYMBOL_tPOW = 78, /* "**" */
2778 YYSYMBOL_tCMP = 79, /* "<=>" */
2779 YYSYMBOL_tEQ = 80, /* "==" */
2780 YYSYMBOL_tEQQ = 81, /* "===" */
2781 YYSYMBOL_tNEQ = 82, /* "!=" */
2782 YYSYMBOL_tGEQ = 83, /* ">=" */
2783 YYSYMBOL_tLEQ = 84, /* "<=" */
2784 YYSYMBOL_tANDOP = 85, /* "&&" */
2785 YYSYMBOL_tOROP = 86, /* "||" */
2786 YYSYMBOL_tMATCH = 87, /* "=~" */
2787 YYSYMBOL_tNMATCH = 88, /* "!~" */
2788 YYSYMBOL_tDOT2 = 89, /* ".." */
2789 YYSYMBOL_tDOT3 = 90, /* "..." */
2790 YYSYMBOL_tBDOT2 = 91, /* "(.." */
2791 YYSYMBOL_tBDOT3 = 92, /* "(..." */
2792 YYSYMBOL_tAREF = 93, /* "[]" */
2793 YYSYMBOL_tASET = 94, /* "[]=" */
2794 YYSYMBOL_tLSHFT = 95, /* "<<" */
2795 YYSYMBOL_tRSHFT = 96, /* ">>" */
2796 YYSYMBOL_tANDDOT = 97, /* "&." */
2797 YYSYMBOL_tCOLON2 = 98, /* "::" */
2798 YYSYMBOL_tCOLON3 = 99, /* ":: at EXPR_BEG" */
2799 YYSYMBOL_tOP_ASGN = 100, /* "operator-assignment" */
2800 YYSYMBOL_tASSOC = 101, /* "=>" */
2801 YYSYMBOL_tLPAREN = 102, /* "(" */
2802 YYSYMBOL_tLPAREN_ARG = 103, /* "( arg" */
2803 YYSYMBOL_tLBRACK = 104, /* "[" */
2804 YYSYMBOL_tLBRACE = 105, /* "{" */
2805 YYSYMBOL_tLBRACE_ARG = 106, /* "{ arg" */
2806 YYSYMBOL_tSTAR = 107, /* "*" */
2807 YYSYMBOL_tDSTAR = 108, /* "**arg" */
2808 YYSYMBOL_tAMPER = 109, /* "&" */
2809 YYSYMBOL_tLAMBDA = 110, /* "->" */
2810 YYSYMBOL_tSYMBEG = 111, /* "symbol literal" */
2811 YYSYMBOL_tSTRING_BEG = 112, /* "string literal" */
2812 YYSYMBOL_tXSTRING_BEG = 113, /* "backtick literal" */
2813 YYSYMBOL_tREGEXP_BEG = 114, /* "regexp literal" */
2814 YYSYMBOL_tWORDS_BEG = 115, /* "word list" */
2815 YYSYMBOL_tQWORDS_BEG = 116, /* "verbatim word list" */
2816 YYSYMBOL_tSYMBOLS_BEG = 117, /* "symbol list" */
2817 YYSYMBOL_tQSYMBOLS_BEG = 118, /* "verbatim symbol list" */
2818 YYSYMBOL_tSTRING_END = 119, /* "terminator" */
2819 YYSYMBOL_tSTRING_DEND = 120, /* "'}
'" */
2820 YYSYMBOL_tSTRING_DBEG = 121, /* "'#{
'" */
2821 YYSYMBOL_tSTRING_DVAR = 122, /* tSTRING_DVAR */
2822 YYSYMBOL_tLAMBEG = 123, /* tLAMBEG */
2823 YYSYMBOL_tLABEL_END = 124, /* tLABEL_END */
2824 YYSYMBOL_tIGNORED_NL = 125, /* tIGNORED_NL */
2825 YYSYMBOL_tCOMMENT = 126, /* tCOMMENT */
2826 YYSYMBOL_tEMBDOC_BEG = 127, /* tEMBDOC_BEG */
2827 YYSYMBOL_tEMBDOC = 128, /* tEMBDOC */
2828 YYSYMBOL_tEMBDOC_END = 129, /* tEMBDOC_END */
2829 YYSYMBOL_tHEREDOC_BEG = 130, /* tHEREDOC_BEG */
2830 YYSYMBOL_tHEREDOC_END = 131, /* tHEREDOC_END */
2831 YYSYMBOL_k__END__ = 132, /* k__END__ */
2832 YYSYMBOL_tLOWEST = 133, /* tLOWEST */
2833 YYSYMBOL_134_ = 134, /* '=
' */
2834 YYSYMBOL_135_ = 135, /* '?
' */
2835 YYSYMBOL_136_ = 136, /* ':
' */
2836 YYSYMBOL_137_ = 137, /* '>
' */
2837 YYSYMBOL_138_ = 138, /* '<
' */
2838 YYSYMBOL_139_ = 139, /* '|
' */
2839 YYSYMBOL_140_ = 140, /* '^
' */
2840 YYSYMBOL_141_ = 141, /* '&
' */
2841 YYSYMBOL_142_ = 142, /* '+
' */
2842 YYSYMBOL_143_ = 143, /* '-
' */
2843 YYSYMBOL_144_ = 144, /* '*
' */
2844 YYSYMBOL_145_ = 145, /* '/
' */
2845 YYSYMBOL_146_ = 146, /* '%
' */
2846 YYSYMBOL_tUMINUS_NUM = 147, /* tUMINUS_NUM */
2847 YYSYMBOL_148_ = 148, /* '!
' */
2848 YYSYMBOL_149_ = 149, /* '~
' */
2849 YYSYMBOL_tLAST_TOKEN = 150, /* tLAST_TOKEN */
2850 YYSYMBOL_151_ = 151, /* '{
' */
2851 YYSYMBOL_152_ = 152, /* '}
' */
2852 YYSYMBOL_153_ = 153, /* '[
' */
2853 YYSYMBOL_154_n_ = 154, /* '\n
' */
2854 YYSYMBOL_155_ = 155, /* ',
' */
2855 YYSYMBOL_156_ = 156, /* '`
' */
2856 YYSYMBOL_157_ = 157, /* '(
' */
2857 YYSYMBOL_158_ = 158, /* ')
' */
2858 YYSYMBOL_159_ = 159, /* ']
' */
2859 YYSYMBOL_160_ = 160, /* ';
' */
2860 YYSYMBOL_161_ = 161, /* ' ' */
2861 YYSYMBOL_YYACCEPT = 162, /* $accept */
2862 YYSYMBOL_option_terms = 163, /* option_terms */
2863 YYSYMBOL_compstmt_top_stmts = 164, /* compstmt_top_stmts */
2864 YYSYMBOL_165_1 = 165, /* $@1 */
2865 YYSYMBOL_program = 166, /* program */
2866 YYSYMBOL_top_stmts = 167, /* top_stmts */
2867 YYSYMBOL_top_stmt = 168, /* top_stmt */
2868 YYSYMBOL_block_open = 169, /* block_open */
2869 YYSYMBOL_begin_block = 170, /* begin_block */
2870 YYSYMBOL_compstmt_stmts = 171, /* compstmt_stmts */
2871 YYSYMBOL_172_2 = 172, /* $@2 */
2872 YYSYMBOL_173_3 = 173, /* $@3 */
2873 YYSYMBOL_bodystmt = 174, /* bodystmt */
2874 YYSYMBOL_175_4 = 175, /* $@4 */
2875 YYSYMBOL_stmts = 176, /* stmts */
2876 YYSYMBOL_stmt_or_begin = 177, /* stmt_or_begin */
2877 YYSYMBOL_178_5 = 178, /* $@5 */
2878 YYSYMBOL_allow_exits = 179, /* allow_exits */
2879 YYSYMBOL_k_END = 180, /* k_END */
2880 YYSYMBOL_181_6 = 181, /* $@6 */
2881 YYSYMBOL_stmt = 182, /* stmt */
2882 YYSYMBOL_asgn_mrhs = 183, /* asgn_mrhs */
2883 YYSYMBOL_asgn_command_rhs = 184, /* asgn_command_rhs */
2884 YYSYMBOL_command_asgn = 185, /* command_asgn */
2885 YYSYMBOL_op_asgn_command_rhs = 186, /* op_asgn_command_rhs */
2886 YYSYMBOL_def_endless_method_endless_command = 187, /* def_endless_method_endless_command */
2887 YYSYMBOL_endless_command = 188, /* endless_command */
2888 YYSYMBOL_option__n_ = 189, /* option_'\n
' */
2889 YYSYMBOL_command_rhs = 190, /* command_rhs */
2890 YYSYMBOL_expr = 191, /* expr */
2891 YYSYMBOL_192_7 = 192, /* $@7 */
2892 YYSYMBOL_193_8 = 193, /* $@8 */
2893 YYSYMBOL_def_name = 194, /* def_name */
2894 YYSYMBOL_defn_head = 195, /* defn_head */
2895 YYSYMBOL_196_9 = 196, /* $@9 */
2896 YYSYMBOL_defs_head = 197, /* defs_head */
2897 YYSYMBOL_value_expr_expr = 198, /* value_expr_expr */
2898 YYSYMBOL_expr_value = 199, /* expr_value */
2899 YYSYMBOL_200_10 = 200, /* $@10 */
2900 YYSYMBOL_201_11 = 201, /* $@11 */
2901 YYSYMBOL_expr_value_do = 202, /* expr_value_do */
2902 YYSYMBOL_command_call = 203, /* command_call */
2903 YYSYMBOL_value_expr_command_call = 204, /* value_expr_command_call */
2904 YYSYMBOL_command_call_value = 205, /* command_call_value */
2905 YYSYMBOL_block_command = 206, /* block_command */
2906 YYSYMBOL_cmd_brace_block = 207, /* cmd_brace_block */
2907 YYSYMBOL_fcall = 208, /* fcall */
2908 YYSYMBOL_command = 209, /* command */
2909 YYSYMBOL_mlhs = 210, /* mlhs */
2910 YYSYMBOL_mlhs_inner = 211, /* mlhs_inner */
2911 YYSYMBOL_mlhs_basic = 212, /* mlhs_basic */
2912 YYSYMBOL_mlhs_items_mlhs_item = 213, /* mlhs_items_mlhs_item */
2913 YYSYMBOL_mlhs_item = 214, /* mlhs_item */
2914 YYSYMBOL_mlhs_head = 215, /* mlhs_head */
2915 YYSYMBOL_mlhs_node = 216, /* mlhs_node */
2916 YYSYMBOL_lhs = 217, /* lhs */
2917 YYSYMBOL_cname = 218, /* cname */
2918 YYSYMBOL_cpath = 219, /* cpath */
2919 YYSYMBOL_fname = 220, /* fname */
2920 YYSYMBOL_fitem = 221, /* fitem */
2921 YYSYMBOL_undef_list = 222, /* undef_list */
2922 YYSYMBOL_223_12 = 223, /* $@12 */
2923 YYSYMBOL_op = 224, /* op */
2924 YYSYMBOL_reswords = 225, /* reswords */
2925 YYSYMBOL_asgn_arg_rhs = 226, /* asgn_arg_rhs */
2926 YYSYMBOL_arg = 227, /* arg */
2927 YYSYMBOL_op_asgn_arg_rhs = 228, /* op_asgn_arg_rhs */
2928 YYSYMBOL_range_expr_arg = 229, /* range_expr_arg */
2929 YYSYMBOL_def_endless_method_endless_arg = 230, /* def_endless_method_endless_arg */
2930 YYSYMBOL_ternary = 231, /* ternary */
2931 YYSYMBOL_endless_arg = 232, /* endless_arg */
2932 YYSYMBOL_relop = 233, /* relop */
2933 YYSYMBOL_rel_expr = 234, /* rel_expr */
2934 YYSYMBOL_lex_ctxt = 235, /* lex_ctxt */
2935 YYSYMBOL_begin_defined = 236, /* begin_defined */
2936 YYSYMBOL_after_rescue = 237, /* after_rescue */
2937 YYSYMBOL_value_expr_arg = 238, /* value_expr_arg */
2938 YYSYMBOL_arg_value = 239, /* arg_value */
2939 YYSYMBOL_aref_args = 240, /* aref_args */
2940 YYSYMBOL_arg_rhs = 241, /* arg_rhs */
2941 YYSYMBOL_paren_args = 242, /* paren_args */
2942 YYSYMBOL_opt_paren_args = 243, /* opt_paren_args */
2943 YYSYMBOL_opt_call_args = 244, /* opt_call_args */
2944 YYSYMBOL_value_expr_command = 245, /* value_expr_command */
2945 YYSYMBOL_call_args = 246, /* call_args */
2946 YYSYMBOL_247_13 = 247, /* $@13 */
2947 YYSYMBOL_command_args = 248, /* command_args */
2948 YYSYMBOL_block_arg = 249, /* block_arg */
2949 YYSYMBOL_opt_block_arg = 250, /* opt_block_arg */
2950 YYSYMBOL_args = 251, /* args */
2951 YYSYMBOL_arg_splat = 252, /* arg_splat */
2952 YYSYMBOL_mrhs_arg = 253, /* mrhs_arg */
2953 YYSYMBOL_mrhs = 254, /* mrhs */
2954 YYSYMBOL_primary = 255, /* primary */
2955 YYSYMBOL_256_14 = 256, /* $@14 */
2956 YYSYMBOL_257_15 = 257, /* $@15 */
2957 YYSYMBOL_258_16 = 258, /* @16 */
2958 YYSYMBOL_259_17 = 259, /* @17 */
2959 YYSYMBOL_260_18 = 260, /* $@18 */
2960 YYSYMBOL_261_19 = 261, /* $@19 */
2961 YYSYMBOL_262_20 = 262, /* $@20 */
2962 YYSYMBOL_263_21 = 263, /* $@21 */
2963 YYSYMBOL_264_22 = 264, /* $@22 */
2964 YYSYMBOL_265_23 = 265, /* $@23 */
2965 YYSYMBOL_266_24 = 266, /* $@24 */
2966 YYSYMBOL_value_expr_primary = 267, /* value_expr_primary */
2967 YYSYMBOL_primary_value = 268, /* primary_value */
2968 YYSYMBOL_k_begin = 269, /* k_begin */
2969 YYSYMBOL_k_if = 270, /* k_if */
2970 YYSYMBOL_k_unless = 271, /* k_unless */
2971 YYSYMBOL_k_while = 272, /* k_while */
2972 YYSYMBOL_k_until = 273, /* k_until */
2973 YYSYMBOL_k_case = 274, /* k_case */
2974 YYSYMBOL_k_for = 275, /* k_for */
2975 YYSYMBOL_k_class = 276, /* k_class */
2976 YYSYMBOL_k_module = 277, /* k_module */
2977 YYSYMBOL_k_def = 278, /* k_def */
2978 YYSYMBOL_k_do = 279, /* k_do */
2979 YYSYMBOL_k_do_block = 280, /* k_do_block */
2980 YYSYMBOL_k_rescue = 281, /* k_rescue */
2981 YYSYMBOL_k_ensure = 282, /* k_ensure */
2982 YYSYMBOL_k_when = 283, /* k_when */
2983 YYSYMBOL_k_else = 284, /* k_else */
2984 YYSYMBOL_k_elsif = 285, /* k_elsif */
2985 YYSYMBOL_k_end = 286, /* k_end */
2986 YYSYMBOL_k_return = 287, /* k_return */
2987 YYSYMBOL_k_yield = 288, /* k_yield */
2988 YYSYMBOL_then = 289, /* then */
2989 YYSYMBOL_do = 290, /* do */
2990 YYSYMBOL_if_tail = 291, /* if_tail */
2991 YYSYMBOL_opt_else = 292, /* opt_else */
2992 YYSYMBOL_for_var = 293, /* for_var */
2993 YYSYMBOL_f_marg = 294, /* f_marg */
2994 YYSYMBOL_mlhs_items_f_marg = 295, /* mlhs_items_f_marg */
2995 YYSYMBOL_f_margs = 296, /* f_margs */
2996 YYSYMBOL_f_rest_marg = 297, /* f_rest_marg */
2997 YYSYMBOL_f_any_kwrest = 298, /* f_any_kwrest */
2998 YYSYMBOL_299_25 = 299, /* $@25 */
2999 YYSYMBOL_f_eq = 300, /* f_eq */
3000 YYSYMBOL_f_kw_primary_value = 301, /* f_kw_primary_value */
3001 YYSYMBOL_f_kwarg_primary_value = 302, /* f_kwarg_primary_value */
3002 YYSYMBOL_opt_f_block_arg_none = 303, /* opt_f_block_arg_none */
3003 YYSYMBOL_args_tail_basic_primary_value_none = 304, /* args_tail_basic_primary_value_none */
3004 YYSYMBOL_block_args_tail = 305, /* block_args_tail */
3005 YYSYMBOL_excessed_comma = 306, /* excessed_comma */
3006 YYSYMBOL_f_opt_primary_value = 307, /* f_opt_primary_value */
3007 YYSYMBOL_f_opt_arg_primary_value = 308, /* f_opt_arg_primary_value */
3008 YYSYMBOL_opt_args_tail_block_args_tail_none = 309, /* opt_args_tail_block_args_tail_none */
3009 YYSYMBOL_args_list_primary_value_opt_args_tail_block_args_tail_none = 310, /* args-list_primary_value_opt_args_tail_block_args_tail_none */
3010 YYSYMBOL_block_param = 311, /* block_param */
3011 YYSYMBOL_tail_only_args_block_args_tail = 312, /* tail-only-args_block_args_tail */
3012 YYSYMBOL_opt_block_param_def = 313, /* opt_block_param_def */
3013 YYSYMBOL_block_param_def = 314, /* block_param_def */
3014 YYSYMBOL_opt_block_param = 315, /* opt_block_param */
3015 YYSYMBOL_opt_bv_decl = 316, /* opt_bv_decl */
3016 YYSYMBOL_bv_decls = 317, /* bv_decls */
3017 YYSYMBOL_bvar = 318, /* bvar */
3018 YYSYMBOL_max_numparam = 319, /* max_numparam */
3019 YYSYMBOL_numparam = 320, /* numparam */
3020 YYSYMBOL_it_id = 321, /* it_id */
3021 YYSYMBOL_322_26 = 322, /* @26 */
3022 YYSYMBOL_323_27 = 323, /* $@27 */
3023 YYSYMBOL_lambda = 324, /* lambda */
3024 YYSYMBOL_f_larglist = 325, /* f_larglist */
3025 YYSYMBOL_lambda_body = 326, /* lambda_body */
3026 YYSYMBOL_327_28 = 327, /* $@28 */
3027 YYSYMBOL_do_block = 328, /* do_block */
3028 YYSYMBOL_block_call = 329, /* block_call */
3029 YYSYMBOL_method_call = 330, /* method_call */
3030 YYSYMBOL_brace_block = 331, /* brace_block */
3031 YYSYMBOL_332_29 = 332, /* @29 */
3032 YYSYMBOL_brace_body = 333, /* brace_body */
3033 YYSYMBOL_334_30 = 334, /* @30 */
3034 YYSYMBOL_do_body = 335, /* do_body */
3035 YYSYMBOL_case_args = 336, /* case_args */
3036 YYSYMBOL_case_body = 337, /* case_body */
3037 YYSYMBOL_cases = 338, /* cases */
3038 YYSYMBOL_p_pvtbl = 339, /* p_pvtbl */
3039 YYSYMBOL_p_pktbl = 340, /* p_pktbl */
3040 YYSYMBOL_p_in_kwarg = 341, /* p_in_kwarg */
3041 YYSYMBOL_342_31 = 342, /* $@31 */
3042 YYSYMBOL_p_case_body = 343, /* p_case_body */
3043 YYSYMBOL_p_cases = 344, /* p_cases */
3044 YYSYMBOL_p_top_expr = 345, /* p_top_expr */
3045 YYSYMBOL_p_top_expr_body = 346, /* p_top_expr_body */
3046 YYSYMBOL_p_expr = 347, /* p_expr */
3047 YYSYMBOL_p_as = 348, /* p_as */
3048 YYSYMBOL_349_32 = 349, /* $@32 */
3049 YYSYMBOL_p_alt = 350, /* p_alt */
3050 YYSYMBOL_p_lparen = 351, /* p_lparen */
3051 YYSYMBOL_p_lbracket = 352, /* p_lbracket */
3052 YYSYMBOL_p_expr_basic = 353, /* p_expr_basic */
3053 YYSYMBOL_354_33 = 354, /* $@33 */
3054 YYSYMBOL_p_args = 355, /* p_args */
3055 YYSYMBOL_p_args_head = 356, /* p_args_head */
3056 YYSYMBOL_p_args_tail = 357, /* p_args_tail */
3057 YYSYMBOL_p_find = 358, /* p_find */
3058 YYSYMBOL_p_rest = 359, /* p_rest */
3059 YYSYMBOL_p_args_post = 360, /* p_args_post */
3060 YYSYMBOL_p_arg = 361, /* p_arg */
3061 YYSYMBOL_p_kwargs = 362, /* p_kwargs */
3062 YYSYMBOL_p_kwarg = 363, /* p_kwarg */
3063 YYSYMBOL_p_kw = 364, /* p_kw */
3064 YYSYMBOL_p_kw_label = 365, /* p_kw_label */
3065 YYSYMBOL_p_kwrest = 366, /* p_kwrest */
3066 YYSYMBOL_p_kwnorest = 367, /* p_kwnorest */
3067 YYSYMBOL_p_any_kwrest = 368, /* p_any_kwrest */
3068 YYSYMBOL_p_value = 369, /* p_value */
3069 YYSYMBOL_range_expr_p_primitive = 370, /* range_expr_p_primitive */
3070 YYSYMBOL_p_primitive = 371, /* p_primitive */
3071 YYSYMBOL_p_variable = 372, /* p_variable */
3072 YYSYMBOL_p_var_ref = 373, /* p_var_ref */
3073 YYSYMBOL_p_expr_ref = 374, /* p_expr_ref */
3074 YYSYMBOL_p_const = 375, /* p_const */
3075 YYSYMBOL_opt_rescue = 376, /* opt_rescue */
3076 YYSYMBOL_exc_list = 377, /* exc_list */
3077 YYSYMBOL_exc_var = 378, /* exc_var */
3078 YYSYMBOL_opt_ensure = 379, /* opt_ensure */
3079 YYSYMBOL_literal = 380, /* literal */
3080 YYSYMBOL_strings = 381, /* strings */
3081 YYSYMBOL_string = 382, /* string */
3082 YYSYMBOL_string1 = 383, /* string1 */
3083 YYSYMBOL_xstring = 384, /* xstring */
3084 YYSYMBOL_regexp = 385, /* regexp */
3085 YYSYMBOL_nonempty_list__ = 386, /* nonempty_list_' ' */
3086 YYSYMBOL_words_tWORDS_BEG_word_list = 387, /* words_tWORDS_BEG_word_list */
3087 YYSYMBOL_words = 388, /* words */
3088 YYSYMBOL_word_list = 389, /* word_list */
3089 YYSYMBOL_word = 390, /* word */
3090 YYSYMBOL_words_tSYMBOLS_BEG_symbol_list = 391, /* words_tSYMBOLS_BEG_symbol_list */
3091 YYSYMBOL_symbols = 392, /* symbols */
3092 YYSYMBOL_symbol_list = 393, /* symbol_list */
3093 YYSYMBOL_words_tQWORDS_BEG_qword_list = 394, /* words_tQWORDS_BEG_qword_list */
3094 YYSYMBOL_qwords = 395, /* qwords */
3095 YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list = 396, /* words_tQSYMBOLS_BEG_qsym_list */
3096 YYSYMBOL_qsymbols = 397, /* qsymbols */
3097 YYSYMBOL_qword_list = 398, /* qword_list */
3098 YYSYMBOL_qsym_list = 399, /* qsym_list */
3099 YYSYMBOL_string_contents = 400, /* string_contents */
3100 YYSYMBOL_xstring_contents = 401, /* xstring_contents */
3101 YYSYMBOL_regexp_contents = 402, /* regexp_contents */
3102 YYSYMBOL_string_content = 403, /* string_content */
3103 YYSYMBOL_404_34 = 404, /* @34 */
3104 YYSYMBOL_405_35 = 405, /* @35 */
3105 YYSYMBOL_406_36 = 406, /* @36 */
3106 YYSYMBOL_407_37 = 407, /* @37 */
3107 YYSYMBOL_string_dend = 408, /* string_dend */
3108 YYSYMBOL_string_dvar = 409, /* string_dvar */
3109 YYSYMBOL_symbol = 410, /* symbol */
3110 YYSYMBOL_ssym = 411, /* ssym */
3111 YYSYMBOL_sym = 412, /* sym */
3112 YYSYMBOL_dsym = 413, /* dsym */
3113 YYSYMBOL_numeric = 414, /* numeric */
3114 YYSYMBOL_simple_numeric = 415, /* simple_numeric */
3115 YYSYMBOL_nonlocal_var = 416, /* nonlocal_var */
3116 YYSYMBOL_user_variable = 417, /* user_variable */
3117 YYSYMBOL_keyword_variable = 418, /* keyword_variable */
3118 YYSYMBOL_var_ref = 419, /* var_ref */
3119 YYSYMBOL_var_lhs = 420, /* var_lhs */
3120 YYSYMBOL_backref = 421, /* backref */
3121 YYSYMBOL_422_38 = 422, /* $@38 */
3122 YYSYMBOL_superclass = 423, /* superclass */
3123 YYSYMBOL_f_opt_paren_args = 424, /* f_opt_paren_args */
3124 YYSYMBOL_f_empty_arg = 425, /* f_empty_arg */
3125 YYSYMBOL_f_paren_args = 426, /* f_paren_args */
3126 YYSYMBOL_f_arglist = 427, /* f_arglist */
3127 YYSYMBOL_428_39 = 428, /* @39 */
3128 YYSYMBOL_f_kw_arg_value = 429, /* f_kw_arg_value */
3129 YYSYMBOL_f_kwarg_arg_value = 430, /* f_kwarg_arg_value */
3130 YYSYMBOL_opt_f_block_arg_opt_comma = 431, /* opt_f_block_arg_opt_comma */
3131 YYSYMBOL_args_tail_basic_arg_value_opt_comma = 432, /* args_tail_basic_arg_value_opt_comma */
3132 YYSYMBOL_args_tail = 433, /* args_tail */
3133 YYSYMBOL_args_tail_basic_arg_value_none = 434, /* args_tail_basic_arg_value_none */
3134 YYSYMBOL_largs_tail = 435, /* largs_tail */
3135 YYSYMBOL_f_opt_arg_value = 436, /* f_opt_arg_value */
3136 YYSYMBOL_f_opt_arg_arg_value = 437, /* f_opt_arg_arg_value */
3137 YYSYMBOL_opt_args_tail_args_tail_opt_comma = 438, /* opt_args_tail_args_tail_opt_comma */
3138 YYSYMBOL_args_list_arg_value_opt_args_tail_args_tail_opt_comma = 439, /* args-list_arg_value_opt_args_tail_args_tail_opt_comma */
3139 YYSYMBOL_f_args_list_args_tail_opt_comma = 440, /* f_args-list_args_tail_opt_comma */
3140 YYSYMBOL_tail_only_args_args_tail = 441, /* tail-only-args_args_tail */
3141 YYSYMBOL_f_args = 442, /* f_args */
3142 YYSYMBOL_opt_args_tail_largs_tail_none = 443, /* opt_args_tail_largs_tail_none */
3143 YYSYMBOL_args_list_arg_value_opt_args_tail_largs_tail_none = 444, /* args-list_arg_value_opt_args_tail_largs_tail_none */
3144 YYSYMBOL_f_args_list_largs_tail_none = 445, /* f_args-list_largs_tail_none */
3145 YYSYMBOL_tail_only_args_largs_tail = 446, /* tail-only-args_largs_tail */
3146 YYSYMBOL_f_largs = 447, /* f_largs */
3147 YYSYMBOL_args_forward = 448, /* args_forward */
3148 YYSYMBOL_f_bad_arg = 449, /* f_bad_arg */
3149 YYSYMBOL_f_norm_arg = 450, /* f_norm_arg */
3150 YYSYMBOL_f_arg_asgn = 451, /* f_arg_asgn */
3151 YYSYMBOL_f_arg_item = 452, /* f_arg_item */
3152 YYSYMBOL_f_arg = 453, /* f_arg */
3153 YYSYMBOL_f_label = 454, /* f_label */
3154 YYSYMBOL_kwrest_mark = 455, /* kwrest_mark */
3155 YYSYMBOL_f_no_kwarg = 456, /* f_no_kwarg */
3156 YYSYMBOL_f_kwrest = 457, /* f_kwrest */
3157 YYSYMBOL_restarg_mark = 458, /* restarg_mark */
3158 YYSYMBOL_f_rest_arg = 459, /* f_rest_arg */
3159 YYSYMBOL_blkarg_mark = 460, /* blkarg_mark */
3160 YYSYMBOL_f_block_arg = 461, /* f_block_arg */
3161 YYSYMBOL_option__ = 462, /* option_',
' */
3162 YYSYMBOL_opt_comma = 463, /* opt_comma */
3163 YYSYMBOL_value_expr_singleton_expr = 464, /* value_expr_singleton_expr */
3164 YYSYMBOL_singleton = 465, /* singleton */
3165 YYSYMBOL_singleton_expr = 466, /* singleton_expr */
3166 YYSYMBOL_467_40 = 467, /* $@40 */
3167 YYSYMBOL_assoc_list = 468, /* assoc_list */
3168 YYSYMBOL_assocs = 469, /* assocs */
3169 YYSYMBOL_assoc = 470, /* assoc */
3170 YYSYMBOL_operation2 = 471, /* operation2 */
3171 YYSYMBOL_operation3 = 472, /* operation3 */
3172 YYSYMBOL_dot_or_colon = 473, /* dot_or_colon */
3173 YYSYMBOL_call_op = 474, /* call_op */
3174 YYSYMBOL_call_op2 = 475, /* call_op2 */
3175 YYSYMBOL_rparen = 476, /* rparen */
3176 YYSYMBOL_rbracket = 477, /* rbracket */
3177 YYSYMBOL_rbrace = 478, /* rbrace */
3178 YYSYMBOL_trailer = 479, /* trailer */
3179 YYSYMBOL_term = 480, /* term */
3180 YYSYMBOL_terms = 481, /* terms */
3181 YYSYMBOL_none = 482 /* none */
3183typedef enum yysymbol_kind_t yysymbol_kind_t;
3192/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
3193 <limits.h> and (if available) <stdint.h> are included
3194 so that the code can choose integer types of a good width. */
3196#ifndef __PTRDIFF_MAX__
3197# include <limits.h> /* INFRINGES ON USER NAME SPACE */
3198# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3199# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
3204/* Narrow types that promote to a signed type and that can represent a
3205 signed or unsigned integer of at least N bits. In tables they can
3206 save space and decrease cache pressure. Promoting to a signed type
3207 helps avoid bugs in integer arithmetic. */
3209#ifdef __INT_LEAST8_MAX__
3210typedef __INT_LEAST8_TYPE__ yytype_int8;
3211#elif defined YY_STDINT_H
3212typedef int_least8_t yytype_int8;
3214typedef signed char yytype_int8;
3217#ifdef __INT_LEAST16_MAX__
3218typedef __INT_LEAST16_TYPE__ yytype_int16;
3219#elif defined YY_STDINT_H
3220typedef int_least16_t yytype_int16;
3222typedef short yytype_int16;
3225/* Work around bug in HP-UX 11.23, which defines these macros
3226 incorrectly for preprocessor constants. This workaround can likely
3227 be removed in 2023, as HPE has promised support for HP-UX 11.23
3228 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
3229 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
3231# undef UINT_LEAST8_MAX
3232# undef UINT_LEAST16_MAX
3233# define UINT_LEAST8_MAX 255
3234# define UINT_LEAST16_MAX 65535
3237#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
3238typedef __UINT_LEAST8_TYPE__ yytype_uint8;
3239#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
3240 && UINT_LEAST8_MAX <= INT_MAX)
3241typedef uint_least8_t yytype_uint8;
3242#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
3243typedef unsigned char yytype_uint8;
3245typedef short yytype_uint8;
3248#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
3249typedef __UINT_LEAST16_TYPE__ yytype_uint16;
3250#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
3251 && UINT_LEAST16_MAX <= INT_MAX)
3252typedef uint_least16_t yytype_uint16;
3253#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
3254typedef unsigned short yytype_uint16;
3256typedef int yytype_uint16;
3260# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
3261# define YYPTRDIFF_T __PTRDIFF_TYPE__
3262# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
3263# elif defined PTRDIFF_MAX
3265# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
3267# define YYPTRDIFF_T ptrdiff_t
3268# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
3270# define YYPTRDIFF_T long
3271# define YYPTRDIFF_MAXIMUM LONG_MAX
3276# ifdef __SIZE_TYPE__
3277# define YYSIZE_T __SIZE_TYPE__
3278# elif defined size_t
3279# define YYSIZE_T size_t
3280# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3281# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
3282# define YYSIZE_T size_t
3284# define YYSIZE_T unsigned
3288#define YYSIZE_MAXIMUM \
3289 YY_CAST (YYPTRDIFF_T, \
3290 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
3291 ? YYPTRDIFF_MAXIMUM \
3292 : YY_CAST (YYSIZE_T, -1)))
3294#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
3297/* Stored state numbers (used for stacks). */
3298typedef yytype_int16 yy_state_t;
3300/* State numbers in computations. */
3301typedef int yy_state_fast_t;
3304# if defined YYENABLE_NLS && YYENABLE_NLS
3306# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
3307# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
3311# define YY_(Msgid) Msgid
3316#ifndef YY_ATTRIBUTE_PURE
3317# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
3318# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
3320# define YY_ATTRIBUTE_PURE
3324#ifndef YY_ATTRIBUTE_UNUSED
3325# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
3326# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
3328# define YY_ATTRIBUTE_UNUSED
3332/* Suppress unused-variable warnings by "using" E. */
3333#if ! defined lint || defined __GNUC__
3334# define YY_USE(E) ((void) (E))
3336# define YY_USE(E) /* empty */
3339/* Suppress an incorrect diagnostic about yylval being uninitialized. */
3340#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
3341# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
3342# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3343 _Pragma ("GCC diagnostic push") \
3344 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
3346# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3347 _Pragma ("GCC diagnostic push") \
3348 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
3349 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
3351# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
3352 _Pragma ("GCC diagnostic pop")
3354# define YY_INITIAL_VALUE(Value) Value
3356#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3357# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3358# define YY_IGNORE_MAYBE_UNINITIALIZED_END
3360#ifndef YY_INITIAL_VALUE
3361# define YY_INITIAL_VALUE(Value) /* Nothing. */
3364#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
3365# define YY_IGNORE_USELESS_CAST_BEGIN \
3366 _Pragma ("GCC diagnostic push") \
3367 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
3368# define YY_IGNORE_USELESS_CAST_END \
3369 _Pragma ("GCC diagnostic pop")
3371#ifndef YY_IGNORE_USELESS_CAST_BEGIN
3372# define YY_IGNORE_USELESS_CAST_BEGIN
3373# define YY_IGNORE_USELESS_CAST_END
3377#define YY_ASSERT(E) ((void) (0 && (E)))
3381/* The parser invokes alloca or malloc; define the necessary symbols. */
3383# ifdef YYSTACK_USE_ALLOCA
3384# if YYSTACK_USE_ALLOCA
3386# define YYSTACK_ALLOC __builtin_alloca
3387# elif defined __BUILTIN_VA_ARG_INCR
3388# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
3390# define YYSTACK_ALLOC __alloca
3391# elif defined _MSC_VER
3392# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
3393# define alloca _alloca
3395# define YYSTACK_ALLOC alloca
3396# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
3397# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
3398 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
3399# ifndef EXIT_SUCCESS
3400# define EXIT_SUCCESS 0
3407# ifdef YYSTACK_ALLOC
3408 /* Pacify GCC's
'empty if-body' warning. */
3409# define YYSTACK_FREE(Ptr) do { ; } while (0)
3410# ifndef YYSTACK_ALLOC_MAXIMUM
3415# define YYSTACK_ALLOC_MAXIMUM 4032
3418# define YYSTACK_ALLOC YYMALLOC
3419# define YYSTACK_FREE YYFREE
3420# ifndef YYSTACK_ALLOC_MAXIMUM
3421# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
3423# if (defined __cplusplus && ! defined EXIT_SUCCESS \
3424 && ! ((defined YYMALLOC || defined malloc) \
3425 && (defined YYFREE || defined free)))
3427# ifndef EXIT_SUCCESS
3428# define EXIT_SUCCESS 0
3432# define YYMALLOC malloc
3433# if ! defined malloc && ! defined EXIT_SUCCESS
3434void *malloc (YYSIZE_T);
3439# if ! defined free && ! defined EXIT_SUCCESS
3446#if (! defined yyoverflow \
3447 && (! defined __cplusplus \
3448 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
3449 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
3454 yy_state_t yyss_alloc;
3460# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
3464# define YYSTACK_BYTES(N) \
3465 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
3466 + YYSIZEOF (YYLTYPE)) \
3467 + 2 * YYSTACK_GAP_MAXIMUM)
3469# define YYCOPY_NEEDED 1
3476# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
3479 YYPTRDIFF_T yynewbytes; \
3480 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
3481 Stack = &yyptr->Stack_alloc; \
3482 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
3483 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
3489#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
3493# if defined __GNUC__ && 1 < __GNUC__
3494# define YYCOPY(Dst, Src, Count) \
3495 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
3497# define YYCOPY(Dst, Src, Count) \
3501 for (yyi = 0; yyi < (Count); yyi++) \
3502 (Dst)[yyi] = (Src)[yyi]; \
3515#define YYNTOKENS 162
3521#define YYNSTATES 1441
3524#define YYMAXUTOK 361
3529#define YYTRANSLATE(YYX) \
3530 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
3531 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
3536static const yytype_uint8 yytranslate[] =
3538 0, 2, 2, 2, 2, 2, 2, 2, 2, 72,
3539 154, 75, 73, 74, 2, 2, 2, 2, 2, 2,
3540 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3541 2, 2, 161, 148, 2, 2, 2, 146, 141, 2,
3542 157, 158, 144, 142, 155, 143, 69, 145, 2, 2,
3543 2, 2, 2, 2, 2, 2, 2, 2, 136, 160,
3544 138, 134, 137, 135, 2, 2, 2, 2, 2, 2,
3545 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3546 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3547 2, 153, 70, 159, 140, 2, 156, 2, 2, 2,
3548 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3549 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3550 2, 2, 2, 151, 139, 152, 149, 2, 89, 90,
3551 91, 92, 76, 77, 78, 79, 95, 96, 84, 83,
3552 80, 81, 82, 87, 88, 93, 94, 98, 85, 86,
3553 97, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3554 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3555 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3556 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3557 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3558 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3559 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3560 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3561 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3562 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3563 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
3564 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3565 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
3566 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
3567 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
3568 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
3569 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
3570 65, 66, 67, 68, 71, 99, 100, 101, 102, 103,
3571 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
3572 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
3573 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
3579static const yytype_int16 yyrline[] =
3581 0, 3176, 3170, 3176, 3176, 3176, 3176, 3196, 3201, 3206,
3582 3213, 3218, 3225, 3227, 3245, 3241, 3246, 3245, 3257, 3254,
3583 3267, 3272, 3277, 3284, 3286, 3285, 3295, 3297, 3307, 3307,
3584 3312, 3317, 3325, 3334, 3341, 3347, 3353, 3364, 3375, 3384,
3585 3396, 3397, 3402, 3402, 3403, 3414, 3419, 3420, 3427, 3427,
3586 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3428, 3429,
3587 3429, 3429, 3432, 3433, 3439, 3439, 3439, 3446, 3447, 3454,
3588 3457, 3458, 3463, 3468, 3473, 3479, 3478, 3494, 3493, 3508,
3589 3511, 3522, 3532, 3531, 3545, 3545, 3546, 3552, 3552, 3552,
3590 3559, 3560, 3563, 3563, 3566, 3567, 3574, 3582, 3582, 3582,
3591 3589, 3596, 3605, 3610, 3615, 3620, 3625, 3631, 3637, 3643,
3592 3648, 3655, 3664, 3665, 3672, 3673, 3680, 3685, 3690, 3695,
3593 3695, 3695, 3700, 3705, 3710, 3715, 3720, 3725, 3732, 3733,
3594 3740, 3745, 3753, 3753, 3758, 3763, 3763, 3769, 3774, 3779,
3595 3784, 3792, 3792, 3797, 3802, 3802, 3807, 3812, 3817, 3822,
3596 3830, 3838, 3841, 3846, 3851, 3858, 3858, 3858, 3859, 3864,
3597 3867, 3872, 3875, 3880, 3880, 3888, 3889, 3890, 3891, 3892,
3598 3893, 3894, 3895, 3896, 3897, 3898, 3899, 3900, 3901, 3902,
3599 3903, 3904, 3905, 3906, 3907, 3908, 3909, 3910, 3911, 3912,
3600 3913, 3914, 3915, 3916, 3917, 3920, 3920, 3920, 3921, 3921,
3601 3922, 3922, 3922, 3923, 3923, 3923, 3923, 3924, 3924, 3924,
3602 3924, 3925, 3925, 3925, 3926, 3926, 3926, 3926, 3927, 3927,
3603 3927, 3927, 3928, 3928, 3928, 3928, 3929, 3929, 3929, 3929,
3604 3930, 3930, 3930, 3930, 3931, 3931, 3934, 3934, 3935, 3935,
3605 3935, 3935, 3935, 3935, 3935, 3935, 3935, 3936, 3936, 3936,
3606 3936, 3936, 3936, 3936, 3937, 3942, 3947, 3952, 3957, 3962,
3607 3967, 3972, 3977, 3982, 3987, 3992, 3997, 4002, 4003, 4008,
3608 4013, 4018, 4023, 4028, 4033, 4038, 4043, 4048, 4053, 4058,
3609 4065, 4065, 4065, 4066, 4067, 4070, 4079, 4080, 4086, 4093,
3610 4094, 4095, 4096, 4099, 4104, 4112, 4118, 4125, 4132, 4132,
3611 4135, 4136, 4137, 4142, 4149, 4154, 4163, 4168, 4178, 4190,
3612 4191, 4197, 4198, 4199, 4200, 4205, 4212, 4212, 4217, 4222,
3613 4227, 4233, 4239, 4243, 4243, 4281, 4286, 4294, 4299, 4307,
3614 4312, 4317, 4322, 4330, 4335, 4344, 4345, 4349, 4354, 4359,
3615 4377, 4377, 4377, 4377, 4377, 4377, 4377, 4377, 4378, 4379,
3616 4380, 4386, 4385, 4398, 4398, 4404, 4410, 4415, 4420, 4425,
3617 4431, 4436, 4441, 4446, 4451, 4458, 4463, 4468, 4473, 4474,
3618 4480, 4482, 4494, 4503, 4512, 4521, 4520, 4535, 4534, 4547,
3619 4555, 4555, 4556, 4600, 4599, 4622, 4621, 4641, 4640, 4659,
3620 4657, 4674, 4672, 4687, 4692, 4697, 4702, 4717, 4717, 4720,
3621 4727, 4745, 4752, 4760, 4768, 4775, 4783, 4792, 4801, 4809,
3622 4816, 4823, 4831, 4838, 4844, 4859, 4866, 4871, 4877, 4884,
3623 4891, 4892, 4893, 4896, 4897, 4900, 4902, 4911, 4912, 4919,
3624 4920, 4923, 4928, 4936, 4936, 4936, 4941, 4946, 4951, 4956,
3625 4963, 4969, 4976, 4977, 4984, 4984, 4986, 4986, 4986, 4986,
3626 4986, 4986, 4986, 4986, 4986, 4986, 4986, 4989, 4997, 4997,
3627 4997, 4997, 4997, 4997, 4997, 4997, 4997, 4997, 4997, 4997,
3628 4997, 4997, 4997, 4997, 4997, 4997, 4998, 5004, 5009, 5009,
3629 5012, 5013, 5019, 5029, 5033, 5036, 5041, 5048, 5050, 5054,
3630 5059, 5062, 5068, 5073, 5080, 5086, 5079, 5113, 5120, 5129,
3631 5136, 5135, 5146, 5154, 5166, 5176, 5182, 5187, 5195, 5202,
3632 5213, 5219, 5224, 5230, 5240, 5245, 5253, 5259, 5267, 5269,
3633 5284, 5284, 5305, 5311, 5316, 5322, 5330, 5339, 5340, 5343,
3634 5344, 5346, 5359, 5366, 5374, 5375, 5378, 5379, 5385, 5393,
3635 5394, 5400, 5406, 5411, 5416, 5423, 5426, 5433, 5437, 5436,
3636 5449, 5452, 5459, 5466, 5467, 5468, 5475, 5482, 5489, 5495,
3637 5502, 5509, 5516, 5522, 5527, 5532, 5539, 5538, 5549, 5555,
3638 5563, 5569, 5574, 5579, 5584, 5589, 5592, 5593, 5600, 5605,
3639 5612, 5620, 5626, 5633, 5634, 5641, 5648, 5653, 5658, 5663,
3640 5670, 5672, 5679, 5685, 5697, 5698, 5713, 5718, 5725, 5731,
3641 5732, 5739, 5740, 5740, 5740, 5740, 5740, 5740, 5740, 5741,
3642 5742, 5743, 5746, 5746, 5746, 5746, 5746, 5746, 5746, 5746,
3643 5747, 5752, 5755, 5763, 5775, 5782, 5789, 5794, 5799, 5807,
3644 5827, 5830, 5835, 5839, 5842, 5847, 5850, 5857, 5860, 5861,
3645 5864, 5876, 5877, 5878, 5885, 5898, 5910, 5917, 5917, 5917,
3646 5917, 5921, 5925, 5932, 5934, 5941, 5941, 5945, 5949, 5956,
3647 5956, 5959, 5959, 5963, 5967, 5975, 5979, 5987, 5991, 5999,
3648 6003, 6011, 6015, 6041, 6044, 6043, 6058, 6066, 6070, 6074,
3649 6089, 6090, 6093, 6098, 6101, 6102, 6105, 6121, 6122, 6125,
3650 6133, 6134, 6142, 6143, 6144, 6145, 6148, 6149, 6150, 6153,
3651 6153, 6154, 6157, 6158, 6159, 6160, 6161, 6162, 6163, 6166,
3652 6176, 6183, 6183, 6190, 6191, 6195, 6194, 6204, 6207, 6208,
3653 6215, 6222, 6232, 6233, 6233, 6250, 6250, 6250, 6250, 6250,
3654 6250, 6250, 6250, 6250, 6250, 6250, 6251, 6260, 6260, 6260,
3655 6260, 6260, 6261, 6352, 6352, 6352, 6352, 6352, 6352, 6352,
3656 6352, 6352, 6352, 6352, 6352, 6352, 6352, 6352, 6352, 6352,
3657 6352, 6352, 6352, 6352, 6352, 6352, 6355, 6355, 6355, 6355,
3658 6355, 6355, 6355, 6355, 6355, 6355, 6355, 6355, 6355, 6355,
3659 6355, 6355, 6355, 6355, 6355, 6355, 6358, 6365, 6374, 6383,
3660 6392, 6403, 6404, 6414, 6421, 6426, 6445, 6447, 6458, 6478,
3661 6479, 6482, 6488, 6494, 6502, 6503, 6506, 6512, 6520, 6521,
3662 6524, 6530, 6535, 6543, 6543, 6543, 6551, 6551, 6581, 6583,
3663 6582, 6595, 6596, 6603, 6605, 6630, 6635, 6640, 6647, 6653,
3664 6658, 6671, 6671, 6671, 6672, 6675, 6676, 6677, 6680, 6681,
3665 6684, 6685, 6688, 6689, 6692, 6695, 6698, 6701, 6702, 6705,
3666 6713, 6720, 6721, 6725
3671#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
3676static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
3680static const char *
const yytname[] =
3682 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"'class'\"",
3683 "\"'module'\"",
"\"'def'\"",
"\"'undef'\"",
"\"'begin'\"",
3684 "\"'rescue'\"",
"\"'ensure'\"",
"\"'end'\"",
"\"'if'\"",
"\"'unless'\"",
3685 "\"'then'\"",
"\"'elsif'\"",
"\"'else'\"",
"\"'case'\"",
"\"'when'\"",
3686 "\"'while'\"",
"\"'until'\"",
"\"'for'\"",
"\"'break'\"",
"\"'next'\"",
3687 "\"'redo'\"",
"\"'retry'\"",
"\"'in'\"",
"\"'do'\"",
3688 "\"'do' for condition\"",
"\"'do' for block\"",
"\"'do' for lambda\"",
3689 "\"'return'\"",
"\"'yield'\"",
"\"'super'\"",
"\"'self'\"",
"\"'nil'\"",
3690 "\"'true'\"",
"\"'false'\"",
"\"'and'\"",
"\"'or'\"",
"\"'not'\"",
3691 "\"'if' modifier\"",
"\"'unless' modifier\"",
"\"'while' modifier\"",
3692 "\"'until' modifier\"",
"\"'rescue' modifier\"",
"\"'alias'\"",
3693 "\"'defined?'\"",
"\"'BEGIN'\"",
"\"'END'\"",
"\"'__LINE__'\"",
3694 "\"'__FILE__'\"",
"\"'__ENCODING__'\"",
"\"local variable or method\"",
3695 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
3696 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
3697 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
3698 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
3699 "\"literal content\"",
"tREGEXP_END",
"\"dummy end\"",
"'.'",
3700 "\"backslash\"",
"\"escaped space\"",
"\"escaped horizontal tab\"",
3701 "\"escaped form feed\"",
"\"escaped carriage return\"",
3702 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
3703 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
3704 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
3705 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
3706 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
3707 "\"( arg\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
"\"**arg\"",
3708 "\"&\"",
"\"->\"",
"\"symbol literal\"",
"\"string literal\"",
3709 "\"backtick literal\"",
"\"regexp literal\"",
"\"word list\"",
3710 "\"verbatim word list\"",
"\"symbol list\"",
"\"verbatim symbol list\"",
3711 "\"terminator\"",
"\"'}'\"",
"\"'#{'\"",
"tSTRING_DVAR",
"tLAMBEG",
3712 "tLABEL_END",
"tIGNORED_NL",
"tCOMMENT",
"tEMBDOC_BEG",
"tEMBDOC",
3713 "tEMBDOC_END",
"tHEREDOC_BEG",
"tHEREDOC_END",
"k__END__",
"tLOWEST",
3714 "'='",
"'?'",
"':'",
"'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
3715 "'*'",
"'/'",
"'%'",
"tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
3716 "'}'",
"'['",
"'\\n'",
"','",
"'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
3717 "$accept",
"option_terms",
"compstmt_top_stmts",
"$@1",
"program",
3718 "top_stmts",
"top_stmt",
"block_open",
"begin_block",
"compstmt_stmts",
3719 "$@2",
"$@3",
"bodystmt",
"$@4",
"stmts",
"stmt_or_begin",
"$@5",
3720 "allow_exits",
"k_END",
"$@6",
"stmt",
"asgn_mrhs",
"asgn_command_rhs",
3721 "command_asgn",
"op_asgn_command_rhs",
3722 "def_endless_method_endless_command",
"endless_command",
"option_'\\n'",
3723 "command_rhs",
"expr",
"$@7",
"$@8",
"def_name",
"defn_head",
"$@9",
3724 "defs_head",
"value_expr_expr",
"expr_value",
"$@10",
"$@11",
3725 "expr_value_do",
"command_call",
"value_expr_command_call",
3726 "command_call_value",
"block_command",
"cmd_brace_block",
"fcall",
3727 "command",
"mlhs",
"mlhs_inner",
"mlhs_basic",
"mlhs_items_mlhs_item",
3728 "mlhs_item",
"mlhs_head",
"mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
3729 "fitem",
"undef_list",
"$@12",
"op",
"reswords",
"asgn_arg_rhs",
"arg",
3730 "op_asgn_arg_rhs",
"range_expr_arg",
"def_endless_method_endless_arg",
3731 "ternary",
"endless_arg",
"relop",
"rel_expr",
"lex_ctxt",
3732 "begin_defined",
"after_rescue",
"value_expr_arg",
"arg_value",
3733 "aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
"opt_call_args",
3734 "value_expr_command",
"call_args",
"$@13",
"command_args",
"block_arg",
3735 "opt_block_arg",
"args",
"arg_splat",
"mrhs_arg",
"mrhs",
"primary",
3736 "$@14",
"$@15",
"@16",
"@17",
"$@18",
"$@19",
"$@20",
"$@21",
"$@22",
3737 "$@23",
"$@24",
"value_expr_primary",
"primary_value",
"k_begin",
"k_if",
3738 "k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
3739 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
3740 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"k_yield",
"then",
3741 "do",
"if_tail",
"opt_else",
"for_var",
"f_marg",
"mlhs_items_f_marg",
3742 "f_margs",
"f_rest_marg",
"f_any_kwrest",
"$@25",
"f_eq",
3743 "f_kw_primary_value",
"f_kwarg_primary_value",
"opt_f_block_arg_none",
3744 "args_tail_basic_primary_value_none",
"block_args_tail",
3745 "excessed_comma",
"f_opt_primary_value",
"f_opt_arg_primary_value",
3746 "opt_args_tail_block_args_tail_none",
3747 "args-list_primary_value_opt_args_tail_block_args_tail_none",
3748 "block_param",
"tail-only-args_block_args_tail",
"opt_block_param_def",
3749 "block_param_def",
"opt_block_param",
"opt_bv_decl",
"bv_decls",
"bvar",
3750 "max_numparam",
"numparam",
"it_id",
"@26",
"$@27",
"lambda",
3751 "f_larglist",
"lambda_body",
"$@28",
"do_block",
"block_call",
3752 "method_call",
"brace_block",
"@29",
"brace_body",
"@30",
"do_body",
3753 "case_args",
"case_body",
"cases",
"p_pvtbl",
"p_pktbl",
"p_in_kwarg",
3754 "$@31",
"p_case_body",
"p_cases",
"p_top_expr",
"p_top_expr_body",
3755 "p_expr",
"p_as",
"$@32",
"p_alt",
"p_lparen",
"p_lbracket",
3756 "p_expr_basic",
"$@33",
"p_args",
"p_args_head",
"p_args_tail",
"p_find",
3757 "p_rest",
"p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
3758 "p_kw_label",
"p_kwrest",
"p_kwnorest",
"p_any_kwrest",
"p_value",
3759 "range_expr_p_primitive",
"p_primitive",
"p_variable",
"p_var_ref",
3760 "p_expr_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
3761 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
3762 "regexp",
"nonempty_list_' '",
"words_tWORDS_BEG_word_list",
"words",
3763 "word_list",
"word",
"words_tSYMBOLS_BEG_symbol_list",
"symbols",
3764 "symbol_list",
"words_tQWORDS_BEG_qword_list",
"qwords",
3765 "words_tQSYMBOLS_BEG_qsym_list",
"qsymbols",
"qword_list",
"qsym_list",
3766 "string_contents",
"xstring_contents",
"regexp_contents",
3767 "string_content",
"@34",
"@35",
"@36",
"@37",
"string_dend",
3768 "string_dvar",
"symbol",
"ssym",
"sym",
"dsym",
"numeric",
3769 "simple_numeric",
"nonlocal_var",
"user_variable",
"keyword_variable",
3770 "var_ref",
"var_lhs",
"backref",
"$@38",
"superclass",
3771 "f_opt_paren_args",
"f_empty_arg",
"f_paren_args",
"f_arglist",
"@39",
3772 "f_kw_arg_value",
"f_kwarg_arg_value",
"opt_f_block_arg_opt_comma",
3773 "args_tail_basic_arg_value_opt_comma",
"args_tail",
3774 "args_tail_basic_arg_value_none",
"largs_tail",
"f_opt_arg_value",
3775 "f_opt_arg_arg_value",
"opt_args_tail_args_tail_opt_comma",
3776 "args-list_arg_value_opt_args_tail_args_tail_opt_comma",
3777 "f_args-list_args_tail_opt_comma",
"tail-only-args_args_tail",
"f_args",
3778 "opt_args_tail_largs_tail_none",
3779 "args-list_arg_value_opt_args_tail_largs_tail_none",
3780 "f_args-list_largs_tail_none",
"tail-only-args_largs_tail",
"f_largs",
3781 "args_forward",
"f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
"f_arg_item",
3782 "f_arg",
"f_label",
"kwrest_mark",
"f_no_kwarg",
"f_kwrest",
3783 "restarg_mark",
"f_rest_arg",
"blkarg_mark",
"f_block_arg",
"option_','",
3784 "opt_comma",
"value_expr_singleton_expr",
"singleton",
"singleton_expr",
3785 "$@40",
"assoc_list",
"assocs",
"assoc",
"operation2",
"operation3",
3786 "dot_or_colon",
"call_op",
"call_op2",
"rparen",
"rbracket",
"rbrace",
3787 "trailer",
"term",
"terms",
"none", YY_NULLPTR
3791yysymbol_name (yysymbol_kind_t yysymbol)
3793 return yytname[yysymbol];
3797#define YYPACT_NINF (-1208)
3799#define yypact_value_is_default(Yyn) \
3800 ((Yyn) == YYPACT_NINF)
3802#define YYTABLE_NINF (-854)
3804#define yytable_value_is_error(Yyn) \
3805 ((Yyn) == YYTABLE_NINF)
3809static const yytype_int16 yypact[] =
3811 -1208, 6355, 149, -1208, -1208, -1208, -1208, 11126, -1208, -1208,
3812 -1208, -1208, -1208, -1208, -1208, 12181, 12181, -1208, -1208, -1208,
3813 -1208, 7415, -1208, -1208, -1208, -1208, 570, 10972, 203, 115,
3814 -1208, -1208, -1208, -1208, 6791, 7571, -1208, -1208, 6947, -1208,
3815 -1208, -1208, -1208, -1208, -1208, -1208, -1208, 13741, 13741, 13741,
3816 13741, 315, 9885, 10043, 12661, 12901, 11427, -1208, 10818, -1208,
3817 -1208, -1208, 237, 237, 237, 237, 1314, 13861, 13741, -1208,
3818 492, -1208, 115, 1126, -1208, -1208, -1208, -1208, -1208, 477,
3819 31, 31, -1208, -1208, 129, 397, 316, -1208, 377, 14461,
3820 -1208, 401, -1208, 3423, -1208, -1208, -1208, -1208, 671, 419,
3821 -1208, 444, -1208, 12061, 12061, -1208, -1208, 10505, 14579, 14697,
3822 14815, 10663, 12181, 8039, -1208, 717, 91, -1208, -1208, 458,
3823 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3824 -1208, -1208, -1208, -1208, -1208, -1208, -1208, 454, 511, -1208,
3825 491, 585, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3826 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3827 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3828 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3829 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3830 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3831 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3832 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3833 445, -1208, -1208, -1208, -1208, -1208, -1208, 459, 13741, 575,
3834 10043, 13741, 13741, 13741, -1208, 13741, -1208, -1208, 513, 5458,
3835 -1208, 573, -1208, -1208, -1208, 532, -1208, 544, 47, 97,
3836 615, 239, 592, -1208, -1208, 12301, -1208, 12181, -1208, -1208,
3837 11802, 13981, 908, -1208, 633, -1208, 10201, -1208, -1208, -1208,
3838 -1208, -1208, 642, 31, 31, 129, -1208, 683, -1208, 649,
3839 688, 5889, 5889, 791, -1208, 9885, 658, 492, -1208, 1126,
3840 203, 691, -1208, -1208, 701, -29, 500, -1208, 573, 680,
3841 500, -1208, 203, 816, 1314, 14933, 708, 708, 737, -1208,
3842 725, 752, 779, 783, -1208, -1208, 88, -1208, -1208, 483,
3843 989, 378, -1208, 749, 749, 749, 749, 844, -1208, -1208,
3844 -1208, -1208, -1208, -1208, -1208, 6507, 10353, 12061, 12061, 12061,
3845 12061, -1208, 13981, 13981, 1154, 846, -1208, 853, -1208, 1154,
3846 871, -1208, -1208, -1208, -1208, 870, -1208, -1208, -1208, -1208,
3847 -1208, -1208, -1208, 9885, 11545, 804, -1208, -1208, 13741, 13741,
3848 13741, 13741, 13741, -1208, -1208, 13741, 13741, 13741, 13741, 13741,
3849 13741, 13741, 13741, -1208, 13741, -1208, -1208, 13741, 13741, 13741,
3850 13741, 13741, 13741, 13741, 13741, 13741, 13741, -1208, -1208, 5536,
3851 12181, 5672, 642, 8821, -1208, 477, -1208, 146, 146, 12061,
3852 9733, 9733, -1208, 492, 849, 960, -1208, -1208, 798, 993,
3853 72, 95, 102, 673, 731, 12061, 100, -1208, 885, 810,
3854 -1208, -1208, -1208, -1208, 73, 580, 635, 638, 647, 699,
3855 748, 770, 788, -1208, -1208, -1208, -1208, -1208, 855, -1208,
3856 -1208, 11663, -1208, -1208, -1208, 5348, -1208, -1208, -1208, -1208,
3857 -1208, -1208, 330, -1208, -1208, -1208, 869, -1208, 13741, 12421,
3858 -1208, -1208, 15213, 12181, 15311, -1208, -1208, 12781, -1208, 13741,
3859 203, -1208, 874, 203, 877, -1208, -1208, 876, 382, -1208,
3860 -1208, -1208, -1208, -1208, 11126, -1208, -1208, 13741, 890, 903,
3861 922, 15409, 15311, -1208, 115, 203, -1208, -1208, 6071, 904,
3862 906, -1208, 12661, -1208, -1208, 12901, -1208, -1208, -1208, 633,
3863 829, -1208, 912, -1208, -1208, 14933, 15507, 12181, 15605, -1208,
3864 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3865 -1208, 1009, 198, 1043, 292, 13741, -1208, -1208, 918, -1208,
3866 -1208, -1208, -1208, -1208, 11941, -1208, -1208, -1208, -1208, -1208,
3867 -1208, -1208, -1208, -1208, -1208, 1248, -1208, -1208, -1208, -1208,
3868 -1208, 925, -1208, -1208, -1208, 928, -1208, -1208, -1208, 939,
3869 -1208, -1208, -1208, 203, -1208, -1208, -1208, 962, -1208, 949,
3870 13741, 98, -1208, -1208, 1021, 950, 164, -1208, 14101, 8821,
3871 492, 14101, 8821, -1208, 964, -1208, -1208, -1208, 123, 123,
3872 13021, 203, 14933, 959, -1208, 13141, -1208, 688, 4134, 4134,
3873 4134, 4134, 5077, 3664, 4134, 4134, 5889, 5889, 998, 998,
3874 -1208, 4476, 943, 943, 1077, 628, 628, 688, 688, 688,
3875 1320, 1320, 8195, 7103, 8507, 7259, 642, -1208, 203, 965,
3876 899, -1208, 910, -1208, 7727, -1208, -1208, 123, -1208, 8973,
3877 1064, 9429, 79, 123, 123, 1108, 1107, 112, 15703, 12181,
3878 15801, -1208, -1208, -1208, 829, -1208, -1208, -1208, -1208, 15899,
3879 12181, 15997, 8821, 13981, -1208, -1208, -1208, 203, -1208, -1208,
3880 -1208, -1208, 3174, 14221, 14221, 11126, -1208, 13741, 13741, -1208,
3881 573, -1208, -1208, 592, 6635, 7883, 203, 334, 341, 13741,
3882 13741, -1208, -1208, 12541, -1208, 12781, -1208, -1208, -1208, 13981,
3883 5458, -1208, 14341, 14341, 77, 642, 642, 14221, -1208, 38,
3884 -1208, -1208, 500, 14933, 912, 422, 694, 203, 485, 522,
3885 -1208, -1208, 1266, -1208, 63, -1208, 237, -1208, -1208, 63,
3886 237, -1208, 688, -1208, -1208, 1248, 1272, -1208, 979, 203,
3887 981, -1208, 399, -1208, -1208, -1208, 65, -1208, 1154, -1208,
3888 -1208, -1208, 1012, 13741, 1154, -1208, -1208, -1208, -1208, -1208,
3889 1777, -1208, -1208, -1208, 570, 1110, -1208, 5458, 1113, 123,
3890 -1208, 1110, 1113, 123, -1208, -1208, 999, -1208, -1208, -1208,
3891 -1208, -1208, 13741, -1208, -1208, -1208, 1005, 1020, 1133, -1208,
3892 -1208, 912, 14933, 1124, -1208, -1208, 1137, 1049, 3921, -1208,
3893 -1208, -1208, 842, 361, -1208, -1208, 1057, -1208, -1208, -1208,
3894 -1208, 870, 1036, 968, 12421, -1208, -1208, -1208, -1208, 870,
3895 -1208, 1177, -1208, 934, -1208, 1181, -1208, -1208, -1208, -1208,
3896 -1208, -1208, 13261, 123, -1208, 1108, 123, 187, 298, 203,
3897 128, 144, 12061, 492, 12061, 8821, 736, 694, -1208, 203,
3898 123, 382, 11280, -1208, 91, 397, -1208, 4215, -1208, -1208,
3899 -1208, -1208, 13741, -1208, -1208, -1208, -1208, 393, -1208, -1208,
3900 203, 1044, 382, 570, -1208, -1208, -1208, -1208, 583, -1208,
3901 -1208, -1208, -1208, -1208, 749, -1208, 749, 749, 749, 203,
3902 -1208, 1248, -1208, 1134, -1208, -1208, 1146, 925, -1208, -1208,
3903 1046, 1048, -1208, -1208, 1050, -1208, 1052, -1208, 1046, 14101,
3904 -1208, -1208, -1208, -1208, -1208, -1208, -1208, 1058, 13381, -1208,
3905 912, 487, -1208, -1208, -1208, 16095, 12181, 16193, -1208, -1208,
3906 13741, 14221, 14221, 1074, -1208, -1208, -1208, 14221, 14221, -1208,
3907 -1208, 13501, 1181, -1208, -1208, -1208, 9733, 12061, 123, -1208,
3908 -1208, 123, -1208, 13741, -1208, 86, -1208, -1208, 123, -1208,
3909 155, 79, 8821, 492, 123, -1208, -1208, -1208, -1208, -1208,
3910 -1208, 13741, 13741, -1208, 13741, 13741, -1208, 12781, -1208, 14341,
3911 1795, 5844, -1208, -1208, 1072, 1075, -1208, 1777, -1208, 1777,
3912 -1208, 1154, -1208, 1777, -1208, -1208, 1110, 1113, 13741, 13741,
3913 -1208, -1208, 13741, 1079, 11941, 11941, 14221, 13741, 8351, 8663,
3914 203, 609, 614, 4801, 4801, 5458, -1208, -1208, -1208, -1208,
3915 -1208, 14221, -1208, -1208, -1208, -1208, 1005, -1208, 1103, -1208,
3916 1226, -1208, -1208, 146, -1208, -1208, -1208, 13621, 9125, -1208,
3917 -1208, -1208, 123, -1208, -1208, 13741, 1154, 1082, -1208, -1208,
3918 1083, -1208, -1208, 1087, -1208, -1208, -1208, -1208, -1208, 1097,
3919 1099, -1208, 170, 1134, 1134, 1046, 1046, 1109, 1046, 5458,
3920 5458, 1100, 1100, 1058, -1208, -1208, 5458, 707, -1208, -1208,
3921 -1208, 3764, 3764, 396, -1208, 4365, 542, 1214, -1208, 996,
3922 -1208, -1208, 34, -1208, 1129, -1208, -1208, -1208, 1114, -1208,
3923 1117, -1208, 5007, -1208, -1208, -1208, -1208, -1208, 924, -1208,
3924 -1208, -1208, 64, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
3925 -1208, -1208, 415, -1208, -1208, -1208, 15051, 146, -1208, -1208,
3926 9733, -1208, -1208, 9581, 8973, 13741, -1208, 969, 4801, 9733,
3927 -1208, 203, 399, -1208, -1208, 76, 65, -1208, 1154, -1208,
3928 -1208, 1154, -1208, 1777, -1208, -1208, -1208, -1208, 1075, -1208,
3929 -1208, 1777, -1208, -1208, 1513, 10353, -1208, -1208, 8821, -1208,
3930 -1208, -1208, -1208, 5007, 113, 203, 5142, -1208, 203, 1120,
3931 -1208, 1130, -1208, -1208, -1208, 1026, -1208, 12061, -1208, 1229,
3932 5142, -1208, 5007, 825, 1185, 3764, 3764, 396, 572, 353,
3933 4801, 4801, -1208, 1231, -1208, 845, 206, 224, 240, 8821,
3934 492, -1208, 934, -1208, -1208, -1208, -1208, 146, 1000, 123,
3935 1141, 1131, -1208, -1208, 10353, -1208, 1082, -1208, 1139, 1142,
3936 1152, 1157, 1139, 1046, 1082, -1208, 1159, -1208, -1208, -1208,
3937 1160, -1208, -1208, -1208, 203, 962, 1161, 15169, 1164, -1208,
3938 -1208, -1208, 286, -1208, 1185, 1170, 1178, -1208, -1208, -1208,
3939 -1208, -1208, 203, -1208, -1208, 1183, 5007, 1184, -1208, -1208,
3940 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, 203,
3941 203, 203, 203, 203, 203, 279, 16291, 12181, 16389, 1177,
3942 -1208, 1226, -1208, -1208, 12061, 12061, -1208, 1302, -1208, 8821,
3943 1189, -1208, 1777, -1208, 1777, -1208, 1154, -1208, 1777, -1208,
3944 -1208, -1208, -1208, 65, -1208, 1513, -1208, -1208, 1203, 15169,
3945 1513, -1208, -1208, 1253, 859, 1853, -1208, -1208, 5007, -1208,
3946 825, -1208, 5007, -1208, 5142, 438, -1208, -1208, -1208, -1208,
3947 -1208, -1208, 147, 173, 203, 300, 403, -1208, -1208, 9277,
3948 -1208, -1208, -1208, 907, -1208, -1208, 123, -1208, 1139, 1139,
3949 1198, 1139, -1208, 1082, -1208, -1208, 1207, 1208, -1208, 859,
3950 1210, 1211, -1208, 16487, 1207, 1215, 203, 1215, -1208, -1208,
3951 413, 143, 1302, -1208, -1208, -1208, -1208, 1777, -1208, -1208,
3952 -1208, 1853, -1208, 1853, -1208, 1513, -1208, 1853, -1208, 1212,
3953 1227, -1208, 5007, -1208, -1208, -1208, -1208, -1208, 1139, 1207,
3954 1207, 1216, 1207, -1208, -1208, -1208, 1853, -1208, -1208, 1207,
3961static const yytype_int16 yydefact[] =
3963 2, 0, 0, 47, 406, 407, 408, 0, 399, 400,
3964 401, 404, 26, 26, 26, 393, 394, 395, 396, 418,
3965 419, 323, 703, 702, 704, 705, 64, 0, 64, 0,
3966 853, 707, 706, 708, 97, 99, 697, 696, 98, 698,
3967 692, 693, 694, 695, 641, 713, 714, 0, 0, 0,
3968 0, 0, 0, 0, 853, 853, 126, 494, 667, 667,
3969 669, 671, 0, 0, 0, 0, 0, 0, 0, 6,
3970 3, 8, 0, 10, 43, 49, 40, 58, 61, 46,
3971 723, 723, 70, 91, 323, 90, 0, 112, 0, 116,
3972 128, 0, 237, 79, 246, 253, 282, 283, 267, 284,
3973 398, 0, 351, 0, 0, 87, 87, 0, 0, 0,
3974 0, 0, 360, 323, 370, 94, 368, 340, 341, 640,
3975 642, 342, 343, 650, 344, 656, 346, 660, 345, 662,
3976 347, 639, 684, 685, 638, 690, 701, 709, 710, 348,
3977 0, 349, 7, 1, 205, 216, 206, 229, 202, 222,
3978 212, 211, 232, 233, 227, 210, 209, 204, 230, 234,
3979 235, 214, 203, 217, 221, 223, 215, 208, 224, 231,
3980 226, 225, 218, 228, 213, 201, 220, 219, 200, 207,
3981 198, 199, 195, 196, 197, 155, 157, 156, 190, 191,
3982 186, 168, 169, 170, 177, 174, 176, 171, 172, 192,
3983 193, 178, 179, 183, 187, 173, 175, 165, 166, 167,
3984 180, 181, 182, 184, 185, 188, 189, 194, 160, 162,
3985 33, 158, 159, 161, 402, 403, 405, 0, 827, 0,
3986 0, 334, 830, 326, 667, 0, 318, 316, 0, 298,
3987 299, 329, 317, 110, 322, 853, 330, 0, 709, 710,
3988 0, 349, 853, 823, 111, 853, 513, 0, 107, 65,
3989 64, 0, 0, 28, 853, 12, 0, 11, 27, 295,
3990 393, 394, 514, 723, 723, 0, 261, 0, 360, 363,
3991 262, 251, 252, 357, 24, 0, 0, 3, 21, 23,
3992 64, 114, 20, 353, 0, 64, 64, 300, 0, 0,
3993 64, 821, 64, 0, 0, 0, 723, 723, 124, 397,
3994 0, 132, 133, 140, 491, 687, 0, 686, 688, 0,
3995 0, 0, 647, 651, 663, 657, 665, 691, 74, 273,
3996 274, 850, 849, 5, 851, 0, 0, 0, 0, 0,
3997 0, 853, 0, 0, 720, 0, 719, 722, 389, 720,
3998 0, 391, 409, 518, 508, 100, 520, 367, 410, 520,
3999 503, 853, 130, 0, 122, 117, 853, 77, 0, 0,
4000 0, 0, 0, 291, 292, 0, 0, 0, 0, 249,
4001 250, 0, 0, 75, 0, 289, 290, 0, 0, 0,
4002 0, 0, 0, 0, 0, 0, 0, 840, 841, 843,
4003 853, 842, 0, 0, 86, 84, 85, 0, 0, 0,
4004 0, 0, 377, 3, 4, 0, 430, 429, 0, 0,
4005 709, 710, 349, 150, 151, 0, 0, 153, 853, 0,
4006 709, 710, 349, 387, 225, 218, 228, 213, 195, 196,
4007 197, 155, 156, 819, 81, 80, 818, 817, 0, 816,
4008 109, 64, 108, 843, 842, 0, 369, 643, 853, 853,
4009 163, 826, 357, 333, 829, 325, 0, 853, 0, 0,
4010 319, 328, 843, 853, 842, 853, 853, 0, 320, 786,
4011 64, 312, 853, 64, 853, 311, 324, 0, 64, 366,
4012 73, 30, 32, 31, 0, 853, 296, 0, 0, 0,
4013 0, 843, 842, 853, 0, 64, 355, 14, 0, 113,
4014 0, 358, 848, 847, 301, 848, 303, 359, 822, 0,
4015 139, 691, 127, 119, 722, 0, 843, 853, 842, 492,
4016 673, 689, 676, 674, 668, 644, 645, 670, 646, 672,
4017 648, 0, 0, 0, 0, 0, 852, 9, 0, 34,
4018 35, 36, 37, 297, 0, 71, 72, 792, 789, 788,
4019 787, 790, 798, 799, 786, 0, 805, 800, 809, 808,
4020 804, 813, 801, 764, 727, 813, 735, 762, 744, 813,
4021 760, 765, 763, 64, 736, 791, 793, 794, 796, 813,
4022 726, 803, 443, 442, 807, 813, 812, 734, 0, 0,
4023 0, 0, 0, 491, 0, 518, 101, 491, 0, 0,
4024 0, 64, 0, 118, 131, 0, 531, 259, 266, 268,
4025 269, 270, 277, 278, 271, 272, 247, 248, 275, 276,
4026 531, 64, 263, 264, 265, 254, 255, 256, 257, 258,
4027 293, 294, 831, 833, 832, 834, 323, 511, 64, 853,
4028 831, 833, 832, 834, 323, 512, 853, 0, 421, 0,
4029 420, 0, 0, 0, 0, 0, 375, 357, 843, 853,
4030 842, 380, 385, 150, 151, 152, 715, 383, 717, 843,
4031 853, 842, 0, 0, 838, 839, 82, 64, 362, 831,
4032 832, 507, 323, 0, 0, 0, 853, 0, 0, 825,
4033 331, 327, 332, 853, 831, 832, 64, 831, 832, 0,
4034 0, 824, 306, 313, 308, 315, 844, 365, 29, 0,
4035 279, 13, 0, 0, 356, 0, 853, 0, 25, 115,
4036 22, 354, 64, 0, 125, 835, 138, 64, 831, 832,
4037 493, 677, 0, 649, 0, 653, 0, 659, 655, 0,
4038 0, 661, 260, 39, 38, 0, 441, 433, 435, 64,
4039 438, 431, 814, 733, 815, 730, 814, 732, 814, 756,
4040 747, 721, 0, 0, 814, 761, 725, 598, 802, 806,
4041 814, 758, 811, 810, 64, 59, 62, 286, 280, 0,
4042 724, 60, 281, 0, 492, 516, 0, 492, 416, 417,
4043 517, 502, 334, 92, 93, 41, 336, 0, 45, 335,
4044 129, 123, 0, 0, 69, 48, 67, 0, 304, 329,
4045 236, 42, 0, 349, 529, 529, 0, 853, 853, 518,
4046 510, 104, 0, 515, 313, 853, 853, 310, 509, 102,
4047 309, 853, 352, 853, 422, 853, 424, 88, 423, 373,
4048 374, 413, 0, 0, 531, 0, 0, 835, 356, 64,
4049 831, 832, 0, 0, 0, 0, 150, 151, 154, 64,
4050 0, 64, 0, 361, 504, 95, 50, 304, 238, 57,
4051 245, 164, 0, 828, 321, 853, 853, 515, 853, 853,
4052 64, 853, 64, 64, 56, 244, 302, 120, 515, 26,
4053 678, 675, 682, 683, 652, 654, 664, 658, 666, 64,
4054 440, 0, 795, 0, 729, 728, 803, 813, 746, 745,
4055 813, 813, 445, 743, 813, 797, 813, 794, 813, 0,
4056 853, 853, 390, 392, 493, 96, 493, 339, 0, 853,
4057 121, 357, 853, 853, 853, 843, 853, 842, 530, 530,
4058 0, 0, 0, 0, 105, 845, 853, 0, 0, 103,
4059 411, 853, 18, 630, 415, 414, 0, 0, 0, 425,
4060 427, 0, 89, 0, 522, 0, 378, 529, 0, 379,
4061 515, 0, 0, 0, 0, 515, 388, 820, 83, 505,
4062 506, 0, 0, 853, 0, 0, 307, 314, 364, 0,
4063 720, 0, 432, 434, 436, 439, 731, 814, 757, 814,
4064 754, 814, 750, 814, 752, 759, 66, 288, 0, 0,
4065 26, 26, 334, 337, 0, 0, 0, 0, 831, 832,
4066 64, 831, 832, 0, 0, 285, 54, 242, 55, 243,
4067 106, 0, 52, 240, 53, 241, 631, 632, 853, 633,
4068 853, 15, 428, 0, 371, 372, 523, 0, 0, 530,
4069 376, 381, 0, 716, 384, 0, 720, 853, 495, 784,
4070 853, 741, 782, 853, 780, 785, 783, 498, 742, 853,
4071 853, 740, 0, 0, 0, 813, 813, 813, 813, 63,
4072 287, 853, 853, 338, 44, 68, 305, 515, 622, 628,
4073 594, 0, 0, 0, 530, 64, 530, 582, 667, 0,
4074 621, 78, 539, 545, 547, 550, 543, 542, 578, 544,
4075 587, 590, 593, 599, 600, 589, 553, 608, 601, 554,
4076 609, 610, 611, 612, 613, 614, 615, 616, 618, 617,
4077 619, 620, 597, 76, 51, 239, 0, 0, 635, 412,
4078 0, 19, 637, 0, 0, 0, 524, 853, 0, 0,
4079 386, 64, 0, 739, 451, 0, 0, 738, 0, 776,
4080 767, 0, 781, 0, 778, 681, 680, 679, 437, 755,
4081 751, 814, 748, 753, 483, 0, 481, 480, 0, 606,
4082 607, 151, 626, 0, 570, 64, 571, 575, 64, 0,
4083 565, 0, 853, 568, 581, 0, 623, 0, 624, 0,
4084 540, 548, 0, 588, 592, 604, 605, 0, 530, 530,
4085 0, 0, 596, 0, 634, 0, 709, 710, 349, 0,
4086 3, 16, 853, 525, 527, 528, 526, 0, 536, 0,
4087 485, 0, 450, 500, 0, 496, 853, 766, 853, 853,
4088 853, 853, 853, 813, 853, 448, 853, 456, 478, 459,
4089 853, 475, 484, 479, 64, 794, 853, 447, 853, 455,
4090 519, 521, 64, 563, 585, 573, 572, 564, 576, 846,
4091 566, 595, 64, 546, 541, 578, 0, 579, 583, 667,
4092 591, 586, 602, 603, 627, 552, 562, 551, 558, 64,
4093 64, 64, 64, 64, 64, 357, 843, 853, 842, 853,
4094 636, 853, 426, 532, 0, 0, 382, 0, 497, 0,
4095 0, 737, 0, 777, 0, 774, 0, 770, 0, 772,
4096 779, 749, 454, 0, 453, 0, 471, 462, 0, 0,
4097 457, 476, 477, 0, 446, 0, 473, 569, 0, 577,
4098 0, 625, 0, 549, 0, 0, 555, 556, 557, 559,
4099 560, 561, 835, 356, 64, 831, 832, 629, 17, 0,
4100 537, 538, 489, 64, 487, 490, 0, 499, 853, 853,
4101 853, 853, 449, 853, 461, 460, 853, 853, 482, 458,
4102 853, 853, 357, 843, 853, 574, 64, 579, 580, 584,
4103 515, 853, 0, 486, 501, 775, 771, 0, 768, 773,
4104 452, 0, 472, 0, 469, 0, 465, 0, 467, 835,
4105 356, 474, 0, 567, 534, 535, 533, 488, 853, 853,
4106 853, 853, 853, 769, 470, 466, 0, 463, 468, 853,
4111static const yytype_int16 yypgoto[] =
4113 -1208, -91, 1121, -1208, -1208, -1208, 1056, 1311, 888, -47,
4114 -1208, -1208, -531, -1208, 245, 889, -1208, 10, -1208, -1208,
4115 11, -1208, -1208, -156, -1208, 6, -543, -24, -620, 37,
4116 -1208, -1208, 524, 3179, -1208, 3361, -1208, -44, -1208, -1208,
4117 1293, 17, -1208, 797, -1208, -603, 1405, -8, 1296, -163,
4118 40, -430, -62, -1208, 33, 4322, -398, 1291, -41, -7,
4119 -1208, -1208, 3, -1208, -1208, 5327, -1208, -1208, -1208, -1208,
4120 -557, 1310, -1208, 27, 915, 346, -1208, 1104, -1208, 564,
4121 54, 719, -360, -1208, 67, -1208, -28, -368, -202, 18,
4122 -426, -1208, -546, -43, -1208, -1208, -1208, -1208, -1208, -1208,
4123 -1208, -1208, -1208, -1208, -1208, -1208, 1387, -1208, -1208, -1208,
4124 -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208, -1208,
4125 -1208, -1208, 452, -1208, -250, 2400, 2712, -394, 451, 193,
4126 -816, -1208, -815, -813, 664, 515, 618, -1208, 169, 103,
4127 -1208, -1031, -1208, 251, -1208, -1189, 101, 156, -1208, -1208,
4128 -1208, 345, -1208, -1208, 178, -1208, 43, 182, -273, 60,
4129 -1208, -1208, 705, -1208, -1208, -1208, 574, -1208, -1208, -97,
4130 -1208, -515, -1208, 1089, -1208, -774, -1208, -722, -801, -536,
4131 -1208, 49, -1208, -1208, -926, -383, -1208, -1208, -1208, -1208,
4132 -1208, 165, -1208, -243, -1208, -605, -1017, -1098, -418, -856,
4133 -1105, -1208, 243, -1208, -1208, -870, 254, -1208, -1208, -664,
4134 244, -1208, -1208, -1208, 159, -1208, -1208, 162, 988, 1069,
4135 -1208, 1351, 1084, 1332, 15, -1208, 1483, -1208, 935, -1208,
4136 1675, -1208, -1208, 1682, -1208, 1725, -1208, -1208, -56, -1208,
4137 -1208, -119, -1208, -1208, -1208, -1208, -1208, -1208, 35, -1208,
4138 -1208, -1208, -1208, 45, -49, 3981, 259, 1366, 4421, 3843,
4139 -1208, -1208, 80, -308, 794, -22, -1208, -731, -422, -528,
4140 -1208, 434, -1208, -876, -737, -681, -450, -1208, -1208, -1208,
4141 1132, -34, -1208, -1208, -1208, 416, -207, -1207, -210, -213,
4142 -748, 809, -318, -638, -1208, -734, -1208, 8, -1208, 367,
4143 -1208, -526, -1208, -1208, -1208, -1208, -1208, 22, -413, -280,
4144 -1208, -1208, -90, 1368, -275, -301, 89, -209, -52, -69,
4149static const yytype_int16 yydefgoto[] =
4151 0, 333, 69, 1, 2, 70, 71, 266, 267, 656,
4152 1153, 1311, 657, 1050, 287, 288, 504, 224, 72, 494,
4153 289, 74, 75, 76, 77, 78, 785, 487, 815, 79,
4154 630, 616, 444, 273, 872, 274, 406, 407, 409, 972,
4155 410, 82, 804, 816, 83, 606, 275, 85, 86, 290,
4156 87, 522, 88, 89, 90, 238, 427, 428, 218, 219,
4157 220, 695, 645, 222, 92, 93, 94, 95, 96, 97,
4158 788, 395, 98, 553, 497, 554, 240, 241, 294, 820,
4159 837, 838, 480, 242, 481, 257, 258, 244, 470, 649,
4160 246, 808, 809, 99, 403, 510, 855, 665, 862, 1159,
4161 865, 863, 682, 599, 602, 100, 277, 102, 103, 104,
4162 105, 106, 107, 108, 109, 110, 111, 356, 359, 961,
4163 1150, 852, 966, 967, 800, 278, 279, 659, 847, 968,
4164 969, 419, 757, 758, 759, 760, 571, 772, 773, 1255,
4165 1256, 1163, 1257, 1384, 1341, 1259, 1260, 1336, 1261, 1262,
4166 1263, 1185, 1186, 1264, 1241, 1373, 1374, 529, 740, 899,
4167 314, 1165, 114, 1068, 1245, 1319, 360, 115, 116, 357,
4168 603, 604, 607, 608, 975, 853, 1236, 948, 1033, 824,
4169 1369, 856, 1426, 1237, 1111, 1274, 1113, 1286, 1114, 1220,
4170 1221, 1115, 1350, 1195, 1196, 1197, 1117, 1118, 1287, 1199,
4171 1119, 1120, 1121, 1122, 1123, 572, 1125, 1126, 1127, 1128,
4172 1129, 1130, 1131, 1132, 962, 1048, 1147, 1151, 117, 118,
4173 119, 120, 121, 122, 323, 123, 124, 541, 744, 125,
4174 126, 543, 127, 128, 129, 130, 542, 544, 316, 320,
4175 321, 534, 742, 741, 900, 1001, 1177, 901, 131, 132,
4176 317, 133, 134, 135, 136, 248, 249, 139, 250, 251,
4177 864, 677, 345, 346, 347, 348, 349, 574, 575, 763,
4178 576, 918, 1071, 1247, 578, 579, 769, 580, 581, 582,
4179 583, 1169, 1074, 1075, 1076, 1077, 584, 585, 586, 927,
4180 588, 589, 590, 591, 592, 593, 594, 595, 596, 597,
4181 764, 770, 447, 448, 449, 683, 299, 484, 253, 725,
4182 647, 686, 681, 402, 489, 833, 1203, 514, 660, 414,
4189static const yytype_int16 yytable[] =
4191 142, 335, 261, 319, 264, 286, 293, 237, 237, 318,
4192 221, 401, 73, 309, 661, 509, 412, 315, 334, 456,
4193 263, 236, 236, 225, 226, 454, 925, 365, 675, 971,
4194 221, 919, 917, 245, 245, 915, 573, 252, 252, 1167,
4195 648, 573, 223, 702, 792, 765, 309, 767, 483, 765,
4196 478, 292, 292, 297, 301, 334, 355, 268, 791, 351,
4197 408, 221, 223, 413, 711, 309, 309, 309, 789, 821,
4198 445, 793, 295, 876, 879, 256, 296, 300, 324, 325,
4199 326, 978, 243, 254, 328, 452, 702, 516, 1198, 308,
4200 796, 518, 291, 924, 825, 734, 1003, -141, 1275, 658,
4201 1005, 701, 711, 949, 237, 1243, 846, 894, 1143, 701,
4202 1375, 327, 1285, 706, 221, 1301, 1304, 352, 236, 646,
4203 -142, 654, 505, 562, 1072, 259, 512, -149, 916, 530,
4204 245, 587, 777, 798, 252, 1209, 587, -148, 354, 775,
4205 405, 405, -703, 563, 405, 781, 1385, -711, 1034, 143,
4206 778, 870, 673, -144, 530, 352, 674, 474, 965, 658,
4207 -146, 350, 1217, 1124, 1124, -720, 792, 737, 854, -145,
4208 1175, -703, -113, 567, 568, 692, 688, 886, 466, 450,
4209 -143, -141, 811, 286, 532, 533, -147, 502, 344, 1210,
4210 1072, 799, 646, -129, 654, 1375, 507, -712, 782, 1244,
4211 611, 537, 539, 1300, 1303, 712, 569, 531, 714, 532,
4212 533, -147, -146, 717, 1209, 1321, 783, 1218, 508, -141,
4213 528, 1219, 726, 1332, 322, 1334, 1385, -132, 954, 292,
4214 729, -142, 1238, 331, -832, 334, 959, -142, 286, 332,
4215 331, 1057, 353, 523, 471, 1396, 332, 237, 726, 237,
4216 -133, 471, 351, -149, 485, 1059, 1398, -140, 1158, 925,
4217 138, 236, 309, 236, 746, 142, 265, -139, -585, 1003,
4218 1178, 513, 513, 482, 919, 245, 513, 73, 519, 252,
4219 353, 868, 478, -135, 292, 351, 255, 702, 1124, 548,
4220 1176, 496, -148, 549, 550, 551, 552, 488, 490, -136,
4221 331, -146, 711, 1193, -831, 1202, 332, -146, 771, 859,
4222 -134, 138, 138, -144, 953, 312, 286, 747, 977, 1073,
4223 869, 309, 666, -147, 486, 291, 256, -147, 670, 354,
4224 -832, 1036, 1038, -147, 984, 292, 810, 1042, 1044, 476,
4225 1276, 1234, -137, 1124, -831, 701, 73, 701, 312, 521,
4226 1124, 1124, 1410, 499, 500, 761, 1288, 259, 750, 801,
4227 -141, 334, 292, 663, 664, 662, -141, 421, 431, 431,
4228 431, 283, 1017, -149, 405, 405, 405, 405, -142, 555,
4229 556, 672, 940, 1235, -142, 1073, 1016, 1209, 610, 1006,
4230 726, 765, 237, 615, -149, 1142, 1142, 613, 322, 485,
4231 -149, 726, 292, 291, 653, 887, 236, 842, 702, 292,
4232 292, 751, 873, 849, 850, 1047, -145, 1295, 1297, 342,
4233 343, 1144, 745, 925, 745, 358, -143, 678, 1116, 1116,
4234 696, 919, 1246, -148, 888, 915, 898, 1189, 1190, -148,
4235 259, 889, 1017, 237, 530, 538, 405, -137, 673, 777,
4236 361, 1062, 1191, -138, -144, -832, 655, 236, 653, 814,
4237 -144, 459, 405, 523, -148, 237, 701, 1222, -144, 245,
4238 1008, 1010, 485, 252, 1012, -145, 1014, 653, 1015, 236,
4239 1124, 471, 309, 471, 912, 693, 694, 718, -397, 138,
4240 1250, 703, 1288, 993, 698, -149, 1288, 221, 1399, 532,
4241 533, 884, 709, 710, 530, 653, 890, 259, 568, 691,
4242 -135, -64, 702, 397, 342, 343, -397, -397, 687, 237,
4243 1142, 934, 496, 896, 936, 138, 485, -143, 916, 223,
4244 727, 653, 362, 236, 732, 366, 259, 814, 814, 932,
4245 569, 398, 399, 933, 138, 761, 910, -136, 790, 530,
4246 523, 1292, 1293, 1116, -711, 587, -137, -145, 980, 532,
4247 533, 587, 1281, -145, 312, 754, 1399, -143, 985, 309,
4248 59, 814, -397, -143, 925, 1142, -137, -137, 1070, -831,
4249 -137, 1058, 1142, 1142, 711, 1424, 1030, 503, -141, 919,
4250 786, 458, 925, 786, 138, 138, 987, 400, 292, 1383,
4251 460, 292, 535, 976, 532, 533, 979, 826, -134, -132,
4252 848, -712, 843, 397, 845, 996, 260, 998, 831, -135,
4253 986, -148, 138, 312, 832, 905, 839, 803, 807, 701,
4254 905, 462, 803, 807, 1002, 1179, 1180, 1182, 1183, -135,
4255 -135, 398, 472, -135, 1070, -142, 331, 467, 471, -702,
4256 1112, 1112, 332, 840, 259, 515, -136, 1271, 292, 1154,
4257 292, 237, 138, 925, 875, 646, -133, 654, 485, 138,
4258 138, 897, 237, 653, 468, 236, -136, -136, -702, 485,
4259 -136, 292, 832, 841, 653, 459, 236, 469, 881, 884,
4260 309, 840, 1069, 902, -64, 916, 259, 473, 221, -97,
4261 830, 761, 471, 761, -704, 1192, 368, -705, 513, 835,
4262 803, 803, 1142, 832, 836, 475, -707, -134, 1054, -149,
4263 871, 1055, 1194, 882, 259, 840, 259, 260, 1060, 1097,
4264 223, -64, 947, -704, 1064, 891, -705, -134, -134, 1214,
4265 -140, -134, -699, -144, 803, -707, 1070, 477, -145, 1070,
4266 523, 1070, 397, 1229, 373, 374, 892, -98, 1069, 904,
4267 929, 906, -835, -356, 907, 908, 368, 138, -706, 309,
4268 -699, -699, 392, 393, 394, 1112, 921, 989, 577, 830,
4269 398, 501, 926, 577, 312, 794, 397, 587, 1376, 797,
4270 495, -356, -356, 1078, 397, 814, 814, -706, 587, 255,
4271 -700, 814, 814, 1331, 1200, -835, 451, 956, 385, 386,
4272 1272, 982, 1160, 138, 398, 453, 506, -708, 981, 1294,
4273 983, -709, 398, 526, -97, -112, -699, 1194, -700, -700,
4274 -97, 445, 517, -835, -835, 832, 473, 1194, 1194, -699,
4275 963, -143, 970, 1313, 970, 832, -708, -356, -710, -709,
4276 -709, -832, -349, 587, 951, 952, 891, -700, 138, 1078,
4277 511, 138, 957, 958, 292, 344, 1267, 397, -699, 999,
4278 814, 312, 520, 761, 761, 221, -710, -710, 527, 397,
4279 -349, -349, -98, 1100, -700, 814, -700, -835, -98, -835,
4280 471, 503, 525, -831, 1273, 398, 668, 1277, -357, 405,
4281 1070, 405, 1070, 563, 1070, -709, 1070, 398, 679, 1000,
4282 540, 397, 991, 992, 397, 994, 995, 1296, 138, 1052,
4283 138, 786, 545, 1053, 684, -148, -357, -357, 397, 848,
4284 1395, 1063, -710, 567, 1397, 530, -349, 1289, 237, 398,
4285 945, 138, 398, 1306, 1298, 485, -139, 1364, 964, 965,
4286 653, 669, 236, 685, 1082, 587, 398, 1393, 587, 614,
4287 1049, 1078, 491, 680, 1078, 292, 1078, 1284, 803, 803,
4288 1026, 1265, 492, 493, 803, 803, 605, 1299, 1302, 807,
4289 598, 292, -357, 1041, 965, 1070, 851, -718, 535, 1316,
4290 532, 533, 312, 697, 1020, 946, 1021, 1347, 1307, 835,
4291 292, 1359, 1360, 1361, 405, 601, 832, 1351, 1080, 546,
4292 836, 1157, 680, 1215, 1216, 1267, 667, 1267, 671, 1087,
4293 1065, 368, 1267, 676, 1356, 1357, 1358, 1267, 726, 713,
4294 1091, 1092, 715, -144, 716, 1094, 1095, 722, 381, 382,
4295 1314, 1315, 721, 803, -145, 1172, 1174, 1148, 1206, 1152,
4296 36, 37, 1205, 39, -135, 530, 723, 292, 803, -129,
4297 1208, 259, 1402, 1400, 731, -136, 1164, 733, 956, 1164,
4298 753, 312, 1170, 779, 1080, 530, 368, 844, 1170, 1170,
4299 762, 832, 1201, 766, 389, 390, 391, 392, 393, 394,
4300 1187, 1187, 530, 1267, 768, 1267, -444, 1267, 1207, 1267,
4301 524, 524, -143, 309, 774, 780, 1231, 1232, 536, 530,
4302 532, 533, 1239, 587, 812, 1078, 795, 1078, 1267, 1078,
4303 834, 1078, 1265, -134, 138, 851, 1404, 1265, 743, 914,
4304 532, 533, 854, 914, 911, 1308, 913, 1240, 1270, 1310,
4305 390, 391, 392, 393, 394, 535, 922, 532, 533, 292,
4306 1281, 935, 292, 292, 930, 368, 970, 931, 292, 298,
4307 -329, 508, 748, 1282, 532, 533, 337, 338, 339, 340,
4308 341, 832, 381, 382, 832, 938, 1249, 939, 334, 1251,
4309 941, 942, 1309, 943, 292, 960, 557, 292, 558, 559,
4310 560, 561, 1268, 950, 832, 955, 965, 1320, 778, 997,
4311 1078, 1007, 1265, 1009, 1146, 1011, 557, 1013, 558, 559,
4312 560, 561, 562, -333, 1323, 1325, 1327, 1329, 1330, 390,
4313 391, 392, 393, 394, 309, 138, 1040, 1083, 292, 1280,
4314 1084, 970, 563, 1355, -331, 1149, 755, 1162, 1166, 1184,
4315 1240, 138, 1168, 292, 405, 1164, 564, 1170, 1170, 1170,
4316 1170, 1170, 1171, 1164, 1173, 1164, 565, 878, 880, 1337,
4317 138, 566, 567, 568, 1181, 1337, 1204, 1337, 1211, 1212,
4318 1370, 1371, 1213, 878, 880, 1278, 1018, 1019, 832, 832,
4319 832, 1098, 1279, 138, 138, 1024, 1209, 1305, 1025, 1318,
4320 1027, 895, 1141, 1141, 1322, 569, 309, 1324, 570, 237,
4321 557, 1317, 558, 559, 560, 561, 485, 1326, 963, 1392,
4322 1152, 653, 1328, 236, 1333, 1335, 1340, 138, 292, 1345,
4323 36, 37, 1401, 39, 557, 1348, 558, 559, 560, 561,
4324 45, 46, 461, 1349, 1380, 463, 464, 465, 1352, 1354,
4325 832, 1377, 1388, 1387, 1405, 1406, 1408, 1409, 1391, 1403,
4326 755, 405, 405, 1407, 1372, 756, 558, 559, 560, 561,
4327 1141, 1141, 1411, 1413, 1141, 1415, 1417, 1081, 292, -831,
4328 1422, 1436, 1201, 40, 41, 42, 43, 1170, 1170, 1170,
4329 1170, 1141, 1164, 336, -832, 1337, 1337, 498, 101, 1337,
4330 1337, 547, 728, 1337, 1433, 1230, 988, 730, 368, 411,
4331 970, 433, 247, 247, 416, 1227, 84, 805, 396, 138,
4332 719, 874, 138, 138, 1051, 381, 382, 1141, 138, 909,
4333 84, 84, 1342, 1431, 1346, 1312, 1004, 1170, 1337, 1337,
4334 1337, 1337, 1061, 1081, 1339, 1258, 1382, 1188, 1337, 101,
4335 101, 1390, 1338, 310, 138, 1427, 895, 138, 609, 990,
4336 1425, 1353, 1141, 1283, 247, 1141, 1290, 84, 84, 387,
4337 388, 389, 390, 391, 392, 393, 394, 1291, 1367, 1141,
4338 457, 1141, 84, 1368, 1141, 1141, 310, 446, 749, 1141,
4339 1141, 600, 1161, 455, 0, 1423, 0, 0, 138, 0,
4340 247, 247, 0, 0, 247, 418, 429, 429, 0, 247,
4341 0, 0, 0, 138, 0, 0, 0, 0, 84, 84,
4342 0, 0, 84, 0, 0, 1037, 1039, 84, 0, 0,
4343 0, 1043, 1045, 0, 0, 0, 431, 0, 0, 1242,
4344 0, 0, 0, 1242, 0, 1081, 0, 0, 1081, 0,
4345 1081, 0, 1412, 1414, 0, 1141, 1416, 1418, 0, 0,
4346 1421, 1269, 0, 0, 0, 1037, 1039, 0, 1043, 1045,
4347 0, 0, 0, 0, 0, 557, 0, 558, 559, 560,
4348 561, 562, 699, 700, 0, 0, 0, 920, 138, 0,
4349 0, 298, 0, 0, 0, 1434, 1435, 1437, 1438, 928,
4350 0, 563, 0, 0, 0, 1440, 0, 0, 431, 0,
4351 0, 0, 0, 0, 0, 1145, 0, 1141, 0, 0,
4352 0, 1141, 0, 1141, 0, 565, 700, 101, 1067, 298,
4353 566, 567, 568, 0, 0, 0, 0, 0, 138, 1145,
4354 0, 0, 0, 0, 0, 84, 0, 0, 0, 0,
4355 0, 0, 247, 0, 247, 0, 0, 247, 247, 0,
4356 0, 0, 0, 101, 569, 0, 0, 570, 0, 0,
4357 84, 0, 84, 0, 0, 84, 84, 0, 0, 0,
4358 0, 84, 101, 0, 0, 0, 0, 0, 0, 0,
4359 0, 1141, 0, 0, 1067, 0, 0, 0, 0, 1081,
4360 84, 1081, 310, 1081, 776, 1081, 0, 0, 0, 0,
4361 1242, 0, 1269, 0, 0, 0, 0, 1269, 0, 0,
4362 0, 0, 1269, 0, 806, 0, 0, 0, 0, 819,
4363 0, 0, 101, 101, 247, 247, 247, 247, 0, 247,
4364 247, 0, 0, 0, 0, 0, 0, 0, 1110, 1110,
4365 84, 84, 84, 84, 84, 84, 0, 84, 84, 0,
4366 101, 310, 0, 0, 0, 0, 0, 0, 0, 0,
4367 0, 0, 0, 0, 0, 0, 0, 0, 84, 0,
4368 0, 0, 0, 0, 1081, 0, 0, 0, 1269, 0,
4369 1269, 0, 1269, 0, 1269, 0, 1067, 247, 0, 1067,
4370 101, 1067, 0, 0, 0, 0, 247, 101, 101, 0,
4371 0, 883, 1254, 1269, 0, 84, 1110, 1110, 84, 1079,
4372 1110, 0, 247, 0, 84, 84, 84, 700, 1085, 298,
4373 1086, 0, 1088, 0, 0, 0, 0, 1110, 0, 557,
4374 84, 558, 559, 560, 561, 562, 0, 0, 247, 0,
4375 0, 0, 0, 0, 0, 0, 0, 557, 0, 558,
4376 559, 560, 561, 562, 0, 563, 84, 0, 0, 0,
4377 247, 0, 0, 1110, 0, 0, 0, 0, 0, 564,
4378 0, 0, 0, 563, 0, 1079, 0, 923, 84, 565,
4379 0, 0, 0, 0, 0, 567, 568, 564, 0, 0,
4380 0, 0, 0, 0, 0, 101, 0, 565, 1110, 0,
4381 0, 1110, 566, 567, 568, 557, 937, 558, 559, 560,
4382 561, 562, 310, 84, 247, 1110, 0, 1110, 569, 0,
4383 1110, 1110, 0, 0, 0, 1110, 1110, 0, 0, 0,
4384 0, 563, 84, 0, 0, 0, 569, 0, 700, 570,
4385 1067, 101, 1067, 0, 1067, 0, 1067, 0, 0, 0,
4386 0, 0, 1066, 1254, 0, 565, 974, 0, 1254, 84,
4387 0, 567, 568, 1254, 0, 0, 0, 0, 0, 0,
4388 0, 0, 0, 0, 0, 0, 0, 1248, 0, 0,
4389 0, 0, 1252, 0, 0, 247, 101, 0, 247, 101,
4390 1253, 1110, 0, 1266, 569, 0, 0, 247, 0, 310,
4391 0, 0, 822, 84, 84, 0, 84, 84, 0, 0,
4392 0, 0, 0, 0, 0, 84, 0, 0, 0, 0,
4393 84, 1133, 1133, 0, 0, 1067, 0, 0, 0, 1254,
4394 0, 1254, 0, 1254, 0, 1254, 0, 0, 0, 0,
4395 0, 0, 1023, 0, 0, 0, 101, 0, 101, 0,
4396 0, 0, 0, 1110, 1254, 0, 247, 1110, 0, 1110,
4397 0, 0, 0, 0, 84, 1046, 84, 247, 0, 101,
4398 247, 0, 0, 0, 84, 0, 0, 1056, 0, 0,
4399 822, 822, 0, 0, 0, 84, 0, 84, 84, 1133,
4400 1133, 0, 0, 1133, 0, 0, 0, 0, 84, 84,
4401 0, 298, 1134, 1134, 0, 0, 247, 0, 0, 0,
4402 1133, 0, 0, 0, 822, 0, 0, 1135, 1135, 0,
4403 310, 0, 0, 0, 84, 0, 1093, 1110, 0, 0,
4404 0, 0, 84, 1378, 0, 1379, 0, 1381, 0, 0,
4405 0, 0, 0, 0, 1386, 0, 1133, 0, 0, 0,
4406 0, 0, 0, 0, 1394, 0, 0, 0, 0, 0,
4407 0, 1156, 0, 0, 0, 0, 0, 0, 0, 0,
4408 1134, 1134, 0, 0, 1134, 0, 0, 0, 0, 0,
4409 0, 1133, 0, 0, 1133, 1135, 1135, 0, 0, 1135,
4410 0, 1134, 0, 0, 0, 0, 0, 0, 1133, 310,
4411 1133, 0, 0, 1133, 1133, 0, 1135, 0, 1133, 1133,
4412 0, 0, 0, 0, 0, 0, 1428, 0, 0, 0,
4413 0, 0, 1429, 0, 1430, 0, 1432, 1134, 0, 0,
4414 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4415 0, 0, 1135, 0, 0, 1439, 0, 0, 0, 247,
4416 0, 247, 101, 0, 0, 0, 0, 0, 0, 1233,
4417 0, 0, 1134, 0, 0, 1134, 0, 84, 0, 84,
4418 84, 0, 0, 0, 1133, 0, 0, 1135, 0, 1134,
4419 1135, 1134, 0, 0, 1134, 1134, 0, 0, 0, 1134,
4420 1134, 0, 0, 0, 1135, 0, 1135, 0, 0, 1135,
4421 1135, 0, 0, 0, 1135, 1135, 0, 0, 0, 0,
4422 0, 0, 0, 0, 0, 0, 247, 0, 0, 0,
4423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4424 0, 0, 0, 247, 84, 0, 1133, 0, 822, 822,
4425 1133, 0, 1133, 0, 822, 822, 0, 0, 0, 0,
4426 0, 84, 0, 101, 247, 1134, 84, 84, 0, 0,
4427 0, 0, 84, 84, 0, 1136, 1136, 0, 0, 101,
4428 1135, 84, 84, 0, 0, 0, 0, 0, 0, 0,
4429 0, 0, 0, 0, 0, 0, 0, 84, 101, 0,
4430 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4431 0, 112, 0, 0, 0, 0, 84, 0, 0, 0,
4432 1133, 101, 101, 822, 0, 112, 112, 1134, 0, 0,
4433 0, 1134, 0, 1134, 0, 0, 0, 0, 822, 84,
4434 84, 84, 1135, 1136, 1136, 0, 1135, 1136, 1135, 0,
4435 0, 0, 0, 0, 0, 101, 84, 0, 0, 0,
4436 0, 0, 112, 112, 1136, 0, 0, 0, 0, 0,
4437 0, 0, 0, 84, 0, 0, 0, 112, 0, 0,
4438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4439 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4440 1136, 1134, 0, 0, 0, 0, 0, 0, 0, 0,
4441 0, 0, 0, 112, 112, 0, 1135, 112, 0, 0,
4442 0, 0, 112, 0, 0, 0, 1137, 1137, 0, 0,
4443 0, 0, 0, 0, 0, 1136, 0, 0, 1136, 0,
4444 0, 0, 0, 1225, 0, 0, 0, 101, 0, 0,
4445 101, 101, 1136, 0, 1136, 0, 101, 1136, 1136, 0,
4446 0, 0, 1136, 1136, 0, 84, 0, 0, 84, 84,
4447 0, 0, 0, 0, 84, 0, 0, 0, 0, 0,
4448 0, 0, 101, 0, 0, 101, 0, 0, 0, 0,
4449 0, 0, 0, 0, 1137, 1137, 0, 0, 1137, 0,
4450 84, 0, 0, 84, 247, 0, 0, 0, 0, 0,
4451 0, 0, 0, 0, 0, 1137, 0, 0, 0, 0,
4452 0, 0, 84, 0, 0, 0, 101, 0, 1136, 0,
4453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4454 112, 101, 0, 0, 84, 0, 0, 0, 0, 0,
4455 0, 1137, 0, 0, 0, 0, 0, 0, 0, 84,
4456 0, 0, 0, 0, 1344, 112, 0, 112, 0, 0,
4457 112, 112, 0, 0, 0, 0, 112, 0, 0, 0,
4458 0, 0, 0, 0, 0, 0, 1137, 0, 0, 1137,
4459 1136, 0, 0, 0, 1136, 112, 1136, 0, 0, 0,
4460 0, 0, 0, 1137, 247, 1137, 0, 0, 1137, 1137,
4461 0, 247, 247, 1137, 1137, 0, 101, 0, 1138, 1138,
4462 0, 0, 84, 113, 0, 1139, 1139, 0, 0, 84,
4463 84, 0, 0, 0, 84, 0, 1389, 113, 113, 0,
4464 0, 0, 0, 0, 0, 112, 112, 112, 112, 112,
4465 112, 0, 112, 112, 0, 0, 0, 0, 0, 0,
4466 0, 0, 0, 0, 1136, 0, 101, 0, 1140, 1140,
4467 0, 0, 0, 112, 113, 113, 0, 0, 0, 1137,
4468 0, 0, 0, 0, 84, 0, 1138, 1138, 0, 113,
4469 1138, 0, 0, 1139, 1139, 0, 0, 1139, 0, 0,
4470 0, 0, 0, 0, 0, 0, 0, 1138, 0, 0,
4471 112, 0, 0, 112, 1139, 0, 0, 0, 0, 112,
4472 112, 112, 0, 0, 0, 113, 113, 0, 0, 113,
4473 0, 0, 0, 0, 113, 112, 1140, 1140, 0, 0,
4474 1140, 1137, 0, 1138, 0, 1137, 0, 1137, 0, 0,
4475 1139, 0, 0, 0, 0, 0, 0, 1140, 0, 0,
4476 0, 112, 0, 0, 0, 0, 0, 0, 0, 0,
4477 0, 0, 0, 0, 0, 0, 0, 0, 1138, 0,
4478 0, 1138, 0, 112, 0, 1139, 0, 0, 1139, 0,
4479 0, 0, 0, 1140, 0, 1138, 0, 1138, 0, 0,
4480 1138, 1138, 1139, 0, 1139, 1138, 1138, 1139, 1139, 0,
4481 0, 0, 1139, 1139, 0, 1137, 0, 0, 112, 0,
4482 0, 0, 0, 0, 0, 0, 0, 0, 1140, 0,
4483 0, 1140, 0, 0, 0, 0, 0, 112, 0, 0,
4484 0, 0, 0, 0, 0, 1140, 0, 1140, 0, 0,
4485 1140, 1140, 113, 0, 0, 1140, 1140, 0, 0, 0,
4486 0, 0, 0, 0, 112, 0, 0, 0, 0, 0,
4487 0, 1138, 0, 0, 0, 0, 0, 113, 1139, 113,
4488 0, 0, 113, 113, 0, 0, 0, 0, 113, 0,
4489 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4490 0, 0, 0, 0, 0, 0, 0, 113, 112, 112,
4491 0, 112, 112, 0, 0, 0, 0, 0, 0, 0,
4492 112, 1140, 0, 0, 0, 112, 0, 0, 0, 0,
4493 0, 0, 0, 1138, 0, 0, 0, 1138, 0, 1138,
4494 1139, 0, 0, 0, 1139, 0, 1139, 0, 0, 0,
4495 0, 0, 0, 0, 0, 0, 0, 113, 113, 113,
4496 113, 113, 113, 0, 113, 113, 0, 0, 0, 112,
4497 0, 112, 0, 0, 0, 0, 0, 0, 0, 112,
4498 0, 0, 0, 1140, 0, 113, 0, 1140, 0, 1140,
4499 112, 0, 112, 112, 0, 0, 0, 0, 0, 0,
4500 0, 0, 0, 112, 112, 0, 0, 1138, 0, 0,
4501 0, 0, 0, 0, 1139, 0, 0, 0, 0, 0,
4502 0, 0, 113, 0, 0, 113, 0, 0, 0, 112,
4503 0, 113, 113, 113, 0, 0, 0, 112, 0, 0,
4504 0, 0, 0, 0, 0, 0, 0, 113, 0, 0,
4505 0, 0, 0, 0, 0, 0, 0, 1140, 0, 0,
4506 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4507 0, 0, 0, 113, 0, 0, 0, 0, 0, 0,
4508 0, 0, 0, 0, -853, 0, 0, 0, 0, 0,
4509 80, 0, -853, -853, -853, 113, 0, -853, -853, -853,
4510 0, -853, 0, 0, 80, 80, 0, 0, 0, -853,
4511 -853, -853, 0, 0, 0, 0, 0, 0, 0, 0,
4512 0, -853, -853, 0, -853, -853, -853, -853, -853, 0,
4513 113, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4514 0, 80, 80, 0, 0, 306, 0, 0, 0, 113,
4515 0, 0, -853, -853, 0, 0, 0, 0, 0, 0,
4516 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4517 0, 0, 112, 0, 112, 112, 113, 0, 306, 0,
4518 0, -853, -853, 0, 0, 0, 0, 0, 0, 0,
4519 0, 0, 0, 0, 0, 0, 0, 306, 306, 306,
4520 0, 80, 0, 0, -853, 0, 0, 0, 0, 0,
4521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4522 113, 113, 0, 113, 113, 0, 0, 0, 0, 0,
4523 0, 0, 113, 0, 0, -853, -853, 113, -853, 112,
4524 0, 255, -853, 0, -853, 0, 0, 0, 0, 0,
4525 0, 0, 0, 0, 0, 0, 112, 0, 0, 0,
4526 0, 112, 112, 0, 0, 0, 0, 112, 112, 0,
4527 0, 0, 81, 0, 0, 0, 112, 112, 0, 0,
4528 0, 113, 0, 113, 0, 0, 81, 81, 0, 0,
4529 0, 113, 112, 0, 0, 0, 0, 0, 0, 0,
4530 0, 0, 113, 0, 113, 113, 0, 0, 0, 0,
4531 0, 112, 0, 0, 0, 113, 113, 0, 0, 80,
4532 0, 0, 0, 81, 81, 0, 0, 307, 0, 0,
4533 0, 0, 0, 0, 112, 112, 112, 0, 0, 0,
4534 0, 113, 0, 0, 80, 0, 80, 0, 0, 113,
4535 0, 112, 0, 0, 0, 80, 0, 0, 367, 0,
4536 307, 0, 0, 0, 0, 0, 0, 0, 112, 0,
4537 0, 0, 0, 0, 80, 0, 0, 0, 0, 307,
4538 307, 307, 0, 81, 0, 0, 0, 0, 0, 0,
4539 0, 0, 0, 0, 306, 0, 0, 0, 0, 0,
4540 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4541 0, 368, 369, 370, 371, 372, 373, 374, 375, 376,
4542 377, 378, 379, 380, 80, 80, 0, 0, 381, 382,
4543 0, 0, 0, 0, 383, 0, 0, 0, 0, 0,
4544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4545 0, 0, 80, 306, 0, 0, 0, 0, 0, 0,
4546 112, 0, 0, 112, 112, 0, 0, 0, 384, 112,
4547 385, 386, 387, 388, 389, 390, 391, 392, 393, 394,
4548 0, 0, 0, 0, 113, 0, 113, 113, 0, 80,
4549 0, 0, 80, 0, 0, 112, 0, 0, 112, 80,
4550 80, 81, 0, 0, 0, 0, 0, 0, 0, 0,
4551 0, 0, 0, 0, 0, 0, 0, 112, 0, 0,
4552 0, 0, 0, 0, 0, 0, 81, 0, 81, 0,
4553 0, 0, 0, 0, 0, 0, 0, 81, 0, 112,
4554 80, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4555 0, 113, 0, 0, 112, 0, 81, 0, 0, 0,
4556 0, 0, 80, 0, 0, 0, 0, 0, 113, 0,
4557 0, 0, 0, 113, 113, 0, 307, 0, 0, 113,
4558 113, 0, 0, 0, 0, 0, 0, 0, 113, 113,
4559 0, 0, 0, 0, 0, 0, 0, 80, 0, 0,
4560 0, 0, 0, 0, 113, 0, 81, 81, 0, 0,
4561 0, 0, 0, 0, 306, 0, 80, 112, 0, 0,
4562 0, 0, 0, 113, 112, 112, 0, 0, 0, 112,
4563 0, 0, 0, 0, 81, 307, 0, 0, 0, 0,
4564 0, 0, 0, 80, 0, 0, 113, 113, 113, 0,
4565 0, 0, 368, 369, 370, 371, 372, 373, 374, 375,
4566 0, 377, 378, 113, 0, 0, 0, 0, 0, 381,
4567 382, 81, 0, 0, 81, 0, 0, 0, 0, 112,
4568 113, 81, 81, 0, 0, 0, 0, 0, 80, 0,
4569 0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
4570 0, 306, 0, 0, 80, 0, 0, 22, 23, 24,
4571 25, 385, 386, 387, 388, 389, 390, 391, 392, 393,
4572 394, 0, 81, 31, 32, 33, 0, 0, 0, 0,
4573 0, 0, 0, 40, 41, 42, 43, 44, 0, 0,
4574 0, 0, 0, 0, 81, 0, 0, 0, 80, 0,
4575 80, 0, 0, 0, 141, 0, 0, 0, 80, 0,
4576 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,
4577 0, 80, 113, 0, 0, 113, 113, 0, 0, 81,
4578 0, 113, 80, 80, 57, 58, 59, 60, 61, 62,
4579 63, 64, 65, 0, 0, 0, 307, 0, 81, 0,
4580 0, 0, 0, 0, 0, 141, 141, 113, 0, 313,
4581 113, 0, 0, 0, 0, 0, 80, 0, 0, 0,
4582 0, 304, 306, 0, 0, 81, 0, 0, 0, 113,
4583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4584 0, 0, 313, 0, 0, 0, 0, 0, 0, 0,
4585 0, 113, 0, 0, 0, 0, 0, 0, 0, 0,
4586 0, 422, 432, 432, 0, 0, 113, 0, 0, 0,
4587 81, 0, 0, 81, 0, 944, 0, 0, 0, 0,
4588 0, 0, 0, 307, 0, 0, 81, 0, 0, 0,
4589 0, 0, 137, 0, 0, 0, 0, 0, 0, 0,
4590 0, 306, 0, 0, 0, 0, 0, 0, 0, 368,
4591 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
4592 379, 380, 0, 0, 0, 0, 381, 382, 0, 113,
4593 81, 0, 81, 0, 0, 0, 113, 113, 0, 0,
4594 81, 113, 0, 137, 137, 0, 0, 311, 0, 0,
4595 0, 81, 0, 81, 80, 0, 0, 0, 0, 0,
4596 0, 0, 0, 0, 81, 81, 384, 0, 385, 386,
4597 387, 388, 389, 390, 391, 392, 393, 394, 0, 0,
4598 311, 0, 0, 141, 0, 0, -298, 0, 0, 0,
4599 0, 113, 0, 0, 0, 0, 0, 0, 81, 420,
4600 430, 430, 430, 0, 307, 0, 0, 0, 0, 0,
4601 0, 0, 0, 0, 0, 0, 0, 0, 0, 141,
4602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4603 0, 0, 0, 0, 0, 80, 0, 0, 141, 0,
4604 80, 80, 0, 0, 0, 0, 80, 80, 0, 0,
4605 0, 0, 0, 0, 0, 80, 0, 0, 313, 0,
4606 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4607 0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
4608 0, 0, 0, 307, 0, 0, 0, 0, 141, 141,
4609 80, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4610 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4611 0, 0, 0, 80, 80, 80, 141, 313, 0, 0,
4612 0, 137, 368, -854, -854, -854, -854, 373, 374, 0,
4613 80, -854, -854, 0, 0, 0, 81, 0, 0, 381,
4614 382, 0, 0, 0, 0, 0, 0, 80, 0, 0,
4615 0, 0, 0, 0, 0, 0, 141, 137, 0, 0,
4616 0, 0, 0, 141, 141, 0, 0, 0, 0, 944,
4617 0, 0, 0, 0, 0, 0, 137, 0, 0, 0,
4618 0, 385, 386, 387, 388, 389, 390, 391, 392, 393,
4619 394, 0, 0, 0, 0, 0, 311, 0, 0, 0,
4620 0, 0, 0, 368, 369, 370, 371, 372, 373, 374,
4621 375, 376, 377, 378, 379, 380, 0, 81, 0, 0,
4622 381, 382, 81, 81, 0, 0, 137, 137, 81, 81,
4623 0, 0, 0, 91, 0, 306, 0, 81, 0, 80,
4624 0, 0, 80, 80, 0, 0, 0, 0, 80, 0,
4625 0, 0, 0, 81, 137, 311, 0, 0, 0, 0,
4626 384, 141, 385, 386, 387, 388, 389, 390, 391, 392,
4627 393, 394, 81, 0, 80, 0, 0, 80, 313, 0,
4628 0, 0, 0, 0, 91, 91, 0, 0, 0, 0,
4629 0, 0, 0, 0, 137, 81, 81, 81, 0, 0,
4630 0, 137, 137, 0, 0, 0, 0, 141, 22, 23,
4631 24, 25, 81, 0, 0, 0, 0, 0, 80, 0,
4632 0, 0, 0, 0, 31, 32, 33, 1098, 0, 81,
4633 0, 1099, 140, 80, 40, 41, 42, 43, 44, 0,
4634 417, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4635 0, 0, 141, 0, 0, 141, 306, 0, 0, 0,
4636 0, 0, 0, 0, 0, 313, 1101, 1102, 823, 0,
4637 0, 0, 0, 0, 1103, 0, 0, 1104, 0, 1105,
4638 1106, 0, 1107, 140, 140, 57, 58, 59, 60, 61,
4639 62, 63, 64, 65, 0, 0, 80, 0, 0, 137,
4640 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
4641 0, 0, 141, 0, 141, 1109, 311, 307, 0, 0,
4642 0, 81, 304, 0, 81, 81, 0, 0, 306, 259,
4643 81, 0, 0, 0, 0, 141, 0, 0, 0, 0,
4644 0, 0, 0, 0, 0, 137, 823, 823, 0, 0,
4645 0, 0, 0, 0, 0, 0, 81, 0, 80, 81,
4646 0, 0, 91, 0, 368, 369, 370, 371, 372, 373,
4647 374, 375, 376, 377, 378, 379, 380, 0, 0, 0,
4648 823, 381, 382, 0, 0, 0, 313, 0, 0, 0,
4649 137, 0, 0, 137, 0, 903, 0, 0, 91, 0,
4650 81, 0, 0, 311, 0, 0, 0, 0, 0, 0,
4651 0, 0, 0, 0, 0, 81, 0, 91, 0, 0,
4652 0, 384, 0, 385, 386, 387, 388, 389, 390, 391,
4653 392, 393, 394, 0, 0, 0, 0, 0, 307, 0,
4654 259, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4655 137, 0, 137, 0, 0, 0, 0, 0, 0, 0,
4656 0, 140, 0, 0, 0, 313, 0, 91, 91, 0,
4657 0, 0, 0, 137, 0, 0, 0, 0, 81, 0,
4658 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4659 81, 0, 0, 0, 0, 91, 0, 140, 0, 0,
4660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4661 307, 0, 0, 0, 0, 0, 140, 0, 141, 0,
4662 0, 0, 0, 0, 311, 0, 0, 0, 0, 0,
4663 0, 0, 0, 0, 0, 91, 0, 0, 0, 0,
4664 81, 0, 91, 91, 0, 0, 0, 0, 0, 0,
4665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4666 0, 0, 0, 0, 0, 0, 140, 140, 0, 0,
4667 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4668 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4669 0, 0, 0, 0, 140, 0, 0, 0, 0, 0,
4670 0, 0, 0, 311, 823, 823, 0, 0, 0, 0,
4671 823, 823, 0, 0, 0, 0, 0, 0, 0, 141,
4672 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4673 0, 0, 0, 0, 140, 141, 0, 0, 0, 0,
4674 91, 140, 140, 0, 22, 23, 24, 25, 0, 0,
4675 0, 0, 0, 0, 141, 0, 137, 0, 0, 0,
4676 31, 32, 33, 1098, 0, 0, 0, 1099, 0, 1100,
4677 40, 41, 42, 43, 44, 0, 0, 141, 141, 823,
4678 0, 0, 0, 0, 0, 0, 91, 0, 0, 563,
4679 0, 0, 0, 0, 823, 0, 0, 0, 0, 0,
4680 0, 0, 1101, 1102, 0, 0, 0, 0, 0, 0,
4681 1103, 141, 0, 1104, 0, 1105, 1106, 0, 1107, 567,
4682 0, 57, 58, 1108, 60, 61, 62, 63, 64, 65,
4683 0, 91, 0, 0, 91, 0, 0, 0, 0, 140,
4684 0, 0, 0, 0, 0, 0, 0, 817, 0, 0,
4685 0, 1109, 0, 0, 0, 0, 0, 137, 304, 0,
4686 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4687 0, 0, 0, 137, 0, 0, 0, 0, 0, 0,
4688 0, 0, 0, 0, 0, 140, 0, 0, 0, 0,
4689 0, 91, 137, 91, 0, 0, 0, 0, 0, 1228,
4690 0, 0, 0, 141, 0, 0, 141, 141, 0, 0,
4691 0, 0, 141, 0, 91, 137, 137, 0, 0, 0,
4692 0, 0, 0, 0, 0, 817, 817, 0, 0, 0,
4693 140, 0, 0, 140, 0, 0, 0, 0, 141, 0,
4694 0, 141, 0, 0, 0, 0, 140, 0, 0, 137,
4695 22, 23, 24, 25, 0, 0, 0, 0, 0, 817,
4696 0, 0, 0, 0, 0, 0, 31, 32, 33, 1098,
4697 0, 0, 0, 1099, 0, 0, 40, 41, 42, 43,
4698 44, 0, 141, 0, 0, 0, 0, 0, 0, 0,
4699 140, 0, 140, 0, 0, 0, 0, 141, 0, 0,
4700 0, 0, 0, 0, 0, 0, 0, 0, 1101, 1102,
4701 0, 0, 0, 140, 0, 0, 1103, 0, 0, 1104,
4702 432, 1105, 1106, 0, 140, 140, 0, 57, 58, 59,
4703 60, 61, 62, 63, 64, 65, 0, 1226, 0, 0,
4704 0, 137, 0, 0, 137, 137, 0, 0, 0, 0,
4705 137, 0, 0, 0, 0, 0, 0, 1109, 140, 0,
4706 0, 0, 0, 0, 304, 368, 369, 370, 371, 372,
4707 373, 374, 141, 0, 377, 378, 137, 0, 0, 137,
4708 0, 0, 381, 382, 0, 22, 23, 24, 25, 0,
4709 0, 0, 432, 0, 0, 0, 0, 91, 0, 0,
4710 0, 31, 32, 33, 1098, 0, 0, 0, 1099, 0,
4711 0, 40, 41, 42, 43, 44, 0, 0, 0, 0,
4712 137, 0, 141, 0, 385, 386, 387, 388, 389, 390,
4713 391, 392, 393, 394, 0, 137, 0, 0, 0, 0,
4714 0, 0, 0, 1101, 1102, 0, 0, 0, 0, 0,
4715 0, 1103, 0, 0, 1104, 0, 1105, 1106, 430, 1107,
4716 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
4717 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4718 0, 0, 0, 817, 817, 0, 0, 0, 0, 817,
4719 817, 0, 1109, 0, 0, 0, 140, 0, 91, 304,
4720 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4721 137, 0, 0, 0, 91, 0, 0, 0, 0, 0,
4722 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4723 430, 0, 0, 91, 0, 0, 0, 0, 0, 0,
4724 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4725 0, 0, 239, 239, 0, 0, 91, 91, 817, 0,
4726 137, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4727 0, 0, 0, 817, 0, 0, 0, 0, 0, 0,
4728 0, 0, 140, 140, 276, 280, 281, 282, 140, 140,
4729 91, 239, 239, 0, 0, 0, 0, 140, 0, 0,
4730 0, 0, 0, 0, 329, 330, 0, 0, 0, 0,
4731 689, 651, 0, 140, 690, 0, 0, 0, 0, 0,
4732 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4733 0, 0, 140, 0, 188, 189, 190, 191, 192, 193,
4734 194, 195, 196, 0, 0, 197, 198, 0, 0, 239,
4735 0, 199, 200, 201, 202, 140, 140, 140, 0, 0,
4736 0, 0, 0, 0, 0, 203, 204, 0, 0, 0,
4737 0, 0, 140, 0, 0, 0, 0, 0, 1224, 0,
4738 0, 0, 91, 0, 0, 91, 91, 0, 0, 140,
4739 0, 91, 0, 0, 0, 205, 206, 207, 208, 209,
4740 210, 211, 212, 213, 214, 0, 215, 216, 0, 0,
4741 0, 0, 0, 0, 217, 255, 0, 91, 0, 0,
4742 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4743 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4744 0, 0, 0, 0, 0, 0, 368, 369, 370, 371,
4745 372, 373, 374, 375, 376, 377, 378, 379, 380, 0,
4746 0, 91, 0, 381, 382, 239, 0, 0, 239, 239,
4747 239, 0, 329, 0, 0, 0, 91, 0, 0, 0,
4748 0, 140, 0, 0, 140, 140, 0, 0, 0, 0,
4749 140, 0, 239, 0, 239, 0, 0, 0, 642, 643,
4750 0, 0, 644, 384, 0, 385, 386, 387, 388, 389,
4751 390, 391, 392, 393, 394, 0, 140, 0, 0, 140,
4752 0, 0, 188, 189, 190, 191, 192, 193, 194, 195,
4753 196, 0, 0, 197, 198, 0, 0, 0, 0, 199,
4754 200, 201, 202, 0, 0, 0, 0, 0, 0, 0,
4755 0, 91, 0, 203, 204, 0, 0, 0, 0, 0,
4756 140, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4757 0, 0, 0, 0, 0, 140, 0, 0, 0, 0,
4758 0, 0, 0, 205, 206, 207, 208, 209, 210, 211,
4759 212, 213, 214, 0, 215, 216, 0, 0, 0, 0,
4760 0, 91, 217, 0, 0, 617, 618, 619, 620, 621,
4761 0, 0, 622, 623, 624, 625, 626, 627, 628, 629,
4762 0, 631, 0, 0, 632, 633, 634, 635, 636, 637,
4763 638, 639, 640, 641, 650, 651, 0, 239, 652, 0,
4764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4765 140, 0, 0, 0, 0, 0, 0, 0, 188, 189,
4766 190, 191, 192, 193, 194, 195, 196, 0, 0, 197,
4767 198, 0, 0, 0, 0, 199, 200, 201, 202, 0,
4768 0, 0, 0, 0, 0, 0, 0, 0, 239, 203,
4769 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4770 140, 0, 0, 0, 0, 239, 239, 0, 0, 0,
4771 239, 0, 0, 0, 239, 0, 282, 0, 0, 205,
4772 206, 207, 208, 209, 210, 211, 212, 213, 214, 0,
4773 215, 216, 0, 0, 720, 0, 0, 0, 217, 0,
4774 0, 0, 0, 0, 0, 0, 0, 0, 0, 239,
4775 0, 0, 239, 0, -853, 3, 0, 4, 5, 6,
4776 7, 8, 0, 0, 239, 9, 10, 0, 0, 0,
4777 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
4778 0, 0, 752, 0, 19, 20, 21, 22, 23, 24,
4779 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
4780 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
4781 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
4782 0, 0, 0, 0, 0, 0, 0, 239, 0, 0,
4783 47, 48, 0, 0, 0, 787, 0, 0, 787, 0,
4784 0, 0, 0, 0, 0, 49, 50, 239, 0, 0,
4785 0, 0, 818, 51, 0, 0, 52, 53, 54, 55,
4786 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
4787 63, 64, 65, 0, -853, 0, 0, 368, 369, 370,
4788 371, 372, 373, 374, 375, 376, 377, 378, -854, -854,
4789 0, 0, 0, 0, 381, 382, 0, 0, 0, 0,
4790 0, 66, 67, 68, 0, 0, 239, 0, -853, 0,
4791 0, 0, 0, 0, -853, 0, 0, 239, 0, 0,
4792 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4793 877, 877, 0, 0, 239, 877, 385, 386, 387, 388,
4794 389, 390, 391, 392, 393, 394, 877, 877, 0, 0,
4795 239, 0, 239, 0, 0, 0, 0, 0, 0, 787,
4796 787, 0, 0, 0, 877, 0, 0, 0, 0, 0,
4797 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4798 0, -4, 3, 0, 4, 5, 6, 7, 8, -4,
4799 -4, -4, 9, 10, 0, -4, -4, 11, -4, 12,
4800 13, 14, 15, 16, 17, 18, -4, 0, 0, 0,
4801 239, 19, 20, 21, 22, 23, 24, 25, 0, 0,
4802 26, 0, 0, 0, 0, 0, 27, 28, 284, 30,
4803 31, 32, 33, 34, 35, 36, 37, 38, 39, 239,
4804 40, 41, 42, 43, 44, 45, 46, 0, 0, -4,
4805 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
4806 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4807 0, 239, 49, 50, 0, 0, 0, 0, 0, 0,
4808 51, 0, 0, 52, 53, 54, 55, 0, 56, 239,
4809 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4810 0, -4, 0, 0, 0, 0, 0, 0, 0, 0,
4811 0, 0, 0, 0, 0, 0, 0, 0, 0, 877,
4812 0, 0, 0, 0, 0, 0, 0, 0, 66, 67,
4813 68, 0, 0, -4, 0, 0, 0, 0, 0, -4,
4814 0, 546, 0, 0, 0, 0, 0, 0, 0, 0,
4815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4816 0, 0, 0, 0, 0, 0, 787, 0, 0, 0,
4817 0, 0, 0, 0, 0, 239, 0, 0, 0, 0,
4818 0, 0, 0, 239, 0, 0, 0, 1035, 877, 877,
4819 0, 0, 0, 0, 877, 877, 0, 0, 239, 0,
4820 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4821 239, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4822 0, 0, 0, 0, 0, 0, 0, 0, 877, 877,
4823 0, 877, 877, 0, 239, 0, 787, 0, 0, 0,
4824 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4825 0, 0, 0, 0, 0, 1089, 1090, 0, 0, 239,
4826 0, 0, 0, 877, 1096, -853, 3, 0, 4, 5,
4827 6, 7, 8, 0, 0, 0, 9, 10, 877, 0,
4828 0, 11, 0, 12, 13, 14, 15, 16, 17, 18,
4829 0, 0, 0, 0, 239, 19, 20, 21, 22, 23,
4830 24, 25, 877, 0, 26, 0, 0, 0, 0, 0,
4831 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
4832 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
4833 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4834 0, 47, 48, 0, 0, 0, 0, 0, 0, 0,
4835 0, 0, 0, 0, 0, 0, 49, 50, 0, 0,
4836 0, 0, 0, 0, 51, 0, 0, 52, 53, 54,
4837 55, 0, 56, 0, 0, 57, 58, 59, 60, 61,
4838 62, 63, 64, 65, 0, 0, 0, 0, 0, 0,
4839 0, 0, 239, 0, 0, 0, 0, 0, 0, 0,
4840 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4841 0, 0, 66, 67, 68, 0, 0, -4, 3, -853,
4842 4, 5, 6, 7, 8, -853, 0, 0, 9, 10,
4843 0, 0, 0, 11, 0, 12, 13, 14, 15, 16,
4844 17, 18, 0, 0, 0, 0, 0, 19, 20, 21,
4845 22, 23, 24, 25, 0, 0, 26, 0, 0, 0,
4846 0, 0, 27, 28, 29, 30, 31, 32, 33, 34,
4847 35, 36, 37, 38, 39, 0, 40, 41, 42, 43,
4848 44, 45, 46, 0, 0, 0, 0, 0, 0, 0,
4849 0, 0, 0, 47, 48, 0, 0, 0, 0, 0,
4850 0, 0, 0, 0, 0, 0, 0, 0, 49, 50,
4851 0, 0, 0, 0, 0, 0, 51, 0, 0, 52,
4852 53, 54, 55, 0, 56, 0, 0, 57, 58, 59,
4853 60, 61, 62, 63, 64, 65, 0, 0, 0, 0,
4854 0, 0, 0, 0, 239, -835, 0, 0, 0, 0,
4855 0, 0, 0, -835, -835, -835, 0, 0, -835, -835,
4856 -835, 0, -835, 0, 66, 67, 68, 0, 0, -4,
4857 -835, -835, -835, -835, -835, 0, 0, 546, 0, 0,
4858 0, 0, -835, -835, 0, -835, -835, -835, -835, -835,
4859 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4861 0, 0, 0, -835, -835, 0, 0, 0, 0, 0,
4862 0, 0, 0, -835, -835, -835, -835, -835, -835, -835,
4863 -835, -835, -835, -835, -835, -835, 0, 0, 0, 0,
4864 -835, -835, -835, -835, 0, 885, -835, 0, 0, 0,
4865 0, -835, 0, 0, 0, 0, 0, 0, 0, 0,
4866 0, 0, 0, 0, 0, -835, 0, 0, -835, 0,
4867 0, 0, 0, 0, 0, 0, 0, 0, 0, -146,
4868 -835, -835, -835, -835, -835, -835, -835, -835, -835, -835,
4869 -835, -835, 0, 0, 0, 0, -835, -835, -835, -835,
4870 -835, -699, 0, -835, -835, -835, 0, 0, 0, -699,
4871 -699, -699, 0, 0, -699, -699, -699, 0, -699, 0,
4872 0, 0, 0, 0, 0, 0, -699, 0, -699, -699,
4873 -699, 0, 0, 0, 0, 0, 0, 0, -699, -699,
4874 0, -699, -699, -699, -699, -699, 0, 0, 0, 0,
4875 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4876 0, 0, 0, 0, 0, 0, 0, 0, 0, -699,
4877 -699, 0, 0, 0, 0, 0, 0, 0, 0, -699,
4878 -699, -699, -699, -699, -699, -699, -699, -699, -699, -699,
4879 -699, -699, 0, 0, 0, 0, -699, -699, -699, -699,
4880 0, -699, -699, 0, 0, 0, 0, -699, 0, 0,
4881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4882 0, -699, 0, 0, -699, 0, 0, 0, 0, 0,
4883 0, 0, 0, 0, 0, -699, -699, -699, -699, -699,
4884 -699, -699, -699, -699, -699, -699, -699, -699, 0, 0,
4885 0, 0, 0, -699, -699, -699, -699, -700, 0, -699,
4886 -699, -699, 0, 0, 0, -700, -700, -700, 0, 0,
4887 -700, -700, -700, 0, -700, 0, 0, 0, 0, 0,
4888 0, 0, -700, 0, -700, -700, -700, 0, 0, 0,
4889 0, 0, 0, 0, -700, -700, 0, -700, -700, -700,
4890 -700, -700, 0, 0, 0, 0, 0, 0, 0, 0,
4891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4892 0, 0, 0, 0, 0, -700, -700, 0, 0, 0,
4893 0, 0, 0, 0, 0, -700, -700, -700, -700, -700,
4894 -700, -700, -700, -700, -700, -700, -700, -700, 0, 0,
4895 0, 0, -700, -700, -700, -700, 0, -700, -700, 0,
4896 0, 0, 0, -700, 0, 0, 0, 0, 0, 0,
4897 0, 0, 0, 0, 0, 0, 0, -700, 0, 0,
4898 -700, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4899 0, -700, -700, -700, -700, -700, -700, -700, -700, -700,
4900 -700, -700, -700, -700, 0, 0, 0, 0, 0, -700,
4901 -700, -700, -700, -836, 0, -700, -700, -700, 0, 0,
4902 0, -836, -836, -836, 0, 0, -836, -836, -836, 0,
4903 -836, 0, 0, 0, 0, 0, 0, 0, -836, -836,
4904 -836, -836, -836, 0, 0, 0, 0, 0, 0, 0,
4905 -836, -836, 0, -836, -836, -836, -836, -836, 0, 0,
4906 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4907 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4908 0, -836, -836, 0, 0, 0, 0, 0, 0, 0,
4909 0, -836, -836, -836, -836, -836, -836, -836, -836, -836,
4910 -836, -836, -836, -836, 0, 0, 0, 0, -836, -836,
4911 -836, -836, 0, 0, -836, 0, 0, 0, 0, -836,
4912 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4913 0, 0, 0, -836, 0, 0, -836, 0, 0, 0,
4914 0, 0, 0, 0, 0, 0, 0, 0, -836, -836,
4915 -836, -836, -836, -836, -836, -836, -836, -836, -836, -836,
4916 0, 0, 0, 0, -836, -836, -836, -836, -836, -837,
4917 0, -836, -836, -836, 0, 0, 0, -837, -837, -837,
4918 0, 0, -837, -837, -837, 0, -837, 0, 0, 0,
4919 0, 0, 0, 0, -837, -837, -837, -837, -837, 0,
4920 0, 0, 0, 0, 0, 0, -837, -837, 0, -837,
4921 -837, -837, -837, -837, 0, 0, 0, 0, 0, 0,
4922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4923 0, 0, 0, 0, 0, 0, 0, -837, -837, 0,
4924 0, 0, 0, 0, 0, 0, 0, -837, -837, -837,
4925 -837, -837, -837, -837, -837, -837, -837, -837, -837, -837,
4926 0, 0, 0, 0, -837, -837, -837, -837, 0, 0,
4927 -837, 0, 0, 0, 0, -837, 0, 0, 0, 0,
4928 0, 0, 0, 0, 0, 0, 0, 0, 0, -837,
4929 0, 0, -837, 0, 0, 0, 0, 0, 0, 0,
4930 0, 0, 0, 0, -837, -837, -837, -837, -837, -837,
4931 -837, -837, -837, -837, -837, -837, 0, 0, 0, 0,
4932 -837, -837, -837, -837, -837, -514, 0, -837, -837, -837,
4933 0, 0, 0, -514, -514, -514, 0, 0, -514, -514,
4934 -514, 0, -514, 0, 0, 0, 0, 0, 0, 0,
4935 -514, -514, -514, -514, 0, 0, 0, 0, 0, 0,
4936 0, 0, -514, -514, 0, -514, -514, -514, -514, -514,
4937 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4938 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4939 0, 0, 0, -514, -514, 0, 0, 0, 0, 0,
4940 0, 0, 0, -514, -514, -514, -514, -514, -514, -514,
4941 -514, -514, -514, -514, -514, -514, 0, 0, 0, 0,
4942 -514, -514, -514, -514, 0, 0, -514, 0, 0, 0,
4943 0, -514, 0, 0, 0, 0, 0, 0, 0, 0,
4944 0, 0, 0, 0, 0, -514, 0, 0, 0, 0,
4945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4946 -514, 0, -514, -514, -514, -514, -514, -514, -514, -514,
4947 -514, -514, 0, 0, 0, 0, -514, -514, -514, -514,
4948 -514, -350, 255, -514, -514, -514, 0, 0, 0, -350,
4949 -350, -350, 0, 0, -350, -350, -350, 0, -350, 0,
4950 0, 0, 0, 0, 0, 0, -350, 0, -350, -350,
4951 -350, 0, 0, 0, 0, 0, 0, 0, -350, -350,
4952 0, -350, -350, -350, -350, -350, 0, 0, 0, 0,
4953 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4954 0, 0, 0, 0, 0, 0, 0, 0, 0, -350,
4955 -350, 0, 0, 0, 0, 0, 0, 0, 0, -350,
4956 -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
4957 -350, -350, 0, 0, 0, 0, -350, -350, -350, -350,
4958 0, 0, -350, 0, 0, 0, 0, -350, 0, 0,
4959 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4960 0, -350, 0, 0, -350, 0, 0, 0, 0, 0,
4961 0, 0, 0, 0, 0, 0, -350, -350, -350, -350,
4962 -350, -350, -350, -350, -350, -350, -350, -350, 0, 0,
4963 0, 0, 0, -350, -350, -350, -350, -853, 0, -350,
4964 -350, -350, 0, 0, 0, -853, -853, -853, 0, 0,
4965 -853, -853, -853, 0, -853, 0, 0, 0, 0, 0,
4966 0, 0, -853, -853, -853, -853, 0, 0, 0, 0,
4967 0, 0, 0, 0, -853, -853, 0, -853, -853, -853,
4968 -853, -853, 0, 0, 0, 0, 0, 0, 0, 0,
4969 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4970 0, 0, 0, 0, 0, -853, -853, 0, 0, 0,
4971 0, 0, 0, 0, 0, -853, -853, -853, -853, -853,
4972 -853, -853, -853, -853, -853, -853, -853, -853, 0, 0,
4973 0, 0, -853, -853, -853, -853, 0, 0, -853, 0,
4974 0, 0, 0, -853, 0, 0, 0, 0, 0, 0,
4975 0, 0, 0, 0, 0, 0, 0, -853, 0, 0,
4976 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4977 0, 0, -853, 0, -853, -853, -853, -853, -853, -853,
4978 -853, -853, -853, -853, 0, 0, 0, 0, -853, -853,
4979 -853, -853, -853, -356, 255, -853, -853, -853, 0, 0,
4980 0, -356, -356, -356, 0, 0, -356, -356, -356, 0,
4981 -356, 0, 0, 0, 0, 0, 0, 0, -356, 0,
4982 -356, -356, 0, 0, 0, 0, 0, 0, 0, 0,
4983 -356, -356, 0, -356, -356, -356, -356, -356, 0, 0,
4984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4985 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4986 0, -356, -356, 0, 0, 0, 0, 0, 0, 0,
4987 0, -356, -356, -356, -356, -356, -356, -356, -356, -356,
4988 -356, -356, -356, -356, 0, 0, 0, 0, -356, -356,
4989 -356, -356, 0, 886, -356, 0, 0, 0, 0, -356,
4990 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4991 0, 0, 0, -356, 0, 0, 0, 0, 0, 0,
4992 0, 0, 0, 0, 0, 0, 0, -147, -356, 0,
4993 -356, -356, -356, -356, -356, -356, -356, -356, -356, -356,
4994 0, 0, 0, 0, 829, -356, -356, -356, -356, -363,
4995 0, -356, -356, -356, 0, 0, 0, -363, -363, -363,
4996 0, 0, -363, -363, -363, 0, -363, 0, 0, 0,
4997 0, 0, 0, 0, -363, 0, -363, -363, 0, 0,
4998 0, 0, 0, 0, 0, 0, -363, -363, 0, -363,
4999 -363, -363, -363, -363, 0, 0, 0, 0, 0, 0,
5000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5001 0, 0, 0, 0, 0, 0, 0, -363, -363, 0,
5002 0, 0, 0, 0, 0, 0, 0, -363, -363, -363,
5003 -363, -363, -363, -363, -363, -363, -363, -363, -363, -363,
5004 0, 0, 0, 0, -363, -363, -363, -363, 0, 0,
5005 -363, 0, 0, 0, 0, -363, 0, 0, 0, 0,
5006 0, 0, 0, 0, 0, 0, 0, 0, 0, -363,
5007 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5008 0, 0, 0, 0, -363, 0, -363, -363, -363, -363,
5009 -363, -363, -363, -363, -363, -363, 0, 0, 0, 0,
5010 0, -363, -363, -363, -363, -835, 451, -363, -363, -363,
5011 0, 0, 0, -835, -835, -835, 0, 0, 0, -835,
5012 -835, 0, -835, 0, 0, 0, 0, 0, 0, 0,
5013 -835, -835, 0, 0, 0, 0, 0, 0, 0, 0,
5014 0, 0, -835, -835, 0, -835, -835, -835, -835, -835,
5015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5016 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5017 0, 0, 0, -835, -835, 0, 0, 0, 0, 0,
5018 0, 0, 0, -835, -835, -835, -835, -835, -835, -835,
5019 -835, -835, -835, -835, -835, -835, 0, 0, 0, 0,
5020 -835, -835, -835, -835, 0, 827, -835, 0, 0, 0,
5021 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5022 0, 0, 0, 0, 0, -835, 0, 0, 0, 0,
5023 0, 0, 0, 0, 0, 0, 0, 0, 0, -146,
5024 -835, 0, -835, -835, -835, -835, -835, -835, -835, -835,
5025 -835, -835, 0, 0, 0, 0, -835, -835, -835, -835,
5026 -137, -835, 0, -835, 0, -835, 0, 0, 0, -835,
5027 -835, -835, 0, 0, 0, -835, -835, 0, -835, 0,
5028 0, 0, 0, 0, 0, 0, -835, -835, 0, 0,
5029 0, 0, 0, 0, 0, 0, 0, 0, -835, -835,
5030 0, -835, -835, -835, -835, -835, 0, 0, 0, 0,
5031 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5032 0, 0, 0, 0, 0, 0, 0, 0, 0, -835,
5033 -835, 0, 0, 0, 0, 0, 0, 0, 0, -835,
5034 -835, -835, -835, -835, -835, -835, -835, -835, -835, -835,
5035 -835, -835, 0, 0, 0, 0, -835, -835, -835, -835,
5036 0, 827, -835, 0, 0, 0, 0, 0, 0, 0,
5037 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5038 0, -835, 0, 0, 0, 0, 0, 0, 0, 0,
5039 0, 0, 0, 0, 0, -146, -835, 0, -835, -835,
5040 -835, -835, -835, -835, -835, -835, -835, -835, 0, 0,
5041 0, 0, -835, -835, -835, -835, -835, -356, 0, -835,
5042 0, -835, 0, 0, 0, -356, -356, -356, 0, 0,
5043 0, -356, -356, 0, -356, 0, 0, 0, 0, 0,
5044 0, 0, -356, 0, 0, 0, 0, 0, 0, 0,
5045 0, 0, 0, 0, -356, -356, 0, -356, -356, -356,
5046 -356, -356, 0, 0, 0, 0, 0, 0, 0, 0,
5047 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5048 0, 0, 0, 0, 0, -356, -356, 0, 0, 0,
5049 0, 0, 0, 0, 0, -356, -356, -356, -356, -356,
5050 -356, -356, -356, -356, -356, -356, -356, -356, 0, 0,
5051 0, 0, -356, -356, -356, -356, 0, 828, -356, 0,
5052 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5053 0, 0, 0, 0, 0, 0, 0, -356, 0, 0,
5054 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5055 0, -147, -356, 0, -356, -356, -356, -356, -356, -356,
5056 -356, -356, -356, -356, 0, 0, 0, 0, 829, -356,
5057 -356, -356, -138, -356, 0, -356, 0, -356, 0, 0,
5058 0, -356, -356, -356, 0, 0, 0, -356, -356, 0,
5059 -356, 0, 0, 0, 0, 0, 0, 0, -356, 0,
5060 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5061 -356, -356, 0, -356, -356, -356, -356, -356, 0, 0,
5062 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5064 0, -356, -356, 0, 0, 0, 0, 0, 0, 0,
5065 0, -356, -356, -356, -356, -356, -356, -356, -356, -356,
5066 -356, -356, -356, -356, 0, 0, 0, 0, -356, -356,
5067 -356, -356, 0, 828, -356, 0, 0, 0, 0, 0,
5068 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5069 0, 0, 0, -356, 0, 0, 0, 0, 0, 0,
5070 0, 0, 0, 0, 0, 0, 0, -147, -356, 0,
5071 -356, -356, -356, -356, -356, -356, -356, -356, -356, -356,
5072 0, 0, 0, 0, 829, -356, -356, -356, -356, 0,
5073 0, -356, 3, -356, 4, 5, 6, 7, 8, -853,
5074 -853, -853, 9, 10, 0, 0, -853, 11, 0, 12,
5075 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
5076 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5077 26, 0, 0, 0, 0, 0, 27, 28, 284, 30,
5078 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5079 40, 41, 42, 43, 44, 45, 46, 0, 0, -853,
5080 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5081 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5082 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5083 51, 0, 0, 52, 53, 54, 55, 0, 56, 0,
5084 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5087 0, 0, 0, 0, 0, 0, 0, 0, 66, 67,
5088 68, 0, 0, 0, 3, -853, 4, 5, 6, 7,
5089 8, -853, 0, -853, 9, 10, 0, -853, -853, 11,
5090 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5091 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
5092 0, 0, 26, 0, 0, 0, 0, 0, 27, 28,
5093 284, 30, 31, 32, 33, 34, 35, 36, 37, 38,
5094 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5095 0, -853, 0, 0, 0, 0, 0, 0, 0, 47,
5096 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5097 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5098 0, 0, 51, 0, 0, 52, 53, 54, 55, 0,
5099 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5100 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5103 66, 67, 68, 0, 0, 0, 3, -853, 4, 5,
5104 6, 7, 8, -853, 0, -853, 9, 10, 0, 0,
5105 -853, 11, -853, 12, 13, 14, 15, 16, 17, 18,
5106 0, 0, 0, 0, 0, 19, 20, 21, 22, 23,
5107 24, 25, 0, 0, 26, 0, 0, 0, 0, 0,
5108 27, 28, 284, 30, 31, 32, 33, 34, 35, 36,
5109 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
5110 46, 0, 0, -853, 0, 0, 0, 0, 0, 0,
5111 0, 47, 48, 0, 0, 0, 0, 0, 0, 0,
5112 0, 0, 0, 0, 0, 0, 49, 50, 0, 0,
5113 0, 0, 0, 0, 51, 0, 0, 52, 53, 54,
5114 55, 0, 56, 0, 0, 57, 58, 59, 60, 61,
5115 62, 63, 64, 65, 0, 0, 0, 0, 0, 0,
5116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5117 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5118 0, 0, 66, 67, 68, 0, 0, 0, 3, -853,
5119 4, 5, 6, 7, 8, -853, 0, -853, 9, 10,
5120 0, 0, -853, 11, 0, 12, 13, 14, 15, 16,
5121 17, 18, -853, 0, 0, 0, 0, 19, 20, 21,
5122 22, 23, 24, 25, 0, 0, 26, 0, 0, 0,
5123 0, 0, 27, 28, 284, 30, 31, 32, 33, 34,
5124 35, 36, 37, 38, 39, 0, 40, 41, 42, 43,
5125 44, 45, 46, 0, 0, -853, 0, 0, 0, 0,
5126 0, 0, 0, 47, 48, 0, 0, 0, 0, 0,
5127 0, 0, 0, 0, 0, 0, 0, 0, 49, 50,
5128 0, 0, 0, 0, 0, 0, 51, 0, 0, 52,
5129 53, 54, 55, 0, 56, 0, 0, 57, 58, 59,
5130 60, 61, 62, 63, 64, 65, 0, 0, 0, 0,
5131 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5132 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5133 0, 0, 0, 0, 66, 67, 68, 0, 0, 0,
5134 3, -853, 4, 5, 6, 7, 8, -853, 0, -853,
5135 9, 10, 0, 0, -853, 11, 0, 12, 13, 14,
5136 15, 16, 17, 18, 0, 0, 0, 0, 0, 19,
5137 20, 21, 22, 23, 24, 25, 0, 0, 26, 0,
5138 0, 0, 0, 0, 27, 28, 284, 30, 31, 32,
5139 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5140 42, 43, 44, 45, 46, 0, 0, -853, 0, 0,
5141 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5143 49, 50, 0, 0, 0, 0, 0, 0, 51, 0,
5144 0, 52, 53, 54, 55, 0, 56, 0, 0, 57,
5145 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5146 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5147 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5148 0, 0, 0, 0, 0, 0, 66, 67, 68, 0,
5149 0, 0, 3, -853, 4, 5, 6, 7, 8, -853,
5150 -853, -853, 9, 10, 0, 0, 0, 11, 0, 12,
5151 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
5152 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5153 26, 0, 0, 0, 0, 0, 27, 28, 284, 30,
5154 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5155 40, 41, 42, 43, 44, 45, 46, 0, 0, -853,
5156 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5157 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5158 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5159 51, 0, 0, 52, 53, 54, 55, 0, 56, 0,
5160 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5161 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5162 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5163 0, 0, 0, 0, 0, 0, 0, 0, 66, 67,
5164 68, 0, 0, 0, 3, -853, 4, 5, 6, 7,
5165 8, -853, 0, -853, 9, 10, 0, 0, 0, 11,
5166 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5167 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
5168 0, 0, 26, 0, 0, 0, 0, 0, 27, 28,
5169 284, 30, 31, 32, 33, 34, 35, 36, 37, 38,
5170 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5171 0, -853, 0, 0, 0, 0, 0, 0, 0, 47,
5172 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5173 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5174 0, 0, 51, 0, 0, 52, 53, 54, 55, 0,
5175 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5176 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5178 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5179 66, 67, 68, 0, 0, 0, 3, -853, 4, 5,
5180 6, 7, 8, -853, 0, 0, 9, 10, 0, 0,
5181 0, 11, 0, 12, 13, 14, 15, 16, 17, 18,
5182 0, 0, 0, 0, 0, 19, 20, 21, 22, 23,
5183 24, 25, 0, 0, 26, 0, 0, 0, 0, 0,
5184 27, 28, 284, 30, 31, 32, 33, 34, 35, 36,
5185 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
5186 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5187 0, 47, 48, 0, 0, 0, 0, 0, 0, 0,
5188 0, 0, 0, 0, 0, 0, 49, 50, 0, 0,
5189 0, 0, 0, 0, 51, 0, 0, 285, 53, 54,
5190 55, 0, 56, 0, 0, 57, 58, 59, 60, 61,
5191 62, 63, 64, 65, 0, 0, 0, 0, 0, 0,
5192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5193 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5194 0, 0, 66, 67, 68, 0, 0, 0, 0, -853,
5195 0, 0, 0, -853, 3, -853, 4, 5, 6, 7,
5196 8, 0, 0, 0, 9, 10, 0, 0, 0, 11,
5197 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5198 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
5199 0, 0, 26, 0, 0, 0, 0, 0, 27, 28,
5200 284, 30, 31, 32, 33, 34, 35, 36, 37, 38,
5201 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5202 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
5203 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5204 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5205 0, 0, 51, 0, 0, 52, 53, 54, 55, 0,
5206 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5207 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5209 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5210 66, 67, 68, 0, 0, 0, 0, -853, 0, 0,
5211 0, -853, 3, -853, 4, 5, 6, 7, 8, 0,
5212 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5213 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
5214 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5215 26, 0, 0, 0, 0, 0, 27, 28, 29, 30,
5216 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5217 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5218 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5220 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5221 51, 0, 0, 52, 53, 54, 55, 0, 56, 0,
5222 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5223 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5224 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5225 0, 0, 0, 0, 0, 0, 0, 0, 66, 67,
5226 68, 0, 0, -853, 3, -853, 4, 5, 6, 7,
5227 8, -853, 0, 0, 9, 10, 0, 0, 0, 11,
5228 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5229 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
5230 0, 0, 26, 0, 0, 0, 0, 0, 27, 28,
5231 284, 30, 31, 32, 33, 34, 35, 36, 37, 38,
5232 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5233 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
5234 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5235 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5236 0, 0, 51, 0, 0, 52, 53, 54, 55, 0,
5237 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5238 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5241 66, 67, 68, 0, 0, -853, 404, -853, 4, 5,
5242 6, 0, 8, -853, 0, 0, 9, 10, 0, 0,
5243 0, 11, -3, 12, 13, 14, 15, 16, 17, 18,
5244 0, 0, 0, 0, 0, 19, 20, 21, 22, 23,
5245 24, 25, 0, 0, 26, 0, 0, 0, 0, 0,
5246 0, 28, 0, 0, 31, 32, 33, 34, 35, 36,
5247 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
5248 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5249 0, 47, 48, 0, 0, 0, 0, 0, 0, 0,
5250 0, 0, 0, 0, 0, 0, 49, 50, 0, 0,
5251 0, 0, 0, 0, 229, 0, 0, 230, 53, 54,
5252 55, 0, 0, 0, 0, 57, 58, 59, 60, 61,
5253 62, 63, 64, 65, 0, 0, 0, 0, 0, 0,
5254 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5255 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5256 0, 0, 66, 67, 68, 0, 0, 0, 0, 331,
5257 0, 0, 0, 0, 0, 332, 144, 145, 146, 147,
5258 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
5259 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
5260 0, 0, 0, 168, 169, 170, 434, 435, 436, 437,
5261 175, 176, 177, 0, 0, 0, 0, 0, 178, 179,
5262 180, 181, 438, 439, 440, 441, 186, 36, 37, 442,
5263 39, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5264 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5265 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5266 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5267 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5268 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5269 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5271 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5272 0, 215, 216, 0, 0, 0, 0, 0, 0, 217,
5273 443, 144, 145, 146, 147, 148, 149, 150, 151, 152,
5274 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
5275 163, 164, 165, 166, 167, 0, 0, 0, 168, 169,
5276 170, 171, 172, 173, 174, 175, 176, 177, 0, 0,
5277 0, 0, 0, 178, 179, 180, 181, 182, 183, 184,
5278 185, 186, 36, 37, 187, 39, 0, 0, 0, 0,
5279 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5280 0, 0, 0, 0, 188, 189, 190, 191, 192, 193,
5281 194, 195, 196, 0, 0, 197, 198, 0, 0, 0,
5282 0, 199, 200, 201, 202, 0, 0, 0, 0, 0,
5283 0, 0, 0, 0, 0, 203, 204, 0, 0, 0,
5284 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5285 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5286 0, 0, 0, 0, 0, 205, 206, 207, 208, 209,
5287 210, 211, 212, 213, 214, 0, 215, 216, 0, 0,
5288 0, 0, 0, 0, 217, 144, 145, 146, 147, 148,
5289 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
5290 159, 160, 161, 162, 163, 164, 165, 166, 167, 0,
5291 0, 0, 168, 169, 170, 171, 172, 173, 174, 175,
5292 176, 177, 0, 0, 0, 0, 0, 178, 179, 180,
5293 181, 182, 183, 184, 185, 186, 262, 0, 187, 0,
5294 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5295 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
5296 190, 191, 192, 193, 194, 195, 196, 0, 0, 197,
5297 198, 0, 0, 0, 0, 199, 200, 201, 202, 0,
5298 0, 0, 0, 0, 0, 0, 0, 0, 0, 203,
5299 204, 0, 0, 58, 0, 0, 0, 0, 0, 0,
5300 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5301 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
5302 206, 207, 208, 209, 210, 211, 212, 213, 214, 0,
5303 215, 216, 0, 0, 0, 0, 0, 0, 217, 144,
5304 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
5305 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
5306 165, 166, 167, 0, 0, 0, 168, 169, 170, 171,
5307 172, 173, 174, 175, 176, 177, 0, 0, 0, 0,
5308 0, 178, 179, 180, 181, 182, 183, 184, 185, 186,
5309 0, 0, 187, 0, 0, 0, 0, 0, 0, 0,
5310 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5311 0, 0, 188, 189, 190, 191, 192, 193, 194, 195,
5312 196, 0, 0, 197, 198, 0, 0, 0, 0, 199,
5313 200, 201, 202, 0, 0, 0, 0, 0, 0, 0,
5314 0, 0, 0, 203, 204, 0, 0, 58, 0, 0,
5315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5316 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5317 0, 0, 0, 205, 206, 207, 208, 209, 210, 211,
5318 212, 213, 214, 0, 215, 216, 0, 0, 0, 0,
5319 0, 0, 217, 144, 145, 146, 147, 148, 149, 150,
5320 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
5321 161, 162, 163, 164, 165, 166, 167, 0, 0, 0,
5322 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
5323 0, 0, 0, 0, 0, 178, 179, 180, 181, 182,
5324 183, 184, 185, 186, 0, 0, 187, 0, 0, 0,
5325 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5326 0, 0, 0, 0, 0, 0, 188, 189, 190, 191,
5327 192, 193, 194, 195, 196, 0, 0, 197, 198, 0,
5328 0, 0, 0, 199, 200, 201, 202, 0, 0, 0,
5329 0, 0, 0, 0, 0, 0, 0, 203, 204, 0,
5330 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5332 0, 0, 0, 0, 0, 0, 0, 205, 206, 207,
5333 208, 209, 210, 211, 212, 213, 214, 0, 215, 216,
5334 4, 5, 6, 0, 8, 0, 217, 0, 9, 10,
5335 0, 0, 0, 11, 0, 12, 13, 14, 270, 271,
5336 17, 18, 0, 0, 0, 0, 0, 19, 20, 272,
5337 22, 23, 24, 25, 0, 0, 227, 0, 0, 0,
5338 0, 0, 0, 302, 0, 0, 31, 32, 33, 34,
5339 35, 36, 37, 38, 39, 0, 40, 41, 42, 43,
5340 44, 45, 46, 0, 0, 0, 0, 0, 0, 0,
5341 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5342 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5343 0, 0, 0, 0, 0, 0, 303, 0, 0, 230,
5344 53, 54, 55, 0, 0, 0, 0, 57, 58, 59,
5345 60, 61, 62, 63, 64, 65, 0, 0, 4, 5,
5346 6, 0, 8, 0, 0, 0, 9, 10, 0, 0,
5347 0, 11, 0, 12, 13, 14, 270, 271, 17, 18,
5348 0, 0, 0, 0, 304, 19, 20, 272, 22, 23,
5349 24, 25, 305, 0, 227, 0, 0, 0, 0, 0,
5350 0, 302, 0, 0, 31, 32, 33, 34, 35, 36,
5351 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
5352 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5353 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5354 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5355 0, 0, 0, 0, 303, 0, 0, 230, 53, 54,
5356 55, 0, 0, 0, 0, 57, 58, 59, 60, 61,
5357 62, 63, 64, 65, 0, 0, 4, 5, 6, 0,
5358 8, 0, 0, 0, 9, 10, 0, 0, 0, 11,
5359 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5360 0, 0, 304, 19, 20, 21, 22, 23, 24, 25,
5361 612, 0, 227, 0, 0, 0, 0, 0, 0, 28,
5362 0, 0, 31, 32, 33, 34, 35, 36, 37, 38,
5363 39, 228, 40, 41, 42, 43, 44, 45, 46, 0,
5364 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
5365 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5366 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5367 0, 0, 229, 0, 0, 230, 53, 54, 55, 0,
5368 231, 232, 233, 57, 58, 234, 60, 61, 62, 63,
5369 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5370 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5371 0, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5372 66, 235, 68, 9, 10, 0, 0, 259, 11, 0,
5373 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5374 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5375 0, 26, 0, 0, 0, 0, 0, 0, 28, 0,
5376 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5377 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5378 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5379 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5380 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5381 0, 229, 0, 0, 230, 53, 54, 55, 0, 0,
5382 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5383 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5384 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5385 0, 0, 3, 0, 4, 5, 6, 7, 8, 66,
5386 67, 68, 9, 10, 0, 0, 259, 11, 0, 12,
5387 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
5388 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5389 26, 0, 0, 0, 0, 0, 27, 28, 0, 30,
5390 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5391 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5392 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5394 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5395 51, 0, 0, 52, 53, 54, 55, 0, 56, 0,
5396 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5397 0, 0, 404, 0, 4, 5, 6, 0, 8, 0,
5398 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5399 13, 14, 15, 16, 17, 18, 0, 0, 66, 67,
5400 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5401 26, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5402 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5403 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5404 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5406 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5407 229, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5408 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5409 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5410 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5411 13, 14, 15, 16, 17, 18, 0, 0, 66, 67,
5412 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5413 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5414 31, 32, 33, 34, 35, 36, 37, 38, 39, 228,
5415 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5416 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5418 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5419 229, 0, 0, 230, 53, 54, 55, 0, 231, 232,
5420 233, 57, 58, 234, 60, 61, 62, 63, 64, 65,
5421 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5422 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5423 13, 14, 15, 16, 17, 18, 0, 0, 66, 235,
5424 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5425 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5426 31, 32, 33, 34, 35, 36, 37, 38, 39, 228,
5427 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5428 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5430 0, 0, 49, 479, 0, 0, 0, 0, 0, 0,
5431 229, 0, 0, 230, 53, 54, 55, 0, 231, 232,
5432 233, 57, 58, 234, 60, 61, 62, 63, 64, 65,
5433 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5434 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5435 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5436 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5437 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5438 31, 32, 33, 34, 35, 36, 37, 38, 39, 228,
5439 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5440 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5442 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5443 229, 0, 0, 230, 53, 54, 55, 0, 231, 232,
5444 233, 57, 58, 234, 60, 61, 62, 63, 64, 65,
5445 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5446 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5447 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5448 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5449 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5450 31, 32, 33, 34, 35, 36, 37, 38, 39, 228,
5451 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5452 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5454 0, 0, 49, 479, 0, 0, 0, 0, 0, 0,
5455 229, 0, 0, 230, 53, 54, 55, 0, 231, 232,
5456 233, 57, 58, 234, 60, 61, 62, 63, 64, 65,
5457 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5458 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5459 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5460 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5461 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5462 31, 32, 33, 34, 35, 36, 37, 38, 39, 228,
5463 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5464 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5466 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5467 229, 0, 0, 230, 53, 54, 55, 0, 231, 232,
5468 0, 57, 58, 234, 60, 61, 62, 63, 64, 65,
5469 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5470 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5471 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5472 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5473 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5474 31, 32, 33, 34, 35, 36, 37, 38, 39, 228,
5475 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5476 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5477 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5478 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5479 229, 0, 0, 230, 53, 54, 55, 0, 0, 232,
5480 233, 57, 58, 234, 60, 61, 62, 63, 64, 65,
5481 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5482 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5483 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5484 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5485 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5486 31, 32, 33, 34, 35, 36, 37, 38, 39, 228,
5487 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5488 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5489 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5490 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5491 229, 0, 0, 230, 53, 54, 55, 0, 0, 232,
5492 0, 57, 58, 234, 60, 61, 62, 63, 64, 65,
5493 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5494 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5495 13, 14, 15, 16, 17, 18, 0, 0, 66, 235,
5496 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5497 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5498 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5499 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5500 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5501 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5502 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5503 229, 0, 0, 230, 53, 54, 55, 0, 802, 0,
5504 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5505 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5506 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5507 13, 14, 15, 16, 17, 18, 0, 0, 66, 235,
5508 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5509 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5510 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5511 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5512 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5513 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5514 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5515 813, 0, 0, 230, 53, 54, 55, 0, 802, 0,
5516 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5517 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5518 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5519 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5520 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5521 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5522 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5523 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5524 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5525 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5526 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5527 229, 0, 0, 230, 53, 54, 55, 0, 973, 0,
5528 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5529 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5530 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5531 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5532 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5533 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5534 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5535 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5536 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5537 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5538 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5539 229, 0, 0, 230, 53, 54, 55, 0, 1022, 0,
5540 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5541 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5542 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5543 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5544 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5545 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5546 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5547 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5548 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5549 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5550 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5551 229, 0, 0, 230, 53, 54, 55, 0, 802, 0,
5552 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5553 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5554 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5555 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5556 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5557 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5558 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5559 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5560 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5561 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5562 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5563 229, 0, 0, 230, 53, 54, 55, 0, 1155, 0,
5564 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5565 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5566 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5567 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5568 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5569 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5570 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5571 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5572 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5574 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5575 229, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5576 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5577 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5578 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5579 13, 14, 15, 16, 17, 18, 0, 0, 66, 235,
5580 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5581 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5582 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5583 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5584 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5586 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5587 229, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5588 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5589 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5590 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5591 13, 14, 15, 16, 17, 18, 0, 0, 66, 235,
5592 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5593 26, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5594 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5595 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5596 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5597 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5598 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5599 229, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5600 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5601 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5602 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5603 13, 14, 15, 16, 17, 18, 0, 0, 66, 67,
5604 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5605 784, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5606 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5607 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5608 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5609 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5610 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5611 229, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5612 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5613 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5614 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5615 13, 14, 15, 16, 17, 18, 0, 0, 66, 235,
5616 68, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5617 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5618 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5619 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5620 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5621 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5622 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5623 813, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5624 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5625 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5626 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5627 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5628 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5629 893, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5630 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5631 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5632 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5633 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5634 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5635 229, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5636 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5637 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5638 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5639 13, 14, 270, 271, 17, 18, 0, 0, 66, 235,
5640 68, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5641 227, 0, 0, 0, 0, 0, 0, 302, 0, 0,
5642 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5643 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5644 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5646 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5647 303, 0, 0, 363, 53, 54, 55, 0, 364, 0,
5648 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5649 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5650 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5651 270, 271, 17, 18, 0, 0, 0, 0, 304, 19,
5652 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5653 0, 0, 0, 0, 0, 302, 0, 0, 31, 32,
5654 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5655 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5656 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5657 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5658 0, 0, 0, 0, 0, 0, 0, 0, 415, 0,
5659 0, 52, 53, 54, 55, 0, 56, 0, 0, 57,
5660 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5661 4, 5, 6, 0, 8, 0, 0, 0, 9, 10,
5662 0, 0, 0, 11, 0, 12, 13, 14, 270, 271,
5663 17, 18, 0, 0, 0, 0, 304, 19, 20, 272,
5664 22, 23, 24, 25, 0, 0, 227, 0, 0, 0,
5665 0, 0, 0, 302, 0, 0, 31, 32, 33, 423,
5666 35, 36, 37, 424, 39, 0, 40, 41, 42, 43,
5667 44, 45, 46, 0, 0, 0, 0, 0, 0, 0,
5668 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5669 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5670 0, 0, 425, 0, 0, 0, 426, 0, 0, 230,
5671 53, 54, 55, 0, 0, 0, 0, 57, 58, 59,
5672 60, 61, 62, 63, 64, 65, 0, 0, 4, 5,
5673 6, 0, 8, 0, 0, 0, 9, 10, 0, 0,
5674 0, 11, 0, 12, 13, 14, 270, 271, 17, 18,
5675 0, 0, 0, 0, 304, 19, 20, 272, 22, 23,
5676 24, 25, 0, 0, 227, 0, 0, 0, 0, 0,
5677 0, 302, 0, 0, 31, 32, 33, 423, 35, 36,
5678 37, 424, 39, 0, 40, 41, 42, 43, 44, 45,
5679 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5680 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5681 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5682 0, 0, 0, 0, 426, 0, 0, 230, 53, 54,
5683 55, 0, 0, 0, 0, 57, 58, 59, 60, 61,
5684 62, 63, 64, 65, 0, 0, 4, 5, 6, 0,
5685 8, 0, 0, 0, 9, 10, 0, 0, 0, 11,
5686 0, 12, 13, 14, 270, 271, 17, 18, 0, 0,
5687 0, 0, 304, 19, 20, 272, 22, 23, 24, 25,
5688 0, 0, 227, 0, 0, 0, 0, 0, 0, 302,
5689 0, 0, 31, 32, 33, 34, 35, 36, 37, 38,
5690 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5691 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5692 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5693 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5694 0, 0, 303, 0, 0, 363, 53, 54, 55, 0,
5695 0, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5696 64, 65, 0, 0, 4, 5, 6, 0, 8, 0,
5697 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5698 13, 14, 270, 271, 17, 18, 0, 0, 0, 0,
5699 304, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5700 227, 0, 0, 0, 0, 0, 0, 302, 0, 0,
5701 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5702 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5703 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5704 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5706 1223, 0, 0, 230, 53, 54, 55, 0, 0, 0,
5707 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5708 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5709 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5710 270, 271, 17, 18, 0, 0, 0, 0, 304, 19,
5711 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5712 0, 0, 0, 0, 0, 302, 0, 0, 31, 32,
5713 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5714 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5716 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5717 0, 0, 0, 0, 0, 704, 643, 0, 1343, 705,
5718 0, 230, 53, 54, 55, 0, 0, 0, 0, 57,
5719 58, 59, 60, 61, 62, 63, 64, 65, 0, 188,
5720 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5721 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5722 0, 0, 0, 0, 0, 0, 304, 0, 0, 0,
5723 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5724 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5725 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5726 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5727 0, 215, 216, 707, 651, 0, 0, 708, 0, 217,
5728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5729 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5730 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5731 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5732 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5733 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5734 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5735 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5736 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5737 216, 704, 643, 0, 0, 724, 0, 217, 0, 0,
5738 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5739 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5740 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5741 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5742 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5743 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5744 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5745 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5746 209, 210, 211, 212, 213, 214, 0, 215, 216, 735,
5747 643, 0, 0, 736, 0, 217, 0, 0, 0, 0,
5748 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5749 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5750 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5751 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5752 0, 0, 0, 0, 203, 204, 0, 0, 0, 0,
5753 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5754 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5755 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5756 211, 212, 213, 214, 0, 215, 216, 738, 651, 0,
5757 0, 739, 0, 217, 0, 0, 0, 0, 0, 0,
5758 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5759 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5760 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5761 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5762 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
5763 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5765 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5766 213, 214, 0, 215, 216, 857, 643, 0, 0, 858,
5767 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
5768 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5769 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5770 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5771 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5772 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5773 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5774 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5775 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5776 0, 215, 216, 860, 651, 0, 0, 861, 0, 217,
5777 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5778 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5779 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5780 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5781 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5782 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5783 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5784 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5785 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5786 216, 866, 643, 0, 0, 867, 0, 217, 0, 0,
5787 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5788 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5789 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5790 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5791 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5792 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5793 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5794 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5795 209, 210, 211, 212, 213, 214, 0, 215, 216, 689,
5796 651, 0, 0, 690, 0, 217, 0, 0, 0, 0,
5797 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5798 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5799 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5800 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5801 0, 0, 0, 0, 203, 204, 0, 0, 0, 0,
5802 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5803 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5804 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5805 211, 212, 213, 214, 0, 215, 216, 1028, 643, 0,
5806 0, 1029, 0, 217, 0, 0, 0, 0, 0, 0,
5807 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5808 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5809 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5810 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5811 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
5812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5813 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5814 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5815 213, 214, 0, 215, 216, 1031, 651, 0, 0, 1032,
5816 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
5817 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5818 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5819 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5820 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5821 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5822 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5823 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5824 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5825 0, 215, 216, 1362, 643, 0, 0, 1363, 0, 217,
5826 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5827 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5828 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5829 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5830 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5831 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5832 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5833 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5834 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5835 216, 1365, 651, 0, 0, 1366, 0, 217, 0, 0,
5836 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5837 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5838 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5839 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5840 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5841 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5842 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5843 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5844 209, 210, 211, 212, 213, 214, 0, 215, 216, 1419,
5845 643, 0, 0, 1420, 0, 217, 0, 0, 0, 0,
5846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5847 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5848 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5849 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5850 0, 0, 0, 0, 203, 204, 0, 0, 0, 0,
5851 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5853 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5854 211, 212, 213, 214, 0, 215, 216, 0, 0, 0,
5858static const yytype_int16 yycheck[] =
5860 1, 70, 26, 59, 28, 52, 53, 15, 16, 58,
5861 7, 101, 1, 56, 408, 290, 107, 58, 70, 116,
5862 27, 15, 16, 13, 14, 115, 774, 89, 426, 845,
5863 27, 768, 766, 15, 16, 766, 344, 15, 16, 1070,
5864 400, 349, 7, 469, 601, 571, 89, 575, 255, 575,
5865 252, 52, 53, 54, 55, 107, 84, 30, 601, 81,
5866 104, 58, 27, 107, 477, 108, 109, 110, 599, 615,
5867 111, 602, 54, 693, 694, 21, 54, 55, 63, 64,
5868 65, 855, 15, 16, 67, 113, 512, 296, 1105, 56,
5869 605, 300, 52, 774, 630, 525, 911, 25, 1196, 13,
5870 913, 469, 515, 825, 112, 29, 27, 727, 1034, 477,
5871 1317, 66, 1210, 473, 111, 1220, 1221, 26, 112, 399,
5872 25, 401, 285, 58, 1000, 154, 155, 25, 766, 66,
5873 112, 344, 34, 10, 112, 101, 349, 25, 84, 589,
5874 103, 104, 69, 78, 107, 595, 1335, 100, 949, 0,
5875 52, 682, 52, 25, 66, 26, 56, 247, 15, 13,
5876 13, 81, 98, 1033, 1034, 134, 723, 527, 25, 25,
5877 0, 98, 134, 108, 109, 455, 451, 100, 234, 112,
5878 25, 134, 612, 230, 121, 122, 13, 277, 157, 155,
5879 1066, 68, 472, 155, 474, 1402, 287, 100, 34, 123,
5880 363, 320, 321, 1220, 1221, 480, 141, 119, 483, 121,
5881 122, 134, 25, 488, 101, 1246, 52, 153, 287, 13,
5882 310, 157, 502, 1254, 161, 1256, 1415, 155, 831, 230,
5883 505, 134, 1158, 154, 157, 287, 839, 13, 285, 160,
5884 154, 155, 151, 305, 245, 1350, 160, 255, 528, 257,
5885 155, 252, 274, 13, 255, 977, 1354, 155, 1059, 1007,
5886 1, 255, 305, 257, 66, 266, 151, 155, 155, 1084,
5887 1083, 295, 296, 255, 1011, 257, 300, 266, 302, 257,
5888 151, 679, 484, 155, 285, 307, 157, 713, 1158, 336,
5889 120, 264, 13, 337, 338, 339, 340, 260, 261, 155,
5890 154, 154, 715, 1104, 157, 1106, 160, 160, 583, 669,
5891 155, 52, 53, 13, 829, 56, 363, 119, 854, 1000,
5892 680, 364, 413, 25, 257, 285, 272, 154, 418, 275,
5893 157, 951, 952, 160, 865, 336, 611, 957, 958, 100,
5894 1196, 1157, 155, 1213, 157, 713, 335, 715, 89, 304,
5895 1220, 1221, 1383, 273, 274, 565, 1212, 154, 66, 609,
5896 154, 413, 363, 410, 411, 409, 160, 108, 109, 110,
5897 111, 56, 929, 134, 337, 338, 339, 340, 154, 342,
5898 343, 425, 812, 1157, 160, 1066, 929, 101, 361, 917,
5899 670, 917, 400, 366, 154, 1033, 1034, 364, 161, 400,
5900 160, 681, 403, 363, 401, 706, 400, 657, 834, 410,
5901 411, 119, 687, 663, 664, 961, 13, 1218, 1219, 37,
5902 38, 1041, 541, 1171, 543, 28, 13, 428, 1033, 1034,
5903 100, 1168, 1166, 154, 100, 1166, 737, 1101, 1102, 160,
5904 154, 100, 999, 451, 66, 67, 409, 25, 52, 34,
5905 134, 982, 56, 155, 154, 157, 402, 451, 455, 615,
5906 160, 100, 425, 525, 134, 473, 834, 52, 134, 451,
5907 920, 921, 473, 451, 924, 134, 926, 474, 928, 473,
5908 1350, 482, 525, 484, 759, 458, 459, 494, 69, 230,
5909 1171, 469, 1348, 100, 467, 134, 1352, 494, 1354, 121,
5910 122, 703, 475, 476, 66, 502, 713, 154, 109, 455,
5911 25, 158, 938, 69, 37, 38, 97, 98, 451, 527,
5912 1158, 794, 495, 732, 797, 266, 527, 134, 1166, 494,
5913 503, 528, 155, 527, 512, 134, 154, 693, 694, 789,
5914 141, 97, 98, 793, 285, 755, 756, 25, 600, 66,
5915 612, 1215, 1216, 1158, 100, 768, 134, 154, 859, 121,
5916 122, 774, 124, 160, 305, 554, 1422, 154, 869, 612,
5917 112, 727, 153, 160, 1322, 1213, 154, 155, 1000, 157,
5918 158, 975, 1220, 1221, 997, 1401, 946, 100, 134, 1326,
5919 598, 100, 1340, 601, 335, 336, 871, 153, 599, 1333,
5920 155, 602, 119, 853, 121, 122, 856, 631, 25, 155,
5921 662, 100, 659, 69, 661, 890, 157, 892, 646, 134,
5922 870, 134, 363, 364, 648, 744, 654, 610, 610, 997,
5923 749, 56, 615, 615, 909, 1085, 1086, 1087, 1088, 154,
5924 155, 97, 98, 158, 1066, 134, 154, 134, 649, 69,
5925 1033, 1034, 160, 654, 154, 155, 134, 1188, 659, 1053,
5926 661, 669, 403, 1411, 692, 945, 155, 947, 669, 410,
5927 411, 733, 680, 670, 101, 669, 154, 155, 98, 680,
5928 158, 682, 706, 656, 681, 100, 680, 155, 695, 891,
5929 733, 692, 1000, 742, 152, 1333, 154, 153, 695, 26,
5930 646, 911, 703, 913, 69, 1103, 78, 69, 732, 100,
5931 693, 694, 1350, 737, 100, 100, 69, 134, 968, 134,
5932 683, 971, 1105, 696, 154, 726, 154, 157, 978, 1030,
5933 695, 159, 822, 98, 984, 713, 98, 154, 155, 1122,
5934 155, 158, 69, 134, 727, 98, 1168, 155, 134, 1171,
5935 812, 1173, 69, 1147, 83, 84, 719, 26, 1066, 744,
5936 784, 746, 26, 69, 749, 750, 78, 508, 69, 812,
5937 97, 98, 144, 145, 146, 1158, 768, 874, 344, 725,
5938 97, 98, 774, 349, 525, 603, 69, 1000, 1319, 607,
5939 157, 97, 98, 1000, 69, 951, 952, 98, 1011, 157,
5940 69, 957, 958, 1253, 1105, 69, 157, 100, 137, 138,
5941 1193, 863, 1062, 554, 97, 98, 158, 69, 862, 1217,
5942 864, 69, 97, 98, 151, 134, 153, 1210, 97, 98,
5943 157, 872, 152, 97, 98, 859, 153, 1220, 1221, 69,
5944 841, 134, 843, 1237, 845, 869, 98, 153, 69, 97,
5945 98, 157, 69, 1066, 827, 828, 834, 69, 599, 1066,
5946 159, 602, 835, 836, 865, 157, 1184, 69, 98, 893,
5947 1026, 612, 56, 1083, 1084, 872, 97, 98, 153, 69,
5948 97, 98, 151, 58, 153, 1041, 98, 151, 157, 153,
5949 891, 100, 155, 157, 1195, 97, 98, 1198, 69, 862,
5950 1322, 864, 1324, 78, 1326, 153, 1328, 97, 98, 899,
5951 161, 69, 885, 886, 69, 888, 889, 1218, 659, 966,
5952 661, 929, 78, 967, 69, 134, 97, 98, 69, 981,
5953 1348, 983, 153, 108, 1352, 66, 153, 112, 946, 97,
5954 98, 682, 97, 98, 1219, 946, 155, 1307, 14, 15,
5955 947, 153, 946, 98, 1001, 1168, 97, 98, 1171, 155,
5956 961, 1168, 54, 153, 1171, 966, 1173, 1210, 951, 952,
5957 943, 1184, 64, 65, 957, 958, 106, 1220, 1221, 961,
5958 134, 982, 153, 956, 15, 1407, 17, 134, 119, 1239,
5959 121, 122, 733, 124, 934, 153, 936, 1272, 153, 100,
5960 1001, 1302, 1303, 1304, 967, 134, 1030, 1282, 1000, 160,
5961 100, 1058, 153, 89, 90, 1333, 56, 1335, 25, 1011,
5962 993, 78, 1340, 138, 1299, 1300, 1301, 1345, 1308, 155,
5963 1020, 1021, 155, 134, 158, 1024, 1025, 134, 95, 96,
5964 40, 41, 152, 1026, 134, 1079, 1080, 1048, 52, 1050,
5965 54, 55, 1108, 57, 155, 66, 134, 1058, 1041, 155,
5966 1109, 154, 155, 1364, 158, 155, 1067, 155, 100, 1070,
5967 152, 812, 1073, 52, 1066, 66, 78, 13, 1079, 1080,
5968 155, 1105, 1106, 155, 141, 142, 143, 144, 145, 146,
5969 1091, 1092, 66, 1411, 155, 1413, 134, 1415, 102, 1417,
5970 306, 307, 134, 1146, 155, 155, 1153, 1154, 119, 66,
5971 121, 122, 1159, 1326, 155, 1322, 152, 1324, 1436, 1326,
5972 155, 1328, 1335, 155, 865, 17, 1376, 1340, 119, 762,
5973 121, 122, 25, 766, 155, 1225, 155, 1161, 1185, 1230,
5974 142, 143, 144, 145, 146, 119, 134, 121, 122, 1150,
5975 124, 152, 1153, 1154, 44, 78, 1157, 44, 1159, 55,
5976 155, 1230, 119, 1207, 121, 122, 40, 41, 42, 43,
5977 44, 1195, 95, 96, 1198, 155, 1168, 44, 1230, 1171,
5978 56, 44, 1229, 134, 1185, 8, 52, 1188, 54, 55,
5979 56, 57, 1184, 136, 1218, 159, 15, 1244, 52, 155,
5980 1407, 155, 1415, 155, 101, 155, 52, 155, 54, 55,
5981 56, 57, 58, 155, 1248, 1249, 1250, 1251, 1252, 142,
5982 143, 144, 145, 146, 1267, 966, 152, 155, 1229, 1202,
5983 155, 1232, 78, 1289, 155, 9, 102, 155, 155, 139,
5984 1264, 982, 155, 1244, 1207, 1246, 92, 1248, 1249, 1250,
5985 1251, 1252, 155, 1254, 155, 1256, 102, 693, 694, 1260,
5986 1001, 107, 108, 109, 155, 1266, 52, 1268, 139, 155,
5987 1314, 1315, 155, 709, 710, 155, 930, 931, 1302, 1303,
5988 1304, 52, 152, 1024, 1025, 939, 101, 56, 942, 158,
5989 944, 727, 1033, 1034, 155, 141, 1339, 155, 144, 1307,
5990 52, 160, 54, 55, 56, 57, 1307, 155, 1309, 56,
5991 1311, 1308, 155, 1307, 155, 155, 155, 1058, 1319, 155,
5992 54, 55, 1369, 57, 52, 155, 54, 55, 56, 57,
5993 64, 65, 228, 155, 1326, 231, 232, 233, 155, 155,
5994 1364, 152, 139, 1335, 1378, 1379, 1380, 1381, 1340, 1373,
5995 102, 1314, 1315, 155, 52, 107, 54, 55, 56, 57,
5996 1101, 1102, 155, 155, 1105, 155, 155, 1000, 1369, 157,
5997 155, 155, 1396, 59, 60, 61, 62, 1378, 1379, 1380,
5998 1381, 1122, 1383, 72, 157, 1386, 1387, 266, 1, 1390,
5999 1391, 335, 504, 1394, 1428, 1150, 872, 508, 78, 106,
6000 1401, 110, 15, 16, 108, 1146, 1, 610, 98, 1150,
6001 495, 692, 1153, 1154, 962, 95, 96, 1158, 1159, 755,
6002 15, 16, 1266, 1415, 1268, 1232, 911, 1428, 1429, 1430,
6003 1431, 1432, 981, 1066, 1265, 1184, 1333, 1092, 1439, 52,
6004 53, 1340, 1264, 56, 1185, 1402, 882, 1188, 359, 875,
6005 1401, 1286, 1193, 1209, 67, 1196, 1213, 52, 53, 139,
6006 140, 141, 142, 143, 144, 145, 146, 1213, 1309, 1210,
6007 119, 1212, 67, 1311, 1215, 1216, 89, 111, 543, 1220,
6008 1221, 349, 1066, 115, -1, 1396, -1, -1, 1229, -1,
6009 103, 104, -1, -1, 107, 108, 109, 110, -1, 112,
6010 -1, -1, -1, 1244, -1, -1, -1, -1, 103, 104,
6011 -1, -1, 107, -1, -1, 951, 952, 112, -1, -1,
6012 -1, 957, 958, -1, -1, -1, 1267, -1, -1, 1162,
6013 -1, -1, -1, 1166, -1, 1168, -1, -1, 1171, -1,
6014 1173, -1, 1386, 1387, -1, 1286, 1390, 1391, -1, -1,
6015 1394, 1184, -1, -1, -1, 991, 992, -1, 994, 995,
6016 -1, -1, -1, -1, -1, 52, -1, 54, 55, 56,
6017 57, 58, 468, 469, -1, -1, -1, 768, 1319, -1,
6018 -1, 477, -1, -1, -1, 1429, 1430, 1431, 1432, 780,
6019 -1, 78, -1, -1, -1, 1439, -1, -1, 1339, -1,
6020 -1, -1, -1, -1, -1, 1041, -1, 1348, -1, -1,
6021 -1, 1352, -1, 1354, -1, 102, 512, 230, 1000, 515,
6022 107, 108, 109, -1, -1, -1, -1, -1, 1369, 1065,
6023 -1, -1, -1, -1, -1, 230, -1, -1, -1, -1,
6024 -1, -1, 255, -1, 257, -1, -1, 260, 261, -1,
6025 -1, -1, -1, 266, 141, -1, -1, 144, -1, -1,
6026 255, -1, 257, -1, -1, 260, 261, -1, -1, -1,
6027 -1, 266, 285, -1, -1, -1, -1, -1, -1, -1,
6028 -1, 1422, -1, -1, 1066, -1, -1, -1, -1, 1322,
6029 285, 1324, 305, 1326, 590, 1328, -1, -1, -1, -1,
6030 1333, -1, 1335, -1, -1, -1, -1, 1340, -1, -1,
6031 -1, -1, 1345, -1, 610, -1, -1, -1, -1, 615,
6032 -1, -1, 335, 336, 337, 338, 339, 340, -1, 342,
6033 343, -1, -1, -1, -1, -1, -1, -1, 1033, 1034,
6034 335, 336, 337, 338, 339, 340, -1, 342, 343, -1,
6035 363, 364, -1, -1, -1, -1, -1, -1, -1, -1,
6036 -1, -1, -1, -1, -1, -1, -1, -1, 363, -1,
6037 -1, -1, -1, -1, 1407, -1, -1, -1, 1411, -1,
6038 1413, -1, 1415, -1, 1417, -1, 1168, 400, -1, 1171,
6039 403, 1173, -1, -1, -1, -1, 409, 410, 411, -1,
6040 -1, 697, 1184, 1436, -1, 400, 1101, 1102, 403, 1000,
6041 1105, -1, 425, -1, 409, 410, 411, 713, 1009, 715,
6042 1011, -1, 1013, -1, -1, -1, -1, 1122, -1, 52,
6043 425, 54, 55, 56, 57, 58, -1, -1, 451, -1,
6044 -1, -1, -1, -1, -1, -1, -1, 52, -1, 54,
6045 55, 56, 57, 58, -1, 78, 451, -1, -1, -1,
6046 473, -1, -1, 1158, -1, -1, -1, -1, -1, 92,
6047 -1, -1, -1, 78, -1, 1066, -1, 773, 473, 102,
6048 -1, -1, -1, -1, -1, 108, 109, 92, -1, -1,
6049 -1, -1, -1, -1, -1, 508, -1, 102, 1193, -1,
6050 -1, 1196, 107, 108, 109, 52, 802, 54, 55, 56,
6051 57, 58, 525, 508, 527, 1210, -1, 1212, 141, -1,
6052 1215, 1216, -1, -1, -1, 1220, 1221, -1, -1, -1,
6053 -1, 78, 527, -1, -1, -1, 141, -1, 834, 144,
6054 1322, 554, 1324, -1, 1326, -1, 1328, -1, -1, -1,
6055 -1, -1, 157, 1335, -1, 102, 852, -1, 1340, 554,
6056 -1, 108, 109, 1345, -1, -1, -1, -1, -1, -1,
6057 -1, -1, -1, -1, -1, -1, -1, 1168, -1, -1,
6058 -1, -1, 1173, -1, -1, 598, 599, -1, 601, 602,
6059 1181, 1286, -1, 1184, 141, -1, -1, 610, -1, 612,
6060 -1, -1, 615, 598, 599, -1, 601, 602, -1, -1,
6061 -1, -1, -1, -1, -1, 610, -1, -1, -1, -1,
6062 615, 1033, 1034, -1, -1, 1407, -1, -1, -1, 1411,
6063 -1, 1413, -1, 1415, -1, 1417, -1, -1, -1, -1,
6064 -1, -1, 938, -1, -1, -1, 659, -1, 661, -1,
6065 -1, -1, -1, 1348, 1436, -1, 669, 1352, -1, 1354,
6066 -1, -1, -1, -1, 659, 961, 661, 680, -1, 682,
6067 683, -1, -1, -1, 669, -1, -1, 973, -1, -1,
6068 693, 694, -1, -1, -1, 680, -1, 682, 683, 1101,
6069 1102, -1, -1, 1105, -1, -1, -1, -1, 693, 694,
6070 -1, 997, 1033, 1034, -1, -1, 719, -1, -1, -1,
6071 1122, -1, -1, -1, 727, -1, -1, 1033, 1034, -1,
6072 733, -1, -1, -1, 719, -1, 1022, 1422, -1, -1,
6073 -1, -1, 727, 1324, -1, 1326, -1, 1328, -1, -1,
6074 -1, -1, -1, -1, 1335, -1, 1158, -1, -1, -1,
6075 -1, -1, -1, -1, 1345, -1, -1, -1, -1, -1,
6076 -1, 1057, -1, -1, -1, -1, -1, -1, -1, -1,
6077 1101, 1102, -1, -1, 1105, -1, -1, -1, -1, -1,
6078 -1, 1193, -1, -1, 1196, 1101, 1102, -1, -1, 1105,
6079 -1, 1122, -1, -1, -1, -1, -1, -1, 1210, 812,
6080 1212, -1, -1, 1215, 1216, -1, 1122, -1, 1220, 1221,
6081 -1, -1, -1, -1, -1, -1, 1407, -1, -1, -1,
6082 -1, -1, 1413, -1, 1415, -1, 1417, 1158, -1, -1,
6083 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6084 -1, -1, 1158, -1, -1, 1436, -1, -1, -1, 862,
6085 -1, 864, 865, -1, -1, -1, -1, -1, -1, 1155,
6086 -1, -1, 1193, -1, -1, 1196, -1, 862, -1, 864,
6087 865, -1, -1, -1, 1286, -1, -1, 1193, -1, 1210,
6088 1196, 1212, -1, -1, 1215, 1216, -1, -1, -1, 1220,
6089 1221, -1, -1, -1, 1210, -1, 1212, -1, -1, 1215,
6090 1216, -1, -1, -1, 1220, 1221, -1, -1, -1, -1,
6091 -1, -1, -1, -1, -1, -1, 929, -1, -1, -1,
6092 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6093 -1, -1, -1, 946, 929, -1, 1348, -1, 951, 952,
6094 1352, -1, 1354, -1, 957, 958, -1, -1, -1, -1,
6095 -1, 946, -1, 966, 967, 1286, 951, 952, -1, -1,
6096 -1, -1, 957, 958, -1, 1033, 1034, -1, -1, 982,
6097 1286, 966, 967, -1, -1, -1, -1, -1, -1, -1,
6098 -1, -1, -1, -1, -1, -1, -1, 982, 1001, -1,
6099 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6100 -1, 1, -1, -1, -1, -1, 1001, -1, -1, -1,
6101 1422, 1024, 1025, 1026, -1, 15, 16, 1348, -1, -1,
6102 -1, 1352, -1, 1354, -1, -1, -1, -1, 1041, 1024,
6103 1025, 1026, 1348, 1101, 1102, -1, 1352, 1105, 1354, -1,
6104 -1, -1, -1, -1, -1, 1058, 1041, -1, -1, -1,
6105 -1, -1, 52, 53, 1122, -1, -1, -1, -1, -1,
6106 -1, -1, -1, 1058, -1, -1, -1, 67, -1, -1,
6107 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6108 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6109 1158, 1422, -1, -1, -1, -1, -1, -1, -1, -1,
6110 -1, -1, -1, 103, 104, -1, 1422, 107, -1, -1,
6111 -1, -1, 112, -1, -1, -1, 1033, 1034, -1, -1,
6112 -1, -1, -1, -1, -1, 1193, -1, -1, 1196, -1,
6113 -1, -1, -1, 1146, -1, -1, -1, 1150, -1, -1,
6114 1153, 1154, 1210, -1, 1212, -1, 1159, 1215, 1216, -1,
6115 -1, -1, 1220, 1221, -1, 1150, -1, -1, 1153, 1154,
6116 -1, -1, -1, -1, 1159, -1, -1, -1, -1, -1,
6117 -1, -1, 1185, -1, -1, 1188, -1, -1, -1, -1,
6118 -1, -1, -1, -1, 1101, 1102, -1, -1, 1105, -1,
6119 1185, -1, -1, 1188, 1207, -1, -1, -1, -1, -1,
6120 -1, -1, -1, -1, -1, 1122, -1, -1, -1, -1,
6121 -1, -1, 1207, -1, -1, -1, 1229, -1, 1286, -1,
6122 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6123 230, 1244, -1, -1, 1229, -1, -1, -1, -1, -1,
6124 -1, 1158, -1, -1, -1, -1, -1, -1, -1, 1244,
6125 -1, -1, -1, -1, 1267, 255, -1, 257, -1, -1,
6126 260, 261, -1, -1, -1, -1, 266, -1, -1, -1,
6127 -1, -1, -1, -1, -1, -1, 1193, -1, -1, 1196,
6128 1348, -1, -1, -1, 1352, 285, 1354, -1, -1, -1,
6129 -1, -1, -1, 1210, 1307, 1212, -1, -1, 1215, 1216,
6130 -1, 1314, 1315, 1220, 1221, -1, 1319, -1, 1033, 1034,
6131 -1, -1, 1307, 1, -1, 1033, 1034, -1, -1, 1314,
6132 1315, -1, -1, -1, 1319, -1, 1339, 15, 16, -1,
6133 -1, -1, -1, -1, -1, 335, 336, 337, 338, 339,
6134 340, -1, 342, 343, -1, -1, -1, -1, -1, -1,
6135 -1, -1, -1, -1, 1422, -1, 1369, -1, 1033, 1034,
6136 -1, -1, -1, 363, 52, 53, -1, -1, -1, 1286,
6137 -1, -1, -1, -1, 1369, -1, 1101, 1102, -1, 67,
6138 1105, -1, -1, 1101, 1102, -1, -1, 1105, -1, -1,
6139 -1, -1, -1, -1, -1, -1, -1, 1122, -1, -1,
6140 400, -1, -1, 403, 1122, -1, -1, -1, -1, 409,
6141 410, 411, -1, -1, -1, 103, 104, -1, -1, 107,
6142 -1, -1, -1, -1, 112, 425, 1101, 1102, -1, -1,
6143 1105, 1348, -1, 1158, -1, 1352, -1, 1354, -1, -1,
6144 1158, -1, -1, -1, -1, -1, -1, 1122, -1, -1,
6145 -1, 451, -1, -1, -1, -1, -1, -1, -1, -1,
6146 -1, -1, -1, -1, -1, -1, -1, -1, 1193, -1,
6147 -1, 1196, -1, 473, -1, 1193, -1, -1, 1196, -1,
6148 -1, -1, -1, 1158, -1, 1210, -1, 1212, -1, -1,
6149 1215, 1216, 1210, -1, 1212, 1220, 1221, 1215, 1216, -1,
6150 -1, -1, 1220, 1221, -1, 1422, -1, -1, 508, -1,
6151 -1, -1, -1, -1, -1, -1, -1, -1, 1193, -1,
6152 -1, 1196, -1, -1, -1, -1, -1, 527, -1, -1,
6153 -1, -1, -1, -1, -1, 1210, -1, 1212, -1, -1,
6154 1215, 1216, 230, -1, -1, 1220, 1221, -1, -1, -1,
6155 -1, -1, -1, -1, 554, -1, -1, -1, -1, -1,
6156 -1, 1286, -1, -1, -1, -1, -1, 255, 1286, 257,
6157 -1, -1, 260, 261, -1, -1, -1, -1, 266, -1,
6158 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6159 -1, -1, -1, -1, -1, -1, -1, 285, 598, 599,
6160 -1, 601, 602, -1, -1, -1, -1, -1, -1, -1,
6161 610, 1286, -1, -1, -1, 615, -1, -1, -1, -1,
6162 -1, -1, -1, 1348, -1, -1, -1, 1352, -1, 1354,
6163 1348, -1, -1, -1, 1352, -1, 1354, -1, -1, -1,
6164 -1, -1, -1, -1, -1, -1, -1, 335, 336, 337,
6165 338, 339, 340, -1, 342, 343, -1, -1, -1, 659,
6166 -1, 661, -1, -1, -1, -1, -1, -1, -1, 669,
6167 -1, -1, -1, 1348, -1, 363, -1, 1352, -1, 1354,
6168 680, -1, 682, 683, -1, -1, -1, -1, -1, -1,
6169 -1, -1, -1, 693, 694, -1, -1, 1422, -1, -1,
6170 -1, -1, -1, -1, 1422, -1, -1, -1, -1, -1,
6171 -1, -1, 400, -1, -1, 403, -1, -1, -1, 719,
6172 -1, 409, 410, 411, -1, -1, -1, 727, -1, -1,
6173 -1, -1, -1, -1, -1, -1, -1, 425, -1, -1,
6174 -1, -1, -1, -1, -1, -1, -1, 1422, -1, -1,
6175 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6176 -1, -1, -1, 451, -1, -1, -1, -1, -1, -1,
6177 -1, -1, -1, -1, 0, -1, -1, -1, -1, -1,
6178 1, -1, 8, 9, 10, 473, -1, 13, 14, 15,
6179 -1, 17, -1, -1, 15, 16, -1, -1, -1, 25,
6180 26, 27, -1, -1, -1, -1, -1, -1, -1, -1,
6181 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6182 508, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6183 -1, 52, 53, -1, -1, 56, -1, -1, -1, 527,
6184 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6185 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6186 -1, -1, 862, -1, 864, 865, 554, -1, 89, -1,
6187 -1, 97, 98, -1, -1, -1, -1, -1, -1, -1,
6188 -1, -1, -1, -1, -1, -1, -1, 108, 109, 110,
6189 -1, 112, -1, -1, 120, -1, -1, -1, -1, -1,
6190 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6191 598, 599, -1, 601, 602, -1, -1, -1, -1, -1,
6192 -1, -1, 610, -1, -1, 151, 152, 615, 154, 929,
6193 -1, 157, 158, -1, 160, -1, -1, -1, -1, -1,
6194 -1, -1, -1, -1, -1, -1, 946, -1, -1, -1,
6195 -1, 951, 952, -1, -1, -1, -1, 957, 958, -1,
6196 -1, -1, 1, -1, -1, -1, 966, 967, -1, -1,
6197 -1, 659, -1, 661, -1, -1, 15, 16, -1, -1,
6198 -1, 669, 982, -1, -1, -1, -1, -1, -1, -1,
6199 -1, -1, 680, -1, 682, 683, -1, -1, -1, -1,
6200 -1, 1001, -1, -1, -1, 693, 694, -1, -1, 230,
6201 -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
6202 -1, -1, -1, -1, 1024, 1025, 1026, -1, -1, -1,
6203 -1, 719, -1, -1, 255, -1, 257, -1, -1, 727,
6204 -1, 1041, -1, -1, -1, 266, -1, -1, 25, -1,
6205 89, -1, -1, -1, -1, -1, -1, -1, 1058, -1,
6206 -1, -1, -1, -1, 285, -1, -1, -1, -1, 108,
6207 109, 110, -1, 112, -1, -1, -1, -1, -1, -1,
6208 -1, -1, -1, -1, 305, -1, -1, -1, -1, -1,
6209 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6210 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6211 87, 88, 89, 90, 335, 336, -1, -1, 95, 96,
6212 -1, -1, -1, -1, 101, -1, -1, -1, -1, -1,
6213 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6214 -1, -1, 363, 364, -1, -1, -1, -1, -1, -1,
6215 1150, -1, -1, 1153, 1154, -1, -1, -1, 135, 1159,
6216 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6217 -1, -1, -1, -1, 862, -1, 864, 865, -1, 400,
6218 -1, -1, 403, -1, -1, 1185, -1, -1, 1188, 410,
6219 411, 230, -1, -1, -1, -1, -1, -1, -1, -1,
6220 -1, -1, -1, -1, -1, -1, -1, 1207, -1, -1,
6221 -1, -1, -1, -1, -1, -1, 255, -1, 257, -1,
6222 -1, -1, -1, -1, -1, -1, -1, 266, -1, 1229,
6223 451, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6224 -1, 929, -1, -1, 1244, -1, 285, -1, -1, -1,
6225 -1, -1, 473, -1, -1, -1, -1, -1, 946, -1,
6226 -1, -1, -1, 951, 952, -1, 305, -1, -1, 957,
6227 958, -1, -1, -1, -1, -1, -1, -1, 966, 967,
6228 -1, -1, -1, -1, -1, -1, -1, 508, -1, -1,
6229 -1, -1, -1, -1, 982, -1, 335, 336, -1, -1,
6230 -1, -1, -1, -1, 525, -1, 527, 1307, -1, -1,
6231 -1, -1, -1, 1001, 1314, 1315, -1, -1, -1, 1319,
6232 -1, -1, -1, -1, 363, 364, -1, -1, -1, -1,
6233 -1, -1, -1, 554, -1, -1, 1024, 1025, 1026, -1,
6234 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6235 -1, 87, 88, 1041, -1, -1, -1, -1, -1, 95,
6236 96, 400, -1, -1, 403, -1, -1, -1, -1, 1369,
6237 1058, 410, 411, -1, -1, -1, -1, -1, 599, -1,
6238 -1, 602, -1, -1, -1, -1, -1, -1, -1, -1,
6239 -1, 612, -1, -1, 615, -1, -1, 33, 34, 35,
6240 36, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6241 146, -1, 451, 49, 50, 51, -1, -1, -1, -1,
6242 -1, -1, -1, 59, 60, 61, 62, 63, -1, -1,
6243 -1, -1, -1, -1, 473, -1, -1, -1, 659, -1,
6244 661, -1, -1, -1, 1, -1, -1, -1, 669, -1,
6245 -1, -1, -1, -1, -1, -1, -1, -1, -1, 680,
6246 -1, 682, 1150, -1, -1, 1153, 1154, -1, -1, 508,
6247 -1, 1159, 693, 694, 110, 111, 112, 113, 114, 115,
6248 116, 117, 118, -1, -1, -1, 525, -1, 527, -1,
6249 -1, -1, -1, -1, -1, 52, 53, 1185, -1, 56,
6250 1188, -1, -1, -1, -1, -1, 727, -1, -1, -1,
6251 -1, 147, 733, -1, -1, 554, -1, -1, -1, 1207,
6252 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6253 -1, -1, 89, -1, -1, -1, -1, -1, -1, -1,
6254 -1, 1229, -1, -1, -1, -1, -1, -1, -1, -1,
6255 -1, 108, 109, 110, -1, -1, 1244, -1, -1, -1,
6256 599, -1, -1, 602, -1, 44, -1, -1, -1, -1,
6257 -1, -1, -1, 612, -1, -1, 615, -1, -1, -1,
6258 -1, -1, 1, -1, -1, -1, -1, -1, -1, -1,
6259 -1, 812, -1, -1, -1, -1, -1, -1, -1, 78,
6260 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6261 89, 90, -1, -1, -1, -1, 95, 96, -1, 1307,
6262 659, -1, 661, -1, -1, -1, 1314, 1315, -1, -1,
6263 669, 1319, -1, 52, 53, -1, -1, 56, -1, -1,
6264 -1, 680, -1, 682, 865, -1, -1, -1, -1, -1,
6265 -1, -1, -1, -1, 693, 694, 135, -1, 137, 138,
6266 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6267 89, -1, -1, 230, -1, -1, 155, -1, -1, -1,
6268 -1, 1369, -1, -1, -1, -1, -1, -1, 727, 108,
6269 109, 110, 111, -1, 733, -1, -1, -1, -1, -1,
6270 -1, -1, -1, -1, -1, -1, -1, -1, -1, 266,
6271 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6272 -1, -1, -1, -1, -1, 946, -1, -1, 285, -1,
6273 951, 952, -1, -1, -1, -1, 957, 958, -1, -1,
6274 -1, -1, -1, -1, -1, 966, -1, -1, 305, -1,
6275 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6276 -1, 982, -1, -1, -1, -1, -1, -1, -1, -1,
6277 -1, -1, -1, 812, -1, -1, -1, -1, 335, 336,
6278 1001, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6279 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6280 -1, -1, -1, 1024, 1025, 1026, 363, 364, -1, -1,
6281 -1, 230, 78, 79, 80, 81, 82, 83, 84, -1,
6282 1041, 87, 88, -1, -1, -1, 865, -1, -1, 95,
6283 96, -1, -1, -1, -1, -1, -1, 1058, -1, -1,
6284 -1, -1, -1, -1, -1, -1, 403, 266, -1, -1,
6285 -1, -1, -1, 410, 411, -1, -1, -1, -1, 44,
6286 -1, -1, -1, -1, -1, -1, 285, -1, -1, -1,
6287 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6288 146, -1, -1, -1, -1, -1, 305, -1, -1, -1,
6289 -1, -1, -1, 78, 79, 80, 81, 82, 83, 84,
6290 85, 86, 87, 88, 89, 90, -1, 946, -1, -1,
6291 95, 96, 951, 952, -1, -1, 335, 336, 957, 958,
6292 -1, -1, -1, 1, -1, 1146, -1, 966, -1, 1150,
6293 -1, -1, 1153, 1154, -1, -1, -1, -1, 1159, -1,
6294 -1, -1, -1, 982, 363, 364, -1, -1, -1, -1,
6295 135, 508, 137, 138, 139, 140, 141, 142, 143, 144,
6296 145, 146, 1001, -1, 1185, -1, -1, 1188, 525, -1,
6297 -1, -1, -1, -1, 52, 53, -1, -1, -1, -1,
6298 -1, -1, -1, -1, 403, 1024, 1025, 1026, -1, -1,
6299 -1, 410, 411, -1, -1, -1, -1, 554, 33, 34,
6300 35, 36, 1041, -1, -1, -1, -1, -1, 1229, -1,
6301 -1, -1, -1, -1, 49, 50, 51, 52, -1, 1058,
6302 -1, 56, 1, 1244, 59, 60, 61, 62, 63, -1,
6303 108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6304 -1, -1, 599, -1, -1, 602, 1267, -1, -1, -1,
6305 -1, -1, -1, -1, -1, 612, 91, 92, 615, -1,
6306 -1, -1, -1, -1, 99, -1, -1, 102, -1, 104,
6307 105, -1, 107, 52, 53, 110, 111, 112, 113, 114,
6308 115, 116, 117, 118, -1, -1, 1307, -1, -1, 508,
6309 -1, -1, -1, -1, -1, -1, -1, -1, 1319, -1,
6310 -1, -1, 659, -1, 661, 140, 525, 1146, -1, -1,
6311 -1, 1150, 147, -1, 1153, 1154, -1, -1, 1339, 154,
6312 1159, -1, -1, -1, -1, 682, -1, -1, -1, -1,
6313 -1, -1, -1, -1, -1, 554, 693, 694, -1, -1,
6314 -1, -1, -1, -1, -1, -1, 1185, -1, 1369, 1188,
6315 -1, -1, 230, -1, 78, 79, 80, 81, 82, 83,
6316 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6317 727, 95, 96, -1, -1, -1, 733, -1, -1, -1,
6318 599, -1, -1, 602, -1, 742, -1, -1, 266, -1,
6319 1229, -1, -1, 612, -1, -1, -1, -1, -1, -1,
6320 -1, -1, -1, -1, -1, 1244, -1, 285, -1, -1,
6321 -1, 135, -1, 137, 138, 139, 140, 141, 142, 143,
6322 144, 145, 146, -1, -1, -1, -1, -1, 1267, -1,
6323 154, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6324 659, -1, 661, -1, -1, -1, -1, -1, -1, -1,
6325 -1, 230, -1, -1, -1, 812, -1, 335, 336, -1,
6326 -1, -1, -1, 682, -1, -1, -1, -1, 1307, -1,
6327 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6328 1319, -1, -1, -1, -1, 363, -1, 266, -1, -1,
6329 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6330 1339, -1, -1, -1, -1, -1, 285, -1, 865, -1,
6331 -1, -1, -1, -1, 733, -1, -1, -1, -1, -1,
6332 -1, -1, -1, -1, -1, 403, -1, -1, -1, -1,
6333 1369, -1, 410, 411, -1, -1, -1, -1, -1, -1,
6334 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6335 -1, -1, -1, -1, -1, -1, 335, 336, -1, -1,
6336 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6337 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6338 -1, -1, -1, -1, 363, -1, -1, -1, -1, -1,
6339 -1, -1, -1, 812, 951, 952, -1, -1, -1, -1,
6340 957, 958, -1, -1, -1, -1, -1, -1, -1, 966,
6341 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6342 -1, -1, -1, -1, 403, 982, -1, -1, -1, -1,
6343 508, 410, 411, -1, 33, 34, 35, 36, -1, -1,
6344 -1, -1, -1, -1, 1001, -1, 865, -1, -1, -1,
6345 49, 50, 51, 52, -1, -1, -1, 56, -1, 58,
6346 59, 60, 61, 62, 63, -1, -1, 1024, 1025, 1026,
6347 -1, -1, -1, -1, -1, -1, 554, -1, -1, 78,
6348 -1, -1, -1, -1, 1041, -1, -1, -1, -1, -1,
6349 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6350 99, 1058, -1, 102, -1, 104, 105, -1, 107, 108,
6351 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6352 -1, 599, -1, -1, 602, -1, -1, -1, -1, 508,
6353 -1, -1, -1, -1, -1, -1, -1, 615, -1, -1,
6354 -1, 140, -1, -1, -1, -1, -1, 966, 147, -1,
6355 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6356 -1, -1, -1, 982, -1, -1, -1, -1, -1, -1,
6357 -1, -1, -1, -1, -1, 554, -1, -1, -1, -1,
6358 -1, 659, 1001, 661, -1, -1, -1, -1, -1, 1146,
6359 -1, -1, -1, 1150, -1, -1, 1153, 1154, -1, -1,
6360 -1, -1, 1159, -1, 682, 1024, 1025, -1, -1, -1,
6361 -1, -1, -1, -1, -1, 693, 694, -1, -1, -1,
6362 599, -1, -1, 602, -1, -1, -1, -1, 1185, -1,
6363 -1, 1188, -1, -1, -1, -1, 615, -1, -1, 1058,
6364 33, 34, 35, 36, -1, -1, -1, -1, -1, 727,
6365 -1, -1, -1, -1, -1, -1, 49, 50, 51, 52,
6366 -1, -1, -1, 56, -1, -1, 59, 60, 61, 62,
6367 63, -1, 1229, -1, -1, -1, -1, -1, -1, -1,
6368 659, -1, 661, -1, -1, -1, -1, 1244, -1, -1,
6369 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
6370 -1, -1, -1, 682, -1, -1, 99, -1, -1, 102,
6371 1267, 104, 105, -1, 693, 694, -1, 110, 111, 112,
6372 113, 114, 115, 116, 117, 118, -1, 1146, -1, -1,
6373 -1, 1150, -1, -1, 1153, 1154, -1, -1, -1, -1,
6374 1159, -1, -1, -1, -1, -1, -1, 140, 727, -1,
6375 -1, -1, -1, -1, 147, 78, 79, 80, 81, 82,
6376 83, 84, 1319, -1, 87, 88, 1185, -1, -1, 1188,
6377 -1, -1, 95, 96, -1, 33, 34, 35, 36, -1,
6378 -1, -1, 1339, -1, -1, -1, -1, 865, -1, -1,
6379 -1, 49, 50, 51, 52, -1, -1, -1, 56, -1,
6380 -1, 59, 60, 61, 62, 63, -1, -1, -1, -1,
6381 1229, -1, 1369, -1, 137, 138, 139, 140, 141, 142,
6382 143, 144, 145, 146, -1, 1244, -1, -1, -1, -1,
6383 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6384 -1, 99, -1, -1, 102, -1, 104, 105, 1267, 107,
6385 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
6386 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6387 -1, -1, -1, 951, 952, -1, -1, -1, -1, 957,
6388 958, -1, 140, -1, -1, -1, 865, -1, 966, 147,
6389 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6390 1319, -1, -1, -1, 982, -1, -1, -1, -1, -1,
6391 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6392 1339, -1, -1, 1001, -1, -1, -1, -1, -1, -1,
6393 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6394 -1, -1, 15, 16, -1, -1, 1024, 1025, 1026, -1,
6395 1369, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6396 -1, -1, -1, 1041, -1, -1, -1, -1, -1, -1,
6397 -1, -1, 951, 952, 47, 48, 49, 50, 957, 958,
6398 1058, 54, 55, -1, -1, -1, -1, 966, -1, -1,
6399 -1, -1, -1, -1, 67, 68, -1, -1, -1, -1,
6400 52, 53, -1, 982, 56, -1, -1, -1, -1, -1,
6401 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6402 -1, -1, 1001, -1, 76, 77, 78, 79, 80, 81,
6403 82, 83, 84, -1, -1, 87, 88, -1, -1, 112,
6404 -1, 93, 94, 95, 96, 1024, 1025, 1026, -1, -1,
6405 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
6406 -1, -1, 1041, -1, -1, -1, -1, -1, 1146, -1,
6407 -1, -1, 1150, -1, -1, 1153, 1154, -1, -1, 1058,
6408 -1, 1159, -1, -1, -1, 137, 138, 139, 140, 141,
6409 142, 143, 144, 145, 146, -1, 148, 149, -1, -1,
6410 -1, -1, -1, -1, 156, 157, -1, 1185, -1, -1,
6411 1188, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6412 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6413 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6414 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6415 -1, 1229, -1, 95, 96, 228, -1, -1, 231, 232,
6416 233, -1, 235, -1, -1, -1, 1244, -1, -1, -1,
6417 -1, 1150, -1, -1, 1153, 1154, -1, -1, -1, -1,
6418 1159, -1, 255, -1, 257, -1, -1, -1, 52, 53,
6419 -1, -1, 56, 135, -1, 137, 138, 139, 140, 141,
6420 142, 143, 144, 145, 146, -1, 1185, -1, -1, 1188,
6421 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
6422 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
6423 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
6424 -1, 1319, -1, 107, 108, -1, -1, -1, -1, -1,
6425 1229, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6426 -1, -1, -1, -1, -1, 1244, -1, -1, -1, -1,
6427 -1, -1, -1, 137, 138, 139, 140, 141, 142, 143,
6428 144, 145, 146, -1, 148, 149, -1, -1, -1, -1,
6429 -1, 1369, 156, -1, -1, 368, 369, 370, 371, 372,
6430 -1, -1, 375, 376, 377, 378, 379, 380, 381, 382,
6431 -1, 384, -1, -1, 387, 388, 389, 390, 391, 392,
6432 393, 394, 395, 396, 52, 53, -1, 400, 56, -1,
6433 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6434 1319, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6435 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
6436 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
6437 -1, -1, -1, -1, -1, -1, -1, -1, 451, 107,
6438 108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6439 1369, -1, -1, -1, -1, 468, 469, -1, -1, -1,
6440 473, -1, -1, -1, 477, -1, 479, -1, -1, 137,
6441 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6442 148, 149, -1, -1, 497, -1, -1, -1, 156, -1,
6443 -1, -1, -1, -1, -1, -1, -1, -1, -1, 512,
6444 -1, -1, 515, -1, 0, 1, -1, 3, 4, 5,
6445 6, 7, -1, -1, 527, 11, 12, -1, -1, -1,
6446 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6447 -1, -1, 545, -1, 30, 31, 32, 33, 34, 35,
6448 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6449 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6450 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6451 -1, -1, -1, -1, -1, -1, -1, 590, -1, -1,
6452 76, 77, -1, -1, -1, 598, -1, -1, 601, -1,
6453 -1, -1, -1, -1, -1, 91, 92, 610, -1, -1,
6454 -1, -1, 615, 99, -1, -1, 102, 103, 104, 105,
6455 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6456 116, 117, 118, -1, 120, -1, -1, 78, 79, 80,
6457 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
6458 -1, -1, -1, -1, 95, 96, -1, -1, -1, -1,
6459 -1, 147, 148, 149, -1, -1, 669, -1, 154, -1,
6460 -1, -1, -1, -1, 160, -1, -1, 680, -1, -1,
6461 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6462 693, 694, -1, -1, 697, 698, 137, 138, 139, 140,
6463 141, 142, 143, 144, 145, 146, 709, 710, -1, -1,
6464 713, -1, 715, -1, -1, -1, -1, -1, -1, 722,
6465 723, -1, -1, -1, 727, -1, -1, -1, -1, -1,
6466 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6467 -1, 0, 1, -1, 3, 4, 5, 6, 7, 8,
6468 9, 10, 11, 12, -1, 14, 15, 16, 17, 18,
6469 19, 20, 21, 22, 23, 24, 25, -1, -1, -1,
6470 773, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6471 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6472 49, 50, 51, 52, 53, 54, 55, 56, 57, 802,
6473 59, 60, 61, 62, 63, 64, 65, -1, -1, 68,
6474 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6475 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6476 -1, 834, 91, 92, -1, -1, -1, -1, -1, -1,
6477 99, -1, -1, 102, 103, 104, 105, -1, 107, 852,
6478 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6479 -1, 120, -1, -1, -1, -1, -1, -1, -1, -1,
6480 -1, -1, -1, -1, -1, -1, -1, -1, -1, 882,
6481 -1, -1, -1, -1, -1, -1, -1, -1, 147, 148,
6482 149, -1, -1, 152, -1, -1, -1, -1, -1, 158,
6483 -1, 160, -1, -1, -1, -1, -1, -1, -1, -1,
6484 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6485 -1, -1, -1, -1, -1, -1, 929, -1, -1, -1,
6486 -1, -1, -1, -1, -1, 938, -1, -1, -1, -1,
6487 -1, -1, -1, 946, -1, -1, -1, 950, 951, 952,
6488 -1, -1, -1, -1, 957, 958, -1, -1, 961, -1,
6489 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6490 973, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6491 -1, -1, -1, -1, -1, -1, -1, -1, 991, 992,
6492 -1, 994, 995, -1, 997, -1, 999, -1, -1, -1,
6493 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6494 -1, -1, -1, -1, -1, 1018, 1019, -1, -1, 1022,
6495 -1, -1, -1, 1026, 1027, 0, 1, -1, 3, 4,
6496 5, 6, 7, -1, -1, -1, 11, 12, 1041, -1,
6497 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6498 -1, -1, -1, -1, 1057, 30, 31, 32, 33, 34,
6499 35, 36, 1065, -1, 39, -1, -1, -1, -1, -1,
6500 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
6501 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6502 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6503 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6504 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6505 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
6506 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
6507 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
6508 -1, -1, 1155, -1, -1, -1, -1, -1, -1, -1,
6509 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6510 -1, -1, 147, 148, 149, -1, -1, 0, 1, 154,
6511 3, 4, 5, 6, 7, 160, -1, -1, 11, 12,
6512 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
6513 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
6514 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6515 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
6516 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
6517 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
6518 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
6519 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
6520 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6521 103, 104, 105, -1, 107, -1, -1, 110, 111, 112,
6522 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
6523 -1, -1, -1, -1, 1307, 0, -1, -1, -1, -1,
6524 -1, -1, -1, 8, 9, 10, -1, -1, 13, 14,
6525 15, -1, 17, -1, 147, 148, 149, -1, -1, 152,
6526 25, 26, 27, 28, 29, -1, -1, 160, -1, -1,
6527 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
6528 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6529 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6530 -1, -1, -1, 68, 69, -1, -1, -1, -1, -1,
6531 -1, -1, -1, 78, 79, 80, 81, 82, 83, 84,
6532 85, 86, 87, 88, 89, 90, -1, -1, -1, -1,
6533 95, 96, 97, 98, -1, 100, 101, -1, -1, -1,
6534 -1, 106, -1, -1, -1, -1, -1, -1, -1, -1,
6535 -1, -1, -1, -1, -1, 120, -1, -1, 123, -1,
6536 -1, -1, -1, -1, -1, -1, -1, -1, -1, 134,
6537 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
6538 145, 146, -1, -1, -1, -1, 151, 152, 153, 154,
6539 155, 0, -1, 158, 159, 160, -1, -1, -1, 8,
6540 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
6541 -1, -1, -1, -1, -1, -1, 25, -1, 27, 28,
6542 29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
6543 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
6544 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6545 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
6546 69, -1, -1, -1, -1, -1, -1, -1, -1, 78,
6547 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6548 89, 90, -1, -1, -1, -1, 95, 96, 97, 98,
6549 -1, 100, 101, -1, -1, -1, -1, 106, -1, -1,
6550 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6551 -1, 120, -1, -1, 123, -1, -1, -1, -1, -1,
6552 -1, -1, -1, -1, -1, 134, 135, 136, 137, 138,
6553 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6554 -1, -1, -1, 152, 153, 154, 155, 0, -1, 158,
6555 159, 160, -1, -1, -1, 8, 9, 10, -1, -1,
6556 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
6557 -1, -1, 25, -1, 27, 28, 29, -1, -1, -1,
6558 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
6559 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
6560 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6561 -1, -1, -1, -1, -1, 68, 69, -1, -1, -1,
6562 -1, -1, -1, -1, -1, 78, 79, 80, 81, 82,
6563 83, 84, 85, 86, 87, 88, 89, 90, -1, -1,
6564 -1, -1, 95, 96, 97, 98, -1, 100, 101, -1,
6565 -1, -1, -1, 106, -1, -1, -1, -1, -1, -1,
6566 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
6567 123, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6568 -1, 134, 135, 136, 137, 138, 139, 140, 141, 142,
6569 143, 144, 145, 146, -1, -1, -1, -1, -1, 152,
6570 153, 154, 155, 0, -1, 158, 159, 160, -1, -1,
6571 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
6572 17, -1, -1, -1, -1, -1, -1, -1, 25, 26,
6573 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
6574 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
6575 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6576 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6577 -1, 68, 69, -1, -1, -1, -1, -1, -1, -1,
6578 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6579 87, 88, 89, 90, -1, -1, -1, -1, 95, 96,
6580 97, 98, -1, -1, 101, -1, -1, -1, -1, 106,
6581 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6582 -1, -1, -1, 120, -1, -1, 123, -1, -1, -1,
6583 -1, -1, -1, -1, -1, -1, -1, -1, 135, 136,
6584 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6585 -1, -1, -1, -1, 151, 152, 153, 154, 155, 0,
6586 -1, 158, 159, 160, -1, -1, -1, 8, 9, 10,
6587 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
6588 -1, -1, -1, -1, 25, 26, 27, 28, 29, -1,
6589 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
6590 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
6591 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6592 -1, -1, -1, -1, -1, -1, -1, 68, 69, -1,
6593 -1, -1, -1, -1, -1, -1, -1, 78, 79, 80,
6594 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
6595 -1, -1, -1, -1, 95, 96, 97, 98, -1, -1,
6596 101, -1, -1, -1, -1, 106, -1, -1, -1, -1,
6597 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
6598 -1, -1, 123, -1, -1, -1, -1, -1, -1, -1,
6599 -1, -1, -1, -1, 135, 136, 137, 138, 139, 140,
6600 141, 142, 143, 144, 145, 146, -1, -1, -1, -1,
6601 151, 152, 153, 154, 155, 0, -1, 158, 159, 160,
6602 -1, -1, -1, 8, 9, 10, -1, -1, 13, 14,
6603 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
6604 25, 26, 27, 28, -1, -1, -1, -1, -1, -1,
6605 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
6606 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6607 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6608 -1, -1, -1, 68, 69, -1, -1, -1, -1, -1,
6609 -1, -1, -1, 78, 79, 80, 81, 82, 83, 84,
6610 85, 86, 87, 88, 89, 90, -1, -1, -1, -1,
6611 95, 96, 97, 98, -1, -1, 101, -1, -1, -1,
6612 -1, 106, -1, -1, -1, -1, -1, -1, -1, -1,
6613 -1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
6614 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6615 135, -1, 137, 138, 139, 140, 141, 142, 143, 144,
6616 145, 146, -1, -1, -1, -1, 151, 152, 153, 154,
6617 155, 0, 157, 158, 159, 160, -1, -1, -1, 8,
6618 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
6619 -1, -1, -1, -1, -1, -1, 25, -1, 27, 28,
6620 29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
6621 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
6622 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6623 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
6624 69, -1, -1, -1, -1, -1, -1, -1, -1, 78,
6625 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6626 89, 90, -1, -1, -1, -1, 95, 96, 97, 98,
6627 -1, -1, 101, -1, -1, -1, -1, 106, -1, -1,
6628 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6629 -1, 120, -1, -1, 123, -1, -1, -1, -1, -1,
6630 -1, -1, -1, -1, -1, -1, 135, 136, 137, 138,
6631 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6632 -1, -1, -1, 152, 153, 154, 155, 0, -1, 158,
6633 159, 160, -1, -1, -1, 8, 9, 10, -1, -1,
6634 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
6635 -1, -1, 25, 26, 27, 28, -1, -1, -1, -1,
6636 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
6637 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
6638 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6639 -1, -1, -1, -1, -1, 68, 69, -1, -1, -1,
6640 -1, -1, -1, -1, -1, 78, 79, 80, 81, 82,
6641 83, 84, 85, 86, 87, 88, 89, 90, -1, -1,
6642 -1, -1, 95, 96, 97, 98, -1, -1, 101, -1,
6643 -1, -1, -1, 106, -1, -1, -1, -1, -1, -1,
6644 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
6645 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6646 -1, -1, 135, -1, 137, 138, 139, 140, 141, 142,
6647 143, 144, 145, 146, -1, -1, -1, -1, 151, 152,
6648 153, 154, 155, 0, 157, 158, 159, 160, -1, -1,
6649 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
6650 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
6651 27, 28, -1, -1, -1, -1, -1, -1, -1, -1,
6652 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
6653 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6654 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6655 -1, 68, 69, -1, -1, -1, -1, -1, -1, -1,
6656 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6657 87, 88, 89, 90, -1, -1, -1, -1, 95, 96,
6658 97, 98, -1, 100, 101, -1, -1, -1, -1, 106,
6659 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6660 -1, -1, -1, 120, -1, -1, -1, -1, -1, -1,
6661 -1, -1, -1, -1, -1, -1, -1, 134, 135, -1,
6662 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6663 -1, -1, -1, -1, 151, 152, 153, 154, 155, 0,
6664 -1, 158, 159, 160, -1, -1, -1, 8, 9, 10,
6665 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
6666 -1, -1, -1, -1, 25, -1, 27, 28, -1, -1,
6667 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
6668 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
6669 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6670 -1, -1, -1, -1, -1, -1, -1, 68, 69, -1,
6671 -1, -1, -1, -1, -1, -1, -1, 78, 79, 80,
6672 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
6673 -1, -1, -1, -1, 95, 96, 97, 98, -1, -1,
6674 101, -1, -1, -1, -1, 106, -1, -1, -1, -1,
6675 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
6676 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6677 -1, -1, -1, -1, 135, -1, 137, 138, 139, 140,
6678 141, 142, 143, 144, 145, 146, -1, -1, -1, -1,
6679 -1, 152, 153, 154, 155, 0, 157, 158, 159, 160,
6680 -1, -1, -1, 8, 9, 10, -1, -1, -1, 14,
6681 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
6682 25, 26, -1, -1, -1, -1, -1, -1, -1, -1,
6683 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
6684 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6685 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6686 -1, -1, -1, 68, 69, -1, -1, -1, -1, -1,
6687 -1, -1, -1, 78, 79, 80, 81, 82, 83, 84,
6688 85, 86, 87, 88, 89, 90, -1, -1, -1, -1,
6689 95, 96, 97, 98, -1, 100, 101, -1, -1, -1,
6690 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6691 -1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
6692 -1, -1, -1, -1, -1, -1, -1, -1, -1, 134,
6693 135, -1, 137, 138, 139, 140, 141, 142, 143, 144,
6694 145, 146, -1, -1, -1, -1, 151, 152, 153, 154,
6695 155, 0, -1, 158, -1, 160, -1, -1, -1, 8,
6696 9, 10, -1, -1, -1, 14, 15, -1, 17, -1,
6697 -1, -1, -1, -1, -1, -1, 25, 26, -1, -1,
6698 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
6699 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
6700 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6701 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
6702 69, -1, -1, -1, -1, -1, -1, -1, -1, 78,
6703 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6704 89, 90, -1, -1, -1, -1, 95, 96, 97, 98,
6705 -1, 100, 101, -1, -1, -1, -1, -1, -1, -1,
6706 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6707 -1, 120, -1, -1, -1, -1, -1, -1, -1, -1,
6708 -1, -1, -1, -1, -1, 134, 135, -1, 137, 138,
6709 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6710 -1, -1, 151, 152, 153, 154, 155, 0, -1, 158,
6711 -1, 160, -1, -1, -1, 8, 9, 10, -1, -1,
6712 -1, 14, 15, -1, 17, -1, -1, -1, -1, -1,
6713 -1, -1, 25, -1, -1, -1, -1, -1, -1, -1,
6714 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
6715 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
6716 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6717 -1, -1, -1, -1, -1, 68, 69, -1, -1, -1,
6718 -1, -1, -1, -1, -1, 78, 79, 80, 81, 82,
6719 83, 84, 85, 86, 87, 88, 89, 90, -1, -1,
6720 -1, -1, 95, 96, 97, 98, -1, 100, 101, -1,
6721 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6722 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
6723 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6724 -1, 134, 135, -1, 137, 138, 139, 140, 141, 142,
6725 143, 144, 145, 146, -1, -1, -1, -1, 151, 152,
6726 153, 154, 155, 0, -1, 158, -1, 160, -1, -1,
6727 -1, 8, 9, 10, -1, -1, -1, 14, 15, -1,
6728 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
6729 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6730 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
6731 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6732 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6733 -1, 68, 69, -1, -1, -1, -1, -1, -1, -1,
6734 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6735 87, 88, 89, 90, -1, -1, -1, -1, 95, 96,
6736 97, 98, -1, 100, 101, -1, -1, -1, -1, -1,
6737 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6738 -1, -1, -1, 120, -1, -1, -1, -1, -1, -1,
6739 -1, -1, -1, -1, -1, -1, -1, 134, 135, -1,
6740 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6741 -1, -1, -1, -1, 151, 152, 153, 154, 155, -1,
6742 -1, 158, 1, 160, 3, 4, 5, 6, 7, 8,
6743 9, 10, 11, 12, -1, -1, 15, 16, -1, 18,
6744 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6745 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6746 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6747 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6748 59, 60, 61, 62, 63, 64, 65, -1, -1, 68,
6749 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6750 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6751 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6752 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
6753 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
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, -1, -1, 147, 148,
6757 149, -1, -1, -1, 1, 154, 3, 4, 5, 6,
6758 7, 160, -1, 10, 11, 12, -1, 14, 15, 16,
6759 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6760 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6761 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6762 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6763 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6764 -1, 68, -1, -1, -1, -1, -1, -1, -1, 76,
6765 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6766 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6767 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6768 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6769 117, 118, -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, -1, -1,
6772 147, 148, 149, -1, -1, -1, 1, 154, 3, 4,
6773 5, 6, 7, 160, -1, 10, 11, 12, -1, -1,
6774 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
6775 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6776 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6777 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
6778 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6779 65, -1, -1, 68, -1, -1, -1, -1, -1, -1,
6780 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6781 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6782 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
6783 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
6784 115, 116, 117, 118, -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 -1, -1, 147, 148, 149, -1, -1, -1, 1, 154,
6788 3, 4, 5, 6, 7, 160, -1, 10, 11, 12,
6789 -1, -1, 15, 16, -1, 18, 19, 20, 21, 22,
6790 23, 24, 25, -1, -1, -1, -1, 30, 31, 32,
6791 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6792 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
6793 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
6794 63, 64, 65, -1, -1, 68, -1, -1, -1, -1,
6795 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
6796 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
6797 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6798 103, 104, 105, -1, 107, -1, -1, 110, 111, 112,
6799 113, 114, 115, 116, 117, 118, -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, -1, -1, 147, 148, 149, -1, -1, -1,
6803 1, 154, 3, 4, 5, 6, 7, 160, -1, 10,
6804 11, 12, -1, -1, 15, 16, -1, 18, 19, 20,
6805 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
6806 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6807 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
6808 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
6809 61, 62, 63, 64, 65, -1, -1, 68, -1, -1,
6810 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6811 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6812 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6813 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
6814 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6815 -1, -1, -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, 147, 148, 149, -1,
6818 -1, -1, 1, 154, 3, 4, 5, 6, 7, 160,
6819 9, 10, 11, 12, -1, -1, -1, 16, -1, 18,
6820 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6821 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6822 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6823 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6824 59, 60, 61, 62, 63, 64, 65, -1, -1, 68,
6825 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6826 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6827 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6828 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
6829 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6830 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6831 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6832 -1, -1, -1, -1, -1, -1, -1, -1, 147, 148,
6833 149, -1, -1, -1, 1, 154, 3, 4, 5, 6,
6834 7, 160, -1, 10, 11, 12, -1, -1, -1, 16,
6835 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6836 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6837 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6838 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6839 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6840 -1, 68, -1, -1, -1, -1, -1, -1, -1, 76,
6841 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6842 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6843 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6844 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6845 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
6846 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6847 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6848 147, 148, 149, -1, -1, -1, 1, 154, 3, 4,
6849 5, 6, 7, 160, -1, -1, 11, 12, -1, -1,
6850 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6851 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6852 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6853 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
6854 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6855 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6856 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6857 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6858 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
6859 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
6860 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
6861 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6862 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6863 -1, -1, 147, 148, 149, -1, -1, -1, -1, 154,
6864 -1, -1, -1, 158, 1, 160, 3, 4, 5, 6,
6865 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
6866 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6867 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6868 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6869 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6870 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6871 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6872 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6873 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6874 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6875 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6876 117, 118, -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 147, 148, 149, -1, -1, -1, -1, 154, -1, -1,
6880 -1, 158, 1, 160, 3, 4, 5, 6, 7, -1,
6881 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6882 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6883 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6884 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6885 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6886 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6887 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6888 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6889 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6890 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
6891 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
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, -1, -1, -1, 147, 148,
6895 149, -1, -1, 152, 1, 154, 3, 4, 5, 6,
6896 7, 160, -1, -1, 11, 12, -1, -1, -1, 16,
6897 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6898 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6899 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6900 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6901 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6902 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6903 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6904 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6905 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6906 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6907 117, 118, -1, -1, -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, -1,
6910 147, 148, 149, -1, -1, 152, 1, 154, 3, 4,
6911 5, -1, 7, 160, -1, -1, 11, 12, -1, -1,
6912 -1, 16, 17, 18, 19, 20, 21, 22, 23, 24,
6913 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6914 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6915 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6916 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6917 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6918 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6919 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6920 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
6921 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
6922 115, 116, 117, 118, -1, -1, -1, -1, -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, 147, 148, 149, -1, -1, -1, -1, 154,
6926 -1, -1, -1, -1, -1, 160, 3, 4, 5, 6,
6927 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
6928 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
6929 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6930 37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
6931 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6932 57, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6933 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6934 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
6935 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
6936 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6937 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
6938 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6939 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6940 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6941 -1, 148, 149, -1, -1, -1, -1, -1, -1, 156,
6942 157, 3, 4, 5, 6, 7, 8, 9, 10, 11,
6943 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
6944 22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
6945 32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
6946 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6947 52, 53, 54, 55, 56, 57, -1, -1, -1, -1,
6948 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6949 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
6950 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
6951 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
6952 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
6953 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6954 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6955 -1, -1, -1, -1, -1, 137, 138, 139, 140, 141,
6956 142, 143, 144, 145, 146, -1, 148, 149, -1, -1,
6957 -1, -1, -1, -1, 156, 3, 4, 5, 6, 7,
6958 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
6959 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
6960 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
6961 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6962 48, 49, 50, 51, 52, 53, 54, -1, 56, -1,
6963 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6964 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6965 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
6966 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
6967 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
6968 108, -1, -1, 111, -1, -1, -1, -1, -1, -1,
6969 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6970 -1, -1, -1, -1, -1, -1, -1, -1, -1, 137,
6971 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6972 148, 149, -1, -1, -1, -1, -1, -1, 156, 3,
6973 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
6974 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
6975 24, 25, 26, -1, -1, -1, 30, 31, 32, 33,
6976 34, 35, 36, 37, 38, 39, -1, -1, -1, -1,
6977 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6978 -1, -1, 56, -1, -1, -1, -1, -1, -1, -1,
6979 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6980 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
6981 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
6982 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
6983 -1, -1, -1, 107, 108, -1, -1, 111, -1, -1,
6984 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6985 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6986 -1, -1, -1, 137, 138, 139, 140, 141, 142, 143,
6987 144, 145, 146, -1, 148, 149, -1, -1, -1, -1,
6988 -1, -1, 156, 3, 4, 5, 6, 7, 8, 9,
6989 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
6990 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
6991 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
6992 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
6993 50, 51, 52, 53, -1, -1, 56, -1, -1, -1,
6994 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6995 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
6996 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
6997 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
6998 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
6999 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7000 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7001 -1, -1, -1, -1, -1, -1, -1, 137, 138, 139,
7002 140, 141, 142, 143, 144, 145, 146, -1, 148, 149,
7003 3, 4, 5, -1, 7, -1, 156, -1, 11, 12,
7004 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
7005 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
7006 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
7007 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
7008 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
7009 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
7010 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7011 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7012 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
7013 103, 104, 105, -1, -1, -1, -1, 110, 111, 112,
7014 113, 114, 115, 116, 117, 118, -1, -1, 3, 4,
7015 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
7016 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
7017 -1, -1, -1, -1, 147, 30, 31, 32, 33, 34,
7018 35, 36, 155, -1, 39, -1, -1, -1, -1, -1,
7019 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
7020 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
7021 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7022 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7023 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7024 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
7025 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
7026 115, 116, 117, 118, -1, -1, 3, 4, 5, -1,
7027 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
7028 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
7029 -1, -1, 147, 30, 31, 32, 33, 34, 35, 36,
7030 155, -1, 39, -1, -1, -1, -1, -1, -1, 46,
7031 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
7032 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
7033 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7034 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7035 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
7036 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
7037 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
7038 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
7039 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7040 -1, -1, -1, -1, -1, 3, 4, 5, -1, 7,
7041 147, 148, 149, 11, 12, -1, -1, 154, 16, -1,
7042 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
7043 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
7044 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7045 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7046 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7047 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7048 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7049 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
7050 -1, 99, -1, -1, 102, 103, 104, 105, -1, -1,
7051 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7052 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7053 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7054 -1, -1, 1, -1, 3, 4, 5, 6, 7, 147,
7055 148, 149, 11, 12, -1, -1, 154, 16, -1, 18,
7056 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
7057 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7058 39, -1, -1, -1, -1, -1, 45, 46, -1, 48,
7059 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7060 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7061 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7062 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7063 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7064 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7065 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7066 -1, -1, 1, -1, 3, 4, 5, -1, 7, -1,
7067 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7068 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7069 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7070 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7071 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7072 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7073 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7074 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7075 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7076 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7077 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7078 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7079 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7080 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7081 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7082 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7083 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7084 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7085 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7086 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7087 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7088 99, -1, -1, 102, 103, 104, 105, -1, 107, 108,
7089 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7090 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7091 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7092 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7093 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7094 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7095 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7096 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7097 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7098 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7099 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7100 99, -1, -1, 102, 103, 104, 105, -1, 107, 108,
7101 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7102 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7103 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7104 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7105 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7106 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7107 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7108 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7109 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7110 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7111 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7112 99, -1, -1, 102, 103, 104, 105, -1, 107, 108,
7113 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7114 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7115 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7116 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7117 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7118 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7119 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7120 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7121 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7122 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7123 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7124 99, -1, -1, 102, 103, 104, 105, -1, 107, 108,
7125 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7126 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7127 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7128 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7129 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7130 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7131 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7132 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7133 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7134 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7135 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7136 99, -1, -1, 102, 103, 104, 105, -1, 107, 108,
7137 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7138 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7139 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7140 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7141 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7142 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7143 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7144 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7145 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7146 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7147 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7148 99, -1, -1, 102, 103, 104, 105, -1, -1, 108,
7149 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7150 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7151 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7152 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7153 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7154 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7155 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
7156 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7157 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7158 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7159 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7160 99, -1, -1, 102, 103, 104, 105, -1, -1, 108,
7161 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7162 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7163 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7164 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7165 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7166 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7167 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7168 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7169 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7170 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7171 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7172 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7173 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7174 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7175 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7176 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7177 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7178 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7179 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7180 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7181 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7182 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7183 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7184 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7185 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7186 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7187 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7188 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7189 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7190 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7191 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7192 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7193 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7194 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7195 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7196 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7197 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7198 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7199 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7200 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7201 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7202 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7203 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7204 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7205 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7206 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7207 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7208 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7209 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7210 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7211 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7212 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7213 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7214 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7215 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7216 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7217 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7218 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7219 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7220 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7221 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7222 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7223 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7224 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7225 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7226 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7227 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7228 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7229 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7230 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7231 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7232 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7233 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7234 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7235 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7236 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7237 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7238 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7239 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7240 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7241 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7242 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7243 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7244 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7245 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7246 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7247 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7248 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7249 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7250 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7251 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7252 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7253 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7254 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7255 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7256 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7257 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7258 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7259 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7260 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7261 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7262 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7263 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7264 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7265 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7266 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7267 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7268 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7269 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7270 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7271 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7272 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7273 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7274 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7275 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7276 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7277 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7278 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7279 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7280 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7281 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7282 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7283 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7284 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7285 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7286 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7287 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7288 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7289 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7290 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7291 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7292 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7293 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7294 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7295 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7296 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7297 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7298 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7299 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7300 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7301 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
7302 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7303 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
7304 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7305 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7306 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
7307 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7308 19, 20, 21, 22, 23, 24, -1, -1, 147, 148,
7309 149, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7310 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7311 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7312 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7313 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7314 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7315 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7316 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
7317 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7318 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7319 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7320 21, 22, 23, 24, -1, -1, -1, -1, 147, 30,
7321 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7322 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7323 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7324 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7325 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7326 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7327 -1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
7328 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
7329 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7330 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
7331 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
7332 23, 24, -1, -1, -1, -1, 147, 30, 31, 32,
7333 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
7334 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
7335 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
7336 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
7337 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7338 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7339 -1, -1, 95, -1, -1, -1, 99, -1, -1, 102,
7340 103, 104, 105, -1, -1, -1, -1, 110, 111, 112,
7341 113, 114, 115, 116, 117, 118, -1, -1, 3, 4,
7342 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
7343 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
7344 -1, -1, -1, -1, 147, 30, 31, 32, 33, 34,
7345 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
7346 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
7347 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
7348 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7349 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7350 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7351 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
7352 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
7353 115, 116, 117, 118, -1, -1, 3, 4, 5, -1,
7354 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
7355 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
7356 -1, -1, 147, 30, 31, 32, 33, 34, 35, 36,
7357 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
7358 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
7359 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
7360 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7361 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7362 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7363 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
7364 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
7365 117, 118, -1, -1, 3, 4, 5, -1, 7, -1,
7366 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7367 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
7368 147, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7369 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7370 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7371 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7372 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7373 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7374 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7375 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7376 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7377 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7378 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7379 21, 22, 23, 24, -1, -1, -1, -1, 147, 30,
7380 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7381 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7382 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7383 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7384 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7385 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7386 -1, -1, -1, -1, -1, 52, 53, -1, 99, 56,
7387 -1, 102, 103, 104, 105, -1, -1, -1, -1, 110,
7388 111, 112, 113, 114, 115, 116, 117, 118, -1, 76,
7389 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7390 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7391 -1, -1, -1, -1, -1, -1, 147, -1, -1, -1,
7392 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
7393 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7394 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7395 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7396 -1, 148, 149, 52, 53, -1, -1, 56, -1, 156,
7397 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7398 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7399 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7400 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7401 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
7402 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7403 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7404 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
7405 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
7406 149, 52, 53, -1, -1, 56, -1, 156, -1, -1,
7407 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7408 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7409 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7410 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7411 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
7412 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7413 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7414 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
7415 141, 142, 143, 144, 145, 146, -1, 148, 149, 52,
7416 53, -1, -1, 56, -1, 156, -1, -1, -1, -1,
7417 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7418 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
7419 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7420 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7421 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
7422 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7423 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7424 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7425 143, 144, 145, 146, -1, 148, 149, 52, 53, -1,
7426 -1, 56, -1, 156, -1, -1, -1, -1, -1, -1,
7427 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7428 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7429 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7430 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7431 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7432 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7433 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7434 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7435 145, 146, -1, 148, 149, 52, 53, -1, -1, 56,
7436 -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
7437 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7438 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7439 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7440 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7441 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
7442 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7443 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7444 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7445 -1, 148, 149, 52, 53, -1, -1, 56, -1, 156,
7446 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7447 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7448 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7449 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7450 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
7451 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7452 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7453 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
7454 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
7455 149, 52, 53, -1, -1, 56, -1, 156, -1, -1,
7456 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7457 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7458 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7459 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7460 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
7461 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7462 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7463 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
7464 141, 142, 143, 144, 145, 146, -1, 148, 149, 52,
7465 53, -1, -1, 56, -1, 156, -1, -1, -1, -1,
7466 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7467 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
7468 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7469 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7470 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
7471 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7472 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7473 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7474 143, 144, 145, 146, -1, 148, 149, 52, 53, -1,
7475 -1, 56, -1, 156, -1, -1, -1, -1, -1, -1,
7476 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7477 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7478 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7479 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7480 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7481 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7482 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7483 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7484 145, 146, -1, 148, 149, 52, 53, -1, -1, 56,
7485 -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
7486 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7487 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7488 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7489 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7490 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
7491 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7492 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7493 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7494 -1, 148, 149, 52, 53, -1, -1, 56, -1, 156,
7495 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7496 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7497 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7498 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7499 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
7500 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7501 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7502 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
7503 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
7504 149, 52, 53, -1, -1, 56, -1, 156, -1, -1,
7505 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7506 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7507 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7508 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7509 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
7510 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7511 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7512 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
7513 141, 142, 143, 144, 145, 146, -1, 148, 149, 52,
7514 53, -1, -1, 56, -1, 156, -1, -1, -1, -1,
7515 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7516 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
7517 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7518 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7519 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
7520 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7521 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7522 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7523 143, 144, 145, 146, -1, 148, 149, -1, -1, -1,
7529static const yytype_int16 yystos[] =
7531 0, 165, 166, 1, 3, 4, 5, 6, 7, 11,
7532 12, 16, 18, 19, 20, 21, 22, 23, 24, 30,
7533 31, 32, 33, 34, 35, 36, 39, 45, 46, 47,
7534 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7535 59, 60, 61, 62, 63, 64, 65, 76, 77, 91,
7536 92, 99, 102, 103, 104, 105, 107, 110, 111, 112,
7537 113, 114, 115, 116, 117, 118, 147, 148, 149, 164,
7538 167, 168, 180, 182, 183, 184, 185, 186, 187, 191,
7539 195, 197, 203, 206, 208, 209, 210, 212, 214, 215,
7540 216, 217, 226, 227, 228, 229, 230, 231, 234, 255,
7541 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
7542 277, 278, 287, 288, 324, 329, 330, 380, 381, 382,
7543 383, 384, 385, 387, 388, 391, 392, 394, 395, 396,
7544 397, 410, 411, 413, 414, 415, 416, 417, 418, 419,
7545 420, 421, 482, 0, 3, 4, 5, 6, 7, 8,
7546 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
7547 19, 20, 21, 22, 23, 24, 25, 26, 30, 31,
7548 32, 33, 34, 35, 36, 37, 38, 39, 45, 46,
7549 47, 48, 49, 50, 51, 52, 53, 56, 76, 77,
7550 78, 79, 80, 81, 82, 83, 84, 87, 88, 93,
7551 94, 95, 96, 107, 108, 137, 138, 139, 140, 141,
7552 142, 143, 144, 145, 146, 148, 149, 156, 220, 221,
7553 222, 224, 225, 410, 179, 179, 179, 39, 58, 99,
7554 102, 107, 108, 109, 112, 148, 187, 209, 217, 227,
7555 238, 239, 245, 246, 249, 251, 252, 268, 417, 418,
7556 420, 421, 469, 470, 246, 157, 242, 247, 248, 154,
7557 157, 189, 54, 221, 189, 151, 169, 170, 235, 482,
7558 21, 22, 32, 195, 197, 208, 227, 268, 287, 288,
7559 227, 227, 227, 56, 47, 102, 171, 176, 177, 182,
7560 211, 212, 482, 171, 240, 251, 469, 482, 239, 468,
7561 469, 482, 46, 99, 147, 155, 195, 197, 216, 255,
7562 268, 417, 418, 421, 322, 220, 400, 412, 416, 400,
7563 401, 402, 161, 386, 386, 386, 386, 415, 203, 227,
7564 227, 154, 160, 163, 480, 481, 169, 40, 41, 42,
7565 43, 44, 37, 38, 157, 424, 425, 426, 427, 428,
7566 424, 427, 26, 151, 242, 248, 279, 331, 28, 280,
7567 328, 134, 155, 102, 107, 214, 134, 25, 78, 79,
7568 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
7569 90, 95, 96, 101, 135, 137, 138, 139, 140, 141,
7570 142, 143, 144, 145, 146, 233, 233, 69, 97, 98,
7571 153, 474, 475, 256, 1, 191, 198, 199, 199, 200,
7572 202, 202, 163, 199, 481, 99, 210, 217, 268, 293,
7573 417, 418, 421, 52, 56, 95, 99, 218, 219, 268,
7574 417, 418, 421, 219, 33, 34, 35, 36, 49, 50,
7575 51, 52, 56, 157, 194, 220, 419, 464, 465, 466,
7576 246, 157, 248, 98, 474, 475, 331, 383, 100, 100,
7577 155, 239, 56, 239, 239, 239, 400, 134, 101, 155,
7578 250, 482, 98, 153, 474, 100, 100, 155, 250, 92,
7579 244, 246, 251, 448, 469, 482, 246, 189, 191, 476,
7580 191, 54, 64, 65, 181, 157, 235, 236, 164, 424,
7581 424, 98, 474, 100, 178, 211, 158, 163, 481, 476,
7582 257, 159, 155, 189, 479, 155, 479, 152, 479, 189,
7583 56, 415, 213, 214, 426, 155, 98, 153, 474, 319,
7584 66, 119, 121, 122, 403, 119, 119, 403, 67, 403,
7585 161, 389, 398, 393, 399, 78, 160, 168, 171, 199,
7586 199, 199, 199, 235, 237, 191, 191, 52, 54, 55,
7587 56, 57, 58, 78, 92, 102, 107, 108, 109, 141,
7588 144, 298, 367, 425, 429, 430, 432, 433, 436, 437,
7589 439, 440, 441, 442, 448, 449, 450, 451, 452, 453,
7590 454, 455, 456, 457, 458, 459, 460, 461, 134, 265,
7591 442, 134, 266, 332, 333, 106, 207, 334, 335, 335,
7592 235, 211, 155, 216, 155, 235, 193, 227, 227, 227,
7593 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7594 192, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7595 227, 227, 52, 53, 56, 224, 471, 472, 244, 251,
7596 52, 53, 56, 224, 471, 242, 171, 174, 13, 289,
7597 480, 289, 199, 171, 171, 259, 163, 56, 98, 153,
7598 474, 25, 199, 52, 56, 218, 138, 423, 482, 98,
7599 153, 474, 264, 467, 69, 98, 473, 246, 476, 52,
7600 56, 242, 471, 235, 235, 223, 100, 124, 235, 239,
7601 239, 249, 252, 469, 52, 56, 244, 52, 56, 235,
7602 235, 470, 476, 155, 476, 155, 158, 476, 221, 236,
7603 227, 152, 134, 134, 56, 471, 471, 235, 170, 476,
7604 177, 158, 469, 155, 213, 52, 56, 244, 52, 56,
7605 320, 405, 404, 119, 390, 403, 66, 119, 119, 390,
7606 66, 119, 227, 152, 182, 102, 107, 294, 295, 296,
7607 297, 450, 155, 431, 462, 463, 155, 431, 155, 438,
7608 463, 476, 299, 300, 155, 438, 239, 34, 52, 52,
7609 155, 438, 34, 52, 39, 188, 209, 227, 232, 174,
7610 480, 188, 232, 174, 319, 152, 333, 319, 10, 68,
7611 286, 286, 107, 203, 204, 205, 239, 251, 253, 254,
7612 476, 213, 155, 99, 185, 190, 205, 217, 227, 239,
7613 241, 254, 268, 421, 341, 341, 189, 100, 100, 151,
7614 242, 248, 189, 477, 155, 100, 100, 242, 243, 248,
7615 482, 235, 286, 171, 13, 171, 27, 290, 480, 286,
7616 286, 17, 283, 337, 25, 258, 343, 52, 56, 244,
7617 52, 56, 260, 263, 422, 262, 52, 56, 218, 244,
7618 174, 191, 196, 476, 243, 248, 190, 227, 241, 190,
7619 241, 221, 235, 239, 250, 100, 100, 477, 100, 100,
7620 448, 469, 191, 39, 190, 241, 479, 214, 477, 321,
7621 406, 409, 416, 421, 386, 403, 386, 386, 386, 296,
7622 450, 155, 476, 155, 461, 429, 455, 457, 433, 436,
7623 453, 459, 134, 239, 437, 452, 459, 451, 453, 189,
7624 44, 44, 286, 286, 320, 152, 320, 239, 155, 44,
7625 213, 56, 44, 134, 44, 98, 153, 474, 339, 339,
7626 136, 235, 235, 333, 207, 159, 100, 235, 235, 207,
7627 8, 281, 376, 482, 14, 15, 284, 285, 291, 292,
7628 482, 292, 201, 107, 239, 336, 286, 341, 337, 286,
7629 477, 199, 480, 199, 174, 477, 286, 476, 194, 331,
7630 328, 235, 235, 100, 235, 235, 476, 155, 476, 189,
7631 179, 407, 476, 294, 297, 295, 431, 155, 438, 155,
7632 438, 155, 438, 155, 438, 438, 188, 232, 237, 237,
7633 321, 321, 107, 239, 237, 237, 235, 237, 52, 56,
7634 244, 52, 56, 340, 340, 227, 190, 241, 190, 241,
7635 152, 235, 190, 241, 190, 241, 239, 254, 377, 482,
7636 175, 284, 171, 199, 286, 286, 239, 155, 289, 339,
7637 286, 290, 174, 480, 286, 235, 157, 298, 325, 425,
7638 430, 434, 435, 437, 444, 445, 446, 447, 448, 453,
7639 459, 461, 171, 155, 155, 453, 453, 459, 453, 227,
7640 227, 179, 179, 239, 182, 182, 227, 477, 52, 56,
7641 58, 91, 92, 99, 102, 104, 105, 107, 112, 140,
7642 324, 346, 347, 348, 350, 353, 357, 358, 359, 362,
7643 363, 364, 365, 366, 367, 368, 369, 370, 371, 372,
7644 373, 374, 375, 380, 381, 384, 385, 388, 392, 395,
7645 397, 418, 455, 346, 190, 241, 101, 378, 482, 9,
7646 282, 379, 482, 172, 289, 107, 239, 171, 340, 261,
7647 286, 447, 155, 303, 482, 323, 155, 303, 155, 443,
7648 482, 155, 443, 155, 443, 0, 120, 408, 295, 438,
7649 438, 155, 438, 438, 139, 313, 314, 482, 313, 371,
7650 371, 56, 218, 340, 347, 355, 356, 357, 358, 361,
7651 477, 189, 340, 478, 52, 400, 52, 102, 416, 101,
7652 155, 139, 155, 155, 347, 89, 90, 98, 153, 157,
7653 351, 352, 52, 99, 217, 268, 417, 418, 421, 289,
7654 176, 171, 171, 239, 292, 337, 338, 345, 346, 171,
7655 189, 316, 461, 29, 123, 326, 457, 435, 453, 459,
7656 437, 459, 453, 453, 298, 301, 302, 304, 305, 307,
7657 308, 310, 311, 312, 315, 451, 453, 454, 459, 461,
7658 171, 174, 347, 477, 347, 359, 361, 477, 155, 152,
7659 235, 124, 199, 372, 355, 359, 349, 360, 361, 112,
7660 364, 368, 371, 371, 218, 340, 477, 340, 476, 355,
7661 358, 362, 355, 358, 362, 56, 98, 153, 474, 171,
7662 163, 173, 291, 289, 40, 41, 286, 160, 158, 327,
7663 171, 303, 155, 443, 155, 443, 155, 443, 155, 443,
7664 443, 438, 303, 155, 303, 155, 309, 482, 316, 300,
7665 155, 306, 309, 99, 268, 155, 309, 476, 155, 155,
7666 354, 476, 155, 353, 155, 400, 476, 476, 476, 477,
7667 477, 477, 52, 56, 244, 52, 56, 376, 379, 342,
7668 199, 199, 52, 317, 318, 449, 174, 152, 453, 453,
7669 459, 453, 301, 457, 305, 307, 453, 459, 139, 268,
7670 308, 459, 56, 98, 453, 360, 362, 360, 359, 361,
7671 477, 171, 155, 189, 286, 443, 443, 155, 443, 443,
7672 303, 155, 309, 155, 309, 155, 309, 155, 309, 52,
7673 56, 309, 155, 478, 292, 343, 344, 318, 453, 453,
7674 453, 459, 453, 443, 309, 309, 155, 309, 309, 453,
7679static const yytype_int16 yyr1[] =
7681 0, 162, 165, 163, 163, 164, 166, 167, 167, 167,
7682 168, 168, 169, 170, 171, 172, 173, 174, 175, 174,
7683 176, 176, 176, 177, 178, 177, 179, 180, 181, 182,
7684 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
7685 182, 182, 183, 182, 182, 182, 182, 182, 184, 185,
7686 186, 186, 186, 186, 186, 186, 186, 186, 185, 187,
7687 187, 185, 188, 188, 189, 189, 188, 190, 190, 190,
7688 191, 191, 191, 191, 191, 192, 191, 193, 191, 191,
7689 194, 195, 196, 197, 198, 199, 199, 200, 201, 202,
7690 203, 203, 204, 205, 206, 206, 207, 208, 208, 208,
7691 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
7692 209, 209, 210, 210, 211, 211, 212, 212, 212, 213,
7693 213, 212, 212, 212, 212, 212, 212, 212, 214, 214,
7694 215, 215, 216, 216, 216, 216, 216, 216, 216, 216,
7695 216, 217, 217, 217, 217, 217, 217, 217, 217, 217,
7696 218, 218, 219, 219, 219, 220, 220, 220, 220, 220,
7697 221, 221, 222, 223, 222, 224, 224, 224, 224, 224,
7698 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7699 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7700 224, 224, 224, 224, 224, 225, 225, 225, 225, 225,
7701 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7702 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7703 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7704 225, 225, 225, 225, 225, 225, 226, 227, 228, 228,
7705 228, 228, 228, 228, 228, 228, 227, 229, 229, 229,
7706 229, 229, 229, 227, 227, 227, 227, 227, 227, 227,
7707 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7708 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7709 230, 230, 227, 227, 227, 231, 232, 232, 232, 233,
7710 233, 233, 233, 234, 234, 235, 236, 237, 238, 239,
7711 240, 240, 240, 240, 241, 241, 242, 242, 242, 243,
7712 243, 244, 244, 244, 244, 244, 245, 246, 246, 246,
7713 246, 246, 246, 247, 248, 249, 249, 250, 250, 251,
7714 251, 251, 251, 252, 252, 253, 253, 254, 254, 254,
7715 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7716 255, 256, 255, 257, 255, 255, 255, 255, 255, 255,
7717 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7718 255, 255, 255, 255, 255, 258, 255, 259, 255, 255,
7719 260, 261, 255, 262, 255, 263, 255, 264, 255, 265,
7720 255, 266, 255, 255, 255, 255, 255, 267, 268, 269,
7721 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
7722 280, 281, 282, 283, 284, 285, 286, 286, 287, 288,
7723 289, 289, 289, 290, 290, 291, 291, 292, 292, 293,
7724 293, 294, 294, 295, 295, 296, 296, 296, 296, 296,
7725 297, 297, 298, 298, 299, 300, 301, 301, 302, 302,
7726 303, 303, 304, 304, 304, 304, 305, 306, 307, 308,
7727 308, 309, 309, 310, 310, 310, 310, 310, 310, 310,
7728 310, 310, 310, 310, 310, 311, 311, 311, 312, 311,
7729 313, 313, 314, 315, 315, 316, 316, 317, 317, 318,
7730 318, 319, 320, 321, 322, 323, 324, 325, 325, 326,
7731 327, 326, 328, 329, 329, 329, 329, 329, 330, 330,
7732 330, 330, 330, 330, 330, 330, 331, 331, 332, 333,
7733 334, 335, 336, 336, 336, 336, 337, 338, 338, 339,
7734 340, 341, 342, 343, 344, 344, 345, 345, 345, 346,
7735 346, 346, 346, 346, 346, 347, 348, 348, 349, 350,
7736 350, 351, 352, 353, 353, 353, 353, 353, 353, 353,
7737 353, 353, 353, 353, 353, 353, 354, 353, 353, 353,
7738 355, 355, 355, 355, 355, 355, 356, 356, 357, 357,
7739 358, 359, 359, 360, 360, 361, 362, 362, 362, 362,
7740 363, 363, 364, 364, 365, 365, 366, 366, 367, 368,
7741 368, 369, 370, 370, 370, 370, 370, 370, 369, 369,
7742 369, 369, 371, 371, 371, 371, 371, 371, 371, 371,
7743 371, 371, 372, 373, 373, 374, 375, 375, 375, 376,
7744 376, 377, 377, 377, 378, 378, 379, 379, 380, 380,
7745 381, 382, 382, 382, 383, 384, 385, 386, 386, 387,
7746 388, 389, 389, 390, 390, 391, 392, 393, 393, 394,
7747 395, 396, 397, 398, 398, 399, 399, 400, 400, 401,
7748 401, 402, 402, 403, 404, 403, 405, 406, 407, 403,
7749 408, 408, 409, 409, 410, 410, 411, 412, 412, 413,
7750 414, 414, 415, 415, 415, 415, 416, 416, 416, 417,
7751 417, 417, 418, 418, 418, 418, 418, 418, 418, 419,
7752 419, 420, 420, 421, 421, 422, 423, 423, 424, 424,
7753 425, 426, 427, 428, 427, 429, 429, 430, 430, 431,
7754 431, 432, 432, 432, 432, 433, 433, 434, 434, 434,
7755 434, 435, 435, 436, 437, 437, 438, 438, 439, 439,
7756 439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
7757 440, 440, 441, 440, 440, 442, 443, 443, 444, 444,
7758 444, 444, 444, 444, 444, 444, 444, 444, 444, 444,
7759 445, 445, 446, 445, 445, 447, 448, 449, 449, 449,
7760 449, 450, 450, 451, 452, 452, 453, 453, 454, 455,
7761 455, 456, 457, 457, 458, 458, 459, 459, 460, 460,
7762 461, 461, 461, 462, 462, 463, 464, 465, 466, 467,
7763 466, 468, 468, 469, 469, 470, 470, 470, 470, 470,
7764 470, 471, 471, 471, 471, 472, 472, 472, 473, 473,
7765 474, 474, 475, 475, 476, 477, 478, 479, 479, 480,
7770static const yytype_int8 yyr2[] =
7772 0, 2, 0, 0, 1, 2, 2, 1, 1, 3,
7773 1, 2, 1, 3, 2, 0, 0, 8, 0, 5,
7774 1, 1, 3, 1, 0, 3, 0, 2, 0, 4,
7775 3, 3, 3, 2, 3, 3, 3, 3, 4, 4,
7776 1, 4, 4, 1, 7, 4, 1, 1, 4, 1,
7777 4, 7, 6, 6, 6, 6, 5, 4, 1, 4,
7778 4, 1, 1, 4, 0, 1, 3, 1, 4, 1,
7779 1, 3, 3, 3, 2, 0, 7, 0, 7, 1,
7780 1, 2, 0, 5, 1, 1, 1, 0, 0, 4,
7781 1, 1, 1, 1, 1, 4, 3, 1, 1, 1,
7782 2, 3, 4, 5, 4, 5, 6, 2, 2, 2,
7783 2, 2, 1, 3, 1, 3, 1, 2, 3, 1,
7784 3, 5, 2, 4, 2, 4, 1, 3, 1, 3,
7785 2, 3, 1, 1, 4, 3, 3, 3, 3, 2,
7786 1, 1, 1, 4, 3, 3, 3, 3, 2, 1,
7787 1, 1, 2, 1, 3, 1, 1, 1, 1, 1,
7788 1, 1, 1, 0, 4, 1, 1, 1, 1, 1,
7789 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7790 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7791 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7792 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7793 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7794 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7795 1, 1, 1, 1, 1, 1, 4, 1, 4, 7,
7796 6, 6, 6, 6, 5, 4, 1, 3, 3, 2,
7797 2, 2, 2, 1, 3, 3, 3, 3, 3, 3,
7798 4, 2, 2, 3, 3, 3, 3, 1, 3, 3,
7799 3, 3, 3, 2, 2, 3, 3, 3, 3, 4,
7800 4, 4, 1, 1, 1, 6, 1, 4, 3, 1,
7801 1, 1, 1, 3, 3, 1, 1, 1, 1, 1,
7802 1, 2, 4, 2, 1, 4, 3, 5, 3, 1,
7803 1, 1, 1, 2, 4, 2, 1, 1, 1, 2,
7804 2, 4, 1, 0, 2, 2, 1, 2, 1, 1,
7805 1, 3, 3, 2, 1, 1, 1, 3, 4, 2,
7806 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7807 1, 0, 4, 0, 4, 3, 3, 2, 3, 3,
7808 1, 4, 3, 1, 6, 4, 3, 2, 1, 2,
7809 1, 6, 6, 4, 4, 0, 6, 0, 5, 5,
7810 0, 0, 9, 0, 6, 0, 7, 0, 5, 0,
7811 5, 0, 5, 1, 1, 1, 1, 1, 1, 1,
7812 1, 1, 2, 2, 1, 2, 1, 1, 1, 1,
7813 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7814 1, 1, 2, 1, 1, 1, 5, 1, 2, 1,
7815 1, 1, 3, 1, 3, 1, 3, 5, 1, 3,
7816 2, 1, 1, 1, 0, 2, 2, 1, 1, 3,
7817 2, 1, 4, 2, 2, 1, 1, 1, 3, 1,
7818 3, 2, 1, 6, 8, 4, 6, 4, 6, 4,
7819 6, 2, 4, 2, 4, 1, 2, 2, 1, 1,
7820 1, 1, 4, 0, 1, 1, 4, 1, 3, 1,
7821 1, 0, 0, 0, 0, 0, 9, 4, 1, 3,
7822 0, 4, 3, 2, 4, 5, 5, 3, 2, 4,
7823 4, 3, 3, 2, 1, 4, 3, 3, 0, 7,
7824 0, 7, 1, 2, 3, 4, 5, 1, 1, 0,
7825 0, 0, 0, 9, 1, 1, 1, 3, 3, 1,
7826 2, 3, 1, 1, 1, 1, 3, 1, 0, 4,
7827 1, 2, 2, 1, 1, 4, 4, 4, 3, 4,
7828 4, 4, 3, 3, 3, 2, 0, 6, 2, 4,
7829 1, 1, 2, 2, 4, 1, 2, 3, 1, 3,
7830 5, 2, 1, 1, 3, 1, 3, 1, 2, 1,
7831 1, 3, 2, 1, 1, 3, 2, 1, 2, 1,
7832 1, 1, 3, 3, 2, 2, 2, 2, 1, 1,
7833 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7834 1, 1, 1, 2, 2, 4, 2, 3, 1, 6,
7835 1, 1, 1, 1, 2, 1, 3, 1, 1, 1,
7836 1, 1, 1, 2, 3, 3, 3, 1, 2, 4,
7837 1, 0, 3, 1, 2, 4, 1, 0, 3, 4,
7838 1, 4, 1, 0, 3, 0, 3, 0, 2, 0,
7839 2, 0, 2, 1, 0, 3, 0, 0, 0, 6,
7840 1, 1, 1, 1, 1, 1, 2, 1, 1, 3,
7841 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
7842 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7843 1, 1, 1, 1, 1, 0, 4, 1, 1, 1,
7844 0, 3, 1, 0, 3, 2, 1, 1, 3, 2,
7845 1, 4, 2, 2, 1, 1, 1, 4, 2, 2,
7846 1, 1, 1, 3, 1, 3, 2, 1, 6, 8,
7847 4, 6, 4, 6, 4, 6, 2, 4, 2, 4,
7848 1, 2, 1, 1, 1, 1, 2, 1, 6, 8,
7849 4, 6, 4, 6, 4, 6, 2, 4, 2, 4,
7850 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
7851 1, 1, 1, 1, 1, 3, 1, 3, 1, 1,
7852 1, 1, 2, 1, 1, 1, 2, 1, 1, 1,
7853 2, 2, 1, 0, 1, 1, 1, 1, 1, 0,
7854 4, 1, 2, 1, 3, 3, 2, 1, 4, 2,
7855 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7856 1, 1, 1, 1, 2, 2, 2, 1, 1, 1,
7861enum { YYENOMEM = -2 };
7863#define yyerrok (yyerrstatus = 0)
7864#define yyclearin (yychar = YYEMPTY)
7866#define YYACCEPT goto yyacceptlab
7867#define YYABORT goto yyabortlab
7868#define YYERROR goto yyerrorlab
7869#define YYNOMEM goto yyexhaustedlab
7872#define YYRECOVERING() (!!yyerrstatus)
7874#define YYBACKUP(Token, Value) \
7876 if (yychar == YYEMPTY) \
7880 YYPOPSTACK (yylen); \
7886 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
7893#define YYERRCODE YYUNDEF
7899#ifndef YYLLOC_DEFAULT
7900# define YYLLOC_DEFAULT(Current, Rhs, N) \
7904 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
7905 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
7906 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
7907 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
7911 (Current).first_line = (Current).last_line = \
7912 YYRHSLOC (Rhs, 0).last_line; \
7913 (Current).first_column = (Current).last_column = \
7914 YYRHSLOC (Rhs, 0).last_column; \
7919#define YYRHSLOC(Rhs, K) ((Rhs)[K])
7927# define YYFPRINTF fprintf
7930# define YYDPRINTF(Args) \
7941# ifndef YYLOCATION_PRINT
7943# if defined YY_LOCATION_PRINT
7947# define YYLOCATION_PRINT(File, Loc, p) YY_LOCATION_PRINT(File, *(Loc), p)
7949# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
7955yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
7958 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
7959 if (0 <= yylocp->first_line)
7961 res += YYFPRINTF (yyo,
"%d", yylocp->first_line);
7962 if (0 <= yylocp->first_column)
7963 res += YYFPRINTF (yyo,
".%d", yylocp->first_column);
7965 if (0 <= yylocp->last_line)
7967 if (yylocp->first_line < yylocp->last_line)
7969 res += YYFPRINTF (yyo,
"-%d", yylocp->last_line);
7971 res += YYFPRINTF (yyo,
".%d", end_col);
7973 else if (0 <= end_col && yylocp->first_column < end_col)
7974 res += YYFPRINTF (yyo,
"-%d", end_col);
7979# define YYLOCATION_PRINT yy_location_print_
7983# define YY_LOCATION_PRINT(File, Loc, p) YYLOCATION_PRINT(File, &(Loc), p)
7987# define YYLOCATION_PRINT(File, Loc, p) ((void) 0)
7990# define YY_LOCATION_PRINT YYLOCATION_PRINT
7996# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p) \
8000 YYFPRINTF (stderr, "%s ", Title); \
8001 yy_symbol_print (stderr, \
8002 Kind, Value, Location, p); \
8003 YYFPRINTF (stderr, "\n"); \
8013yy_symbol_value_print (
FILE *yyo,
8016 FILE *yyoutput = yyo;
8018 YY_USE (yylocationp);
8022 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
8025 case YYSYMBOL_keyword_class:
8028 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8033 case YYSYMBOL_keyword_module:
8036 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8041 case YYSYMBOL_keyword_def:
8044 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8049 case YYSYMBOL_keyword_undef:
8052 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8057 case YYSYMBOL_keyword_begin:
8060 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8065 case YYSYMBOL_keyword_rescue:
8068 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8073 case YYSYMBOL_keyword_ensure:
8076 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8081 case YYSYMBOL_keyword_end:
8084 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8089 case YYSYMBOL_keyword_if:
8092 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8097 case YYSYMBOL_keyword_unless:
8100 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8105 case YYSYMBOL_keyword_then:
8108 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8113 case YYSYMBOL_keyword_elsif:
8116 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8121 case YYSYMBOL_keyword_else:
8124 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8129 case YYSYMBOL_keyword_case:
8132 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8137 case YYSYMBOL_keyword_when:
8140 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8145 case YYSYMBOL_keyword_while:
8148 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8153 case YYSYMBOL_keyword_until:
8156 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8161 case YYSYMBOL_keyword_for:
8164 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8169 case YYSYMBOL_keyword_break:
8172 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8177 case YYSYMBOL_keyword_next:
8180 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8185 case YYSYMBOL_keyword_redo:
8188 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8193 case YYSYMBOL_keyword_retry:
8196 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8201 case YYSYMBOL_keyword_in:
8204 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8209 case YYSYMBOL_keyword_do:
8212 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8217 case YYSYMBOL_keyword_do_cond:
8220 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8225 case YYSYMBOL_keyword_do_block:
8228 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8233 case YYSYMBOL_keyword_do_LAMBDA:
8236 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8241 case YYSYMBOL_keyword_return:
8244 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8249 case YYSYMBOL_keyword_yield:
8252 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8257 case YYSYMBOL_keyword_super:
8260 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8265 case YYSYMBOL_keyword_self:
8268 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8273 case YYSYMBOL_keyword_nil:
8276 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8281 case YYSYMBOL_keyword_true:
8284 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8289 case YYSYMBOL_keyword_false:
8292 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8297 case YYSYMBOL_keyword_and:
8300 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8305 case YYSYMBOL_keyword_or:
8308 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8313 case YYSYMBOL_keyword_not:
8316 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8321 case YYSYMBOL_modifier_if:
8324 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8329 case YYSYMBOL_modifier_unless:
8332 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8337 case YYSYMBOL_modifier_while:
8340 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8345 case YYSYMBOL_modifier_until:
8348 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8353 case YYSYMBOL_modifier_rescue:
8356 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8361 case YYSYMBOL_keyword_alias:
8364 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8369 case YYSYMBOL_keyword_defined:
8372 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8377 case YYSYMBOL_keyword_BEGIN:
8380 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8385 case YYSYMBOL_keyword_END:
8388 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8393 case YYSYMBOL_keyword__LINE__:
8396 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8401 case YYSYMBOL_keyword__FILE__:
8404 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8409 case YYSYMBOL_keyword__ENCODING__:
8412 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8417 case YYSYMBOL_tIDENTIFIER:
8420 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8428 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8433 case YYSYMBOL_tGVAR:
8436 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8441 case YYSYMBOL_tIVAR:
8444 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8449 case YYSYMBOL_tCONSTANT:
8452 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8457 case YYSYMBOL_tCVAR:
8460 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8465 case YYSYMBOL_tLABEL:
8468 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8473 case YYSYMBOL_tINTEGER:
8476 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8478 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8481 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8484 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8486 case NODE_IMAGINARY:
8487 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8496 case YYSYMBOL_tFLOAT:
8499 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8501 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8504 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8507 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8509 case NODE_IMAGINARY:
8510 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8519 case YYSYMBOL_tRATIONAL:
8522 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8524 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8527 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8530 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8532 case NODE_IMAGINARY:
8533 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8542 case YYSYMBOL_tIMAGINARY:
8545 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8547 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8550 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8553 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8555 case NODE_IMAGINARY:
8556 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8565 case YYSYMBOL_tCHAR:
8568 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8570 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8573 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8576 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8578 case NODE_IMAGINARY:
8579 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8588 case YYSYMBOL_tNTH_REF:
8591 rb_parser_printf(p,
"$%ld", RNODE_NTH_REF(((*yyvaluep).node))->nd_nth);
8596 case YYSYMBOL_tBACK_REF:
8599 rb_parser_printf(p,
"$%c", (
int)RNODE_BACK_REF(((*yyvaluep).node))->nd_nth);
8604 case YYSYMBOL_tSTRING_CONTENT:
8607 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8609 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8612 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8615 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8617 case NODE_IMAGINARY:
8618 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8630 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8635 case YYSYMBOL_70_backslash_:
8638 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8643 case YYSYMBOL_72_escaped_horizontal_tab_:
8646 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8651 case YYSYMBOL_73_escaped_form_feed_:
8654 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8659 case YYSYMBOL_74_escaped_carriage_return_:
8662 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8667 case YYSYMBOL_75_escaped_vertical_tab_:
8670 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8675 case YYSYMBOL_tANDDOT:
8678 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8683 case YYSYMBOL_tCOLON2:
8686 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8691 case YYSYMBOL_tOP_ASGN:
8694 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8699 case YYSYMBOL_compstmt_top_stmts:
8702 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8703 rb_parser_printf(p,
"NODE_SPECIAL");
8705 else if (((*yyvaluep).node)) {
8706 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8712 case YYSYMBOL_top_stmts:
8715 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8716 rb_parser_printf(p,
"NODE_SPECIAL");
8718 else if (((*yyvaluep).node)) {
8719 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8725 case YYSYMBOL_top_stmt:
8728 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8729 rb_parser_printf(p,
"NODE_SPECIAL");
8731 else if (((*yyvaluep).node)) {
8732 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8738 case YYSYMBOL_block_open:
8741 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
8742 rb_parser_printf(p,
"NODE_SPECIAL");
8744 else if (((*yyvaluep).node_exits)) {
8745 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8751 case YYSYMBOL_begin_block:
8754 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8755 rb_parser_printf(p,
"NODE_SPECIAL");
8757 else if (((*yyvaluep).node)) {
8758 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8764 case YYSYMBOL_compstmt_stmts:
8767 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8768 rb_parser_printf(p,
"NODE_SPECIAL");
8770 else if (((*yyvaluep).node)) {
8771 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8777 case YYSYMBOL_bodystmt:
8780 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8781 rb_parser_printf(p,
"NODE_SPECIAL");
8783 else if (((*yyvaluep).node)) {
8784 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8790 case YYSYMBOL_stmts:
8793 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8794 rb_parser_printf(p,
"NODE_SPECIAL");
8796 else if (((*yyvaluep).node)) {
8797 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8803 case YYSYMBOL_stmt_or_begin:
8806 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8807 rb_parser_printf(p,
"NODE_SPECIAL");
8809 else if (((*yyvaluep).node)) {
8810 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8816 case YYSYMBOL_allow_exits:
8819 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
8820 rb_parser_printf(p,
"NODE_SPECIAL");
8822 else if (((*yyvaluep).node_exits)) {
8823 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8832 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8833 rb_parser_printf(p,
"NODE_SPECIAL");
8835 else if (((*yyvaluep).node)) {
8836 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8842 case YYSYMBOL_asgn_mrhs:
8845 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8846 rb_parser_printf(p,
"NODE_SPECIAL");
8848 else if (((*yyvaluep).node)) {
8849 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8855 case YYSYMBOL_asgn_command_rhs:
8858 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8859 rb_parser_printf(p,
"NODE_SPECIAL");
8861 else if (((*yyvaluep).node)) {
8862 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8868 case YYSYMBOL_command_asgn:
8871 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8872 rb_parser_printf(p,
"NODE_SPECIAL");
8874 else if (((*yyvaluep).node)) {
8875 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8881 case YYSYMBOL_op_asgn_command_rhs:
8884 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8885 rb_parser_printf(p,
"NODE_SPECIAL");
8887 else if (((*yyvaluep).node)) {
8888 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8894 case YYSYMBOL_def_endless_method_endless_command:
8897 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8898 rb_parser_printf(p,
"NODE_SPECIAL");
8900 else if (((*yyvaluep).node)) {
8901 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8907 case YYSYMBOL_endless_command:
8910 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8911 rb_parser_printf(p,
"NODE_SPECIAL");
8913 else if (((*yyvaluep).node)) {
8914 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8920 case YYSYMBOL_command_rhs:
8923 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8924 rb_parser_printf(p,
"NODE_SPECIAL");
8926 else if (((*yyvaluep).node)) {
8927 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8936 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8937 rb_parser_printf(p,
"NODE_SPECIAL");
8939 else if (((*yyvaluep).node)) {
8940 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8946 case YYSYMBOL_def_name:
8949 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8954 case YYSYMBOL_defn_head:
8957 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
8958 rb_parser_printf(p,
"NODE_SPECIAL");
8960 else if (((*yyvaluep).node_def_temp)) {
8961 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8967 case YYSYMBOL_defs_head:
8970 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
8971 rb_parser_printf(p,
"NODE_SPECIAL");
8973 else if (((*yyvaluep).node_def_temp)) {
8974 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8980 case YYSYMBOL_value_expr_expr:
8983 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8984 rb_parser_printf(p,
"NODE_SPECIAL");
8986 else if (((*yyvaluep).node)) {
8987 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8993 case YYSYMBOL_expr_value:
8996 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8997 rb_parser_printf(p,
"NODE_SPECIAL");
8999 else if (((*yyvaluep).node)) {
9000 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9006 case YYSYMBOL_expr_value_do:
9009 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9010 rb_parser_printf(p,
"NODE_SPECIAL");
9012 else if (((*yyvaluep).node)) {
9013 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9019 case YYSYMBOL_command_call:
9022 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9023 rb_parser_printf(p,
"NODE_SPECIAL");
9025 else if (((*yyvaluep).node)) {
9026 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9032 case YYSYMBOL_value_expr_command_call:
9035 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9036 rb_parser_printf(p,
"NODE_SPECIAL");
9038 else if (((*yyvaluep).node)) {
9039 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9045 case YYSYMBOL_command_call_value:
9048 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9049 rb_parser_printf(p,
"NODE_SPECIAL");
9051 else if (((*yyvaluep).node)) {
9052 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9058 case YYSYMBOL_block_command:
9061 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9062 rb_parser_printf(p,
"NODE_SPECIAL");
9064 else if (((*yyvaluep).node)) {
9065 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9071 case YYSYMBOL_cmd_brace_block:
9074 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9075 rb_parser_printf(p,
"NODE_SPECIAL");
9077 else if (((*yyvaluep).node)) {
9078 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9084 case YYSYMBOL_fcall:
9087 if ((
NODE *)((*yyvaluep).node_fcall) == (
NODE *)-1) {
9088 rb_parser_printf(p,
"NODE_SPECIAL");
9090 else if (((*yyvaluep).node_fcall)) {
9091 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_fcall)))));
9097 case YYSYMBOL_command:
9100 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9101 rb_parser_printf(p,
"NODE_SPECIAL");
9103 else if (((*yyvaluep).node)) {
9104 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9113 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9114 rb_parser_printf(p,
"NODE_SPECIAL");
9116 else if (((*yyvaluep).node_masgn)) {
9117 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9123 case YYSYMBOL_mlhs_inner:
9126 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9127 rb_parser_printf(p,
"NODE_SPECIAL");
9129 else if (((*yyvaluep).node_masgn)) {
9130 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9136 case YYSYMBOL_mlhs_basic:
9139 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9140 rb_parser_printf(p,
"NODE_SPECIAL");
9142 else if (((*yyvaluep).node_masgn)) {
9143 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9149 case YYSYMBOL_mlhs_items_mlhs_item:
9152 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9153 rb_parser_printf(p,
"NODE_SPECIAL");
9155 else if (((*yyvaluep).node)) {
9156 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9162 case YYSYMBOL_mlhs_item:
9165 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9166 rb_parser_printf(p,
"NODE_SPECIAL");
9168 else if (((*yyvaluep).node)) {
9169 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9175 case YYSYMBOL_mlhs_head:
9178 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9179 rb_parser_printf(p,
"NODE_SPECIAL");
9181 else if (((*yyvaluep).node)) {
9182 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9188 case YYSYMBOL_mlhs_node:
9191 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9192 rb_parser_printf(p,
"NODE_SPECIAL");
9194 else if (((*yyvaluep).node)) {
9195 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9204 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9205 rb_parser_printf(p,
"NODE_SPECIAL");
9207 else if (((*yyvaluep).node)) {
9208 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9214 case YYSYMBOL_cname:
9217 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9222 case YYSYMBOL_cpath:
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)))));
9235 case YYSYMBOL_fname:
9238 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9243 case YYSYMBOL_fitem:
9246 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9247 rb_parser_printf(p,
"NODE_SPECIAL");
9249 else if (((*yyvaluep).node)) {
9250 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9256 case YYSYMBOL_undef_list:
9259 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9260 rb_parser_printf(p,
"NODE_SPECIAL");
9262 else if (((*yyvaluep).node)) {
9263 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9272 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9277 case YYSYMBOL_reswords:
9280 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9285 case YYSYMBOL_asgn_arg_rhs:
9288 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9289 rb_parser_printf(p,
"NODE_SPECIAL");
9291 else if (((*yyvaluep).node)) {
9292 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9301 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9302 rb_parser_printf(p,
"NODE_SPECIAL");
9304 else if (((*yyvaluep).node)) {
9305 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9311 case YYSYMBOL_op_asgn_arg_rhs:
9314 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9315 rb_parser_printf(p,
"NODE_SPECIAL");
9317 else if (((*yyvaluep).node)) {
9318 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9324 case YYSYMBOL_range_expr_arg:
9327 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9328 rb_parser_printf(p,
"NODE_SPECIAL");
9330 else if (((*yyvaluep).node)) {
9331 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9337 case YYSYMBOL_def_endless_method_endless_arg:
9340 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9341 rb_parser_printf(p,
"NODE_SPECIAL");
9343 else if (((*yyvaluep).node)) {
9344 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9350 case YYSYMBOL_ternary:
9353 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9354 rb_parser_printf(p,
"NODE_SPECIAL");
9356 else if (((*yyvaluep).node)) {
9357 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9363 case YYSYMBOL_endless_arg:
9366 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9367 rb_parser_printf(p,
"NODE_SPECIAL");
9369 else if (((*yyvaluep).node)) {
9370 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9376 case YYSYMBOL_relop:
9379 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9384 case YYSYMBOL_rel_expr:
9387 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9388 rb_parser_printf(p,
"NODE_SPECIAL");
9390 else if (((*yyvaluep).node)) {
9391 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9397 case YYSYMBOL_value_expr_arg:
9400 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9401 rb_parser_printf(p,
"NODE_SPECIAL");
9403 else if (((*yyvaluep).node)) {
9404 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9410 case YYSYMBOL_arg_value:
9413 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9414 rb_parser_printf(p,
"NODE_SPECIAL");
9416 else if (((*yyvaluep).node)) {
9417 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9423 case YYSYMBOL_aref_args:
9426 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9427 rb_parser_printf(p,
"NODE_SPECIAL");
9429 else if (((*yyvaluep).node)) {
9430 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9436 case YYSYMBOL_arg_rhs:
9439 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9440 rb_parser_printf(p,
"NODE_SPECIAL");
9442 else if (((*yyvaluep).node)) {
9443 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9449 case YYSYMBOL_paren_args:
9452 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9453 rb_parser_printf(p,
"NODE_SPECIAL");
9455 else if (((*yyvaluep).node)) {
9456 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9462 case YYSYMBOL_opt_paren_args:
9465 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9466 rb_parser_printf(p,
"NODE_SPECIAL");
9468 else if (((*yyvaluep).node)) {
9469 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9475 case YYSYMBOL_opt_call_args:
9478 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9479 rb_parser_printf(p,
"NODE_SPECIAL");
9481 else if (((*yyvaluep).node)) {
9482 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9488 case YYSYMBOL_value_expr_command:
9491 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9492 rb_parser_printf(p,
"NODE_SPECIAL");
9494 else if (((*yyvaluep).node)) {
9495 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9501 case YYSYMBOL_call_args:
9504 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9505 rb_parser_printf(p,
"NODE_SPECIAL");
9507 else if (((*yyvaluep).node)) {
9508 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9514 case YYSYMBOL_command_args:
9517 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9518 rb_parser_printf(p,
"NODE_SPECIAL");
9520 else if (((*yyvaluep).node)) {
9521 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9527 case YYSYMBOL_block_arg:
9530 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
9531 rb_parser_printf(p,
"NODE_SPECIAL");
9533 else if (((*yyvaluep).node_block_pass)) {
9534 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9540 case YYSYMBOL_opt_block_arg:
9543 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
9544 rb_parser_printf(p,
"NODE_SPECIAL");
9546 else if (((*yyvaluep).node_block_pass)) {
9547 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9556 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9557 rb_parser_printf(p,
"NODE_SPECIAL");
9559 else if (((*yyvaluep).node)) {
9560 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9566 case YYSYMBOL_arg_splat:
9569 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9570 rb_parser_printf(p,
"NODE_SPECIAL");
9572 else if (((*yyvaluep).node)) {
9573 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9579 case YYSYMBOL_mrhs_arg:
9582 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9583 rb_parser_printf(p,
"NODE_SPECIAL");
9585 else if (((*yyvaluep).node)) {
9586 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9595 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9596 rb_parser_printf(p,
"NODE_SPECIAL");
9598 else if (((*yyvaluep).node)) {
9599 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9605 case YYSYMBOL_primary:
9608 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9609 rb_parser_printf(p,
"NODE_SPECIAL");
9611 else if (((*yyvaluep).node)) {
9612 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9618 case YYSYMBOL_value_expr_primary:
9621 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9622 rb_parser_printf(p,
"NODE_SPECIAL");
9624 else if (((*yyvaluep).node)) {
9625 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9631 case YYSYMBOL_primary_value:
9634 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9635 rb_parser_printf(p,
"NODE_SPECIAL");
9637 else if (((*yyvaluep).node)) {
9638 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9644 case YYSYMBOL_k_while:
9647 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9648 rb_parser_printf(p,
"NODE_SPECIAL");
9650 else if (((*yyvaluep).node_exits)) {
9651 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9657 case YYSYMBOL_k_until:
9660 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9661 rb_parser_printf(p,
"NODE_SPECIAL");
9663 else if (((*yyvaluep).node_exits)) {
9664 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9670 case YYSYMBOL_k_for:
9673 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9674 rb_parser_printf(p,
"NODE_SPECIAL");
9676 else if (((*yyvaluep).node_exits)) {
9677 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9683 case YYSYMBOL_k_def:
9686 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
9687 rb_parser_printf(p,
"NODE_SPECIAL");
9689 else if (((*yyvaluep).node_def_temp)) {
9690 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
9699 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9704 case YYSYMBOL_if_tail:
9707 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9708 rb_parser_printf(p,
"NODE_SPECIAL");
9710 else if (((*yyvaluep).node)) {
9711 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9717 case YYSYMBOL_opt_else:
9720 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9721 rb_parser_printf(p,
"NODE_SPECIAL");
9723 else if (((*yyvaluep).node)) {
9724 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9730 case YYSYMBOL_for_var:
9733 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9734 rb_parser_printf(p,
"NODE_SPECIAL");
9736 else if (((*yyvaluep).node)) {
9737 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9743 case YYSYMBOL_f_marg:
9746 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9747 rb_parser_printf(p,
"NODE_SPECIAL");
9749 else if (((*yyvaluep).node)) {
9750 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9756 case YYSYMBOL_mlhs_items_f_marg:
9759 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9760 rb_parser_printf(p,
"NODE_SPECIAL");
9762 else if (((*yyvaluep).node)) {
9763 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9769 case YYSYMBOL_f_margs:
9772 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9773 rb_parser_printf(p,
"NODE_SPECIAL");
9775 else if (((*yyvaluep).node_masgn)) {
9776 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9782 case YYSYMBOL_f_rest_marg:
9785 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9786 rb_parser_printf(p,
"NODE_SPECIAL");
9788 else if (((*yyvaluep).node)) {
9789 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9795 case YYSYMBOL_f_any_kwrest:
9798 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9803 case YYSYMBOL_f_kw_primary_value:
9806 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9807 rb_parser_printf(p,
"NODE_SPECIAL");
9809 else if (((*yyvaluep).node_kw_arg)) {
9810 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9816 case YYSYMBOL_f_kwarg_primary_value:
9819 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9820 rb_parser_printf(p,
"NODE_SPECIAL");
9822 else if (((*yyvaluep).node_kw_arg)) {
9823 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9829 case YYSYMBOL_opt_f_block_arg_none:
9832 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9837 case YYSYMBOL_args_tail_basic_primary_value_none:
9840 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9841 rb_parser_printf(p,
"NODE_SPECIAL");
9843 else if (((*yyvaluep).node_args)) {
9844 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9850 case YYSYMBOL_block_args_tail:
9853 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9854 rb_parser_printf(p,
"NODE_SPECIAL");
9856 else if (((*yyvaluep).node_args)) {
9857 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9863 case YYSYMBOL_excessed_comma:
9866 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9871 case YYSYMBOL_f_opt_primary_value:
9874 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9875 rb_parser_printf(p,
"NODE_SPECIAL");
9877 else if (((*yyvaluep).node_opt_arg)) {
9878 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9884 case YYSYMBOL_f_opt_arg_primary_value:
9887 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9888 rb_parser_printf(p,
"NODE_SPECIAL");
9890 else if (((*yyvaluep).node_opt_arg)) {
9891 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9897 case YYSYMBOL_opt_args_tail_block_args_tail_none:
9900 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9901 rb_parser_printf(p,
"NODE_SPECIAL");
9903 else if (((*yyvaluep).node_args)) {
9904 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9910 case YYSYMBOL_args_list_primary_value_opt_args_tail_block_args_tail_none:
9913 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9914 rb_parser_printf(p,
"NODE_SPECIAL");
9916 else if (((*yyvaluep).node_args)) {
9917 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9923 case YYSYMBOL_block_param:
9926 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9927 rb_parser_printf(p,
"NODE_SPECIAL");
9929 else if (((*yyvaluep).node_args)) {
9930 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9936 case YYSYMBOL_tail_only_args_block_args_tail:
9939 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9940 rb_parser_printf(p,
"NODE_SPECIAL");
9942 else if (((*yyvaluep).node_args)) {
9943 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9949 case YYSYMBOL_opt_block_param_def:
9952 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9953 rb_parser_printf(p,
"NODE_SPECIAL");
9955 else if (((*yyvaluep).node_args)) {
9956 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9962 case YYSYMBOL_block_param_def:
9965 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9966 rb_parser_printf(p,
"NODE_SPECIAL");
9968 else if (((*yyvaluep).node_args)) {
9969 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9975 case YYSYMBOL_opt_block_param:
9978 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9979 rb_parser_printf(p,
"NODE_SPECIAL");
9981 else if (((*yyvaluep).node_args)) {
9982 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9988 case YYSYMBOL_opt_bv_decl:
9991 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9996 case YYSYMBOL_bv_decls:
9999 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10001#line 10002 "parse.c"
10004 case YYSYMBOL_bvar:
10005#line 2627 "parse.y"
10007 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10009#line 10010 "parse.c"
10012 case YYSYMBOL_numparam:
10013#line 2618 "parse.y"
10015 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10016 rb_parser_printf(p,
"NODE_SPECIAL");
10018 else if (((*yyvaluep).node)) {
10019 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10022#line 10023 "parse.c"
10025 case YYSYMBOL_it_id:
10026#line 2627 "parse.y"
10028 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10030#line 10031 "parse.c"
10033 case YYSYMBOL_lambda:
10034#line 2618 "parse.y"
10036 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10037 rb_parser_printf(p,
"NODE_SPECIAL");
10039 else if (((*yyvaluep).node)) {
10040 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10043#line 10044 "parse.c"
10046 case YYSYMBOL_f_larglist:
10047#line 2618 "parse.y"
10049 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10050 rb_parser_printf(p,
"NODE_SPECIAL");
10052 else if (((*yyvaluep).node_args)) {
10053 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10056#line 10057 "parse.c"
10059 case YYSYMBOL_do_block:
10060#line 2618 "parse.y"
10062 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10063 rb_parser_printf(p,
"NODE_SPECIAL");
10065 else if (((*yyvaluep).node)) {
10066 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10069#line 10070 "parse.c"
10072 case YYSYMBOL_block_call:
10073#line 2618 "parse.y"
10075 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10076 rb_parser_printf(p,
"NODE_SPECIAL");
10078 else if (((*yyvaluep).node)) {
10079 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10082#line 10083 "parse.c"
10085 case YYSYMBOL_method_call:
10086#line 2618 "parse.y"
10088 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10089 rb_parser_printf(p,
"NODE_SPECIAL");
10091 else if (((*yyvaluep).node)) {
10092 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10095#line 10096 "parse.c"
10098 case YYSYMBOL_brace_block:
10099#line 2618 "parse.y"
10101 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10102 rb_parser_printf(p,
"NODE_SPECIAL");
10104 else if (((*yyvaluep).node)) {
10105 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10108#line 10109 "parse.c"
10111 case YYSYMBOL_brace_body:
10112#line 2618 "parse.y"
10114 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10115 rb_parser_printf(p,
"NODE_SPECIAL");
10117 else if (((*yyvaluep).node)) {
10118 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10121#line 10122 "parse.c"
10124 case YYSYMBOL_do_body:
10125#line 2618 "parse.y"
10127 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10128 rb_parser_printf(p,
"NODE_SPECIAL");
10130 else if (((*yyvaluep).node)) {
10131 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10134#line 10135 "parse.c"
10137 case YYSYMBOL_case_args:
10138#line 2618 "parse.y"
10140 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10141 rb_parser_printf(p,
"NODE_SPECIAL");
10143 else if (((*yyvaluep).node)) {
10144 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10147#line 10148 "parse.c"
10150 case YYSYMBOL_case_body:
10151#line 2618 "parse.y"
10153 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10154 rb_parser_printf(p,
"NODE_SPECIAL");
10156 else if (((*yyvaluep).node)) {
10157 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10160#line 10161 "parse.c"
10163 case YYSYMBOL_cases:
10164#line 2618 "parse.y"
10166 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10167 rb_parser_printf(p,
"NODE_SPECIAL");
10169 else if (((*yyvaluep).node)) {
10170 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10173#line 10174 "parse.c"
10176 case YYSYMBOL_p_case_body:
10177#line 2618 "parse.y"
10179 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10180 rb_parser_printf(p,
"NODE_SPECIAL");
10182 else if (((*yyvaluep).node)) {
10183 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10186#line 10187 "parse.c"
10189 case YYSYMBOL_p_cases:
10190#line 2618 "parse.y"
10192 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10193 rb_parser_printf(p,
"NODE_SPECIAL");
10195 else if (((*yyvaluep).node)) {
10196 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10199#line 10200 "parse.c"
10202 case YYSYMBOL_p_top_expr:
10203#line 2618 "parse.y"
10205 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10206 rb_parser_printf(p,
"NODE_SPECIAL");
10208 else if (((*yyvaluep).node)) {
10209 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10212#line 10213 "parse.c"
10215 case YYSYMBOL_p_top_expr_body:
10216#line 2618 "parse.y"
10218 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10219 rb_parser_printf(p,
"NODE_SPECIAL");
10221 else if (((*yyvaluep).node)) {
10222 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10225#line 10226 "parse.c"
10228 case YYSYMBOL_p_expr:
10229#line 2618 "parse.y"
10231 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10232 rb_parser_printf(p,
"NODE_SPECIAL");
10234 else if (((*yyvaluep).node)) {
10235 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10238#line 10239 "parse.c"
10241 case YYSYMBOL_p_as:
10242#line 2618 "parse.y"
10244 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10245 rb_parser_printf(p,
"NODE_SPECIAL");
10247 else if (((*yyvaluep).node)) {
10248 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10251#line 10252 "parse.c"
10254 case YYSYMBOL_p_alt:
10255#line 2618 "parse.y"
10257 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10258 rb_parser_printf(p,
"NODE_SPECIAL");
10260 else if (((*yyvaluep).node)) {
10261 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10264#line 10265 "parse.c"
10267 case YYSYMBOL_p_expr_basic:
10268#line 2618 "parse.y"
10270 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10271 rb_parser_printf(p,
"NODE_SPECIAL");
10273 else if (((*yyvaluep).node)) {
10274 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10277#line 10278 "parse.c"
10280 case YYSYMBOL_p_args:
10281#line 2618 "parse.y"
10283 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10284 rb_parser_printf(p,
"NODE_SPECIAL");
10286 else if (((*yyvaluep).node)) {
10287 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10290#line 10291 "parse.c"
10293 case YYSYMBOL_p_args_head:
10294#line 2618 "parse.y"
10296 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10297 rb_parser_printf(p,
"NODE_SPECIAL");
10299 else if (((*yyvaluep).node)) {
10300 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10303#line 10304 "parse.c"
10306 case YYSYMBOL_p_args_tail:
10307#line 2618 "parse.y"
10309 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10310 rb_parser_printf(p,
"NODE_SPECIAL");
10312 else if (((*yyvaluep).node)) {
10313 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10316#line 10317 "parse.c"
10319 case YYSYMBOL_p_find:
10320#line 2618 "parse.y"
10322 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10323 rb_parser_printf(p,
"NODE_SPECIAL");
10325 else if (((*yyvaluep).node)) {
10326 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10329#line 10330 "parse.c"
10332 case YYSYMBOL_p_rest:
10333#line 2618 "parse.y"
10335 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10336 rb_parser_printf(p,
"NODE_SPECIAL");
10338 else if (((*yyvaluep).node)) {
10339 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10342#line 10343 "parse.c"
10345 case YYSYMBOL_p_args_post:
10346#line 2618 "parse.y"
10348 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10349 rb_parser_printf(p,
"NODE_SPECIAL");
10351 else if (((*yyvaluep).node)) {
10352 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10355#line 10356 "parse.c"
10358 case YYSYMBOL_p_arg:
10359#line 2618 "parse.y"
10361 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10362 rb_parser_printf(p,
"NODE_SPECIAL");
10364 else if (((*yyvaluep).node)) {
10365 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10368#line 10369 "parse.c"
10371 case YYSYMBOL_p_kwargs:
10372#line 2618 "parse.y"
10374 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10375 rb_parser_printf(p,
"NODE_SPECIAL");
10377 else if (((*yyvaluep).node)) {
10378 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10381#line 10382 "parse.c"
10384 case YYSYMBOL_p_kwarg:
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_p_kw:
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_kw_label:
10411#line 2627 "parse.y"
10413 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10415#line 10416 "parse.c"
10418 case YYSYMBOL_p_kwrest:
10419#line 2627 "parse.y"
10421 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10423#line 10424 "parse.c"
10426 case YYSYMBOL_p_kwnorest:
10427#line 2627 "parse.y"
10429 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10431#line 10432 "parse.c"
10434 case YYSYMBOL_p_any_kwrest:
10435#line 2627 "parse.y"
10437 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10439#line 10440 "parse.c"
10442 case YYSYMBOL_p_value:
10443#line 2618 "parse.y"
10445 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10446 rb_parser_printf(p,
"NODE_SPECIAL");
10448 else if (((*yyvaluep).node)) {
10449 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10452#line 10453 "parse.c"
10455 case YYSYMBOL_range_expr_p_primitive:
10456#line 2618 "parse.y"
10458 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10459 rb_parser_printf(p,
"NODE_SPECIAL");
10461 else if (((*yyvaluep).node)) {
10462 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10465#line 10466 "parse.c"
10468 case YYSYMBOL_p_primitive:
10469#line 2618 "parse.y"
10471 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10472 rb_parser_printf(p,
"NODE_SPECIAL");
10474 else if (((*yyvaluep).node)) {
10475 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10478#line 10479 "parse.c"
10481 case YYSYMBOL_p_variable:
10482#line 2618 "parse.y"
10484 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10485 rb_parser_printf(p,
"NODE_SPECIAL");
10487 else if (((*yyvaluep).node)) {
10488 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10491#line 10492 "parse.c"
10494 case YYSYMBOL_p_var_ref:
10495#line 2618 "parse.y"
10497 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10498 rb_parser_printf(p,
"NODE_SPECIAL");
10500 else if (((*yyvaluep).node)) {
10501 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10504#line 10505 "parse.c"
10507 case YYSYMBOL_p_expr_ref:
10508#line 2618 "parse.y"
10510 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10511 rb_parser_printf(p,
"NODE_SPECIAL");
10513 else if (((*yyvaluep).node)) {
10514 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10517#line 10518 "parse.c"
10520 case YYSYMBOL_p_const:
10521#line 2618 "parse.y"
10523 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10524 rb_parser_printf(p,
"NODE_SPECIAL");
10526 else if (((*yyvaluep).node)) {
10527 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10530#line 10531 "parse.c"
10533 case YYSYMBOL_opt_rescue:
10534#line 2618 "parse.y"
10536 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10537 rb_parser_printf(p,
"NODE_SPECIAL");
10539 else if (((*yyvaluep).node)) {
10540 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10543#line 10544 "parse.c"
10546 case YYSYMBOL_exc_list:
10547#line 2618 "parse.y"
10549 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10550 rb_parser_printf(p,
"NODE_SPECIAL");
10552 else if (((*yyvaluep).node)) {
10553 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10556#line 10557 "parse.c"
10559 case YYSYMBOL_exc_var:
10560#line 2618 "parse.y"
10562 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10563 rb_parser_printf(p,
"NODE_SPECIAL");
10565 else if (((*yyvaluep).node)) {
10566 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10569#line 10570 "parse.c"
10572 case YYSYMBOL_opt_ensure:
10573#line 2618 "parse.y"
10575 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10576 rb_parser_printf(p,
"NODE_SPECIAL");
10578 else if (((*yyvaluep).node)) {
10579 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10582#line 10583 "parse.c"
10585 case YYSYMBOL_literal:
10586#line 2618 "parse.y"
10588 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10589 rb_parser_printf(p,
"NODE_SPECIAL");
10591 else if (((*yyvaluep).node)) {
10592 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10595#line 10596 "parse.c"
10598 case YYSYMBOL_strings:
10599#line 2618 "parse.y"
10601 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10602 rb_parser_printf(p,
"NODE_SPECIAL");
10604 else if (((*yyvaluep).node)) {
10605 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10608#line 10609 "parse.c"
10611 case YYSYMBOL_string:
10612#line 2618 "parse.y"
10614 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10615 rb_parser_printf(p,
"NODE_SPECIAL");
10617 else if (((*yyvaluep).node)) {
10618 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10621#line 10622 "parse.c"
10624 case YYSYMBOL_string1:
10625#line 2618 "parse.y"
10627 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10628 rb_parser_printf(p,
"NODE_SPECIAL");
10630 else if (((*yyvaluep).node)) {
10631 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10634#line 10635 "parse.c"
10637 case YYSYMBOL_xstring:
10638#line 2618 "parse.y"
10640 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10641 rb_parser_printf(p,
"NODE_SPECIAL");
10643 else if (((*yyvaluep).node)) {
10644 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10647#line 10648 "parse.c"
10650 case YYSYMBOL_regexp:
10651#line 2618 "parse.y"
10653 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10654 rb_parser_printf(p,
"NODE_SPECIAL");
10656 else if (((*yyvaluep).node)) {
10657 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10660#line 10661 "parse.c"
10663 case YYSYMBOL_words_tWORDS_BEG_word_list:
10664#line 2618 "parse.y"
10666 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10667 rb_parser_printf(p,
"NODE_SPECIAL");
10669 else if (((*yyvaluep).node)) {
10670 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10673#line 10674 "parse.c"
10676 case YYSYMBOL_words:
10677#line 2618 "parse.y"
10679 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10680 rb_parser_printf(p,
"NODE_SPECIAL");
10682 else if (((*yyvaluep).node)) {
10683 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10686#line 10687 "parse.c"
10689 case YYSYMBOL_word_list:
10690#line 2618 "parse.y"
10692 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10693 rb_parser_printf(p,
"NODE_SPECIAL");
10695 else if (((*yyvaluep).node)) {
10696 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10699#line 10700 "parse.c"
10702 case YYSYMBOL_word:
10703#line 2618 "parse.y"
10705 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10706 rb_parser_printf(p,
"NODE_SPECIAL");
10708 else if (((*yyvaluep).node)) {
10709 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10712#line 10713 "parse.c"
10715 case YYSYMBOL_words_tSYMBOLS_BEG_symbol_list:
10716#line 2618 "parse.y"
10718 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10719 rb_parser_printf(p,
"NODE_SPECIAL");
10721 else if (((*yyvaluep).node)) {
10722 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10725#line 10726 "parse.c"
10728 case YYSYMBOL_symbols:
10729#line 2618 "parse.y"
10731 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10732 rb_parser_printf(p,
"NODE_SPECIAL");
10734 else if (((*yyvaluep).node)) {
10735 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10738#line 10739 "parse.c"
10741 case YYSYMBOL_symbol_list:
10742#line 2618 "parse.y"
10744 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10745 rb_parser_printf(p,
"NODE_SPECIAL");
10747 else if (((*yyvaluep).node)) {
10748 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10751#line 10752 "parse.c"
10754 case YYSYMBOL_words_tQWORDS_BEG_qword_list:
10755#line 2618 "parse.y"
10757 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10758 rb_parser_printf(p,
"NODE_SPECIAL");
10760 else if (((*yyvaluep).node)) {
10761 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10764#line 10765 "parse.c"
10767 case YYSYMBOL_qwords:
10768#line 2618 "parse.y"
10770 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10771 rb_parser_printf(p,
"NODE_SPECIAL");
10773 else if (((*yyvaluep).node)) {
10774 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10777#line 10778 "parse.c"
10780 case YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list:
10781#line 2618 "parse.y"
10783 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10784 rb_parser_printf(p,
"NODE_SPECIAL");
10786 else if (((*yyvaluep).node)) {
10787 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10790#line 10791 "parse.c"
10793 case YYSYMBOL_qsymbols:
10794#line 2618 "parse.y"
10796 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10797 rb_parser_printf(p,
"NODE_SPECIAL");
10799 else if (((*yyvaluep).node)) {
10800 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10803#line 10804 "parse.c"
10806 case YYSYMBOL_qword_list:
10807#line 2618 "parse.y"
10809 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10810 rb_parser_printf(p,
"NODE_SPECIAL");
10812 else if (((*yyvaluep).node)) {
10813 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10816#line 10817 "parse.c"
10819 case YYSYMBOL_qsym_list:
10820#line 2618 "parse.y"
10822 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10823 rb_parser_printf(p,
"NODE_SPECIAL");
10825 else if (((*yyvaluep).node)) {
10826 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10829#line 10830 "parse.c"
10832 case YYSYMBOL_string_contents:
10833#line 2618 "parse.y"
10835 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10836 rb_parser_printf(p,
"NODE_SPECIAL");
10838 else if (((*yyvaluep).node)) {
10839 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10842#line 10843 "parse.c"
10845 case YYSYMBOL_xstring_contents:
10846#line 2618 "parse.y"
10848 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10849 rb_parser_printf(p,
"NODE_SPECIAL");
10851 else if (((*yyvaluep).node)) {
10852 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10855#line 10856 "parse.c"
10858 case YYSYMBOL_regexp_contents:
10859#line 2618 "parse.y"
10861 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10862 rb_parser_printf(p,
"NODE_SPECIAL");
10864 else if (((*yyvaluep).node)) {
10865 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10868#line 10869 "parse.c"
10871 case YYSYMBOL_string_content:
10872#line 2618 "parse.y"
10874 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10875 rb_parser_printf(p,
"NODE_SPECIAL");
10877 else if (((*yyvaluep).node)) {
10878 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10881#line 10882 "parse.c"
10884 case YYSYMBOL_string_dvar:
10885#line 2618 "parse.y"
10887 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10888 rb_parser_printf(p,
"NODE_SPECIAL");
10890 else if (((*yyvaluep).node)) {
10891 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10894#line 10895 "parse.c"
10897 case YYSYMBOL_symbol:
10898#line 2618 "parse.y"
10900 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10901 rb_parser_printf(p,
"NODE_SPECIAL");
10903 else if (((*yyvaluep).node)) {
10904 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10907#line 10908 "parse.c"
10910 case YYSYMBOL_ssym:
10911#line 2618 "parse.y"
10913 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10914 rb_parser_printf(p,
"NODE_SPECIAL");
10916 else if (((*yyvaluep).node)) {
10917 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10920#line 10921 "parse.c"
10924#line 2627 "parse.y"
10926 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10928#line 10929 "parse.c"
10931 case YYSYMBOL_dsym:
10932#line 2618 "parse.y"
10934 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10935 rb_parser_printf(p,
"NODE_SPECIAL");
10937 else if (((*yyvaluep).node)) {
10938 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10941#line 10942 "parse.c"
10944 case YYSYMBOL_numeric:
10945#line 2618 "parse.y"
10947 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10948 rb_parser_printf(p,
"NODE_SPECIAL");
10950 else if (((*yyvaluep).node)) {
10951 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10954#line 10955 "parse.c"
10957 case YYSYMBOL_simple_numeric:
10958#line 2618 "parse.y"
10960 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10961 rb_parser_printf(p,
"NODE_SPECIAL");
10963 else if (((*yyvaluep).node)) {
10964 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10967#line 10968 "parse.c"
10970 case YYSYMBOL_nonlocal_var:
10971#line 2627 "parse.y"
10973 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10975#line 10976 "parse.c"
10978 case YYSYMBOL_user_variable:
10979#line 2627 "parse.y"
10981 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10983#line 10984 "parse.c"
10986 case YYSYMBOL_keyword_variable:
10987#line 2627 "parse.y"
10989 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10991#line 10992 "parse.c"
10994 case YYSYMBOL_var_ref:
10995#line 2618 "parse.y"
10997 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10998 rb_parser_printf(p,
"NODE_SPECIAL");
11000 else if (((*yyvaluep).node)) {
11001 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11004#line 11005 "parse.c"
11007 case YYSYMBOL_var_lhs:
11008#line 2618 "parse.y"
11010 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11011 rb_parser_printf(p,
"NODE_SPECIAL");
11013 else if (((*yyvaluep).node)) {
11014 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11017#line 11018 "parse.c"
11020 case YYSYMBOL_backref:
11021#line 2618 "parse.y"
11023 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11024 rb_parser_printf(p,
"NODE_SPECIAL");
11026 else if (((*yyvaluep).node)) {
11027 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11030#line 11031 "parse.c"
11033 case YYSYMBOL_superclass:
11034#line 2618 "parse.y"
11036 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11037 rb_parser_printf(p,
"NODE_SPECIAL");
11039 else if (((*yyvaluep).node)) {
11040 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11043#line 11044 "parse.c"
11046 case YYSYMBOL_f_opt_paren_args:
11047#line 2618 "parse.y"
11049 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11050 rb_parser_printf(p,
"NODE_SPECIAL");
11052 else if (((*yyvaluep).node_args)) {
11053 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11056#line 11057 "parse.c"
11059 case YYSYMBOL_f_empty_arg:
11060#line 2618 "parse.y"
11062 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11063 rb_parser_printf(p,
"NODE_SPECIAL");
11065 else if (((*yyvaluep).node_args)) {
11066 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11069#line 11070 "parse.c"
11072 case YYSYMBOL_f_paren_args:
11073#line 2618 "parse.y"
11075 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11076 rb_parser_printf(p,
"NODE_SPECIAL");
11078 else if (((*yyvaluep).node_args)) {
11079 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11082#line 11083 "parse.c"
11085 case YYSYMBOL_f_arglist:
11086#line 2618 "parse.y"
11088 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11089 rb_parser_printf(p,
"NODE_SPECIAL");
11091 else if (((*yyvaluep).node_args)) {
11092 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11095#line 11096 "parse.c"
11098 case YYSYMBOL_f_kw_arg_value:
11099#line 2618 "parse.y"
11101 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
11102 rb_parser_printf(p,
"NODE_SPECIAL");
11104 else if (((*yyvaluep).node_kw_arg)) {
11105 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
11108#line 11109 "parse.c"
11111 case YYSYMBOL_f_kwarg_arg_value:
11112#line 2618 "parse.y"
11114 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
11115 rb_parser_printf(p,
"NODE_SPECIAL");
11117 else if (((*yyvaluep).node_kw_arg)) {
11118 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
11121#line 11122 "parse.c"
11124 case YYSYMBOL_opt_f_block_arg_opt_comma:
11125#line 2627 "parse.y"
11127 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11129#line 11130 "parse.c"
11132 case YYSYMBOL_args_tail_basic_arg_value_opt_comma:
11133#line 2618 "parse.y"
11135 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11136 rb_parser_printf(p,
"NODE_SPECIAL");
11138 else if (((*yyvaluep).node_args)) {
11139 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11142#line 11143 "parse.c"
11145 case YYSYMBOL_args_tail:
11146#line 2618 "parse.y"
11148 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11149 rb_parser_printf(p,
"NODE_SPECIAL");
11151 else if (((*yyvaluep).node_args)) {
11152 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11155#line 11156 "parse.c"
11158 case YYSYMBOL_args_tail_basic_arg_value_none:
11159#line 2618 "parse.y"
11161 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11162 rb_parser_printf(p,
"NODE_SPECIAL");
11164 else if (((*yyvaluep).node_args)) {
11165 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11168#line 11169 "parse.c"
11171 case YYSYMBOL_largs_tail:
11172#line 2618 "parse.y"
11174 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11175 rb_parser_printf(p,
"NODE_SPECIAL");
11177 else if (((*yyvaluep).node_args)) {
11178 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11181#line 11182 "parse.c"
11184 case YYSYMBOL_f_opt_arg_value:
11185#line 2618 "parse.y"
11187 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
11188 rb_parser_printf(p,
"NODE_SPECIAL");
11190 else if (((*yyvaluep).node_opt_arg)) {
11191 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
11194#line 11195 "parse.c"
11197 case YYSYMBOL_f_opt_arg_arg_value:
11198#line 2618 "parse.y"
11200 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
11201 rb_parser_printf(p,
"NODE_SPECIAL");
11203 else if (((*yyvaluep).node_opt_arg)) {
11204 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
11207#line 11208 "parse.c"
11210 case YYSYMBOL_opt_args_tail_args_tail_opt_comma:
11211#line 2618 "parse.y"
11213 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11214 rb_parser_printf(p,
"NODE_SPECIAL");
11216 else if (((*yyvaluep).node_args)) {
11217 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11220#line 11221 "parse.c"
11223 case YYSYMBOL_args_list_arg_value_opt_args_tail_args_tail_opt_comma:
11224#line 2618 "parse.y"
11226 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11227 rb_parser_printf(p,
"NODE_SPECIAL");
11229 else if (((*yyvaluep).node_args)) {
11230 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11233#line 11234 "parse.c"
11236 case YYSYMBOL_f_args_list_args_tail_opt_comma:
11237#line 2618 "parse.y"
11239 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11240 rb_parser_printf(p,
"NODE_SPECIAL");
11242 else if (((*yyvaluep).node_args)) {
11243 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11246#line 11247 "parse.c"
11249 case YYSYMBOL_tail_only_args_args_tail:
11250#line 2618 "parse.y"
11252 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11253 rb_parser_printf(p,
"NODE_SPECIAL");
11255 else if (((*yyvaluep).node_args)) {
11256 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11259#line 11260 "parse.c"
11262 case YYSYMBOL_f_args:
11263#line 2618 "parse.y"
11265 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11266 rb_parser_printf(p,
"NODE_SPECIAL");
11268 else if (((*yyvaluep).node_args)) {
11269 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11272#line 11273 "parse.c"
11275 case YYSYMBOL_opt_args_tail_largs_tail_none:
11276#line 2618 "parse.y"
11278 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11279 rb_parser_printf(p,
"NODE_SPECIAL");
11281 else if (((*yyvaluep).node_args)) {
11282 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11285#line 11286 "parse.c"
11288 case YYSYMBOL_args_list_arg_value_opt_args_tail_largs_tail_none:
11289#line 2618 "parse.y"
11291 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11292 rb_parser_printf(p,
"NODE_SPECIAL");
11294 else if (((*yyvaluep).node_args)) {
11295 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11298#line 11299 "parse.c"
11301 case YYSYMBOL_f_args_list_largs_tail_none:
11302#line 2618 "parse.y"
11304 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11305 rb_parser_printf(p,
"NODE_SPECIAL");
11307 else if (((*yyvaluep).node_args)) {
11308 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11311#line 11312 "parse.c"
11314 case YYSYMBOL_tail_only_args_largs_tail:
11315#line 2618 "parse.y"
11317 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11318 rb_parser_printf(p,
"NODE_SPECIAL");
11320 else if (((*yyvaluep).node_args)) {
11321 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11324#line 11325 "parse.c"
11327 case YYSYMBOL_f_largs:
11328#line 2618 "parse.y"
11330 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
11331 rb_parser_printf(p,
"NODE_SPECIAL");
11333 else if (((*yyvaluep).node_args)) {
11334 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11337#line 11338 "parse.c"
11340 case YYSYMBOL_args_forward:
11341#line 2627 "parse.y"
11343 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11345#line 11346 "parse.c"
11348 case YYSYMBOL_f_bad_arg:
11349#line 2627 "parse.y"
11351 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11353#line 11354 "parse.c"
11356 case YYSYMBOL_f_norm_arg:
11357#line 2627 "parse.y"
11359 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11361#line 11362 "parse.c"
11364 case YYSYMBOL_f_arg_asgn:
11365#line 2627 "parse.y"
11367 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11369#line 11370 "parse.c"
11372 case YYSYMBOL_f_arg_item:
11373#line 2618 "parse.y"
11375 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
11376 rb_parser_printf(p,
"NODE_SPECIAL");
11378 else if (((*yyvaluep).node_args_aux)) {
11379 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11382#line 11383 "parse.c"
11385 case YYSYMBOL_f_arg:
11386#line 2618 "parse.y"
11388 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
11389 rb_parser_printf(p,
"NODE_SPECIAL");
11391 else if (((*yyvaluep).node_args_aux)) {
11392 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11395#line 11396 "parse.c"
11398 case YYSYMBOL_f_label:
11399#line 2627 "parse.y"
11401 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11403#line 11404 "parse.c"
11406 case YYSYMBOL_f_no_kwarg:
11407#line 2627 "parse.y"
11409 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11411#line 11412 "parse.c"
11414 case YYSYMBOL_f_kwrest:
11415#line 2627 "parse.y"
11417 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11419#line 11420 "parse.c"
11422 case YYSYMBOL_f_rest_arg:
11423#line 2627 "parse.y"
11425 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11427#line 11428 "parse.c"
11430 case YYSYMBOL_f_block_arg:
11431#line 2627 "parse.y"
11433 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11435#line 11436 "parse.c"
11438 case YYSYMBOL_opt_comma:
11439#line 2627 "parse.y"
11441 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11443#line 11444 "parse.c"
11446 case YYSYMBOL_value_expr_singleton_expr:
11447#line 2618 "parse.y"
11449 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11450 rb_parser_printf(p,
"NODE_SPECIAL");
11452 else if (((*yyvaluep).node)) {
11453 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11456#line 11457 "parse.c"
11459 case YYSYMBOL_singleton:
11460#line 2618 "parse.y"
11462 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11463 rb_parser_printf(p,
"NODE_SPECIAL");
11465 else if (((*yyvaluep).node)) {
11466 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11469#line 11470 "parse.c"
11472 case YYSYMBOL_singleton_expr:
11473#line 2618 "parse.y"
11475 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11476 rb_parser_printf(p,
"NODE_SPECIAL");
11478 else if (((*yyvaluep).node)) {
11479 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11482#line 11483 "parse.c"
11485 case YYSYMBOL_assoc_list:
11486#line 2618 "parse.y"
11488 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11489 rb_parser_printf(p,
"NODE_SPECIAL");
11491 else if (((*yyvaluep).node)) {
11492 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11495#line 11496 "parse.c"
11498 case YYSYMBOL_assocs:
11499#line 2618 "parse.y"
11501 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11502 rb_parser_printf(p,
"NODE_SPECIAL");
11504 else if (((*yyvaluep).node)) {
11505 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11508#line 11509 "parse.c"
11511 case YYSYMBOL_assoc:
11512#line 2618 "parse.y"
11514 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11515 rb_parser_printf(p,
"NODE_SPECIAL");
11517 else if (((*yyvaluep).node)) {
11518 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11521#line 11522 "parse.c"
11524 case YYSYMBOL_operation2:
11525#line 2627 "parse.y"
11527 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11529#line 11530 "parse.c"
11532 case YYSYMBOL_operation3:
11533#line 2627 "parse.y"
11535 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11537#line 11538 "parse.c"
11540 case YYSYMBOL_dot_or_colon:
11541#line 2627 "parse.y"
11543 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11545#line 11546 "parse.c"
11548 case YYSYMBOL_call_op:
11549#line 2627 "parse.y"
11551 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11553#line 11554 "parse.c"
11556 case YYSYMBOL_call_op2:
11557#line 2627 "parse.y"
11559 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11561#line 11562 "parse.c"
11564 case YYSYMBOL_none:
11565#line 2618 "parse.y"
11567 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11568 rb_parser_printf(p,
"NODE_SPECIAL");
11570 else if (((*yyvaluep).node)) {
11571 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11574#line 11575 "parse.c"
11580 YY_IGNORE_MAYBE_UNINITIALIZED_END
11589yy_symbol_print (
FILE *yyo,
11592 YYFPRINTF (yyo,
"%s %s (",
11593 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
11595 YYLOCATION_PRINT (yyo, yylocationp, p);
11596 YYFPRINTF (yyo,
": ");
11597 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
11598 YYFPRINTF (yyo,
")");
11607yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop,
struct parser_params *p)
11609 YYFPRINTF (stderr,
"Stack now");
11610 for (; yybottom <= yytop; yybottom++)
11612 int yybot = *yybottom;
11613 YYFPRINTF (stderr,
" %d", yybot);
11615 YYFPRINTF (stderr,
"\n");
11618# define YY_STACK_PRINT(Bottom, Top, p) \
11621 yy_stack_print ((Bottom), (Top), p); \
11630yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp,
YYLTYPE *yylsp,
11633 int yylno = yyrline[yyrule];
11634 int yynrhs = yyr2[yyrule];
11636 YYFPRINTF (stderr,
"Reducing stack by rule %d (line %d):\n",
11637 yyrule - 1, yylno);
11639 for (yyi = 0; yyi < yynrhs; yyi++)
11641 YYFPRINTF (stderr,
" $%d = ", yyi + 1);
11642 yy_symbol_print (stderr,
11643 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
11644 &yyvsp[(yyi + 1) - (yynrhs)],
11645 &(yylsp[(yyi + 1) - (yynrhs)]), p);
11646 YYFPRINTF (stderr,
"\n");
11650# define YY_REDUCE_PRINT(Rule, p) \
11653 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
11662# define YYDPRINTF(Args) ((void) 0)
11663# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p)
11664# define YY_STACK_PRINT(Bottom, Top, p)
11665# define YY_REDUCE_PRINT(Rule, p)
11671# define YYINITDEPTH 200
11682# define YYMAXDEPTH 10000
11690 yysymbol_kind_t yytoken;
11702 yysymbol_kind_t yyarg[],
int yyargn)
11706 int yyn = yypact[+*yyctx->yyssp];
11707 if (!yypact_value_is_default (yyn))
11712 int yyxbegin = yyn < 0 ? -yyn : 0;
11714 int yychecklim = YYLAST - yyn + 1;
11715 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
11717 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
11718 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
11719 && !yytable_value_is_error (yytable[yyx + yyn]))
11723 else if (yycount == yyargn)
11726 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
11729 if (yyarg && yycount == 0 && 0 < yyargn)
11730 yyarg[0] = YYSYMBOL_YYEMPTY;
11738# if defined __GLIBC__ && defined _STRING_H
11739# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
11743yystrlen (
const char *yystr)
11746 for (yylen = 0; yystr[yylen]; yylen++)
11754# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
11755# define yystpcpy stpcpy
11760yystpcpy (
char *yydest,
const char *yysrc)
11762 char *yyd = yydest;
11763 const char *yys = yysrc;
11765 while ((*yyd++ = *yys++) !=
'\0')
11782yytnamerr (
char *yyres,
const char *yystr)
11786 YYPTRDIFF_T yyn = 0;
11787 char const *yyp = yystr;
11793 goto do_not_strip_quotes;
11796 if (*++yyp !=
'\\')
11797 goto do_not_strip_quotes;
11813 do_not_strip_quotes: ;
11817 return yystpcpy (yyres, yystr) - yyres;
11819 return yystrlen (yystr);
11826 yysymbol_kind_t yyarg[],
int yyargn)
11853 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
11857 yyarg[yycount] = yyctx->yytoken;
11859 yyn = yypcontext_expected_tokens (yyctx,
11860 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
11861 if (yyn == YYENOMEM)
11878yysyntax_error (YYPTRDIFF_T *yymsg_alloc,
char **yymsg,
11881 enum { YYARGS_MAX = 5 };
11883 const char *yyformat = YY_NULLPTR;
11886 yysymbol_kind_t yyarg[YYARGS_MAX];
11888 YYPTRDIFF_T yysize = 0;
11891 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
11892 if (yycount == YYENOMEM)
11897#define YYCASE_(N, S) \
11902 YYCASE_(0, YY_(
"syntax error"));
11903 YYCASE_(1, YY_(
"syntax error, unexpected %s"));
11904 YYCASE_(2, YY_(
"syntax error, unexpected %s, expecting %s"));
11905 YYCASE_(3, YY_(
"syntax error, unexpected %s, expecting %s or %s"));
11906 YYCASE_(4, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
11907 YYCASE_(5, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
11913 yysize = yystrlen (yyformat) - 2 * yycount + 1;
11916 for (yyi = 0; yyi < yycount; ++yyi)
11918 YYPTRDIFF_T yysize1
11919 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
11920 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
11927 if (*yymsg_alloc < yysize)
11929 *yymsg_alloc = 2 * yysize;
11930 if (! (yysize <= *yymsg_alloc
11931 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
11932 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
11940 char *yyp = *yymsg;
11942 while ((*yyp = *yyformat) !=
'\0')
11943 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
11945 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
11963yydestruct (
const char *yymsg,
11967 YY_USE (yylocationp);
11970 yymsg =
"Deleting";
11971 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp, p);
11973 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
11976 case YYSYMBOL_258_16:
11977#line 2655 "parse.y"
11979 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11981#line 11982 "parse.c"
11984 case YYSYMBOL_259_17:
11985#line 2655 "parse.y"
11987 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11989#line 11990 "parse.c"
11995 YY_IGNORE_MAYBE_UNINITIALIZED_END
12018static const YYSTYPE yyval_default = {};
12019(void) yyval_default;
12021YY_INITIAL_VALUE (
static const YYSTYPE yyval_default;)
12023YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
12026static const YYLTYPE yyloc_default
12027# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
12031YYLTYPE yylloc = yyloc_default;
12037 yy_state_fast_t yystate = 0;
12039 int yyerrstatus = 0;
12045 YYPTRDIFF_T yystacksize = YYINITDEPTH;
12048 yy_state_t yyssa[YYINITDEPTH];
12049 yy_state_t *yyss = yyssa;
12050 yy_state_t *yyssp = yyss;
12066 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
12076 char yymsgbuf[128];
12077 char *yymsg = yymsgbuf;
12078 YYPTRDIFF_T yymsg_alloc =
sizeof yymsgbuf;
12080#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
12086 YYDPRINTF ((stderr,
"Starting parse\n"));
12092#line 2662 "parse.y"
12094 RUBY_SET_YYLLOC_OF_NONE(yylloc);
12097#line 12098 "parse.c"
12116 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
12117 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
12118 YY_IGNORE_USELESS_CAST_BEGIN
12119 *yyssp = YY_CAST (yy_state_t, yystate);
12120 YY_IGNORE_USELESS_CAST_END
12121 YY_STACK_PRINT (yyss, yyssp, p);
12123 if (yyss + yystacksize - 1 <= yyssp)
12124#if !defined yyoverflow && !defined YYSTACK_RELOCATE
12129 YYPTRDIFF_T yysize = yyssp - yyss + 1;
12131# if defined yyoverflow
12136 yy_state_t *yyss1 = yyss;
12144 yyoverflow (YY_(
"memory exhausted"),
12145 &yyss1, yysize * YYSIZEOF (*yyssp),
12146 &yyvs1, yysize * YYSIZEOF (*yyvsp),
12147 &yyls1, yysize * YYSIZEOF (*yylsp),
12155 if (YYMAXDEPTH <= yystacksize)
12158 if (YYMAXDEPTH < yystacksize)
12159 yystacksize = YYMAXDEPTH;
12162 yy_state_t *yyss1 = yyss;
12163 union yyalloc *yyptr =
12164 YY_CAST (
union yyalloc *,
12165 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
12168 YYSTACK_RELOCATE (yyss_alloc, yyss);
12169 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
12170 YYSTACK_RELOCATE (yyls_alloc, yyls);
12171# undef YYSTACK_RELOCATE
12172 if (yyss1 != yyssa)
12173 YYSTACK_FREE (yyss1);
12177 yyssp = yyss + yysize - 1;
12178 yyvsp = yyvs + yysize - 1;
12179 yylsp = yyls + yysize - 1;
12181 YY_IGNORE_USELESS_CAST_BEGIN
12182 YYDPRINTF ((stderr,
"Stack size increased to %ld\n",
12183 YY_CAST (
long, yystacksize)));
12184 YY_IGNORE_USELESS_CAST_END
12186 if (yyss + yystacksize - 1 <= yyssp)
12192 if (yystate == YYFINAL)
12206 yyn = yypact[yystate];
12207 if (yypact_value_is_default (yyn))
12213 if (yychar == YYEMPTY)
12215 YYDPRINTF ((stderr,
"Reading a token\n"));
12216 yychar = yylex (&yylval, &yylloc, p);
12219 if (yychar <= END_OF_INPUT)
12221 yychar = END_OF_INPUT;
12222 yytoken = YYSYMBOL_YYEOF;
12223 YYDPRINTF ((stderr,
"Now at end of input.\n"));
12225 else if (yychar == YYerror)
12232 yytoken = YYSYMBOL_YYerror;
12233 yyerror_range[1] = yylloc;
12238 yytoken = YYTRANSLATE (yychar);
12239 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc, p);
12245 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
12247 yyn = yytable[yyn];
12250 if (yytable_value_is_error (yyn))
12262 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc, p);
12264 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
12266 YY_IGNORE_MAYBE_UNINITIALIZED_END
12269#line 2665 "parse.y"
12271#line 12272 "parse.c"
12283 yyn = yydefact[yystate];
12304 yyval = yyvsp[1-yylen];
12306#line 2666 "parse.y"
12307 {before_reduce(yylen, p);}
12308#line 12309 "parse.c"
12312 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
12313 yyerror_range[1] = yyloc;
12314 YY_REDUCE_PRINT (yyn, p);
12318#line 3170 "parse.y"
12320 SET_LEX_STATE(EXPR_BEG);
12321 local_push(p, ifndef_ripper(1)+0);
12323 if (!ifndef_ripper(p->do_loop) + 0) init_block_exit(p);
12325#line 12326 "parse.c"
12329#line 2985 "parse.y"
12331 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
12333#line 12334 "parse.c"
12337#line 3177 "parse.y"
12339 if ((yyvsp[0].node) && !compile_for_eval) {
12340 NODE *node = (yyvsp[0].node);
12342 if (nd_type_p(node, NODE_BLOCK)) {
12343 while (RNODE_BLOCK(node)->nd_next) {
12344 node = RNODE_BLOCK(node)->nd_next;
12346 node = RNODE_BLOCK(node)->nd_head;
12348 node = remove_begin(node);
12349 void_expr(p, node);
12351 p->eval_tree = NEW_SCOPE(0, block_append(p, p->eval_tree, (yyvsp[0].node)), NULL, &(yyloc));
12355#line 12356 "parse.c"
12359#line 3197 "parse.y"
12361 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12364#line 12365 "parse.c"
12368#line 3202 "parse.y"
12370 (yyval.node) = newline_node((yyvsp[0].node));
12373#line 12374 "parse.c"
12377#line 3207 "parse.y"
12379 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12382#line 12383 "parse.c"
12386#line 3214 "parse.y"
12388 clear_block_exit(p,
true);
12389 (yyval.node) = (yyvsp[0].node);
12391#line 12392 "parse.c"
12395#line 3219 "parse.y"
12397 (yyval.node) = (yyvsp[0].node);
12400#line 12401 "parse.c"
12404#line 3225 "parse.y"
12405 {(yyval.node_exits) = init_block_exit(p);}
12406#line 12407 "parse.c"
12410#line 3228 "parse.y"
12412 restore_block_exit(p, (yyvsp[-2].node_exits));
12413 p->eval_tree_begin = block_append(p, p->eval_tree_begin,
12414 NEW_BEGIN((yyvsp[-1].node), &(yyloc)));
12415 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12418#line 12419 "parse.c"
12422#line 2985 "parse.y"
12424 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
12426#line 12427 "parse.c"
12430#line 3241 "parse.y"
12432 if (!(yyvsp[-1].node)) yyerror1(&(yylsp[0]),
"else without rescue is useless");
12433 next_rescue_context(&p->ctxt, &(yyvsp[-2].ctxt), after_else);
12435#line 12436 "parse.c"
12439#line 3246 "parse.y"
12441 next_rescue_context(&p->ctxt, &(yyvsp[-4].ctxt), after_ensure);
12443#line 12444 "parse.c"
12447#line 3250 "parse.y"
12449 (yyval.node) = new_bodystmt(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12452#line 12453 "parse.c"
12456#line 3257 "parse.y"
12458 next_rescue_context(&p->ctxt, &(yyvsp[-1].ctxt), after_ensure);
12460#line 12461 "parse.c"
12464#line 3261 "parse.y"
12466 (yyval.node) = new_bodystmt(p, (yyvsp[-4].node), (yyvsp[-2].node), 0, (yyvsp[0].node), &(yyloc));
12469#line 12470 "parse.c"
12473#line 3268 "parse.y"
12475 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12478#line 12479 "parse.c"
12482#line 3273 "parse.y"
12484 (yyval.node) = newline_node((yyvsp[0].node));
12487#line 12488 "parse.c"
12491#line 3278 "parse.y"
12493 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12496#line 12497 "parse.c"
12500#line 3286 "parse.y"
12502 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
12504#line 12505 "parse.c"
12508#line 3290 "parse.y"
12510 (yyval.node) = (yyvsp[0].node);
12512#line 12513 "parse.c"
12516#line 3295 "parse.y"
12517 {(yyval.node_exits) = allow_block_exit(p);}
12518#line 12519 "parse.c"
12522#line 3298 "parse.y"
12524 if (p->ctxt.in_def) {
12525 rb_warn0(
"END in method; use at_exit");
12527 (yyval.ctxt) = (yyvsp[0].ctxt);
12528 p->ctxt.in_rescue = before_rescue;
12531#line 12532 "parse.c"
12535#line 3307 "parse.y"
12536 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
12537#line 12538 "parse.c"
12541#line 3308 "parse.y"
12543 (yyval.node) = NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
12546#line 12547 "parse.c"
12550#line 3313 "parse.y"
12552 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].id), &(yyloc), &(yylsp[-2]));
12555#line 12556 "parse.c"
12559#line 3318 "parse.y"
12563 buf[1] = (char)RNODE_BACK_REF((yyvsp[0].node))->nd_nth;
12564 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), rb_intern2(buf, 2), &(yyloc), &(yylsp[-2]));
12567#line 12568 "parse.c"
12571#line 3326 "parse.y"
12573 static const char mesg[] =
"can't make alias for the number variables";
12575 yyerror1(&(yylsp[0]), mesg);
12577 (yyval.node) = NEW_ERROR(&(yyloc));
12580#line 12581 "parse.c"
12584#line 3335 "parse.y"
12586 nd_set_first_loc((yyvsp[0].node), (yylsp[-1]).beg_pos);
12587 RNODE_UNDEF((yyvsp[0].node))->keyword_loc = (yylsp[-1]);
12588 (yyval.node) = (yyvsp[0].node);
12591#line 12592 "parse.c"
12595#line 3342 "parse.y"
12597 (yyval.node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12598 fixpos((yyval.node), (yyvsp[0].node));
12601#line 12602 "parse.c"
12605#line 3348 "parse.y"
12607 (yyval.node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12608 fixpos((yyval.node), (yyvsp[0].node));
12611#line 12612 "parse.c"
12615#line 3354 "parse.y"
12617 clear_block_exit(p,
false);
12618 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12619 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12622 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12626#line 12627 "parse.c"
12630#line 3365 "parse.y"
12632 clear_block_exit(p, 0);
12633 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12634 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12637 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12641#line 12642 "parse.c"
12645#line 3376 "parse.y"
12647 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12649 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12650 resq = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12651 (yyval.node) = NEW_RESCUE(remove_begin((yyvsp[-3].node)), resq, 0, &(yyloc));
12654#line 12655 "parse.c"
12658#line 3385 "parse.y"
12660 clear_block_exit(p,
true);
12661 restore_block_exit(p, (yyvsp[-2].node_exits));
12662 p->ctxt = (yyvsp[-3].ctxt);
12664 NODE *scope = NEW_SCOPE2(0 , 0 , (yyvsp[-1].node) , NULL , &(yyloc));
12665 (yyval.node) = NEW_POSTEXE(scope, &(yyloc), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12666 RNODE_SCOPE(scope)->nd_parent = (yyval.node);
12670#line 12671 "parse.c"
12674#line 3398 "parse.y"
12676 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12679#line 12680 "parse.c"
12683#line 2920 "parse.y"
12685 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12688#line 12689 "parse.c"
12692#line 3405 "parse.y"
12694 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12695 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12696 (yyvsp[0].node) = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12697 loc.beg_pos = (yylsp[-3]).beg_pos;
12698 (yyvsp[-3].node) = NEW_RESCUE((yyvsp[-3].node), (yyvsp[0].node), 0, &loc);
12699 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-6].node_masgn), (yyvsp[-3].node), (yyvsp[-4].ctxt), &(yyloc));
12702#line 12703 "parse.c"
12706#line 3415 "parse.y"
12708 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12711#line 12712 "parse.c"
12715#line 3421 "parse.y"
12718 (yyval.node) = NEW_ERROR(&(yyloc));
12720#line 12721 "parse.c"
12724#line 2920 "parse.y"
12726 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12729#line 12730 "parse.c"
12733#line 3055 "parse.y"
12735 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12738#line 12739 "parse.c"
12742#line 3060 "parse.y"
12744 (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]));
12747#line 12748 "parse.c"
12751#line 3065 "parse.y"
12753 (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]));
12756#line 12757 "parse.c"
12760#line 3070 "parse.y"
12762 (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]));
12765#line 12766 "parse.c"
12769#line 3075 "parse.y"
12771 (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]));
12774#line 12775 "parse.c"
12778#line 3080 "parse.y"
12780 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
12781 (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));
12784#line 12785 "parse.c"
12788#line 3086 "parse.y"
12790 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
12791 (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));
12794#line 12795 "parse.c"
12798#line 3092 "parse.y"
12800 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
12801 (yyval.node) = NEW_ERROR(&(yyloc));
12804#line 12805 "parse.c"
12808#line 2960 "parse.y"
12810 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12811 restore_defun(p, (yyvsp[-3].node_def_temp));
12812 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12813 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
12814 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
12819#line 12820 "parse.c"
12823#line 2971 "parse.y"
12825 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12826 restore_defun(p, (yyvsp[-3].node_def_temp));
12827 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12828 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
12829 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
12834#line 12835 "parse.c"
12838#line 3434 "parse.y"
12840 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12841 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12844#line 12845 "parse.c"
12848#line 3440 "parse.y"
12850 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12853#line 12854 "parse.c"
12857#line 3448 "parse.y"
12859 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12860 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12861 (yyval.node) = NEW_RESCUE((yyvsp[-3].node), NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc));
12864#line 12865 "parse.c"
12868#line 3459 "parse.y"
12870 (yyval.node) = logop(p, idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12873#line 12874 "parse.c"
12877#line 3464 "parse.y"
12879 (yyval.node) = logop(p, idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12882#line 12883 "parse.c"
12886#line 3469 "parse.y"
12888 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12891#line 12892 "parse.c"
12895#line 3474 "parse.y"
12897 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
12900#line 12901 "parse.c"
12904#line 3479 "parse.y"
12906 value_expr(p, (yyvsp[-1].node));
12908#line 12909 "parse.c"
12912#line 3484 "parse.y"
12914 pop_pktbl(p, (yyvsp[-1].tbl));
12915 pop_pvtbl(p, (yyvsp[-2].tbl));
12916 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12917 p->ctxt.in_alt_pattern = (yyvsp[-3].ctxt).in_alt_pattern;
12918 p->ctxt.capture_in_pattern = (yyvsp[-3].ctxt).capture_in_pattern;
12919 (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);
12922#line 12923 "parse.c"
12926#line 3494 "parse.y"
12928 value_expr(p, (yyvsp[-1].node));
12930#line 12931 "parse.c"
12934#line 3499 "parse.y"
12936 pop_pktbl(p, (yyvsp[-1].tbl));
12937 pop_pvtbl(p, (yyvsp[-2].tbl));
12938 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12939 p->ctxt.in_alt_pattern = (yyvsp[-3].ctxt).in_alt_pattern;
12940 p->ctxt.capture_in_pattern = (yyvsp[-3].ctxt).capture_in_pattern;
12941 (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);
12944#line 12945 "parse.c"
12948#line 3512 "parse.y"
12950 numparam_name(p, (yyvsp[0].
id));
12952 p->ctxt.in_def = 1;
12953 p->ctxt.in_rescue = before_rescue;
12954 p->ctxt.cant_return = 0;
12955 (yyval.id) = (yyvsp[0].
id);
12957#line 12958 "parse.c"
12961#line 3523 "parse.y"
12963 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-1].node_def_temp));
12964 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12965 (yyval.node_def_temp)->nd_def = NEW_DEFN((yyvsp[0].
id), 0, &(yyloc));
12968#line 12969 "parse.c"
12972#line 3532 "parse.y"
12974 SET_LEX_STATE(EXPR_FNAME);
12976#line 12977 "parse.c"
12980#line 3536 "parse.y"
12982 SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL);
12983 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-4].node_def_temp));
12984 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12985 (yyval.node_def_temp)->nd_def = NEW_DEFS((yyvsp[-3].node), (yyvsp[0].id), 0, &(yyloc));
12988#line 12989 "parse.c"
12992#line 3155 "parse.y"
12994 value_expr(p, (yyvsp[0].node));
12995 (yyval.node) = (yyvsp[0].node);
12997#line 12998 "parse.c"
13001#line 3547 "parse.y"
13003 (yyval.node) = NEW_ERROR(&(yyloc));
13005#line 13006 "parse.c"
13009#line 3552 "parse.y"
13011#line 13012 "parse.c"
13015#line 3552 "parse.y"
13017#line 13018 "parse.c"
13021#line 3553 "parse.y"
13023 (yyval.node) = (yyvsp[-2].node);
13026#line 13027 "parse.c"
13030#line 3155 "parse.y"
13032 value_expr(p, (yyvsp[0].node));
13033 (yyval.node) = (yyvsp[0].node);
13035#line 13036 "parse.c"
13039#line 3568 "parse.y"
13041 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13044#line 13045 "parse.c"
13048#line 3575 "parse.y"
13050 (yyval.node) = (yyvsp[-1].node);
13051 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
13054#line 13055 "parse.c"
13058#line 3583 "parse.y"
13060 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
13063#line 13064 "parse.c"
13067#line 3583 "parse.y"
13069 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
13072#line 13073 "parse.c"
13076#line 3583 "parse.y"
13078 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
13081#line 13082 "parse.c"
13085#line 3590 "parse.y"
13087 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
13088 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
13089 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
13092#line 13093 "parse.c"
13096#line 3597 "parse.y"
13098 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
13099 (yyvsp[-2].node_fcall)->nd_args = (yyvsp[-1].node);
13100 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-2].node_fcall), (yyvsp[0].node), &(yyloc));
13101 fixpos((yyval.node), RNODE((yyvsp[-2].node_fcall)));
13102 nd_set_last_loc((yyvsp[-2].node_fcall), (yylsp[-1]).end_pos);
13105#line 13106 "parse.c"
13109#line 3606 "parse.y"
13111 (yyval.node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
13114#line 13115 "parse.c"
13118#line 3611 "parse.y"
13120 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
13123#line 13124 "parse.c"
13127#line 3616 "parse.y"
13129 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
13132#line 13133 "parse.c"
13136#line 3621 "parse.y"
13138 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-4].node), (yyvsp[-2].id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
13141#line 13142 "parse.c"
13145#line 3626 "parse.y"
13147 set_embraced_location((yyvsp[-1].node), &(yylsp[-2]), &(yylsp[0]));
13148 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-5].node), (yyvsp[-3].id), 0, (yyvsp[-1].node), &(yylsp[-3]), &(yyloc));
13151#line 13152 "parse.c"
13155#line 3632 "parse.y"
13157 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
13158 fixpos((yyval.node), (yyvsp[0].node));
13161#line 13162 "parse.c"
13165#line 3638 "parse.y"
13167 (yyval.node) = NEW_YIELD((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
13168 fixpos((yyval.node), (yyvsp[0].node));
13171#line 13172 "parse.c"
13175#line 3644 "parse.y"
13177 (yyval.node) = NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc), &(yylsp[-1]));
13180#line 13181 "parse.c"
13184#line 3649 "parse.y"
13187 args = ret_args(p, (yyvsp[0].node));
13188 (yyval.node) = add_block_exit(p, NEW_BREAK(args, &(yyloc), &(yylsp[-1])));
13191#line 13192 "parse.c"
13195#line 3656 "parse.y"
13198 args = ret_args(p, (yyvsp[0].node));
13199 (yyval.node) = add_block_exit(p, NEW_NEXT(args, &(yyloc), &(yylsp[-1])));
13202#line 13203 "parse.c"
13206#line 3666 "parse.y"
13208 (yyval.node_masgn) = (yyvsp[-1].node_masgn);
13211#line 13212 "parse.c"
13215#line 3674 "parse.y"
13217 (yyval.node_masgn) = NEW_MASGN(NEW_LIST((
NODE *)(yyvsp[-1].node_masgn), &(yyloc)), 0, &(yyloc));
13220#line 13221 "parse.c"
13224#line 3681 "parse.y"
13226 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
13229#line 13230 "parse.c"
13233#line 3686 "parse.y"
13235 (yyval.node_masgn) = NEW_MASGN(list_append(p, (yyvsp[-1].node), (yyvsp[0].node)), 0, &(yyloc));
13238#line 13239 "parse.c"
13242#line 3691 "parse.y"
13244 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
13247#line 13248 "parse.c"
13251#line 3042 "parse.y"
13253 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
13256#line 13257 "parse.c"
13260#line 3047 "parse.y"
13262 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
13265#line 13266 "parse.c"
13269#line 3696 "parse.y"
13271 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
13274#line 13275 "parse.c"
13278#line 3701 "parse.y"
13280 (yyval.node_masgn) = NEW_MASGN((yyvsp[-1].node), NODE_SPECIAL_NO_NAME_REST, &(yyloc));
13283#line 13284 "parse.c"
13287#line 3706 "parse.y"
13289 (yyval.node_masgn) = NEW_MASGN((yyvsp[-3].node), NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
13292#line 13293 "parse.c"
13296#line 3711 "parse.y"
13298 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
13301#line 13302 "parse.c"
13305#line 3716 "parse.y"
13307 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
13310#line 13311 "parse.c"
13314#line 3721 "parse.y"
13316 (yyval.node_masgn) = NEW_MASGN(0, NODE_SPECIAL_NO_NAME_REST, &(yyloc));
13319#line 13320 "parse.c"
13323#line 3726 "parse.y"
13325 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
13328#line 13329 "parse.c"
13332#line 3734 "parse.y"
13334 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
13337#line 13338 "parse.c"
13341#line 3741 "parse.y"
13343 (yyval.node) = NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
13346#line 13347 "parse.c"
13350#line 3746 "parse.y"
13352 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
13355#line 13356 "parse.c"
13359#line 3754 "parse.y"
13362 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13364#line 13365 "parse.c"
13368#line 3754 "parse.y"
13371 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13373#line 13374 "parse.c"
13377#line 3759 "parse.y"
13379 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13382#line 13383 "parse.c"
13386#line 3764 "parse.y"
13388 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13389 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13392#line 13393 "parse.c"
13396#line 3764 "parse.y"
13398 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13399 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13402#line 13403 "parse.c"
13406#line 3770 "parse.y"
13408 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
13411#line 13412 "parse.c"
13415#line 3775 "parse.y"
13418 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13420#line 13421 "parse.c"
13424#line 3780 "parse.y"
13427 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13429#line 13430 "parse.c"
13433#line 3785 "parse.y"
13435 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13436 (yyval.node) = NEW_ERROR(&(yyloc));
13439#line 13440 "parse.c"
13443#line 3793 "parse.y"
13446 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13448#line 13449 "parse.c"
13452#line 3793 "parse.y"
13455 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13457#line 13458 "parse.c"
13461#line 3798 "parse.y"
13463 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13466#line 13467 "parse.c"
13470#line 3803 "parse.y"
13472 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13475#line 13476 "parse.c"
13479#line 3803 "parse.y"
13481 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13484#line 13485 "parse.c"
13488#line 3808 "parse.y"
13490 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
13493#line 13494 "parse.c"
13497#line 3813 "parse.y"
13500 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13502#line 13503 "parse.c"
13506#line 3818 "parse.y"
13509 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13511#line 13512 "parse.c"
13515#line 3823 "parse.y"
13517 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13518 (yyval.node) = NEW_ERROR(&(yyloc));
13521#line 13522 "parse.c"
13525#line 3831 "parse.y"
13527 static const char mesg[] =
"class/module name must be CONSTANT";
13529 yyerror1(&(yylsp[0]), mesg);
13533#line 13534 "parse.c"
13537#line 3842 "parse.y"
13539 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
13542#line 13543 "parse.c"
13546#line 3847 "parse.y"
13548 (yyval.node) = NEW_COLON2(0, (yyvsp[0].
id), &(yyloc), &NULL_LOC, &(yylsp[0]));
13551#line 13552 "parse.c"
13555#line 3852 "parse.y"
13557 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
13560#line 13561 "parse.c"
13564#line 3860 "parse.y"
13566 SET_LEX_STATE(EXPR_ENDFN);
13567 (yyval.id) = (yyvsp[0].
id);
13569#line 13570 "parse.c"
13573#line 3868 "parse.y"
13575 (yyval.node) = NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc));
13578#line 13579 "parse.c"
13582#line 3876 "parse.y"
13584 (yyval.node) = NEW_UNDEF((yyvsp[0].node), &(yyloc));
13587#line 13588 "parse.c"
13591#line 3880 "parse.y"
13592 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
13593#line 13594 "parse.c"
13597#line 3881 "parse.y"
13599 nd_set_last_loc((yyvsp[-3].node), (yylsp[0]).end_pos);
13600 rb_parser_ary_push_node(p, RNODE_UNDEF((yyvsp[-3].node))->nd_undefs, (yyvsp[0].node));
13603#line 13604 "parse.c"
13607#line 3888 "parse.y"
13608 { (yyval.id) =
'|'; }
13609#line 13610 "parse.c"
13613#line 3889 "parse.y"
13614 { (yyval.id) =
'^'; }
13615#line 13616 "parse.c"
13619#line 3890 "parse.y"
13620 { (yyval.id) =
'&'; }
13621#line 13622 "parse.c"
13625#line 3891 "parse.y"
13626 { (yyval.id) = tCMP; }
13627#line 13628 "parse.c"
13631#line 3892 "parse.y"
13632 { (yyval.id) = tEQ; }
13633#line 13634 "parse.c"
13637#line 3893 "parse.y"
13638 { (yyval.id) = tEQQ; }
13639#line 13640 "parse.c"
13643#line 3894 "parse.y"
13644 { (yyval.id) = tMATCH; }
13645#line 13646 "parse.c"
13649#line 3895 "parse.y"
13650 { (yyval.id) = tNMATCH; }
13651#line 13652 "parse.c"
13655#line 3896 "parse.y"
13656 { (yyval.id) =
'>'; }
13657#line 13658 "parse.c"
13661#line 3897 "parse.y"
13662 { (yyval.id) = tGEQ; }
13663#line 13664 "parse.c"
13667#line 3898 "parse.y"
13668 { (yyval.id) =
'<'; }
13669#line 13670 "parse.c"
13673#line 3899 "parse.y"
13674 { (yyval.id) = tLEQ; }
13675#line 13676 "parse.c"
13679#line 3900 "parse.y"
13680 { (yyval.id) = tNEQ; }
13681#line 13682 "parse.c"
13685#line 3901 "parse.y"
13686 { (yyval.id) = tLSHFT; }
13687#line 13688 "parse.c"
13691#line 3902 "parse.y"
13692 { (yyval.id) = tRSHFT; }
13693#line 13694 "parse.c"
13697#line 3903 "parse.y"
13698 { (yyval.id) =
'+'; }
13699#line 13700 "parse.c"
13703#line 3904 "parse.y"
13704 { (yyval.id) =
'-'; }
13705#line 13706 "parse.c"
13709#line 3905 "parse.y"
13710 { (yyval.id) =
'*'; }
13711#line 13712 "parse.c"
13715#line 3906 "parse.y"
13716 { (yyval.id) =
'*'; }
13717#line 13718 "parse.c"
13721#line 3907 "parse.y"
13722 { (yyval.id) =
'/'; }
13723#line 13724 "parse.c"
13727#line 3908 "parse.y"
13728 { (yyval.id) =
'%'; }
13729#line 13730 "parse.c"
13733#line 3909 "parse.y"
13734 { (yyval.id) = tPOW; }
13735#line 13736 "parse.c"
13739#line 3910 "parse.y"
13740 { (yyval.id) = tDSTAR; }
13741#line 13742 "parse.c"
13745#line 3911 "parse.y"
13746 { (yyval.id) =
'!'; }
13747#line 13748 "parse.c"
13751#line 3912 "parse.y"
13752 { (yyval.id) =
'~'; }
13753#line 13754 "parse.c"
13757#line 3913 "parse.y"
13758 { (yyval.id) = tUPLUS; }
13759#line 13760 "parse.c"
13763#line 3914 "parse.y"
13764 { (yyval.id) = tUMINUS; }
13765#line 13766 "parse.c"
13769#line 3915 "parse.y"
13770 { (yyval.id) = tAREF; }
13771#line 13772 "parse.c"
13775#line 3916 "parse.y"
13776 { (yyval.id) = tASET; }
13777#line 13778 "parse.c"
13781#line 3917 "parse.y"
13782 { (yyval.id) =
'`'; }
13783#line 13784 "parse.c"
13787#line 2920 "parse.y"
13789 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13792#line 13793 "parse.c"
13796#line 3055 "parse.y"
13798 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13801#line 13802 "parse.c"
13805#line 3060 "parse.y"
13807 (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]));
13810#line 13811 "parse.c"
13814#line 3065 "parse.y"
13816 (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]));
13819#line 13820 "parse.c"
13823#line 3070 "parse.y"
13825 (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]));
13828#line 13829 "parse.c"
13832#line 3075 "parse.y"
13834 (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]));
13837#line 13838 "parse.c"
13841#line 3080 "parse.y"
13843 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
13844 (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));
13847#line 13848 "parse.c"
13851#line 3086 "parse.y"
13853 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
13854 (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));
13857#line 13858 "parse.c"
13861#line 3092 "parse.y"
13863 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
13864 (yyval.node) = NEW_ERROR(&(yyloc));
13867#line 13868 "parse.c"
13871#line 3114 "parse.y"
13873 value_expr(p, (yyvsp[-2].node));
13874 value_expr(p, (yyvsp[0].node));
13875 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13878#line 13879 "parse.c"
13882#line 3121 "parse.y"
13884 value_expr(p, (yyvsp[-2].node));
13885 value_expr(p, (yyvsp[0].node));
13886 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13889#line 13890 "parse.c"
13893#line 3128 "parse.y"
13895 value_expr(p, (yyvsp[-1].node));
13896 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13899#line 13900 "parse.c"
13903#line 3134 "parse.y"
13905 value_expr(p, (yyvsp[-1].node));
13906 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13909#line 13910 "parse.c"
13913#line 3140 "parse.y"
13915 value_expr(p, (yyvsp[0].node));
13916 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13919#line 13920 "parse.c"
13923#line 3146 "parse.y"
13925 value_expr(p, (yyvsp[0].node));
13926 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13929#line 13930 "parse.c"
13933#line 3938 "parse.y"
13935 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13938#line 13939 "parse.c"
13942#line 3943 "parse.y"
13944 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13947#line 13948 "parse.c"
13951#line 3948 "parse.y"
13953 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13956#line 13957 "parse.c"
13960#line 3953 "parse.y"
13962 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13965#line 13966 "parse.c"
13969#line 3958 "parse.y"
13971 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13974#line 13975 "parse.c"
13978#line 3963 "parse.y"
13980 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13983#line 13984 "parse.c"
13987#line 3968 "parse.y"
13989 (yyval.node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)), idUMinus, &(yylsp[-3]), &(yyloc));
13992#line 13993 "parse.c"
13996#line 3973 "parse.y"
13998 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUPlus, &(yylsp[-1]), &(yyloc));
14001#line 14002 "parse.c"
14005#line 3978 "parse.y"
14007 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUMinus, &(yylsp[-1]), &(yyloc));
14010#line 14011 "parse.c"
14014#line 3983 "parse.y"
14016 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14019#line 14020 "parse.c"
14023#line 3988 "parse.y"
14025 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14028#line 14029 "parse.c"
14032#line 3993 "parse.y"
14034 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14037#line 14038 "parse.c"
14041#line 3998 "parse.y"
14043 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14046#line 14047 "parse.c"
14050#line 4004 "parse.y"
14052 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14055#line 14056 "parse.c"
14059#line 4009 "parse.y"
14061 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14064#line 14065 "parse.c"
14068#line 4014 "parse.y"
14070 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14073#line 14074 "parse.c"
14077#line 4019 "parse.y"
14079 (yyval.node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14082#line 14083 "parse.c"
14086#line 4024 "parse.y"
14088 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14091#line 14092 "parse.c"
14095#line 4029 "parse.y"
14097 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
14100#line 14101 "parse.c"
14104#line 4034 "parse.y"
14106 (yyval.node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
14109#line 14110 "parse.c"
14113#line 4039 "parse.y"
14115 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14118#line 14119 "parse.c"
14122#line 4044 "parse.y"
14124 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14127#line 14128 "parse.c"
14131#line 4049 "parse.y"
14133 (yyval.node) = logop(p, idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14136#line 14137 "parse.c"
14140#line 4054 "parse.y"
14142 (yyval.node) = logop(p, idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14145#line 14146 "parse.c"
14149#line 4059 "parse.y"
14151 p->ctxt.in_defined = (yyvsp[-1].ctxt).in_defined;
14152 (yyval.node) = new_defined(p, (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
14153 p->ctxt.has_trailing_semicolon = (yyvsp[-1].ctxt).has_trailing_semicolon;
14156#line 14157 "parse.c"
14160#line 2960 "parse.y"
14162 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
14163 restore_defun(p, (yyvsp[-3].node_def_temp));
14164 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
14165 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
14166 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
14171#line 14172 "parse.c"
14175#line 2971 "parse.y"
14177 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
14178 restore_defun(p, (yyvsp[-3].node_def_temp));
14179 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
14180 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
14181 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
14186#line 14187 "parse.c"
14190#line 4071 "parse.y"
14192 value_expr(p, (yyvsp[-5].node));
14193 (yyval.node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc), &NULL_LOC, &(yylsp[-1]), &NULL_LOC);
14194 fixpos((yyval.node), (yyvsp[-5].node));
14197#line 14198 "parse.c"
14201#line 4081 "parse.y"
14203 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
14204 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14207#line 14208 "parse.c"
14211#line 4087 "parse.y"
14213 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
14216#line 14217 "parse.c"
14220#line 4093 "parse.y"
14221 {(yyval.id) =
'>';}
14222#line 14223 "parse.c"
14226#line 4094 "parse.y"
14227 {(yyval.id) =
'<';}
14228#line 14229 "parse.c"
14232#line 4095 "parse.y"
14233 {(yyval.id) = idGE;}
14234#line 14235 "parse.c"
14238#line 4096 "parse.y"
14239 {(yyval.id) = idLE;}
14240#line 14241 "parse.c"
14244#line 4100 "parse.y"
14246 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14249#line 14250 "parse.c"
14253#line 4105 "parse.y"
14255 rb_warning1(
"comparison '%s' after comparison", WARN_ID((yyvsp[-1].
id)));
14256 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14259#line 14260 "parse.c"
14263#line 4113 "parse.y"
14265 (yyval.ctxt) = p->ctxt;
14267#line 14268 "parse.c"
14271#line 4119 "parse.y"
14273 p->ctxt.in_defined = 1;
14274 (yyval.ctxt) = (yyvsp[0].ctxt);
14276#line 14277 "parse.c"
14280#line 4126 "parse.y"
14282 p->ctxt.in_rescue = after_rescue;
14283 (yyval.ctxt) = (yyvsp[0].ctxt);
14285#line 14286 "parse.c"
14289#line 3155 "parse.y"
14291 value_expr(p, (yyvsp[0].node));
14292 (yyval.node) = (yyvsp[0].node);
14294#line 14295 "parse.c"
14298#line 4138 "parse.y"
14300 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14303#line 14304 "parse.c"
14307#line 4143 "parse.y"
14309 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
14312#line 14313 "parse.c"
14316#line 4150 "parse.y"
14318 value_expr(p, (yyvsp[0].node));
14319 (yyval.node) = (yyvsp[0].node);
14321#line 14322 "parse.c"
14325#line 4155 "parse.y"
14327 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
14328 value_expr(p, (yyvsp[-3].node));
14329 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14332#line 14333 "parse.c"
14336#line 4164 "parse.y"
14338 (yyval.node) = (yyvsp[-1].node);
14341#line 14342 "parse.c"
14345#line 4169 "parse.y"
14347 if (!check_forwarding_args(p)) {
14351 (yyval.node) = new_args_forward_call(p, (yyvsp[-3].node), &(yylsp[-1]), &(yyloc));
14355#line 14356 "parse.c"
14359#line 4179 "parse.y"
14361 if (!check_forwarding_args(p)) {
14365 (yyval.node) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
14369#line 14370 "parse.c"
14373#line 4192 "parse.y"
14375 (yyval.node) = (yyvsp[0].node) ? (yyvsp[0].node) : NODE_SPECIAL_EMPTY_ARGS;
14377#line 14378 "parse.c"
14381#line 4201 "parse.y"
14383 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14386#line 14387 "parse.c"
14390#line 4206 "parse.y"
14392 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14395#line 14396 "parse.c"
14399#line 3155 "parse.y"
14401 value_expr(p, (yyvsp[0].node));
14402 (yyval.node) = (yyvsp[0].node);
14404#line 14405 "parse.c"
14408#line 4213 "parse.y"
14410 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14413#line 14414 "parse.c"
14417#line 4218 "parse.y"
14419 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14422#line 14423 "parse.c"
14426#line 4223 "parse.y"
14428 (yyval.node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node_block_pass));
14431#line 14432 "parse.c"
14435#line 4228 "parse.y"
14437 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14438 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14441#line 14442 "parse.c"
14445#line 4234 "parse.y"
14447 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14448 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14451#line 14452 "parse.c"
14455#line 4243 "parse.y"
14466 case '(':
case tLPAREN:
case tLPAREN_ARG:
case '[':
case tLBRACK:
14469 if (lookahead) CMDARG_POP();
14471 if (lookahead) CMDARG_PUSH(0);
14473#line 14474 "parse.c"
14477#line 4261 "parse.y"
14490 if (lookahead) CMDARG_POP();
14492 if (lookahead) CMDARG_PUSH(0);
14493 (yyval.node) = (yyvsp[0].node);
14496#line 14497 "parse.c"
14500#line 4282 "parse.y"
14502 (yyval.node_block_pass) = NEW_BLOCK_PASS((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14505#line 14506 "parse.c"
14509#line 4287 "parse.y"
14511 forwarding_arg_check(p, idFWD_BLOCK, idFWD_ALL,
"block");
14512 (yyval.node_block_pass) = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14515#line 14516 "parse.c"
14519#line 4295 "parse.y"
14521 (yyval.node_block_pass) = (yyvsp[0].node_block_pass);
14524#line 14525 "parse.c"
14528#line 4300 "parse.y"
14530 (yyval.node_block_pass) = 0;
14533#line 14534 "parse.c"
14537#line 4308 "parse.y"
14539 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14542#line 14543 "parse.c"
14546#line 4313 "parse.y"
14548 (yyval.node) = (yyvsp[0].node);
14551#line 14552 "parse.c"
14555#line 4318 "parse.y"
14557 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14560#line 14561 "parse.c"
14564#line 4323 "parse.y"
14566 (yyval.node) = rest_arg_append(p, (yyvsp[-2].node), RNODE_SPLAT((yyvsp[0].node))->nd_head, &(yyloc));
14569#line 14570 "parse.c"
14573#line 4331 "parse.y"
14575 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14578#line 14579 "parse.c"
14582#line 4336 "parse.y"
14584 forwarding_arg_check(p, idFWD_REST, idFWD_ALL,
"rest");
14585 (yyval.node) = NEW_SPLAT(NEW_LVAR(idFWD_REST, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14588#line 14589 "parse.c"
14592#line 4350 "parse.y"
14594 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14597#line 14598 "parse.c"
14601#line 4355 "parse.y"
14603 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
14606#line 14607 "parse.c"
14610#line 4360 "parse.y"
14612 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14615#line 14616 "parse.c"
14619#line 4381 "parse.y"
14621 (yyval.node) = (
NODE *)NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
14624#line 14625 "parse.c"
14628#line 4386 "parse.y"
14632#line 14633 "parse.c"
14636#line 4391 "parse.y"
14639 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14640 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
14641 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14644#line 14645 "parse.c"
14648#line 4398 "parse.y"
14649 {SET_LEX_STATE(EXPR_ENDARG);}
14650#line 14651 "parse.c"
14654#line 4399 "parse.y"
14656 if (nd_type_p((yyvsp[-2].node), NODE_SELF)) RNODE_SELF((yyvsp[-2].node))->nd_state = 0;
14657 (yyval.node) = (yyvsp[-2].node);
14660#line 14661 "parse.c"
14664#line 4405 "parse.y"
14666 if (nd_type_p((yyvsp[-1].node), NODE_SELF)) RNODE_SELF((yyvsp[-1].node))->nd_state = 0;
14667 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
14670#line 14671 "parse.c"
14674#line 4411 "parse.y"
14676 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
14679#line 14680 "parse.c"
14683#line 4416 "parse.y"
14685 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
14688#line 14689 "parse.c"
14692#line 4421 "parse.y"
14694 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14697#line 14698 "parse.c"
14701#line 4426 "parse.y"
14703 (yyval.node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
14704 RNODE_HASH((yyval.node))->nd_brace = TRUE;
14707#line 14708 "parse.c"
14711#line 4432 "parse.y"
14713 (yyval.node) = NEW_RETURN(0, &(yyloc), &(yylsp[0]));
14716#line 14717 "parse.c"
14720#line 4437 "parse.y"
14722 (yyval.node) = NEW_YIELD((yyvsp[-1].node), &(yyloc), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14725#line 14726 "parse.c"
14729#line 4442 "parse.y"
14731 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
14734#line 14735 "parse.c"
14738#line 4447 "parse.y"
14740 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[0]), &NULL_LOC, &NULL_LOC);
14743#line 14744 "parse.c"
14747#line 4452 "parse.y"
14749 p->ctxt.in_defined = (yyvsp[-2].ctxt).in_defined;
14750 (yyval.node) = new_defined(p, (yyvsp[-1].node), &(yyloc), &(yylsp[-5]));
14751 p->ctxt.has_trailing_semicolon = (yyvsp[-2].ctxt).has_trailing_semicolon;
14754#line 14755 "parse.c"
14758#line 4459 "parse.y"
14760 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])), METHOD_NOT, &(yylsp[-3]), &(yyloc));
14763#line 14764 "parse.c"
14767#line 4464 "parse.y"
14769 (yyval.node) = call_uni_op(p, method_cond(p, NEW_NIL(&(yylsp[-1])), &(yylsp[-1])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
14772#line 14773 "parse.c"
14776#line 4469 "parse.y"
14778 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-1].node_fcall), (yyvsp[0].node), &(yyloc));
14781#line 14782 "parse.c"
14785#line 4475 "parse.y"
14787 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
14788 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14791#line 14792 "parse.c"
14795#line 4485 "parse.y"
14797 if ((yyvsp[-1].node) && nd_type_p((yyvsp[-1].node), NODE_IF))
14798 RNODE_IF((yyvsp[-1].node))->end_keyword_loc = (yylsp[0]);
14800 (yyval.node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14801 fixpos((yyval.node), (yyvsp[-4].node));
14804#line 14805 "parse.c"
14808#line 4497 "parse.y"
14810 (yyval.node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14811 fixpos((yyval.node), (yyvsp[-4].node));
14814#line 14815 "parse.c"
14818#line 4505 "parse.y"
14820 restore_block_exit(p, (yyvsp[-3].node_exits));
14821 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14822 fixpos((yyval.node), (yyvsp[-2].node));
14825#line 14826 "parse.c"
14829#line 4514 "parse.y"
14831 restore_block_exit(p, (yyvsp[-3].node_exits));
14832 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14833 fixpos((yyval.node), (yyvsp[-2].node));
14836#line 14837 "parse.c"
14840#line 4521 "parse.y"
14842 (yyval.labels) = p->case_labels;
14843 p->case_labels = CHECK_LITERAL_WHEN;
14845#line 14846 "parse.c"
14849#line 4527 "parse.y"
14851 if (CASE_LABELS_ENABLED_P(p->case_labels)) st_free_table(p->case_labels);
14852 p->case_labels = (yyvsp[-2].labels);
14853 (yyval.node) = NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[0]));
14854 fixpos((yyval.node), (yyvsp[-4].node));
14857#line 14858 "parse.c"
14861#line 4535 "parse.y"
14863 (yyval.labels) = p->case_labels;
14864 p->case_labels = 0;
14866#line 14867 "parse.c"
14870#line 4541 "parse.y"
14872 if (p->case_labels) st_free_table(p->case_labels);
14873 p->case_labels = (yyvsp[-2].labels);
14874 (yyval.node) = NEW_CASE2((yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14877#line 14878 "parse.c"
14881#line 4550 "parse.y"
14883 (yyval.node) = NEW_CASE3((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14886#line 14887 "parse.c"
14890#line 4555 "parse.y"
14892#line 14893 "parse.c"
14896#line 4555 "parse.y"
14898#line 14899 "parse.c"
14902#line 4558 "parse.y"
14904 restore_block_exit(p, (yyvsp[-8].node_exits));
14914 ID id = internal_id(p);
14917 NODE *scope, *internal_var = NEW_DVAR(
id, &(yylsp[-7]));
14921 switch (nd_type((yyvsp[-7].node))) {
14924 set_nd_value(p, (yyvsp[-7].node), internal_var);
14927 m->nd_next = (yyvsp[-7].node);
14930 m->nd_next = node_assign(p, (yyvsp[-7].node), NEW_FOR_MASGN(internal_var, &(yylsp[-7])), NO_LEX_CTXT, &(yylsp[-7]));
14933 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]));
14936 args = new_args(p, m, 0,
id, 0, new_empty_args_tail(p, &(yylsp[-7])), &(yylsp[-7]));
14937 scope = NEW_SCOPE2(tbl, args, (yyvsp[-1].node), NULL, &(yyloc));
14938 YYLTYPE do_keyword_loc = (yyvsp[-3].id) == keyword_do_cond ? (yylsp[-3]) : NULL_LOC;
14939 (yyval.node) = NEW_FOR((yyvsp[-4].node), scope, &(yyloc), &(yylsp[-8]), &(yylsp[-6]), &do_keyword_loc, &(yylsp[0]));
14940 RNODE_SCOPE(scope)->nd_parent = (yyval.node);
14941 fixpos((yyval.node), (yyvsp[-7].node));
14944#line 14945 "parse.c"
14948#line 4600 "parse.y"
14950 begin_definition(
"class", &(yylsp[-2]), &(yylsp[-1]));
14952#line 14953 "parse.c"
14956#line 4605 "parse.y"
14958 YYLTYPE inheritance_operator_loc = NULL_LOC;
14959 if ((yyvsp[-3].node)) {
14960 inheritance_operator_loc = (yylsp[-3]);
14961 inheritance_operator_loc.end_pos.column = inheritance_operator_loc.beg_pos.column + 1;
14963 (yyval.node) = NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc), &(yylsp[-5]), &inheritance_operator_loc, &(yylsp[0]));
14964 nd_set_line(RNODE_CLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14965 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14966 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14969 p->ctxt.in_class = (yyvsp[-5].ctxt).in_class;
14970 p->ctxt.cant_return = (yyvsp[-5].ctxt).cant_return;
14971 p->ctxt.shareable_constant_value = (yyvsp[-5].ctxt).shareable_constant_value;
14973#line 14974 "parse.c"
14977#line 4622 "parse.y"
14979 begin_definition(
"", &(yylsp[-2]), &(yylsp[-1]));
14981#line 14982 "parse.c"
14985#line 4628 "parse.y"
14987 (yyval.node) = NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-6]), &(yylsp[-5]), &(yylsp[0]));
14988 nd_set_line(RNODE_SCLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14989 set_line_body((yyvsp[-1].node), nd_line((yyvsp[-4].node)));
14990 fixpos((yyval.node), (yyvsp[-4].node));
14993 p->ctxt.in_def = (yyvsp[-6].ctxt).in_def;
14994 p->ctxt.in_class = (yyvsp[-6].ctxt).in_class;
14995 p->ctxt.cant_return = (yyvsp[-6].ctxt).cant_return;
14996 p->ctxt.shareable_constant_value = (yyvsp[-6].ctxt).shareable_constant_value;
14998#line 14999 "parse.c"
15002#line 4641 "parse.y"
15004 begin_definition(
"module", &(yylsp[-1]), &(yylsp[0]));
15006#line 15007 "parse.c"
15010#line 4646 "parse.y"
15012 (yyval.node) = NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
15013 nd_set_line(RNODE_MODULE((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
15014 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
15015 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
15018 p->ctxt.in_class = (yyvsp[-4].ctxt).in_class;
15019 p->ctxt.cant_return = (yyvsp[-4].ctxt).cant_return;
15020 p->ctxt.shareable_constant_value = (yyvsp[-4].ctxt).shareable_constant_value;
15022#line 15023 "parse.c"
15026#line 4659 "parse.y"
15028 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15030#line 15031 "parse.c"
15034#line 4664 "parse.y"
15036 restore_defun(p, (yyvsp[-4].node_def_temp));
15037 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
15038 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), (yyval.node), &(yyloc));
15039 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[-1].node);
15043#line 15044 "parse.c"
15047#line 4674 "parse.y"
15049 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15051#line 15052 "parse.c"
15055#line 4679 "parse.y"
15057 restore_defun(p, (yyvsp[-4].node_def_temp));
15058 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
15059 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), (yyval.node), &(yyloc));
15060 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[-1].node);
15064#line 15065 "parse.c"
15068#line 4688 "parse.y"
15070 (yyval.node) = add_block_exit(p, NEW_BREAK(0, &(yyloc), &(yylsp[0])));
15073#line 15074 "parse.c"
15077#line 4693 "parse.y"
15079 (yyval.node) = add_block_exit(p, NEW_NEXT(0, &(yyloc), &(yylsp[0])));
15082#line 15083 "parse.c"
15086#line 4698 "parse.y"
15088 (yyval.node) = add_block_exit(p, NEW_REDO(&(yyloc), &(yylsp[0])));
15091#line 15092 "parse.c"
15095#line 4703 "parse.y"
15097 if (!p->ctxt.in_defined) {
15098 switch (p->ctxt.in_rescue) {
15099 case before_rescue: yyerror1(&(yylsp[0]),
"Invalid retry without rescue");
break;
15100 case after_rescue:
break;
15101 case after_else: yyerror1(&(yylsp[0]),
"Invalid retry after else");
break;
15102 case after_ensure: yyerror1(&(yylsp[0]),
"Invalid retry after ensure");
break;
15105 (yyval.node) = NEW_RETRY(&(yyloc));
15108#line 15109 "parse.c"
15112#line 3155 "parse.y"
15114 value_expr(p, (yyvsp[0].node));
15115 (yyval.node) = (yyvsp[0].node);
15117#line 15118 "parse.c"
15121#line 4721 "parse.y"
15123 token_info_push(p,
"begin", &(yyloc));
15124 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15126#line 15127 "parse.c"
15130#line 4728 "parse.y"
15133 token_info_push(p,
"if", &(yyloc));
15134 if (p->token_info && p->token_info->nonspc &&
15135 p->token_info->next && !strcmp(p->token_info->next->token,
"else")) {
15137 const char *beg = p->lex.pbeg + p->token_info->next->beg.column;
15139 while (beg < tok &&
ISSPACE(*beg)) beg++;
15141 p->token_info->nonspc = 0;
15144 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15146#line 15147 "parse.c"
15150#line 4746 "parse.y"
15152 token_info_push(p,
"unless", &(yyloc));
15153 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15155#line 15156 "parse.c"
15159#line 4753 "parse.y"
15161 (yyval.node_exits) = (yyvsp[0].node_exits);
15162 token_info_push(p,
"while", &(yyloc));
15163 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15165#line 15166 "parse.c"
15169#line 4761 "parse.y"
15171 (yyval.node_exits) = (yyvsp[0].node_exits);
15172 token_info_push(p,
"until", &(yyloc));
15173 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15175#line 15176 "parse.c"
15179#line 4769 "parse.y"
15181 token_info_push(p,
"case", &(yyloc));
15182 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15184#line 15185 "parse.c"
15188#line 4776 "parse.y"
15190 (yyval.node_exits) = (yyvsp[0].node_exits);
15191 token_info_push(p,
"for", &(yyloc));
15192 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
15194#line 15195 "parse.c"
15198#line 4784 "parse.y"
15200 token_info_push(p,
"class", &(yyloc));
15201 (yyval.ctxt) = p->ctxt;
15202 p->ctxt.in_rescue = before_rescue;
15203 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15205#line 15206 "parse.c"
15209#line 4793 "parse.y"
15211 token_info_push(p,
"module", &(yyloc));
15212 (yyval.ctxt) = p->ctxt;
15213 p->ctxt.in_rescue = before_rescue;
15214 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15216#line 15217 "parse.c"
15220#line 4802 "parse.y"
15222 token_info_push(p,
"def", &(yyloc));
15223 (yyval.node_def_temp) = NEW_DEF_TEMP(&(yyloc));
15224 p->ctxt.in_argdef = 1;
15226#line 15227 "parse.c"
15230#line 4810 "parse.y"
15232 token_info_push(p,
"do", &(yyloc));
15233 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15235#line 15236 "parse.c"
15239#line 4817 "parse.y"
15241 token_info_push(p,
"do", &(yyloc));
15242 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15244#line 15245 "parse.c"
15248#line 4824 "parse.y"
15250 token_info_warn(p,
"rescue", p->token_info, 1, &(yyloc));
15251 (yyval.ctxt) = p->ctxt;
15252 p->ctxt.in_rescue = after_rescue;
15254#line 15255 "parse.c"
15258#line 4832 "parse.y"
15260 token_info_warn(p,
"ensure", p->token_info, 1, &(yyloc));
15261 (yyval.ctxt) = p->ctxt;
15263#line 15264 "parse.c"
15267#line 4839 "parse.y"
15269 token_info_warn(p,
"when", p->token_info, 0, &(yyloc));
15271#line 15272 "parse.c"
15275#line 4845 "parse.y"
15278 int same = ptinfo_beg && strcmp(ptinfo_beg->token,
"case") != 0;
15279 token_info_warn(p,
"else", p->token_info, same, &(yyloc));
15282 e.next = ptinfo_beg->next;
15284 token_info_setup(&e, p->lex.pbeg, &(yyloc));
15285 if (!e.nonspc) *ptinfo_beg = e;
15288#line 15289 "parse.c"
15292#line 4860 "parse.y"
15295 token_info_warn(p,
"elsif", p->token_info, 1, &(yyloc));
15297#line 15298 "parse.c"
15301#line 4867 "parse.y"
15303 token_info_pop(p,
"end", &(yyloc));
15304 pop_end_expect_token_locations(p);
15306#line 15307 "parse.c"
15310#line 4872 "parse.y"
15312 compile_error(p,
"syntax error, unexpected end-of-input");
15314#line 15315 "parse.c"
15318#line 4878 "parse.y"
15320 if (p->ctxt.cant_return && !dyna_in_block(p))
15321 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
15323#line 15324 "parse.c"
15327#line 4885 "parse.y"
15329 if (!p->ctxt.in_defined && !p->ctxt.in_def && !compile_for_eval)
15330 yyerror1(&(yylsp[0]),
"Invalid yield");
15332#line 15333 "parse.c"
15336#line 4897 "parse.y"
15337 { (yyval.id) = keyword_do_cond; }
15338#line 15339 "parse.c"
15342#line 4904 "parse.y"
15344 (yyval.node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]), &NULL_LOC);
15345 fixpos((yyval.node), (yyvsp[-3].node));
15348#line 15349 "parse.c"
15352#line 4913 "parse.y"
15354 (yyval.node) = (yyvsp[0].node);
15357#line 15358 "parse.c"
15361#line 4924 "parse.y"
15363 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15364 mark_lvar_used(p, (yyval.node));
15366#line 15367 "parse.c"
15370#line 4929 "parse.y"
15372 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
15375#line 15376 "parse.c"
15379#line 3042 "parse.y"
15381 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15384#line 15385 "parse.c"
15388#line 3047 "parse.y"
15390 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
15393#line 15394 "parse.c"
15397#line 4937 "parse.y"
15399 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
15402#line 15403 "parse.c"
15406#line 4942 "parse.y"
15408 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15411#line 15412 "parse.c"
15415#line 4947 "parse.y"
15417 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15420#line 15421 "parse.c"
15424#line 4952 "parse.y"
15426 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
15429#line 15430 "parse.c"
15433#line 4957 "parse.y"
15435 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15438#line 15439 "parse.c"
15442#line 4964 "parse.y"
15445 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15446 mark_lvar_used(p, (yyval.node));
15448#line 15449 "parse.c"
15452#line 4970 "parse.y"
15454 (yyval.node) = NODE_SPECIAL_NO_NAME_REST;
15457#line 15458 "parse.c"
15461#line 4978 "parse.y"
15463 (yyval.id) = idNil;
15466#line 15467 "parse.c"
15470#line 4984 "parse.y"
15471 {p->ctxt.in_argdef = 0;}
15472#line 15473 "parse.c"
15476#line 3014 "parse.y"
15478 p->ctxt.in_argdef = 1;
15479 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15482#line 15483 "parse.c"
15486#line 3020 "parse.y"
15488 p->ctxt.in_argdef = 1;
15489 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
15492#line 15493 "parse.c"
15496#line 3029 "parse.y"
15498 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
15501#line 15502 "parse.c"
15505#line 3034 "parse.y"
15507 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
15510#line 15511 "parse.c"
15514#line 2951 "parse.y"
15516 (yyval.id) = (yyvsp[0].
id);
15519#line 15520 "parse.c"
15523#line 2928 "parse.y"
15525 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
15528#line 15529 "parse.c"
15532#line 2933 "parse.y"
15534 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
15537#line 15538 "parse.c"
15541#line 2938 "parse.y"
15543 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
15546#line 15547 "parse.c"
15550#line 2943 "parse.y"
15552 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
15555#line 15556 "parse.c"
15559#line 4990 "parse.y"
15562 (yyval.id) = NODE_SPECIAL_EXCESSIVE_COMMA;
15565#line 15566 "parse.c"
15569#line 2992 "parse.y"
15571 p->ctxt.in_argdef = 1;
15572 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15575#line 15576 "parse.c"
15579#line 3001 "parse.y"
15581 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
15584#line 15585 "parse.c"
15588#line 3006 "parse.y"
15590 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
15593#line 15594 "parse.c"
15597#line 3101 "parse.y"
15599 (yyval.node_args) = (yyvsp[0].node_args);
15602#line 15603 "parse.c"
15606#line 3106 "parse.y"
15608 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
15611#line 15612 "parse.c"
15615#line 6272 "parse.y"
15617 (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));
15620#line 15621 "parse.c"
15624#line 6277 "parse.y"
15626 (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));
15629#line 15630 "parse.c"
15633#line 6282 "parse.y"
15635 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15638#line 15639 "parse.c"
15642#line 6287 "parse.y"
15644 (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));
15647#line 15648 "parse.c"
15651#line 6292 "parse.y"
15653 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
15656#line 15657 "parse.c"
15660#line 6297 "parse.y"
15662 (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));
15665#line 15666 "parse.c"
15669#line 6302 "parse.y"
15671 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
15674#line 15675 "parse.c"
15678#line 6307 "parse.y"
15680 (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));
15683#line 15684 "parse.c"
15687#line 6312 "parse.y"
15689 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15692#line 15693 "parse.c"
15696#line 6317 "parse.y"
15698 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15701#line 15702 "parse.c"
15705#line 6322 "parse.y"
15707 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
15710#line 15711 "parse.c"
15714#line 6327 "parse.y"
15716 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15719#line 15720 "parse.c"
15723#line 4999 "parse.y"
15725 (yyval.node_args) = new_empty_args_tail(p, &(yylsp[0]));
15726 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, (yyvsp[0].id), 0, (yyval.node_args), &(yyloc));
15729#line 15730 "parse.c"
15733#line 5005 "parse.y"
15735 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15738#line 15739 "parse.c"
15742#line 6335 "parse.y"
15744 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15747#line 15748 "parse.c"
15751#line 5014 "parse.y"
15753 p->command_start = TRUE;
15755#line 15756 "parse.c"
15759#line 5020 "parse.y"
15761 p->max_numparam = ORDINAL_PARAM;
15762 p->ctxt.in_argdef = 0;
15763 (yyval.node_args) = (yyvsp[-2].node_args);
15766#line 15767 "parse.c"
15770#line 5029 "parse.y"
15772 (yyval.node_args) = 0;
15775#line 15776 "parse.c"
15779#line 5037 "parse.y"
15784#line 15785 "parse.c"
15788#line 5042 "parse.y"
15793#line 15794 "parse.c"
15797#line 5055 "parse.y"
15799 new_bv(p, (yyvsp[0].
id));
15802#line 15803 "parse.c"
15806#line 5062 "parse.y"
15808 (yyval.num) = p->max_numparam;
15809 p->max_numparam = 0;
15811#line 15812 "parse.c"
15815#line 5068 "parse.y"
15817 (yyval.node) = numparam_push(p);
15819#line 15820 "parse.c"
15823#line 5073 "parse.y"
15825 (yyval.id) = p->it_id;
15828#line 15829 "parse.c"
15832#line 5080 "parse.y"
15834 token_info_push(p,
"->", &(yylsp[0]));
15835 (yyval.vars) = dyna_push(p);
15837#line 15838 "parse.c"
15841#line 5086 "parse.y"
15845#line 15846 "parse.c"
15849#line 5090 "parse.y"
15851 int max_numparam = p->max_numparam;
15852 ID it_id = p->it_id;
15853 p->lex.lpar_beg = (yyvsp[-8].num);
15854 p->max_numparam = (yyvsp[-6].num);
15855 p->it_id = (yyvsp[-4].id);
15856 restore_block_exit(p, (yyvsp[-3].node_exits));
15858 (yyvsp[-2].node_args) = args_with_numbered(p, (yyvsp[-2].node_args), max_numparam, it_id);
15860 YYLTYPE loc = code_loc_gen(&(yylsp[-8]), &(yylsp[0]));
15861 (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);
15862 nd_set_line(RNODE_LAMBDA((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
15863 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
15864 nd_set_first_loc((yyval.node), (yylsp[-8]).beg_pos);
15865 xfree((yyvsp[0].locations_lambda_body));
15868 numparam_pop(p, (yyvsp[-5].node));
15869 dyna_pop(p, (yyvsp[-7].vars));
15871#line 15872 "parse.c"
15875#line 5114 "parse.y"
15877 p->ctxt.in_argdef = 0;
15878 (yyval.node_args) = (yyvsp[-2].node_args);
15879 p->max_numparam = ORDINAL_PARAM;
15882#line 15883 "parse.c"
15886#line 5121 "parse.y"
15888 p->ctxt.in_argdef = 0;
15889 if (!args_info_empty_p(&(yyvsp[0].node_args)->nd_ainfo))
15890 p->max_numparam = ORDINAL_PARAM;
15891 (yyval.node_args) = (yyvsp[0].node_args);
15893#line 15894 "parse.c"
15897#line 5130 "parse.y"
15899 token_info_pop(p,
"}", &(yylsp[0]));
15900 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-2]), &(yylsp[0]));
15903#line 15904 "parse.c"
15907#line 5136 "parse.y"
15909 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15911#line 15912 "parse.c"
15915#line 5140 "parse.y"
15917 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-3]), &(yylsp[0]));
15920#line 15921 "parse.c"
15924#line 5147 "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 5155 "parse.y"
15936 if (nd_type_p((yyvsp[-1].node), NODE_YIELD)) {
15937 compile_error(p,
"block given to yield");
15940 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
15942 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15943 fixpos((yyval.node), (yyvsp[-1].node));
15946#line 15947 "parse.c"
15950#line 5167 "parse.y"
15952 bool has_args = (yyvsp[0].node) != 0;
15953 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15954 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15960#line 15961 "parse.c"
15964#line 5177 "parse.y"
15966 if (NODE_EMPTY_ARGS_P((yyvsp[-1].node))) (yyvsp[-1].node) = 0;
15967 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15970#line 15971 "parse.c"
15974#line 5183 "parse.y"
15976 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15979#line 15980 "parse.c"
15983#line 5188 "parse.y"
15985 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15986 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15989#line 15990 "parse.c"
15993#line 5196 "parse.y"
15995 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
15996 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
15997 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
16000#line 16001 "parse.c"
16004#line 5203 "parse.y"
16006 bool has_args = (yyvsp[0].node) != 0;
16007 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
16008 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
16009 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
16015#line 16016 "parse.c"
16019#line 5214 "parse.y"
16021 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
16022 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
16025#line 16026 "parse.c"
16029#line 5220 "parse.y"
16031 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-2].node), (yyvsp[0].id), 0, &(yylsp[0]), &(yyloc));
16034#line 16035 "parse.c"
16038#line 5225 "parse.y"
16040 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
16041 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
16044#line 16045 "parse.c"
16048#line 5231 "parse.y"
16052 lparen_loc.end_pos.column = lparen_loc.beg_pos.column + 1;
16053 rparen_loc.beg_pos.column = rparen_loc.end_pos.column - 1;
16055 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &lparen_loc, &rparen_loc);
16058#line 16059 "parse.c"
16062#line 5241 "parse.y"
16064 (yyval.node) = NEW_ZSUPER(&(yyloc));
16067#line 16068 "parse.c"
16071#line 5246 "parse.y"
16073 (yyval.node) = NEW_CALL((yyvsp[-3].node), tAREF, (yyvsp[-1].node), &(yyloc));
16074 fixpos((yyval.node), (yyvsp[-3].node));
16077#line 16078 "parse.c"
16081#line 5254 "parse.y"
16083 (yyval.node) = (yyvsp[-1].node);
16084 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
16087#line 16088 "parse.c"
16091#line 5260 "parse.y"
16093 (yyval.node) = (yyvsp[-1].node);
16094 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
16097#line 16098 "parse.c"
16101#line 5267 "parse.y"
16102 {(yyval.vars) = dyna_push(p);}
16103#line 16104 "parse.c"
16107#line 5270 "parse.y"
16109 int max_numparam = p->max_numparam;
16110 ID it_id = p->it_id;
16111 p->max_numparam = (yyvsp[-5].num);
16112 p->it_id = (yyvsp[-3].id);
16113 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
16114 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
16116 restore_block_exit(p, (yyvsp[-2].node_exits));
16117 numparam_pop(p, (yyvsp[-4].node));
16118 dyna_pop(p, (yyvsp[-6].vars));
16120#line 16121 "parse.c"
16124#line 5284 "parse.y"
16126 (yyval.vars) = dyna_push(p);
16129#line 16130 "parse.c"
16133#line 5290 "parse.y"
16135 int max_numparam = p->max_numparam;
16136 ID it_id = p->it_id;
16137 p->max_numparam = (yyvsp[-5].num);
16138 p->it_id = (yyvsp[-3].id);
16139 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
16140 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
16143 restore_block_exit(p, (yyvsp[-2].node_exits));
16144 numparam_pop(p, (yyvsp[-4].node));
16145 dyna_pop(p, (yyvsp[-6].vars));
16147#line 16148 "parse.c"
16151#line 5306 "parse.y"
16153 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
16154 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16157#line 16158 "parse.c"
16161#line 5312 "parse.y"
16163 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16166#line 16167 "parse.c"
16170#line 5317 "parse.y"
16172 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
16173 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16176#line 16177 "parse.c"
16180#line 5323 "parse.y"
16182 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
16185#line 16186 "parse.c"
16189#line 5332 "parse.y"
16191 (yyval.node) = NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]));
16192 fixpos((yyval.node), (yyvsp[-3].node));
16195#line 16196 "parse.c"
16199#line 5343 "parse.y"
16200 {(yyval.tbl) = p->pvtbl; p->pvtbl = st_init_numtable();}
16201#line 16202 "parse.c"
16205#line 5344 "parse.y"
16206 {(yyval.tbl) = p->pktbl; p->pktbl = 0;}
16207#line 16208 "parse.c"
16211#line 5346 "parse.y"
16213 (yyval.ctxt) = p->ctxt;
16214 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
16215 p->command_start = FALSE;
16216 p->ctxt.in_kwarg = 1;
16217 p->ctxt.in_alt_pattern = 0;
16218 p->ctxt.capture_in_pattern = 0;
16220#line 16221 "parse.c"
16224#line 5359 "parse.y"
16226 pop_pktbl(p, (yyvsp[-2].tbl));
16227 pop_pvtbl(p, (yyvsp[-3].tbl));
16228 p->ctxt.in_kwarg = (yyvsp[-4].ctxt).in_kwarg;
16229 p->ctxt.in_alt_pattern = (yyvsp[-4].ctxt).in_alt_pattern;
16230 p->ctxt.capture_in_pattern = (yyvsp[-4].ctxt).capture_in_pattern;
16232#line 16233 "parse.c"
16236#line 5368 "parse.y"
16238 (yyval.node) = NEW_IN((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-8]), &(yylsp[-3]), &NULL_LOC);
16241#line 16242 "parse.c"
16245#line 5380 "parse.y"
16247 (yyval.node) = new_if(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
16248 fixpos((yyval.node), (yyvsp[0].node));
16251#line 16252 "parse.c"
16255#line 5386 "parse.y"
16257 (yyval.node) = new_unless(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
16258 fixpos((yyval.node), (yyvsp[0].node));
16261#line 16262 "parse.c"
16265#line 5395 "parse.y"
16267 (yyval.node) = new_array_pattern_tail(p, 0, 1, 0, 0, &(yyloc));
16268 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-1].node), (yyval.node), &(yyloc));
16271#line 16272 "parse.c"
16275#line 5401 "parse.y"
16277 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16278 nd_set_first_loc((yyval.node), (yylsp[-2]).beg_pos);
16281#line 16282 "parse.c"
16285#line 5407 "parse.y"
16287 (yyval.node) = new_find_pattern(p, 0, (yyvsp[0].node), &(yyloc));
16290#line 16291 "parse.c"
16294#line 5412 "parse.y"
16296 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[0].node), &(yyloc));
16299#line 16300 "parse.c"
16303#line 5417 "parse.y"
16305 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[0].node), &(yyloc));
16308#line 16309 "parse.c"
16312#line 5427 "parse.y"
16314 NODE *n = NEW_LIST((yyvsp[-2].node), &(yyloc));
16315 n = list_append(p, n, (yyvsp[0].node));
16316 (yyval.node) = new_hash(p, n, &(yyloc));
16319#line 16320 "parse.c"
16323#line 5437 "parse.y"
16325 p->ctxt.in_alt_pattern = 1;
16327#line 16328 "parse.c"
16331#line 5441 "parse.y"
16333 if (p->ctxt.capture_in_pattern) {
16334 yyerror1(&(yylsp[-2]),
"alternative pattern after variable capture");
16336 p->ctxt.in_alt_pattern = 0;
16337 (yyval.node) = NEW_OR((yyvsp[-3].node), (yyvsp[0].node), &(yyloc), &(yylsp[-2]));
16340#line 16341 "parse.c"
16344#line 5453 "parse.y"
16346 (yyval.tbl) = (yyvsp[0].tbl);
16349#line 16350 "parse.c"
16353#line 5460 "parse.y"
16355 (yyval.tbl) = (yyvsp[0].tbl);
16358#line 16359 "parse.c"
16362#line 5469 "parse.y"
16364 pop_pktbl(p, (yyvsp[-2].tbl));
16365 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
16366 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16369#line 16370 "parse.c"
16373#line 5476 "parse.y"
16375 pop_pktbl(p, (yyvsp[-2].tbl));
16376 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16377 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16380#line 16381 "parse.c"
16384#line 5483 "parse.y"
16386 pop_pktbl(p, (yyvsp[-2].tbl));
16387 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16388 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16391#line 16392 "parse.c"
16395#line 5490 "parse.y"
16397 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16398 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
16401#line 16402 "parse.c"
16405#line 5496 "parse.y"
16407 pop_pktbl(p, (yyvsp[-2].tbl));
16408 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
16409 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16412#line 16413 "parse.c"
16416#line 5503 "parse.y"
16418 pop_pktbl(p, (yyvsp[-2].tbl));
16419 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16420 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16423#line 16424 "parse.c"
16427#line 5510 "parse.y"
16429 pop_pktbl(p, (yyvsp[-2].tbl));
16430 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16431 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16434#line 16435 "parse.c"
16438#line 5517 "parse.y"
16440 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16441 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
16444#line 16445 "parse.c"
16448#line 5523 "parse.y"
16450 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[-1].node), &(yyloc));
16453#line 16454 "parse.c"
16457#line 5528 "parse.y"
16459 (yyval.node) = new_find_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16462#line 16463 "parse.c"
16466#line 5533 "parse.y"
16468 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16469 (yyval.node) = new_array_pattern(p, 0, 0, (yyval.node), &(yyloc));
16472#line 16473 "parse.c"
16476#line 5539 "parse.y"
16478 p->ctxt.in_kwarg = 0;
16480#line 16481 "parse.c"
16484#line 5543 "parse.y"
16486 pop_pktbl(p, (yyvsp[-4].tbl));
16487 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
16488 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16491#line 16492 "parse.c"
16495#line 5550 "parse.y"
16497 (yyval.node) = new_hash_pattern_tail(p, 0, 0, &(yyloc));
16498 (yyval.node) = new_hash_pattern(p, 0, (yyval.node), &(yyloc));
16501#line 16502 "parse.c"
16505#line 5556 "parse.y"
16507 pop_pktbl(p, (yyvsp[-2].tbl));
16508 (yyval.node) = (yyvsp[-1].node);
16511#line 16512 "parse.c"
16515#line 5564 "parse.y"
16517 NODE *pre_args = NEW_LIST((yyvsp[0].node), &(yyloc));
16518 (yyval.node) = new_array_pattern_tail(p, pre_args, 0, 0, 0, &(yyloc));
16521#line 16522 "parse.c"
16525#line 5570 "parse.y"
16527 (yyval.node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0, 0, &(yyloc));
16530#line 16531 "parse.c"
16534#line 5575 "parse.y"
16536 (yyval.node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, 0, 0, &(yyloc));
16539#line 16540 "parse.c"
16543#line 5580 "parse.y"
16545 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, (yyvsp[0].node), 0, &(yyloc));
16548#line 16549 "parse.c"
16552#line 5585 "parse.y"
16554 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16557#line 16558 "parse.c"
16561#line 5594 "parse.y"
16563 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
16566#line 16567 "parse.c"
16570#line 5601 "parse.y"
16572 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[0].node), 0, &(yyloc));
16575#line 16576 "parse.c"
16579#line 5606 "parse.y"
16581 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16584#line 16585 "parse.c"
16588#line 5613 "parse.y"
16590 (yyval.node) = new_find_pattern_tail(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16593#line 16594 "parse.c"
16597#line 5621 "parse.y"
16599 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16601 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16603#line 16604 "parse.c"
16607#line 5627 "parse.y"
16612#line 16613 "parse.c"
16616#line 5635 "parse.y"
16618 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16621#line 16622 "parse.c"
16625#line 5642 "parse.y"
16627 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16630#line 16631 "parse.c"
16634#line 5649 "parse.y"
16636 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].id), &(yyloc));
16639#line 16640 "parse.c"
16643#line 5654 "parse.y"
16645 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
16648#line 16649 "parse.c"
16652#line 5659 "parse.y"
16654 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
16657#line 16658 "parse.c"
16661#line 5664 "parse.y"
16663 (yyval.node) = new_hash_pattern_tail(p, new_hash(p, 0, &(yyloc)), (yyvsp[0].
id), &(yyloc));
16666#line 16667 "parse.c"
16670#line 5673 "parse.y"
16672 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16675#line 16676 "parse.c"
16679#line 5680 "parse.y"
16681 error_duplicate_pattern_key(p, (yyvsp[-1].
id), &(yylsp[-1]));
16682 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
16685#line 16686 "parse.c"
16689#line 5686 "parse.y"
16691 error_duplicate_pattern_key(p, (yyvsp[0].
id), &(yylsp[0]));
16692 if ((yyvsp[0].
id) && !is_local_id((yyvsp[0].
id))) {
16693 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
16695 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16696 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
16699#line 16700 "parse.c"
16703#line 5699 "parse.y"
16705 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
16706 if (!(yyvsp[-1].node) || nd_type_p((yyvsp[-1].node), NODE_STR)) {
16707 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
16708 (yyval.id) =
rb_sym2id(rb_node_sym_string_val(node));
16711 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
16712 (yyval.id) = rb_intern_str(STR_NEW0());
16716#line 16717 "parse.c"
16720#line 5714 "parse.y"
16722 (yyval.id) = (yyvsp[0].
id);
16725#line 16726 "parse.c"
16729#line 5719 "parse.y"
16734#line 16735 "parse.c"
16738#line 5726 "parse.y"
16742#line 16743 "parse.c"
16746#line 5733 "parse.y"
16748 (yyval.id) = idNil;
16751#line 16752 "parse.c"
16755#line 3114 "parse.y"
16757 value_expr(p, (yyvsp[-2].node));
16758 value_expr(p, (yyvsp[0].node));
16759 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16762#line 16763 "parse.c"
16766#line 3121 "parse.y"
16768 value_expr(p, (yyvsp[-2].node));
16769 value_expr(p, (yyvsp[0].node));
16770 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16773#line 16774 "parse.c"
16777#line 3128 "parse.y"
16779 value_expr(p, (yyvsp[-1].node));
16780 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16783#line 16784 "parse.c"
16787#line 3134 "parse.y"
16789 value_expr(p, (yyvsp[-1].node));
16790 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16793#line 16794 "parse.c"
16797#line 3140 "parse.y"
16799 value_expr(p, (yyvsp[0].node));
16800 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16803#line 16804 "parse.c"
16807#line 3146 "parse.y"
16809 value_expr(p, (yyvsp[0].node));
16810 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16813#line 16814 "parse.c"
16817#line 5748 "parse.y"
16819 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16822#line 16823 "parse.c"
16826#line 5756 "parse.y"
16828 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16830 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16832#line 16833 "parse.c"
16836#line 5764 "parse.y"
16838 NODE *n = gettable(p, (yyvsp[0].
id), &(yyloc));
16840 n = NEW_ERROR(&(yyloc));
16842 else if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
16843 compile_error(p,
"%"PRIsVALUE
": no such local variable", rb_id2str((yyvsp[0].
id)));
16848#line 16849 "parse.c"
16852#line 5776 "parse.y"
16854 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16857#line 16858 "parse.c"
16861#line 5783 "parse.y"
16863 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
16866#line 16867 "parse.c"
16870#line 5790 "parse.y"
16872 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
16875#line 16876 "parse.c"
16879#line 5795 "parse.y"
16881 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
16884#line 16885 "parse.c"
16888#line 5800 "parse.y"
16890 (yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc));
16893#line 16894 "parse.c"
16897#line 5809 "parse.y"
16899 NODE *err = (yyvsp[-3].node);
16900 if ((yyvsp[-3].node)) {
16901 err = NEW_ERRINFO(&(yylsp[-3]));
16902 err = node_assign(p, (yyvsp[-3].node), err, NO_LEX_CTXT, &(yylsp[-3]));
16904 (yyval.node) = NEW_RESBODY((yyvsp[-4].node), (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16905 if ((yyvsp[-4].node)) {
16906 fixpos((yyval.node), (yyvsp[-4].node));
16908 else if ((yyvsp[-3].node)) {
16909 fixpos((yyval.node), (yyvsp[-3].node));
16912 fixpos((yyval.node), (yyvsp[-1].node));
16916#line 16917 "parse.c"
16920#line 5831 "parse.y"
16922 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16925#line 16926 "parse.c"
16929#line 5836 "parse.y"
16931 if (!((yyval.node) = splat_array((yyvsp[0].node)))) (yyval.node) = (yyvsp[0].node);
16933#line 16934 "parse.c"
16937#line 5843 "parse.y"
16939 (yyval.node) = (yyvsp[0].node);
16942#line 16943 "parse.c"
16946#line 5851 "parse.y"
16948 p->ctxt.in_rescue = (yyvsp[-2].ctxt).in_rescue;
16949 (yyval.node) = (yyvsp[-1].node);
16950 void_expr(p, void_stmts(p, (yyval.node)));
16953#line 16954 "parse.c"
16957#line 5865 "parse.y"
16959 if (!(yyvsp[0].node)) {
16960 (yyval.node) = NEW_STR(STRING_NEW0(), &(yyloc));
16963 (yyval.node) = evstr2dstr(p, (yyvsp[0].node));
16967#line 16968 "parse.c"
16971#line 5879 "parse.y"
16973 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16976#line 16977 "parse.c"
16980#line 5886 "parse.y"
16982 (yyval.node) = heredoc_dedent(p, (yyvsp[-1].node));
16983 if ((yyval.node)) nd_set_loc((yyval.node), &(yyloc));
16985 if (p->heredoc_indent > 0) {
16987 p->heredoc_indent = 0;
16991#line 16992 "parse.c"
16995#line 5899 "parse.y"
16997 (yyval.node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
16999 if (p->heredoc_indent > 0) {
17001 p->heredoc_indent = 0;
17005#line 17006 "parse.c"
17009#line 5911 "parse.y"
17011 (yyval.node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
17014#line 17015 "parse.c"
17018#line 3163 "parse.y"
17020 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
17023#line 17024 "parse.c"
17027#line 5921 "parse.y"
17032#line 17033 "parse.c"
17036#line 5926 "parse.y"
17038 (yyval.node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
17041#line 17042 "parse.c"
17045#line 5935 "parse.y"
17047 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
17050#line 17051 "parse.c"
17054#line 3163 "parse.y"
17056 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
17059#line 17060 "parse.c"
17063#line 5945 "parse.y"
17068#line 17069 "parse.c"
17072#line 5950 "parse.y"
17074 (yyval.node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
17077#line 17078 "parse.c"
17081#line 3163 "parse.y"
17083 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
17086#line 17087 "parse.c"
17090#line 3163 "parse.y"
17092 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
17095#line 17096 "parse.c"
17099#line 5963 "parse.y"
17104#line 17105 "parse.c"
17108#line 5968 "parse.y"
17110 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
17113#line 17114 "parse.c"
17117#line 5975 "parse.y"
17122#line 17123 "parse.c"
17126#line 5980 "parse.y"
17128 (yyval.node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
17131#line 17132 "parse.c"
17135#line 5987 "parse.y"
17140#line 17141 "parse.c"
17144#line 5992 "parse.y"
17146 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
17149#line 17150 "parse.c"
17153#line 5999 "parse.y"
17158#line 17159 "parse.c"
17162#line 6004 "parse.y"
17164 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
17167#line 17168 "parse.c"
17171#line 6011 "parse.y"
17176#line 17177 "parse.c"
17180#line 6016 "parse.y"
17182 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
17184 (yyval.node) = tail;
17187 (yyval.node) = head;
17190 switch (nd_type(head)) {
17192 head = str2dstr(p, head);
17197 head = list_append(p, NEW_DSTR(0, &(yyloc)), head);
17200 (yyval.node) = list_append(p, head, tail);
17204#line 17205 "parse.c"
17208#line 6044 "parse.y"
17211 (yyval.strterm) = p->lex.strterm;
17212 p->lex.strterm = 0;
17213 SET_LEX_STATE(EXPR_BEG);
17215#line 17216 "parse.c"
17219#line 6051 "parse.y"
17221 p->lex.strterm = (yyvsp[-1].strterm);
17222 (yyval.node) = NEW_EVSTR((yyvsp[0].node), &(yyloc), &(yylsp[-2]), &NULL_LOC);
17223 nd_set_line((yyval.node), (yylsp[0]).end_pos.lineno);
17226#line 17227 "parse.c"
17230#line 6058 "parse.y"
17235 (yyval.strterm) = p->lex.strterm;
17236 p->lex.strterm = 0;
17237 SET_LEX_STATE(EXPR_BEG);
17239#line 17240 "parse.c"
17243#line 6066 "parse.y"
17245 (yyval.num) = p->lex.brace_nest;
17246 p->lex.brace_nest = 0;
17248#line 17249 "parse.c"
17252#line 6070 "parse.y"
17254 (yyval.num) = p->heredoc_indent;
17255 p->heredoc_indent = 0;
17257#line 17258 "parse.c"
17261#line 6075 "parse.y"
17265 p->lex.strterm = (yyvsp[-4].strterm);
17266 SET_LEX_STATE((yyvsp[-5].state));
17267 p->lex.brace_nest = (yyvsp[-3].num);
17268 p->heredoc_indent = (yyvsp[-2].num);
17269 p->heredoc_line_indent = -1;
17270 if ((yyvsp[-1].node)) nd_unset_fl_newline((yyvsp[-1].node));
17271 (yyval.node) = new_evstr(p, (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[0]));
17274#line 17275 "parse.c"
17278#line 6094 "parse.y"
17280 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17283#line 17284 "parse.c"
17287#line 6106 "parse.y"
17289 SET_LEX_STATE(EXPR_END);
17290 VALUE str = rb_id2str((yyvsp[0].
id));
17297 if (!str) str = STR_NEW0();
17298 (yyval.node) = NEW_SYM(str, &(yyloc));
17301#line 17302 "parse.c"
17305#line 6126 "parse.y"
17307 SET_LEX_STATE(EXPR_END);
17308 (yyval.node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
17311#line 17312 "parse.c"
17315#line 6135 "parse.y"
17317 (yyval.node) = (yyvsp[0].node);
17318 negate_lit(p, (yyval.node), &(yyloc));
17321#line 17322 "parse.c"
17325#line 6157 "parse.y"
17326 {(yyval.id) = KWD2EID(nil, (yyvsp[0].
id));}
17327#line 17328 "parse.c"
17331#line 6158 "parse.y"
17332 {(yyval.id) = KWD2EID(self, (yyvsp[0].
id));}
17333#line 17334 "parse.c"
17337#line 6159 "parse.y"
17338 {(yyval.id) = KWD2EID(
true, (yyvsp[0].
id));}
17339#line 17340 "parse.c"
17343#line 6160 "parse.y"
17344 {(yyval.id) = KWD2EID(
false, (yyvsp[0].
id));}
17345#line 17346 "parse.c"
17349#line 6161 "parse.y"
17350 {(yyval.id) = KWD2EID(_FILE__, (yyvsp[0].
id));}
17351#line 17352 "parse.c"
17355#line 6162 "parse.y"
17356 {(yyval.id) = KWD2EID(_LINE__, (yyvsp[0].
id));}
17357#line 17358 "parse.c"
17361#line 6163 "parse.y"
17362 {(yyval.id) = KWD2EID(_ENCODING__, (yyvsp[0].
id));}
17363#line 17364 "parse.c"
17367#line 6167 "parse.y"
17369 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17370 if (ifdef_ripper(id_is_var(p, (yyvsp[0].
id)),
false)) {
17377#line 17378 "parse.c"
17381#line 6177 "parse.y"
17383 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17386#line 17387 "parse.c"
17390#line 6184 "parse.y"
17393 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
17395#line 17396 "parse.c"
17399#line 6184 "parse.y"
17402 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
17404#line 17405 "parse.c"
17408#line 6195 "parse.y"
17410 SET_LEX_STATE(EXPR_BEG);
17411 p->command_start = TRUE;
17413#line 17414 "parse.c"
17417#line 6200 "parse.y"
17419 (yyval.node) = (yyvsp[-1].node);
17422#line 17423 "parse.c"
17426#line 6209 "parse.y"
17428 p->ctxt.in_argdef = 0;
17430#line 17431 "parse.c"
17434#line 6215 "parse.y"
17436 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
17437 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyval.node_args), &(yyloc));
17440#line 17441 "parse.c"
17444#line 6223 "parse.y"
17446 (yyval.node_args) = (yyvsp[-1].node_args);
17448 SET_LEX_STATE(EXPR_BEG);
17449 p->command_start = TRUE;
17450 p->ctxt.in_argdef = 0;
17452#line 17453 "parse.c"
17456#line 6233 "parse.y"
17458 (yyval.ctxt) = p->ctxt;
17459 p->ctxt.in_kwarg = 1;
17460 p->ctxt.in_argdef = 1;
17461 SET_LEX_STATE(p->lex.state|EXPR_LABEL);
17463#line 17464 "parse.c"
17467#line 6240 "parse.y"
17469 p->ctxt.in_kwarg = (yyvsp[-2].ctxt).in_kwarg;
17470 p->ctxt.in_argdef = 0;
17471 (yyval.node_args) = (yyvsp[-1].node_args);
17472 SET_LEX_STATE(EXPR_BEG);
17473 p->command_start = TRUE;
17476#line 17477 "parse.c"
17480#line 3014 "parse.y"
17482 p->ctxt.in_argdef = 1;
17483 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17486#line 17487 "parse.c"
17490#line 3020 "parse.y"
17492 p->ctxt.in_argdef = 1;
17493 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
17496#line 17497 "parse.c"
17500#line 3029 "parse.y"
17502 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
17505#line 17506 "parse.c"
17509#line 3034 "parse.y"
17511 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
17514#line 17515 "parse.c"
17518#line 2951 "parse.y"
17520 (yyval.id) = (yyvsp[0].
id);
17523#line 17524 "parse.c"
17527#line 2928 "parse.y"
17529 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
17532#line 17533 "parse.c"
17536#line 2933 "parse.y"
17538 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
17541#line 17542 "parse.c"
17545#line 2938 "parse.y"
17547 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
17550#line 17551 "parse.c"
17554#line 2943 "parse.y"
17556 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
17559#line 17560 "parse.c"
17563#line 6252 "parse.y"
17565 add_forwarding_args(p);
17566 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[0].
id), arg_FWD_BLOCK, &(yylsp[0]));
17567 (yyval.node_args)->nd_ainfo.forwarding = 1;
17570#line 17571 "parse.c"
17574#line 2928 "parse.y"
17576 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
17579#line 17580 "parse.c"
17583#line 2933 "parse.y"
17585 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
17588#line 17589 "parse.c"
17592#line 2938 "parse.y"
17594 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
17597#line 17598 "parse.c"
17601#line 2943 "parse.y"
17603 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
17606#line 17607 "parse.c"
17610#line 6262 "parse.y"
17612 yyerror1(&(yylsp[0]),
"unexpected ... in lambda argument");
17613 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
17614 (yyval.node_args)->nd_ainfo.forwarding = 1;
17617#line 17618 "parse.c"
17621#line 2992 "parse.y"
17623 p->ctxt.in_argdef = 1;
17624 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17627#line 17628 "parse.c"
17631#line 3001 "parse.y"
17633 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
17636#line 17637 "parse.c"
17640#line 3006 "parse.y"
17642 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
17645#line 17646 "parse.c"
17649#line 3101 "parse.y"
17651 (yyval.node_args) = (yyvsp[0].node_args);
17654#line 17655 "parse.c"
17658#line 3106 "parse.y"
17660 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
17663#line 17664 "parse.c"
17667#line 6272 "parse.y"
17669 (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));
17672#line 17673 "parse.c"
17676#line 6277 "parse.y"
17678 (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));
17681#line 17682 "parse.c"
17685#line 6282 "parse.y"
17687 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17690#line 17691 "parse.c"
17694#line 6287 "parse.y"
17696 (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));
17699#line 17700 "parse.c"
17703#line 6292 "parse.y"
17705 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17708#line 17709 "parse.c"
17712#line 6297 "parse.y"
17714 (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));
17717#line 17718 "parse.c"
17721#line 6302 "parse.y"
17723 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17726#line 17727 "parse.c"
17730#line 6307 "parse.y"
17732 (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));
17735#line 17736 "parse.c"
17739#line 6312 "parse.y"
17741 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17744#line 17745 "parse.c"
17748#line 6317 "parse.y"
17750 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17753#line 17754 "parse.c"
17757#line 6322 "parse.y"
17759 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17762#line 17763 "parse.c"
17766#line 6327 "parse.y"
17768 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17771#line 17772 "parse.c"
17775#line 6344 "parse.y"
17777 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17780#line 17781 "parse.c"
17784#line 6335 "parse.y"
17786 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17789#line 17790 "parse.c"
17793#line 3101 "parse.y"
17795 (yyval.node_args) = (yyvsp[0].node_args);
17798#line 17799 "parse.c"
17802#line 3106 "parse.y"
17804 (yyval.node_args) = new_empty_args_tail(p, &(yyloc));
17807#line 17808 "parse.c"
17811#line 6272 "parse.y"
17813 (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));
17816#line 17817 "parse.c"
17820#line 6277 "parse.y"
17822 (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));
17825#line 17826 "parse.c"
17829#line 6282 "parse.y"
17831 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17834#line 17835 "parse.c"
17838#line 6287 "parse.y"
17840 (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));
17843#line 17844 "parse.c"
17847#line 6292 "parse.y"
17849 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17852#line 17853 "parse.c"
17856#line 6297 "parse.y"
17858 (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));
17861#line 17862 "parse.c"
17865#line 6302 "parse.y"
17867 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17870#line 17871 "parse.c"
17874#line 6307 "parse.y"
17876 (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));
17879#line 17880 "parse.c"
17883#line 6312 "parse.y"
17885 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17888#line 17889 "parse.c"
17892#line 6317 "parse.y"
17894 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17897#line 17898 "parse.c"
17901#line 6322 "parse.y"
17903 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17906#line 17907 "parse.c"
17910#line 6327 "parse.y"
17912 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17915#line 17916 "parse.c"
17919#line 6344 "parse.y"
17921 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17924#line 17925 "parse.c"
17928#line 6335 "parse.y"
17930 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17933#line 17934 "parse.c"
17937#line 6359 "parse.y"
17939 (yyval.id) = idFWD_KWREST;
17942#line 17943 "parse.c"
17946#line 6366 "parse.y"
17948 static const char mesg[] =
"formal argument cannot be a constant";
17950 yyerror1(&(yylsp[0]), mesg);
17955#line 17956 "parse.c"
17959#line 6375 "parse.y"
17961 static const char mesg[] =
"formal argument cannot be an instance variable";
17963 yyerror1(&(yylsp[0]), mesg);
17968#line 17969 "parse.c"
17972#line 6384 "parse.y"
17974 static const char mesg[] =
"formal argument cannot be a global variable";
17976 yyerror1(&(yylsp[0]), mesg);
17981#line 17982 "parse.c"
17985#line 6393 "parse.y"
17987 static const char mesg[] =
"formal argument cannot be a class variable";
17989 yyerror1(&(yylsp[0]), mesg);
17994#line 17995 "parse.c"
17998#line 6405 "parse.y"
18000 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
18004 p->max_numparam = ORDINAL_PARAM;
18006#line 18007 "parse.c"
18010#line 6415 "parse.y"
18012 arg_var(p, (yyvsp[0].
id));
18013 (yyval.id) = (yyvsp[0].
id);
18015#line 18016 "parse.c"
18019#line 6422 "parse.y"
18021 (yyval.node_args_aux) = NEW_ARGS_AUX((yyvsp[0].
id), 1, &NULL_LOC);
18024#line 18025 "parse.c"
18028#line 6427 "parse.y"
18030 ID tid = internal_id(p);
18032 loc.beg_pos = (yylsp[-1]).beg_pos;
18033 loc.end_pos = (yylsp[-1]).beg_pos;
18035 if (dyna_in_block(p)) {
18036 (yyvsp[-1].node_masgn)->nd_value = NEW_DVAR(tid, &loc);
18039 (yyvsp[-1].node_masgn)->nd_value = NEW_LVAR(tid, &loc);
18041 (yyval.node_args_aux) = NEW_ARGS_AUX(tid, 1, &NULL_LOC);
18042 (yyval.node_args_aux)->nd_next = (
NODE *)(yyvsp[-1].node_masgn);
18045#line 18046 "parse.c"
18049#line 6448 "parse.y"
18051 (yyval.node_args_aux) = (yyvsp[-2].node_args_aux);
18052 (yyval.node_args_aux)->nd_plen++;
18053 (yyval.node_args_aux)->nd_next = block_append(p, (yyval.node_args_aux)->nd_next, (yyvsp[0].node_args_aux)->nd_next);
18054 rb_discard_node(p, (
NODE *)(yyvsp[0].node_args_aux));
18057#line 18058 "parse.c"
18061#line 6459 "parse.y"
18063 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
18074 arg_var(p, ifdef_ripper(0, (yyvsp[0].
id)));
18076 p->max_numparam = ORDINAL_PARAM;
18077 p->ctxt.in_argdef = 0;
18079#line 18080 "parse.c"
18083#line 6483 "parse.y"
18087#line 18088 "parse.c"
18091#line 6489 "parse.y"
18093 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
18094 (yyval.id) = (yyvsp[0].
id);
18097#line 18098 "parse.c"
18101#line 6495 "parse.y"
18103 arg_var(p, idFWD_KWREST);
18104 (yyval.id) = idFWD_KWREST;
18107#line 18108 "parse.c"
18111#line 6507 "parse.y"
18113 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
18114 (yyval.id) = (yyvsp[0].
id);
18117#line 18118 "parse.c"
18121#line 6513 "parse.y"
18123 arg_var(p, idFWD_REST);
18124 (yyval.id) = idFWD_REST;
18127#line 18128 "parse.c"
18131#line 6525 "parse.y"
18133 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
18134 (yyval.id) = (yyvsp[0].
id);
18137#line 18138 "parse.c"
18141#line 6531 "parse.y"
18143 (yyval.id) = idNil;
18146#line 18147 "parse.c"
18150#line 6536 "parse.y"
18152 arg_var(p, idFWD_BLOCK);
18153 (yyval.id) = idFWD_BLOCK;
18156#line 18157 "parse.c"
18160#line 6544 "parse.y"
18165#line 18166 "parse.c"
18169#line 3155 "parse.y"
18171 value_expr(p, (yyvsp[0].node));
18172 (yyval.node) = (yyvsp[0].node);
18174#line 18175 "parse.c"
18178#line 6552 "parse.y"
18180 NODE *expr = last_expr_node((yyvsp[0].node));
18181 switch (nd_type(expr)) {
18191 case NODE_ENCODING:
18194 case NODE_RATIONAL:
18195 case NODE_IMAGINARY:
18199 yyerror1(&expr->nd_loc,
"can't define singleton method for literals");
18204 (yyval.node) = (yyvsp[0].node);
18206#line 18207 "parse.c"
18210#line 6583 "parse.y"
18212 SET_LEX_STATE(EXPR_BEG);
18213 p->ctxt.in_argdef = 0;
18215#line 18216 "parse.c"
18219#line 6588 "parse.y"
18221 p->ctxt.in_argdef = 1;
18222 (yyval.node) = (yyvsp[-1].node);
18225#line 18226 "parse.c"
18229#line 6597 "parse.y"
18231 (yyval.node) = (yyvsp[-1].node);
18234#line 18235 "parse.c"
18238#line 6606 "parse.y"
18240 NODE *assocs = (yyvsp[-2].node);
18241 NODE *tail = (yyvsp[0].node);
18246 if (RNODE_LIST(assocs)->nd_head) {
18247 NODE *n = RNODE_LIST(tail)->nd_next;
18248 if (!RNODE_LIST(tail)->nd_head && nd_type_p(n, NODE_LIST) &&
18249 nd_type_p((n = RNODE_LIST(n)->nd_head), NODE_HASH)) {
18251 tail = RNODE_HASH(n)->nd_head;
18255 assocs = list_concat(assocs, tail);
18258 (yyval.node) = assocs;
18261#line 18262 "parse.c"
18265#line 6631 "parse.y"
18267 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
18270#line 18271 "parse.c"
18274#line 6636 "parse.y"
18276 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
18279#line 18280 "parse.c"
18283#line 6641 "parse.y"
18285 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
18286 if (!val) val = NEW_ERROR(&(yyloc));
18287 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
18290#line 18291 "parse.c"
18294#line 6648 "parse.y"
18296 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
18297 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
18300#line 18301 "parse.c"
18304#line 6654 "parse.y"
18306 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
18309#line 18310 "parse.c"
18313#line 6659 "parse.y"
18315 forwarding_arg_check(p, idFWD_KWREST, idFWD_ALL,
"keyword rest");
18316 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)),
18317 NEW_LVAR(idFWD_KWREST, &(yyloc)));
18320#line 18321 "parse.c"
18324#line 6706 "parse.y"
18328 if (p->ctxt.in_defined) {
18329 p->ctxt.has_trailing_semicolon = 1;
18332#line 18333 "parse.c"
18336#line 6714 "parse.y"
18338 (yyloc).end_pos = (yyloc).beg_pos;
18341#line 18342 "parse.c"
18345#line 6721 "parse.y"
18347#line 18348 "parse.c"
18351#line 6725 "parse.y"
18356#line 18357 "parse.c"
18360#line 18361 "parse.c"
18375 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc, p);
18377 YYPOPSTACK (yylen);
18379#line 2667 "parse.y"
18380 {after_reduce(yylen, p);}
18381#line 18382 "parse.c"
18392 const int yylhs = yyr1[yyn] - YYNTOKENS;
18393 const int yyi = yypgoto[yylhs] + *yyssp;
18394 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
18396 : yydefgoto[yylhs]);
18408 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
18415 = {yyssp, yytoken, &yylloc};
18416 char const *yymsgp = YY_(
"syntax error");
18417 int yysyntax_error_status;
18418 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
18419 if (yysyntax_error_status == 0)
18421 else if (yysyntax_error_status == -1)
18423 if (yymsg != yymsgbuf)
18424 YYSTACK_FREE (yymsg);
18425 yymsg = YY_CAST (
char *,
18426 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
18429 yysyntax_error_status
18430 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
18436 yymsg_alloc =
sizeof yymsgbuf;
18437 yysyntax_error_status = YYENOMEM;
18440 yyerror (&yylloc, p, yymsgp);
18441 if (yysyntax_error_status == YYENOMEM)
18446 yyerror_range[1] = yylloc;
18447 if (yyerrstatus == 3)
18452 if (yychar <= END_OF_INPUT)
18455 if (yychar == END_OF_INPUT)
18460 yydestruct (
"Error: discarding",
18461 yytoken, &yylval, &yylloc, p);
18483 YYPOPSTACK (yylen);
18485#line 2669 "parse.y"
18486 {after_pop_stack(yylen, p);}
18487#line 18488 "parse.c"
18490 YY_STACK_PRINT (yyss, yyssp, p);
18504 yyn = yypact[yystate];
18505 if (!yypact_value_is_default (yyn))
18507 yyn += YYSYMBOL_YYerror;
18508 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
18510 yyn = yytable[yyn];
18520 yyerror_range[1] = *yylsp;
18521 yydestruct (
"Error: popping",
18522 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
18525#line 2669 "parse.y"
18526 {after_pop_stack(1, p);}
18527#line 18528 "parse.c"
18530 YY_STACK_PRINT (yyss, yyssp, p);
18533 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
18535 YY_IGNORE_MAYBE_UNINITIALIZED_END
18537 yyerror_range[2] = yylloc;
18539 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
18542 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp, p);
18544#line 2668 "parse.y"
18545 {after_shift_error_token(p);}
18546#line 18547 "parse.c"
18573 yyerror (&yylloc, p, YY_(
"memory exhausted"));
18582 if (yychar != YYEMPTY)
18586 yytoken = YYTRANSLATE (yychar);
18587 yydestruct (
"Cleanup: discarding lookahead",
18588 yytoken, &yylval, &yylloc, p);
18592 YYPOPSTACK (yylen);
18593 YY_STACK_PRINT (yyss, yyssp, p);
18594 while (yyssp != yyss)
18596 yydestruct (
"Cleanup: popping",
18597 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
18602 YYSTACK_FREE (yyss);
18604 if (yymsg != yymsgbuf)
18605 YYSTACK_FREE (yymsg);
18609#line 6730 "parse.y"
18614# define yylval (*p->lval)
18622#define set_parser_s_value(x) (ifdef_ripper(p->s_value = (x), (void)0))
18624# define set_yylval_node(x) { \
18625 YYLTYPE _cur_loc; \
18626 rb_parser_set_location(p, &_cur_loc); \
18627 yylval.node = (x); \
18628 set_parser_s_value(STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)); \
18630# define set_yylval_str(x) \
18632 set_yylval_node(NEW_STR(x, &_cur_loc)); \
18633 set_parser_s_value(rb_str_new_mutable_parser_string(x)); \
18635# define set_yylval_num(x) { \
18636 yylval.num = (x); \
18637 set_parser_s_value(x); \
18639# define set_yylval_id(x) (yylval.id = (x))
18640# define set_yylval_name(x) { \
18641 (yylval.id = (x)); \
18642 set_parser_s_value(ID2SYM(x)); \
18644# define yylval_id() (yylval.id)
18646#define set_yylval_noname() set_yylval_id(keyword_nil)
18647#define has_delayed_token(p) (p->delayed.token != NULL)
18650#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
18651#define dispatch_scan_event(p, t) parser_dispatch_scan_event(p, t, __LINE__)
18656 const char *
const pcur = p->lex.pcur;
18657 const char *
const ptok = p->lex.ptok;
18658 if (p->keep_tokens && (pcur < ptok)) {
18659 rb_bug(
"lex.pcur < lex.ptok. (line: %d) %"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"",
18660 p->ruby_sourceline, ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur);
18662 return pcur > ptok;
18669 case '"':
return "\\\"";
18670 case '\\':
return "\\\\";
18671 case '\0':
return "\\0";
18672 case '\n':
return "\\n";
18673 case '\r':
return "\\r";
18674 case '\t':
return "\\t";
18675 case '\f':
return "\\f";
18676 case '\013':
return "\\v";
18677 case '\010':
return "\\b";
18678 case '\007':
return "\\a";
18679 case '\033':
return "\\e";
18680 case '\x7f':
return "\\c?";
18689 const char *ptr = str->ptr;
18690 const char *pend = ptr + str->len;
18691 const char *prev = ptr;
18692 char charbuf[5] = {
'\\',
'x', 0, 0, 0};
18695 while (ptr < pend) {
18698 int n = rb_enc_precise_mbclen(ptr, pend, enc);
18700 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18701 n = rb_enc_mbminlen(enc);
18702 if (pend < ptr + n)
18703 n = (int)(pend - ptr);
18705 c = *ptr & 0xf0 >> 4;
18706 charbuf[2] = (c < 10) ?
'0' + c :
'A' + c - 10;
18708 charbuf[3] = (c < 10) ?
'0' + c :
'A' + c - 10;
18709 parser_str_cat(result, charbuf, 4);
18715 c = rb_enc_mbc_to_codepoint(ptr, pend, enc);
18717 cc = escaped_char(c);
18719 if (ptr - n > prev) parser_str_cat(result, prev, ptr - n - prev);
18720 parser_str_cat_cstr(result, cc);
18723 else if (rb_enc_isascii(c, enc) &&
ISPRINT(c)) {
18726 if (ptr - n > prev) {
18727 parser_str_cat(result, prev, ptr - n - prev);
18730 parser_str_cat(result, prev, ptr - prev);
18734 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18743 token->id = p->token_id;
18744 token->type_name = parser_token2char(p, t);
18746 token->loc.beg_pos = p->yylloc->beg_pos;
18747 token->loc.end_pos = p->yylloc->end_pos;
18748 rb_parser_ary_push_ast_token(p, p->tokens, token);
18753 rb_parser_printf(p,
"Append tokens (line: %d) [%d, :%s, \"%s\", [%d, %d, %d, %d]]\n",
18754 line, token->id, token->type_name, str_escaped->ptr,
18755 token->loc.beg_pos.lineno, token->loc.beg_pos.column,
18756 token->loc.end_pos.lineno, token->loc.end_pos.column);
18757 rb_parser_string_free(p, str_escaped);
18762parser_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t,
int line)
18764 debug_token_line(p,
"parser_dispatch_scan_event", line);
18766 if (!parser_has_token(p))
return;
18768 RUBY_SET_YYLLOC(*p->yylloc);
18770 if (p->keep_tokens) {
18771 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pcur - p->lex.ptok, p->enc);
18772 parser_append_tokens(p, str, t, line);
18778#define dispatch_delayed_token(p, t) parser_dispatch_delayed_token(p, t, __LINE__)
18780parser_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t,
int line)
18782 debug_token_line(p,
"parser_dispatch_delayed_token", line);
18784 if (!has_delayed_token(p))
return;
18786 RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(*p->yylloc);
18788 if (p->keep_tokens) {
18790 parser_append_tokens(p, p->delayed.token, t, line);
18793 rb_parser_string_free(p, p->delayed.token);
18796 p->delayed.token = NULL;
18799#define literal_flush(p, ptr) ((void)(ptr))
18804 if (p->lex.pcur < p->lex.ptok) rb_raise(
rb_eRuntimeError,
"lex.pcur < lex.ptok");
18805 return p->lex.pcur > p->lex.ptok;
18809ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
18811 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
18812 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
18813 RUBY_SET_YYLLOC(*p->yylloc);
18819ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
18821 if (!ripper_has_scan_event(p))
return;
18823 set_parser_s_value(ripper_scan_event_val(p, t));
18825#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
18828ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
18831 int saved_line = p->ruby_sourceline;
18832 const char *saved_tokp = p->lex.ptok;
18833 VALUE s_value, str;
18835 if (!has_delayed_token(p))
return;
18836 p->ruby_sourceline = p->delayed.beg_line;
18837 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
18838 str = rb_str_new_mutable_parser_string(p->delayed.token);
18839 rb_parser_string_free(p, p->delayed.token);
18840 s_value = ripper_dispatch1(p, ripper_token2eventid(t), str);
18841 set_parser_s_value(s_value);
18842 p->delayed.token = NULL;
18843 p->ruby_sourceline = saved_line;
18844 p->lex.ptok = saved_tokp;
18846#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
18852 return rb_enc_isalnum((
unsigned char)*ptr, enc) || *ptr ==
'_' || !
ISASCII(*ptr);
18858 const char *ptr = p->lex.pcur + at;
18859 if (lex_eol_ptr_n_p(p, ptr,
len-1))
return false;
18860 if (memcmp(ptr, str,
len))
return false;
18861 if (lex_eol_ptr_n_p(p, ptr,
len))
return true;
18862 switch (ptr[
len]) {
18863 case '!':
case '?':
return false;
18865 return !is_identchar(p, ptr+
len, p->lex.pend, p->enc);
18871 return !(p)->eofp && is_identchar(p, p->lex.pcur-1, p->lex.pend, p->enc);
18877 return ISASCII(*(p->lex.pcur-1));
18883 int column = 1, nonspc = 0, i;
18884 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
18885 if (*ptr ==
'\t') {
18886 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
18889 if (*ptr !=
' ' && *ptr !=
'\t') {
18894 ptinfo->beg = loc->beg_pos;
18895 ptinfo->indent = column;
18896 ptinfo->nonspc = nonspc;
18904 if (!p->token_info_enabled)
return;
18906 ptinfo->token = token;
18907 ptinfo->next = p->token_info;
18908 token_info_setup(ptinfo, p->lex.pbeg, loc);
18910 p->token_info = ptinfo;
18918 if (!ptinfo_beg)
return;
18921 token_info_warn(p, token, ptinfo_beg, 1, loc);
18923 p->token_info = ptinfo_beg->next;
18924 ruby_xfree_sized(ptinfo_beg,
sizeof(*ptinfo_beg));
18932 if (!ptinfo_beg)
return;
18933 p->token_info = ptinfo_beg->next;
18935 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
18936 ptinfo_beg->beg.column != beg_pos.column ||
18937 strcmp(ptinfo_beg->token, token)) {
18938 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
18939 beg_pos.lineno, beg_pos.column, token,
18940 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
18941 ptinfo_beg->token);
18944 ruby_xfree_sized(ptinfo_beg,
sizeof(*ptinfo_beg));
18950 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
18951 if (!p->token_info_enabled)
return;
18952 if (!ptinfo_beg)
return;
18953 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
18954 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
18955 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
18956 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
18957 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
18958 rb_warn3L(ptinfo_end->beg.lineno,
18959 "mismatched indentations at '%s' with '%s' at %d",
18960 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
18964parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
18966 int len = rb_enc_precise_mbclen(ptr, p->lex.pend, p->enc);
18968 compile_error(p,
"invalid multibyte char (%s)", rb_enc_name(p->enc));
18979 int lineno = p->ruby_sourceline;
18983 else if (yylloc->beg_pos.lineno == lineno) {
18984 str = p->lex.lastline;
18989 ruby_show_error_line(p, p->error_buffer, yylloc, lineno, str);
18999 yylloc = RUBY_SET_YYLLOC(current);
19001 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
19002 p->ruby_sourceline != yylloc->end_pos.lineno)) {
19006 parser_compile_error(p, yylloc,
"%s", msg);
19007 parser_show_error_line(p, yylloc);
19015 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
19022 const int max_line_margin = 30;
19023 const char *ptr, *ptr_end, *pt, *pb;
19024 const char *pre =
"", *post =
"", *pend;
19025 const char *code =
"", *caret =
"";
19027 const char *
const pbeg = PARSER_STRING_PTR(str);
19032 if (!yylloc)
return;
19033 pend = rb_parser_string_end(str);
19034 if (pend > pbeg && pend[-1] ==
'\n') {
19035 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
19039 if (lineno == yylloc->end_pos.lineno &&
19040 (pend - pbeg) > yylloc->end_pos.column) {
19041 pt = pbeg + yylloc->end_pos.column;
19044 ptr = ptr_end = pt;
19045 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
19046 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
19048 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
19049 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
19051 len = ptr_end - ptr;
19054 ptr = rb_enc_prev_char(pbeg, ptr, pt, rb_parser_str_get_encoding(str));
19055 if (ptr > pbeg) pre =
"...";
19057 if (ptr_end < pend) {
19058 ptr_end = rb_enc_prev_char(pt, ptr_end, pend, rb_parser_str_get_encoding(str));
19059 if (ptr_end < pend) post =
"...";
19063 if (lineno == yylloc->beg_pos.lineno) {
19064 pb += yylloc->beg_pos.column;
19065 if (pb > pt) pb = pt;
19067 if (pb < ptr) pb = ptr;
19068 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
19071 if (
RTEST(errbuf)) {
19072 mesg = rb_attr_get(errbuf, idMesg);
19073 if (char_at_end(p, mesg,
'\n') !=
'\n')
19077 mesg = rb_enc_str_new(0, 0, rb_parser_str_get_encoding(str));
19079 if (!errbuf && rb_stderr_tty_p()) {
19080#define CSI_BEGIN "\033["
19083 CSI_BEGIN
""CSI_SGR
"%s"
19084 CSI_BEGIN
"1"CSI_SGR
"%.*s"
19085 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
19086 CSI_BEGIN
";1"CSI_SGR
"%.*s"
19087 CSI_BEGIN
""CSI_SGR
"%s"
19090 (
int)(pb - ptr), ptr,
19091 (
int)(pt - pb), pb,
19092 (
int)(ptr_end - pt), pt,
19098 len = ptr_end - ptr;
19099 lim = pt < pend ? pt : pend;
19100 i = (int)(lim - ptr);
19106 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
19112 memset(p2,
'~', (lim - ptr));
19116 rb_str_catf(mesg,
"%s%.*s%s\n""%s%s\n",
19117 pre, (
int)
len, code, post,
19120 if (!errbuf) rb_write_error_str(mesg);
19127 const char *pcur = 0, *ptok = 0;
19128 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
19129 p->ruby_sourceline == yylloc->end_pos.lineno) {
19130 pcur = p->lex.pcur;
19131 ptok = p->lex.ptok;
19132 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
19133 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
19135 parser_yyerror0(p, msg);
19137 p->lex.ptok = ptok;
19138 p->lex.pcur = pcur;
19146 dispatch1(parse_error, STR_NEW2(msg));
19158vtable_size(
const struct vtable *tbl)
19160 if (!DVARS_TERMINAL_P(tbl)) {
19178 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
19183#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
19186vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
19191 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
19194 if (!DVARS_TERMINAL_P(tbl)) {
19196 ruby_xfree_sized(tbl->tbl, tbl->capa *
sizeof(
ID));
19198 ruby_xfree_sized(tbl,
sizeof(*tbl));
19201#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
19204vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
19209 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
19210 line, name, (
void *)tbl, rb_id2name(
id));
19213 if (DVARS_TERMINAL_P(tbl)) {
19214 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
19217 if (tbl->pos == tbl->capa) {
19218 tbl->capa = tbl->capa * 2;
19219 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
19221 tbl->tbl[tbl->pos++] = id;
19223#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
19226vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
19227 struct vtable *tbl,
int n)
19230 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
19231 line, name, (
void *)tbl, n);
19233 if (tbl->pos < n) {
19234 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
19239#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
19242vtable_included(
const struct vtable * tbl,
ID id)
19246 if (!DVARS_TERMINAL_P(tbl)) {
19247 for (i = 0; i < tbl->pos; i++) {
19248 if (tbl->tbl[i] ==
id) {
19261 return strcmp(p->ruby_sourcefile,
"-e") == 0;
19268yycompile0(
VALUE arg)
19275 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string) && !e_option_supplied(p)) {
19279 if (p->debug_lines) {
19280 p->ast->body.script_lines = p->debug_lines;
19284#define RUBY_DTRACE_PARSE_HOOK(name) \
19285 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
19286 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
19288 RUBY_DTRACE_PARSE_HOOK(BEGIN);
19290 RUBY_DTRACE_PARSE_HOOK(END);
19292 p->debug_lines = 0;
19294 xfree(p->lex.strterm);
19295 p->lex.strterm = 0;
19296 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
19297 if (n || p->error_p) {
19298 VALUE mesg = p->error_buffer;
19300 mesg = syntax_error_new();
19302 if (!p->error_tolerant) {
19303 rb_set_errinfo(mesg);
19307 tree = p->eval_tree;
19309 tree = NEW_NIL(&NULL_LOC);
19314 NODE *body = parser_append_options(p, RNODE_SCOPE(tree)->nd_body);
19315 prelude = block_append(p, p->eval_tree_begin, body);
19316 RNODE_SCOPE(tree)->nd_body = prelude;
19317 p->ast->body.frozen_string_literal = p->frozen_string_literal;
19318 p->ast->body.coverage_enabled = cov;
19319 if (p->keep_tokens) {
19320 p->ast->node_buffer->tokens = tokens;
19324 p->ast->body.root = tree;
19325 p->ast->body.line_count = p->line_count;
19333 if (
NIL_P(fname)) {
19334 p->ruby_sourcefile_string =
Qnil;
19335 p->ruby_sourcefile =
"(none)";
19338 p->ruby_sourcefile_string = rb_str_to_interned_str(fname);
19341 p->ruby_sourceline = line - 1;
19345 p->ast = ast = rb_ast_new();
19346 compile_callback(yycompile0, (
VALUE)p);
19360 rb_encoding *enc = rb_parser_str_get_encoding(s);
19361 if (!rb_enc_asciicompat(enc)) {
19362 rb_raise(rb_eArgError,
"invalid source encoding");
19371 if (!line)
return 0;
19373 string_buffer_append(p, line);
19374 must_be_ascii_compatible(p, line);
19380rb_parser_compile(
rb_parser_t *p, rb_parser_lex_gets_func *gets,
VALUE fname, rb_parser_input_data input,
int line)
19382 p->lex.gets = gets;
19383 p->lex.input = input;
19384 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
19386 return yycompile(p, fname, line);
19390#define STR_FUNC_ESCAPE 0x01
19391#define STR_FUNC_EXPAND 0x02
19392#define STR_FUNC_REGEXP 0x04
19393#define STR_FUNC_QWORDS 0x08
19394#define STR_FUNC_SYMBOL 0x10
19395#define STR_FUNC_INDENT 0x20
19396#define STR_FUNC_LABEL 0x40
19397#define STR_FUNC_LIST 0x4000
19398#define STR_FUNC_TERM 0x8000
19401 str_label = STR_FUNC_LABEL,
19403 str_dquote = (STR_FUNC_EXPAND),
19404 str_xquote = (STR_FUNC_EXPAND),
19405 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
19406 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
19407 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
19408 str_ssym = (STR_FUNC_SYMBOL),
19409 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
19417 pstr = rb_parser_encoding_string_new(p, ptr,
len, enc);
19419 if (!(func & STR_FUNC_REGEXP)) {
19420 if (rb_parser_is_ascii_string(p, pstr)) {
19422 else if (rb_is_usascii_enc((
void *)enc0) && enc != rb_utf8_encoding()) {
19424 enc = rb_ascii8bit_encoding();
19425 PARSER_ENCODING_CODERANGE_SET(pstr, enc, RB_PARSER_ENC_CODERANGE_VALID);
19435 return strterm->heredoc;
19439new_strterm(
struct parser_params *p,
int func,
int term,
int paren)
19442 strterm->u.literal.func = func;
19443 strterm->u.literal.term = term;
19444 strterm->u.literal.paren = paren;
19452 strterm->heredoc =
true;
19456#define peek(p,c) peek_n(p, (c), 0)
19457#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
19458#define peekc(p) peekc_n(p, 0)
19459#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
19461#define add_delayed_token(p, tok, end) parser_add_delayed_token(p, tok, end, __LINE__)
19463parser_add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end,
int line)
19465 debug_token_line(p,
"add_delayed_token", line);
19468 if (has_delayed_token(p)) {
19469 bool next_line = parser_string_char_at_end(p, p->delayed.token, 0) ==
'\n';
19470 int end_line = (next_line ? 1 : 0) + p->delayed.end_line;
19471 int end_col = (next_line ? 0 : p->delayed.end_col);
19472 if (end_line != p->ruby_sourceline || end_col != tok - p->lex.pbeg) {
19473 dispatch_delayed_token(p, tSTRING_CONTENT);
19476 if (!has_delayed_token(p)) {
19477 p->delayed.token = rb_parser_string_new(p, 0, 0);
19478 rb_parser_enc_associate(p, p->delayed.token, p->enc);
19479 p->delayed.beg_line = p->ruby_sourceline;
19480 p->delayed.beg_col =
rb_long2int(tok - p->lex.pbeg);
19482 parser_str_cat(p->delayed.token, tok, end - tok);
19483 p->delayed.end_line = p->ruby_sourceline;
19484 p->delayed.end_col =
rb_long2int(end - p->lex.pbeg);
19492 p->lex.pbeg = p->lex.pcur = PARSER_STRING_PTR(str);
19493 p->lex.pend = p->lex.pcur + PARSER_STRING_LEN(str);
19494 p->lex.lastline = str;
19501 p->lex.nextline = 0;
19506 if (!lex_eol_ptr_p(p, p->lex.pbeg) && *(p->lex.pend-1) !=
'\n') {
19510 if (!p->lex.input || !(str = lex_getline(p))) {
19517 if (p->debug_lines) {
19518 if (set_encoding) rb_parser_enc_associate(p, str, p->enc);
19520 rb_parser_ary_push_script_line(p, p->debug_lines, copy);
19523 p->cr_seen = FALSE;
19525 else if (str == AFTER_HEREDOC_WITHOUT_TERMINATOR) {
19529 add_delayed_token(p, p->lex.ptok, p->lex.pend);
19530 if (p->heredoc_end > 0) {
19531 p->ruby_sourceline = p->heredoc_end;
19532 p->heredoc_end = 0;
19534 p->ruby_sourceline++;
19535 set_lastline(p, str);
19543 if (peek(p,
'\n')) {
19555 if (UNLIKELY(lex_eol_p(p) || p->eofp || p->lex.nextline > AFTER_HEREDOC_WITHOUT_TERMINATOR)) {
19556 if (nextline(p, set_encoding))
return -1;
19558 c = (
unsigned char)*p->lex.pcur++;
19559 if (UNLIKELY(c ==
'\r')) {
19560 c = parser_cr(p, c);
19565#define nextc(p) nextc0(p, TRUE)
19570 if (c == -1)
return;
19573 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
19578#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
19580#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
19581#define tok(p) (p)->tokenbuf
19582#define toklen(p) (p)->tokidx
19587 const char *ptr = p->lex.pcur;
19588 while (!lex_eol_ptr_p(p, ptr)) {
19589 int c = (
unsigned char)*ptr++;
19590 int eol = (c ==
'\n' || c ==
'#');
19602 if (!p->tokenbuf) {
19604 p->tokenbuf =
ALLOC_N(
char, 60);
19606 if (p->toksiz > 4096) {
19610 return p->tokenbuf;
19618 if (p->tokidx >= p->toksiz) {
19619 do {p->toksiz *= 2;}
while (p->toksiz < p->tokidx);
19620 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19622 return &p->tokenbuf[p->tokidx-n];
19628 p->tokenbuf[p->tokidx++] = (char)c;
19629 if (p->tokidx >= p->toksiz) {
19631 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19640 c = (int)ruby_scan_hex(p->lex.pcur, 2, numlen);
19643 yyerror0(
"invalid hex escape");
19644 dispatch_scan_event(p, tSTRING_CONTENT);
19647 p->lex.pcur += *numlen;
19651#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
19654escaped_control_code(
int c)
19680#define WARN_SPACE_CHAR(c, prefix) \
19681 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c))
19685 int regexp_literal,
const char *begin)
19687 const int wide = !begin;
19689 int codepoint = (int)ruby_scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
19691 p->lex.pcur += numlen;
19692 if (p->lex.strterm == NULL ||
19693 strterm_is_heredoc(p->lex.strterm) ||
19694 (p->lex.strterm->u.literal.func != str_regexp)) {
19695 if (!begin) begin = p->lex.pcur;
19696 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
19697 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19698 yyerror0(
"invalid Unicode escape");
19699 dispatch_scan_event(p, tSTRING_CONTENT);
19700 return wide && numlen > 0;
19702 if (codepoint > 0x10ffff) {
19703 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19704 yyerror0(
"invalid Unicode codepoint (too large)");
19705 dispatch_scan_event(p, tSTRING_CONTENT);
19708 if ((codepoint & 0xfffff800) == 0xd800) {
19709 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19710 yyerror0(
"invalid Unicode codepoint");
19711 dispatch_scan_event(p, tSTRING_CONTENT);
19715 if (regexp_literal) {
19716 tokcopy(p, (
int)numlen);
19718 else if (codepoint >= 0x80) {
19720 if (*encp && utf8 != *encp) {
19721 YYLTYPE loc = RUBY_INIT_YYLLOC();
19722 compile_error(p,
"UTF-8 mixed within %s source", rb_enc_name(*encp));
19723 parser_show_error_line(p, &loc);
19727 tokaddmbc(p, codepoint, *encp);
19730 tokadd(p, codepoint);
19740 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19742 p->lex.pcur +=
len - 1;
19750 int term,
int symbol_literal,
int regexp_literal)
19757 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
19759 const int open_brace =
'{', close_brace =
'}';
19761 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
19763 if (peek(p, open_brace)) {
19764 if (regexp_literal && p->lex.strterm->u.literal.func == str_regexp) {
19771 tokadd(p, open_brace);
19772 while (!lex_eol_ptr_p(p, ++p->lex.pcur)) {
19774 if (c == close_brace) {
19779 else if (c == term) {
19782 if (c ==
'\\' && !lex_eol_n_p(p, 1)) {
19784 c = *++p->lex.pcur;
19786 tokadd_mbchar(p, c);
19790 const char *second = NULL;
19791 int c, last = nextc(p);
19792 if (lex_eol_p(p))
goto unterminated;
19793 while (
ISSPACE(c = peekc(p)) && !lex_eol_ptr_p(p, ++p->lex.pcur));
19794 while (c != close_brace) {
19795 if (c == term)
goto unterminated;
19796 if (second == multiple_codepoints)
19797 second = p->lex.pcur;
19798 if (regexp_literal) tokadd(p, last);
19799 if (!tokadd_codepoint(p, encp, regexp_literal, NULL)) {
19802 while (
ISSPACE(c = peekc(p))) {
19803 if (lex_eol_ptr_p(p, ++p->lex.pcur))
goto unterminated;
19806 if (term == -1 && !second)
19807 second = multiple_codepoints;
19810 if (c != close_brace) {
19812 flush_string_content(p, rb_utf8_encoding(), 0);
19813 yyerror0(
"unterminated Unicode escape");
19814 dispatch_scan_event(p, tSTRING_CONTENT);
19817 if (second && second != multiple_codepoints) {
19818 const char *pcur = p->lex.pcur;
19819 p->lex.pcur = second;
19820 dispatch_scan_event(p, tSTRING_CONTENT);
19822 p->lex.pcur = pcur;
19823 yyerror0(multiple_codepoints);
19827 if (regexp_literal) tokadd(p, close_brace);
19832 if (!tokadd_codepoint(p, encp, regexp_literal, p->lex.pcur -
rb_strlen_lit(
"\\u"))) {
19839#define ESCAPE_CONTROL 1
19840#define ESCAPE_META 2
19843read_escape(
struct parser_params *p,
int flags,
const char *begin)
19848 switch (c = nextc(p)) {
19873 case '0':
case '1':
case '2':
case '3':
19874 case '4':
case '5':
case '6':
case '7':
19876 c = (int)ruby_scan_oct(p->lex.pcur, 3, &numlen);
19877 p->lex.pcur += numlen;
19881 c = tok_hex(p, &numlen);
19882 if (numlen == 0)
return 0;
19892 if (flags & ESCAPE_META)
goto eof;
19893 if ((c = nextc(p)) !=
'-') {
19896 if ((c = nextc(p)) ==
'\\') {
19897 switch (peekc(p)) {
19898 case 'u':
case 'U':
19902 return read_escape(p, flags|ESCAPE_META, begin) | 0x80;
19904 else if (c == -1)
goto eof;
19910 int c2 = escaped_control_code(c);
19912 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
19913 WARN_SPACE_CHAR(c2,
"\\M-");
19916 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
19919 else if (
ISCNTRL(c))
goto eof;
19920 return ((c & 0xff) | 0x80);
19924 if ((c = nextc(p)) !=
'-') {
19928 if (flags & ESCAPE_CONTROL)
goto eof;
19929 if ((c = nextc(p))==
'\\') {
19930 switch (peekc(p)) {
19931 case 'u':
case 'U':
19935 c = read_escape(p, flags|ESCAPE_CONTROL, begin);
19939 else if (c == -1)
goto eof;
19945 int c2 = escaped_control_code(c);
19948 if (flags & ESCAPE_META) {
19949 WARN_SPACE_CHAR(c2,
"\\M-");
19952 WARN_SPACE_CHAR(c2,
"");
19956 if (flags & ESCAPE_META) {
19957 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
19960 WARN_SPACE_CHAR(c2,
"\\C-");
19964 else if (
ISCNTRL(c))
goto eof;
19970 flush_string_content(p, p->enc, p->lex.pcur - begin);
19971 yyerror0(
"Invalid escape character syntax");
19972 dispatch_scan_event(p, tSTRING_CONTENT);
19987 int len = rb_enc_codelen(c, enc);
19988 rb_enc_mbcput(c, tokspace(p,
len), enc);
19996 const char *begin = p->lex.pcur;
19998 switch (c = nextc(p)) {
20002 case '0':
case '1':
case '2':
case '3':
20003 case '4':
case '5':
case '6':
case '7':
20005 ruby_scan_oct(--p->lex.pcur, 3, &numlen);
20006 if (numlen == 0)
goto eof;
20007 p->lex.pcur += numlen;
20008 tokcopy(p, (
int)numlen + 1);
20014 tok_hex(p, &numlen);
20015 if (numlen == 0)
return -1;
20016 tokcopy(p, (
int)numlen + 2);
20022 flush_string_content(p, p->enc, p->lex.pcur - begin);
20023 yyerror0(
"Invalid escape character syntax");
20035char_to_option(
int c)
20041 val = RE_ONIG_OPTION_IGNORECASE;
20044 val = RE_ONIG_OPTION_EXTEND;
20047 val = RE_ONIG_OPTION_MULTILINE;
20056#define ARG_ENCODING_FIXED 16
20057#define ARG_ENCODING_NONE 32
20058#define ENC_ASCII8BIT 1
20059#define ENC_EUC_JP 2
20060#define ENC_Windows_31J 3
20064char_to_option_kcode(
int c,
int *option,
int *kcode)
20070 *kcode = ENC_ASCII8BIT;
20071 return (*option = ARG_ENCODING_NONE);
20073 *kcode = ENC_EUC_JP;
20076 *kcode = ENC_Windows_31J;
20083 return (*option = char_to_option(c));
20085 *option = ARG_ENCODING_FIXED;
20098 while (c = nextc(p),
ISALPHA(c)) {
20100 options |= RE_OPTION_ONCE;
20102 else if (char_to_option_kcode(c, &opt, &kc)) {
20104 if (kc != ENC_ASCII8BIT) kcode = c;
20118 YYLTYPE loc = RUBY_INIT_YYLLOC();
20120 compile_error(p,
"unknown regexp option%s - %*s",
20121 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
20122 parser_show_error_line(p, &loc);
20124 return options | RE_OPTION_ENCODING(kcode);
20130 int len = parser_precise_mbclen(p, p->lex.pcur-1);
20131 if (
len < 0)
return -1;
20133 p->lex.pcur += --
len;
20134 if (
len > 0) tokcopy(p,
len);
20139simple_re_meta(
int c)
20142 case '$':
case '*':
case '+':
case '.':
20143 case '?':
case '^':
case '|':
20144 case ')':
case ']':
case '}':
case '>':
20152parser_update_heredoc_indent(
struct parser_params *p,
int c)
20154 if (p->heredoc_line_indent == -1) {
20155 if (c ==
'\n') p->heredoc_line_indent = 0;
20159 p->heredoc_line_indent++;
20162 else if (c ==
'\t') {
20163 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
20164 p->heredoc_line_indent = w * TAB_WIDTH;
20167 else if (c !=
'\n') {
20168 if (p->heredoc_indent > p->heredoc_line_indent) {
20169 p->heredoc_indent = p->heredoc_line_indent;
20171 p->heredoc_line_indent = -1;
20175 p->heredoc_line_indent = 0;
20184 YYLTYPE loc = RUBY_INIT_YYLLOC();
20185 const char *n1 = rb_enc_name(enc1), *n2 = rb_enc_name(enc2);
20186 compile_error(p,
"%s mixed within %s source", n1, n2);
20187 parser_show_error_line(p, &loc);
20193 const char *pos = p->lex.pcur;
20195 parser_mixed_error(p, enc1, enc2);
20200nibble_char_upper(
unsigned int c)
20203 return c + (c < 10 ?
'0' :
'A' - 10);
20208 int func,
int term,
int paren,
long *nest,
20212 bool erred =
false;
20214 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
20215 int top_of_line = FALSE;
20218#define mixed_error(enc1, enc2) \
20219 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
20220#define mixed_escape(beg, enc1, enc2) \
20221 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
20223 while ((c = nextc(p)) != -1) {
20224 if (p->heredoc_indent > 0) {
20225 parser_update_heredoc_indent(p, c);
20228 if (top_of_line && heredoc_end == p->ruby_sourceline) {
20234 if (paren && c == paren) {
20237 else if (c == term) {
20238 if (!nest || !*nest) {
20244 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && !lex_eol_p(p)) {
20245 unsigned char c2 = *p->lex.pcur;
20246 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
20251 else if (c ==
'\\') {
20255 if (func & STR_FUNC_QWORDS)
break;
20256 if (func & STR_FUNC_EXPAND) {
20257 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
20268 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
20272 if ((func & STR_FUNC_EXPAND) == 0) {
20276 tokadd_utf8(p, enc, term,
20277 func & STR_FUNC_SYMBOL,
20278 func & STR_FUNC_REGEXP);
20282 if (c == -1)
return -1;
20284 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
20287 if (func & STR_FUNC_REGEXP) {
20293 c = read_escape(p, 0, p->lex.pcur - 1);
20298 *t++ = nibble_char_upper(c >> 4);
20299 *t++ = nibble_char_upper(c);
20304 if (c == term && !simple_re_meta(c)) {
20309 if ((c = tokadd_escape(p)) < 0)
20311 if (*enc && *enc != *encp) {
20312 mixed_escape(p->lex.ptok+2, *enc, *encp);
20316 else if (func & STR_FUNC_EXPAND) {
20318 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
20319 c = read_escape(p, 0, p->lex.pcur - 1);
20321 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
20324 else if (c != term && !(paren && c == paren)) {
20331 else if (!parser_isascii(p)) {
20336 else if (*enc != *encp) {
20337 mixed_error(*enc, *encp);
20340 if (tokadd_mbchar(p, c) == -1)
return -1;
20343 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
20351 else if (*enc != *encp) {
20352 mixed_error(*enc, *encp);
20358 top_of_line = (c ==
'\n');
20362 if (*enc) *encp = *enc;
20366#define NEW_STRTERM(func, term, paren) new_strterm(p, func, term, paren)
20371 p->lex.pcur -= back;
20372 if (has_delayed_token(p)) {
20373 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
20375 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20376 p->delayed.end_line = p->ruby_sourceline;
20377 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
20379 dispatch_delayed_token(p, tSTRING_CONTENT);
20380 p->lex.ptok = p->lex.pcur;
20382 dispatch_scan_event(p, tSTRING_CONTENT);
20383 p->lex.pcur += back;
20389#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
20390#define SPECIAL_PUNCT(idx) ( \
20391 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
20392 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
20393 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
20394 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
20395 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
20397const uint_least32_t ruby_global_name_punct_bits[] = {
20403#undef SPECIAL_PUNCT
20406static enum yytokentype
20407parser_peek_variable_name(struct parser_params *p)
20410 const char *ptr = p->lex.pcur;
20412 if (lex_eol_ptr_n_p(p, ptr, 1)) return 0;
20416 if ((c = *ptr) == '-') {
20417 if (lex_eol_ptr_p(p, ++ptr)) return 0;
20420 else if (is_global_name_punct(c) || ISDIGIT(c)) {
20421 return tSTRING_DVAR;
20425 if ((c = *ptr) == '@') {
20426 if (lex_eol_ptr_p(p, ++ptr)) return 0;
20432 p->command_start = TRUE;
20433 yylval.state = p->lex.state;
20434 return tSTRING_DBEG;
20438 if (!ISASCII(c) || c == '_' || ISALPHA(c))
20439 return tSTRING_DVAR;
20443#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
20444#define IS_END() IS_lex_state(EXPR_END_ANY)
20445#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
20446#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
20447#define IS_LABEL_POSSIBLE() (\
20448 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
20450#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
20451#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
20453static inline enum yytokentype
20454parser_string_term(struct parser_params *p, int func)
20456 xfree(p->lex.strterm);
20457 p->lex.strterm = 0;
20458 if (func & STR_FUNC_REGEXP) {
20459 set_yylval_num(regx_options(p));
20460 dispatch_scan_event(p, tREGEXP_END);
20461 SET_LEX_STATE(EXPR_END);
20462 return tREGEXP_END;
20464 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
20466 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
20469 SET_LEX_STATE(EXPR_END);
20470 return tSTRING_END;
20473static enum yytokentype
20474parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
20476 int func = quote->func;
20477 int term = quote->term;
20478 int paren = quote->paren;
20480 rb_encoding *enc = p->enc;
20481 rb_encoding *base_enc = 0;
20482 rb_parser_string_t *lit;
20484 if (func & STR_FUNC_TERM) {
20485 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
20486 SET_LEX_STATE(EXPR_END);
20487 xfree(p->lex.strterm);
20488 p->lex.strterm = 0;
20489 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
20492 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
20493 while (c != '\n' && ISSPACE(c = nextc(p)));
20496 if (func & STR_FUNC_LIST) {
20497 quote->func &= ~STR_FUNC_LIST;
20500 if (c == term && !quote->nest) {
20501 if (func & STR_FUNC_QWORDS) {
20502 quote->func |= STR_FUNC_TERM;
20503 pushback(p, c); /* dispatch the term at tSTRING_END */
20504 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20507 return parser_string_term(p, func);
20510 if (!ISSPACE(c)) pushback(p, c);
20511 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20515 if ((func & STR_FUNC_EXPAND) && c == '#') {
20516 enum yytokentype t = parser_peek_variable_name(p);
20522 if (tokadd_string(p, func, term, paren, "e->nest,
20523 &enc, &base_enc) == -1) {
20526# define unterminated_literal(mesg) yyerror0(mesg)
20528# define unterminated_literal(mesg) compile_error(p, mesg)
20530 literal_flush(p, p->lex.pcur);
20531 if (func & STR_FUNC_QWORDS) {
20532 /* no content to add, bailing out here */
20533 unterminated_literal("unterminated list meets end of file");
20534 xfree(p->lex.strterm);
20535 p->lex.strterm = 0;
20536 return tSTRING_END;
20538 if (func & STR_FUNC_REGEXP) {
20539 unterminated_literal("unterminated regexp meets end of file");
20542 unterminated_literal("unterminated string meets end of file");
20544 quote->func |= STR_FUNC_TERM;
20549 lit = STR_NEW3(tok(p), toklen(p), enc, func);
20550 set_yylval_str(lit);
20551 flush_string_content(p, enc, 0);
20553 return tSTRING_CONTENT;
20556static enum yytokentype
20557heredoc_identifier(struct parser_params *p)
20560 * term_len is length of `<<"END"` except `END`,
20561 * in this case term_len is 4 (<, <, " and ").
20563 long len, offset = p->lex.pcur - p->lex.pbeg;
20564 int c = nextc(p), term, func = 0, quote = 0;
20565 enum yytokentype token = tSTRING_BEG;
20570 func = STR_FUNC_INDENT;
20573 else if (c == '~') {
20575 func = STR_FUNC_INDENT;
20581 func |= str_squote; goto quoted;
20583 func |= str_dquote;
goto quoted;
20585 token = tXSTRING_BEG;
20586 func |= str_xquote;
goto quoted;
20593 while ((c = nextc(p)) != term) {
20594 if (c == -1 || c ==
'\r' || c ==
'\n') {
20595 yyerror0(
"unterminated here document identifier");
20602 if (!parser_is_identchar(p)) {
20604 if (func & STR_FUNC_INDENT) {
20605 pushback(p, indent > 0 ?
'~' :
'-');
20609 func |= str_dquote;
20611 int n = parser_precise_mbclen(p, p->lex.pcur-1);
20612 if (n < 0)
return 0;
20613 p->lex.pcur += --n;
20614 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
20619 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
20620 if ((
unsigned long)
len >= HERETERM_LENGTH_MAX)
20621 yyerror0(
"too long here document identifier");
20622 dispatch_scan_event(p, tHEREDOC_BEG);
20625 p->lex.strterm = new_heredoc(p);
20627 here->offset = offset;
20628 here->sourceline = p->ruby_sourceline;
20629 here->length = (unsigned)
len;
20630 here->quote = quote;
20632 here->lastline = p->lex.lastline;
20635 p->heredoc_indent = indent;
20636 p->heredoc_line_indent = 0;
20646 p->lex.strterm = 0;
20647 line = here->lastline;
20648 p->lex.lastline = line;
20649 p->lex.pbeg = PARSER_STRING_PTR(line);
20650 p->lex.pend = p->lex.pbeg + PARSER_STRING_LEN(line);
20651 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
20652 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
20653 p->heredoc_end = p->ruby_sourceline;
20654 p->ruby_sourceline = (int)here->sourceline;
20655 if (p->eofp) p->lex.nextline = AFTER_HEREDOC_WITHOUT_TERMINATOR;
20661dedent_string_column(
const char *str,
long len,
int width)
20665 for (i = 0; i <
len && col < width; i++) {
20666 if (str[i] ==
' ') {
20669 else if (str[i] ==
'\t') {
20670 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
20671 if (n > width)
break;
20689 len = PARSER_STRING_LEN(
string);
20690 str = PARSER_STRING_PTR(
string);
20692 i = dedent_string_column(str,
len, width);
20695 rb_parser_str_modify(
string);
20696 str = PARSER_STRING_PTR(
string);
20697 if (PARSER_STRING_LEN(
string) !=
len)
20698 rb_fatal(
"literal string changed: %s", PARSER_STRING_PTR(
string));
20700 rb_parser_str_set_len(p,
string,
len - i);
20707 NODE *node, *str_node, *prev_node;
20708 int indent = p->heredoc_indent;
20711 if (indent <= 0)
return root;
20712 if (!root)
return root;
20714 prev_node = node = str_node = root;
20715 if (nd_type_p(root, NODE_LIST)) str_node = RNODE_LIST(root)->nd_head;
20719 if (nd_fl_newline(str_node)) {
20720 dedent_string(p, lit, indent);
20725 else if (!literal_concat0(p, prev_lit, lit)) {
20729 NODE *end = RNODE_LIST(node)->as.nd_end;
20730 node = RNODE_LIST(prev_node)->nd_next = RNODE_LIST(node)->nd_next;
20732 if (nd_type_p(prev_node, NODE_DSTR))
20733 nd_set_type(prev_node, NODE_STR);
20736 RNODE_LIST(node)->as.nd_end = end;
20741 while ((nd_type_p(node, NODE_LIST) || nd_type_p(node, NODE_DSTR)) && (node = RNODE_LIST(prev_node = node)->nd_next) != 0) {
20743 if (!nd_type_p(node, NODE_LIST))
break;
20744 if ((str_node = RNODE_LIST(node)->nd_head) != 0) {
20745 enum node_type
type = nd_type(str_node);
20746 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
20756whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
20758 const char *beg = p->lex.pbeg;
20759 const char *ptr = p->lex.pend;
20761 if (ptr - beg <
len)
return FALSE;
20762 if (ptr > beg && ptr[-1] ==
'\n') {
20763 if (--ptr > beg && ptr[-1] ==
'\r') --ptr;
20764 if (ptr - beg <
len)
return FALSE;
20766 if (strncmp(eos, ptr -=
len,
len))
return FALSE;
20768 while (beg < ptr &&
ISSPACE(*beg)) beg++;
20776 if (strncmp(p->lex.pcur, word,
len))
return 0;
20777 if (lex_eol_n_p(p,
len))
return 1;
20778 int c = (
unsigned char)p->lex.pcur[
len];
20781 case '\0':
case '\004':
case '\032':
return 1;
20786#define NUM_SUFFIX_R (1<<0)
20787#define NUM_SUFFIX_I (1<<1)
20788#define NUM_SUFFIX_ALL 3
20794 const char *lastp = p->lex.pcur;
20796 while ((c = nextc(p)) != -1) {
20797 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
20798 result |= (mask & NUM_SUFFIX_I);
20799 mask &= ~NUM_SUFFIX_I;
20801 mask &= ~NUM_SUFFIX_R;
20804 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
20805 result |= (mask & NUM_SUFFIX_R);
20806 mask &= ~NUM_SUFFIX_R;
20810 p->lex.pcur = lastp;
20819static enum yytokentype
20820set_number_literal(
struct parser_params *p,
enum yytokentype
type,
int suffix,
int base,
int seen_point)
20822 enum rb_numeric_type numeric_type = integer_literal;
20824 if (
type == tFLOAT) {
20825 numeric_type = float_literal;
20828 if (suffix & NUM_SUFFIX_R) {
20830 numeric_type = rational_literal;
20832 if (suffix & NUM_SUFFIX_I) {
20838 set_yylval_node(NEW_INTEGER(
strdup(tok(p)), base, &_cur_loc));
20841 set_yylval_node(NEW_FLOAT(
strdup(tok(p)), &_cur_loc));
20844 set_yylval_node(NEW_RATIONAL(
strdup(tok(p)), base, seen_point, &_cur_loc));
20847 set_yylval_node(NEW_IMAGINARY(
strdup(tok(p)), base, seen_point, numeric_type, &_cur_loc));
20848 (void)numeric_type;
20851 rb_bug(
"unexpected token: %d",
type);
20853 SET_LEX_STATE(EXPR_END);
20857#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
20859parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
20861 if (has_delayed_token(p))
20862 dispatch_delayed_token(p, tSTRING_CONTENT);
20865 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
20866 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
20868 if (p->keep_tokens) {
20869 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pend - p->lex.ptok, p->enc);
20870 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
20871 parser_append_tokens(p, str, tHEREDOC_END, line);
20875 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
20880static enum yytokentype
20883 int c, func, indent = 0;
20884 const char *eos, *ptr, *ptr_end;
20894 eos = PARSER_STRING_PTR(here->lastline) + here->offset;
20895 len = here->length;
20896 indent = (func = here->func) & STR_FUNC_INDENT;
20898 if ((c = nextc(p)) == -1) {
20901 if (!has_delayed_token(p)) {
20902 dispatch_scan_event(p, tSTRING_CONTENT);
20904 else if (p->delayed.end_line + 1 == p->ruby_sourceline) {
20905 if ((
len = p->lex.pcur - p->lex.ptok) > 0) {
20906 if (!(func & STR_FUNC_REGEXP)) {
20910 rb_is_usascii_enc(p->enc) &&
20911 enc != rb_utf8_encoding()) {
20912 enc = rb_ascii8bit_encoding();
20915 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20917 dispatch_delayed_token(p, tSTRING_CONTENT);
20920 dispatch_delayed_token(p, tSTRING_CONTENT);
20921 dispatch_scan_event(p, tSTRING_CONTENT);
20925 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20926 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
20929 SET_LEX_STATE(EXPR_END);
20930 return tSTRING_END;
20936 else if (p->heredoc_line_indent == -1) {
20941 p->heredoc_line_indent = 0;
20943 else if (whole_match_p(p, eos,
len, indent)) {
20944 dispatch_heredoc_end(p);
20946 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20948 SET_LEX_STATE(EXPR_END);
20949 return tSTRING_END;
20952 if (!(func & STR_FUNC_EXPAND)) {
20954 ptr = PARSER_STRING_PTR(p->lex.lastline);
20955 ptr_end = p->lex.pend;
20956 if (ptr_end > ptr) {
20957 switch (ptr_end[-1]) {
20959 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
20968 if (p->heredoc_indent > 0) {
20970 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
20972 p->heredoc_line_indent = 0;
20976 parser_str_cat(str, ptr, ptr_end - ptr);
20978 str = rb_parser_encoding_string_new(p, ptr, ptr_end - ptr, enc);
20979 if (!lex_eol_ptr_p(p, ptr_end)) parser_str_cat_cstr(str,
"\n");
20981 if (p->heredoc_indent > 0) {
20984 if (nextc(p) == -1) {
20986 rb_parser_string_free(p, str);
20991 }
while (!whole_match_p(p, eos,
len, indent));
20997 enum yytokentype t = parser_peek_variable_name(p);
20998 if (p->heredoc_line_indent != -1) {
20999 if (p->heredoc_indent > p->heredoc_line_indent) {
21000 p->heredoc_indent = p->heredoc_line_indent;
21002 p->heredoc_line_indent = -1;
21011 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
21012 if (p->eofp)
goto error;
21016 if (c ==
'\\') p->heredoc_line_indent = -1;
21018 str = STR_NEW3(tok(p), toklen(p), enc, func);
21020 set_yylval_str(str);
21022 if (bol) nd_set_fl_newline(yylval.node);
21024 flush_string_content(p, enc, 0);
21025 return tSTRING_CONTENT;
21027 tokadd(p, nextc(p));
21028 if (p->heredoc_indent > 0) {
21033 if ((c = nextc(p)) == -1)
goto error;
21034 }
while (!whole_match_p(p, eos,
len, indent));
21035 str = STR_NEW3(tok(p), toklen(p), enc, func);
21037 dispatch_heredoc_end(p);
21038 heredoc_restore(p, &p->lex.strterm->u.heredoc);
21040 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
21043 s_value = p->s_value;
21045 set_yylval_str(str);
21047 set_parser_s_value(s_value);
21051 if (bol) nd_set_fl_newline(yylval.node);
21053 return tSTRING_CONTENT;
21063 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after '%c' operator", WARN_I(c));
21066 rb_warning1(
"ambiguous first argument; put parentheses or a space even after '%c' operator", WARN_I(c));
21079 switch (id_type(
id)) {
21083# define ERR(mesg) (yyerror0(mesg), Qtrue)
21085# define ERR(mesg) WARN_S(mesg)
21088 return ERR(
"formal argument cannot be a constant");
21090 return ERR(
"formal argument cannot be an instance variable");
21092 return ERR(
"formal argument cannot be a global variable");
21094 return ERR(
"formal argument cannot be a class variable");
21096 return ERR(
"formal argument must be local variable");
21099 shadowing_lvar(p,
id);
21107 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
21116 if (
len > 5 && name[nlen =
len - 5] ==
'-') {
21117 if (rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
21120 if (
len > 4 && name[nlen =
len - 4] ==
'-') {
21121 if (rb_memcicmp(name + nlen + 1,
"dos", 3) == 0)
21123 if (rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
21124 !(
len == 8 && rb_memcicmp(name,
"utf8-mac",
len) == 0))
21132parser_set_encode(
struct parser_params *p,
const char *name)
21138 const char *wrong = 0;
21140 case 'e':
case 'E': wrong =
"external";
break;
21141 case 'i':
case 'I': wrong =
"internal";
break;
21142 case 'f':
case 'F': wrong =
"filesystem";
break;
21143 case 'l':
case 'L': wrong =
"locale";
break;
21145 if (wrong &&
STRCASECMP(name, wrong) == 0)
goto unknown;
21146 idx = rb_enc_find_index(name);
21149 excargs[1] = rb_sprintf(
"unknown encoding name: %s", name);
21151 excargs[0] = rb_eArgError;
21152 excargs[2] = rb_make_backtrace();
21153 rb_ary_unshift(excargs[2], rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
21154 VALUE exc = rb_make_exception(3, excargs);
21155 ruby_show_error_line(p, exc, &(
YYLTYPE)RUBY_INIT_YYLLOC(), p->ruby_sourceline, p->lex.lastline);
21157 rb_ast_free(p->ast);
21162 enc = rb_enc_from_index(idx);
21163 if (!rb_enc_asciicompat(enc)) {
21164 excargs[1] = rb_sprintf(
"%s is not ASCII compatible", rb_enc_name(enc));
21169 if (p->debug_lines) {
21171 for (i = 0; i < p->debug_lines->len; i++) {
21172 rb_parser_enc_associate(p, p->debug_lines->data[i], enc);
21181 if (p->token_seen)
return false;
21182 return (p->line_count == (p->has_shebang ? 2 : 1));
21185typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
21186typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
21188static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
21191magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
21193 if (!comment_at_top(p)) {
21196 parser_set_encode(p, val);
21200parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
21203 case 't':
case 'T':
21208 case 'f':
case 'F':
21214 return parser_invalid_pragma_value(p, name, val);
21218parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
21220 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
21225parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
21227 int b = parser_get_bool(p, name, val);
21228 if (b >= 0) p->token_info_enabled = b;
21232parser_set_frozen_string_literal(
struct parser_params *p,
const char *name,
const char *val)
21236 if (p->token_seen) {
21237 rb_warning1(
"'%s' is ignored after any tokens", WARN_S(name));
21241 b = parser_get_bool(p, name, val);
21244 p->frozen_string_literal = b;
21248parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
21250 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
21251 if (*s ==
' ' || *s ==
'\t')
continue;
21252 if (*s ==
'#')
break;
21253 rb_warning1(
"'%s' is ignored unless in comment-only line", WARN_S(name));
21258 case 'n':
case 'N':
21260 p->ctxt.shareable_constant_value = rb_parser_shareable_none;
21264 case 'l':
case 'L':
21266 p->ctxt.shareable_constant_value = rb_parser_shareable_literal;
21270 case 'e':
case 'E':
21271 if (
STRCASECMP(val,
"experimental_copy") == 0) {
21272 p->ctxt.shareable_constant_value = rb_parser_shareable_copy;
21275 if (
STRCASECMP(val,
"experimental_everything") == 0) {
21276 p->ctxt.shareable_constant_value = rb_parser_shareable_everything;
21281 parser_invalid_pragma_value(p, name, val);
21284# if WARN_PAST_SCOPE
21286parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
21288 int b = parser_get_bool(p, name, val);
21289 if (b >= 0) p->past_scope_enabled = b;
21295 rb_magic_comment_setter_t func;
21296 rb_magic_comment_length_t length;
21300 {
"coding", magic_comment_encoding, parser_encode_length},
21301 {
"encoding", magic_comment_encoding, parser_encode_length},
21302 {
"frozen_string_literal", parser_set_frozen_string_literal},
21303 {
"shareable_constant_value", parser_set_shareable_constant_value},
21304 {
"warn_indent", parser_set_token_info},
21305# if WARN_PAST_SCOPE
21306 {
"warn_past_scope", parser_set_past_scope},
21311magic_comment_marker(
const char *str,
long len)
21318 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
21319 return str + i + 1;
21324 if (i + 1 >=
len)
return 0;
21325 if (str[i+1] !=
'-') {
21328 else if (str[i-1] !=
'-') {
21332 return str + i + 2;
21347 VALUE name = 0, val = 0;
21348 const char *beg, *end, *vbeg, *vend;
21349#define str_copy(_s, _p, _n) ((_s) \
21350 ? (void)(rb_str_resize((_s), (_n)), \
21351 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
21352 : (void)((_s) = STR_NEW((_p), (_n))))
21354 if (
len <= 7)
return FALSE;
21355 if (!!(beg = magic_comment_marker(str,
len))) {
21356 if (!(end = magic_comment_marker(beg, str +
len - beg)))
21360 len = end - beg - 3;
21370 for (;
len > 0 && *str; str++, --
len) {
21372 case '\'':
case '"':
case ':':
case ';':
21377 for (beg = str;
len > 0; str++, --
len) {
21379 case '\'':
case '"':
case ':':
case ';':
21390 if (!indicator)
return FALSE;
21394 do str++;
while (--
len > 0 &&
ISSPACE(*str));
21396 const char *tok_beg = str;
21398 for (vbeg = ++str; --
len > 0 && *str !=
'"'; str++) {
21399 if (*str ==
'\\') {
21411 for (vbeg = str;
len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --
len, str++);
21414 const char *tok_end = str;
21416 while (
len > 0 && (*str ==
';' ||
ISSPACE(*str))) --
len, str++;
21420 if (
len)
return FALSE;
21424 str_copy(name, beg, n);
21425 s = RSTRING_PTR(name);
21426 for (i = 0; i < n; ++i) {
21427 if (s[i] ==
'-') s[i] =
'_';
21430 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
21433 n = (*mc->length)(p, vbeg, n);
21435 str_copy(val, vbeg, n);
21436 p->lex.ptok = tok_beg;
21437 p->lex.pcur = tok_end;
21438 (*mc->func)(p, mc->name, RSTRING_PTR(val));
21441 }
while (++mc < magic_comments + numberof(magic_comments));
21443 str_copy(val, vbeg, vend - vbeg);
21452set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
21455 const char *beg = str;
21459 if (send - str <= 6)
return;
21461 case 'C':
case 'c': str += 6;
continue;
21462 case 'O':
case 'o': str += 5;
continue;
21463 case 'D':
case 'd': str += 4;
continue;
21464 case 'I':
case 'i': str += 3;
continue;
21465 case 'N':
case 'n': str += 2;
continue;
21466 case 'G':
case 'g': str += 1;
continue;
21467 case '=':
case ':':
21481 if (++str >= send)
return;
21484 if (*str !=
'=' && *str !=
':')
return;
21489 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
21490 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
21493 parser_set_encode(p, RSTRING_PTR(s));
21494 rb_str_resize(s, 0);
21500 int c = nextc0(p, FALSE);
21504 if (peek(p,
'!')) p->has_shebang = 1;
21507 if (!lex_eol_n_p(p, 2) &&
21508 (
unsigned char)p->lex.pcur[0] == 0xbb &&
21509 (
unsigned char)p->lex.pcur[1] == 0xbf) {
21510 p->enc = rb_utf8_encoding();
21513 if (p->debug_lines) {
21514 rb_parser_string_set_encoding(p->lex.lastline, p->enc);
21517 p->lex.pbeg = p->lex.pcur;
21526 p->enc = rb_parser_str_get_encoding(p->lex.lastline);
21530#define ambiguous_operator(tok, op, syn) ( \
21531 rb_warning0("'"op"' after local variable or literal is interpreted as binary operator"), \
21532 rb_warning0("even though it seems like "syn""))
21534#define ambiguous_operator(tok, op, syn) \
21535 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
21537#define warn_balanced(tok, op, syn) ((void) \
21538 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
21539 space_seen && !ISSPACE(c) && \
21540 (ambiguous_operator(tok, op, syn), 0)), \
21541 (enum yytokentype)(tok))
21543static enum yytokentype
21546 yyerror0(
"numeric literal without digits");
21547 if (peek(p,
'_')) nextc(p);
21549 return set_number_literal(p, tINTEGER, 0, 10, 0);
21552static enum yytokentype
21555 int is_float, seen_point, seen_e, nondigit;
21558 is_float = seen_point = seen_e = nondigit = 0;
21559 SET_LEX_STATE(EXPR_END);
21561 if (c ==
'-' || c ==
'+') {
21566 int start = toklen(p);
21568 if (c ==
'x' || c ==
'X') {
21574 if (nondigit)
break;
21581 }
while ((c = nextc(p)) != -1);
21585 if (toklen(p) == start) {
21586 return no_digits(p);
21588 else if (nondigit)
goto trailing_uc;
21589 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21590 return set_number_literal(p, tINTEGER, suffix, 16, 0);
21592 if (c ==
'b' || c ==
'B') {
21595 if (c ==
'0' || c ==
'1') {
21598 if (nondigit)
break;
21602 if (c !=
'0' && c !=
'1')
break;
21605 }
while ((c = nextc(p)) != -1);
21609 if (toklen(p) == start) {
21610 return no_digits(p);
21612 else if (nondigit)
goto trailing_uc;
21613 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21614 return set_number_literal(p, tINTEGER, suffix, 2, 0);
21616 if (c ==
'd' || c ==
'D') {
21622 if (nondigit)
break;
21629 }
while ((c = nextc(p)) != -1);
21633 if (toklen(p) == start) {
21634 return no_digits(p);
21636 else if (nondigit)
goto trailing_uc;
21637 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21638 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21644 if (c ==
'o' || c ==
'O') {
21647 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
21649 return no_digits(p);
21652 if (c >=
'0' && c <=
'7') {
21657 if (nondigit)
break;
21661 if (c <
'0' || c >
'9')
break;
21662 if (c >
'7')
goto invalid_octal;
21665 }
while ((c = nextc(p)) != -1);
21666 if (toklen(p) > start) {
21669 if (nondigit)
goto trailing_uc;
21670 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21671 return set_number_literal(p, tINTEGER, suffix, 8, 0);
21678 if (c >
'7' && c <=
'9') {
21680 yyerror0(
"Invalid octal digit");
21682 else if (c ==
'.' || c ==
'e' || c ==
'E') {
21688 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21689 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21695 case '0':
case '1':
case '2':
case '3':
case '4':
21696 case '5':
case '6':
case '7':
case '8':
case '9':
21702 if (nondigit)
goto trailing_uc;
21703 if (seen_point || seen_e) {
21708 if (c0 == -1 || !
ISDIGIT(c0)) {
21714 seen_point = toklen(p);
21733 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
21739 tokadd(p, nondigit);
21743 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
21747 if (nondigit)
goto decode_num;
21761 literal_flush(p, p->lex.pcur - 1);
21762 YYLTYPE loc = RUBY_INIT_YYLLOC();
21763 compile_error(p,
"trailing '%c' in number", nondigit);
21764 parser_show_error_line(p, &loc);
21768 enum yytokentype
type = tFLOAT;
21770 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
21771 if (suffix & NUM_SUFFIX_R) {
21776 if (
errno == ERANGE) {
21777 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
21781 return set_number_literal(p,
type, suffix, 0, seen_point);
21783 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21784 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21787static enum yytokentype
21793 const char *start = p->lex.pcur;
21796 SET_LEX_STATE(EXPR_VALUE);
21801 compile_error(p,
"incomplete character syntax");
21804 if (rb_enc_isspace(c, p->enc)) {
21806 int c2 = escaped_control_code(c);
21808 WARN_SPACE_CHAR(c2,
"?");
21813 SET_LEX_STATE(EXPR_VALUE);
21818 int w = parser_precise_mbclen(p, start);
21819 if (is_identchar(p, start, p->lex.pend, p->enc) &&
21820 !(lex_eol_ptr_n_p(p, start, w) || !is_identchar(p, start + w, p->lex.pend, p->enc))) {
21822 const char *ptr = start;
21824 int n = parser_precise_mbclen(p, ptr);
21825 if (n < 0)
return -1;
21827 }
while (!lex_eol_ptr_p(p, ptr) && is_identchar(p, ptr, p->lex.pend, p->enc));
21828 rb_warn2(
"'?' just followed by '%.*s' is interpreted as" \
21829 " a conditional operator, put a space after '?'",
21830 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
21834 else if (c ==
'\\') {
21835 if (peek(p,
'u')) {
21837 enc = rb_utf8_encoding();
21838 tokadd_utf8(p, &enc, -1, 0, 0);
21840 else if (!
ISASCII(c = peekc(p)) && c != -1) {
21842 if (tokadd_mbchar(p, c) == -1)
return 0;
21850 if (tokadd_mbchar(p, c) == -1)
return 0;
21853 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
21854 set_yylval_str(lit);
21855 SET_LEX_STATE(EXPR_END);
21859static enum yytokentype
21860parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
21863 const char *ptok = p->lex.pcur;
21871 if (c == -1)
goto unterminated;
21874 if (!
ISASCII(c))
goto unknown;
21879 if (rb_enc_isalnum(term, p->enc) || !parser_isascii(p)) {
21882 c = parser_precise_mbclen(p, p->lex.pcur);
21883 if (c < 0)
return 0;
21885 yyerror0(
"unknown type of %string");
21891 compile_error(p,
"unterminated quoted string meets end of file");
21895 if (term ==
'(') term =
')';
21896 else if (term ==
'[') term =
']';
21897 else if (term ==
'{') term =
'}';
21898 else if (term ==
'<') term =
'>';
21901 p->lex.ptok = ptok-1;
21904 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
21905 return tSTRING_BEG;
21908 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
21909 return tSTRING_BEG;
21912 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21916 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21917 return tQWORDS_BEG;
21920 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21921 return tSYMBOLS_BEG;
21924 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21925 return tQSYMBOLS_BEG;
21928 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
21929 return tXSTRING_BEG;
21932 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
21933 return tREGEXP_BEG;
21936 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
21937 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
21941 yyerror0(
"unknown type of %string");
21945 if ((c = nextc(p)) ==
'=') {
21946 set_yylval_id(
'%');
21947 SET_LEX_STATE(EXPR_BEG);
21950 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
21953 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21955 return warn_balanced(
'%',
"%%",
"string literal");
21962 if (tokadd_mbchar(p, c) == -1)
return -1;
21964 }
while (parser_is_identchar(p));
21972 ID ident = TOK_INTERN();
21974 set_yylval_name(ident);
21984 unsigned long n = ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &
len, &overflow);
21985 const unsigned long nth_ref_max =
21986 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
21990 if (overflow || n > nth_ref_max) {
21992 rb_warn1(
"'%s' is too big for a number variable, always nil", WARN_S(tok(p)));
22000static enum yytokentype
22001parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
22003 const char *ptr = p->lex.pcur;
22006 SET_LEX_STATE(EXPR_END);
22007 p->lex.ptok = ptr - 1;
22013 if (parser_is_identchar(p)) {
22045 if (parser_is_identchar(p)) {
22046 if (tokadd_mbchar(p, c) == -1)
return 0;
22061 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
22066 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
22069 case '1':
case '2':
case '3':
22070 case '4':
case '5':
case '6':
22071 case '7':
case '8':
case '9':
22076 }
while (c != -1 &&
ISDIGIT(c));
22078 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
22080 c = parse_numvar(p);
22081 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
22085 if (!parser_is_identchar(p)) {
22086 YYLTYPE loc = RUBY_INIT_YYLLOC();
22088 compile_error(p,
"'$' without identifiers is not allowed as a global variable name");
22092 compile_error(p,
"'$%c' is not allowed as a global variable name", c);
22094 parser_show_error_line(p, &loc);
22095 set_yylval_noname();
22103 if (tokadd_ident(p, c))
return 0;
22104 SET_LEX_STATE(EXPR_END);
22105 if (VALID_SYMNAME_P(tok(p), toklen(p), p->enc, ID_GLOBAL)) {
22109 compile_error(p,
"'%.*s' is not allowed as a global variable name", toklen(p), tok(p));
22110 set_yylval_noname();
22118 if (n < 0)
return false;
22120 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
22123 if (p->max_numparam == ORDINAL_PARAM) {
22124 compile_error(p,
"ordinary parameter is defined");
22127 struct vtable *args = p->lvtbl->args;
22128 if (p->max_numparam < n) {
22129 p->max_numparam = n;
22131 while (n > args->pos) {
22132 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
22137static enum yytokentype
22138parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
22140 const char *ptr = p->lex.pcur;
22141 enum yytokentype result = tIVAR;
22142 register int c = nextc(p);
22145 p->lex.ptok = ptr - 1;
22153 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
22154 if (c == -1 || !parser_is_identchar(p)) {
22156 RUBY_SET_YYLLOC(loc);
22157 if (result == tIVAR) {
22158 compile_error(p,
"'@' without identifiers is not allowed as an instance variable name");
22161 compile_error(p,
"'@@' without identifiers is not allowed as a class variable name");
22163 parser_show_error_line(p, &loc);
22164 set_yylval_noname();
22165 SET_LEX_STATE(EXPR_END);
22170 RUBY_SET_YYLLOC(loc);
22171 if (result == tIVAR) {
22172 compile_error(p,
"'@%c' is not allowed as an instance variable name", c);
22175 compile_error(p,
"'@@%c' is not allowed as a class variable name", c);
22177 parser_show_error_line(p, &loc);
22178 set_yylval_noname();
22179 SET_LEX_STATE(EXPR_END);
22183 if (tokadd_ident(p, c))
return 0;
22188static enum yytokentype
22191 enum yytokentype result;
22192 bool is_ascii =
true;
22193 const enum lex_state_e last_state = p->lex.state;
22195 int enforce_keyword_end = 0;
22198 if (!
ISASCII(c)) is_ascii =
false;
22199 if (tokadd_mbchar(p, c) == -1)
return 0;
22201 }
while (parser_is_identchar(p));
22202 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
22206 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
22207 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
22208 result = tIDENTIFIER;
22212 result = tCONSTANT;
22217 if (IS_LABEL_POSSIBLE()) {
22218 if (IS_LABEL_SUFFIX(0)) {
22219 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
22227 if (peek_end_expect_token_locations(p)) {
22229 int lineno, column;
22230 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
22232 end_pos = peek_end_expect_token_locations(p)->pos;
22233 lineno = end_pos->lineno;
22234 column = end_pos->column;
22237 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
22238 p->ruby_sourceline, beg_pos, lineno, column);
22241 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
22244 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
22245 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
22246 enforce_keyword_end = 1;
22252 if (is_ascii && (!IS_lex_state(EXPR_DOT) || enforce_keyword_end)) {
22256 kw = rb_reserved_word(tok(p), toklen(p));
22258 enum lex_state_e state = p->lex.state;
22259 if (IS_lex_state_for(state, EXPR_FNAME)) {
22260 SET_LEX_STATE(EXPR_ENDFN);
22261 set_yylval_name(rb_intern2(tok(p), toklen(p)));
22264 SET_LEX_STATE(kw->state);
22265 if (IS_lex_state(EXPR_BEG)) {
22266 p->command_start = TRUE;
22268 if (kw->id[0] == keyword_do) {
22269 if (lambda_beginning_p()) {
22270 p->lex.lpar_beg = -1;
22271 return keyword_do_LAMBDA;
22273 if (COND_P())
return keyword_do_cond;
22274 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
22275 return keyword_do_block;
22278 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
22281 if (kw->id[0] != kw->id[1])
22282 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
22288 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
22290 SET_LEX_STATE(EXPR_CMDARG);
22293 SET_LEX_STATE(EXPR_ARG);
22296 else if (p->lex.state == EXPR_FNAME) {
22297 SET_LEX_STATE(EXPR_ENDFN);
22300 SET_LEX_STATE(EXPR_END);
22303 ident = tokenize_ident(p);
22304 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
22305 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
22306 (result == tIDENTIFIER) &&
22307 (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
22308 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
22319 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
22323static enum yytokentype
22327 int space_seen = 0;
22330 enum lex_state_e last_state;
22331 int fallthru = FALSE;
22332 int token_seen = p->token_seen;
22334 if (p->lex.strterm) {
22335 if (strterm_is_heredoc(p->lex.strterm)) {
22337 return here_document(p, &p->lex.strterm->u.heredoc);
22341 return parse_string(p, &p->lex.strterm->u.literal);
22344 cmd_state = p->command_start;
22345 p->command_start = FALSE;
22346 p->token_seen = TRUE;
22351 last_state = p->lex.state;
22352 switch (c = nextc(p)) {
22359 if (p->end_expect_token_locations) {
22360 pop_end_expect_token_locations(p);
22361 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
22366 RUBY_SET_YYLLOC(*p->yylloc);
22367 return END_OF_INPUT;
22373 case ' ':
case '\t':
case '\f':
22376 while ((c = nextc(p))) {
22381 case ' ':
case '\t':
case '\f':
22390 dispatch_scan_event(p, tSP);
22397 p->token_seen = token_seen;
22398 const char *
const pcur = p->lex.pcur, *
const ptok = p->lex.ptok;
22400 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
22401 if (comment_at_top(p)) {
22402 set_file_encoding(p, p->lex.pcur, p->lex.pend);
22405 p->lex.pcur = pcur, p->lex.ptok = ptok;
22407 dispatch_scan_event(p, tCOMMENT);
22411 p->token_seen = token_seen;
22413 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
22414 !IS_lex_state(EXPR_LABELED));
22415 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
22417 dispatch_scan_event(p, tIGNORED_NL);
22420 if (!c && p->ctxt.in_kwarg) {
22421 goto normal_newline;
22426 switch (c = nextc(p)) {
22427 case ' ':
case '\t':
case '\f':
case '\r':
22434 dispatch_scan_event(p, tSP);
22439 if (peek_word_at(p,
"nd", 2, 0))
goto leading_logical;
22442 if (peek_word_at(p,
"r", 1, 0))
goto leading_logical;
22445 if (peek(p,
'|'))
goto leading_logical;
22448 if (peek(p,
'&')) {
22451 dispatch_delayed_token(p, tIGNORED_NL);
22457 dispatch_delayed_token(p, tIGNORED_NL);
22458 if (peek(p,
'.') == (c ==
'&')) {
22460 dispatch_scan_event(p, tSP);
22466 p->ruby_sourceline--;
22467 p->lex.nextline = p->lex.lastline;
22468 set_lastline(p, prevline);
22470 if (c == -1 && space_seen) {
22471 dispatch_scan_event(p, tSP);
22476 RUBY_SET_YYLLOC(*p->yylloc);
22478 goto normal_newline;
22482 p->command_start = TRUE;
22483 SET_LEX_STATE(EXPR_BEG);
22487 if ((c = nextc(p)) ==
'*') {
22488 if ((c = nextc(p)) ==
'=') {
22489 set_yylval_id(idPow);
22490 SET_LEX_STATE(EXPR_BEG);
22494 if (IS_SPCARG(c)) {
22495 rb_warning0(
"'**' interpreted as argument prefix");
22498 else if (IS_BEG()) {
22502 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
22507 set_yylval_id(
'*');
22508 SET_LEX_STATE(EXPR_BEG);
22512 if (IS_SPCARG(c)) {
22513 rb_warning0(
"'*' interpreted as argument prefix");
22516 else if (IS_BEG()) {
22520 c = warn_balanced(
'*',
"*",
"argument prefix");
22523 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22528 if (IS_AFTER_OPERATOR()) {
22529 SET_LEX_STATE(EXPR_ARG);
22535 SET_LEX_STATE(EXPR_BEG);
22549 if (word_match_p(p,
"begin", 5)) {
22550 int first_p = TRUE;
22553 dispatch_scan_event(p, tEMBDOC_BEG);
22557 dispatch_scan_event(p, tEMBDOC);
22562 compile_error(p,
"embedded document meets end of file");
22563 return END_OF_INPUT;
22565 if (c ==
'=' && word_match_p(p,
"end", 3)) {
22571 dispatch_scan_event(p, tEMBDOC_END);
22576 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22577 if ((c = nextc(p)) ==
'=') {
22578 if ((c = nextc(p)) ==
'=') {
22587 else if (c ==
'>') {
22596 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
22598 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
22599 enum yytokentype token = heredoc_identifier(p);
22600 if (token)
return token < 0 ? 0 : token;
22602 if (IS_AFTER_OPERATOR()) {
22603 SET_LEX_STATE(EXPR_ARG);
22606 if (IS_lex_state(EXPR_CLASS))
22607 p->command_start = TRUE;
22608 SET_LEX_STATE(EXPR_BEG);
22611 if ((c = nextc(p)) ==
'>') {
22618 if ((c = nextc(p)) ==
'=') {
22619 set_yylval_id(idLTLT);
22620 SET_LEX_STATE(EXPR_BEG);
22624 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
22630 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22631 if ((c = nextc(p)) ==
'=') {
22635 if ((c = nextc(p)) ==
'=') {
22636 set_yylval_id(idGTGT);
22637 SET_LEX_STATE(EXPR_BEG);
22647 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22648 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
22649 p->lex.ptok = p->lex.pcur-1;
22650 return tSTRING_BEG;
22653 if (IS_lex_state(EXPR_FNAME)) {
22654 SET_LEX_STATE(EXPR_ENDFN);
22657 if (IS_lex_state(EXPR_DOT)) {
22659 SET_LEX_STATE(EXPR_CMDARG);
22661 SET_LEX_STATE(EXPR_ARG);
22664 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
22665 return tXSTRING_BEG;
22668 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22669 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
22670 p->lex.ptok = p->lex.pcur-1;
22671 return tSTRING_BEG;
22674 return parse_qmark(p, space_seen);
22677 if ((c = nextc(p)) ==
'&') {
22678 SET_LEX_STATE(EXPR_BEG);
22679 if ((c = nextc(p)) ==
'=') {
22680 set_yylval_id(idANDOP);
22681 SET_LEX_STATE(EXPR_BEG);
22687 else if (c ==
'=') {
22688 set_yylval_id(
'&');
22689 SET_LEX_STATE(EXPR_BEG);
22692 else if (c ==
'.') {
22693 set_yylval_id(idANDDOT);
22694 SET_LEX_STATE(EXPR_DOT);
22698 if (IS_SPCARG(c)) {
22700 (c = peekc_n(p, 1)) == -1 ||
22701 !(c ==
'\'' || c ==
'"' ||
22702 is_identchar(p, (p->lex.pcur+1), p->lex.pend, p->enc))) {
22703 rb_warning0(
"'&' interpreted as argument prefix");
22707 else if (IS_BEG()) {
22711 c = warn_balanced(
'&',
"&",
"argument prefix");
22713 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22717 if ((c = nextc(p)) ==
'|') {
22718 SET_LEX_STATE(EXPR_BEG);
22719 if ((c = nextc(p)) ==
'=') {
22720 set_yylval_id(idOROP);
22721 SET_LEX_STATE(EXPR_BEG);
22725 if (IS_lex_state_for(last_state, EXPR_BEG)) {
22733 set_yylval_id(
'|');
22734 SET_LEX_STATE(EXPR_BEG);
22737 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
22743 if (IS_AFTER_OPERATOR()) {
22744 SET_LEX_STATE(EXPR_ARG);
22752 set_yylval_id(
'+');
22753 SET_LEX_STATE(EXPR_BEG);
22756 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
22757 SET_LEX_STATE(EXPR_BEG);
22760 return parse_numeric(p,
'+');
22764 SET_LEX_STATE(EXPR_BEG);
22766 return warn_balanced(
'+',
"+",
"unary operator");
22770 if (IS_AFTER_OPERATOR()) {
22771 SET_LEX_STATE(EXPR_ARG);
22779 set_yylval_id(
'-');
22780 SET_LEX_STATE(EXPR_BEG);
22784 SET_LEX_STATE(EXPR_ENDFN);
22785 yylval.num = p->lex.lpar_beg;
22786 p->lex.lpar_beg = p->lex.paren_nest;
22789 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
22790 SET_LEX_STATE(EXPR_BEG);
22793 return tUMINUS_NUM;
22797 SET_LEX_STATE(EXPR_BEG);
22799 return warn_balanced(
'-',
"-",
"unary operator");
22802 int is_beg = IS_BEG();
22803 SET_LEX_STATE(EXPR_BEG);
22804 if ((c = nextc(p)) ==
'.') {
22805 if ((c = nextc(p)) ==
'.') {
22806 if (p->ctxt.in_argdef || IS_LABEL_POSSIBLE()) {
22807 SET_LEX_STATE(EXPR_ENDARG);
22810 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
22811 rb_warn0(
"... at EOL, should be parenthesized?");
22813 return is_beg ? tBDOT3 : tDOT3;
22816 return is_beg ? tBDOT2 : tDOT2;
22820 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
22821 parse_numeric(p,
'.');
22823 yyerror0(
"unexpected fraction part after numeric literal");
22826 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
22828 SET_LEX_STATE(EXPR_END);
22829 p->lex.ptok = p->lex.pcur;
22832 set_yylval_id(
'.');
22833 SET_LEX_STATE(EXPR_DOT);
22837 case '0':
case '1':
case '2':
case '3':
case '4':
22838 case '5':
case '6':
case '7':
case '8':
case '9':
22839 return parse_numeric(p, c);
22844 SET_LEX_STATE(EXPR_ENDFN);
22845 p->lex.paren_nest--;
22851 SET_LEX_STATE(EXPR_END);
22852 p->lex.paren_nest--;
22857 if (!p->lex.brace_nest--)
return tSTRING_DEND;
22860 SET_LEX_STATE(EXPR_END);
22861 p->lex.paren_nest--;
22867 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
22868 SET_LEX_STATE(EXPR_BEG);
22871 set_yylval_id(idCOLON2);
22872 SET_LEX_STATE(EXPR_DOT);
22875 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
22877 c = warn_balanced(
':',
":",
"symbol literal");
22878 SET_LEX_STATE(EXPR_BEG);
22883 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
22886 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
22892 SET_LEX_STATE(EXPR_FNAME);
22897 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22898 return tREGEXP_BEG;
22900 if ((c = nextc(p)) ==
'=') {
22901 set_yylval_id(
'/');
22902 SET_LEX_STATE(EXPR_BEG);
22906 if (IS_SPCARG(c)) {
22907 arg_ambiguous(p,
'/');
22908 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22909 return tREGEXP_BEG;
22911 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22912 return warn_balanced(
'/',
"/",
"regexp literal");
22915 if ((c = nextc(p)) ==
'=') {
22916 set_yylval_id(
'^');
22917 SET_LEX_STATE(EXPR_BEG);
22920 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22925 SET_LEX_STATE(EXPR_BEG);
22926 p->command_start = TRUE;
22930 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22934 if (IS_AFTER_OPERATOR()) {
22935 if ((c = nextc(p)) !=
'@') {
22938 SET_LEX_STATE(EXPR_ARG);
22941 SET_LEX_STATE(EXPR_BEG);
22949 else if (!space_seen) {
22952 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
22955 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
22956 rb_warning0(
"parentheses after method name is interpreted as "
22957 "an argument list, not a decomposed argument");
22959 p->lex.paren_nest++;
22962 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22966 p->lex.paren_nest++;
22967 if (IS_AFTER_OPERATOR()) {
22968 if ((c = nextc(p)) ==
']') {
22969 p->lex.paren_nest--;
22970 SET_LEX_STATE(EXPR_ARG);
22971 if ((c = nextc(p)) ==
'=') {
22978 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
22981 else if (IS_BEG()) {
22984 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
22987 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22993 ++p->lex.brace_nest;
22994 if (lambda_beginning_p())
22996 else if (IS_lex_state(EXPR_LABELED))
22998 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
23000 else if (IS_lex_state(EXPR_ENDARG))
23004 if (c != tLBRACE) {
23005 p->command_start = TRUE;
23006 SET_LEX_STATE(EXPR_BEG);
23009 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
23011 ++p->lex.paren_nest;
23020 dispatch_scan_event(p, tSP);
23023 if (c ==
' ')
return tSP;
23029 return parse_percent(p, space_seen, last_state);
23032 return parse_gvar(p, last_state);
23035 return parse_atmark(p, last_state);
23038 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
23039 p->ruby__end__seen = 1;
23043 dispatch_scan_event(p, k__END__);
23045 return END_OF_INPUT;
23051 if (!parser_is_identchar(p)) {
23052 compile_error(p,
"Invalid char '\\x%02X' in expression", c);
23061 return parse_ident(p, c, cmd_state);
23064static enum yytokentype
23067 enum yytokentype t;
23071 p->yylloc = yylloc;
23073 t = parser_yylex(p);
23075 if (has_delayed_token(p))
23076 dispatch_delayed_token(p, t);
23077 else if (t != END_OF_INPUT)
23078 dispatch_scan_event(p, t);
23083#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
23086node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment)
23088 NODE *n = rb_ast_newnode(p->ast,
type, size, alignment);
23090 rb_node_init(n,
type);
23098 nd_set_line(nd, loc->beg_pos.lineno);
23105 NODE *n = node_new_internal(p,
type, size, alignment);
23107 nd_set_loc(n, loc);
23108 nd_set_node_id(n, parser_get_node_id(p));
23112#define NODE_NEWNODE(node_type, type, loc) (type *)(node_newnode(p, node_type, sizeof(type), RUBY_ALIGNOF(type), loc))
23118 nd_tbl = local_tbl(p);
23120 n->nd_tbl = nd_tbl;
23121 n->nd_body = nd_body;
23122 n->nd_parent = nd_parent;
23123 n->nd_args = nd_args;
23132 n->nd_tbl = nd_tbl;
23133 n->nd_body = nd_body;
23134 n->nd_parent = nd_parent;
23135 n->nd_args = nd_args;
23144 n->nd_mid = nd_mid;
23145 n->nd_defn = nd_defn;
23154 n->nd_recv = nd_recv;
23155 n->nd_mid = nd_mid;
23156 n->nd_defn = nd_defn;
23165 n->nd_head = nd_head;
23166 n->nd_end = (
NODE *)n;
23176 n->nd_body = nd_body;
23177 n->nd_iter = nd_iter;
23178 n->for_keyword_loc = *for_keyword_loc;
23179 n->in_keyword_loc = *in_keyword_loc;
23180 n->do_keyword_loc = *do_keyword_loc;
23181 n->end_keyword_loc = *end_keyword_loc;
23190 n->nd_var = nd_var;
23207 n->nd_body = nd_body;
23216 n->nd_head = nd_head;
23217 n->nd_resq = nd_resq;
23218 n->nd_else = nd_else;
23227 n->nd_args = nd_args;
23228 n->nd_exc_var = nd_exc_var;
23229 n->nd_body = nd_body;
23230 n->nd_next = nd_next;
23239 n->nd_head = nd_head;
23240 n->nd_ensr = nd_ensr;
23249 n->nd_1st = nd_1st;
23250 n->nd_2nd = nd_2nd;
23251 n->operator_loc = *operator_loc;
23260 n->nd_1st = nd_1st;
23261 n->nd_2nd = nd_2nd;
23262 n->operator_loc = *operator_loc;
23271 n->nd_stts = nd_stts;
23272 n->keyword_loc = *keyword_loc;
23279 if (nd_head) no_blockarg(p, nd_head);
23282 n->nd_head = nd_head;
23283 n->keyword_loc = *keyword_loc;
23284 n->lparen_loc = *lparen_loc;
23285 n->rparen_loc = *rparen_loc;
23294 n->nd_cond = nd_cond;
23295 n->nd_body = nd_body;
23296 n->nd_else = nd_else;
23297 n->if_keyword_loc = *if_keyword_loc;
23298 n->then_keyword_loc = *then_keyword_loc;
23299 n->end_keyword_loc = *end_keyword_loc;
23308 n->nd_cond = nd_cond;
23309 n->nd_body = nd_body;
23310 n->nd_else = nd_else;
23311 n->keyword_loc = *keyword_loc;
23312 n->then_keyword_loc = *then_keyword_loc;
23313 n->end_keyword_loc = *end_keyword_loc;
23322 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
23324 RNODE_SCOPE(scope)->nd_parent = &n->node;
23325 n->nd_cpath = nd_cpath;
23326 n->nd_body = scope;
23327 n->nd_super = nd_super;
23328 n->class_keyword_loc = *class_keyword_loc;
23329 n->inheritance_operator_loc = *inheritance_operator_loc;
23330 n->end_keyword_loc = *end_keyword_loc;
23339 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
23341 RNODE_SCOPE(scope)->nd_parent = &n->node;
23342 n->nd_recv = nd_recv;
23343 n->nd_body = scope;
23344 n->class_keyword_loc = *class_keyword_loc;
23345 n->operator_loc = *operator_loc;
23346 n->end_keyword_loc = *end_keyword_loc;
23355 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
23357 RNODE_SCOPE(scope)->nd_parent = &n->node;
23358 n->nd_cpath = nd_cpath;
23359 n->nd_body = scope;
23360 n->module_keyword_loc = *module_keyword_loc;
23361 n->end_keyword_loc = *end_keyword_loc;
23370 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
23372 RNODE_SCOPE(scope)->nd_parent = &n->node;
23373 n->nd_body = scope;
23383 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
23384 YYLTYPE lambda_loc = code_loc_gen(operator_loc, closing_loc);
23386 RNODE_SCOPE(scope)->nd_parent = &n->node;
23387 n->nd_body = scope;
23388 n->operator_loc = *operator_loc;
23389 n->opening_loc = *opening_loc;
23390 n->closing_loc = *closing_loc;
23399 n->nd_head = nd_head;
23400 n->nd_body = nd_body;
23401 n->case_keyword_loc = *case_keyword_loc;
23402 n->end_keyword_loc = *end_keyword_loc;
23412 n->nd_body = nd_body;
23413 n->case_keyword_loc = *case_keyword_loc;
23414 n->end_keyword_loc = *end_keyword_loc;
23423 n->nd_head = nd_head;
23424 n->nd_body = nd_body;
23425 n->case_keyword_loc = *case_keyword_loc;
23426 n->end_keyword_loc = *end_keyword_loc;
23435 n->nd_head = nd_head;
23436 n->nd_body = nd_body;
23437 n->nd_next = nd_next;
23438 n->keyword_loc = *keyword_loc;
23439 n->then_keyword_loc = *then_keyword_loc;
23448 n->nd_head = nd_head;
23449 n->nd_body = nd_body;
23450 n->nd_next = nd_next;
23451 n->in_keyword_loc = *in_keyword_loc;
23452 n->then_keyword_loc = *then_keyword_loc;
23453 n->operator_loc = *operator_loc;
23462 n->nd_cond = nd_cond;
23463 n->nd_body = nd_body;
23464 n->nd_state = nd_state;
23465 n->keyword_loc = *keyword_loc;
23466 n->closing_loc = *closing_loc;
23475 n->nd_cond = nd_cond;
23476 n->nd_body = nd_body;
23477 n->nd_state = nd_state;
23478 n->keyword_loc = *keyword_loc;
23479 n->closing_loc = *closing_loc;
23488 n->nd_head = nd_head;
23489 n->nd_mid = nd_mid;
23490 n->delimiter_loc = *delimiter_loc;
23491 n->name_loc = *name_loc;
23500 n->nd_mid = nd_mid;
23501 n->delimiter_loc = *delimiter_loc;
23502 n->name_loc = *name_loc;
23511 n->nd_beg = nd_beg;
23512 n->nd_end = nd_end;
23513 n->operator_loc = *operator_loc;
23522 n->nd_beg = nd_beg;
23523 n->nd_end = nd_end;
23524 n->operator_loc = *operator_loc;
23567 n->nd_args = nd_args;
23568 n->keyword_loc = *keyword_loc;
23569 n->lparen_loc = *lparen_loc;
23570 n->rparen_loc = *rparen_loc;
23587 n->nd_recv = nd_recv;
23588 n->nd_value = nd_value;
23598 n->nd_recv = nd_recv;
23599 n->nd_value = nd_value;
23607 return rb_node_list_new2(p, nd_head, 1, 0, loc);
23614 n->nd_head = nd_head;
23615 n->as.nd_alen = nd_alen;
23616 n->nd_next = nd_next;
23633 n->nd_head = nd_head;
23643 n->nd_head = nd_head;
23645 n->nd_args = nd_args;
23654 n->nd_vid = nd_vid;
23655 n->nd_value = nd_value;
23664 n->nd_vid = nd_vid;
23665 n->nd_value = nd_value;
23674 n->nd_vid = nd_vid;
23675 n->nd_value = nd_value;
23684 n->nd_vid = nd_vid;
23685 n->nd_value = nd_value;
23694 n->nd_vid = nd_vid;
23695 n->nd_value = nd_value;
23704 n->nd_recv = nd_recv;
23705 n->nd_mid = nd_mid;
23706 n->nd_index = index;
23707 n->nd_rvalue = rvalue;
23708 n->call_operator_loc = *call_operator_loc;
23709 n->opening_loc = *opening_loc;
23710 n->closing_loc = *closing_loc;
23711 n->binary_operator_loc = *binary_operator_loc;
23720 n->nd_recv = nd_recv;
23721 n->nd_value = nd_value;
23722 n->nd_vid = nd_vid;
23723 n->nd_mid = nd_mid;
23724 n->nd_aid = nd_aid;
23725 n->call_operator_loc = *call_operator_loc;
23726 n->message_loc = *message_loc;
23727 n->binary_operator_loc = *binary_operator_loc;
23736 n->nd_head = nd_head;
23737 n->nd_value = nd_value;
23746 n->nd_head = nd_head;
23747 n->nd_value = nd_value;
23756 n->nd_vid = nd_vid;
23765 n->nd_vid = nd_vid;
23774 n->nd_vid = nd_vid;
23783 n->nd_vid = nd_vid;
23792 n->nd_vid = nd_vid;
23801 n->nd_vid = nd_vid;
23810 n->nd_nth = nd_nth;
23819 n->nd_nth = nd_nth;
23846rb_node_rational_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
const YYLTYPE *loc)
23852 n->seen_point = seen_point;
23858rb_node_imaginary_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
enum rb_numeric_type numeric_type,
const YYLTYPE *loc)
23864 n->seen_point = seen_point;
23865 n->type = numeric_type;
23874 n->string = string;
23884 n->string = string;
23885 n->as.nd_alen = nd_alen;
23894 return rb_node_dstr_new0(p,
string, 1, 0, loc);
23901 n->string = string;
23910 n->string = string;
23911 n->as.nd_alen = nd_alen;
23921 n->string = rb_str_to_parser_string(p, str);
23930 n->string = string;
23931 n->as.nd_alen = nd_alen;
23941 n->nd_body = nd_body;
23942 n->opening_loc = *opening_loc;
23943 n->closing_loc = *closing_loc;
23952 n->string = string;
23953 n->options = options & RE_OPTION_MASK;
23954 n->opening_loc = *opening_loc;
23955 n->content_loc = *content_loc;
23956 n->closing_loc = *closing_loc;
23965 n->nd_recv = nd_recv;
23966 n->nd_mid = nd_mid;
23967 n->nd_args = nd_args;
23976 n->nd_recv = nd_recv;
23977 n->nd_mid = nd_mid;
23978 n->nd_args = nd_args;
23987 n->nd_mid = nd_mid;
23988 n->nd_args = nd_args;
23997 n->nd_recv = nd_recv;
23998 n->nd_mid = nd_mid;
23999 n->nd_args = nd_args;
24008 n->nd_mid = nd_mid;
24017 n->nd_body = nd_body;
24035 n->nd_pid = nd_pid;
24036 n->nd_plen = nd_plen;
24046 n->nd_body = nd_body;
24056 n->nd_body = nd_body;
24066 n->nd_1st = nd_1st;
24067 n->nd_2nd = nd_2nd;
24076 n->nd_head = nd_head;
24077 n->nd_body = nd_body;
24086 n->nd_head = nd_head;
24087 n->nd_body = nd_body;
24096 n->nd_head = nd_head;
24097 n->operator_loc = *operator_loc;
24108 n->nd_body = nd_body;
24109 n->operator_loc = *operator_loc;
24118 n->nd_1st = nd_1st;
24119 n->nd_2nd = nd_2nd;
24120 n->keyword_loc = *keyword_loc;
24129 n->nd_alias = nd_alias;
24130 n->nd_orig = nd_orig;
24131 n->keyword_loc = *keyword_loc;
24140 n->nd_undefs = rb_parser_ary_new_capa_for_node(p, 1);
24141 n->keyword_loc = NULL_LOC;
24142 rb_parser_ary_push_node(p, n->nd_undefs, nd_undef);
24159 n->nd_head = nd_head;
24160 n->keyword_loc = *keyword_loc;
24169 n->nd_body = nd_body;
24170 n->keyword_loc = *keyword_loc;
24171 n->opening_loc = *opening_loc;
24172 n->closing_loc = *closing_loc;
24181 n->nd_recv = nd_recv;
24182 n->nd_mid = nd_mid;
24183 n->nd_args = nd_args;
24193 n->pre_args = pre_args;
24194 n->rest_arg = rest_arg;
24195 n->post_args = post_args;
24204 n->nd_pconst = nd_pconst;
24205 n->nd_pkwargs = nd_pkwargs;
24206 n->nd_pkwrestarg = nd_pkwrestarg;
24216 n->pre_rest_arg = pre_rest_arg;
24218 n->post_rest_arg = post_rest_arg;
24235 n->path = rb_str_to_parser_string(p, str);
24250rb_node_cdecl_new(
struct parser_params *p,
ID nd_vid,
NODE *nd_value,
NODE *nd_else,
enum rb_parser_shareability shareability,
const YYLTYPE *loc)
24253 n->nd_vid = nd_vid;
24254 n->nd_value = nd_value;
24255 n->nd_else = nd_else;
24256 n->shareability = shareability;
24262rb_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)
24265 n->nd_head = nd_head;
24266 n->nd_value = nd_value;
24267 n->nd_aid = nd_aid;
24268 n->shareability = shareability;
24285 n->nd_stts = nd_stts;
24287 n->keyword_loc = *keyword_loc;
24296 n->nd_stts = nd_stts;
24298 n->keyword_loc = *keyword_loc;
24308 n->keyword_loc = *keyword_loc;
24317 n->save.numparam_save = 0;
24318 n->save.max_numparam = 0;
24319 n->save.ctxt = p->ctxt;
24329 n->save.numparam_save = numparam_push(p);
24330 n->save.max_numparam = p->max_numparam;
24335static enum node_type
24336nodetype(
NODE *node)
24338 return (
enum node_type)nd_type(node);
24342nodeline(
NODE *node)
24344 return nd_line(node);
24349newline_node(
NODE *node)
24352 node = remove_begin(node);
24353 nd_set_fl_newline(node);
24363 nd_set_line(node, nd_line(orig));
24369 NODE *end, *h = head, *nd;
24371 if (tail == 0)
return head;
24373 if (h == 0)
return tail;
24374 switch (nd_type(h)) {
24376 h = end = NEW_BLOCK(head, &head->nd_loc);
24380 end = RNODE_BLOCK(h)->nd_end;
24384 nd = RNODE_BLOCK(end)->nd_head;
24385 switch (nd_type(nd)) {
24391 rb_warning0L(nd_line(tail),
"statement not reached");
24398 if (!nd_type_p(tail, NODE_BLOCK)) {
24399 tail = NEW_BLOCK(tail, &tail->nd_loc);
24401 RNODE_BLOCK(end)->nd_next = tail;
24402 RNODE_BLOCK(h)->nd_end = RNODE_BLOCK(tail)->nd_end;
24403 nd_set_last_loc(head, nd_last_loc(tail));
24413 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
24414 if (RNODE_LIST(list)->nd_next) {
24415 last = RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end;
24421 RNODE_LIST(list)->as.nd_alen += 1;
24422 RNODE_LIST(last)->nd_next = NEW_LIST(item, &item->nd_loc);
24423 RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end = RNODE_LIST(last)->nd_next;
24425 nd_set_last_loc(list, nd_last_loc(item));
24432list_concat(
NODE *head,
NODE *tail)
24436 if (RNODE_LIST(head)->nd_next) {
24437 last = RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end;
24443 RNODE_LIST(head)->as.nd_alen += RNODE_LIST(tail)->as.nd_alen;
24444 RNODE_LIST(last)->nd_next = tail;
24445 if (RNODE_LIST(tail)->nd_next) {
24446 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = RNODE_LIST(RNODE_LIST(tail)->nd_next)->as.nd_end;
24449 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = tail;
24452 nd_set_last_loc(head, nd_last_loc(tail));
24460 if (!tail)
return 1;
24461 if (!rb_parser_enc_compatible(p, head, tail)) {
24462 compile_error(p,
"string literal encodings differ (%s / %s)",
24463 rb_enc_name(rb_parser_str_get_encoding(head)),
24464 rb_enc_name(rb_parser_str_get_encoding(tail)));
24465 rb_parser_str_resize(p, head, 0);
24466 rb_parser_str_resize(p, tail, 0);
24469 rb_parser_str_buf_append(p, head, tail);
24476 if (htype != NODE_DSTR)
return NULL;
24477 if (RNODE_DSTR(head)->nd_next) {
24478 head = RNODE_LIST(RNODE_LIST(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_head;
24479 if (!head || !nd_type_p(head, NODE_STR))
return NULL;
24491 if (!orig)
return NULL;
24492 copy = rb_parser_string_new(p, PARSER_STRING_PTR(orig), PARSER_STRING_LEN(orig));
24493 copy->coderange = orig->coderange;
24494 copy->enc = orig->enc;
24503 enum node_type htype;
24506 if (!head)
return tail;
24507 if (!tail)
return head;
24509 htype = nd_type(head);
24510 if (htype == NODE_EVSTR) {
24511 head = new_dstr(p, head, loc);
24514 if (p->heredoc_indent > 0) {
24517 head = str2dstr(p, head);
24519 return list_append(p, head, tail);
24524 switch (nd_type(tail)) {
24526 if ((lit = string_literal_head(p, htype, head)) !=
false) {
24530 lit = RNODE_DSTR(head)->string;
24532 if (htype == NODE_STR) {
24533 if (!literal_concat0(p, lit, RNODE_STR(tail)->
string)) {
24535 rb_discard_node(p, head);
24536 rb_discard_node(p, tail);
24539 rb_discard_node(p, tail);
24542 list_append(p, head, tail);
24547 if (htype == NODE_STR) {
24548 if (!literal_concat0(p, RNODE_STR(head)->
string, RNODE_DSTR(tail)->
string))
24550 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24551 RNODE_DSTR(tail)->string = RNODE_STR(head)->string;
24552 RNODE_STR(head)->string = NULL;
24553 rb_discard_node(p, head);
24556 else if (!RNODE_DSTR(tail)->
string) {
24558 RNODE_DSTR(head)->as.nd_alen += RNODE_DSTR(tail)->as.nd_alen - 1;
24559 if (!RNODE_DSTR(head)->nd_next) {
24560 RNODE_DSTR(head)->nd_next = RNODE_DSTR(tail)->nd_next;
24562 else if (RNODE_DSTR(tail)->nd_next) {
24563 RNODE_DSTR(RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_next = RNODE_DSTR(tail)->nd_next;
24564 RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end = RNODE_DSTR(RNODE_DSTR(tail)->nd_next)->as.nd_end;
24566 rb_discard_node(p, tail);
24568 else if ((lit = string_literal_head(p, htype, head)) !=
false) {
24569 if (!literal_concat0(p, lit, RNODE_DSTR(tail)->
string))
24571 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24572 RNODE_DSTR(tail)->string = 0;
24576 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));
24577 RNODE_DSTR(tail)->string = 0;
24582 if (htype == NODE_STR) {
24583 head = str2dstr(p, head);
24584 RNODE_DSTR(head)->as.nd_alen = 1;
24586 list_append(p, head, tail);
24593nd_copy_flag(
NODE *new_node,
NODE *old_node)
24595 if (nd_fl_newline(old_node)) nd_set_fl_newline(new_node);
24596 nd_set_line(new_node, nd_line(old_node));
24597 new_node->nd_loc = old_node->nd_loc;
24598 new_node->node_id = old_node->node_id;
24605 nd_copy_flag(new_node, node);
24606 RNODE_DSTR(new_node)->string = RNODE_STR(node)->string;
24607 RNODE_DSTR(new_node)->as.nd_alen = 0;
24608 RNODE_DSTR(new_node)->nd_next = 0;
24609 RNODE_STR(node)->string = 0;
24618 nd_copy_flag(new_node, node);
24619 RNODE_REGX(new_node)->string = RNODE_STR(node)->string;
24620 RNODE_REGX(new_node)->options = options;
24621 nd_set_loc(new_node, loc);
24622 RNODE_REGX(new_node)->opening_loc = *opening_loc;
24623 RNODE_REGX(new_node)->content_loc = *content_loc;
24624 RNODE_REGX(new_node)->closing_loc = *closing_loc;
24625 RNODE_STR(node)->string = 0;
24633 if (nd_type_p(node, NODE_EVSTR)) {
24634 node = new_dstr(p, node, &node->nd_loc);
24645 switch (nd_type(node)) {
24647 return str2dstr(p, node);
24654 return NEW_EVSTR(head, loc, opening_loc, closing_loc);
24660 NODE *dstr = NEW_DSTR(STRING_NEW0(), loc);
24661 return list_append(p, dstr, node);
24669 value_expr(p, recv);
24670 value_expr(p, arg1);
24671 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
24672 nd_set_line(expr, op_loc->beg_pos.lineno);
24680 value_expr(p, recv);
24681 opcall = NEW_OPCALL(recv,
id, 0, loc);
24682 nd_set_line(opcall, op_loc->beg_pos.lineno);
24689 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
24690 nd_set_line(qcall, op_loc->beg_pos.lineno);
24698 if (block) block_dup_check(p, args, block);
24699 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
24700 if (block) ret = method_add_block(p, ret, block, loc);
24710 body->opening_loc = *opening_loc;
24711 body->closing_loc = *closing_loc;
24715#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? RNODE_ONCE(node)->nd_body : node)
24718last_expr_once_body(
NODE *node)
24720 if (!node)
return 0;
24721 return nd_once_body(node);
24728 int line = op_loc->beg_pos.lineno;
24730 value_expr(p, node1);
24731 value_expr(p, node2);
24733 if ((n = last_expr_once_body(node1)) != 0) {
24734 switch (nd_type(n)) {
24737 NODE *match = NEW_MATCH2(node1, node2, loc);
24738 nd_set_line(match, line);
24744 const VALUE lit = rb_node_regx_string_val(n);
24746 NODE *match = NEW_MATCH2(node1, node2, loc);
24747 RNODE_MATCH2(match)->nd_args = reg_named_capture_assign(p, lit, loc, assignable);
24748 nd_set_line(match, line);
24755 if ((n = last_expr_once_body(node2)) != 0) {
24758 switch (nd_type(n)) {
24760 match3 = NEW_MATCH3(node2, node1, loc);
24765 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
24766 nd_set_line(n, line);
24770# if WARN_PAST_SCOPE
24774 struct vtable *past = p->lvtbl->past;
24776 if (vtable_included(past,
id))
return 1;
24787 NODE *outer = local->numparam.outer;
24788 NODE *inner = local->numparam.inner;
24789 if (outer || inner) {
24790 NODE *used = outer ? outer : inner;
24791 compile_error(p,
"numbered parameter is already used in %s block\n"
24792 "%s:%d: numbered parameter is already used here",
24793 outer ?
"outer" :
"inner",
24794 p->ruby_sourcefile, nd_line(used));
24795 parser_show_error_line(p, &used->nd_loc);
24804 NODE *numparam = p->lvtbl->numparam.current;
24806 compile_error(p,
"'it' is not allowed when a numbered parameter is already used\n"
24807 "%s:%d: numbered parameter is already used here",
24808 p->ruby_sourcefile, nd_line(numparam));
24809 parser_show_error_line(p, &numparam->nd_loc);
24818 NODE *it = p->lvtbl->it;
24820 compile_error(p,
"numbered parameters are not allowed when 'it' is already used\n"
24821 "%s:%d: 'it' is already used here",
24822 p->ruby_sourcefile, nd_line(it));
24823 parser_show_error_line(p, &it->nd_loc);
24836 return NEW_SELF(loc);
24838 return NEW_NIL(loc);
24840 return NEW_TRUE(loc);
24841 case keyword_false:
24842 return NEW_FALSE(loc);
24843 case keyword__FILE__:
24845 VALUE file = p->ruby_sourcefile_string;
24848 node = NEW_FILE(file, loc);
24851 case keyword__LINE__:
24852 return NEW_LINE(loc);
24853 case keyword__ENCODING__:
24854 return NEW_ENCODING(loc);
24857 switch (id_type(
id)) {
24859 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
24860 if (NUMPARAM_ID_P(
id) && (numparam_nested_p(p) || it_used_p(p)))
return 0;
24861 if (vidp) *vidp |= LVAR_USED;
24862 node = NEW_DVAR(
id, loc);
24865 if (local_id_ref(p,
id, &vidp)) {
24866 if (vidp) *vidp |= LVAR_USED;
24867 node = NEW_LVAR(
id, loc);
24870 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
24871 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
24872 if (numparam_nested_p(p) || it_used_p(p))
return 0;
24873 node = NEW_DVAR(
id, loc);
24875 if (!local->numparam.current) local->numparam.current = node;
24878# if WARN_PAST_SCOPE
24880 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
24884 if (dyna_in_block(p) &&
id == idIt && !(DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev))) {
24885 if (numparam_used_p(p))
return 0;
24886 if (p->max_numparam == ORDINAL_PARAM) {
24887 compile_error(p,
"ordinary parameter is defined");
24891 p->it_id = idItImplicit;
24892 vtable_add(p->lvtbl->args, p->it_id);
24894 NODE *node = NEW_DVAR(p->it_id, loc);
24895 if (!p->lvtbl->it) p->lvtbl->it = node;
24898 return NEW_VCALL(
id, loc);
24900 return NEW_GVAR(
id, loc);
24902 return NEW_IVAR(
id, loc);
24904 return NEW_CONST(
id, loc);
24906 return NEW_CVAR(
id, loc);
24908 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24916 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24918 while (opts->nd_next) {
24919 opts = opts->nd_next;
24920 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24922 opts->nd_next = opt;
24932 opt_arg_append(RNODE_OPT_ARG(kwlist), RNODE_OPT_ARG(kw));
24940 int had_trailing_semicolon = p->ctxt.has_trailing_semicolon;
24941 p->ctxt.has_trailing_semicolon = 0;
24945 if (nd_type_p(n, NODE_BEGIN)) {
24946 n = RNODE_BEGIN(n)->nd_body;
24948 else if (nd_type_p(n, NODE_BLOCK) && RNODE_BLOCK(n)->nd_end == n) {
24949 n = RNODE_BLOCK(n)->nd_head;
24956 if (had_trailing_semicolon && !nd_type_p(expr, NODE_BLOCK)) {
24957 NODE *block = NEW_BLOCK(expr, loc);
24958 return NEW_DEFINED(block, loc, keyword_loc);
24961 return NEW_DEFINED(n, loc, keyword_loc);
24969 if (rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_BROKEN) {
24970 yyerror1(loc,
"invalid symbol");
24974 lit = rb_str_new_parser_string(str);
24976 return NEW_SYM(lit, loc);
24982 enum node_type
type = nd_type(symbol);
24985 nd_set_type(symbol, NODE_DSYM);
24988 symbol = str_to_sym_node(p, symbol, &RNODE(symbol)->nd_loc);
24991 compile_error(p,
"unexpected node as symbol: %s", parser_node_name(
type));
24993 return list_append(p, symbols, symbol);
24999 if (dreg->string) {
25000 reg_fragment_setenc(p, dreg->string, options);
25002 for (
struct RNode_LIST *list = dreg->nd_next; list; list = RNODE_LIST(list->nd_next)) {
25003 NODE *frag = list->nd_head;
25004 if (nd_type_p(frag, NODE_STR)) {
25005 reg_fragment_setenc(p, RNODE_STR(frag)->
string, options);
25007 else if (nd_type_p(frag, NODE_DSTR)) {
25008 dregex_fragment_setenc(p, RNODE_DSTR(frag), options);
25019 reg_compile(p, str, options);
25020 node = NEW_REGX(str, options, loc, opening_loc, content_loc, closing_loc);
25023 switch (nd_type(node)) {
25027 reg_compile(p, RNODE_STR(node)->
string, options);
25028 node = str2regx(p, node, options, loc, opening_loc, content_loc, closing_loc);
25032 node = NEW_DSTR0(STRING_NEW0(), 1, NEW_LIST(node, loc), loc);
25035 nd_set_type(node, NODE_DREGX);
25036 nd_set_loc(node, loc);
25038 dreg->as.nd_cflag = options & RE_OPTION_MASK;
25039 if (dreg->nd_next) {
25040 dregex_fragment_setenc(p, dreg, options);
25042 if (options & RE_OPTION_ONCE) {
25043 node = NEW_ONCE(node, loc);
25054 return NEW_KW_ARG((k), loc);
25061 NODE *xstr = NEW_XSTR(STRING_NEW0(), loc);
25064 switch (nd_type(node)) {
25066 nd_set_type(node, NODE_XSTR);
25067 nd_set_loc(node, loc);
25070 nd_set_type(node, NODE_DXSTR);
25071 nd_set_loc(node, loc);
25074 node = NEW_DXSTR(0, 1, NEW_LIST(node, loc), loc);
25086static int nd_type_st_key_enable_p(
NODE *node);
25092 if (!arg || !p->case_labels)
return;
25093 if (!nd_type_st_key_enable_p(arg))
return;
25095 if (p->case_labels == CHECK_LITERAL_WHEN) {
25096 p->case_labels = st_init_table(&literal_type);
25100 if (st_lookup(p->case_labels, (st_data_t)arg, &line)) {
25101 rb_warning2(
"'when' clause on line %d duplicates 'when' clause on line %d and is ignored",
25102 WARN_I((
int)nd_line(arg)), WARN_I((
int)line));
25106 st_insert(p->case_labels, (st_data_t)arg, (st_data_t)p->ruby_sourceline);
25113 if (is_notop_id(
id)) {
25114 switch (
id & ID_SCOPE_MASK) {
25115 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
25118 if (dyna_in_block(p)) {
25119 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
25121 if (local_id(p,
id))
return 1;
25126 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
25131static inline enum lex_state_e
25132parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
25135 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
25137 return p->lex.state = ls;
25144 VALUE mesg = p->debug_buffer;
25146 if (!
NIL_P(mesg) && RSTRING_LEN(mesg)) {
25147 p->debug_buffer =
Qnil;
25148 rb_io_puts(1, &mesg, out);
25150 if (!
NIL_P(str) && RSTRING_LEN(str)) {
25151 rb_io_write(p->debug_output, str);
25155static const char rb_parser_lex_state_names[][8] = {
25156 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
25157 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
25158 "LABEL",
"LABELED",
"FITEM",
25165 unsigned int mask = 1;
25166 static const char none[] =
"NONE";
25168 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
25169 if ((
unsigned)state & mask) {
25184rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
25185 enum lex_state_e to,
int line)
25189 append_lex_state_name(p, from, mesg);
25191 append_lex_state_name(p, to, mesg);
25192 rb_str_catf(mesg,
" at line %d\n", line);
25193 flush_debug_buffer(p, p->debug_output, mesg);
25198rb_parser_lex_state_name(
struct parser_params *p,
enum lex_state_e state)
25200 return rb_str_to_interned_str(append_lex_state_name(p, state,
rb_str_new(0, 0)));
25210 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
25211 for (; mask && !(stack & mask); mask >>= 1)
continue;
25212 for (; mask; mask >>= 1)
rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
25217rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
25218 const char *name,
int line)
25220 VALUE mesg = rb_sprintf(
"%s: ", name);
25221 append_bitstack_value(p, stack, mesg);
25222 rb_str_catf(mesg,
" at line %d\n", line);
25223 flush_debug_buffer(p, p->debug_output, mesg);
25227rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
25233 rb_str_vcatf(mesg, fmt, ap);
25235 yyerror0(RSTRING_PTR(mesg));
25239 append_lex_state_name(p, p->lex.state, mesg);
25240 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
25241 rb_str_resize(mesg, 0);
25242 append_bitstack_value(p, p->cond_stack, mesg);
25243 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
25244 rb_str_resize(mesg, 0);
25245 append_bitstack_value(p, p->cmdarg_stack, mesg);
25246 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
25247 if (p->debug_output == rb_ractor_stdout())
25248 p->debug_output = rb_ractor_stderr();
25253rb_parser_set_pos(
YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
25255 yylloc->beg_pos.lineno = sourceline;
25256 yylloc->beg_pos.column = beg_pos;
25257 yylloc->end_pos.lineno = sourceline;
25258 yylloc->end_pos.column = end_pos;
25265 int sourceline = here->sourceline;
25266 int beg_pos = (int)here->offset - here->quote
25267 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
25268 int end_pos = (int)here->offset + here->length + here->quote;
25270 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25276 yylloc->beg_pos.lineno = p->delayed.beg_line;
25277 yylloc->beg_pos.column = p->delayed.beg_col;
25278 yylloc->end_pos.lineno = p->delayed.end_line;
25279 yylloc->end_pos.column = p->delayed.end_col;
25287 int sourceline = p->ruby_sourceline;
25288 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
25289 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
25290 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25296 yylloc->end_pos = yylloc->beg_pos;
25304 int sourceline = p->ruby_sourceline;
25305 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
25306 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
25307 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25313 int sourceline = p->ruby_sourceline;
25314 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
25315 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
25316 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
25323 if (!
id)
return -1;
25326 *err =
"Can't change the value of self";
25329 *err =
"Can't assign to nil";
25332 *err =
"Can't assign to true";
25334 case keyword_false:
25335 *err =
"Can't assign to false";
25337 case keyword__FILE__:
25338 *err =
"Can't assign to __FILE__";
25340 case keyword__LINE__:
25341 *err =
"Can't assign to __LINE__";
25343 case keyword__ENCODING__:
25344 *err =
"Can't assign to __ENCODING__";
25347 switch (id_type(
id)) {
25349 if (dyna_in_block(p)) {
25350 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
25351 compile_error(p,
"Can't assign to numbered parameter _%d",
25352 NUMPARAM_ID_TO_IDX(
id));
25355 if (dvar_curr(p,
id))
return NODE_DASGN;
25356 if (dvar_defined(p,
id))
return NODE_DASGN;
25357 if (local_id(p,
id))
return NODE_LASGN;
25362 if (!local_id(p,
id)) local_var(p,
id);
25366 case ID_GLOBAL:
return NODE_GASGN;
25367 case ID_INSTANCE:
return NODE_IASGN;
25369 if (!p->ctxt.in_def)
return NODE_CDECL;
25370 *err =
"dynamic constant assignment";
25372 case ID_CLASS:
return NODE_CVASGN;
25374 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
25382 const char *err = 0;
25383 int node_type = assignable0(p,
id, &err);
25384 switch (node_type) {
25385 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
25386 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
25387 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
25388 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
25389 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, p->ctxt.shareable_constant_value, loc);
25390 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
25394 if (err) yyerror1(loc, err);
25396 if (err) set_value(assign_error(p, err, p->s_lvalue));
25398 return NEW_ERROR(loc);
25405 if (name == idUScore)
return 1;
25406 if (!is_local_id(name))
return 0;
25407 s = rb_id2str(name);
25409 return RSTRING_PTR(s)[0] ==
'_';
25415 if (dyna_in_block(p)) {
25416 if (dvar_curr(p, name)) {
25417 if (is_private_local_id(p, name))
return 1;
25418 yyerror0(
"duplicated argument name");
25420 else if (dvar_defined(p, name) || local_id(p, name)) {
25421 vtable_add(p->lvtbl->vars, name);
25422 if (p->lvtbl->used) {
25423 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
25429 if (local_id(p, name)) {
25430 if (is_private_local_id(p, name))
return 1;
25431 yyerror0(
"duplicated argument name");
25440 shadowing_lvar_0(p, name);
25448 if (!is_local_id(name)) {
25449 compile_error(p,
"invalid local variable - %"PRIsVALUE,
25453 if (!shadowing_lvar_0(p, name))
return;
25456 if (dvar_defined_ref(p, name, &vidp)) {
25457 if (vidp) *vidp |= LVAR_USED;
25464 NODE *block = 0, *kwds = 0;
25465 if (args && nd_type_p(args, NODE_BLOCK_PASS)) {
25466 block = RNODE_BLOCK_PASS(args)->nd_body;
25467 args = RNODE_BLOCK_PASS(args)->nd_head;
25469 if (args && nd_type_p(args, NODE_ARGSCAT)) {
25470 args = RNODE_ARGSCAT(args)->nd_body;
25472 if (args && nd_type_p(args, NODE_ARGSPUSH)) {
25473 kwds = RNODE_ARGSPUSH(args)->nd_body;
25476 for (
NODE *next = args; next && nd_type_p(next, NODE_LIST);
25477 next = RNODE_LIST(next)->nd_next) {
25478 kwds = RNODE_LIST(next)->nd_head;
25481 if (kwds && nd_type_p(kwds, NODE_HASH) && !RNODE_HASH(kwds)->nd_brace) {
25482 yyerror1(&kwds->nd_loc,
"keyword arg given in index assignment");
25485 yyerror1(&block->nd_loc,
"block arg given in index assignment");
25492 aryset_check(p, idx);
25493 return NEW_ATTRASGN(recv, tASET, idx, loc);
25499 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
25500 compile_error(p,
"both block arg and actual block given");
25507 if (!CALL_Q_P(atype))
id = rb_id_attrset(
id);
25508 return NEW_ATTRASGN(recv,
id, 0, loc);
25515# define ERR(...) (compile_error(p, __VA_ARGS__), Qtrue)
25517# define ERR(...) rb_sprintf(__VA_ARGS__)
25519 switch (nd_type(node)) {
25521 return ERR(
"Can't set variable $%ld", RNODE_NTH_REF(node)->nd_nth);
25522 case NODE_BACK_REF:
25523 return ERR(
"Can't set variable $%c", (
int)RNODE_BACK_REF(node)->nd_nth);
25532 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
25533 switch (nd_type(node1)) {
25535 return list_append(p, node1, node2);
25536 case NODE_BLOCK_PASS:
25537 RNODE_BLOCK_PASS(node1)->nd_head = arg_append(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25538 node1->nd_loc.end_pos = RNODE_BLOCK_PASS(node1)->nd_head->nd_loc.end_pos;
25540 case NODE_ARGSPUSH:
25541 RNODE_ARGSPUSH(node1)->nd_body = list_append(p, NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, &RNODE_ARGSPUSH(node1)->nd_body->nd_loc), node2);
25542 node1->nd_loc.end_pos = RNODE_ARGSPUSH(node1)->nd_body->nd_loc.end_pos;
25543 nd_set_type(node1, NODE_ARGSCAT);
25546 if (!nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25547 RNODE_ARGSCAT(node1)->nd_body = list_append(p, RNODE_ARGSCAT(node1)->nd_body, node2);
25548 node1->nd_loc.end_pos = RNODE_ARGSCAT(node1)->nd_body->nd_loc.end_pos;
25551 return NEW_ARGSPUSH(node1, node2, loc);
25557 if (!node2)
return node1;
25558 switch (nd_type(node1)) {
25559 case NODE_BLOCK_PASS:
25560 if (RNODE_BLOCK_PASS(node1)->nd_head)
25561 RNODE_BLOCK_PASS(node1)->nd_head = arg_concat(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25563 RNODE_LIST(node1)->nd_head = NEW_LIST(node2, loc);
25565 case NODE_ARGSPUSH:
25566 if (!nd_type_p(node2, NODE_LIST))
break;
25567 RNODE_ARGSPUSH(node1)->nd_body = list_concat(NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, loc), node2);
25568 nd_set_type(node1, NODE_ARGSCAT);
25571 if (!nd_type_p(node2, NODE_LIST) ||
25572 !nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25573 RNODE_ARGSCAT(node1)->nd_body = list_concat(RNODE_ARGSCAT(node1)->nd_body, node2);
25576 return NEW_ARGSCAT(node1, node2, loc);
25583 if ((n1 = splat_array(args)) != 0) {
25584 return list_append(p, n1, last_arg);
25586 return arg_append(p, args, last_arg, loc);
25593 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
25594 return list_concat(n1, rest_arg);
25596 return arg_concat(p, args, rest_arg, loc);
25600splat_array(
NODE* node)
25602 if (nd_type_p(node, NODE_SPLAT)) node = RNODE_SPLAT(node)->nd_head;
25603 if (nd_type_p(node, NODE_LIST))
return node;
25612 switch (nd_type(rhs)) {
25614 if (local_id_ref(p, RNODE_LASGN(rhs)->nd_vid, &vidp)) {
25615 if (vidp) *vidp |= LVAR_USED;
25619 if (dvar_defined_ref(p, RNODE_DASGN(rhs)->nd_vid, &vidp)) {
25620 if (vidp) *vidp |= LVAR_USED;
25625 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
25626 mark_lvar_used(p, rhs->nd_head);
25633static int is_static_content(
NODE *node);
25638 if (!lhs)
return 0;
25640 switch (nd_type(lhs)) {
25648 set_nd_value(p, lhs, rhs);
25649 nd_set_loc(lhs, loc);
25652 case NODE_ATTRASGN:
25653 RNODE_ATTRASGN(lhs)->nd_args = arg_append(p, RNODE_ATTRASGN(lhs)->nd_args, rhs, loc);
25654 nd_set_loc(lhs, loc);
25668 NODE *void_node = 0, *vn;
25671 rb_warning0(
"empty expression");
25674 switch (nd_type(node)) {
25676 vn = RNODE_ENSURE(node)->nd_head;
25677 node = RNODE_ENSURE(node)->nd_ensr;
25679 if (vn && (vn = value_expr_check(p, vn))) {
25686 vn = RNODE_RESCUE(node)->nd_head;
25687 if (!vn || !(vn = value_expr_check(p, vn))) {
25688 if (!RNODE_RESCUE(node)->nd_else)
return NULL;
25690 if (!void_node) void_node = vn;
25691 for (
NODE *r = RNODE_RESCUE(node)->nd_resq; r; r = RNODE_RESBODY(r)->nd_next) {
25692 if (!nd_type_p(r, NODE_RESBODY)) {
25693 compile_error(p,
"unexpected node");
25696 if (!(vn = value_expr_check(p, RNODE_RESBODY(r)->nd_body))) {
25699 if (!void_node) void_node = vn;
25701 node = RNODE_RESCUE(node)->nd_else;
25702 if (!node)
return void_node;
25714 for (node = RNODE_CASE(node)->nd_body;
25715 node && nd_type_p(node, NODE_WHEN);
25716 node = RNODE_WHEN(node)->nd_next) {
25717 if (!(vn = value_expr_check(p, RNODE_WHEN(node)->nd_body))) {
25720 if (!void_node) void_node = vn;
25726 NODE *in = RNODE_CASE3(node)->nd_body;
25727 if (!in || !nd_type_p(in, NODE_IN)) {
25728 compile_error(p,
"unexpected node");
25731 if (!RNODE_IN(in)->nd_body) {
25736 vn = value_expr_check(p, RNODE_IN(in)->nd_body);
25737 if (!vn)
return NULL;
25738 if (!void_node) void_node = vn;
25739 in = RNODE_IN(in)->nd_next;
25740 }
while (in && nd_type_p(in, NODE_IN));
25746 while (RNODE_BLOCK(node)->nd_next) {
25747 vn = value_expr_check(p, RNODE_BLOCK(node)->nd_head);
25749 node = RNODE_BLOCK(node)->nd_next;
25751 node = RNODE_BLOCK(node)->nd_head;
25755 node = RNODE_BEGIN(node)->nd_body;
25760 if (!RNODE_IF(node)->nd_body) {
25763 else if (!RNODE_IF(node)->nd_else) {
25766 vn = value_expr_check(p, RNODE_IF(node)->nd_body);
25767 if (!vn)
return NULL;
25768 if (!void_node) void_node = vn;
25769 node = RNODE_IF(node)->nd_else;
25774 node = RNODE_AND(node)->nd_1st;
25780 mark_lvar_used(p, node);
25792 return void_node ? void_node : node;
25798 NODE *void_node = value_expr_check(p, node);
25800 yyerror1(&void_node->nd_loc,
"void value expression");
25810 const char *useless = 0;
25814 if (!node || !(node = nd_once_body(node)))
return;
25815 switch (nd_type(node)) {
25817 switch (RNODE_OPCALL(node)->nd_mid) {
25836 useless = rb_id2name(RNODE_OPCALL(node)->nd_mid);
25847 case NODE_BACK_REF:
25848 useless =
"a variable";
25851 useless =
"a constant";
25856 case NODE_ENCODING:
25859 case NODE_RATIONAL:
25860 case NODE_IMAGINARY:
25865 useless =
"a literal";
25890 useless =
"defined?";
25895 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
25903 NODE *
const n = node;
25905 if (!node)
return n;
25906 if (!nd_type_p(node, NODE_BLOCK))
return n;
25908 while (RNODE_BLOCK(node)->nd_next) {
25909 void_expr(p, RNODE_BLOCK(node)->nd_head);
25910 node = RNODE_BLOCK(node)->nd_next;
25912 return RNODE_BLOCK(node)->nd_head;
25916remove_begin(
NODE *node)
25918 NODE **n = &node, *n1 = node;
25919 while (n1 && nd_type_p(n1, NODE_BEGIN) && RNODE_BEGIN(n1)->nd_body) {
25920 *n = n1 = RNODE_BEGIN(n1)->nd_body;
25928 NODE *node = *body;
25931 *body = NEW_NIL(&NULL_LOC);
25934#define subnodes(type, n1, n2) \
25935 ((!type(node)->n1) ? (type(node)->n2 ? (body = &type(node)->n2, 1) : 0) : \
25936 (!type(node)->n2) ? (body = &type(node)->n1, 1) : \
25937 (reduce_nodes(p, &type(node)->n1), body = &type(node)->n2, 1))
25940 int newline = (int)nd_fl_newline(node);
25941 switch (nd_type(node)) {
25947 *body = node = RNODE_BEGIN(node)->nd_body;
25948 if (newline && node) nd_set_fl_newline(node);
25951 body = &RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head;
25955 if (subnodes(RNODE_IF, nd_body, nd_else))
break;
25958 body = &RNODE_CASE(node)->nd_body;
25961 if (!subnodes(RNODE_WHEN, nd_body, nd_next))
goto end;
25964 body = &RNODE_ENSURE(node)->nd_head;
25968 if (RNODE_RESCUE(node)->nd_else) {
25969 body = &RNODE_RESCUE(node)->nd_resq;
25972 if (!subnodes(RNODE_RESCUE, nd_head, nd_resq))
goto end;
25978 if (newline && node) nd_set_fl_newline(node);
25985is_static_content(
NODE *node)
25987 if (!node)
return 1;
25988 switch (nd_type(node)) {
25990 if (!(node = RNODE_HASH(node)->nd_head))
break;
25993 if (!is_static_content(RNODE_LIST(node)->nd_head))
return 0;
25994 }
while ((node = RNODE_LIST(node)->nd_next) != 0);
25999 case NODE_ENCODING:
26002 case NODE_RATIONAL:
26003 case NODE_IMAGINARY:
26019 switch (nd_type(node)) {
26033 if (!get_nd_value(p, node))
return 1;
26034 if (is_static_content(get_nd_value(p, node))) {
26036 rb_warn0L(nd_line(get_nd_value(p, node)),
"found '= literal' in conditional, should be ==");
26047#define SWITCH_BY_COND_TYPE(t, w, arg) do { \
26049 case COND_IN_OP: break; \
26050 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
26051 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
26060 enum node_type
type;
26062 if (node == 0)
return 0;
26064 type = nd_type(node);
26065 value_expr(p, node);
26066 if (
type == NODE_INTEGER) {
26067 if (!e_option_supplied(p)) rb_warn0L(nd_line(node),
"integer literal in flip-flop");
26068 ID lineno = rb_intern(
"$.");
26069 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
26071 return cond0(p, node, COND_IN_FF, loc,
true);
26077 if (node == 0)
return 0;
26078 if (!(node = nd_once_body(node)))
return 0;
26079 assign_in_cond(p, node);
26081 switch (nd_type(node)) {
26083 RNODE_BEGIN(node)->nd_body = cond0(p, RNODE_BEGIN(node)->nd_body,
type, loc, top);
26090 SWITCH_BY_COND_TYPE(
type, warn,
"string ");
26094 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ");
26095 nd_set_type(node, NODE_MATCH);
26099 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning,
"regex ");
26101 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
26105 NODE *end = RNODE_BLOCK(node)->nd_end;
26106 NODE **expr = &RNODE_BLOCK(end)->nd_head;
26107 if (top) top = node == end;
26108 *expr = cond0(p, *expr,
type, loc, top);
26114 RNODE_AND(node)->nd_1st = cond0(p, RNODE_AND(node)->nd_1st, COND_IN_COND, loc,
true);
26115 RNODE_AND(node)->nd_2nd = cond0(p, RNODE_AND(node)->nd_2nd, COND_IN_COND, loc,
true);
26121 RNODE_DOT2(node)->nd_beg = range_op(p, RNODE_DOT2(node)->nd_beg, loc);
26122 RNODE_DOT2(node)->nd_end = range_op(p, RNODE_DOT2(node)->nd_end, loc);
26123 switch (nd_type(node)) {
26125 nd_set_type(node,NODE_FLIP2);
26130 nd_set_type(node, NODE_FLIP3);
26139 SWITCH_BY_COND_TYPE(
type, warning,
"symbol ");
26143 case NODE_ENCODING:
26146 case NODE_RATIONAL:
26147 case NODE_IMAGINARY:
26148 SWITCH_BY_COND_TYPE(
type, warning,
"");
26160 if (node == 0)
return 0;
26161 return cond0(p, node, COND_IN_COND, loc,
true);
26167 if (node == 0)
return 0;
26168 return cond0(p, node, COND_IN_OP, loc,
true);
26175 return NEW_NIL(&loc);
26181 if (!cc)
return right;
26182 cc = cond0(p, cc, COND_IN_COND, loc,
true);
26183 return newline_node(NEW_IF(cc, left, right, loc, if_keyword_loc, then_keyword_loc, end_keyword_loc));
26189 if (!cc)
return right;
26190 cc = cond0(p, cc, COND_IN_COND, loc,
true);
26191 return newline_node(NEW_UNLESS(cc, left, right, loc, keyword_loc, then_keyword_loc, end_keyword_loc));
26194#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))
26200 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
26202 value_expr(p, left);
26203 if (left && nd_type_p(left,
type)) {
26204 NODE *node = left, *second;
26205 while ((second = RNODE_AND(node)->nd_2nd) != 0 && nd_type_p(second,
type)) {
26208 RNODE_AND(node)->nd_2nd = NEW_AND_OR(
type, second, right, loc, op_loc);
26209 nd_set_line(RNODE_AND(node)->nd_2nd, op_loc->beg_pos.lineno);
26210 left->nd_loc.end_pos = loc->end_pos;
26213 op = NEW_AND_OR(
type, left, right, loc, op_loc);
26214 nd_set_line(op, op_loc->beg_pos.lineno);
26223 if (nd_type_p(node, NODE_BLOCK_PASS)) {
26224 compile_error(p,
"block argument should not be given");
26232 no_blockarg(p, node);
26233 if (nd_type_p(node, NODE_LIST) && !RNODE_LIST(node)->nd_next) {
26234 node = RNODE_LIST(node)->nd_head;
26243 switch (nd_type(node)) {
26245 RNODE_INTEGER(node)->minus = TRUE;
26248 RNODE_FLOAT(node)->minus = TRUE;
26250 case NODE_RATIONAL:
26251 RNODE_RATIONAL(node)->minus = TRUE;
26253 case NODE_IMAGINARY:
26254 RNODE_IMAGINARY(node)->minus = TRUE;
26257 node->nd_loc = *loc;
26265 if (!node1)
return (
NODE *)node2;
26266 node2->nd_head = node1;
26267 nd_set_first_lineno(node2, nd_first_lineno(node1));
26268 nd_set_first_column(node2, nd_first_column(node1));
26269 return (
NODE *)node2;
26277 if (args->pre_args_num)
return false;
26278 if (args->post_args_num)
return false;
26279 if (args->rest_arg)
return false;
26280 if (args->opt_args)
return false;
26281 if (args->block_arg)
return false;
26282 if (args->kw_args)
return false;
26283 if (args->kw_rest_arg)
return false;
26292 if (args->forwarding) {
26294 yyerror1(&RNODE(tail)->nd_loc,
"... after rest argument");
26297 rest_arg = idFWD_REST;
26300 args->pre_args_num = pre_args ? pre_args->nd_plen : 0;
26301 args->pre_init = pre_args ? pre_args->nd_next : 0;
26303 args->post_args_num = post_args ? post_args->nd_plen : 0;
26304 args->post_init = post_args ? post_args->nd_next : 0;
26305 args->first_post_arg = post_args ? post_args->nd_pid : 0;
26307 args->rest_arg = rest_arg;
26309 args->opt_args = opt_args;
26311 nd_set_loc(RNODE(tail), loc);
26321 if (p->error_p)
return node;
26323 if (block == idNil) {
26325 args->no_blockarg = TRUE;
26327 args->block_arg = block;
26328 args->kw_args = kw_args;
26337 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
26338 struct vtable *vtargs = p->lvtbl->args;
26341 if (block) block = vtargs->tbl[vtargs->pos-1];
26342 vtable_pop(vtargs, !!block + !!kw_rest_arg);
26343 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
26345 if (!NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body)))
26347 --required_kw_vars;
26348 kwn = kwn->nd_next;
26351 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
26352 ID vid = get_nd_vid(p, kwn->nd_body);
26353 if (NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body))) {
26354 *required_kw_vars++ = vid;
26361 arg_var(p, kw_bits);
26362 if (kw_rest_arg) arg_var(p, kw_rest_arg);
26363 if (block) arg_var(p, block);
26365 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
26367 else if (kw_rest_arg == idNil) {
26368 args->no_kwarg = 1;
26370 else if (kw_rest_arg) {
26371 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
26380 if (max_numparam > NO_PARAM || it_id) {
26382 YYLTYPE loc = RUBY_INIT_YYLLOC();
26383 args = new_empty_args_tail(p, 0);
26384 nd_set_loc(RNODE(args), &loc);
26386 args->nd_ainfo.pre_args_num = it_id ? 1 : max_numparam;
26394 RNODE_ARYPTN(aryptn)->nd_pconst = constant;
26397 NODE *pre_args = NEW_LIST(pre_arg, loc);
26398 if (RNODE_ARYPTN(aryptn)->pre_args) {
26399 RNODE_ARYPTN(aryptn)->pre_args = list_concat(pre_args, RNODE_ARYPTN(aryptn)->pre_args);
26402 RNODE_ARYPTN(aryptn)->pre_args = pre_args;
26412 rest_arg = rest_arg ? rest_arg : NODE_SPECIAL_NO_NAME_REST;
26417 NODE *node = NEW_ARYPTN(pre_args, rest_arg, post_args, loc);
26425 RNODE_FNDPTN(fndptn)->nd_pconst = constant;
26433 pre_rest_arg = pre_rest_arg ? pre_rest_arg : NODE_SPECIAL_NO_NAME_REST;
26434 post_rest_arg = post_rest_arg ? post_rest_arg : NODE_SPECIAL_NO_NAME_REST;
26435 NODE *node = NEW_FNDPTN(pre_rest_arg, args, post_rest_arg, loc);
26443 RNODE_HSHPTN(hshptn)->nd_pconst = constant;
26450 NODE *node, *kw_rest_arg_node;
26452 if (kw_rest_arg == idNil) {
26453 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
26455 else if (kw_rest_arg) {
26456 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
26459 kw_rest_arg_node = NULL;
26462 node = NEW_HSHPTN(0, kw_args, kw_rest_arg_node, loc);
26471 return NEW_SYM(STR_NEW0(), loc);
26474 switch (nd_type(node)) {
26476 nd_set_type(node, NODE_DSYM);
26477 nd_set_loc(node, loc);
26480 node = str_to_sym_node(p, node, loc);
26483 node = NEW_DSYM(0, 1, NEW_LIST(node, loc), loc);
26490nd_type_st_key_enable_p(
NODE *node)
26492 switch (nd_type(node)) {
26495 case NODE_RATIONAL:
26496 case NODE_IMAGINARY:
26502 case NODE_ENCODING:
26512 switch (nd_type(node)) {
26514 return rb_node_str_string_val(node);
26516 return rb_node_integer_literal_val(node);
26518 return rb_node_float_literal_val(node);
26519 case NODE_RATIONAL:
26520 return rb_node_rational_literal_val(node);
26521 case NODE_IMAGINARY:
26522 return rb_node_imaginary_literal_val(node);
26524 return rb_node_sym_string_val(node);
26526 return rb_node_regx_string_val(node);
26528 return rb_node_line_lineno_val(node);
26529 case NODE_ENCODING:
26530 return rb_node_encoding_val(node);
26532 return rb_node_file_path_val(node);
26534 rb_bug(
"unexpected node: %s", ruby_node_name(nd_type(node)));
26543 p->warn_duplicate_keys_table = st_init_table_with_size(&literal_type, RNODE_LIST(hash)->as.nd_alen / 2);
26544 while (hash && RNODE_LIST(hash)->nd_next) {
26545 NODE *head = RNODE_LIST(hash)->nd_head;
26546 NODE *value = RNODE_LIST(hash)->nd_next;
26547 NODE *next = RNODE_LIST(value)->nd_next;
26556 if (nd_type_st_key_enable_p(head)) {
26557 key = (st_data_t)head;
26559 if (st_delete(p->warn_duplicate_keys_table, &key, &data)) {
26560 rb_warn2L(nd_line((
NODE *)data),
26561 "key %+"PRIsWARN
" is duplicated and overwritten on line %d",
26562 nd_value(p, head), WARN_I(nd_line(head)));
26564 st_insert(p->warn_duplicate_keys_table, (st_data_t)key, (st_data_t)hash);
26568 st_free_table(p->warn_duplicate_keys_table);
26569 p->warn_duplicate_keys_table = NULL;
26575 if (hash) warn_duplicate_keys(p, hash);
26576 return NEW_HASH(hash, loc);
26582 if (is_private_local_id(p,
id)) {
26585 if (st_is_member(p->pvtbl,
id)) {
26586 yyerror1(loc,
"duplicated variable name");
26588 else if (p->ctxt.in_alt_pattern &&
id) {
26589 yyerror1(loc,
"variable capture in alternative pattern");
26592 p->ctxt.capture_in_pattern = 1;
26593 st_insert(p->pvtbl, (st_data_t)
id, 0);
26601 p->pktbl = st_init_numtable();
26603 else if (st_is_member(p->pktbl, key)) {
26604 yyerror1(loc,
"duplicated key name");
26607 st_insert(p->pktbl, (st_data_t)key, 0);
26613 return NEW_HASH(hash, loc);
26622 ID vid = get_nd_vid(p, lhs);
26623 YYLTYPE lhs_loc = lhs->nd_loc;
26625 set_nd_value(p, lhs, rhs);
26626 nd_set_loc(lhs, loc);
26627 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
26629 else if (op == tANDOP) {
26630 set_nd_value(p, lhs, rhs);
26631 nd_set_loc(lhs, loc);
26632 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
26636 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
26637 set_nd_value(p, asgn, rhs);
26638 nd_set_loc(asgn, loc);
26642 asgn = NEW_ERROR(loc);
26654 aryset_check(p, args);
26655 args = make_list(args, args_loc);
26656 asgn = NEW_OP_ASGN1(ary, op, args, rhs, loc, call_operator_loc, opening_loc, closing_loc, binary_operator_loc);
26668 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc, call_operator_loc, message_loc, binary_operator_loc);
26679 asgn = NEW_OP_CDECL(lhs, op, rhs, ctxt.shareable_constant_value, loc);
26682 asgn = NEW_ERROR(loc);
26691 if (p->ctxt.in_def) {
26693 yyerror1(loc,
"dynamic constant assignment");
26695 set_value(assign_error(p,
"dynamic constant assignment", p->s_lvalue));
26698 return NEW_CDECL(0, 0, (path), p->ctxt.shareable_constant_value, loc);
26705 a = dispatch2(assign_error, ERR_MESG(), a);
26714 NODE *result = head;
26716 NODE *tmp = rescue_else ? rescue_else : rescue;
26717 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
26719 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
26720 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
26723 result = NEW_ENSURE(result, ensure, loc);
26725 fixpos(result, head);
26734 if (!local->used)
return;
26735 cnt = local->used->pos;
26736 if (cnt != local->vars->pos) {
26737 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
26740 ID *v = local->vars->tbl;
26741 ID *u = local->used->tbl;
26742 for (
int i = 0; i < cnt; ++i) {
26743 if (!v[i] || (u[i] & LVAR_USED))
continue;
26744 if (is_private_local_id(p, v[i]))
continue;
26745 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
26754 int inherits_dvars = toplevel_scope && compile_for_eval;
26758 local->prev = p->lvtbl;
26759 local->args = vtable_alloc(0);
26760 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
26762 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
26763 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
26765 local->numparam.outer = 0;
26766 local->numparam.inner = 0;
26767 local->numparam.current = 0;
26769 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
26771# if WARN_PAST_SCOPE
26782 while (!DVARS_TERMINAL_P(table)) {
26783 struct vtable *cur_table = table;
26784 table = cur_table->prev;
26785 vtable_free(cur_table);
26792 vtable_chain_free(p, local->used);
26794# if WARN_PAST_SCOPE
26795 vtable_chain_free(p, local->past);
26798 vtable_chain_free(p, local->args);
26799 vtable_chain_free(p, local->vars);
26801 ruby_xfree_sized(local,
sizeof(
struct local_vars));
26808 if (p->lvtbl->used) {
26809 warn_unused_var(p, p->lvtbl);
26812 local_free(p, p->lvtbl);
26822 int cnt_args = vtable_size(p->lvtbl->args);
26823 int cnt_vars = vtable_size(p->lvtbl->vars);
26824 int cnt = cnt_args + cnt_vars;
26828 if (cnt <= 0)
return 0;
26829 tbl = rb_ast_new_local_table(p->ast, cnt);
26830 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
26832 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
26833 ID id = p->lvtbl->vars->tbl[i];
26834 if (!vtable_included(p->lvtbl->args,
id)) {
26835 tbl->ids[j++] = id;
26839 tbl = rb_ast_resize_latest_local_table(p->ast, j);
26848 if (!NUMPARAM_ID_P(
id))
return;
26849 compile_error(p,
"_%d is reserved for numbered parameter",
26850 NUMPARAM_ID_TO_IDX(
id));
26856 numparam_name(p,
id);
26857 vtable_add(p->lvtbl->args,
id);
26863 numparam_name(p,
id);
26864 vtable_add(p->lvtbl->vars,
id);
26865 if (p->lvtbl->used) {
26866 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
26874 return rb_local_defined(
id, iseq);
26881 struct vtable *vars, *args, *used;
26883 vars = p->lvtbl->vars;
26884 args = p->lvtbl->args;
26885 used = p->lvtbl->used;
26887 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26890 if (used) used = used->prev;
26893 if (vars && vars->prev == DVARS_INHERIT) {
26894 return rb_parser_local_defined(p,
id, p->parent_iseq);
26896 else if (vtable_included(args,
id)) {
26900 int i = vtable_included(vars,
id);
26901 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
26909 return local_id_ref(p,
id, NULL);
26915 if (local_id(p, idFWD_ALL))
return TRUE;
26916 compile_error(p,
"unexpected ...");
26923 arg_var(p, idFWD_REST);
26924 arg_var(p, idFWD_KWREST);
26925 arg_var(p, idFWD_BLOCK);
26926 arg_var(p, idFWD_ALL);
26932 bool conflict =
false;
26934 struct vtable *vars, *args;
26936 vars = p->lvtbl->vars;
26937 args = p->lvtbl->args;
26939 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26940 conflict |= (vtable_included(args, arg) && !(all && vtable_included(args, all)));
26945 bool found =
false;
26946 if (vars && vars->prev == DVARS_INHERIT && !found) {
26947 found = (rb_parser_local_defined(p, arg, p->parent_iseq) &&
26948 !(all && rb_parser_local_defined(p, all, p->parent_iseq)));
26951 found = (vtable_included(args, arg) &&
26952 !(all && vtable_included(args, all)));
26956 compile_error(p,
"no anonymous %s parameter", var);
26958 else if (conflict) {
26959 compile_error(p,
"anonymous %s parameter is also used within block", var);
26966 NODE *rest = NEW_LVAR(idFWD_REST, loc);
26967 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
26969 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc, &NULL_LOC);
26970 block->forwarding = TRUE;
26971 args = arg_append(p, args, new_hash(p, kwrest, loc), argsloc);
26972 return arg_blk_pass(args, block);
26979 NODE *inner = local->numparam.inner;
26980 if (!local->numparam.outer) {
26981 local->numparam.outer = local->numparam.current;
26983 local->numparam.inner = 0;
26984 local->numparam.current = 0;
26995 local->numparam.inner = prev_inner;
26997 else if (local->numparam.current) {
26999 local->numparam.inner = local->numparam.current;
27001 if (p->max_numparam > NO_PARAM) {
27003 local->numparam.current = local->numparam.outer;
27004 local->numparam.outer = 0;
27008 local->numparam.current = 0;
27013static const struct vtable *
27016 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
27017 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
27018 if (p->lvtbl->used) {
27019 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
27021 return p->lvtbl->args;
27027 struct vtable *tmp = *vtblp;
27028 *vtblp = tmp->prev;
27029# if WARN_PAST_SCOPE
27030 if (p->past_scope_enabled) {
27031 tmp->prev = p->lvtbl->past;
27032 p->lvtbl->past = tmp;
27044 if ((tmp = p->lvtbl->used) != 0) {
27045 warn_unused_var(p, p->lvtbl);
27046 p->lvtbl->used = p->lvtbl->used->prev;
27049 dyna_pop_vtable(p, &p->lvtbl->args);
27050 dyna_pop_vtable(p, &p->lvtbl->vars);
27056 while (p->lvtbl->args != lvargs) {
27058 if (!p->lvtbl->args) {
27060 ruby_xfree_sized(p->lvtbl,
sizeof(*p->lvtbl));
27070 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
27077 struct vtable *vars, *args, *used;
27080 args = p->lvtbl->args;
27081 vars = p->lvtbl->vars;
27082 used = p->lvtbl->used;
27084 while (!DVARS_TERMINAL_P(vars)) {
27085 if (vtable_included(args,
id)) {
27088 if ((i = vtable_included(vars,
id)) != 0) {
27089 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
27094 if (!vidrefp) used = 0;
27095 if (used) used = used->prev;
27098 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
27099 return rb_dvar_defined(
id, p->parent_iseq);
27109 return dvar_defined_ref(p,
id, NULL);
27115 return (vtable_included(p->lvtbl->args,
id) ||
27116 vtable_included(p->lvtbl->vars,
id));
27123 "regexp encoding option '%c' differs from source encoding '%s'",
27124 c, rb_enc_name(rb_parser_str_get_encoding(str)));
27131 int idx = rb_enc_find_index(name);
27133 rb_bug(
"unknown encoding name: %s", name);
27136 return rb_enc_from_index(idx);
27145 case ENC_ASCII8BIT:
27146 enc = rb_ascii8bit_encoding();
27149 enc = find_enc(p,
"EUC-JP");
27151 case ENC_Windows_31J:
27152 enc = find_enc(p,
"Windows-31J");
27155 enc = rb_utf8_encoding();
27168 int c = RE_OPTION_ENCODING_IDX(options);
27174 char_to_option_kcode(c, &opt, &idx);
27175 enc = kcode_to_enc(p, idx);
27176 if (enc != rb_parser_str_get_encoding(str) &&
27177 !rb_parser_is_ascii_string(p, str)) {
27180 rb_parser_string_set_encoding(str, enc);
27182 else if (RE_OPTION_ENCODING_NONE(options)) {
27183 if (!PARSER_ENCODING_IS_ASCII8BIT(p, str) &&
27184 !rb_parser_is_ascii_string(p, str)) {
27188 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
27190 else if (rb_is_usascii_enc(p->enc)) {
27191 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
27203 int c = rb_reg_fragment_setenc(p, str, options);
27204 if (c) reg_fragment_enc_error(p, str, c);
27207#ifndef UNIVERSAL_PARSER
27213 rb_parser_assignable_func assignable;
27217reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
27218 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
27223 long len = name_end - name;
27224 const char *s = (
const char *)name;
27226 return rb_reg_named_capture_assign_iter_impl(p, s,
len, enc, &arg->succ_block, arg->loc, arg->assignable);
27230reg_named_capture_assign(
struct parser_params* p,
VALUE regexp,
const YYLTYPE *loc, rb_parser_assignable_func assignable)
27235 arg.enc = rb_enc_get(regexp);
27236 arg.succ_block = 0;
27238 arg.assignable = assignable;
27239 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
27241 if (!arg.succ_block)
return 0;
27242 return RNODE_BLOCK(arg.succ_block)->nd_next;
27250 return assignable(p,
id, val, loc);
27254rb_reg_named_capture_assign_iter_impl(
struct parser_params *p,
const char *s,
long len,
27260 if (!
len)
return ST_CONTINUE;
27261 if (!VALID_SYMNAME_P(s,
len, enc, ID_LOCAL))
27262 return ST_CONTINUE;
27264 var = intern_cstr(s,
len, enc);
27265 if (
len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)
len)) {
27266 if (!lvar_defined(p, var))
return ST_CONTINUE;
27268 node = node_assign(p, assignable(p, var, 0, loc), NEW_SYM(rb_id2str(var), loc), NO_LEX_CTXT, loc);
27269 succ = *succ_block;
27270 if (!succ) succ = NEW_ERROR(loc);
27271 succ = block_append(p, succ, node);
27272 *succ_block = succ;
27273 return ST_CONTINUE;
27281 reg_fragment_setenc(p, str, options);
27282 str2 = rb_str_new_parser_string(str);
27283 return rb_parser_reg_compile(p, str2, options);
27290 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
27300 err = rb_errinfo();
27301 re = parser_reg_compile(p, str, options);
27303 VALUE m = rb_attr_get(rb_errinfo(), idMesg);
27304 rb_set_errinfo(err);
27305 compile_error(p,
"%"PRIsVALUE, m);
27313rb_ruby_parser_set_options(
struct parser_params *p,
int print,
int loop,
int chomp,
int split)
27315 p->do_print = print;
27317 p->do_chomp = chomp;
27318 p->do_split = split;
27324 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
27325 const YYLTYPE *
const LOC = &default_location;
27328 NODE *print = (
NODE *)NEW_FCALL(rb_intern(
"print"),
27329 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
27331 node = block_append(p, node, print);
27335 NODE *irs = NEW_LIST(NEW_GVAR(rb_intern(
"$/"), LOC), LOC);
27338 ID ifs = rb_intern(
"$;");
27339 ID fields = rb_intern(
"$F");
27340 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
27341 NODE *split = NEW_GASGN(fields,
27342 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
27343 rb_intern(
"split"), args, LOC),
27345 node = block_append(p, split, node);
27349 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
27350 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
27353 node = NEW_WHILE((
NODE *)NEW_FCALL(idGets, irs, LOC), node, 1, LOC, &NULL_LOC, &NULL_LOC);
27370 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
27378 p->command_start = TRUE;
27379 p->ruby_sourcefile_string =
Qnil;
27380 p->lex.lpar_beg = -1;
27381 string_buffer_init(p);
27383 p->delayed.token = NULL;
27384 p->frozen_string_literal = -1;
27386 p->error_buffer =
Qfalse;
27387 p->end_expect_token_locations = NULL;
27392 p->parsing_thread =
Qnil;
27394 p->s_lvalue =
Qnil;
27397 p->debug_buffer =
Qnil;
27398 p->debug_output = rb_ractor_stdout();
27399 p->enc = rb_utf8_encoding();
27404#define rb_ruby_parser_mark ripper_parser_mark
27405#define rb_ruby_parser_free ripper_parser_free
27406#define rb_ruby_parser_memsize ripper_parser_memsize
27410rb_ruby_parser_mark(
void *ptr)
27414 rb_gc_mark(p->ruby_sourcefile_string);
27416 rb_gc_mark(p->error_buffer);
27418 rb_gc_mark(p->value);
27419 rb_gc_mark(p->result);
27420 rb_gc_mark(p->parsing_thread);
27421 rb_gc_mark(p->s_value);
27422 rb_gc_mark(p->s_lvalue);
27423 rb_gc_mark(p->s_value_stack);
27425 rb_gc_mark(p->debug_buffer);
27426 rb_gc_mark(p->debug_output);
27430rb_ruby_parser_free(
void *ptr)
27436 rb_ast_free(p->ast);
27439 if (p->warn_duplicate_keys_table) {
27440 st_free_table(p->warn_duplicate_keys_table);
27445 rb_parser_ary_free(p, p->tokens);
27450 ruby_xfree_sized(p->tokenbuf, p->toksiz);
27453 for (local = p->lvtbl; local; local = prev) {
27454 prev = local->prev;
27455 local_free(p, local);
27460 while ((ptinfo = p->token_info) != 0) {
27461 p->token_info = ptinfo->next;
27465 string_buffer_free(p);
27468 st_free_table(p->pvtbl);
27471 if (CASE_LABELS_ENABLED_P(p->case_labels)) {
27472 st_free_table(p->case_labels);
27475 xfree(p->lex.strterm);
27476 p->lex.strterm = 0;
27482rb_ruby_parser_memsize(
const void *ptr)
27486 size_t size =
sizeof(*p);
27489 for (local = p->lvtbl; local; local = local->prev) {
27490 size +=
sizeof(*local);
27491 if (local->vars) size += local->vars->capa *
sizeof(
ID);
27497#undef rb_reserved_word
27500rb_reserved_word(
const char *str,
unsigned int len)
27502 return reserved_word(str,
len);
27505#ifdef UNIVERSAL_PARSER
27507rb_ruby_parser_allocate(
const rb_parser_config_t *config)
27511 p->config = config;
27516rb_ruby_parser_new(
const rb_parser_config_t *config)
27519 rb_parser_t *p = rb_ruby_parser_allocate(config);
27520 parser_initialize(p);
27525rb_ruby_parser_allocate(
void)
27533rb_ruby_parser_new(
void)
27537 parser_initialize(p);
27546 p->parent_iseq = base;
27553 p->debug_lines = rb_parser_ary_new_capa_for_script_line(p, 10);
27559 p->error_tolerant = 1;
27565 p->keep_tokens = 1;
27566 p->tokens = rb_parser_ary_new_capa_for_ast_token(p, 10);
27578 return p->ruby__end__seen;
27582rb_ruby_parser_set_yydebug(
rb_parser_t *p,
int flag)
27611 return p->debug_output;
27617 p->debug_output = output;
27623 return p->parsing_thread;
27629 p->parsing_thread = parsing_thread;
27633rb_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)
27635 p->lex.gets = gets;
27636 p->lex.input = input;
27638 p->ruby_sourcefile_string = sourcefile_string;
27639 p->ruby_sourcefile = sourcefile;
27640 p->ruby_sourceline = sourceline;
27656rb_ruby_parser_ruby_sourcefile_string(
rb_parser_t *p)
27658 return p->ruby_sourcefile_string;
27664 return p->ruby_sourceline;
27670 return p->lex.state;
27677 p->ast = rb_ast_new();
27678 ripper_yyparse((
void*)p);
27679 rb_ast_free(p->ast);
27682 p->eval_tree_begin = 0;
27688 return dedent_string(p,
string, width);
27694 return p->lex.input != 0;
27700 parser_initialize(p);
27706 return p->lex.ptok - p->lex.pbeg;
27712 return p->lex.pcur - p->lex.ptok;
27718 return p->lex.lastline;
27722rb_ruby_ripper_lex_state_name(
struct parser_params *p,
int state)
27724 return rb_parser_lex_state_name(p, (
enum lex_state_e)state);
27727#ifdef UNIVERSAL_PARSER
27729rb_ripper_parser_params_allocate(
const rb_parser_config_t *config)
27732 p->config = config;
27738rb_ruby_ripper_parser_allocate(
void)
27746rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
27749 VALUE mesg = p->debug_buffer;
27753 rb_str_vcatf(mesg, fmt, ap);
27755 if (char_at_end(p, mesg, 0) ==
'\n') {
27756 rb_io_write(p->debug_output, mesg);
27757 p->debug_buffer =
Qnil;
27765 int lineno, column;
27768 lineno = loc->end_pos.lineno;
27769 column = loc->end_pos.column;
27772 lineno = p->ruby_sourceline;
27776 rb_io_flush(p->debug_output);
27780 rb_syntax_error_append(p->error_buffer,
27781 p->ruby_sourcefile_string,
27788count_char(
const char *str,
int c)
27791 while (str[n] == c) ++n;
27802rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
27804 if (*yystr ==
'"') {
27805 size_t yyn = 0, bquote = 0;
27806 const char *yyp = yystr;
27812 bquote = count_char(yyp+1,
'\'') + 1;
27813 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
27819 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
27820 if (yyres) memcpy(yyres + yyn, yyp, bquote);
27826 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
27827 if (yyres) memcpy(yyres + yyn, yyp, 3);
27832 goto do_not_strip_quotes;
27836 goto do_not_strip_quotes;
27839 if (*++yyp !=
'\\')
27840 goto do_not_strip_quotes;
27855 do_not_strip_quotes: ;
27858 if (!yyres)
return strlen(yystr);
27860 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
27865#define validate(x) (void)(x)
27894 return rb_funcall(p->value, mid, 3, a, b, c);
27904 return rb_funcall(p->value, mid, 4, a, b, c, d);
27915 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
27928 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.