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*);
1491static NODE *new_array_pattern(struct parser_params *p, NODE *constant, NODE *pre_arg, NODE *aryptn, const YYLTYPE *loc);
1492static NODE *new_array_pattern_tail(struct parser_params *p, NODE *pre_args, int has_rest, NODE *rest_arg, NODE *post_args, const YYLTYPE *loc);
1493static NODE *new_find_pattern(struct parser_params *p, NODE *constant, NODE *fndptn, const YYLTYPE *loc);
1494static NODE *new_find_pattern_tail(struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg, const YYLTYPE *loc);
1495static NODE *new_hash_pattern(struct parser_params *p, NODE *constant, NODE *hshptn, const YYLTYPE *loc);
1496static NODE *new_hash_pattern_tail(struct parser_params *p, NODE *kw_args, ID kw_rest_arg, const YYLTYPE *loc);
1498static rb_node_kw_arg_t *new_kw_arg(struct parser_params *p, NODE *k, const YYLTYPE *loc);
1499static rb_node_args_t *args_with_numbered(struct parser_params*,rb_node_args_t*,int,ID);
1501static NODE* negate_lit(struct parser_params*, NODE*);
1502static void no_blockarg(struct parser_params*,NODE*);
1503static NODE *ret_args(struct parser_params*,NODE*);
1504static NODE *arg_blk_pass(NODE*,rb_node_block_pass_t*);
1505static NODE *dsym_node(struct parser_params*,NODE*,const YYLTYPE*);
1507static NODE *gettable(struct parser_params*,ID,const YYLTYPE*);
1508static NODE *assignable(struct parser_params*,ID,NODE*,const YYLTYPE*);
1510static NODE *aryset(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1511static NODE *attrset(struct parser_params*,NODE*,ID,ID,const YYLTYPE*);
1513static VALUE rb_backref_error(struct parser_params*,NODE*);
1514static NODE *node_assign(struct parser_params*,NODE*,NODE*,struct lex_context,const YYLTYPE*);
1516static NODE *new_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1517static 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);
1518static 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);
1519static NODE *new_const_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1520static NODE *new_bodystmt(struct parser_params *p, NODE *head, NODE *rescue, NODE *rescue_else, NODE *ensure, const YYLTYPE *loc);
1522static NODE *const_decl(struct parser_params *p, NODE* path, const YYLTYPE *loc);
1524static rb_node_opt_arg_t *opt_arg_append(rb_node_opt_arg_t*, rb_node_opt_arg_t*);
1525static rb_node_kw_arg_t *kwd_append(rb_node_kw_arg_t*, rb_node_kw_arg_t*);
1527static NODE *new_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1528static NODE *new_unique_key_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1530static NODE *new_defined(struct parser_params *p, NODE *expr, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1532static NODE *new_regexp(struct parser_params *, NODE *, int, const YYLTYPE *, const YYLTYPE *, const YYLTYPE *, const YYLTYPE *);
1534#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
1536static NODE *new_xstring(struct parser_params *, NODE *, const YYLTYPE *loc);
1538static NODE *symbol_append(struct parser_params *p, NODE *symbols, NODE *symbol);
1540static NODE *match_op(struct parser_params*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
1542static rb_ast_id_table_t *local_tbl(struct parser_params*);
1544static VALUE reg_compile(struct parser_params*, rb_parser_string_t*, int);
1545static void reg_fragment_setenc(struct parser_params*, rb_parser_string_t*, int);
1547static int literal_concat0(struct parser_params *p, rb_parser_string_t *head, rb_parser_string_t *tail);
1548static NODE *heredoc_dedent(struct parser_params*,NODE*);
1550static void check_literal_when(struct parser_params *p, NODE *args, const YYLTYPE *loc);
1552static 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);
1555#define get_value(idx) (rb_ary_entry(p->s_value_stack, idx))
1556#define set_value(val) (p->s_lvalue = val)
1557static VALUE assign_error(struct parser_params *p, const char *mesg, VALUE a);
1558static int id_is_var(struct parser_params *p, ID id);
1561RUBY_SYMBOL_EXPORT_BEGIN
1562VALUE rb_parser_reg_compile(struct parser_params* p, VALUE str, int options);
1563int rb_reg_fragment_setenc(struct parser_params*, rb_parser_string_t *, int);
1564enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_state_e, enum lex_state_e, int);
1565VALUE rb_parser_lex_state_name(struct parser_params *p, enum lex_state_e state);
1566void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int);
1567PRINTF_ARGS(void rb_parser_fatal(struct parser_params *p, const char *fmt, ...), 2, 3);
1568YYLTYPE *rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc);
1569YYLTYPE *rb_parser_set_location_of_delayed_token(struct parser_params *p, YYLTYPE *yylloc);
1570YYLTYPE *rb_parser_set_location_of_heredoc_end(struct parser_params *p, YYLTYPE *yylloc);
1571YYLTYPE *rb_parser_set_location_of_dummy_end(struct parser_params *p, YYLTYPE *yylloc);
1572YYLTYPE *rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc);
1573YYLTYPE *rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc);
1574void ruby_show_error_line(struct parser_params *p, VALUE errbuf, const YYLTYPE *yylloc, int lineno, rb_parser_string_t *str);
1575RUBY_SYMBOL_EXPORT_END
1577static void flush_string_content(struct parser_params *p, rb_encoding *enc, size_t back);
1578static void error_duplicate_pattern_variable(struct parser_params *p, ID id, const YYLTYPE *loc);
1579static void error_duplicate_pattern_key(struct parser_params *p, ID id, const YYLTYPE *loc);
1580static VALUE formal_argument_error(struct parser_params*, ID);
1581static ID shadowing_lvar(struct parser_params*,ID);
1582static void new_bv(struct parser_params*,ID);
1584static void local_push(struct parser_params*,int);
1585static void local_pop(struct parser_params*);
1586static void local_var(struct parser_params*, ID);
1587static void arg_var(struct parser_params*, ID);
1588static int local_id(struct parser_params *p, ID id);
1589static int local_id_ref(struct parser_params*, ID, ID **);
1590#define internal_id rb_parser_internal_id
1591ID internal_id(struct parser_params*);
1592static NODE *new_args_forward_call(struct parser_params*, NODE*, const YYLTYPE*, const YYLTYPE*);
1593static int check_forwarding_args(struct parser_params*);
1594static void add_forwarding_args(struct parser_params *p);
1595static void forwarding_arg_check(struct parser_params *p, ID arg, ID all, const char *var);
1597static const struct vtable *dyna_push(struct parser_params *);
1598static void dyna_pop(struct parser_params*, const struct vtable *);
1599static int dyna_in_block(struct parser_params*);
1600#define dyna_var(p, id) local_var(p, id)
1601static int dvar_defined(struct parser_params*, ID);
1602#define dvar_defined_ref rb_parser_dvar_defined_ref
1603int dvar_defined_ref(struct parser_params*, ID, ID**);
1604static int dvar_curr(struct parser_params*,ID);
1606static int lvar_defined(struct parser_params*, ID);
1608static NODE *numparam_push(struct parser_params *p);
1609static void numparam_pop(struct parser_params *p, NODE *prev_inner);
1611#define METHOD_NOT '!
'
1613#define idFWD_REST '*
'
1614#define idFWD_KWREST idPow /* Use simple "**", as tDSTAR is "**arg" */
1615#define idFWD_BLOCK '&
'
1616#define idFWD_ALL idDot3
1617#define arg_FWD_BLOCK idFWD_BLOCK
1619#define RE_ONIG_OPTION_IGNORECASE 1
1620#define RE_ONIG_OPTION_EXTEND (RE_ONIG_OPTION_IGNORECASE<<1)
1621#define RE_ONIG_OPTION_MULTILINE (RE_ONIG_OPTION_EXTEND<<1)
1622#define RE_OPTION_ONCE (1<<16)
1623#define RE_OPTION_ENCODING_SHIFT 8
1624#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
1625#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
1626#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
1627#define RE_OPTION_MASK 0xff
1628#define RE_OPTION_ARG_ENCODING_NONE 32
1630#define CHECK_LITERAL_WHEN (st_table *)1
1631#define CASE_LABELS_ENABLED_P(case_labels) (case_labels && case_labels != CHECK_LITERAL_WHEN)
1633#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
1634RUBY_FUNC_EXPORTED size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr);
1636#define TOKEN2ID(tok) ( \
1637 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
1638 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
1639 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
1640 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
1641 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
1642 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
1643 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
1645/****** Ripper *******/
1649#include "eventids1.h"
1650#include "eventids2.h"
1652extern const struct ripper_parser_ids ripper_parser_ids;
1654static VALUE ripper_dispatch0(struct parser_params*,ID);
1655static VALUE ripper_dispatch1(struct parser_params*,ID,VALUE);
1656static VALUE ripper_dispatch2(struct parser_params*,ID,VALUE,VALUE);
1657static VALUE ripper_dispatch3(struct parser_params*,ID,VALUE,VALUE,VALUE);
1658static VALUE ripper_dispatch4(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE);
1659static VALUE ripper_dispatch5(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE);
1660static VALUE ripper_dispatch7(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE);
1661void ripper_error(struct parser_params *p);
1663#define dispatch0(n) ripper_dispatch0(p, RIPPER_ID(n))
1664#define dispatch1(n,a) ripper_dispatch1(p, RIPPER_ID(n), (a))
1665#define dispatch2(n,a,b) ripper_dispatch2(p, RIPPER_ID(n), (a), (b))
1666#define dispatch3(n,a,b,c) ripper_dispatch3(p, RIPPER_ID(n), (a), (b), (c))
1667#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, RIPPER_ID(n), (a), (b), (c), (d))
1668#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, RIPPER_ID(n), (a), (b), (c), (d), (e))
1669#define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, RIPPER_ID(n), (a), (b), (c), (d), (e), (f), (g))
1671#define yyparse ripper_yyparse
1674aryptn_pre_args(struct parser_params *p, VALUE pre_arg, VALUE pre_args)
1676 if (!NIL_P(pre_arg)) {
1677 if (!NIL_P(pre_args)) {
1678 rb_ary_unshift(pre_args, pre_arg);
1681 pre_args = rb_ary_new_from_args(1, pre_arg);
1687#define ID2VAL(id) STATIC_ID2SYM(id)
1688#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
1691#define KWD2EID(t, v) keyword_##t
1694new_scope_body(struct parser_params *p, rb_node_args_t *args, NODE *body, NODE *parent, const YYLTYPE *loc)
1696 body = remove_begin(body);
1697 reduce_nodes(p, &body);
1698 NODE *n = NEW_SCOPE(args, body, parent, loc);
1699 nd_set_line(n, loc->end_pos.lineno);
1700 set_line_body(body, loc->beg_pos.lineno);
1705rescued_expr(struct parser_params *p, NODE *arg, NODE *rescue,
1706 const YYLTYPE *arg_loc, const YYLTYPE *mod_loc, const YYLTYPE *res_loc)
1708 YYLTYPE loc = code_loc_gen(mod_loc, res_loc);
1709 rescue = NEW_RESBODY(0, 0, remove_begin(rescue), 0, &loc);
1710 loc.beg_pos = arg_loc->beg_pos;
1711 return NEW_RESCUE(arg, rescue, 0, &loc);
1714static NODE *add_block_exit(struct parser_params *p, NODE *node);
1715static rb_node_exits_t *init_block_exit(struct parser_params *p);
1716static rb_node_exits_t *allow_block_exit(struct parser_params *p);
1717static void restore_block_exit(struct parser_params *p, rb_node_exits_t *exits);
1718static void clear_block_exit(struct parser_params *p, bool error);
1721next_rescue_context(struct lex_context *next, const struct lex_context *outer, enum rescue_context def)
1723 next->in_rescue = outer->in_rescue == after_rescue ? after_rescue : def;
1727restore_defun(struct parser_params *p, rb_node_def_temp_t *temp)
1729 /* See: def_name action */
1730 struct lex_context ctxt = temp->save.ctxt;
1731 p->ctxt.in_def = ctxt.in_def;
1732 p->ctxt.shareable_constant_value = ctxt.shareable_constant_value;
1733 p->ctxt.in_rescue = ctxt.in_rescue;
1734 p->max_numparam = temp->save.max_numparam;
1735 numparam_pop(p, temp->save.numparam_save);
1736 clear_block_exit(p, true);
1740endless_method_name(struct parser_params *p, ID mid, const YYLTYPE *loc)
1742 if (is_attrset_id(mid)) {
1743 yyerror1(loc, "setter method cannot be defined in an endless method definition");
1745 token_info_drop(p, "def", loc->beg_pos);
1748#define debug_token_line(p, name, line) do { \
1750 const char *const pcur = p->lex.pcur; \
1751 const char *const ptok = p->lex.ptok; \
1752 rb_parser_printf(p, name ":%d (%d: %"PRIdPTRDIFF"|%"PRIdPTRDIFF"|%"PRIdPTRDIFF")\n", \
1753 line, p->ruby_sourceline, \
1754 ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur); \
1758#define begin_definition(k, loc_beg, loc_end) \
1760 if (!(p->ctxt.in_class = (k)[0] != 0)) { \
1761 /* singleton class */ \
1762 p->ctxt.cant_return = !p->ctxt.in_def; \
1763 p->ctxt.in_def = 0; \
1765 else if (p->ctxt.in_def) { \
1766 YYLTYPE loc = code_loc_gen(loc_beg, loc_end); \
1767 yyerror1(&loc, k " definition in method body"); \
1770 p->ctxt.cant_return = 1; \
1776# define ifndef_ripper(x) (x)
1777# define ifdef_ripper(r,x) (x)
1779# define ifndef_ripper(x)
1780# define ifdef_ripper(r,x) (r)
1783# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
1784# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
1785# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
1786# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
1787# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
1788# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
1789# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
1790# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
1791# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
1792# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
1793# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1794# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
1795# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
1796# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
1797# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1798# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
1799# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
1800# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
1801# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
1802# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1804extern const ID id_warn, id_warning, id_gets, id_assoc;
1805# define ERR_MESG() STR_NEW2(mesg) /* to bypass Ripper DSL */
1806# define WARN_S_L(s,l) STR_NEW(s,l)
1807# define WARN_S(s) STR_NEW2(s)
1808# define WARN_I(i) INT2NUM(i)
1809# define WARN_ID(i) rb_id2str(i)
1810# define PRIsWARN PRIsVALUE
1811# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
1812# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
1813# ifdef HAVE_VA_ARGS_MACRO
1814# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
1816# define WARN_CALL rb_funcall
1818# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
1819# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
1820# ifdef HAVE_VA_ARGS_MACRO
1821# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
1823# define WARNING_CALL rb_funcall
1825# define compile_error ripper_compile_error
1827# define WARN_S_L(s,l) s
1830# define WARN_ID(i) rb_id2name(i)
1831# define PRIsWARN PRIsVALUE
1832# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1833# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1834# define WARN_CALL rb_compile_warn
1835# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1836# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1837# define WARNING_CALL rb_compile_warning
1838PRINTF_ARGS(static void parser_compile_error(struct parser_params*, const rb_code_location_t *loc, const char *fmt, ...), 3, 4);
1839# define compile_error(p, ...) parser_compile_error(p, NULL, __VA_ARGS__)
1842#define RNODE_EXITS(node) ((rb_node_exits_t*)(node))
1845add_block_exit(struct parser_params *p, NODE *node)
1848 compile_error(p, "unexpected null node");
1851 switch (nd_type(node)) {
1852 case NODE_BREAK: case NODE_NEXT: case NODE_REDO: break;
1854 compile_error(p, "add_block_exit: unexpected node: %s", parser_node_name(nd_type(node)));
1857 if (!p->ctxt.in_defined) {
1858 rb_node_exits_t *exits = p->exits;
1860 RNODE_EXITS(exits->nd_stts)->nd_chain = node;
1861 exits->nd_stts = node;
1867static rb_node_exits_t *
1868init_block_exit(struct parser_params *p)
1870 rb_node_exits_t *old = p->exits;
1871 rb_node_exits_t *exits = NODE_NEW_INTERNAL(NODE_EXITS, rb_node_exits_t);
1872 exits->nd_chain = 0;
1873 exits->nd_stts = RNODE(exits);
1878static rb_node_exits_t *
1879allow_block_exit(struct parser_params *p)
1881 rb_node_exits_t *exits = p->exits;
1887restore_block_exit(struct parser_params *p, rb_node_exits_t *exits)
1893clear_block_exit(struct parser_params *p, bool error)
1895 rb_node_exits_t *exits = p->exits;
1898 for (NODE *e = RNODE(exits); (e = RNODE_EXITS(e)->nd_chain) != 0; ) {
1899 switch (nd_type(e)) {
1901 yyerror1(&e->nd_loc, "Invalid break");
1904 yyerror1(&e->nd_loc, "Invalid next");
1907 yyerror1(&e->nd_loc, "Invalid redo");
1910 yyerror1(&e->nd_loc, "unexpected node");
1911 goto end_checks; /* no nd_chain */
1916 exits->nd_stts = RNODE(exits);
1917 exits->nd_chain = 0;
1920#define WARN_EOL(tok) \
1921 (looking_at_eol_p(p) ? \
1922 (void)rb_warning0("'" tok "' at the end of line without an expression") : \
1924static int looking_at_eol_p(struct parser_params *p);
1927get_nd_value(struct parser_params *p, NODE *node)
1929 switch (nd_type(node)) {
1931 return RNODE_GASGN(node)->nd_value;
1933 return RNODE_IASGN(node)->nd_value;
1935 return RNODE_LASGN(node)->nd_value;
1937 return RNODE_DASGN(node)->nd_value;
1939 return RNODE_MASGN(node)->nd_value;
1941 return RNODE_CVASGN(node)->nd_value;
1943 return RNODE_CDECL(node)->nd_value;
1945 compile_error(p, "get_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1951set_nd_value(struct parser_params *p, NODE *node, NODE *rhs)
1953 switch (nd_type(node)) {
1955 RNODE_CDECL(node)->nd_value = rhs;
1958 RNODE_GASGN(node)->nd_value = rhs;
1961 RNODE_IASGN(node)->nd_value = rhs;
1964 RNODE_LASGN(node)->nd_value = rhs;
1967 RNODE_DASGN(node)->nd_value = rhs;
1970 RNODE_MASGN(node)->nd_value = rhs;
1973 RNODE_CVASGN(node)->nd_value = rhs;
1976 compile_error(p, "set_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1982get_nd_vid(struct parser_params *p, NODE *node)
1984 switch (nd_type(node)) {
1986 return RNODE_CDECL(node)->nd_vid;
1988 return RNODE_GASGN(node)->nd_vid;
1990 return RNODE_IASGN(node)->nd_vid;
1992 return RNODE_LASGN(node)->nd_vid;
1994 return RNODE_DASGN(node)->nd_vid;
1996 return RNODE_CVASGN(node)->nd_vid;
1998 compile_error(p, "get_nd_vid: unexpected node: %s", parser_node_name(nd_type(node)));
2004get_nd_args(struct parser_params *p, NODE *node)
2006 switch (nd_type(node)) {
2008 return RNODE_CALL(node)->nd_args;
2010 return RNODE_OPCALL(node)->nd_args;
2012 return RNODE_FCALL(node)->nd_args;
2014 return RNODE_QCALL(node)->nd_args;
2016 return RNODE_SUPER(node)->nd_args;
2025 compile_error(p, "get_nd_args: unexpected node: %s", parser_node_name(nd_type(node)));
2031djb2(const uint8_t *str, size_t len)
2033 st_index_t hash = 5381;
2035 for (size_t i = 0; i < len; i++) {
2036 hash = ((hash << 5) + hash) + str[i];
2043parser_memhash(const void *ptr, long len)
2045 return djb2(ptr, len);
2048#define PARSER_STRING_PTR(str) (str->ptr)
2049#define PARSER_STRING_LEN(str) (str->len)
2050#define PARSER_STRING_END(str) (&str->ptr[str->len])
2051#define STRING_SIZE(str) ((size_t)str->len + 1)
2052#define STRING_TERM_LEN(str) (1)
2053#define STRING_TERM_FILL(str) (str->ptr[str->len] = '\0
')
2054#define PARSER_STRING_RESIZE_CAPA_TERM(p,str,capacity,termlen) do {\
2055 SIZED_REALLOC_N(str->ptr, char, (size_t)total + termlen, STRING_SIZE(str)); \
2058#define STRING_SET_LEN(str, n) do { \
2061#define PARSER_STRING_GETMEM(str, ptrvar, lenvar) \
2062 ((ptrvar) = str->ptr, \
2063 (lenvar) = str->len)
2066parser_string_char_at_end(struct parser_params *p, rb_parser_string_t *str, int when_empty)
2068 return PARSER_STRING_LEN(str) > 0 ? (unsigned char)PARSER_STRING_END(str)[-1] : when_empty;
2071static rb_parser_string_t *
2072rb_parser_string_new(rb_parser_t *p, const char *ptr, long len)
2074 rb_parser_string_t *str;
2077 rb_bug("negative string size (or size too big): %ld", len);
2080 str = xcalloc(1, sizeof(rb_parser_string_t));
2081 str->ptr = xcalloc(len + 1, sizeof(char));
2084 memcpy(PARSER_STRING_PTR(str), ptr, len);
2086 STRING_SET_LEN(str, len);
2087 STRING_TERM_FILL(str);
2091static rb_parser_string_t *
2092rb_parser_encoding_string_new(rb_parser_t *p, const char *ptr, long len, rb_encoding *enc)
2094 rb_parser_string_t *str = rb_parser_string_new(p, ptr, len);
2095 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2102rb_str_to_parser_string(rb_parser_t *p, VALUE str)
2105 rb_parser_string_t *ret = rb_parser_encoding_string_new(p, RSTRING_PTR(str), RSTRING_LEN(str), rb_enc_get(str));
2111rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str)
2114 xfree(PARSER_STRING_PTR(str));
2120rb_parser_str_hash(rb_parser_string_t *str)
2122 return parser_memhash((const void *)PARSER_STRING_PTR(str), PARSER_STRING_LEN(str));
2126rb_char_p_hash(const char *c)
2128 return parser_memhash((const void *)c, strlen(c));
2132rb_parser_str_capacity(rb_parser_string_t *str, const int termlen)
2134 return PARSER_STRING_LEN(str);
2139rb_parser_string_end(rb_parser_string_t *str)
2141 return &str->ptr[str->len];
2146rb_parser_string_set_encoding(rb_parser_string_t *str, rb_encoding *enc)
2152rb_parser_str_get_encoding(rb_parser_string_t *str)
2159PARSER_ENCODING_IS_ASCII8BIT(struct parser_params *p, rb_parser_string_t *str)
2161 return rb_parser_str_get_encoding(str) == rb_ascii8bit_encoding();
2166PARSER_ENC_CODERANGE(rb_parser_string_t *str)
2168 return str->coderange;
2172PARSER_ENC_CODERANGE_SET(rb_parser_string_t *str, int coderange)
2174 str->coderange = coderange;
2178PARSER_ENCODING_CODERANGE_SET(rb_parser_string_t *str, rb_encoding *enc, enum rb_parser_string_coderange_type cr)
2180 rb_parser_string_set_encoding(str, enc);
2181 PARSER_ENC_CODERANGE_SET(str, cr);
2185PARSER_ENC_CODERANGE_CLEAR(rb_parser_string_t *str)
2187 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2191PARSER_ENC_CODERANGE_ASCIIONLY(rb_parser_string_t *str)
2193 return PARSER_ENC_CODERANGE(str) == RB_PARSER_ENC_CODERANGE_7BIT;
2197PARSER_ENC_CODERANGE_CLEAN_P(int cr)
2199 return cr == RB_PARSER_ENC_CODERANGE_7BIT || cr == RB_PARSER_ENC_CODERANGE_VALID;
2203rb_parser_search_nonascii(const char *p, const char *e)
2207 for (; s < e; s++) {
2208 if (*s & 0x80) return s;
2215rb_parser_coderange_scan(struct parser_params *p, const char *ptr, long len, rb_encoding *enc)
2217 const char *e = ptr + len;
2219 if (enc == rb_ascii8bit_encoding()) {
2220 /* enc is ASCII-8BIT. ASCII-8BIT string never be broken. */
2221 ptr = rb_parser_search_nonascii(ptr, e);
2222 return ptr ? RB_PARSER_ENC_CODERANGE_VALID : RB_PARSER_ENC_CODERANGE_7BIT;
2225 /* parser string encoding is always asciicompat */
2226 ptr = rb_parser_search_nonascii(ptr, e);
2227 if (!ptr) return RB_PARSER_ENC_CODERANGE_7BIT;
2229 int ret = rb_enc_precise_mbclen(ptr, e, enc);
2230 if (!MBCLEN_CHARFOUND_P(ret)) return RB_PARSER_ENC_CODERANGE_BROKEN;
2231 ptr += MBCLEN_CHARFOUND_LEN(ret);
2232 if (ptr == e) break;
2233 ptr = rb_parser_search_nonascii(ptr, e);
2237 return RB_PARSER_ENC_CODERANGE_VALID;
2241rb_parser_enc_coderange_scan(struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2243 return rb_parser_coderange_scan(p, PARSER_STRING_PTR(str), PARSER_STRING_LEN(str), enc);
2247rb_parser_enc_str_coderange(struct parser_params *p, rb_parser_string_t *str)
2249 int cr = PARSER_ENC_CODERANGE(str);
2251 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2252 cr = rb_parser_enc_coderange_scan(p, str, rb_parser_str_get_encoding(str));
2253 PARSER_ENC_CODERANGE_SET(str, cr);
2259static rb_parser_string_t *
2260rb_parser_enc_associate(struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2262 if (rb_parser_str_get_encoding(str) == enc)
2264 if (!PARSER_ENC_CODERANGE_ASCIIONLY(str)) {
2265 PARSER_ENC_CODERANGE_CLEAR(str);
2267 rb_parser_string_set_encoding(str, enc);
2272rb_parser_is_ascii_string(struct parser_params *p, rb_parser_string_t *str)
2274 return rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_7BIT;
2278rb_parser_enc_compatible(struct parser_params *p, rb_parser_string_t *str1, rb_parser_string_t *str2)
2280 rb_encoding *enc1 = rb_parser_str_get_encoding(str1);
2281 rb_encoding *enc2 = rb_parser_str_get_encoding(str2);
2283 if (enc1 == NULL || enc2 == NULL)
2290 if (PARSER_STRING_LEN(str2) == 0)
2292 if (PARSER_STRING_LEN(str1) == 0)
2293 return rb_parser_is_ascii_string(p, str2) ? enc1 : enc2;
2297 cr1 = rb_parser_enc_str_coderange(p, str1);
2298 cr2 = rb_parser_enc_str_coderange(p, str2);
2301 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT) return enc2;
2302 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT) return enc1;
2305 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT) {
2309 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT) {
2317rb_parser_str_modify(rb_parser_string_t *str)
2319 PARSER_ENC_CODERANGE_CLEAR(str);
2323rb_parser_str_set_len(struct parser_params *p, rb_parser_string_t *str, long len)
2326 const int termlen = STRING_TERM_LEN(str);
2328 if (len > (capa = (long)(rb_parser_str_capacity(str, termlen))) || len < 0) {
2329 rb_bug("probable buffer overflow: %ld for %ld", len, capa);
2332 int cr = PARSER_ENC_CODERANGE(str);
2333 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2334 /* Leave unknown. */
2336 else if (len > PARSER_STRING_LEN(str)) {
2337 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2339 else if (len < PARSER_STRING_LEN(str)) {
2340 if (cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2341 /* ASCII-only string is keeping after truncated. Valid
2342 * and broken may be invalid or valid, leave unknown. */
2343 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2347 STRING_SET_LEN(str, len);
2348 STRING_TERM_FILL(str);
2351static rb_parser_string_t *
2352rb_parser_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len)
2354 rb_parser_str_modify(str);
2355 if (len == 0) return 0;
2357 long total, olen, off = -1;
2359 const int termlen = STRING_TERM_LEN(str);
2361 PARSER_STRING_GETMEM(str, sptr, olen);
2362 if (ptr >= sptr && ptr <= sptr + olen) {
2366 if (olen > LONG_MAX - len) {
2367 compile_error(p, "string sizes too big");
2371 PARSER_STRING_RESIZE_CAPA_TERM(p, str, total, termlen);
2372 sptr = PARSER_STRING_PTR(str);
2376 memcpy(sptr + olen, ptr, len);
2377 STRING_SET_LEN(str, total);
2378 STRING_TERM_FILL(str);
2383#define parser_str_cat(str, ptr, len) rb_parser_str_buf_cat(p, str, ptr, len)
2384#define parser_str_cat_cstr(str, lit) rb_parser_str_buf_cat(p, str, lit, strlen(lit))
2386static rb_parser_string_t *
2387rb_parser_enc_cr_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len,
2388 rb_encoding *ptr_enc, int ptr_cr, int *ptr_cr_ret)
2391 rb_encoding *str_enc, *res_enc;
2393 str_enc = rb_parser_str_get_encoding(str);
2394 str_cr = PARSER_STRING_LEN(str) ? PARSER_ENC_CODERANGE(str) : RB_PARSER_ENC_CODERANGE_7BIT;
2396 if (str_enc == ptr_enc) {
2397 if (str_cr != RB_PARSER_ENC_CODERANGE_UNKNOWN && ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2398 ptr_cr = rb_parser_coderange_scan(p, ptr, len, ptr_enc);
2402 /* parser string encoding is always asciicompat */
2403 if (ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2404 ptr_cr = rb_parser_coderange_scan(p, ptr, len, ptr_enc);
2406 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2407 if (str_enc == rb_ascii8bit_encoding() || ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2408 str_cr = rb_parser_enc_str_coderange(p, str);
2413 *ptr_cr_ret = ptr_cr;
2415 if (str_enc != ptr_enc &&
2416 str_cr != RB_PARSER_ENC_CODERANGE_7BIT &&
2417 ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2421 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2423 res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2425 else if (str_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2426 if (ptr_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2428 res_cr = RB_PARSER_ENC_CODERANGE_7BIT;
2435 else if (str_cr == RB_PARSER_ENC_CODERANGE_VALID) {
2437 if (PARSER_ENC_CODERANGE_CLEAN_P(ptr_cr))
2442 else { /* str_cr == RB_PARSER_ENC_CODERANGE_BROKEN */
2445 if (0 < len) res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2449 compile_error(p, "negative string size (or size too big)");
2451 parser_str_cat(str, ptr, len);
2452 PARSER_ENCODING_CODERANGE_SET(str, res_enc, res_cr);
2456 compile_error(p, "incompatible character encodings: %s and %s",
2457 rb_enc_name(str_enc), rb_enc_name(ptr_enc));
2458 UNREACHABLE_RETURN(0);
2462static rb_parser_string_t *
2463rb_parser_enc_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len,
2464 rb_encoding *ptr_enc)
2466 return rb_parser_enc_cr_str_buf_cat(p, str, ptr, len, ptr_enc, RB_PARSER_ENC_CODERANGE_UNKNOWN, NULL);
2469static rb_parser_string_t *
2470rb_parser_str_buf_append(struct parser_params *p, rb_parser_string_t *str, rb_parser_string_t *str2)
2472 int str2_cr = rb_parser_enc_str_coderange(p, str2);
2474 rb_parser_enc_cr_str_buf_cat(p, str, PARSER_STRING_PTR(str2), PARSER_STRING_LEN(str2),
2475 rb_parser_str_get_encoding(str2), str2_cr, &str2_cr);
2477 PARSER_ENC_CODERANGE_SET(str2, str2_cr);
2482static rb_parser_string_t *
2483rb_parser_str_resize(struct parser_params *p, rb_parser_string_t *str, long len)
2486 rb_bug("negative string size (or size too big)");
2489 long slen = PARSER_STRING_LEN(str);
2491 if (slen > len && PARSER_ENC_CODERANGE(str) != RB_PARSER_ENC_CODERANGE_7BIT) {
2492 PARSER_ENC_CODERANGE_CLEAR(str);
2497 const int termlen = STRING_TERM_LEN(str);
2499 if ((capa = slen) < len) {
2500 SIZED_REALLOC_N(str->ptr, char, (size_t)len + termlen, STRING_SIZE(str));
2502 else if (len == slen) return str;
2503 STRING_SET_LEN(str, len);
2504 STRING_TERM_FILL(str);
2509# define PARSER_ENC_STRING_GETMEM(str, ptrvar, lenvar, encvar) \
2510 ((ptrvar) = str->ptr, \
2511 (lenvar) = str->len, \
2512 (encvar) = str->enc)
2515rb_parser_string_hash_cmp(rb_parser_string_t *str1, rb_parser_string_t *str2)
2518 const char *ptr1, *ptr2;
2519 rb_encoding *enc1, *enc2;
2521 PARSER_ENC_STRING_GETMEM(str1, ptr1, len1, enc1);
2522 PARSER_ENC_STRING_GETMEM(str2, ptr2, len2, enc2);
2524 return (len1 != len2 ||
2526 memcmp(ptr1, ptr2, len1) != 0);
2530rb_parser_ary_extend(rb_parser_t *p, rb_parser_ary_t *ary, long len)
2533 if (ary->capa < len) {
2535 ary->data = (rb_parser_ary_data *)xrealloc(ary->data, sizeof(rb_parser_ary_data) * len);
2536 for (i = ary->len; i < len; i++) {
2543 * Do not call this directly.
2544 * Use rb_parser_ary_new_capa_for_XXX() instead.
2546static rb_parser_ary_t *
2547parser_ary_new_capa(rb_parser_t *p, long len)
2550 rb_bug("negative array size (or size too big): %ld", len);
2552 rb_parser_ary_t *ary = xcalloc(1, sizeof(rb_parser_ary_t));
2557 ary->data = (rb_parser_ary_data *)xcalloc(len, sizeof(rb_parser_ary_data));
2566static rb_parser_ary_t *
2567rb_parser_ary_new_capa_for_script_line(rb_parser_t *p, long len)
2569 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2570 ary->data_type = PARSER_ARY_DATA_SCRIPT_LINE;
2574static rb_parser_ary_t *
2575rb_parser_ary_new_capa_for_ast_token(rb_parser_t *p, long len)
2577 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2578 ary->data_type = PARSER_ARY_DATA_AST_TOKEN;
2583static rb_parser_ary_t *
2584rb_parser_ary_new_capa_for_node(rb_parser_t *p, long len)
2586 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2587 ary->data_type = PARSER_ARY_DATA_NODE;
2592 * Do not call this directly.
2593 * Use rb_parser_ary_push_XXX() instead.
2595static rb_parser_ary_t *
2596parser_ary_push(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ary_data val)
2598 if (ary->len == ary->capa) {
2599 rb_parser_ary_extend(p, ary, ary->len == 0 ? 1 : ary->len * 2);
2601 ary->data[ary->len++] = val;
2606static rb_parser_ary_t *
2607rb_parser_ary_push_ast_token(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ast_token_t *val)
2609 if (ary->data_type != PARSER_ARY_DATA_AST_TOKEN) {
2610 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2612 return parser_ary_push(p, ary, val);
2615static rb_parser_ary_t *
2616rb_parser_ary_push_script_line(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_string_t *val)
2618 if (ary->data_type != PARSER_ARY_DATA_SCRIPT_LINE) {
2619 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2621 return parser_ary_push(p, ary, val);
2625static rb_parser_ary_t *
2626rb_parser_ary_push_node(rb_parser_t *p, rb_parser_ary_t *ary, NODE *val)
2628 if (ary->data_type != PARSER_ARY_DATA_NODE) {
2629 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2631 return parser_ary_push(p, ary, val);
2636rb_parser_ast_token_free(rb_parser_t *p, rb_parser_ast_token_t *token)
2639 rb_parser_string_free(p, token->str);
2644rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary)
2646# define foreach_ary(ptr) \
2647 for (rb_parser_ary_data *ptr = ary->data, *const end_ary_data = ptr + ary->len; \
2648 ptr < end_ary_data; ptr++)
2649 switch (ary->data_type) {
2650 case PARSER_ARY_DATA_AST_TOKEN:
2651 foreach_ary(data) {rb_parser_ast_token_free(p, *data);}
2653 case PARSER_ARY_DATA_SCRIPT_LINE:
2654 foreach_ary(data) {rb_parser_string_free(p, *data);}
2656 case PARSER_ARY_DATA_NODE:
2657 /* Do nothing because nodes are freed when rb_ast_t is freed */
2660 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2674# define YY_CAST(Type, Val) static_cast<Type> (Val)
2675# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
2677# define YY_CAST(Type, Val) ((Type) (Val))
2678# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
2682# if defined __cplusplus
2683# if 201103L <= __cplusplus
2684# define YY_NULLPTR nullptr
2686# define YY_NULLPTR 0
2689# define YY_NULLPTR ((void*)0)
2697 YYSYMBOL_YYEMPTY = -2,
2698 YYSYMBOL_YYEOF = 0, /* "end-of-input" */
2699 YYSYMBOL_YYerror = 1, /* error */
2700 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
2701 YYSYMBOL_keyword_class = 3, /* "'class'" */
2702 YYSYMBOL_keyword_module = 4, /* "'module
'" */
2703 YYSYMBOL_keyword_def = 5, /* "'def
'" */
2704 YYSYMBOL_keyword_undef = 6, /* "'undef
'" */
2705 YYSYMBOL_keyword_begin = 7, /* "'begin
'" */
2706 YYSYMBOL_keyword_rescue = 8, /* "'rescue
'" */
2707 YYSYMBOL_keyword_ensure = 9, /* "'ensure
'" */
2708 YYSYMBOL_keyword_end = 10, /* "'end
'" */
2709 YYSYMBOL_keyword_if = 11, /* "'if'" */
2710 YYSYMBOL_keyword_unless = 12, /* "'unless
'" */
2711 YYSYMBOL_keyword_then = 13, /* "'then
'" */
2712 YYSYMBOL_keyword_elsif = 14, /* "'elsif
'" */
2713 YYSYMBOL_keyword_else = 15, /* "'else'" */
2714 YYSYMBOL_keyword_case = 16, /* "'case'" */
2715 YYSYMBOL_keyword_when = 17, /* "'when
'" */
2716 YYSYMBOL_keyword_while = 18, /* "'while'" */
2717 YYSYMBOL_keyword_until = 19, /* "'until
'" */
2718 YYSYMBOL_keyword_for = 20, /* "'for'" */
2719 YYSYMBOL_keyword_break = 21, /* "'break'" */
2720 YYSYMBOL_keyword_next = 22, /* "'next
'" */
2721 YYSYMBOL_keyword_redo = 23, /* "'redo
'" */
2722 YYSYMBOL_keyword_retry = 24, /* "'retry
'" */
2723 YYSYMBOL_keyword_in = 25, /* "'in
'" */
2724 YYSYMBOL_keyword_do = 26, /* "'do'" */
2725 YYSYMBOL_keyword_do_cond = 27, /* "'do' for condition" */
2726 YYSYMBOL_keyword_do_block = 28, /* "'do' for block" */
2727 YYSYMBOL_keyword_do_LAMBDA = 29, /* "'do' for lambda" */
2728 YYSYMBOL_keyword_return = 30, /* "'return'" */
2729 YYSYMBOL_keyword_yield = 31, /* "'yield
'" */
2730 YYSYMBOL_keyword_super = 32, /* "'super
'" */
2731 YYSYMBOL_keyword_self = 33, /* "'self
'" */
2732 YYSYMBOL_keyword_nil = 34, /* "'nil
'" */
2733 YYSYMBOL_keyword_true = 35, /* "'true'" */
2734 YYSYMBOL_keyword_false = 36, /* "'false'" */
2735 YYSYMBOL_keyword_and = 37, /* "'and
'" */
2736 YYSYMBOL_keyword_or = 38, /* "'or
'" */
2737 YYSYMBOL_keyword_not = 39, /* "'not
'" */
2738 YYSYMBOL_modifier_if = 40, /* "'if' modifier" */
2739 YYSYMBOL_modifier_unless = 41, /* "'unless
' modifier" */
2740 YYSYMBOL_modifier_while = 42, /* "'while' modifier" */
2741 YYSYMBOL_modifier_until = 43, /* "'until
' modifier" */
2742 YYSYMBOL_modifier_rescue = 44, /* "'rescue
' modifier" */
2743 YYSYMBOL_keyword_alias = 45, /* "'alias
'" */
2744 YYSYMBOL_keyword_defined = 46, /* "'defined?
'" */
2745 YYSYMBOL_keyword_BEGIN = 47, /* "'BEGIN
'" */
2746 YYSYMBOL_keyword_END = 48, /* "'END
'" */
2747 YYSYMBOL_keyword__LINE__ = 49, /* "'__LINE__
'" */
2748 YYSYMBOL_keyword__FILE__ = 50, /* "'__FILE__
'" */
2749 YYSYMBOL_keyword__ENCODING__ = 51, /* "'__ENCODING__
'" */
2750 YYSYMBOL_tIDENTIFIER = 52, /* "local variable or method" */
2751 YYSYMBOL_tFID = 53, /* "method" */
2752 YYSYMBOL_tGVAR = 54, /* "global variable" */
2753 YYSYMBOL_tIVAR = 55, /* "instance variable" */
2754 YYSYMBOL_tCONSTANT = 56, /* "constant" */
2755 YYSYMBOL_tCVAR = 57, /* "class variable" */
2756 YYSYMBOL_tLABEL = 58, /* "label" */
2757 YYSYMBOL_tINTEGER = 59, /* "integer literal" */
2758 YYSYMBOL_tFLOAT = 60, /* "float literal" */
2759 YYSYMBOL_tRATIONAL = 61, /* "rational literal" */
2760 YYSYMBOL_tIMAGINARY = 62, /* "imaginary literal" */
2761 YYSYMBOL_tCHAR = 63, /* "char literal" */
2762 YYSYMBOL_tNTH_REF = 64, /* "numbered reference" */
2763 YYSYMBOL_tBACK_REF = 65, /* "back reference" */
2764 YYSYMBOL_tSTRING_CONTENT = 66, /* "literal content" */
2765 YYSYMBOL_tREGEXP_END = 67, /* tREGEXP_END */
2766 YYSYMBOL_tDUMNY_END = 68, /* "dummy end" */
2767 YYSYMBOL_69_ = 69, /* '.
' */
2768 YYSYMBOL_70_backslash_ = 70, /* "backslash" */
2769 YYSYMBOL_tSP = 71, /* "escaped space" */
2770 YYSYMBOL_72_escaped_horizontal_tab_ = 72, /* "escaped horizontal tab" */
2771 YYSYMBOL_73_escaped_form_feed_ = 73, /* "escaped form feed" */
2772 YYSYMBOL_74_escaped_carriage_return_ = 74, /* "escaped carriage return" */
2773 YYSYMBOL_75_escaped_vertical_tab_ = 75, /* "escaped vertical tab" */
2774 YYSYMBOL_tUPLUS = 76, /* "unary+" */
2775 YYSYMBOL_tUMINUS = 77, /* "unary-" */
2776 YYSYMBOL_tPOW = 78, /* "**" */
2777 YYSYMBOL_tCMP = 79, /* "<=>" */
2778 YYSYMBOL_tEQ = 80, /* "==" */
2779 YYSYMBOL_tEQQ = 81, /* "===" */
2780 YYSYMBOL_tNEQ = 82, /* "!=" */
2781 YYSYMBOL_tGEQ = 83, /* ">=" */
2782 YYSYMBOL_tLEQ = 84, /* "<=" */
2783 YYSYMBOL_tANDOP = 85, /* "&&" */
2784 YYSYMBOL_tOROP = 86, /* "||" */
2785 YYSYMBOL_tMATCH = 87, /* "=~" */
2786 YYSYMBOL_tNMATCH = 88, /* "!~" */
2787 YYSYMBOL_tDOT2 = 89, /* ".." */
2788 YYSYMBOL_tDOT3 = 90, /* "..." */
2789 YYSYMBOL_tBDOT2 = 91, /* "(.." */
2790 YYSYMBOL_tBDOT3 = 92, /* "(..." */
2791 YYSYMBOL_tAREF = 93, /* "[]" */
2792 YYSYMBOL_tASET = 94, /* "[]=" */
2793 YYSYMBOL_tLSHFT = 95, /* "<<" */
2794 YYSYMBOL_tRSHFT = 96, /* ">>" */
2795 YYSYMBOL_tANDDOT = 97, /* "&." */
2796 YYSYMBOL_tCOLON2 = 98, /* "::" */
2797 YYSYMBOL_tCOLON3 = 99, /* ":: at EXPR_BEG" */
2798 YYSYMBOL_tOP_ASGN = 100, /* "operator-assignment" */
2799 YYSYMBOL_tASSOC = 101, /* "=>" */
2800 YYSYMBOL_tLPAREN = 102, /* "(" */
2801 YYSYMBOL_tLPAREN_ARG = 103, /* "( arg" */
2802 YYSYMBOL_tLBRACK = 104, /* "[" */
2803 YYSYMBOL_tLBRACE = 105, /* "{" */
2804 YYSYMBOL_tLBRACE_ARG = 106, /* "{ arg" */
2805 YYSYMBOL_tSTAR = 107, /* "*" */
2806 YYSYMBOL_tDSTAR = 108, /* "**arg" */
2807 YYSYMBOL_tAMPER = 109, /* "&" */
2808 YYSYMBOL_tLAMBDA = 110, /* "->" */
2809 YYSYMBOL_tSYMBEG = 111, /* "symbol literal" */
2810 YYSYMBOL_tSTRING_BEG = 112, /* "string literal" */
2811 YYSYMBOL_tXSTRING_BEG = 113, /* "backtick literal" */
2812 YYSYMBOL_tREGEXP_BEG = 114, /* "regexp literal" */
2813 YYSYMBOL_tWORDS_BEG = 115, /* "word list" */
2814 YYSYMBOL_tQWORDS_BEG = 116, /* "verbatim word list" */
2815 YYSYMBOL_tSYMBOLS_BEG = 117, /* "symbol list" */
2816 YYSYMBOL_tQSYMBOLS_BEG = 118, /* "verbatim symbol list" */
2817 YYSYMBOL_tSTRING_END = 119, /* "terminator" */
2818 YYSYMBOL_tSTRING_DEND = 120, /* "'}
'" */
2819 YYSYMBOL_tSTRING_DBEG = 121, /* "'#{
'" */
2820 YYSYMBOL_tSTRING_DVAR = 122, /* tSTRING_DVAR */
2821 YYSYMBOL_tLAMBEG = 123, /* tLAMBEG */
2822 YYSYMBOL_tLABEL_END = 124, /* tLABEL_END */
2823 YYSYMBOL_tIGNORED_NL = 125, /* tIGNORED_NL */
2824 YYSYMBOL_tCOMMENT = 126, /* tCOMMENT */
2825 YYSYMBOL_tEMBDOC_BEG = 127, /* tEMBDOC_BEG */
2826 YYSYMBOL_tEMBDOC = 128, /* tEMBDOC */
2827 YYSYMBOL_tEMBDOC_END = 129, /* tEMBDOC_END */
2828 YYSYMBOL_tHEREDOC_BEG = 130, /* tHEREDOC_BEG */
2829 YYSYMBOL_tHEREDOC_END = 131, /* tHEREDOC_END */
2830 YYSYMBOL_k__END__ = 132, /* k__END__ */
2831 YYSYMBOL_tLOWEST = 133, /* tLOWEST */
2832 YYSYMBOL_134_ = 134, /* '=
' */
2833 YYSYMBOL_135_ = 135, /* '?
' */
2834 YYSYMBOL_136_ = 136, /* ':
' */
2835 YYSYMBOL_137_ = 137, /* '>
' */
2836 YYSYMBOL_138_ = 138, /* '<
' */
2837 YYSYMBOL_139_ = 139, /* '|
' */
2838 YYSYMBOL_140_ = 140, /* '^
' */
2839 YYSYMBOL_141_ = 141, /* '&
' */
2840 YYSYMBOL_142_ = 142, /* '+
' */
2841 YYSYMBOL_143_ = 143, /* '-
' */
2842 YYSYMBOL_144_ = 144, /* '*
' */
2843 YYSYMBOL_145_ = 145, /* '/
' */
2844 YYSYMBOL_146_ = 146, /* '%
' */
2845 YYSYMBOL_tUMINUS_NUM = 147, /* tUMINUS_NUM */
2846 YYSYMBOL_148_ = 148, /* '!
' */
2847 YYSYMBOL_149_ = 149, /* '~
' */
2848 YYSYMBOL_tLAST_TOKEN = 150, /* tLAST_TOKEN */
2849 YYSYMBOL_151_ = 151, /* '{
' */
2850 YYSYMBOL_152_ = 152, /* '}
' */
2851 YYSYMBOL_153_ = 153, /* '[
' */
2852 YYSYMBOL_154_n_ = 154, /* '\n
' */
2853 YYSYMBOL_155_ = 155, /* ',
' */
2854 YYSYMBOL_156_ = 156, /* '`
' */
2855 YYSYMBOL_157_ = 157, /* '(
' */
2856 YYSYMBOL_158_ = 158, /* ')
' */
2857 YYSYMBOL_159_ = 159, /* ']
' */
2858 YYSYMBOL_160_ = 160, /* ';
' */
2859 YYSYMBOL_161_ = 161, /* ' ' */
2860 YYSYMBOL_YYACCEPT = 162, /* $accept */
2861 YYSYMBOL_option_terms = 163, /* option_terms */
2862 YYSYMBOL_compstmt_top_stmts = 164, /* compstmt_top_stmts */
2863 YYSYMBOL_165_1 = 165, /* $@1 */
2864 YYSYMBOL_program = 166, /* program */
2865 YYSYMBOL_top_stmts = 167, /* top_stmts */
2866 YYSYMBOL_top_stmt = 168, /* top_stmt */
2867 YYSYMBOL_block_open = 169, /* block_open */
2868 YYSYMBOL_begin_block = 170, /* begin_block */
2869 YYSYMBOL_compstmt_stmts = 171, /* compstmt_stmts */
2870 YYSYMBOL_172_2 = 172, /* $@2 */
2871 YYSYMBOL_173_3 = 173, /* $@3 */
2872 YYSYMBOL_bodystmt = 174, /* bodystmt */
2873 YYSYMBOL_175_4 = 175, /* $@4 */
2874 YYSYMBOL_stmts = 176, /* stmts */
2875 YYSYMBOL_stmt_or_begin = 177, /* stmt_or_begin */
2876 YYSYMBOL_178_5 = 178, /* $@5 */
2877 YYSYMBOL_allow_exits = 179, /* allow_exits */
2878 YYSYMBOL_k_END = 180, /* k_END */
2879 YYSYMBOL_181_6 = 181, /* $@6 */
2880 YYSYMBOL_stmt = 182, /* stmt */
2881 YYSYMBOL_asgn_mrhs = 183, /* asgn_mrhs */
2882 YYSYMBOL_asgn_command_rhs = 184, /* asgn_command_rhs */
2883 YYSYMBOL_command_asgn = 185, /* command_asgn */
2884 YYSYMBOL_op_asgn_command_rhs = 186, /* op_asgn_command_rhs */
2885 YYSYMBOL_def_endless_method_endless_command = 187, /* def_endless_method_endless_command */
2886 YYSYMBOL_endless_command = 188, /* endless_command */
2887 YYSYMBOL_option__n_ = 189, /* option_'\n
' */
2888 YYSYMBOL_command_rhs = 190, /* command_rhs */
2889 YYSYMBOL_expr = 191, /* expr */
2890 YYSYMBOL_192_7 = 192, /* $@7 */
2891 YYSYMBOL_193_8 = 193, /* $@8 */
2892 YYSYMBOL_def_name = 194, /* def_name */
2893 YYSYMBOL_defn_head = 195, /* defn_head */
2894 YYSYMBOL_196_9 = 196, /* $@9 */
2895 YYSYMBOL_defs_head = 197, /* defs_head */
2896 YYSYMBOL_value_expr_expr = 198, /* value_expr_expr */
2897 YYSYMBOL_expr_value = 199, /* expr_value */
2898 YYSYMBOL_200_10 = 200, /* $@10 */
2899 YYSYMBOL_201_11 = 201, /* $@11 */
2900 YYSYMBOL_expr_value_do = 202, /* expr_value_do */
2901 YYSYMBOL_command_call = 203, /* command_call */
2902 YYSYMBOL_value_expr_command_call = 204, /* value_expr_command_call */
2903 YYSYMBOL_command_call_value = 205, /* command_call_value */
2904 YYSYMBOL_block_command = 206, /* block_command */
2905 YYSYMBOL_cmd_brace_block = 207, /* cmd_brace_block */
2906 YYSYMBOL_fcall = 208, /* fcall */
2907 YYSYMBOL_command = 209, /* command */
2908 YYSYMBOL_mlhs = 210, /* mlhs */
2909 YYSYMBOL_mlhs_inner = 211, /* mlhs_inner */
2910 YYSYMBOL_mlhs_basic = 212, /* mlhs_basic */
2911 YYSYMBOL_mlhs_items_mlhs_item = 213, /* mlhs_items_mlhs_item */
2912 YYSYMBOL_mlhs_item = 214, /* mlhs_item */
2913 YYSYMBOL_mlhs_head = 215, /* mlhs_head */
2914 YYSYMBOL_mlhs_node = 216, /* mlhs_node */
2915 YYSYMBOL_lhs = 217, /* lhs */
2916 YYSYMBOL_cname = 218, /* cname */
2917 YYSYMBOL_cpath = 219, /* cpath */
2918 YYSYMBOL_fname = 220, /* fname */
2919 YYSYMBOL_fitem = 221, /* fitem */
2920 YYSYMBOL_undef_list = 222, /* undef_list */
2921 YYSYMBOL_223_12 = 223, /* $@12 */
2922 YYSYMBOL_op = 224, /* op */
2923 YYSYMBOL_reswords = 225, /* reswords */
2924 YYSYMBOL_asgn_arg_rhs = 226, /* asgn_arg_rhs */
2925 YYSYMBOL_arg = 227, /* arg */
2926 YYSYMBOL_op_asgn_arg_rhs = 228, /* op_asgn_arg_rhs */
2927 YYSYMBOL_range_expr_arg = 229, /* range_expr_arg */
2928 YYSYMBOL_def_endless_method_endless_arg = 230, /* def_endless_method_endless_arg */
2929 YYSYMBOL_ternary = 231, /* ternary */
2930 YYSYMBOL_endless_arg = 232, /* endless_arg */
2931 YYSYMBOL_relop = 233, /* relop */
2932 YYSYMBOL_rel_expr = 234, /* rel_expr */
2933 YYSYMBOL_lex_ctxt = 235, /* lex_ctxt */
2934 YYSYMBOL_begin_defined = 236, /* begin_defined */
2935 YYSYMBOL_after_rescue = 237, /* after_rescue */
2936 YYSYMBOL_value_expr_arg = 238, /* value_expr_arg */
2937 YYSYMBOL_arg_value = 239, /* arg_value */
2938 YYSYMBOL_aref_args = 240, /* aref_args */
2939 YYSYMBOL_arg_rhs = 241, /* arg_rhs */
2940 YYSYMBOL_paren_args = 242, /* paren_args */
2941 YYSYMBOL_opt_paren_args = 243, /* opt_paren_args */
2942 YYSYMBOL_opt_call_args = 244, /* opt_call_args */
2943 YYSYMBOL_value_expr_command = 245, /* value_expr_command */
2944 YYSYMBOL_call_args = 246, /* call_args */
2945 YYSYMBOL_247_13 = 247, /* $@13 */
2946 YYSYMBOL_command_args = 248, /* command_args */
2947 YYSYMBOL_block_arg = 249, /* block_arg */
2948 YYSYMBOL_opt_block_arg = 250, /* opt_block_arg */
2949 YYSYMBOL_args = 251, /* args */
2950 YYSYMBOL_arg_splat = 252, /* arg_splat */
2951 YYSYMBOL_mrhs_arg = 253, /* mrhs_arg */
2952 YYSYMBOL_mrhs = 254, /* mrhs */
2953 YYSYMBOL_primary = 255, /* primary */
2954 YYSYMBOL_256_14 = 256, /* $@14 */
2955 YYSYMBOL_257_15 = 257, /* $@15 */
2956 YYSYMBOL_258_16 = 258, /* @16 */
2957 YYSYMBOL_259_17 = 259, /* @17 */
2958 YYSYMBOL_260_18 = 260, /* $@18 */
2959 YYSYMBOL_261_19 = 261, /* $@19 */
2960 YYSYMBOL_262_20 = 262, /* $@20 */
2961 YYSYMBOL_263_21 = 263, /* $@21 */
2962 YYSYMBOL_264_22 = 264, /* $@22 */
2963 YYSYMBOL_265_23 = 265, /* $@23 */
2964 YYSYMBOL_266_24 = 266, /* $@24 */
2965 YYSYMBOL_value_expr_primary = 267, /* value_expr_primary */
2966 YYSYMBOL_primary_value = 268, /* primary_value */
2967 YYSYMBOL_k_begin = 269, /* k_begin */
2968 YYSYMBOL_k_if = 270, /* k_if */
2969 YYSYMBOL_k_unless = 271, /* k_unless */
2970 YYSYMBOL_k_while = 272, /* k_while */
2971 YYSYMBOL_k_until = 273, /* k_until */
2972 YYSYMBOL_k_case = 274, /* k_case */
2973 YYSYMBOL_k_for = 275, /* k_for */
2974 YYSYMBOL_k_class = 276, /* k_class */
2975 YYSYMBOL_k_module = 277, /* k_module */
2976 YYSYMBOL_k_def = 278, /* k_def */
2977 YYSYMBOL_k_do = 279, /* k_do */
2978 YYSYMBOL_k_do_block = 280, /* k_do_block */
2979 YYSYMBOL_k_rescue = 281, /* k_rescue */
2980 YYSYMBOL_k_ensure = 282, /* k_ensure */
2981 YYSYMBOL_k_when = 283, /* k_when */
2982 YYSYMBOL_k_else = 284, /* k_else */
2983 YYSYMBOL_k_elsif = 285, /* k_elsif */
2984 YYSYMBOL_k_end = 286, /* k_end */
2985 YYSYMBOL_k_return = 287, /* k_return */
2986 YYSYMBOL_k_yield = 288, /* k_yield */
2987 YYSYMBOL_then = 289, /* then */
2988 YYSYMBOL_do = 290, /* do */
2989 YYSYMBOL_if_tail = 291, /* if_tail */
2990 YYSYMBOL_opt_else = 292, /* opt_else */
2991 YYSYMBOL_for_var = 293, /* for_var */
2992 YYSYMBOL_f_marg = 294, /* f_marg */
2993 YYSYMBOL_mlhs_items_f_marg = 295, /* mlhs_items_f_marg */
2994 YYSYMBOL_f_margs = 296, /* f_margs */
2995 YYSYMBOL_f_rest_marg = 297, /* f_rest_marg */
2996 YYSYMBOL_f_any_kwrest = 298, /* f_any_kwrest */
2997 YYSYMBOL_299_25 = 299, /* $@25 */
2998 YYSYMBOL_f_eq = 300, /* f_eq */
2999 YYSYMBOL_f_kw_primary_value = 301, /* f_kw_primary_value */
3000 YYSYMBOL_f_kwarg_primary_value = 302, /* f_kwarg_primary_value */
3001 YYSYMBOL_args_tail_basic_primary_value = 303, /* args_tail_basic_primary_value */
3002 YYSYMBOL_block_args_tail = 304, /* block_args_tail */
3003 YYSYMBOL_excessed_comma = 305, /* excessed_comma */
3004 YYSYMBOL_f_opt_primary_value = 306, /* f_opt_primary_value */
3005 YYSYMBOL_f_opt_arg_primary_value = 307, /* f_opt_arg_primary_value */
3006 YYSYMBOL_opt_args_tail_block_args_tail = 308, /* opt_args_tail_block_args_tail */
3007 YYSYMBOL_block_param = 309, /* block_param */
3008 YYSYMBOL_opt_block_param_def = 310, /* opt_block_param_def */
3009 YYSYMBOL_block_param_def = 311, /* block_param_def */
3010 YYSYMBOL_opt_block_param = 312, /* opt_block_param */
3011 YYSYMBOL_opt_bv_decl = 313, /* opt_bv_decl */
3012 YYSYMBOL_bv_decls = 314, /* bv_decls */
3013 YYSYMBOL_bvar = 315, /* bvar */
3014 YYSYMBOL_max_numparam = 316, /* max_numparam */
3015 YYSYMBOL_numparam = 317, /* numparam */
3016 YYSYMBOL_it_id = 318, /* it_id */
3017 YYSYMBOL_319_26 = 319, /* @26 */
3018 YYSYMBOL_320_27 = 320, /* $@27 */
3019 YYSYMBOL_lambda = 321, /* lambda */
3020 YYSYMBOL_f_larglist = 322, /* f_larglist */
3021 YYSYMBOL_lambda_body = 323, /* lambda_body */
3022 YYSYMBOL_324_28 = 324, /* $@28 */
3023 YYSYMBOL_do_block = 325, /* do_block */
3024 YYSYMBOL_block_call = 326, /* block_call */
3025 YYSYMBOL_method_call = 327, /* method_call */
3026 YYSYMBOL_brace_block = 328, /* brace_block */
3027 YYSYMBOL_329_29 = 329, /* @29 */
3028 YYSYMBOL_brace_body = 330, /* brace_body */
3029 YYSYMBOL_331_30 = 331, /* @30 */
3030 YYSYMBOL_do_body = 332, /* do_body */
3031 YYSYMBOL_case_args = 333, /* case_args */
3032 YYSYMBOL_case_body = 334, /* case_body */
3033 YYSYMBOL_cases = 335, /* cases */
3034 YYSYMBOL_p_pvtbl = 336, /* p_pvtbl */
3035 YYSYMBOL_p_pktbl = 337, /* p_pktbl */
3036 YYSYMBOL_p_in_kwarg = 338, /* p_in_kwarg */
3037 YYSYMBOL_339_31 = 339, /* $@31 */
3038 YYSYMBOL_p_case_body = 340, /* p_case_body */
3039 YYSYMBOL_p_cases = 341, /* p_cases */
3040 YYSYMBOL_p_top_expr = 342, /* p_top_expr */
3041 YYSYMBOL_p_top_expr_body = 343, /* p_top_expr_body */
3042 YYSYMBOL_p_expr = 344, /* p_expr */
3043 YYSYMBOL_p_as = 345, /* p_as */
3044 YYSYMBOL_346_32 = 346, /* $@32 */
3045 YYSYMBOL_p_alt = 347, /* p_alt */
3046 YYSYMBOL_p_lparen = 348, /* p_lparen */
3047 YYSYMBOL_p_lbracket = 349, /* p_lbracket */
3048 YYSYMBOL_p_expr_basic = 350, /* p_expr_basic */
3049 YYSYMBOL_351_33 = 351, /* $@33 */
3050 YYSYMBOL_p_args = 352, /* p_args */
3051 YYSYMBOL_p_args_head = 353, /* p_args_head */
3052 YYSYMBOL_p_args_tail = 354, /* p_args_tail */
3053 YYSYMBOL_p_find = 355, /* p_find */
3054 YYSYMBOL_p_rest = 356, /* p_rest */
3055 YYSYMBOL_p_args_post = 357, /* p_args_post */
3056 YYSYMBOL_p_arg = 358, /* p_arg */
3057 YYSYMBOL_p_kwargs = 359, /* p_kwargs */
3058 YYSYMBOL_p_kwarg = 360, /* p_kwarg */
3059 YYSYMBOL_p_kw = 361, /* p_kw */
3060 YYSYMBOL_p_kw_label = 362, /* p_kw_label */
3061 YYSYMBOL_p_kwrest = 363, /* p_kwrest */
3062 YYSYMBOL_p_kwnorest = 364, /* p_kwnorest */
3063 YYSYMBOL_p_any_kwrest = 365, /* p_any_kwrest */
3064 YYSYMBOL_p_value = 366, /* p_value */
3065 YYSYMBOL_range_expr_p_primitive = 367, /* range_expr_p_primitive */
3066 YYSYMBOL_p_primitive = 368, /* p_primitive */
3067 YYSYMBOL_p_variable = 369, /* p_variable */
3068 YYSYMBOL_p_var_ref = 370, /* p_var_ref */
3069 YYSYMBOL_p_expr_ref = 371, /* p_expr_ref */
3070 YYSYMBOL_p_const = 372, /* p_const */
3071 YYSYMBOL_opt_rescue = 373, /* opt_rescue */
3072 YYSYMBOL_exc_list = 374, /* exc_list */
3073 YYSYMBOL_exc_var = 375, /* exc_var */
3074 YYSYMBOL_opt_ensure = 376, /* opt_ensure */
3075 YYSYMBOL_literal = 377, /* literal */
3076 YYSYMBOL_strings = 378, /* strings */
3077 YYSYMBOL_string = 379, /* string */
3078 YYSYMBOL_string1 = 380, /* string1 */
3079 YYSYMBOL_xstring = 381, /* xstring */
3080 YYSYMBOL_regexp = 382, /* regexp */
3081 YYSYMBOL_nonempty_list__ = 383, /* nonempty_list_' ' */
3082 YYSYMBOL_words_tWORDS_BEG_word_list = 384, /* words_tWORDS_BEG_word_list */
3083 YYSYMBOL_words = 385, /* words */
3084 YYSYMBOL_word_list = 386, /* word_list */
3085 YYSYMBOL_word = 387, /* word */
3086 YYSYMBOL_words_tSYMBOLS_BEG_symbol_list = 388, /* words_tSYMBOLS_BEG_symbol_list */
3087 YYSYMBOL_symbols = 389, /* symbols */
3088 YYSYMBOL_symbol_list = 390, /* symbol_list */
3089 YYSYMBOL_words_tQWORDS_BEG_qword_list = 391, /* words_tQWORDS_BEG_qword_list */
3090 YYSYMBOL_qwords = 392, /* qwords */
3091 YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list = 393, /* words_tQSYMBOLS_BEG_qsym_list */
3092 YYSYMBOL_qsymbols = 394, /* qsymbols */
3093 YYSYMBOL_qword_list = 395, /* qword_list */
3094 YYSYMBOL_qsym_list = 396, /* qsym_list */
3095 YYSYMBOL_string_contents = 397, /* string_contents */
3096 YYSYMBOL_xstring_contents = 398, /* xstring_contents */
3097 YYSYMBOL_regexp_contents = 399, /* regexp_contents */
3098 YYSYMBOL_string_content = 400, /* string_content */
3099 YYSYMBOL_401_34 = 401, /* @34 */
3100 YYSYMBOL_402_35 = 402, /* @35 */
3101 YYSYMBOL_403_36 = 403, /* @36 */
3102 YYSYMBOL_404_37 = 404, /* @37 */
3103 YYSYMBOL_string_dend = 405, /* string_dend */
3104 YYSYMBOL_string_dvar = 406, /* string_dvar */
3105 YYSYMBOL_symbol = 407, /* symbol */
3106 YYSYMBOL_ssym = 408, /* ssym */
3107 YYSYMBOL_sym = 409, /* sym */
3108 YYSYMBOL_dsym = 410, /* dsym */
3109 YYSYMBOL_numeric = 411, /* numeric */
3110 YYSYMBOL_simple_numeric = 412, /* simple_numeric */
3111 YYSYMBOL_nonlocal_var = 413, /* nonlocal_var */
3112 YYSYMBOL_user_variable = 414, /* user_variable */
3113 YYSYMBOL_keyword_variable = 415, /* keyword_variable */
3114 YYSYMBOL_var_ref = 416, /* var_ref */
3115 YYSYMBOL_var_lhs = 417, /* var_lhs */
3116 YYSYMBOL_backref = 418, /* backref */
3117 YYSYMBOL_419_38 = 419, /* $@38 */
3118 YYSYMBOL_superclass = 420, /* superclass */
3119 YYSYMBOL_f_opt_paren_args = 421, /* f_opt_paren_args */
3120 YYSYMBOL_f_paren_args = 422, /* f_paren_args */
3121 YYSYMBOL_f_arglist = 423, /* f_arglist */
3122 YYSYMBOL_424_39 = 424, /* @39 */
3123 YYSYMBOL_f_kw_arg_value = 425, /* f_kw_arg_value */
3124 YYSYMBOL_f_kwarg_arg_value = 426, /* f_kwarg_arg_value */
3125 YYSYMBOL_args_tail_basic_arg_value = 427, /* args_tail_basic_arg_value */
3126 YYSYMBOL_args_tail = 428, /* args_tail */
3127 YYSYMBOL_f_opt_arg_value = 429, /* f_opt_arg_value */
3128 YYSYMBOL_f_opt_arg_arg_value = 430, /* f_opt_arg_arg_value */
3129 YYSYMBOL_opt_args_tail_args_tail = 431, /* opt_args_tail_args_tail */
3130 YYSYMBOL_f_args = 432, /* f_args */
3131 YYSYMBOL_args_forward = 433, /* args_forward */
3132 YYSYMBOL_f_bad_arg = 434, /* f_bad_arg */
3133 YYSYMBOL_f_norm_arg = 435, /* f_norm_arg */
3134 YYSYMBOL_f_arg_asgn = 436, /* f_arg_asgn */
3135 YYSYMBOL_f_arg_item = 437, /* f_arg_item */
3136 YYSYMBOL_f_arg = 438, /* f_arg */
3137 YYSYMBOL_f_label = 439, /* f_label */
3138 YYSYMBOL_kwrest_mark = 440, /* kwrest_mark */
3139 YYSYMBOL_f_no_kwarg = 441, /* f_no_kwarg */
3140 YYSYMBOL_f_kwrest = 442, /* f_kwrest */
3141 YYSYMBOL_restarg_mark = 443, /* restarg_mark */
3142 YYSYMBOL_f_rest_arg = 444, /* f_rest_arg */
3143 YYSYMBOL_blkarg_mark = 445, /* blkarg_mark */
3144 YYSYMBOL_f_block_arg = 446, /* f_block_arg */
3145 YYSYMBOL_opt_f_block_arg = 447, /* opt_f_block_arg */
3146 YYSYMBOL_value_expr_singleton_expr = 448, /* value_expr_singleton_expr */
3147 YYSYMBOL_singleton = 449, /* singleton */
3148 YYSYMBOL_singleton_expr = 450, /* singleton_expr */
3149 YYSYMBOL_451_40 = 451, /* $@40 */
3150 YYSYMBOL_assoc_list = 452, /* assoc_list */
3151 YYSYMBOL_assocs = 453, /* assocs */
3152 YYSYMBOL_assoc = 454, /* assoc */
3153 YYSYMBOL_operation2 = 455, /* operation2 */
3154 YYSYMBOL_operation3 = 456, /* operation3 */
3155 YYSYMBOL_dot_or_colon = 457, /* dot_or_colon */
3156 YYSYMBOL_call_op = 458, /* call_op */
3157 YYSYMBOL_call_op2 = 459, /* call_op2 */
3158 YYSYMBOL_rparen = 460, /* rparen */
3159 YYSYMBOL_rbracket = 461, /* rbracket */
3160 YYSYMBOL_rbrace = 462, /* rbrace */
3161 YYSYMBOL_trailer = 463, /* trailer */
3162 YYSYMBOL_term = 464, /* term */
3163 YYSYMBOL_terms = 465, /* terms */
3164 YYSYMBOL_none = 466 /* none */
3166typedef enum yysymbol_kind_t yysymbol_kind_t;
3175/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
3176 <limits.h> and (if available) <stdint.h> are included
3177 so that the code can choose integer types of a good width. */
3179#ifndef __PTRDIFF_MAX__
3180# include <limits.h> /* INFRINGES ON USER NAME SPACE */
3181# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3182# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
3187/* Narrow types that promote to a signed type and that can represent a
3188 signed or unsigned integer of at least N bits. In tables they can
3189 save space and decrease cache pressure. Promoting to a signed type
3190 helps avoid bugs in integer arithmetic. */
3192#ifdef __INT_LEAST8_MAX__
3193typedef __INT_LEAST8_TYPE__ yytype_int8;
3194#elif defined YY_STDINT_H
3195typedef int_least8_t yytype_int8;
3197typedef signed char yytype_int8;
3200#ifdef __INT_LEAST16_MAX__
3201typedef __INT_LEAST16_TYPE__ yytype_int16;
3202#elif defined YY_STDINT_H
3203typedef int_least16_t yytype_int16;
3205typedef short yytype_int16;
3208/* Work around bug in HP-UX 11.23, which defines these macros
3209 incorrectly for preprocessor constants. This workaround can likely
3210 be removed in 2023, as HPE has promised support for HP-UX 11.23
3211 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
3212 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
3214# undef UINT_LEAST8_MAX
3215# undef UINT_LEAST16_MAX
3216# define UINT_LEAST8_MAX 255
3217# define UINT_LEAST16_MAX 65535
3220#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
3221typedef __UINT_LEAST8_TYPE__ yytype_uint8;
3222#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
3223 && UINT_LEAST8_MAX <= INT_MAX)
3224typedef uint_least8_t yytype_uint8;
3225#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
3226typedef unsigned char yytype_uint8;
3228typedef short yytype_uint8;
3231#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
3232typedef __UINT_LEAST16_TYPE__ yytype_uint16;
3233#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
3234 && UINT_LEAST16_MAX <= INT_MAX)
3235typedef uint_least16_t yytype_uint16;
3236#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
3237typedef unsigned short yytype_uint16;
3239typedef int yytype_uint16;
3243# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
3244# define YYPTRDIFF_T __PTRDIFF_TYPE__
3245# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
3246# elif defined PTRDIFF_MAX
3248# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
3250# define YYPTRDIFF_T ptrdiff_t
3251# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
3253# define YYPTRDIFF_T long
3254# define YYPTRDIFF_MAXIMUM LONG_MAX
3259# ifdef __SIZE_TYPE__
3260# define YYSIZE_T __SIZE_TYPE__
3261# elif defined size_t
3262# define YYSIZE_T size_t
3263# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3264# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
3265# define YYSIZE_T size_t
3267# define YYSIZE_T unsigned
3271#define YYSIZE_MAXIMUM \
3272 YY_CAST (YYPTRDIFF_T, \
3273 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
3274 ? YYPTRDIFF_MAXIMUM \
3275 : YY_CAST (YYSIZE_T, -1)))
3277#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
3280/* Stored state numbers (used for stacks). */
3281typedef yytype_int16 yy_state_t;
3283/* State numbers in computations. */
3284typedef int yy_state_fast_t;
3287# if defined YYENABLE_NLS && YYENABLE_NLS
3289# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
3290# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
3294# define YY_(Msgid) Msgid
3299#ifndef YY_ATTRIBUTE_PURE
3300# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
3301# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
3303# define YY_ATTRIBUTE_PURE
3307#ifndef YY_ATTRIBUTE_UNUSED
3308# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
3309# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
3311# define YY_ATTRIBUTE_UNUSED
3315/* Suppress unused-variable warnings by "using" E. */
3316#if ! defined lint || defined __GNUC__
3317# define YY_USE(E) ((void) (E))
3319# define YY_USE(E) /* empty */
3322/* Suppress an incorrect diagnostic about yylval being uninitialized. */
3323#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
3324# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
3325# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3326 _Pragma ("GCC diagnostic push") \
3327 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
3329# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3330 _Pragma ("GCC diagnostic push") \
3331 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
3332 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
3334# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
3335 _Pragma ("GCC diagnostic pop")
3337# define YY_INITIAL_VALUE(Value) Value
3339#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3340# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3341# define YY_IGNORE_MAYBE_UNINITIALIZED_END
3343#ifndef YY_INITIAL_VALUE
3344# define YY_INITIAL_VALUE(Value) /* Nothing. */
3347#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
3348# define YY_IGNORE_USELESS_CAST_BEGIN \
3349 _Pragma ("GCC diagnostic push") \
3350 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
3351# define YY_IGNORE_USELESS_CAST_END \
3352 _Pragma ("GCC diagnostic pop")
3354#ifndef YY_IGNORE_USELESS_CAST_BEGIN
3355# define YY_IGNORE_USELESS_CAST_BEGIN
3356# define YY_IGNORE_USELESS_CAST_END
3360#define YY_ASSERT(E) ((void) (0 && (E)))
3364/* The parser invokes alloca or malloc; define the necessary symbols. */
3366# ifdef YYSTACK_USE_ALLOCA
3367# if YYSTACK_USE_ALLOCA
3369# define YYSTACK_ALLOC __builtin_alloca
3370# elif defined __BUILTIN_VA_ARG_INCR
3371# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
3373# define YYSTACK_ALLOC __alloca
3374# elif defined _MSC_VER
3375# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
3376# define alloca _alloca
3378# define YYSTACK_ALLOC alloca
3379# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
3380# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
3381 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
3382# ifndef EXIT_SUCCESS
3383# define EXIT_SUCCESS 0
3390# ifdef YYSTACK_ALLOC
3391 /* Pacify GCC's
'empty if-body' warning. */
3392# define YYSTACK_FREE(Ptr) do { ; } while (0)
3393# ifndef YYSTACK_ALLOC_MAXIMUM
3398# define YYSTACK_ALLOC_MAXIMUM 4032
3401# define YYSTACK_ALLOC YYMALLOC
3402# define YYSTACK_FREE YYFREE
3403# ifndef YYSTACK_ALLOC_MAXIMUM
3404# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
3406# if (defined __cplusplus && ! defined EXIT_SUCCESS \
3407 && ! ((defined YYMALLOC || defined malloc) \
3408 && (defined YYFREE || defined free)))
3410# ifndef EXIT_SUCCESS
3411# define EXIT_SUCCESS 0
3415# define YYMALLOC malloc
3416# if ! defined malloc && ! defined EXIT_SUCCESS
3417void *malloc (YYSIZE_T);
3422# if ! defined free && ! defined EXIT_SUCCESS
3429#if (! defined yyoverflow \
3430 && (! defined __cplusplus \
3431 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
3432 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
3437 yy_state_t yyss_alloc;
3443# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
3447# define YYSTACK_BYTES(N) \
3448 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
3449 + YYSIZEOF (YYLTYPE)) \
3450 + 2 * YYSTACK_GAP_MAXIMUM)
3452# define YYCOPY_NEEDED 1
3459# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
3462 YYPTRDIFF_T yynewbytes; \
3463 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
3464 Stack = &yyptr->Stack_alloc; \
3465 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
3466 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
3472#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
3476# if defined __GNUC__ && 1 < __GNUC__
3477# define YYCOPY(Dst, Src, Count) \
3478 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
3480# define YYCOPY(Dst, Src, Count) \
3484 for (yyi = 0; yyi < (Count); yyi++) \
3485 (Dst)[yyi] = (Src)[yyi]; \
3498#define YYNTOKENS 162
3504#define YYNSTATES 1378
3507#define YYMAXUTOK 361
3512#define YYTRANSLATE(YYX) \
3513 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
3514 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
3519static const yytype_uint8 yytranslate[] =
3521 0, 2, 2, 2, 2, 2, 2, 2, 2, 72,
3522 154, 75, 73, 74, 2, 2, 2, 2, 2, 2,
3523 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3524 2, 2, 161, 148, 2, 2, 2, 146, 141, 2,
3525 157, 158, 144, 142, 155, 143, 69, 145, 2, 2,
3526 2, 2, 2, 2, 2, 2, 2, 2, 136, 160,
3527 138, 134, 137, 135, 2, 2, 2, 2, 2, 2,
3528 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3529 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3530 2, 153, 70, 159, 140, 2, 156, 2, 2, 2,
3531 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3532 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3533 2, 2, 2, 151, 139, 152, 149, 2, 89, 90,
3534 91, 92, 76, 77, 78, 79, 95, 96, 84, 83,
3535 80, 81, 82, 87, 88, 93, 94, 98, 85, 86,
3536 97, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3537 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3538 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3539 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3540 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3541 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3542 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3543 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3544 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3545 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3546 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
3547 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3548 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
3549 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
3550 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
3551 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
3552 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
3553 65, 66, 67, 68, 71, 99, 100, 101, 102, 103,
3554 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
3555 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
3556 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
3562static const yytype_int16 yyrline[] =
3564 0, 3165, 3159, 3165, 3165, 3165, 3165, 3185, 3190, 3195,
3565 3202, 3207, 3214, 3216, 3234, 3230, 3235, 3234, 3246, 3243,
3566 3256, 3261, 3266, 3273, 3275, 3274, 3284, 3286, 3293, 3293,
3567 3298, 3303, 3311, 3320, 3327, 3333, 3339, 3350, 3361, 3370,
3568 3384, 3385, 3390, 3390, 3391, 3402, 3407, 3408, 3415, 3415,
3569 3416, 3416, 3416, 3416, 3416, 3416, 3416, 3416, 3416, 3417,
3570 3417, 3417, 3420, 3421, 3427, 3427, 3427, 3434, 3435, 3442,
3571 3445, 3446, 3451, 3456, 3461, 3467, 3466, 3482, 3481, 3496,
3572 3499, 3510, 3520, 3519, 3533, 3533, 3534, 3540, 3540, 3540,
3573 3547, 3548, 3551, 3551, 3554, 3555, 3562, 3570, 3570, 3570,
3574 3577, 3584, 3593, 3598, 3603, 3608, 3613, 3619, 3625, 3631,
3575 3636, 3643, 3652, 3653, 3660, 3661, 3668, 3673, 3678, 3683,
3576 3683, 3683, 3688, 3693, 3698, 3703, 3708, 3713, 3720, 3721,
3577 3728, 3733, 3741, 3741, 3746, 3751, 3751, 3757, 3762, 3767,
3578 3772, 3780, 3780, 3785, 3790, 3790, 3795, 3800, 3805, 3810,
3579 3818, 3826, 3829, 3834, 3839, 3846, 3846, 3846, 3847, 3852,
3580 3855, 3860, 3863, 3868, 3868, 3876, 3877, 3878, 3879, 3880,
3581 3881, 3882, 3883, 3884, 3885, 3886, 3887, 3888, 3889, 3890,
3582 3891, 3892, 3893, 3894, 3895, 3896, 3897, 3898, 3899, 3900,
3583 3901, 3902, 3903, 3904, 3905, 3908, 3908, 3908, 3909, 3909,
3584 3910, 3910, 3910, 3911, 3911, 3911, 3911, 3912, 3912, 3912,
3585 3912, 3913, 3913, 3913, 3914, 3914, 3914, 3914, 3915, 3915,
3586 3915, 3915, 3916, 3916, 3916, 3916, 3917, 3917, 3917, 3917,
3587 3918, 3918, 3918, 3918, 3919, 3919, 3922, 3922, 3923, 3923,
3588 3923, 3923, 3923, 3923, 3923, 3923, 3923, 3924, 3924, 3924,
3589 3924, 3924, 3924, 3924, 3925, 3930, 3935, 3940, 3945, 3950,
3590 3955, 3960, 3965, 3970, 3975, 3980, 3985, 3990, 3991, 3996,
3591 4001, 4006, 4011, 4016, 4021, 4026, 4031, 4036, 4041, 4046,
3592 4053, 4053, 4053, 4054, 4055, 4058, 4067, 4068, 4074, 4081,
3593 4082, 4083, 4084, 4087, 4092, 4100, 4106, 4113, 4120, 4120,
3594 4123, 4124, 4125, 4130, 4137, 4142, 4151, 4156, 4166, 4178,
3595 4179, 4185, 4186, 4187, 4188, 4193, 4200, 4200, 4205, 4210,
3596 4215, 4221, 4227, 4231, 4231, 4269, 4274, 4282, 4287, 4295,
3597 4300, 4305, 4310, 4318, 4323, 4332, 4333, 4337, 4342, 4347,
3598 4365, 4365, 4365, 4365, 4365, 4365, 4365, 4365, 4366, 4367,
3599 4368, 4374, 4373, 4386, 4386, 4392, 4398, 4403, 4408, 4413,
3600 4419, 4424, 4429, 4434, 4439, 4446, 4451, 4456, 4461, 4462,
3601 4468, 4470, 4482, 4491, 4500, 4509, 4508, 4523, 4522, 4535,
3602 4543, 4543, 4544, 4588, 4587, 4610, 4609, 4629, 4628, 4647,
3603 4645, 4662, 4660, 4675, 4680, 4685, 4690, 4705, 4705, 4708,
3604 4715, 4733, 4740, 4748, 4756, 4763, 4771, 4780, 4789, 4797,
3605 4804, 4811, 4819, 4826, 4832, 4847, 4854, 4859, 4865, 4872,
3606 4879, 4880, 4881, 4884, 4885, 4888, 4890, 4899, 4900, 4907,
3607 4908, 4911, 4916, 4924, 4924, 4924, 4929, 4934, 4939, 4944,
3608 4951, 4957, 4964, 4965, 4972, 4972, 4974, 4974, 4974, 4974,
3609 4974, 4974, 4974, 4974, 4974, 4977, 4985, 4985, 4985, 4985,
3610 4985, 4985, 4990, 4995, 5000, 5005, 5010, 5016, 5021, 5026,
3611 5031, 5036, 5041, 5046, 5051, 5056, 5063, 5064, 5070, 5080,
3612 5084, 5087, 5092, 5099, 5101, 5105, 5110, 5113, 5119, 5124,
3613 5131, 5137, 5130, 5164, 5171, 5180, 5187, 5186, 5197, 5205,
3614 5217, 5227, 5233, 5238, 5246, 5253, 5264, 5270, 5275, 5281,
3615 5291, 5296, 5304, 5310, 5318, 5320, 5335, 5335, 5356, 5362,
3616 5367, 5373, 5381, 5390, 5391, 5394, 5395, 5397, 5410, 5417,
3617 5425, 5426, 5429, 5430, 5436, 5444, 5445, 5451, 5457, 5462,
3618 5467, 5474, 5477, 5484, 5488, 5487, 5500, 5503, 5510, 5517,
3619 5518, 5519, 5526, 5533, 5540, 5546, 5553, 5560, 5567, 5573,
3620 5578, 5583, 5590, 5589, 5600, 5606, 5614, 5620, 5625, 5630,
3621 5635, 5640, 5643, 5644, 5651, 5656, 5663, 5671, 5677, 5684,
3622 5685, 5692, 5699, 5704, 5709, 5714, 5721, 5723, 5730, 5736,
3623 5748, 5749, 5764, 5769, 5776, 5782, 5783, 5790, 5791, 5791,
3624 5791, 5791, 5791, 5791, 5791, 5792, 5793, 5794, 5797, 5797,
3625 5797, 5797, 5797, 5797, 5797, 5797, 5798, 5803, 5806, 5814,
3626 5826, 5833, 5840, 5845, 5850, 5858, 5878, 5881, 5886, 5890,
3627 5893, 5898, 5901, 5908, 5911, 5912, 5915, 5927, 5928, 5929,
3628 5936, 5949, 5961, 5968, 5968, 5968, 5968, 5972, 5976, 5983,
3629 5985, 5992, 5992, 5996, 6000, 6007, 6007, 6010, 6010, 6014,
3630 6018, 6026, 6030, 6038, 6042, 6050, 6054, 6062, 6066, 6092,
3631 6095, 6094, 6109, 6117, 6121, 6125, 6140, 6141, 6144, 6149,
3632 6152, 6153, 6156, 6172, 6173, 6176, 6184, 6185, 6193, 6194,
3633 6195, 6196, 6199, 6200, 6201, 6204, 6204, 6205, 6208, 6209,
3634 6210, 6211, 6212, 6213, 6214, 6217, 6227, 6234, 6234, 6241,
3635 6242, 6246, 6245, 6255, 6258, 6259, 6268, 6278, 6279, 6279,
3636 6296, 6296, 6296, 6296, 6296, 6296, 6296, 6296, 6296, 6297,
3637 6314, 6314, 6314, 6314, 6314, 6314, 6319, 6324, 6329, 6334,
3638 6339, 6344, 6349, 6354, 6359, 6364, 6369, 6374, 6379, 6385,
3639 6392, 6399, 6408, 6417, 6426, 6437, 6438, 6448, 6455, 6460,
3640 6479, 6481, 6492, 6512, 6513, 6516, 6522, 6528, 6536, 6537,
3641 6540, 6546, 6554, 6555, 6558, 6564, 6572, 6577, 6581, 6581,
3642 6611, 6613, 6612, 6625, 6626, 6633, 6635, 6660, 6665, 6670,
3643 6677, 6683, 6688, 6701, 6701, 6701, 6702, 6705, 6706, 6707,
3644 6710, 6711, 6714, 6715, 6718, 6719, 6722, 6725, 6728, 6731,
3645 6732, 6735, 6743, 6750, 6751, 6755
3650#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
3655static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
3659static const char *
const yytname[] =
3661 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"'class'\"",
3662 "\"'module'\"",
"\"'def'\"",
"\"'undef'\"",
"\"'begin'\"",
3663 "\"'rescue'\"",
"\"'ensure'\"",
"\"'end'\"",
"\"'if'\"",
"\"'unless'\"",
3664 "\"'then'\"",
"\"'elsif'\"",
"\"'else'\"",
"\"'case'\"",
"\"'when'\"",
3665 "\"'while'\"",
"\"'until'\"",
"\"'for'\"",
"\"'break'\"",
"\"'next'\"",
3666 "\"'redo'\"",
"\"'retry'\"",
"\"'in'\"",
"\"'do'\"",
3667 "\"'do' for condition\"",
"\"'do' for block\"",
"\"'do' for lambda\"",
3668 "\"'return'\"",
"\"'yield'\"",
"\"'super'\"",
"\"'self'\"",
"\"'nil'\"",
3669 "\"'true'\"",
"\"'false'\"",
"\"'and'\"",
"\"'or'\"",
"\"'not'\"",
3670 "\"'if' modifier\"",
"\"'unless' modifier\"",
"\"'while' modifier\"",
3671 "\"'until' modifier\"",
"\"'rescue' modifier\"",
"\"'alias'\"",
3672 "\"'defined?'\"",
"\"'BEGIN'\"",
"\"'END'\"",
"\"'__LINE__'\"",
3673 "\"'__FILE__'\"",
"\"'__ENCODING__'\"",
"\"local variable or method\"",
3674 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
3675 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
3676 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
3677 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
3678 "\"literal content\"",
"tREGEXP_END",
"\"dummy end\"",
"'.'",
3679 "\"backslash\"",
"\"escaped space\"",
"\"escaped horizontal tab\"",
3680 "\"escaped form feed\"",
"\"escaped carriage return\"",
3681 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
3682 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
3683 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
3684 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
3685 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
3686 "\"( arg\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
"\"**arg\"",
3687 "\"&\"",
"\"->\"",
"\"symbol literal\"",
"\"string literal\"",
3688 "\"backtick literal\"",
"\"regexp literal\"",
"\"word list\"",
3689 "\"verbatim word list\"",
"\"symbol list\"",
"\"verbatim symbol list\"",
3690 "\"terminator\"",
"\"'}'\"",
"\"'#{'\"",
"tSTRING_DVAR",
"tLAMBEG",
3691 "tLABEL_END",
"tIGNORED_NL",
"tCOMMENT",
"tEMBDOC_BEG",
"tEMBDOC",
3692 "tEMBDOC_END",
"tHEREDOC_BEG",
"tHEREDOC_END",
"k__END__",
"tLOWEST",
3693 "'='",
"'?'",
"':'",
"'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
3694 "'*'",
"'/'",
"'%'",
"tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
3695 "'}'",
"'['",
"'\\n'",
"','",
"'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
3696 "$accept",
"option_terms",
"compstmt_top_stmts",
"$@1",
"program",
3697 "top_stmts",
"top_stmt",
"block_open",
"begin_block",
"compstmt_stmts",
3698 "$@2",
"$@3",
"bodystmt",
"$@4",
"stmts",
"stmt_or_begin",
"$@5",
3699 "allow_exits",
"k_END",
"$@6",
"stmt",
"asgn_mrhs",
"asgn_command_rhs",
3700 "command_asgn",
"op_asgn_command_rhs",
3701 "def_endless_method_endless_command",
"endless_command",
"option_'\\n'",
3702 "command_rhs",
"expr",
"$@7",
"$@8",
"def_name",
"defn_head",
"$@9",
3703 "defs_head",
"value_expr_expr",
"expr_value",
"$@10",
"$@11",
3704 "expr_value_do",
"command_call",
"value_expr_command_call",
3705 "command_call_value",
"block_command",
"cmd_brace_block",
"fcall",
3706 "command",
"mlhs",
"mlhs_inner",
"mlhs_basic",
"mlhs_items_mlhs_item",
3707 "mlhs_item",
"mlhs_head",
"mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
3708 "fitem",
"undef_list",
"$@12",
"op",
"reswords",
"asgn_arg_rhs",
"arg",
3709 "op_asgn_arg_rhs",
"range_expr_arg",
"def_endless_method_endless_arg",
3710 "ternary",
"endless_arg",
"relop",
"rel_expr",
"lex_ctxt",
3711 "begin_defined",
"after_rescue",
"value_expr_arg",
"arg_value",
3712 "aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
"opt_call_args",
3713 "value_expr_command",
"call_args",
"$@13",
"command_args",
"block_arg",
3714 "opt_block_arg",
"args",
"arg_splat",
"mrhs_arg",
"mrhs",
"primary",
3715 "$@14",
"$@15",
"@16",
"@17",
"$@18",
"$@19",
"$@20",
"$@21",
"$@22",
3716 "$@23",
"$@24",
"value_expr_primary",
"primary_value",
"k_begin",
"k_if",
3717 "k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
3718 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
3719 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"k_yield",
"then",
3720 "do",
"if_tail",
"opt_else",
"for_var",
"f_marg",
"mlhs_items_f_marg",
3721 "f_margs",
"f_rest_marg",
"f_any_kwrest",
"$@25",
"f_eq",
3722 "f_kw_primary_value",
"f_kwarg_primary_value",
3723 "args_tail_basic_primary_value",
"block_args_tail",
"excessed_comma",
3724 "f_opt_primary_value",
"f_opt_arg_primary_value",
3725 "opt_args_tail_block_args_tail",
"block_param",
"opt_block_param_def",
3726 "block_param_def",
"opt_block_param",
"opt_bv_decl",
"bv_decls",
"bvar",
3727 "max_numparam",
"numparam",
"it_id",
"@26",
"$@27",
"lambda",
3728 "f_larglist",
"lambda_body",
"$@28",
"do_block",
"block_call",
3729 "method_call",
"brace_block",
"@29",
"brace_body",
"@30",
"do_body",
3730 "case_args",
"case_body",
"cases",
"p_pvtbl",
"p_pktbl",
"p_in_kwarg",
3731 "$@31",
"p_case_body",
"p_cases",
"p_top_expr",
"p_top_expr_body",
3732 "p_expr",
"p_as",
"$@32",
"p_alt",
"p_lparen",
"p_lbracket",
3733 "p_expr_basic",
"$@33",
"p_args",
"p_args_head",
"p_args_tail",
"p_find",
3734 "p_rest",
"p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
3735 "p_kw_label",
"p_kwrest",
"p_kwnorest",
"p_any_kwrest",
"p_value",
3736 "range_expr_p_primitive",
"p_primitive",
"p_variable",
"p_var_ref",
3737 "p_expr_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
3738 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
3739 "regexp",
"nonempty_list_' '",
"words_tWORDS_BEG_word_list",
"words",
3740 "word_list",
"word",
"words_tSYMBOLS_BEG_symbol_list",
"symbols",
3741 "symbol_list",
"words_tQWORDS_BEG_qword_list",
"qwords",
3742 "words_tQSYMBOLS_BEG_qsym_list",
"qsymbols",
"qword_list",
"qsym_list",
3743 "string_contents",
"xstring_contents",
"regexp_contents",
3744 "string_content",
"@34",
"@35",
"@36",
"@37",
"string_dend",
3745 "string_dvar",
"symbol",
"ssym",
"sym",
"dsym",
"numeric",
3746 "simple_numeric",
"nonlocal_var",
"user_variable",
"keyword_variable",
3747 "var_ref",
"var_lhs",
"backref",
"$@38",
"superclass",
3748 "f_opt_paren_args",
"f_paren_args",
"f_arglist",
"@39",
"f_kw_arg_value",
3749 "f_kwarg_arg_value",
"args_tail_basic_arg_value",
"args_tail",
3750 "f_opt_arg_value",
"f_opt_arg_arg_value",
"opt_args_tail_args_tail",
3751 "f_args",
"args_forward",
"f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
3752 "f_arg_item",
"f_arg",
"f_label",
"kwrest_mark",
"f_no_kwarg",
3753 "f_kwrest",
"restarg_mark",
"f_rest_arg",
"blkarg_mark",
"f_block_arg",
3754 "opt_f_block_arg",
"value_expr_singleton_expr",
"singleton",
3755 "singleton_expr",
"$@40",
"assoc_list",
"assocs",
"assoc",
"operation2",
3756 "operation3",
"dot_or_colon",
"call_op",
"call_op2",
"rparen",
3757 "rbracket",
"rbrace",
"trailer",
"term",
"terms",
"none", YY_NULLPTR
3761yysymbol_name (yysymbol_kind_t yysymbol)
3763 return yytname[yysymbol];
3767#define YYPACT_NINF (-1154)
3769#define yypact_value_is_default(Yyn) \
3770 ((Yyn) == YYPACT_NINF)
3772#define YYTABLE_NINF (-816)
3774#define yytable_value_is_error(Yyn) \
3775 ((Yyn) == YYTABLE_NINF)
3779static const yytype_int16 yypact[] =
3781 -1154, 5861, 140, -1154, -1154, -1154, -1154, 10474, -1154, -1154,
3782 -1154, -1154, -1154, -1154, -1154, 11529, 11529, -1154, -1154, -1154,
3783 -1154, 6763, -1154, -1154, -1154, -1154, 479, 10320, -9, 31,
3784 -1154, -1154, -1154, -1154, 6139, 6919, -1154, -1154, 6295, -1154,
3785 -1154, -1154, -1154, -1154, -1154, -1154, -1154, 13089, 13089, 13089,
3786 13089, 133, 9233, 9391, 12009, 12249, 10775, -1154, 10166, -1154,
3787 -1154, -1154, 43, 43, 43, 43, 1177, 13209, 13089, -1154,
3788 236, -1154, -1154, 1304, -1154, -1154, -1154, -1154, -1154, 894,
3789 318, 318, -1154, -1154, 110, 181, 123, -1154, 79, 13809,
3790 -1154, 249, -1154, 1945, -1154, -1154, -1154, -1154, 896, 448,
3791 -1154, 598, -1154, 11409, 11409, -1154, -1154, 9853, 13927, 14045,
3792 14163, 10011, 11529, 7387, -1154, 737, 70, -1154, -1154, 324,
3793 -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154,
3794 -1154, -1154, -1154, -1154, -1154, -1154, -1154, 81, 503, -1154,
3795 231, 528, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154,
3796 -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154,
3797 -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154,
3798 -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154,
3799 -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154,
3800 -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154,
3801 -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154,
3802 -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154,
3803 292, -1154, -1154, -1154, -1154, -1154, -1154, 315, 13089, 462,
3804 9391, 13089, 13089, 13089, -1154, 13089, -1154, -1154, 389, 4606,
3805 -1154, 480, -1154, -1154, -1154, 408, -1154, 607, 44, 80,
3806 500, 244, 469, -1154, -1154, 11649, -1154, 11529, -1154, -1154,
3807 11150, 13329, 779, -1154, 438, -1154, 9549, -1154, -1154, -1154,
3808 -1154, -1154, 460, 318, 318, 110, -1154, 665, -1154, 511,
3809 633, 4706, 4706, 703, -1154, 9233, 580, 236, -1154, 1304,
3810 -9, 613, -1154, -1154, 591, 818, 851, -1154, 480, 604,
3811 851, -1154, -9, 715, 1177, 14281, 634, 634, 670, -1154,
3812 726, 777, 797, 807, -1154, -1154, 732, -1154, -1154, 1132,
3813 1147, 678, -1154, 686, 686, 686, 686, 761, -1154, -1154,
3814 -1154, -1154, -1154, -1154, -1154, 6013, 734, 11409, 11409, 11409,
3815 11409, -1154, 13329, 13329, 1810, 753, 762, -1154, 1810, -1154,
3816 766, -1154, -1154, -1154, -1154, 806, -1154, -1154, -1154, -1154,
3817 -1154, -1154, -1154, 9233, 10893, 764, -1154, -1154, 13089, 13089,
3818 13089, 13089, 13089, -1154, -1154, 13089, 13089, 13089, 13089, 13089,
3819 13089, 13089, 13089, -1154, 13089, -1154, -1154, 13089, 13089, 13089,
3820 13089, 13089, 13089, 13089, 13089, 13089, 13089, -1154, -1154, 3522,
3821 11529, 4301, 460, 8169, -1154, 894, -1154, 214, 214, 11409,
3822 9081, 9081, -1154, 236, 774, 868, -1154, -1154, 854, 916,
3823 93, 97, 121, 711, 758, 11409, 296, -1154, 809, 866,
3824 -1154, -1154, -1154, -1154, 73, 114, 461, 625, 637, 656,
3825 677, 738, 769, -1154, -1154, -1154, -1154, -1154, 772, -1154,
3826 -1154, 11011, -1154, -1154, -1154, 2213, -1154, -1154, -1154, -1154,
3827 -1154, -1154, 316, -1154, -1154, -1154, 707, -1154, 13089, 11769,
3828 -1154, -1154, 14662, 11529, 14760, -1154, -1154, 12129, -1154, 13089,
3829 -9, -1154, 801, -9, 803, -1154, -1154, 823, 170, -1154,
3830 -1154, -1154, -1154, -1154, 10474, -1154, -1154, 13089, 813, 827,
3831 849, 14858, 14760, -1154, 31, -9, -1154, -1154, 5468, 840,
3832 845, -1154, 12009, -1154, -1154, 12249, -1154, -1154, -1154, 438,
3833 870, -1154, 853, -1154, -1154, 14281, 14956, 11529, 15054, -1154,
3834 -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154,
3835 -1154, 1153, 103, 1221, 293, 13089, -1154, -1154, 9701, -1154,
3836 -1154, -1154, -1154, -1154, 11289, -1154, -1154, -1154, -1154, -1154,
3837 -1154, -1154, -1154, -1154, -1154, 1349, -1154, -1154, -1154, -1154,
3838 -1154, 855, -1154, -1154, 861, -1154, -1154, -1154, 865, -9,
3839 -1154, -1154, -1154, 903, -1154, 873, 13089, 288, -1154, -1154,
3840 970, 875, 996, -1154, 13449, 8169, 236, 13449, 8169, -1154,
3841 898, -1154, -1154, -1154, 138, 138, 12369, -9, 14281, 897,
3842 -1154, 12489, -1154, 633, 4788, 4788, 4788, 4788, 5010, 3762,
3843 4788, 4788, 4706, 4706, 572, 572, -1154, 4380, 1239, 1239,
3844 1283, 430, 430, 633, 633, 633, 965, 965, 7543, 6451,
3845 7855, 6607, 460, -1154, -9, 904, 765, -1154, 783, -1154,
3846 7075, -1154, -1154, 138, -1154, 8321, 1051, 8777, 197, 138,
3847 138, 1050, 1044, 126, 15152, 11529, 15250, -1154, -1154, -1154,
3848 870, -1154, -1154, -1154, -1154, 15348, 11529, 15446, 8169, 13329,
3849 -1154, -1154, -1154, -9, -1154, -1154, -1154, -1154, 3914, 13569,
3850 13569, 10474, -1154, 13089, 13089, -1154, 480, -1154, -1154, 469,
3851 5159, 7231, -9, 328, 351, 13089, 13089, -1154, -1154, 11889,
3852 -1154, 12129, -1154, -1154, -1154, 13329, 4606, -1154, 13689, 13689,
3853 84, 460, 460, 13569, -1154, 552, -1154, -1154, 851, 14281,
3854 853, 477, 436, -9, 92, 322, -1154, -1154, 1067, -1154,
3855 360, -1154, 43, -1154, -1154, 360, 43, -1154, 633, 919,
3856 -1154, 1349, 1441, -1154, 929, -9, 933, -1154, 429, -1154,
3857 -1154, 349, -1154, 1810, -1154, -1154, 966, 13089, 1810, -1154,
3858 -1154, -1154, -1154, -1154, 1360, -1154, -1154, 479, 1055, -1154,
3859 4606, 1057, 138, -1154, 1055, 1057, 138, -1154, -1154, 960,
3860 -1154, -1154, -1154, -1154, -1154, 13089, -1154, -1154, -1154, 958,
3861 961, 1075, -1154, -1154, 853, 14281, 1064, -1154, -1154, 1084,
3862 995, 1604, -1154, -1154, -1154, 888, 450, -1154, -1154, 1000,
3863 -1154, -1154, -1154, -1154, 806, 982, 837, 11769, -1154, -1154,
3864 -1154, -1154, 806, -1154, 1142, -1154, 1010, -1154, 1144, -1154,
3865 -1154, -1154, -1154, -1154, -1154, 12609, 138, -1154, 1050, 138,
3866 134, 151, -9, 150, 166, 11409, 236, 11409, 8169, 791,
3867 436, -1154, -9, 138, 170, 10628, -1154, 70, 181, -1154,
3868 3321, -1154, -1154, -1154, -1154, 13089, -1154, -1154, -1154, -1154,
3869 456, -1154, -1154, -9, 1007, 170, 479, -1154, -1154, -1154,
3870 -1154, 647, -1154, -1154, -1154, -1154, -1154, 686, -1154, 686,
3871 686, 686, -1154, -9, -1154, 1349, -1154, 1451, -1154, -1154,
3872 1105, 855, -1154, -1154, 1011, 1020, -1154, -1154, 1021, -1154,
3873 1022, -1154, 1011, 13449, -1154, -1154, -1154, -1154, -1154, -1154,
3874 -1154, 1027, 12729, -1154, 853, 508, -1154, -1154, -1154, 15544,
3875 11529, 15642, -1154, -1154, 13089, 13569, 13569, 1013, -1154, -1154,
3876 -1154, 13569, 13569, -1154, -1154, 12849, 1144, -1154, -1154, -1154,
3877 9081, 11409, 138, -1154, -1154, 138, -1154, 13089, -1154, 100,
3878 -1154, -1154, 138, -1154, 168, 197, 8169, 236, 138, -1154,
3879 -1154, -1154, -1154, -1154, -1154, 13089, 13089, -1154, 13089, 13089,
3880 -1154, 12129, -1154, 13689, 1680, 5709, -1154, -1154, 1030, 1035,
3881 -1154, 1360, -1154, 1360, -1154, 1810, -1154, 1360, -1154, -1154,
3882 1055, 1057, 13089, 13089, -1154, -1154, 13089, 1037, 11289, 11289,
3883 13569, 13089, 7699, 8011, -9, 526, 619, 4514, 4514, 4606,
3884 -1154, -1154, -1154, -1154, -1154, 13569, -1154, -1154, -1154, -1154,
3885 958, -1154, 1093, -1154, 1187, -1154, -1154, 214, -1154, -1154,
3886 -1154, 12969, 8473, -1154, -1154, -1154, 138, -1154, -1154, 13089,
3887 1810, -1154, -1154, 115, 1451, 1451, 1011, 1011, 1045, 1011,
3888 4606, 4606, 1060, 1060, 1027, -1154, -1154, 4606, 627, -1154,
3889 -1154, -1154, 2841, 2841, 571, -1154, 4211, 489, 1149, -1154,
3890 1423, -1154, -1154, 56, -1154, 1065, -1154, -1154, -1154, 1054,
3891 -1154, 1059, -1154, 14590, -1154, -1154, -1154, -1154, -1154, 973,
3892 -1154, -1154, -1154, 453, -1154, -1154, -1154, -1154, -1154, -1154,
3893 -1154, -1154, -1154, 440, -1154, -1154, -1154, 14399, 214, -1154,
3894 -1154, 9081, -1154, -1154, 8929, 8321, 13089, -1154, 749, 4514,
3895 9081, -1154, -9, 108, -1154, -1154, -1154, 1035, -1154, -1154,
3896 1360, -1154, -1154, 1993, 9701, -1154, -1154, 8169, -1154, -1154,
3897 -1154, -1154, 14590, 65, -9, 5289, -1154, -9, 1062, -1154,
3898 1058, -1154, -1154, -1154, 1048, -1154, 11409, -1154, 1154, 5289,
3899 -1154, 14590, 971, 1117, 2841, 2841, 571, -16, 691, 4514,
3900 4514, -1154, 1167, -1154, 901, 219, 289, 294, 8169, 236,
3901 -1154, 1010, -1154, -1154, -1154, -1154, 214, 1033, 138, 1072,
3902 1066, -1154, 9701, -1154, 1011, 855, -1154, 1087, -1154, -1154,
3903 -1154, 1090, -1154, -9, 903, 1095, 14517, 1102, -1154, -1154,
3904 -1154, 281, -1154, 1117, 1106, 1107, -1154, -1154, -1154, -1154,
3905 -1154, -9, -1154, -1154, 1108, 14590, 1109, -1154, -1154, -1154,
3906 -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -9, -9,
3907 -9, -9, -9, -9, 372, 15740, 11529, 15838, 1142, -1154,
3908 1187, -1154, -1154, 11409, 11409, -1154, 1481, -1154, 8169, 1115,
3909 -1154, -1154, 349, -1154, 1993, -1154, 1088, 14517, 1993, -1154,
3910 -1154, 1214, 915, 1518, -1154, -1154, 14590, -1154, 971, -1154,
3911 14590, -1154, 5289, 867, -1154, -1154, -1154, -1154, -1154, -1154,
3912 251, 284, -9, 418, 432, -1154, -1154, 8625, -1154, -1154,
3913 -1154, 923, -1154, -1154, 138, -1154, -1154, 855, -1154, -1154,
3914 1121, 1123, -1154, 915, 1128, 1130, -1154, 15936, 1121, 1134,
3915 -9, 1134, -1154, -1154, 442, 495, 1481, -1154, -1154, -1154,
3916 1518, -1154, 1518, -1154, 1993, -1154, 1518, -1154, 1133, 1136,
3917 -1154, 14590, -1154, -1154, -1154, -1154, -1154, 1121, 1121, 1139,
3918 1121, -1154, -1154, 1518, -1154, -1154, 1121, -1154
3924static const yytype_int16 yydefact[] =
3926 2, 0, 0, 47, 406, 407, 408, 0, 399, 400,
3927 401, 404, 26, 26, 26, 393, 394, 395, 396, 418,
3928 419, 323, 699, 698, 700, 701, 64, 0, 64, 0,
3929 815, 703, 702, 704, 97, 99, 693, 692, 98, 694,
3930 688, 689, 690, 691, 637, 709, 710, 0, 0, 0,
3931 0, 0, 0, 0, 815, 815, 126, 490, 663, 663,
3932 665, 667, 0, 0, 0, 0, 0, 0, 0, 6,
3933 3, 8, 26, 10, 43, 49, 40, 58, 61, 46,
3934 718, 718, 70, 91, 323, 90, 0, 112, 0, 116,
3935 128, 0, 237, 79, 246, 253, 282, 283, 267, 284,
3936 398, 0, 351, 0, 0, 87, 87, 0, 0, 0,
3937 0, 0, 360, 323, 370, 94, 368, 340, 341, 636,
3938 638, 342, 343, 646, 344, 652, 346, 656, 345, 658,
3939 347, 635, 680, 681, 634, 686, 697, 705, 706, 348,
3940 0, 349, 7, 1, 205, 216, 206, 229, 202, 222,
3941 212, 211, 232, 233, 227, 210, 209, 204, 230, 234,
3942 235, 214, 203, 217, 221, 223, 215, 208, 224, 231,
3943 226, 225, 218, 228, 213, 201, 220, 219, 200, 207,
3944 198, 199, 195, 196, 197, 155, 157, 156, 190, 191,
3945 186, 168, 169, 170, 177, 174, 176, 171, 172, 192,
3946 193, 178, 179, 183, 187, 173, 175, 165, 166, 167,
3947 180, 181, 182, 184, 185, 188, 189, 194, 160, 162,
3948 33, 158, 159, 161, 402, 403, 405, 0, 789, 0,
3949 0, 334, 792, 326, 663, 0, 318, 316, 0, 298,
3950 299, 329, 317, 110, 322, 815, 330, 0, 705, 706,
3951 0, 349, 815, 785, 111, 815, 509, 0, 107, 65,
3952 64, 0, 0, 28, 815, 12, 0, 11, 27, 295,
3953 393, 394, 510, 718, 718, 0, 261, 0, 360, 363,
3954 262, 251, 252, 357, 24, 0, 0, 3, 21, 23,
3955 64, 114, 20, 353, 0, 64, 64, 300, 0, 0,
3956 64, 783, 64, 0, 0, 0, 718, 718, 124, 397,
3957 0, 132, 133, 140, 487, 683, 0, 682, 684, 0,
3958 0, 0, 643, 647, 659, 653, 661, 687, 74, 273,
3959 274, 812, 811, 5, 813, 0, 0, 0, 0, 0,
3960 0, 815, 0, 0, 749, 0, 717, 389, 749, 715,
3961 0, 391, 409, 514, 504, 100, 516, 367, 410, 516,
3962 499, 815, 130, 0, 122, 117, 815, 77, 0, 0,
3963 0, 0, 0, 291, 292, 0, 0, 0, 0, 249,
3964 250, 0, 0, 75, 0, 289, 290, 0, 0, 0,
3965 0, 0, 0, 0, 0, 0, 0, 802, 803, 805,
3966 815, 804, 0, 0, 86, 84, 85, 0, 0, 0,
3967 0, 0, 377, 3, 4, 0, 430, 429, 0, 0,
3968 705, 706, 349, 150, 151, 0, 0, 153, 815, 0,
3969 705, 706, 349, 387, 225, 218, 228, 213, 195, 196,
3970 197, 155, 156, 781, 81, 80, 780, 779, 0, 778,
3971 109, 64, 108, 805, 804, 0, 369, 639, 815, 815,
3972 163, 788, 357, 333, 791, 325, 0, 815, 0, 0,
3973 319, 328, 805, 815, 804, 815, 815, 0, 320, 750,
3974 64, 312, 815, 64, 815, 311, 324, 0, 64, 366,
3975 73, 30, 32, 31, 0, 815, 296, 0, 0, 0,
3976 0, 805, 804, 815, 0, 64, 355, 14, 0, 113,
3977 0, 358, 810, 809, 301, 810, 303, 359, 784, 0,
3978 139, 687, 127, 119, 717, 0, 805, 815, 804, 488,
3979 669, 685, 672, 670, 664, 640, 641, 666, 642, 668,
3980 644, 0, 0, 0, 0, 0, 814, 9, 0, 34,
3981 35, 36, 37, 297, 0, 71, 72, 756, 753, 752,
3982 751, 754, 762, 763, 750, 0, 769, 764, 773, 772,
3983 768, 815, 765, 722, 815, 728, 748, 731, 734, 64,
3984 729, 755, 757, 758, 760, 734, 721, 767, 443, 442,
3985 771, 734, 775, 727, 0, 0, 0, 0, 0, 487,
3986 0, 514, 101, 487, 0, 0, 0, 64, 0, 118,
3987 131, 0, 527, 259, 266, 268, 269, 270, 277, 278,
3988 271, 272, 247, 248, 275, 276, 527, 64, 263, 264,
3989 265, 254, 255, 256, 257, 258, 293, 294, 793, 795,
3990 794, 796, 323, 507, 64, 815, 793, 795, 794, 796,
3991 323, 508, 815, 0, 421, 0, 420, 0, 0, 0,
3992 0, 0, 375, 357, 805, 815, 804, 380, 385, 150,
3993 151, 152, 711, 383, 713, 805, 815, 804, 0, 0,
3994 800, 801, 82, 64, 362, 793, 794, 503, 323, 0,
3995 0, 0, 815, 0, 0, 787, 331, 327, 332, 815,
3996 793, 794, 64, 793, 794, 0, 0, 786, 306, 313,
3997 308, 315, 806, 365, 29, 0, 279, 13, 0, 0,
3998 356, 0, 815, 0, 25, 115, 22, 354, 64, 0,
3999 125, 797, 138, 64, 793, 794, 489, 673, 0, 645,
4000 0, 649, 0, 655, 651, 0, 0, 657, 260, 0,
4001 38, 0, 441, 433, 435, 64, 438, 431, 0, 726,
4002 777, 0, 725, 0, 744, 716, 0, 0, 0, 741,
4003 720, 594, 766, 770, 0, 746, 774, 64, 59, 62,
4004 286, 280, 0, 719, 60, 281, 0, 488, 512, 0,
4005 488, 416, 417, 513, 498, 334, 92, 93, 41, 336,
4006 0, 45, 335, 129, 123, 0, 0, 69, 48, 67,
4007 0, 304, 329, 236, 42, 0, 349, 525, 525, 0,
4008 815, 815, 514, 506, 104, 0, 511, 313, 815, 815,
4009 310, 505, 102, 309, 815, 352, 815, 422, 815, 424,
4010 88, 423, 373, 374, 413, 0, 0, 527, 0, 0,
4011 797, 356, 64, 793, 794, 0, 0, 0, 0, 150,
4012 151, 154, 64, 0, 64, 0, 361, 500, 95, 50,
4013 304, 238, 57, 245, 164, 0, 790, 321, 815, 815,
4014 511, 815, 815, 64, 815, 64, 64, 56, 244, 302,
4015 120, 511, 26, 674, 671, 678, 679, 648, 650, 660,
4016 654, 662, 39, 64, 440, 0, 759, 0, 776, 723,
4017 767, 815, 733, 732, 734, 734, 445, 730, 734, 761,
4018 734, 758, 734, 0, 815, 815, 390, 392, 489, 96,
4019 489, 339, 0, 815, 121, 357, 815, 815, 815, 805,
4020 815, 804, 526, 526, 0, 0, 0, 0, 105, 807,
4021 815, 0, 0, 103, 411, 815, 18, 626, 415, 414,
4022 0, 0, 0, 425, 427, 0, 89, 0, 518, 0,
4023 378, 525, 0, 379, 511, 0, 0, 0, 0, 511,
4024 388, 782, 83, 501, 502, 0, 0, 815, 0, 0,
4025 307, 314, 364, 0, 749, 0, 432, 434, 436, 439,
4026 724, 0, 745, 0, 742, 0, 737, 0, 739, 747,
4027 66, 288, 0, 0, 26, 26, 334, 337, 0, 0,
4028 0, 0, 793, 794, 64, 793, 794, 0, 0, 285,
4029 54, 242, 55, 243, 106, 0, 52, 240, 53, 241,
4030 627, 628, 815, 629, 815, 15, 428, 0, 371, 372,
4031 519, 0, 0, 526, 376, 381, 0, 712, 384, 0,
4032 749, 491, 494, 0, 0, 0, 734, 734, 734, 734,
4033 63, 287, 815, 815, 338, 44, 68, 305, 511, 618,
4034 624, 590, 0, 0, 0, 526, 64, 526, 578, 663,
4035 0, 617, 78, 535, 541, 543, 546, 539, 538, 574,
4036 540, 583, 586, 589, 595, 596, 585, 549, 604, 597,
4037 550, 605, 606, 607, 608, 609, 610, 611, 612, 614,
4038 613, 615, 616, 593, 76, 51, 239, 0, 0, 631,
4039 412, 0, 19, 633, 0, 0, 0, 520, 815, 0,
4040 0, 386, 64, 0, 677, 676, 675, 437, 743, 738,
4041 0, 735, 740, 479, 0, 477, 476, 0, 602, 603,
4042 151, 622, 0, 566, 64, 567, 571, 64, 0, 561,
4043 0, 815, 564, 577, 0, 619, 0, 620, 0, 536,
4044 544, 0, 584, 588, 600, 601, 0, 526, 526, 0,
4045 0, 592, 0, 630, 0, 705, 706, 349, 0, 3,
4046 16, 815, 521, 523, 524, 522, 0, 532, 0, 481,
4047 0, 496, 0, 492, 734, 815, 448, 815, 454, 475,
4048 457, 460, 480, 64, 758, 460, 447, 460, 453, 515,
4049 517, 64, 559, 581, 569, 568, 560, 572, 808, 562,
4050 591, 64, 542, 537, 574, 0, 575, 579, 663, 587,
4051 582, 598, 599, 623, 548, 558, 547, 554, 64, 64,
4052 64, 64, 64, 64, 357, 805, 815, 804, 815, 632,
4053 815, 426, 528, 0, 0, 382, 0, 493, 0, 0,
4054 736, 452, 0, 451, 0, 471, 0, 0, 455, 466,
4055 468, 0, 446, 0, 473, 565, 0, 573, 0, 621,
4056 0, 545, 0, 0, 551, 552, 553, 555, 556, 557,
4057 797, 356, 64, 793, 794, 625, 17, 0, 533, 534,
4058 485, 64, 483, 486, 0, 495, 449, 815, 459, 458,
4059 460, 460, 478, 456, 460, 460, 357, 805, 460, 570,
4060 64, 575, 576, 580, 511, 815, 0, 482, 497, 450,
4061 0, 472, 0, 469, 0, 463, 0, 465, 797, 356,
4062 474, 0, 563, 530, 531, 529, 484, 460, 460, 460,
4063 460, 470, 464, 0, 461, 467, 460, 462
4067static const yytype_int16 yypgoto[] =
4069 -1154, -102, 1031, -1154, -1154, -1154, 963, -1154, 792, -17,
4070 -1154, -1154, -539, -1154, 174, 798, -1154, 0, -1154, -1154,
4071 26, -1154, -1154, -24, -1154, 15, -552, 169, -565, -100,
4072 -1154, -1154, 443, 2573, -1154, 3086, -1154, -25, -1154, -1154,
4073 1201, -38, -1154, 706, -1154, -659, 1206, 22, 1207, -169,
4074 35, -445, -72, -1154, 2, 3822, -400, 1204, -46, 6,
4075 -1154, -1154, 12, -1154, -1154, 4667, -1154, -1154, -1154, -1154,
4076 -547, 1222, -1154, 899, 824, 222, -1154, 1002, -1154, 497,
4077 28, 639, -375, -1154, 88, -1154, 13, -393, -231, 38,
4078 -423, -1154, -567, -47, -1154, -1154, -1154, -1154, -1154, -1154,
4079 -1154, -1154, -1154, -1154, -1154, -1154, 986, -1154, -1154, -1154,
4080 -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154, -1154,
4081 -1154, -1154, 366, -1154, -443, 1837, 2057, -386, 355, 131,
4082 -797, -1154, -794, -801, 586, 433, -955, -1154, 127, 57,
4083 -1154, -1154, 199, -1154, -1153, 66, 336, -1154, 282, -1154,
4084 -1154, 139, -1154, 17, 260, -58, -88, -1154, -1154, 337,
4085 -1154, -1154, -1154, 499, -1154, -1154, -115, -1154, -528, -1154,
4086 1009, -1154, -773, -1154, -698, -755, -521, -1154, 24, -1154,
4087 -1154, -909, -213, -1154, -1154, -1154, -1154, -1154, 125, -1154,
4088 -143, -1154, -636, -750, -1024, -390, -1051, -1036, -1154, 189,
4089 -1154, -1154, -568, 191, -1154, -1154, -555, 198, -1154, -1154,
4090 -1154, 109, -1154, -1154, 117, 1029, 1459, -1154, 1269, 1564,
4091 1759, 37, -1154, 1883, -1154, 847, -1154, 1968, -1154, -1154,
4092 2174, -1154, 2208, -1154, -1154, -57, -1154, -1154, -188, -1154,
4093 -1154, -1154, -1154, -1154, -1154, 50, -1154, -1154, -1154, -1154,
4094 33, -50, 3681, -1, 1280, 3945, 3453, -1154, -1154, 9,
4095 785, 68, -1154, 632, -1154, -1154, -301, -677, 630, -421,
4096 -320, -184, -1141, -549, -284, -745, -584, -472, -678, -1154,
4097 -727, -1154, -576, -1154, -562, -542, -1154, -1154, -1154, -1154,
4098 -1154, 113, -437, -381, -1154, -1154, -91, 1284, -116, 41,
4099 60, -215, -59, -64, 14
4103static const yytype_int16 yydefgoto[] =
4105 0, 333, 69, 1, 2, 70, 71, 266, 267, 652,
4106 1134, 1270, 653, 1044, 287, 288, 504, 224, 72, 494,
4107 289, 74, 75, 76, 77, 78, 778, 487, 808, 79,
4108 626, 612, 444, 273, 865, 274, 406, 407, 409, 966,
4109 410, 82, 797, 809, 83, 602, 275, 85, 86, 290,
4110 87, 522, 88, 89, 90, 238, 427, 428, 218, 219,
4111 220, 691, 641, 222, 92, 93, 94, 95, 96, 97,
4112 781, 395, 98, 553, 497, 554, 240, 241, 294, 813,
4113 830, 831, 480, 242, 481, 257, 258, 244, 470, 645,
4114 246, 801, 802, 99, 403, 510, 848, 661, 855, 1140,
4115 858, 856, 678, 595, 598, 100, 277, 102, 103, 104,
4116 105, 106, 107, 108, 109, 110, 111, 356, 359, 955,
4117 1131, 845, 960, 961, 793, 278, 279, 655, 840, 962,
4118 963, 419, 753, 754, 755, 756, 571, 766, 767, 1216,
4119 1217, 1218, 1328, 1289, 1220, 1221, 1285, 1222, 1154, 1155,
4120 1223, 1210, 1321, 1322, 529, 736, 892, 314, 1143, 114,
4121 1061, 1213, 1278, 360, 115, 116, 357, 599, 600, 603,
4122 604, 969, 846, 1205, 942, 1027, 817, 1317, 849, 1365,
4123 1206, 1092, 1233, 1094, 1245, 1095, 1189, 1190, 1096, 1298,
4124 1164, 1165, 1166, 1098, 1099, 1246, 1168, 1100, 1101, 1102,
4125 1103, 1104, 572, 1106, 1107, 1108, 1109, 1110, 1111, 1112,
4126 1113, 956, 1042, 1128, 1132, 117, 118, 119, 120, 121,
4127 122, 323, 123, 124, 541, 740, 125, 126, 543, 127,
4128 128, 129, 130, 542, 544, 316, 320, 321, 534, 738,
4129 737, 893, 995, 1146, 894, 131, 132, 317, 133, 134,
4130 135, 136, 248, 249, 139, 250, 251, 857, 673, 345,
4131 346, 347, 348, 573, 574, 575, 912, 577, 578, 764,
4132 579, 580, 581, 582, 921, 584, 585, 586, 587, 588,
4133 589, 590, 591, 592, 593, 759, 447, 448, 449, 679,
4134 299, 484, 253, 721, 643, 682, 677, 402, 489, 826,
4135 1172, 514, 656, 414, 269
4141static const yytype_int16 yytable[] =
4143 138, 456, 319, 405, 405, 412, 335, 405, 318, 309,
4144 401, 334, 315, 225, 226, 142, 757, 365, 642, 221,
4145 650, 478, 657, 919, 454, 644, 671, 73, 596, 328,
4146 236, 236, 762, 263, 911, 286, 293, 237, 237, 221,
4147 707, 965, 309, 576, 814, 784, 698, 576, 334, 256,
4148 785, 138, 138, 245, 245, 312, 782, 223, 308, 786,
4149 583, 309, 309, 309, 583, 445, 292, 292, 297, 301,
4150 221, 483, 336, 789, 688, 972, 697, 223, 707, 408,
4151 730, 516, 413, 910, 697, 518, 913, 291, 312, 698,
4152 350, 642, 295, 650, 349, 349, 352, 355, 702, 327,
4153 324, 325, 326, 243, 254, 818, 999, 421, 431, 431,
4154 431, 997, 354, 654, 1235, 1144, 505, -135, -141, 1124,
4155 943, 722, -142, 221, 869, 872, 452, 236, 252, 252,
4156 1247, 1329, 537, 539, 237, 1323, 352, 1211, 259, 863,
4157 143, 1234, -699, -64, -707, 259, -149, 722, 791, 351,
4158 245, -148, 733, 1260, 1263, 1244, 474, 1178, 887, -146,
4159 488, 490, 794, 804, 769, 948, 1178, 296, 300, 742,
4160 775, -699, 785, 953, 509, -144, -147, 466, -141, 914,
4161 -708, -707, 265, -698, 879, 507, 502, 915, 1028, 283,
4162 922, -145, 920, -143, 607, 261, 908, 264, 1215, 908,
4163 450, 1329, 757, 904, 322, 1323, 792, 342, 343, 358,
4164 835, 1179, -698, 286, -142, -141, 842, 843, -147, 528,
4165 -581, 353, 743, 508, 839, 252, -135, 654, 334, 138,
4166 1207, 1212, -141, 523, 362, 1145, -132, 405, 405, 405,
4167 405, -794, 555, 556, 292, 1247, -135, -135, -132, 1247,
4168 -135, 1343, -133, 478, 331, 1051, 919, 361, 309, 471,
4169 332, 353, 1340, 1147, -146, 138, 471, 255, 286, 485,
4170 236, 997, 236, 1053, 707, 861, -140, 237, 1342, 237,
4171 142, -139, 499, 500, 138, 722, 698, 349, 349, -137,
4172 852, -793, 73, 482, 947, 245, 722, -147, 1139, 292,
4173 256, 862, -142, 354, 312, -135, -138, -149, -794, 405,
4174 1343, 662, 549, 550, 551, 552, 697, 309, 697, 978,
4175 291, -136, 771, -134, 259, 405, 971, 666, 913, 1215,
4176 1162, 458, 1171, 1215, 138, 684, 1167, 521, 1215, 926,
4177 772, 1203, 351, 927, 476, 486, 286, -136, 669, 1123,
4178 1123, 331, 670, 741, 334, 741, 757, 332, 757, 746,
4179 934, 73, 138, 312, 708, 1204, 609, 710, 331, 1000,
4180 252, 1010, 713, -141, 332, 351, 1011, 292, -149, -141,
4181 1030, 1032, 1178, 366, 658, -148, 1036, 1038, 1041, 725,
4182 331, 1097, 1097, 659, 660, 1215, 332, 1215, 291, 1215,
4183 668, 1215, 138, 970, 698, -146, 973, 562, -793, 138,
4184 138, -146, 747, 649, 485, 236, 692, 292, 1215, 1066,
4185 980, 1067, 237, 1069, 292, 292, 530, 563, 881, 1068,
4186 651, -144, 1254, 1256, 697, 259, 59, 1056, -147, 1259,
4187 1262, -794, 674, -142, -147, -145, 1011, 460, -149, -142,
4188 -148, 882, -815, 523, -149, -143, -136, 567, 568, 1105,
4189 1105, 1123, -144, 765, 513, 513, 236, 649, 877, 513,
4190 1125, 519, 260, 237, 771, 344, -136, -136, 309, 583,
4191 -136, 532, 533, 687, 583, -145, 649, 485, 236, 245,
4192 569, 803, 1191, 1002, 1004, 237, 471, 1006, 471, 1008,
4193 714, 1009, -137, 1097, 1123, -356, 221, 138, 368, 698,
4194 959, 1123, 1123, 889, 649, 757, 757, -397, 462, 1048,
4195 847, 322, 1049, 467, 312, 883, -148, 1158, 1159, 1054,
4196 -700, 749, -148, -356, -356, 1058, 523, 783, 568, 683,
4197 649, 485, 236, 919, 223, -397, -397, 138, 1363, 237,
4198 459, 1186, 898, 138, 707, 1327, 987, 898, 642, -700,
4199 650, 309, 292, 469, 252, 1024, 1214, 866, 796, 1225,
4200 569, 1105, -144, 796, 392, 393, 394, 1227, -144, 864,
4201 750, 468, 699, 1052, -149, 760, -145, 807, 760, -356,
4202 -143, 1228, -145, -794, 138, 495, -143, 138, 697, 841,
4203 475, -397, -143, -708, 910, 919, 1187, 312, 503, 292,
4204 1188, -137, 292, 1141, 1105, 885, 779, 255, 1230, 779,
4205 1123, 1105, 1105, 669, 477, 728, 828, 1160, 459, 1251,
4206 1252, -137, -137, 259, -793, -137, 260, -142, 836, 906,
4207 838, -64, -148, 259, 800, 1148, 1149, 1151, 1152, 800,
4208 368, 796, 796, 877, 138, 824, 138, 890, -133, 471,
4209 -144, 1135, -149, 832, 833, 807, 807, 397, 451, 292,
4210 823, 292, -134, 1281, 1062, 1283, 397, 138, 649, 485,
4211 236, 1226, 309, -140, 1161, 796, -113, 237, 895, 649,
4212 485, 236, 292, 576, -701, 398, 399, 874, 237, 807,
4213 1330, 868, 833, 221, 398, 472, -703, -129, 1331, 1338,
4214 583, 368, 1335, 471, 390, 391, 392, 393, 394, 829,
4215 908, 583, 1228, -701, 941, -702, 1228, 950, 312, 928,
4216 1105, 1228, 930, 523, 397, -703, 833, -97, 506, 1324,
4217 1142, 223, 1198, 880, 530, 538, -704, -112, 981, 823,
4218 511, 400, 983, -145, -702, 405, 517, 405, 309, 576,
4219 473, -143, 398, 501, 959, 1275, 844, 990, 1367, 992,
4220 1368, 520, 1370, 530, 891, -704, 583, 897, 1369, 899,
4221 -695, -134, 900, 901, -98, 1349, 1253, 996, 1228, 1376,
4222 1228, 344, 1228, 1280, 1228, 397, 819, 976, 530, 532,
4223 533, -134, -134, 503, 312, -134, 397, -695, -695, -695,
4224 1226, 1228, 1226, 825, 1093, 1093, 1226, -797, 473, 445,
4225 1272, 1226, 884, 398, 526, 525, 535, -696, 532, 533,
4226 975, 693, 977, 491, 398, 453, -695, -148, -696, 545,
4227 1014, 680, 1015, 492, 493, 259, -705, 540, 957, -64,
4228 964, 531, 964, 532, 533, -696, -696, 138, -139, 787,
4229 -797, 405, -97, 790, -695, 828, -706, -696, -97, 1224,
4230 681, 825, 292, 1163, -705, -705, -349, 221, 1226, 527,
4231 1226, 1348, 1226, 829, 1226, 548, 722, 594, -797, -797,
4232 1183, 1312, 994, 974, -706, -706, -714, 513, 471, -144,
4233 597, 1226, 825, 979, -349, -349, 1339, 796, 796, -98,
4234 1341, -696, 601, 796, 796, -98, 841, -145, 1057, 610,
4235 -135, 807, 807, 397, 663, 760, 1093, 807, 807, 268,
4236 -705, 342, 343, 530, 546, 397, 1047, 950, -136, -357,
4237 884, 667, -797, 1046, -797, 779, 923, 672, -793, 1231,
4238 -706, 398, 664, 649, 485, 236, 709, 397, 711, 138,
4239 -349, 718, 237, 398, 675, 717, 1163, -357, -357, 1043,
4240 397, -143, 259, 512, 292, 138, 1163, 1163, 1063, 373,
4241 374, 712, 796, 719, 397, 398, 939, 101, 532, 533,
4242 292, 1240, -134, 800, 138, -129, 807, 796, 398, 1265,
4243 1224, 247, 247, 727, 1224, 259, 515, 665, 729, 292,
4244 758, 807, 398, 1337, 1072, 1073, 761, 138, 138, 676,
4245 763, 825, 773, -357, 958, 959, 1122, 1122, 768, 1081,
4246 774, 825, 1174, 385, 386, 1138, 1243, -444, 101, 101,
4247 1177, 940, 310, 368, 1075, 1076, 1258, 1261, 776, 563,
4248 788, 138, 805, 247, 1266, 993, 1129, 298, 1133, 827,
4249 381, 382, 1184, 1185, 837, 1078, 292, 844, 676, 847,
4250 1224, 902, 1257, 1273, 1274, 310, 405, 259, 1346, 567,
4251 309, 1122, 1122, 1248, 905, 1122, 1156, 1156, 907, 247,
4252 247, 524, 524, 247, 418, 429, 429, 1269, 247, 924,
4253 916, 925, 1122, 1267, 387, 388, 389, 390, 391, 392,
4254 393, 394, 929, -329, 530, 1295, 932, 1200, 1201, 933,
4255 935, 36, 37, 1208, 39, 1299, 1196, 1169, 936, 937,
4256 138, 45, 46, 138, 138, 508, 944, 1229, 1122, 138,
4257 334, 949, 1304, 1305, 1306, 292, 1012, 1013, 292, 292,
4258 954, 1241, 964, 138, 292, 1018, 138, 772, 1019, 959,
4259 1021, 1122, 991, 496, 1122, 1034, 1001, 535, 292, 532,
4260 533, 292, 1240, 405, 405, 1003, 1005, 1007, 1122, 309,
4261 1122, 1268, -333, 1122, 1122, 1064, 871, 873, 1122, 1122,
4262 1065, 1303, -331, 825, 1127, 1279, 1130, 138, 530, 1153,
4263 1150, 1173, 871, 873, 1180, 1232, 1079, 84, 1236, 1181,
4264 1238, 138, 292, 530, 1182, 964, 101, 1237, 1178, 530,
4265 888, 84, 84, 1264, 1277, 431, 292, 1332, 1255, 760,
4266 461, 760, 1276, 463, 464, 465, 40, 41, 42, 43,
4267 309, 247, 1282, 247, 1122, 1284, 247, 247, 1318, 1319,
4268 1288, 535, 101, 532, 533, 825, 1170, 1293, 84, 84,
4269 606, 1296, 1297, 1300, 1302, 611, 536, 1325, 532, 533,
4270 1336, 101, 739, 84, 532, 533, 1350, 138, 1352, 649,
4271 485, 236, 957, 1354, 1133, 1356, 431, 530, 237, 1361,
4272 -793, 310, 292, -794, 1373, 1122, 724, 498, 547, 1122,
4273 1345, 1122, 1307, 1308, 1309, 1199, 726, 411, 982, 84,
4274 84, 1209, 798, 84, 433, 416, 138, 368, 84, 715,
4275 396, 101, 1045, 247, 247, 247, 247, 867, 247, 247,
4276 1055, 292, 1271, 825, 381, 382, 825, 903, 998, 1326,
4277 744, 760, 532, 533, 337, 338, 339, 340, 341, 101,
4278 310, 1287, 1219, 1344, 1334, 1157, 825, 689, 690, 964,
4279 1122, 368, 1286, 1366, 1091, 1091, 694, 984, 605, 1364,
4280 1301, 1249, 888, 1250, 705, 706, 1242, 1315, 381, 382,
4281 389, 390, 391, 392, 393, 394, 247, 1316, 457, 101,
4282 745, 446, 1209, 909, 496, 247, 101, 101, 918, 455,
4283 1362, 557, 723, 558, 559, 560, 561, 0, 0, 0,
4284 0, 247, 557, 0, 558, 559, 560, 561, 562, 1091,
4285 1091, 0, 0, 1091, 0, 390, 391, 392, 393, 394,
4286 825, 825, 825, 0, 0, 0, 84, 247, 563, 0,
4287 1091, 0, 1031, 1033, 0, 0, 0, 0, 1037, 1039,
4288 0, 751, 564, 0, 0, 0, 752, 0, 0, 247,
4289 0, 84, 565, 84, 0, 0, 84, 84, 567, 568,
4290 695, 696, 84, 0, 0, 1175, 1091, 36, 37, 298,
4291 39, 825, 1031, 1033, 0, 1037, 1039, 0, 0, 0,
4292 1347, 84, 0, 557, 101, 558, 559, 560, 561, 1091,
4293 0, 569, 1091, 557, 0, 558, 559, 560, 561, 1170,
4294 0, 310, 0, 247, 696, 0, 1091, 298, 1091, 0,
4295 0, 1091, 1091, 0, 0, 1176, 1091, 1091, 0, 0,
4296 0, 0, 1126, 1320, 101, 558, 559, 560, 561, 0,
4297 101, 84, 0, 84, 84, 84, 84, 0, 84, 84,
4298 0, 834, 0, 751, 0, 0, 1126, 0, 0, 0,
4299 0, 1290, 0, 1294, 0, 0, 0, 0, 0, 84,
4300 557, 0, 558, 559, 560, 561, 562, 0, 0, 0,
4301 247, 101, 1091, 247, 101, 0, 0, 0, 770, 0,
4302 0, 875, 247, 0, 310, 0, 563, 815, 0, 0,
4303 0, 0, 0, 0, 0, 0, 84, 0, 799, 84,
4304 0, 0, 0, 812, 0, 84, 84, 84, 0, 0,
4305 565, 0, 0, 0, 0, 0, 567, 568, 0, 0,
4306 0, 84, 0, 1091, 0, 0, 0, 1091, 0, 1091,
4307 0, 101, 0, 101, 0, 0, 0, 0, 938, 0,
4308 0, 247, 0, 0, 0, 0, 0, 84, 0, 569,
4309 0, 0, 247, 0, 101, 247, 1351, 1353, 0, 0,
4310 1355, 1357, 0, 0, 1360, 815, 815, 0, 0, 84,
4311 0, 0, 368, 369, 370, 371, 372, 373, 374, 375,
4312 376, 377, 378, 379, 380, 876, 0, 0, 1091, 381,
4313 382, 247, 0, 1371, 1372, 1374, 1375, 0, 0, 815,
4314 0, 696, 1377, 298, 84, 310, 0, 0, 0, 945,
4315 946, 0, 0, 0, 0, 0, 0, 951, 952, 0,
4316 0, 0, 557, 84, 558, 559, 560, 561, 562, 384,
4317 0, 385, 386, 387, 388, 389, 390, 391, 392, 393,
4318 394, 0, 0, 0, 84, 0, 0, 0, 563, -298,
4319 84, 0, 0, 0, 0, 0, 0, 0, 0, 917,
4320 0, 0, 564, 0, 0, 0, 0, 985, 986, 0,
4321 988, 989, 565, 0, 0, 0, 0, 566, 567, 568,
4322 0, 310, 0, 0, 0, 0, 0, 931, 0, 0,
4323 84, 84, 0, 84, 84, 0, 0, 0, 0, 0,
4324 0, 0, 84, 0, 0, 0, 0, 84, 0, 0,
4325 0, 569, 0, 0, 570, 0, 0, 0, 0, 696,
4326 0, 0, 0, 0, 0, 0, 1020, 1060, 112, 0,
4327 0, 247, 0, 247, 101, 0, 0, 968, 0, 1035,
4328 0, 0, 112, 112, 0, 0, 0, 0, 0, 0,
4329 0, 84, 557, 84, 558, 559, 560, 561, 562, 0,
4330 0, 84, 0, 0, 0, 0, 0, 0, 0, 0,
4331 0, 0, 84, 0, 84, 84, 1059, 0, 563, 112,
4332 112, 0, 0, 0, 0, 84, 84, 0, 0, 0,
4333 0, 0, 564, 0, 112, 0, 0, 0, 0, 247,
4334 0, 0, 565, 0, 0, 0, 0, 566, 567, 568,
4335 0, 84, 0, 0, 0, 0, 247, 0, 0, 84,
4336 0, 815, 815, 0, 1017, 0, 0, 815, 815, 0,
4337 112, 112, 0, 0, 112, 0, 101, 247, 0, 112,
4338 0, 569, 0, 0, 570, 0, 0, 1040, 0, 0,
4339 0, 0, 101, 0, 0, 0, 0, 0, 0, 1050,
4340 367, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4341 0, 101, 0, 0, 0, 0, 0, 0, 0, 0,
4342 0, 0, 0, 298, 0, 0, 0, 0, 0, 0,
4343 0, 0, 0, 0, 101, 101, 815, 0, 0, 0,
4344 0, 0, 0, 0, 0, 0, 0, 0, 1074, 0,
4345 0, 815, 0, 368, 369, 370, 371, 372, 373, 374,
4346 375, 376, 377, 378, 379, 380, 0, 0, 101, 0,
4347 381, 382, 0, 0, 0, 557, 383, 558, 559, 560,
4348 561, 562, 0, 1137, 0, 0, 1114, 1114, 113, 0,
4349 0, 84, 0, 84, 84, 0, 0, 112, 0, 0,
4350 1239, 563, 113, 113, 0, 0, 0, 0, 0, 0,
4351 384, 0, 385, 386, 387, 388, 389, 390, 391, 392,
4352 393, 394, 112, 0, 112, 565, 0, 112, 112, 0,
4353 566, 567, 568, 112, 0, 0, 0, 0, 0, 113,
4354 113, 1114, 1114, 1194, 0, 1114, 0, 101, 0, 0,
4355 101, 101, 112, 0, 113, 0, 101, 0, 0, 84,
4356 0, 0, 1114, 0, 569, 0, 0, 570, 1202, 0,
4357 101, 0, 0, 101, 0, 0, 84, 0, 0, 0,
4358 0, 84, 84, 0, 0, 0, 0, 84, 84, 0,
4359 113, 113, 247, 0, 113, 0, 84, 84, 1114, 113,
4360 0, 0, 112, 0, 112, 112, 112, 112, 0, 112,
4361 112, 0, 84, 0, 101, 0, 0, 0, 0, 0,
4362 0, 1114, 0, 0, 1114, 0, 0, 0, 101, 0,
4363 112, 84, 0, 0, 0, 0, 0, 0, 1114, 0,
4364 1114, 0, 1292, 1114, 1114, 0, 0, 0, 1114, 1114,
4365 0, 0, 0, 0, 84, 84, 84, 0, 0, 0,
4366 0, 0, 0, 0, 0, 0, 0, 112, 0, 0,
4367 112, 84, 0, 0, 0, 0, 112, 112, 112, 0,
4368 0, 0, 247, 0, 0, 0, 0, 0, 84, 247,
4369 247, 0, 112, 0, 101, 685, 647, 0, 0, 686,
4370 0, 0, 0, 1333, 1114, 0, 0, 0, 0, 0,
4371 0, 0, 0, 0, 0, 0, 0, 113, 112, 188,
4372 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
4373 197, 198, 0, 101, 0, 0, 199, 200, 201, 202,
4374 112, 0, 113, 0, 113, 0, 0, 113, 113, 0,
4375 203, 204, 0, 113, 0, 1114, 0, 0, 0, 1114,
4376 0, 1114, 0, 0, 0, 0, 0, 84, 0, 0,
4377 84, 84, 113, 0, 0, 112, 84, 0, 0, 0,
4378 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
4379 84, 215, 216, 84, 112, 0, 0, 0, 0, 217,
4380 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4381 0, 0, 84, 0, 0, 112, 0, 0, 0, 0,
4382 1114, 112, 113, 0, 113, 113, 113, 113, 0, 113,
4383 113, 0, 0, 0, 84, 0, 0, 0, 0, 0,
4384 0, 0, 0, 0, 0, 0, 0, 0, 84, 0,
4385 113, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4386 0, 112, 112, 0, 112, 112, 0, 0, 0, 0,
4387 0, 0, 0, 112, 0, 0, 0, 0, 112, 0,
4388 0, 0, 0, 0, 0, 0, 0, 113, 0, 0,
4389 113, 0, 0, 0, 0, 0, 113, 113, 113, 0,
4390 0, 0, 84, 0, 0, 0, 0, 0, 0, 84,
4391 84, 0, 113, 0, 84, 0, 1115, 1115, 0, 0,
4392 0, 0, 112, 0, 112, 0, 0, 0, 0, 0,
4393 0, 0, 112, 0, 0, 0, 0, 0, 113, 0,
4394 0, 0, 0, 112, 0, 112, 112, 0, 0, 0,
4395 0, 0, 0, 84, 0, 0, 112, 112, 0, 0,
4396 113, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4397 0, 1115, 1115, 0, 0, 1115, 0, 0, 0, 0,
4398 0, 0, 112, 0, 0, 0, 0, 0, 0, 0,
4399 112, 0, 1115, 0, 0, 113, 0, 0, 0, 0,
4400 0, 0, 0, 0, 80, 0, 0, 0, 0, 0,
4401 0, 0, 0, 0, 113, 0, 0, 0, 80, 80,
4402 0, 1116, 1116, 0, 0, 0, 0, 0, 1115, 0,
4403 0, 0, 0, 0, 0, 113, 0, 0, 0, 0,
4404 0, 113, 0, 0, 0, 0, 0, 0, 0, 0,
4405 0, 1115, 0, 0, 1115, 80, 80, 0, 0, 306,
4406 0, 0, 0, 0, 0, 0, 0, 0, 1115, 0,
4407 1115, 0, 0, 1115, 1115, 0, 1116, 1116, 1115, 1115,
4408 1116, 113, 113, 0, 113, 113, 0, 0, 0, 0,
4409 0, 0, 306, 113, 0, 0, 0, 1116, 113, 0,
4410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4411 0, 306, 306, 306, 0, 80, 0, 0, 0, 0,
4412 0, 0, 112, 0, 112, 112, 0, 0, 0, 0,
4413 0, 0, 0, 1116, 1115, 0, 0, 0, 0, 0,
4414 0, 0, 113, 0, 113, 0, 0, 0, 0, 0,
4415 0, 0, 113, 0, 0, 0, 1116, 0, 0, 1116,
4416 0, 0, 0, 113, 0, 113, 113, 0, 0, 0,
4417 0, 0, 0, 1116, 0, 1116, 113, 113, 1116, 1116,
4418 0, 0, 0, 1116, 1116, 1115, 0, 0, 0, 1115,
4419 112, 1115, 0, 0, 0, 0, 0, 0, 0, 0,
4420 0, 0, 113, 0, 0, 0, 0, 112, 0, 0,
4421 113, 0, 112, 112, 0, 0, 1117, 1117, 112, 112,
4422 0, 0, 0, 0, 0, 0, 0, 112, 112, 0,
4423 0, 0, 0, 80, 0, 0, 0, 0, 0, 1116,
4424 0, 0, 0, 112, 0, 0, 0, 0, 0, 0,
4425 1115, 0, 0, 0, 0, 0, 0, 0, 80, 0,
4426 80, 0, 112, 0, 0, 0, 0, 0, 0, 80,
4427 0, 1117, 1117, 0, 0, 1117, 0, 0, 0, 0,
4428 0, 0, 0, 0, 0, 112, 112, 112, 80, 0,
4429 1116, 0, 1117, 0, 1116, 0, 1116, 0, 0, 0,
4430 0, 0, 112, 0, 22, 23, 24, 25, 306, 0,
4431 0, 0, 0, 0, 0, 0, 0, 0, 0, 112,
4432 31, 32, 33, 0, 0, 0, 0, 0, 1117, 0,
4433 40, 41, 42, 43, 44, 0, 0, 0, 80, 0,
4434 1118, 1118, 113, 0, 113, 113, 0, 0, 0, 0,
4435 0, 1117, 0, 0, 1117, 1116, 0, 0, 0, 0,
4436 0, 0, 0, 0, 0, 0, 80, 306, 1117, 0,
4437 1117, 0, 0, 1117, 1117, 0, 0, 0, 1117, 1117,
4438 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4439 0, 0, 0, 0, 0, 1118, 1118, 0, 112, 1118,
4440 0, 112, 112, 80, 0, 0, 80, 112, 0, 0,
4441 113, 0, 0, 80, 80, 0, 1118, 0, 304, 0,
4442 0, 112, 0, 0, 112, 1119, 1119, 113, 0, 0,
4443 0, 0, 113, 113, 1117, 0, 0, 0, 113, 113,
4444 0, 0, 0, 112, 0, 0, 0, 113, 113, 0,
4445 0, 0, 1118, 0, 80, 0, 0, 0, 0, 0,
4446 0, 0, 0, 113, 0, 112, 0, 0, 0, 0,
4447 0, 0, 0, 0, 0, 1118, 80, 0, 1118, 112,
4448 1119, 1119, 113, 0, 1119, 1117, 0, 0, 0, 1117,
4449 0, 1117, 1118, 0, 1118, 0, 0, 1118, 1118, 0,
4450 0, 1119, 1118, 1118, 0, 113, 113, 113, 0, 0,
4451 0, 80, 0, 0, 0, 0, 0, 81, 0, 0,
4452 0, 0, 113, 0, 0, 0, 0, 0, 306, 0,
4453 80, 81, 81, 112, 0, 0, 0, 1119, 0, 113,
4454 112, 112, 0, 0, 0, 112, 0, 0, 0, 0,
4455 1117, 80, 0, 0, 0, 0, 0, 80, 1118, 0,
4456 1119, 0, 0, 1119, 0, 0, 0, 0, 81, 81,
4457 0, 0, 307, 0, 0, 0, 0, 1119, 0, 1119,
4458 0, 0, 1119, 1119, 112, 0, 0, 1119, 1119, 0,
4459 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
4460 0, 80, 0, 0, 0, 307, 0, 0, 0, 1118,
4461 0, 306, 0, 1118, 80, 1118, 0, 0, 113, 0,
4462 0, 113, 113, 0, 307, 307, 307, 113, 81, 0,
4463 0, 1120, 1120, 0, 0, 0, 0, 0, 0, 0,
4464 0, 113, 0, 1119, 113, 0, 0, 0, 0, 0,
4465 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
4466 80, 0, 0, 113, 0, 1121, 1121, 0, 80, 0,
4467 0, 0, 0, 0, 1118, 0, 0, 0, 0, 80,
4468 0, 80, 0, 0, 0, 113, 1120, 1120, 0, 0,
4469 1120, 0, 80, 80, 1119, 0, 0, 0, 1119, 113,
4470 1119, 0, 0, 0, 0, 0, 0, 1120, 0, 0,
4471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4472 1121, 1121, 0, 0, 1121, 0, 80, 0, 0, 0,
4473 0, 0, 306, 0, 0, 0, 0, 0, 0, 0,
4474 0, 1121, 0, 1120, 0, 0, 81, 0, 0, 0,
4475 0, 0, 0, 113, 0, 0, 0, 0, 0, 1119,
4476 113, 113, 0, 0, 0, 113, 1120, 0, 0, 1120,
4477 0, 81, 0, 81, 0, 0, 0, 1121, 0, 0,
4478 0, 0, 81, 1120, 0, 1120, 0, 0, 1120, 1120,
4479 0, 0, 0, 1120, 1120, 938, 0, 0, 0, 0,
4480 1121, 81, 0, 1121, 113, 0, 0, 0, 306, 0,
4481 0, 0, 0, 0, 0, 0, 0, 1121, 0, 1121,
4482 0, 307, 1121, 1121, 0, 0, 0, 1121, 1121, 368,
4483 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
4484 379, 380, 0, 0, 0, 0, 381, 382, 0, 1120,
4485 0, 81, 0, 0, 0, 0, 0, 0, 0, 0,
4486 0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
4487 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,
4488 307, 0, 0, 1121, 141, 0, 384, 0, 385, 386,
4489 387, 388, 389, 390, 391, 392, 393, 394, 0, 0,
4490 1120, 0, 0, 0, 1120, 0, 1120, 0, 0, 0,
4491 0, 0, 0, 0, 0, 0, 81, 0, 0, 81,
4492 0, 0, 0, 0, 0, 0, 81, 81, 0, 0,
4493 0, 0, 0, 0, 1121, 141, 141, 0, 1121, 313,
4494 1121, 0, 0, 80, 0, 0, 0, 0, 80, 80,
4495 0, 0, 0, 0, 80, 80, 0, 0, 0, 0,
4496 0, 0, 0, 80, 0, 1120, 0, 81, 0, 0,
4497 0, 0, 313, 0, 0, 0, 0, 0, 0, 80,
4498 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,
4499 0, 422, 432, 432, 0, 0, 0, 0, 80, 1121,
4500 0, 0, 0, 0, 638, 639, 0, 0, 640, 0,
4501 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4502 0, 80, 80, 80, 81, 0, 0, 0, 188, 189,
4503 190, 191, 192, 193, 194, 195, 196, 0, 80, 197,
4504 198, 307, 0, 81, 0, 199, 200, 201, 202, 0,
4505 0, 0, 0, 0, 0, 80, 0, 0, 0, 203,
4506 204, 0, 0, 0, 81, 0, 0, 0, 0, 0,
4507 81, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4508 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
4509 206, 207, 208, 209, 210, 211, 212, 213, 214, 0,
4510 215, 216, 0, 0, 0, 0, 0, 0, 217, 0,
4511 0, 81, 137, 141, 81, 0, 0, 0, 0, 0,
4512 0, 0, 0, 0, 307, 0, 0, 81, 0, 0,
4513 306, 0, 0, 0, 80, 0, 0, 80, 80, 0,
4514 0, 0, 0, 80, 0, 0, 0, 0, 0, 141,
4515 0, 0, 0, 0, 0, 0, 0, 80, 0, 0,
4516 80, 0, 0, 137, 137, 0, 0, 311, 141, 0,
4517 0, 81, 0, 81, 0, 0, 0, 0, 0, 0,
4518 0, 81, 0, 0, 0, 0, 0, 0, 313, 0,
4519 0, 0, 81, 0, 81, 0, 0, 0, 0, 0,
4520 311, 80, 0, 0, 0, 81, 81, 0, 0, 0,
4521 0, 0, 0, 0, 0, 80, 0, 0, 141, 420,
4522 430, 430, 430, 0, 0, 0, 0, 0, 0, 306,
4523 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,
4524 0, 0, 0, 0, 0, 307, 141, 313, 0, 0,
4525 0, 0, 0, 91, 0, 0, 0, 0, 0, 0,
4526 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,
4527 368, 369, 370, 371, 372, 373, 374, 375, 0, 377,
4528 378, 80, 0, 0, 0, 0, 141, 381, 382, 0,
4529 306, 0, 0, 141, 141, 0, 0, 0, 0, 0,
4530 0, 0, 0, 0, 91, 91, 0, 0, 0, 0,
4531 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4532 80, 307, 0, 0, 0, 0, 0, 0, 0, 385,
4533 386, 387, 388, 389, 390, 391, 392, 393, 394, 0,
4534 0, 137, 0, 0, -815, 0, 0, 0, 0, 0,
4535 0, 0, -815, -815, -815, 0, 0, -815, -815, -815,
4536 417, -815, 0, 0, 0, 0, 0, 0, 0, -815,
4537 -815, -815, 0, 0, 81, 0, 140, 137, 0, 0,
4538 0, -815, -815, 0, -815, -815, -815, -815, -815, 0,
4539 0, 141, 0, 0, 0, 0, 137, 0, 0, 0,
4540 0, 0, 0, 0, 0, 0, 0, 0, 313, 0,
4541 0, 0, -815, -815, 0, 0, 311, 0, 0, 0,
4542 0, 0, 0, 0, 0, 0, 0, 140, 140, 0,
4543 0, 141, 0, 0, 0, 0, 0, 141, 0, 0,
4544 0, -815, -815, 0, 0, 0, 137, 0, 0, 0,
4545 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
4546 0, 81, 81, 0, -815, 0, 0, 81, 81, 0,
4547 0, 0, 0, 0, 137, 311, 81, 0, 141, 0,
4548 0, 141, 91, 0, 0, 0, 0, 0, 0, 0,
4549 0, 313, 81, 0, 816, -815, -815, 0, -815, 0,
4550 0, 255, -815, 0, -815, 0, 0, 0, 0, 0,
4551 0, 81, 0, 0, 137, 0, 0, 0, 91, 0,
4552 0, 137, 137, 0, 0, 0, 0, 0, 0, 0,
4553 0, 0, 0, 0, 81, 81, 81, 91, 141, 0,
4554 141, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4555 0, 81, 0, 0, 0, 0, 0, 0, 0, 0,
4556 0, 141, 0, 0, 0, 0, 0, 0, 81, 0,
4557 0, 0, 816, 816, 0, 0, 0, 0, 0, 0,
4558 0, 0, 0, 0, 0, 0, 0, 91, 0, 0,
4559 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4560 0, 0, 0, 0, 0, 140, 816, 0, 0, 0,
4561 0, 0, 313, 0, 0, 91, 0, 0, 0, 137,
4562 0, 896, 0, 0, 0, 0, 0, 0, 0, 0,
4563 0, 0, 0, 0, 0, 0, 311, 0, 0, 0,
4564 0, 140, 0, 307, 0, 0, 0, 81, 0, 0,
4565 81, 81, 0, 0, 0, 91, 81, 0, 0, 137,
4566 140, 0, 91, 91, 0, 137, 0, 0, 0, 0,
4567 81, 0, 0, 81, 22, 23, 24, 25, 0, 0,
4568 0, 0, 0, 0, 0, 0, 0, 0, 313, 0,
4569 31, 32, 33, 1079, 0, 0, 0, 1080, 0, 0,
4570 40, 41, 42, 43, 44, 0, 137, 0, 0, 137,
4571 140, 0, 0, 0, 81, 0, 0, 0, 0, 311,
4572 0, 0, 0, 0, 0, 0, 0, 0, 81, 0,
4573 0, 0, 1082, 1083, 0, 0, 0, 0, 140, 0,
4574 1084, 141, 307, 1085, 0, 1086, 1087, 0, 1088, 0,
4575 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4576 91, 0, 0, 0, 0, 0, 137, 0, 137, 0,
4577 0, 0, 0, 0, 0, 0, 0, 0, 140, 0,
4578 0, 1090, 81, 646, 647, 140, 140, 648, 304, 137,
4579 0, 0, 0, 0, 81, 259, 0, 0, 0, 0,
4580 91, 0, 0, 307, 0, 0, 91, 188, 189, 190,
4581 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
4582 0, 0, 0, 0, 199, 200, 201, 202, 816, 816,
4583 0, 0, 0, 81, 816, 816, 0, 0, 203, 204,
4584 311, 0, 0, 141, 0, 0, 0, 91, 0, 0,
4585 91, 0, 0, 0, 0, 0, 0, 0, 0, 141,
4586 0, 0, 0, 810, 0, 0, 0, 0, 205, 206,
4587 207, 208, 209, 210, 211, 212, 213, 214, 141, 215,
4588 216, 0, 0, 140, 0, 0, 0, 217, 368, 369,
4589 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
4590 380, 141, 141, 816, 0, 381, 382, 91, 0, 91,
4591 0, 0, 0, 0, 0, 0, 311, 0, 816, 0,
4592 0, 0, 0, 140, 0, 0, 0, 0, 0, 140,
4593 91, 0, 0, 0, 0, 141, 0, 0, 0, 0,
4594 0, 810, 810, 0, 0, 384, 0, 385, 386, 387,
4595 388, 389, 390, 391, 392, 393, 394, 0, 0, 0,
4596 0, 0, 0, 0, 259, 0, 0, 0, 0, 137,
4597 140, 0, 0, 140, 0, 810, 0, 22, 23, 24,
4598 25, 0, 0, 0, 0, 0, 140, 0, 0, 0,
4599 0, 0, 0, 31, 32, 33, 1079, 0, 0, 0,
4600 1080, 0, 1081, 40, 41, 42, 43, 44, 0, 0,
4601 1197, 0, 0, 0, 141, 0, 0, 141, 141, 0,
4602 0, 0, 563, 141, 0, 0, 0, 0, 0, 0,
4603 140, 0, 140, 0, 0, 1082, 1083, 141, 0, 0,
4604 141, 0, 0, 1084, 0, 0, 1085, 0, 1086, 1087,
4605 0, 1088, 567, 140, 57, 58, 1089, 60, 61, 62,
4606 63, 64, 65, 0, 140, 140, 0, 0, 0, 0,
4607 0, 137, 0, 0, 0, 0, 0, 0, 0, 0,
4608 0, 141, 0, 0, 1090, 0, 0, 137, 0, 0,
4609 0, 304, 0, 0, 0, 141, 0, 0, 140, 0,
4610 0, 0, 0, 0, 0, 0, 137, 0, 0, 432,
4611 91, 0, 239, 239, 368, 369, 370, 371, 372, 373,
4612 374, 375, 376, 377, 378, 379, 380, 0, 0, 137,
4613 137, 381, 382, 0, 0, 0, 0, 0, 0, 0,
4614 0, 0, 0, 0, 276, 280, 281, 282, 0, 0,
4615 0, 239, 239, 0, 0, 0, 0, 0, 0, 0,
4616 0, 141, 0, 137, 329, 330, 0, 0, 0, 0,
4617 432, 384, 0, 385, 386, 387, 388, 389, 390, 391,
4618 392, 393, 394, 0, 0, 0, 0, 0, 0, 0,
4619 0, 0, 0, 0, 0, 0, 0, 810, 810, 0,
4620 141, 0, 0, 810, 810, 0, 0, 0, 0, 239,
4621 0, 0, 91, 0, 368, 369, 370, 371, 372, 373,
4622 374, 375, 376, 377, 378, -816, -816, 0, 91, 0,
4623 0, 381, 382, 140, 0, 0, 0, 0, 1195, 0,
4624 0, 0, 137, 0, 0, 137, 137, 91, 0, 0,
4625 0, 137, 0, 0, 0, 0, 0, 0, 0, 0,
4626 0, 0, 0, 0, 0, 137, 0, 0, 137, 0,
4627 91, 91, 810, 385, 386, 387, 388, 389, 390, 391,
4628 392, 393, 394, 0, 0, 0, 0, 810, 0, 0,
4629 0, 0, 0, 0, 0, 0, 368, -816, -816, -816,
4630 -816, 373, 374, 0, 91, -816, -816, 0, 0, 137,
4631 0, 0, 0, 381, 382, 0, 0, 0, 0, 0,
4632 140, 140, 0, 137, 0, 239, 140, 140, 239, 239,
4633 239, 0, 329, 0, 0, 140, 0, 430, 0, 0,
4634 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4635 0, 140, 239, 0, 239, 385, 386, 387, 388, 389,
4636 390, 391, 392, 393, 394, 0, 0, 0, 0, 0,
4637 140, 0, 0, 0, 0, 0, 0, 0, 0, 1193,
4638 0, 0, 0, 91, 0, 0, 91, 91, 0, 137,
4639 0, 0, 91, 140, 140, 140, 0, 0, 430, 0,
4640 0, 0, 0, 0, 0, 0, 91, 0, 0, 91,
4641 140, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4642 0, 0, 0, 0, 0, 0, 0, 140, 137, 0,
4643 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4644 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4645 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4646 0, 0, 0, 0, 91, 613, 614, 615, 616, 617,
4647 0, 0, 618, 619, 620, 621, 622, 623, 624, 625,
4648 0, 627, 0, 0, 628, 629, 630, 631, 632, 633,
4649 634, 635, 636, 637, 0, 0, 0, 239, 0, 0,
4650 0, 0, 0, 0, 0, 0, 140, 0, 0, 140,
4651 140, 0, 0, 0, 0, 140, 0, 0, 368, 369,
4652 370, 371, 372, 373, 374, 0, 0, 377, 378, 140,
4653 91, 0, 140, 0, 0, 381, 382, 0, 0, 0,
4654 0, 0, 0, 0, 0, 0, 0, 0, 239, 0,
4655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4656 0, 0, 0, 0, 0, 239, 239, 0, 0, 91,
4657 239, 0, 0, 140, 239, 0, 282, 385, 386, 387,
4658 388, 389, 390, 391, 392, 393, 394, 140, 0, -797,
4659 0, 0, 0, 0, 716, 0, 0, -797, -797, -797,
4660 0, 0, -797, -797, -797, 0, -797, 0, 0, 239,
4661 0, 0, 239, 0, -797, -797, -797, -797, -797, 0,
4662 0, 0, 0, 0, 239, 0, -797, -797, 0, -797,
4663 -797, -797, -797, -797, 0, 0, 0, 0, 0, 0,
4664 0, 0, 748, 0, 0, 0, 0, 0, 0, 0,
4665 0, 0, 0, 140, 0, 0, 0, -797, -797, 0,
4666 0, 0, 0, 0, 0, 0, 0, -797, -797, -797,
4667 -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
4668 0, 0, 0, 239, -797, -797, -797, -797, 0, 878,
4669 -797, 780, 140, 0, 780, -797, 0, 0, 0, 0,
4670 0, 0, 0, 239, 0, 0, 0, 0, 811, -797,
4671 0, 0, -797, 0, 0, 0, 0, 0, 0, 0,
4672 0, 0, 0, -146, -797, -797, -797, -797, -797, -797,
4673 -797, -797, -797, -797, -797, -797, 0, 0, 0, 0,
4674 -797, -797, -797, -797, -797, 0, 0, -797, -797, -797,
4675 0, 0, 22, 23, 24, 25, 0, 0, 0, 0,
4676 0, 0, 239, 0, 0, 0, 0, 0, 31, 32,
4677 33, 1079, 0, 239, 0, 1080, 0, 0, 40, 41,
4678 42, 43, 44, 0, 0, 0, 870, 870, 0, 0,
4679 239, 870, 0, 0, 0, 0, 0, 0, 0, 0,
4680 0, 0, 870, 870, 0, 0, 239, 0, 239, 0,
4681 1082, 1083, 0, 0, 0, 780, 780, 0, 1084, 0,
4682 870, 1085, 0, 1086, 1087, 0, 1088, 0, 0, 57,
4683 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
4684 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4685 0, 0, 0, 0, 0, 0, 0, 0, 0, 1090,
4686 0, 0, 0, 0, 239, 0, 304, 0, 0, 0,
4687 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4688 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4689 0, 0, 239, 0, 0, 0, 0, 0, -4, 3,
4690 0, 4, 5, 6, 7, 8, -4, -4, -4, 9,
4691 10, 0, -4, -4, 11, -4, 12, 13, 14, 15,
4692 16, 17, 18, -4, 239, 0, 0, 0, 19, 20,
4693 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
4694 0, 0, 239, 27, 28, 284, 30, 31, 32, 33,
4695 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
4696 43, 44, 45, 46, 0, 0, -4, 0, 0, 0,
4697 0, 0, 870, 0, 47, 48, 0, 0, 0, 0,
4698 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
4699 50, 0, 0, 0, 0, 0, 0, 51, 0, 0,
4700 52, 53, 54, 55, 0, 56, 0, 0, 57, 58,
4701 59, 60, 61, 62, 63, 64, 65, 0, -4, 0,
4702 780, 0, 0, 0, 0, 0, 0, 0, 0, 239,
4703 0, 0, 0, 0, 0, 0, 0, 239, 0, 0,
4704 0, 1029, 870, 870, 0, 66, 67, 68, 870, 870,
4705 -4, 0, 239, 0, 0, 0, -4, 0, 546, 0,
4706 0, 0, 0, 0, 239, 0, 0, 0, 0, 0,
4707 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4708 0, 0, 870, 870, 0, 870, 870, 0, 239, 0,
4709 780, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4710 0, 0, 0, 0, 0, 0, 0, 0, 0, 1070,
4711 1071, 0, 0, 239, 0, 0, 0, 870, 1077, 0,
4712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4713 0, 0, 870, 0, 0, 0, 0, 0, 0, -815,
4714 3, 0, 4, 5, 6, 7, 8, 0, 239, 0,
4715 9, 10, 0, 0, 0, 11, 870, 12, 13, 14,
4716 15, 16, 17, 18, 0, 0, 0, 0, 0, 19,
4717 20, 21, 22, 23, 24, 25, 0, 0, 26, 0,
4718 0, 0, 0, 0, 27, 28, 284, 30, 31, 32,
4719 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
4720 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
4721 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
4722 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4723 49, 50, 0, 239, 0, 0, 0, 0, 51, 0,
4724 0, 52, 53, 54, 55, 0, 56, 0, 0, 57,
4725 58, 59, 60, 61, 62, 63, 64, 65, 0, -815,
4726 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4727 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4728 0, 0, 0, 0, 0, 0, 66, 67, 68, 0,
4729 0, -815, 3, -815, 4, 5, 6, 7, 8, -815,
4730 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
4731 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
4732 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
4733 26, 0, 0, 0, 0, 0, 27, 28, 29, 30,
4734 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
4735 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
4736 0, 0, 0, 239, 0, 0, 0, 47, 48, 0,
4737 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4738 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
4739 51, 0, 0, 52, 53, 54, 55, 0, 56, 0,
4740 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4741 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4742 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4743 0, 0, 0, 0, 0, 0, 0, 0, 66, 67,
4744 68, 0, 0, -4, 3, -815, 4, 5, 6, 7,
4745 8, -815, 0, 0, 9, 10, 0, 0, 0, 11,
4746 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
4747 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
4748 0, 0, 26, 0, 0, 0, 0, 0, 27, 28,
4749 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
4750 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
4751 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
4752 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4753 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
4754 0, 0, 51, 0, 0, 52, 53, 54, 55, 0,
4755 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
4756 64, 65, 0, 0, 0, 0, 0, 0, 0, -695,
4757 0, 0, 0, 0, 0, 0, 0, -695, -695, -695,
4758 0, 0, -695, -695, -695, 0, -695, 0, 0, 0,
4759 66, 67, 68, 0, -695, -4, -695, -695, -695, 0,
4760 0, 0, 0, 546, 0, 0, -695, -695, 0, -695,
4761 -695, -695, -695, -695, 0, 0, 0, 0, 0, 0,
4762 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4763 0, 0, 0, 0, 0, 0, 0, -695, -695, 0,
4764 0, 0, 0, 0, 0, 0, 0, -695, -695, -695,
4765 -695, -695, -695, -695, -695, -695, -695, -695, -695, -695,
4766 0, 0, 0, 0, -695, -695, -695, -695, 0, -695,
4767 -695, 0, 0, 0, 0, -695, 0, 0, 0, 0,
4768 0, 0, 0, 0, 0, 0, 0, 0, 0, -695,
4769 0, 0, -695, 0, 0, 0, 0, 0, 0, 0,
4770 0, 0, 0, -695, -695, -695, -695, -695, -695, -695,
4771 -695, -695, -695, -695, -695, -695, 0, 0, 0, 0,
4772 0, -695, -695, -695, -695, -696, 0, -695, -695, -695,
4773 0, 0, 0, -696, -696, -696, 0, 0, -696, -696,
4774 -696, 0, -696, 0, 0, 0, 0, 0, 0, 0,
4775 -696, 0, -696, -696, -696, 0, 0, 0, 0, 0,
4776 0, 0, -696, -696, 0, -696, -696, -696, -696, -696,
4777 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4778 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4779 0, 0, 0, -696, -696, 0, 0, 0, 0, 0,
4780 0, 0, 0, -696, -696, -696, -696, -696, -696, -696,
4781 -696, -696, -696, -696, -696, -696, 0, 0, 0, 0,
4782 -696, -696, -696, -696, 0, -696, -696, 0, 0, 0,
4783 0, -696, 0, 0, 0, 0, 0, 0, 0, 0,
4784 0, 0, 0, 0, 0, -696, 0, 0, -696, 0,
4785 0, 0, 0, 0, 0, 0, 0, 0, 0, -696,
4786 -696, -696, -696, -696, -696, -696, -696, -696, -696, -696,
4787 -696, -696, 0, 0, 0, 0, 0, -696, -696, -696,
4788 -696, -798, 0, -696, -696, -696, 0, 0, 0, -798,
4789 -798, -798, 0, 0, -798, -798, -798, 0, -798, 0,
4790 0, 0, 0, 0, 0, 0, -798, -798, -798, -798,
4791 -798, 0, 0, 0, 0, 0, 0, 0, -798, -798,
4792 0, -798, -798, -798, -798, -798, 0, 0, 0, 0,
4793 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4794 0, 0, 0, 0, 0, 0, 0, 0, 0, -798,
4795 -798, 0, 0, 0, 0, 0, 0, 0, 0, -798,
4796 -798, -798, -798, -798, -798, -798, -798, -798, -798, -798,
4797 -798, -798, 0, 0, 0, 0, -798, -798, -798, -798,
4798 0, 0, -798, 0, 0, 0, 0, -798, 0, 0,
4799 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4800 0, -798, 0, 0, -798, 0, 0, 0, 0, 0,
4801 0, 0, 0, 0, 0, 0, -798, -798, -798, -798,
4802 -798, -798, -798, -798, -798, -798, -798, -798, 0, 0,
4803 0, 0, -798, -798, -798, -798, -798, -799, 0, -798,
4804 -798, -798, 0, 0, 0, -799, -799, -799, 0, 0,
4805 -799, -799, -799, 0, -799, 0, 0, 0, 0, 0,
4806 0, 0, -799, -799, -799, -799, -799, 0, 0, 0,
4807 0, 0, 0, 0, -799, -799, 0, -799, -799, -799,
4808 -799, -799, 0, 0, 0, 0, 0, 0, 0, 0,
4809 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4810 0, 0, 0, 0, 0, -799, -799, 0, 0, 0,
4811 0, 0, 0, 0, 0, -799, -799, -799, -799, -799,
4812 -799, -799, -799, -799, -799, -799, -799, -799, 0, 0,
4813 0, 0, -799, -799, -799, -799, 0, 0, -799, 0,
4814 0, 0, 0, -799, 0, 0, 0, 0, 0, 0,
4815 0, 0, 0, 0, 0, 0, 0, -799, 0, 0,
4816 -799, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4817 0, 0, -799, -799, -799, -799, -799, -799, -799, -799,
4818 -799, -799, -799, -799, 0, 0, 0, 0, -799, -799,
4819 -799, -799, -799, -510, 0, -799, -799, -799, 0, 0,
4820 0, -510, -510, -510, 0, 0, -510, -510, -510, 0,
4821 -510, 0, 0, 0, 0, 0, 0, 0, -510, -510,
4822 -510, -510, 0, 0, 0, 0, 0, 0, 0, 0,
4823 -510, -510, 0, -510, -510, -510, -510, -510, 0, 0,
4824 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4825 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4826 0, -510, -510, 0, 0, 0, 0, 0, 0, 0,
4827 0, -510, -510, -510, -510, -510, -510, -510, -510, -510,
4828 -510, -510, -510, -510, 0, 0, 0, 0, -510, -510,
4829 -510, -510, 0, 0, -510, 0, 0, 0, 0, -510,
4830 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4831 0, 0, 0, -510, 0, 0, 0, 0, 0, 0,
4832 0, 0, 0, 0, 0, 0, 0, 0, -510, 0,
4833 -510, -510, -510, -510, -510, -510, -510, -510, -510, -510,
4834 0, 0, 0, 0, -510, -510, -510, -510, -510, -350,
4835 255, -510, -510, -510, 0, 0, 0, -350, -350, -350,
4836 0, 0, -350, -350, -350, 0, -350, 0, 0, 0,
4837 0, 0, 0, 0, -350, 0, -350, -350, -350, 0,
4838 0, 0, 0, 0, 0, 0, -350, -350, 0, -350,
4839 -350, -350, -350, -350, 0, 0, 0, 0, 0, 0,
4840 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4841 0, 0, 0, 0, 0, 0, 0, -350, -350, 0,
4842 0, 0, 0, 0, 0, 0, 0, -350, -350, -350,
4843 -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
4844 0, 0, 0, 0, -350, -350, -350, -350, 0, 0,
4845 -350, 0, 0, 0, 0, -350, 0, 0, 0, 0,
4846 0, 0, 0, 0, 0, 0, 0, 0, 0, -350,
4847 0, 0, -350, 0, 0, 0, 0, 0, 0, 0,
4848 0, 0, 0, 0, -350, -350, -350, -350, -350, -350,
4849 -350, -350, -350, -350, -350, -350, 0, 0, 0, 0,
4850 0, -350, -350, -350, -350, -815, 0, -350, -350, -350,
4851 0, 0, 0, -815, -815, -815, 0, 0, -815, -815,
4852 -815, 0, -815, 0, 0, 0, 0, 0, 0, 0,
4853 -815, -815, -815, -815, 0, 0, 0, 0, 0, 0,
4854 0, 0, -815, -815, 0, -815, -815, -815, -815, -815,
4855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4857 0, 0, 0, -815, -815, 0, 0, 0, 0, 0,
4858 0, 0, 0, -815, -815, -815, -815, -815, -815, -815,
4859 -815, -815, -815, -815, -815, -815, 0, 0, 0, 0,
4860 -815, -815, -815, -815, 0, 0, -815, 0, 0, 0,
4861 0, -815, 0, 0, 0, 0, 0, 0, 0, 0,
4862 0, 0, 0, 0, 0, -815, 0, 0, 0, 0,
4863 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4864 -815, 0, -815, -815, -815, -815, -815, -815, -815, -815,
4865 -815, -815, 0, 0, 0, 0, -815, -815, -815, -815,
4866 -815, -356, 255, -815, -815, -815, 0, 0, 0, -356,
4867 -356, -356, 0, 0, -356, -356, -356, 0, -356, 0,
4868 0, 0, 0, 0, 0, 0, -356, 0, -356, -356,
4869 0, 0, 0, 0, 0, 0, 0, 0, -356, -356,
4870 0, -356, -356, -356, -356, -356, 0, 0, 0, 0,
4871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4872 0, 0, 0, 0, 0, 0, 0, 0, 0, -356,
4873 -356, 0, 0, 0, 0, 0, 0, 0, 0, -356,
4874 -356, -356, -356, -356, -356, -356, -356, -356, -356, -356,
4875 -356, -356, 0, 0, 0, 0, -356, -356, -356, -356,
4876 0, 879, -356, 0, 0, 0, 0, -356, 0, 0,
4877 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4878 0, -356, 0, 0, 0, 0, 0, 0, 0, 0,
4879 0, 0, 0, 0, 0, -147, -356, 0, -356, -356,
4880 -356, -356, -356, -356, -356, -356, -356, -356, 0, 0,
4881 0, 0, 822, -356, -356, -356, -356, -363, 0, -356,
4882 -356, -356, 0, 0, 0, -363, -363, -363, 0, 0,
4883 -363, -363, -363, 0, -363, 0, 0, 0, 0, 0,
4884 0, 0, -363, 0, -363, -363, 0, 0, 0, 0,
4885 0, 0, 0, 0, -363, -363, 0, -363, -363, -363,
4886 -363, -363, 0, 0, 0, 0, 0, 0, 0, 0,
4887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4888 0, 0, 0, 0, 0, -363, -363, 0, 0, 0,
4889 0, 0, 0, 0, 0, -363, -363, -363, -363, -363,
4890 -363, -363, -363, -363, -363, -363, -363, -363, 0, 0,
4891 0, 0, -363, -363, -363, -363, 0, 0, -363, 0,
4892 0, 0, 0, -363, 0, 0, 0, 0, 0, 0,
4893 0, 0, 0, 0, 0, 0, 0, -363, 0, 0,
4894 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4895 0, 0, -363, 0, -363, -363, -363, -363, -363, -363,
4896 -363, -363, -363, -363, 0, 0, 0, 0, 0, -363,
4897 -363, -363, -363, -797, 451, -363, -363, -363, 0, 0,
4898 0, -797, -797, -797, 0, 0, 0, -797, -797, 0,
4899 -797, 0, 0, 0, 0, 0, 0, 0, -797, -797,
4900 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4901 -797, -797, 0, -797, -797, -797, -797, -797, 0, 0,
4902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4903 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4904 0, -797, -797, 0, 0, 0, 0, 0, 0, 0,
4905 0, -797, -797, -797, -797, -797, -797, -797, -797, -797,
4906 -797, -797, -797, -797, 0, 0, 0, 0, -797, -797,
4907 -797, -797, 0, 820, -797, 0, 0, 0, 0, 0,
4908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4909 0, 0, 0, -797, 0, 0, 0, 0, 0, 0,
4910 0, 0, 0, 0, 0, 0, 0, -146, -797, 0,
4911 -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
4912 0, 0, 0, 0, -797, -797, -797, -797, -137, -797,
4913 0, -797, 0, -797, 0, 0, 0, -797, -797, -797,
4914 0, 0, 0, -797, -797, 0, -797, 0, 0, 0,
4915 0, 0, 0, 0, -797, -797, 0, 0, 0, 0,
4916 0, 0, 0, 0, 0, 0, -797, -797, 0, -797,
4917 -797, -797, -797, -797, 0, 0, 0, 0, 0, 0,
4918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4919 0, 0, 0, 0, 0, 0, 0, -797, -797, 0,
4920 0, 0, 0, 0, 0, 0, 0, -797, -797, -797,
4921 -797, -797, -797, -797, -797, -797, -797, -797, -797, -797,
4922 0, 0, 0, 0, -797, -797, -797, -797, 0, 820,
4923 -797, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4924 0, 0, 0, 0, 0, 0, 0, 0, 0, -797,
4925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4926 0, 0, 0, -146, -797, 0, -797, -797, -797, -797,
4927 -797, -797, -797, -797, -797, -797, 0, 0, 0, 0,
4928 -797, -797, -797, -797, -797, -356, 0, -797, 0, -797,
4929 0, 0, 0, -356, -356, -356, 0, 0, 0, -356,
4930 -356, 0, -356, 0, 0, 0, 0, 0, 0, 0,
4931 -356, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4932 0, 0, -356, -356, 0, -356, -356, -356, -356, -356,
4933 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4935 0, 0, 0, -356, -356, 0, 0, 0, 0, 0,
4936 0, 0, 0, -356, -356, -356, -356, -356, -356, -356,
4937 -356, -356, -356, -356, -356, -356, 0, 0, 0, 0,
4938 -356, -356, -356, -356, 0, 821, -356, 0, 0, 0,
4939 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4940 0, 0, 0, 0, 0, -356, 0, 0, 0, 0,
4941 0, 0, 0, 0, 0, 0, 0, 0, 0, -147,
4942 -356, 0, -356, -356, -356, -356, -356, -356, -356, -356,
4943 -356, -356, 0, 0, 0, 0, 822, -356, -356, -356,
4944 -138, -356, 0, -356, 0, -356, 0, 0, 0, -356,
4945 -356, -356, 0, 0, 0, -356, -356, 0, -356, 0,
4946 0, 0, 0, 0, 0, 0, -356, 0, 0, 0,
4947 0, 0, 0, 0, 0, 0, 0, 0, -356, -356,
4948 0, -356, -356, -356, -356, -356, 0, 0, 0, 0,
4949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4950 0, 0, 0, 0, 0, 0, 0, 0, 0, -356,
4951 -356, 0, 0, 0, 0, 0, 0, 0, 0, -356,
4952 -356, -356, -356, -356, -356, -356, -356, -356, -356, -356,
4953 -356, -356, 0, 0, 0, 0, -356, -356, -356, -356,
4954 0, 821, -356, 0, 0, 0, 0, 0, 0, 0,
4955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4956 0, -356, 0, 0, 0, 0, 0, 0, 0, 0,
4957 0, 0, 0, 0, 0, -147, -356, 0, -356, -356,
4958 -356, -356, -356, -356, -356, -356, -356, -356, 0, 0,
4959 0, 0, 822, -356, -356, -356, -356, 0, 0, -356,
4960 3, -356, 4, 5, 6, 7, 8, -815, -815, -815,
4961 9, 10, 0, 0, -815, 11, 0, 12, 13, 14,
4962 15, 16, 17, 18, 0, 0, 0, 0, 0, 19,
4963 20, 21, 22, 23, 24, 25, 0, 0, 26, 0,
4964 0, 0, 0, 0, 27, 28, 284, 30, 31, 32,
4965 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
4966 42, 43, 44, 45, 46, 0, 0, -815, 0, 0,
4967 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
4968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4969 49, 50, 0, 0, 0, 0, 0, 0, 51, 0,
4970 0, 52, 53, 54, 55, 0, 56, 0, 0, 57,
4971 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
4972 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4973 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4974 0, 0, 0, 0, 0, 0, 66, 67, 68, 0,
4975 0, 0, 3, -815, 4, 5, 6, 7, 8, -815,
4976 0, -815, 9, 10, 0, -815, -815, 11, 0, 12,
4977 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
4978 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
4979 26, 0, 0, 0, 0, 0, 27, 28, 284, 30,
4980 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
4981 40, 41, 42, 43, 44, 45, 46, 0, 0, -815,
4982 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
4983 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4984 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
4985 51, 0, 0, 52, 53, 54, 55, 0, 56, 0,
4986 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4987 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4988 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4989 0, 0, 0, 0, 0, 0, 0, 0, 66, 67,
4990 68, 0, 0, 0, 3, -815, 4, 5, 6, 7,
4991 8, -815, 0, -815, 9, 10, 0, 0, -815, 11,
4992 -815, 12, 13, 14, 15, 16, 17, 18, 0, 0,
4993 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
4994 0, 0, 26, 0, 0, 0, 0, 0, 27, 28,
4995 284, 30, 31, 32, 33, 34, 35, 36, 37, 38,
4996 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
4997 0, -815, 0, 0, 0, 0, 0, 0, 0, 47,
4998 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4999 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5000 0, 0, 51, 0, 0, 52, 53, 54, 55, 0,
5001 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5002 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5004 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5005 66, 67, 68, 0, 0, 0, 3, -815, 4, 5,
5006 6, 7, 8, -815, 0, -815, 9, 10, 0, 0,
5007 -815, 11, 0, 12, 13, 14, 15, 16, 17, 18,
5008 -815, 0, 0, 0, 0, 19, 20, 21, 22, 23,
5009 24, 25, 0, 0, 26, 0, 0, 0, 0, 0,
5010 27, 28, 284, 30, 31, 32, 33, 34, 35, 36,
5011 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
5012 46, 0, 0, -815, 0, 0, 0, 0, 0, 0,
5013 0, 47, 48, 0, 0, 0, 0, 0, 0, 0,
5014 0, 0, 0, 0, 0, 0, 49, 50, 0, 0,
5015 0, 0, 0, 0, 51, 0, 0, 52, 53, 54,
5016 55, 0, 56, 0, 0, 57, 58, 59, 60, 61,
5017 62, 63, 64, 65, 0, 0, 0, 0, 0, 0,
5018 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5020 0, 0, 66, 67, 68, 0, 0, 0, 3, -815,
5021 4, 5, 6, 7, 8, -815, 0, -815, 9, 10,
5022 0, 0, -815, 11, 0, 12, 13, 14, 15, 16,
5023 17, 18, 0, 0, 0, 0, 0, 19, 20, 21,
5024 22, 23, 24, 25, 0, 0, 26, 0, 0, 0,
5025 0, 0, 27, 28, 284, 30, 31, 32, 33, 34,
5026 35, 36, 37, 38, 39, 0, 40, 41, 42, 43,
5027 44, 45, 46, 0, 0, -815, 0, 0, 0, 0,
5028 0, 0, 0, 47, 48, 0, 0, 0, 0, 0,
5029 0, 0, 0, 0, 0, 0, 0, 0, 49, 50,
5030 0, 0, 0, 0, 0, 0, 51, 0, 0, 52,
5031 53, 54, 55, 0, 56, 0, 0, 57, 58, 59,
5032 60, 61, 62, 63, 64, 65, 0, 0, 0, 0,
5033 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5034 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5035 0, 0, 0, 0, 66, 67, 68, 0, 0, 0,
5036 3, -815, 4, 5, 6, 7, 8, -815, -815, -815,
5037 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5038 15, 16, 17, 18, 0, 0, 0, 0, 0, 19,
5039 20, 21, 22, 23, 24, 25, 0, 0, 26, 0,
5040 0, 0, 0, 0, 27, 28, 284, 30, 31, 32,
5041 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5042 42, 43, 44, 45, 46, 0, 0, -815, 0, 0,
5043 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5044 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5045 49, 50, 0, 0, 0, 0, 0, 0, 51, 0,
5046 0, 52, 53, 54, 55, 0, 56, 0, 0, 57,
5047 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5049 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5050 0, 0, 0, 0, 0, 0, 66, 67, 68, 0,
5051 0, 0, 3, -815, 4, 5, 6, 7, 8, -815,
5052 0, -815, 9, 10, 0, 0, 0, 11, 0, 12,
5053 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
5054 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5055 26, 0, 0, 0, 0, 0, 27, 28, 284, 30,
5056 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5057 40, 41, 42, 43, 44, 45, 46, 0, 0, -815,
5058 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5059 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5060 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5061 51, 0, 0, 52, 53, 54, 55, 0, 56, 0,
5062 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5063 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5065 0, 0, 0, 0, 0, 0, 0, 0, 66, 67,
5066 68, 0, 0, 0, 3, -815, 4, 5, 6, 7,
5067 8, -815, 0, 0, 9, 10, 0, 0, 0, 11,
5068 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5069 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
5070 0, 0, 26, 0, 0, 0, 0, 0, 27, 28,
5071 284, 30, 31, 32, 33, 34, 35, 36, 37, 38,
5072 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5073 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
5074 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5075 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5076 0, 0, 51, 0, 0, 285, 53, 54, 55, 0,
5077 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5078 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5081 66, 67, 68, 0, 0, 0, 0, -815, 0, 0,
5082 0, -815, 3, -815, 4, 5, 6, 7, 8, 0,
5083 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5084 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
5085 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5086 26, 0, 0, 0, 0, 0, 27, 28, 284, 30,
5087 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5088 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5089 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5091 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5092 51, 0, 0, 52, 53, 54, 55, 0, 56, 0,
5093 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5094 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5095 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5096 0, 0, 0, 0, 0, 0, 0, 0, 66, 67,
5097 68, 0, 0, 0, 0, -815, 0, 0, 0, -815,
5098 3, -815, 4, 5, 6, 7, 8, 0, 0, 0,
5099 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5100 15, 16, 17, 18, 0, 0, 0, 0, 0, 19,
5101 20, 21, 22, 23, 24, 25, 0, 0, 26, 0,
5102 0, 0, 0, 0, 27, 28, 29, 30, 31, 32,
5103 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5104 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5105 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5106 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5107 49, 50, 0, 0, 0, 0, 0, 0, 51, 0,
5108 0, 52, 53, 54, 55, 0, 56, 0, 0, 57,
5109 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5110 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5111 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5112 0, 0, 0, 0, 0, 0, 66, 67, 68, 0,
5113 0, -815, 3, -815, 4, 5, 6, 7, 8, -815,
5114 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5115 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
5116 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
5117 26, 0, 0, 0, 0, 0, 27, 28, 284, 30,
5118 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5119 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5120 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5121 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5122 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5123 51, 0, 0, 52, 53, 54, 55, 0, 56, 0,
5124 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5125 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5127 0, 0, 0, 0, 0, 0, 0, 0, 66, 67,
5128 68, 0, 0, -815, 404, -815, 4, 5, 6, 0,
5129 8, -815, 0, 0, 9, 10, 0, 0, 0, 11,
5130 -3, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5131 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
5132 0, 0, 26, 0, 0, 0, 0, 0, 0, 28,
5133 0, 0, 31, 32, 33, 34, 35, 36, 37, 38,
5134 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5135 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
5136 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5137 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5138 0, 0, 229, 0, 0, 230, 53, 54, 55, 0,
5139 0, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5140 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
5141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5143 66, 67, 68, 0, 0, 0, 0, 331, 0, 0,
5144 0, 0, 0, 332, 144, 145, 146, 147, 148, 149,
5145 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
5146 160, 161, 162, 163, 164, 165, 166, 167, 0, 0,
5147 0, 168, 169, 170, 434, 435, 436, 437, 175, 176,
5148 177, 0, 0, 0, 0, 0, 178, 179, 180, 181,
5149 438, 439, 440, 441, 186, 36, 37, 442, 39, 0,
5150 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5151 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5152 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5153 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5154 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5155 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5156 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5157 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5158 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5159 216, 0, 0, 0, 0, 0, 0, 217, 443, 144,
5160 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
5161 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
5162 165, 166, 167, 0, 0, 0, 168, 169, 170, 171,
5163 172, 173, 174, 175, 176, 177, 0, 0, 0, 0,
5164 0, 178, 179, 180, 181, 182, 183, 184, 185, 186,
5165 36, 37, 187, 39, 0, 0, 0, 0, 0, 0,
5166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5167 0, 0, 188, 189, 190, 191, 192, 193, 194, 195,
5168 196, 0, 0, 197, 198, 0, 0, 0, 0, 199,
5169 200, 201, 202, 0, 0, 0, 0, 0, 0, 0,
5170 0, 0, 0, 203, 204, 0, 0, 0, 0, 0,
5171 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5172 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5173 0, 0, 0, 205, 206, 207, 208, 209, 210, 211,
5174 212, 213, 214, 0, 215, 216, 0, 0, 0, 0,
5175 0, 0, 217, 144, 145, 146, 147, 148, 149, 150,
5176 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
5177 161, 162, 163, 164, 165, 166, 167, 0, 0, 0,
5178 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
5179 0, 0, 0, 0, 0, 178, 179, 180, 181, 182,
5180 183, 184, 185, 186, 262, 0, 187, 0, 0, 0,
5181 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5182 0, 0, 0, 0, 0, 0, 188, 189, 190, 191,
5183 192, 193, 194, 195, 196, 0, 0, 197, 198, 0,
5184 0, 0, 0, 199, 200, 201, 202, 0, 0, 0,
5185 0, 0, 0, 0, 0, 0, 0, 203, 204, 0,
5186 0, 58, 0, 0, 0, 0, 0, 0, 0, 0,
5187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5188 0, 0, 0, 0, 0, 0, 0, 205, 206, 207,
5189 208, 209, 210, 211, 212, 213, 214, 0, 215, 216,
5190 0, 0, 0, 0, 0, 0, 217, 144, 145, 146,
5191 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
5192 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
5193 167, 0, 0, 0, 168, 169, 170, 171, 172, 173,
5194 174, 175, 176, 177, 0, 0, 0, 0, 0, 178,
5195 179, 180, 181, 182, 183, 184, 185, 186, 0, 0,
5196 187, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5198 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
5199 0, 197, 198, 0, 0, 0, 0, 199, 200, 201,
5200 202, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5201 0, 203, 204, 0, 0, 58, 0, 0, 0, 0,
5202 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5204 0, 205, 206, 207, 208, 209, 210, 211, 212, 213,
5205 214, 0, 215, 216, 0, 0, 0, 0, 0, 0,
5206 217, 144, 145, 146, 147, 148, 149, 150, 151, 152,
5207 153, 154, 155, 156, 157, 158, 159, 160, 161, 162,
5208 163, 164, 165, 166, 167, 0, 0, 0, 168, 169,
5209 170, 171, 172, 173, 174, 175, 176, 177, 0, 0,
5210 0, 0, 0, 178, 179, 180, 181, 182, 183, 184,
5211 185, 186, 0, 0, 187, 0, 0, 0, 0, 0,
5212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5213 0, 0, 0, 0, 188, 189, 190, 191, 192, 193,
5214 194, 195, 196, 0, 0, 197, 198, 0, 0, 0,
5215 0, 199, 200, 201, 202, 0, 0, 0, 0, 0,
5216 0, 0, 0, 0, 0, 203, 204, 0, 0, 0,
5217 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5219 0, 0, 0, 0, 0, 205, 206, 207, 208, 209,
5220 210, 211, 212, 213, 214, 0, 215, 216, 4, 5,
5221 6, 0, 8, 0, 217, 0, 9, 10, 0, 0,
5222 0, 11, 0, 12, 13, 14, 270, 271, 17, 18,
5223 0, 0, 0, 0, 0, 19, 20, 272, 22, 23,
5224 24, 25, 0, 0, 227, 0, 0, 0, 0, 0,
5225 0, 302, 0, 0, 31, 32, 33, 34, 35, 36,
5226 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
5227 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5229 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5230 0, 0, 0, 0, 303, 0, 0, 230, 53, 54,
5231 55, 0, 0, 0, 0, 57, 58, 59, 60, 61,
5232 62, 63, 64, 65, 0, 0, 4, 5, 6, 0,
5233 8, 0, 0, 0, 9, 10, 0, 0, 0, 11,
5234 0, 12, 13, 14, 270, 271, 17, 18, 0, 0,
5235 0, 0, 304, 19, 20, 272, 22, 23, 24, 25,
5236 305, 0, 227, 0, 0, 0, 0, 0, 0, 302,
5237 0, 0, 31, 32, 33, 34, 35, 36, 37, 38,
5238 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5241 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5242 0, 0, 303, 0, 0, 230, 53, 54, 55, 0,
5243 0, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5244 64, 65, 0, 0, 4, 5, 6, 0, 8, 0,
5245 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5246 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
5247 304, 19, 20, 21, 22, 23, 24, 25, 608, 0,
5248 227, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5249 31, 32, 33, 34, 35, 36, 37, 38, 39, 228,
5250 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5251 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5252 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5253 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5254 229, 0, 0, 230, 53, 54, 55, 0, 231, 232,
5255 233, 57, 58, 234, 60, 61, 62, 63, 64, 65,
5256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5258 0, 0, 0, 4, 5, 6, 0, 8, 66, 235,
5259 68, 9, 10, 0, 0, 259, 11, 0, 12, 13,
5260 14, 15, 16, 17, 18, 0, 0, 0, 0, 0,
5261 19, 20, 21, 22, 23, 24, 25, 0, 0, 26,
5262 0, 0, 0, 0, 0, 0, 28, 0, 0, 31,
5263 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
5264 41, 42, 43, 44, 45, 46, 0, 0, 0, 0,
5265 0, 0, 0, 0, 0, 0, 47, 48, 0, 0,
5266 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5267 0, 49, 50, 0, 0, 0, 0, 0, 0, 229,
5268 0, 0, 230, 53, 54, 55, 0, 0, 0, 0,
5269 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5270 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5272 3, 0, 4, 5, 6, 7, 8, 66, 67, 68,
5273 9, 10, 0, 0, 259, 11, 0, 12, 13, 14,
5274 15, 16, 17, 18, 0, 0, 0, 0, 0, 19,
5275 20, 21, 22, 23, 24, 25, 0, 0, 26, 0,
5276 0, 0, 0, 0, 27, 28, 0, 30, 31, 32,
5277 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5278 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5279 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5280 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5281 49, 50, 0, 0, 0, 0, 0, 0, 51, 0,
5282 0, 52, 53, 54, 55, 0, 56, 0, 0, 57,
5283 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5284 404, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5285 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5286 15, 16, 17, 18, 0, 0, 66, 67, 68, 19,
5287 20, 21, 22, 23, 24, 25, 0, 0, 26, 0,
5288 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5289 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5290 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5291 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5292 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5293 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5294 0, 230, 53, 54, 55, 0, 0, 0, 0, 57,
5295 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5296 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5297 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5298 15, 16, 17, 18, 0, 0, 66, 67, 68, 19,
5299 20, 21, 22, 23, 24, 25, 0, 0, 227, 0,
5300 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5301 33, 34, 35, 36, 37, 38, 39, 228, 40, 41,
5302 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5303 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5304 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5305 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5306 0, 230, 53, 54, 55, 0, 231, 232, 233, 57,
5307 58, 234, 60, 61, 62, 63, 64, 65, 0, 0,
5308 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5309 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5310 15, 16, 17, 18, 0, 0, 66, 235, 68, 19,
5311 20, 21, 22, 23, 24, 25, 0, 0, 227, 0,
5312 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5313 33, 34, 35, 36, 37, 38, 39, 228, 40, 41,
5314 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5315 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5316 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5317 49, 479, 0, 0, 0, 0, 0, 0, 229, 0,
5318 0, 230, 53, 54, 55, 0, 231, 232, 233, 57,
5319 58, 234, 60, 61, 62, 63, 64, 65, 0, 0,
5320 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5321 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5322 270, 271, 17, 18, 0, 0, 66, 235, 68, 19,
5323 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5324 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5325 33, 34, 35, 36, 37, 38, 39, 228, 40, 41,
5326 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5327 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5328 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5329 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5330 0, 230, 53, 54, 55, 0, 231, 232, 233, 57,
5331 58, 234, 60, 61, 62, 63, 64, 65, 0, 0,
5332 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5333 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5334 270, 271, 17, 18, 0, 0, 66, 235, 68, 19,
5335 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5336 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5337 33, 34, 35, 36, 37, 38, 39, 228, 40, 41,
5338 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5339 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5340 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5341 49, 479, 0, 0, 0, 0, 0, 0, 229, 0,
5342 0, 230, 53, 54, 55, 0, 231, 232, 233, 57,
5343 58, 234, 60, 61, 62, 63, 64, 65, 0, 0,
5344 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5345 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5346 270, 271, 17, 18, 0, 0, 66, 235, 68, 19,
5347 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5348 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5349 33, 34, 35, 36, 37, 38, 39, 228, 40, 41,
5350 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5351 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5353 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5354 0, 230, 53, 54, 55, 0, 231, 232, 0, 57,
5355 58, 234, 60, 61, 62, 63, 64, 65, 0, 0,
5356 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5357 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5358 270, 271, 17, 18, 0, 0, 66, 235, 68, 19,
5359 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5360 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5361 33, 34, 35, 36, 37, 38, 39, 228, 40, 41,
5362 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5363 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5365 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5366 0, 230, 53, 54, 55, 0, 0, 232, 233, 57,
5367 58, 234, 60, 61, 62, 63, 64, 65, 0, 0,
5368 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5369 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5370 270, 271, 17, 18, 0, 0, 66, 235, 68, 19,
5371 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5372 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5373 33, 34, 35, 36, 37, 38, 39, 228, 40, 41,
5374 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5375 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5377 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5378 0, 230, 53, 54, 55, 0, 0, 232, 0, 57,
5379 58, 234, 60, 61, 62, 63, 64, 65, 0, 0,
5380 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5381 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5382 15, 16, 17, 18, 0, 0, 66, 235, 68, 19,
5383 20, 21, 22, 23, 24, 25, 0, 0, 227, 0,
5384 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5385 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5386 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5387 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5389 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5390 0, 230, 53, 54, 55, 0, 795, 0, 0, 57,
5391 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5392 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5393 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5394 15, 16, 17, 18, 0, 0, 66, 235, 68, 19,
5395 20, 21, 22, 23, 24, 25, 0, 0, 227, 0,
5396 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5397 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5398 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5399 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5401 49, 50, 0, 0, 0, 0, 0, 0, 806, 0,
5402 0, 230, 53, 54, 55, 0, 795, 0, 0, 57,
5403 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5404 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5405 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5406 270, 271, 17, 18, 0, 0, 66, 235, 68, 19,
5407 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5408 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5409 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5410 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5411 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5413 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5414 0, 230, 53, 54, 55, 0, 967, 0, 0, 57,
5415 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5416 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5417 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5418 270, 271, 17, 18, 0, 0, 66, 235, 68, 19,
5419 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5420 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5421 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5422 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5423 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5424 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5425 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5426 0, 230, 53, 54, 55, 0, 1016, 0, 0, 57,
5427 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5428 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5429 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5430 270, 271, 17, 18, 0, 0, 66, 235, 68, 19,
5431 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5432 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5433 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5434 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5435 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5437 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5438 0, 230, 53, 54, 55, 0, 795, 0, 0, 57,
5439 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5440 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5441 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5442 270, 271, 17, 18, 0, 0, 66, 235, 68, 19,
5443 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5444 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5445 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5446 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5447 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5449 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5450 0, 230, 53, 54, 55, 0, 1136, 0, 0, 57,
5451 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5452 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5453 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5454 270, 271, 17, 18, 0, 0, 66, 235, 68, 19,
5455 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5456 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5457 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5458 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5459 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5461 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5462 0, 230, 53, 54, 55, 0, 0, 0, 0, 57,
5463 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5464 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5465 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5466 15, 16, 17, 18, 0, 0, 66, 235, 68, 19,
5467 20, 21, 22, 23, 24, 25, 0, 0, 227, 0,
5468 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5469 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5470 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5471 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5473 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5474 0, 230, 53, 54, 55, 0, 0, 0, 0, 57,
5475 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5476 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5477 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5478 15, 16, 17, 18, 0, 0, 66, 235, 68, 19,
5479 20, 21, 22, 23, 24, 25, 0, 0, 26, 0,
5480 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5481 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5482 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5483 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5484 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5485 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5486 0, 230, 53, 54, 55, 0, 0, 0, 0, 57,
5487 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5488 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5489 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5490 15, 16, 17, 18, 0, 0, 66, 67, 68, 19,
5491 20, 21, 22, 23, 24, 25, 0, 0, 777, 0,
5492 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5493 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5494 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5495 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5496 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5497 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5498 0, 230, 53, 54, 55, 0, 0, 0, 0, 57,
5499 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5500 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5501 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5502 15, 16, 17, 18, 0, 0, 66, 235, 68, 19,
5503 20, 21, 22, 23, 24, 25, 0, 0, 227, 0,
5504 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5505 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5506 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5507 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5508 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5509 49, 50, 0, 0, 0, 0, 0, 0, 806, 0,
5510 0, 230, 53, 54, 55, 0, 0, 0, 0, 57,
5511 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5512 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5513 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5514 270, 271, 17, 18, 0, 0, 66, 235, 68, 19,
5515 20, 272, 22, 23, 24, 25, 0, 0, 886, 0,
5516 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5517 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5518 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5519 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5520 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5521 49, 50, 0, 0, 0, 0, 0, 0, 229, 0,
5522 0, 230, 53, 54, 55, 0, 0, 0, 0, 57,
5523 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5524 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5525 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5526 270, 271, 17, 18, 0, 0, 66, 235, 68, 19,
5527 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5528 0, 0, 0, 0, 0, 302, 0, 0, 31, 32,
5529 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5530 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5531 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5533 0, 0, 0, 0, 0, 0, 0, 0, 303, 0,
5534 0, 363, 53, 54, 55, 0, 364, 0, 0, 57,
5535 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5536 4, 5, 6, 0, 8, 0, 0, 0, 9, 10,
5537 0, 0, 0, 11, 0, 12, 13, 14, 270, 271,
5538 17, 18, 0, 0, 0, 0, 304, 19, 20, 272,
5539 22, 23, 24, 25, 0, 0, 227, 0, 0, 0,
5540 0, 0, 0, 302, 0, 0, 31, 32, 33, 34,
5541 35, 36, 37, 38, 39, 0, 40, 41, 42, 43,
5542 44, 45, 46, 0, 0, 0, 0, 0, 0, 0,
5543 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5545 0, 0, 0, 0, 0, 0, 415, 0, 0, 52,
5546 53, 54, 55, 0, 56, 0, 0, 57, 58, 59,
5547 60, 61, 62, 63, 64, 65, 0, 0, 4, 5,
5548 6, 0, 8, 0, 0, 0, 9, 10, 0, 0,
5549 0, 11, 0, 12, 13, 14, 270, 271, 17, 18,
5550 0, 0, 0, 0, 304, 19, 20, 272, 22, 23,
5551 24, 25, 0, 0, 227, 0, 0, 0, 0, 0,
5552 0, 302, 0, 0, 31, 32, 33, 423, 35, 36,
5553 37, 424, 39, 0, 40, 41, 42, 43, 44, 45,
5554 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5555 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5557 425, 0, 0, 0, 426, 0, 0, 230, 53, 54,
5558 55, 0, 0, 0, 0, 57, 58, 59, 60, 61,
5559 62, 63, 64, 65, 0, 0, 4, 5, 6, 0,
5560 8, 0, 0, 0, 9, 10, 0, 0, 0, 11,
5561 0, 12, 13, 14, 270, 271, 17, 18, 0, 0,
5562 0, 0, 304, 19, 20, 272, 22, 23, 24, 25,
5563 0, 0, 227, 0, 0, 0, 0, 0, 0, 302,
5564 0, 0, 31, 32, 33, 423, 35, 36, 37, 424,
5565 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5566 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5568 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5569 0, 0, 426, 0, 0, 230, 53, 54, 55, 0,
5570 0, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5571 64, 65, 0, 0, 4, 5, 6, 0, 8, 0,
5572 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5573 13, 14, 270, 271, 17, 18, 0, 0, 0, 0,
5574 304, 19, 20, 272, 22, 23, 24, 25, 0, 0,
5575 227, 0, 0, 0, 0, 0, 0, 302, 0, 0,
5576 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5577 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5578 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5579 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5581 303, 0, 0, 363, 53, 54, 55, 0, 0, 0,
5582 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5583 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5584 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5585 270, 271, 17, 18, 0, 0, 0, 0, 304, 19,
5586 20, 272, 22, 23, 24, 25, 0, 0, 227, 0,
5587 0, 0, 0, 0, 0, 302, 0, 0, 31, 32,
5588 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5589 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5592 0, 0, 0, 0, 0, 0, 0, 0, 1192, 0,
5593 0, 230, 53, 54, 55, 0, 0, 0, 0, 57,
5594 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5595 4, 5, 6, 0, 8, 0, 0, 0, 9, 10,
5596 0, 0, 0, 11, 0, 12, 13, 14, 270, 271,
5597 17, 18, 0, 0, 0, 0, 304, 19, 20, 272,
5598 22, 23, 24, 25, 0, 0, 227, 0, 0, 0,
5599 0, 0, 0, 302, 0, 0, 31, 32, 33, 34,
5600 35, 36, 37, 38, 39, 0, 40, 41, 42, 43,
5601 44, 45, 46, 0, 0, 0, 0, 0, 0, 0,
5602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5604 0, 0, 0, 0, 0, 0, 1291, 0, 0, 230,
5605 53, 54, 55, 22, 23, 24, 25, 57, 58, 59,
5606 60, 61, 62, 63, 64, 65, 0, 0, 0, 31,
5607 32, 33, 1079, 0, 0, 0, 1080, 0, 0, 40,
5608 41, 42, 43, 44, 0, 0, 0, 0, 0, 0,
5609 0, 0, 0, 0, 304, 0, 0, 0, 0, 0,
5610 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5611 0, 1082, 1083, 0, 0, 0, 0, 0, 0, 1084,
5612 0, 0, 1085, 0, 1086, 1087, 0, 0, 0, 0,
5613 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5614 0, 0, 0, 0, 700, 639, 0, 0, 701, 0,
5615 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5616 1090, 0, 0, 0, 0, 0, 0, 304, 188, 189,
5617 190, 191, 192, 193, 194, 195, 196, 0, 0, 197,
5618 198, 0, 0, 0, 0, 199, 200, 201, 202, 0,
5619 0, 0, 0, 0, 0, 0, 0, 0, 0, 203,
5620 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5621 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5622 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
5623 206, 207, 208, 209, 210, 211, 212, 213, 214, 0,
5624 215, 216, 703, 647, 0, 0, 704, 0, 217, 0,
5625 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5626 0, 0, 0, 0, 0, 0, 188, 189, 190, 191,
5627 192, 193, 194, 195, 196, 0, 0, 197, 198, 0,
5628 0, 0, 0, 199, 200, 201, 202, 0, 0, 0,
5629 0, 0, 0, 0, 0, 0, 0, 203, 204, 0,
5630 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5632 0, 0, 0, 0, 0, 0, 0, 205, 206, 207,
5633 208, 209, 210, 211, 212, 213, 214, 0, 215, 216,
5634 700, 639, 0, 0, 720, 0, 217, 0, 0, 0,
5635 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5636 0, 0, 0, 0, 188, 189, 190, 191, 192, 193,
5637 194, 195, 196, 0, 0, 197, 198, 0, 0, 0,
5638 0, 199, 200, 201, 202, 0, 0, 0, 0, 0,
5639 0, 0, 0, 0, 0, 203, 204, 0, 0, 0,
5640 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5642 0, 0, 0, 0, 0, 205, 206, 207, 208, 209,
5643 210, 211, 212, 213, 214, 0, 215, 216, 731, 639,
5644 0, 0, 732, 0, 217, 0, 0, 0, 0, 0,
5645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5646 0, 0, 188, 189, 190, 191, 192, 193, 194, 195,
5647 196, 0, 0, 197, 198, 0, 0, 0, 0, 199,
5648 200, 201, 202, 0, 0, 0, 0, 0, 0, 0,
5649 0, 0, 0, 203, 204, 0, 0, 0, 0, 0,
5650 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5651 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5652 0, 0, 0, 205, 206, 207, 208, 209, 210, 211,
5653 212, 213, 214, 0, 215, 216, 734, 647, 0, 0,
5654 735, 0, 217, 0, 0, 0, 0, 0, 0, 0,
5655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5656 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
5657 0, 197, 198, 0, 0, 0, 0, 199, 200, 201,
5658 202, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5659 0, 203, 204, 0, 0, 0, 0, 0, 0, 0,
5660 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5662 0, 205, 206, 207, 208, 209, 210, 211, 212, 213,
5663 214, 0, 215, 216, 850, 639, 0, 0, 851, 0,
5664 217, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5665 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
5666 190, 191, 192, 193, 194, 195, 196, 0, 0, 197,
5667 198, 0, 0, 0, 0, 199, 200, 201, 202, 0,
5668 0, 0, 0, 0, 0, 0, 0, 0, 0, 203,
5669 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5671 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
5672 206, 207, 208, 209, 210, 211, 212, 213, 214, 0,
5673 215, 216, 853, 647, 0, 0, 854, 0, 217, 0,
5674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5675 0, 0, 0, 0, 0, 0, 188, 189, 190, 191,
5676 192, 193, 194, 195, 196, 0, 0, 197, 198, 0,
5677 0, 0, 0, 199, 200, 201, 202, 0, 0, 0,
5678 0, 0, 0, 0, 0, 0, 0, 203, 204, 0,
5679 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5680 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5681 0, 0, 0, 0, 0, 0, 0, 205, 206, 207,
5682 208, 209, 210, 211, 212, 213, 214, 0, 215, 216,
5683 859, 639, 0, 0, 860, 0, 217, 0, 0, 0,
5684 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5685 0, 0, 0, 0, 188, 189, 190, 191, 192, 193,
5686 194, 195, 196, 0, 0, 197, 198, 0, 0, 0,
5687 0, 199, 200, 201, 202, 0, 0, 0, 0, 0,
5688 0, 0, 0, 0, 0, 203, 204, 0, 0, 0,
5689 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5690 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5691 0, 0, 0, 0, 0, 205, 206, 207, 208, 209,
5692 210, 211, 212, 213, 214, 0, 215, 216, 685, 647,
5693 0, 0, 686, 0, 217, 0, 0, 0, 0, 0,
5694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5695 0, 0, 188, 189, 190, 191, 192, 193, 194, 195,
5696 196, 0, 0, 197, 198, 0, 0, 0, 0, 199,
5697 200, 201, 202, 0, 0, 0, 0, 0, 0, 0,
5698 0, 0, 0, 203, 204, 0, 0, 0, 0, 0,
5699 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5700 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5701 0, 0, 0, 205, 206, 207, 208, 209, 210, 211,
5702 212, 213, 214, 0, 215, 216, 1022, 639, 0, 0,
5703 1023, 0, 217, 0, 0, 0, 0, 0, 0, 0,
5704 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5705 188, 189, 190, 191, 192, 193, 194, 195, 196, 0,
5706 0, 197, 198, 0, 0, 0, 0, 199, 200, 201,
5707 202, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5708 0, 203, 204, 0, 0, 0, 0, 0, 0, 0,
5709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5710 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5711 0, 205, 206, 207, 208, 209, 210, 211, 212, 213,
5712 214, 0, 215, 216, 1025, 647, 0, 0, 1026, 0,
5713 217, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5714 0, 0, 0, 0, 0, 0, 0, 0, 188, 189,
5715 190, 191, 192, 193, 194, 195, 196, 0, 0, 197,
5716 198, 0, 0, 0, 0, 199, 200, 201, 202, 0,
5717 0, 0, 0, 0, 0, 0, 0, 0, 0, 203,
5718 204, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5719 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5720 0, 0, 0, 0, 0, 0, 0, 0, 0, 205,
5721 206, 207, 208, 209, 210, 211, 212, 213, 214, 0,
5722 215, 216, 1310, 639, 0, 0, 1311, 0, 217, 0,
5723 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5724 0, 0, 0, 0, 0, 0, 188, 189, 190, 191,
5725 192, 193, 194, 195, 196, 0, 0, 197, 198, 0,
5726 0, 0, 0, 199, 200, 201, 202, 0, 0, 0,
5727 0, 0, 0, 0, 0, 0, 0, 203, 204, 0,
5728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5730 0, 0, 0, 0, 0, 0, 0, 205, 206, 207,
5731 208, 209, 210, 211, 212, 213, 214, 0, 215, 216,
5732 1313, 647, 0, 0, 1314, 0, 217, 0, 0, 0,
5733 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5734 0, 0, 0, 0, 188, 189, 190, 191, 192, 193,
5735 194, 195, 196, 0, 0, 197, 198, 0, 0, 0,
5736 0, 199, 200, 201, 202, 0, 0, 0, 0, 0,
5737 0, 0, 0, 0, 0, 203, 204, 0, 0, 0,
5738 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5739 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5740 0, 0, 0, 0, 0, 205, 206, 207, 208, 209,
5741 210, 211, 212, 213, 214, 0, 215, 216, 1358, 639,
5742 0, 0, 1359, 0, 217, 0, 0, 0, 0, 0,
5743 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5744 0, 0, 188, 189, 190, 191, 192, 193, 194, 195,
5745 196, 0, 0, 197, 198, 0, 0, 0, 0, 199,
5746 200, 201, 202, 0, 0, 0, 0, 0, 0, 0,
5747 0, 0, 0, 203, 204, 0, 0, 0, 0, 0,
5748 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5749 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5750 0, 0, 0, 205, 206, 207, 208, 209, 210, 211,
5751 212, 213, 214, 0, 215, 216, 0, 0, 0, 0,
5755static const yytype_int16 yycheck[] =
5757 1, 116, 59, 103, 104, 107, 70, 107, 58, 56,
5758 101, 70, 58, 13, 14, 1, 565, 89, 399, 7,
5759 401, 252, 408, 768, 115, 400, 426, 1, 348, 67,
5760 15, 16, 574, 27, 761, 52, 53, 15, 16, 27,
5761 477, 838, 89, 344, 611, 597, 469, 348, 107, 21,
5762 597, 52, 53, 15, 16, 56, 595, 7, 56, 598,
5763 344, 108, 109, 110, 348, 111, 52, 53, 54, 55,
5764 58, 255, 72, 601, 455, 848, 469, 27, 515, 104,
5765 525, 296, 107, 761, 477, 300, 763, 52, 89, 512,
5766 81, 472, 54, 474, 80, 81, 26, 84, 473, 66,
5767 63, 64, 65, 15, 16, 626, 907, 108, 109, 110,
5768 111, 905, 84, 13, 1165, 0, 285, 25, 25, 1028,
5769 818, 502, 25, 111, 689, 690, 113, 112, 15, 16,
5770 1181, 1284, 320, 321, 112, 1276, 26, 29, 154, 678,
5771 0, 1165, 69, 159, 100, 154, 25, 528, 10, 81,
5772 112, 25, 527, 1189, 1190, 1179, 247, 101, 723, 25,
5773 260, 261, 605, 608, 585, 824, 101, 54, 55, 66,
5774 591, 98, 719, 832, 290, 25, 25, 234, 134, 763,
5775 100, 100, 151, 69, 100, 287, 277, 763, 943, 56,
5776 774, 25, 768, 25, 363, 26, 758, 28, 1153, 761,
5777 112, 1354, 751, 752, 161, 1346, 68, 37, 38, 28,
5778 653, 155, 98, 230, 134, 134, 659, 660, 134, 310,
5779 155, 151, 119, 287, 27, 112, 134, 13, 287, 230,
5780 1139, 123, 13, 305, 155, 120, 155, 337, 338, 339,
5781 340, 157, 342, 343, 230, 1296, 154, 155, 155, 1300,
5782 158, 1302, 155, 484, 154, 155, 1001, 134, 305, 245,
5783 160, 151, 1298, 1064, 13, 266, 252, 157, 285, 255,
5784 255, 1065, 257, 971, 711, 675, 155, 255, 1302, 257,
5785 266, 155, 273, 274, 285, 666, 709, 273, 274, 155,
5786 665, 157, 266, 255, 822, 257, 677, 13, 1053, 285,
5787 272, 676, 13, 275, 305, 155, 155, 13, 157, 409,
5788 1361, 413, 337, 338, 339, 340, 709, 364, 711, 858,
5789 285, 155, 34, 155, 154, 425, 847, 418, 1005, 1284,
5790 1085, 100, 1087, 1288, 335, 451, 1086, 304, 1293, 782,
5791 52, 1138, 274, 786, 100, 257, 363, 25, 52, 1027,
5792 1028, 154, 56, 541, 413, 543, 905, 160, 907, 66,
5793 805, 335, 363, 364, 480, 1138, 364, 483, 154, 911,
5794 257, 923, 488, 154, 160, 307, 923, 363, 134, 160,
5795 945, 946, 101, 134, 409, 13, 951, 952, 955, 505,
5796 154, 1027, 1028, 410, 411, 1350, 160, 1352, 363, 1354,
5797 425, 1356, 403, 846, 827, 154, 849, 58, 157, 410,
5798 411, 160, 119, 401, 400, 400, 100, 403, 1373, 1003,
5799 863, 1005, 400, 1007, 410, 411, 66, 78, 100, 1005,
5800 402, 13, 1187, 1188, 827, 154, 112, 976, 154, 1189,
5801 1190, 157, 428, 154, 160, 13, 993, 155, 154, 160,
5802 134, 100, 134, 525, 160, 13, 134, 108, 109, 1027,
5803 1028, 1139, 134, 579, 295, 296, 451, 455, 699, 300,
5804 1035, 302, 157, 451, 34, 157, 154, 155, 525, 763,
5805 158, 121, 122, 455, 768, 134, 474, 473, 473, 451,
5806 141, 607, 52, 914, 915, 473, 482, 918, 484, 920,
5807 494, 922, 25, 1139, 1182, 69, 494, 508, 78, 932,
5808 15, 1189, 1190, 728, 502, 1064, 1065, 69, 56, 962,
5809 25, 161, 965, 134, 525, 709, 154, 1082, 1083, 972,
5810 69, 548, 160, 97, 98, 978, 608, 596, 109, 451,
5811 528, 527, 527, 1288, 494, 97, 98, 548, 1345, 527,
5812 100, 98, 740, 554, 991, 1282, 100, 745, 939, 98,
5813 941, 608, 548, 155, 451, 940, 1150, 683, 606, 1153,
5814 141, 1139, 154, 611, 144, 145, 146, 1153, 160, 679,
5815 554, 101, 469, 969, 134, 571, 154, 611, 574, 153,
5816 134, 1153, 160, 157, 595, 157, 154, 598, 991, 658,
5817 100, 153, 160, 100, 1282, 1350, 153, 608, 100, 595,
5818 157, 134, 598, 1056, 1182, 715, 594, 157, 1157, 597,
5819 1298, 1189, 1190, 52, 155, 512, 100, 56, 100, 1184,
5820 1185, 154, 155, 154, 157, 158, 157, 134, 655, 755,
5821 657, 152, 134, 154, 606, 1066, 1067, 1068, 1069, 611,
5822 78, 689, 690, 884, 655, 642, 657, 729, 155, 645,
5823 134, 1047, 134, 650, 650, 689, 690, 69, 157, 655,
5824 642, 657, 25, 1215, 994, 1217, 69, 678, 666, 665,
5825 665, 1153, 729, 155, 1084, 723, 134, 665, 738, 677,
5826 676, 676, 678, 994, 69, 97, 98, 691, 676, 723,
5827 1284, 688, 688, 691, 97, 98, 69, 155, 1284, 1293,
5828 994, 78, 1288, 699, 142, 143, 144, 145, 146, 100,
5829 1282, 1005, 1284, 98, 815, 69, 1288, 100, 729, 787,
5830 1298, 1293, 790, 805, 69, 98, 722, 26, 158, 1278,
5831 1060, 691, 1128, 702, 66, 67, 69, 134, 864, 721,
5832 159, 153, 867, 134, 98, 855, 152, 857, 805, 1060,
5833 153, 134, 97, 98, 15, 1208, 17, 883, 1352, 885,
5834 1354, 56, 1356, 66, 733, 98, 1060, 740, 1354, 742,
5835 69, 134, 745, 746, 26, 1327, 1186, 903, 1350, 1373,
5836 1352, 157, 1354, 1214, 1356, 69, 627, 856, 66, 121,
5837 122, 154, 155, 100, 805, 158, 69, 69, 97, 98,
5838 1282, 1373, 1284, 644, 1027, 1028, 1288, 26, 153, 865,
5839 1206, 1293, 709, 97, 98, 155, 119, 69, 121, 122,
5840 855, 124, 857, 54, 97, 98, 98, 134, 69, 78,
5841 928, 69, 930, 64, 65, 154, 69, 161, 834, 158,
5842 836, 119, 838, 121, 122, 97, 98, 858, 155, 599,
5843 69, 961, 151, 603, 153, 100, 69, 98, 157, 1153,
5844 98, 702, 858, 1086, 97, 98, 69, 865, 1350, 153,
5845 1352, 1324, 1354, 100, 1356, 151, 1267, 134, 97, 98,
5846 1103, 1266, 892, 852, 97, 98, 134, 728, 884, 134,
5847 134, 1373, 733, 862, 97, 98, 1296, 945, 946, 151,
5848 1300, 153, 106, 951, 952, 157, 975, 134, 977, 155,
5849 155, 945, 946, 69, 56, 911, 1139, 951, 952, 30,
5850 153, 37, 38, 66, 160, 69, 961, 100, 155, 69,
5851 827, 25, 151, 960, 153, 923, 777, 138, 157, 1162,
5852 153, 97, 98, 941, 940, 940, 155, 69, 155, 960,
5853 153, 134, 940, 97, 98, 152, 1179, 97, 98, 955,
5854 69, 134, 154, 155, 960, 976, 1189, 1190, 995, 83,
5855 84, 158, 1020, 134, 69, 97, 98, 1, 121, 122,
5856 976, 124, 155, 955, 995, 155, 1020, 1035, 97, 98,
5857 1284, 15, 16, 158, 1288, 154, 155, 153, 155, 995,
5858 155, 1035, 97, 98, 1014, 1015, 155, 1018, 1019, 153,
5859 155, 852, 52, 153, 14, 15, 1027, 1028, 155, 58,
5860 155, 862, 1089, 137, 138, 1052, 1179, 134, 52, 53,
5861 1090, 153, 56, 78, 1018, 1019, 1189, 1190, 52, 78,
5862 152, 1052, 155, 67, 153, 886, 1042, 55, 1044, 155,
5863 95, 96, 89, 90, 13, 1024, 1052, 17, 153, 25,
5864 1354, 152, 1188, 40, 41, 89, 1176, 154, 155, 108,
5865 1127, 1082, 1083, 112, 155, 1086, 1072, 1073, 155, 103,
5866 104, 306, 307, 107, 108, 109, 110, 1199, 112, 44,
5867 134, 44, 1103, 1194, 139, 140, 141, 142, 143, 144,
5868 145, 146, 152, 155, 66, 1231, 155, 1134, 1135, 44,
5869 56, 54, 55, 1140, 57, 1241, 1127, 1086, 44, 134,
5870 1131, 64, 65, 1134, 1135, 1199, 136, 1154, 1139, 1140,
5871 1199, 159, 1258, 1259, 1260, 1131, 924, 925, 1134, 1135,
5872 8, 1176, 1138, 1154, 1140, 933, 1157, 52, 936, 15,
5873 938, 1162, 155, 264, 1165, 152, 155, 119, 1154, 121,
5874 122, 1157, 124, 1273, 1274, 155, 155, 155, 1179, 1226,
5875 1181, 1198, 155, 1184, 1185, 155, 689, 690, 1189, 1190,
5876 155, 1248, 155, 1024, 101, 1212, 9, 1198, 66, 139,
5877 155, 52, 705, 706, 139, 1164, 52, 1, 1167, 155,
5878 152, 1212, 1198, 66, 155, 1201, 230, 155, 101, 66,
5879 723, 15, 16, 56, 158, 1226, 1212, 139, 1187, 1215,
5880 228, 1217, 160, 231, 232, 233, 59, 60, 61, 62,
5881 1287, 255, 155, 257, 1245, 155, 260, 261, 1273, 1274,
5882 155, 119, 266, 121, 122, 1086, 1087, 155, 52, 53,
5883 361, 155, 155, 155, 155, 366, 119, 152, 121, 122,
5884 56, 285, 119, 67, 121, 122, 155, 1278, 155, 1267,
5885 1266, 1266, 1268, 155, 1270, 155, 1287, 66, 1266, 155,
5886 157, 305, 1278, 157, 155, 1296, 504, 266, 335, 1300,
5887 1317, 1302, 1261, 1262, 1263, 1131, 508, 106, 865, 103,
5888 104, 1142, 606, 107, 110, 108, 1317, 78, 112, 495,
5889 98, 335, 956, 337, 338, 339, 340, 688, 342, 343,
5890 975, 1317, 1201, 1164, 95, 96, 1167, 751, 905, 1282,
5891 119, 1327, 121, 122, 40, 41, 42, 43, 44, 363,
5892 364, 1224, 1153, 1312, 1288, 1073, 1187, 458, 459, 1345,
5893 1361, 78, 1223, 1346, 1027, 1028, 467, 868, 359, 1345,
5894 1245, 1182, 875, 1182, 475, 476, 1178, 1268, 95, 96,
5895 141, 142, 143, 144, 145, 146, 400, 1270, 119, 403,
5896 543, 111, 1223, 761, 495, 409, 410, 411, 768, 115,
5897 1340, 52, 503, 54, 55, 56, 57, -1, -1, -1,
5898 -1, 425, 52, -1, 54, 55, 56, 57, 58, 1082,
5899 1083, -1, -1, 1086, -1, 142, 143, 144, 145, 146,
5900 1261, 1262, 1263, -1, -1, -1, 230, 451, 78, -1,
5901 1103, -1, 945, 946, -1, -1, -1, -1, 951, 952,
5902 -1, 102, 92, -1, -1, -1, 107, -1, -1, 473,
5903 -1, 255, 102, 257, -1, -1, 260, 261, 108, 109,
5904 468, 469, 266, -1, -1, 52, 1139, 54, 55, 477,
5905 57, 1312, 985, 986, -1, 988, 989, -1, -1, -1,
5906 1321, 285, -1, 52, 508, 54, 55, 56, 57, 1162,
5907 -1, 141, 1165, 52, -1, 54, 55, 56, 57, 1340,
5908 -1, 525, -1, 527, 512, -1, 1179, 515, 1181, -1,
5909 -1, 1184, 1185, -1, -1, 102, 1189, 1190, -1, -1,
5910 -1, -1, 1035, 52, 548, 54, 55, 56, 57, -1,
5911 554, 335, -1, 337, 338, 339, 340, -1, 342, 343,
5912 -1, 652, -1, 102, -1, -1, 1059, -1, -1, -1,
5913 -1, 1225, -1, 1227, -1, -1, -1, -1, -1, 363,
5914 52, -1, 54, 55, 56, 57, 58, -1, -1, -1,
5915 594, 595, 1245, 597, 598, -1, -1, -1, 586, -1,
5916 -1, 692, 606, -1, 608, -1, 78, 611, -1, -1,
5917 -1, -1, -1, -1, -1, -1, 400, -1, 606, 403,
5918 -1, -1, -1, 611, -1, 409, 410, 411, -1, -1,
5919 102, -1, -1, -1, -1, -1, 108, 109, -1, -1,
5920 -1, 425, -1, 1296, -1, -1, -1, 1300, -1, 1302,
5921 -1, 655, -1, 657, -1, -1, -1, -1, 44, -1,
5922 -1, 665, -1, -1, -1, -1, -1, 451, -1, 141,
5923 -1, -1, 676, -1, 678, 679, 1330, 1331, -1, -1,
5924 1334, 1335, -1, -1, 1338, 689, 690, -1, -1, 473,
5925 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
5926 86, 87, 88, 89, 90, 693, -1, -1, 1361, 95,
5927 96, 715, -1, 1367, 1368, 1369, 1370, -1, -1, 723,
5928 -1, 709, 1376, 711, 508, 729, -1, -1, -1, 820,
5929 821, -1, -1, -1, -1, -1, -1, 828, 829, -1,
5930 -1, -1, 52, 527, 54, 55, 56, 57, 58, 135,
5931 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
5932 146, -1, -1, -1, 548, -1, -1, -1, 78, 155,
5933 554, -1, -1, -1, -1, -1, -1, -1, -1, 767,
5934 -1, -1, 92, -1, -1, -1, -1, 878, 879, -1,
5935 881, 882, 102, -1, -1, -1, -1, 107, 108, 109,
5936 -1, 805, -1, -1, -1, -1, -1, 795, -1, -1,
5937 594, 595, -1, 597, 598, -1, -1, -1, -1, -1,
5938 -1, -1, 606, -1, -1, -1, -1, 611, -1, -1,
5939 -1, 141, -1, -1, 144, -1, -1, -1, -1, 827,
5940 -1, -1, -1, -1, -1, -1, 937, 157, 1, -1,
5941 -1, 855, -1, 857, 858, -1, -1, 845, -1, 950,
5942 -1, -1, 15, 16, -1, -1, -1, -1, -1, -1,
5943 -1, 655, 52, 657, 54, 55, 56, 57, 58, -1,
5944 -1, 665, -1, -1, -1, -1, -1, -1, -1, -1,
5945 -1, -1, 676, -1, 678, 679, 987, -1, 78, 52,
5946 53, -1, -1, -1, -1, 689, 690, -1, -1, -1,
5947 -1, -1, 92, -1, 67, -1, -1, -1, -1, 923,
5948 -1, -1, 102, -1, -1, -1, -1, 107, 108, 109,
5949 -1, 715, -1, -1, -1, -1, 940, -1, -1, 723,
5950 -1, 945, 946, -1, 932, -1, -1, 951, 952, -1,
5951 103, 104, -1, -1, 107, -1, 960, 961, -1, 112,
5952 -1, 141, -1, -1, 144, -1, -1, 955, -1, -1,
5953 -1, -1, 976, -1, -1, -1, -1, -1, -1, 967,
5954 25, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5955 -1, 995, -1, -1, -1, -1, -1, -1, -1, -1,
5956 -1, -1, -1, 991, -1, -1, -1, -1, -1, -1,
5957 -1, -1, -1, -1, 1018, 1019, 1020, -1, -1, -1,
5958 -1, -1, -1, -1, -1, -1, -1, -1, 1016, -1,
5959 -1, 1035, -1, 78, 79, 80, 81, 82, 83, 84,
5960 85, 86, 87, 88, 89, 90, -1, -1, 1052, -1,
5961 95, 96, -1, -1, -1, 52, 101, 54, 55, 56,
5962 57, 58, -1, 1051, -1, -1, 1027, 1028, 1, -1,
5963 -1, 855, -1, 857, 858, -1, -1, 230, -1, -1,
5964 1171, 78, 15, 16, -1, -1, -1, -1, -1, -1,
5965 135, -1, 137, 138, 139, 140, 141, 142, 143, 144,
5966 145, 146, 255, -1, 257, 102, -1, 260, 261, -1,
5967 107, 108, 109, 266, -1, -1, -1, -1, -1, 52,
5968 53, 1082, 1083, 1127, -1, 1086, -1, 1131, -1, -1,
5969 1134, 1135, 285, -1, 67, -1, 1140, -1, -1, 923,
5970 -1, -1, 1103, -1, 141, -1, -1, 144, 1136, -1,
5971 1154, -1, -1, 1157, -1, -1, 940, -1, -1, -1,
5972 -1, 945, 946, -1, -1, -1, -1, 951, 952, -1,
5973 103, 104, 1176, -1, 107, -1, 960, 961, 1139, 112,
5974 -1, -1, 335, -1, 337, 338, 339, 340, -1, 342,
5975 343, -1, 976, -1, 1198, -1, -1, -1, -1, -1,
5976 -1, 1162, -1, -1, 1165, -1, -1, -1, 1212, -1,
5977 363, 995, -1, -1, -1, -1, -1, -1, 1179, -1,
5978 1181, -1, 1226, 1184, 1185, -1, -1, -1, 1189, 1190,
5979 -1, -1, -1, -1, 1018, 1019, 1020, -1, -1, -1,
5980 -1, -1, -1, -1, -1, -1, -1, 400, -1, -1,
5981 403, 1035, -1, -1, -1, -1, 409, 410, 411, -1,
5982 -1, -1, 1266, -1, -1, -1, -1, -1, 1052, 1273,
5983 1274, -1, 425, -1, 1278, 52, 53, -1, -1, 56,
5984 -1, -1, -1, 1287, 1245, -1, -1, -1, -1, -1,
5985 -1, -1, -1, -1, -1, -1, -1, 230, 451, 76,
5986 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
5987 87, 88, -1, 1317, -1, -1, 93, 94, 95, 96,
5988 473, -1, 255, -1, 257, -1, -1, 260, 261, -1,
5989 107, 108, -1, 266, -1, 1296, -1, -1, -1, 1300,
5990 -1, 1302, -1, -1, -1, -1, -1, 1131, -1, -1,
5991 1134, 1135, 285, -1, -1, 508, 1140, -1, -1, -1,
5992 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
5993 1154, 148, 149, 1157, 527, -1, -1, -1, -1, 156,
5994 157, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5995 -1, -1, 1176, -1, -1, 548, -1, -1, -1, -1,
5996 1361, 554, 335, -1, 337, 338, 339, 340, -1, 342,
5997 343, -1, -1, -1, 1198, -1, -1, -1, -1, -1,
5998 -1, -1, -1, -1, -1, -1, -1, -1, 1212, -1,
5999 363, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6000 -1, 594, 595, -1, 597, 598, -1, -1, -1, -1,
6001 -1, -1, -1, 606, -1, -1, -1, -1, 611, -1,
6002 -1, -1, -1, -1, -1, -1, -1, 400, -1, -1,
6003 403, -1, -1, -1, -1, -1, 409, 410, 411, -1,
6004 -1, -1, 1266, -1, -1, -1, -1, -1, -1, 1273,
6005 1274, -1, 425, -1, 1278, -1, 1027, 1028, -1, -1,
6006 -1, -1, 655, -1, 657, -1, -1, -1, -1, -1,
6007 -1, -1, 665, -1, -1, -1, -1, -1, 451, -1,
6008 -1, -1, -1, 676, -1, 678, 679, -1, -1, -1,
6009 -1, -1, -1, 1317, -1, -1, 689, 690, -1, -1,
6010 473, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6011 -1, 1082, 1083, -1, -1, 1086, -1, -1, -1, -1,
6012 -1, -1, 715, -1, -1, -1, -1, -1, -1, -1,
6013 723, -1, 1103, -1, -1, 508, -1, -1, -1, -1,
6014 -1, -1, -1, -1, 1, -1, -1, -1, -1, -1,
6015 -1, -1, -1, -1, 527, -1, -1, -1, 15, 16,
6016 -1, 1027, 1028, -1, -1, -1, -1, -1, 1139, -1,
6017 -1, -1, -1, -1, -1, 548, -1, -1, -1, -1,
6018 -1, 554, -1, -1, -1, -1, -1, -1, -1, -1,
6019 -1, 1162, -1, -1, 1165, 52, 53, -1, -1, 56,
6020 -1, -1, -1, -1, -1, -1, -1, -1, 1179, -1,
6021 1181, -1, -1, 1184, 1185, -1, 1082, 1083, 1189, 1190,
6022 1086, 594, 595, -1, 597, 598, -1, -1, -1, -1,
6023 -1, -1, 89, 606, -1, -1, -1, 1103, 611, -1,
6024 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6025 -1, 108, 109, 110, -1, 112, -1, -1, -1, -1,
6026 -1, -1, 855, -1, 857, 858, -1, -1, -1, -1,
6027 -1, -1, -1, 1139, 1245, -1, -1, -1, -1, -1,
6028 -1, -1, 655, -1, 657, -1, -1, -1, -1, -1,
6029 -1, -1, 665, -1, -1, -1, 1162, -1, -1, 1165,
6030 -1, -1, -1, 676, -1, 678, 679, -1, -1, -1,
6031 -1, -1, -1, 1179, -1, 1181, 689, 690, 1184, 1185,
6032 -1, -1, -1, 1189, 1190, 1296, -1, -1, -1, 1300,
6033 923, 1302, -1, -1, -1, -1, -1, -1, -1, -1,
6034 -1, -1, 715, -1, -1, -1, -1, 940, -1, -1,
6035 723, -1, 945, 946, -1, -1, 1027, 1028, 951, 952,
6036 -1, -1, -1, -1, -1, -1, -1, 960, 961, -1,
6037 -1, -1, -1, 230, -1, -1, -1, -1, -1, 1245,
6038 -1, -1, -1, 976, -1, -1, -1, -1, -1, -1,
6039 1361, -1, -1, -1, -1, -1, -1, -1, 255, -1,
6040 257, -1, 995, -1, -1, -1, -1, -1, -1, 266,
6041 -1, 1082, 1083, -1, -1, 1086, -1, -1, -1, -1,
6042 -1, -1, -1, -1, -1, 1018, 1019, 1020, 285, -1,
6043 1296, -1, 1103, -1, 1300, -1, 1302, -1, -1, -1,
6044 -1, -1, 1035, -1, 33, 34, 35, 36, 305, -1,
6045 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1052,
6046 49, 50, 51, -1, -1, -1, -1, -1, 1139, -1,
6047 59, 60, 61, 62, 63, -1, -1, -1, 335, -1,
6048 1027, 1028, 855, -1, 857, 858, -1, -1, -1, -1,
6049 -1, 1162, -1, -1, 1165, 1361, -1, -1, -1, -1,
6050 -1, -1, -1, -1, -1, -1, 363, 364, 1179, -1,
6051 1181, -1, -1, 1184, 1185, -1, -1, -1, 1189, 1190,
6052 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6053 -1, -1, -1, -1, -1, 1082, 1083, -1, 1131, 1086,
6054 -1, 1134, 1135, 400, -1, -1, 403, 1140, -1, -1,
6055 923, -1, -1, 410, 411, -1, 1103, -1, 147, -1,
6056 -1, 1154, -1, -1, 1157, 1027, 1028, 940, -1, -1,
6057 -1, -1, 945, 946, 1245, -1, -1, -1, 951, 952,
6058 -1, -1, -1, 1176, -1, -1, -1, 960, 961, -1,
6059 -1, -1, 1139, -1, 451, -1, -1, -1, -1, -1,
6060 -1, -1, -1, 976, -1, 1198, -1, -1, -1, -1,
6061 -1, -1, -1, -1, -1, 1162, 473, -1, 1165, 1212,
6062 1082, 1083, 995, -1, 1086, 1296, -1, -1, -1, 1300,
6063 -1, 1302, 1179, -1, 1181, -1, -1, 1184, 1185, -1,
6064 -1, 1103, 1189, 1190, -1, 1018, 1019, 1020, -1, -1,
6065 -1, 508, -1, -1, -1, -1, -1, 1, -1, -1,
6066 -1, -1, 1035, -1, -1, -1, -1, -1, 525, -1,
6067 527, 15, 16, 1266, -1, -1, -1, 1139, -1, 1052,
6068 1273, 1274, -1, -1, -1, 1278, -1, -1, -1, -1,
6069 1361, 548, -1, -1, -1, -1, -1, 554, 1245, -1,
6070 1162, -1, -1, 1165, -1, -1, -1, -1, 52, 53,
6071 -1, -1, 56, -1, -1, -1, -1, 1179, -1, 1181,
6072 -1, -1, 1184, 1185, 1317, -1, -1, 1189, 1190, -1,
6073 -1, -1, -1, -1, -1, -1, -1, -1, 595, -1,
6074 -1, 598, -1, -1, -1, 89, -1, -1, -1, 1296,
6075 -1, 608, -1, 1300, 611, 1302, -1, -1, 1131, -1,
6076 -1, 1134, 1135, -1, 108, 109, 110, 1140, 112, -1,
6077 -1, 1027, 1028, -1, -1, -1, -1, -1, -1, -1,
6078 -1, 1154, -1, 1245, 1157, -1, -1, -1, -1, -1,
6079 -1, -1, -1, -1, -1, -1, -1, -1, 655, -1,
6080 657, -1, -1, 1176, -1, 1027, 1028, -1, 665, -1,
6081 -1, -1, -1, -1, 1361, -1, -1, -1, -1, 676,
6082 -1, 678, -1, -1, -1, 1198, 1082, 1083, -1, -1,
6083 1086, -1, 689, 690, 1296, -1, -1, -1, 1300, 1212,
6084 1302, -1, -1, -1, -1, -1, -1, 1103, -1, -1,
6085 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6086 1082, 1083, -1, -1, 1086, -1, 723, -1, -1, -1,
6087 -1, -1, 729, -1, -1, -1, -1, -1, -1, -1,
6088 -1, 1103, -1, 1139, -1, -1, 230, -1, -1, -1,
6089 -1, -1, -1, 1266, -1, -1, -1, -1, -1, 1361,
6090 1273, 1274, -1, -1, -1, 1278, 1162, -1, -1, 1165,
6091 -1, 255, -1, 257, -1, -1, -1, 1139, -1, -1,
6092 -1, -1, 266, 1179, -1, 1181, -1, -1, 1184, 1185,
6093 -1, -1, -1, 1189, 1190, 44, -1, -1, -1, -1,
6094 1162, 285, -1, 1165, 1317, -1, -1, -1, 805, -1,
6095 -1, -1, -1, -1, -1, -1, -1, 1179, -1, 1181,
6096 -1, 305, 1184, 1185, -1, -1, -1, 1189, 1190, 78,
6097 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6098 89, 90, -1, -1, -1, -1, 95, 96, -1, 1245,
6099 -1, 335, -1, -1, -1, -1, -1, -1, -1, -1,
6100 -1, 858, -1, -1, -1, -1, -1, -1, -1, -1,
6101 -1, -1, -1, -1, -1, -1, -1, -1, -1, 363,
6102 364, -1, -1, 1245, 1, -1, 135, -1, 137, 138,
6103 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6104 1296, -1, -1, -1, 1300, -1, 1302, -1, -1, -1,
6105 -1, -1, -1, -1, -1, -1, 400, -1, -1, 403,
6106 -1, -1, -1, -1, -1, -1, 410, 411, -1, -1,
6107 -1, -1, -1, -1, 1296, 52, 53, -1, 1300, 56,
6108 1302, -1, -1, 940, -1, -1, -1, -1, 945, 946,
6109 -1, -1, -1, -1, 951, 952, -1, -1, -1, -1,
6110 -1, -1, -1, 960, -1, 1361, -1, 451, -1, -1,
6111 -1, -1, 89, -1, -1, -1, -1, -1, -1, 976,
6112 -1, -1, -1, -1, -1, -1, -1, -1, -1, 473,
6113 -1, 108, 109, 110, -1, -1, -1, -1, 995, 1361,
6114 -1, -1, -1, -1, 52, 53, -1, -1, 56, -1,
6115 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6116 -1, 1018, 1019, 1020, 508, -1, -1, -1, 76, 77,
6117 78, 79, 80, 81, 82, 83, 84, -1, 1035, 87,
6118 88, 525, -1, 527, -1, 93, 94, 95, 96, -1,
6119 -1, -1, -1, -1, -1, 1052, -1, -1, -1, 107,
6120 108, -1, -1, -1, 548, -1, -1, -1, -1, -1,
6121 554, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6122 -1, -1, -1, -1, -1, -1, -1, -1, -1, 137,
6123 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6124 148, 149, -1, -1, -1, -1, -1, -1, 156, -1,
6125 -1, 595, 1, 230, 598, -1, -1, -1, -1, -1,
6126 -1, -1, -1, -1, 608, -1, -1, 611, -1, -1,
6127 1127, -1, -1, -1, 1131, -1, -1, 1134, 1135, -1,
6128 -1, -1, -1, 1140, -1, -1, -1, -1, -1, 266,
6129 -1, -1, -1, -1, -1, -1, -1, 1154, -1, -1,
6130 1157, -1, -1, 52, 53, -1, -1, 56, 285, -1,
6131 -1, 655, -1, 657, -1, -1, -1, -1, -1, -1,
6132 -1, 665, -1, -1, -1, -1, -1, -1, 305, -1,
6133 -1, -1, 676, -1, 678, -1, -1, -1, -1, -1,
6134 89, 1198, -1, -1, -1, 689, 690, -1, -1, -1,
6135 -1, -1, -1, -1, -1, 1212, -1, -1, 335, 108,
6136 109, 110, 111, -1, -1, -1, -1, -1, -1, 1226,
6137 -1, -1, -1, -1, -1, -1, -1, -1, -1, 723,
6138 -1, -1, -1, -1, -1, 729, 363, 364, -1, -1,
6139 -1, -1, -1, 1, -1, -1, -1, -1, -1, -1,
6140 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1266,
6141 78, 79, 80, 81, 82, 83, 84, 85, -1, 87,
6142 88, 1278, -1, -1, -1, -1, 403, 95, 96, -1,
6143 1287, -1, -1, 410, 411, -1, -1, -1, -1, -1,
6144 -1, -1, -1, -1, 52, 53, -1, -1, -1, -1,
6145 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6146 1317, 805, -1, -1, -1, -1, -1, -1, -1, 137,
6147 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6148 -1, 230, -1, -1, 0, -1, -1, -1, -1, -1,
6149 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
6150 108, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6151 26, 27, -1, -1, 858, -1, 1, 266, -1, -1,
6152 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6153 -1, 508, -1, -1, -1, -1, 285, -1, -1, -1,
6154 -1, -1, -1, -1, -1, -1, -1, -1, 525, -1,
6155 -1, -1, 68, 69, -1, -1, 305, -1, -1, -1,
6156 -1, -1, -1, -1, -1, -1, -1, 52, 53, -1,
6157 -1, 548, -1, -1, -1, -1, -1, 554, -1, -1,
6158 -1, 97, 98, -1, -1, -1, 335, -1, -1, -1,
6159 -1, -1, -1, -1, -1, -1, 940, -1, -1, -1,
6160 -1, 945, 946, -1, 120, -1, -1, 951, 952, -1,
6161 -1, -1, -1, -1, 363, 364, 960, -1, 595, -1,
6162 -1, 598, 230, -1, -1, -1, -1, -1, -1, -1,
6163 -1, 608, 976, -1, 611, 151, 152, -1, 154, -1,
6164 -1, 157, 158, -1, 160, -1, -1, -1, -1, -1,
6165 -1, 995, -1, -1, 403, -1, -1, -1, 266, -1,
6166 -1, 410, 411, -1, -1, -1, -1, -1, -1, -1,
6167 -1, -1, -1, -1, 1018, 1019, 1020, 285, 655, -1,
6168 657, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6169 -1, 1035, -1, -1, -1, -1, -1, -1, -1, -1,
6170 -1, 678, -1, -1, -1, -1, -1, -1, 1052, -1,
6171 -1, -1, 689, 690, -1, -1, -1, -1, -1, -1,
6172 -1, -1, -1, -1, -1, -1, -1, 335, -1, -1,
6173 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6174 -1, -1, -1, -1, -1, 230, 723, -1, -1, -1,
6175 -1, -1, 729, -1, -1, 363, -1, -1, -1, 508,
6176 -1, 738, -1, -1, -1, -1, -1, -1, -1, -1,
6177 -1, -1, -1, -1, -1, -1, 525, -1, -1, -1,
6178 -1, 266, -1, 1127, -1, -1, -1, 1131, -1, -1,
6179 1134, 1135, -1, -1, -1, 403, 1140, -1, -1, 548,
6180 285, -1, 410, 411, -1, 554, -1, -1, -1, -1,
6181 1154, -1, -1, 1157, 33, 34, 35, 36, -1, -1,
6182 -1, -1, -1, -1, -1, -1, -1, -1, 805, -1,
6183 49, 50, 51, 52, -1, -1, -1, 56, -1, -1,
6184 59, 60, 61, 62, 63, -1, 595, -1, -1, 598,
6185 335, -1, -1, -1, 1198, -1, -1, -1, -1, 608,
6186 -1, -1, -1, -1, -1, -1, -1, -1, 1212, -1,
6187 -1, -1, 91, 92, -1, -1, -1, -1, 363, -1,
6188 99, 858, 1226, 102, -1, 104, 105, -1, 107, -1,
6189 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6190 508, -1, -1, -1, -1, -1, 655, -1, 657, -1,
6191 -1, -1, -1, -1, -1, -1, -1, -1, 403, -1,
6192 -1, 140, 1266, 52, 53, 410, 411, 56, 147, 678,
6193 -1, -1, -1, -1, 1278, 154, -1, -1, -1, -1,
6194 548, -1, -1, 1287, -1, -1, 554, 76, 77, 78,
6195 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
6196 -1, -1, -1, -1, 93, 94, 95, 96, 945, 946,
6197 -1, -1, -1, 1317, 951, 952, -1, -1, 107, 108,
6198 729, -1, -1, 960, -1, -1, -1, 595, -1, -1,
6199 598, -1, -1, -1, -1, -1, -1, -1, -1, 976,
6200 -1, -1, -1, 611, -1, -1, -1, -1, 137, 138,
6201 139, 140, 141, 142, 143, 144, 145, 146, 995, 148,
6202 149, -1, -1, 508, -1, -1, -1, 156, 78, 79,
6203 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6204 90, 1018, 1019, 1020, -1, 95, 96, 655, -1, 657,
6205 -1, -1, -1, -1, -1, -1, 805, -1, 1035, -1,
6206 -1, -1, -1, 548, -1, -1, -1, -1, -1, 554,
6207 678, -1, -1, -1, -1, 1052, -1, -1, -1, -1,
6208 -1, 689, 690, -1, -1, 135, -1, 137, 138, 139,
6209 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6210 -1, -1, -1, -1, 154, -1, -1, -1, -1, 858,
6211 595, -1, -1, 598, -1, 723, -1, 33, 34, 35,
6212 36, -1, -1, -1, -1, -1, 611, -1, -1, -1,
6213 -1, -1, -1, 49, 50, 51, 52, -1, -1, -1,
6214 56, -1, 58, 59, 60, 61, 62, 63, -1, -1,
6215 1127, -1, -1, -1, 1131, -1, -1, 1134, 1135, -1,
6216 -1, -1, 78, 1140, -1, -1, -1, -1, -1, -1,
6217 655, -1, 657, -1, -1, 91, 92, 1154, -1, -1,
6218 1157, -1, -1, 99, -1, -1, 102, -1, 104, 105,
6219 -1, 107, 108, 678, 110, 111, 112, 113, 114, 115,
6220 116, 117, 118, -1, 689, 690, -1, -1, -1, -1,
6221 -1, 960, -1, -1, -1, -1, -1, -1, -1, -1,
6222 -1, 1198, -1, -1, 140, -1, -1, 976, -1, -1,
6223 -1, 147, -1, -1, -1, 1212, -1, -1, 723, -1,
6224 -1, -1, -1, -1, -1, -1, 995, -1, -1, 1226,
6225 858, -1, 15, 16, 78, 79, 80, 81, 82, 83,
6226 84, 85, 86, 87, 88, 89, 90, -1, -1, 1018,
6227 1019, 95, 96, -1, -1, -1, -1, -1, -1, -1,
6228 -1, -1, -1, -1, 47, 48, 49, 50, -1, -1,
6229 -1, 54, 55, -1, -1, -1, -1, -1, -1, -1,
6230 -1, 1278, -1, 1052, 67, 68, -1, -1, -1, -1,
6231 1287, 135, -1, 137, 138, 139, 140, 141, 142, 143,
6232 144, 145, 146, -1, -1, -1, -1, -1, -1, -1,
6233 -1, -1, -1, -1, -1, -1, -1, 945, 946, -1,
6234 1317, -1, -1, 951, 952, -1, -1, -1, -1, 112,
6235 -1, -1, 960, -1, 78, 79, 80, 81, 82, 83,
6236 84, 85, 86, 87, 88, 89, 90, -1, 976, -1,
6237 -1, 95, 96, 858, -1, -1, -1, -1, 1127, -1,
6238 -1, -1, 1131, -1, -1, 1134, 1135, 995, -1, -1,
6239 -1, 1140, -1, -1, -1, -1, -1, -1, -1, -1,
6240 -1, -1, -1, -1, -1, 1154, -1, -1, 1157, -1,
6241 1018, 1019, 1020, 137, 138, 139, 140, 141, 142, 143,
6242 144, 145, 146, -1, -1, -1, -1, 1035, -1, -1,
6243 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6244 82, 83, 84, -1, 1052, 87, 88, -1, -1, 1198,
6245 -1, -1, -1, 95, 96, -1, -1, -1, -1, -1,
6246 945, 946, -1, 1212, -1, 228, 951, 952, 231, 232,
6247 233, -1, 235, -1, -1, 960, -1, 1226, -1, -1,
6248 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6249 -1, 976, 255, -1, 257, 137, 138, 139, 140, 141,
6250 142, 143, 144, 145, 146, -1, -1, -1, -1, -1,
6251 995, -1, -1, -1, -1, -1, -1, -1, -1, 1127,
6252 -1, -1, -1, 1131, -1, -1, 1134, 1135, -1, 1278,
6253 -1, -1, 1140, 1018, 1019, 1020, -1, -1, 1287, -1,
6254 -1, -1, -1, -1, -1, -1, 1154, -1, -1, 1157,
6255 1035, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6256 -1, -1, -1, -1, -1, -1, -1, 1052, 1317, -1,
6257 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6258 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6259 1198, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6260 -1, -1, -1, -1, 1212, 368, 369, 370, 371, 372,
6261 -1, -1, 375, 376, 377, 378, 379, 380, 381, 382,
6262 -1, 384, -1, -1, 387, 388, 389, 390, 391, 392,
6263 393, 394, 395, 396, -1, -1, -1, 400, -1, -1,
6264 -1, -1, -1, -1, -1, -1, 1131, -1, -1, 1134,
6265 1135, -1, -1, -1, -1, 1140, -1, -1, 78, 79,
6266 80, 81, 82, 83, 84, -1, -1, 87, 88, 1154,
6267 1278, -1, 1157, -1, -1, 95, 96, -1, -1, -1,
6268 -1, -1, -1, -1, -1, -1, -1, -1, 451, -1,
6269 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6270 -1, -1, -1, -1, -1, 468, 469, -1, -1, 1317,
6271 473, -1, -1, 1198, 477, -1, 479, 137, 138, 139,
6272 140, 141, 142, 143, 144, 145, 146, 1212, -1, 0,
6273 -1, -1, -1, -1, 497, -1, -1, 8, 9, 10,
6274 -1, -1, 13, 14, 15, -1, 17, -1, -1, 512,
6275 -1, -1, 515, -1, 25, 26, 27, 28, 29, -1,
6276 -1, -1, -1, -1, 527, -1, 37, 38, -1, 40,
6277 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
6278 -1, -1, 545, -1, -1, -1, -1, -1, -1, -1,
6279 -1, -1, -1, 1278, -1, -1, -1, 68, 69, -1,
6280 -1, -1, -1, -1, -1, -1, -1, 78, 79, 80,
6281 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
6282 -1, -1, -1, 586, 95, 96, 97, 98, -1, 100,
6283 101, 594, 1317, -1, 597, 106, -1, -1, -1, -1,
6284 -1, -1, -1, 606, -1, -1, -1, -1, 611, 120,
6285 -1, -1, 123, -1, -1, -1, -1, -1, -1, -1,
6286 -1, -1, -1, 134, 135, 136, 137, 138, 139, 140,
6287 141, 142, 143, 144, 145, 146, -1, -1, -1, -1,
6288 151, 152, 153, 154, 155, -1, -1, 158, 159, 160,
6289 -1, -1, 33, 34, 35, 36, -1, -1, -1, -1,
6290 -1, -1, 665, -1, -1, -1, -1, -1, 49, 50,
6291 51, 52, -1, 676, -1, 56, -1, -1, 59, 60,
6292 61, 62, 63, -1, -1, -1, 689, 690, -1, -1,
6293 693, 694, -1, -1, -1, -1, -1, -1, -1, -1,
6294 -1, -1, 705, 706, -1, -1, 709, -1, 711, -1,
6295 91, 92, -1, -1, -1, 718, 719, -1, 99, -1,
6296 723, 102, -1, 104, 105, -1, 107, -1, -1, 110,
6297 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6298 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6299 -1, -1, -1, -1, -1, -1, -1, -1, -1, 140,
6300 -1, -1, -1, -1, 767, -1, 147, -1, -1, -1,
6301 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6302 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6303 -1, -1, 795, -1, -1, -1, -1, -1, 0, 1,
6304 -1, 3, 4, 5, 6, 7, 8, 9, 10, 11,
6305 12, -1, 14, 15, 16, 17, 18, 19, 20, 21,
6306 22, 23, 24, 25, 827, -1, -1, -1, 30, 31,
6307 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6308 -1, -1, 845, 45, 46, 47, 48, 49, 50, 51,
6309 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6310 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
6311 -1, -1, 875, -1, 76, 77, -1, -1, -1, -1,
6312 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6313 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6314 102, 103, 104, 105, -1, 107, -1, -1, 110, 111,
6315 112, 113, 114, 115, 116, 117, 118, -1, 120, -1,
6316 923, -1, -1, -1, -1, -1, -1, -1, -1, 932,
6317 -1, -1, -1, -1, -1, -1, -1, 940, -1, -1,
6318 -1, 944, 945, 946, -1, 147, 148, 149, 951, 952,
6319 152, -1, 955, -1, -1, -1, 158, -1, 160, -1,
6320 -1, -1, -1, -1, 967, -1, -1, -1, -1, -1,
6321 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6322 -1, -1, 985, 986, -1, 988, 989, -1, 991, -1,
6323 993, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6324 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1012,
6325 1013, -1, -1, 1016, -1, -1, -1, 1020, 1021, -1,
6326 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6327 -1, -1, 1035, -1, -1, -1, -1, -1, -1, 0,
6328 1, -1, 3, 4, 5, 6, 7, -1, 1051, -1,
6329 11, 12, -1, -1, -1, 16, 1059, 18, 19, 20,
6330 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
6331 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6332 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
6333 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
6334 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6335 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6336 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6337 91, 92, -1, 1136, -1, -1, -1, -1, 99, -1,
6338 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
6339 111, 112, 113, 114, 115, 116, 117, 118, -1, 120,
6340 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6341 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6342 -1, -1, -1, -1, -1, -1, 147, 148, 149, -1,
6343 -1, 0, 1, 154, 3, 4, 5, 6, 7, 160,
6344 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6345 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6346 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6347 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6348 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6349 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6350 -1, -1, -1, 1266, -1, -1, -1, 76, 77, -1,
6351 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6352 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6353 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
6354 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6355 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6356 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6357 -1, -1, -1, -1, -1, -1, -1, -1, 147, 148,
6358 149, -1, -1, 0, 1, 154, 3, 4, 5, 6,
6359 7, 160, -1, -1, 11, 12, -1, -1, -1, 16,
6360 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6361 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6362 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6363 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6364 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6365 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6366 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6367 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6368 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6369 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6370 117, 118, -1, -1, -1, -1, -1, -1, -1, 0,
6371 -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
6372 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
6373 147, 148, 149, -1, 25, 152, 27, 28, 29, -1,
6374 -1, -1, -1, 160, -1, -1, 37, 38, -1, 40,
6375 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
6376 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6377 -1, -1, -1, -1, -1, -1, -1, 68, 69, -1,
6378 -1, -1, -1, -1, -1, -1, -1, 78, 79, 80,
6379 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
6380 -1, -1, -1, -1, 95, 96, 97, 98, -1, 100,
6381 101, -1, -1, -1, -1, 106, -1, -1, -1, -1,
6382 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
6383 -1, -1, 123, -1, -1, -1, -1, -1, -1, -1,
6384 -1, -1, -1, 134, 135, 136, 137, 138, 139, 140,
6385 141, 142, 143, 144, 145, 146, -1, -1, -1, -1,
6386 -1, 152, 153, 154, 155, 0, -1, 158, 159, 160,
6387 -1, -1, -1, 8, 9, 10, -1, -1, 13, 14,
6388 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
6389 25, -1, 27, 28, 29, -1, -1, -1, -1, -1,
6390 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
6391 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6392 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6393 -1, -1, -1, 68, 69, -1, -1, -1, -1, -1,
6394 -1, -1, -1, 78, 79, 80, 81, 82, 83, 84,
6395 85, 86, 87, 88, 89, 90, -1, -1, -1, -1,
6396 95, 96, 97, 98, -1, 100, 101, -1, -1, -1,
6397 -1, 106, -1, -1, -1, -1, -1, -1, -1, -1,
6398 -1, -1, -1, -1, -1, 120, -1, -1, 123, -1,
6399 -1, -1, -1, -1, -1, -1, -1, -1, -1, 134,
6400 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
6401 145, 146, -1, -1, -1, -1, -1, 152, 153, 154,
6402 155, 0, -1, 158, 159, 160, -1, -1, -1, 8,
6403 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
6404 -1, -1, -1, -1, -1, -1, 25, 26, 27, 28,
6405 29, -1, -1, -1, -1, -1, -1, -1, 37, 38,
6406 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
6407 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6408 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
6409 69, -1, -1, -1, -1, -1, -1, -1, -1, 78,
6410 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6411 89, 90, -1, -1, -1, -1, 95, 96, 97, 98,
6412 -1, -1, 101, -1, -1, -1, -1, 106, -1, -1,
6413 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6414 -1, 120, -1, -1, 123, -1, -1, -1, -1, -1,
6415 -1, -1, -1, -1, -1, -1, 135, 136, 137, 138,
6416 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6417 -1, -1, 151, 152, 153, 154, 155, 0, -1, 158,
6418 159, 160, -1, -1, -1, 8, 9, 10, -1, -1,
6419 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
6420 -1, -1, 25, 26, 27, 28, 29, -1, -1, -1,
6421 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
6422 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
6423 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6424 -1, -1, -1, -1, -1, 68, 69, -1, -1, -1,
6425 -1, -1, -1, -1, -1, 78, 79, 80, 81, 82,
6426 83, 84, 85, 86, 87, 88, 89, 90, -1, -1,
6427 -1, -1, 95, 96, 97, 98, -1, -1, 101, -1,
6428 -1, -1, -1, 106, -1, -1, -1, -1, -1, -1,
6429 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
6430 123, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6431 -1, -1, 135, 136, 137, 138, 139, 140, 141, 142,
6432 143, 144, 145, 146, -1, -1, -1, -1, 151, 152,
6433 153, 154, 155, 0, -1, 158, 159, 160, -1, -1,
6434 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
6435 17, -1, -1, -1, -1, -1, -1, -1, 25, 26,
6436 27, 28, -1, -1, -1, -1, -1, -1, -1, -1,
6437 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
6438 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6439 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6440 -1, 68, 69, -1, -1, -1, -1, -1, -1, -1,
6441 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6442 87, 88, 89, 90, -1, -1, -1, -1, 95, 96,
6443 97, 98, -1, -1, 101, -1, -1, -1, -1, 106,
6444 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6445 -1, -1, -1, 120, -1, -1, -1, -1, -1, -1,
6446 -1, -1, -1, -1, -1, -1, -1, -1, 135, -1,
6447 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6448 -1, -1, -1, -1, 151, 152, 153, 154, 155, 0,
6449 157, 158, 159, 160, -1, -1, -1, 8, 9, 10,
6450 -1, -1, 13, 14, 15, -1, 17, -1, -1, -1,
6451 -1, -1, -1, -1, 25, -1, 27, 28, 29, -1,
6452 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
6453 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
6454 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6455 -1, -1, -1, -1, -1, -1, -1, 68, 69, -1,
6456 -1, -1, -1, -1, -1, -1, -1, 78, 79, 80,
6457 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
6458 -1, -1, -1, -1, 95, 96, 97, 98, -1, -1,
6459 101, -1, -1, -1, -1, 106, -1, -1, -1, -1,
6460 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
6461 -1, -1, 123, -1, -1, -1, -1, -1, -1, -1,
6462 -1, -1, -1, -1, 135, 136, 137, 138, 139, 140,
6463 141, 142, 143, 144, 145, 146, -1, -1, -1, -1,
6464 -1, 152, 153, 154, 155, 0, -1, 158, 159, 160,
6465 -1, -1, -1, 8, 9, 10, -1, -1, 13, 14,
6466 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
6467 25, 26, 27, 28, -1, -1, -1, -1, -1, -1,
6468 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
6469 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6470 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6471 -1, -1, -1, 68, 69, -1, -1, -1, -1, -1,
6472 -1, -1, -1, 78, 79, 80, 81, 82, 83, 84,
6473 85, 86, 87, 88, 89, 90, -1, -1, -1, -1,
6474 95, 96, 97, 98, -1, -1, 101, -1, -1, -1,
6475 -1, 106, -1, -1, -1, -1, -1, -1, -1, -1,
6476 -1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
6477 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6478 135, -1, 137, 138, 139, 140, 141, 142, 143, 144,
6479 145, 146, -1, -1, -1, -1, 151, 152, 153, 154,
6480 155, 0, 157, 158, 159, 160, -1, -1, -1, 8,
6481 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
6482 -1, -1, -1, -1, -1, -1, 25, -1, 27, 28,
6483 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
6484 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
6485 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6486 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
6487 69, -1, -1, -1, -1, -1, -1, -1, -1, 78,
6488 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6489 89, 90, -1, -1, -1, -1, 95, 96, 97, 98,
6490 -1, 100, 101, -1, -1, -1, -1, 106, -1, -1,
6491 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6492 -1, 120, -1, -1, -1, -1, -1, -1, -1, -1,
6493 -1, -1, -1, -1, -1, 134, 135, -1, 137, 138,
6494 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6495 -1, -1, 151, 152, 153, 154, 155, 0, -1, 158,
6496 159, 160, -1, -1, -1, 8, 9, 10, -1, -1,
6497 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
6498 -1, -1, 25, -1, 27, 28, -1, -1, -1, -1,
6499 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
6500 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
6501 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6502 -1, -1, -1, -1, -1, 68, 69, -1, -1, -1,
6503 -1, -1, -1, -1, -1, 78, 79, 80, 81, 82,
6504 83, 84, 85, 86, 87, 88, 89, 90, -1, -1,
6505 -1, -1, 95, 96, 97, 98, -1, -1, 101, -1,
6506 -1, -1, -1, 106, -1, -1, -1, -1, -1, -1,
6507 -1, -1, -1, -1, -1, -1, -1, 120, -1, -1,
6508 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6509 -1, -1, 135, -1, 137, 138, 139, 140, 141, 142,
6510 143, 144, 145, 146, -1, -1, -1, -1, -1, 152,
6511 153, 154, 155, 0, 157, 158, 159, 160, -1, -1,
6512 -1, 8, 9, 10, -1, -1, -1, 14, 15, -1,
6513 17, -1, -1, -1, -1, -1, -1, -1, 25, 26,
6514 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6515 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
6516 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6517 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6518 -1, 68, 69, -1, -1, -1, -1, -1, -1, -1,
6519 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6520 87, 88, 89, 90, -1, -1, -1, -1, 95, 96,
6521 97, 98, -1, 100, 101, -1, -1, -1, -1, -1,
6522 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6523 -1, -1, -1, 120, -1, -1, -1, -1, -1, -1,
6524 -1, -1, -1, -1, -1, -1, -1, 134, 135, -1,
6525 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6526 -1, -1, -1, -1, 151, 152, 153, 154, 155, 0,
6527 -1, 158, -1, 160, -1, -1, -1, 8, 9, 10,
6528 -1, -1, -1, 14, 15, -1, 17, -1, -1, -1,
6529 -1, -1, -1, -1, 25, 26, -1, -1, -1, -1,
6530 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
6531 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
6532 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6533 -1, -1, -1, -1, -1, -1, -1, 68, 69, -1,
6534 -1, -1, -1, -1, -1, -1, -1, 78, 79, 80,
6535 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
6536 -1, -1, -1, -1, 95, 96, 97, 98, -1, 100,
6537 101, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6538 -1, -1, -1, -1, -1, -1, -1, -1, -1, 120,
6539 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6540 -1, -1, -1, 134, 135, -1, 137, 138, 139, 140,
6541 141, 142, 143, 144, 145, 146, -1, -1, -1, -1,
6542 151, 152, 153, 154, 155, 0, -1, 158, -1, 160,
6543 -1, -1, -1, 8, 9, 10, -1, -1, -1, 14,
6544 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
6545 25, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6546 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
6547 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6548 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6549 -1, -1, -1, 68, 69, -1, -1, -1, -1, -1,
6550 -1, -1, -1, 78, 79, 80, 81, 82, 83, 84,
6551 85, 86, 87, 88, 89, 90, -1, -1, -1, -1,
6552 95, 96, 97, 98, -1, 100, 101, -1, -1, -1,
6553 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6554 -1, -1, -1, -1, -1, 120, -1, -1, -1, -1,
6555 -1, -1, -1, -1, -1, -1, -1, -1, -1, 134,
6556 135, -1, 137, 138, 139, 140, 141, 142, 143, 144,
6557 145, 146, -1, -1, -1, -1, 151, 152, 153, 154,
6558 155, 0, -1, 158, -1, 160, -1, -1, -1, 8,
6559 9, 10, -1, -1, -1, 14, 15, -1, 17, -1,
6560 -1, -1, -1, -1, -1, -1, 25, -1, -1, -1,
6561 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
6562 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
6563 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6564 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
6565 69, -1, -1, -1, -1, -1, -1, -1, -1, 78,
6566 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6567 89, 90, -1, -1, -1, -1, 95, 96, 97, 98,
6568 -1, 100, 101, -1, -1, -1, -1, -1, -1, -1,
6569 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6570 -1, 120, -1, -1, -1, -1, -1, -1, -1, -1,
6571 -1, -1, -1, -1, -1, 134, 135, -1, 137, 138,
6572 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6573 -1, -1, 151, 152, 153, 154, 155, -1, -1, 158,
6574 1, 160, 3, 4, 5, 6, 7, 8, 9, 10,
6575 11, 12, -1, -1, 15, 16, -1, 18, 19, 20,
6576 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
6577 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6578 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
6579 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
6580 61, 62, 63, 64, 65, -1, -1, 68, -1, -1,
6581 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6582 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6583 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6584 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
6585 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6586 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6587 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6588 -1, -1, -1, -1, -1, -1, 147, 148, 149, -1,
6589 -1, -1, 1, 154, 3, 4, 5, 6, 7, 160,
6590 -1, 10, 11, 12, -1, 14, 15, 16, -1, 18,
6591 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6592 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6593 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6594 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6595 59, 60, 61, 62, 63, 64, 65, -1, -1, 68,
6596 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6597 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6598 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6599 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
6600 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6601 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6602 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6603 -1, -1, -1, -1, -1, -1, -1, -1, 147, 148,
6604 149, -1, -1, -1, 1, 154, 3, 4, 5, 6,
6605 7, 160, -1, 10, 11, 12, -1, -1, 15, 16,
6606 17, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6607 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6608 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6609 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6610 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6611 -1, 68, -1, -1, -1, -1, -1, -1, -1, 76,
6612 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6613 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6614 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6615 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6616 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
6617 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6618 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6619 147, 148, 149, -1, -1, -1, 1, 154, 3, 4,
6620 5, 6, 7, 160, -1, 10, 11, 12, -1, -1,
6621 15, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6622 25, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6623 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6624 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
6625 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6626 65, -1, -1, 68, -1, -1, -1, -1, -1, -1,
6627 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6628 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6629 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
6630 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
6631 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
6632 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6633 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6634 -1, -1, 147, 148, 149, -1, -1, -1, 1, 154,
6635 3, 4, 5, 6, 7, 160, -1, 10, 11, 12,
6636 -1, -1, 15, 16, -1, 18, 19, 20, 21, 22,
6637 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
6638 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6639 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
6640 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
6641 63, 64, 65, -1, -1, 68, -1, -1, -1, -1,
6642 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
6643 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
6644 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6645 103, 104, 105, -1, 107, -1, -1, 110, 111, 112,
6646 113, 114, 115, 116, 117, 118, -1, -1, -1, -1,
6647 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6648 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6649 -1, -1, -1, -1, 147, 148, 149, -1, -1, -1,
6650 1, 154, 3, 4, 5, 6, 7, 160, 9, 10,
6651 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6652 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
6653 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6654 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
6655 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
6656 61, 62, 63, 64, 65, -1, -1, 68, -1, -1,
6657 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6658 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6659 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6660 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
6661 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6662 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6663 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6664 -1, -1, -1, -1, -1, -1, 147, 148, 149, -1,
6665 -1, -1, 1, 154, 3, 4, 5, 6, 7, 160,
6666 -1, 10, 11, 12, -1, -1, -1, 16, -1, 18,
6667 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6668 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6669 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6670 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6671 59, 60, 61, 62, 63, 64, 65, -1, -1, 68,
6672 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6673 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6674 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6675 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
6676 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6677 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6678 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6679 -1, -1, -1, -1, -1, -1, -1, -1, 147, 148,
6680 149, -1, -1, -1, 1, 154, 3, 4, 5, 6,
6681 7, 160, -1, -1, 11, 12, -1, -1, -1, 16,
6682 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6683 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6684 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6685 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6686 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6687 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6688 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6689 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6690 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6691 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6692 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
6693 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6694 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6695 147, 148, 149, -1, -1, -1, -1, 154, -1, -1,
6696 -1, 158, 1, 160, 3, 4, 5, 6, 7, -1,
6697 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6698 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6699 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6700 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6701 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6702 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6703 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6704 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6705 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6706 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
6707 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6708 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6709 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6710 -1, -1, -1, -1, -1, -1, -1, -1, 147, 148,
6711 149, -1, -1, -1, -1, 154, -1, -1, -1, 158,
6712 1, 160, 3, 4, 5, 6, 7, -1, -1, -1,
6713 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6714 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
6715 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6716 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
6717 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
6718 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6719 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6720 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6721 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6722 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
6723 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6724 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6725 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6726 -1, -1, -1, -1, -1, -1, 147, 148, 149, -1,
6727 -1, 152, 1, 154, 3, 4, 5, 6, 7, 160,
6728 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6729 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6730 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6731 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6732 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6733 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6734 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6735 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6736 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6737 99, -1, -1, 102, 103, 104, 105, -1, 107, -1,
6738 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6739 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6740 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6741 -1, -1, -1, -1, -1, -1, -1, -1, 147, 148,
6742 149, -1, -1, 152, 1, 154, 3, 4, 5, -1,
6743 7, 160, -1, -1, 11, 12, -1, -1, -1, 16,
6744 17, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6745 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6746 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
6747 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
6748 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6749 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6750 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6751 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6752 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6753 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6754 117, 118, -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, -1, -1,
6757 147, 148, 149, -1, -1, -1, -1, 154, -1, -1,
6758 -1, -1, -1, 160, 3, 4, 5, 6, 7, 8,
6759 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
6760 19, 20, 21, 22, 23, 24, 25, 26, -1, -1,
6761 -1, 30, 31, 32, 33, 34, 35, 36, 37, 38,
6762 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6763 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6764 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6765 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
6766 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
6767 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
6768 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
6769 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6770 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6771 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
6772 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
6773 149, -1, -1, -1, -1, -1, -1, 156, 157, 3,
6774 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
6775 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
6776 24, 25, 26, -1, -1, -1, 30, 31, 32, 33,
6777 34, 35, 36, 37, 38, 39, -1, -1, -1, -1,
6778 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6779 54, 55, 56, 57, -1, -1, -1, -1, -1, -1,
6780 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6781 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
6782 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
6783 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
6784 -1, -1, -1, 107, 108, -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, -1, 137, 138, 139, 140, 141, 142, 143,
6788 144, 145, 146, -1, 148, 149, -1, -1, -1, -1,
6789 -1, -1, 156, 3, 4, 5, 6, 7, 8, 9,
6790 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
6791 20, 21, 22, 23, 24, 25, 26, -1, -1, -1,
6792 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
6793 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
6794 50, 51, 52, 53, 54, -1, 56, -1, -1, -1,
6795 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6796 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
6797 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
6798 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
6799 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
6800 -1, 111, -1, -1, -1, -1, -1, -1, -1, -1,
6801 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6802 -1, -1, -1, -1, -1, -1, -1, 137, 138, 139,
6803 140, 141, 142, 143, 144, 145, 146, -1, 148, 149,
6804 -1, -1, -1, -1, -1, -1, 156, 3, 4, 5,
6805 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
6806 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
6807 26, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6808 36, 37, 38, 39, -1, -1, -1, -1, -1, 45,
6809 46, 47, 48, 49, 50, 51, 52, 53, -1, -1,
6810 56, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6811 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6812 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
6813 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
6814 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6815 -1, 107, 108, -1, -1, 111, -1, -1, -1, -1,
6816 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6817 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6818 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6819 146, -1, 148, 149, -1, -1, -1, -1, -1, -1,
6820 156, 3, 4, 5, 6, 7, 8, 9, 10, 11,
6821 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
6822 22, 23, 24, 25, 26, -1, -1, -1, 30, 31,
6823 32, 33, 34, 35, 36, 37, 38, 39, -1, -1,
6824 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6825 52, 53, -1, -1, 56, -1, -1, -1, -1, -1,
6826 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6827 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
6828 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
6829 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
6830 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
6831 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6832 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6833 -1, -1, -1, -1, -1, 137, 138, 139, 140, 141,
6834 142, 143, 144, 145, 146, -1, 148, 149, 3, 4,
6835 5, -1, 7, -1, 156, -1, 11, 12, -1, -1,
6836 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6837 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6838 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6839 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6840 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6841 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6842 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6843 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6844 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
6845 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
6846 115, 116, 117, 118, -1, -1, 3, 4, 5, -1,
6847 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
6848 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6849 -1, -1, 147, 30, 31, 32, 33, 34, 35, 36,
6850 155, -1, 39, -1, -1, -1, -1, -1, -1, 46,
6851 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
6852 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6853 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6854 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6855 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6856 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6857 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6858 117, 118, -1, -1, 3, 4, 5, -1, 7, -1,
6859 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6860 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6861 147, 30, 31, 32, 33, 34, 35, 36, 155, -1,
6862 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
6863 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
6864 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6865 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6866 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6867 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6868 99, -1, -1, 102, 103, 104, 105, -1, 107, 108,
6869 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6870 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6871 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6872 -1, -1, -1, 3, 4, 5, -1, 7, 147, 148,
6873 149, 11, 12, -1, -1, 154, 16, -1, 18, 19,
6874 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
6875 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6876 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
6877 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6878 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
6879 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
6880 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6881 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6882 -1, -1, 102, 103, 104, 105, -1, -1, -1, -1,
6883 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6884 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6885 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6886 1, -1, 3, 4, 5, 6, 7, 147, 148, 149,
6887 11, 12, -1, -1, 154, 16, -1, 18, 19, 20,
6888 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
6889 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6890 -1, -1, -1, -1, 45, 46, -1, 48, 49, 50,
6891 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
6892 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6893 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6894 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6895 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6896 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
6897 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6898 1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6899 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6900 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
6901 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6902 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6903 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
6904 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6905 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6906 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6907 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6908 -1, 102, 103, 104, 105, -1, -1, -1, -1, 110,
6909 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6910 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6911 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6912 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
6913 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6914 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6915 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
6916 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6917 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6918 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6919 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6920 -1, 102, 103, 104, 105, -1, 107, 108, 109, 110,
6921 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6922 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6923 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6924 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
6925 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6926 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6927 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
6928 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6929 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6930 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6931 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6932 -1, 102, 103, 104, 105, -1, 107, 108, 109, 110,
6933 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6934 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6935 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6936 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
6937 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6938 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6939 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
6940 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6941 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6942 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6943 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6944 -1, 102, 103, 104, 105, -1, 107, 108, 109, 110,
6945 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6946 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6947 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6948 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
6949 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6950 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6951 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
6952 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6953 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6954 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6955 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6956 -1, 102, 103, 104, 105, -1, 107, 108, 109, 110,
6957 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6958 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6959 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6960 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
6961 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6962 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6963 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
6964 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6965 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6966 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6967 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6968 -1, 102, 103, 104, 105, -1, 107, 108, -1, 110,
6969 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6970 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6971 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6972 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
6973 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6974 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6975 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
6976 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6977 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6978 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6979 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6980 -1, 102, 103, 104, 105, -1, -1, 108, 109, 110,
6981 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6982 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6983 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6984 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
6985 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6986 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6987 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
6988 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6989 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6990 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6991 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6992 -1, 102, 103, 104, 105, -1, -1, 108, -1, 110,
6993 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
6994 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6995 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6996 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
6997 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6998 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6999 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7000 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7001 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
7002 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7003 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
7004 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
7005 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7006 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7007 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7008 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
7009 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7010 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7011 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7012 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7013 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
7014 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7015 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
7016 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
7017 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7018 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7019 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7020 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
7021 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7022 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7023 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7024 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7025 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
7026 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7027 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
7028 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
7029 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7030 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7031 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7032 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
7033 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7034 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7035 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7036 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7037 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
7038 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7039 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
7040 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
7041 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7042 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7043 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7044 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
7045 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7046 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7047 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7048 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7049 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
7050 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7051 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
7052 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
7053 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7054 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7055 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7056 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
7057 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7058 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7059 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7060 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7061 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
7062 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7063 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
7064 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
7065 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7066 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7067 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7068 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
7069 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7070 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7071 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7072 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7073 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
7074 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7075 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
7076 -1, 102, 103, 104, 105, -1, -1, -1, -1, 110,
7077 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7078 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7079 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7080 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
7081 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7082 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7083 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7084 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7085 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
7086 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7087 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
7088 -1, 102, 103, 104, 105, -1, -1, -1, -1, 110,
7089 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7090 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7091 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7092 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
7093 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7094 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7095 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7096 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7097 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
7098 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7099 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
7100 -1, 102, 103, 104, 105, -1, -1, -1, -1, 110,
7101 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7102 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7103 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7104 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
7105 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7106 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7107 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7108 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7109 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
7110 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7111 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
7112 -1, 102, 103, 104, 105, -1, -1, -1, -1, 110,
7113 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7114 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7115 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7116 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
7117 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7118 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7119 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7120 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7121 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
7122 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7123 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
7124 -1, 102, 103, 104, 105, -1, -1, -1, -1, 110,
7125 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7126 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7127 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7128 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
7129 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7130 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7131 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7132 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7133 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
7134 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7135 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
7136 -1, 102, 103, 104, 105, -1, -1, -1, -1, 110,
7137 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7138 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7139 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7140 21, 22, 23, 24, -1, -1, 147, 148, 149, 30,
7141 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7142 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7143 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7144 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7145 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7146 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7147 -1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
7148 -1, 102, 103, 104, 105, -1, 107, -1, -1, 110,
7149 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7150 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
7151 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
7152 23, 24, -1, -1, -1, -1, 147, 30, 31, 32,
7153 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
7154 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
7155 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
7156 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
7157 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7158 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7159 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
7160 103, 104, 105, -1, 107, -1, -1, 110, 111, 112,
7161 113, 114, 115, 116, 117, 118, -1, -1, 3, 4,
7162 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
7163 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
7164 -1, -1, -1, -1, 147, 30, 31, 32, 33, 34,
7165 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
7166 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
7167 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
7168 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7169 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7170 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7171 95, -1, -1, -1, 99, -1, -1, 102, 103, 104,
7172 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
7173 115, 116, 117, 118, -1, -1, 3, 4, 5, -1,
7174 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
7175 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
7176 -1, -1, 147, 30, 31, 32, 33, 34, 35, 36,
7177 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
7178 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
7179 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
7180 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7181 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7182 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7183 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
7184 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
7185 117, 118, -1, -1, 3, 4, 5, -1, 7, -1,
7186 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
7187 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
7188 147, 30, 31, 32, 33, 34, 35, 36, -1, -1,
7189 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
7190 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
7191 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
7192 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7193 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7194 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7195 99, -1, -1, 102, 103, 104, 105, -1, -1, -1,
7196 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
7197 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
7198 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
7199 21, 22, 23, 24, -1, -1, -1, -1, 147, 30,
7200 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
7201 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
7202 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
7203 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
7204 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7205 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7206 -1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
7207 -1, 102, 103, 104, 105, -1, -1, -1, -1, 110,
7208 111, 112, 113, 114, 115, 116, 117, 118, -1, -1,
7209 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
7210 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
7211 23, 24, -1, -1, -1, -1, 147, 30, 31, 32,
7212 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
7213 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
7214 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
7215 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
7216 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7217 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7218 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
7219 103, 104, 105, 33, 34, 35, 36, 110, 111, 112,
7220 113, 114, 115, 116, 117, 118, -1, -1, -1, 49,
7221 50, 51, 52, -1, -1, -1, 56, -1, -1, 59,
7222 60, 61, 62, 63, -1, -1, -1, -1, -1, -1,
7223 -1, -1, -1, -1, 147, -1, -1, -1, -1, -1,
7224 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7225 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
7226 -1, -1, 102, -1, 104, 105, -1, -1, -1, -1,
7227 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
7228 -1, -1, -1, -1, 52, 53, -1, -1, 56, -1,
7229 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7230 140, -1, -1, -1, -1, -1, -1, 147, 76, 77,
7231 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
7232 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
7233 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
7234 108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7235 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7236 -1, -1, -1, -1, -1, -1, -1, -1, -1, 137,
7237 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
7238 148, 149, 52, 53, -1, -1, 56, -1, 156, -1,
7239 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7240 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
7241 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
7242 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
7243 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
7244 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7245 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7246 -1, -1, -1, -1, -1, -1, -1, 137, 138, 139,
7247 140, 141, 142, 143, 144, 145, 146, -1, 148, 149,
7248 52, 53, -1, -1, 56, -1, 156, -1, -1, -1,
7249 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7250 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
7251 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
7252 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
7253 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
7254 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7255 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7256 -1, -1, -1, -1, -1, 137, 138, 139, 140, 141,
7257 142, 143, 144, 145, 146, -1, 148, 149, 52, 53,
7258 -1, -1, 56, -1, 156, -1, -1, -1, -1, -1,
7259 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7260 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
7261 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
7262 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
7263 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
7264 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7265 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7266 -1, -1, -1, 137, 138, 139, 140, 141, 142, 143,
7267 144, 145, 146, -1, 148, 149, 52, 53, -1, -1,
7268 56, -1, 156, -1, -1, -1, -1, -1, -1, -1,
7269 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7270 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
7271 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
7272 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7273 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
7274 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7275 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7276 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
7277 146, -1, 148, 149, 52, 53, -1, -1, 56, -1,
7278 156, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7279 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7280 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
7281 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
7282 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
7283 108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7284 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7285 -1, -1, -1, -1, -1, -1, -1, -1, -1, 137,
7286 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
7287 148, 149, 52, 53, -1, -1, 56, -1, 156, -1,
7288 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7289 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
7290 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
7291 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
7292 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
7293 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7294 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7295 -1, -1, -1, -1, -1, -1, -1, 137, 138, 139,
7296 140, 141, 142, 143, 144, 145, 146, -1, 148, 149,
7297 52, 53, -1, -1, 56, -1, 156, -1, -1, -1,
7298 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7299 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
7300 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
7301 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
7302 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
7303 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7304 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7305 -1, -1, -1, -1, -1, 137, 138, 139, 140, 141,
7306 142, 143, 144, 145, 146, -1, 148, 149, 52, 53,
7307 -1, -1, 56, -1, 156, -1, -1, -1, -1, -1,
7308 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7309 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
7310 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
7311 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
7312 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
7313 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7314 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7315 -1, -1, -1, 137, 138, 139, 140, 141, 142, 143,
7316 144, 145, 146, -1, 148, 149, 52, 53, -1, -1,
7317 56, -1, 156, -1, -1, -1, -1, -1, -1, -1,
7318 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7319 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
7320 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
7321 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7322 -1, 107, 108, -1, -1, -1, -1, -1, -1, -1,
7323 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7324 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7325 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
7326 146, -1, 148, 149, 52, 53, -1, -1, 56, -1,
7327 156, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7328 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7329 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
7330 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
7331 -1, -1, -1, -1, -1, -1, -1, -1, -1, 107,
7332 108, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7333 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7334 -1, -1, -1, -1, -1, -1, -1, -1, -1, 137,
7335 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
7336 148, 149, 52, 53, -1, -1, 56, -1, 156, -1,
7337 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7338 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
7339 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
7340 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
7341 -1, -1, -1, -1, -1, -1, -1, 107, 108, -1,
7342 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7343 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7344 -1, -1, -1, -1, -1, -1, -1, 137, 138, 139,
7345 140, 141, 142, 143, 144, 145, 146, -1, 148, 149,
7346 52, 53, -1, -1, 56, -1, 156, -1, -1, -1,
7347 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7348 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
7349 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
7350 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
7351 -1, -1, -1, -1, -1, 107, 108, -1, -1, -1,
7352 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7353 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7354 -1, -1, -1, -1, -1, 137, 138, 139, 140, 141,
7355 142, 143, 144, 145, 146, -1, 148, 149, 52, 53,
7356 -1, -1, 56, -1, 156, -1, -1, -1, -1, -1,
7357 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7358 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
7359 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
7360 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
7361 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
7362 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7363 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7364 -1, -1, -1, 137, 138, 139, 140, 141, 142, 143,
7365 144, 145, 146, -1, 148, 149, -1, -1, -1, -1,
7371static const yytype_int16 yystos[] =
7373 0, 165, 166, 1, 3, 4, 5, 6, 7, 11,
7374 12, 16, 18, 19, 20, 21, 22, 23, 24, 30,
7375 31, 32, 33, 34, 35, 36, 39, 45, 46, 47,
7376 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7377 59, 60, 61, 62, 63, 64, 65, 76, 77, 91,
7378 92, 99, 102, 103, 104, 105, 107, 110, 111, 112,
7379 113, 114, 115, 116, 117, 118, 147, 148, 149, 164,
7380 167, 168, 180, 182, 183, 184, 185, 186, 187, 191,
7381 195, 197, 203, 206, 208, 209, 210, 212, 214, 215,
7382 216, 217, 226, 227, 228, 229, 230, 231, 234, 255,
7383 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
7384 277, 278, 287, 288, 321, 326, 327, 377, 378, 379,
7385 380, 381, 382, 384, 385, 388, 389, 391, 392, 393,
7386 394, 407, 408, 410, 411, 412, 413, 414, 415, 416,
7387 417, 418, 466, 0, 3, 4, 5, 6, 7, 8,
7388 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
7389 19, 20, 21, 22, 23, 24, 25, 26, 30, 31,
7390 32, 33, 34, 35, 36, 37, 38, 39, 45, 46,
7391 47, 48, 49, 50, 51, 52, 53, 56, 76, 77,
7392 78, 79, 80, 81, 82, 83, 84, 87, 88, 93,
7393 94, 95, 96, 107, 108, 137, 138, 139, 140, 141,
7394 142, 143, 144, 145, 146, 148, 149, 156, 220, 221,
7395 222, 224, 225, 407, 179, 179, 179, 39, 58, 99,
7396 102, 107, 108, 109, 112, 148, 187, 209, 217, 227,
7397 238, 239, 245, 246, 249, 251, 252, 268, 414, 415,
7398 417, 418, 453, 454, 246, 157, 242, 247, 248, 154,
7399 157, 189, 54, 221, 189, 151, 169, 170, 235, 466,
7400 21, 22, 32, 195, 197, 208, 227, 268, 287, 288,
7401 227, 227, 227, 56, 47, 102, 171, 176, 177, 182,
7402 211, 212, 466, 171, 240, 251, 453, 466, 239, 452,
7403 453, 466, 46, 99, 147, 155, 195, 197, 216, 255,
7404 268, 414, 415, 418, 319, 220, 397, 409, 413, 397,
7405 398, 399, 161, 383, 383, 383, 383, 412, 203, 227,
7406 227, 154, 160, 163, 464, 465, 179, 40, 41, 42,
7407 43, 44, 37, 38, 157, 421, 422, 423, 424, 466,
7408 421, 423, 26, 151, 242, 248, 279, 328, 28, 280,
7409 325, 134, 155, 102, 107, 214, 134, 25, 78, 79,
7410 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
7411 90, 95, 96, 101, 135, 137, 138, 139, 140, 141,
7412 142, 143, 144, 145, 146, 233, 233, 69, 97, 98,
7413 153, 458, 459, 256, 1, 191, 198, 199, 199, 200,
7414 202, 202, 163, 199, 465, 99, 210, 217, 268, 293,
7415 414, 415, 418, 52, 56, 95, 99, 218, 219, 268,
7416 414, 415, 418, 219, 33, 34, 35, 36, 49, 50,
7417 51, 52, 56, 157, 194, 220, 416, 448, 449, 450,
7418 246, 157, 248, 98, 458, 459, 328, 380, 100, 100,
7419 155, 239, 56, 239, 239, 239, 397, 134, 101, 155,
7420 250, 466, 98, 153, 458, 100, 100, 155, 250, 92,
7421 244, 246, 251, 433, 453, 466, 246, 189, 191, 460,
7422 191, 54, 64, 65, 181, 157, 235, 236, 164, 421,
7423 421, 98, 458, 100, 178, 211, 158, 163, 465, 460,
7424 257, 159, 155, 189, 463, 155, 463, 152, 463, 189,
7425 56, 412, 213, 214, 422, 155, 98, 153, 458, 316,
7426 66, 119, 121, 122, 400, 119, 119, 400, 67, 400,
7427 161, 386, 395, 390, 396, 78, 160, 168, 151, 199,
7428 199, 199, 199, 235, 237, 191, 191, 52, 54, 55,
7429 56, 57, 58, 78, 92, 102, 107, 108, 109, 141,
7430 144, 298, 364, 425, 426, 427, 428, 429, 430, 432,
7431 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
7432 443, 444, 445, 446, 134, 265, 432, 134, 266, 329,
7433 330, 106, 207, 331, 332, 332, 235, 211, 155, 216,
7434 155, 235, 193, 227, 227, 227, 227, 227, 227, 227,
7435 227, 227, 227, 227, 227, 227, 192, 227, 227, 227,
7436 227, 227, 227, 227, 227, 227, 227, 227, 52, 53,
7437 56, 224, 455, 456, 244, 251, 52, 53, 56, 224,
7438 455, 242, 171, 174, 13, 289, 464, 289, 199, 171,
7439 171, 259, 163, 56, 98, 153, 458, 25, 199, 52,
7440 56, 218, 138, 420, 466, 98, 153, 458, 264, 451,
7441 69, 98, 457, 246, 460, 52, 56, 242, 455, 235,
7442 235, 223, 100, 124, 235, 239, 239, 249, 252, 453,
7443 52, 56, 244, 52, 56, 235, 235, 454, 460, 155,
7444 460, 155, 158, 460, 221, 236, 227, 152, 134, 134,
7445 56, 455, 455, 235, 170, 460, 177, 158, 453, 155,
7446 213, 52, 56, 244, 52, 56, 317, 402, 401, 119,
7447 387, 400, 66, 119, 119, 387, 66, 119, 227, 171,
7448 182, 102, 107, 294, 295, 296, 297, 435, 155, 447,
7449 466, 155, 447, 155, 431, 460, 299, 300, 155, 431,
7450 239, 34, 52, 52, 155, 431, 52, 39, 188, 209,
7451 227, 232, 174, 464, 188, 232, 174, 316, 152, 330,
7452 316, 10, 68, 286, 286, 107, 203, 204, 205, 239,
7453 251, 253, 254, 460, 213, 155, 99, 185, 190, 205,
7454 217, 227, 239, 241, 254, 268, 418, 338, 338, 189,
7455 100, 100, 151, 242, 248, 189, 461, 155, 100, 100,
7456 242, 243, 248, 466, 235, 286, 171, 13, 171, 27,
7457 290, 464, 286, 286, 17, 283, 334, 25, 258, 340,
7458 52, 56, 244, 52, 56, 260, 263, 419, 262, 52,
7459 56, 218, 244, 174, 191, 196, 460, 243, 248, 190,
7460 227, 241, 190, 241, 221, 235, 239, 250, 100, 100,
7461 461, 100, 100, 433, 453, 191, 39, 190, 241, 463,
7462 214, 461, 318, 403, 406, 413, 418, 383, 400, 383,
7463 383, 383, 152, 296, 435, 155, 460, 155, 446, 425,
7464 440, 442, 428, 429, 438, 444, 134, 239, 430, 437,
7465 444, 436, 438, 189, 44, 44, 286, 286, 317, 152,
7466 317, 239, 155, 44, 213, 56, 44, 134, 44, 98,
7467 153, 458, 336, 336, 136, 235, 235, 330, 207, 159,
7468 100, 235, 235, 207, 8, 281, 373, 466, 14, 15,
7469 284, 285, 291, 292, 466, 292, 201, 107, 239, 333,
7470 286, 338, 334, 286, 461, 199, 464, 199, 174, 461,
7471 286, 460, 194, 328, 325, 235, 235, 100, 235, 235,
7472 460, 155, 460, 189, 179, 404, 460, 294, 297, 295,
7473 447, 155, 431, 155, 431, 155, 431, 155, 431, 431,
7474 188, 232, 237, 237, 318, 318, 107, 239, 237, 237,
7475 235, 237, 52, 56, 244, 52, 56, 337, 337, 227,
7476 190, 241, 190, 241, 152, 235, 190, 241, 190, 241,
7477 239, 254, 374, 466, 175, 284, 171, 199, 286, 286,
7478 239, 155, 289, 336, 286, 290, 174, 464, 286, 235,
7479 157, 322, 432, 171, 155, 155, 438, 438, 444, 438,
7480 227, 227, 179, 179, 239, 182, 182, 227, 461, 52,
7481 56, 58, 91, 92, 99, 102, 104, 105, 107, 112,
7482 140, 321, 343, 344, 345, 347, 350, 354, 355, 356,
7483 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
7484 369, 370, 371, 372, 377, 378, 381, 382, 385, 389,
7485 392, 394, 415, 440, 343, 190, 241, 101, 375, 466,
7486 9, 282, 376, 466, 172, 289, 107, 239, 171, 337,
7487 261, 286, 432, 320, 0, 120, 405, 295, 431, 431,
7488 155, 431, 431, 139, 310, 311, 466, 310, 368, 368,
7489 56, 218, 337, 344, 352, 353, 354, 355, 358, 461,
7490 189, 337, 462, 52, 397, 52, 102, 413, 101, 155,
7491 139, 155, 155, 344, 89, 90, 98, 153, 157, 348,
7492 349, 52, 99, 217, 268, 414, 415, 418, 289, 176,
7493 171, 171, 239, 292, 334, 335, 342, 343, 171, 189,
7494 313, 29, 123, 323, 438, 298, 301, 302, 303, 304,
7495 306, 307, 309, 312, 436, 438, 439, 444, 446, 171,
7496 174, 344, 461, 344, 356, 358, 461, 155, 152, 235,
7497 124, 199, 369, 352, 356, 346, 357, 358, 112, 361,
7498 365, 368, 368, 218, 337, 461, 337, 460, 352, 355,
7499 359, 352, 355, 359, 56, 98, 153, 458, 171, 163,
7500 173, 291, 289, 40, 41, 286, 160, 158, 324, 171,
7501 431, 447, 155, 447, 155, 308, 313, 300, 155, 305,
7502 308, 99, 268, 155, 308, 460, 155, 155, 351, 460,
7503 155, 350, 155, 397, 460, 460, 460, 461, 461, 461,
7504 52, 56, 244, 52, 56, 373, 376, 339, 199, 199,
7505 52, 314, 315, 434, 174, 152, 301, 442, 304, 306,
7506 438, 444, 139, 268, 307, 444, 56, 98, 438, 357,
7507 359, 357, 356, 358, 461, 171, 155, 189, 286, 447,
7508 155, 308, 155, 308, 155, 308, 155, 308, 52, 56,
7509 308, 155, 462, 292, 340, 341, 315, 438, 438, 444,
7510 438, 308, 308, 155, 308, 308, 438, 308
7514static const yytype_int16 yyr1[] =
7516 0, 162, 165, 163, 163, 164, 166, 167, 167, 167,
7517 168, 168, 169, 170, 171, 172, 173, 174, 175, 174,
7518 176, 176, 176, 177, 178, 177, 179, 180, 181, 182,
7519 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
7520 182, 182, 183, 182, 182, 182, 182, 182, 184, 185,
7521 186, 186, 186, 186, 186, 186, 186, 186, 185, 187,
7522 187, 185, 188, 188, 189, 189, 188, 190, 190, 190,
7523 191, 191, 191, 191, 191, 192, 191, 193, 191, 191,
7524 194, 195, 196, 197, 198, 199, 199, 200, 201, 202,
7525 203, 203, 204, 205, 206, 206, 207, 208, 208, 208,
7526 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
7527 209, 209, 210, 210, 211, 211, 212, 212, 212, 213,
7528 213, 212, 212, 212, 212, 212, 212, 212, 214, 214,
7529 215, 215, 216, 216, 216, 216, 216, 216, 216, 216,
7530 216, 217, 217, 217, 217, 217, 217, 217, 217, 217,
7531 218, 218, 219, 219, 219, 220, 220, 220, 220, 220,
7532 221, 221, 222, 223, 222, 224, 224, 224, 224, 224,
7533 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7534 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7535 224, 224, 224, 224, 224, 225, 225, 225, 225, 225,
7536 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7537 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7538 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7539 225, 225, 225, 225, 225, 225, 226, 227, 228, 228,
7540 228, 228, 228, 228, 228, 228, 227, 229, 229, 229,
7541 229, 229, 229, 227, 227, 227, 227, 227, 227, 227,
7542 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7543 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7544 230, 230, 227, 227, 227, 231, 232, 232, 232, 233,
7545 233, 233, 233, 234, 234, 235, 236, 237, 238, 239,
7546 240, 240, 240, 240, 241, 241, 242, 242, 242, 243,
7547 243, 244, 244, 244, 244, 244, 245, 246, 246, 246,
7548 246, 246, 246, 247, 248, 249, 249, 250, 250, 251,
7549 251, 251, 251, 252, 252, 253, 253, 254, 254, 254,
7550 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7551 255, 256, 255, 257, 255, 255, 255, 255, 255, 255,
7552 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7553 255, 255, 255, 255, 255, 258, 255, 259, 255, 255,
7554 260, 261, 255, 262, 255, 263, 255, 264, 255, 265,
7555 255, 266, 255, 255, 255, 255, 255, 267, 268, 269,
7556 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
7557 280, 281, 282, 283, 284, 285, 286, 286, 287, 288,
7558 289, 289, 289, 290, 290, 291, 291, 292, 292, 293,
7559 293, 294, 294, 295, 295, 296, 296, 296, 296, 296,
7560 297, 297, 298, 298, 299, 300, 301, 301, 302, 302,
7561 303, 303, 303, 303, 304, 305, 306, 307, 307, 308,
7562 308, 309, 309, 309, 309, 309, 309, 309, 309, 309,
7563 309, 309, 309, 309, 309, 309, 310, 310, 311, 312,
7564 312, 313, 313, 314, 314, 315, 315, 316, 317, 318,
7565 319, 320, 321, 322, 322, 323, 324, 323, 325, 326,
7566 326, 326, 326, 326, 327, 327, 327, 327, 327, 327,
7567 327, 327, 328, 328, 329, 330, 331, 332, 333, 333,
7568 333, 333, 334, 335, 335, 336, 337, 338, 339, 340,
7569 341, 341, 342, 342, 342, 343, 343, 343, 343, 343,
7570 343, 344, 345, 345, 346, 347, 347, 348, 349, 350,
7571 350, 350, 350, 350, 350, 350, 350, 350, 350, 350,
7572 350, 350, 351, 350, 350, 350, 352, 352, 352, 352,
7573 352, 352, 353, 353, 354, 354, 355, 356, 356, 357,
7574 357, 358, 359, 359, 359, 359, 360, 360, 361, 361,
7575 362, 362, 363, 363, 364, 365, 365, 366, 367, 367,
7576 367, 367, 367, 367, 366, 366, 366, 366, 368, 368,
7577 368, 368, 368, 368, 368, 368, 368, 368, 369, 370,
7578 370, 371, 372, 372, 372, 373, 373, 374, 374, 374,
7579 375, 375, 376, 376, 377, 377, 378, 379, 379, 379,
7580 380, 381, 382, 383, 383, 384, 385, 386, 386, 387,
7581 387, 388, 389, 390, 390, 391, 392, 393, 394, 395,
7582 395, 396, 396, 397, 397, 398, 398, 399, 399, 400,
7583 401, 400, 402, 403, 404, 400, 405, 405, 406, 406,
7584 407, 407, 408, 409, 409, 410, 411, 411, 412, 412,
7585 412, 412, 413, 413, 413, 414, 414, 414, 415, 415,
7586 415, 415, 415, 415, 415, 416, 416, 417, 417, 418,
7587 418, 419, 420, 420, 421, 421, 422, 423, 424, 423,
7588 425, 425, 426, 426, 427, 427, 427, 427, 428, 428,
7589 429, 430, 430, 431, 431, 432, 432, 432, 432, 432,
7590 432, 432, 432, 432, 432, 432, 432, 432, 432, 432,
7591 433, 434, 434, 434, 434, 435, 435, 436, 437, 437,
7592 438, 438, 439, 440, 440, 441, 442, 442, 443, 443,
7593 444, 444, 445, 445, 446, 446, 447, 447, 448, 449,
7594 450, 451, 450, 452, 452, 453, 453, 454, 454, 454,
7595 454, 454, 454, 455, 455, 455, 455, 456, 456, 456,
7596 457, 457, 458, 458, 459, 459, 460, 461, 462, 463,
7597 463, 464, 464, 465, 465, 466
7601static const yytype_int8 yyr2[] =
7603 0, 2, 0, 0, 1, 2, 2, 1, 1, 3,
7604 1, 2, 1, 3, 2, 0, 0, 8, 0, 5,
7605 1, 1, 3, 1, 0, 3, 0, 2, 0, 4,
7606 3, 3, 3, 2, 3, 3, 3, 3, 4, 5,
7607 1, 4, 4, 1, 7, 4, 1, 1, 4, 1,
7608 4, 7, 6, 6, 6, 6, 5, 4, 1, 4,
7609 4, 1, 1, 4, 0, 1, 3, 1, 4, 1,
7610 1, 3, 3, 3, 2, 0, 7, 0, 7, 1,
7611 1, 2, 0, 5, 1, 1, 1, 0, 0, 4,
7612 1, 1, 1, 1, 1, 4, 3, 1, 1, 1,
7613 2, 3, 4, 5, 4, 5, 6, 2, 2, 2,
7614 2, 2, 1, 3, 1, 3, 1, 2, 3, 1,
7615 3, 5, 2, 4, 2, 4, 1, 3, 1, 3,
7616 2, 3, 1, 1, 4, 3, 3, 3, 3, 2,
7617 1, 1, 1, 4, 3, 3, 3, 3, 2, 1,
7618 1, 1, 2, 1, 3, 1, 1, 1, 1, 1,
7619 1, 1, 1, 0, 4, 1, 1, 1, 1, 1,
7620 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7621 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7622 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7623 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7624 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7625 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7626 1, 1, 1, 1, 1, 1, 4, 1, 4, 7,
7627 6, 6, 6, 6, 5, 4, 1, 3, 3, 2,
7628 2, 2, 2, 1, 3, 3, 3, 3, 3, 3,
7629 4, 2, 2, 3, 3, 3, 3, 1, 3, 3,
7630 3, 3, 3, 2, 2, 3, 3, 3, 3, 4,
7631 4, 4, 1, 1, 1, 6, 1, 4, 3, 1,
7632 1, 1, 1, 3, 3, 1, 1, 1, 1, 1,
7633 1, 2, 4, 2, 1, 4, 3, 5, 3, 1,
7634 1, 1, 1, 2, 4, 2, 1, 1, 1, 2,
7635 2, 4, 1, 0, 2, 2, 1, 2, 1, 1,
7636 1, 3, 3, 2, 1, 1, 1, 3, 4, 2,
7637 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7638 1, 0, 4, 0, 4, 3, 3, 2, 3, 3,
7639 1, 4, 3, 1, 6, 4, 3, 2, 1, 2,
7640 1, 6, 6, 4, 4, 0, 6, 0, 5, 5,
7641 0, 0, 9, 0, 6, 0, 7, 0, 5, 0,
7642 5, 0, 5, 1, 1, 1, 1, 1, 1, 1,
7643 1, 1, 2, 2, 1, 2, 1, 1, 1, 1,
7644 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7645 1, 1, 2, 1, 1, 1, 5, 1, 2, 1,
7646 1, 1, 3, 1, 3, 1, 3, 5, 1, 3,
7647 2, 1, 1, 1, 0, 2, 2, 1, 1, 3,
7648 4, 2, 2, 1, 1, 1, 3, 1, 3, 2,
7649 0, 6, 8, 4, 6, 4, 2, 6, 2, 4,
7650 6, 2, 4, 2, 4, 1, 1, 1, 4, 0,
7651 1, 1, 4, 1, 3, 1, 1, 0, 0, 0,
7652 0, 0, 9, 4, 1, 3, 0, 4, 3, 2,
7653 4, 5, 5, 3, 2, 4, 4, 3, 3, 2,
7654 1, 4, 3, 3, 0, 7, 0, 7, 1, 2,
7655 3, 4, 5, 1, 1, 0, 0, 0, 0, 9,
7656 1, 1, 1, 3, 3, 1, 2, 3, 1, 1,
7657 1, 1, 3, 1, 0, 4, 1, 2, 2, 1,
7658 1, 4, 4, 4, 3, 4, 4, 4, 3, 3,
7659 3, 2, 0, 6, 2, 4, 1, 1, 2, 2,
7660 4, 1, 2, 3, 1, 3, 5, 2, 1, 1,
7661 3, 1, 3, 1, 2, 1, 1, 3, 2, 1,
7662 1, 3, 2, 1, 2, 1, 1, 1, 3, 3,
7663 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
7664 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
7665 2, 4, 2, 3, 1, 6, 1, 1, 1, 1,
7666 2, 1, 3, 1, 1, 1, 1, 1, 1, 2,
7667 3, 3, 3, 1, 2, 4, 1, 0, 3, 1,
7668 2, 4, 1, 0, 3, 4, 1, 4, 1, 0,
7669 3, 0, 3, 0, 2, 0, 2, 0, 2, 1,
7670 0, 3, 0, 0, 0, 6, 1, 1, 1, 1,
7671 1, 1, 2, 1, 1, 3, 1, 2, 1, 1,
7672 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7673 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7674 1, 0, 4, 1, 1, 1, 3, 1, 0, 3,
7675 2, 1, 1, 3, 4, 2, 2, 1, 1, 1,
7676 3, 1, 3, 2, 0, 6, 8, 4, 6, 4,
7677 6, 2, 4, 6, 2, 4, 2, 4, 1, 0,
7678 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
7679 1, 3, 1, 1, 1, 1, 2, 1, 1, 1,
7680 2, 1, 1, 1, 2, 1, 2, 1, 1, 1,
7681 1, 0, 4, 1, 2, 1, 3, 3, 2, 1,
7682 4, 2, 1, 1, 1, 1, 1, 1, 1, 1,
7683 1, 1, 1, 1, 1, 1, 2, 2, 2, 1,
7688enum { YYENOMEM = -2 };
7690#define yyerrok (yyerrstatus = 0)
7691#define yyclearin (yychar = YYEMPTY)
7693#define YYACCEPT goto yyacceptlab
7694#define YYABORT goto yyabortlab
7695#define YYERROR goto yyerrorlab
7696#define YYNOMEM goto yyexhaustedlab
7699#define YYRECOVERING() (!!yyerrstatus)
7701#define YYBACKUP(Token, Value) \
7703 if (yychar == YYEMPTY) \
7707 YYPOPSTACK (yylen); \
7713 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
7720#define YYERRCODE YYUNDEF
7726#ifndef YYLLOC_DEFAULT
7727# define YYLLOC_DEFAULT(Current, Rhs, N) \
7731 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
7732 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
7733 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
7734 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
7738 (Current).first_line = (Current).last_line = \
7739 YYRHSLOC (Rhs, 0).last_line; \
7740 (Current).first_column = (Current).last_column = \
7741 YYRHSLOC (Rhs, 0).last_column; \
7746#define YYRHSLOC(Rhs, K) ((Rhs)[K])
7754# define YYFPRINTF fprintf
7757# define YYDPRINTF(Args) \
7768# ifndef YYLOCATION_PRINT
7770# if defined YY_LOCATION_PRINT
7774# define YYLOCATION_PRINT(File, Loc, p) YY_LOCATION_PRINT(File, *(Loc), p)
7776# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
7782yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
7785 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
7786 if (0 <= yylocp->first_line)
7788 res += YYFPRINTF (yyo,
"%d", yylocp->first_line);
7789 if (0 <= yylocp->first_column)
7790 res += YYFPRINTF (yyo,
".%d", yylocp->first_column);
7792 if (0 <= yylocp->last_line)
7794 if (yylocp->first_line < yylocp->last_line)
7796 res += YYFPRINTF (yyo,
"-%d", yylocp->last_line);
7798 res += YYFPRINTF (yyo,
".%d", end_col);
7800 else if (0 <= end_col && yylocp->first_column < end_col)
7801 res += YYFPRINTF (yyo,
"-%d", end_col);
7806# define YYLOCATION_PRINT yy_location_print_
7810# define YY_LOCATION_PRINT(File, Loc, p) YYLOCATION_PRINT(File, &(Loc), p)
7814# define YYLOCATION_PRINT(File, Loc, p) ((void) 0)
7817# define YY_LOCATION_PRINT YYLOCATION_PRINT
7823# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p) \
7827 YYFPRINTF (stderr, "%s ", Title); \
7828 yy_symbol_print (stderr, \
7829 Kind, Value, Location, p); \
7830 YYFPRINTF (stderr, "\n"); \
7840yy_symbol_value_print (
FILE *yyo,
7843 FILE *yyoutput = yyo;
7845 YY_USE (yylocationp);
7849 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
7852 case YYSYMBOL_keyword_class:
7855 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7860 case YYSYMBOL_keyword_module:
7863 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7868 case YYSYMBOL_keyword_def:
7871 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7876 case YYSYMBOL_keyword_undef:
7879 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7884 case YYSYMBOL_keyword_begin:
7887 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7892 case YYSYMBOL_keyword_rescue:
7895 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7900 case YYSYMBOL_keyword_ensure:
7903 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7908 case YYSYMBOL_keyword_end:
7911 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7916 case YYSYMBOL_keyword_if:
7919 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7924 case YYSYMBOL_keyword_unless:
7927 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7932 case YYSYMBOL_keyword_then:
7935 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7940 case YYSYMBOL_keyword_elsif:
7943 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7948 case YYSYMBOL_keyword_else:
7951 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7956 case YYSYMBOL_keyword_case:
7959 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7964 case YYSYMBOL_keyword_when:
7967 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7972 case YYSYMBOL_keyword_while:
7975 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7980 case YYSYMBOL_keyword_until:
7983 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7988 case YYSYMBOL_keyword_for:
7991 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7996 case YYSYMBOL_keyword_break:
7999 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8004 case YYSYMBOL_keyword_next:
8007 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8012 case YYSYMBOL_keyword_redo:
8015 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8020 case YYSYMBOL_keyword_retry:
8023 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8028 case YYSYMBOL_keyword_in:
8031 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8036 case YYSYMBOL_keyword_do:
8039 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8044 case YYSYMBOL_keyword_do_cond:
8047 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8052 case YYSYMBOL_keyword_do_block:
8055 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8060 case YYSYMBOL_keyword_do_LAMBDA:
8063 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8068 case YYSYMBOL_keyword_return:
8071 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8076 case YYSYMBOL_keyword_yield:
8079 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8084 case YYSYMBOL_keyword_super:
8087 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8092 case YYSYMBOL_keyword_self:
8095 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8100 case YYSYMBOL_keyword_nil:
8103 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8108 case YYSYMBOL_keyword_true:
8111 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8116 case YYSYMBOL_keyword_false:
8119 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8124 case YYSYMBOL_keyword_and:
8127 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8132 case YYSYMBOL_keyword_or:
8135 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8140 case YYSYMBOL_keyword_not:
8143 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8148 case YYSYMBOL_modifier_if:
8151 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8156 case YYSYMBOL_modifier_unless:
8159 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8164 case YYSYMBOL_modifier_while:
8167 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8172 case YYSYMBOL_modifier_until:
8175 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8180 case YYSYMBOL_modifier_rescue:
8183 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8188 case YYSYMBOL_keyword_alias:
8191 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8196 case YYSYMBOL_keyword_defined:
8199 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8204 case YYSYMBOL_keyword_BEGIN:
8207 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8212 case YYSYMBOL_keyword_END:
8215 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8220 case YYSYMBOL_keyword__LINE__:
8223 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8228 case YYSYMBOL_keyword__FILE__:
8231 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8236 case YYSYMBOL_keyword__ENCODING__:
8239 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8244 case YYSYMBOL_tIDENTIFIER:
8247 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8255 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8260 case YYSYMBOL_tGVAR:
8263 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8268 case YYSYMBOL_tIVAR:
8271 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8276 case YYSYMBOL_tCONSTANT:
8279 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8284 case YYSYMBOL_tCVAR:
8287 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8292 case YYSYMBOL_tLABEL:
8295 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8300 case YYSYMBOL_tINTEGER:
8303 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8305 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8308 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8311 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8313 case NODE_IMAGINARY:
8314 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8323 case YYSYMBOL_tFLOAT:
8326 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8328 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8331 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8334 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8336 case NODE_IMAGINARY:
8337 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8346 case YYSYMBOL_tRATIONAL:
8349 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8351 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8354 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8357 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8359 case NODE_IMAGINARY:
8360 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8369 case YYSYMBOL_tIMAGINARY:
8372 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8374 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8377 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8380 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8382 case NODE_IMAGINARY:
8383 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8392 case YYSYMBOL_tCHAR:
8395 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8397 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8400 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8403 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8405 case NODE_IMAGINARY:
8406 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8415 case YYSYMBOL_tNTH_REF:
8418 rb_parser_printf(p,
"$%ld", RNODE_NTH_REF(((*yyvaluep).node))->nd_nth);
8423 case YYSYMBOL_tBACK_REF:
8426 rb_parser_printf(p,
"$%c", (
int)RNODE_BACK_REF(((*yyvaluep).node))->nd_nth);
8431 case YYSYMBOL_tSTRING_CONTENT:
8434 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8436 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8439 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8442 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8444 case NODE_IMAGINARY:
8445 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8457 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8462 case YYSYMBOL_70_backslash_:
8465 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8470 case YYSYMBOL_72_escaped_horizontal_tab_:
8473 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8478 case YYSYMBOL_73_escaped_form_feed_:
8481 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8486 case YYSYMBOL_74_escaped_carriage_return_:
8489 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8494 case YYSYMBOL_75_escaped_vertical_tab_:
8497 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8502 case YYSYMBOL_tANDDOT:
8505 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8510 case YYSYMBOL_tCOLON2:
8513 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8518 case YYSYMBOL_tOP_ASGN:
8521 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8526 case YYSYMBOL_compstmt_top_stmts:
8529 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8530 rb_parser_printf(p,
"NODE_SPECIAL");
8532 else if (((*yyvaluep).node)) {
8533 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8539 case YYSYMBOL_top_stmts:
8542 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8543 rb_parser_printf(p,
"NODE_SPECIAL");
8545 else if (((*yyvaluep).node)) {
8546 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8552 case YYSYMBOL_top_stmt:
8555 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8556 rb_parser_printf(p,
"NODE_SPECIAL");
8558 else if (((*yyvaluep).node)) {
8559 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8565 case YYSYMBOL_block_open:
8568 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
8569 rb_parser_printf(p,
"NODE_SPECIAL");
8571 else if (((*yyvaluep).node_exits)) {
8572 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8578 case YYSYMBOL_begin_block:
8581 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8582 rb_parser_printf(p,
"NODE_SPECIAL");
8584 else if (((*yyvaluep).node)) {
8585 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8591 case YYSYMBOL_compstmt_stmts:
8594 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8595 rb_parser_printf(p,
"NODE_SPECIAL");
8597 else if (((*yyvaluep).node)) {
8598 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8604 case YYSYMBOL_bodystmt:
8607 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8608 rb_parser_printf(p,
"NODE_SPECIAL");
8610 else if (((*yyvaluep).node)) {
8611 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8617 case YYSYMBOL_stmts:
8620 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8621 rb_parser_printf(p,
"NODE_SPECIAL");
8623 else if (((*yyvaluep).node)) {
8624 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8630 case YYSYMBOL_stmt_or_begin:
8633 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8634 rb_parser_printf(p,
"NODE_SPECIAL");
8636 else if (((*yyvaluep).node)) {
8637 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8643 case YYSYMBOL_allow_exits:
8646 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
8647 rb_parser_printf(p,
"NODE_SPECIAL");
8649 else if (((*yyvaluep).node_exits)) {
8650 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8659 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8660 rb_parser_printf(p,
"NODE_SPECIAL");
8662 else if (((*yyvaluep).node)) {
8663 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8669 case YYSYMBOL_asgn_mrhs:
8672 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8673 rb_parser_printf(p,
"NODE_SPECIAL");
8675 else if (((*yyvaluep).node)) {
8676 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8682 case YYSYMBOL_asgn_command_rhs:
8685 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8686 rb_parser_printf(p,
"NODE_SPECIAL");
8688 else if (((*yyvaluep).node)) {
8689 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8695 case YYSYMBOL_command_asgn:
8698 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8699 rb_parser_printf(p,
"NODE_SPECIAL");
8701 else if (((*yyvaluep).node)) {
8702 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8708 case YYSYMBOL_op_asgn_command_rhs:
8711 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8712 rb_parser_printf(p,
"NODE_SPECIAL");
8714 else if (((*yyvaluep).node)) {
8715 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8721 case YYSYMBOL_def_endless_method_endless_command:
8724 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8725 rb_parser_printf(p,
"NODE_SPECIAL");
8727 else if (((*yyvaluep).node)) {
8728 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8734 case YYSYMBOL_endless_command:
8737 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8738 rb_parser_printf(p,
"NODE_SPECIAL");
8740 else if (((*yyvaluep).node)) {
8741 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8747 case YYSYMBOL_command_rhs:
8750 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8751 rb_parser_printf(p,
"NODE_SPECIAL");
8753 else if (((*yyvaluep).node)) {
8754 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8763 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8764 rb_parser_printf(p,
"NODE_SPECIAL");
8766 else if (((*yyvaluep).node)) {
8767 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8773 case YYSYMBOL_def_name:
8776 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8781 case YYSYMBOL_defn_head:
8784 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
8785 rb_parser_printf(p,
"NODE_SPECIAL");
8787 else if (((*yyvaluep).node_def_temp)) {
8788 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8794 case YYSYMBOL_defs_head:
8797 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
8798 rb_parser_printf(p,
"NODE_SPECIAL");
8800 else if (((*yyvaluep).node_def_temp)) {
8801 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8807 case YYSYMBOL_value_expr_expr:
8810 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8811 rb_parser_printf(p,
"NODE_SPECIAL");
8813 else if (((*yyvaluep).node)) {
8814 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8820 case YYSYMBOL_expr_value:
8823 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8824 rb_parser_printf(p,
"NODE_SPECIAL");
8826 else if (((*yyvaluep).node)) {
8827 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8833 case YYSYMBOL_expr_value_do:
8836 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8837 rb_parser_printf(p,
"NODE_SPECIAL");
8839 else if (((*yyvaluep).node)) {
8840 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8846 case YYSYMBOL_command_call:
8849 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8850 rb_parser_printf(p,
"NODE_SPECIAL");
8852 else if (((*yyvaluep).node)) {
8853 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8859 case YYSYMBOL_value_expr_command_call:
8862 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8863 rb_parser_printf(p,
"NODE_SPECIAL");
8865 else if (((*yyvaluep).node)) {
8866 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8872 case YYSYMBOL_command_call_value:
8875 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8876 rb_parser_printf(p,
"NODE_SPECIAL");
8878 else if (((*yyvaluep).node)) {
8879 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8885 case YYSYMBOL_block_command:
8888 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8889 rb_parser_printf(p,
"NODE_SPECIAL");
8891 else if (((*yyvaluep).node)) {
8892 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8898 case YYSYMBOL_cmd_brace_block:
8901 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8902 rb_parser_printf(p,
"NODE_SPECIAL");
8904 else if (((*yyvaluep).node)) {
8905 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8911 case YYSYMBOL_fcall:
8914 if ((
NODE *)((*yyvaluep).node_fcall) == (
NODE *)-1) {
8915 rb_parser_printf(p,
"NODE_SPECIAL");
8917 else if (((*yyvaluep).node_fcall)) {
8918 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_fcall)))));
8924 case YYSYMBOL_command:
8927 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8928 rb_parser_printf(p,
"NODE_SPECIAL");
8930 else if (((*yyvaluep).node)) {
8931 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8940 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
8941 rb_parser_printf(p,
"NODE_SPECIAL");
8943 else if (((*yyvaluep).node_masgn)) {
8944 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
8950 case YYSYMBOL_mlhs_inner:
8953 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
8954 rb_parser_printf(p,
"NODE_SPECIAL");
8956 else if (((*yyvaluep).node_masgn)) {
8957 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
8963 case YYSYMBOL_mlhs_basic:
8966 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
8967 rb_parser_printf(p,
"NODE_SPECIAL");
8969 else if (((*yyvaluep).node_masgn)) {
8970 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
8976 case YYSYMBOL_mlhs_items_mlhs_item:
8979 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8980 rb_parser_printf(p,
"NODE_SPECIAL");
8982 else if (((*yyvaluep).node)) {
8983 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8989 case YYSYMBOL_mlhs_item:
8992 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8993 rb_parser_printf(p,
"NODE_SPECIAL");
8995 else if (((*yyvaluep).node)) {
8996 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9002 case YYSYMBOL_mlhs_head:
9005 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9006 rb_parser_printf(p,
"NODE_SPECIAL");
9008 else if (((*yyvaluep).node)) {
9009 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9015 case YYSYMBOL_mlhs_node:
9018 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9019 rb_parser_printf(p,
"NODE_SPECIAL");
9021 else if (((*yyvaluep).node)) {
9022 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9031 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9032 rb_parser_printf(p,
"NODE_SPECIAL");
9034 else if (((*yyvaluep).node)) {
9035 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9041 case YYSYMBOL_cname:
9044 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9049 case YYSYMBOL_cpath:
9052 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9053 rb_parser_printf(p,
"NODE_SPECIAL");
9055 else if (((*yyvaluep).node)) {
9056 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9062 case YYSYMBOL_fname:
9065 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9070 case YYSYMBOL_fitem:
9073 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9074 rb_parser_printf(p,
"NODE_SPECIAL");
9076 else if (((*yyvaluep).node)) {
9077 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9083 case YYSYMBOL_undef_list:
9086 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9087 rb_parser_printf(p,
"NODE_SPECIAL");
9089 else if (((*yyvaluep).node)) {
9090 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9099 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9104 case YYSYMBOL_reswords:
9107 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9112 case YYSYMBOL_asgn_arg_rhs:
9115 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9116 rb_parser_printf(p,
"NODE_SPECIAL");
9118 else if (((*yyvaluep).node)) {
9119 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9128 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9129 rb_parser_printf(p,
"NODE_SPECIAL");
9131 else if (((*yyvaluep).node)) {
9132 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9138 case YYSYMBOL_op_asgn_arg_rhs:
9141 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9142 rb_parser_printf(p,
"NODE_SPECIAL");
9144 else if (((*yyvaluep).node)) {
9145 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9151 case YYSYMBOL_range_expr_arg:
9154 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9155 rb_parser_printf(p,
"NODE_SPECIAL");
9157 else if (((*yyvaluep).node)) {
9158 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9164 case YYSYMBOL_def_endless_method_endless_arg:
9167 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9168 rb_parser_printf(p,
"NODE_SPECIAL");
9170 else if (((*yyvaluep).node)) {
9171 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9177 case YYSYMBOL_ternary:
9180 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9181 rb_parser_printf(p,
"NODE_SPECIAL");
9183 else if (((*yyvaluep).node)) {
9184 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9190 case YYSYMBOL_endless_arg:
9193 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9194 rb_parser_printf(p,
"NODE_SPECIAL");
9196 else if (((*yyvaluep).node)) {
9197 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9203 case YYSYMBOL_relop:
9206 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9211 case YYSYMBOL_rel_expr:
9214 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9215 rb_parser_printf(p,
"NODE_SPECIAL");
9217 else if (((*yyvaluep).node)) {
9218 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9224 case YYSYMBOL_value_expr_arg:
9227 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9228 rb_parser_printf(p,
"NODE_SPECIAL");
9230 else if (((*yyvaluep).node)) {
9231 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9237 case YYSYMBOL_arg_value:
9240 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9241 rb_parser_printf(p,
"NODE_SPECIAL");
9243 else if (((*yyvaluep).node)) {
9244 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9250 case YYSYMBOL_aref_args:
9253 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9254 rb_parser_printf(p,
"NODE_SPECIAL");
9256 else if (((*yyvaluep).node)) {
9257 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9263 case YYSYMBOL_arg_rhs:
9266 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9267 rb_parser_printf(p,
"NODE_SPECIAL");
9269 else if (((*yyvaluep).node)) {
9270 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9276 case YYSYMBOL_paren_args:
9279 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9280 rb_parser_printf(p,
"NODE_SPECIAL");
9282 else if (((*yyvaluep).node)) {
9283 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9289 case YYSYMBOL_opt_paren_args:
9292 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9293 rb_parser_printf(p,
"NODE_SPECIAL");
9295 else if (((*yyvaluep).node)) {
9296 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9302 case YYSYMBOL_opt_call_args:
9305 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9306 rb_parser_printf(p,
"NODE_SPECIAL");
9308 else if (((*yyvaluep).node)) {
9309 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9315 case YYSYMBOL_value_expr_command:
9318 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9319 rb_parser_printf(p,
"NODE_SPECIAL");
9321 else if (((*yyvaluep).node)) {
9322 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9328 case YYSYMBOL_call_args:
9331 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9332 rb_parser_printf(p,
"NODE_SPECIAL");
9334 else if (((*yyvaluep).node)) {
9335 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9341 case YYSYMBOL_command_args:
9344 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9345 rb_parser_printf(p,
"NODE_SPECIAL");
9347 else if (((*yyvaluep).node)) {
9348 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9354 case YYSYMBOL_block_arg:
9357 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
9358 rb_parser_printf(p,
"NODE_SPECIAL");
9360 else if (((*yyvaluep).node_block_pass)) {
9361 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9367 case YYSYMBOL_opt_block_arg:
9370 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
9371 rb_parser_printf(p,
"NODE_SPECIAL");
9373 else if (((*yyvaluep).node_block_pass)) {
9374 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9383 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9384 rb_parser_printf(p,
"NODE_SPECIAL");
9386 else if (((*yyvaluep).node)) {
9387 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9393 case YYSYMBOL_arg_splat:
9396 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9397 rb_parser_printf(p,
"NODE_SPECIAL");
9399 else if (((*yyvaluep).node)) {
9400 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9406 case YYSYMBOL_mrhs_arg:
9409 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9410 rb_parser_printf(p,
"NODE_SPECIAL");
9412 else if (((*yyvaluep).node)) {
9413 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9422 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9423 rb_parser_printf(p,
"NODE_SPECIAL");
9425 else if (((*yyvaluep).node)) {
9426 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9432 case YYSYMBOL_primary:
9435 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9436 rb_parser_printf(p,
"NODE_SPECIAL");
9438 else if (((*yyvaluep).node)) {
9439 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9445 case YYSYMBOL_value_expr_primary:
9448 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9449 rb_parser_printf(p,
"NODE_SPECIAL");
9451 else if (((*yyvaluep).node)) {
9452 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9458 case YYSYMBOL_primary_value:
9461 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9462 rb_parser_printf(p,
"NODE_SPECIAL");
9464 else if (((*yyvaluep).node)) {
9465 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9471 case YYSYMBOL_k_while:
9474 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9475 rb_parser_printf(p,
"NODE_SPECIAL");
9477 else if (((*yyvaluep).node_exits)) {
9478 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9484 case YYSYMBOL_k_until:
9487 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9488 rb_parser_printf(p,
"NODE_SPECIAL");
9490 else if (((*yyvaluep).node_exits)) {
9491 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9497 case YYSYMBOL_k_for:
9500 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9501 rb_parser_printf(p,
"NODE_SPECIAL");
9503 else if (((*yyvaluep).node_exits)) {
9504 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9510 case YYSYMBOL_k_def:
9513 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
9514 rb_parser_printf(p,
"NODE_SPECIAL");
9516 else if (((*yyvaluep).node_def_temp)) {
9517 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
9526 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9531 case YYSYMBOL_if_tail:
9534 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9535 rb_parser_printf(p,
"NODE_SPECIAL");
9537 else if (((*yyvaluep).node)) {
9538 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9544 case YYSYMBOL_opt_else:
9547 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9548 rb_parser_printf(p,
"NODE_SPECIAL");
9550 else if (((*yyvaluep).node)) {
9551 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9557 case YYSYMBOL_for_var:
9560 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9561 rb_parser_printf(p,
"NODE_SPECIAL");
9563 else if (((*yyvaluep).node)) {
9564 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9570 case YYSYMBOL_f_marg:
9573 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9574 rb_parser_printf(p,
"NODE_SPECIAL");
9576 else if (((*yyvaluep).node)) {
9577 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9583 case YYSYMBOL_mlhs_items_f_marg:
9586 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9587 rb_parser_printf(p,
"NODE_SPECIAL");
9589 else if (((*yyvaluep).node)) {
9590 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9596 case YYSYMBOL_f_margs:
9599 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9600 rb_parser_printf(p,
"NODE_SPECIAL");
9602 else if (((*yyvaluep).node_masgn)) {
9603 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9609 case YYSYMBOL_f_rest_marg:
9612 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9613 rb_parser_printf(p,
"NODE_SPECIAL");
9615 else if (((*yyvaluep).node)) {
9616 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9622 case YYSYMBOL_f_any_kwrest:
9625 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9630 case YYSYMBOL_f_kw_primary_value:
9633 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9634 rb_parser_printf(p,
"NODE_SPECIAL");
9636 else if (((*yyvaluep).node_kw_arg)) {
9637 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9643 case YYSYMBOL_f_kwarg_primary_value:
9646 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9647 rb_parser_printf(p,
"NODE_SPECIAL");
9649 else if (((*yyvaluep).node_kw_arg)) {
9650 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9656 case YYSYMBOL_args_tail_basic_primary_value:
9659 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9660 rb_parser_printf(p,
"NODE_SPECIAL");
9662 else if (((*yyvaluep).node_args)) {
9663 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9669 case YYSYMBOL_block_args_tail:
9672 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9673 rb_parser_printf(p,
"NODE_SPECIAL");
9675 else if (((*yyvaluep).node_args)) {
9676 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9682 case YYSYMBOL_excessed_comma:
9685 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9690 case YYSYMBOL_f_opt_primary_value:
9693 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9694 rb_parser_printf(p,
"NODE_SPECIAL");
9696 else if (((*yyvaluep).node_opt_arg)) {
9697 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9703 case YYSYMBOL_f_opt_arg_primary_value:
9706 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9707 rb_parser_printf(p,
"NODE_SPECIAL");
9709 else if (((*yyvaluep).node_opt_arg)) {
9710 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9716 case YYSYMBOL_opt_args_tail_block_args_tail:
9719 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9720 rb_parser_printf(p,
"NODE_SPECIAL");
9722 else if (((*yyvaluep).node_args)) {
9723 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9729 case YYSYMBOL_block_param:
9732 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9733 rb_parser_printf(p,
"NODE_SPECIAL");
9735 else if (((*yyvaluep).node_args)) {
9736 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9742 case YYSYMBOL_opt_block_param_def:
9745 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9746 rb_parser_printf(p,
"NODE_SPECIAL");
9748 else if (((*yyvaluep).node_args)) {
9749 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9755 case YYSYMBOL_block_param_def:
9758 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9759 rb_parser_printf(p,
"NODE_SPECIAL");
9761 else if (((*yyvaluep).node_args)) {
9762 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9768 case YYSYMBOL_opt_block_param:
9771 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9772 rb_parser_printf(p,
"NODE_SPECIAL");
9774 else if (((*yyvaluep).node_args)) {
9775 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9781 case YYSYMBOL_opt_bv_decl:
9784 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9789 case YYSYMBOL_bv_decls:
9792 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9800 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9805 case YYSYMBOL_numparam:
9808 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9809 rb_parser_printf(p,
"NODE_SPECIAL");
9811 else if (((*yyvaluep).node)) {
9812 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9818 case YYSYMBOL_it_id:
9821 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9826 case YYSYMBOL_lambda:
9829 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9830 rb_parser_printf(p,
"NODE_SPECIAL");
9832 else if (((*yyvaluep).node)) {
9833 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9839 case YYSYMBOL_f_larglist:
9842 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9843 rb_parser_printf(p,
"NODE_SPECIAL");
9845 else if (((*yyvaluep).node_args)) {
9846 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9852 case YYSYMBOL_do_block:
9855 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9856 rb_parser_printf(p,
"NODE_SPECIAL");
9858 else if (((*yyvaluep).node)) {
9859 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9865 case YYSYMBOL_block_call:
9868 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9869 rb_parser_printf(p,
"NODE_SPECIAL");
9871 else if (((*yyvaluep).node)) {
9872 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9878 case YYSYMBOL_method_call:
9881 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9882 rb_parser_printf(p,
"NODE_SPECIAL");
9884 else if (((*yyvaluep).node)) {
9885 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9891 case YYSYMBOL_brace_block:
9894 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9895 rb_parser_printf(p,
"NODE_SPECIAL");
9897 else if (((*yyvaluep).node)) {
9898 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9904 case YYSYMBOL_brace_body:
9907 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9908 rb_parser_printf(p,
"NODE_SPECIAL");
9910 else if (((*yyvaluep).node)) {
9911 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9917 case YYSYMBOL_do_body:
9920 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9921 rb_parser_printf(p,
"NODE_SPECIAL");
9923 else if (((*yyvaluep).node)) {
9924 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9930 case YYSYMBOL_case_args:
9933 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9934 rb_parser_printf(p,
"NODE_SPECIAL");
9936 else if (((*yyvaluep).node)) {
9937 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9943 case YYSYMBOL_case_body:
9946 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9947 rb_parser_printf(p,
"NODE_SPECIAL");
9949 else if (((*yyvaluep).node)) {
9950 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9956 case YYSYMBOL_cases:
9959 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9960 rb_parser_printf(p,
"NODE_SPECIAL");
9962 else if (((*yyvaluep).node)) {
9963 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9969 case YYSYMBOL_p_case_body:
9972 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9973 rb_parser_printf(p,
"NODE_SPECIAL");
9975 else if (((*yyvaluep).node)) {
9976 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9982 case YYSYMBOL_p_cases:
9985 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9986 rb_parser_printf(p,
"NODE_SPECIAL");
9988 else if (((*yyvaluep).node)) {
9989 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9995 case YYSYMBOL_p_top_expr:
9998 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9999 rb_parser_printf(p,
"NODE_SPECIAL");
10001 else if (((*yyvaluep).node)) {
10002 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10005#line 10006 "parse.c"
10008 case YYSYMBOL_p_top_expr_body:
10009#line 2617 "parse.y"
10011 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10012 rb_parser_printf(p,
"NODE_SPECIAL");
10014 else if (((*yyvaluep).node)) {
10015 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10018#line 10019 "parse.c"
10021 case YYSYMBOL_p_expr:
10022#line 2617 "parse.y"
10024 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10025 rb_parser_printf(p,
"NODE_SPECIAL");
10027 else if (((*yyvaluep).node)) {
10028 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10031#line 10032 "parse.c"
10034 case YYSYMBOL_p_as:
10035#line 2617 "parse.y"
10037 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10038 rb_parser_printf(p,
"NODE_SPECIAL");
10040 else if (((*yyvaluep).node)) {
10041 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10044#line 10045 "parse.c"
10047 case YYSYMBOL_p_alt:
10048#line 2617 "parse.y"
10050 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10051 rb_parser_printf(p,
"NODE_SPECIAL");
10053 else if (((*yyvaluep).node)) {
10054 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10057#line 10058 "parse.c"
10060 case YYSYMBOL_p_expr_basic:
10061#line 2617 "parse.y"
10063 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10064 rb_parser_printf(p,
"NODE_SPECIAL");
10066 else if (((*yyvaluep).node)) {
10067 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10070#line 10071 "parse.c"
10073 case YYSYMBOL_p_args:
10074#line 2617 "parse.y"
10076 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10077 rb_parser_printf(p,
"NODE_SPECIAL");
10079 else if (((*yyvaluep).node)) {
10080 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10083#line 10084 "parse.c"
10086 case YYSYMBOL_p_args_head:
10087#line 2617 "parse.y"
10089 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10090 rb_parser_printf(p,
"NODE_SPECIAL");
10092 else if (((*yyvaluep).node)) {
10093 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10096#line 10097 "parse.c"
10099 case YYSYMBOL_p_args_tail:
10100#line 2617 "parse.y"
10102 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10103 rb_parser_printf(p,
"NODE_SPECIAL");
10105 else if (((*yyvaluep).node)) {
10106 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10109#line 10110 "parse.c"
10112 case YYSYMBOL_p_find:
10113#line 2617 "parse.y"
10115 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10116 rb_parser_printf(p,
"NODE_SPECIAL");
10118 else if (((*yyvaluep).node)) {
10119 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10122#line 10123 "parse.c"
10125 case YYSYMBOL_p_rest:
10126#line 2617 "parse.y"
10128 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10129 rb_parser_printf(p,
"NODE_SPECIAL");
10131 else if (((*yyvaluep).node)) {
10132 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10135#line 10136 "parse.c"
10138 case YYSYMBOL_p_args_post:
10139#line 2617 "parse.y"
10141 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10142 rb_parser_printf(p,
"NODE_SPECIAL");
10144 else if (((*yyvaluep).node)) {
10145 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10148#line 10149 "parse.c"
10151 case YYSYMBOL_p_arg:
10152#line 2617 "parse.y"
10154 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10155 rb_parser_printf(p,
"NODE_SPECIAL");
10157 else if (((*yyvaluep).node)) {
10158 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10161#line 10162 "parse.c"
10164 case YYSYMBOL_p_kwargs:
10165#line 2617 "parse.y"
10167 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10168 rb_parser_printf(p,
"NODE_SPECIAL");
10170 else if (((*yyvaluep).node)) {
10171 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10174#line 10175 "parse.c"
10177 case YYSYMBOL_p_kwarg:
10178#line 2617 "parse.y"
10180 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10181 rb_parser_printf(p,
"NODE_SPECIAL");
10183 else if (((*yyvaluep).node)) {
10184 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10187#line 10188 "parse.c"
10190 case YYSYMBOL_p_kw:
10191#line 2617 "parse.y"
10193 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10194 rb_parser_printf(p,
"NODE_SPECIAL");
10196 else if (((*yyvaluep).node)) {
10197 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10200#line 10201 "parse.c"
10203 case YYSYMBOL_p_kw_label:
10204#line 2626 "parse.y"
10206 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10208#line 10209 "parse.c"
10211 case YYSYMBOL_p_kwrest:
10212#line 2626 "parse.y"
10214 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10216#line 10217 "parse.c"
10219 case YYSYMBOL_p_kwnorest:
10220#line 2626 "parse.y"
10222 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10224#line 10225 "parse.c"
10227 case YYSYMBOL_p_any_kwrest:
10228#line 2626 "parse.y"
10230 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10232#line 10233 "parse.c"
10235 case YYSYMBOL_p_value:
10236#line 2617 "parse.y"
10238 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10239 rb_parser_printf(p,
"NODE_SPECIAL");
10241 else if (((*yyvaluep).node)) {
10242 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10245#line 10246 "parse.c"
10248 case YYSYMBOL_range_expr_p_primitive:
10249#line 2617 "parse.y"
10251 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10252 rb_parser_printf(p,
"NODE_SPECIAL");
10254 else if (((*yyvaluep).node)) {
10255 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10258#line 10259 "parse.c"
10261 case YYSYMBOL_p_primitive:
10262#line 2617 "parse.y"
10264 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10265 rb_parser_printf(p,
"NODE_SPECIAL");
10267 else if (((*yyvaluep).node)) {
10268 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10271#line 10272 "parse.c"
10274 case YYSYMBOL_p_variable:
10275#line 2617 "parse.y"
10277 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10278 rb_parser_printf(p,
"NODE_SPECIAL");
10280 else if (((*yyvaluep).node)) {
10281 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10284#line 10285 "parse.c"
10287 case YYSYMBOL_p_var_ref:
10288#line 2617 "parse.y"
10290 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10291 rb_parser_printf(p,
"NODE_SPECIAL");
10293 else if (((*yyvaluep).node)) {
10294 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10297#line 10298 "parse.c"
10300 case YYSYMBOL_p_expr_ref:
10301#line 2617 "parse.y"
10303 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10304 rb_parser_printf(p,
"NODE_SPECIAL");
10306 else if (((*yyvaluep).node)) {
10307 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10310#line 10311 "parse.c"
10313 case YYSYMBOL_p_const:
10314#line 2617 "parse.y"
10316 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10317 rb_parser_printf(p,
"NODE_SPECIAL");
10319 else if (((*yyvaluep).node)) {
10320 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10323#line 10324 "parse.c"
10326 case YYSYMBOL_opt_rescue:
10327#line 2617 "parse.y"
10329 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10330 rb_parser_printf(p,
"NODE_SPECIAL");
10332 else if (((*yyvaluep).node)) {
10333 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10336#line 10337 "parse.c"
10339 case YYSYMBOL_exc_list:
10340#line 2617 "parse.y"
10342 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10343 rb_parser_printf(p,
"NODE_SPECIAL");
10345 else if (((*yyvaluep).node)) {
10346 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10349#line 10350 "parse.c"
10352 case YYSYMBOL_exc_var:
10353#line 2617 "parse.y"
10355 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10356 rb_parser_printf(p,
"NODE_SPECIAL");
10358 else if (((*yyvaluep).node)) {
10359 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10362#line 10363 "parse.c"
10365 case YYSYMBOL_opt_ensure:
10366#line 2617 "parse.y"
10368 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10369 rb_parser_printf(p,
"NODE_SPECIAL");
10371 else if (((*yyvaluep).node)) {
10372 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10375#line 10376 "parse.c"
10378 case YYSYMBOL_literal:
10379#line 2617 "parse.y"
10381 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10382 rb_parser_printf(p,
"NODE_SPECIAL");
10384 else if (((*yyvaluep).node)) {
10385 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10388#line 10389 "parse.c"
10391 case YYSYMBOL_strings:
10392#line 2617 "parse.y"
10394 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10395 rb_parser_printf(p,
"NODE_SPECIAL");
10397 else if (((*yyvaluep).node)) {
10398 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10401#line 10402 "parse.c"
10404 case YYSYMBOL_string:
10405#line 2617 "parse.y"
10407 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10408 rb_parser_printf(p,
"NODE_SPECIAL");
10410 else if (((*yyvaluep).node)) {
10411 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10414#line 10415 "parse.c"
10417 case YYSYMBOL_string1:
10418#line 2617 "parse.y"
10420 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10421 rb_parser_printf(p,
"NODE_SPECIAL");
10423 else if (((*yyvaluep).node)) {
10424 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10427#line 10428 "parse.c"
10430 case YYSYMBOL_xstring:
10431#line 2617 "parse.y"
10433 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10434 rb_parser_printf(p,
"NODE_SPECIAL");
10436 else if (((*yyvaluep).node)) {
10437 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10440#line 10441 "parse.c"
10443 case YYSYMBOL_regexp:
10444#line 2617 "parse.y"
10446 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10447 rb_parser_printf(p,
"NODE_SPECIAL");
10449 else if (((*yyvaluep).node)) {
10450 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10453#line 10454 "parse.c"
10456 case YYSYMBOL_words_tWORDS_BEG_word_list:
10457#line 2617 "parse.y"
10459 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10460 rb_parser_printf(p,
"NODE_SPECIAL");
10462 else if (((*yyvaluep).node)) {
10463 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10466#line 10467 "parse.c"
10469 case YYSYMBOL_words:
10470#line 2617 "parse.y"
10472 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10473 rb_parser_printf(p,
"NODE_SPECIAL");
10475 else if (((*yyvaluep).node)) {
10476 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10479#line 10480 "parse.c"
10482 case YYSYMBOL_word_list:
10483#line 2617 "parse.y"
10485 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10486 rb_parser_printf(p,
"NODE_SPECIAL");
10488 else if (((*yyvaluep).node)) {
10489 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10492#line 10493 "parse.c"
10495 case YYSYMBOL_word:
10496#line 2617 "parse.y"
10498 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10499 rb_parser_printf(p,
"NODE_SPECIAL");
10501 else if (((*yyvaluep).node)) {
10502 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10505#line 10506 "parse.c"
10508 case YYSYMBOL_words_tSYMBOLS_BEG_symbol_list:
10509#line 2617 "parse.y"
10511 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10512 rb_parser_printf(p,
"NODE_SPECIAL");
10514 else if (((*yyvaluep).node)) {
10515 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10518#line 10519 "parse.c"
10521 case YYSYMBOL_symbols:
10522#line 2617 "parse.y"
10524 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10525 rb_parser_printf(p,
"NODE_SPECIAL");
10527 else if (((*yyvaluep).node)) {
10528 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10531#line 10532 "parse.c"
10534 case YYSYMBOL_symbol_list:
10535#line 2617 "parse.y"
10537 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10538 rb_parser_printf(p,
"NODE_SPECIAL");
10540 else if (((*yyvaluep).node)) {
10541 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10544#line 10545 "parse.c"
10547 case YYSYMBOL_words_tQWORDS_BEG_qword_list:
10548#line 2617 "parse.y"
10550 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10551 rb_parser_printf(p,
"NODE_SPECIAL");
10553 else if (((*yyvaluep).node)) {
10554 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10557#line 10558 "parse.c"
10560 case YYSYMBOL_qwords:
10561#line 2617 "parse.y"
10563 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10564 rb_parser_printf(p,
"NODE_SPECIAL");
10566 else if (((*yyvaluep).node)) {
10567 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10570#line 10571 "parse.c"
10573 case YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list:
10574#line 2617 "parse.y"
10576 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10577 rb_parser_printf(p,
"NODE_SPECIAL");
10579 else if (((*yyvaluep).node)) {
10580 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10583#line 10584 "parse.c"
10586 case YYSYMBOL_qsymbols:
10587#line 2617 "parse.y"
10589 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10590 rb_parser_printf(p,
"NODE_SPECIAL");
10592 else if (((*yyvaluep).node)) {
10593 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10596#line 10597 "parse.c"
10599 case YYSYMBOL_qword_list:
10600#line 2617 "parse.y"
10602 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10603 rb_parser_printf(p,
"NODE_SPECIAL");
10605 else if (((*yyvaluep).node)) {
10606 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10609#line 10610 "parse.c"
10612 case YYSYMBOL_qsym_list:
10613#line 2617 "parse.y"
10615 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10616 rb_parser_printf(p,
"NODE_SPECIAL");
10618 else if (((*yyvaluep).node)) {
10619 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10622#line 10623 "parse.c"
10625 case YYSYMBOL_string_contents:
10626#line 2617 "parse.y"
10628 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10629 rb_parser_printf(p,
"NODE_SPECIAL");
10631 else if (((*yyvaluep).node)) {
10632 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10635#line 10636 "parse.c"
10638 case YYSYMBOL_xstring_contents:
10639#line 2617 "parse.y"
10641 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10642 rb_parser_printf(p,
"NODE_SPECIAL");
10644 else if (((*yyvaluep).node)) {
10645 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10648#line 10649 "parse.c"
10651 case YYSYMBOL_regexp_contents:
10652#line 2617 "parse.y"
10654 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10655 rb_parser_printf(p,
"NODE_SPECIAL");
10657 else if (((*yyvaluep).node)) {
10658 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10661#line 10662 "parse.c"
10664 case YYSYMBOL_string_content:
10665#line 2617 "parse.y"
10667 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10668 rb_parser_printf(p,
"NODE_SPECIAL");
10670 else if (((*yyvaluep).node)) {
10671 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10674#line 10675 "parse.c"
10677 case YYSYMBOL_string_dvar:
10678#line 2617 "parse.y"
10680 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10681 rb_parser_printf(p,
"NODE_SPECIAL");
10683 else if (((*yyvaluep).node)) {
10684 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10687#line 10688 "parse.c"
10690 case YYSYMBOL_symbol:
10691#line 2617 "parse.y"
10693 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10694 rb_parser_printf(p,
"NODE_SPECIAL");
10696 else if (((*yyvaluep).node)) {
10697 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10700#line 10701 "parse.c"
10703 case YYSYMBOL_ssym:
10704#line 2617 "parse.y"
10706 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10707 rb_parser_printf(p,
"NODE_SPECIAL");
10709 else if (((*yyvaluep).node)) {
10710 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10713#line 10714 "parse.c"
10717#line 2626 "parse.y"
10719 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10721#line 10722 "parse.c"
10724 case YYSYMBOL_dsym:
10725#line 2617 "parse.y"
10727 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10728 rb_parser_printf(p,
"NODE_SPECIAL");
10730 else if (((*yyvaluep).node)) {
10731 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10734#line 10735 "parse.c"
10737 case YYSYMBOL_numeric:
10738#line 2617 "parse.y"
10740 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10741 rb_parser_printf(p,
"NODE_SPECIAL");
10743 else if (((*yyvaluep).node)) {
10744 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10747#line 10748 "parse.c"
10750 case YYSYMBOL_simple_numeric:
10751#line 2617 "parse.y"
10753 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10754 rb_parser_printf(p,
"NODE_SPECIAL");
10756 else if (((*yyvaluep).node)) {
10757 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10760#line 10761 "parse.c"
10763 case YYSYMBOL_nonlocal_var:
10764#line 2626 "parse.y"
10766 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10768#line 10769 "parse.c"
10771 case YYSYMBOL_user_variable:
10772#line 2626 "parse.y"
10774 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10776#line 10777 "parse.c"
10779 case YYSYMBOL_keyword_variable:
10780#line 2626 "parse.y"
10782 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10784#line 10785 "parse.c"
10787 case YYSYMBOL_var_ref:
10788#line 2617 "parse.y"
10790 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10791 rb_parser_printf(p,
"NODE_SPECIAL");
10793 else if (((*yyvaluep).node)) {
10794 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10797#line 10798 "parse.c"
10800 case YYSYMBOL_var_lhs:
10801#line 2617 "parse.y"
10803 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10804 rb_parser_printf(p,
"NODE_SPECIAL");
10806 else if (((*yyvaluep).node)) {
10807 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10810#line 10811 "parse.c"
10813 case YYSYMBOL_backref:
10814#line 2617 "parse.y"
10816 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10817 rb_parser_printf(p,
"NODE_SPECIAL");
10819 else if (((*yyvaluep).node)) {
10820 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10823#line 10824 "parse.c"
10826 case YYSYMBOL_superclass:
10827#line 2617 "parse.y"
10829 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10830 rb_parser_printf(p,
"NODE_SPECIAL");
10832 else if (((*yyvaluep).node)) {
10833 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10836#line 10837 "parse.c"
10839 case YYSYMBOL_f_opt_paren_args:
10840#line 2617 "parse.y"
10842 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10843 rb_parser_printf(p,
"NODE_SPECIAL");
10845 else if (((*yyvaluep).node_args)) {
10846 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10849#line 10850 "parse.c"
10852 case YYSYMBOL_f_paren_args:
10853#line 2617 "parse.y"
10855 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10856 rb_parser_printf(p,
"NODE_SPECIAL");
10858 else if (((*yyvaluep).node_args)) {
10859 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10862#line 10863 "parse.c"
10865 case YYSYMBOL_f_arglist:
10866#line 2617 "parse.y"
10868 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10869 rb_parser_printf(p,
"NODE_SPECIAL");
10871 else if (((*yyvaluep).node_args)) {
10872 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10875#line 10876 "parse.c"
10878 case YYSYMBOL_f_kw_arg_value:
10879#line 2617 "parse.y"
10881 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
10882 rb_parser_printf(p,
"NODE_SPECIAL");
10884 else if (((*yyvaluep).node_kw_arg)) {
10885 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
10888#line 10889 "parse.c"
10891 case YYSYMBOL_f_kwarg_arg_value:
10892#line 2617 "parse.y"
10894 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
10895 rb_parser_printf(p,
"NODE_SPECIAL");
10897 else if (((*yyvaluep).node_kw_arg)) {
10898 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
10901#line 10902 "parse.c"
10904 case YYSYMBOL_args_tail_basic_arg_value:
10905#line 2617 "parse.y"
10907 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10908 rb_parser_printf(p,
"NODE_SPECIAL");
10910 else if (((*yyvaluep).node_args)) {
10911 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10914#line 10915 "parse.c"
10917 case YYSYMBOL_args_tail:
10918#line 2617 "parse.y"
10920 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10921 rb_parser_printf(p,
"NODE_SPECIAL");
10923 else if (((*yyvaluep).node_args)) {
10924 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10927#line 10928 "parse.c"
10930 case YYSYMBOL_f_opt_arg_value:
10931#line 2617 "parse.y"
10933 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
10934 rb_parser_printf(p,
"NODE_SPECIAL");
10936 else if (((*yyvaluep).node_opt_arg)) {
10937 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
10940#line 10941 "parse.c"
10943 case YYSYMBOL_f_opt_arg_arg_value:
10944#line 2617 "parse.y"
10946 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
10947 rb_parser_printf(p,
"NODE_SPECIAL");
10949 else if (((*yyvaluep).node_opt_arg)) {
10950 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
10953#line 10954 "parse.c"
10956 case YYSYMBOL_opt_args_tail_args_tail:
10957#line 2617 "parse.y"
10959 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10960 rb_parser_printf(p,
"NODE_SPECIAL");
10962 else if (((*yyvaluep).node_args)) {
10963 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10966#line 10967 "parse.c"
10969 case YYSYMBOL_f_args:
10970#line 2617 "parse.y"
10972 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10973 rb_parser_printf(p,
"NODE_SPECIAL");
10975 else if (((*yyvaluep).node_args)) {
10976 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10979#line 10980 "parse.c"
10982 case YYSYMBOL_args_forward:
10983#line 2626 "parse.y"
10985 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10987#line 10988 "parse.c"
10990 case YYSYMBOL_f_bad_arg:
10991#line 2626 "parse.y"
10993 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10995#line 10996 "parse.c"
10998 case YYSYMBOL_f_norm_arg:
10999#line 2626 "parse.y"
11001 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11003#line 11004 "parse.c"
11006 case YYSYMBOL_f_arg_asgn:
11007#line 2626 "parse.y"
11009 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11011#line 11012 "parse.c"
11014 case YYSYMBOL_f_arg_item:
11015#line 2617 "parse.y"
11017 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
11018 rb_parser_printf(p,
"NODE_SPECIAL");
11020 else if (((*yyvaluep).node_args_aux)) {
11021 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11024#line 11025 "parse.c"
11027 case YYSYMBOL_f_arg:
11028#line 2617 "parse.y"
11030 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
11031 rb_parser_printf(p,
"NODE_SPECIAL");
11033 else if (((*yyvaluep).node_args_aux)) {
11034 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11037#line 11038 "parse.c"
11040 case YYSYMBOL_f_label:
11041#line 2626 "parse.y"
11043 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11045#line 11046 "parse.c"
11048 case YYSYMBOL_f_no_kwarg:
11049#line 2626 "parse.y"
11051 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11053#line 11054 "parse.c"
11056 case YYSYMBOL_f_kwrest:
11057#line 2626 "parse.y"
11059 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11061#line 11062 "parse.c"
11064 case YYSYMBOL_f_rest_arg:
11065#line 2626 "parse.y"
11067 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11069#line 11070 "parse.c"
11072 case YYSYMBOL_f_block_arg:
11073#line 2626 "parse.y"
11075 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11077#line 11078 "parse.c"
11080 case YYSYMBOL_opt_f_block_arg:
11081#line 2626 "parse.y"
11083 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11085#line 11086 "parse.c"
11088 case YYSYMBOL_value_expr_singleton_expr:
11089#line 2617 "parse.y"
11091 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11092 rb_parser_printf(p,
"NODE_SPECIAL");
11094 else if (((*yyvaluep).node)) {
11095 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11098#line 11099 "parse.c"
11101 case YYSYMBOL_singleton:
11102#line 2617 "parse.y"
11104 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11105 rb_parser_printf(p,
"NODE_SPECIAL");
11107 else if (((*yyvaluep).node)) {
11108 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11111#line 11112 "parse.c"
11114 case YYSYMBOL_singleton_expr:
11115#line 2617 "parse.y"
11117 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11118 rb_parser_printf(p,
"NODE_SPECIAL");
11120 else if (((*yyvaluep).node)) {
11121 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11124#line 11125 "parse.c"
11127 case YYSYMBOL_assoc_list:
11128#line 2617 "parse.y"
11130 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11131 rb_parser_printf(p,
"NODE_SPECIAL");
11133 else if (((*yyvaluep).node)) {
11134 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11137#line 11138 "parse.c"
11140 case YYSYMBOL_assocs:
11141#line 2617 "parse.y"
11143 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11144 rb_parser_printf(p,
"NODE_SPECIAL");
11146 else if (((*yyvaluep).node)) {
11147 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11150#line 11151 "parse.c"
11153 case YYSYMBOL_assoc:
11154#line 2617 "parse.y"
11156 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11157 rb_parser_printf(p,
"NODE_SPECIAL");
11159 else if (((*yyvaluep).node)) {
11160 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11163#line 11164 "parse.c"
11166 case YYSYMBOL_operation2:
11167#line 2626 "parse.y"
11169 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11171#line 11172 "parse.c"
11174 case YYSYMBOL_operation3:
11175#line 2626 "parse.y"
11177 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11179#line 11180 "parse.c"
11182 case YYSYMBOL_dot_or_colon:
11183#line 2626 "parse.y"
11185 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11187#line 11188 "parse.c"
11190 case YYSYMBOL_call_op:
11191#line 2626 "parse.y"
11193 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11195#line 11196 "parse.c"
11198 case YYSYMBOL_call_op2:
11199#line 2626 "parse.y"
11201 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11203#line 11204 "parse.c"
11206 case YYSYMBOL_none:
11207#line 2617 "parse.y"
11209 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11210 rb_parser_printf(p,
"NODE_SPECIAL");
11212 else if (((*yyvaluep).node)) {
11213 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11216#line 11217 "parse.c"
11222 YY_IGNORE_MAYBE_UNINITIALIZED_END
11231yy_symbol_print (
FILE *yyo,
11234 YYFPRINTF (yyo,
"%s %s (",
11235 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
11237 YYLOCATION_PRINT (yyo, yylocationp, p);
11238 YYFPRINTF (yyo,
": ");
11239 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
11240 YYFPRINTF (yyo,
")");
11249yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop,
struct parser_params *p)
11251 YYFPRINTF (stderr,
"Stack now");
11252 for (; yybottom <= yytop; yybottom++)
11254 int yybot = *yybottom;
11255 YYFPRINTF (stderr,
" %d", yybot);
11257 YYFPRINTF (stderr,
"\n");
11260# define YY_STACK_PRINT(Bottom, Top, p) \
11263 yy_stack_print ((Bottom), (Top), p); \
11272yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp,
YYLTYPE *yylsp,
11275 int yylno = yyrline[yyrule];
11276 int yynrhs = yyr2[yyrule];
11278 YYFPRINTF (stderr,
"Reducing stack by rule %d (line %d):\n",
11279 yyrule - 1, yylno);
11281 for (yyi = 0; yyi < yynrhs; yyi++)
11283 YYFPRINTF (stderr,
" $%d = ", yyi + 1);
11284 yy_symbol_print (stderr,
11285 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
11286 &yyvsp[(yyi + 1) - (yynrhs)],
11287 &(yylsp[(yyi + 1) - (yynrhs)]), p);
11288 YYFPRINTF (stderr,
"\n");
11292# define YY_REDUCE_PRINT(Rule, p) \
11295 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
11304# define YYDPRINTF(Args) ((void) 0)
11305# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p)
11306# define YY_STACK_PRINT(Bottom, Top, p)
11307# define YY_REDUCE_PRINT(Rule, p)
11313# define YYINITDEPTH 200
11324# define YYMAXDEPTH 10000
11332 yysymbol_kind_t yytoken;
11344 yysymbol_kind_t yyarg[],
int yyargn)
11348 int yyn = yypact[+*yyctx->yyssp];
11349 if (!yypact_value_is_default (yyn))
11354 int yyxbegin = yyn < 0 ? -yyn : 0;
11356 int yychecklim = YYLAST - yyn + 1;
11357 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
11359 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
11360 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
11361 && !yytable_value_is_error (yytable[yyx + yyn]))
11365 else if (yycount == yyargn)
11368 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
11371 if (yyarg && yycount == 0 && 0 < yyargn)
11372 yyarg[0] = YYSYMBOL_YYEMPTY;
11380# if defined __GLIBC__ && defined _STRING_H
11381# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
11385yystrlen (
const char *yystr)
11388 for (yylen = 0; yystr[yylen]; yylen++)
11396# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
11397# define yystpcpy stpcpy
11402yystpcpy (
char *yydest,
const char *yysrc)
11404 char *yyd = yydest;
11405 const char *yys = yysrc;
11407 while ((*yyd++ = *yys++) !=
'\0')
11424yytnamerr (
char *yyres,
const char *yystr)
11428 YYPTRDIFF_T yyn = 0;
11429 char const *yyp = yystr;
11435 goto do_not_strip_quotes;
11438 if (*++yyp !=
'\\')
11439 goto do_not_strip_quotes;
11455 do_not_strip_quotes: ;
11459 return yystpcpy (yyres, yystr) - yyres;
11461 return yystrlen (yystr);
11468 yysymbol_kind_t yyarg[],
int yyargn)
11495 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
11499 yyarg[yycount] = yyctx->yytoken;
11501 yyn = yypcontext_expected_tokens (yyctx,
11502 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
11503 if (yyn == YYENOMEM)
11520yysyntax_error (YYPTRDIFF_T *yymsg_alloc,
char **yymsg,
11523 enum { YYARGS_MAX = 5 };
11525 const char *yyformat = YY_NULLPTR;
11528 yysymbol_kind_t yyarg[YYARGS_MAX];
11530 YYPTRDIFF_T yysize = 0;
11533 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
11534 if (yycount == YYENOMEM)
11539#define YYCASE_(N, S) \
11544 YYCASE_(0, YY_(
"syntax error"));
11545 YYCASE_(1, YY_(
"syntax error, unexpected %s"));
11546 YYCASE_(2, YY_(
"syntax error, unexpected %s, expecting %s"));
11547 YYCASE_(3, YY_(
"syntax error, unexpected %s, expecting %s or %s"));
11548 YYCASE_(4, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
11549 YYCASE_(5, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
11555 yysize = yystrlen (yyformat) - 2 * yycount + 1;
11558 for (yyi = 0; yyi < yycount; ++yyi)
11560 YYPTRDIFF_T yysize1
11561 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
11562 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
11569 if (*yymsg_alloc < yysize)
11571 *yymsg_alloc = 2 * yysize;
11572 if (! (yysize <= *yymsg_alloc
11573 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
11574 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
11582 char *yyp = *yymsg;
11584 while ((*yyp = *yyformat) !=
'\0')
11585 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
11587 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
11605yydestruct (
const char *yymsg,
11609 YY_USE (yylocationp);
11612 yymsg =
"Deleting";
11613 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp, p);
11615 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
11618 case YYSYMBOL_258_16:
11619#line 2654 "parse.y"
11621 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11623#line 11624 "parse.c"
11626 case YYSYMBOL_259_17:
11627#line 2654 "parse.y"
11629 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11631#line 11632 "parse.c"
11637 YY_IGNORE_MAYBE_UNINITIALIZED_END
11660static const YYSTYPE yyval_default = {};
11661(void) yyval_default;
11663YY_INITIAL_VALUE (
static const YYSTYPE yyval_default;)
11665YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
11668static const YYLTYPE yyloc_default
11669# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
11673YYLTYPE yylloc = yyloc_default;
11679 yy_state_fast_t yystate = 0;
11681 int yyerrstatus = 0;
11687 YYPTRDIFF_T yystacksize = YYINITDEPTH;
11690 yy_state_t yyssa[YYINITDEPTH];
11691 yy_state_t *yyss = yyssa;
11692 yy_state_t *yyssp = yyss;
11708 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
11718 char yymsgbuf[128];
11719 char *yymsg = yymsgbuf;
11720 YYPTRDIFF_T yymsg_alloc =
sizeof yymsgbuf;
11722#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
11728 YYDPRINTF ((stderr,
"Starting parse\n"));
11734#line 2661 "parse.y"
11736 RUBY_SET_YYLLOC_OF_NONE(yylloc);
11739#line 11740 "parse.c"
11758 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
11759 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
11760 YY_IGNORE_USELESS_CAST_BEGIN
11761 *yyssp = YY_CAST (yy_state_t, yystate);
11762 YY_IGNORE_USELESS_CAST_END
11763 YY_STACK_PRINT (yyss, yyssp, p);
11765 if (yyss + yystacksize - 1 <= yyssp)
11766#if !defined yyoverflow && !defined YYSTACK_RELOCATE
11771 YYPTRDIFF_T yysize = yyssp - yyss + 1;
11773# if defined yyoverflow
11778 yy_state_t *yyss1 = yyss;
11786 yyoverflow (YY_(
"memory exhausted"),
11787 &yyss1, yysize * YYSIZEOF (*yyssp),
11788 &yyvs1, yysize * YYSIZEOF (*yyvsp),
11789 &yyls1, yysize * YYSIZEOF (*yylsp),
11797 if (YYMAXDEPTH <= yystacksize)
11800 if (YYMAXDEPTH < yystacksize)
11801 yystacksize = YYMAXDEPTH;
11804 yy_state_t *yyss1 = yyss;
11805 union yyalloc *yyptr =
11806 YY_CAST (
union yyalloc *,
11807 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
11810 YYSTACK_RELOCATE (yyss_alloc, yyss);
11811 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
11812 YYSTACK_RELOCATE (yyls_alloc, yyls);
11813# undef YYSTACK_RELOCATE
11814 if (yyss1 != yyssa)
11815 YYSTACK_FREE (yyss1);
11819 yyssp = yyss + yysize - 1;
11820 yyvsp = yyvs + yysize - 1;
11821 yylsp = yyls + yysize - 1;
11823 YY_IGNORE_USELESS_CAST_BEGIN
11824 YYDPRINTF ((stderr,
"Stack size increased to %ld\n",
11825 YY_CAST (
long, yystacksize)));
11826 YY_IGNORE_USELESS_CAST_END
11828 if (yyss + yystacksize - 1 <= yyssp)
11834 if (yystate == YYFINAL)
11848 yyn = yypact[yystate];
11849 if (yypact_value_is_default (yyn))
11855 if (yychar == YYEMPTY)
11857 YYDPRINTF ((stderr,
"Reading a token\n"));
11858 yychar = yylex (&yylval, &yylloc, p);
11861 if (yychar <= END_OF_INPUT)
11863 yychar = END_OF_INPUT;
11864 yytoken = YYSYMBOL_YYEOF;
11865 YYDPRINTF ((stderr,
"Now at end of input.\n"));
11867 else if (yychar == YYerror)
11874 yytoken = YYSYMBOL_YYerror;
11875 yyerror_range[1] = yylloc;
11880 yytoken = YYTRANSLATE (yychar);
11881 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc, p);
11887 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
11889 yyn = yytable[yyn];
11892 if (yytable_value_is_error (yyn))
11904 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc, p);
11906 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
11908 YY_IGNORE_MAYBE_UNINITIALIZED_END
11911#line 2664 "parse.y"
11913#line 11914 "parse.c"
11925 yyn = yydefact[yystate];
11946 yyval = yyvsp[1-yylen];
11948#line 2665 "parse.y"
11949 {before_reduce(yylen, p);}
11950#line 11951 "parse.c"
11954 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
11955 yyerror_range[1] = yyloc;
11956 YY_REDUCE_PRINT (yyn, p);
11960#line 3159 "parse.y"
11962 SET_LEX_STATE(EXPR_BEG);
11963 local_push(p, ifndef_ripper(1)+0);
11965 if (!ifndef_ripper(p->do_loop) + 0) init_block_exit(p);
11967#line 11968 "parse.c"
11971#line 2974 "parse.y"
11973 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
11975#line 11976 "parse.c"
11979#line 3166 "parse.y"
11981 if ((yyvsp[0].node) && !compile_for_eval) {
11982 NODE *node = (yyvsp[0].node);
11984 if (nd_type_p(node, NODE_BLOCK)) {
11985 while (RNODE_BLOCK(node)->nd_next) {
11986 node = RNODE_BLOCK(node)->nd_next;
11988 node = RNODE_BLOCK(node)->nd_head;
11990 node = remove_begin(node);
11991 void_expr(p, node);
11993 p->eval_tree = NEW_SCOPE(0, block_append(p, p->eval_tree, (yyvsp[0].node)), NULL, &(yyloc));
11997#line 11998 "parse.c"
12001#line 3186 "parse.y"
12003 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12006#line 12007 "parse.c"
12010#line 3191 "parse.y"
12012 (yyval.node) = newline_node((yyvsp[0].node));
12015#line 12016 "parse.c"
12019#line 3196 "parse.y"
12021 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12024#line 12025 "parse.c"
12028#line 3203 "parse.y"
12030 clear_block_exit(p,
true);
12031 (yyval.node) = (yyvsp[0].node);
12033#line 12034 "parse.c"
12037#line 3208 "parse.y"
12039 (yyval.node) = (yyvsp[0].node);
12042#line 12043 "parse.c"
12046#line 3214 "parse.y"
12047 {(yyval.node_exits) = init_block_exit(p);}
12048#line 12049 "parse.c"
12052#line 3217 "parse.y"
12054 restore_block_exit(p, (yyvsp[-2].node_exits));
12055 p->eval_tree_begin = block_append(p, p->eval_tree_begin,
12056 NEW_BEGIN((yyvsp[-1].node), &(yyloc)));
12057 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12060#line 12061 "parse.c"
12064#line 2974 "parse.y"
12066 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
12068#line 12069 "parse.c"
12072#line 3230 "parse.y"
12074 if (!(yyvsp[-1].node)) yyerror1(&(yylsp[0]),
"else without rescue is useless");
12075 next_rescue_context(&p->ctxt, &(yyvsp[-2].ctxt), after_else);
12077#line 12078 "parse.c"
12081#line 3235 "parse.y"
12083 next_rescue_context(&p->ctxt, &(yyvsp[-4].ctxt), after_ensure);
12085#line 12086 "parse.c"
12089#line 3239 "parse.y"
12091 (yyval.node) = new_bodystmt(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12094#line 12095 "parse.c"
12098#line 3246 "parse.y"
12100 next_rescue_context(&p->ctxt, &(yyvsp[-1].ctxt), after_ensure);
12102#line 12103 "parse.c"
12106#line 3250 "parse.y"
12108 (yyval.node) = new_bodystmt(p, (yyvsp[-4].node), (yyvsp[-2].node), 0, (yyvsp[0].node), &(yyloc));
12111#line 12112 "parse.c"
12115#line 3257 "parse.y"
12117 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12120#line 12121 "parse.c"
12124#line 3262 "parse.y"
12126 (yyval.node) = newline_node((yyvsp[0].node));
12129#line 12130 "parse.c"
12133#line 3267 "parse.y"
12135 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12138#line 12139 "parse.c"
12142#line 3275 "parse.y"
12144 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
12146#line 12147 "parse.c"
12150#line 3279 "parse.y"
12152 (yyval.node) = (yyvsp[0].node);
12154#line 12155 "parse.c"
12158#line 3284 "parse.y"
12159 {(yyval.node_exits) = allow_block_exit(p);}
12160#line 12161 "parse.c"
12164#line 3287 "parse.y"
12166 (yyval.ctxt) = (yyvsp[0].ctxt);
12167 p->ctxt.in_rescue = before_rescue;
12170#line 12171 "parse.c"
12174#line 3293 "parse.y"
12175 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
12176#line 12177 "parse.c"
12180#line 3294 "parse.y"
12182 (yyval.node) = NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
12185#line 12186 "parse.c"
12189#line 3299 "parse.y"
12191 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].id), &(yyloc), &(yylsp[-2]));
12194#line 12195 "parse.c"
12198#line 3304 "parse.y"
12202 buf[1] = (char)RNODE_BACK_REF((yyvsp[0].node))->nd_nth;
12203 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), rb_intern2(buf, 2), &(yyloc), &(yylsp[-2]));
12206#line 12207 "parse.c"
12210#line 3312 "parse.y"
12212 static const char mesg[] =
"can't make alias for the number variables";
12214 yyerror1(&(yylsp[0]), mesg);
12216 (yyval.node) = NEW_ERROR(&(yyloc));
12219#line 12220 "parse.c"
12223#line 3321 "parse.y"
12225 nd_set_first_loc((yyvsp[0].node), (yylsp[-1]).beg_pos);
12226 RNODE_UNDEF((yyvsp[0].node))->keyword_loc = (yylsp[-1]);
12227 (yyval.node) = (yyvsp[0].node);
12230#line 12231 "parse.c"
12234#line 3328 "parse.y"
12236 (yyval.node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12237 fixpos((yyval.node), (yyvsp[0].node));
12240#line 12241 "parse.c"
12244#line 3334 "parse.y"
12246 (yyval.node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12247 fixpos((yyval.node), (yyvsp[0].node));
12250#line 12251 "parse.c"
12254#line 3340 "parse.y"
12256 clear_block_exit(p,
false);
12257 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12258 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12261 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12265#line 12266 "parse.c"
12269#line 3351 "parse.y"
12271 clear_block_exit(p,
false);
12272 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12273 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12276 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12280#line 12281 "parse.c"
12284#line 3362 "parse.y"
12286 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12288 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12289 resq = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12290 (yyval.node) = NEW_RESCUE(remove_begin((yyvsp[-3].node)), resq, 0, &(yyloc));
12293#line 12294 "parse.c"
12297#line 3371 "parse.y"
12299 if (p->ctxt.in_def) {
12300 rb_warn0(
"END in method; use at_exit");
12302 restore_block_exit(p, (yyvsp[-3].node_exits));
12303 p->ctxt = (yyvsp[-4].ctxt);
12305 NODE *scope = NEW_SCOPE2(0 , 0 , (yyvsp[-1].node) , NULL , &(yyloc));
12306 (yyval.node) = NEW_POSTEXE(scope, &(yyloc), &(yylsp[-4]), &(yylsp[-2]), &(yylsp[0]));
12307 RNODE_SCOPE(scope)->nd_parent = (yyval.node);
12311#line 12312 "parse.c"
12315#line 3386 "parse.y"
12317 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12320#line 12321 "parse.c"
12324#line 2919 "parse.y"
12326 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12329#line 12330 "parse.c"
12333#line 3393 "parse.y"
12335 p->ctxt.in_rescue = (yyvsp[-4].ctxt).in_rescue;
12336 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12337 (yyvsp[0].node) = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12338 loc.beg_pos = (yylsp[-3]).beg_pos;
12339 (yyvsp[-3].node) = NEW_RESCUE((yyvsp[-3].node), (yyvsp[0].node), 0, &loc);
12340 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-6].node_masgn), (yyvsp[-3].node), (yyvsp[-4].ctxt), &(yyloc));
12343#line 12344 "parse.c"
12347#line 3403 "parse.y"
12349 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12352#line 12353 "parse.c"
12356#line 3409 "parse.y"
12359 (yyval.node) = NEW_ERROR(&(yyloc));
12361#line 12362 "parse.c"
12365#line 2919 "parse.y"
12367 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12370#line 12371 "parse.c"
12374#line 3044 "parse.y"
12376 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12379#line 12380 "parse.c"
12383#line 3049 "parse.y"
12385 (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]));
12388#line 12389 "parse.c"
12392#line 3054 "parse.y"
12394 (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]));
12397#line 12398 "parse.c"
12401#line 3059 "parse.y"
12403 (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]));
12406#line 12407 "parse.c"
12410#line 3064 "parse.y"
12412 (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]));
12415#line 12416 "parse.c"
12419#line 3069 "parse.y"
12421 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
12422 (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));
12425#line 12426 "parse.c"
12429#line 3075 "parse.y"
12431 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
12432 (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));
12435#line 12436 "parse.c"
12439#line 3081 "parse.y"
12441 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
12442 (yyval.node) = NEW_ERROR(&(yyloc));
12445#line 12446 "parse.c"
12449#line 2949 "parse.y"
12451 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12452 restore_defun(p, (yyvsp[-3].node_def_temp));
12453 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12454 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
12455 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
12460#line 12461 "parse.c"
12464#line 2960 "parse.y"
12466 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12467 restore_defun(p, (yyvsp[-3].node_def_temp));
12468 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12469 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
12470 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
12475#line 12476 "parse.c"
12479#line 3422 "parse.y"
12481 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12482 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12485#line 12486 "parse.c"
12489#line 3428 "parse.y"
12491 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12494#line 12495 "parse.c"
12498#line 3436 "parse.y"
12500 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12501 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12502 (yyval.node) = NEW_RESCUE((yyvsp[-3].node), NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc));
12505#line 12506 "parse.c"
12509#line 3447 "parse.y"
12511 (yyval.node) = logop(p, idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12514#line 12515 "parse.c"
12518#line 3452 "parse.y"
12520 (yyval.node) = logop(p, idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12523#line 12524 "parse.c"
12527#line 3457 "parse.y"
12529 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12532#line 12533 "parse.c"
12536#line 3462 "parse.y"
12538 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
12541#line 12542 "parse.c"
12545#line 3467 "parse.y"
12547 value_expr(p, (yyvsp[-1].node));
12549#line 12550 "parse.c"
12553#line 3472 "parse.y"
12555 pop_pktbl(p, (yyvsp[-1].tbl));
12556 pop_pvtbl(p, (yyvsp[-2].tbl));
12557 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12558 p->ctxt.in_alt_pattern = (yyvsp[-3].ctxt).in_alt_pattern;
12559 p->ctxt.capture_in_pattern = (yyvsp[-3].ctxt).capture_in_pattern;
12560 (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);
12563#line 12564 "parse.c"
12567#line 3482 "parse.y"
12569 value_expr(p, (yyvsp[-1].node));
12571#line 12572 "parse.c"
12575#line 3487 "parse.y"
12577 pop_pktbl(p, (yyvsp[-1].tbl));
12578 pop_pvtbl(p, (yyvsp[-2].tbl));
12579 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12580 p->ctxt.in_alt_pattern = (yyvsp[-3].ctxt).in_alt_pattern;
12581 p->ctxt.capture_in_pattern = (yyvsp[-3].ctxt).capture_in_pattern;
12582 (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);
12585#line 12586 "parse.c"
12589#line 3500 "parse.y"
12591 numparam_name(p, (yyvsp[0].
id));
12593 p->ctxt.in_def = 1;
12594 p->ctxt.in_rescue = before_rescue;
12595 p->ctxt.cant_return = 0;
12596 (yyval.id) = (yyvsp[0].
id);
12598#line 12599 "parse.c"
12602#line 3511 "parse.y"
12604 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-1].node_def_temp));
12605 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12606 (yyval.node_def_temp)->nd_def = NEW_DEFN((yyvsp[0].
id), 0, &(yyloc));
12609#line 12610 "parse.c"
12613#line 3520 "parse.y"
12615 SET_LEX_STATE(EXPR_FNAME);
12617#line 12618 "parse.c"
12621#line 3524 "parse.y"
12623 SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL);
12624 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-4].node_def_temp));
12625 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12626 (yyval.node_def_temp)->nd_def = NEW_DEFS((yyvsp[-3].node), (yyvsp[0].id), 0, &(yyloc));
12629#line 12630 "parse.c"
12633#line 3144 "parse.y"
12635 value_expr(p, (yyvsp[0].node));
12636 (yyval.node) = (yyvsp[0].node);
12638#line 12639 "parse.c"
12642#line 3535 "parse.y"
12644 (yyval.node) = NEW_ERROR(&(yyloc));
12646#line 12647 "parse.c"
12650#line 3540 "parse.y"
12652#line 12653 "parse.c"
12656#line 3540 "parse.y"
12658#line 12659 "parse.c"
12662#line 3541 "parse.y"
12664 (yyval.node) = (yyvsp[-2].node);
12667#line 12668 "parse.c"
12671#line 3144 "parse.y"
12673 value_expr(p, (yyvsp[0].node));
12674 (yyval.node) = (yyvsp[0].node);
12676#line 12677 "parse.c"
12680#line 3556 "parse.y"
12682 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12685#line 12686 "parse.c"
12689#line 3563 "parse.y"
12691 (yyval.node) = (yyvsp[-1].node);
12692 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
12695#line 12696 "parse.c"
12699#line 3571 "parse.y"
12701 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
12704#line 12705 "parse.c"
12708#line 3571 "parse.y"
12710 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
12713#line 12714 "parse.c"
12717#line 3571 "parse.y"
12719 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
12722#line 12723 "parse.c"
12726#line 3578 "parse.y"
12728 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
12729 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
12730 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
12733#line 12734 "parse.c"
12737#line 3585 "parse.y"
12739 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
12740 (yyvsp[-2].node_fcall)->nd_args = (yyvsp[-1].node);
12741 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-2].node_fcall), (yyvsp[0].node), &(yyloc));
12742 fixpos((yyval.node), RNODE((yyvsp[-2].node_fcall)));
12743 nd_set_last_loc((yyvsp[-2].node_fcall), (yylsp[-1]).end_pos);
12746#line 12747 "parse.c"
12750#line 3594 "parse.y"
12752 (yyval.node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
12755#line 12756 "parse.c"
12759#line 3599 "parse.y"
12761 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
12764#line 12765 "parse.c"
12768#line 3604 "parse.y"
12770 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
12773#line 12774 "parse.c"
12777#line 3609 "parse.y"
12779 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-4].node), (yyvsp[-2].id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
12782#line 12783 "parse.c"
12786#line 3614 "parse.y"
12788 set_embraced_location((yyvsp[-1].node), &(yylsp[-2]), &(yylsp[0]));
12789 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-5].node), (yyvsp[-3].id), 0, (yyvsp[-1].node), &(yylsp[-3]), &(yyloc));
12792#line 12793 "parse.c"
12796#line 3620 "parse.y"
12798 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12799 fixpos((yyval.node), (yyvsp[0].node));
12802#line 12803 "parse.c"
12806#line 3626 "parse.y"
12808 (yyval.node) = NEW_YIELD((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12809 fixpos((yyval.node), (yyvsp[0].node));
12812#line 12813 "parse.c"
12816#line 3632 "parse.y"
12818 (yyval.node) = NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc), &(yylsp[-1]));
12821#line 12822 "parse.c"
12825#line 3637 "parse.y"
12828 args = ret_args(p, (yyvsp[0].node));
12829 (yyval.node) = add_block_exit(p, NEW_BREAK(args, &(yyloc), &(yylsp[-1])));
12832#line 12833 "parse.c"
12836#line 3644 "parse.y"
12839 args = ret_args(p, (yyvsp[0].node));
12840 (yyval.node) = add_block_exit(p, NEW_NEXT(args, &(yyloc), &(yylsp[-1])));
12843#line 12844 "parse.c"
12847#line 3654 "parse.y"
12849 (yyval.node_masgn) = (yyvsp[-1].node_masgn);
12852#line 12853 "parse.c"
12856#line 3662 "parse.y"
12858 (yyval.node_masgn) = NEW_MASGN(NEW_LIST((
NODE *)(yyvsp[-1].node_masgn), &(yyloc)), 0, &(yyloc));
12861#line 12862 "parse.c"
12865#line 3669 "parse.y"
12867 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
12870#line 12871 "parse.c"
12874#line 3674 "parse.y"
12876 (yyval.node_masgn) = NEW_MASGN(list_append(p, (yyvsp[-1].node), (yyvsp[0].node)), 0, &(yyloc));
12879#line 12880 "parse.c"
12883#line 3679 "parse.y"
12885 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12888#line 12889 "parse.c"
12892#line 3031 "parse.y"
12894 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
12897#line 12898 "parse.c"
12901#line 3036 "parse.y"
12903 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
12906#line 12907 "parse.c"
12910#line 3684 "parse.y"
12912 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
12915#line 12916 "parse.c"
12919#line 3689 "parse.y"
12921 (yyval.node_masgn) = NEW_MASGN((yyvsp[-1].node), NODE_SPECIAL_NO_NAME_REST, &(yyloc));
12924#line 12925 "parse.c"
12928#line 3694 "parse.y"
12930 (yyval.node_masgn) = NEW_MASGN((yyvsp[-3].node), NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
12933#line 12934 "parse.c"
12937#line 3699 "parse.y"
12939 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
12942#line 12943 "parse.c"
12946#line 3704 "parse.y"
12948 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
12951#line 12952 "parse.c"
12955#line 3709 "parse.y"
12957 (yyval.node_masgn) = NEW_MASGN(0, NODE_SPECIAL_NO_NAME_REST, &(yyloc));
12960#line 12961 "parse.c"
12964#line 3714 "parse.y"
12966 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
12969#line 12970 "parse.c"
12973#line 3722 "parse.y"
12975 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
12978#line 12979 "parse.c"
12982#line 3729 "parse.y"
12984 (yyval.node) = NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
12987#line 12988 "parse.c"
12991#line 3734 "parse.y"
12993 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
12996#line 12997 "parse.c"
13000#line 3742 "parse.y"
13003 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13005#line 13006 "parse.c"
13009#line 3742 "parse.y"
13012 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13014#line 13015 "parse.c"
13018#line 3747 "parse.y"
13020 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13023#line 13024 "parse.c"
13027#line 3752 "parse.y"
13029 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13030 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13033#line 13034 "parse.c"
13037#line 3752 "parse.y"
13039 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13040 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13043#line 13044 "parse.c"
13047#line 3758 "parse.y"
13049 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
13052#line 13053 "parse.c"
13056#line 3763 "parse.y"
13059 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13061#line 13062 "parse.c"
13065#line 3768 "parse.y"
13068 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13070#line 13071 "parse.c"
13074#line 3773 "parse.y"
13076 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13077 (yyval.node) = NEW_ERROR(&(yyloc));
13080#line 13081 "parse.c"
13084#line 3781 "parse.y"
13087 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13089#line 13090 "parse.c"
13093#line 3781 "parse.y"
13096 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13098#line 13099 "parse.c"
13102#line 3786 "parse.y"
13104 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13107#line 13108 "parse.c"
13111#line 3791 "parse.y"
13113 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13116#line 13117 "parse.c"
13120#line 3791 "parse.y"
13122 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13125#line 13126 "parse.c"
13129#line 3796 "parse.y"
13131 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
13134#line 13135 "parse.c"
13138#line 3801 "parse.y"
13141 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13143#line 13144 "parse.c"
13147#line 3806 "parse.y"
13150 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13152#line 13153 "parse.c"
13156#line 3811 "parse.y"
13158 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13159 (yyval.node) = NEW_ERROR(&(yyloc));
13162#line 13163 "parse.c"
13166#line 3819 "parse.y"
13168 static const char mesg[] =
"class/module name must be CONSTANT";
13170 yyerror1(&(yylsp[0]), mesg);
13174#line 13175 "parse.c"
13178#line 3830 "parse.y"
13180 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
13183#line 13184 "parse.c"
13187#line 3835 "parse.y"
13189 (yyval.node) = NEW_COLON2(0, (yyvsp[0].
id), &(yyloc), &NULL_LOC, &(yylsp[0]));
13192#line 13193 "parse.c"
13196#line 3840 "parse.y"
13198 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
13201#line 13202 "parse.c"
13205#line 3848 "parse.y"
13207 SET_LEX_STATE(EXPR_ENDFN);
13208 (yyval.id) = (yyvsp[0].
id);
13210#line 13211 "parse.c"
13214#line 3856 "parse.y"
13216 (yyval.node) = NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc));
13219#line 13220 "parse.c"
13223#line 3864 "parse.y"
13225 (yyval.node) = NEW_UNDEF((yyvsp[0].node), &(yyloc));
13228#line 13229 "parse.c"
13232#line 3868 "parse.y"
13233 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
13234#line 13235 "parse.c"
13238#line 3869 "parse.y"
13240 nd_set_last_loc((yyvsp[-3].node), (yylsp[0]).end_pos);
13241 rb_parser_ary_push_node(p, RNODE_UNDEF((yyvsp[-3].node))->nd_undefs, (yyvsp[0].node));
13244#line 13245 "parse.c"
13248#line 3876 "parse.y"
13249 { (yyval.id) =
'|'; }
13250#line 13251 "parse.c"
13254#line 3877 "parse.y"
13255 { (yyval.id) =
'^'; }
13256#line 13257 "parse.c"
13260#line 3878 "parse.y"
13261 { (yyval.id) =
'&'; }
13262#line 13263 "parse.c"
13266#line 3879 "parse.y"
13267 { (yyval.id) = tCMP; }
13268#line 13269 "parse.c"
13272#line 3880 "parse.y"
13273 { (yyval.id) = tEQ; }
13274#line 13275 "parse.c"
13278#line 3881 "parse.y"
13279 { (yyval.id) = tEQQ; }
13280#line 13281 "parse.c"
13284#line 3882 "parse.y"
13285 { (yyval.id) = tMATCH; }
13286#line 13287 "parse.c"
13290#line 3883 "parse.y"
13291 { (yyval.id) = tNMATCH; }
13292#line 13293 "parse.c"
13296#line 3884 "parse.y"
13297 { (yyval.id) =
'>'; }
13298#line 13299 "parse.c"
13302#line 3885 "parse.y"
13303 { (yyval.id) = tGEQ; }
13304#line 13305 "parse.c"
13308#line 3886 "parse.y"
13309 { (yyval.id) =
'<'; }
13310#line 13311 "parse.c"
13314#line 3887 "parse.y"
13315 { (yyval.id) = tLEQ; }
13316#line 13317 "parse.c"
13320#line 3888 "parse.y"
13321 { (yyval.id) = tNEQ; }
13322#line 13323 "parse.c"
13326#line 3889 "parse.y"
13327 { (yyval.id) = tLSHFT; }
13328#line 13329 "parse.c"
13332#line 3890 "parse.y"
13333 { (yyval.id) = tRSHFT; }
13334#line 13335 "parse.c"
13338#line 3891 "parse.y"
13339 { (yyval.id) =
'+'; }
13340#line 13341 "parse.c"
13344#line 3892 "parse.y"
13345 { (yyval.id) =
'-'; }
13346#line 13347 "parse.c"
13350#line 3893 "parse.y"
13351 { (yyval.id) =
'*'; }
13352#line 13353 "parse.c"
13356#line 3894 "parse.y"
13357 { (yyval.id) =
'*'; }
13358#line 13359 "parse.c"
13362#line 3895 "parse.y"
13363 { (yyval.id) =
'/'; }
13364#line 13365 "parse.c"
13368#line 3896 "parse.y"
13369 { (yyval.id) =
'%'; }
13370#line 13371 "parse.c"
13374#line 3897 "parse.y"
13375 { (yyval.id) = tPOW; }
13376#line 13377 "parse.c"
13380#line 3898 "parse.y"
13381 { (yyval.id) = tDSTAR; }
13382#line 13383 "parse.c"
13386#line 3899 "parse.y"
13387 { (yyval.id) =
'!'; }
13388#line 13389 "parse.c"
13392#line 3900 "parse.y"
13393 { (yyval.id) =
'~'; }
13394#line 13395 "parse.c"
13398#line 3901 "parse.y"
13399 { (yyval.id) = tUPLUS; }
13400#line 13401 "parse.c"
13404#line 3902 "parse.y"
13405 { (yyval.id) = tUMINUS; }
13406#line 13407 "parse.c"
13410#line 3903 "parse.y"
13411 { (yyval.id) = tAREF; }
13412#line 13413 "parse.c"
13416#line 3904 "parse.y"
13417 { (yyval.id) = tASET; }
13418#line 13419 "parse.c"
13422#line 3905 "parse.y"
13423 { (yyval.id) =
'`'; }
13424#line 13425 "parse.c"
13428#line 2919 "parse.y"
13430 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13433#line 13434 "parse.c"
13437#line 3044 "parse.y"
13439 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13442#line 13443 "parse.c"
13446#line 3049 "parse.y"
13448 (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]));
13451#line 13452 "parse.c"
13455#line 3054 "parse.y"
13457 (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]));
13460#line 13461 "parse.c"
13464#line 3059 "parse.y"
13466 (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]));
13469#line 13470 "parse.c"
13473#line 3064 "parse.y"
13475 (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]));
13478#line 13479 "parse.c"
13482#line 3069 "parse.y"
13484 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
13485 (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));
13488#line 13489 "parse.c"
13492#line 3075 "parse.y"
13494 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
13495 (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));
13498#line 13499 "parse.c"
13502#line 3081 "parse.y"
13504 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
13505 (yyval.node) = NEW_ERROR(&(yyloc));
13508#line 13509 "parse.c"
13512#line 3103 "parse.y"
13514 value_expr(p, (yyvsp[-2].node));
13515 value_expr(p, (yyvsp[0].node));
13516 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13519#line 13520 "parse.c"
13523#line 3110 "parse.y"
13525 value_expr(p, (yyvsp[-2].node));
13526 value_expr(p, (yyvsp[0].node));
13527 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13530#line 13531 "parse.c"
13534#line 3117 "parse.y"
13536 value_expr(p, (yyvsp[-1].node));
13537 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13540#line 13541 "parse.c"
13544#line 3123 "parse.y"
13546 value_expr(p, (yyvsp[-1].node));
13547 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13550#line 13551 "parse.c"
13554#line 3129 "parse.y"
13556 value_expr(p, (yyvsp[0].node));
13557 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13560#line 13561 "parse.c"
13564#line 3135 "parse.y"
13566 value_expr(p, (yyvsp[0].node));
13567 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13570#line 13571 "parse.c"
13574#line 3926 "parse.y"
13576 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13579#line 13580 "parse.c"
13583#line 3931 "parse.y"
13585 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13588#line 13589 "parse.c"
13592#line 3936 "parse.y"
13594 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13597#line 13598 "parse.c"
13601#line 3941 "parse.y"
13603 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13606#line 13607 "parse.c"
13610#line 3946 "parse.y"
13612 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13615#line 13616 "parse.c"
13619#line 3951 "parse.y"
13621 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13624#line 13625 "parse.c"
13628#line 3956 "parse.y"
13630 (yyval.node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)), idUMinus, &(yylsp[-3]), &(yyloc));
13633#line 13634 "parse.c"
13637#line 3961 "parse.y"
13639 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUPlus, &(yylsp[-1]), &(yyloc));
13642#line 13643 "parse.c"
13646#line 3966 "parse.y"
13648 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUMinus, &(yylsp[-1]), &(yyloc));
13651#line 13652 "parse.c"
13655#line 3971 "parse.y"
13657 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13660#line 13661 "parse.c"
13664#line 3976 "parse.y"
13666 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13669#line 13670 "parse.c"
13673#line 3981 "parse.y"
13675 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13678#line 13679 "parse.c"
13682#line 3986 "parse.y"
13684 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13687#line 13688 "parse.c"
13691#line 3992 "parse.y"
13693 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13696#line 13697 "parse.c"
13700#line 3997 "parse.y"
13702 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13705#line 13706 "parse.c"
13709#line 4002 "parse.y"
13711 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13714#line 13715 "parse.c"
13718#line 4007 "parse.y"
13720 (yyval.node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13723#line 13724 "parse.c"
13727#line 4012 "parse.y"
13729 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13732#line 13733 "parse.c"
13736#line 4017 "parse.y"
13738 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
13741#line 13742 "parse.c"
13745#line 4022 "parse.y"
13747 (yyval.node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
13750#line 13751 "parse.c"
13754#line 4027 "parse.y"
13756 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13759#line 13760 "parse.c"
13763#line 4032 "parse.y"
13765 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13768#line 13769 "parse.c"
13772#line 4037 "parse.y"
13774 (yyval.node) = logop(p, idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13777#line 13778 "parse.c"
13781#line 4042 "parse.y"
13783 (yyval.node) = logop(p, idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13786#line 13787 "parse.c"
13790#line 4047 "parse.y"
13792 p->ctxt.in_defined = (yyvsp[-1].ctxt).in_defined;
13793 (yyval.node) = new_defined(p, (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
13794 p->ctxt.has_trailing_semicolon = (yyvsp[-1].ctxt).has_trailing_semicolon;
13797#line 13798 "parse.c"
13801#line 2949 "parse.y"
13803 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
13804 restore_defun(p, (yyvsp[-3].node_def_temp));
13805 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
13806 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
13807 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
13812#line 13813 "parse.c"
13816#line 2960 "parse.y"
13818 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
13819 restore_defun(p, (yyvsp[-3].node_def_temp));
13820 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
13821 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
13822 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
13827#line 13828 "parse.c"
13831#line 4059 "parse.y"
13833 value_expr(p, (yyvsp[-5].node));
13834 (yyval.node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc), &NULL_LOC, &(yylsp[-1]), &NULL_LOC);
13835 fixpos((yyval.node), (yyvsp[-5].node));
13838#line 13839 "parse.c"
13842#line 4069 "parse.y"
13844 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
13845 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
13848#line 13849 "parse.c"
13852#line 4075 "parse.y"
13854 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
13857#line 13858 "parse.c"
13861#line 4081 "parse.y"
13862 {(yyval.id) =
'>';}
13863#line 13864 "parse.c"
13867#line 4082 "parse.y"
13868 {(yyval.id) =
'<';}
13869#line 13870 "parse.c"
13873#line 4083 "parse.y"
13874 {(yyval.id) = idGE;}
13875#line 13876 "parse.c"
13879#line 4084 "parse.y"
13880 {(yyval.id) = idLE;}
13881#line 13882 "parse.c"
13885#line 4088 "parse.y"
13887 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13890#line 13891 "parse.c"
13894#line 4093 "parse.y"
13896 rb_warning1(
"comparison '%s' after comparison", WARN_ID((yyvsp[-1].
id)));
13897 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13900#line 13901 "parse.c"
13904#line 4101 "parse.y"
13906 (yyval.ctxt) = p->ctxt;
13908#line 13909 "parse.c"
13912#line 4107 "parse.y"
13914 p->ctxt.in_defined = 1;
13915 (yyval.ctxt) = (yyvsp[0].ctxt);
13917#line 13918 "parse.c"
13921#line 4114 "parse.y"
13923 p->ctxt.in_rescue = after_rescue;
13924 (yyval.ctxt) = (yyvsp[0].ctxt);
13926#line 13927 "parse.c"
13930#line 3144 "parse.y"
13932 value_expr(p, (yyvsp[0].node));
13933 (yyval.node) = (yyvsp[0].node);
13935#line 13936 "parse.c"
13939#line 4126 "parse.y"
13941 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
13944#line 13945 "parse.c"
13948#line 4131 "parse.y"
13950 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
13953#line 13954 "parse.c"
13957#line 4138 "parse.y"
13959 value_expr(p, (yyvsp[0].node));
13960 (yyval.node) = (yyvsp[0].node);
13962#line 13963 "parse.c"
13966#line 4143 "parse.y"
13968 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
13969 value_expr(p, (yyvsp[-3].node));
13970 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
13973#line 13974 "parse.c"
13977#line 4152 "parse.y"
13979 (yyval.node) = (yyvsp[-1].node);
13982#line 13983 "parse.c"
13986#line 4157 "parse.y"
13988 if (!check_forwarding_args(p)) {
13992 (yyval.node) = new_args_forward_call(p, (yyvsp[-3].node), &(yylsp[-1]), &(yyloc));
13996#line 13997 "parse.c"
14000#line 4167 "parse.y"
14002 if (!check_forwarding_args(p)) {
14006 (yyval.node) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
14010#line 14011 "parse.c"
14014#line 4180 "parse.y"
14016 (yyval.node) = (yyvsp[0].node) ? (yyvsp[0].node) : NODE_SPECIAL_EMPTY_ARGS;
14018#line 14019 "parse.c"
14022#line 4189 "parse.y"
14024 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14027#line 14028 "parse.c"
14031#line 4194 "parse.y"
14033 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14036#line 14037 "parse.c"
14040#line 3144 "parse.y"
14042 value_expr(p, (yyvsp[0].node));
14043 (yyval.node) = (yyvsp[0].node);
14045#line 14046 "parse.c"
14049#line 4201 "parse.y"
14051 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14054#line 14055 "parse.c"
14058#line 4206 "parse.y"
14060 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14063#line 14064 "parse.c"
14067#line 4211 "parse.y"
14069 (yyval.node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node_block_pass));
14072#line 14073 "parse.c"
14076#line 4216 "parse.y"
14078 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14079 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14082#line 14083 "parse.c"
14086#line 4222 "parse.y"
14088 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14089 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14092#line 14093 "parse.c"
14096#line 4231 "parse.y"
14107 case '(':
case tLPAREN:
case tLPAREN_ARG:
case '[':
case tLBRACK:
14110 if (lookahead) CMDARG_POP();
14112 if (lookahead) CMDARG_PUSH(0);
14114#line 14115 "parse.c"
14118#line 4249 "parse.y"
14131 if (lookahead) CMDARG_POP();
14133 if (lookahead) CMDARG_PUSH(0);
14134 (yyval.node) = (yyvsp[0].node);
14137#line 14138 "parse.c"
14141#line 4270 "parse.y"
14143 (yyval.node_block_pass) = NEW_BLOCK_PASS((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14146#line 14147 "parse.c"
14150#line 4275 "parse.y"
14152 forwarding_arg_check(p, idFWD_BLOCK, idFWD_ALL,
"block");
14153 (yyval.node_block_pass) = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14156#line 14157 "parse.c"
14160#line 4283 "parse.y"
14162 (yyval.node_block_pass) = (yyvsp[0].node_block_pass);
14165#line 14166 "parse.c"
14169#line 4288 "parse.y"
14171 (yyval.node_block_pass) = 0;
14174#line 14175 "parse.c"
14178#line 4296 "parse.y"
14180 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14183#line 14184 "parse.c"
14187#line 4301 "parse.y"
14189 (yyval.node) = (yyvsp[0].node);
14192#line 14193 "parse.c"
14196#line 4306 "parse.y"
14198 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14201#line 14202 "parse.c"
14205#line 4311 "parse.y"
14207 (yyval.node) = rest_arg_append(p, (yyvsp[-2].node), RNODE_SPLAT((yyvsp[0].node))->nd_head, &(yyloc));
14210#line 14211 "parse.c"
14214#line 4319 "parse.y"
14216 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14219#line 14220 "parse.c"
14223#line 4324 "parse.y"
14225 forwarding_arg_check(p, idFWD_REST, idFWD_ALL,
"rest");
14226 (yyval.node) = NEW_SPLAT(NEW_LVAR(idFWD_REST, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14229#line 14230 "parse.c"
14233#line 4338 "parse.y"
14235 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14238#line 14239 "parse.c"
14242#line 4343 "parse.y"
14244 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
14247#line 14248 "parse.c"
14251#line 4348 "parse.y"
14253 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14256#line 14257 "parse.c"
14260#line 4369 "parse.y"
14262 (yyval.node) = (
NODE *)NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
14265#line 14266 "parse.c"
14269#line 4374 "parse.y"
14273#line 14274 "parse.c"
14277#line 4379 "parse.y"
14280 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14281 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
14282 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14285#line 14286 "parse.c"
14289#line 4386 "parse.y"
14290 {SET_LEX_STATE(EXPR_ENDARG);}
14291#line 14292 "parse.c"
14295#line 4387 "parse.y"
14297 if (nd_type_p((yyvsp[-2].node), NODE_SELF)) RNODE_SELF((yyvsp[-2].node))->nd_state = 0;
14298 (yyval.node) = (yyvsp[-2].node);
14301#line 14302 "parse.c"
14305#line 4393 "parse.y"
14307 if (nd_type_p((yyvsp[-1].node), NODE_SELF)) RNODE_SELF((yyvsp[-1].node))->nd_state = 0;
14308 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
14311#line 14312 "parse.c"
14315#line 4399 "parse.y"
14317 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
14320#line 14321 "parse.c"
14324#line 4404 "parse.y"
14326 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
14329#line 14330 "parse.c"
14333#line 4409 "parse.y"
14335 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14338#line 14339 "parse.c"
14342#line 4414 "parse.y"
14344 (yyval.node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
14345 RNODE_HASH((yyval.node))->nd_brace = TRUE;
14348#line 14349 "parse.c"
14352#line 4420 "parse.y"
14354 (yyval.node) = NEW_RETURN(0, &(yyloc), &(yylsp[0]));
14357#line 14358 "parse.c"
14361#line 4425 "parse.y"
14363 (yyval.node) = NEW_YIELD((yyvsp[-1].node), &(yyloc), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14366#line 14367 "parse.c"
14370#line 4430 "parse.y"
14372 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
14375#line 14376 "parse.c"
14379#line 4435 "parse.y"
14381 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[0]), &NULL_LOC, &NULL_LOC);
14384#line 14385 "parse.c"
14388#line 4440 "parse.y"
14390 p->ctxt.in_defined = (yyvsp[-2].ctxt).in_defined;
14391 (yyval.node) = new_defined(p, (yyvsp[-1].node), &(yyloc), &(yylsp[-5]));
14392 p->ctxt.has_trailing_semicolon = (yyvsp[-2].ctxt).has_trailing_semicolon;
14395#line 14396 "parse.c"
14399#line 4447 "parse.y"
14401 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])), METHOD_NOT, &(yylsp[-3]), &(yyloc));
14404#line 14405 "parse.c"
14408#line 4452 "parse.y"
14410 (yyval.node) = call_uni_op(p, method_cond(p, NEW_NIL(&(yylsp[-1])), &(yylsp[-1])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
14413#line 14414 "parse.c"
14417#line 4457 "parse.y"
14419 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-1].node_fcall), (yyvsp[0].node), &(yyloc));
14422#line 14423 "parse.c"
14426#line 4463 "parse.y"
14428 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
14429 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14432#line 14433 "parse.c"
14436#line 4473 "parse.y"
14438 if ((yyvsp[-1].node) && nd_type_p((yyvsp[-1].node), NODE_IF))
14439 RNODE_IF((yyvsp[-1].node))->end_keyword_loc = (yylsp[0]);
14441 (yyval.node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14442 fixpos((yyval.node), (yyvsp[-4].node));
14445#line 14446 "parse.c"
14449#line 4485 "parse.y"
14451 (yyval.node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14452 fixpos((yyval.node), (yyvsp[-4].node));
14455#line 14456 "parse.c"
14459#line 4493 "parse.y"
14461 restore_block_exit(p, (yyvsp[-3].node_exits));
14462 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14463 fixpos((yyval.node), (yyvsp[-2].node));
14466#line 14467 "parse.c"
14470#line 4502 "parse.y"
14472 restore_block_exit(p, (yyvsp[-3].node_exits));
14473 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14474 fixpos((yyval.node), (yyvsp[-2].node));
14477#line 14478 "parse.c"
14481#line 4509 "parse.y"
14483 (yyval.labels) = p->case_labels;
14484 p->case_labels = CHECK_LITERAL_WHEN;
14486#line 14487 "parse.c"
14490#line 4515 "parse.y"
14492 if (CASE_LABELS_ENABLED_P(p->case_labels)) st_free_table(p->case_labels);
14493 p->case_labels = (yyvsp[-2].labels);
14494 (yyval.node) = NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[0]));
14495 fixpos((yyval.node), (yyvsp[-4].node));
14498#line 14499 "parse.c"
14502#line 4523 "parse.y"
14504 (yyval.labels) = p->case_labels;
14505 p->case_labels = 0;
14507#line 14508 "parse.c"
14511#line 4529 "parse.y"
14513 if (p->case_labels) st_free_table(p->case_labels);
14514 p->case_labels = (yyvsp[-2].labels);
14515 (yyval.node) = NEW_CASE2((yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14518#line 14519 "parse.c"
14522#line 4538 "parse.y"
14524 (yyval.node) = NEW_CASE3((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14527#line 14528 "parse.c"
14531#line 4543 "parse.y"
14533#line 14534 "parse.c"
14537#line 4543 "parse.y"
14539#line 14540 "parse.c"
14543#line 4546 "parse.y"
14545 restore_block_exit(p, (yyvsp[-8].node_exits));
14555 ID id = internal_id(p);
14558 NODE *scope, *internal_var = NEW_DVAR(
id, &(yylsp[-7]));
14562 switch (nd_type((yyvsp[-7].node))) {
14565 set_nd_value(p, (yyvsp[-7].node), internal_var);
14568 m->nd_next = (yyvsp[-7].node);
14571 m->nd_next = node_assign(p, (yyvsp[-7].node), NEW_FOR_MASGN(internal_var, &(yylsp[-7])), NO_LEX_CTXT, &(yylsp[-7]));
14574 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]));
14577 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-7])), &(yylsp[-7]));
14578 scope = NEW_SCOPE2(tbl, args, (yyvsp[-1].node), NULL, &(yyloc));
14579 YYLTYPE do_keyword_loc = (yyvsp[-3].id) == keyword_do_cond ? (yylsp[-3]) : NULL_LOC;
14580 (yyval.node) = NEW_FOR((yyvsp[-4].node), scope, &(yyloc), &(yylsp[-8]), &(yylsp[-6]), &do_keyword_loc, &(yylsp[0]));
14581 RNODE_SCOPE(scope)->nd_parent = (yyval.node);
14582 fixpos((yyval.node), (yyvsp[-7].node));
14585#line 14586 "parse.c"
14589#line 4588 "parse.y"
14591 begin_definition(
"class", &(yylsp[-2]), &(yylsp[-1]));
14593#line 14594 "parse.c"
14597#line 4593 "parse.y"
14599 YYLTYPE inheritance_operator_loc = NULL_LOC;
14600 if ((yyvsp[-3].node)) {
14601 inheritance_operator_loc = (yylsp[-3]);
14602 inheritance_operator_loc.end_pos.column = inheritance_operator_loc.beg_pos.column + 1;
14604 (yyval.node) = NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc), &(yylsp[-5]), &inheritance_operator_loc, &(yylsp[0]));
14605 nd_set_line(RNODE_CLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14606 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14607 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14610 p->ctxt.in_class = (yyvsp[-5].ctxt).in_class;
14611 p->ctxt.cant_return = (yyvsp[-5].ctxt).cant_return;
14612 p->ctxt.shareable_constant_value = (yyvsp[-5].ctxt).shareable_constant_value;
14614#line 14615 "parse.c"
14618#line 4610 "parse.y"
14620 begin_definition(
"", &(yylsp[-2]), &(yylsp[-1]));
14622#line 14623 "parse.c"
14626#line 4616 "parse.y"
14628 (yyval.node) = NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-6]), &(yylsp[-5]), &(yylsp[0]));
14629 nd_set_line(RNODE_SCLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14630 set_line_body((yyvsp[-1].node), nd_line((yyvsp[-4].node)));
14631 fixpos((yyval.node), (yyvsp[-4].node));
14634 p->ctxt.in_def = (yyvsp[-6].ctxt).in_def;
14635 p->ctxt.in_class = (yyvsp[-6].ctxt).in_class;
14636 p->ctxt.cant_return = (yyvsp[-6].ctxt).cant_return;
14637 p->ctxt.shareable_constant_value = (yyvsp[-6].ctxt).shareable_constant_value;
14639#line 14640 "parse.c"
14643#line 4629 "parse.y"
14645 begin_definition(
"module", &(yylsp[-1]), &(yylsp[0]));
14647#line 14648 "parse.c"
14651#line 4634 "parse.y"
14653 (yyval.node) = NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14654 nd_set_line(RNODE_MODULE((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14655 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14656 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14659 p->ctxt.in_class = (yyvsp[-4].ctxt).in_class;
14660 p->ctxt.cant_return = (yyvsp[-4].ctxt).cant_return;
14661 p->ctxt.shareable_constant_value = (yyvsp[-4].ctxt).shareable_constant_value;
14663#line 14664 "parse.c"
14667#line 4647 "parse.y"
14669 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14671#line 14672 "parse.c"
14675#line 4652 "parse.y"
14677 restore_defun(p, (yyvsp[-4].node_def_temp));
14678 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
14679 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), (yyval.node), &(yyloc));
14680 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[-1].node);
14684#line 14685 "parse.c"
14688#line 4662 "parse.y"
14690 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14692#line 14693 "parse.c"
14696#line 4667 "parse.y"
14698 restore_defun(p, (yyvsp[-4].node_def_temp));
14699 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
14700 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), (yyval.node), &(yyloc));
14701 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[-1].node);
14705#line 14706 "parse.c"
14709#line 4676 "parse.y"
14711 (yyval.node) = add_block_exit(p, NEW_BREAK(0, &(yyloc), &(yylsp[0])));
14714#line 14715 "parse.c"
14718#line 4681 "parse.y"
14720 (yyval.node) = add_block_exit(p, NEW_NEXT(0, &(yyloc), &(yylsp[0])));
14723#line 14724 "parse.c"
14727#line 4686 "parse.y"
14729 (yyval.node) = add_block_exit(p, NEW_REDO(&(yyloc), &(yylsp[0])));
14732#line 14733 "parse.c"
14736#line 4691 "parse.y"
14738 if (!p->ctxt.in_defined) {
14739 switch (p->ctxt.in_rescue) {
14740 case before_rescue: yyerror1(&(yylsp[0]),
"Invalid retry without rescue");
break;
14741 case after_rescue:
break;
14742 case after_else: yyerror1(&(yylsp[0]),
"Invalid retry after else");
break;
14743 case after_ensure: yyerror1(&(yylsp[0]),
"Invalid retry after ensure");
break;
14746 (yyval.node) = NEW_RETRY(&(yyloc));
14749#line 14750 "parse.c"
14753#line 3144 "parse.y"
14755 value_expr(p, (yyvsp[0].node));
14756 (yyval.node) = (yyvsp[0].node);
14758#line 14759 "parse.c"
14762#line 4709 "parse.y"
14764 token_info_push(p,
"begin", &(yyloc));
14765 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14767#line 14768 "parse.c"
14771#line 4716 "parse.y"
14774 token_info_push(p,
"if", &(yyloc));
14775 if (p->token_info && p->token_info->nonspc &&
14776 p->token_info->next && !strcmp(p->token_info->next->token,
"else")) {
14778 const char *beg = p->lex.pbeg + p->token_info->next->beg.column;
14780 while (beg < tok &&
ISSPACE(*beg)) beg++;
14782 p->token_info->nonspc = 0;
14785 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14787#line 14788 "parse.c"
14791#line 4734 "parse.y"
14793 token_info_push(p,
"unless", &(yyloc));
14794 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14796#line 14797 "parse.c"
14800#line 4741 "parse.y"
14802 (yyval.node_exits) = (yyvsp[0].node_exits);
14803 token_info_push(p,
"while", &(yyloc));
14804 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14806#line 14807 "parse.c"
14810#line 4749 "parse.y"
14812 (yyval.node_exits) = (yyvsp[0].node_exits);
14813 token_info_push(p,
"until", &(yyloc));
14814 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14816#line 14817 "parse.c"
14820#line 4757 "parse.y"
14822 token_info_push(p,
"case", &(yyloc));
14823 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14825#line 14826 "parse.c"
14829#line 4764 "parse.y"
14831 (yyval.node_exits) = (yyvsp[0].node_exits);
14832 token_info_push(p,
"for", &(yyloc));
14833 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14835#line 14836 "parse.c"
14839#line 4772 "parse.y"
14841 token_info_push(p,
"class", &(yyloc));
14842 (yyval.ctxt) = p->ctxt;
14843 p->ctxt.in_rescue = before_rescue;
14844 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14846#line 14847 "parse.c"
14850#line 4781 "parse.y"
14852 token_info_push(p,
"module", &(yyloc));
14853 (yyval.ctxt) = p->ctxt;
14854 p->ctxt.in_rescue = before_rescue;
14855 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14857#line 14858 "parse.c"
14861#line 4790 "parse.y"
14863 token_info_push(p,
"def", &(yyloc));
14864 (yyval.node_def_temp) = NEW_DEF_TEMP(&(yyloc));
14865 p->ctxt.in_argdef = 1;
14867#line 14868 "parse.c"
14871#line 4798 "parse.y"
14873 token_info_push(p,
"do", &(yyloc));
14874 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14876#line 14877 "parse.c"
14880#line 4805 "parse.y"
14882 token_info_push(p,
"do", &(yyloc));
14883 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14885#line 14886 "parse.c"
14889#line 4812 "parse.y"
14891 token_info_warn(p,
"rescue", p->token_info, 1, &(yyloc));
14892 (yyval.ctxt) = p->ctxt;
14893 p->ctxt.in_rescue = after_rescue;
14895#line 14896 "parse.c"
14899#line 4820 "parse.y"
14901 token_info_warn(p,
"ensure", p->token_info, 1, &(yyloc));
14902 (yyval.ctxt) = p->ctxt;
14904#line 14905 "parse.c"
14908#line 4827 "parse.y"
14910 token_info_warn(p,
"when", p->token_info, 0, &(yyloc));
14912#line 14913 "parse.c"
14916#line 4833 "parse.y"
14919 int same = ptinfo_beg && strcmp(ptinfo_beg->token,
"case") != 0;
14920 token_info_warn(p,
"else", p->token_info, same, &(yyloc));
14923 e.next = ptinfo_beg->next;
14925 token_info_setup(&e, p->lex.pbeg, &(yyloc));
14926 if (!e.nonspc) *ptinfo_beg = e;
14929#line 14930 "parse.c"
14933#line 4848 "parse.y"
14936 token_info_warn(p,
"elsif", p->token_info, 1, &(yyloc));
14938#line 14939 "parse.c"
14942#line 4855 "parse.y"
14944 token_info_pop(p,
"end", &(yyloc));
14945 pop_end_expect_token_locations(p);
14947#line 14948 "parse.c"
14951#line 4860 "parse.y"
14953 compile_error(p,
"syntax error, unexpected end-of-input");
14955#line 14956 "parse.c"
14959#line 4866 "parse.y"
14961 if (p->ctxt.cant_return && !dyna_in_block(p))
14962 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
14964#line 14965 "parse.c"
14968#line 4873 "parse.y"
14970 if (!p->ctxt.in_defined && !p->ctxt.in_def && !compile_for_eval)
14971 yyerror1(&(yylsp[0]),
"Invalid yield");
14973#line 14974 "parse.c"
14977#line 4885 "parse.y"
14978 { (yyval.id) = keyword_do_cond; }
14979#line 14980 "parse.c"
14983#line 4892 "parse.y"
14985 (yyval.node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]), &NULL_LOC);
14986 fixpos((yyval.node), (yyvsp[-3].node));
14989#line 14990 "parse.c"
14993#line 4901 "parse.y"
14995 (yyval.node) = (yyvsp[0].node);
14998#line 14999 "parse.c"
15002#line 4912 "parse.y"
15004 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15005 mark_lvar_used(p, (yyval.node));
15007#line 15008 "parse.c"
15011#line 4917 "parse.y"
15013 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
15016#line 15017 "parse.c"
15020#line 3031 "parse.y"
15022 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15025#line 15026 "parse.c"
15029#line 3036 "parse.y"
15031 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
15034#line 15035 "parse.c"
15038#line 4925 "parse.y"
15040 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
15043#line 15044 "parse.c"
15047#line 4930 "parse.y"
15049 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15052#line 15053 "parse.c"
15056#line 4935 "parse.y"
15058 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15061#line 15062 "parse.c"
15065#line 4940 "parse.y"
15067 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
15070#line 15071 "parse.c"
15074#line 4945 "parse.y"
15076 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15079#line 15080 "parse.c"
15083#line 4952 "parse.y"
15086 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15087 mark_lvar_used(p, (yyval.node));
15089#line 15090 "parse.c"
15093#line 4958 "parse.y"
15095 (yyval.node) = NODE_SPECIAL_NO_NAME_REST;
15098#line 15099 "parse.c"
15102#line 4966 "parse.y"
15104 (yyval.id) = idNil;
15107#line 15108 "parse.c"
15111#line 4972 "parse.y"
15112 {p->ctxt.in_argdef = 0;}
15113#line 15114 "parse.c"
15117#line 3003 "parse.y"
15119 p->ctxt.in_argdef = 1;
15120 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15123#line 15124 "parse.c"
15127#line 3009 "parse.y"
15129 p->ctxt.in_argdef = 1;
15130 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
15133#line 15134 "parse.c"
15137#line 3018 "parse.y"
15139 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
15142#line 15143 "parse.c"
15146#line 3023 "parse.y"
15148 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
15151#line 15152 "parse.c"
15155#line 2927 "parse.y"
15157 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
15160#line 15161 "parse.c"
15164#line 2932 "parse.y"
15166 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
15169#line 15170 "parse.c"
15173#line 2937 "parse.y"
15175 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
15178#line 15179 "parse.c"
15182#line 2942 "parse.y"
15184 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
15187#line 15188 "parse.c"
15191#line 4978 "parse.y"
15194 (yyval.id) = NODE_SPECIAL_EXCESSIVE_COMMA;
15197#line 15198 "parse.c"
15201#line 2981 "parse.y"
15203 p->ctxt.in_argdef = 1;
15204 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15207#line 15208 "parse.c"
15211#line 2990 "parse.y"
15213 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
15216#line 15217 "parse.c"
15220#line 2995 "parse.y"
15222 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
15225#line 15226 "parse.c"
15229#line 3090 "parse.y"
15231 (yyval.node_args) = (yyvsp[0].node_args);
15234#line 15235 "parse.c"
15238#line 3095 "parse.y"
15240 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
15243#line 15244 "parse.c"
15247#line 4986 "parse.y"
15249 (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));
15252#line 15253 "parse.c"
15256#line 4991 "parse.y"
15258 (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));
15261#line 15262 "parse.c"
15265#line 4996 "parse.y"
15267 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15270#line 15271 "parse.c"
15274#line 5001 "parse.y"
15276 (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));
15279#line 15280 "parse.c"
15283#line 5006 "parse.y"
15285 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
15288#line 15289 "parse.c"
15292#line 5011 "parse.y"
15294 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
15295 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, (yyvsp[0].id), 0, (yyval.node_args), &(yyloc));
15298#line 15299 "parse.c"
15302#line 5017 "parse.y"
15304 (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));
15307#line 15308 "parse.c"
15311#line 5022 "parse.y"
15313 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15316#line 15317 "parse.c"
15320#line 5027 "parse.y"
15322 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
15325#line 15326 "parse.c"
15329#line 5032 "parse.y"
15331 (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));
15334#line 15335 "parse.c"
15338#line 5037 "parse.y"
15340 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15343#line 15344 "parse.c"
15347#line 5042 "parse.y"
15349 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15352#line 15353 "parse.c"
15356#line 5047 "parse.y"
15358 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
15361#line 15362 "parse.c"
15365#line 5052 "parse.y"
15367 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15370#line 15371 "parse.c"
15374#line 5057 "parse.y"
15376 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15379#line 15380 "parse.c"
15383#line 5065 "parse.y"
15385 p->command_start = TRUE;
15387#line 15388 "parse.c"
15391#line 5071 "parse.y"
15393 p->max_numparam = ORDINAL_PARAM;
15394 p->ctxt.in_argdef = 0;
15395 (yyval.node_args) = (yyvsp[-2].node_args);
15398#line 15399 "parse.c"
15402#line 5080 "parse.y"
15404 (yyval.node_args) = 0;
15407#line 15408 "parse.c"
15411#line 5088 "parse.y"
15416#line 15417 "parse.c"
15420#line 5093 "parse.y"
15425#line 15426 "parse.c"
15429#line 5106 "parse.y"
15431 new_bv(p, (yyvsp[0].
id));
15434#line 15435 "parse.c"
15438#line 5113 "parse.y"
15440 (yyval.num) = p->max_numparam;
15441 p->max_numparam = 0;
15443#line 15444 "parse.c"
15447#line 5119 "parse.y"
15449 (yyval.node) = numparam_push(p);
15451#line 15452 "parse.c"
15455#line 5124 "parse.y"
15457 (yyval.id) = p->it_id;
15460#line 15461 "parse.c"
15464#line 5131 "parse.y"
15466 token_info_push(p,
"->", &(yylsp[0]));
15467 (yyval.vars) = dyna_push(p);
15469#line 15470 "parse.c"
15473#line 5137 "parse.y"
15477#line 15478 "parse.c"
15481#line 5141 "parse.y"
15483 int max_numparam = p->max_numparam;
15484 ID it_id = p->it_id;
15485 p->lex.lpar_beg = (yyvsp[-8].num);
15486 p->max_numparam = (yyvsp[-6].num);
15487 p->it_id = (yyvsp[-4].id);
15488 restore_block_exit(p, (yyvsp[-3].node_exits));
15490 (yyvsp[-2].node_args) = args_with_numbered(p, (yyvsp[-2].node_args), max_numparam, it_id);
15492 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
15493 (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);
15494 nd_set_line(RNODE_LAMBDA((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
15495 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
15496 nd_set_first_loc((yyval.node), (yylsp[-8]).beg_pos);
15497 xfree((yyvsp[0].locations_lambda_body));
15500 numparam_pop(p, (yyvsp[-5].node));
15501 dyna_pop(p, (yyvsp[-7].vars));
15503#line 15504 "parse.c"
15507#line 5165 "parse.y"
15509 p->ctxt.in_argdef = 0;
15510 (yyval.node_args) = (yyvsp[-2].node_args);
15511 p->max_numparam = ORDINAL_PARAM;
15514#line 15515 "parse.c"
15518#line 5172 "parse.y"
15520 p->ctxt.in_argdef = 0;
15521 if (!args_info_empty_p(&(yyvsp[0].node_args)->nd_ainfo))
15522 p->max_numparam = ORDINAL_PARAM;
15523 (yyval.node_args) = (yyvsp[0].node_args);
15525#line 15526 "parse.c"
15529#line 5181 "parse.y"
15531 token_info_pop(p,
"}", &(yylsp[0]));
15532 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-2]), &(yylsp[0]));
15535#line 15536 "parse.c"
15539#line 5187 "parse.y"
15541 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15543#line 15544 "parse.c"
15547#line 5191 "parse.y"
15549 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-3]), &(yylsp[0]));
15552#line 15553 "parse.c"
15556#line 5198 "parse.y"
15558 (yyval.node) = (yyvsp[-1].node);
15559 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15562#line 15563 "parse.c"
15566#line 5206 "parse.y"
15568 if (nd_type_p((yyvsp[-1].node), NODE_YIELD)) {
15569 compile_error(p,
"block given to yield");
15572 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
15574 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15575 fixpos((yyval.node), (yyvsp[-1].node));
15578#line 15579 "parse.c"
15582#line 5218 "parse.y"
15584 bool has_args = (yyvsp[0].node) != 0;
15585 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15586 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15592#line 15593 "parse.c"
15596#line 5228 "parse.y"
15598 if (NODE_EMPTY_ARGS_P((yyvsp[-1].node))) (yyvsp[-1].node) = 0;
15599 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15602#line 15603 "parse.c"
15606#line 5234 "parse.y"
15608 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15611#line 15612 "parse.c"
15615#line 5239 "parse.y"
15617 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15618 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15621#line 15622 "parse.c"
15625#line 5247 "parse.y"
15627 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
15628 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
15629 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
15632#line 15633 "parse.c"
15636#line 5254 "parse.y"
15638 bool has_args = (yyvsp[0].node) != 0;
15639 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15640 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15641 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15647#line 15648 "parse.c"
15651#line 5265 "parse.y"
15653 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15654 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15657#line 15658 "parse.c"
15661#line 5271 "parse.y"
15663 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-2].node), (yyvsp[0].id), 0, &(yylsp[0]), &(yyloc));
15666#line 15667 "parse.c"
15670#line 5276 "parse.y"
15672 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15673 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15676#line 15677 "parse.c"
15680#line 5282 "parse.y"
15684 lparen_loc.end_pos.column = lparen_loc.beg_pos.column + 1;
15685 rparen_loc.beg_pos.column = rparen_loc.end_pos.column - 1;
15687 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &lparen_loc, &rparen_loc);
15690#line 15691 "parse.c"
15694#line 5292 "parse.y"
15696 (yyval.node) = NEW_ZSUPER(&(yyloc));
15699#line 15700 "parse.c"
15703#line 5297 "parse.y"
15705 (yyval.node) = NEW_CALL((yyvsp[-3].node), tAREF, (yyvsp[-1].node), &(yyloc));
15706 fixpos((yyval.node), (yyvsp[-3].node));
15709#line 15710 "parse.c"
15713#line 5305 "parse.y"
15715 (yyval.node) = (yyvsp[-1].node);
15716 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15719#line 15720 "parse.c"
15723#line 5311 "parse.y"
15725 (yyval.node) = (yyvsp[-1].node);
15726 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15729#line 15730 "parse.c"
15733#line 5318 "parse.y"
15734 {(yyval.vars) = dyna_push(p);}
15735#line 15736 "parse.c"
15739#line 5321 "parse.y"
15741 int max_numparam = p->max_numparam;
15742 ID it_id = p->it_id;
15743 p->max_numparam = (yyvsp[-5].num);
15744 p->it_id = (yyvsp[-3].id);
15745 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
15746 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
15748 restore_block_exit(p, (yyvsp[-2].node_exits));
15749 numparam_pop(p, (yyvsp[-4].node));
15750 dyna_pop(p, (yyvsp[-6].vars));
15752#line 15753 "parse.c"
15756#line 5335 "parse.y"
15758 (yyval.vars) = dyna_push(p);
15761#line 15762 "parse.c"
15765#line 5341 "parse.y"
15767 int max_numparam = p->max_numparam;
15768 ID it_id = p->it_id;
15769 p->max_numparam = (yyvsp[-5].num);
15770 p->it_id = (yyvsp[-3].id);
15771 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
15772 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
15775 restore_block_exit(p, (yyvsp[-2].node_exits));
15776 numparam_pop(p, (yyvsp[-4].node));
15777 dyna_pop(p, (yyvsp[-6].vars));
15779#line 15780 "parse.c"
15783#line 5357 "parse.y"
15785 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
15786 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15789#line 15790 "parse.c"
15793#line 5363 "parse.y"
15795 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
15798#line 15799 "parse.c"
15802#line 5368 "parse.y"
15804 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
15805 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15808#line 15809 "parse.c"
15812#line 5374 "parse.y"
15814 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
15817#line 15818 "parse.c"
15821#line 5383 "parse.y"
15823 (yyval.node) = NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]));
15824 fixpos((yyval.node), (yyvsp[-3].node));
15827#line 15828 "parse.c"
15831#line 5394 "parse.y"
15832 {(yyval.tbl) = p->pvtbl; p->pvtbl = st_init_numtable();}
15833#line 15834 "parse.c"
15837#line 5395 "parse.y"
15838 {(yyval.tbl) = p->pktbl; p->pktbl = 0;}
15839#line 15840 "parse.c"
15843#line 5397 "parse.y"
15845 (yyval.ctxt) = p->ctxt;
15846 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
15847 p->command_start = FALSE;
15848 p->ctxt.in_kwarg = 1;
15849 p->ctxt.in_alt_pattern = 0;
15850 p->ctxt.capture_in_pattern = 0;
15852#line 15853 "parse.c"
15856#line 5410 "parse.y"
15858 pop_pktbl(p, (yyvsp[-2].tbl));
15859 pop_pvtbl(p, (yyvsp[-3].tbl));
15860 p->ctxt.in_kwarg = (yyvsp[-4].ctxt).in_kwarg;
15861 p->ctxt.in_alt_pattern = (yyvsp[-4].ctxt).in_alt_pattern;
15862 p->ctxt.capture_in_pattern = (yyvsp[-4].ctxt).capture_in_pattern;
15864#line 15865 "parse.c"
15868#line 5419 "parse.y"
15870 (yyval.node) = NEW_IN((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-8]), &(yylsp[-3]), &NULL_LOC);
15873#line 15874 "parse.c"
15877#line 5431 "parse.y"
15879 (yyval.node) = new_if(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
15880 fixpos((yyval.node), (yyvsp[0].node));
15883#line 15884 "parse.c"
15887#line 5437 "parse.y"
15889 (yyval.node) = new_unless(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
15890 fixpos((yyval.node), (yyvsp[0].node));
15893#line 15894 "parse.c"
15897#line 5446 "parse.y"
15899 (yyval.node) = new_array_pattern_tail(p, 0, 1, 0, 0, &(yyloc));
15900 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-1].node), (yyval.node), &(yyloc));
15903#line 15904 "parse.c"
15907#line 5452 "parse.y"
15909 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15910 nd_set_first_loc((yyval.node), (yylsp[-2]).beg_pos);
15913#line 15914 "parse.c"
15917#line 5458 "parse.y"
15919 (yyval.node) = new_find_pattern(p, 0, (yyvsp[0].node), &(yyloc));
15922#line 15923 "parse.c"
15926#line 5463 "parse.y"
15928 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[0].node), &(yyloc));
15931#line 15932 "parse.c"
15935#line 5468 "parse.y"
15937 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[0].node), &(yyloc));
15940#line 15941 "parse.c"
15944#line 5478 "parse.y"
15946 NODE *n = NEW_LIST((yyvsp[-2].node), &(yyloc));
15947 n = list_append(p, n, (yyvsp[0].node));
15948 (yyval.node) = new_hash(p, n, &(yyloc));
15951#line 15952 "parse.c"
15955#line 5488 "parse.y"
15957 p->ctxt.in_alt_pattern = 1;
15959#line 15960 "parse.c"
15963#line 5492 "parse.y"
15965 if (p->ctxt.capture_in_pattern) {
15966 yyerror1(&(yylsp[-2]),
"alternative pattern after variable capture");
15968 p->ctxt.in_alt_pattern = 0;
15969 (yyval.node) = NEW_OR((yyvsp[-3].node), (yyvsp[0].node), &(yyloc), &(yylsp[-2]));
15972#line 15973 "parse.c"
15976#line 5504 "parse.y"
15978 (yyval.tbl) = (yyvsp[0].tbl);
15981#line 15982 "parse.c"
15985#line 5511 "parse.y"
15987 (yyval.tbl) = (yyvsp[0].tbl);
15990#line 15991 "parse.c"
15994#line 5520 "parse.y"
15996 pop_pktbl(p, (yyvsp[-2].tbl));
15997 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
15998 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16001#line 16002 "parse.c"
16005#line 5527 "parse.y"
16007 pop_pktbl(p, (yyvsp[-2].tbl));
16008 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16009 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16012#line 16013 "parse.c"
16016#line 5534 "parse.y"
16018 pop_pktbl(p, (yyvsp[-2].tbl));
16019 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16020 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16023#line 16024 "parse.c"
16027#line 5541 "parse.y"
16029 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16030 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
16033#line 16034 "parse.c"
16037#line 5547 "parse.y"
16039 pop_pktbl(p, (yyvsp[-2].tbl));
16040 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
16041 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16044#line 16045 "parse.c"
16048#line 5554 "parse.y"
16050 pop_pktbl(p, (yyvsp[-2].tbl));
16051 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16052 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16055#line 16056 "parse.c"
16059#line 5561 "parse.y"
16061 pop_pktbl(p, (yyvsp[-2].tbl));
16062 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16063 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16066#line 16067 "parse.c"
16070#line 5568 "parse.y"
16072 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16073 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
16076#line 16077 "parse.c"
16080#line 5574 "parse.y"
16082 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[-1].node), &(yyloc));
16085#line 16086 "parse.c"
16089#line 5579 "parse.y"
16091 (yyval.node) = new_find_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16094#line 16095 "parse.c"
16098#line 5584 "parse.y"
16100 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16101 (yyval.node) = new_array_pattern(p, 0, 0, (yyval.node), &(yyloc));
16104#line 16105 "parse.c"
16108#line 5590 "parse.y"
16110 p->ctxt.in_kwarg = 0;
16112#line 16113 "parse.c"
16116#line 5594 "parse.y"
16118 pop_pktbl(p, (yyvsp[-4].tbl));
16119 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
16120 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16123#line 16124 "parse.c"
16127#line 5601 "parse.y"
16129 (yyval.node) = new_hash_pattern_tail(p, 0, 0, &(yyloc));
16130 (yyval.node) = new_hash_pattern(p, 0, (yyval.node), &(yyloc));
16133#line 16134 "parse.c"
16137#line 5607 "parse.y"
16139 pop_pktbl(p, (yyvsp[-2].tbl));
16140 (yyval.node) = (yyvsp[-1].node);
16143#line 16144 "parse.c"
16147#line 5615 "parse.y"
16149 NODE *pre_args = NEW_LIST((yyvsp[0].node), &(yyloc));
16150 (yyval.node) = new_array_pattern_tail(p, pre_args, 0, 0, 0, &(yyloc));
16153#line 16154 "parse.c"
16157#line 5621 "parse.y"
16159 (yyval.node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0, 0, &(yyloc));
16162#line 16163 "parse.c"
16166#line 5626 "parse.y"
16168 (yyval.node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, 0, 0, &(yyloc));
16171#line 16172 "parse.c"
16175#line 5631 "parse.y"
16177 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, (yyvsp[0].node), 0, &(yyloc));
16180#line 16181 "parse.c"
16184#line 5636 "parse.y"
16186 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16189#line 16190 "parse.c"
16193#line 5645 "parse.y"
16195 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
16198#line 16199 "parse.c"
16202#line 5652 "parse.y"
16204 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[0].node), 0, &(yyloc));
16207#line 16208 "parse.c"
16211#line 5657 "parse.y"
16213 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16216#line 16217 "parse.c"
16220#line 5664 "parse.y"
16222 (yyval.node) = new_find_pattern_tail(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16225#line 16226 "parse.c"
16229#line 5672 "parse.y"
16231 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16233 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16235#line 16236 "parse.c"
16239#line 5678 "parse.y"
16244#line 16245 "parse.c"
16248#line 5686 "parse.y"
16250 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16253#line 16254 "parse.c"
16257#line 5693 "parse.y"
16259 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16262#line 16263 "parse.c"
16266#line 5700 "parse.y"
16268 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].id), &(yyloc));
16271#line 16272 "parse.c"
16275#line 5705 "parse.y"
16277 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
16280#line 16281 "parse.c"
16284#line 5710 "parse.y"
16286 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
16289#line 16290 "parse.c"
16293#line 5715 "parse.y"
16295 (yyval.node) = new_hash_pattern_tail(p, new_hash(p, 0, &(yyloc)), (yyvsp[0].
id), &(yyloc));
16298#line 16299 "parse.c"
16302#line 5724 "parse.y"
16304 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16307#line 16308 "parse.c"
16311#line 5731 "parse.y"
16313 error_duplicate_pattern_key(p, (yyvsp[-1].
id), &(yylsp[-1]));
16314 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
16317#line 16318 "parse.c"
16321#line 5737 "parse.y"
16323 error_duplicate_pattern_key(p, (yyvsp[0].
id), &(yylsp[0]));
16324 if ((yyvsp[0].
id) && !is_local_id((yyvsp[0].
id))) {
16325 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
16327 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16328 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
16331#line 16332 "parse.c"
16335#line 5750 "parse.y"
16337 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
16338 if (!(yyvsp[-1].node) || nd_type_p((yyvsp[-1].node), NODE_STR)) {
16339 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
16340 (yyval.id) =
rb_sym2id(rb_node_sym_string_val(node));
16343 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
16344 (yyval.id) = rb_intern_str(STR_NEW0());
16348#line 16349 "parse.c"
16352#line 5765 "parse.y"
16354 (yyval.id) = (yyvsp[0].
id);
16357#line 16358 "parse.c"
16361#line 5770 "parse.y"
16366#line 16367 "parse.c"
16370#line 5777 "parse.y"
16374#line 16375 "parse.c"
16378#line 5784 "parse.y"
16380 (yyval.id) = idNil;
16383#line 16384 "parse.c"
16387#line 3103 "parse.y"
16389 value_expr(p, (yyvsp[-2].node));
16390 value_expr(p, (yyvsp[0].node));
16391 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16394#line 16395 "parse.c"
16398#line 3110 "parse.y"
16400 value_expr(p, (yyvsp[-2].node));
16401 value_expr(p, (yyvsp[0].node));
16402 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16405#line 16406 "parse.c"
16409#line 3117 "parse.y"
16411 value_expr(p, (yyvsp[-1].node));
16412 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16415#line 16416 "parse.c"
16419#line 3123 "parse.y"
16421 value_expr(p, (yyvsp[-1].node));
16422 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16425#line 16426 "parse.c"
16429#line 3129 "parse.y"
16431 value_expr(p, (yyvsp[0].node));
16432 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16435#line 16436 "parse.c"
16439#line 3135 "parse.y"
16441 value_expr(p, (yyvsp[0].node));
16442 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16445#line 16446 "parse.c"
16449#line 5799 "parse.y"
16451 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16454#line 16455 "parse.c"
16458#line 5807 "parse.y"
16460 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16462 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16464#line 16465 "parse.c"
16468#line 5815 "parse.y"
16470 NODE *n = gettable(p, (yyvsp[0].
id), &(yyloc));
16472 n = NEW_ERROR(&(yyloc));
16474 else if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
16475 compile_error(p,
"%"PRIsVALUE
": no such local variable", rb_id2str((yyvsp[0].
id)));
16480#line 16481 "parse.c"
16484#line 5827 "parse.y"
16486 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16489#line 16490 "parse.c"
16493#line 5834 "parse.y"
16495 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
16498#line 16499 "parse.c"
16502#line 5841 "parse.y"
16504 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
16507#line 16508 "parse.c"
16511#line 5846 "parse.y"
16513 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
16516#line 16517 "parse.c"
16520#line 5851 "parse.y"
16522 (yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc));
16525#line 16526 "parse.c"
16529#line 5860 "parse.y"
16531 NODE *err = (yyvsp[-3].node);
16532 if ((yyvsp[-3].node)) {
16533 err = NEW_ERRINFO(&(yylsp[-3]));
16534 err = node_assign(p, (yyvsp[-3].node), err, NO_LEX_CTXT, &(yylsp[-3]));
16536 (yyval.node) = NEW_RESBODY((yyvsp[-4].node), (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16537 if ((yyvsp[-4].node)) {
16538 fixpos((yyval.node), (yyvsp[-4].node));
16540 else if ((yyvsp[-3].node)) {
16541 fixpos((yyval.node), (yyvsp[-3].node));
16544 fixpos((yyval.node), (yyvsp[-1].node));
16548#line 16549 "parse.c"
16552#line 5882 "parse.y"
16554 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16557#line 16558 "parse.c"
16561#line 5887 "parse.y"
16563 if (!((yyval.node) = splat_array((yyvsp[0].node)))) (yyval.node) = (yyvsp[0].node);
16565#line 16566 "parse.c"
16569#line 5894 "parse.y"
16571 (yyval.node) = (yyvsp[0].node);
16574#line 16575 "parse.c"
16578#line 5902 "parse.y"
16580 p->ctxt.in_rescue = (yyvsp[-2].ctxt).in_rescue;
16581 (yyval.node) = (yyvsp[-1].node);
16582 void_expr(p, void_stmts(p, (yyval.node)));
16585#line 16586 "parse.c"
16589#line 5916 "parse.y"
16591 if (!(yyvsp[0].node)) {
16592 (yyval.node) = NEW_STR(STRING_NEW0(), &(yyloc));
16595 (yyval.node) = evstr2dstr(p, (yyvsp[0].node));
16599#line 16600 "parse.c"
16603#line 5930 "parse.y"
16605 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16608#line 16609 "parse.c"
16612#line 5937 "parse.y"
16614 (yyval.node) = heredoc_dedent(p, (yyvsp[-1].node));
16615 if ((yyval.node)) nd_set_loc((yyval.node), &(yyloc));
16617 if (p->heredoc_indent > 0) {
16619 p->heredoc_indent = 0;
16623#line 16624 "parse.c"
16627#line 5950 "parse.y"
16629 (yyval.node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
16631 if (p->heredoc_indent > 0) {
16633 p->heredoc_indent = 0;
16637#line 16638 "parse.c"
16641#line 5962 "parse.y"
16643 (yyval.node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
16646#line 16647 "parse.c"
16650#line 3152 "parse.y"
16652 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16655#line 16656 "parse.c"
16659#line 5972 "parse.y"
16664#line 16665 "parse.c"
16668#line 5977 "parse.y"
16670 (yyval.node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
16673#line 16674 "parse.c"
16677#line 5986 "parse.y"
16679 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16682#line 16683 "parse.c"
16686#line 3152 "parse.y"
16688 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16691#line 16692 "parse.c"
16695#line 5996 "parse.y"
16700#line 16701 "parse.c"
16704#line 6001 "parse.y"
16706 (yyval.node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
16709#line 16710 "parse.c"
16713#line 3152 "parse.y"
16715 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16718#line 16719 "parse.c"
16722#line 3152 "parse.y"
16724 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16727#line 16728 "parse.c"
16731#line 6014 "parse.y"
16736#line 16737 "parse.c"
16740#line 6019 "parse.y"
16742 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
16745#line 16746 "parse.c"
16749#line 6026 "parse.y"
16754#line 16755 "parse.c"
16758#line 6031 "parse.y"
16760 (yyval.node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
16763#line 16764 "parse.c"
16767#line 6038 "parse.y"
16772#line 16773 "parse.c"
16776#line 6043 "parse.y"
16778 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16781#line 16782 "parse.c"
16785#line 6050 "parse.y"
16790#line 16791 "parse.c"
16794#line 6055 "parse.y"
16796 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16799#line 16800 "parse.c"
16803#line 6062 "parse.y"
16808#line 16809 "parse.c"
16812#line 6067 "parse.y"
16814 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
16816 (yyval.node) = tail;
16819 (yyval.node) = head;
16822 switch (nd_type(head)) {
16824 head = str2dstr(p, head);
16829 head = list_append(p, NEW_DSTR(0, &(yyloc)), head);
16832 (yyval.node) = list_append(p, head, tail);
16836#line 16837 "parse.c"
16840#line 6095 "parse.y"
16843 (yyval.strterm) = p->lex.strterm;
16844 p->lex.strterm = 0;
16845 SET_LEX_STATE(EXPR_BEG);
16847#line 16848 "parse.c"
16851#line 6102 "parse.y"
16853 p->lex.strterm = (yyvsp[-1].strterm);
16854 (yyval.node) = NEW_EVSTR((yyvsp[0].node), &(yyloc), &(yylsp[-2]), &NULL_LOC);
16855 nd_set_line((yyval.node), (yylsp[0]).end_pos.lineno);
16858#line 16859 "parse.c"
16862#line 6109 "parse.y"
16867 (yyval.strterm) = p->lex.strterm;
16868 p->lex.strterm = 0;
16869 SET_LEX_STATE(EXPR_BEG);
16871#line 16872 "parse.c"
16875#line 6117 "parse.y"
16877 (yyval.num) = p->lex.brace_nest;
16878 p->lex.brace_nest = 0;
16880#line 16881 "parse.c"
16884#line 6121 "parse.y"
16886 (yyval.num) = p->heredoc_indent;
16887 p->heredoc_indent = 0;
16889#line 16890 "parse.c"
16893#line 6126 "parse.y"
16897 p->lex.strterm = (yyvsp[-4].strterm);
16898 SET_LEX_STATE((yyvsp[-5].state));
16899 p->lex.brace_nest = (yyvsp[-3].num);
16900 p->heredoc_indent = (yyvsp[-2].num);
16901 p->heredoc_line_indent = -1;
16902 if ((yyvsp[-1].node)) nd_unset_fl_newline((yyvsp[-1].node));
16903 (yyval.node) = new_evstr(p, (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[0]));
16906#line 16907 "parse.c"
16910#line 6145 "parse.y"
16912 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16915#line 16916 "parse.c"
16919#line 6157 "parse.y"
16921 SET_LEX_STATE(EXPR_END);
16922 VALUE str = rb_id2str((yyvsp[0].
id));
16929 if (!str) str = STR_NEW0();
16930 (yyval.node) = NEW_SYM(str, &(yyloc));
16933#line 16934 "parse.c"
16937#line 6177 "parse.y"
16939 SET_LEX_STATE(EXPR_END);
16940 (yyval.node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
16943#line 16944 "parse.c"
16947#line 6186 "parse.y"
16949 (yyval.node) = (yyvsp[0].node);
16950 negate_lit(p, (yyval.node));
16953#line 16954 "parse.c"
16957#line 6208 "parse.y"
16958 {(yyval.id) = KWD2EID(nil, (yyvsp[0].
id));}
16959#line 16960 "parse.c"
16963#line 6209 "parse.y"
16964 {(yyval.id) = KWD2EID(self, (yyvsp[0].
id));}
16965#line 16966 "parse.c"
16969#line 6210 "parse.y"
16970 {(yyval.id) = KWD2EID(
true, (yyvsp[0].
id));}
16971#line 16972 "parse.c"
16975#line 6211 "parse.y"
16976 {(yyval.id) = KWD2EID(
false, (yyvsp[0].
id));}
16977#line 16978 "parse.c"
16981#line 6212 "parse.y"
16982 {(yyval.id) = KWD2EID(_FILE__, (yyvsp[0].
id));}
16983#line 16984 "parse.c"
16987#line 6213 "parse.y"
16988 {(yyval.id) = KWD2EID(_LINE__, (yyvsp[0].
id));}
16989#line 16990 "parse.c"
16993#line 6214 "parse.y"
16994 {(yyval.id) = KWD2EID(_ENCODING__, (yyvsp[0].
id));}
16995#line 16996 "parse.c"
16999#line 6218 "parse.y"
17001 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17002 if (ifdef_ripper(id_is_var(p, (yyvsp[0].
id)),
false)) {
17009#line 17010 "parse.c"
17013#line 6228 "parse.y"
17015 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17018#line 17019 "parse.c"
17022#line 6235 "parse.y"
17025 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
17027#line 17028 "parse.c"
17031#line 6235 "parse.y"
17034 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
17036#line 17037 "parse.c"
17040#line 6246 "parse.y"
17042 SET_LEX_STATE(EXPR_BEG);
17043 p->command_start = TRUE;
17045#line 17046 "parse.c"
17049#line 6251 "parse.y"
17051 (yyval.node) = (yyvsp[-1].node);
17054#line 17055 "parse.c"
17058#line 6260 "parse.y"
17060 p->ctxt.in_argdef = 0;
17061 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[-1]));
17062 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyval.node_args), &(yylsp[-1]));
17065#line 17066 "parse.c"
17069#line 6269 "parse.y"
17071 (yyval.node_args) = (yyvsp[-1].node_args);
17073 SET_LEX_STATE(EXPR_BEG);
17074 p->command_start = TRUE;
17075 p->ctxt.in_argdef = 0;
17077#line 17078 "parse.c"
17081#line 6279 "parse.y"
17083 (yyval.ctxt) = p->ctxt;
17084 p->ctxt.in_kwarg = 1;
17085 p->ctxt.in_argdef = 1;
17086 SET_LEX_STATE(p->lex.state|EXPR_LABEL);
17088#line 17089 "parse.c"
17092#line 6286 "parse.y"
17094 p->ctxt.in_kwarg = (yyvsp[-2].ctxt).in_kwarg;
17095 p->ctxt.in_argdef = 0;
17096 (yyval.node_args) = (yyvsp[-1].node_args);
17097 SET_LEX_STATE(EXPR_BEG);
17098 p->command_start = TRUE;
17101#line 17102 "parse.c"
17105#line 3003 "parse.y"
17107 p->ctxt.in_argdef = 1;
17108 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17111#line 17112 "parse.c"
17115#line 3009 "parse.y"
17117 p->ctxt.in_argdef = 1;
17118 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
17121#line 17122 "parse.c"
17125#line 3018 "parse.y"
17127 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
17130#line 17131 "parse.c"
17134#line 3023 "parse.y"
17136 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
17139#line 17140 "parse.c"
17143#line 2927 "parse.y"
17145 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
17148#line 17149 "parse.c"
17152#line 2932 "parse.y"
17154 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
17157#line 17158 "parse.c"
17161#line 2937 "parse.y"
17163 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
17166#line 17167 "parse.c"
17170#line 2942 "parse.y"
17172 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
17175#line 17176 "parse.c"
17179#line 6298 "parse.y"
17181 ID fwd = (yyvsp[0].id);
17182 if (lambda_beginning_p() ||
17183 (p->lex.lpar_beg >= 0 && p->lex.lpar_beg+1 == p->lex.paren_nest)) {
17184 yyerror0(
"unexpected ... in lambda argument");
17188 add_forwarding_args(p);
17190 (yyval.node_args) = new_args_tail(p, 0, fwd, arg_FWD_BLOCK, &(yylsp[0]));
17191 (yyval.node_args)->nd_ainfo.forwarding = 1;
17194#line 17195 "parse.c"
17198#line 2981 "parse.y"
17200 p->ctxt.in_argdef = 1;
17201 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17204#line 17205 "parse.c"
17208#line 2990 "parse.y"
17210 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
17213#line 17214 "parse.c"
17217#line 2995 "parse.y"
17219 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
17222#line 17223 "parse.c"
17226#line 3090 "parse.y"
17228 (yyval.node_args) = (yyvsp[0].node_args);
17231#line 17232 "parse.c"
17235#line 3095 "parse.y"
17237 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
17240#line 17241 "parse.c"
17244#line 6315 "parse.y"
17246 (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));
17249#line 17250 "parse.c"
17253#line 6320 "parse.y"
17255 (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));
17258#line 17259 "parse.c"
17262#line 6325 "parse.y"
17264 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17267#line 17268 "parse.c"
17271#line 6330 "parse.y"
17273 (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));
17276#line 17277 "parse.c"
17280#line 6335 "parse.y"
17282 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17285#line 17286 "parse.c"
17289#line 6340 "parse.y"
17291 (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));
17294#line 17295 "parse.c"
17298#line 6345 "parse.y"
17300 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17303#line 17304 "parse.c"
17307#line 6350 "parse.y"
17309 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17312#line 17313 "parse.c"
17316#line 6355 "parse.y"
17318 (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));
17321#line 17322 "parse.c"
17325#line 6360 "parse.y"
17327 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17330#line 17331 "parse.c"
17334#line 6365 "parse.y"
17336 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17339#line 17340 "parse.c"
17343#line 6370 "parse.y"
17345 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17348#line 17349 "parse.c"
17352#line 6375 "parse.y"
17354 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17357#line 17358 "parse.c"
17361#line 6380 "parse.y"
17363 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17366#line 17367 "parse.c"
17370#line 6385 "parse.y"
17372 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
17373 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyval.node_args), &(yylsp[0]));
17376#line 17377 "parse.c"
17380#line 6393 "parse.y"
17382 (yyval.id) = idFWD_KWREST;
17385#line 17386 "parse.c"
17389#line 6400 "parse.y"
17391 static const char mesg[] =
"formal argument cannot be a constant";
17393 yyerror1(&(yylsp[0]), mesg);
17398#line 17399 "parse.c"
17402#line 6409 "parse.y"
17404 static const char mesg[] =
"formal argument cannot be an instance variable";
17406 yyerror1(&(yylsp[0]), mesg);
17411#line 17412 "parse.c"
17415#line 6418 "parse.y"
17417 static const char mesg[] =
"formal argument cannot be a global variable";
17419 yyerror1(&(yylsp[0]), mesg);
17424#line 17425 "parse.c"
17428#line 6427 "parse.y"
17430 static const char mesg[] =
"formal argument cannot be a class variable";
17432 yyerror1(&(yylsp[0]), mesg);
17437#line 17438 "parse.c"
17441#line 6439 "parse.y"
17443 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
17447 p->max_numparam = ORDINAL_PARAM;
17449#line 17450 "parse.c"
17453#line 6449 "parse.y"
17455 arg_var(p, (yyvsp[0].
id));
17456 (yyval.id) = (yyvsp[0].
id);
17458#line 17459 "parse.c"
17462#line 6456 "parse.y"
17464 (yyval.node_args_aux) = NEW_ARGS_AUX((yyvsp[0].
id), 1, &NULL_LOC);
17467#line 17468 "parse.c"
17471#line 6461 "parse.y"
17473 ID tid = internal_id(p);
17475 loc.beg_pos = (yylsp[-1]).beg_pos;
17476 loc.end_pos = (yylsp[-1]).beg_pos;
17478 if (dyna_in_block(p)) {
17479 (yyvsp[-1].node_masgn)->nd_value = NEW_DVAR(tid, &loc);
17482 (yyvsp[-1].node_masgn)->nd_value = NEW_LVAR(tid, &loc);
17484 (yyval.node_args_aux) = NEW_ARGS_AUX(tid, 1, &NULL_LOC);
17485 (yyval.node_args_aux)->nd_next = (
NODE *)(yyvsp[-1].node_masgn);
17488#line 17489 "parse.c"
17492#line 6482 "parse.y"
17494 (yyval.node_args_aux) = (yyvsp[-2].node_args_aux);
17495 (yyval.node_args_aux)->nd_plen++;
17496 (yyval.node_args_aux)->nd_next = block_append(p, (yyval.node_args_aux)->nd_next, (yyvsp[0].node_args_aux)->nd_next);
17497 rb_discard_node(p, (
NODE *)(yyvsp[0].node_args_aux));
17500#line 17501 "parse.c"
17504#line 6493 "parse.y"
17506 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
17517 arg_var(p, ifdef_ripper(0, (yyvsp[0].
id)));
17519 p->max_numparam = ORDINAL_PARAM;
17520 p->ctxt.in_argdef = 0;
17522#line 17523 "parse.c"
17526#line 6517 "parse.y"
17530#line 17531 "parse.c"
17534#line 6523 "parse.y"
17536 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
17537 (yyval.id) = (yyvsp[0].
id);
17540#line 17541 "parse.c"
17544#line 6529 "parse.y"
17546 arg_var(p, idFWD_KWREST);
17547 (yyval.id) = idFWD_KWREST;
17550#line 17551 "parse.c"
17554#line 6541 "parse.y"
17556 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
17557 (yyval.id) = (yyvsp[0].
id);
17560#line 17561 "parse.c"
17564#line 6547 "parse.y"
17566 arg_var(p, idFWD_REST);
17567 (yyval.id) = idFWD_REST;
17570#line 17571 "parse.c"
17574#line 6559 "parse.y"
17576 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
17577 (yyval.id) = (yyvsp[0].
id);
17580#line 17581 "parse.c"
17584#line 6565 "parse.y"
17586 arg_var(p, idFWD_BLOCK);
17587 (yyval.id) = idFWD_BLOCK;
17590#line 17591 "parse.c"
17594#line 6573 "parse.y"
17596 (yyval.id) = (yyvsp[0].
id);
17599#line 17600 "parse.c"
17603#line 3144 "parse.y"
17605 value_expr(p, (yyvsp[0].node));
17606 (yyval.node) = (yyvsp[0].node);
17608#line 17609 "parse.c"
17612#line 6582 "parse.y"
17614 NODE *expr = last_expr_node((yyvsp[0].node));
17615 switch (nd_type(expr)) {
17625 case NODE_ENCODING:
17628 case NODE_RATIONAL:
17629 case NODE_IMAGINARY:
17633 yyerror1(&expr->nd_loc,
"can't define singleton method for literals");
17638 (yyval.node) = (yyvsp[0].node);
17640#line 17641 "parse.c"
17644#line 6613 "parse.y"
17646 SET_LEX_STATE(EXPR_BEG);
17647 p->ctxt.in_argdef = 0;
17649#line 17650 "parse.c"
17653#line 6618 "parse.y"
17655 p->ctxt.in_argdef = 1;
17656 (yyval.node) = (yyvsp[-1].node);
17659#line 17660 "parse.c"
17663#line 6627 "parse.y"
17665 (yyval.node) = (yyvsp[-1].node);
17668#line 17669 "parse.c"
17672#line 6636 "parse.y"
17674 NODE *assocs = (yyvsp[-2].node);
17675 NODE *tail = (yyvsp[0].node);
17680 if (RNODE_LIST(assocs)->nd_head) {
17681 NODE *n = RNODE_LIST(tail)->nd_next;
17682 if (!RNODE_LIST(tail)->nd_head && nd_type_p(n, NODE_LIST) &&
17683 nd_type_p((n = RNODE_LIST(n)->nd_head), NODE_HASH)) {
17685 tail = RNODE_HASH(n)->nd_head;
17689 assocs = list_concat(assocs, tail);
17692 (yyval.node) = assocs;
17695#line 17696 "parse.c"
17699#line 6661 "parse.y"
17701 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
17704#line 17705 "parse.c"
17708#line 6666 "parse.y"
17710 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
17713#line 17714 "parse.c"
17717#line 6671 "parse.y"
17719 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
17720 if (!val) val = NEW_ERROR(&(yyloc));
17721 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
17724#line 17725 "parse.c"
17728#line 6678 "parse.y"
17730 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
17731 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
17734#line 17735 "parse.c"
17738#line 6684 "parse.y"
17740 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
17743#line 17744 "parse.c"
17747#line 6689 "parse.y"
17749 forwarding_arg_check(p, idFWD_KWREST, idFWD_ALL,
"keyword rest");
17750 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)),
17751 NEW_LVAR(idFWD_KWREST, &(yyloc)));
17754#line 17755 "parse.c"
17758#line 6736 "parse.y"
17762 if (p->ctxt.in_defined) {
17763 p->ctxt.has_trailing_semicolon = 1;
17766#line 17767 "parse.c"
17770#line 6744 "parse.y"
17772 (yyloc).end_pos = (yyloc).beg_pos;
17775#line 17776 "parse.c"
17779#line 6751 "parse.y"
17781#line 17782 "parse.c"
17785#line 6755 "parse.y"
17790#line 17791 "parse.c"
17794#line 17795 "parse.c"
17809 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc, p);
17811 YYPOPSTACK (yylen);
17813#line 2666 "parse.y"
17814 {after_reduce(yylen, p);}
17815#line 17816 "parse.c"
17826 const int yylhs = yyr1[yyn] - YYNTOKENS;
17827 const int yyi = yypgoto[yylhs] + *yyssp;
17828 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
17830 : yydefgoto[yylhs]);
17842 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
17849 = {yyssp, yytoken, &yylloc};
17850 char const *yymsgp = YY_(
"syntax error");
17851 int yysyntax_error_status;
17852 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
17853 if (yysyntax_error_status == 0)
17855 else if (yysyntax_error_status == -1)
17857 if (yymsg != yymsgbuf)
17858 YYSTACK_FREE (yymsg);
17859 yymsg = YY_CAST (
char *,
17860 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
17863 yysyntax_error_status
17864 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
17870 yymsg_alloc =
sizeof yymsgbuf;
17871 yysyntax_error_status = YYENOMEM;
17874 yyerror (&yylloc, p, yymsgp);
17875 if (yysyntax_error_status == YYENOMEM)
17880 yyerror_range[1] = yylloc;
17881 if (yyerrstatus == 3)
17886 if (yychar <= END_OF_INPUT)
17889 if (yychar == END_OF_INPUT)
17894 yydestruct (
"Error: discarding",
17895 yytoken, &yylval, &yylloc, p);
17917 YYPOPSTACK (yylen);
17919#line 2668 "parse.y"
17920 {after_pop_stack(yylen, p);}
17921#line 17922 "parse.c"
17924 YY_STACK_PRINT (yyss, yyssp, p);
17938 yyn = yypact[yystate];
17939 if (!yypact_value_is_default (yyn))
17941 yyn += YYSYMBOL_YYerror;
17942 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
17944 yyn = yytable[yyn];
17954 yyerror_range[1] = *yylsp;
17955 yydestruct (
"Error: popping",
17956 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
17959#line 2668 "parse.y"
17960 {after_pop_stack(1, p);}
17961#line 17962 "parse.c"
17964 YY_STACK_PRINT (yyss, yyssp, p);
17967 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
17969 YY_IGNORE_MAYBE_UNINITIALIZED_END
17971 yyerror_range[2] = yylloc;
17973 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
17976 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp, p);
17978#line 2667 "parse.y"
17979 {after_shift_error_token(p);}
17980#line 17981 "parse.c"
18007 yyerror (&yylloc, p, YY_(
"memory exhausted"));
18016 if (yychar != YYEMPTY)
18020 yytoken = YYTRANSLATE (yychar);
18021 yydestruct (
"Cleanup: discarding lookahead",
18022 yytoken, &yylval, &yylloc, p);
18026 YYPOPSTACK (yylen);
18027 YY_STACK_PRINT (yyss, yyssp, p);
18028 while (yyssp != yyss)
18030 yydestruct (
"Cleanup: popping",
18031 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
18036 YYSTACK_FREE (yyss);
18038 if (yymsg != yymsgbuf)
18039 YYSTACK_FREE (yymsg);
18043#line 6760 "parse.y"
18048# define yylval (*p->lval)
18056#define set_parser_s_value(x) (ifdef_ripper(p->s_value = (x), (void)0))
18058# define set_yylval_node(x) { \
18059 YYLTYPE _cur_loc; \
18060 rb_parser_set_location(p, &_cur_loc); \
18061 yylval.node = (x); \
18062 set_parser_s_value(STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)); \
18064# define set_yylval_str(x) \
18066 set_yylval_node(NEW_STR(x, &_cur_loc)); \
18067 set_parser_s_value(rb_str_new_mutable_parser_string(x)); \
18069# define set_yylval_num(x) { \
18070 yylval.num = (x); \
18071 set_parser_s_value(x); \
18073# define set_yylval_id(x) (yylval.id = (x))
18074# define set_yylval_name(x) { \
18075 (yylval.id = (x)); \
18076 set_parser_s_value(ID2SYM(x)); \
18078# define yylval_id() (yylval.id)
18080#define set_yylval_noname() set_yylval_id(keyword_nil)
18081#define has_delayed_token(p) (p->delayed.token != NULL)
18084#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
18085#define dispatch_scan_event(p, t) parser_dispatch_scan_event(p, t, __LINE__)
18090 const char *
const pcur = p->lex.pcur;
18091 const char *
const ptok = p->lex.ptok;
18092 if (p->keep_tokens && (pcur < ptok)) {
18093 rb_bug(
"lex.pcur < lex.ptok. (line: %d) %"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"",
18094 p->ruby_sourceline, ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur);
18096 return pcur > ptok;
18103 case '"':
return "\\\"";
18104 case '\\':
return "\\\\";
18105 case '\0':
return "\\0";
18106 case '\n':
return "\\n";
18107 case '\r':
return "\\r";
18108 case '\t':
return "\\t";
18109 case '\f':
return "\\f";
18110 case '\013':
return "\\v";
18111 case '\010':
return "\\b";
18112 case '\007':
return "\\a";
18113 case '\033':
return "\\e";
18114 case '\x7f':
return "\\c?";
18123 const char *ptr = str->ptr;
18124 const char *pend = ptr + str->len;
18125 const char *prev = ptr;
18126 char charbuf[5] = {
'\\',
'x', 0, 0, 0};
18129 while (ptr < pend) {
18132 int n = rb_enc_precise_mbclen(ptr, pend, enc);
18134 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18135 n = rb_enc_mbminlen(enc);
18136 if (pend < ptr + n)
18137 n = (int)(pend - ptr);
18139 c = *ptr & 0xf0 >> 4;
18140 charbuf[2] = (c < 10) ?
'0' + c :
'A' + c - 10;
18142 charbuf[3] = (c < 10) ?
'0' + c :
'A' + c - 10;
18143 parser_str_cat(result, charbuf, 4);
18149 c = rb_enc_mbc_to_codepoint(ptr, pend, enc);
18151 cc = escaped_char(c);
18153 if (ptr - n > prev) parser_str_cat(result, prev, ptr - n - prev);
18154 parser_str_cat_cstr(result, cc);
18157 else if (rb_enc_isascii(c, enc) &&
ISPRINT(c)) {
18160 if (ptr - n > prev) {
18161 parser_str_cat(result, prev, ptr - n - prev);
18164 parser_str_cat(result, prev, ptr - prev);
18168 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18177 token->id = p->token_id;
18178 token->type_name = parser_token2char(p, t);
18180 token->loc.beg_pos = p->yylloc->beg_pos;
18181 token->loc.end_pos = p->yylloc->end_pos;
18182 rb_parser_ary_push_ast_token(p, p->tokens, token);
18187 rb_parser_printf(p,
"Append tokens (line: %d) [%d, :%s, \"%s\", [%d, %d, %d, %d]]\n",
18188 line, token->id, token->type_name, str_escaped->ptr,
18189 token->loc.beg_pos.lineno, token->loc.beg_pos.column,
18190 token->loc.end_pos.lineno, token->loc.end_pos.column);
18191 rb_parser_string_free(p, str_escaped);
18196parser_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t,
int line)
18198 debug_token_line(p,
"parser_dispatch_scan_event", line);
18200 if (!parser_has_token(p))
return;
18202 RUBY_SET_YYLLOC(*p->yylloc);
18204 if (p->keep_tokens) {
18205 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pcur - p->lex.ptok, p->enc);
18206 parser_append_tokens(p, str, t, line);
18212#define dispatch_delayed_token(p, t) parser_dispatch_delayed_token(p, t, __LINE__)
18214parser_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t,
int line)
18216 debug_token_line(p,
"parser_dispatch_delayed_token", line);
18218 if (!has_delayed_token(p))
return;
18220 RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(*p->yylloc);
18222 if (p->keep_tokens) {
18224 parser_append_tokens(p, p->delayed.token, t, line);
18227 rb_parser_string_free(p, p->delayed.token);
18230 p->delayed.token = NULL;
18233#define literal_flush(p, ptr) ((void)(ptr))
18238 if (p->lex.pcur < p->lex.ptok) rb_raise(
rb_eRuntimeError,
"lex.pcur < lex.ptok");
18239 return p->lex.pcur > p->lex.ptok;
18243ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
18245 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
18246 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
18247 RUBY_SET_YYLLOC(*p->yylloc);
18253ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
18255 if (!ripper_has_scan_event(p))
return;
18257 set_parser_s_value(ripper_scan_event_val(p, t));
18259#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
18262ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
18265 int saved_line = p->ruby_sourceline;
18266 const char *saved_tokp = p->lex.ptok;
18267 VALUE s_value, str;
18269 if (!has_delayed_token(p))
return;
18270 p->ruby_sourceline = p->delayed.beg_line;
18271 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
18272 str = rb_str_new_mutable_parser_string(p->delayed.token);
18273 rb_parser_string_free(p, p->delayed.token);
18274 s_value = ripper_dispatch1(p, ripper_token2eventid(t), str);
18275 set_parser_s_value(s_value);
18276 p->delayed.token = NULL;
18277 p->ruby_sourceline = saved_line;
18278 p->lex.ptok = saved_tokp;
18280#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
18286 return rb_enc_isalnum((
unsigned char)*ptr, enc) || *ptr ==
'_' || !
ISASCII(*ptr);
18292 const char *ptr = p->lex.pcur + at;
18293 if (lex_eol_ptr_n_p(p, ptr,
len-1))
return false;
18294 if (memcmp(ptr, str,
len))
return false;
18295 if (lex_eol_ptr_n_p(p, ptr,
len))
return true;
18296 return !is_identchar(p, ptr+
len, p->lex.pend, p->enc);
18302 return !(p)->eofp && is_identchar(p, p->lex.pcur-1, p->lex.pend, p->enc);
18308 return ISASCII(*(p->lex.pcur-1));
18314 int column = 1, nonspc = 0, i;
18315 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
18316 if (*ptr ==
'\t') {
18317 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
18320 if (*ptr !=
' ' && *ptr !=
'\t') {
18325 ptinfo->beg = loc->beg_pos;
18326 ptinfo->indent = column;
18327 ptinfo->nonspc = nonspc;
18335 if (!p->token_info_enabled)
return;
18337 ptinfo->token = token;
18338 ptinfo->next = p->token_info;
18339 token_info_setup(ptinfo, p->lex.pbeg, loc);
18341 p->token_info = ptinfo;
18349 if (!ptinfo_beg)
return;
18352 token_info_warn(p, token, ptinfo_beg, 1, loc);
18354 p->token_info = ptinfo_beg->next;
18355 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
18363 if (!ptinfo_beg)
return;
18364 p->token_info = ptinfo_beg->next;
18366 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
18367 ptinfo_beg->beg.column != beg_pos.column ||
18368 strcmp(ptinfo_beg->token, token)) {
18369 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
18370 beg_pos.lineno, beg_pos.column, token,
18371 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
18372 ptinfo_beg->token);
18375 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
18381 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
18382 if (!p->token_info_enabled)
return;
18383 if (!ptinfo_beg)
return;
18384 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
18385 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
18386 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
18387 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
18388 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
18389 rb_warn3L(ptinfo_end->beg.lineno,
18390 "mismatched indentations at '%s' with '%s' at %d",
18391 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
18395parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
18397 int len = rb_enc_precise_mbclen(ptr, p->lex.pend, p->enc);
18399 compile_error(p,
"invalid multibyte char (%s)", rb_enc_name(p->enc));
18410 int lineno = p->ruby_sourceline;
18414 else if (yylloc->beg_pos.lineno == lineno) {
18415 str = p->lex.lastline;
18420 ruby_show_error_line(p, p->error_buffer, yylloc, lineno, str);
18430 yylloc = RUBY_SET_YYLLOC(current);
18432 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
18433 p->ruby_sourceline != yylloc->end_pos.lineno)) {
18437 parser_compile_error(p, yylloc,
"%s", msg);
18438 parser_show_error_line(p, yylloc);
18446 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
18453 const int max_line_margin = 30;
18454 const char *ptr, *ptr_end, *pt, *pb;
18455 const char *pre =
"", *post =
"", *pend;
18456 const char *code =
"", *caret =
"";
18458 const char *
const pbeg = PARSER_STRING_PTR(str);
18463 if (!yylloc)
return;
18464 pend = rb_parser_string_end(str);
18465 if (pend > pbeg && pend[-1] ==
'\n') {
18466 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
18470 if (lineno == yylloc->end_pos.lineno &&
18471 (pend - pbeg) > yylloc->end_pos.column) {
18472 pt = pbeg + yylloc->end_pos.column;
18475 ptr = ptr_end = pt;
18476 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
18477 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
18479 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
18480 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
18482 len = ptr_end - ptr;
18485 ptr = rb_enc_prev_char(pbeg, ptr, pt, rb_parser_str_get_encoding(str));
18486 if (ptr > pbeg) pre =
"...";
18488 if (ptr_end < pend) {
18489 ptr_end = rb_enc_prev_char(pt, ptr_end, pend, rb_parser_str_get_encoding(str));
18490 if (ptr_end < pend) post =
"...";
18494 if (lineno == yylloc->beg_pos.lineno) {
18495 pb += yylloc->beg_pos.column;
18496 if (pb > pt) pb = pt;
18498 if (pb < ptr) pb = ptr;
18499 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
18502 if (
RTEST(errbuf)) {
18503 mesg = rb_attr_get(errbuf, idMesg);
18504 if (char_at_end(p, mesg,
'\n') !=
'\n')
18508 mesg = rb_enc_str_new(0, 0, rb_parser_str_get_encoding(str));
18510 if (!errbuf && rb_stderr_tty_p()) {
18511#define CSI_BEGIN "\033["
18514 CSI_BEGIN
""CSI_SGR
"%s"
18515 CSI_BEGIN
"1"CSI_SGR
"%.*s"
18516 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
18517 CSI_BEGIN
";1"CSI_SGR
"%.*s"
18518 CSI_BEGIN
""CSI_SGR
"%s"
18521 (
int)(pb - ptr), ptr,
18522 (
int)(pt - pb), pb,
18523 (
int)(ptr_end - pt), pt,
18529 len = ptr_end - ptr;
18530 lim = pt < pend ? pt : pend;
18531 i = (int)(lim - ptr);
18537 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
18543 memset(p2,
'~', (lim - ptr));
18547 rb_str_catf(mesg,
"%s%.*s%s\n""%s%s\n",
18548 pre, (
int)
len, code, post,
18551 if (!errbuf) rb_write_error_str(mesg);
18558 const char *pcur = 0, *ptok = 0;
18559 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
18560 p->ruby_sourceline == yylloc->end_pos.lineno) {
18561 pcur = p->lex.pcur;
18562 ptok = p->lex.ptok;
18563 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
18564 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
18566 parser_yyerror0(p, msg);
18568 p->lex.ptok = ptok;
18569 p->lex.pcur = pcur;
18577 dispatch1(parse_error, STR_NEW2(msg));
18589vtable_size(
const struct vtable *tbl)
18591 if (!DVARS_TERMINAL_P(tbl)) {
18609 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
18614#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
18617vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
18622 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
18625 if (!DVARS_TERMINAL_P(tbl)) {
18627 ruby_sized_xfree(tbl->tbl, tbl->capa *
sizeof(
ID));
18629 ruby_sized_xfree(tbl,
sizeof(*tbl));
18632#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
18635vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
18640 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
18641 line, name, (
void *)tbl, rb_id2name(
id));
18644 if (DVARS_TERMINAL_P(tbl)) {
18645 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
18648 if (tbl->pos == tbl->capa) {
18649 tbl->capa = tbl->capa * 2;
18650 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
18652 tbl->tbl[tbl->pos++] = id;
18654#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
18657vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
18658 struct vtable *tbl,
int n)
18661 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
18662 line, name, (
void *)tbl, n);
18664 if (tbl->pos < n) {
18665 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
18670#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
18673vtable_included(
const struct vtable * tbl,
ID id)
18677 if (!DVARS_TERMINAL_P(tbl)) {
18678 for (i = 0; i < tbl->pos; i++) {
18679 if (tbl->tbl[i] ==
id) {
18692 return strcmp(p->ruby_sourcefile,
"-e") == 0;
18699yycompile0(
VALUE arg)
18706 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string) && !e_option_supplied(p)) {
18710 if (p->debug_lines) {
18711 p->ast->body.script_lines = p->debug_lines;
18715#define RUBY_DTRACE_PARSE_HOOK(name) \
18716 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
18717 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
18719 RUBY_DTRACE_PARSE_HOOK(BEGIN);
18721 RUBY_DTRACE_PARSE_HOOK(END);
18723 p->debug_lines = 0;
18725 xfree(p->lex.strterm);
18726 p->lex.strterm = 0;
18727 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
18728 if (n || p->error_p) {
18729 VALUE mesg = p->error_buffer;
18731 mesg = syntax_error_new();
18733 if (!p->error_tolerant) {
18734 rb_set_errinfo(mesg);
18738 tree = p->eval_tree;
18740 tree = NEW_NIL(&NULL_LOC);
18745 NODE *body = parser_append_options(p, RNODE_SCOPE(tree)->nd_body);
18746 prelude = block_append(p, p->eval_tree_begin, body);
18747 RNODE_SCOPE(tree)->nd_body = prelude;
18748 p->ast->body.frozen_string_literal = p->frozen_string_literal;
18749 p->ast->body.coverage_enabled = cov;
18750 if (p->keep_tokens) {
18751 p->ast->node_buffer->tokens = tokens;
18755 p->ast->body.root = tree;
18756 p->ast->body.line_count = p->line_count;
18764 if (
NIL_P(fname)) {
18765 p->ruby_sourcefile_string =
Qnil;
18766 p->ruby_sourcefile =
"(none)";
18769 p->ruby_sourcefile_string = rb_str_to_interned_str(fname);
18772 p->ruby_sourceline = line - 1;
18776 p->ast = ast = rb_ast_new();
18777 compile_callback(yycompile0, (
VALUE)p);
18791 rb_encoding *enc = rb_parser_str_get_encoding(s);
18792 if (!rb_enc_asciicompat(enc)) {
18793 rb_raise(rb_eArgError,
"invalid source encoding");
18802 if (!line)
return 0;
18804 string_buffer_append(p, line);
18805 must_be_ascii_compatible(p, line);
18811rb_parser_compile(
rb_parser_t *p, rb_parser_lex_gets_func *gets,
VALUE fname, rb_parser_input_data input,
int line)
18813 p->lex.gets = gets;
18814 p->lex.input = input;
18815 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
18817 return yycompile(p, fname, line);
18821#define STR_FUNC_ESCAPE 0x01
18822#define STR_FUNC_EXPAND 0x02
18823#define STR_FUNC_REGEXP 0x04
18824#define STR_FUNC_QWORDS 0x08
18825#define STR_FUNC_SYMBOL 0x10
18826#define STR_FUNC_INDENT 0x20
18827#define STR_FUNC_LABEL 0x40
18828#define STR_FUNC_LIST 0x4000
18829#define STR_FUNC_TERM 0x8000
18832 str_label = STR_FUNC_LABEL,
18834 str_dquote = (STR_FUNC_EXPAND),
18835 str_xquote = (STR_FUNC_EXPAND),
18836 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
18837 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
18838 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
18839 str_ssym = (STR_FUNC_SYMBOL),
18840 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
18848 pstr = rb_parser_encoding_string_new(p, ptr,
len, enc);
18850 if (!(func & STR_FUNC_REGEXP)) {
18851 if (rb_parser_is_ascii_string(p, pstr)) {
18853 else if (rb_is_usascii_enc((
void *)enc0) && enc != rb_utf8_encoding()) {
18855 enc = rb_ascii8bit_encoding();
18856 PARSER_ENCODING_CODERANGE_SET(pstr, enc, RB_PARSER_ENC_CODERANGE_VALID);
18866 return strterm->heredoc;
18870new_strterm(
struct parser_params *p,
int func,
int term,
int paren)
18873 strterm->u.literal.func = func;
18874 strterm->u.literal.term = term;
18875 strterm->u.literal.paren = paren;
18883 strterm->heredoc =
true;
18887#define peek(p,c) peek_n(p, (c), 0)
18888#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
18889#define peekc(p) peekc_n(p, 0)
18890#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
18892#define add_delayed_token(p, tok, end) parser_add_delayed_token(p, tok, end, __LINE__)
18894parser_add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end,
int line)
18896 debug_token_line(p,
"add_delayed_token", line);
18899 if (has_delayed_token(p)) {
18900 bool next_line = parser_string_char_at_end(p, p->delayed.token, 0) ==
'\n';
18901 int end_line = (next_line ? 1 : 0) + p->delayed.end_line;
18902 int end_col = (next_line ? 0 : p->delayed.end_col);
18903 if (end_line != p->ruby_sourceline || end_col != tok - p->lex.pbeg) {
18904 dispatch_delayed_token(p, tSTRING_CONTENT);
18907 if (!has_delayed_token(p)) {
18908 p->delayed.token = rb_parser_string_new(p, 0, 0);
18909 rb_parser_enc_associate(p, p->delayed.token, p->enc);
18910 p->delayed.beg_line = p->ruby_sourceline;
18911 p->delayed.beg_col =
rb_long2int(tok - p->lex.pbeg);
18913 parser_str_cat(p->delayed.token, tok, end - tok);
18914 p->delayed.end_line = p->ruby_sourceline;
18915 p->delayed.end_col =
rb_long2int(end - p->lex.pbeg);
18923 p->lex.pbeg = p->lex.pcur = PARSER_STRING_PTR(str);
18924 p->lex.pend = p->lex.pcur + PARSER_STRING_LEN(str);
18925 p->lex.lastline = str;
18932 p->lex.nextline = 0;
18937 if (!lex_eol_ptr_p(p, p->lex.pbeg) && *(p->lex.pend-1) !=
'\n') {
18941 if (!p->lex.input || !(str = lex_getline(p))) {
18948 if (p->debug_lines) {
18949 if (set_encoding) rb_parser_enc_associate(p, str, p->enc);
18951 rb_parser_ary_push_script_line(p, p->debug_lines, copy);
18954 p->cr_seen = FALSE;
18956 else if (str == AFTER_HEREDOC_WITHOUT_TERMINATOR) {
18960 add_delayed_token(p, p->lex.ptok, p->lex.pend);
18961 if (p->heredoc_end > 0) {
18962 p->ruby_sourceline = p->heredoc_end;
18963 p->heredoc_end = 0;
18965 p->ruby_sourceline++;
18966 set_lastline(p, str);
18974 if (peek(p,
'\n')) {
18986 if (UNLIKELY(lex_eol_p(p) || p->eofp || p->lex.nextline > AFTER_HEREDOC_WITHOUT_TERMINATOR)) {
18987 if (nextline(p, set_encoding))
return -1;
18989 c = (
unsigned char)*p->lex.pcur++;
18990 if (UNLIKELY(c ==
'\r')) {
18991 c = parser_cr(p, c);
18996#define nextc(p) nextc0(p, TRUE)
19001 if (c == -1)
return;
19004 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
19009#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
19011#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
19012#define tok(p) (p)->tokenbuf
19013#define toklen(p) (p)->tokidx
19018 const char *ptr = p->lex.pcur;
19019 while (!lex_eol_ptr_p(p, ptr)) {
19020 int c = (
unsigned char)*ptr++;
19021 int eol = (c ==
'\n' || c ==
'#');
19033 if (!p->tokenbuf) {
19035 p->tokenbuf =
ALLOC_N(
char, 60);
19037 if (p->toksiz > 4096) {
19041 return p->tokenbuf;
19049 if (p->tokidx >= p->toksiz) {
19050 do {p->toksiz *= 2;}
while (p->toksiz < p->tokidx);
19051 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19053 return &p->tokenbuf[p->tokidx-n];
19059 p->tokenbuf[p->tokidx++] = (char)c;
19060 if (p->tokidx >= p->toksiz) {
19062 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19071 c = (int)ruby_scan_hex(p->lex.pcur, 2, numlen);
19074 yyerror0(
"invalid hex escape");
19075 dispatch_scan_event(p, tSTRING_CONTENT);
19078 p->lex.pcur += *numlen;
19082#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
19085escaped_control_code(
int c)
19111#define WARN_SPACE_CHAR(c, prefix) \
19112 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c))
19116 int regexp_literal,
const char *begin)
19118 const int wide = !begin;
19120 int codepoint = (int)ruby_scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
19122 p->lex.pcur += numlen;
19123 if (p->lex.strterm == NULL ||
19124 strterm_is_heredoc(p->lex.strterm) ||
19125 (p->lex.strterm->u.literal.func != str_regexp)) {
19126 if (!begin) begin = p->lex.pcur;
19127 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
19128 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19129 yyerror0(
"invalid Unicode escape");
19130 dispatch_scan_event(p, tSTRING_CONTENT);
19131 return wide && numlen > 0;
19133 if (codepoint > 0x10ffff) {
19134 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19135 yyerror0(
"invalid Unicode codepoint (too large)");
19136 dispatch_scan_event(p, tSTRING_CONTENT);
19139 if ((codepoint & 0xfffff800) == 0xd800) {
19140 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19141 yyerror0(
"invalid Unicode codepoint");
19142 dispatch_scan_event(p, tSTRING_CONTENT);
19146 if (regexp_literal) {
19147 tokcopy(p, (
int)numlen);
19149 else if (codepoint >= 0x80) {
19151 if (*encp && utf8 != *encp) {
19152 YYLTYPE loc = RUBY_INIT_YYLLOC();
19153 compile_error(p,
"UTF-8 mixed within %s source", rb_enc_name(*encp));
19154 parser_show_error_line(p, &loc);
19158 tokaddmbc(p, codepoint, *encp);
19161 tokadd(p, codepoint);
19171 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19173 p->lex.pcur +=
len - 1;
19181 int term,
int symbol_literal,
int regexp_literal)
19188 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
19190 const int open_brace =
'{', close_brace =
'}';
19192 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
19194 if (peek(p, open_brace)) {
19195 if (regexp_literal && p->lex.strterm->u.literal.func == str_regexp) {
19202 tokadd(p, open_brace);
19203 while (!lex_eol_ptr_p(p, ++p->lex.pcur)) {
19205 if (c == close_brace) {
19210 else if (c == term) {
19213 if (c ==
'\\' && !lex_eol_n_p(p, 1)) {
19215 c = *++p->lex.pcur;
19217 tokadd_mbchar(p, c);
19221 const char *second = NULL;
19222 int c, last = nextc(p);
19223 if (lex_eol_p(p))
goto unterminated;
19224 while (
ISSPACE(c = peekc(p)) && !lex_eol_ptr_p(p, ++p->lex.pcur));
19225 while (c != close_brace) {
19226 if (c == term)
goto unterminated;
19227 if (second == multiple_codepoints)
19228 second = p->lex.pcur;
19229 if (regexp_literal) tokadd(p, last);
19230 if (!tokadd_codepoint(p, encp, regexp_literal, NULL)) {
19233 while (
ISSPACE(c = peekc(p))) {
19234 if (lex_eol_ptr_p(p, ++p->lex.pcur))
goto unterminated;
19237 if (term == -1 && !second)
19238 second = multiple_codepoints;
19241 if (c != close_brace) {
19243 flush_string_content(p, rb_utf8_encoding(), 0);
19244 yyerror0(
"unterminated Unicode escape");
19245 dispatch_scan_event(p, tSTRING_CONTENT);
19248 if (second && second != multiple_codepoints) {
19249 const char *pcur = p->lex.pcur;
19250 p->lex.pcur = second;
19251 dispatch_scan_event(p, tSTRING_CONTENT);
19253 p->lex.pcur = pcur;
19254 yyerror0(multiple_codepoints);
19258 if (regexp_literal) tokadd(p, close_brace);
19263 if (!tokadd_codepoint(p, encp, regexp_literal, p->lex.pcur -
rb_strlen_lit(
"\\u"))) {
19270#define ESCAPE_CONTROL 1
19271#define ESCAPE_META 2
19274read_escape(
struct parser_params *p,
int flags,
const char *begin)
19279 switch (c = nextc(p)) {
19304 case '0':
case '1':
case '2':
case '3':
19305 case '4':
case '5':
case '6':
case '7':
19307 c = (int)ruby_scan_oct(p->lex.pcur, 3, &numlen);
19308 p->lex.pcur += numlen;
19312 c = tok_hex(p, &numlen);
19313 if (numlen == 0)
return 0;
19323 if (flags & ESCAPE_META)
goto eof;
19324 if ((c = nextc(p)) !=
'-') {
19327 if ((c = nextc(p)) ==
'\\') {
19328 switch (peekc(p)) {
19329 case 'u':
case 'U':
19333 return read_escape(p, flags|ESCAPE_META, begin) | 0x80;
19335 else if (c == -1)
goto eof;
19341 int c2 = escaped_control_code(c);
19343 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
19344 WARN_SPACE_CHAR(c2,
"\\M-");
19347 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
19350 else if (
ISCNTRL(c))
goto eof;
19351 return ((c & 0xff) | 0x80);
19355 if ((c = nextc(p)) !=
'-') {
19359 if (flags & ESCAPE_CONTROL)
goto eof;
19360 if ((c = nextc(p))==
'\\') {
19361 switch (peekc(p)) {
19362 case 'u':
case 'U':
19366 c = read_escape(p, flags|ESCAPE_CONTROL, begin);
19370 else if (c == -1)
goto eof;
19376 int c2 = escaped_control_code(c);
19379 if (flags & ESCAPE_META) {
19380 WARN_SPACE_CHAR(c2,
"\\M-");
19383 WARN_SPACE_CHAR(c2,
"");
19387 if (flags & ESCAPE_META) {
19388 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
19391 WARN_SPACE_CHAR(c2,
"\\C-");
19395 else if (
ISCNTRL(c))
goto eof;
19401 flush_string_content(p, p->enc, p->lex.pcur - begin);
19402 yyerror0(
"Invalid escape character syntax");
19403 dispatch_scan_event(p, tSTRING_CONTENT);
19418 int len = rb_enc_codelen(c, enc);
19419 rb_enc_mbcput(c, tokspace(p,
len), enc);
19427 const char *begin = p->lex.pcur;
19429 switch (c = nextc(p)) {
19433 case '0':
case '1':
case '2':
case '3':
19434 case '4':
case '5':
case '6':
case '7':
19436 ruby_scan_oct(--p->lex.pcur, 3, &numlen);
19437 if (numlen == 0)
goto eof;
19438 p->lex.pcur += numlen;
19439 tokcopy(p, (
int)numlen + 1);
19445 tok_hex(p, &numlen);
19446 if (numlen == 0)
return -1;
19447 tokcopy(p, (
int)numlen + 2);
19453 flush_string_content(p, p->enc, p->lex.pcur - begin);
19454 yyerror0(
"Invalid escape character syntax");
19466char_to_option(
int c)
19472 val = RE_ONIG_OPTION_IGNORECASE;
19475 val = RE_ONIG_OPTION_EXTEND;
19478 val = RE_ONIG_OPTION_MULTILINE;
19487#define ARG_ENCODING_FIXED 16
19488#define ARG_ENCODING_NONE 32
19489#define ENC_ASCII8BIT 1
19490#define ENC_EUC_JP 2
19491#define ENC_Windows_31J 3
19495char_to_option_kcode(
int c,
int *option,
int *kcode)
19501 *kcode = ENC_ASCII8BIT;
19502 return (*option = ARG_ENCODING_NONE);
19504 *kcode = ENC_EUC_JP;
19507 *kcode = ENC_Windows_31J;
19514 return (*option = char_to_option(c));
19516 *option = ARG_ENCODING_FIXED;
19529 while (c = nextc(p),
ISALPHA(c)) {
19531 options |= RE_OPTION_ONCE;
19533 else if (char_to_option_kcode(c, &opt, &kc)) {
19535 if (kc != ENC_ASCII8BIT) kcode = c;
19549 YYLTYPE loc = RUBY_INIT_YYLLOC();
19551 compile_error(p,
"unknown regexp option%s - %*s",
19552 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
19553 parser_show_error_line(p, &loc);
19555 return options | RE_OPTION_ENCODING(kcode);
19561 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19562 if (
len < 0)
return -1;
19564 p->lex.pcur += --
len;
19565 if (
len > 0) tokcopy(p,
len);
19570simple_re_meta(
int c)
19573 case '$':
case '*':
case '+':
case '.':
19574 case '?':
case '^':
case '|':
19575 case ')':
case ']':
case '}':
case '>':
19583parser_update_heredoc_indent(
struct parser_params *p,
int c)
19585 if (p->heredoc_line_indent == -1) {
19586 if (c ==
'\n') p->heredoc_line_indent = 0;
19590 p->heredoc_line_indent++;
19593 else if (c ==
'\t') {
19594 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
19595 p->heredoc_line_indent = w * TAB_WIDTH;
19598 else if (c !=
'\n') {
19599 if (p->heredoc_indent > p->heredoc_line_indent) {
19600 p->heredoc_indent = p->heredoc_line_indent;
19602 p->heredoc_line_indent = -1;
19606 p->heredoc_line_indent = 0;
19615 YYLTYPE loc = RUBY_INIT_YYLLOC();
19616 const char *n1 = rb_enc_name(enc1), *n2 = rb_enc_name(enc2);
19617 compile_error(p,
"%s mixed within %s source", n1, n2);
19618 parser_show_error_line(p, &loc);
19624 const char *pos = p->lex.pcur;
19626 parser_mixed_error(p, enc1, enc2);
19631nibble_char_upper(
unsigned int c)
19634 return c + (c < 10 ?
'0' :
'A' - 10);
19639 int func,
int term,
int paren,
long *nest,
19643 bool erred =
false;
19645 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
19646 int top_of_line = FALSE;
19649#define mixed_error(enc1, enc2) \
19650 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
19651#define mixed_escape(beg, enc1, enc2) \
19652 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
19654 while ((c = nextc(p)) != -1) {
19655 if (p->heredoc_indent > 0) {
19656 parser_update_heredoc_indent(p, c);
19659 if (top_of_line && heredoc_end == p->ruby_sourceline) {
19665 if (paren && c == paren) {
19668 else if (c == term) {
19669 if (!nest || !*nest) {
19675 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && !lex_eol_p(p)) {
19676 unsigned char c2 = *p->lex.pcur;
19677 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
19682 else if (c ==
'\\') {
19686 if (func & STR_FUNC_QWORDS)
break;
19687 if (func & STR_FUNC_EXPAND) {
19688 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
19699 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
19703 if ((func & STR_FUNC_EXPAND) == 0) {
19707 tokadd_utf8(p, enc, term,
19708 func & STR_FUNC_SYMBOL,
19709 func & STR_FUNC_REGEXP);
19713 if (c == -1)
return -1;
19715 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
19718 if (func & STR_FUNC_REGEXP) {
19724 c = read_escape(p, 0, p->lex.pcur - 1);
19729 *t++ = nibble_char_upper(c >> 4);
19730 *t++ = nibble_char_upper(c);
19735 if (c == term && !simple_re_meta(c)) {
19740 if ((c = tokadd_escape(p)) < 0)
19742 if (*enc && *enc != *encp) {
19743 mixed_escape(p->lex.ptok+2, *enc, *encp);
19747 else if (func & STR_FUNC_EXPAND) {
19749 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
19750 c = read_escape(p, 0, p->lex.pcur - 1);
19752 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
19755 else if (c != term && !(paren && c == paren)) {
19762 else if (!parser_isascii(p)) {
19767 else if (*enc != *encp) {
19768 mixed_error(*enc, *encp);
19771 if (tokadd_mbchar(p, c) == -1)
return -1;
19774 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
19782 else if (*enc != *encp) {
19783 mixed_error(*enc, *encp);
19789 top_of_line = (c ==
'\n');
19793 if (*enc) *encp = *enc;
19797#define NEW_STRTERM(func, term, paren) new_strterm(p, func, term, paren)
19802 p->lex.pcur -= back;
19803 if (has_delayed_token(p)) {
19804 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
19806 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
19807 p->delayed.end_line = p->ruby_sourceline;
19808 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
19810 dispatch_delayed_token(p, tSTRING_CONTENT);
19811 p->lex.ptok = p->lex.pcur;
19813 dispatch_scan_event(p, tSTRING_CONTENT);
19814 p->lex.pcur += back;
19820#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
19821#define SPECIAL_PUNCT(idx) ( \
19822 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
19823 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
19824 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
19825 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
19826 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
19828const uint_least32_t ruby_global_name_punct_bits[] = {
19834#undef SPECIAL_PUNCT
19837static enum yytokentype
19838parser_peek_variable_name(struct parser_params *p)
19841 const char *ptr = p->lex.pcur;
19843 if (lex_eol_ptr_n_p(p, ptr, 1)) return 0;
19847 if ((c = *ptr) == '-') {
19848 if (lex_eol_ptr_p(p, ++ptr)) return 0;
19851 else if (is_global_name_punct(c) || ISDIGIT(c)) {
19852 return tSTRING_DVAR;
19856 if ((c = *ptr) == '@') {
19857 if (lex_eol_ptr_p(p, ++ptr)) return 0;
19863 p->command_start = TRUE;
19864 yylval.state = p->lex.state;
19865 return tSTRING_DBEG;
19869 if (!ISASCII(c) || c == '_' || ISALPHA(c))
19870 return tSTRING_DVAR;
19874#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
19875#define IS_END() IS_lex_state(EXPR_END_ANY)
19876#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
19877#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
19878#define IS_LABEL_POSSIBLE() (\
19879 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
19881#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
19882#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
19884static inline enum yytokentype
19885parser_string_term(struct parser_params *p, int func)
19887 xfree(p->lex.strterm);
19888 p->lex.strterm = 0;
19889 if (func & STR_FUNC_REGEXP) {
19890 set_yylval_num(regx_options(p));
19891 dispatch_scan_event(p, tREGEXP_END);
19892 SET_LEX_STATE(EXPR_END);
19893 return tREGEXP_END;
19895 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
19897 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
19900 SET_LEX_STATE(EXPR_END);
19901 return tSTRING_END;
19904static enum yytokentype
19905parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
19907 int func = quote->func;
19908 int term = quote->term;
19909 int paren = quote->paren;
19911 rb_encoding *enc = p->enc;
19912 rb_encoding *base_enc = 0;
19913 rb_parser_string_t *lit;
19915 if (func & STR_FUNC_TERM) {
19916 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
19917 SET_LEX_STATE(EXPR_END);
19918 xfree(p->lex.strterm);
19919 p->lex.strterm = 0;
19920 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
19923 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
19924 while (c != '\n' && ISSPACE(c = nextc(p)));
19927 if (func & STR_FUNC_LIST) {
19928 quote->func &= ~STR_FUNC_LIST;
19931 if (c == term && !quote->nest) {
19932 if (func & STR_FUNC_QWORDS) {
19933 quote->func |= STR_FUNC_TERM;
19934 pushback(p, c); /* dispatch the term at tSTRING_END */
19935 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
19938 return parser_string_term(p, func);
19941 if (!ISSPACE(c)) pushback(p, c);
19942 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
19946 if ((func & STR_FUNC_EXPAND) && c == '#') {
19947 enum yytokentype t = parser_peek_variable_name(p);
19953 if (tokadd_string(p, func, term, paren, "e->nest,
19954 &enc, &base_enc) == -1) {
19957# define unterminated_literal(mesg) yyerror0(mesg)
19959# define unterminated_literal(mesg) compile_error(p, mesg)
19961 literal_flush(p, p->lex.pcur);
19962 if (func & STR_FUNC_QWORDS) {
19963 /* no content to add, bailing out here */
19964 unterminated_literal("unterminated list meets end of file");
19965 xfree(p->lex.strterm);
19966 p->lex.strterm = 0;
19967 return tSTRING_END;
19969 if (func & STR_FUNC_REGEXP) {
19970 unterminated_literal("unterminated regexp meets end of file");
19973 unterminated_literal("unterminated string meets end of file");
19975 quote->func |= STR_FUNC_TERM;
19980 lit = STR_NEW3(tok(p), toklen(p), enc, func);
19981 set_yylval_str(lit);
19982 flush_string_content(p, enc, 0);
19984 return tSTRING_CONTENT;
19987static enum yytokentype
19988heredoc_identifier(struct parser_params *p)
19991 * term_len is length of `<<"END"` except `END`,
19992 * in this case term_len is 4 (<, <, " and ").
19994 long len, offset = p->lex.pcur - p->lex.pbeg;
19995 int c = nextc(p), term, func = 0, quote = 0;
19996 enum yytokentype token = tSTRING_BEG;
20001 func = STR_FUNC_INDENT;
20004 else if (c == '~') {
20006 func = STR_FUNC_INDENT;
20012 func |= str_squote; goto quoted;
20014 func |= str_dquote;
goto quoted;
20016 token = tXSTRING_BEG;
20017 func |= str_xquote;
goto quoted;
20024 while ((c = nextc(p)) != term) {
20025 if (c == -1 || c ==
'\r' || c ==
'\n') {
20026 yyerror0(
"unterminated here document identifier");
20033 if (!parser_is_identchar(p)) {
20035 if (func & STR_FUNC_INDENT) {
20036 pushback(p, indent > 0 ?
'~' :
'-');
20040 func |= str_dquote;
20042 int n = parser_precise_mbclen(p, p->lex.pcur-1);
20043 if (n < 0)
return 0;
20044 p->lex.pcur += --n;
20045 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
20050 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
20051 if ((
unsigned long)
len >= HERETERM_LENGTH_MAX)
20052 yyerror0(
"too long here document identifier");
20053 dispatch_scan_event(p, tHEREDOC_BEG);
20056 p->lex.strterm = new_heredoc(p);
20058 here->offset = offset;
20059 here->sourceline = p->ruby_sourceline;
20060 here->length = (unsigned)
len;
20061 here->quote = quote;
20063 here->lastline = p->lex.lastline;
20066 p->heredoc_indent = indent;
20067 p->heredoc_line_indent = 0;
20077 p->lex.strterm = 0;
20078 line = here->lastline;
20079 p->lex.lastline = line;
20080 p->lex.pbeg = PARSER_STRING_PTR(line);
20081 p->lex.pend = p->lex.pbeg + PARSER_STRING_LEN(line);
20082 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
20083 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
20084 p->heredoc_end = p->ruby_sourceline;
20085 p->ruby_sourceline = (int)here->sourceline;
20086 if (p->eofp) p->lex.nextline = AFTER_HEREDOC_WITHOUT_TERMINATOR;
20092dedent_string_column(
const char *str,
long len,
int width)
20096 for (i = 0; i <
len && col < width; i++) {
20097 if (str[i] ==
' ') {
20100 else if (str[i] ==
'\t') {
20101 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
20102 if (n > width)
break;
20120 len = PARSER_STRING_LEN(
string);
20121 str = PARSER_STRING_PTR(
string);
20123 i = dedent_string_column(str,
len, width);
20126 rb_parser_str_modify(
string);
20127 str = PARSER_STRING_PTR(
string);
20128 if (PARSER_STRING_LEN(
string) !=
len)
20129 rb_fatal(
"literal string changed: %s", PARSER_STRING_PTR(
string));
20131 rb_parser_str_set_len(p,
string,
len - i);
20138 NODE *node, *str_node, *prev_node;
20139 int indent = p->heredoc_indent;
20142 if (indent <= 0)
return root;
20143 if (!root)
return root;
20145 prev_node = node = str_node = root;
20146 if (nd_type_p(root, NODE_LIST)) str_node = RNODE_LIST(root)->nd_head;
20150 if (nd_fl_newline(str_node)) {
20151 dedent_string(p, lit, indent);
20156 else if (!literal_concat0(p, prev_lit, lit)) {
20160 NODE *end = RNODE_LIST(node)->as.nd_end;
20161 node = RNODE_LIST(prev_node)->nd_next = RNODE_LIST(node)->nd_next;
20163 if (nd_type_p(prev_node, NODE_DSTR))
20164 nd_set_type(prev_node, NODE_STR);
20167 RNODE_LIST(node)->as.nd_end = end;
20172 while ((nd_type_p(node, NODE_LIST) || nd_type_p(node, NODE_DSTR)) && (node = RNODE_LIST(prev_node = node)->nd_next) != 0) {
20174 if (!nd_type_p(node, NODE_LIST))
break;
20175 if ((str_node = RNODE_LIST(node)->nd_head) != 0) {
20176 enum node_type
type = nd_type(str_node);
20177 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
20187whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
20189 const char *beg = p->lex.pbeg;
20190 const char *ptr = p->lex.pend;
20192 if (ptr - beg <
len)
return FALSE;
20193 if (ptr > beg && ptr[-1] ==
'\n') {
20194 if (--ptr > beg && ptr[-1] ==
'\r') --ptr;
20195 if (ptr - beg <
len)
return FALSE;
20197 if (strncmp(eos, ptr -=
len,
len))
return FALSE;
20199 while (beg < ptr &&
ISSPACE(*beg)) beg++;
20207 if (strncmp(p->lex.pcur, word,
len))
return 0;
20208 if (lex_eol_n_p(p,
len))
return 1;
20209 int c = (
unsigned char)p->lex.pcur[
len];
20212 case '\0':
case '\004':
case '\032':
return 1;
20217#define NUM_SUFFIX_R (1<<0)
20218#define NUM_SUFFIX_I (1<<1)
20219#define NUM_SUFFIX_ALL 3
20225 const char *lastp = p->lex.pcur;
20227 while ((c = nextc(p)) != -1) {
20228 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
20229 result |= (mask & NUM_SUFFIX_I);
20230 mask &= ~NUM_SUFFIX_I;
20232 mask &= ~NUM_SUFFIX_R;
20235 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
20236 result |= (mask & NUM_SUFFIX_R);
20237 mask &= ~NUM_SUFFIX_R;
20241 p->lex.pcur = lastp;
20242 literal_flush(p, p->lex.pcur);
20251static enum yytokentype
20252set_number_literal(
struct parser_params *p,
enum yytokentype
type,
int suffix,
int base,
int seen_point)
20254 enum rb_numeric_type numeric_type = integer_literal;
20256 if (
type == tFLOAT) {
20257 numeric_type = float_literal;
20260 if (suffix & NUM_SUFFIX_R) {
20262 numeric_type = rational_literal;
20264 if (suffix & NUM_SUFFIX_I) {
20270 set_yylval_node(NEW_INTEGER(
strdup(tok(p)), base, &_cur_loc));
20273 set_yylval_node(NEW_FLOAT(
strdup(tok(p)), &_cur_loc));
20276 set_yylval_node(NEW_RATIONAL(
strdup(tok(p)), base, seen_point, &_cur_loc));
20279 set_yylval_node(NEW_IMAGINARY(
strdup(tok(p)), base, seen_point, numeric_type, &_cur_loc));
20280 (void)numeric_type;
20283 rb_bug(
"unexpected token: %d",
type);
20285 SET_LEX_STATE(EXPR_END);
20289#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
20291parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
20293 if (has_delayed_token(p))
20294 dispatch_delayed_token(p, tSTRING_CONTENT);
20297 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
20298 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
20300 if (p->keep_tokens) {
20301 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pend - p->lex.ptok, p->enc);
20302 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
20303 parser_append_tokens(p, str, tHEREDOC_END, line);
20307 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
20312static enum yytokentype
20315 int c, func, indent = 0;
20316 const char *eos, *ptr, *ptr_end;
20326 eos = PARSER_STRING_PTR(here->lastline) + here->offset;
20327 len = here->length;
20328 indent = (func = here->func) & STR_FUNC_INDENT;
20330 if ((c = nextc(p)) == -1) {
20333 if (!has_delayed_token(p)) {
20334 dispatch_scan_event(p, tSTRING_CONTENT);
20336 else if (p->delayed.end_line + 1 == p->ruby_sourceline) {
20337 if ((
len = p->lex.pcur - p->lex.ptok) > 0) {
20338 if (!(func & STR_FUNC_REGEXP)) {
20342 rb_is_usascii_enc(p->enc) &&
20343 enc != rb_utf8_encoding()) {
20344 enc = rb_ascii8bit_encoding();
20347 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20349 dispatch_delayed_token(p, tSTRING_CONTENT);
20352 dispatch_delayed_token(p, tSTRING_CONTENT);
20353 dispatch_scan_event(p, tSTRING_CONTENT);
20357 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20358 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
20361 SET_LEX_STATE(EXPR_END);
20362 return tSTRING_END;
20368 else if (p->heredoc_line_indent == -1) {
20373 p->heredoc_line_indent = 0;
20375 else if (whole_match_p(p, eos,
len, indent)) {
20376 dispatch_heredoc_end(p);
20378 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20380 SET_LEX_STATE(EXPR_END);
20381 return tSTRING_END;
20384 if (!(func & STR_FUNC_EXPAND)) {
20386 ptr = PARSER_STRING_PTR(p->lex.lastline);
20387 ptr_end = p->lex.pend;
20388 if (ptr_end > ptr) {
20389 switch (ptr_end[-1]) {
20391 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
20400 if (p->heredoc_indent > 0) {
20402 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
20404 p->heredoc_line_indent = 0;
20408 parser_str_cat(str, ptr, ptr_end - ptr);
20410 str = rb_parser_encoding_string_new(p, ptr, ptr_end - ptr, enc);
20411 if (!lex_eol_ptr_p(p, ptr_end)) parser_str_cat_cstr(str,
"\n");
20413 if (p->heredoc_indent > 0) {
20416 if (nextc(p) == -1) {
20418 rb_parser_string_free(p, str);
20423 }
while (!whole_match_p(p, eos,
len, indent));
20429 enum yytokentype t = parser_peek_variable_name(p);
20430 if (p->heredoc_line_indent != -1) {
20431 if (p->heredoc_indent > p->heredoc_line_indent) {
20432 p->heredoc_indent = p->heredoc_line_indent;
20434 p->heredoc_line_indent = -1;
20443 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
20444 if (p->eofp)
goto error;
20448 if (c ==
'\\') p->heredoc_line_indent = -1;
20450 str = STR_NEW3(tok(p), toklen(p), enc, func);
20452 set_yylval_str(str);
20454 if (bol) nd_set_fl_newline(yylval.node);
20456 flush_string_content(p, enc, 0);
20457 return tSTRING_CONTENT;
20459 tokadd(p, nextc(p));
20460 if (p->heredoc_indent > 0) {
20465 if ((c = nextc(p)) == -1)
goto error;
20466 }
while (!whole_match_p(p, eos,
len, indent));
20467 str = STR_NEW3(tok(p), toklen(p), enc, func);
20469 dispatch_heredoc_end(p);
20470 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20472 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
20475 s_value = p->s_value;
20477 set_yylval_str(str);
20479 set_parser_s_value(s_value);
20483 if (bol) nd_set_fl_newline(yylval.node);
20485 return tSTRING_CONTENT;
20495 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after '%c' operator", WARN_I(c));
20498 rb_warning1(
"ambiguous first argument; put parentheses or a space even after '%c' operator", WARN_I(c));
20511 switch (id_type(
id)) {
20515# define ERR(mesg) (yyerror0(mesg), Qtrue)
20517# define ERR(mesg) WARN_S(mesg)
20520 return ERR(
"formal argument cannot be a constant");
20522 return ERR(
"formal argument cannot be an instance variable");
20524 return ERR(
"formal argument cannot be a global variable");
20526 return ERR(
"formal argument cannot be a class variable");
20528 return ERR(
"formal argument must be local variable");
20531 shadowing_lvar(p,
id);
20539 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
20548 if (
len > 5 && name[nlen =
len - 5] ==
'-') {
20549 if (rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
20552 if (
len > 4 && name[nlen =
len - 4] ==
'-') {
20553 if (rb_memcicmp(name + nlen + 1,
"dos", 3) == 0)
20555 if (rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
20556 !(
len == 8 && rb_memcicmp(name,
"utf8-mac",
len) == 0))
20564parser_set_encode(
struct parser_params *p,
const char *name)
20570 const char *wrong = 0;
20572 case 'e':
case 'E': wrong =
"external";
break;
20573 case 'i':
case 'I': wrong =
"internal";
break;
20574 case 'f':
case 'F': wrong =
"filesystem";
break;
20575 case 'l':
case 'L': wrong =
"locale";
break;
20577 if (wrong &&
STRCASECMP(name, wrong) == 0)
goto unknown;
20578 idx = rb_enc_find_index(name);
20581 excargs[1] = rb_sprintf(
"unknown encoding name: %s", name);
20583 excargs[0] = rb_eArgError;
20584 excargs[2] = rb_make_backtrace();
20585 rb_ary_unshift(excargs[2], rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
20586 VALUE exc = rb_make_exception(3, excargs);
20587 ruby_show_error_line(p, exc, &(
YYLTYPE)RUBY_INIT_YYLLOC(), p->ruby_sourceline, p->lex.lastline);
20589 rb_ast_free(p->ast);
20594 enc = rb_enc_from_index(idx);
20595 if (!rb_enc_asciicompat(enc)) {
20596 excargs[1] = rb_sprintf(
"%s is not ASCII compatible", rb_enc_name(enc));
20601 if (p->debug_lines) {
20603 for (i = 0; i < p->debug_lines->len; i++) {
20604 rb_parser_enc_associate(p, p->debug_lines->data[i], enc);
20613 if (p->token_seen)
return false;
20614 return (p->line_count == (p->has_shebang ? 2 : 1));
20617typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
20618typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
20620static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
20623magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
20625 if (!comment_at_top(p)) {
20628 parser_set_encode(p, val);
20632parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
20635 case 't':
case 'T':
20640 case 'f':
case 'F':
20646 return parser_invalid_pragma_value(p, name, val);
20650parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
20652 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
20657parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
20659 int b = parser_get_bool(p, name, val);
20660 if (b >= 0) p->token_info_enabled = b;
20664parser_set_frozen_string_literal(
struct parser_params *p,
const char *name,
const char *val)
20668 if (p->token_seen) {
20669 rb_warning1(
"'%s' is ignored after any tokens", WARN_S(name));
20673 b = parser_get_bool(p, name, val);
20676 p->frozen_string_literal = b;
20680parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
20682 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
20683 if (*s ==
' ' || *s ==
'\t')
continue;
20684 if (*s ==
'#')
break;
20685 rb_warning1(
"'%s' is ignored unless in comment-only line", WARN_S(name));
20690 case 'n':
case 'N':
20692 p->ctxt.shareable_constant_value = rb_parser_shareable_none;
20696 case 'l':
case 'L':
20698 p->ctxt.shareable_constant_value = rb_parser_shareable_literal;
20702 case 'e':
case 'E':
20703 if (
STRCASECMP(val,
"experimental_copy") == 0) {
20704 p->ctxt.shareable_constant_value = rb_parser_shareable_copy;
20707 if (
STRCASECMP(val,
"experimental_everything") == 0) {
20708 p->ctxt.shareable_constant_value = rb_parser_shareable_everything;
20713 parser_invalid_pragma_value(p, name, val);
20716# if WARN_PAST_SCOPE
20718parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
20720 int b = parser_get_bool(p, name, val);
20721 if (b >= 0) p->past_scope_enabled = b;
20727 rb_magic_comment_setter_t func;
20728 rb_magic_comment_length_t length;
20732 {
"coding", magic_comment_encoding, parser_encode_length},
20733 {
"encoding", magic_comment_encoding, parser_encode_length},
20734 {
"frozen_string_literal", parser_set_frozen_string_literal},
20735 {
"shareable_constant_value", parser_set_shareable_constant_value},
20736 {
"warn_indent", parser_set_token_info},
20737# if WARN_PAST_SCOPE
20738 {
"warn_past_scope", parser_set_past_scope},
20743magic_comment_marker(
const char *str,
long len)
20750 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
20751 return str + i + 1;
20756 if (i + 1 >=
len)
return 0;
20757 if (str[i+1] !=
'-') {
20760 else if (str[i-1] !=
'-') {
20764 return str + i + 2;
20779 VALUE name = 0, val = 0;
20780 const char *beg, *end, *vbeg, *vend;
20781#define str_copy(_s, _p, _n) ((_s) \
20782 ? (void)(rb_str_resize((_s), (_n)), \
20783 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
20784 : (void)((_s) = STR_NEW((_p), (_n))))
20786 if (
len <= 7)
return FALSE;
20787 if (!!(beg = magic_comment_marker(str,
len))) {
20788 if (!(end = magic_comment_marker(beg, str +
len - beg)))
20792 len = end - beg - 3;
20802 for (;
len > 0 && *str; str++, --
len) {
20804 case '\'':
case '"':
case ':':
case ';':
20809 for (beg = str;
len > 0; str++, --
len) {
20811 case '\'':
case '"':
case ':':
case ';':
20822 if (!indicator)
return FALSE;
20826 do str++;
while (--
len > 0 &&
ISSPACE(*str));
20828 const char *tok_beg = str;
20830 for (vbeg = ++str; --
len > 0 && *str !=
'"'; str++) {
20831 if (*str ==
'\\') {
20843 for (vbeg = str;
len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --
len, str++);
20846 const char *tok_end = str;
20848 while (
len > 0 && (*str ==
';' ||
ISSPACE(*str))) --
len, str++;
20852 if (
len)
return FALSE;
20856 str_copy(name, beg, n);
20857 s = RSTRING_PTR(name);
20858 for (i = 0; i < n; ++i) {
20859 if (s[i] ==
'-') s[i] =
'_';
20862 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
20865 n = (*mc->length)(p, vbeg, n);
20867 str_copy(val, vbeg, n);
20868 p->lex.ptok = tok_beg;
20869 p->lex.pcur = tok_end;
20870 (*mc->func)(p, mc->name, RSTRING_PTR(val));
20873 }
while (++mc < magic_comments + numberof(magic_comments));
20875 str_copy(val, vbeg, vend - vbeg);
20884set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
20887 const char *beg = str;
20891 if (send - str <= 6)
return;
20893 case 'C':
case 'c': str += 6;
continue;
20894 case 'O':
case 'o': str += 5;
continue;
20895 case 'D':
case 'd': str += 4;
continue;
20896 case 'I':
case 'i': str += 3;
continue;
20897 case 'N':
case 'n': str += 2;
continue;
20898 case 'G':
case 'g': str += 1;
continue;
20899 case '=':
case ':':
20913 if (++str >= send)
return;
20916 if (*str !=
'=' && *str !=
':')
return;
20921 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
20922 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
20925 parser_set_encode(p, RSTRING_PTR(s));
20926 rb_str_resize(s, 0);
20932 int c = nextc0(p, FALSE);
20936 if (peek(p,
'!')) p->has_shebang = 1;
20939 if (!lex_eol_n_p(p, 2) &&
20940 (
unsigned char)p->lex.pcur[0] == 0xbb &&
20941 (
unsigned char)p->lex.pcur[1] == 0xbf) {
20942 p->enc = rb_utf8_encoding();
20945 if (p->debug_lines) {
20946 rb_parser_string_set_encoding(p->lex.lastline, p->enc);
20949 p->lex.pbeg = p->lex.pcur;
20958 p->enc = rb_parser_str_get_encoding(p->lex.lastline);
20962#define ambiguous_operator(tok, op, syn) ( \
20963 rb_warning0("'"op"' after local variable or literal is interpreted as binary operator"), \
20964 rb_warning0("even though it seems like "syn""))
20966#define ambiguous_operator(tok, op, syn) \
20967 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
20969#define warn_balanced(tok, op, syn) ((void) \
20970 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
20971 space_seen && !ISSPACE(c) && \
20972 (ambiguous_operator(tok, op, syn), 0)), \
20973 (enum yytokentype)(tok))
20975static enum yytokentype
20978 yyerror0(
"numeric literal without digits");
20979 if (peek(p,
'_')) nextc(p);
20981 return set_number_literal(p, tINTEGER, 0, 10, 0);
20984static enum yytokentype
20987 int is_float, seen_point, seen_e, nondigit;
20990 is_float = seen_point = seen_e = nondigit = 0;
20991 SET_LEX_STATE(EXPR_END);
20993 if (c ==
'-' || c ==
'+') {
20998 int start = toklen(p);
21000 if (c ==
'x' || c ==
'X') {
21006 if (nondigit)
break;
21013 }
while ((c = nextc(p)) != -1);
21017 if (toklen(p) == start) {
21018 return no_digits(p);
21020 else if (nondigit)
goto trailing_uc;
21021 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21022 return set_number_literal(p, tINTEGER, suffix, 16, 0);
21024 if (c ==
'b' || c ==
'B') {
21027 if (c ==
'0' || c ==
'1') {
21030 if (nondigit)
break;
21034 if (c !=
'0' && c !=
'1')
break;
21037 }
while ((c = nextc(p)) != -1);
21041 if (toklen(p) == start) {
21042 return no_digits(p);
21044 else if (nondigit)
goto trailing_uc;
21045 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21046 return set_number_literal(p, tINTEGER, suffix, 2, 0);
21048 if (c ==
'd' || c ==
'D') {
21054 if (nondigit)
break;
21061 }
while ((c = nextc(p)) != -1);
21065 if (toklen(p) == start) {
21066 return no_digits(p);
21068 else if (nondigit)
goto trailing_uc;
21069 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21070 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21076 if (c ==
'o' || c ==
'O') {
21079 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
21081 return no_digits(p);
21084 if (c >=
'0' && c <=
'7') {
21089 if (nondigit)
break;
21093 if (c <
'0' || c >
'9')
break;
21094 if (c >
'7')
goto invalid_octal;
21097 }
while ((c = nextc(p)) != -1);
21098 if (toklen(p) > start) {
21101 if (nondigit)
goto trailing_uc;
21102 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21103 return set_number_literal(p, tINTEGER, suffix, 8, 0);
21110 if (c >
'7' && c <=
'9') {
21112 yyerror0(
"Invalid octal digit");
21114 else if (c ==
'.' || c ==
'e' || c ==
'E') {
21120 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21121 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21127 case '0':
case '1':
case '2':
case '3':
case '4':
21128 case '5':
case '6':
case '7':
case '8':
case '9':
21134 if (nondigit)
goto trailing_uc;
21135 if (seen_point || seen_e) {
21140 if (c0 == -1 || !
ISDIGIT(c0)) {
21146 seen_point = toklen(p);
21165 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
21171 tokadd(p, nondigit);
21175 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
21179 if (nondigit)
goto decode_num;
21193 literal_flush(p, p->lex.pcur - 1);
21194 YYLTYPE loc = RUBY_INIT_YYLLOC();
21195 compile_error(p,
"trailing '%c' in number", nondigit);
21196 parser_show_error_line(p, &loc);
21200 enum yytokentype
type = tFLOAT;
21202 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
21203 if (suffix & NUM_SUFFIX_R) {
21208 if (
errno == ERANGE) {
21209 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
21213 return set_number_literal(p,
type, suffix, 0, seen_point);
21215 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21216 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21219static enum yytokentype
21225 const char *start = p->lex.pcur;
21228 SET_LEX_STATE(EXPR_VALUE);
21233 compile_error(p,
"incomplete character syntax");
21236 if (rb_enc_isspace(c, p->enc)) {
21238 int c2 = escaped_control_code(c);
21240 WARN_SPACE_CHAR(c2,
"?");
21245 SET_LEX_STATE(EXPR_VALUE);
21250 int w = parser_precise_mbclen(p, start);
21251 if (is_identchar(p, start, p->lex.pend, p->enc) &&
21252 !(lex_eol_ptr_n_p(p, start, w) || !is_identchar(p, start + w, p->lex.pend, p->enc))) {
21254 const char *ptr = start;
21256 int n = parser_precise_mbclen(p, ptr);
21257 if (n < 0)
return -1;
21259 }
while (!lex_eol_ptr_p(p, ptr) && is_identchar(p, ptr, p->lex.pend, p->enc));
21260 rb_warn2(
"'?' just followed by '%.*s' is interpreted as" \
21261 " a conditional operator, put a space after '?'",
21262 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
21266 else if (c ==
'\\') {
21267 if (peek(p,
'u')) {
21269 enc = rb_utf8_encoding();
21270 tokadd_utf8(p, &enc, -1, 0, 0);
21272 else if (!
ISASCII(c = peekc(p)) && c != -1) {
21274 if (tokadd_mbchar(p, c) == -1)
return 0;
21282 if (tokadd_mbchar(p, c) == -1)
return 0;
21285 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
21286 set_yylval_str(lit);
21287 SET_LEX_STATE(EXPR_END);
21291static enum yytokentype
21292parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
21295 const char *ptok = p->lex.pcur;
21303 if (c == -1)
goto unterminated;
21306 if (!
ISASCII(c))
goto unknown;
21311 if (rb_enc_isalnum(term, p->enc) || !parser_isascii(p)) {
21314 c = parser_precise_mbclen(p, p->lex.pcur);
21315 if (c < 0)
return 0;
21317 yyerror0(
"unknown type of %string");
21323 compile_error(p,
"unterminated quoted string meets end of file");
21327 if (term ==
'(') term =
')';
21328 else if (term ==
'[') term =
']';
21329 else if (term ==
'{') term =
'}';
21330 else if (term ==
'<') term =
'>';
21333 p->lex.ptok = ptok-1;
21336 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
21337 return tSTRING_BEG;
21340 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
21341 return tSTRING_BEG;
21344 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21348 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21349 return tQWORDS_BEG;
21352 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21353 return tSYMBOLS_BEG;
21356 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21357 return tQSYMBOLS_BEG;
21360 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
21361 return tXSTRING_BEG;
21364 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
21365 return tREGEXP_BEG;
21368 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
21369 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
21373 yyerror0(
"unknown type of %string");
21377 if ((c = nextc(p)) ==
'=') {
21378 set_yylval_id(
'%');
21379 SET_LEX_STATE(EXPR_BEG);
21382 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
21385 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21387 return warn_balanced(
'%',
"%%",
"string literal");
21394 if (tokadd_mbchar(p, c) == -1)
return -1;
21396 }
while (parser_is_identchar(p));
21404 ID ident = TOK_INTERN();
21406 set_yylval_name(ident);
21416 unsigned long n = ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &
len, &overflow);
21417 const unsigned long nth_ref_max =
21418 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
21422 if (overflow || n > nth_ref_max) {
21424 rb_warn1(
"'%s' is too big for a number variable, always nil", WARN_S(tok(p)));
21432static enum yytokentype
21433parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
21435 const char *ptr = p->lex.pcur;
21438 SET_LEX_STATE(EXPR_END);
21439 p->lex.ptok = ptr - 1;
21445 if (parser_is_identchar(p)) {
21477 if (parser_is_identchar(p)) {
21478 if (tokadd_mbchar(p, c) == -1)
return 0;
21493 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
21498 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
21501 case '1':
case '2':
case '3':
21502 case '4':
case '5':
case '6':
21503 case '7':
case '8':
case '9':
21508 }
while (c != -1 &&
ISDIGIT(c));
21510 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
21512 c = parse_numvar(p);
21513 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
21517 if (!parser_is_identchar(p)) {
21518 YYLTYPE loc = RUBY_INIT_YYLLOC();
21520 compile_error(p,
"'$' without identifiers is not allowed as a global variable name");
21524 compile_error(p,
"'$%c' is not allowed as a global variable name", c);
21526 parser_show_error_line(p, &loc);
21527 set_yylval_noname();
21535 if (tokadd_ident(p, c))
return 0;
21536 SET_LEX_STATE(EXPR_END);
21537 if (VALID_SYMNAME_P(tok(p), toklen(p), p->enc, ID_GLOBAL)) {
21541 compile_error(p,
"'%.*s' is not allowed as a global variable name", toklen(p), tok(p));
21542 set_yylval_noname();
21550 if (n < 0)
return false;
21552 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
21555 if (p->max_numparam == ORDINAL_PARAM) {
21556 compile_error(p,
"ordinary parameter is defined");
21559 struct vtable *args = p->lvtbl->args;
21560 if (p->max_numparam < n) {
21561 p->max_numparam = n;
21563 while (n > args->pos) {
21564 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
21569static enum yytokentype
21570parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
21572 const char *ptr = p->lex.pcur;
21573 enum yytokentype result = tIVAR;
21574 register int c = nextc(p);
21577 p->lex.ptok = ptr - 1;
21585 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
21586 if (c == -1 || !parser_is_identchar(p)) {
21588 RUBY_SET_YYLLOC(loc);
21589 if (result == tIVAR) {
21590 compile_error(p,
"'@' without identifiers is not allowed as an instance variable name");
21593 compile_error(p,
"'@@' without identifiers is not allowed as a class variable name");
21595 parser_show_error_line(p, &loc);
21596 set_yylval_noname();
21597 SET_LEX_STATE(EXPR_END);
21602 RUBY_SET_YYLLOC(loc);
21603 if (result == tIVAR) {
21604 compile_error(p,
"'@%c' is not allowed as an instance variable name", c);
21607 compile_error(p,
"'@@%c' is not allowed as a class variable name", c);
21609 parser_show_error_line(p, &loc);
21610 set_yylval_noname();
21611 SET_LEX_STATE(EXPR_END);
21615 if (tokadd_ident(p, c))
return 0;
21620static enum yytokentype
21623 enum yytokentype result;
21624 bool is_ascii =
true;
21625 const enum lex_state_e last_state = p->lex.state;
21627 int enforce_keyword_end = 0;
21630 if (!
ISASCII(c)) is_ascii =
false;
21631 if (tokadd_mbchar(p, c) == -1)
return 0;
21633 }
while (parser_is_identchar(p));
21634 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
21638 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
21639 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
21640 result = tIDENTIFIER;
21644 result = tCONSTANT;
21649 if (IS_LABEL_POSSIBLE()) {
21650 if (IS_LABEL_SUFFIX(0)) {
21651 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
21659 if (peek_end_expect_token_locations(p)) {
21661 int lineno, column;
21662 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
21664 end_pos = peek_end_expect_token_locations(p)->pos;
21665 lineno = end_pos->lineno;
21666 column = end_pos->column;
21669 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
21670 p->ruby_sourceline, beg_pos, lineno, column);
21673 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
21676 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
21677 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
21678 enforce_keyword_end = 1;
21684 if (is_ascii && (!IS_lex_state(EXPR_DOT) || enforce_keyword_end)) {
21688 kw = rb_reserved_word(tok(p), toklen(p));
21690 enum lex_state_e state = p->lex.state;
21691 if (IS_lex_state_for(state, EXPR_FNAME)) {
21692 SET_LEX_STATE(EXPR_ENDFN);
21693 set_yylval_name(rb_intern2(tok(p), toklen(p)));
21696 SET_LEX_STATE(kw->state);
21697 if (IS_lex_state(EXPR_BEG)) {
21698 p->command_start = TRUE;
21700 if (kw->id[0] == keyword_do) {
21701 if (lambda_beginning_p()) {
21702 p->lex.lpar_beg = -1;
21703 return keyword_do_LAMBDA;
21705 if (COND_P())
return keyword_do_cond;
21706 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
21707 return keyword_do_block;
21710 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
21713 if (kw->id[0] != kw->id[1])
21714 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
21720 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
21722 SET_LEX_STATE(EXPR_CMDARG);
21725 SET_LEX_STATE(EXPR_ARG);
21728 else if (p->lex.state == EXPR_FNAME) {
21729 SET_LEX_STATE(EXPR_ENDFN);
21732 SET_LEX_STATE(EXPR_END);
21735 ident = tokenize_ident(p);
21736 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
21737 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
21738 (result == tIDENTIFIER) &&
21739 (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
21740 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
21751 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
21755static enum yytokentype
21759 int space_seen = 0;
21762 enum lex_state_e last_state;
21763 int fallthru = FALSE;
21764 int token_seen = p->token_seen;
21766 if (p->lex.strterm) {
21767 if (strterm_is_heredoc(p->lex.strterm)) {
21769 return here_document(p, &p->lex.strterm->u.heredoc);
21773 return parse_string(p, &p->lex.strterm->u.literal);
21776 cmd_state = p->command_start;
21777 p->command_start = FALSE;
21778 p->token_seen = TRUE;
21783 last_state = p->lex.state;
21784 switch (c = nextc(p)) {
21791 if (p->end_expect_token_locations) {
21792 pop_end_expect_token_locations(p);
21793 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
21798 RUBY_SET_YYLLOC(*p->yylloc);
21799 return END_OF_INPUT;
21805 case ' ':
case '\t':
case '\f':
21808 while ((c = nextc(p))) {
21813 case ' ':
case '\t':
case '\f':
21822 dispatch_scan_event(p, tSP);
21829 p->token_seen = token_seen;
21830 const char *
const pcur = p->lex.pcur, *
const ptok = p->lex.ptok;
21832 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
21833 if (comment_at_top(p)) {
21834 set_file_encoding(p, p->lex.pcur, p->lex.pend);
21837 p->lex.pcur = pcur, p->lex.ptok = ptok;
21839 dispatch_scan_event(p, tCOMMENT);
21843 p->token_seen = token_seen;
21845 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
21846 !IS_lex_state(EXPR_LABELED));
21847 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
21849 dispatch_scan_event(p, tIGNORED_NL);
21852 if (!c && p->ctxt.in_kwarg) {
21853 goto normal_newline;
21858 switch (c = nextc(p)) {
21859 case ' ':
case '\t':
case '\f':
case '\r':
21866 dispatch_scan_event(p, tSP);
21871 if (peek_word_at(p,
"nd", 2, 0))
goto leading_logical;
21874 if (peek_word_at(p,
"r", 1, 0))
goto leading_logical;
21877 if (peek(p,
'|'))
goto leading_logical;
21880 if (peek(p,
'&')) {
21883 dispatch_delayed_token(p, tIGNORED_NL);
21889 dispatch_delayed_token(p, tIGNORED_NL);
21890 if (peek(p,
'.') == (c ==
'&')) {
21892 dispatch_scan_event(p, tSP);
21898 p->ruby_sourceline--;
21899 p->lex.nextline = p->lex.lastline;
21900 set_lastline(p, prevline);
21902 if (c == -1 && space_seen) {
21903 dispatch_scan_event(p, tSP);
21908 RUBY_SET_YYLLOC(*p->yylloc);
21910 goto normal_newline;
21914 p->command_start = TRUE;
21915 SET_LEX_STATE(EXPR_BEG);
21919 if ((c = nextc(p)) ==
'*') {
21920 if ((c = nextc(p)) ==
'=') {
21921 set_yylval_id(idPow);
21922 SET_LEX_STATE(EXPR_BEG);
21926 if (IS_SPCARG(c)) {
21927 rb_warning0(
"'**' interpreted as argument prefix");
21930 else if (IS_BEG()) {
21934 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
21939 set_yylval_id(
'*');
21940 SET_LEX_STATE(EXPR_BEG);
21944 if (IS_SPCARG(c)) {
21945 rb_warning0(
"'*' interpreted as argument prefix");
21948 else if (IS_BEG()) {
21952 c = warn_balanced(
'*',
"*",
"argument prefix");
21955 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21960 if (IS_AFTER_OPERATOR()) {
21961 SET_LEX_STATE(EXPR_ARG);
21967 SET_LEX_STATE(EXPR_BEG);
21981 if (word_match_p(p,
"begin", 5)) {
21982 int first_p = TRUE;
21985 dispatch_scan_event(p, tEMBDOC_BEG);
21989 dispatch_scan_event(p, tEMBDOC);
21994 compile_error(p,
"embedded document meets end of file");
21995 return END_OF_INPUT;
21997 if (c ==
'=' && word_match_p(p,
"end", 3)) {
22003 dispatch_scan_event(p, tEMBDOC_END);
22008 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22009 if ((c = nextc(p)) ==
'=') {
22010 if ((c = nextc(p)) ==
'=') {
22019 else if (c ==
'>') {
22028 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
22030 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
22031 enum yytokentype token = heredoc_identifier(p);
22032 if (token)
return token < 0 ? 0 : token;
22034 if (IS_AFTER_OPERATOR()) {
22035 SET_LEX_STATE(EXPR_ARG);
22038 if (IS_lex_state(EXPR_CLASS))
22039 p->command_start = TRUE;
22040 SET_LEX_STATE(EXPR_BEG);
22043 if ((c = nextc(p)) ==
'>') {
22050 if ((c = nextc(p)) ==
'=') {
22051 set_yylval_id(idLTLT);
22052 SET_LEX_STATE(EXPR_BEG);
22056 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
22062 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22063 if ((c = nextc(p)) ==
'=') {
22067 if ((c = nextc(p)) ==
'=') {
22068 set_yylval_id(idGTGT);
22069 SET_LEX_STATE(EXPR_BEG);
22079 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22080 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
22081 p->lex.ptok = p->lex.pcur-1;
22082 return tSTRING_BEG;
22085 if (IS_lex_state(EXPR_FNAME)) {
22086 SET_LEX_STATE(EXPR_ENDFN);
22089 if (IS_lex_state(EXPR_DOT)) {
22091 SET_LEX_STATE(EXPR_CMDARG);
22093 SET_LEX_STATE(EXPR_ARG);
22096 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
22097 return tXSTRING_BEG;
22100 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22101 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
22102 p->lex.ptok = p->lex.pcur-1;
22103 return tSTRING_BEG;
22106 return parse_qmark(p, space_seen);
22109 if ((c = nextc(p)) ==
'&') {
22110 SET_LEX_STATE(EXPR_BEG);
22111 if ((c = nextc(p)) ==
'=') {
22112 set_yylval_id(idANDOP);
22113 SET_LEX_STATE(EXPR_BEG);
22119 else if (c ==
'=') {
22120 set_yylval_id(
'&');
22121 SET_LEX_STATE(EXPR_BEG);
22124 else if (c ==
'.') {
22125 set_yylval_id(idANDDOT);
22126 SET_LEX_STATE(EXPR_DOT);
22130 if (IS_SPCARG(c)) {
22132 (c = peekc_n(p, 1)) == -1 ||
22133 !(c ==
'\'' || c ==
'"' ||
22134 is_identchar(p, (p->lex.pcur+1), p->lex.pend, p->enc))) {
22135 rb_warning0(
"'&' interpreted as argument prefix");
22139 else if (IS_BEG()) {
22143 c = warn_balanced(
'&',
"&",
"argument prefix");
22145 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22149 if ((c = nextc(p)) ==
'|') {
22150 SET_LEX_STATE(EXPR_BEG);
22151 if ((c = nextc(p)) ==
'=') {
22152 set_yylval_id(idOROP);
22153 SET_LEX_STATE(EXPR_BEG);
22157 if (IS_lex_state_for(last_state, EXPR_BEG)) {
22165 set_yylval_id(
'|');
22166 SET_LEX_STATE(EXPR_BEG);
22169 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
22175 if (IS_AFTER_OPERATOR()) {
22176 SET_LEX_STATE(EXPR_ARG);
22184 set_yylval_id(
'+');
22185 SET_LEX_STATE(EXPR_BEG);
22188 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
22189 SET_LEX_STATE(EXPR_BEG);
22192 return parse_numeric(p,
'+');
22196 SET_LEX_STATE(EXPR_BEG);
22198 return warn_balanced(
'+',
"+",
"unary operator");
22202 if (IS_AFTER_OPERATOR()) {
22203 SET_LEX_STATE(EXPR_ARG);
22211 set_yylval_id(
'-');
22212 SET_LEX_STATE(EXPR_BEG);
22216 SET_LEX_STATE(EXPR_ENDFN);
22217 yylval.num = p->lex.lpar_beg;
22218 p->lex.lpar_beg = p->lex.paren_nest;
22221 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
22222 SET_LEX_STATE(EXPR_BEG);
22225 return tUMINUS_NUM;
22229 SET_LEX_STATE(EXPR_BEG);
22231 return warn_balanced(
'-',
"-",
"unary operator");
22234 int is_beg = IS_BEG();
22235 SET_LEX_STATE(EXPR_BEG);
22236 if ((c = nextc(p)) ==
'.') {
22237 if ((c = nextc(p)) ==
'.') {
22238 if (p->ctxt.in_argdef || IS_LABEL_POSSIBLE()) {
22239 SET_LEX_STATE(EXPR_ENDARG);
22242 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
22243 rb_warn0(
"... at EOL, should be parenthesized?");
22245 return is_beg ? tBDOT3 : tDOT3;
22248 return is_beg ? tBDOT2 : tDOT2;
22252 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
22253 parse_numeric(p,
'.');
22255 yyerror0(
"unexpected fraction part after numeric literal");
22258 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
22260 SET_LEX_STATE(EXPR_END);
22261 p->lex.ptok = p->lex.pcur;
22264 set_yylval_id(
'.');
22265 SET_LEX_STATE(EXPR_DOT);
22269 case '0':
case '1':
case '2':
case '3':
case '4':
22270 case '5':
case '6':
case '7':
case '8':
case '9':
22271 return parse_numeric(p, c);
22276 SET_LEX_STATE(EXPR_ENDFN);
22277 p->lex.paren_nest--;
22283 SET_LEX_STATE(EXPR_END);
22284 p->lex.paren_nest--;
22289 if (!p->lex.brace_nest--)
return tSTRING_DEND;
22292 SET_LEX_STATE(EXPR_END);
22293 p->lex.paren_nest--;
22299 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
22300 SET_LEX_STATE(EXPR_BEG);
22303 set_yylval_id(idCOLON2);
22304 SET_LEX_STATE(EXPR_DOT);
22307 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
22309 c = warn_balanced(
':',
":",
"symbol literal");
22310 SET_LEX_STATE(EXPR_BEG);
22315 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
22318 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
22324 SET_LEX_STATE(EXPR_FNAME);
22329 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22330 return tREGEXP_BEG;
22332 if ((c = nextc(p)) ==
'=') {
22333 set_yylval_id(
'/');
22334 SET_LEX_STATE(EXPR_BEG);
22338 if (IS_SPCARG(c)) {
22339 arg_ambiguous(p,
'/');
22340 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22341 return tREGEXP_BEG;
22343 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22344 return warn_balanced(
'/',
"/",
"regexp literal");
22347 if ((c = nextc(p)) ==
'=') {
22348 set_yylval_id(
'^');
22349 SET_LEX_STATE(EXPR_BEG);
22352 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22357 SET_LEX_STATE(EXPR_BEG);
22358 p->command_start = TRUE;
22362 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22366 if (IS_AFTER_OPERATOR()) {
22367 if ((c = nextc(p)) !=
'@') {
22370 SET_LEX_STATE(EXPR_ARG);
22373 SET_LEX_STATE(EXPR_BEG);
22381 else if (!space_seen) {
22384 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
22387 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
22388 rb_warning0(
"parentheses after method name is interpreted as "
22389 "an argument list, not a decomposed argument");
22391 p->lex.paren_nest++;
22394 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22398 p->lex.paren_nest++;
22399 if (IS_AFTER_OPERATOR()) {
22400 if ((c = nextc(p)) ==
']') {
22401 p->lex.paren_nest--;
22402 SET_LEX_STATE(EXPR_ARG);
22403 if ((c = nextc(p)) ==
'=') {
22410 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
22413 else if (IS_BEG()) {
22416 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
22419 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22425 ++p->lex.brace_nest;
22426 if (lambda_beginning_p())
22428 else if (IS_lex_state(EXPR_LABELED))
22430 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
22432 else if (IS_lex_state(EXPR_ENDARG))
22436 if (c != tLBRACE) {
22437 p->command_start = TRUE;
22438 SET_LEX_STATE(EXPR_BEG);
22441 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22443 ++p->lex.paren_nest;
22452 dispatch_scan_event(p, tSP);
22455 if (c ==
' ')
return tSP;
22461 return parse_percent(p, space_seen, last_state);
22464 return parse_gvar(p, last_state);
22467 return parse_atmark(p, last_state);
22470 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
22471 p->ruby__end__seen = 1;
22475 dispatch_scan_event(p, k__END__);
22477 return END_OF_INPUT;
22483 if (!parser_is_identchar(p)) {
22484 compile_error(p,
"Invalid char '\\x%02X' in expression", c);
22493 return parse_ident(p, c, cmd_state);
22496static enum yytokentype
22499 enum yytokentype t;
22503 p->yylloc = yylloc;
22505 t = parser_yylex(p);
22507 if (has_delayed_token(p))
22508 dispatch_delayed_token(p, t);
22509 else if (t != END_OF_INPUT)
22510 dispatch_scan_event(p, t);
22515#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
22518node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment)
22520 NODE *n = rb_ast_newnode(p->ast,
type, size, alignment);
22522 rb_node_init(n,
type);
22530 nd_set_line(nd, loc->beg_pos.lineno);
22537 NODE *n = node_new_internal(p,
type, size, alignment);
22539 nd_set_loc(n, loc);
22540 nd_set_node_id(n, parser_get_node_id(p));
22544#define NODE_NEWNODE(node_type, type, loc) (type *)(node_newnode(p, node_type, sizeof(type), RUBY_ALIGNOF(type), loc))
22550 nd_tbl = local_tbl(p);
22552 n->nd_tbl = nd_tbl;
22553 n->nd_body = nd_body;
22554 n->nd_parent = nd_parent;
22555 n->nd_args = nd_args;
22564 n->nd_tbl = nd_tbl;
22565 n->nd_body = nd_body;
22566 n->nd_parent = nd_parent;
22567 n->nd_args = nd_args;
22576 n->nd_mid = nd_mid;
22577 n->nd_defn = nd_defn;
22586 n->nd_recv = nd_recv;
22587 n->nd_mid = nd_mid;
22588 n->nd_defn = nd_defn;
22597 n->nd_head = nd_head;
22598 n->nd_end = (
NODE *)n;
22608 n->nd_body = nd_body;
22609 n->nd_iter = nd_iter;
22610 n->for_keyword_loc = *for_keyword_loc;
22611 n->in_keyword_loc = *in_keyword_loc;
22612 n->do_keyword_loc = *do_keyword_loc;
22613 n->end_keyword_loc = *end_keyword_loc;
22622 n->nd_var = nd_var;
22639 n->nd_body = nd_body;
22648 n->nd_head = nd_head;
22649 n->nd_resq = nd_resq;
22650 n->nd_else = nd_else;
22659 n->nd_args = nd_args;
22660 n->nd_exc_var = nd_exc_var;
22661 n->nd_body = nd_body;
22662 n->nd_next = nd_next;
22671 n->nd_head = nd_head;
22672 n->nd_ensr = nd_ensr;
22681 n->nd_1st = nd_1st;
22682 n->nd_2nd = nd_2nd;
22683 n->operator_loc = *operator_loc;
22692 n->nd_1st = nd_1st;
22693 n->nd_2nd = nd_2nd;
22694 n->operator_loc = *operator_loc;
22703 n->nd_stts = nd_stts;
22704 n->keyword_loc = *keyword_loc;
22711 if (nd_head) no_blockarg(p, nd_head);
22714 n->nd_head = nd_head;
22715 n->keyword_loc = *keyword_loc;
22716 n->lparen_loc = *lparen_loc;
22717 n->rparen_loc = *rparen_loc;
22726 n->nd_cond = nd_cond;
22727 n->nd_body = nd_body;
22728 n->nd_else = nd_else;
22729 n->if_keyword_loc = *if_keyword_loc;
22730 n->then_keyword_loc = *then_keyword_loc;
22731 n->end_keyword_loc = *end_keyword_loc;
22740 n->nd_cond = nd_cond;
22741 n->nd_body = nd_body;
22742 n->nd_else = nd_else;
22743 n->keyword_loc = *keyword_loc;
22744 n->then_keyword_loc = *then_keyword_loc;
22745 n->end_keyword_loc = *end_keyword_loc;
22754 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
22756 RNODE_SCOPE(scope)->nd_parent = &n->node;
22757 n->nd_cpath = nd_cpath;
22758 n->nd_body = scope;
22759 n->nd_super = nd_super;
22760 n->class_keyword_loc = *class_keyword_loc;
22761 n->inheritance_operator_loc = *inheritance_operator_loc;
22762 n->end_keyword_loc = *end_keyword_loc;
22771 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
22773 RNODE_SCOPE(scope)->nd_parent = &n->node;
22774 n->nd_recv = nd_recv;
22775 n->nd_body = scope;
22776 n->class_keyword_loc = *class_keyword_loc;
22777 n->operator_loc = *operator_loc;
22778 n->end_keyword_loc = *end_keyword_loc;
22787 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
22789 RNODE_SCOPE(scope)->nd_parent = &n->node;
22790 n->nd_cpath = nd_cpath;
22791 n->nd_body = scope;
22792 n->module_keyword_loc = *module_keyword_loc;
22793 n->end_keyword_loc = *end_keyword_loc;
22802 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
22804 RNODE_SCOPE(scope)->nd_parent = &n->node;
22805 n->nd_body = scope;
22815 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
22816 YYLTYPE lambda_loc = code_loc_gen(operator_loc, closing_loc);
22818 RNODE_SCOPE(scope)->nd_parent = &n->node;
22819 n->nd_body = scope;
22820 n->operator_loc = *operator_loc;
22821 n->opening_loc = *opening_loc;
22822 n->closing_loc = *closing_loc;
22831 n->nd_head = nd_head;
22832 n->nd_body = nd_body;
22833 n->case_keyword_loc = *case_keyword_loc;
22834 n->end_keyword_loc = *end_keyword_loc;
22844 n->nd_body = nd_body;
22845 n->case_keyword_loc = *case_keyword_loc;
22846 n->end_keyword_loc = *end_keyword_loc;
22855 n->nd_head = nd_head;
22856 n->nd_body = nd_body;
22857 n->case_keyword_loc = *case_keyword_loc;
22858 n->end_keyword_loc = *end_keyword_loc;
22867 n->nd_head = nd_head;
22868 n->nd_body = nd_body;
22869 n->nd_next = nd_next;
22870 n->keyword_loc = *keyword_loc;
22871 n->then_keyword_loc = *then_keyword_loc;
22880 n->nd_head = nd_head;
22881 n->nd_body = nd_body;
22882 n->nd_next = nd_next;
22883 n->in_keyword_loc = *in_keyword_loc;
22884 n->then_keyword_loc = *then_keyword_loc;
22885 n->operator_loc = *operator_loc;
22894 n->nd_cond = nd_cond;
22895 n->nd_body = nd_body;
22896 n->nd_state = nd_state;
22897 n->keyword_loc = *keyword_loc;
22898 n->closing_loc = *closing_loc;
22907 n->nd_cond = nd_cond;
22908 n->nd_body = nd_body;
22909 n->nd_state = nd_state;
22910 n->keyword_loc = *keyword_loc;
22911 n->closing_loc = *closing_loc;
22920 n->nd_head = nd_head;
22921 n->nd_mid = nd_mid;
22922 n->delimiter_loc = *delimiter_loc;
22923 n->name_loc = *name_loc;
22932 n->nd_mid = nd_mid;
22933 n->delimiter_loc = *delimiter_loc;
22934 n->name_loc = *name_loc;
22943 n->nd_beg = nd_beg;
22944 n->nd_end = nd_end;
22945 n->operator_loc = *operator_loc;
22954 n->nd_beg = nd_beg;
22955 n->nd_end = nd_end;
22956 n->operator_loc = *operator_loc;
22999 n->nd_args = nd_args;
23000 n->keyword_loc = *keyword_loc;
23001 n->lparen_loc = *lparen_loc;
23002 n->rparen_loc = *rparen_loc;
23019 n->nd_recv = nd_recv;
23020 n->nd_value = nd_value;
23030 n->nd_recv = nd_recv;
23031 n->nd_value = nd_value;
23041 n->nd_head = nd_head;
23052 n->nd_head = nd_head;
23053 n->as.nd_alen = nd_alen;
23054 n->nd_next = nd_next;
23071 n->nd_head = nd_head;
23081 n->nd_head = nd_head;
23083 n->nd_args = nd_args;
23092 n->nd_vid = nd_vid;
23093 n->nd_value = nd_value;
23102 n->nd_vid = nd_vid;
23103 n->nd_value = nd_value;
23112 n->nd_vid = nd_vid;
23113 n->nd_value = nd_value;
23122 n->nd_vid = nd_vid;
23123 n->nd_value = nd_value;
23132 n->nd_vid = nd_vid;
23133 n->nd_value = nd_value;
23142 n->nd_recv = nd_recv;
23143 n->nd_mid = nd_mid;
23144 n->nd_index = index;
23145 n->nd_rvalue = rvalue;
23146 n->call_operator_loc = *call_operator_loc;
23147 n->opening_loc = *opening_loc;
23148 n->closing_loc = *closing_loc;
23149 n->binary_operator_loc = *binary_operator_loc;
23158 n->nd_recv = nd_recv;
23159 n->nd_value = nd_value;
23160 n->nd_vid = nd_vid;
23161 n->nd_mid = nd_mid;
23162 n->nd_aid = nd_aid;
23163 n->call_operator_loc = *call_operator_loc;
23164 n->message_loc = *message_loc;
23165 n->binary_operator_loc = *binary_operator_loc;
23174 n->nd_head = nd_head;
23175 n->nd_value = nd_value;
23184 n->nd_head = nd_head;
23185 n->nd_value = nd_value;
23194 n->nd_vid = nd_vid;
23203 n->nd_vid = nd_vid;
23212 n->nd_vid = nd_vid;
23221 n->nd_vid = nd_vid;
23230 n->nd_vid = nd_vid;
23239 n->nd_vid = nd_vid;
23248 n->nd_nth = nd_nth;
23257 n->nd_nth = nd_nth;
23284rb_node_rational_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
const YYLTYPE *loc)
23290 n->seen_point = seen_point;
23296rb_node_imaginary_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
enum rb_numeric_type numeric_type,
const YYLTYPE *loc)
23302 n->seen_point = seen_point;
23303 n->type = numeric_type;
23312 n->string = string;
23322 n->string = string;
23323 n->as.nd_alen = nd_alen;
23332 return rb_node_dstr_new0(p,
string, 1, 0, loc);
23339 n->string = string;
23348 n->string = string;
23349 n->as.nd_alen = nd_alen;
23359 n->string = rb_str_to_parser_string(p, str);
23368 n->string = string;
23369 n->as.nd_alen = nd_alen;
23379 n->nd_body = nd_body;
23380 n->opening_loc = *opening_loc;
23381 n->closing_loc = *closing_loc;
23390 n->string = string;
23391 n->options = options & RE_OPTION_MASK;
23392 n->opening_loc = *opening_loc;
23393 n->content_loc = *content_loc;
23394 n->closing_loc = *closing_loc;
23403 n->nd_recv = nd_recv;
23404 n->nd_mid = nd_mid;
23405 n->nd_args = nd_args;
23414 n->nd_recv = nd_recv;
23415 n->nd_mid = nd_mid;
23416 n->nd_args = nd_args;
23425 n->nd_mid = nd_mid;
23426 n->nd_args = nd_args;
23435 n->nd_recv = nd_recv;
23436 n->nd_mid = nd_mid;
23437 n->nd_args = nd_args;
23446 n->nd_mid = nd_mid;
23455 n->nd_body = nd_body;
23473 n->nd_pid = nd_pid;
23474 n->nd_plen = nd_plen;
23484 n->nd_body = nd_body;
23494 n->nd_body = nd_body;
23504 n->nd_1st = nd_1st;
23505 n->nd_2nd = nd_2nd;
23514 n->nd_head = nd_head;
23515 n->nd_body = nd_body;
23524 n->nd_head = nd_head;
23525 n->nd_body = nd_body;
23534 n->nd_head = nd_head;
23535 n->operator_loc = *operator_loc;
23546 n->nd_body = nd_body;
23547 n->operator_loc = *operator_loc;
23556 n->nd_1st = nd_1st;
23557 n->nd_2nd = nd_2nd;
23558 n->keyword_loc = *keyword_loc;
23567 n->nd_alias = nd_alias;
23568 n->nd_orig = nd_orig;
23569 n->keyword_loc = *keyword_loc;
23578 n->nd_undefs = rb_parser_ary_new_capa_for_node(p, 1);
23579 n->keyword_loc = NULL_LOC;
23580 rb_parser_ary_push_node(p, n->nd_undefs, nd_undef);
23597 n->nd_head = nd_head;
23598 n->keyword_loc = *keyword_loc;
23607 n->nd_body = nd_body;
23608 n->keyword_loc = *keyword_loc;
23609 n->opening_loc = *opening_loc;
23610 n->closing_loc = *closing_loc;
23619 n->nd_recv = nd_recv;
23620 n->nd_mid = nd_mid;
23621 n->nd_args = nd_args;
23631 n->pre_args = pre_args;
23632 n->rest_arg = rest_arg;
23633 n->post_args = post_args;
23642 n->nd_pconst = nd_pconst;
23643 n->nd_pkwargs = nd_pkwargs;
23644 n->nd_pkwrestarg = nd_pkwrestarg;
23654 n->pre_rest_arg = pre_rest_arg;
23656 n->post_rest_arg = post_rest_arg;
23673 n->path = rb_str_to_parser_string(p, str);
23688rb_node_cdecl_new(
struct parser_params *p,
ID nd_vid,
NODE *nd_value,
NODE *nd_else,
enum rb_parser_shareability shareability,
const YYLTYPE *loc)
23691 n->nd_vid = nd_vid;
23692 n->nd_value = nd_value;
23693 n->nd_else = nd_else;
23694 n->shareability = shareability;
23700rb_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)
23703 n->nd_head = nd_head;
23704 n->nd_value = nd_value;
23705 n->nd_aid = nd_aid;
23706 n->shareability = shareability;
23723 n->nd_stts = nd_stts;
23725 n->keyword_loc = *keyword_loc;
23734 n->nd_stts = nd_stts;
23736 n->keyword_loc = *keyword_loc;
23746 n->keyword_loc = *keyword_loc;
23755 n->save.numparam_save = 0;
23756 n->save.max_numparam = 0;
23757 n->save.ctxt = p->ctxt;
23767 n->save.numparam_save = numparam_push(p);
23768 n->save.max_numparam = p->max_numparam;
23773static enum node_type
23774nodetype(
NODE *node)
23776 return (
enum node_type)nd_type(node);
23780nodeline(
NODE *node)
23782 return nd_line(node);
23787newline_node(
NODE *node)
23790 node = remove_begin(node);
23791 nd_set_fl_newline(node);
23801 nd_set_line(node, nd_line(orig));
23807 NODE *end, *h = head, *nd;
23809 if (tail == 0)
return head;
23811 if (h == 0)
return tail;
23812 switch (nd_type(h)) {
23814 h = end = NEW_BLOCK(head, &head->nd_loc);
23818 end = RNODE_BLOCK(h)->nd_end;
23822 nd = RNODE_BLOCK(end)->nd_head;
23823 switch (nd_type(nd)) {
23829 rb_warning0L(nd_line(tail),
"statement not reached");
23836 if (!nd_type_p(tail, NODE_BLOCK)) {
23837 tail = NEW_BLOCK(tail, &tail->nd_loc);
23839 RNODE_BLOCK(end)->nd_next = tail;
23840 RNODE_BLOCK(h)->nd_end = RNODE_BLOCK(tail)->nd_end;
23841 nd_set_last_loc(head, nd_last_loc(tail));
23851 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
23852 if (RNODE_LIST(list)->nd_next) {
23853 last = RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end;
23859 RNODE_LIST(list)->as.nd_alen += 1;
23860 RNODE_LIST(last)->nd_next = NEW_LIST(item, &item->nd_loc);
23861 RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end = RNODE_LIST(last)->nd_next;
23863 nd_set_last_loc(list, nd_last_loc(item));
23870list_concat(
NODE *head,
NODE *tail)
23874 if (RNODE_LIST(head)->nd_next) {
23875 last = RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end;
23881 RNODE_LIST(head)->as.nd_alen += RNODE_LIST(tail)->as.nd_alen;
23882 RNODE_LIST(last)->nd_next = tail;
23883 if (RNODE_LIST(tail)->nd_next) {
23884 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = RNODE_LIST(RNODE_LIST(tail)->nd_next)->as.nd_end;
23887 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = tail;
23890 nd_set_last_loc(head, nd_last_loc(tail));
23898 if (!tail)
return 1;
23899 if (!rb_parser_enc_compatible(p, head, tail)) {
23900 compile_error(p,
"string literal encodings differ (%s / %s)",
23901 rb_enc_name(rb_parser_str_get_encoding(head)),
23902 rb_enc_name(rb_parser_str_get_encoding(tail)));
23903 rb_parser_str_resize(p, head, 0);
23904 rb_parser_str_resize(p, tail, 0);
23907 rb_parser_str_buf_append(p, head, tail);
23914 if (htype != NODE_DSTR)
return NULL;
23915 if (RNODE_DSTR(head)->nd_next) {
23916 head = RNODE_LIST(RNODE_LIST(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_head;
23917 if (!head || !nd_type_p(head, NODE_STR))
return NULL;
23929 if (!orig)
return NULL;
23930 copy = rb_parser_string_new(p, PARSER_STRING_PTR(orig), PARSER_STRING_LEN(orig));
23931 copy->coderange = orig->coderange;
23932 copy->enc = orig->enc;
23941 enum node_type htype;
23944 if (!head)
return tail;
23945 if (!tail)
return head;
23947 htype = nd_type(head);
23948 if (htype == NODE_EVSTR) {
23949 head = new_dstr(p, head, loc);
23952 if (p->heredoc_indent > 0) {
23955 head = str2dstr(p, head);
23957 return list_append(p, head, tail);
23962 switch (nd_type(tail)) {
23964 if ((lit = string_literal_head(p, htype, head)) !=
false) {
23968 lit = RNODE_DSTR(head)->string;
23970 if (htype == NODE_STR) {
23971 if (!literal_concat0(p, lit, RNODE_STR(tail)->
string)) {
23973 rb_discard_node(p, head);
23974 rb_discard_node(p, tail);
23977 rb_discard_node(p, tail);
23980 list_append(p, head, tail);
23985 if (htype == NODE_STR) {
23986 if (!literal_concat0(p, RNODE_STR(head)->
string, RNODE_DSTR(tail)->
string))
23988 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
23989 RNODE_DSTR(tail)->string = RNODE_STR(head)->string;
23990 RNODE_STR(head)->string = NULL;
23991 rb_discard_node(p, head);
23994 else if (!RNODE_DSTR(tail)->
string) {
23996 RNODE_DSTR(head)->as.nd_alen += RNODE_DSTR(tail)->as.nd_alen - 1;
23997 if (!RNODE_DSTR(head)->nd_next) {
23998 RNODE_DSTR(head)->nd_next = RNODE_DSTR(tail)->nd_next;
24000 else if (RNODE_DSTR(tail)->nd_next) {
24001 RNODE_DSTR(RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_next = RNODE_DSTR(tail)->nd_next;
24002 RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end = RNODE_DSTR(RNODE_DSTR(tail)->nd_next)->as.nd_end;
24004 rb_discard_node(p, tail);
24006 else if ((lit = string_literal_head(p, htype, head)) !=
false) {
24007 if (!literal_concat0(p, lit, RNODE_DSTR(tail)->
string))
24009 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24010 RNODE_DSTR(tail)->string = 0;
24014 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));
24015 RNODE_DSTR(tail)->string = 0;
24020 if (htype == NODE_STR) {
24021 head = str2dstr(p, head);
24022 RNODE_DSTR(head)->as.nd_alen = 1;
24024 list_append(p, head, tail);
24031nd_copy_flag(
NODE *new_node,
NODE *old_node)
24033 if (nd_fl_newline(old_node)) nd_set_fl_newline(new_node);
24034 nd_set_line(new_node, nd_line(old_node));
24035 new_node->nd_loc = old_node->nd_loc;
24036 new_node->node_id = old_node->node_id;
24043 nd_copy_flag(new_node, node);
24044 RNODE_DSTR(new_node)->string = RNODE_STR(node)->string;
24045 RNODE_DSTR(new_node)->as.nd_alen = 0;
24046 RNODE_DSTR(new_node)->nd_next = 0;
24047 RNODE_STR(node)->string = 0;
24056 nd_copy_flag(new_node, node);
24057 RNODE_REGX(new_node)->string = RNODE_STR(node)->string;
24058 RNODE_REGX(new_node)->options = options;
24059 nd_set_loc(new_node, loc);
24060 RNODE_REGX(new_node)->opening_loc = *opening_loc;
24061 RNODE_REGX(new_node)->content_loc = *content_loc;
24062 RNODE_REGX(new_node)->closing_loc = *closing_loc;
24063 RNODE_STR(node)->string = 0;
24071 if (nd_type_p(node, NODE_EVSTR)) {
24072 node = new_dstr(p, node, &node->nd_loc);
24083 switch (nd_type(node)) {
24085 return str2dstr(p, node);
24092 return NEW_EVSTR(head, loc, opening_loc, closing_loc);
24098 NODE *dstr = NEW_DSTR(STRING_NEW0(), loc);
24099 return list_append(p, dstr, node);
24107 value_expr(p, recv);
24108 value_expr(p, arg1);
24109 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
24110 nd_set_line(expr, op_loc->beg_pos.lineno);
24118 value_expr(p, recv);
24119 opcall = NEW_OPCALL(recv,
id, 0, loc);
24120 nd_set_line(opcall, op_loc->beg_pos.lineno);
24127 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
24128 nd_set_line(qcall, op_loc->beg_pos.lineno);
24136 if (block) block_dup_check(p, args, block);
24137 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
24138 if (block) ret = method_add_block(p, ret, block, loc);
24148 body->opening_loc = *opening_loc;
24149 body->closing_loc = *closing_loc;
24153#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? RNODE_ONCE(node)->nd_body : node)
24156last_expr_once_body(
NODE *node)
24158 if (!node)
return 0;
24159 return nd_once_body(node);
24166 int line = op_loc->beg_pos.lineno;
24168 value_expr(p, node1);
24169 value_expr(p, node2);
24171 if ((n = last_expr_once_body(node1)) != 0) {
24172 switch (nd_type(n)) {
24175 NODE *match = NEW_MATCH2(node1, node2, loc);
24176 nd_set_line(match, line);
24182 const VALUE lit = rb_node_regx_string_val(n);
24184 NODE *match = NEW_MATCH2(node1, node2, loc);
24185 RNODE_MATCH2(match)->nd_args = reg_named_capture_assign(p, lit, loc, assignable);
24186 nd_set_line(match, line);
24193 if ((n = last_expr_once_body(node2)) != 0) {
24196 switch (nd_type(n)) {
24198 match3 = NEW_MATCH3(node2, node1, loc);
24203 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
24204 nd_set_line(n, line);
24208# if WARN_PAST_SCOPE
24212 struct vtable *past = p->lvtbl->past;
24214 if (vtable_included(past,
id))
return 1;
24225 NODE *outer = local->numparam.outer;
24226 NODE *inner = local->numparam.inner;
24227 if (outer || inner) {
24228 NODE *used = outer ? outer : inner;
24229 compile_error(p,
"numbered parameter is already used in %s block\n"
24230 "%s:%d: numbered parameter is already used here",
24231 outer ?
"outer" :
"inner",
24232 p->ruby_sourcefile, nd_line(used));
24233 parser_show_error_line(p, &used->nd_loc);
24242 NODE *numparam = p->lvtbl->numparam.current;
24244 compile_error(p,
"'it' is not allowed when a numbered parameter is already used\n"
24245 "%s:%d: numbered parameter is already used here",
24246 p->ruby_sourcefile, nd_line(numparam));
24247 parser_show_error_line(p, &numparam->nd_loc);
24256 NODE *it = p->lvtbl->it;
24258 compile_error(p,
"numbered parameters are not allowed when 'it' is already used\n"
24259 "%s:%d: 'it' is already used here",
24260 p->ruby_sourcefile, nd_line(it));
24261 parser_show_error_line(p, &it->nd_loc);
24274 return NEW_SELF(loc);
24276 return NEW_NIL(loc);
24278 return NEW_TRUE(loc);
24279 case keyword_false:
24280 return NEW_FALSE(loc);
24281 case keyword__FILE__:
24283 VALUE file = p->ruby_sourcefile_string;
24286 node = NEW_FILE(file, loc);
24289 case keyword__LINE__:
24290 return NEW_LINE(loc);
24291 case keyword__ENCODING__:
24292 return NEW_ENCODING(loc);
24295 switch (id_type(
id)) {
24297 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
24298 if (NUMPARAM_ID_P(
id) && (numparam_nested_p(p) || it_used_p(p)))
return 0;
24299 if (vidp) *vidp |= LVAR_USED;
24300 node = NEW_DVAR(
id, loc);
24303 if (local_id_ref(p,
id, &vidp)) {
24304 if (vidp) *vidp |= LVAR_USED;
24305 node = NEW_LVAR(
id, loc);
24308 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
24309 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
24310 if (numparam_nested_p(p) || it_used_p(p))
return 0;
24311 node = NEW_DVAR(
id, loc);
24313 if (!local->numparam.current) local->numparam.current = node;
24316# if WARN_PAST_SCOPE
24318 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
24322 if (dyna_in_block(p) &&
id == rb_intern(
"it") && !(DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev))) {
24323 if (numparam_used_p(p))
return 0;
24324 if (p->max_numparam == ORDINAL_PARAM) {
24325 compile_error(p,
"ordinary parameter is defined");
24329 p->it_id = internal_id(p);
24330 vtable_add(p->lvtbl->args, p->it_id);
24332 NODE *node = NEW_DVAR(p->it_id, loc);
24333 if (!p->lvtbl->it) p->lvtbl->it = node;
24336 return NEW_VCALL(
id, loc);
24338 return NEW_GVAR(
id, loc);
24340 return NEW_IVAR(
id, loc);
24342 return NEW_CONST(
id, loc);
24344 return NEW_CVAR(
id, loc);
24346 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24354 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24356 while (opts->nd_next) {
24357 opts = opts->nd_next;
24358 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24360 opts->nd_next = opt;
24370 opt_arg_append(RNODE_OPT_ARG(kwlist), RNODE_OPT_ARG(kw));
24378 int had_trailing_semicolon = p->ctxt.has_trailing_semicolon;
24379 p->ctxt.has_trailing_semicolon = 0;
24383 if (nd_type_p(n, NODE_BEGIN)) {
24384 n = RNODE_BEGIN(n)->nd_body;
24386 else if (nd_type_p(n, NODE_BLOCK) && RNODE_BLOCK(n)->nd_end == n) {
24387 n = RNODE_BLOCK(n)->nd_head;
24394 if (had_trailing_semicolon && !nd_type_p(expr, NODE_BLOCK)) {
24395 NODE *block = NEW_BLOCK(expr, loc);
24396 return NEW_DEFINED(block, loc, keyword_loc);
24399 return NEW_DEFINED(n, loc, keyword_loc);
24407 if (rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_BROKEN) {
24408 yyerror1(loc,
"invalid symbol");
24412 lit = rb_str_new_parser_string(str);
24414 return NEW_SYM(lit, loc);
24420 enum node_type
type = nd_type(symbol);
24423 nd_set_type(symbol, NODE_DSYM);
24426 symbol = str_to_sym_node(p, symbol, &RNODE(symbol)->nd_loc);
24429 compile_error(p,
"unexpected node as symbol: %s", parser_node_name(
type));
24431 return list_append(p, symbols, symbol);
24437 if (dreg->string) {
24438 reg_fragment_setenc(p, dreg->string, options);
24440 for (
struct RNode_LIST *list = dreg->nd_next; list; list = RNODE_LIST(list->nd_next)) {
24441 NODE *frag = list->nd_head;
24442 if (nd_type_p(frag, NODE_STR)) {
24443 reg_fragment_setenc(p, RNODE_STR(frag)->
string, options);
24445 else if (nd_type_p(frag, NODE_DSTR)) {
24446 dregex_fragment_setenc(p, RNODE_DSTR(frag), options);
24457 reg_compile(p, str, options);
24458 node = NEW_REGX(str, options, loc, opening_loc, content_loc, closing_loc);
24461 switch (nd_type(node)) {
24465 reg_compile(p, RNODE_STR(node)->
string, options);
24466 node = str2regx(p, node, options, loc, opening_loc, content_loc, closing_loc);
24470 node = NEW_DSTR0(STRING_NEW0(), 1, NEW_LIST(node, loc), loc);
24473 nd_set_type(node, NODE_DREGX);
24474 nd_set_loc(node, loc);
24476 dreg->as.nd_cflag = options & RE_OPTION_MASK;
24477 if (dreg->nd_next) {
24478 dregex_fragment_setenc(p, dreg, options);
24480 if (options & RE_OPTION_ONCE) {
24481 node = NEW_ONCE(node, loc);
24492 return NEW_KW_ARG((k), loc);
24499 NODE *xstr = NEW_XSTR(STRING_NEW0(), loc);
24502 switch (nd_type(node)) {
24504 nd_set_type(node, NODE_XSTR);
24505 nd_set_loc(node, loc);
24508 nd_set_type(node, NODE_DXSTR);
24509 nd_set_loc(node, loc);
24512 node = NEW_DXSTR(0, 1, NEW_LIST(node, loc), loc);
24524static int nd_type_st_key_enable_p(
NODE *node);
24530 if (!arg || !p->case_labels)
return;
24531 if (!nd_type_st_key_enable_p(arg))
return;
24533 if (p->case_labels == CHECK_LITERAL_WHEN) {
24534 p->case_labels = st_init_table(&literal_type);
24538 if (st_lookup(p->case_labels, (st_data_t)arg, &line)) {
24539 rb_warning2(
"'when' clause on line %d duplicates 'when' clause on line %d and is ignored",
24540 WARN_I((
int)nd_line(arg)), WARN_I((
int)line));
24544 st_insert(p->case_labels, (st_data_t)arg, (st_data_t)p->ruby_sourceline);
24551 if (is_notop_id(
id)) {
24552 switch (
id & ID_SCOPE_MASK) {
24553 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
24556 if (dyna_in_block(p)) {
24557 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
24559 if (local_id(p,
id))
return 1;
24564 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24569static inline enum lex_state_e
24570parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
24573 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
24575 return p->lex.state = ls;
24582 VALUE mesg = p->debug_buffer;
24584 if (!
NIL_P(mesg) && RSTRING_LEN(mesg)) {
24585 p->debug_buffer =
Qnil;
24586 rb_io_puts(1, &mesg, out);
24588 if (!
NIL_P(str) && RSTRING_LEN(str)) {
24589 rb_io_write(p->debug_output, str);
24593static const char rb_parser_lex_state_names[][8] = {
24594 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
24595 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
24596 "LABEL",
"LABELED",
"FITEM",
24603 unsigned int mask = 1;
24604 static const char none[] =
"NONE";
24606 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
24607 if ((
unsigned)state & mask) {
24622rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
24623 enum lex_state_e to,
int line)
24627 append_lex_state_name(p, from, mesg);
24629 append_lex_state_name(p, to, mesg);
24630 rb_str_catf(mesg,
" at line %d\n", line);
24631 flush_debug_buffer(p, p->debug_output, mesg);
24636rb_parser_lex_state_name(
struct parser_params *p,
enum lex_state_e state)
24638 return rb_str_to_interned_str(append_lex_state_name(p, state,
rb_str_new(0, 0)));
24648 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
24649 for (; mask && !(stack & mask); mask >>= 1)
continue;
24650 for (; mask; mask >>= 1)
rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
24655rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
24656 const char *name,
int line)
24658 VALUE mesg = rb_sprintf(
"%s: ", name);
24659 append_bitstack_value(p, stack, mesg);
24660 rb_str_catf(mesg,
" at line %d\n", line);
24661 flush_debug_buffer(p, p->debug_output, mesg);
24665rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
24671 rb_str_vcatf(mesg, fmt, ap);
24673 yyerror0(RSTRING_PTR(mesg));
24677 append_lex_state_name(p, p->lex.state, mesg);
24678 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
24679 rb_str_resize(mesg, 0);
24680 append_bitstack_value(p, p->cond_stack, mesg);
24681 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
24682 rb_str_resize(mesg, 0);
24683 append_bitstack_value(p, p->cmdarg_stack, mesg);
24684 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
24685 if (p->debug_output == rb_ractor_stdout())
24686 p->debug_output = rb_ractor_stderr();
24691rb_parser_set_pos(
YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
24693 yylloc->beg_pos.lineno = sourceline;
24694 yylloc->beg_pos.column = beg_pos;
24695 yylloc->end_pos.lineno = sourceline;
24696 yylloc->end_pos.column = end_pos;
24703 int sourceline = here->sourceline;
24704 int beg_pos = (int)here->offset - here->quote
24705 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
24706 int end_pos = (int)here->offset + here->length + here->quote;
24708 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24714 yylloc->beg_pos.lineno = p->delayed.beg_line;
24715 yylloc->beg_pos.column = p->delayed.beg_col;
24716 yylloc->end_pos.lineno = p->delayed.end_line;
24717 yylloc->end_pos.column = p->delayed.end_col;
24725 int sourceline = p->ruby_sourceline;
24726 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24727 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
24728 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24734 yylloc->end_pos = yylloc->beg_pos;
24742 int sourceline = p->ruby_sourceline;
24743 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24744 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
24745 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24751 int sourceline = p->ruby_sourceline;
24752 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24753 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
24754 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24761 if (!
id)
return -1;
24764 *err =
"Can't change the value of self";
24767 *err =
"Can't assign to nil";
24770 *err =
"Can't assign to true";
24772 case keyword_false:
24773 *err =
"Can't assign to false";
24775 case keyword__FILE__:
24776 *err =
"Can't assign to __FILE__";
24778 case keyword__LINE__:
24779 *err =
"Can't assign to __LINE__";
24781 case keyword__ENCODING__:
24782 *err =
"Can't assign to __ENCODING__";
24785 switch (id_type(
id)) {
24787 if (dyna_in_block(p)) {
24788 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
24789 compile_error(p,
"Can't assign to numbered parameter _%d",
24790 NUMPARAM_ID_TO_IDX(
id));
24793 if (dvar_curr(p,
id))
return NODE_DASGN;
24794 if (dvar_defined(p,
id))
return NODE_DASGN;
24795 if (local_id(p,
id))
return NODE_LASGN;
24800 if (!local_id(p,
id)) local_var(p,
id);
24804 case ID_GLOBAL:
return NODE_GASGN;
24805 case ID_INSTANCE:
return NODE_IASGN;
24807 if (!p->ctxt.in_def)
return NODE_CDECL;
24808 *err =
"dynamic constant assignment";
24810 case ID_CLASS:
return NODE_CVASGN;
24812 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
24820 const char *err = 0;
24821 int node_type = assignable0(p,
id, &err);
24822 switch (node_type) {
24823 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
24824 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
24825 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
24826 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
24827 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, p->ctxt.shareable_constant_value, loc);
24828 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
24832 if (err) yyerror1(loc, err);
24834 if (err) set_value(assign_error(p, err, p->s_lvalue));
24836 return NEW_ERROR(loc);
24843 if (name == idUScore)
return 1;
24844 if (!is_local_id(name))
return 0;
24845 s = rb_id2str(name);
24847 return RSTRING_PTR(s)[0] ==
'_';
24853 if (dyna_in_block(p)) {
24854 if (dvar_curr(p, name)) {
24855 if (is_private_local_id(p, name))
return 1;
24856 yyerror0(
"duplicated argument name");
24858 else if (dvar_defined(p, name) || local_id(p, name)) {
24859 vtable_add(p->lvtbl->vars, name);
24860 if (p->lvtbl->used) {
24861 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
24867 if (local_id(p, name)) {
24868 if (is_private_local_id(p, name))
return 1;
24869 yyerror0(
"duplicated argument name");
24878 shadowing_lvar_0(p, name);
24886 if (!is_local_id(name)) {
24887 compile_error(p,
"invalid local variable - %"PRIsVALUE,
24891 if (!shadowing_lvar_0(p, name))
return;
24894 if (dvar_defined_ref(p, name, &vidp)) {
24895 if (vidp) *vidp |= LVAR_USED;
24902 NODE *block = 0, *kwds = 0;
24903 if (args && nd_type_p(args, NODE_BLOCK_PASS)) {
24904 block = RNODE_BLOCK_PASS(args)->nd_body;
24905 args = RNODE_BLOCK_PASS(args)->nd_head;
24907 if (args && nd_type_p(args, NODE_ARGSCAT)) {
24908 args = RNODE_ARGSCAT(args)->nd_body;
24910 if (args && nd_type_p(args, NODE_ARGSPUSH)) {
24911 kwds = RNODE_ARGSPUSH(args)->nd_body;
24914 for (
NODE *next = args; next && nd_type_p(next, NODE_LIST);
24915 next = RNODE_LIST(next)->nd_next) {
24916 kwds = RNODE_LIST(next)->nd_head;
24919 if (kwds && nd_type_p(kwds, NODE_HASH) && !RNODE_HASH(kwds)->nd_brace) {
24920 yyerror1(&kwds->nd_loc,
"keyword arg given in index assignment");
24923 yyerror1(&block->nd_loc,
"block arg given in index assignment");
24930 aryset_check(p, idx);
24931 return NEW_ATTRASGN(recv, tASET, idx, loc);
24937 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
24938 compile_error(p,
"both block arg and actual block given");
24945 if (!CALL_Q_P(atype))
id = rb_id_attrset(
id);
24946 return NEW_ATTRASGN(recv,
id, 0, loc);
24953# define ERR(...) (compile_error(p, __VA_ARGS__), Qtrue)
24955# define ERR(...) rb_sprintf(__VA_ARGS__)
24957 switch (nd_type(node)) {
24959 return ERR(
"Can't set variable $%ld", RNODE_NTH_REF(node)->nd_nth);
24960 case NODE_BACK_REF:
24961 return ERR(
"Can't set variable $%c", (
int)RNODE_BACK_REF(node)->nd_nth);
24970 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
24971 switch (nd_type(node1)) {
24973 return list_append(p, node1, node2);
24974 case NODE_BLOCK_PASS:
24975 RNODE_BLOCK_PASS(node1)->nd_head = arg_append(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
24976 node1->nd_loc.end_pos = RNODE_BLOCK_PASS(node1)->nd_head->nd_loc.end_pos;
24978 case NODE_ARGSPUSH:
24979 RNODE_ARGSPUSH(node1)->nd_body = list_append(p, NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, &RNODE_ARGSPUSH(node1)->nd_body->nd_loc), node2);
24980 node1->nd_loc.end_pos = RNODE_ARGSPUSH(node1)->nd_body->nd_loc.end_pos;
24981 nd_set_type(node1, NODE_ARGSCAT);
24984 if (!nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
24985 RNODE_ARGSCAT(node1)->nd_body = list_append(p, RNODE_ARGSCAT(node1)->nd_body, node2);
24986 node1->nd_loc.end_pos = RNODE_ARGSCAT(node1)->nd_body->nd_loc.end_pos;
24989 return NEW_ARGSPUSH(node1, node2, loc);
24995 if (!node2)
return node1;
24996 switch (nd_type(node1)) {
24997 case NODE_BLOCK_PASS:
24998 if (RNODE_BLOCK_PASS(node1)->nd_head)
24999 RNODE_BLOCK_PASS(node1)->nd_head = arg_concat(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25001 RNODE_LIST(node1)->nd_head = NEW_LIST(node2, loc);
25003 case NODE_ARGSPUSH:
25004 if (!nd_type_p(node2, NODE_LIST))
break;
25005 RNODE_ARGSPUSH(node1)->nd_body = list_concat(NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, loc), node2);
25006 nd_set_type(node1, NODE_ARGSCAT);
25009 if (!nd_type_p(node2, NODE_LIST) ||
25010 !nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25011 RNODE_ARGSCAT(node1)->nd_body = list_concat(RNODE_ARGSCAT(node1)->nd_body, node2);
25014 return NEW_ARGSCAT(node1, node2, loc);
25021 if ((n1 = splat_array(args)) != 0) {
25022 return list_append(p, n1, last_arg);
25024 return arg_append(p, args, last_arg, loc);
25031 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
25032 return list_concat(n1, rest_arg);
25034 return arg_concat(p, args, rest_arg, loc);
25038splat_array(
NODE* node)
25040 if (nd_type_p(node, NODE_SPLAT)) node = RNODE_SPLAT(node)->nd_head;
25041 if (nd_type_p(node, NODE_LIST))
return node;
25050 switch (nd_type(rhs)) {
25052 if (local_id_ref(p, RNODE_LASGN(rhs)->nd_vid, &vidp)) {
25053 if (vidp) *vidp |= LVAR_USED;
25057 if (dvar_defined_ref(p, RNODE_DASGN(rhs)->nd_vid, &vidp)) {
25058 if (vidp) *vidp |= LVAR_USED;
25063 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
25064 mark_lvar_used(p, rhs->nd_head);
25071static int is_static_content(
NODE *node);
25076 if (!lhs)
return 0;
25078 switch (nd_type(lhs)) {
25086 set_nd_value(p, lhs, rhs);
25087 nd_set_loc(lhs, loc);
25090 case NODE_ATTRASGN:
25091 RNODE_ATTRASGN(lhs)->nd_args = arg_append(p, RNODE_ATTRASGN(lhs)->nd_args, rhs, loc);
25092 nd_set_loc(lhs, loc);
25106 NODE *void_node = 0, *vn;
25109 rb_warning0(
"empty expression");
25112 switch (nd_type(node)) {
25114 vn = RNODE_ENSURE(node)->nd_head;
25115 node = RNODE_ENSURE(node)->nd_ensr;
25117 if (vn && (vn = value_expr_check(p, vn))) {
25124 vn = RNODE_RESCUE(node)->nd_head;
25125 if (!vn || !(vn = value_expr_check(p, vn)))
return NULL;
25126 if (!void_node) void_node = vn;
25127 for (
NODE *r = RNODE_RESCUE(node)->nd_resq; r; r = RNODE_RESBODY(r)->nd_next) {
25128 if (!nd_type_p(r, NODE_RESBODY)) {
25129 compile_error(p,
"unexpected node");
25132 if (!(vn = value_expr_check(p, RNODE_RESBODY(r)->nd_body))) {
25136 if (!void_node) void_node = vn;
25138 node = RNODE_RESCUE(node)->nd_else;
25139 if (!node)
return void_node;
25150 if (!RNODE_CASE3(node)->nd_body || !nd_type_p(RNODE_CASE3(node)->nd_body, NODE_IN)) {
25151 compile_error(p,
"unexpected node");
25154 if (RNODE_IN(RNODE_CASE3(node)->nd_body)->nd_body) {
25161 while (RNODE_BLOCK(node)->nd_next) {
25162 node = RNODE_BLOCK(node)->nd_next;
25164 node = RNODE_BLOCK(node)->nd_head;
25168 node = RNODE_BEGIN(node)->nd_body;
25173 if (!RNODE_IF(node)->nd_body) {
25176 else if (!RNODE_IF(node)->nd_else) {
25179 vn = value_expr_check(p, RNODE_IF(node)->nd_body);
25180 if (!vn)
return NULL;
25181 if (!void_node) void_node = vn;
25182 node = RNODE_IF(node)->nd_else;
25187 node = RNODE_AND(node)->nd_1st;
25193 mark_lvar_used(p, node);
25205 return void_node ? void_node : node;
25211 NODE *void_node = value_expr_check(p, node);
25213 yyerror1(&void_node->nd_loc,
"void value expression");
25223 const char *useless = 0;
25227 if (!node || !(node = nd_once_body(node)))
return;
25228 switch (nd_type(node)) {
25230 switch (RNODE_OPCALL(node)->nd_mid) {
25249 useless = rb_id2name(RNODE_OPCALL(node)->nd_mid);
25260 case NODE_BACK_REF:
25261 useless =
"a variable";
25264 useless =
"a constant";
25269 case NODE_ENCODING:
25272 case NODE_RATIONAL:
25273 case NODE_IMAGINARY:
25278 useless =
"a literal";
25303 useless =
"defined?";
25308 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
25316 NODE *
const n = node;
25318 if (!node)
return n;
25319 if (!nd_type_p(node, NODE_BLOCK))
return n;
25321 while (RNODE_BLOCK(node)->nd_next) {
25322 void_expr(p, RNODE_BLOCK(node)->nd_head);
25323 node = RNODE_BLOCK(node)->nd_next;
25325 return RNODE_BLOCK(node)->nd_head;
25329remove_begin(
NODE *node)
25331 NODE **n = &node, *n1 = node;
25332 while (n1 && nd_type_p(n1, NODE_BEGIN) && RNODE_BEGIN(n1)->nd_body) {
25333 *n = n1 = RNODE_BEGIN(n1)->nd_body;
25341 NODE *node = *body;
25344 *body = NEW_NIL(&NULL_LOC);
25347#define subnodes(type, n1, n2) \
25348 ((!type(node)->n1) ? (type(node)->n2 ? (body = &type(node)->n2, 1) : 0) : \
25349 (!type(node)->n2) ? (body = &type(node)->n1, 1) : \
25350 (reduce_nodes(p, &type(node)->n1), body = &type(node)->n2, 1))
25353 int newline = (int)nd_fl_newline(node);
25354 switch (nd_type(node)) {
25360 *body = node = RNODE_BEGIN(node)->nd_body;
25361 if (newline && node) nd_set_fl_newline(node);
25364 body = &RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head;
25368 if (subnodes(RNODE_IF, nd_body, nd_else))
break;
25371 body = &RNODE_CASE(node)->nd_body;
25374 if (!subnodes(RNODE_WHEN, nd_body, nd_next))
goto end;
25377 body = &RNODE_ENSURE(node)->nd_head;
25381 if (RNODE_RESCUE(node)->nd_else) {
25382 body = &RNODE_RESCUE(node)->nd_resq;
25385 if (!subnodes(RNODE_RESCUE, nd_head, nd_resq))
goto end;
25391 if (newline && node) nd_set_fl_newline(node);
25398is_static_content(
NODE *node)
25400 if (!node)
return 1;
25401 switch (nd_type(node)) {
25403 if (!(node = RNODE_HASH(node)->nd_head))
break;
25406 if (!is_static_content(RNODE_LIST(node)->nd_head))
return 0;
25407 }
while ((node = RNODE_LIST(node)->nd_next) != 0);
25412 case NODE_ENCODING:
25415 case NODE_RATIONAL:
25416 case NODE_IMAGINARY:
25432 switch (nd_type(node)) {
25446 if (!get_nd_value(p, node))
return 1;
25447 if (is_static_content(get_nd_value(p, node))) {
25449 rb_warn0L(nd_line(get_nd_value(p, node)),
"found '= literal' in conditional, should be ==");
25460#define SWITCH_BY_COND_TYPE(t, w, arg) do { \
25462 case COND_IN_OP: break; \
25463 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
25464 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
25473 enum node_type
type;
25475 if (node == 0)
return 0;
25477 type = nd_type(node);
25478 value_expr(p, node);
25479 if (
type == NODE_INTEGER) {
25480 if (!e_option_supplied(p)) rb_warn0L(nd_line(node),
"integer literal in flip-flop");
25481 ID lineno = rb_intern(
"$.");
25482 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
25484 return cond0(p, node, COND_IN_FF, loc,
true);
25490 if (node == 0)
return 0;
25491 if (!(node = nd_once_body(node)))
return 0;
25492 assign_in_cond(p, node);
25494 switch (nd_type(node)) {
25496 RNODE_BEGIN(node)->nd_body = cond0(p, RNODE_BEGIN(node)->nd_body,
type, loc, top);
25503 SWITCH_BY_COND_TYPE(
type, warn,
"string ");
25507 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ");
25508 nd_set_type(node, NODE_MATCH);
25512 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning,
"regex ");
25514 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
25518 NODE *end = RNODE_BLOCK(node)->nd_end;
25519 NODE **expr = &RNODE_BLOCK(end)->nd_head;
25520 if (top) top = node == end;
25521 *expr = cond0(p, *expr,
type, loc, top);
25527 RNODE_AND(node)->nd_1st = cond0(p, RNODE_AND(node)->nd_1st, COND_IN_COND, loc,
true);
25528 RNODE_AND(node)->nd_2nd = cond0(p, RNODE_AND(node)->nd_2nd, COND_IN_COND, loc,
true);
25534 RNODE_DOT2(node)->nd_beg = range_op(p, RNODE_DOT2(node)->nd_beg, loc);
25535 RNODE_DOT2(node)->nd_end = range_op(p, RNODE_DOT2(node)->nd_end, loc);
25536 switch (nd_type(node)) {
25538 nd_set_type(node,NODE_FLIP2);
25543 nd_set_type(node, NODE_FLIP3);
25552 SWITCH_BY_COND_TYPE(
type, warning,
"symbol ");
25556 case NODE_ENCODING:
25559 case NODE_RATIONAL:
25560 case NODE_IMAGINARY:
25561 SWITCH_BY_COND_TYPE(
type, warning,
"");
25573 if (node == 0)
return 0;
25574 return cond0(p, node, COND_IN_COND, loc,
true);
25580 if (node == 0)
return 0;
25581 return cond0(p, node, COND_IN_OP, loc,
true);
25588 return NEW_NIL(&loc);
25594 if (!cc)
return right;
25595 cc = cond0(p, cc, COND_IN_COND, loc,
true);
25596 return newline_node(NEW_IF(cc, left, right, loc, if_keyword_loc, then_keyword_loc, end_keyword_loc));
25602 if (!cc)
return right;
25603 cc = cond0(p, cc, COND_IN_COND, loc,
true);
25604 return newline_node(NEW_UNLESS(cc, left, right, loc, keyword_loc, then_keyword_loc, end_keyword_loc));
25607#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))
25613 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
25615 value_expr(p, left);
25616 if (left && nd_type_p(left,
type)) {
25617 NODE *node = left, *second;
25618 while ((second = RNODE_AND(node)->nd_2nd) != 0 && nd_type_p(second,
type)) {
25621 RNODE_AND(node)->nd_2nd = NEW_AND_OR(
type, second, right, loc, op_loc);
25622 nd_set_line(RNODE_AND(node)->nd_2nd, op_loc->beg_pos.lineno);
25623 left->nd_loc.end_pos = loc->end_pos;
25626 op = NEW_AND_OR(
type, left, right, loc, op_loc);
25627 nd_set_line(op, op_loc->beg_pos.lineno);
25636 if (nd_type_p(node, NODE_BLOCK_PASS)) {
25637 compile_error(p,
"block argument should not be given");
25645 no_blockarg(p, node);
25646 if (nd_type_p(node, NODE_LIST) && !RNODE_LIST(node)->nd_next) {
25647 node = RNODE_LIST(node)->nd_head;
25656 switch (nd_type(node)) {
25658 RNODE_INTEGER(node)->minus = TRUE;
25661 RNODE_FLOAT(node)->minus = TRUE;
25663 case NODE_RATIONAL:
25664 RNODE_RATIONAL(node)->minus = TRUE;
25666 case NODE_IMAGINARY:
25667 RNODE_IMAGINARY(node)->minus = TRUE;
25677 if (!node1)
return (
NODE *)node2;
25678 node2->nd_head = node1;
25679 nd_set_first_lineno(node2, nd_first_lineno(node1));
25680 nd_set_first_column(node2, nd_first_column(node1));
25681 return (
NODE *)node2;
25689 if (args->pre_args_num)
return false;
25690 if (args->post_args_num)
return false;
25691 if (args->rest_arg)
return false;
25692 if (args->opt_args)
return false;
25693 if (args->block_arg)
return false;
25694 if (args->kw_args)
return false;
25695 if (args->kw_rest_arg)
return false;
25704 if (args->forwarding) {
25706 yyerror1(&RNODE(tail)->nd_loc,
"... after rest argument");
25709 rest_arg = idFWD_REST;
25712 args->pre_args_num = pre_args ? pre_args->nd_plen : 0;
25713 args->pre_init = pre_args ? pre_args->nd_next : 0;
25715 args->post_args_num = post_args ? post_args->nd_plen : 0;
25716 args->post_init = post_args ? post_args->nd_next : 0;
25717 args->first_post_arg = post_args ? post_args->nd_pid : 0;
25719 args->rest_arg = rest_arg;
25721 args->opt_args = opt_args;
25723 nd_set_loc(RNODE(tail), loc);
25733 if (p->error_p)
return node;
25735 args->block_arg = block;
25736 args->kw_args = kw_args;
25745 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
25746 struct vtable *vtargs = p->lvtbl->args;
25749 if (block) block = vtargs->tbl[vtargs->pos-1];
25750 vtable_pop(vtargs, !!block + !!kw_rest_arg);
25751 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
25753 if (!NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body)))
25755 --required_kw_vars;
25756 kwn = kwn->nd_next;
25759 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
25760 ID vid = get_nd_vid(p, kwn->nd_body);
25761 if (NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body))) {
25762 *required_kw_vars++ = vid;
25769 arg_var(p, kw_bits);
25770 if (kw_rest_arg) arg_var(p, kw_rest_arg);
25771 if (block) arg_var(p, block);
25773 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
25775 else if (kw_rest_arg == idNil) {
25776 args->no_kwarg = 1;
25778 else if (kw_rest_arg) {
25779 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
25788 if (max_numparam > NO_PARAM || it_id) {
25790 YYLTYPE loc = RUBY_INIT_YYLLOC();
25791 args = new_args_tail(p, 0, 0, 0, 0);
25792 nd_set_loc(RNODE(args), &loc);
25794 args->nd_ainfo.pre_args_num = it_id ? 1 : max_numparam;
25802 RNODE_ARYPTN(aryptn)->nd_pconst = constant;
25805 NODE *pre_args = NEW_LIST(pre_arg, loc);
25806 if (RNODE_ARYPTN(aryptn)->pre_args) {
25807 RNODE_ARYPTN(aryptn)->pre_args = list_concat(pre_args, RNODE_ARYPTN(aryptn)->pre_args);
25810 RNODE_ARYPTN(aryptn)->pre_args = pre_args;
25820 rest_arg = rest_arg ? rest_arg : NODE_SPECIAL_NO_NAME_REST;
25825 NODE *node = NEW_ARYPTN(pre_args, rest_arg, post_args, loc);
25833 RNODE_FNDPTN(fndptn)->nd_pconst = constant;
25841 pre_rest_arg = pre_rest_arg ? pre_rest_arg : NODE_SPECIAL_NO_NAME_REST;
25842 post_rest_arg = post_rest_arg ? post_rest_arg : NODE_SPECIAL_NO_NAME_REST;
25843 NODE *node = NEW_FNDPTN(pre_rest_arg, args, post_rest_arg, loc);
25851 RNODE_HSHPTN(hshptn)->nd_pconst = constant;
25858 NODE *node, *kw_rest_arg_node;
25860 if (kw_rest_arg == idNil) {
25861 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
25863 else if (kw_rest_arg) {
25864 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
25867 kw_rest_arg_node = NULL;
25870 node = NEW_HSHPTN(0, kw_args, kw_rest_arg_node, loc);
25879 return NEW_SYM(STR_NEW0(), loc);
25882 switch (nd_type(node)) {
25884 nd_set_type(node, NODE_DSYM);
25885 nd_set_loc(node, loc);
25888 node = str_to_sym_node(p, node, loc);
25891 node = NEW_DSYM(0, 1, NEW_LIST(node, loc), loc);
25898nd_type_st_key_enable_p(
NODE *node)
25900 switch (nd_type(node)) {
25903 case NODE_RATIONAL:
25904 case NODE_IMAGINARY:
25910 case NODE_ENCODING:
25920 switch (nd_type(node)) {
25922 return rb_node_str_string_val(node);
25924 return rb_node_integer_literal_val(node);
25926 return rb_node_float_literal_val(node);
25927 case NODE_RATIONAL:
25928 return rb_node_rational_literal_val(node);
25929 case NODE_IMAGINARY:
25930 return rb_node_imaginary_literal_val(node);
25932 return rb_node_sym_string_val(node);
25934 return rb_node_regx_string_val(node);
25936 return rb_node_line_lineno_val(node);
25937 case NODE_ENCODING:
25938 return rb_node_encoding_val(node);
25940 return rb_node_file_path_val(node);
25942 rb_bug(
"unexpected node: %s", ruby_node_name(nd_type(node)));
25951 p->warn_duplicate_keys_table = st_init_table_with_size(&literal_type, RNODE_LIST(hash)->as.nd_alen / 2);
25952 while (hash && RNODE_LIST(hash)->nd_next) {
25953 NODE *head = RNODE_LIST(hash)->nd_head;
25954 NODE *value = RNODE_LIST(hash)->nd_next;
25955 NODE *next = RNODE_LIST(value)->nd_next;
25964 if (nd_type_st_key_enable_p(head)) {
25965 key = (st_data_t)head;
25967 if (st_delete(p->warn_duplicate_keys_table, &key, &data)) {
25968 rb_warn2L(nd_line((
NODE *)data),
25969 "key %+"PRIsWARN
" is duplicated and overwritten on line %d",
25970 nd_value(p, head), WARN_I(nd_line(head)));
25972 st_insert(p->warn_duplicate_keys_table, (st_data_t)key, (st_data_t)hash);
25976 st_free_table(p->warn_duplicate_keys_table);
25977 p->warn_duplicate_keys_table = NULL;
25983 if (hash) warn_duplicate_keys(p, hash);
25984 return NEW_HASH(hash, loc);
25990 if (is_private_local_id(p,
id)) {
25993 if (st_is_member(p->pvtbl,
id)) {
25994 yyerror1(loc,
"duplicated variable name");
25996 else if (p->ctxt.in_alt_pattern &&
id) {
25997 yyerror1(loc,
"variable capture in alternative pattern");
26000 p->ctxt.capture_in_pattern = 1;
26001 st_insert(p->pvtbl, (st_data_t)
id, 0);
26009 p->pktbl = st_init_numtable();
26011 else if (st_is_member(p->pktbl, key)) {
26012 yyerror1(loc,
"duplicated key name");
26015 st_insert(p->pktbl, (st_data_t)key, 0);
26021 return NEW_HASH(hash, loc);
26030 ID vid = get_nd_vid(p, lhs);
26031 YYLTYPE lhs_loc = lhs->nd_loc;
26033 set_nd_value(p, lhs, rhs);
26034 nd_set_loc(lhs, loc);
26035 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
26037 else if (op == tANDOP) {
26038 set_nd_value(p, lhs, rhs);
26039 nd_set_loc(lhs, loc);
26040 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
26044 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
26045 set_nd_value(p, asgn, rhs);
26046 nd_set_loc(asgn, loc);
26050 asgn = NEW_ERROR(loc);
26062 aryset_check(p, args);
26063 args = make_list(args, args_loc);
26064 asgn = NEW_OP_ASGN1(ary, op, args, rhs, loc, call_operator_loc, opening_loc, closing_loc, binary_operator_loc);
26076 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc, call_operator_loc, message_loc, binary_operator_loc);
26087 asgn = NEW_OP_CDECL(lhs, op, rhs, ctxt.shareable_constant_value, loc);
26090 asgn = NEW_ERROR(loc);
26099 if (p->ctxt.in_def) {
26101 yyerror1(loc,
"dynamic constant assignment");
26103 set_value(assign_error(p,
"dynamic constant assignment", p->s_lvalue));
26106 return NEW_CDECL(0, 0, (path), p->ctxt.shareable_constant_value, loc);
26113 a = dispatch2(assign_error, ERR_MESG(), a);
26122 NODE *result = head;
26124 NODE *tmp = rescue_else ? rescue_else : rescue;
26125 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
26127 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
26128 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
26131 result = NEW_ENSURE(result, ensure, loc);
26133 fixpos(result, head);
26142 if (!local->used)
return;
26143 cnt = local->used->pos;
26144 if (cnt != local->vars->pos) {
26145 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
26148 ID *v = local->vars->tbl;
26149 ID *u = local->used->tbl;
26150 for (
int i = 0; i < cnt; ++i) {
26151 if (!v[i] || (u[i] & LVAR_USED))
continue;
26152 if (is_private_local_id(p, v[i]))
continue;
26153 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
26162 int inherits_dvars = toplevel_scope && compile_for_eval;
26166 local->prev = p->lvtbl;
26167 local->args = vtable_alloc(0);
26168 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
26170 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
26171 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
26173 local->numparam.outer = 0;
26174 local->numparam.inner = 0;
26175 local->numparam.current = 0;
26177 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
26179# if WARN_PAST_SCOPE
26190 while (!DVARS_TERMINAL_P(table)) {
26191 struct vtable *cur_table = table;
26192 table = cur_table->prev;
26193 vtable_free(cur_table);
26200 vtable_chain_free(p, local->used);
26202# if WARN_PAST_SCOPE
26203 vtable_chain_free(p, local->past);
26206 vtable_chain_free(p, local->args);
26207 vtable_chain_free(p, local->vars);
26209 ruby_sized_xfree(local,
sizeof(
struct local_vars));
26216 if (p->lvtbl->used) {
26217 warn_unused_var(p, p->lvtbl);
26220 local_free(p, p->lvtbl);
26230 int cnt_args = vtable_size(p->lvtbl->args);
26231 int cnt_vars = vtable_size(p->lvtbl->vars);
26232 int cnt = cnt_args + cnt_vars;
26236 if (cnt <= 0)
return 0;
26237 tbl = rb_ast_new_local_table(p->ast, cnt);
26238 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
26240 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
26241 ID id = p->lvtbl->vars->tbl[i];
26242 if (!vtable_included(p->lvtbl->args,
id)) {
26243 tbl->ids[j++] = id;
26247 tbl = rb_ast_resize_latest_local_table(p->ast, j);
26256 if (!NUMPARAM_ID_P(
id))
return;
26257 compile_error(p,
"_%d is reserved for numbered parameter",
26258 NUMPARAM_ID_TO_IDX(
id));
26264 numparam_name(p,
id);
26265 vtable_add(p->lvtbl->args,
id);
26271 numparam_name(p,
id);
26272 vtable_add(p->lvtbl->vars,
id);
26273 if (p->lvtbl->used) {
26274 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
26282 return rb_local_defined(
id, iseq);
26289 struct vtable *vars, *args, *used;
26291 vars = p->lvtbl->vars;
26292 args = p->lvtbl->args;
26293 used = p->lvtbl->used;
26295 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26298 if (used) used = used->prev;
26301 if (vars && vars->prev == DVARS_INHERIT) {
26302 return rb_parser_local_defined(p,
id, p->parent_iseq);
26304 else if (vtable_included(args,
id)) {
26308 int i = vtable_included(vars,
id);
26309 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
26317 return local_id_ref(p,
id, NULL);
26323 if (local_id(p, idFWD_ALL))
return TRUE;
26324 compile_error(p,
"unexpected ...");
26331 arg_var(p, idFWD_REST);
26332 arg_var(p, idFWD_KWREST);
26333 arg_var(p, idFWD_BLOCK);
26334 arg_var(p, idFWD_ALL);
26340 bool conflict =
false;
26342 struct vtable *vars, *args;
26344 vars = p->lvtbl->vars;
26345 args = p->lvtbl->args;
26347 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26348 conflict |= (vtable_included(args, arg) && !(all && vtable_included(args, all)));
26353 bool found =
false;
26354 if (vars && vars->prev == DVARS_INHERIT && !found) {
26355 found = (rb_parser_local_defined(p, arg, p->parent_iseq) &&
26356 !(all && rb_parser_local_defined(p, all, p->parent_iseq)));
26359 found = (vtable_included(args, arg) &&
26360 !(all && vtable_included(args, all)));
26364 compile_error(p,
"no anonymous %s parameter", var);
26366 else if (conflict) {
26367 compile_error(p,
"anonymous %s parameter is also used within block", var);
26374 NODE *rest = NEW_LVAR(idFWD_REST, loc);
26375 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
26377 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc, &NULL_LOC);
26378 block->forwarding = TRUE;
26379 args = arg_append(p, args, new_hash(p, kwrest, loc), argsloc);
26380 return arg_blk_pass(args, block);
26387 NODE *inner = local->numparam.inner;
26388 if (!local->numparam.outer) {
26389 local->numparam.outer = local->numparam.current;
26391 local->numparam.inner = 0;
26392 local->numparam.current = 0;
26403 local->numparam.inner = prev_inner;
26405 else if (local->numparam.current) {
26407 local->numparam.inner = local->numparam.current;
26409 if (p->max_numparam > NO_PARAM) {
26411 local->numparam.current = local->numparam.outer;
26412 local->numparam.outer = 0;
26416 local->numparam.current = 0;
26421static const struct vtable *
26424 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
26425 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
26426 if (p->lvtbl->used) {
26427 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
26429 return p->lvtbl->args;
26435 struct vtable *tmp = *vtblp;
26436 *vtblp = tmp->prev;
26437# if WARN_PAST_SCOPE
26438 if (p->past_scope_enabled) {
26439 tmp->prev = p->lvtbl->past;
26440 p->lvtbl->past = tmp;
26452 if ((tmp = p->lvtbl->used) != 0) {
26453 warn_unused_var(p, p->lvtbl);
26454 p->lvtbl->used = p->lvtbl->used->prev;
26457 dyna_pop_vtable(p, &p->lvtbl->args);
26458 dyna_pop_vtable(p, &p->lvtbl->vars);
26464 while (p->lvtbl->args != lvargs) {
26466 if (!p->lvtbl->args) {
26468 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
26478 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
26485 struct vtable *vars, *args, *used;
26488 args = p->lvtbl->args;
26489 vars = p->lvtbl->vars;
26490 used = p->lvtbl->used;
26492 while (!DVARS_TERMINAL_P(vars)) {
26493 if (vtable_included(args,
id)) {
26496 if ((i = vtable_included(vars,
id)) != 0) {
26497 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
26502 if (!vidrefp) used = 0;
26503 if (used) used = used->prev;
26506 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
26507 return rb_dvar_defined(
id, p->parent_iseq);
26517 return dvar_defined_ref(p,
id, NULL);
26523 return (vtable_included(p->lvtbl->args,
id) ||
26524 vtable_included(p->lvtbl->vars,
id));
26531 "regexp encoding option '%c' differs from source encoding '%s'",
26532 c, rb_enc_name(rb_parser_str_get_encoding(str)));
26539 int idx = rb_enc_find_index(name);
26541 rb_bug(
"unknown encoding name: %s", name);
26544 return rb_enc_from_index(idx);
26553 case ENC_ASCII8BIT:
26554 enc = rb_ascii8bit_encoding();
26557 enc = find_enc(p,
"EUC-JP");
26559 case ENC_Windows_31J:
26560 enc = find_enc(p,
"Windows-31J");
26563 enc = rb_utf8_encoding();
26576 int c = RE_OPTION_ENCODING_IDX(options);
26582 char_to_option_kcode(c, &opt, &idx);
26583 enc = kcode_to_enc(p, idx);
26584 if (enc != rb_parser_str_get_encoding(str) &&
26585 !rb_parser_is_ascii_string(p, str)) {
26588 rb_parser_string_set_encoding(str, enc);
26590 else if (RE_OPTION_ENCODING_NONE(options)) {
26591 if (!PARSER_ENCODING_IS_ASCII8BIT(p, str) &&
26592 !rb_parser_is_ascii_string(p, str)) {
26596 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
26598 else if (rb_is_usascii_enc(p->enc)) {
26599 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
26611 int c = rb_reg_fragment_setenc(p, str, options);
26612 if (c) reg_fragment_enc_error(p, str, c);
26615#ifndef UNIVERSAL_PARSER
26621 rb_parser_assignable_func assignable;
26625reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
26626 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
26631 long len = name_end - name;
26632 const char *s = (
const char *)name;
26634 return rb_reg_named_capture_assign_iter_impl(p, s,
len, enc, &arg->succ_block, arg->loc, arg->assignable);
26638reg_named_capture_assign(
struct parser_params* p,
VALUE regexp,
const YYLTYPE *loc, rb_parser_assignable_func assignable)
26643 arg.enc = rb_enc_get(regexp);
26644 arg.succ_block = 0;
26646 arg.assignable = assignable;
26647 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
26649 if (!arg.succ_block)
return 0;
26650 return RNODE_BLOCK(arg.succ_block)->nd_next;
26658 return assignable(p,
id, val, loc);
26662rb_reg_named_capture_assign_iter_impl(
struct parser_params *p,
const char *s,
long len,
26668 if (!
len)
return ST_CONTINUE;
26669 if (!VALID_SYMNAME_P(s,
len, enc, ID_LOCAL))
26670 return ST_CONTINUE;
26672 var = intern_cstr(s,
len, enc);
26673 if (
len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)
len)) {
26674 if (!lvar_defined(p, var))
return ST_CONTINUE;
26676 node = node_assign(p, assignable(p, var, 0, loc), NEW_SYM(rb_id2str(var), loc), NO_LEX_CTXT, loc);
26677 succ = *succ_block;
26678 if (!succ) succ = NEW_ERROR(loc);
26679 succ = block_append(p, succ, node);
26680 *succ_block = succ;
26681 return ST_CONTINUE;
26689 reg_fragment_setenc(p, str, options);
26690 str2 = rb_str_new_parser_string(str);
26691 return rb_parser_reg_compile(p, str2, options);
26698 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
26708 err = rb_errinfo();
26709 re = parser_reg_compile(p, str, options);
26711 VALUE m = rb_attr_get(rb_errinfo(), idMesg);
26712 rb_set_errinfo(err);
26713 compile_error(p,
"%"PRIsVALUE, m);
26721rb_ruby_parser_set_options(
struct parser_params *p,
int print,
int loop,
int chomp,
int split)
26723 p->do_print = print;
26725 p->do_chomp = chomp;
26726 p->do_split = split;
26732 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
26733 const YYLTYPE *
const LOC = &default_location;
26736 NODE *print = (
NODE *)NEW_FCALL(rb_intern(
"print"),
26737 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
26739 node = block_append(p, node, print);
26743 NODE *irs = NEW_LIST(NEW_GVAR(rb_intern(
"$/"), LOC), LOC);
26746 ID ifs = rb_intern(
"$;");
26747 ID fields = rb_intern(
"$F");
26748 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
26749 NODE *split = NEW_GASGN(fields,
26750 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
26751 rb_intern(
"split"), args, LOC),
26753 node = block_append(p, split, node);
26757 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
26758 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
26761 node = NEW_WHILE((
NODE *)NEW_FCALL(idGets, irs, LOC), node, 1, LOC, &NULL_LOC, &NULL_LOC);
26778 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
26786 p->command_start = TRUE;
26787 p->ruby_sourcefile_string =
Qnil;
26788 p->lex.lpar_beg = -1;
26789 string_buffer_init(p);
26791 p->delayed.token = NULL;
26792 p->frozen_string_literal = -1;
26794 p->error_buffer =
Qfalse;
26795 p->end_expect_token_locations = NULL;
26800 p->parsing_thread =
Qnil;
26802 p->s_lvalue =
Qnil;
26805 p->debug_buffer =
Qnil;
26806 p->debug_output = rb_ractor_stdout();
26807 p->enc = rb_utf8_encoding();
26812#define rb_ruby_parser_mark ripper_parser_mark
26813#define rb_ruby_parser_free ripper_parser_free
26814#define rb_ruby_parser_memsize ripper_parser_memsize
26818rb_ruby_parser_mark(
void *ptr)
26822 rb_gc_mark(p->ruby_sourcefile_string);
26824 rb_gc_mark(p->error_buffer);
26826 rb_gc_mark(p->value);
26827 rb_gc_mark(p->result);
26828 rb_gc_mark(p->parsing_thread);
26829 rb_gc_mark(p->s_value);
26830 rb_gc_mark(p->s_lvalue);
26831 rb_gc_mark(p->s_value_stack);
26833 rb_gc_mark(p->debug_buffer);
26834 rb_gc_mark(p->debug_output);
26838rb_ruby_parser_free(
void *ptr)
26844 rb_ast_free(p->ast);
26847 if (p->warn_duplicate_keys_table) {
26848 st_free_table(p->warn_duplicate_keys_table);
26853 rb_parser_ary_free(p, p->tokens);
26858 ruby_sized_xfree(p->tokenbuf, p->toksiz);
26861 for (local = p->lvtbl; local; local = prev) {
26862 prev = local->prev;
26863 local_free(p, local);
26868 while ((ptinfo = p->token_info) != 0) {
26869 p->token_info = ptinfo->next;
26873 string_buffer_free(p);
26876 st_free_table(p->pvtbl);
26879 if (CASE_LABELS_ENABLED_P(p->case_labels)) {
26880 st_free_table(p->case_labels);
26883 xfree(p->lex.strterm);
26884 p->lex.strterm = 0;
26890rb_ruby_parser_memsize(
const void *ptr)
26894 size_t size =
sizeof(*p);
26897 for (local = p->lvtbl; local; local = local->prev) {
26898 size +=
sizeof(*local);
26899 if (local->vars) size += local->vars->capa *
sizeof(
ID);
26905#undef rb_reserved_word
26908rb_reserved_word(
const char *str,
unsigned int len)
26910 return reserved_word(str,
len);
26913#ifdef UNIVERSAL_PARSER
26915rb_ruby_parser_allocate(
const rb_parser_config_t *config)
26919 p->config = config;
26924rb_ruby_parser_new(
const rb_parser_config_t *config)
26927 rb_parser_t *p = rb_ruby_parser_allocate(config);
26928 parser_initialize(p);
26933rb_ruby_parser_allocate(
void)
26941rb_ruby_parser_new(
void)
26945 parser_initialize(p);
26954 p->parent_iseq = base;
26961 p->debug_lines = rb_parser_ary_new_capa_for_script_line(p, 10);
26967 p->error_tolerant = 1;
26973 p->keep_tokens = 1;
26974 p->tokens = rb_parser_ary_new_capa_for_ast_token(p, 10);
26986 return p->ruby__end__seen;
26990rb_ruby_parser_set_yydebug(
rb_parser_t *p,
int flag)
27019 return p->debug_output;
27025 p->debug_output = output;
27031 return p->parsing_thread;
27037 p->parsing_thread = parsing_thread;
27041rb_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)
27043 p->lex.gets = gets;
27044 p->lex.input = input;
27046 p->ruby_sourcefile_string = sourcefile_string;
27047 p->ruby_sourcefile = sourcefile;
27048 p->ruby_sourceline = sourceline;
27064rb_ruby_parser_ruby_sourcefile_string(
rb_parser_t *p)
27066 return p->ruby_sourcefile_string;
27072 return p->ruby_sourceline;
27078 return p->lex.state;
27085 p->ast = rb_ast_new();
27086 ripper_yyparse((
void*)p);
27087 rb_ast_free(p->ast);
27090 p->eval_tree_begin = 0;
27096 return dedent_string(p,
string, width);
27102 return p->lex.input != 0;
27108 parser_initialize(p);
27114 return p->lex.ptok - p->lex.pbeg;
27120 return p->lex.pcur - p->lex.ptok;
27126 return p->lex.lastline;
27130rb_ruby_ripper_lex_state_name(
struct parser_params *p,
int state)
27132 return rb_parser_lex_state_name(p, (
enum lex_state_e)state);
27135#ifdef UNIVERSAL_PARSER
27137rb_ripper_parser_params_allocate(
const rb_parser_config_t *config)
27140 p->config = config;
27146rb_ruby_ripper_parser_allocate(
void)
27154rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
27157 VALUE mesg = p->debug_buffer;
27161 rb_str_vcatf(mesg, fmt, ap);
27163 if (char_at_end(p, mesg, 0) ==
'\n') {
27164 rb_io_write(p->debug_output, mesg);
27165 p->debug_buffer =
Qnil;
27173 int lineno, column;
27176 lineno = loc->end_pos.lineno;
27177 column = loc->end_pos.column;
27180 lineno = p->ruby_sourceline;
27184 rb_io_flush(p->debug_output);
27188 rb_syntax_error_append(p->error_buffer,
27189 p->ruby_sourcefile_string,
27196count_char(
const char *str,
int c)
27199 while (str[n] == c) ++n;
27210rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
27212 if (*yystr ==
'"') {
27213 size_t yyn = 0, bquote = 0;
27214 const char *yyp = yystr;
27220 bquote = count_char(yyp+1,
'\'') + 1;
27221 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
27227 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
27228 if (yyres) memcpy(yyres + yyn, yyp, bquote);
27234 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
27235 if (yyres) memcpy(yyres + yyn, yyp, 3);
27240 goto do_not_strip_quotes;
27244 goto do_not_strip_quotes;
27247 if (*++yyp !=
'\\')
27248 goto do_not_strip_quotes;
27263 do_not_strip_quotes: ;
27266 if (!yyres)
return strlen(yystr);
27268 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
27273#define validate(x) (void)(x)
27302 return rb_funcall(p->value, mid, 3, a, b, c);
27312 return rb_funcall(p->value, mid, 4, a, b, c, d);
27323 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
27336 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.