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 BITFIELD(
enum rb_parser_shareability, shareable_constant_value, 2);
375 BITFIELD(
enum rescue_context, in_rescue, 2);
376 unsigned int cant_return: 1;
381#if defined(__GNUC__) && !defined(__clang__)
393#define NO_LEX_CTXT (struct lex_context){0}
395#ifndef WARN_PAST_SCOPE
396# define WARN_PAST_SCOPE 0
401#define yydebug (p->debug)
403#define YYFPRINTF(out, ...) rb_parser_printf(p, __VA_ARGS__)
404#define YY_LOCATION_PRINT(File, loc, p) \
405 rb_parser_printf(p, "%d.%d-%d.%d", \
406 (loc).beg_pos.lineno, (loc).beg_pos.column,\
407 (loc).end_pos.lineno, (loc).end_pos.column)
408#define YYLLOC_DEFAULT(Current, Rhs, N) \
412 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
413 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
417 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
418 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
422 (((Msgid)[0] == 'm') && (strcmp((Msgid), "memory exhausted") == 0) ? \
423 "nesting too deep" : (Msgid))
425#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
426 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
427#define RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(Current) \
428 rb_parser_set_location_of_delayed_token(p, &(Current))
429#define RUBY_SET_YYLLOC_OF_HEREDOC_END(Current) \
430 rb_parser_set_location_of_heredoc_end(p, &(Current))
431#define RUBY_SET_YYLLOC_OF_DUMMY_END(Current) \
432 rb_parser_set_location_of_dummy_end(p, &(Current))
433#define RUBY_SET_YYLLOC_OF_NONE(Current) \
434 rb_parser_set_location_of_none(p, &(Current))
435#define RUBY_SET_YYLLOC(Current) \
436 rb_parser_set_location(p, &(Current))
437#define RUBY_INIT_YYLLOC() \
439 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
440 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
443#define IS_lex_state_for(x, ls) ((x) & (ls))
444#define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
445#define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
446#define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
448# define SET_LEX_STATE(ls) \
449 parser_set_lex_state(p, ls, __LINE__)
450static inline enum lex_state_e parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line);
452typedef VALUE stack_type;
456# define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
457# define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
458# define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
459# define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
460# define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
464#define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
465#define COND_POP() BITSTACK_POP(cond_stack)
466#define COND_P() BITSTACK_SET_P(cond_stack)
467#define COND_SET(n) BITSTACK_SET(cond_stack, (n))
471#define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
472#define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
473#define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
474#define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
492 NODE *outer, *inner, *current;
509#define DVARS_INHERIT ((void*)1)
510#define DVARS_TOPSCOPE NULL
511#define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
538#define AFTER_HEREDOC_WITHOUT_TERMINATOR ((rb_parser_string_t *)1)
555 rb_parser_lex_gets_func *gets;
556 rb_parser_input_data input;
564 enum lex_state_e state;
572 stack_type cond_stack;
573 stack_type cmdarg_stack;
578 int heredoc_line_indent;
585 const char *ruby_sourcefile;
586 VALUE ruby_sourcefile_string;
606 st_table *warn_duplicate_keys_table;
613 NODE *eval_tree_begin;
617#ifdef UNIVERSAL_PARSER
618 const rb_parser_config_t *config;
621 signed int frozen_string_literal:2;
623 unsigned int command_start:1;
624 unsigned int eofp: 1;
625 unsigned int ruby__end__seen: 1;
626 unsigned int debug: 1;
627 unsigned int has_shebang: 1;
628 unsigned int token_seen: 1;
629 unsigned int token_info_enabled: 1;
631 unsigned int past_scope_enabled: 1;
633 unsigned int error_p: 1;
634 unsigned int cr_seen: 1;
639 unsigned int do_print: 1;
640 unsigned int do_loop: 1;
641 unsigned int do_chomp: 1;
642 unsigned int do_split: 1;
643 unsigned int error_tolerant: 1;
644 unsigned int keep_tokens: 1;
662 VALUE parsing_thread;
669#define NUMPARAM_ID_P(id) numparam_id_p(p, id)
670#define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - (tNUMPARAM_1 - 1))
671#define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 - 1 + (idx)))
675 if (!is_local_id(
id) ||
id < (tNUMPARAM_1 << ID_SCOPE_SHIFT))
return 0;
676 unsigned int idx = NUMPARAM_ID_TO_IDX(
id);
677 return idx > 0 && idx <= NUMPARAM_MAX;
686 rb_parser_printf(p,
"after-shift: %+"PRIsVALUE
"\n", p->s_value);
688 rb_ary_push(p->s_value_stack, p->s_value);
696 if (
len) p->s_lvalue = rb_ary_entry(p->s_value_stack, -
len);
702 for (
int i = 0; i <
len; i++) {
703 VALUE tos = rb_ary_pop(p->s_value_stack);
705 rb_parser_printf(p,
"after-reduce pop: %+"PRIsVALUE
"\n", tos);
709 rb_parser_printf(p,
"after-reduce push: %+"PRIsVALUE
"\n", p->s_lvalue);
711 rb_ary_push(p->s_value_stack, p->s_lvalue);
719 rb_parser_printf(p,
"after-shift-error-token:\n");
721 rb_ary_push(p->s_value_stack,
Qnil);
727 for (
int i = 0; i <
len; i++) {
728 VALUE tos = rb_ary_pop(p->s_value_stack);
730 rb_parser_printf(p,
"after-pop-stack pop: %+"PRIsVALUE
"\n", tos);
761#define intern_cstr(n,l,en) rb_intern3(n,l,en)
763#define STRING_NEW0() rb_parser_encoding_string_new(p,0,0,p->enc)
765#define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
766#define STR_NEW0() rb_enc_str_new(0,0,p->enc)
767#define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
768#define STR_NEW3(ptr,len,e,func) parser_str_new(p, (ptr),(len),(e),(func),p->enc)
769#define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
770#define VALID_SYMNAME_P(s, l, enc, type) (rb_enc_symname_type(s, l, enc, (1U<<(type))) == (int)(type))
776 long len = RSTRING_LEN(str);
777 return len > 0 ? (
unsigned char)RSTRING_PTR(str)[
len-1] : when_empty;
784 st_free_table(p->pvtbl);
791 if (p->pktbl) st_free_table(p->pktbl);
795#define STRING_BUF_DEFAULT_LEN 16
803 buf->head = buf->last =
xmalloc(size);
804 buf->head->len = STRING_BUF_DEFAULT_LEN;
806 buf->head->next = NULL;
814 if (buf->head->used >= buf->head->len) {
816 long n = buf->head->len * 2;
823 buf->last->next = elem;
826 buf->last->buf[buf->last->used++] = str;
837 for (
long i = 0; i < elem->used; i++) {
838 rb_parser_string_free(p, elem->buf[i]);
850debug_end_expect_token_locations(
struct parser_params *p,
const char *name)
853 VALUE mesg = rb_sprintf(
"%s: [", name);
858 rb_str_catf(mesg,
"[%d, %d]", loc->pos->lineno, loc->pos->column);
862 flush_debug_buffer(p, p->debug_output, mesg);
869 if(!p->error_tolerant)
return;
873 locations->pos = pos;
874 locations->prev = p->end_expect_token_locations;
875 p->end_expect_token_locations = locations;
877 debug_end_expect_token_locations(p,
"push_end_expect_token_locations");
883 if(!p->end_expect_token_locations)
return;
887 p->end_expect_token_locations = locations;
889 debug_end_expect_token_locations(p,
"pop_end_expect_token_locations");
895 return p->end_expect_token_locations;
899parser_token2char(
struct parser_params *p,
enum yytokentype tok)
902#define TOKEN2CHAR(tok) case tok: return (#tok);
903#define TOKEN2CHAR2(tok, name) case tok: return (name);
904 TOKEN2CHAR2(
' ',
"word_sep");
905 TOKEN2CHAR2(
'!',
"!")
906 TOKEN2CHAR2('%', "%");
907 TOKEN2CHAR2('&', "&");
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('\n', "nl");
925 TOKEN2CHAR2('{
', "\"{\"");
926 TOKEN2CHAR2('}
', "\"}\"");
927 TOKEN2CHAR2('[
', "\"[\"");
928 TOKEN2CHAR2(']
', "\"]\"");
929 TOKEN2CHAR2('(
', "\"(\"");
930 TOKEN2CHAR2(')
', "\")\"");
931 TOKEN2CHAR2('\\
', "backslash");
932 TOKEN2CHAR(keyword_class);
933 TOKEN2CHAR(keyword_module);
934 TOKEN2CHAR(keyword_def);
935 TOKEN2CHAR(keyword_undef);
936 TOKEN2CHAR(keyword_begin);
937 TOKEN2CHAR(keyword_rescue);
938 TOKEN2CHAR(keyword_ensure);
939 TOKEN2CHAR(keyword_end);
940 TOKEN2CHAR(keyword_if);
941 TOKEN2CHAR(keyword_unless);
942 TOKEN2CHAR(keyword_then);
943 TOKEN2CHAR(keyword_elsif);
944 TOKEN2CHAR(keyword_else);
945 TOKEN2CHAR(keyword_case);
946 TOKEN2CHAR(keyword_when);
947 TOKEN2CHAR(keyword_while);
948 TOKEN2CHAR(keyword_until);
949 TOKEN2CHAR(keyword_for);
950 TOKEN2CHAR(keyword_break);
951 TOKEN2CHAR(keyword_next);
952 TOKEN2CHAR(keyword_redo);
953 TOKEN2CHAR(keyword_retry);
954 TOKEN2CHAR(keyword_in);
955 TOKEN2CHAR(keyword_do);
956 TOKEN2CHAR(keyword_do_cond);
957 TOKEN2CHAR(keyword_do_block);
958 TOKEN2CHAR(keyword_do_LAMBDA);
959 TOKEN2CHAR(keyword_return);
960 TOKEN2CHAR(keyword_yield);
961 TOKEN2CHAR(keyword_super);
962 TOKEN2CHAR(keyword_self);
963 TOKEN2CHAR(keyword_nil);
964 TOKEN2CHAR(keyword_true);
965 TOKEN2CHAR(keyword_false);
966 TOKEN2CHAR(keyword_and);
967 TOKEN2CHAR(keyword_or);
968 TOKEN2CHAR(keyword_not);
969 TOKEN2CHAR(modifier_if);
970 TOKEN2CHAR(modifier_unless);
971 TOKEN2CHAR(modifier_while);
972 TOKEN2CHAR(modifier_until);
973 TOKEN2CHAR(modifier_rescue);
974 TOKEN2CHAR(keyword_alias);
975 TOKEN2CHAR(keyword_defined);
976 TOKEN2CHAR(keyword_BEGIN);
977 TOKEN2CHAR(keyword_END);
978 TOKEN2CHAR(keyword__LINE__);
979 TOKEN2CHAR(keyword__FILE__);
980 TOKEN2CHAR(keyword__ENCODING__);
981 TOKEN2CHAR(tIDENTIFIER);
985 TOKEN2CHAR(tCONSTANT);
988 TOKEN2CHAR(tINTEGER);
990 TOKEN2CHAR(tRATIONAL);
991 TOKEN2CHAR(tIMAGINARY);
993 TOKEN2CHAR(tNTH_REF);
994 TOKEN2CHAR(tBACK_REF);
995 TOKEN2CHAR(tSTRING_CONTENT);
996 TOKEN2CHAR(tREGEXP_END);
997 TOKEN2CHAR(tDUMNY_END);
1000 TOKEN2CHAR(tUMINUS);
1011 TOKEN2CHAR(tNMATCH);
1020 TOKEN2CHAR(tANDDOT);
1021 TOKEN2CHAR(tCOLON2);
1022 TOKEN2CHAR(tCOLON3);
1023 TOKEN2CHAR(tOP_ASGN);
1025 TOKEN2CHAR(tLPAREN);
1026 TOKEN2CHAR(tLPAREN_ARG);
1027 TOKEN2CHAR(tLBRACK);
1028 TOKEN2CHAR(tLBRACE);
1029 TOKEN2CHAR(tLBRACE_ARG);
1033 TOKEN2CHAR(tLAMBDA);
1034 TOKEN2CHAR(tSYMBEG);
1035 TOKEN2CHAR(tSTRING_BEG);
1036 TOKEN2CHAR(tXSTRING_BEG);
1037 TOKEN2CHAR(tREGEXP_BEG);
1038 TOKEN2CHAR(tWORDS_BEG);
1039 TOKEN2CHAR(tQWORDS_BEG);
1040 TOKEN2CHAR(tSYMBOLS_BEG);
1041 TOKEN2CHAR(tQSYMBOLS_BEG);
1042 TOKEN2CHAR(tSTRING_END);
1043 TOKEN2CHAR(tSTRING_DEND);
1044 TOKEN2CHAR(tSTRING_DBEG);
1045 TOKEN2CHAR(tSTRING_DVAR);
1046 TOKEN2CHAR(tLAMBEG);
1047 TOKEN2CHAR(tLABEL_END);
1048 TOKEN2CHAR(tIGNORED_NL);
1049 TOKEN2CHAR(tCOMMENT);
1050 TOKEN2CHAR(tEMBDOC_BEG);
1051 TOKEN2CHAR(tEMBDOC);
1052 TOKEN2CHAR(tEMBDOC_END);
1053 TOKEN2CHAR(tHEREDOC_BEG);
1054 TOKEN2CHAR(tHEREDOC_END);
1055 TOKEN2CHAR(k__END__);
1056 TOKEN2CHAR(tLOWEST);
1057 TOKEN2CHAR(tUMINUS_NUM);
1058 TOKEN2CHAR(tLAST_TOKEN);
1063 rb_bug("parser_token2id: unknown token %d", tok);
1065 UNREACHABLE_RETURN(0);
1069push_end_expect_token_locations(struct parser_params *p, const rb_code_position_t *pos)
1074pop_end_expect_token_locations(struct parser_params *p)
1079RBIMPL_ATTR_NONNULL((1, 2, 3))
1080static int parser_yyerror(struct parser_params*, const YYLTYPE *yylloc, const char*);
1081RBIMPL_ATTR_NONNULL((1, 2))
1082static int parser_yyerror0(struct parser_params*, const char*);
1083#define yyerror0(msg) parser_yyerror0(p, (msg))
1084#define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
1085#define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
1086#define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
1087#define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
1088#define lex_eol_p(p) lex_eol_n_p(p, 0)
1089#define lex_eol_n_p(p,n) lex_eol_ptr_n_p(p, (p)->lex.pcur, n)
1090#define lex_eol_ptr_p(p,ptr) lex_eol_ptr_n_p(p,ptr,0)
1091#define lex_eol_ptr_n_p(p,ptr,n) ((ptr)+(n) >= (p)->lex.pend)
1093static void token_info_setup(token_info *ptinfo, const char *ptr, const rb_code_location_t *loc);
1094static void token_info_push(struct parser_params*, const char *token, const rb_code_location_t *loc);
1095static void token_info_pop(struct parser_params*, const char *token, const rb_code_location_t *loc);
1096static void token_info_warn(struct parser_params *p, const char *token, token_info *ptinfo_beg, int same, const rb_code_location_t *loc);
1097static void token_info_drop(struct parser_params *p, const char *token, rb_code_position_t beg_pos);
1100#define compile_for_eval (0)
1102#define compile_for_eval (p->parent_iseq != 0)
1105#define token_column ((int)(p->lex.ptok - p->lex.pbeg))
1107#define CALL_Q_P(q) ((q) == tANDDOT)
1108#define NEW_QCALL(q,r,m,a,loc) (CALL_Q_P(q) ? NEW_QCALL0(r,m,a,loc) : NEW_CALL(r,m,a,loc))
1110#define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
1112static enum yytokentype yylex(YYSTYPE*, YYLTYPE*, struct parser_params*);
1115rb_discard_node(struct parser_params *p, NODE *n)
1117 rb_ast_delete_node(p->ast, n);
1120static rb_node_scope_t *rb_node_scope_new(struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body, const YYLTYPE *loc);
1121static 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, const YYLTYPE *loc);
1122static rb_node_block_t *rb_node_block_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
1123static 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);
1124static 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);
1125static 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);
1126static 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);
1127static 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);
1128static 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);
1129static rb_node_in_t *rb_node_in_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, NODE *nd_next, const YYLTYPE *loc);
1130static 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);
1131static 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);
1132static rb_node_iter_t *rb_node_iter_new(struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body, const YYLTYPE *loc);
1133static 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);
1134static rb_node_for_masgn_t *rb_node_for_masgn_new(struct parser_params *p, NODE *nd_var, const YYLTYPE *loc);
1135static rb_node_retry_t *rb_node_retry_new(struct parser_params *p, const YYLTYPE *loc);
1136static rb_node_begin_t *rb_node_begin_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1137static rb_node_rescue_t *rb_node_rescue_new(struct parser_params *p, NODE *nd_head, NODE *nd_resq, NODE *nd_else, const YYLTYPE *loc);
1138static 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);
1139static rb_node_ensure_t *rb_node_ensure_new(struct parser_params *p, NODE *nd_head, NODE *nd_ensr, const YYLTYPE *loc);
1140static 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);
1141static 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);
1142static rb_node_masgn_t *rb_node_masgn_new(struct parser_params *p, NODE *nd_head, NODE *nd_args, const YYLTYPE *loc);
1143static rb_node_lasgn_t *rb_node_lasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1144static rb_node_dasgn_t *rb_node_dasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1145static rb_node_gasgn_t *rb_node_gasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1146static rb_node_iasgn_t *rb_node_iasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1147static 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);
1148static rb_node_cvasgn_t *rb_node_cvasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
1149static 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);
1150static 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);
1151static 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);
1152static 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);
1153static 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);
1154static rb_node_call_t *rb_node_call_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1155static rb_node_opcall_t *rb_node_opcall_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1156static rb_node_fcall_t *rb_node_fcall_new(struct parser_params *p, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1157static rb_node_vcall_t *rb_node_vcall_new(struct parser_params *p, ID nd_mid, const YYLTYPE *loc);
1158static rb_node_qcall_t *rb_node_qcall_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1159static 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);
1160static rb_node_zsuper_t * rb_node_zsuper_new(struct parser_params *p, const YYLTYPE *loc);
1161static rb_node_list_t *rb_node_list_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
1162static rb_node_list_t *rb_node_list_new2(struct parser_params *p, NODE *nd_head, long nd_alen, NODE *nd_next, const YYLTYPE *loc);
1163static rb_node_zlist_t *rb_node_zlist_new(struct parser_params *p, const YYLTYPE *loc);
1164static rb_node_hash_t *rb_node_hash_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
1165static rb_node_return_t *rb_node_return_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1166static 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);
1167static rb_node_lvar_t *rb_node_lvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1168static rb_node_dvar_t *rb_node_dvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1169static rb_node_gvar_t *rb_node_gvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1170static rb_node_ivar_t *rb_node_ivar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1171static rb_node_const_t *rb_node_const_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1172static rb_node_cvar_t *rb_node_cvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
1173static rb_node_nth_ref_t *rb_node_nth_ref_new(struct parser_params *p, long nd_nth, const YYLTYPE *loc);
1174static rb_node_back_ref_t *rb_node_back_ref_new(struct parser_params *p, long nd_nth, const YYLTYPE *loc);
1175static rb_node_match2_t *rb_node_match2_new(struct parser_params *p, NODE *nd_recv, NODE *nd_value, const YYLTYPE *loc);
1176static rb_node_match3_t *rb_node_match3_new(struct parser_params *p, NODE *nd_recv, NODE *nd_value, const YYLTYPE *loc);
1177static rb_node_integer_t * rb_node_integer_new(struct parser_params *p, char* val, int base, const YYLTYPE *loc);
1178static rb_node_float_t * rb_node_float_new(struct parser_params *p, char* val, const YYLTYPE *loc);
1179static rb_node_rational_t * rb_node_rational_new(struct parser_params *p, char* val, int base, int seen_point, const YYLTYPE *loc);
1180static 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);
1181static rb_node_str_t *rb_node_str_new(struct parser_params *p, rb_parser_string_t *string, const YYLTYPE *loc);
1182static 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);
1183static rb_node_dstr_t *rb_node_dstr_new(struct parser_params *p, rb_parser_string_t *string, const YYLTYPE *loc);
1184static rb_node_xstr_t *rb_node_xstr_new(struct parser_params *p, rb_parser_string_t *string, const YYLTYPE *loc);
1185static 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);
1186static 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);
1187static 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);
1188static rb_node_once_t *rb_node_once_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1189static rb_node_args_t *rb_node_args_new(struct parser_params *p, const YYLTYPE *loc);
1190static rb_node_args_aux_t *rb_node_args_aux_new(struct parser_params *p, ID nd_pid, int nd_plen, const YYLTYPE *loc);
1191static rb_node_opt_arg_t *rb_node_opt_arg_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1192static rb_node_kw_arg_t *rb_node_kw_arg_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1193static rb_node_postarg_t *rb_node_postarg_new(struct parser_params *p, NODE *nd_1st, NODE *nd_2nd, const YYLTYPE *loc);
1194static rb_node_argscat_t *rb_node_argscat_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, const YYLTYPE *loc);
1195static rb_node_argspush_t *rb_node_argspush_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, const YYLTYPE *loc);
1196static rb_node_splat_t *rb_node_splat_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc, const YYLTYPE *operator_loc);
1197static rb_node_block_pass_t *rb_node_block_pass_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc, const YYLTYPE *operator_loc);
1198static rb_node_defn_t *rb_node_defn_new(struct parser_params *p, ID nd_mid, NODE *nd_defn, const YYLTYPE *loc);
1199static rb_node_defs_t *rb_node_defs_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_defn, const YYLTYPE *loc);
1200static 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);
1201static 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);
1202static rb_node_undef_t *rb_node_undef_new(struct parser_params *p, NODE *nd_undef, const YYLTYPE *loc);
1203static 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);
1204static rb_node_module_t *rb_node_module_new(struct parser_params *p, NODE *nd_cpath, NODE *nd_body, const YYLTYPE *loc);
1205static rb_node_sclass_t *rb_node_sclass_new(struct parser_params *p, NODE *nd_recv, NODE *nd_body, const YYLTYPE *loc);
1206static rb_node_colon2_t *rb_node_colon2_new(struct parser_params *p, NODE *nd_head, ID nd_mid, const YYLTYPE *loc);
1207static rb_node_colon3_t *rb_node_colon3_new(struct parser_params *p, ID nd_mid, const YYLTYPE *loc);
1208static 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);
1209static 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);
1210static rb_node_self_t *rb_node_self_new(struct parser_params *p, const YYLTYPE *loc);
1211static rb_node_nil_t *rb_node_nil_new(struct parser_params *p, const YYLTYPE *loc);
1212static rb_node_true_t *rb_node_true_new(struct parser_params *p, const YYLTYPE *loc);
1213static rb_node_false_t *rb_node_false_new(struct parser_params *p, const YYLTYPE *loc);
1214static rb_node_errinfo_t *rb_node_errinfo_new(struct parser_params *p, const YYLTYPE *loc);
1215static rb_node_defined_t *rb_node_defined_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
1216static 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);
1217static rb_node_sym_t *rb_node_sym_new(struct parser_params *p, VALUE str, const YYLTYPE *loc);
1218static 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);
1219static rb_node_attrasgn_t *rb_node_attrasgn_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1220static 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);
1221static rb_node_aryptn_t *rb_node_aryptn_new(struct parser_params *p, NODE *pre_args, NODE *rest_arg, NODE *post_args, const YYLTYPE *loc);
1222static rb_node_hshptn_t *rb_node_hshptn_new(struct parser_params *p, NODE *nd_pconst, NODE *nd_pkwargs, NODE *nd_pkwrestarg, const YYLTYPE *loc);
1223static 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);
1224static rb_node_line_t *rb_node_line_new(struct parser_params *p, const YYLTYPE *loc);
1225static rb_node_file_t *rb_node_file_new(struct parser_params *p, VALUE str, const YYLTYPE *loc);
1226static rb_node_error_t *rb_node_error_new(struct parser_params *p, const YYLTYPE *loc);
1228#define NEW_SCOPE(a,b,loc) (NODE *)rb_node_scope_new(p,a,b,loc)
1229#define NEW_SCOPE2(t,a,b,loc) (NODE *)rb_node_scope_new2(p,t,a,b,loc)
1230#define NEW_BLOCK(a,loc) (NODE *)rb_node_block_new(p,a,loc)
1231#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)
1232#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)
1233#define NEW_CASE(h,b,loc,ck_loc,ek_loc) (NODE *)rb_node_case_new(p,h,b,loc,ck_loc,ek_loc)
1234#define NEW_CASE2(b,loc,ck_loc,ek_loc) (NODE *)rb_node_case2_new(p,b,loc,ck_loc,ek_loc)
1235#define NEW_CASE3(h,b,loc,ck_loc,ek_loc) (NODE *)rb_node_case3_new(p,h,b,loc,ck_loc,ek_loc)
1236#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)
1237#define NEW_IN(c,t,e,loc) (NODE *)rb_node_in_new(p,c,t,e,loc)
1238#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)
1239#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)
1240#define NEW_ITER(a,b,loc) (NODE *)rb_node_iter_new(p,a,b,loc)
1241#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)
1242#define NEW_FOR_MASGN(v,loc) (NODE *)rb_node_for_masgn_new(p,v,loc)
1243#define NEW_RETRY(loc) (NODE *)rb_node_retry_new(p,loc)
1244#define NEW_BEGIN(b,loc) (NODE *)rb_node_begin_new(p,b,loc)
1245#define NEW_RESCUE(b,res,e,loc) (NODE *)rb_node_rescue_new(p,b,res,e,loc)
1246#define NEW_RESBODY(a,v,ex,n,loc) (NODE *)rb_node_resbody_new(p,a,v,ex,n,loc)
1247#define NEW_ENSURE(b,en,loc) (NODE *)rb_node_ensure_new(p,b,en,loc)
1248#define NEW_AND(f,s,loc,op_loc) (NODE *)rb_node_and_new(p,f,s,loc,op_loc)
1249#define NEW_OR(f,s,loc,op_loc) (NODE *)rb_node_or_new(p,f,s,loc,op_loc)
1250#define NEW_MASGN(l,r,loc) rb_node_masgn_new(p,l,r,loc)
1251#define NEW_LASGN(v,val,loc) (NODE *)rb_node_lasgn_new(p,v,val,loc)
1252#define NEW_DASGN(v,val,loc) (NODE *)rb_node_dasgn_new(p,v,val,loc)
1253#define NEW_GASGN(v,val,loc) (NODE *)rb_node_gasgn_new(p,v,val,loc)
1254#define NEW_IASGN(v,val,loc) (NODE *)rb_node_iasgn_new(p,v,val,loc)
1255#define NEW_CDECL(v,val,path,share,loc) (NODE *)rb_node_cdecl_new(p,v,val,path,share,loc)
1256#define NEW_CVASGN(v,val,loc) (NODE *)rb_node_cvasgn_new(p,v,val,loc)
1257#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)
1258#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)
1259#define NEW_OP_ASGN_OR(i,val,loc) (NODE *)rb_node_op_asgn_or_new(p,i,val,loc)
1260#define NEW_OP_ASGN_AND(i,val,loc) (NODE *)rb_node_op_asgn_and_new(p,i,val,loc)
1261#define NEW_OP_CDECL(v,op,val,share,loc) (NODE *)rb_node_op_cdecl_new(p,v,val,op,share,loc)
1262#define NEW_CALL(r,m,a,loc) (NODE *)rb_node_call_new(p,r,m,a,loc)
1263#define NEW_OPCALL(r,m,a,loc) (NODE *)rb_node_opcall_new(p,r,m,a,loc)
1264#define NEW_FCALL(m,a,loc) rb_node_fcall_new(p,m,a,loc)
1265#define NEW_VCALL(m,loc) (NODE *)rb_node_vcall_new(p,m,loc)
1266#define NEW_QCALL0(r,m,a,loc) (NODE *)rb_node_qcall_new(p,r,m,a,loc)
1267#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)
1268#define NEW_ZSUPER(loc) (NODE *)rb_node_zsuper_new(p,loc)
1269#define NEW_LIST(a,loc) (NODE *)rb_node_list_new(p,a,loc)
1270#define NEW_LIST2(h,l,n,loc) (NODE *)rb_node_list_new2(p,h,l,n,loc)
1271#define NEW_ZLIST(loc) (NODE *)rb_node_zlist_new(p,loc)
1272#define NEW_HASH(a,loc) (NODE *)rb_node_hash_new(p,a,loc)
1273#define NEW_RETURN(s,loc,k_loc) (NODE *)rb_node_return_new(p,s,loc,k_loc)
1274#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)
1275#define NEW_LVAR(v,loc) (NODE *)rb_node_lvar_new(p,v,loc)
1276#define NEW_DVAR(v,loc) (NODE *)rb_node_dvar_new(p,v,loc)
1277#define NEW_GVAR(v,loc) (NODE *)rb_node_gvar_new(p,v,loc)
1278#define NEW_IVAR(v,loc) (NODE *)rb_node_ivar_new(p,v,loc)
1279#define NEW_CONST(v,loc) (NODE *)rb_node_const_new(p,v,loc)
1280#define NEW_CVAR(v,loc) (NODE *)rb_node_cvar_new(p,v,loc)
1281#define NEW_NTH_REF(n,loc) (NODE *)rb_node_nth_ref_new(p,n,loc)
1282#define NEW_BACK_REF(n,loc) (NODE *)rb_node_back_ref_new(p,n,loc)
1283#define NEW_MATCH2(n1,n2,loc) (NODE *)rb_node_match2_new(p,n1,n2,loc)
1284#define NEW_MATCH3(r,n2,loc) (NODE *)rb_node_match3_new(p,r,n2,loc)
1285#define NEW_INTEGER(val, base,loc) (NODE *)rb_node_integer_new(p,val,base,loc)
1286#define NEW_FLOAT(val,loc) (NODE *)rb_node_float_new(p,val,loc)
1287#define NEW_RATIONAL(val,base,seen_point,loc) (NODE *)rb_node_rational_new(p,val,base,seen_point,loc)
1288#define NEW_IMAGINARY(val,base,seen_point,numeric_type,loc) (NODE *)rb_node_imaginary_new(p,val,base,seen_point,numeric_type,loc)
1289#define NEW_STR(s,loc) (NODE *)rb_node_str_new(p,s,loc)
1290#define NEW_DSTR0(s,l,n,loc) (NODE *)rb_node_dstr_new0(p,s,l,n,loc)
1291#define NEW_DSTR(s,loc) (NODE *)rb_node_dstr_new(p,s,loc)
1292#define NEW_XSTR(s,loc) (NODE *)rb_node_xstr_new(p,s,loc)
1293#define NEW_DXSTR(s,l,n,loc) (NODE *)rb_node_dxstr_new(p,s,l,n,loc)
1294#define NEW_EVSTR(n,loc,o_loc,c_loc) (NODE *)rb_node_evstr_new(p,n,loc,o_loc,c_loc)
1295#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)
1296#define NEW_ONCE(b,loc) (NODE *)rb_node_once_new(p,b,loc)
1297#define NEW_ARGS(loc) rb_node_args_new(p,loc)
1298#define NEW_ARGS_AUX(r,b,loc) rb_node_args_aux_new(p,r,b,loc)
1299#define NEW_OPT_ARG(v,loc) rb_node_opt_arg_new(p,v,loc)
1300#define NEW_KW_ARG(v,loc) rb_node_kw_arg_new(p,v,loc)
1301#define NEW_POSTARG(i,v,loc) (NODE *)rb_node_postarg_new(p,i,v,loc)
1302#define NEW_ARGSCAT(a,b,loc) (NODE *)rb_node_argscat_new(p,a,b,loc)
1303#define NEW_ARGSPUSH(a,b,loc) (NODE *)rb_node_argspush_new(p,a,b,loc)
1304#define NEW_SPLAT(a,loc,op_loc) (NODE *)rb_node_splat_new(p,a,loc,op_loc)
1305#define NEW_BLOCK_PASS(b,loc,o_loc) rb_node_block_pass_new(p,b,loc,o_loc)
1306#define NEW_DEFN(i,s,loc) (NODE *)rb_node_defn_new(p,i,s,loc)
1307#define NEW_DEFS(r,i,s,loc) (NODE *)rb_node_defs_new(p,r,i,s,loc)
1308#define NEW_ALIAS(n,o,loc,k_loc) (NODE *)rb_node_alias_new(p,n,o,loc,k_loc)
1309#define NEW_VALIAS(n,o,loc,k_loc) (NODE *)rb_node_valias_new(p,n,o,loc,k_loc)
1310#define NEW_UNDEF(i,loc) (NODE *)rb_node_undef_new(p,i,loc)
1311#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)
1312#define NEW_MODULE(n,b,loc) (NODE *)rb_node_module_new(p,n,b,loc)
1313#define NEW_SCLASS(r,b,loc) (NODE *)rb_node_sclass_new(p,r,b,loc)
1314#define NEW_COLON2(c,i,loc) (NODE *)rb_node_colon2_new(p,c,i,loc)
1315#define NEW_COLON3(i,loc) (NODE *)rb_node_colon3_new(p,i,loc)
1316#define NEW_DOT2(b,e,loc,op_loc) (NODE *)rb_node_dot2_new(p,b,e,loc,op_loc)
1317#define NEW_DOT3(b,e,loc,op_loc) (NODE *)rb_node_dot3_new(p,b,e,loc,op_loc)
1318#define NEW_SELF(loc) (NODE *)rb_node_self_new(p,loc)
1319#define NEW_NIL(loc) (NODE *)rb_node_nil_new(p,loc)
1320#define NEW_TRUE(loc) (NODE *)rb_node_true_new(p,loc)
1321#define NEW_FALSE(loc) (NODE *)rb_node_false_new(p,loc)
1322#define NEW_ERRINFO(loc) (NODE *)rb_node_errinfo_new(p,loc)
1323#define NEW_DEFINED(e,loc) (NODE *)rb_node_defined_new(p,e,loc)
1324#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)
1325#define NEW_SYM(str,loc) (NODE *)rb_node_sym_new(p,str,loc)
1326#define NEW_DSYM(s,l,n,loc) (NODE *)rb_node_dsym_new(p,s,l,n,loc)
1327#define NEW_ATTRASGN(r,m,a,loc) (NODE *)rb_node_attrasgn_new(p,r,m,a,loc)
1328#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)
1329#define NEW_ARYPTN(pre,r,post,loc) (NODE *)rb_node_aryptn_new(p,pre,r,post,loc)
1330#define NEW_HSHPTN(c,kw,kwrest,loc) (NODE *)rb_node_hshptn_new(p,c,kw,kwrest,loc)
1331#define NEW_FNDPTN(pre,a,post,loc) (NODE *)rb_node_fndptn_new(p,pre,a,post,loc)
1332#define NEW_LINE(loc) (NODE *)rb_node_line_new(p,loc)
1333#define NEW_FILE(str,loc) (NODE *)rb_node_file_new(p,str,loc)
1334#define NEW_ENCODING(loc) (NODE *)rb_node_encoding_new(p,loc)
1335#define NEW_ERROR(loc) (NODE *)rb_node_error_new(p,loc)
1337enum internal_node_type {
1338 NODE_INTERNAL_ONLY = NODE_LAST,
1345parser_node_name(int node)
1349 return "NODE_DEF_TEMP";
1351 return "NODE_EXITS";
1353 return ruby_node_name(node);
1357/* This node is parse.y internal */
1358struct RNode_DEF_TEMP {
1361 /* for NODE_DEFN/NODE_DEFS */
1363 struct RNode *nd_def;
1368 NODE *numparam_save;
1369 struct lex_context ctxt;
1373#define RNODE_DEF_TEMP(node) ((struct RNode_DEF_TEMP *)(node))
1375static rb_node_break_t *rb_node_break_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1376static rb_node_next_t *rb_node_next_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1377static rb_node_redo_t *rb_node_redo_new(struct parser_params *p, const YYLTYPE *loc, const YYLTYPE *keyword_loc);
1378static rb_node_def_temp_t *rb_node_def_temp_new(struct parser_params *p, const YYLTYPE *loc);
1379static rb_node_def_temp_t *def_head_save(struct parser_params *p, rb_node_def_temp_t *n);
1381#define NEW_BREAK(s,loc,k_loc) (NODE *)rb_node_break_new(p,s,loc,k_loc)
1382#define NEW_NEXT(s,loc,k_loc) (NODE *)rb_node_next_new(p,s,loc,k_loc)
1383#define NEW_REDO(loc,k_loc) (NODE *)rb_node_redo_new(p,loc,k_loc)
1384#define NEW_DEF_TEMP(loc) rb_node_def_temp_new(p,loc)
1386/* Make a new internal node, which should not be appeared in the
1387 * result AST and does not have node_id and location. */
1388static NODE* node_new_internal(struct parser_params *p, enum node_type type, size_t size, size_t alignment);
1389#define NODE_NEW_INTERNAL(ndtype, type) (type *)node_new_internal(p, (enum node_type)(ndtype), sizeof(type), RUBY_ALIGNOF(type))
1391static NODE *nd_set_loc(NODE *nd, const YYLTYPE *loc);
1394parser_get_node_id(struct parser_params *p)
1396 int node_id = p->node_id;
1402anddot_multiple_assignment_check(struct parser_params* p, const YYLTYPE *loc, ID id)
1404 if (id == tANDDOT) {
1405 yyerror1(loc, "&. inside multiple assignment destination");
1410set_line_body(NODE *body, int line)
1413 switch (nd_type(body)) {
1416 nd_set_line(body, line);
1421set_embraced_location(NODE *node, const rb_code_location_t *beg, const rb_code_location_t *end)
1423 RNODE_ITER(node)->nd_body->nd_loc = code_loc_gen(beg, end);
1424 nd_set_line(node, beg->end_pos.lineno);
1428last_expr_node(NODE *expr)
1431 if (nd_type_p(expr, NODE_BLOCK)) {
1432 expr = RNODE_BLOCK(RNODE_BLOCK(expr)->nd_end)->nd_head;
1434 else if (nd_type_p(expr, NODE_BEGIN) && RNODE_BEGIN(expr)->nd_body) {
1435 expr = RNODE_BEGIN(expr)->nd_body;
1445#define yyparse ruby_yyparse
1448static NODE* cond(struct parser_params *p, NODE *node, const YYLTYPE *loc);
1449static NODE* method_cond(struct parser_params *p, NODE *node, const YYLTYPE *loc);
1450#define new_nil(loc) NEW_NIL(loc)
1451static NODE *new_nil_at(struct parser_params *p, const rb_code_position_t *pos);
1452static NODE *new_if(struct parser_params*,NODE*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*);
1453static NODE *new_unless(struct parser_params*,NODE*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*);
1454static NODE *logop(struct parser_params*,ID,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
1456static NODE *newline_node(NODE*);
1457static void fixpos(NODE*,NODE*);
1459static int value_expr_gen(struct parser_params*,NODE*);
1460static void void_expr(struct parser_params*,NODE*);
1461static NODE *remove_begin(NODE*);
1462#define value_expr(node) value_expr_gen(p, (node))
1463static NODE *void_stmts(struct parser_params*,NODE*);
1464static void reduce_nodes(struct parser_params*,NODE**);
1465static void block_dup_check(struct parser_params*,NODE*,NODE*);
1467static NODE *block_append(struct parser_params*,NODE*,NODE*);
1468static NODE *list_append(struct parser_params*,NODE*,NODE*);
1469static NODE *list_concat(NODE*,NODE*);
1470static NODE *arg_append(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1471static NODE *last_arg_append(struct parser_params *p, NODE *args, NODE *last_arg, const YYLTYPE *loc);
1472static NODE *rest_arg_append(struct parser_params *p, NODE *args, NODE *rest_arg, const YYLTYPE *loc);
1473static NODE *literal_concat(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1474static NODE *new_evstr(struct parser_params*,NODE*,const YYLTYPE*,const YYLTYPE*,const YYLTYPE*);
1475static NODE *new_dstr(struct parser_params*,NODE*,const YYLTYPE*);
1476static NODE *str2dstr(struct parser_params*,NODE*);
1477static NODE *evstr2dstr(struct parser_params*,NODE*);
1478static NODE *splat_array(NODE*);
1479static void mark_lvar_used(struct parser_params *p, NODE *rhs);
1481static NODE *call_bin_op(struct parser_params*,NODE*,ID,NODE*,const YYLTYPE*,const YYLTYPE*);
1482static NODE *call_uni_op(struct parser_params*,NODE*,ID,const YYLTYPE*,const YYLTYPE*);
1483static NODE *new_qcall(struct parser_params* p, ID atype, NODE *recv, ID mid, NODE *args, const YYLTYPE *op_loc, const YYLTYPE *loc);
1484static 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);
1485static 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;}
1487static bool args_info_empty_p(struct rb_args_info *args);
1488static 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*);
1489static rb_node_args_t *new_args_tail(struct parser_params*,rb_node_kw_arg_t*,ID,ID,const YYLTYPE*);
1490static NODE *new_array_pattern(struct parser_params *p, NODE *constant, NODE *pre_arg, NODE *aryptn, const YYLTYPE *loc);
1491static NODE *new_array_pattern_tail(struct parser_params *p, NODE *pre_args, int has_rest, NODE *rest_arg, NODE *post_args, const YYLTYPE *loc);
1492static NODE *new_find_pattern(struct parser_params *p, NODE *constant, NODE *fndptn, const YYLTYPE *loc);
1493static NODE *new_find_pattern_tail(struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg, const YYLTYPE *loc);
1494static NODE *new_hash_pattern(struct parser_params *p, NODE *constant, NODE *hshptn, const YYLTYPE *loc);
1495static NODE *new_hash_pattern_tail(struct parser_params *p, NODE *kw_args, ID kw_rest_arg, const YYLTYPE *loc);
1497static rb_node_kw_arg_t *new_kw_arg(struct parser_params *p, NODE *k, const YYLTYPE *loc);
1498static rb_node_args_t *args_with_numbered(struct parser_params*,rb_node_args_t*,int,ID);
1500static NODE* negate_lit(struct parser_params*, NODE*);
1501static void no_blockarg(struct parser_params*,NODE*);
1502static NODE *ret_args(struct parser_params*,NODE*);
1503static NODE *arg_blk_pass(NODE*,rb_node_block_pass_t*);
1504static NODE *dsym_node(struct parser_params*,NODE*,const YYLTYPE*);
1506static NODE *gettable(struct parser_params*,ID,const YYLTYPE*);
1507static NODE *assignable(struct parser_params*,ID,NODE*,const YYLTYPE*);
1509static NODE *aryset(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1510static NODE *attrset(struct parser_params*,NODE*,ID,ID,const YYLTYPE*);
1512static VALUE rb_backref_error(struct parser_params*,NODE*);
1513static NODE *node_assign(struct parser_params*,NODE*,NODE*,struct lex_context,const YYLTYPE*);
1515static NODE *new_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1516static 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);
1517static 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);
1518static NODE *new_const_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1519static NODE *new_bodystmt(struct parser_params *p, NODE *head, NODE *rescue, NODE *rescue_else, NODE *ensure, const YYLTYPE *loc);
1521static NODE *const_decl(struct parser_params *p, NODE* path, const YYLTYPE *loc);
1523static rb_node_opt_arg_t *opt_arg_append(rb_node_opt_arg_t*, rb_node_opt_arg_t*);
1524static rb_node_kw_arg_t *kwd_append(rb_node_kw_arg_t*, rb_node_kw_arg_t*);
1526static NODE *new_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1527static NODE *new_unique_key_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1529static NODE *new_defined(struct parser_params *p, NODE *expr, const YYLTYPE *loc);
1531static NODE *new_regexp(struct parser_params *, NODE *, int, const YYLTYPE *, const YYLTYPE *, const YYLTYPE *, const YYLTYPE *);
1533#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
1535static NODE *new_xstring(struct parser_params *, NODE *, const YYLTYPE *loc);
1537static NODE *symbol_append(struct parser_params *p, NODE *symbols, NODE *symbol);
1539static NODE *match_op(struct parser_params*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
1541static rb_ast_id_table_t *local_tbl(struct parser_params*);
1543static VALUE reg_compile(struct parser_params*, rb_parser_string_t*, int);
1544static void reg_fragment_setenc(struct parser_params*, rb_parser_string_t*, int);
1546static int literal_concat0(struct parser_params *p, rb_parser_string_t *head, rb_parser_string_t *tail);
1547static NODE *heredoc_dedent(struct parser_params*,NODE*);
1549static void check_literal_when(struct parser_params *p, NODE *args, const YYLTYPE *loc);
1551static 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);
1554#define get_value(idx) (rb_ary_entry(p->s_value_stack, idx))
1555#define set_value(val) (p->s_lvalue = val)
1556static VALUE assign_error(struct parser_params *p, const char *mesg, VALUE a);
1557static int id_is_var(struct parser_params *p, ID id);
1560RUBY_SYMBOL_EXPORT_BEGIN
1561VALUE rb_parser_reg_compile(struct parser_params* p, VALUE str, int options);
1562int rb_reg_fragment_setenc(struct parser_params*, rb_parser_string_t *, int);
1563enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_state_e, enum lex_state_e, int);
1564VALUE rb_parser_lex_state_name(struct parser_params *p, enum lex_state_e state);
1565void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int);
1566PRINTF_ARGS(void rb_parser_fatal(struct parser_params *p, const char *fmt, ...), 2, 3);
1567YYLTYPE *rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc);
1568YYLTYPE *rb_parser_set_location_of_delayed_token(struct parser_params *p, YYLTYPE *yylloc);
1569YYLTYPE *rb_parser_set_location_of_heredoc_end(struct parser_params *p, YYLTYPE *yylloc);
1570YYLTYPE *rb_parser_set_location_of_dummy_end(struct parser_params *p, YYLTYPE *yylloc);
1571YYLTYPE *rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc);
1572YYLTYPE *rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc);
1573void ruby_show_error_line(struct parser_params *p, VALUE errbuf, const YYLTYPE *yylloc, int lineno, rb_parser_string_t *str);
1574RUBY_SYMBOL_EXPORT_END
1576static void flush_string_content(struct parser_params *p, rb_encoding *enc, size_t back);
1577static void error_duplicate_pattern_variable(struct parser_params *p, ID id, const YYLTYPE *loc);
1578static void error_duplicate_pattern_key(struct parser_params *p, ID id, const YYLTYPE *loc);
1579static VALUE formal_argument_error(struct parser_params*, ID);
1580static ID shadowing_lvar(struct parser_params*,ID);
1581static void new_bv(struct parser_params*,ID);
1583static void local_push(struct parser_params*,int);
1584static void local_pop(struct parser_params*);
1585static void local_var(struct parser_params*, ID);
1586static void arg_var(struct parser_params*, ID);
1587static int local_id(struct parser_params *p, ID id);
1588static int local_id_ref(struct parser_params*, ID, ID **);
1589#define internal_id rb_parser_internal_id
1590ID internal_id(struct parser_params*);
1591static NODE *new_args_forward_call(struct parser_params*, NODE*, const YYLTYPE*, const YYLTYPE*);
1592static int check_forwarding_args(struct parser_params*);
1593static void add_forwarding_args(struct parser_params *p);
1594static void forwarding_arg_check(struct parser_params *p, ID arg, ID all, const char *var);
1596static const struct vtable *dyna_push(struct parser_params *);
1597static void dyna_pop(struct parser_params*, const struct vtable *);
1598static int dyna_in_block(struct parser_params*);
1599#define dyna_var(p, id) local_var(p, id)
1600static int dvar_defined(struct parser_params*, ID);
1601#define dvar_defined_ref rb_parser_dvar_defined_ref
1602int dvar_defined_ref(struct parser_params*, ID, ID**);
1603static int dvar_curr(struct parser_params*,ID);
1605static int lvar_defined(struct parser_params*, ID);
1607static NODE *numparam_push(struct parser_params *p);
1608static void numparam_pop(struct parser_params *p, NODE *prev_inner);
1610#define METHOD_NOT '!
'
1612#define idFWD_REST '*
'
1613#define idFWD_KWREST idPow /* Use simple "**", as tDSTAR is "**arg" */
1614#define idFWD_BLOCK '&
'
1615#define idFWD_ALL idDot3
1616#define arg_FWD_BLOCK idFWD_BLOCK
1618#define RE_ONIG_OPTION_IGNORECASE 1
1619#define RE_ONIG_OPTION_EXTEND (RE_ONIG_OPTION_IGNORECASE<<1)
1620#define RE_ONIG_OPTION_MULTILINE (RE_ONIG_OPTION_EXTEND<<1)
1621#define RE_OPTION_ONCE (1<<16)
1622#define RE_OPTION_ENCODING_SHIFT 8
1623#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
1624#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
1625#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
1626#define RE_OPTION_MASK 0xff
1627#define RE_OPTION_ARG_ENCODING_NONE 32
1629#define CHECK_LITERAL_WHEN (st_table *)1
1630#define CASE_LABELS_ENABLED_P(case_labels) (case_labels && case_labels != CHECK_LITERAL_WHEN)
1632#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
1633RUBY_FUNC_EXPORTED size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr);
1635#define TOKEN2ID(tok) ( \
1636 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
1637 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
1638 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
1639 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
1640 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
1641 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
1642 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
1644/****** Ripper *******/
1648#include "eventids1.h"
1649#include "eventids2.h"
1651extern const struct ripper_parser_ids ripper_parser_ids;
1653static VALUE ripper_dispatch0(struct parser_params*,ID);
1654static VALUE ripper_dispatch1(struct parser_params*,ID,VALUE);
1655static VALUE ripper_dispatch2(struct parser_params*,ID,VALUE,VALUE);
1656static VALUE ripper_dispatch3(struct parser_params*,ID,VALUE,VALUE,VALUE);
1657static VALUE ripper_dispatch4(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE);
1658static VALUE ripper_dispatch5(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE);
1659static VALUE ripper_dispatch7(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE);
1660void ripper_error(struct parser_params *p);
1662#define dispatch0(n) ripper_dispatch0(p, RIPPER_ID(n))
1663#define dispatch1(n,a) ripper_dispatch1(p, RIPPER_ID(n), (a))
1664#define dispatch2(n,a,b) ripper_dispatch2(p, RIPPER_ID(n), (a), (b))
1665#define dispatch3(n,a,b,c) ripper_dispatch3(p, RIPPER_ID(n), (a), (b), (c))
1666#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, RIPPER_ID(n), (a), (b), (c), (d))
1667#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, RIPPER_ID(n), (a), (b), (c), (d), (e))
1668#define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, RIPPER_ID(n), (a), (b), (c), (d), (e), (f), (g))
1670#define yyparse ripper_yyparse
1673aryptn_pre_args(struct parser_params *p, VALUE pre_arg, VALUE pre_args)
1675 if (!NIL_P(pre_arg)) {
1676 if (!NIL_P(pre_args)) {
1677 rb_ary_unshift(pre_args, pre_arg);
1680 pre_args = rb_ary_new_from_args(1, pre_arg);
1686#define ID2VAL(id) STATIC_ID2SYM(id)
1687#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
1690#define KWD2EID(t, v) keyword_##t
1693new_scope_body(struct parser_params *p, rb_node_args_t *args, NODE *body, const YYLTYPE *loc)
1695 body = remove_begin(body);
1696 reduce_nodes(p, &body);
1697 NODE *n = NEW_SCOPE(args, body, loc);
1698 nd_set_line(n, loc->end_pos.lineno);
1699 set_line_body(body, loc->beg_pos.lineno);
1704rescued_expr(struct parser_params *p, NODE *arg, NODE *rescue,
1705 const YYLTYPE *arg_loc, const YYLTYPE *mod_loc, const YYLTYPE *res_loc)
1707 YYLTYPE loc = code_loc_gen(mod_loc, res_loc);
1708 rescue = NEW_RESBODY(0, 0, remove_begin(rescue), 0, &loc);
1709 loc.beg_pos = arg_loc->beg_pos;
1710 return NEW_RESCUE(arg, rescue, 0, &loc);
1713static NODE *add_block_exit(struct parser_params *p, NODE *node);
1714static rb_node_exits_t *init_block_exit(struct parser_params *p);
1715static rb_node_exits_t *allow_block_exit(struct parser_params *p);
1716static void restore_block_exit(struct parser_params *p, rb_node_exits_t *exits);
1717static void clear_block_exit(struct parser_params *p, bool error);
1720next_rescue_context(struct lex_context *next, const struct lex_context *outer, enum rescue_context def)
1722 next->in_rescue = outer->in_rescue == after_rescue ? after_rescue : def;
1726restore_defun(struct parser_params *p, rb_node_def_temp_t *temp)
1728 /* See: def_name action */
1729 struct lex_context ctxt = temp->save.ctxt;
1730 p->ctxt.in_def = ctxt.in_def;
1731 p->ctxt.shareable_constant_value = ctxt.shareable_constant_value;
1732 p->ctxt.in_rescue = ctxt.in_rescue;
1733 p->max_numparam = temp->save.max_numparam;
1734 numparam_pop(p, temp->save.numparam_save);
1735 clear_block_exit(p, true);
1739endless_method_name(struct parser_params *p, ID mid, const YYLTYPE *loc)
1741 if (is_attrset_id(mid)) {
1742 yyerror1(loc, "setter method cannot be defined in an endless method definition");
1744 token_info_drop(p, "def", loc->beg_pos);
1747#define debug_token_line(p, name, line) do { \
1749 const char *const pcur = p->lex.pcur; \
1750 const char *const ptok = p->lex.ptok; \
1751 rb_parser_printf(p, name ":%d (%d: %"PRIdPTRDIFF"|%"PRIdPTRDIFF"|%"PRIdPTRDIFF")\n", \
1752 line, p->ruby_sourceline, \
1753 ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur); \
1757#define begin_definition(k, loc_beg, loc_end) \
1759 if (!(p->ctxt.in_class = (k)[0] != 0)) { \
1760 /* singleton class */ \
1761 p->ctxt.cant_return = !p->ctxt.in_def; \
1762 p->ctxt.in_def = 0; \
1764 else if (p->ctxt.in_def) { \
1765 YYLTYPE loc = code_loc_gen(loc_beg, loc_end); \
1766 yyerror1(&loc, k " definition in method body"); \
1769 p->ctxt.cant_return = 1; \
1775# define ifndef_ripper(x) (x)
1776# define ifdef_ripper(r,x) (x)
1778# define ifndef_ripper(x)
1779# define ifdef_ripper(r,x) (r)
1782# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
1783# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
1784# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
1785# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
1786# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
1787# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
1788# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
1789# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
1790# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
1791# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
1792# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1793# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
1794# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
1795# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
1796# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1797# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
1798# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
1799# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
1800# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
1801# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1803extern const ID id_warn, id_warning, id_gets, id_assoc;
1804# define ERR_MESG() STR_NEW2(mesg) /* to bypass Ripper DSL */
1805# define WARN_S_L(s,l) STR_NEW(s,l)
1806# define WARN_S(s) STR_NEW2(s)
1807# define WARN_I(i) INT2NUM(i)
1808# define WARN_ID(i) rb_id2str(i)
1809# define PRIsWARN PRIsVALUE
1810# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
1811# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
1812# ifdef HAVE_VA_ARGS_MACRO
1813# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
1815# define WARN_CALL rb_funcall
1817# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
1818# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
1819# ifdef HAVE_VA_ARGS_MACRO
1820# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
1822# define WARNING_CALL rb_funcall
1824# define compile_error ripper_compile_error
1826# define WARN_S_L(s,l) s
1829# define WARN_ID(i) rb_id2name(i)
1830# define PRIsWARN PRIsVALUE
1831# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1832# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1833# define WARN_CALL rb_compile_warn
1834# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1835# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1836# define WARNING_CALL rb_compile_warning
1837PRINTF_ARGS(static void parser_compile_error(struct parser_params*, const rb_code_location_t *loc, const char *fmt, ...), 3, 4);
1838# define compile_error(p, ...) parser_compile_error(p, NULL, __VA_ARGS__)
1841#define RNODE_EXITS(node) ((rb_node_exits_t*)(node))
1844add_block_exit(struct parser_params *p, NODE *node)
1847 compile_error(p, "unexpected null node");
1850 switch (nd_type(node)) {
1851 case NODE_BREAK: case NODE_NEXT: case NODE_REDO: break;
1853 compile_error(p, "add_block_exit: unexpected node: %s", parser_node_name(nd_type(node)));
1856 if (!p->ctxt.in_defined) {
1857 rb_node_exits_t *exits = p->exits;
1859 RNODE_EXITS(exits->nd_stts)->nd_chain = node;
1860 exits->nd_stts = node;
1866static rb_node_exits_t *
1867init_block_exit(struct parser_params *p)
1869 rb_node_exits_t *old = p->exits;
1870 rb_node_exits_t *exits = NODE_NEW_INTERNAL(NODE_EXITS, rb_node_exits_t);
1871 exits->nd_chain = 0;
1872 exits->nd_stts = RNODE(exits);
1877static rb_node_exits_t *
1878allow_block_exit(struct parser_params *p)
1880 rb_node_exits_t *exits = p->exits;
1886restore_block_exit(struct parser_params *p, rb_node_exits_t *exits)
1892clear_block_exit(struct parser_params *p, bool error)
1894 rb_node_exits_t *exits = p->exits;
1897 for (NODE *e = RNODE(exits); (e = RNODE_EXITS(e)->nd_chain) != 0; ) {
1898 switch (nd_type(e)) {
1900 yyerror1(&e->nd_loc, "Invalid break");
1903 yyerror1(&e->nd_loc, "Invalid next");
1906 yyerror1(&e->nd_loc, "Invalid redo");
1909 yyerror1(&e->nd_loc, "unexpected node");
1910 goto end_checks; /* no nd_chain */
1915 exits->nd_stts = RNODE(exits);
1916 exits->nd_chain = 0;
1919#define WARN_EOL(tok) \
1920 (looking_at_eol_p(p) ? \
1921 (void)rb_warning0("'" tok "' at the end of line without an expression") : \
1923static int looking_at_eol_p(struct parser_params *p);
1926get_nd_value(struct parser_params *p, NODE *node)
1928 switch (nd_type(node)) {
1930 return RNODE_GASGN(node)->nd_value;
1932 return RNODE_IASGN(node)->nd_value;
1934 return RNODE_LASGN(node)->nd_value;
1936 return RNODE_DASGN(node)->nd_value;
1938 return RNODE_MASGN(node)->nd_value;
1940 return RNODE_CVASGN(node)->nd_value;
1942 return RNODE_CDECL(node)->nd_value;
1944 compile_error(p, "get_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1950set_nd_value(struct parser_params *p, NODE *node, NODE *rhs)
1952 switch (nd_type(node)) {
1954 RNODE_CDECL(node)->nd_value = rhs;
1957 RNODE_GASGN(node)->nd_value = rhs;
1960 RNODE_IASGN(node)->nd_value = rhs;
1963 RNODE_LASGN(node)->nd_value = rhs;
1966 RNODE_DASGN(node)->nd_value = rhs;
1969 RNODE_MASGN(node)->nd_value = rhs;
1972 RNODE_CVASGN(node)->nd_value = rhs;
1975 compile_error(p, "set_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1981get_nd_vid(struct parser_params *p, NODE *node)
1983 switch (nd_type(node)) {
1985 return RNODE_CDECL(node)->nd_vid;
1987 return RNODE_GASGN(node)->nd_vid;
1989 return RNODE_IASGN(node)->nd_vid;
1991 return RNODE_LASGN(node)->nd_vid;
1993 return RNODE_DASGN(node)->nd_vid;
1995 return RNODE_CVASGN(node)->nd_vid;
1997 compile_error(p, "get_nd_vid: unexpected node: %s", parser_node_name(nd_type(node)));
2003get_nd_args(struct parser_params *p, NODE *node)
2005 switch (nd_type(node)) {
2007 return RNODE_CALL(node)->nd_args;
2009 return RNODE_OPCALL(node)->nd_args;
2011 return RNODE_FCALL(node)->nd_args;
2013 return RNODE_QCALL(node)->nd_args;
2015 return RNODE_SUPER(node)->nd_args;
2024 compile_error(p, "get_nd_args: unexpected node: %s", parser_node_name(nd_type(node)));
2030djb2(const uint8_t *str, size_t len)
2032 st_index_t hash = 5381;
2034 for (size_t i = 0; i < len; i++) {
2035 hash = ((hash << 5) + hash) + str[i];
2042parser_memhash(const void *ptr, long len)
2044 return djb2(ptr, len);
2047#define PARSER_STRING_PTR(str) (str->ptr)
2048#define PARSER_STRING_LEN(str) (str->len)
2049#define PARSER_STRING_END(str) (&str->ptr[str->len])
2050#define STRING_SIZE(str) ((size_t)str->len + 1)
2051#define STRING_TERM_LEN(str) (1)
2052#define STRING_TERM_FILL(str) (str->ptr[str->len] = '\0
')
2053#define PARSER_STRING_RESIZE_CAPA_TERM(p,str,capacity,termlen) do {\
2054 SIZED_REALLOC_N(str->ptr, char, (size_t)total + termlen, STRING_SIZE(str)); \
2057#define STRING_SET_LEN(str, n) do { \
2060#define PARSER_STRING_GETMEM(str, ptrvar, lenvar) \
2061 ((ptrvar) = str->ptr, \
2062 (lenvar) = str->len)
2065parser_string_char_at_end(struct parser_params *p, rb_parser_string_t *str, int when_empty)
2067 return PARSER_STRING_LEN(str) > 0 ? (unsigned char)PARSER_STRING_END(str)[-1] : when_empty;
2070static rb_parser_string_t *
2071rb_parser_string_new(rb_parser_t *p, const char *ptr, long len)
2073 rb_parser_string_t *str;
2076 rb_bug("negative string size (or size too big): %ld", len);
2079 str = xcalloc(1, sizeof(rb_parser_string_t));
2080 str->ptr = xcalloc(len + 1, sizeof(char));
2083 memcpy(PARSER_STRING_PTR(str), ptr, len);
2085 STRING_SET_LEN(str, len);
2086 STRING_TERM_FILL(str);
2090static rb_parser_string_t *
2091rb_parser_encoding_string_new(rb_parser_t *p, const char *ptr, long len, rb_encoding *enc)
2093 rb_parser_string_t *str = rb_parser_string_new(p, ptr, len);
2094 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2101rb_str_to_parser_string(rb_parser_t *p, VALUE str)
2104 rb_parser_string_t *ret = rb_parser_encoding_string_new(p, RSTRING_PTR(str), RSTRING_LEN(str), rb_enc_get(str));
2110rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str)
2113 xfree(PARSER_STRING_PTR(str));
2119rb_parser_str_hash(rb_parser_string_t *str)
2121 return parser_memhash((const void *)PARSER_STRING_PTR(str), PARSER_STRING_LEN(str));
2125rb_char_p_hash(const char *c)
2127 return parser_memhash((const void *)c, strlen(c));
2131rb_parser_str_capacity(rb_parser_string_t *str, const int termlen)
2133 return PARSER_STRING_LEN(str);
2138rb_parser_string_end(rb_parser_string_t *str)
2140 return &str->ptr[str->len];
2145rb_parser_string_set_encoding(rb_parser_string_t *str, rb_encoding *enc)
2151rb_parser_str_get_encoding(rb_parser_string_t *str)
2158PARSER_ENCODING_IS_ASCII8BIT(struct parser_params *p, rb_parser_string_t *str)
2160 return rb_parser_str_get_encoding(str) == rb_ascii8bit_encoding();
2165PARSER_ENC_CODERANGE(rb_parser_string_t *str)
2167 return str->coderange;
2171PARSER_ENC_CODERANGE_SET(rb_parser_string_t *str, int coderange)
2173 str->coderange = coderange;
2177PARSER_ENCODING_CODERANGE_SET(rb_parser_string_t *str, rb_encoding *enc, enum rb_parser_string_coderange_type cr)
2179 rb_parser_string_set_encoding(str, enc);
2180 PARSER_ENC_CODERANGE_SET(str, cr);
2184PARSER_ENC_CODERANGE_CLEAR(rb_parser_string_t *str)
2186 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2190PARSER_ENC_CODERANGE_ASCIIONLY(rb_parser_string_t *str)
2192 return PARSER_ENC_CODERANGE(str) == RB_PARSER_ENC_CODERANGE_7BIT;
2196PARSER_ENC_CODERANGE_CLEAN_P(int cr)
2198 return cr == RB_PARSER_ENC_CODERANGE_7BIT || cr == RB_PARSER_ENC_CODERANGE_VALID;
2202rb_parser_search_nonascii(const char *p, const char *e)
2206 for (; s < e; s++) {
2207 if (*s & 0x80) return s;
2214rb_parser_coderange_scan(struct parser_params *p, const char *ptr, long len, rb_encoding *enc)
2216 const char *e = ptr + len;
2218 if (enc == rb_ascii8bit_encoding()) {
2219 /* enc is ASCII-8BIT. ASCII-8BIT string never be broken. */
2220 ptr = rb_parser_search_nonascii(ptr, e);
2221 return ptr ? RB_PARSER_ENC_CODERANGE_VALID : RB_PARSER_ENC_CODERANGE_7BIT;
2224 /* parser string encoding is always asciicompat */
2225 ptr = rb_parser_search_nonascii(ptr, e);
2226 if (!ptr) return RB_PARSER_ENC_CODERANGE_7BIT;
2228 int ret = rb_enc_precise_mbclen(ptr, e, enc);
2229 if (!MBCLEN_CHARFOUND_P(ret)) return RB_PARSER_ENC_CODERANGE_BROKEN;
2230 ptr += MBCLEN_CHARFOUND_LEN(ret);
2231 if (ptr == e) break;
2232 ptr = rb_parser_search_nonascii(ptr, e);
2236 return RB_PARSER_ENC_CODERANGE_VALID;
2240rb_parser_enc_coderange_scan(struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2242 return rb_parser_coderange_scan(p, PARSER_STRING_PTR(str), PARSER_STRING_LEN(str), enc);
2246rb_parser_enc_str_coderange(struct parser_params *p, rb_parser_string_t *str)
2248 int cr = PARSER_ENC_CODERANGE(str);
2250 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2251 cr = rb_parser_enc_coderange_scan(p, str, rb_parser_str_get_encoding(str));
2252 PARSER_ENC_CODERANGE_SET(str, cr);
2258static rb_parser_string_t *
2259rb_parser_enc_associate(struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2261 if (rb_parser_str_get_encoding(str) == enc)
2263 if (!PARSER_ENC_CODERANGE_ASCIIONLY(str)) {
2264 PARSER_ENC_CODERANGE_CLEAR(str);
2266 rb_parser_string_set_encoding(str, enc);
2271rb_parser_is_ascii_string(struct parser_params *p, rb_parser_string_t *str)
2273 return rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_7BIT;
2277rb_parser_enc_compatible(struct parser_params *p, rb_parser_string_t *str1, rb_parser_string_t *str2)
2279 rb_encoding *enc1 = rb_parser_str_get_encoding(str1);
2280 rb_encoding *enc2 = rb_parser_str_get_encoding(str2);
2282 if (enc1 == NULL || enc2 == NULL)
2289 if (PARSER_STRING_LEN(str2) == 0)
2291 if (PARSER_STRING_LEN(str1) == 0)
2292 return rb_parser_is_ascii_string(p, str2) ? enc1 : enc2;
2296 cr1 = rb_parser_enc_str_coderange(p, str1);
2297 cr2 = rb_parser_enc_str_coderange(p, str2);
2300 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT) return enc2;
2301 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT) return enc1;
2304 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT) {
2308 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT) {
2316rb_parser_str_modify(rb_parser_string_t *str)
2318 PARSER_ENC_CODERANGE_CLEAR(str);
2322rb_parser_str_set_len(struct parser_params *p, rb_parser_string_t *str, long len)
2325 const int termlen = STRING_TERM_LEN(str);
2327 if (len > (capa = (long)(rb_parser_str_capacity(str, termlen))) || len < 0) {
2328 rb_bug("probable buffer overflow: %ld for %ld", len, capa);
2331 int cr = PARSER_ENC_CODERANGE(str);
2332 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2333 /* Leave unknown. */
2335 else if (len > PARSER_STRING_LEN(str)) {
2336 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2338 else if (len < PARSER_STRING_LEN(str)) {
2339 if (cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2340 /* ASCII-only string is keeping after truncated. Valid
2341 * and broken may be invalid or valid, leave unknown. */
2342 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2346 STRING_SET_LEN(str, len);
2347 STRING_TERM_FILL(str);
2350static rb_parser_string_t *
2351rb_parser_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len)
2353 rb_parser_str_modify(str);
2354 if (len == 0) return 0;
2356 long total, olen, off = -1;
2358 const int termlen = STRING_TERM_LEN(str);
2360 PARSER_STRING_GETMEM(str, sptr, olen);
2361 if (ptr >= sptr && ptr <= sptr + olen) {
2365 if (olen > LONG_MAX - len) {
2366 compile_error(p, "string sizes too big");
2370 PARSER_STRING_RESIZE_CAPA_TERM(p, str, total, termlen);
2371 sptr = PARSER_STRING_PTR(str);
2375 memcpy(sptr + olen, ptr, len);
2376 STRING_SET_LEN(str, total);
2377 STRING_TERM_FILL(str);
2382#define parser_str_cat(str, ptr, len) rb_parser_str_buf_cat(p, str, ptr, len)
2383#define parser_str_cat_cstr(str, lit) rb_parser_str_buf_cat(p, str, lit, strlen(lit))
2385static rb_parser_string_t *
2386rb_parser_enc_cr_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len,
2387 rb_encoding *ptr_enc, int ptr_cr, int *ptr_cr_ret)
2390 rb_encoding *str_enc, *res_enc;
2392 str_enc = rb_parser_str_get_encoding(str);
2393 str_cr = PARSER_STRING_LEN(str) ? PARSER_ENC_CODERANGE(str) : RB_PARSER_ENC_CODERANGE_7BIT;
2395 if (str_enc == ptr_enc) {
2396 if (str_cr != RB_PARSER_ENC_CODERANGE_UNKNOWN && ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2397 ptr_cr = rb_parser_coderange_scan(p, ptr, len, ptr_enc);
2401 /* parser string encoding is always asciicompat */
2402 if (ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2403 ptr_cr = rb_parser_coderange_scan(p, ptr, len, ptr_enc);
2405 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2406 if (str_enc == rb_ascii8bit_encoding() || ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2407 str_cr = rb_parser_enc_str_coderange(p, str);
2412 *ptr_cr_ret = ptr_cr;
2414 if (str_enc != ptr_enc &&
2415 str_cr != RB_PARSER_ENC_CODERANGE_7BIT &&
2416 ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2420 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2422 res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2424 else if (str_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2425 if (ptr_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2427 res_cr = RB_PARSER_ENC_CODERANGE_7BIT;
2434 else if (str_cr == RB_PARSER_ENC_CODERANGE_VALID) {
2436 if (PARSER_ENC_CODERANGE_CLEAN_P(ptr_cr))
2441 else { /* str_cr == RB_PARSER_ENC_CODERANGE_BROKEN */
2444 if (0 < len) res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2448 compile_error(p, "negative string size (or size too big)");
2450 parser_str_cat(str, ptr, len);
2451 PARSER_ENCODING_CODERANGE_SET(str, res_enc, res_cr);
2455 compile_error(p, "incompatible character encodings: %s and %s",
2456 rb_enc_name(str_enc), rb_enc_name(ptr_enc));
2457 UNREACHABLE_RETURN(0);
2461static rb_parser_string_t *
2462rb_parser_enc_str_buf_cat(struct parser_params *p, rb_parser_string_t *str, const char *ptr, long len,
2463 rb_encoding *ptr_enc)
2465 return rb_parser_enc_cr_str_buf_cat(p, str, ptr, len, ptr_enc, RB_PARSER_ENC_CODERANGE_UNKNOWN, NULL);
2468static rb_parser_string_t *
2469rb_parser_str_buf_append(struct parser_params *p, rb_parser_string_t *str, rb_parser_string_t *str2)
2471 int str2_cr = rb_parser_enc_str_coderange(p, str2);
2473 rb_parser_enc_cr_str_buf_cat(p, str, PARSER_STRING_PTR(str2), PARSER_STRING_LEN(str2),
2474 rb_parser_str_get_encoding(str2), str2_cr, &str2_cr);
2476 PARSER_ENC_CODERANGE_SET(str2, str2_cr);
2481static rb_parser_string_t *
2482rb_parser_str_resize(struct parser_params *p, rb_parser_string_t *str, long len)
2485 rb_bug("negative string size (or size too big)");
2488 long slen = PARSER_STRING_LEN(str);
2490 if (slen > len && PARSER_ENC_CODERANGE(str) != RB_PARSER_ENC_CODERANGE_7BIT) {
2491 PARSER_ENC_CODERANGE_CLEAR(str);
2496 const int termlen = STRING_TERM_LEN(str);
2498 if ((capa = slen) < len) {
2499 SIZED_REALLOC_N(str->ptr, char, (size_t)len + termlen, STRING_SIZE(str));
2501 else if (len == slen) return str;
2502 STRING_SET_LEN(str, len);
2503 STRING_TERM_FILL(str);
2508# define PARSER_ENC_STRING_GETMEM(str, ptrvar, lenvar, encvar) \
2509 ((ptrvar) = str->ptr, \
2510 (lenvar) = str->len, \
2511 (encvar) = str->enc)
2514rb_parser_string_hash_cmp(rb_parser_string_t *str1, rb_parser_string_t *str2)
2517 const char *ptr1, *ptr2;
2518 rb_encoding *enc1, *enc2;
2520 PARSER_ENC_STRING_GETMEM(str1, ptr1, len1, enc1);
2521 PARSER_ENC_STRING_GETMEM(str2, ptr2, len2, enc2);
2523 return (len1 != len2 ||
2525 memcmp(ptr1, ptr2, len1) != 0);
2529rb_parser_ary_extend(rb_parser_t *p, rb_parser_ary_t *ary, long len)
2532 if (ary->capa < len) {
2534 ary->data = (rb_parser_ary_data *)xrealloc(ary->data, sizeof(rb_parser_ary_data) * len);
2535 for (i = ary->len; i < len; i++) {
2542 * Do not call this directly.
2543 * Use rb_parser_ary_new_capa_for_XXX() instead.
2545static rb_parser_ary_t *
2546parser_ary_new_capa(rb_parser_t *p, long len)
2549 rb_bug("negative array size (or size too big): %ld", len);
2551 rb_parser_ary_t *ary = xcalloc(1, sizeof(rb_parser_ary_t));
2556 ary->data = (rb_parser_ary_data *)xcalloc(len, sizeof(rb_parser_ary_data));
2565static rb_parser_ary_t *
2566rb_parser_ary_new_capa_for_script_line(rb_parser_t *p, long len)
2568 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2569 ary->data_type = PARSER_ARY_DATA_SCRIPT_LINE;
2573static rb_parser_ary_t *
2574rb_parser_ary_new_capa_for_ast_token(rb_parser_t *p, long len)
2576 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2577 ary->data_type = PARSER_ARY_DATA_AST_TOKEN;
2582static rb_parser_ary_t *
2583rb_parser_ary_new_capa_for_node(rb_parser_t *p, long len)
2585 rb_parser_ary_t *ary = parser_ary_new_capa(p, len);
2586 ary->data_type = PARSER_ARY_DATA_NODE;
2591 * Do not call this directly.
2592 * Use rb_parser_ary_push_XXX() instead.
2594static rb_parser_ary_t *
2595parser_ary_push(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ary_data val)
2597 if (ary->len == ary->capa) {
2598 rb_parser_ary_extend(p, ary, ary->len == 0 ? 1 : ary->len * 2);
2600 ary->data[ary->len++] = val;
2605static rb_parser_ary_t *
2606rb_parser_ary_push_ast_token(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ast_token_t *val)
2608 if (ary->data_type != PARSER_ARY_DATA_AST_TOKEN) {
2609 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2611 return parser_ary_push(p, ary, val);
2614static rb_parser_ary_t *
2615rb_parser_ary_push_script_line(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_string_t *val)
2617 if (ary->data_type != PARSER_ARY_DATA_SCRIPT_LINE) {
2618 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2620 return parser_ary_push(p, ary, val);
2624static rb_parser_ary_t *
2625rb_parser_ary_push_node(rb_parser_t *p, rb_parser_ary_t *ary, NODE *val)
2627 if (ary->data_type != PARSER_ARY_DATA_NODE) {
2628 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2630 return parser_ary_push(p, ary, val);
2635rb_parser_ast_token_free(rb_parser_t *p, rb_parser_ast_token_t *token)
2638 rb_parser_string_free(p, token->str);
2643rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary)
2645# define foreach_ary(ptr) \
2646 for (rb_parser_ary_data *ptr = ary->data, *const end_ary_data = ptr + ary->len; \
2647 ptr < end_ary_data; ptr++)
2648 switch (ary->data_type) {
2649 case PARSER_ARY_DATA_AST_TOKEN:
2650 foreach_ary(data) {rb_parser_ast_token_free(p, *data);}
2652 case PARSER_ARY_DATA_SCRIPT_LINE:
2653 foreach_ary(data) {rb_parser_string_free(p, *data);}
2655 case PARSER_ARY_DATA_NODE:
2656 /* Do nothing because nodes are freed when rb_ast_t is freed */
2659 rb_bug("unexpected rb_parser_ary_data_type: %d", ary->data_type);
2673# define YY_CAST(Type, Val) static_cast<Type> (Val)
2674# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
2676# define YY_CAST(Type, Val) ((Type) (Val))
2677# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
2681# if defined __cplusplus
2682# if 201103L <= __cplusplus
2683# define YY_NULLPTR nullptr
2685# define YY_NULLPTR 0
2688# define YY_NULLPTR ((void*)0)
2696 YYSYMBOL_YYEMPTY = -2,
2697 YYSYMBOL_YYEOF = 0, /* "end-of-input" */
2698 YYSYMBOL_YYerror = 1, /* error */
2699 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
2700 YYSYMBOL_keyword_class = 3, /* "'class'" */
2701 YYSYMBOL_keyword_module = 4, /* "'module
'" */
2702 YYSYMBOL_keyword_def = 5, /* "'def
'" */
2703 YYSYMBOL_keyword_undef = 6, /* "'undef
'" */
2704 YYSYMBOL_keyword_begin = 7, /* "'begin
'" */
2705 YYSYMBOL_keyword_rescue = 8, /* "'rescue
'" */
2706 YYSYMBOL_keyword_ensure = 9, /* "'ensure
'" */
2707 YYSYMBOL_keyword_end = 10, /* "'end
'" */
2708 YYSYMBOL_keyword_if = 11, /* "'if'" */
2709 YYSYMBOL_keyword_unless = 12, /* "'unless
'" */
2710 YYSYMBOL_keyword_then = 13, /* "'then
'" */
2711 YYSYMBOL_keyword_elsif = 14, /* "'elsif
'" */
2712 YYSYMBOL_keyword_else = 15, /* "'else'" */
2713 YYSYMBOL_keyword_case = 16, /* "'case'" */
2714 YYSYMBOL_keyword_when = 17, /* "'when
'" */
2715 YYSYMBOL_keyword_while = 18, /* "'while'" */
2716 YYSYMBOL_keyword_until = 19, /* "'until
'" */
2717 YYSYMBOL_keyword_for = 20, /* "'for'" */
2718 YYSYMBOL_keyword_break = 21, /* "'break'" */
2719 YYSYMBOL_keyword_next = 22, /* "'next
'" */
2720 YYSYMBOL_keyword_redo = 23, /* "'redo
'" */
2721 YYSYMBOL_keyword_retry = 24, /* "'retry
'" */
2722 YYSYMBOL_keyword_in = 25, /* "'in
'" */
2723 YYSYMBOL_keyword_do = 26, /* "'do'" */
2724 YYSYMBOL_keyword_do_cond = 27, /* "'do' for condition" */
2725 YYSYMBOL_keyword_do_block = 28, /* "'do' for block" */
2726 YYSYMBOL_keyword_do_LAMBDA = 29, /* "'do' for lambda" */
2727 YYSYMBOL_keyword_return = 30, /* "'return'" */
2728 YYSYMBOL_keyword_yield = 31, /* "'yield
'" */
2729 YYSYMBOL_keyword_super = 32, /* "'super
'" */
2730 YYSYMBOL_keyword_self = 33, /* "'self
'" */
2731 YYSYMBOL_keyword_nil = 34, /* "'nil
'" */
2732 YYSYMBOL_keyword_true = 35, /* "'true'" */
2733 YYSYMBOL_keyword_false = 36, /* "'false'" */
2734 YYSYMBOL_keyword_and = 37, /* "'and
'" */
2735 YYSYMBOL_keyword_or = 38, /* "'or
'" */
2736 YYSYMBOL_keyword_not = 39, /* "'not
'" */
2737 YYSYMBOL_modifier_if = 40, /* "'if' modifier" */
2738 YYSYMBOL_modifier_unless = 41, /* "'unless
' modifier" */
2739 YYSYMBOL_modifier_while = 42, /* "'while' modifier" */
2740 YYSYMBOL_modifier_until = 43, /* "'until
' modifier" */
2741 YYSYMBOL_modifier_rescue = 44, /* "'rescue
' modifier" */
2742 YYSYMBOL_keyword_alias = 45, /* "'alias
'" */
2743 YYSYMBOL_keyword_defined = 46, /* "'defined?
'" */
2744 YYSYMBOL_keyword_BEGIN = 47, /* "'BEGIN
'" */
2745 YYSYMBOL_keyword_END = 48, /* "'END
'" */
2746 YYSYMBOL_keyword__LINE__ = 49, /* "'__LINE__
'" */
2747 YYSYMBOL_keyword__FILE__ = 50, /* "'__FILE__
'" */
2748 YYSYMBOL_keyword__ENCODING__ = 51, /* "'__ENCODING__
'" */
2749 YYSYMBOL_tIDENTIFIER = 52, /* "local variable or method" */
2750 YYSYMBOL_tFID = 53, /* "method" */
2751 YYSYMBOL_tGVAR = 54, /* "global variable" */
2752 YYSYMBOL_tIVAR = 55, /* "instance variable" */
2753 YYSYMBOL_tCONSTANT = 56, /* "constant" */
2754 YYSYMBOL_tCVAR = 57, /* "class variable" */
2755 YYSYMBOL_tLABEL = 58, /* "label" */
2756 YYSYMBOL_tINTEGER = 59, /* "integer literal" */
2757 YYSYMBOL_tFLOAT = 60, /* "float literal" */
2758 YYSYMBOL_tRATIONAL = 61, /* "rational literal" */
2759 YYSYMBOL_tIMAGINARY = 62, /* "imaginary literal" */
2760 YYSYMBOL_tCHAR = 63, /* "char literal" */
2761 YYSYMBOL_tNTH_REF = 64, /* "numbered reference" */
2762 YYSYMBOL_tBACK_REF = 65, /* "back reference" */
2763 YYSYMBOL_tSTRING_CONTENT = 66, /* "literal content" */
2764 YYSYMBOL_tREGEXP_END = 67, /* tREGEXP_END */
2765 YYSYMBOL_tDUMNY_END = 68, /* "dummy end" */
2766 YYSYMBOL_69_ = 69, /* '.
' */
2767 YYSYMBOL_70_backslash_ = 70, /* "backslash" */
2768 YYSYMBOL_tSP = 71, /* "escaped space" */
2769 YYSYMBOL_72_escaped_horizontal_tab_ = 72, /* "escaped horizontal tab" */
2770 YYSYMBOL_73_escaped_form_feed_ = 73, /* "escaped form feed" */
2771 YYSYMBOL_74_escaped_carriage_return_ = 74, /* "escaped carriage return" */
2772 YYSYMBOL_75_escaped_vertical_tab_ = 75, /* "escaped vertical tab" */
2773 YYSYMBOL_tUPLUS = 76, /* "unary+" */
2774 YYSYMBOL_tUMINUS = 77, /* "unary-" */
2775 YYSYMBOL_tPOW = 78, /* "**" */
2776 YYSYMBOL_tCMP = 79, /* "<=>" */
2777 YYSYMBOL_tEQ = 80, /* "==" */
2778 YYSYMBOL_tEQQ = 81, /* "===" */
2779 YYSYMBOL_tNEQ = 82, /* "!=" */
2780 YYSYMBOL_tGEQ = 83, /* ">=" */
2781 YYSYMBOL_tLEQ = 84, /* "<=" */
2782 YYSYMBOL_tANDOP = 85, /* "&&" */
2783 YYSYMBOL_tOROP = 86, /* "||" */
2784 YYSYMBOL_tMATCH = 87, /* "=~" */
2785 YYSYMBOL_tNMATCH = 88, /* "!~" */
2786 YYSYMBOL_tDOT2 = 89, /* ".." */
2787 YYSYMBOL_tDOT3 = 90, /* "..." */
2788 YYSYMBOL_tBDOT2 = 91, /* "(.." */
2789 YYSYMBOL_tBDOT3 = 92, /* "(..." */
2790 YYSYMBOL_tAREF = 93, /* "[]" */
2791 YYSYMBOL_tASET = 94, /* "[]=" */
2792 YYSYMBOL_tLSHFT = 95, /* "<<" */
2793 YYSYMBOL_tRSHFT = 96, /* ">>" */
2794 YYSYMBOL_tANDDOT = 97, /* "&." */
2795 YYSYMBOL_tCOLON2 = 98, /* "::" */
2796 YYSYMBOL_tCOLON3 = 99, /* ":: at EXPR_BEG" */
2797 YYSYMBOL_tOP_ASGN = 100, /* "operator-assignment" */
2798 YYSYMBOL_tASSOC = 101, /* "=>" */
2799 YYSYMBOL_tLPAREN = 102, /* "(" */
2800 YYSYMBOL_tLPAREN_ARG = 103, /* "( arg" */
2801 YYSYMBOL_tLBRACK = 104, /* "[" */
2802 YYSYMBOL_tLBRACE = 105, /* "{" */
2803 YYSYMBOL_tLBRACE_ARG = 106, /* "{ arg" */
2804 YYSYMBOL_tSTAR = 107, /* "*" */
2805 YYSYMBOL_tDSTAR = 108, /* "**arg" */
2806 YYSYMBOL_tAMPER = 109, /* "&" */
2807 YYSYMBOL_tLAMBDA = 110, /* "->" */
2808 YYSYMBOL_tSYMBEG = 111, /* "symbol literal" */
2809 YYSYMBOL_tSTRING_BEG = 112, /* "string literal" */
2810 YYSYMBOL_tXSTRING_BEG = 113, /* "backtick literal" */
2811 YYSYMBOL_tREGEXP_BEG = 114, /* "regexp literal" */
2812 YYSYMBOL_tWORDS_BEG = 115, /* "word list" */
2813 YYSYMBOL_tQWORDS_BEG = 116, /* "verbatim word list" */
2814 YYSYMBOL_tSYMBOLS_BEG = 117, /* "symbol list" */
2815 YYSYMBOL_tQSYMBOLS_BEG = 118, /* "verbatim symbol list" */
2816 YYSYMBOL_tSTRING_END = 119, /* "terminator" */
2817 YYSYMBOL_tSTRING_DEND = 120, /* "'}
'" */
2818 YYSYMBOL_tSTRING_DBEG = 121, /* "'#{
'" */
2819 YYSYMBOL_tSTRING_DVAR = 122, /* tSTRING_DVAR */
2820 YYSYMBOL_tLAMBEG = 123, /* tLAMBEG */
2821 YYSYMBOL_tLABEL_END = 124, /* tLABEL_END */
2822 YYSYMBOL_tIGNORED_NL = 125, /* tIGNORED_NL */
2823 YYSYMBOL_tCOMMENT = 126, /* tCOMMENT */
2824 YYSYMBOL_tEMBDOC_BEG = 127, /* tEMBDOC_BEG */
2825 YYSYMBOL_tEMBDOC = 128, /* tEMBDOC */
2826 YYSYMBOL_tEMBDOC_END = 129, /* tEMBDOC_END */
2827 YYSYMBOL_tHEREDOC_BEG = 130, /* tHEREDOC_BEG */
2828 YYSYMBOL_tHEREDOC_END = 131, /* tHEREDOC_END */
2829 YYSYMBOL_k__END__ = 132, /* k__END__ */
2830 YYSYMBOL_tLOWEST = 133, /* tLOWEST */
2831 YYSYMBOL_134_ = 134, /* '=
' */
2832 YYSYMBOL_135_ = 135, /* '?
' */
2833 YYSYMBOL_136_ = 136, /* ':
' */
2834 YYSYMBOL_137_ = 137, /* '>
' */
2835 YYSYMBOL_138_ = 138, /* '<
' */
2836 YYSYMBOL_139_ = 139, /* '|
' */
2837 YYSYMBOL_140_ = 140, /* '^
' */
2838 YYSYMBOL_141_ = 141, /* '&
' */
2839 YYSYMBOL_142_ = 142, /* '+
' */
2840 YYSYMBOL_143_ = 143, /* '-
' */
2841 YYSYMBOL_144_ = 144, /* '*
' */
2842 YYSYMBOL_145_ = 145, /* '/
' */
2843 YYSYMBOL_146_ = 146, /* '%
' */
2844 YYSYMBOL_tUMINUS_NUM = 147, /* tUMINUS_NUM */
2845 YYSYMBOL_148_ = 148, /* '!
' */
2846 YYSYMBOL_149_ = 149, /* '~
' */
2847 YYSYMBOL_tLAST_TOKEN = 150, /* tLAST_TOKEN */
2848 YYSYMBOL_151_ = 151, /* '{
' */
2849 YYSYMBOL_152_ = 152, /* '}
' */
2850 YYSYMBOL_153_ = 153, /* '[
' */
2851 YYSYMBOL_154_n_ = 154, /* '\n
' */
2852 YYSYMBOL_155_ = 155, /* ',
' */
2853 YYSYMBOL_156_ = 156, /* '`
' */
2854 YYSYMBOL_157_ = 157, /* '(
' */
2855 YYSYMBOL_158_ = 158, /* ')
' */
2856 YYSYMBOL_159_ = 159, /* ']
' */
2857 YYSYMBOL_160_ = 160, /* ';
' */
2858 YYSYMBOL_161_ = 161, /* ' ' */
2859 YYSYMBOL_YYACCEPT = 162, /* $accept */
2860 YYSYMBOL_option_terms = 163, /* option_terms */
2861 YYSYMBOL_compstmt_top_stmts = 164, /* compstmt_top_stmts */
2862 YYSYMBOL_165_1 = 165, /* $@1 */
2863 YYSYMBOL_program = 166, /* program */
2864 YYSYMBOL_top_stmts = 167, /* top_stmts */
2865 YYSYMBOL_top_stmt = 168, /* top_stmt */
2866 YYSYMBOL_block_open = 169, /* block_open */
2867 YYSYMBOL_begin_block = 170, /* begin_block */
2868 YYSYMBOL_compstmt_stmts = 171, /* compstmt_stmts */
2869 YYSYMBOL_172_2 = 172, /* $@2 */
2870 YYSYMBOL_173_3 = 173, /* $@3 */
2871 YYSYMBOL_bodystmt = 174, /* bodystmt */
2872 YYSYMBOL_175_4 = 175, /* $@4 */
2873 YYSYMBOL_stmts = 176, /* stmts */
2874 YYSYMBOL_stmt_or_begin = 177, /* stmt_or_begin */
2875 YYSYMBOL_178_5 = 178, /* $@5 */
2876 YYSYMBOL_allow_exits = 179, /* allow_exits */
2877 YYSYMBOL_k_END = 180, /* k_END */
2878 YYSYMBOL_181_6 = 181, /* $@6 */
2879 YYSYMBOL_stmt = 182, /* stmt */
2880 YYSYMBOL_asgn_mrhs = 183, /* asgn_mrhs */
2881 YYSYMBOL_asgn_command_rhs = 184, /* asgn_command_rhs */
2882 YYSYMBOL_command_asgn = 185, /* command_asgn */
2883 YYSYMBOL_op_asgn_command_rhs = 186, /* op_asgn_command_rhs */
2884 YYSYMBOL_def_endless_method_endless_command = 187, /* def_endless_method_endless_command */
2885 YYSYMBOL_endless_command = 188, /* endless_command */
2886 YYSYMBOL_option__n_ = 189, /* option_'\n
' */
2887 YYSYMBOL_command_rhs = 190, /* command_rhs */
2888 YYSYMBOL_expr = 191, /* expr */
2889 YYSYMBOL_192_7 = 192, /* $@7 */
2890 YYSYMBOL_193_8 = 193, /* $@8 */
2891 YYSYMBOL_def_name = 194, /* def_name */
2892 YYSYMBOL_defn_head = 195, /* defn_head */
2893 YYSYMBOL_196_9 = 196, /* $@9 */
2894 YYSYMBOL_defs_head = 197, /* defs_head */
2895 YYSYMBOL_value_expr_expr = 198, /* value_expr_expr */
2896 YYSYMBOL_expr_value = 199, /* expr_value */
2897 YYSYMBOL_200_10 = 200, /* $@10 */
2898 YYSYMBOL_201_11 = 201, /* $@11 */
2899 YYSYMBOL_expr_value_do = 202, /* expr_value_do */
2900 YYSYMBOL_command_call = 203, /* command_call */
2901 YYSYMBOL_value_expr_command_call = 204, /* value_expr_command_call */
2902 YYSYMBOL_command_call_value = 205, /* command_call_value */
2903 YYSYMBOL_block_command = 206, /* block_command */
2904 YYSYMBOL_cmd_brace_block = 207, /* cmd_brace_block */
2905 YYSYMBOL_fcall = 208, /* fcall */
2906 YYSYMBOL_command = 209, /* command */
2907 YYSYMBOL_mlhs = 210, /* mlhs */
2908 YYSYMBOL_mlhs_inner = 211, /* mlhs_inner */
2909 YYSYMBOL_mlhs_basic = 212, /* mlhs_basic */
2910 YYSYMBOL_mlhs_mlhs_item = 213, /* mlhs_mlhs_item */
2911 YYSYMBOL_mlhs_item = 214, /* mlhs_item */
2912 YYSYMBOL_mlhs_head = 215, /* mlhs_head */
2913 YYSYMBOL_mlhs_node = 216, /* mlhs_node */
2914 YYSYMBOL_lhs = 217, /* lhs */
2915 YYSYMBOL_cname = 218, /* cname */
2916 YYSYMBOL_cpath = 219, /* cpath */
2917 YYSYMBOL_fname = 220, /* fname */
2918 YYSYMBOL_fitem = 221, /* fitem */
2919 YYSYMBOL_undef_list = 222, /* undef_list */
2920 YYSYMBOL_223_12 = 223, /* $@12 */
2921 YYSYMBOL_op = 224, /* op */
2922 YYSYMBOL_reswords = 225, /* reswords */
2923 YYSYMBOL_asgn_arg_rhs = 226, /* asgn_arg_rhs */
2924 YYSYMBOL_arg = 227, /* arg */
2925 YYSYMBOL_op_asgn_arg_rhs = 228, /* op_asgn_arg_rhs */
2926 YYSYMBOL_range_expr_arg = 229, /* range_expr_arg */
2927 YYSYMBOL_def_endless_method_endless_arg = 230, /* def_endless_method_endless_arg */
2928 YYSYMBOL_ternary = 231, /* ternary */
2929 YYSYMBOL_endless_arg = 232, /* endless_arg */
2930 YYSYMBOL_relop = 233, /* relop */
2931 YYSYMBOL_rel_expr = 234, /* rel_expr */
2932 YYSYMBOL_lex_ctxt = 235, /* lex_ctxt */
2933 YYSYMBOL_begin_defined = 236, /* begin_defined */
2934 YYSYMBOL_after_rescue = 237, /* after_rescue */
2935 YYSYMBOL_value_expr_arg = 238, /* value_expr_arg */
2936 YYSYMBOL_arg_value = 239, /* arg_value */
2937 YYSYMBOL_aref_args = 240, /* aref_args */
2938 YYSYMBOL_arg_rhs = 241, /* arg_rhs */
2939 YYSYMBOL_paren_args = 242, /* paren_args */
2940 YYSYMBOL_opt_paren_args = 243, /* opt_paren_args */
2941 YYSYMBOL_opt_call_args = 244, /* opt_call_args */
2942 YYSYMBOL_value_expr_command = 245, /* value_expr_command */
2943 YYSYMBOL_call_args = 246, /* call_args */
2944 YYSYMBOL_247_13 = 247, /* $@13 */
2945 YYSYMBOL_command_args = 248, /* command_args */
2946 YYSYMBOL_block_arg = 249, /* block_arg */
2947 YYSYMBOL_opt_block_arg = 250, /* opt_block_arg */
2948 YYSYMBOL_args = 251, /* args */
2949 YYSYMBOL_arg_splat = 252, /* arg_splat */
2950 YYSYMBOL_mrhs_arg = 253, /* mrhs_arg */
2951 YYSYMBOL_mrhs = 254, /* mrhs */
2952 YYSYMBOL_primary = 255, /* primary */
2953 YYSYMBOL_256_14 = 256, /* $@14 */
2954 YYSYMBOL_257_15 = 257, /* $@15 */
2955 YYSYMBOL_258_16 = 258, /* @16 */
2956 YYSYMBOL_259_17 = 259, /* @17 */
2957 YYSYMBOL_260_18 = 260, /* $@18 */
2958 YYSYMBOL_261_19 = 261, /* $@19 */
2959 YYSYMBOL_262_20 = 262, /* $@20 */
2960 YYSYMBOL_263_21 = 263, /* $@21 */
2961 YYSYMBOL_264_22 = 264, /* $@22 */
2962 YYSYMBOL_265_23 = 265, /* $@23 */
2963 YYSYMBOL_266_24 = 266, /* $@24 */
2964 YYSYMBOL_value_expr_primary = 267, /* value_expr_primary */
2965 YYSYMBOL_primary_value = 268, /* primary_value */
2966 YYSYMBOL_k_begin = 269, /* k_begin */
2967 YYSYMBOL_k_if = 270, /* k_if */
2968 YYSYMBOL_k_unless = 271, /* k_unless */
2969 YYSYMBOL_k_while = 272, /* k_while */
2970 YYSYMBOL_k_until = 273, /* k_until */
2971 YYSYMBOL_k_case = 274, /* k_case */
2972 YYSYMBOL_k_for = 275, /* k_for */
2973 YYSYMBOL_k_class = 276, /* k_class */
2974 YYSYMBOL_k_module = 277, /* k_module */
2975 YYSYMBOL_k_def = 278, /* k_def */
2976 YYSYMBOL_k_do = 279, /* k_do */
2977 YYSYMBOL_k_do_block = 280, /* k_do_block */
2978 YYSYMBOL_k_rescue = 281, /* k_rescue */
2979 YYSYMBOL_k_ensure = 282, /* k_ensure */
2980 YYSYMBOL_k_when = 283, /* k_when */
2981 YYSYMBOL_k_else = 284, /* k_else */
2982 YYSYMBOL_k_elsif = 285, /* k_elsif */
2983 YYSYMBOL_k_end = 286, /* k_end */
2984 YYSYMBOL_k_return = 287, /* k_return */
2985 YYSYMBOL_k_yield = 288, /* k_yield */
2986 YYSYMBOL_then = 289, /* then */
2987 YYSYMBOL_do = 290, /* do */
2988 YYSYMBOL_if_tail = 291, /* if_tail */
2989 YYSYMBOL_opt_else = 292, /* opt_else */
2990 YYSYMBOL_for_var = 293, /* for_var */
2991 YYSYMBOL_f_marg = 294, /* f_marg */
2992 YYSYMBOL_mlhs_f_marg = 295, /* mlhs_f_marg */
2993 YYSYMBOL_f_margs = 296, /* f_margs */
2994 YYSYMBOL_f_rest_marg = 297, /* f_rest_marg */
2995 YYSYMBOL_f_any_kwrest = 298, /* f_any_kwrest */
2996 YYSYMBOL_299_25 = 299, /* $@25 */
2997 YYSYMBOL_f_eq = 300, /* f_eq */
2998 YYSYMBOL_f_kw_primary_value = 301, /* f_kw_primary_value */
2999 YYSYMBOL_f_kwarg_primary_value = 302, /* f_kwarg_primary_value */
3000 YYSYMBOL_args_tail_basic_primary_value = 303, /* args_tail_basic_primary_value */
3001 YYSYMBOL_block_args_tail = 304, /* block_args_tail */
3002 YYSYMBOL_excessed_comma = 305, /* excessed_comma */
3003 YYSYMBOL_f_opt_primary_value = 306, /* f_opt_primary_value */
3004 YYSYMBOL_f_opt_arg_primary_value = 307, /* f_opt_arg_primary_value */
3005 YYSYMBOL_opt_args_tail_block_args_tail = 308, /* opt_args_tail_block_args_tail */
3006 YYSYMBOL_block_param = 309, /* block_param */
3007 YYSYMBOL_opt_block_param_def = 310, /* opt_block_param_def */
3008 YYSYMBOL_block_param_def = 311, /* block_param_def */
3009 YYSYMBOL_opt_block_param = 312, /* opt_block_param */
3010 YYSYMBOL_opt_bv_decl = 313, /* opt_bv_decl */
3011 YYSYMBOL_bv_decls = 314, /* bv_decls */
3012 YYSYMBOL_bvar = 315, /* bvar */
3013 YYSYMBOL_max_numparam = 316, /* max_numparam */
3014 YYSYMBOL_numparam = 317, /* numparam */
3015 YYSYMBOL_it_id = 318, /* it_id */
3016 YYSYMBOL_319_26 = 319, /* @26 */
3017 YYSYMBOL_320_27 = 320, /* $@27 */
3018 YYSYMBOL_lambda = 321, /* lambda */
3019 YYSYMBOL_f_larglist = 322, /* f_larglist */
3020 YYSYMBOL_lambda_body = 323, /* lambda_body */
3021 YYSYMBOL_324_28 = 324, /* $@28 */
3022 YYSYMBOL_do_block = 325, /* do_block */
3023 YYSYMBOL_block_call = 326, /* block_call */
3024 YYSYMBOL_method_call = 327, /* method_call */
3025 YYSYMBOL_brace_block = 328, /* brace_block */
3026 YYSYMBOL_329_29 = 329, /* @29 */
3027 YYSYMBOL_brace_body = 330, /* brace_body */
3028 YYSYMBOL_331_30 = 331, /* @30 */
3029 YYSYMBOL_do_body = 332, /* do_body */
3030 YYSYMBOL_case_args = 333, /* case_args */
3031 YYSYMBOL_case_body = 334, /* case_body */
3032 YYSYMBOL_cases = 335, /* cases */
3033 YYSYMBOL_p_pvtbl = 336, /* p_pvtbl */
3034 YYSYMBOL_p_pktbl = 337, /* p_pktbl */
3035 YYSYMBOL_p_in_kwarg = 338, /* p_in_kwarg */
3036 YYSYMBOL_339_31 = 339, /* $@31 */
3037 YYSYMBOL_p_case_body = 340, /* p_case_body */
3038 YYSYMBOL_p_cases = 341, /* p_cases */
3039 YYSYMBOL_p_top_expr = 342, /* p_top_expr */
3040 YYSYMBOL_p_top_expr_body = 343, /* p_top_expr_body */
3041 YYSYMBOL_p_expr = 344, /* p_expr */
3042 YYSYMBOL_p_as = 345, /* p_as */
3043 YYSYMBOL_p_alt = 346, /* p_alt */
3044 YYSYMBOL_p_lparen = 347, /* p_lparen */
3045 YYSYMBOL_p_lbracket = 348, /* p_lbracket */
3046 YYSYMBOL_p_expr_basic = 349, /* p_expr_basic */
3047 YYSYMBOL_350_32 = 350, /* $@32 */
3048 YYSYMBOL_p_args = 351, /* p_args */
3049 YYSYMBOL_p_args_head = 352, /* p_args_head */
3050 YYSYMBOL_p_args_tail = 353, /* p_args_tail */
3051 YYSYMBOL_p_find = 354, /* p_find */
3052 YYSYMBOL_p_rest = 355, /* p_rest */
3053 YYSYMBOL_p_args_post = 356, /* p_args_post */
3054 YYSYMBOL_p_arg = 357, /* p_arg */
3055 YYSYMBOL_p_kwargs = 358, /* p_kwargs */
3056 YYSYMBOL_p_kwarg = 359, /* p_kwarg */
3057 YYSYMBOL_p_kw = 360, /* p_kw */
3058 YYSYMBOL_p_kw_label = 361, /* p_kw_label */
3059 YYSYMBOL_p_kwrest = 362, /* p_kwrest */
3060 YYSYMBOL_p_kwnorest = 363, /* p_kwnorest */
3061 YYSYMBOL_p_any_kwrest = 364, /* p_any_kwrest */
3062 YYSYMBOL_p_value = 365, /* p_value */
3063 YYSYMBOL_range_expr_p_primitive = 366, /* range_expr_p_primitive */
3064 YYSYMBOL_p_primitive = 367, /* p_primitive */
3065 YYSYMBOL_p_variable = 368, /* p_variable */
3066 YYSYMBOL_p_var_ref = 369, /* p_var_ref */
3067 YYSYMBOL_p_expr_ref = 370, /* p_expr_ref */
3068 YYSYMBOL_p_const = 371, /* p_const */
3069 YYSYMBOL_opt_rescue = 372, /* opt_rescue */
3070 YYSYMBOL_exc_list = 373, /* exc_list */
3071 YYSYMBOL_exc_var = 374, /* exc_var */
3072 YYSYMBOL_opt_ensure = 375, /* opt_ensure */
3073 YYSYMBOL_literal = 376, /* literal */
3074 YYSYMBOL_strings = 377, /* strings */
3075 YYSYMBOL_string = 378, /* string */
3076 YYSYMBOL_string1 = 379, /* string1 */
3077 YYSYMBOL_xstring = 380, /* xstring */
3078 YYSYMBOL_regexp = 381, /* regexp */
3079 YYSYMBOL_nonempty_list__ = 382, /* nonempty_list_' ' */
3080 YYSYMBOL_words_tWORDS_BEG_word_list = 383, /* words_tWORDS_BEG_word_list */
3081 YYSYMBOL_words = 384, /* words */
3082 YYSYMBOL_word_list = 385, /* word_list */
3083 YYSYMBOL_word = 386, /* word */
3084 YYSYMBOL_words_tSYMBOLS_BEG_symbol_list = 387, /* words_tSYMBOLS_BEG_symbol_list */
3085 YYSYMBOL_symbols = 388, /* symbols */
3086 YYSYMBOL_symbol_list = 389, /* symbol_list */
3087 YYSYMBOL_words_tQWORDS_BEG_qword_list = 390, /* words_tQWORDS_BEG_qword_list */
3088 YYSYMBOL_qwords = 391, /* qwords */
3089 YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list = 392, /* words_tQSYMBOLS_BEG_qsym_list */
3090 YYSYMBOL_qsymbols = 393, /* qsymbols */
3091 YYSYMBOL_qword_list = 394, /* qword_list */
3092 YYSYMBOL_qsym_list = 395, /* qsym_list */
3093 YYSYMBOL_string_contents = 396, /* string_contents */
3094 YYSYMBOL_xstring_contents = 397, /* xstring_contents */
3095 YYSYMBOL_regexp_contents = 398, /* regexp_contents */
3096 YYSYMBOL_string_content = 399, /* string_content */
3097 YYSYMBOL_400_33 = 400, /* @33 */
3098 YYSYMBOL_401_34 = 401, /* @34 */
3099 YYSYMBOL_402_35 = 402, /* @35 */
3100 YYSYMBOL_403_36 = 403, /* @36 */
3101 YYSYMBOL_string_dend = 404, /* string_dend */
3102 YYSYMBOL_string_dvar = 405, /* string_dvar */
3103 YYSYMBOL_symbol = 406, /* symbol */
3104 YYSYMBOL_ssym = 407, /* ssym */
3105 YYSYMBOL_sym = 408, /* sym */
3106 YYSYMBOL_dsym = 409, /* dsym */
3107 YYSYMBOL_numeric = 410, /* numeric */
3108 YYSYMBOL_simple_numeric = 411, /* simple_numeric */
3109 YYSYMBOL_nonlocal_var = 412, /* nonlocal_var */
3110 YYSYMBOL_user_variable = 413, /* user_variable */
3111 YYSYMBOL_keyword_variable = 414, /* keyword_variable */
3112 YYSYMBOL_var_ref = 415, /* var_ref */
3113 YYSYMBOL_var_lhs = 416, /* var_lhs */
3114 YYSYMBOL_backref = 417, /* backref */
3115 YYSYMBOL_418_37 = 418, /* $@37 */
3116 YYSYMBOL_superclass = 419, /* superclass */
3117 YYSYMBOL_f_opt_paren_args = 420, /* f_opt_paren_args */
3118 YYSYMBOL_f_paren_args = 421, /* f_paren_args */
3119 YYSYMBOL_f_arglist = 422, /* f_arglist */
3120 YYSYMBOL_423_38 = 423, /* @38 */
3121 YYSYMBOL_f_kw_arg_value = 424, /* f_kw_arg_value */
3122 YYSYMBOL_f_kwarg_arg_value = 425, /* f_kwarg_arg_value */
3123 YYSYMBOL_args_tail_basic_arg_value = 426, /* args_tail_basic_arg_value */
3124 YYSYMBOL_args_tail = 427, /* args_tail */
3125 YYSYMBOL_f_opt_arg_value = 428, /* f_opt_arg_value */
3126 YYSYMBOL_f_opt_arg_arg_value = 429, /* f_opt_arg_arg_value */
3127 YYSYMBOL_opt_args_tail_args_tail = 430, /* opt_args_tail_args_tail */
3128 YYSYMBOL_f_args = 431, /* f_args */
3129 YYSYMBOL_args_forward = 432, /* args_forward */
3130 YYSYMBOL_f_bad_arg = 433, /* f_bad_arg */
3131 YYSYMBOL_f_norm_arg = 434, /* f_norm_arg */
3132 YYSYMBOL_f_arg_asgn = 435, /* f_arg_asgn */
3133 YYSYMBOL_f_arg_item = 436, /* f_arg_item */
3134 YYSYMBOL_f_arg = 437, /* f_arg */
3135 YYSYMBOL_f_label = 438, /* f_label */
3136 YYSYMBOL_kwrest_mark = 439, /* kwrest_mark */
3137 YYSYMBOL_f_no_kwarg = 440, /* f_no_kwarg */
3138 YYSYMBOL_f_kwrest = 441, /* f_kwrest */
3139 YYSYMBOL_restarg_mark = 442, /* restarg_mark */
3140 YYSYMBOL_f_rest_arg = 443, /* f_rest_arg */
3141 YYSYMBOL_blkarg_mark = 444, /* blkarg_mark */
3142 YYSYMBOL_f_block_arg = 445, /* f_block_arg */
3143 YYSYMBOL_opt_f_block_arg = 446, /* opt_f_block_arg */
3144 YYSYMBOL_value_expr_singleton_expr = 447, /* value_expr_singleton_expr */
3145 YYSYMBOL_singleton = 448, /* singleton */
3146 YYSYMBOL_singleton_expr = 449, /* singleton_expr */
3147 YYSYMBOL_450_39 = 450, /* $@39 */
3148 YYSYMBOL_assoc_list = 451, /* assoc_list */
3149 YYSYMBOL_assocs = 452, /* assocs */
3150 YYSYMBOL_assoc = 453, /* assoc */
3151 YYSYMBOL_operation2 = 454, /* operation2 */
3152 YYSYMBOL_operation3 = 455, /* operation3 */
3153 YYSYMBOL_dot_or_colon = 456, /* dot_or_colon */
3154 YYSYMBOL_call_op = 457, /* call_op */
3155 YYSYMBOL_call_op2 = 458, /* call_op2 */
3156 YYSYMBOL_rparen = 459, /* rparen */
3157 YYSYMBOL_rbracket = 460, /* rbracket */
3158 YYSYMBOL_rbrace = 461, /* rbrace */
3159 YYSYMBOL_trailer = 462, /* trailer */
3160 YYSYMBOL_term = 463, /* term */
3161 YYSYMBOL_terms = 464, /* terms */
3162 YYSYMBOL_none = 465 /* none */
3164typedef enum yysymbol_kind_t yysymbol_kind_t;
3173/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
3174 <limits.h> and (if available) <stdint.h> are included
3175 so that the code can choose integer types of a good width. */
3177#ifndef __PTRDIFF_MAX__
3178# include <limits.h> /* INFRINGES ON USER NAME SPACE */
3179# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3180# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
3185/* Narrow types that promote to a signed type and that can represent a
3186 signed or unsigned integer of at least N bits. In tables they can
3187 save space and decrease cache pressure. Promoting to a signed type
3188 helps avoid bugs in integer arithmetic. */
3190#ifdef __INT_LEAST8_MAX__
3191typedef __INT_LEAST8_TYPE__ yytype_int8;
3192#elif defined YY_STDINT_H
3193typedef int_least8_t yytype_int8;
3195typedef signed char yytype_int8;
3198#ifdef __INT_LEAST16_MAX__
3199typedef __INT_LEAST16_TYPE__ yytype_int16;
3200#elif defined YY_STDINT_H
3201typedef int_least16_t yytype_int16;
3203typedef short yytype_int16;
3206/* Work around bug in HP-UX 11.23, which defines these macros
3207 incorrectly for preprocessor constants. This workaround can likely
3208 be removed in 2023, as HPE has promised support for HP-UX 11.23
3209 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
3210 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
3212# undef UINT_LEAST8_MAX
3213# undef UINT_LEAST16_MAX
3214# define UINT_LEAST8_MAX 255
3215# define UINT_LEAST16_MAX 65535
3218#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
3219typedef __UINT_LEAST8_TYPE__ yytype_uint8;
3220#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
3221 && UINT_LEAST8_MAX <= INT_MAX)
3222typedef uint_least8_t yytype_uint8;
3223#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
3224typedef unsigned char yytype_uint8;
3226typedef short yytype_uint8;
3229#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
3230typedef __UINT_LEAST16_TYPE__ yytype_uint16;
3231#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
3232 && UINT_LEAST16_MAX <= INT_MAX)
3233typedef uint_least16_t yytype_uint16;
3234#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
3235typedef unsigned short yytype_uint16;
3237typedef int yytype_uint16;
3241# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
3242# define YYPTRDIFF_T __PTRDIFF_TYPE__
3243# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
3244# elif defined PTRDIFF_MAX
3246# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
3248# define YYPTRDIFF_T ptrdiff_t
3249# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
3251# define YYPTRDIFF_T long
3252# define YYPTRDIFF_MAXIMUM LONG_MAX
3257# ifdef __SIZE_TYPE__
3258# define YYSIZE_T __SIZE_TYPE__
3259# elif defined size_t
3260# define YYSIZE_T size_t
3261# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3262# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
3263# define YYSIZE_T size_t
3265# define YYSIZE_T unsigned
3269#define YYSIZE_MAXIMUM \
3270 YY_CAST (YYPTRDIFF_T, \
3271 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
3272 ? YYPTRDIFF_MAXIMUM \
3273 : YY_CAST (YYSIZE_T, -1)))
3275#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
3278/* Stored state numbers (used for stacks). */
3279typedef yytype_int16 yy_state_t;
3281/* State numbers in computations. */
3282typedef int yy_state_fast_t;
3285# if defined YYENABLE_NLS && YYENABLE_NLS
3287# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
3288# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
3292# define YY_(Msgid) Msgid
3297#ifndef YY_ATTRIBUTE_PURE
3298# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
3299# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
3301# define YY_ATTRIBUTE_PURE
3305#ifndef YY_ATTRIBUTE_UNUSED
3306# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
3307# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
3309# define YY_ATTRIBUTE_UNUSED
3313/* Suppress unused-variable warnings by "using" E. */
3314#if ! defined lint || defined __GNUC__
3315# define YY_USE(E) ((void) (E))
3317# define YY_USE(E) /* empty */
3320/* Suppress an incorrect diagnostic about yylval being uninitialized. */
3321#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
3322# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
3323# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3324 _Pragma ("GCC diagnostic push") \
3325 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
3327# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3328 _Pragma ("GCC diagnostic push") \
3329 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
3330 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
3332# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
3333 _Pragma ("GCC diagnostic pop")
3335# define YY_INITIAL_VALUE(Value) Value
3337#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3338# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3339# define YY_IGNORE_MAYBE_UNINITIALIZED_END
3341#ifndef YY_INITIAL_VALUE
3342# define YY_INITIAL_VALUE(Value) /* Nothing. */
3345#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
3346# define YY_IGNORE_USELESS_CAST_BEGIN \
3347 _Pragma ("GCC diagnostic push") \
3348 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
3349# define YY_IGNORE_USELESS_CAST_END \
3350 _Pragma ("GCC diagnostic pop")
3352#ifndef YY_IGNORE_USELESS_CAST_BEGIN
3353# define YY_IGNORE_USELESS_CAST_BEGIN
3354# define YY_IGNORE_USELESS_CAST_END
3358#define YY_ASSERT(E) ((void) (0 && (E)))
3362/* The parser invokes alloca or malloc; define the necessary symbols. */
3364# ifdef YYSTACK_USE_ALLOCA
3365# if YYSTACK_USE_ALLOCA
3367# define YYSTACK_ALLOC __builtin_alloca
3368# elif defined __BUILTIN_VA_ARG_INCR
3369# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
3371# define YYSTACK_ALLOC __alloca
3372# elif defined _MSC_VER
3373# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
3374# define alloca _alloca
3376# define YYSTACK_ALLOC alloca
3377# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
3378# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
3379 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
3380# ifndef EXIT_SUCCESS
3381# define EXIT_SUCCESS 0
3388# ifdef YYSTACK_ALLOC
3389 /* Pacify GCC's
'empty if-body' warning. */
3390# define YYSTACK_FREE(Ptr) do { ; } while (0)
3391# ifndef YYSTACK_ALLOC_MAXIMUM
3396# define YYSTACK_ALLOC_MAXIMUM 4032
3399# define YYSTACK_ALLOC YYMALLOC
3400# define YYSTACK_FREE YYFREE
3401# ifndef YYSTACK_ALLOC_MAXIMUM
3402# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
3404# if (defined __cplusplus && ! defined EXIT_SUCCESS \
3405 && ! ((defined YYMALLOC || defined malloc) \
3406 && (defined YYFREE || defined free)))
3408# ifndef EXIT_SUCCESS
3409# define EXIT_SUCCESS 0
3413# define YYMALLOC malloc
3414# if ! defined malloc && ! defined EXIT_SUCCESS
3415void *malloc (YYSIZE_T);
3420# if ! defined free && ! defined EXIT_SUCCESS
3427#if (! defined yyoverflow \
3428 && (! defined __cplusplus \
3429 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
3430 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
3435 yy_state_t yyss_alloc;
3441# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
3445# define YYSTACK_BYTES(N) \
3446 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
3447 + YYSIZEOF (YYLTYPE)) \
3448 + 2 * YYSTACK_GAP_MAXIMUM)
3450# define YYCOPY_NEEDED 1
3457# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
3460 YYPTRDIFF_T yynewbytes; \
3461 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
3462 Stack = &yyptr->Stack_alloc; \
3463 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
3464 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
3470#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
3474# if defined __GNUC__ && 1 < __GNUC__
3475# define YYCOPY(Dst, Src, Count) \
3476 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
3478# define YYCOPY(Dst, Src, Count) \
3482 for (yyi = 0; yyi < (Count); yyi++) \
3483 (Dst)[yyi] = (Src)[yyi]; \
3496#define YYNTOKENS 162
3502#define YYNSTATES 1375
3505#define YYMAXUTOK 361
3510#define YYTRANSLATE(YYX) \
3511 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
3512 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
3517static const yytype_uint8 yytranslate[] =
3519 0, 2, 2, 2, 2, 2, 2, 2, 2, 72,
3520 154, 75, 73, 74, 2, 2, 2, 2, 2, 2,
3521 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3522 2, 2, 161, 148, 2, 2, 2, 146, 141, 2,
3523 157, 158, 144, 142, 155, 143, 69, 145, 2, 2,
3524 2, 2, 2, 2, 2, 2, 2, 2, 136, 160,
3525 138, 134, 137, 135, 2, 2, 2, 2, 2, 2,
3526 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3527 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3528 2, 153, 70, 159, 140, 2, 156, 2, 2, 2,
3529 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3530 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3531 2, 2, 2, 151, 139, 152, 149, 2, 89, 90,
3532 91, 92, 76, 77, 78, 79, 95, 96, 84, 83,
3533 80, 81, 82, 87, 88, 93, 94, 98, 85, 86,
3534 97, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3535 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3536 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3537 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3538 2, 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, 1, 2, 3, 4,
3545 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3546 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
3547 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
3548 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
3549 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
3550 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
3551 65, 66, 67, 68, 71, 99, 100, 101, 102, 103,
3552 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
3553 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
3554 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
3560static const yytype_int16 yyrline[] =
3562 0, 3164, 3158, 3164, 3164, 3164, 3164, 3184, 3189, 3194,
3563 3201, 3206, 3213, 3215, 3233, 3229, 3234, 3233, 3245, 3242,
3564 3255, 3260, 3265, 3272, 3274, 3273, 3283, 3285, 3292, 3292,
3565 3297, 3302, 3310, 3319, 3326, 3332, 3338, 3349, 3360, 3369,
3566 3382, 3383, 3388, 3388, 3389, 3400, 3405, 3406, 3413, 3413,
3567 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3414, 3415,
3568 3415, 3415, 3418, 3419, 3425, 3425, 3425, 3432, 3433, 3440,
3569 3443, 3444, 3449, 3454, 3459, 3465, 3464, 3478, 3477, 3490,
3570 3493, 3504, 3514, 3513, 3527, 3527, 3528, 3534, 3534, 3534,
3571 3541, 3542, 3545, 3545, 3548, 3549, 3556, 3564, 3564, 3564,
3572 3571, 3578, 3587, 3592, 3597, 3602, 3607, 3613, 3619, 3625,
3573 3630, 3637, 3646, 3647, 3654, 3655, 3662, 3667, 3672, 3677,
3574 3677, 3677, 3682, 3687, 3692, 3697, 3702, 3707, 3714, 3715,
3575 3722, 3727, 3735, 3735, 3740, 3745, 3745, 3751, 3756, 3761,
3576 3766, 3774, 3774, 3779, 3784, 3784, 3789, 3794, 3799, 3804,
3577 3812, 3820, 3823, 3828, 3833, 3840, 3840, 3840, 3841, 3846,
3578 3849, 3854, 3857, 3862, 3862, 3870, 3871, 3872, 3873, 3874,
3579 3875, 3876, 3877, 3878, 3879, 3880, 3881, 3882, 3883, 3884,
3580 3885, 3886, 3887, 3888, 3889, 3890, 3891, 3892, 3893, 3894,
3581 3895, 3896, 3897, 3898, 3899, 3902, 3902, 3902, 3903, 3903,
3582 3904, 3904, 3904, 3905, 3905, 3905, 3905, 3906, 3906, 3906,
3583 3906, 3907, 3907, 3907, 3908, 3908, 3908, 3908, 3909, 3909,
3584 3909, 3909, 3910, 3910, 3910, 3910, 3911, 3911, 3911, 3911,
3585 3912, 3912, 3912, 3912, 3913, 3913, 3916, 3916, 3917, 3917,
3586 3917, 3917, 3917, 3917, 3917, 3917, 3917, 3918, 3918, 3918,
3587 3918, 3918, 3918, 3918, 3919, 3924, 3929, 3934, 3939, 3944,
3588 3949, 3954, 3959, 3964, 3969, 3974, 3979, 3984, 3985, 3990,
3589 3995, 4000, 4005, 4010, 4015, 4020, 4025, 4030, 4035, 4040,
3590 4046, 4046, 4046, 4047, 4048, 4051, 4060, 4061, 4067, 4074,
3591 4075, 4076, 4077, 4080, 4085, 4093, 4099, 4106, 4113, 4113,
3592 4116, 4117, 4118, 4123, 4130, 4135, 4144, 4149, 4159, 4171,
3593 4172, 4178, 4179, 4180, 4181, 4186, 4193, 4193, 4198, 4203,
3594 4209, 4215, 4219, 4219, 4257, 4262, 4270, 4275, 4283, 4288,
3595 4293, 4298, 4306, 4311, 4320, 4321, 4325, 4330, 4335, 4353,
3596 4353, 4353, 4353, 4353, 4353, 4353, 4353, 4354, 4355, 4356,
3597 4362, 4361, 4374, 4374, 4380, 4386, 4391, 4396, 4401, 4407,
3598 4412, 4417, 4422, 4427, 4433, 4438, 4443, 4448, 4449, 4455,
3599 4457, 4469, 4478, 4487, 4496, 4495, 4510, 4509, 4522, 4530,
3600 4530, 4531, 4574, 4573, 4596, 4595, 4615, 4614, 4633, 4631,
3601 4648, 4646, 4661, 4666, 4671, 4676, 4691, 4691, 4694, 4701,
3602 4719, 4726, 4734, 4742, 4749, 4757, 4766, 4775, 4783, 4790,
3603 4797, 4805, 4812, 4818, 4833, 4840, 4845, 4851, 4858, 4865,
3604 4866, 4867, 4870, 4871, 4874, 4876, 4885, 4886, 4893, 4894,
3605 4897, 4902, 4910, 4910, 4910, 4915, 4920, 4925, 4930, 4937,
3606 4943, 4950, 4951, 4958, 4958, 4960, 4960, 4960, 4960, 4960,
3607 4960, 4960, 4960, 4960, 4963, 4971, 4971, 4971, 4971, 4971,
3608 4971, 4976, 4981, 4986, 4991, 4996, 5002, 5007, 5012, 5017,
3609 5022, 5027, 5032, 5037, 5042, 5049, 5050, 5056, 5066, 5070,
3610 5073, 5078, 5085, 5087, 5091, 5096, 5099, 5105, 5110, 5117,
3611 5123, 5116, 5150, 5157, 5166, 5173, 5172, 5183, 5191, 5203,
3612 5213, 5222, 5229, 5236, 5247, 5253, 5258, 5264, 5274, 5279,
3613 5287, 5293, 5301, 5303, 5318, 5318, 5339, 5345, 5350, 5356,
3614 5364, 5373, 5374, 5377, 5378, 5380, 5391, 5396, 5404, 5405,
3615 5408, 5409, 5415, 5423, 5424, 5430, 5436, 5441, 5446, 5453,
3616 5456, 5463, 5466, 5471, 5474, 5481, 5488, 5489, 5490, 5497,
3617 5504, 5511, 5517, 5524, 5531, 5538, 5544, 5549, 5554, 5561,
3618 5560, 5571, 5577, 5585, 5591, 5596, 5601, 5606, 5611, 5614,
3619 5615, 5622, 5627, 5634, 5642, 5648, 5655, 5656, 5663, 5670,
3620 5675, 5680, 5685, 5692, 5694, 5701, 5707, 5719, 5720, 5735,
3621 5740, 5747, 5753, 5754, 5761, 5762, 5762, 5762, 5762, 5762,
3622 5762, 5762, 5763, 5764, 5765, 5768, 5768, 5768, 5768, 5768,
3623 5768, 5768, 5768, 5769, 5774, 5777, 5785, 5797, 5804, 5811,
3624 5816, 5821, 5829, 5849, 5852, 5857, 5861, 5864, 5869, 5872,
3625 5879, 5882, 5883, 5886, 5897, 5898, 5899, 5906, 5919, 5931,
3626 5938, 5938, 5938, 5938, 5942, 5946, 5953, 5955, 5962, 5962,
3627 5966, 5970, 5977, 5977, 5980, 5980, 5984, 5988, 5996, 6000,
3628 6008, 6012, 6020, 6024, 6032, 6036, 6062, 6065, 6064, 6079,
3629 6087, 6091, 6095, 6110, 6111, 6114, 6119, 6122, 6123, 6126,
3630 6142, 6143, 6146, 6154, 6155, 6163, 6164, 6165, 6166, 6169,
3631 6170, 6171, 6174, 6174, 6175, 6178, 6179, 6180, 6181, 6182,
3632 6183, 6184, 6187, 6197, 6204, 6204, 6211, 6212, 6216, 6215,
3633 6225, 6228, 6229, 6238, 6248, 6249, 6249, 6266, 6266, 6266,
3634 6266, 6266, 6266, 6266, 6266, 6266, 6267, 6284, 6284, 6284,
3635 6284, 6284, 6284, 6289, 6294, 6299, 6304, 6309, 6314, 6319,
3636 6324, 6329, 6334, 6339, 6344, 6349, 6355, 6362, 6373, 6382,
3637 6391, 6400, 6411, 6412, 6422, 6429, 6434, 6453, 6455, 6466,
3638 6486, 6487, 6490, 6496, 6502, 6510, 6511, 6514, 6520, 6528,
3639 6529, 6532, 6538, 6546, 6551, 6555, 6555, 6585, 6587, 6586,
3640 6599, 6600, 6607, 6609, 6634, 6639, 6644, 6651, 6657, 6662,
3641 6675, 6675, 6675, 6676, 6679, 6680, 6681, 6684, 6685, 6688,
3642 6689, 6692, 6693, 6696, 6699, 6702, 6705, 6706, 6709, 6710,
3648#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
3653static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
3657static const char *
const yytname[] =
3659 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"'class'\"",
3660 "\"'module'\"",
"\"'def'\"",
"\"'undef'\"",
"\"'begin'\"",
3661 "\"'rescue'\"",
"\"'ensure'\"",
"\"'end'\"",
"\"'if'\"",
"\"'unless'\"",
3662 "\"'then'\"",
"\"'elsif'\"",
"\"'else'\"",
"\"'case'\"",
"\"'when'\"",
3663 "\"'while'\"",
"\"'until'\"",
"\"'for'\"",
"\"'break'\"",
"\"'next'\"",
3664 "\"'redo'\"",
"\"'retry'\"",
"\"'in'\"",
"\"'do'\"",
3665 "\"'do' for condition\"",
"\"'do' for block\"",
"\"'do' for lambda\"",
3666 "\"'return'\"",
"\"'yield'\"",
"\"'super'\"",
"\"'self'\"",
"\"'nil'\"",
3667 "\"'true'\"",
"\"'false'\"",
"\"'and'\"",
"\"'or'\"",
"\"'not'\"",
3668 "\"'if' modifier\"",
"\"'unless' modifier\"",
"\"'while' modifier\"",
3669 "\"'until' modifier\"",
"\"'rescue' modifier\"",
"\"'alias'\"",
3670 "\"'defined?'\"",
"\"'BEGIN'\"",
"\"'END'\"",
"\"'__LINE__'\"",
3671 "\"'__FILE__'\"",
"\"'__ENCODING__'\"",
"\"local variable or method\"",
3672 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
3673 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
3674 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
3675 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
3676 "\"literal content\"",
"tREGEXP_END",
"\"dummy end\"",
"'.'",
3677 "\"backslash\"",
"\"escaped space\"",
"\"escaped horizontal tab\"",
3678 "\"escaped form feed\"",
"\"escaped carriage return\"",
3679 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
3680 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
3681 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
3682 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
3683 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
3684 "\"( arg\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
"\"**arg\"",
3685 "\"&\"",
"\"->\"",
"\"symbol literal\"",
"\"string literal\"",
3686 "\"backtick literal\"",
"\"regexp literal\"",
"\"word list\"",
3687 "\"verbatim word list\"",
"\"symbol list\"",
"\"verbatim symbol list\"",
3688 "\"terminator\"",
"\"'}'\"",
"\"'#{'\"",
"tSTRING_DVAR",
"tLAMBEG",
3689 "tLABEL_END",
"tIGNORED_NL",
"tCOMMENT",
"tEMBDOC_BEG",
"tEMBDOC",
3690 "tEMBDOC_END",
"tHEREDOC_BEG",
"tHEREDOC_END",
"k__END__",
"tLOWEST",
3691 "'='",
"'?'",
"':'",
"'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
3692 "'*'",
"'/'",
"'%'",
"tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
3693 "'}'",
"'['",
"'\\n'",
"','",
"'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
3694 "$accept",
"option_terms",
"compstmt_top_stmts",
"$@1",
"program",
3695 "top_stmts",
"top_stmt",
"block_open",
"begin_block",
"compstmt_stmts",
3696 "$@2",
"$@3",
"bodystmt",
"$@4",
"stmts",
"stmt_or_begin",
"$@5",
3697 "allow_exits",
"k_END",
"$@6",
"stmt",
"asgn_mrhs",
"asgn_command_rhs",
3698 "command_asgn",
"op_asgn_command_rhs",
3699 "def_endless_method_endless_command",
"endless_command",
"option_'\\n'",
3700 "command_rhs",
"expr",
"$@7",
"$@8",
"def_name",
"defn_head",
"$@9",
3701 "defs_head",
"value_expr_expr",
"expr_value",
"$@10",
"$@11",
3702 "expr_value_do",
"command_call",
"value_expr_command_call",
3703 "command_call_value",
"block_command",
"cmd_brace_block",
"fcall",
3704 "command",
"mlhs",
"mlhs_inner",
"mlhs_basic",
"mlhs_mlhs_item",
3705 "mlhs_item",
"mlhs_head",
"mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
3706 "fitem",
"undef_list",
"$@12",
"op",
"reswords",
"asgn_arg_rhs",
"arg",
3707 "op_asgn_arg_rhs",
"range_expr_arg",
"def_endless_method_endless_arg",
3708 "ternary",
"endless_arg",
"relop",
"rel_expr",
"lex_ctxt",
3709 "begin_defined",
"after_rescue",
"value_expr_arg",
"arg_value",
3710 "aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
"opt_call_args",
3711 "value_expr_command",
"call_args",
"$@13",
"command_args",
"block_arg",
3712 "opt_block_arg",
"args",
"arg_splat",
"mrhs_arg",
"mrhs",
"primary",
3713 "$@14",
"$@15",
"@16",
"@17",
"$@18",
"$@19",
"$@20",
"$@21",
"$@22",
3714 "$@23",
"$@24",
"value_expr_primary",
"primary_value",
"k_begin",
"k_if",
3715 "k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
3716 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
3717 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"k_yield",
"then",
3718 "do",
"if_tail",
"opt_else",
"for_var",
"f_marg",
"mlhs_f_marg",
3719 "f_margs",
"f_rest_marg",
"f_any_kwrest",
"$@25",
"f_eq",
3720 "f_kw_primary_value",
"f_kwarg_primary_value",
3721 "args_tail_basic_primary_value",
"block_args_tail",
"excessed_comma",
3722 "f_opt_primary_value",
"f_opt_arg_primary_value",
3723 "opt_args_tail_block_args_tail",
"block_param",
"opt_block_param_def",
3724 "block_param_def",
"opt_block_param",
"opt_bv_decl",
"bv_decls",
"bvar",
3725 "max_numparam",
"numparam",
"it_id",
"@26",
"$@27",
"lambda",
3726 "f_larglist",
"lambda_body",
"$@28",
"do_block",
"block_call",
3727 "method_call",
"brace_block",
"@29",
"brace_body",
"@30",
"do_body",
3728 "case_args",
"case_body",
"cases",
"p_pvtbl",
"p_pktbl",
"p_in_kwarg",
3729 "$@31",
"p_case_body",
"p_cases",
"p_top_expr",
"p_top_expr_body",
3730 "p_expr",
"p_as",
"p_alt",
"p_lparen",
"p_lbracket",
"p_expr_basic",
3731 "$@32",
"p_args",
"p_args_head",
"p_args_tail",
"p_find",
"p_rest",
3732 "p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
"p_kw_label",
3733 "p_kwrest",
"p_kwnorest",
"p_any_kwrest",
"p_value",
3734 "range_expr_p_primitive",
"p_primitive",
"p_variable",
"p_var_ref",
3735 "p_expr_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
3736 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
3737 "regexp",
"nonempty_list_' '",
"words_tWORDS_BEG_word_list",
"words",
3738 "word_list",
"word",
"words_tSYMBOLS_BEG_symbol_list",
"symbols",
3739 "symbol_list",
"words_tQWORDS_BEG_qword_list",
"qwords",
3740 "words_tQSYMBOLS_BEG_qsym_list",
"qsymbols",
"qword_list",
"qsym_list",
3741 "string_contents",
"xstring_contents",
"regexp_contents",
3742 "string_content",
"@33",
"@34",
"@35",
"@36",
"string_dend",
3743 "string_dvar",
"symbol",
"ssym",
"sym",
"dsym",
"numeric",
3744 "simple_numeric",
"nonlocal_var",
"user_variable",
"keyword_variable",
3745 "var_ref",
"var_lhs",
"backref",
"$@37",
"superclass",
3746 "f_opt_paren_args",
"f_paren_args",
"f_arglist",
"@38",
"f_kw_arg_value",
3747 "f_kwarg_arg_value",
"args_tail_basic_arg_value",
"args_tail",
3748 "f_opt_arg_value",
"f_opt_arg_arg_value",
"opt_args_tail_args_tail",
3749 "f_args",
"args_forward",
"f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
3750 "f_arg_item",
"f_arg",
"f_label",
"kwrest_mark",
"f_no_kwarg",
3751 "f_kwrest",
"restarg_mark",
"f_rest_arg",
"blkarg_mark",
"f_block_arg",
3752 "opt_f_block_arg",
"value_expr_singleton_expr",
"singleton",
3753 "singleton_expr",
"$@39",
"assoc_list",
"assocs",
"assoc",
"operation2",
3754 "operation3",
"dot_or_colon",
"call_op",
"call_op2",
"rparen",
3755 "rbracket",
"rbrace",
"trailer",
"term",
"terms",
"none", YY_NULLPTR
3759yysymbol_name (yysymbol_kind_t yysymbol)
3761 return yytname[yysymbol];
3765#define YYPACT_NINF (-1157)
3767#define yypact_value_is_default(Yyn) \
3768 ((Yyn) == YYPACT_NINF)
3770#define YYTABLE_NINF (-813)
3772#define yytable_value_is_error(Yyn) \
3773 ((Yyn) == YYTABLE_NINF)
3777static const yytype_int16 yypact[] =
3779 -1157, 5728, 173, -1157, -1157, -1157, -1157, 10499, -1157, -1157,
3780 -1157, -1157, -1157, -1157, -1157, 11554, 11554, -1157, -1157, -1157,
3781 -1157, 6788, -1157, -1157, -1157, -1157, 565, 10345, 36, 57,
3782 -1157, -1157, -1157, -1157, 6164, 6944, -1157, -1157, 6320, -1157,
3783 -1157, -1157, -1157, -1157, -1157, -1157, -1157, 13114, 13114, 13114,
3784 13114, 179, 9258, 9416, 12034, 12274, 10800, -1157, 10191, -1157,
3785 -1157, -1157, 181, 181, 181, 181, 1367, 13234, 13114, -1157,
3786 311, -1157, -1157, 1444, -1157, -1157, -1157, -1157, -1157, 601,
3787 460, 460, -1157, -1157, 242, 377, 301, -1157, 297, 13834,
3788 -1157, 353, -1157, 2423, -1157, -1157, -1157, -1157, 372, 376,
3789 -1157, 528, -1157, 11434, 11434, -1157, -1157, 9878, 13952, 14070,
3790 14188, 10036, 11554, 7412, -1157, 677, 134, -1157, -1157, 391,
3791 -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157,
3792 -1157, -1157, -1157, -1157, -1157, -1157, -1157, 350, 480, -1157,
3793 413, 512, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157,
3794 -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157,
3795 -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157,
3796 -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157,
3797 -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157,
3798 -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157,
3799 -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157,
3800 -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157,
3801 363, -1157, -1157, -1157, -1157, -1157, -1157, 381, 13114, 477,
3802 9416, 13114, 13114, 13114, -1157, 13114, 460, 460, -1157, 415,
3803 4858, -1157, 474, -1157, -1157, -1157, 427, -1157, 632, 45,
3804 51, 499, 59, 458, -1157, -1157, 11674, -1157, 11554, -1157,
3805 -1157, 11175, 13354, 872, -1157, 491, -1157, 9574, -1157, -1157,
3806 -1157, -1157, -1157, 538, 242, -1157, 646, -1157, 553, 681,
3807 5978, 5978, 686, -1157, 9258, 613, 311, -1157, 1444, 36,
3808 662, -1157, -1157, 621, 548, 811, -1157, 474, 651, 811,
3809 -1157, 36, 767, 1367, 14306, 669, 669, 674, -1157, 652,
3810 694, 703, 715, -1157, -1157, 889, -1157, -1157, 1023, 1113,
3811 744, -1157, 678, 678, 678, 678, 801, -1157, -1157, -1157,
3812 -1157, -1157, -1157, -1157, 5880, 761, 11434, 11434, 11434, 11434,
3813 -1157, 13354, 13354, 1652, 782, 787, -1157, 1652, -1157, 791,
3814 -1157, -1157, -1157, -1157, 826, -1157, -1157, -1157, -1157, -1157,
3815 -1157, -1157, 9258, 10918, 793, -1157, -1157, 13114, 13114, 13114,
3816 13114, 13114, -1157, -1157, 13114, 13114, 13114, 13114, 13114, 13114,
3817 13114, 13114, -1157, 13114, -1157, -1157, 13114, 13114, 13114, 13114,
3818 13114, 13114, 13114, 13114, 13114, 13114, -1157, -1157, 4752, 11554,
3819 5125, 538, 8194, -1157, 601, -1157, 119, 119, 11434, 9106,
3820 9106, -1157, 311, 796, 897, -1157, -1157, 721, 937, 102,
3821 110, 122, 710, 965, 11434, 365, -1157, 840, 737, -1157,
3822 -1157, -1157, -1157, 125, 397, 558, 581, 630, 735, 753,
3823 755, 771, -1157, -1157, -1157, -1157, -1157, 835, -1157, -1157,
3824 11036, -1157, -1157, -1157, 14687, -1157, -1157, -1157, -1157, -1157,
3825 -1157, 359, -1157, -1157, -1157, 798, 846, 880, -1157, 13114,
3826 11794, -1157, -1157, 14785, 11554, 14883, -1157, -1157, 12154, -1157,
3827 13114, 36, -1157, 851, 36, 867, -1157, -1157, 865, 167,
3828 -1157, -1157, -1157, -1157, -1157, 10499, -1157, -1157, 13114, 874,
3829 14981, 14883, -1157, 57, 36, -1157, -1157, 5335, 878, 877,
3830 -1157, 12034, -1157, -1157, 12274, -1157, -1157, -1157, 491, 740,
3831 -1157, 888, -1157, -1157, 14306, 15079, 11554, 15177, -1157, -1157,
3832 -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157,
3833 1140, 246, 1230, 315, 13114, -1157, -1157, 9726, -1157, -1157,
3834 -1157, -1157, -1157, 11314, -1157, -1157, -1157, -1157, -1157, -1157,
3835 -1157, -1157, -1157, -1157, 1145, -1157, -1157, -1157, -1157, -1157,
3836 890, -1157, -1157, 893, -1157, -1157, -1157, 895, 36, -1157,
3837 -1157, -1157, 918, -1157, 898, 13114, 112, -1157, -1157, 1003,
3838 902, 1008, -1157, 13474, 8194, 311, 13474, 8194, -1157, 909,
3839 -1157, -1157, -1157, 133, 133, 12394, 36, 14306, 913, -1157,
3840 12514, -1157, 681, 2991, 2991, 2991, 2991, 3190, 2205, 2991,
3841 2991, 5978, 5978, 966, 966, -1157, 3908, 1716, 1716, 1646,
3842 53, 53, 681, 681, 681, 1703, 1703, 7568, 6476, 7880,
3843 6632, 538, -1157, 36, 916, 775, -1157, 805, -1157, 7100,
3844 -1157, -1157, 133, -1157, 8346, 1059, 8802, 206, 133, 133,
3845 1058, 1057, 142, 15275, 11554, 15373, -1157, -1157, -1157, 740,
3846 -1157, -1157, -1157, -1157, 15471, 11554, 14687, 8194, 13354, -1157,
3847 -1157, -1157, 36, -1157, -1157, -1157, 4334, 13594, 13594, 10499,
3848 -1157, 13114, 13714, 13714, 13114, -1157, 474, -1157, -1157, 458,
3849 6008, 7256, 36, 464, 473, 13114, 13114, -1157, -1157, 11914,
3850 -1157, 12154, -1157, -1157, -1157, 13354, 4858, -1157, 50, 538,
3851 538, 13594, -1157, 364, -1157, -1157, 811, 14306, 888, 554,
3852 322, 36, 72, 405, -1157, -1157, 1012, -1157, 420, -1157,
3853 181, -1157, -1157, 420, 181, -1157, 681, 952, -1157, 1145,
3854 1348, -1157, 940, 36, 958, -1157, 335, -1157, -1157, 794,
3855 -1157, 1652, -1157, -1157, 981, 13114, 1652, -1157, -1157, -1157,
3856 -1157, -1157, 1661, -1157, -1157, 565, 1073, -1157, 4858, 1075,
3857 133, -1157, 1073, 1075, 133, -1157, -1157, 971, -1157, -1157,
3858 -1157, -1157, -1157, 13114, -1157, -1157, -1157, 970, 972, 1085,
3859 -1157, -1157, 888, 14306, 1074, -1157, -1157, 1089, 1000, 4329,
3860 -1157, -1157, -1157, 747, 476, -1157, -1157, 1005, -1157, -1157,
3861 -1157, -1157, 826, 980, 824, 11794, -1157, -1157, -1157, -1157,
3862 826, -1157, 1141, -1157, 954, -1157, 1133, -1157, -1157, -1157,
3863 -1157, -1157, -1157, 12634, 133, -1157, 1058, 133, 90, 184,
3864 36, 162, 200, 11434, 311, 11434, 8194, 1179, 322, -1157,
3865 36, 133, 167, 10653, -1157, 134, 377, -1157, 4040, -1157,
3866 -1157, -1157, -1157, 13114, -1157, 565, -1157, -1157, -1157, 502,
3867 -1157, -1157, 36, 998, 167, -1157, -1157, -1157, -1157, 639,
3868 -1157, -1157, -1157, -1157, -1157, 678, -1157, 678, 678, 678,
3869 -1157, 36, -1157, 1145, -1157, 1315, -1157, -1157, 1103, 890,
3870 -1157, -1157, 1001, 1009, -1157, -1157, 1010, -1157, 1013, -1157,
3871 1001, 13474, -1157, -1157, -1157, -1157, -1157, -1157, -1157, 1015,
3872 12754, -1157, 888, 543, -1157, -1157, -1157, 15569, 11554, 15667,
3873 -1157, -1157, 13114, 13594, 13594, 1011, -1157, -1157, -1157, 13594,
3874 13594, -1157, -1157, 12874, 1133, -1157, -1157, -1157, 9106, 11434,
3875 133, -1157, -1157, 133, -1157, 13114, -1157, 199, -1157, -1157,
3876 133, -1157, 203, 206, 8194, 311, 133, -1157, -1157, -1157,
3877 -1157, -1157, -1157, 13714, 13114, 13114, -1157, 13114, 13114, -1157,
3878 12154, -1157, 1543, 5576, -1157, -1157, 1025, 1028, -1157, 1661,
3879 -1157, 1661, -1157, 1652, -1157, 1661, -1157, -1157, 1073, 1075,
3880 13114, 13114, -1157, -1157, 13114, 1030, 11314, 11314, 13594, 13114,
3881 7724, 8036, 36, 549, 618, 4610, 4610, 4858, -1157, -1157,
3882 -1157, -1157, -1157, 13594, -1157, -1157, -1157, -1157, 970, -1157,
3883 1066, -1157, 1183, -1157, -1157, 119, -1157, -1157, -1157, 12994,
3884 8498, -1157, -1157, -1157, 133, -1157, -1157, 13114, 1652, -1157,
3885 -1157, 100, 1315, 1315, 1001, 1001, 1049, 1001, 4858, 4858,
3886 1068, 1068, 1015, -1157, -1157, 4858, 624, -1157, -1157, -1157,
3887 4762, 4762, 498, -1157, 3476, 635, 1159, -1157, 1333, -1157,
3888 -1157, 33, -1157, 1078, -1157, -1157, -1157, 1064, -1157, 1067,
3889 -1157, 14615, -1157, -1157, -1157, -1157, -1157, 885, -1157, -1157,
3890 -1157, 279, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157,
3891 -1157, 114, -1157, -1157, -1157, 14424, 119, -1157, -1157, 9106,
3892 -1157, -1157, 8954, 8346, 13114, -1157, 352, 4610, 9106, -1157,
3893 36, 91, -1157, -1157, -1157, 1028, -1157, -1157, 1661, -1157,
3894 -1157, 1323, 9726, -1157, -1157, 8194, -1157, -1157, -1157, -1157,
3895 14615, 55, 36, 5051, -1157, 36, 1070, -1157, 1060, -1157,
3896 -1157, -1157, 1072, -1157, 11434, -1157, 1169, 5051, 14615, 14615,
3897 105, 1125, 4762, 4762, 498, 358, 17, 4610, 4610, -1157,
3898 1174, -1157, 944, 139, 183, 230, 8194, 311, -1157, 954,
3899 -1157, -1157, -1157, -1157, 119, 943, 133, 1071, 1083, -1157,
3900 9726, -1157, 1001, 890, -1157, 1088, -1157, -1157, -1157, 1094,
3901 -1157, 36, 918, 1098, 14542, 1100, -1157, -1157, -1157, 347,
3902 -1157, 1125, 1108, 1109, -1157, -1157, -1157, -1157, -1157, 36,
3903 -1157, -1157, 1110, -1157, 1112, -1157, -1157, -1157, -1157, -1157,
3904 -1157, -1157, -1157, -1157, -1157, -1157, 36, 36, 36, 36,
3905 36, 36, 240, 15765, 11554, 15863, 1141, -1157, 1183, -1157,
3906 -1157, 11434, 11434, -1157, 1457, -1157, 8194, 1081, -1157, -1157,
3907 794, -1157, 1323, -1157, 1105, 14542, 1323, -1157, -1157, 1202,
3908 961, 1763, -1157, -1157, 14615, -1157, 105, -1157, 14615, 5051,
3909 500, -1157, -1157, -1157, -1157, -1157, -1157, 250, 258, 36,
3910 273, 307, -1157, -1157, 8650, -1157, -1157, -1157, 841, -1157,
3911 -1157, 133, -1157, -1157, 890, -1157, -1157, 1114, 1115, -1157,
3912 961, 1116, 1118, -1157, 15961, 1114, 1119, 36, 1119, -1157,
3913 -1157, 393, 196, 1457, -1157, -1157, -1157, 1763, -1157, 1763,
3914 -1157, 1323, -1157, 1763, -1157, 1124, 1126, -1157, 14615, -1157,
3915 -1157, -1157, -1157, -1157, 1114, 1114, 1132, 1114, -1157, -1157,
3916 1763, -1157, -1157, 1114, -1157
3922static const yytype_int16 yydefact[] =
3924 2, 0, 0, 47, 405, 406, 407, 0, 398, 399,
3925 400, 403, 26, 26, 26, 392, 393, 394, 395, 417,
3926 418, 322, 696, 695, 697, 698, 64, 0, 64, 0,
3927 812, 700, 699, 701, 97, 99, 690, 689, 98, 691,
3928 685, 686, 687, 688, 634, 706, 707, 0, 0, 0,
3929 0, 0, 0, 0, 812, 812, 126, 489, 660, 660,
3930 662, 664, 0, 0, 0, 0, 0, 0, 0, 6,
3931 3, 8, 26, 10, 43, 49, 40, 58, 61, 46,
3932 715, 715, 70, 91, 322, 90, 0, 112, 0, 116,
3933 128, 0, 237, 79, 246, 253, 282, 283, 267, 284,
3934 397, 0, 350, 0, 0, 87, 87, 0, 0, 0,
3935 0, 0, 359, 322, 369, 94, 367, 339, 340, 633,
3936 635, 341, 342, 643, 343, 649, 345, 653, 344, 655,
3937 346, 632, 677, 678, 631, 683, 694, 702, 703, 347,
3938 0, 348, 7, 1, 205, 216, 206, 229, 202, 222,
3939 212, 211, 232, 233, 227, 210, 209, 204, 230, 234,
3940 235, 214, 203, 217, 221, 223, 215, 208, 224, 231,
3941 226, 225, 218, 228, 213, 201, 220, 219, 200, 207,
3942 198, 199, 195, 196, 197, 155, 157, 156, 190, 191,
3943 186, 168, 169, 170, 177, 174, 176, 171, 172, 192,
3944 193, 178, 179, 183, 187, 173, 175, 165, 166, 167,
3945 180, 181, 182, 184, 185, 188, 189, 194, 160, 162,
3946 33, 158, 159, 161, 401, 402, 404, 0, 786, 0,
3947 0, 333, 789, 325, 660, 0, 715, 715, 316, 0,
3948 298, 299, 328, 317, 110, 321, 812, 329, 0, 702,
3949 703, 0, 348, 812, 782, 111, 812, 507, 0, 107,
3950 65, 64, 0, 0, 28, 812, 12, 0, 11, 27,
3951 295, 392, 393, 508, 0, 261, 0, 359, 362, 262,
3952 251, 252, 356, 24, 0, 0, 3, 21, 23, 64,
3953 114, 20, 352, 0, 64, 64, 300, 0, 0, 64,
3954 780, 64, 0, 0, 0, 715, 715, 124, 396, 0,
3955 132, 133, 140, 486, 680, 0, 679, 681, 0, 0,
3956 0, 640, 644, 656, 650, 658, 684, 74, 273, 274,
3957 809, 808, 5, 810, 0, 0, 0, 0, 0, 0,
3958 812, 0, 0, 746, 0, 714, 388, 746, 712, 0,
3959 390, 408, 512, 502, 100, 514, 366, 409, 514, 498,
3960 812, 130, 0, 122, 117, 812, 77, 0, 0, 0,
3961 0, 0, 291, 292, 0, 0, 0, 0, 249, 250,
3962 0, 0, 75, 0, 289, 290, 0, 0, 0, 0,
3963 0, 0, 0, 0, 0, 0, 799, 800, 802, 812,
3964 801, 0, 0, 86, 84, 85, 0, 0, 0, 0,
3965 0, 376, 3, 4, 0, 429, 428, 0, 0, 702,
3966 703, 348, 150, 151, 0, 0, 153, 812, 0, 702,
3967 703, 348, 386, 225, 218, 228, 213, 195, 196, 197,
3968 155, 156, 778, 81, 80, 777, 776, 0, 775, 109,
3969 64, 108, 802, 801, 0, 368, 636, 812, 812, 163,
3970 785, 356, 332, 788, 324, 0, 0, 0, 812, 0,
3971 0, 318, 327, 802, 812, 801, 812, 812, 0, 319,
3972 747, 64, 312, 812, 64, 812, 311, 323, 0, 64,
3973 365, 73, 30, 32, 31, 0, 812, 296, 0, 0,
3974 802, 801, 812, 0, 64, 354, 14, 0, 113, 0,
3975 357, 807, 806, 301, 807, 303, 358, 781, 0, 139,
3976 684, 127, 119, 714, 0, 802, 812, 801, 487, 666,
3977 682, 669, 667, 661, 637, 638, 663, 639, 665, 641,
3978 0, 0, 0, 0, 0, 811, 9, 0, 34, 35,
3979 36, 37, 297, 0, 71, 72, 753, 750, 749, 748,
3980 751, 759, 760, 747, 0, 766, 761, 770, 769, 765,
3981 812, 762, 719, 812, 725, 745, 728, 731, 64, 726,
3982 752, 754, 755, 757, 731, 718, 764, 442, 441, 768,
3983 731, 772, 724, 0, 0, 0, 0, 0, 486, 0,
3984 512, 101, 486, 0, 0, 0, 64, 0, 118, 131,
3985 0, 525, 259, 266, 268, 269, 270, 277, 278, 271,
3986 272, 247, 248, 275, 276, 525, 64, 263, 264, 265,
3987 254, 255, 256, 257, 258, 293, 294, 790, 792, 791,
3988 793, 322, 505, 64, 812, 790, 792, 791, 793, 322,
3989 506, 812, 0, 420, 0, 419, 0, 0, 0, 0,
3990 0, 374, 356, 802, 812, 801, 379, 384, 150, 151,
3991 152, 708, 382, 710, 802, 812, 801, 0, 0, 797,
3992 798, 82, 64, 361, 790, 791, 322, 0, 0, 0,
3993 812, 0, 0, 0, 0, 784, 330, 326, 331, 812,
3994 790, 791, 64, 790, 791, 0, 0, 783, 306, 313,
3995 308, 315, 803, 364, 29, 0, 279, 13, 355, 0,
3996 812, 0, 25, 115, 22, 353, 64, 0, 125, 794,
3997 138, 64, 790, 791, 488, 670, 0, 642, 0, 646,
3998 0, 652, 648, 0, 0, 654, 260, 0, 38, 0,
3999 440, 432, 434, 64, 437, 430, 0, 723, 774, 0,
4000 722, 0, 741, 713, 0, 0, 0, 738, 717, 591,
4001 763, 767, 0, 743, 771, 64, 59, 62, 286, 280,
4002 0, 716, 60, 281, 0, 487, 510, 0, 487, 415,
4003 416, 511, 497, 333, 92, 93, 41, 335, 0, 45,
4004 334, 129, 123, 0, 0, 69, 48, 67, 0, 304,
4005 328, 236, 42, 0, 348, 523, 523, 0, 812, 812,
4006 512, 504, 104, 0, 509, 313, 812, 812, 310, 503,
4007 102, 309, 812, 351, 812, 421, 812, 423, 88, 422,
4008 372, 373, 412, 0, 0, 525, 0, 0, 794, 355,
4009 64, 790, 791, 0, 0, 0, 0, 150, 151, 154,
4010 64, 0, 64, 0, 360, 499, 95, 50, 304, 238,
4011 57, 245, 164, 0, 787, 64, 320, 812, 812, 509,
4012 812, 812, 64, 812, 64, 56, 244, 302, 120, 509,
4013 26, 671, 668, 675, 676, 645, 647, 657, 651, 659,
4014 39, 64, 439, 0, 756, 0, 773, 720, 764, 812,
4015 730, 729, 731, 731, 444, 727, 731, 758, 731, 755,
4016 731, 0, 812, 812, 389, 391, 488, 96, 488, 338,
4017 0, 812, 121, 356, 812, 812, 812, 802, 812, 801,
4018 524, 524, 0, 0, 0, 0, 105, 804, 812, 0,
4019 0, 103, 410, 812, 18, 623, 414, 413, 0, 0,
4020 0, 424, 426, 0, 89, 0, 516, 0, 377, 523,
4021 0, 378, 509, 0, 0, 0, 0, 509, 387, 779,
4022 83, 500, 501, 0, 0, 0, 812, 0, 0, 307,
4023 314, 363, 746, 0, 431, 433, 435, 438, 721, 0,
4024 742, 0, 739, 0, 734, 0, 736, 744, 66, 288,
4025 0, 0, 26, 26, 333, 336, 0, 0, 0, 0,
4026 790, 791, 64, 790, 791, 0, 0, 285, 54, 242,
4027 55, 243, 106, 0, 52, 240, 53, 241, 624, 625,
4028 812, 626, 812, 15, 427, 0, 370, 371, 517, 0,
4029 0, 524, 375, 380, 0, 709, 383, 0, 746, 490,
4030 493, 0, 0, 0, 731, 731, 731, 731, 63, 287,
4031 812, 812, 337, 44, 68, 305, 509, 615, 621, 587,
4032 0, 0, 0, 524, 64, 524, 575, 660, 0, 614,
4033 78, 533, 539, 541, 543, 537, 536, 571, 538, 580,
4034 583, 586, 592, 593, 582, 546, 601, 594, 547, 602,
4035 603, 604, 605, 606, 607, 608, 609, 611, 610, 612,
4036 613, 590, 76, 51, 239, 0, 0, 628, 411, 0,
4037 19, 630, 0, 0, 0, 518, 812, 0, 0, 385,
4038 64, 0, 674, 673, 672, 436, 740, 735, 0, 732,
4039 737, 478, 0, 476, 475, 0, 599, 600, 151, 619,
4040 0, 563, 64, 564, 568, 64, 0, 558, 0, 812,
4041 561, 574, 0, 616, 0, 617, 0, 534, 0, 0,
4042 581, 585, 597, 598, 0, 524, 524, 0, 0, 589,
4043 0, 627, 0, 702, 703, 348, 0, 3, 16, 812,
4044 519, 521, 522, 520, 0, 530, 0, 480, 0, 495,
4045 0, 491, 731, 812, 447, 812, 453, 474, 456, 459,
4046 479, 64, 755, 459, 446, 459, 452, 513, 515, 64,
4047 556, 578, 566, 565, 557, 569, 805, 559, 588, 64,
4048 540, 535, 571, 542, 572, 576, 660, 584, 579, 595,
4049 596, 620, 545, 555, 544, 551, 64, 64, 64, 64,
4050 64, 64, 356, 802, 812, 801, 812, 629, 812, 425,
4051 526, 0, 0, 381, 0, 492, 0, 0, 733, 451,
4052 0, 450, 0, 470, 0, 0, 454, 465, 467, 0,
4053 445, 0, 472, 562, 0, 570, 0, 618, 0, 0,
4054 0, 548, 549, 550, 552, 553, 554, 794, 355, 64,
4055 790, 791, 622, 17, 0, 531, 532, 484, 64, 482,
4056 485, 0, 494, 448, 812, 458, 457, 459, 459, 477,
4057 455, 459, 459, 356, 802, 459, 567, 64, 572, 573,
4058 577, 509, 812, 0, 481, 496, 449, 0, 471, 0,
4059 468, 0, 462, 0, 464, 794, 355, 473, 0, 560,
4060 528, 529, 527, 483, 459, 459, 459, 459, 469, 463,
4061 0, 460, 466, 459, 461
4065static const yytype_int16 yypgoto[] =
4067 -1157, -94, 1022, -1157, -1157, -1157, 957, -1157, 792, -12,
4068 -1157, -1157, -537, -1157, 165, 797, -1157, 5, -1157, -1157,
4069 15, -1157, -1157, -429, -1157, -1157, -546, 152, -564, -100,
4070 -1157, -1157, 436, 2755, -1157, 3121, -1157, 34, -1157, -1157,
4071 1194, -36, -1157, 696, -1157, -245, 1467, -10, 1195, -162,
4072 30, -425, -52, -1157, 0, 3606, -396, 1197, -48, 9,
4073 -1157, -1157, -5, -1157, -1157, 4536, -1157, -1157, -1157, -1157,
4074 -557, 1210, -1157, 280, 813, 67, -1157, 56, -1157, 551,
4075 21, 625, -373, -1157, 77, -1157, 41, -400, -236, 18,
4076 -394, -1157, -566, -35, -1157, -1157, -1157, -1157, -1157, -1157,
4077 -1157, -1157, -1157, -1157, -1157, -1157, 984, -1157, -1157, -1157,
4078 -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157, -1157,
4079 -1157, -1157, 361, -1157, -256, 1929, 2367, -372, 343, 120,
4080 -798, -1157, -832, -807, 575, 424, -406, -1157, 107, 54,
4081 -1157, -1157, 180, -1157, -1156, 47, 87, -1157, 264, -1157,
4082 -1157, 118, -1157, 2, 286, 29, -66, -1157, -1157, 260,
4083 -1157, -1157, -1157, 482, -1157, -1157, -104, -1157, -515, -1157,
4084 985, -1157, -762, -1157, -735, -829, -529, -1157, 11, -1157,
4085 -1157, -897, -183, -1157, -1157, -1157, -1157, 164, -1157, -471,
4086 -1157, -922, -630, -1035, -388, -947, -805, -1157, 174, -1157,
4087 -1157, -857, 175, -1157, -1157, -652, 182, -1157, -1157, -1157,
4088 93, -1157, -1157, 92, 449, 589, -1157, 1243, 868, 906,
4089 26, -1157, 1198, -1157, 822, -1157, 1290, -1157, -1157, 1610,
4090 -1157, 1641, -1157, -1157, -58, -1157, -1157, -206, -1157, -1157,
4091 -1157, -1157, -1157, -1157, 16, -1157, -1157, -1157, -1157, -7,
4092 -49, 3405, -1, 1254, 3833, 2743, -1157, -1157, 89, 714,
4093 38, -1157, 609, -1157, -1157, -298, -703, 608, -435, -333,
4094 -229, -1141, -443, -323, -738, 215, -409, -680, -1157, -729,
4095 -1157, -589, -1157, -455, -541, -1157, -1157, -1157, -1157, -1157,
4096 32, -398, -336, -1157, -1157, -90, 1261, 597, -528, 52,
4101static const yytype_int16 yydefgoto[] =
4103 0, 332, 69, 1, 2, 70, 71, 267, 268, 651,
4104 1132, 1268, 652, 1042, 286, 287, 503, 224, 72, 495,
4105 288, 74, 75, 76, 77, 78, 776, 488, 806, 79,
4106 625, 611, 443, 236, 863, 237, 405, 406, 408, 964,
4107 409, 82, 795, 807, 83, 601, 274, 85, 86, 289,
4108 87, 521, 88, 89, 90, 239, 426, 427, 218, 219,
4109 220, 689, 640, 222, 92, 93, 94, 95, 96, 97,
4110 779, 394, 98, 552, 498, 553, 241, 242, 293, 811,
4111 828, 829, 481, 243, 482, 258, 259, 245, 471, 644,
4112 247, 799, 800, 99, 402, 509, 846, 660, 853, 1138,
4113 856, 854, 677, 594, 597, 100, 276, 102, 103, 104,
4114 105, 106, 107, 108, 109, 110, 111, 355, 358, 953,
4115 1129, 843, 958, 959, 791, 277, 278, 654, 838, 960,
4116 961, 418, 751, 752, 753, 754, 570, 764, 765, 1214,
4117 1215, 1216, 1325, 1287, 1218, 1219, 1283, 1220, 1152, 1153,
4118 1221, 1208, 1318, 1319, 528, 734, 890, 313, 1141, 114,
4119 1059, 1211, 1276, 359, 115, 116, 356, 598, 599, 602,
4120 603, 967, 844, 1203, 940, 1025, 815, 1314, 847, 1362,
4121 1204, 1090, 1231, 1092, 1093, 1187, 1188, 1094, 1296, 1162,
4122 1163, 1164, 1096, 1097, 1244, 1166, 1098, 1099, 1100, 1101,
4123 1102, 571, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
4124 954, 1040, 1126, 1130, 117, 118, 119, 120, 121, 122,
4125 322, 123, 124, 540, 738, 125, 126, 542, 127, 128,
4126 129, 130, 541, 543, 315, 319, 320, 533, 736, 735,
4127 891, 993, 1144, 892, 131, 132, 316, 133, 134, 135,
4128 136, 249, 250, 139, 251, 252, 855, 672, 344, 345,
4129 346, 347, 572, 573, 574, 910, 576, 577, 762, 578,
4130 579, 580, 581, 919, 583, 584, 585, 586, 587, 588,
4131 589, 590, 591, 592, 757, 446, 447, 448, 678, 298,
4132 485, 254, 719, 642, 681, 676, 401, 490, 824, 1170,
4139static const yytype_int16 yytable[] =
4141 138, 318, 221, 404, 404, 238, 238, 404, 334, 317,
4142 314, 400, 455, 411, 595, 142, 73, 479, 225, 226,
4143 582, 308, 221, 223, 582, 453, 643, 484, 917, 670,
4144 909, 327, 760, 246, 246, 656, 264, 364, 963, 783,
4145 285, 292, 257, 223, 812, 575, 333, 253, 253, 575,
4146 782, 138, 138, 221, 308, 311, 307, 780, 911, 326,
4147 784, 515, 641, 444, 649, 517, 291, 291, 296, 300,
4148 697, 995, 294, 308, 308, 308, 698, 335, 697, 908,
4149 707, 941, 290, 333, 970, 787, 295, 299, 311, 323,
4150 324, 325, 244, 255, 348, 348, 816, -135, 997, 728,
4151 1142, 702, 238, 1095, 1095, 353, 221, 420, 430, 430,
4152 430, 297, 1026, 536, 538, -146, 707, 698, 686, 350,
4153 1209, 755, 504, 867, 870, 354, 1326, -141, 1232, 1122,
4154 246, 367, 653, 1320, 1176, -142, 783, 641, 407, 649,
4155 861, 412, 1242, 789, 253, -704, 769, -149, 769, 767,
4156 878, -705, -141, 731, 451, 773, 1176, 885, 475, 477,
4157 351, 489, 491, 1079, 770, 720, 1189, -148, 1103, 1103,
4158 349, 260, 913, 143, 879, -64, 465, 918, 262, -141,
4159 265, 805, 802, 562, -147, -142, 501, -144, 1177, 449,
4160 260, 720, 506, -149, -696, 1326, -142, 391, 392, 393,
4161 606, 790, 1320, 889, 341, 342, -135, -791, 266, -147,
4162 -578, 957, 653, 566, 1210, 1095, 1233, 1246, 285, 527,
4163 1143, 845, 1137, -696, 507, -145, -135, -135, -143, 138,
4164 -135, 995, 1245, 837, 1051, 282, 404, 404, 404, 404,
4165 1205, 554, 555, -149, 291, -137, 238, -790, 238, 479,
4166 348, 348, 522, -148, 1160, 1145, 1169, -132, 805, 805,
4167 472, 917, 333, -146, 1339, -133, 138, 472, 351, 308,
4168 486, -147, 285, 330, 483, 350, 246, -140, 859, 331,
4169 1103, 142, 73, 138, 460, 352, -144, 462, 463, 464,
4170 253, 850, 805, -141, 257, 353, 520, -139, 291, -141,
4171 911, 906, 860, 311, 906, 945, 755, 902, 404, 697,
4172 269, 697, 740, 707, 290, 698, 969, -135, 661, 976,
4173 -145, 260, 972, 1103, 404, 466, 467, 665, 308, 720,
4174 1103, 1103, 977, 138, 739, 487, 739, -142, 1201, -138,
4175 720, -791, 321, -142, 350, 1121, 1121, 1245, 792, 73,
4176 285, 1245, 1340, 330, 1049, -136, 1252, 1254, -134, 331,
4177 330, 138, 311, 608, 1009, 741, 331, 957, 998, 842,
4178 548, 549, 550, 551, 1202, 1008, 291, 1184, 932, 1028,
4179 1030, 744, 1258, 1261, -149, 1034, 1036, 1039, 333, 238,
4180 -149, -355, 290, 352, -148, 648, 833, 658, 659, 256,
4181 -148, 138, 840, 841, -146, 357, -143, -790, 138, 138,
4182 -146, 1340, -147, 486, 1066, -791, 291, 668, -147, -355,
4183 -355, 669, 650, 291, 291, 697, 1009, -144, 1156, 1157,
4184 -136, 698, 1185, -144, 745, 360, 1186, 1054, 582, 1103,
4185 238, 673, 657, 582, 567, -396, 512, 512, 1176, 648,
4186 -704, 512, 361, 518, 1165, 372, 373, 1121, 667, 690,
4187 755, -145, 755, 876, 238, 330, -695, -145, 246, 1123,
4188 648, 331, 522, -396, -396, -355, 568, 1000, 1002, -791,
4189 882, 1004, 253, 1006, -141, 1007, 529, 365, 486, 308,
4190 221, 1337, 887, -148, 1076, -695, 648, 472, -113, 472,
4191 1121, 260, 699, 59, 714, -132, 138, 1121, 1121, 384,
4192 385, 223, 260, 457, 805, 805, 238, -64, 459, -129,
4193 805, 805, 648, 311, 924, 695, 696, 682, 925, -396,
4194 1249, 1250, 896, 461, 297, 747, 698, 896, 261, -136,
4195 486, 531, 532, 726, 1360, 497, 138, -143, 917, 468,
4196 668, 1324, 138, -143, 1158, 522, 1167, 1257, 1260, -136,
4197 -136, 291, 1225, -136, 880, 1022, 529, 696, 748, 794,
4198 297, 781, 308, 881, 794, 469, 458, 946, 862, -137,
4199 -705, 321, 470, 777, 758, 951, 777, 758, 968, 805,
4200 697, 971, 707, 138, -812, 1050, 138, 396, -144, 476,
4201 908, 641, 986, 649, 805, 978, 311, -145, 291, 917,
4202 -149, 291, 458, 478, -142, 884, 1121, 343, 1228, 755,
4203 755, 531, 532, 798, 1238, 397, 398, -697, 798, 1146,
4204 1147, 1149, 1150, 839, 1230, -133, -143, 1234, 341, 342,
4205 605, 768, 834, 502, 836, 610, -149, 876, 496, 826,
4206 -698, 794, 794, 138, 238, 138, -697, 1253, 472, 1060,
4207 648, 797, 821, 831, -134, 238, 810, -140, 291, 582,
4208 291, 648, 1279, 1133, 1281, 888, 138, -148, 486, -698,
4209 582, 399, 822, -144, 221, 794, 1159, 893, -137, 486,
4210 830, 291, 308, 1328, 575, 256, 1226, 1332, 872, -700,
4211 831, 396, 260, 511, 1046, 223, 1241, 1047, -137, -137,
4212 450, -790, -137, 472, 1052, 396, 1256, 1259, 827, 260,
4213 1056, 396, 261, 939, 948, 1140, 311, 866, -700, 397,
4214 473, 1304, 1305, 1306, 831, 582, -97, 687, 688, 1321,
4215 821, 883, 1224, 397, 500, 1213, 396, 874, 694, 397,
4216 525, 522, -145, 404, 1196, 404, 705, 706, -143, 367,
4217 575, 981, 1366, -702, 895, 696, 897, 297, 308, 898,
4218 899, 505, -703, -134, 397, 452, 497, 1278, 817, -692,
4219 510, 1341, 721, 1346, -348, 474, 502, -64, 1251, 260,
4220 396, -702, -702, -134, -134, 823, -112, -134, 1139, 474,
4221 -703, -703, 311, 516, -699, 526, 396, -692, -692, -356,
4222 529, 537, -348, -348, 926, 444, 396, 928, 397, 663,
4223 -148, 915, -701, 519, -692, 906, 343, 1226, 1222, 524,
4224 974, 1226, 1270, -699, 397, 674, 1226, -356, -356, 539,
4225 -693, -139, 1091, 1091, 397, 937, 955, -702, 962, 929,
4226 962, -701, 561, -692, 823, 138, -703, 883, 221, 404,
4227 1012, -97, 1013, -692, 529, 531, 532, -97, -348, -693,
4228 291, 1224, 562, 1224, 664, 826, 1213, 1224, 512, 544,
4229 1213, 696, 1224, 823, 785, 1213, 508, 973, 788, 975,
4230 675, 1309, 1226, -356, 1226, 992, 1226, 472, 1226, 966,
4231 938, 1161, 566, 567, 679, 827, 1336, 794, 794, -144,
4232 1338, 777, 547, 794, 794, 1226, 593, 534, 1181, 531,
4233 532, -711, 691, 758, 948, 596, 492, 921, 238, 720,
4234 -135, 832, 600, 680, 648, 568, 493, 494, 1224, -145,
4235 1224, 1213, 1224, 1213, 1224, 1213, 1044, 1213, 609, 839,
4236 1273, 1055, 486, 662, 1091, 529, 545, 138, -143, 1222,
4237 -136, 1224, 666, 1222, 1213, 260, 514, 1041, 956, 957,
4238 873, 798, 291, 138, 1182, 1183, 912, 1229, 671, -134,
4239 692, 1061, 794, 1271, 1272, 101, 1015, 920, 291, 1010,
4240 1011, -98, 138, 1045, 1161, 260, 1343, 794, 1016, 248,
4241 248, 1017, 823, 1019, 1161, 1161, 709, 291, 530, 1038,
4242 531, 532, 823, 396, 693, 138, 138, 1070, 1071, 523,
4243 523, 1048, 711, 712, 1120, 1120, 717, 983, 1222, 1172,
4244 396, 1073, 1074, -129, -693, 725, 101, 101, 1136, 1175,
4245 309, 397, 1263, 727, 367, 756, 297, 683, 759, 138,
4246 761, 248, -443, 766, 1127, 771, 1131, 772, 397, 1334,
4247 774, 786, -693, -693, 291, 1345, 36, 37, 803, 39,
4248 1072, 825, 835, 309, 404, 842, 45, 46, 708, 1120,
4249 1120, 710, 845, 1120, 1154, 1154, 713, 248, 248, 529,
4250 308, 248, 417, 428, 428, 903, 248, 1264, 943, 944,
4251 1120, 723, 1265, 1267, 900, 1135, 949, 950, 389, 390,
4252 391, 392, 393, 905, 675, 914, -98, 922, -693, 923,
4253 1198, 1199, -98, 927, 1194, -328, 1206, 930, 138, 931,
4254 933, 138, 138, 934, 935, 507, 1120, 138, 529, 947,
4255 1227, 942, 534, 291, 531, 532, 291, 291, 957, 952,
4256 962, 138, 291, 990, 138, 770, 999, 984, 985, 1120,
4257 987, 988, 1120, 1032, 1001, 1003, 291, 1125, 1005, 291,
4258 -332, 404, 404, 333, 823, 763, 1120, 1120, 1120, 529,
4259 1062, 1120, 1120, 1063, 1266, -330, 1120, 1120, 1300, 308,
4260 1200, 534, 1128, 531, 532, 138, 1238, 556, 1277, 557,
4261 558, 559, 560, 801, 1148, -794, 529, 1151, 1239, 138,
4262 291, 1171, 1236, 962, 101, 1018, 1064, 1178, 1065, 1179,
4263 1067, 1077, 1180, 430, 291, 1235, 1176, 758, 1033, 758,
4264 1262, 1274, 535, 1322, 531, 532, 823, 1168, 869, 871,
4265 248, 1275, 248, 1280, 1329, 248, 248, 749, -794, 1282,
4266 308, 101, 750, 1286, 238, 1291, 869, 871, 1333, 737,
4267 648, 531, 532, 1294, 1295, 1298, 1057, 1299, 101, 1347,
4268 1349, 1351, 886, 1353, 1358, 138, -794, -794, 486, 864,
4269 955, -790, 1131, -791, 430, 1089, 1089, 1370, 309, 499,
4270 291, 546, 1207, 1120, 1197, 722, 529, 1120, 1120, 980,
4271 410, 796, 1342, 415, 724, 1315, 1316, 432, 395, 715,
4272 1288, 865, 1292, 138, 823, 1043, 1053, 823, 101, 1269,
4273 248, 248, 248, 248, 901, 248, 248, 996, 291, 1285,
4274 -794, 1217, -794, 1331, 1323, 1155, -790, 823, 758, 1284,
4275 1089, 1089, 1243, 604, 1089, 1363, 101, 309, 982, 742,
4276 904, 531, 532, 1361, 1247, 1248, 962, 1120, 1240, 1312,
4277 1313, 1089, 456, 1212, 743, 445, 1223, 556, 907, 557,
4278 558, 559, 560, 1207, 916, 556, 454, 557, 558, 559,
4279 560, 561, 0, 248, 0, 1173, 101, 36, 37, 1359,
4280 39, 0, 248, 101, 101, 0, 0, 1089, 0, 0,
4281 556, 562, 557, 558, 559, 560, 0, 0, 248, 0,
4282 0, 823, 823, 823, 1348, 1350, 0, 749, 1352, 1354,
4283 1089, 0, 1357, 1089, 886, 564, 40, 41, 42, 43,
4284 565, 566, 567, 0, 248, 1174, 0, 1089, 1089, 1089,
4285 0, 0, 1089, 1089, 0, 0, 0, 1089, 1089, 1237,
4286 0, 1368, 1369, 1371, 1372, 0, 0, 0, 248, 979,
4287 1374, 823, 0, 0, 568, 0, 0, 569, 84, 0,
4288 1344, 0, 0, 0, 1112, 1112, 0, 0, 0, 989,
4289 0, 991, 84, 84, 336, 337, 338, 339, 340, 1168,
4290 0, 101, 0, 0, 1029, 1031, 0, 1327, 994, 0,
4291 1035, 1037, 0, 0, 0, 0, 1335, 0, 309, 1317,
4292 248, 557, 558, 559, 560, 0, 0, 0, 0, 84,
4293 84, 0, 0, 0, 0, 0, 0, 0, 0, 1112,
4294 1112, 101, 0, 1112, 84, 1029, 1031, 101, 1035, 1037,
4295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4296 1112, 0, 0, 0, 1089, 0, 0, 0, 1089, 1089,
4297 0, 0, 0, 0, 1364, 0, 1365, 0, 1367, 0,
4298 84, 84, 0, 0, 84, 0, 0, 248, 101, 84,
4299 248, 101, 0, 0, 1124, 1373, 1112, 0, 0, 248,
4300 0, 309, 0, 0, 813, 556, 0, 557, 558, 559,
4301 560, 561, 0, 0, 0, 0, 0, 0, 1124, 1112,
4302 0, 0, 1112, 0, 1113, 1113, 0, 0, 1089, 0,
4303 0, 562, 0, 0, 0, 0, 1112, 1112, 1112, 0,
4304 0, 1112, 1112, 0, 0, 563, 1112, 1112, 101, 0,
4305 101, 0, 0, 0, 0, 564, 0, 0, 248, 0,
4306 565, 566, 567, 0, 0, 0, 0, 0, 0, 248,
4307 0, 101, 248, 0, 0, 0, 0, 0, 0, 1113,
4308 1113, 813, 813, 1113, 0, 0, 0, 0, 0, 0,
4309 0, 0, 0, 0, 568, 0, 0, 569, 0, 0,
4310 1113, 0, 0, 0, 0, 0, 0, 84, 0, 248,
4311 1058, 0, 0, 0, 556, 813, 557, 558, 559, 560,
4312 561, 309, 0, 556, 0, 557, 558, 559, 560, 561,
4313 0, 0, 0, 84, 367, 84, 1113, 0, 84, 84,
4314 562, 0, 0, 0, 84, 0, 0, 0, 0, 562,
4315 0, 380, 381, 1112, 563, 0, 0, 1112, 1112, 1113,
4316 0, 84, 1113, 563, 564, 0, 0, 0, 0, 565,
4317 566, 567, 0, 564, 0, 0, 1113, 1113, 1113, 566,
4318 567, 1113, 1113, 0, 0, 0, 1113, 1113, 0, 0,
4319 0, 367, 0, 1255, 0, 0, 0, 309, 389, 390,
4320 391, 392, 393, 568, 367, 0, 569, 0, 380, 381,
4321 0, 84, 568, 84, 84, 84, 84, 1112, 84, 84,
4322 0, 380, 381, 0, 0, 556, 0, 557, 558, 559,
4323 560, 561, 0, 0, 0, 0, 1293, 0, 0, 84,
4324 0, 0, 0, 0, 0, 0, 1297, 248, 0, 248,
4325 101, 562, 386, 387, 388, 389, 390, 391, 392, 393,
4326 0, 0, 0, 1301, 1302, 1303, 0, 388, 389, 390,
4327 391, 392, 393, 0, 0, 564, 84, 0, 0, 84,
4328 0, 566, 567, 0, 0, 84, 84, 84, 0, 0,
4329 0, 0, 0, 1113, 0, 0, 0, 1113, 1113, 0,
4330 0, 84, 0, 1114, 1114, 0, 0, 0, 0, 0,
4331 0, 0, 0, 0, 568, 248, 0, 0, 0, 0,
4332 0, 0, 0, 0, 0, 0, 0, 84, 0, 0,
4333 0, 0, 248, 0, 0, 0, 0, 813, 813, 0,
4334 112, 1115, 1115, 813, 813, 0, 0, 0, 0, 0,
4335 0, 84, 101, 248, 112, 112, 0, 1113, 1114, 1114,
4336 0, 0, 1114, 0, 0, 0, 0, 0, 101, 0,
4337 0, 0, 0, 0, 0, 0, 0, 0, 0, 1114,
4338 0, 0, 0, 0, 84, 0, 0, 101, 0, 0,
4339 0, 112, 112, 0, 0, 0, 1115, 1115, 0, 0,
4340 1115, 0, 0, 84, 0, 0, 112, 0, 0, 0,
4341 101, 101, 813, 0, 0, 1114, 0, 1115, 0, 0,
4342 0, 0, 0, 0, 84, 0, 0, 813, 0, 0,
4343 84, 0, 0, 0, 0, 0, 0, 0, 1114, 0,
4344 0, 1114, 112, 112, 101, 0, 112, 0, 0, 0,
4345 0, 112, 0, 1115, 0, 1114, 1114, 1114, 0, 0,
4346 1114, 1114, 0, 0, 0, 1114, 1114, 0, 0, 0,
4347 84, 84, 0, 84, 84, 0, 1115, 0, 0, 1115,
4348 0, 0, 84, 0, 0, 0, 0, 84, 0, 0,
4349 0, 0, 0, 1115, 1115, 1115, 0, 0, 1115, 1115,
4350 0, 0, 0, 1115, 1115, 0, 0, 0, 0, 0,
4351 0, 0, 0, 0, 0, 0, 0, 0, 0, 1192,
4352 0, 0, 0, 101, 0, 0, 101, 101, 0, 0,
4353 0, 84, 101, 84, 0, 0, 0, 0, 0, 0,
4354 0, 84, 0, 0, 0, 0, 101, 0, 0, 101,
4355 0, 0, 84, 0, 84, 84, 0, 0, 0, 0,
4356 0, 0, 0, 0, 84, 84, 0, 0, 248, 112,
4357 0, 0, 1114, 0, 0, 0, 1114, 1114, 0, 0,
4358 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4359 101, 0, 84, 0, 0, 112, 0, 112, 84, 0,
4360 112, 112, 0, 0, 101, 0, 112, 0, 0, 0,
4361 1115, 0, 0, 0, 1115, 1115, 0, 0, 1290, 0,
4362 0, 0, 0, 112, 0, 0, 0, 0, 0, 0,
4363 0, 0, 0, 1116, 1116, 0, 1114, 0, 0, 0,
4364 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4365 0, 0, 0, 0, 0, 0, 0, 0, 248, 0,
4366 0, 0, 0, 0, 0, 248, 248, 0, 0, 0,
4367 101, 0, 0, 112, 1115, 112, 112, 112, 112, 1330,
4368 112, 112, 0, 0, 0, 0, 0, 0, 1116, 1116,
4369 0, 0, 1116, 367, 368, 369, 370, 371, 372, 373,
4370 374, 112, 376, 377, 0, 0, 0, 0, 101, 1116,
4371 380, 381, 0, 0, 0, 0, 0, 0, 0, 0,
4372 0, 0, 0, 0, 0, 1117, 1117, 0, 0, 0,
4373 84, 0, 84, 84, 0, 0, 0, 0, 112, 0,
4374 0, 112, 0, 0, 0, 1116, 0, 112, 112, 112,
4375 0, 0, 384, 385, 386, 387, 388, 389, 390, 391,
4376 392, 393, 0, 112, 0, 0, 0, 0, 1116, 0,
4377 0, 1116, 0, 0, 0, 0, 0, 0, 113, 0,
4378 1117, 1117, 0, 0, 1117, 1116, 1116, 1116, 0, 112,
4379 1116, 1116, 113, 113, 0, 1116, 1116, 0, 84, 0,
4380 0, 1117, 0, 0, 0, 0, 0, 0, 0, 0,
4381 0, 0, 0, 112, 0, 84, 0, 0, 0, 0,
4382 84, 84, 0, 0, 0, 0, 84, 84, 0, 113,
4383 113, 0, 0, 0, 0, 84, 84, 1117, 0, 0,
4384 0, 0, 0, 0, 113, 0, 112, 0, 0, 0,
4385 0, 84, 0, 0, 0, 0, 0, 0, 366, 0,
4386 1117, 0, 0, 1117, 0, 112, 0, 0, 0, 0,
4387 84, 0, 0, 0, 0, 0, 0, 1117, 1117, 1117,
4388 113, 113, 1117, 1117, 113, 0, 112, 1117, 1117, 113,
4389 0, 0, 112, 84, 84, 84, 0, 0, 0, 0,
4390 0, 0, 1116, 0, 0, 0, 1116, 1116, 0, 0,
4391 84, 367, 368, 369, 370, 371, 372, 373, 374, 375,
4392 376, 377, 378, 379, 0, 0, 0, 84, 380, 381,
4393 0, 0, 112, 112, 382, 112, 112, 0, 0, 0,
4394 0, 0, 0, 0, 112, 0, 0, 0, 0, 112,
4395 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4396 0, 0, 0, 0, 0, 0, 1116, 0, 383, 0,
4397 384, 385, 386, 387, 388, 389, 390, 391, 392, 393,
4398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4399 0, 0, 0, 112, 1117, 112, 0, 0, 1117, 1117,
4400 0, 0, 0, 112, 0, 0, 84, 113, 0, 84,
4401 84, 0, 0, 0, 112, 84, 112, 112, 0, 0,
4402 0, 0, 0, 0, 0, 0, 112, 112, 0, 84,
4403 0, 0, 84, 113, 0, 113, 0, 0, 113, 113,
4404 0, 0, 0, 0, 113, 1118, 1118, 0, 0, 0,
4405 0, 84, 0, 0, 112, 0, 0, 0, 1117, 0,
4406 112, 113, 0, 0, 0, 0, 0, 0, 0, 0,
4407 0, 0, 0, 84, 0, 0, 1119, 1119, 0, 0,
4408 0, 0, 0, 0, 0, 0, 0, 84, 0, 0,
4409 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4410 1118, 1118, 0, 0, 1118, 0, 0, 0, 0, 0,
4411 0, 113, 0, 113, 113, 113, 113, 0, 113, 113,
4412 0, 1118, 0, 0, 0, 0, 0, 0, 0, 0,
4413 0, 1119, 1119, 0, 0, 1119, 0, 0, 0, 113,
4414 0, 84, 0, 0, 0, 0, 0, 0, 84, 84,
4415 0, 0, 1119, 84, 141, 0, 0, 1118, 0, 0,
4416 0, 0, 0, 0, 0, 0, 80, 0, 0, 0,
4417 0, 0, 0, 0, 0, 0, 113, 0, 0, 113,
4418 1118, 0, 0, 1118, 0, 113, 113, 113, 1119, 0,
4419 0, 84, 112, 0, 112, 112, 0, 1118, 1118, 1118,
4420 0, 113, 1118, 1118, 0, 141, 141, 1118, 1118, 312,
4421 0, 1119, 0, 0, 1119, 0, 0, 80, 80, 0,
4422 0, 305, 0, 0, 0, 0, 0, 113, 1119, 1119,
4423 1119, 0, 0, 1119, 1119, 0, 0, 0, 1119, 1119,
4424 0, 0, 312, 0, 0, 0, 0, 0, 0, 0,
4425 0, 113, 0, 0, 305, 0, 0, 0, 0, 0,
4426 112, 421, 431, 431, 0, 0, 0, 0, 0, 0,
4427 0, 0, 0, 305, 305, 305, 0, 112, 0, 0,
4428 0, 0, 112, 112, 113, 0, 0, 0, 112, 112,
4429 0, 0, 0, 0, 0, 0, 0, 112, 112, 0,
4430 0, 0, 0, 113, 0, 0, 0, 0, 0, 0,
4431 0, 0, 0, 112, 1118, 0, 0, 0, 1118, 1118,
4432 0, 0, 0, 0, 113, 0, 0, 0, 0, 0,
4433 113, 0, 112, 0, 0, 0, 0, 0, 0, 0,
4434 0, 0, 0, 0, 0, 1119, 0, 0, 0, 1119,
4435 1119, 0, 0, 0, 0, 112, 112, 112, 0, 0,
4436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4437 113, 113, 112, 113, 113, 0, 0, 0, 1118, 0,
4438 0, 0, 113, 141, 0, 0, 0, 113, 0, 112,
4439 0, 0, 0, 0, 0, 80, 0, 0, 0, 0,
4440 0, 0, 0, 0, 0, 0, 0, 0, 0, 1119,
4441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4442 141, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4443 0, 113, 80, 113, 0, 0, 0, 141, 0, 0,
4444 0, 113, 0, 0, 0, 0, 0, 0, 0, 80,
4445 0, 0, 113, 0, 113, 113, 0, 312, 0, 0,
4446 0, 0, 0, 0, 113, 113, 0, 0, 112, 305,
4447 0, 112, 112, 0, 0, 0, 0, 112, 0, 367,
4448 -813, -813, -813, -813, 372, 373, 0, 141, -813, -813,
4449 0, 112, 113, 0, 112, 0, 380, 381, 113, 80,
4450 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4451 0, 0, 0, 112, 0, 141, 312, 0, 0, 0,
4452 0, 0, 0, 0, 0, 0, 0, 80, 305, 0,
4453 0, 0, 81, 0, 0, 112, 0, 0, 384, 385,
4454 386, 387, 388, 389, 390, 391, 392, 393, 0, 112,
4455 0, 0, 0, 0, 0, 141, 0, 0, 0, 0,
4456 0, 0, 141, 141, 0, 0, 0, 80, 0, 0,
4457 0, 0, 0, 0, 80, 80, 0, 0, 0, 0,
4458 0, 0, 0, 81, 81, 0, 0, 306, 0, 0,
4459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4460 0, 0, 0, 112, 0, 0, 0, 0, 0, 0,
4461 112, 112, 0, 0, 0, 112, 0, 0, 0, 0,
4462 306, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4463 113, 0, 113, 113, 0, 0, 0, 0, 0, 306,
4464 306, 306, 0, 0, 0, 0, 0, 0, 0, 0,
4465 0, 0, 0, 112, 0, 0, 0, 0, 0, 0,
4466 141, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4467 0, 0, 80, 0, 0, 0, 0, 312, 367, 368,
4468 369, 370, 371, 372, 373, 0, 0, 376, 377, 305,
4469 0, 0, 0, 0, 0, 380, 381, 0, 113, 0,
4470 141, 0, 0, 0, 0, 0, 141, 0, 0, 0,
4471 0, 0, 80, 0, 0, 113, 0, 0, 80, 0,
4472 113, 113, 0, 0, 0, 0, 113, 113, 0, 0,
4473 0, 0, 0, 0, 0, 113, 113, 384, 385, 386,
4474 387, 388, 389, 390, 391, 392, 393, 141, 0, 0,
4475 141, 113, 0, 0, 0, 0, 0, 0, 0, 80,
4476 312, 81, 80, 814, 0, 0, 0, 0, 0, 0,
4477 113, 0, 305, 0, 0, 80, 0, 0, 0, 0,
4478 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4479 0, 0, 0, 113, 113, 113, 0, 0, 81, 0,
4480 0, 0, 0, 0, 0, 0, 0, 141, 0, 141,
4481 113, 0, 0, 0, 0, 81, 137, 0, 0, 80,
4482 0, 80, 0, 0, 0, 0, 0, 113, 0, 0,
4483 141, 0, 0, 0, 0, 306, 0, 0, 0, 0,
4484 814, 814, 80, 0, 0, 0, 0, 0, 0, 0,
4485 0, 0, 80, 80, 0, 0, 0, 0, 0, 0,
4486 0, 0, 0, 0, 0, 81, 0, 137, 137, 0,
4487 0, 310, 0, 0, 814, 0, 0, 0, 0, 0,
4488 312, 0, 0, 0, 0, 0, 80, 0, 0, 894,
4489 0, 0, 305, 81, 306, 0, 0, 0, 0, 0,
4490 0, 0, 0, 0, 310, 0, 113, 0, 0, 113,
4491 113, 0, 0, 0, 0, 113, 0, 0, 0, 22,
4492 23, 24, 25, 419, 429, 429, 429, 0, 0, 113,
4493 0, 0, 113, 81, 0, 31, 32, 33, 1077, 0,
4494 81, 81, 1078, 0, 0, 40, 41, 42, 43, 44,
4495 0, 113, 0, 0, 0, 0, 312, 0, 0, 0,
4496 0, 0, 0, 0, 0, 0, 0, 0, 305, 0,
4497 0, 0, 0, 113, 0, 0, 0, 1080, 1081, 0,
4498 0, 0, 0, 0, 0, 1082, 0, 113, 1083, 0,
4499 1084, 1085, 0, 1086, 0, 0, 57, 58, 59, 60,
4500 61, 62, 63, 64, 65, 0, 0, 0, 0, 141,
4501 0, 0, 0, 0, 0, 0, 0, 91, 0, 0,
4502 0, 80, 0, 0, 0, 0, 1088, 0, 0, 0,
4503 0, 0, 0, 303, 0, 0, 0, 0, 81, 0,
4504 260, 113, 0, 0, 0, 137, 0, 0, 113, 113,
4505 0, 0, 0, 113, 0, 306, 0, 0, 0, 0,
4506 0, 0, 0, 0, 0, 0, 0, 0, 91, 91,
4507 0, 0, 0, 0, 0, 0, 0, 0, 81, 0,
4508 0, 0, 137, 0, 81, 0, 0, 0, 0, 0,
4509 0, 113, 0, 0, 0, 0, 814, 814, 0, 137,
4510 0, 0, 814, 814, 0, 0, 0, 0, 80, 80,
4511 0, 141, 0, 0, 80, 80, 0, 0, 0, 310,
4512 0, 0, 0, 80, 416, 81, 0, 141, 81, 0,
4513 0, 0, 0, 0, 0, 0, 0, 0, 306, 80,
4514 0, 81, 0, 0, 0, 0, 141, 0, 0, 137,
4515 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
4516 0, 0, 0, 0, 0, 0, 0, 0, 0, 141,
4517 141, 814, 0, 0, 0, 0, 0, 137, 310, 0,
4518 0, 80, 80, 80, 0, 81, 814, 81, 0, 0,
4519 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
4520 0, 0, 0, 141, 0, 0, 0, 0, 81, 0,
4521 0, 0, 0, 0, 0, 80, 0, 137, 81, 81,
4522 0, 0, 0, 0, 137, 137, 0, 0, 0, 0,
4523 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4524 0, 0, 0, 0, 140, 0, 91, 0, 0, 0,
4525 0, 0, 81, 0, 0, 0, 0, 0, 306, 0,
4526 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4527 0, 0, 0, 0, 0, 0, 0, 0, 1195, 0,
4528 0, 0, 141, 91, 0, 141, 141, 0, 0, 0,
4529 305, 141, 0, 0, 80, 140, 140, 80, 80, 0,
4530 91, 0, 0, 80, 0, 141, 0, 0, 141, 0,
4531 0, 0, 0, 0, 0, 0, 0, 80, 0, 0,
4532 80, 0, 137, 0, 0, 0, 0, 0, 0, 0,
4533 0, 0, 0, 0, 306, 0, 0, 0, 0, 310,
4534 0, 0, 0, 0, 0, 0, 0, 0, 0, 141,
4535 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4536 0, 80, 137, 141, 0, 0, 0, 0, 137, 0,
4537 0, 0, 0, 0, 0, 80, 0, 431, 91, 0,
4538 0, 0, 0, 0, 0, 0, 0, 81, 0, 305,
4539 0, 0, 0, 0, 0, 0, 367, 368, 369, 370,
4540 371, 372, 373, 374, 375, 376, 377, 378, 379, 137,
4541 0, 0, 137, 380, 381, 0, 0, 0, 91, 0,
4542 0, 0, 310, 0, 0, 91, 91, 0, 0, 141,
4543 0, 0, 0, 0, 0, 0, 0, 0, 431, 0,
4544 0, 80, 0, 0, 0, 0, 0, 0, 0, 0,
4545 305, 0, 0, 383, 0, 384, 385, 386, 387, 388,
4546 389, 390, 391, 392, 393, 0, 0, 141, 0, 137,
4547 0, 137, 260, 140, 81, 81, 0, 0, 0, 80,
4548 81, 81, 0, 0, 0, 0, 0, 0, 0, 81,
4549 0, 0, 137, 0, 936, 0, 0, 0, 0, 0,
4550 0, 0, 0, 0, 0, 81, 0, 0, 0, 0,
4551 140, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4552 0, 0, 0, 91, 81, 0, 0, 140, 367, 368,
4553 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
4554 379, 0, 310, 0, 0, 380, 381, 81, 81, 81,
4555 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4556 0, 0, 0, 91, 81, 0, 0, 0, 0, 91,
4557 0, 0, 0, 0, 0, 0, 0, 140, 0, 0,
4558 0, 81, 0, 0, 0, 383, 0, 384, 385, 386,
4559 387, 388, 389, 390, 391, 392, 393, 0, 0, 0,
4560 0, 0, 0, 0, 0, 140, 0, 0, 0, 0,
4561 91, 0, 0, 91, 0, 0, 0, 0, 310, 0,
4562 0, 0, 0, 0, 0, 0, 808, 0, 0, 0,
4563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4564 0, 0, 0, 0, 0, 140, 0, 0, 0, 0,
4565 0, 0, 140, 140, 0, 0, 306, 0, 0, 0,
4566 81, 0, 0, 81, 81, 0, 0, 0, 0, 81,
4567 91, 137, 91, 0, 0, 0, 0, 0, 0, 0,
4568 0, 0, 0, 81, 0, 0, 81, 0, 0, 0,
4569 0, 0, 0, 91, 0, 0, 0, 0, 0, 0,
4570 0, 0, 0, 808, 808, 0, 0, 0, 0, 0,
4571 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4572 0, 0, 0, 0, 0, 0, 0, 81, 0, 0,
4573 0, 0, 0, 0, 0, 0, 0, 808, 0, 0,
4574 0, 81, 0, 0, -812, 0, 0, 0, 0, 0,
4575 140, 0, -812, -812, -812, 306, 0, -812, -812, -812,
4576 0, -812, 0, 0, 0, 0, 0, 0, 0, -812,
4577 -812, -812, 0, 137, 0, 0, 0, 0, 0, 0,
4578 0, -812, -812, 936, -812, -812, -812, -812, -812, 137,
4579 140, 0, 0, 0, 0, 0, 140, 0, 0, 0,
4580 0, 0, 0, 0, 0, 0, 0, 81, 137, 0,
4581 0, 0, -812, -812, 0, 0, 306, 367, 368, 369,
4582 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
4583 0, 137, 137, 0, 380, 381, 0, 140, 0, 0,
4584 140, -812, -812, 0, 0, 81, 0, 0, 0, 0,
4585 0, 0, 0, 140, 0, 0, 0, 0, 0, 0,
4586 0, 0, 0, 0, -812, 137, 0, 0, 0, 0,
4587 0, 0, 91, 0, 383, 0, 384, 385, 386, 387,
4588 388, 389, 390, 391, 392, 393, 0, 0, 0, 0,
4589 0, 0, 0, 0, -298, -812, -812, 140, -812, 140,
4590 0, 256, -812, 0, -812, 0, 0, 0, 0, 0,
4591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4592 140, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4593 140, 140, 0, 0, 0, 0, 0, 0, 0, 0,
4594 1193, 0, 0, 0, 137, 0, 0, 137, 137, 0,
4595 0, 0, 0, 137, 0, 0, 0, 0, 0, 808,
4596 808, 240, 240, 0, 140, 808, 808, 137, 0, 0,
4597 137, 0, 0, 0, 91, 0, 0, 0, 0, 0,
4598 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4599 91, 0, 0, 275, 279, 280, 281, 0, 0, 0,
4600 240, 240, 0, 0, 0, 0, 0, 0, 0, 91,
4601 0, 137, 0, 328, 329, 0, 0, 0, 0, 0,
4602 0, 0, 0, 0, 0, 137, 0, 0, 0, 0,
4603 0, 0, 91, 91, 808, 0, 0, 0, 0, 429,
4604 0, 0, 0, 0, 0, 0, 0, 0, 0, 808,
4605 0, 0, 0, 22, 23, 24, 25, 0, 240, 0,
4606 0, 0, 0, 0, 0, 0, 91, 0, 0, 31,
4607 32, 33, 1077, 0, 0, 0, 1078, 0, 1079, 40,
4608 41, 42, 43, 44, 0, 0, 0, 0, 0, 0,
4609 0, 137, 0, 0, 0, 0, 0, 0, 562, 140,
4610 429, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4611 0, 1080, 1081, 0, 0, 0, 0, 0, 0, 1082,
4612 0, 0, 1083, 0, 1084, 1085, 0, 1086, 566, 137,
4613 57, 58, 1087, 60, 61, 62, 63, 64, 65, 0,
4614 0, 1191, 0, 0, 0, 91, 0, 0, 91, 91,
4615 0, 0, 0, 0, 91, 0, 0, 0, 0, 0,
4616 1088, 0, 0, 0, 0, 0, 0, 303, 91, 0,
4617 0, 91, 0, 0, 240, 0, 0, 240, 240, 240,
4618 0, 328, 0, 0, 0, 0, 140, 140, 0, 0,
4619 0, 0, 140, 140, 0, 0, 0, 0, 0, 0,
4620 0, 140, 240, 0, 240, 22, 23, 24, 25, 0,
4621 0, 0, 91, 0, 637, 638, 0, 140, 639, 0,
4622 0, 31, 32, 33, 0, 0, 91, 0, 0, 0,
4623 0, 40, 41, 42, 43, 44, 140, 0, 188, 189,
4624 190, 191, 192, 193, 194, 195, 196, 0, 0, 197,
4625 198, 0, 0, 0, 0, 199, 200, 201, 202, 140,
4626 140, 140, 0, 0, 0, 0, 0, 0, 0, 203,
4627 204, 0, 0, 0, 0, 0, 140, 0, 0, 0,
4628 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
4629 65, 0, 91, 140, 0, 0, 0, 0, 0, 205,
4630 206, 207, 208, 209, 210, 211, 212, 213, 214, 0,
4631 215, 216, 0, 612, 613, 614, 615, 616, 217, 303,
4632 617, 618, 619, 620, 621, 622, 623, 624, 0, 626,
4633 91, 0, 627, 628, 629, 630, 631, 632, 633, 634,
4634 635, 636, 0, 0, 0, 240, 367, 368, 369, 370,
4635 371, 372, 373, 374, 375, 376, 377, 378, 379, 0,
4636 0, 0, 0, 380, 381, 0, 0, 0, 0, 0,
4637 0, 0, 140, 0, 0, 140, 140, 0, 0, 0,
4638 0, 140, 0, 0, 0, 0, 0, 0, 0, 0,
4639 0, 0, 0, 0, 0, 140, 240, 0, 140, 0,
4640 0, 0, 0, 383, 0, 384, 385, 386, 387, 388,
4641 389, 390, 391, 392, 393, 240, 240, 0, 0, 0,
4642 240, 0, 0, 0, 240, 0, 281, 0, 0, 0,
4643 0, 0, 0, 0, 0, 0, 0, 0, 0, 140,
4644 0, 0, 0, 0, 716, 0, 0, 0, 0, 0,
4645 0, 0, 0, 140, 0, 0, 0, 240, 0, 0,
4646 240, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4647 0, 0, 240, 0, 0, 0, 0, 0, 0, 0,
4648 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4649 746, 0, 0, 0, 22, 23, 24, 25, 0, 0,
4650 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4651 31, 32, 33, 1077, 0, 0, 0, 1078, 0, 140,
4652 40, 41, 42, 43, 44, 0, 0, 0, 0, 0,
4653 0, 240, 0, 0, 0, 0, 0, 0, 0, 778,
4654 0, 0, 778, 0, 0, 0, 0, 0, 0, 0,
4655 0, 240, 1080, 1081, 0, 0, 809, 140, 0, 0,
4656 1082, 0, 0, 1083, 0, 1084, 1085, 0, 1086, 0,
4657 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4658 0, 0, 0, 0, 0, 0, 0, 645, 646, 0,
4659 0, 647, 0, 0, 0, 0, 0, 0, 0, 0,
4660 0, 1088, 0, 0, 0, 0, 0, 0, 303, 0,
4661 240, 188, 189, 190, 191, 192, 193, 194, 195, 196,
4662 0, 240, 197, 198, 0, 0, 0, 0, 199, 200,
4663 201, 202, 0, 868, 868, 0, 0, 240, 778, 778,
4664 868, 0, 203, 204, 0, 0, 0, 0, 0, 0,
4665 0, 868, 868, 0, 0, 240, 0, 240, 0, 0,
4666 0, 0, 0, 0, 0, 0, 0, 868, 0, 0,
4667 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
4668 213, 214, 0, 215, 216, 0, 0, 0, 0, 0,
4669 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
4670 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4671 0, 240, 0, 0, 0, 0, 0, 0, 0, 0,
4672 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4673 0, 0, 0, 0, 0, 0, 0, 0, 0, 240,
4674 0, 0, 0, 0, 0, -4, 3, 0, 4, 5,
4675 6, 7, 8, -4, -4, -4, 9, 10, 0, -4,
4676 -4, 11, -4, 12, 13, 14, 15, 16, 17, 18,
4677 -4, 240, 0, 0, 0, 19, 20, 21, 22, 23,
4678 24, 25, 0, 0, 26, 0, 0, 0, 0, 240,
4679 27, 28, 283, 30, 31, 32, 33, 34, 35, 36,
4680 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
4681 46, 0, 0, -4, 0, 0, 0, 0, 0, 868,
4682 0, 47, 48, 0, 0, 0, 0, 0, 0, 0,
4683 0, 0, 0, 0, 0, 0, 49, 50, 0, 0,
4684 0, 0, 0, 0, 51, 0, 0, 52, 53, 54,
4685 55, 0, 56, 0, 0, 57, 58, 59, 60, 61,
4686 62, 63, 64, 65, 0, -4, 0, 778, 0, 0,
4687 0, 0, 0, 0, 0, 0, 240, 0, 0, 0,
4688 0, 0, 0, 0, 240, 0, 0, 0, 1027, 868,
4689 868, 0, 66, 67, 68, 868, 868, -4, 0, 240,
4690 0, 0, 0, -4, 0, 545, 0, 0, 0, 0,
4691 0, 240, 0, 0, 0, 0, 0, 0, 0, 0,
4692 0, 0, 0, 0, 0, 0, 0, 0, 0, 778,
4693 868, 868, 0, 868, 868, 0, 240, 0, 0, 0,
4694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4695 0, 0, 0, 0, 0, 0, 1068, 1069, 0, 0,
4696 240, 0, 0, 0, 868, 1075, 0, 0, 0, 0,
4697 0, 0, 0, 0, 0, 0, 0, 0, 0, 868,
4698 0, 0, 0, 0, 0, 0, -812, 3, 0, 4,
4699 5, 6, 7, 8, 0, 240, 0, 9, 10, 0,
4700 0, 0, 11, 868, 12, 13, 14, 15, 16, 17,
4701 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
4702 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
4703 0, 27, 28, 283, 30, 31, 32, 33, 34, 35,
4704 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
4705 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
4706 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
4707 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
4708 240, 0, 0, 0, 0, 51, 0, 0, 52, 53,
4709 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
4710 61, 62, 63, 64, 65, 0, -812, 0, 0, 0,
4711 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4713 0, 0, 0, 66, 67, 68, 0, 0, -812, 3,
4714 -812, 4, 5, 6, 7, 8, -812, 0, 0, 9,
4715 10, 0, 0, 0, 11, 0, 12, 13, 14, 15,
4716 16, 17, 18, 0, 0, 0, 0, 0, 19, 20,
4717 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
4718 0, 0, 0, 27, 28, 29, 30, 31, 32, 33,
4719 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
4720 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
4721 240, 0, 0, 0, 47, 48, 0, 0, 0, 0,
4722 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
4723 50, 0, 0, 0, 0, 0, 0, 51, 0, 0,
4724 52, 53, 54, 55, 0, 56, 0, 0, 57, 58,
4725 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
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, 66, 67, 68, 0, 0,
4729 -4, 3, -812, 4, 5, 6, 7, 8, -812, 0,
4730 0, 9, 10, 0, 0, 0, 11, 0, 12, 13,
4731 14, 15, 16, 17, 18, 0, 0, 0, 0, 0,
4732 19, 20, 21, 22, 23, 24, 25, 0, 0, 26,
4733 0, 0, 0, 0, 0, 27, 28, 29, 30, 31,
4734 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
4735 41, 42, 43, 44, 45, 46, 0, 0, 0, 0,
4736 0, 0, 0, 0, 0, 0, 47, 48, 0, 0,
4737 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4738 0, 49, 50, 0, 0, 0, 0, 0, 0, 51,
4739 0, 0, 52, 53, 54, 55, 0, 56, 0, 0,
4740 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
4741 0, 0, 0, 0, 0, 0, 0, 0, -794, 0,
4742 0, 0, 0, 0, 0, 0, -794, -794, -794, 0,
4743 0, -794, -794, -794, 0, -794, 0, 66, 67, 68,
4744 0, 0, -4, -794, -794, -794, -794, -794, 0, 0,
4745 545, 0, 0, 0, 0, -794, -794, 0, -794, -794,
4746 -794, -794, -794, 0, 0, 0, 367, 368, 369, 370,
4747 371, 372, 373, 374, 375, 376, 377, -813, -813, 0,
4748 0, 0, 0, 380, 381, 0, -794, -794, 0, 0,
4749 0, 0, 0, 0, 0, 0, -794, -794, -794, -794,
4750 -794, -794, -794, -794, -794, -794, -794, -794, -794, 0,
4751 0, 0, 0, -794, -794, -794, -794, 0, 877, -794,
4752 0, 0, 0, 0, -794, 384, 385, 386, 387, 388,
4753 389, 390, 391, 392, 393, 0, 0, 0, -794, 0,
4754 0, -794, 0, 0, 0, 0, 0, 0, 0, 0,
4755 0, 0, -146, -794, -794, -794, -794, -794, -794, -794,
4756 -794, -794, -794, -794, -794, 0, 0, 0, 0, -794,
4757 -794, -794, -794, -794, -692, 0, -794, -794, -794, 0,
4758 0, 0, -692, -692, -692, 0, 0, -692, -692, -692,
4759 0, -692, 0, 0, 0, 0, 0, 0, 0, -692,
4760 0, -692, -692, -692, 0, 0, 0, 0, 0, 0,
4761 0, -692, -692, 0, -692, -692, -692, -692, -692, 0,
4762 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4763 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4764 0, 0, -692, -692, 0, 0, 0, 0, 0, 0,
4765 0, 0, -692, -692, -692, -692, -692, -692, -692, -692,
4766 -692, -692, -692, -692, -692, 0, 0, 0, 0, -692,
4767 -692, -692, -692, 0, -692, -692, 0, 0, 0, 0,
4768 -692, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4769 0, 0, 0, 0, -692, 0, 0, -692, 0, 0,
4770 0, 0, 0, 0, 0, 0, 0, 0, -692, -692,
4771 -692, -692, -692, -692, -692, -692, -692, -692, -692, -692,
4772 -692, 0, 0, 0, 0, 0, -692, -692, -692, -692,
4773 -693, 0, -692, -692, -692, 0, 0, 0, -693, -693,
4774 -693, 0, 0, -693, -693, -693, 0, -693, 0, 0,
4775 0, 0, 0, 0, 0, -693, 0, -693, -693, -693,
4776 0, 0, 0, 0, 0, 0, 0, -693, -693, 0,
4777 -693, -693, -693, -693, -693, 0, 0, 0, 0, 0,
4778 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4779 0, 0, 0, 0, 0, 0, 0, 0, -693, -693,
4780 0, 0, 0, 0, 0, 0, 0, 0, -693, -693,
4781 -693, -693, -693, -693, -693, -693, -693, -693, -693, -693,
4782 -693, 0, 0, 0, 0, -693, -693, -693, -693, 0,
4783 -693, -693, 0, 0, 0, 0, -693, 0, 0, 0,
4784 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4785 -693, 0, 0, -693, 0, 0, 0, 0, 0, 0,
4786 0, 0, 0, 0, -693, -693, -693, -693, -693, -693,
4787 -693, -693, -693, -693, -693, -693, -693, 0, 0, 0,
4788 0, 0, -693, -693, -693, -693, -795, 0, -693, -693,
4789 -693, 0, 0, 0, -795, -795, -795, 0, 0, -795,
4790 -795, -795, 0, -795, 0, 0, 0, 0, 0, 0,
4791 0, -795, -795, -795, -795, -795, 0, 0, 0, 0,
4792 0, 0, 0, -795, -795, 0, -795, -795, -795, -795,
4793 -795, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4794 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4795 0, 0, 0, 0, -795, -795, 0, 0, 0, 0,
4796 0, 0, 0, 0, -795, -795, -795, -795, -795, -795,
4797 -795, -795, -795, -795, -795, -795, -795, 0, 0, 0,
4798 0, -795, -795, -795, -795, 0, 0, -795, 0, 0,
4799 0, 0, -795, 0, 0, 0, 0, 0, 0, 0,
4800 0, 0, 0, 0, 0, 0, -795, 0, 0, -795,
4801 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4802 0, -795, -795, -795, -795, -795, -795, -795, -795, -795,
4803 -795, -795, -795, 0, 0, 0, 0, -795, -795, -795,
4804 -795, -795, -796, 0, -795, -795, -795, 0, 0, 0,
4805 -796, -796, -796, 0, 0, -796, -796, -796, 0, -796,
4806 0, 0, 0, 0, 0, 0, 0, -796, -796, -796,
4807 -796, -796, 0, 0, 0, 0, 0, 0, 0, -796,
4808 -796, 0, -796, -796, -796, -796, -796, 0, 0, 0,
4809 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4810 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4811 -796, -796, 0, 0, 0, 0, 0, 0, 0, 0,
4812 -796, -796, -796, -796, -796, -796, -796, -796, -796, -796,
4813 -796, -796, -796, 0, 0, 0, 0, -796, -796, -796,
4814 -796, 0, 0, -796, 0, 0, 0, 0, -796, 0,
4815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4816 0, 0, -796, 0, 0, -796, 0, 0, 0, 0,
4817 0, 0, 0, 0, 0, 0, 0, -796, -796, -796,
4818 -796, -796, -796, -796, -796, -796, -796, -796, -796, 0,
4819 0, 0, 0, -796, -796, -796, -796, -796, -508, 0,
4820 -796, -796, -796, 0, 0, 0, -508, -508, -508, 0,
4821 0, -508, -508, -508, 0, -508, 0, 0, 0, 0,
4822 0, 0, 0, -508, -508, -508, -508, 0, 0, 0,
4823 0, 0, 0, 0, 0, -508, -508, 0, -508, -508,
4824 -508, -508, -508, 0, 0, 0, 0, 0, 0, 0,
4825 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4826 0, 0, 0, 0, 0, 0, -508, -508, 0, 0,
4827 0, 0, 0, 0, 0, 0, -508, -508, -508, -508,
4828 -508, -508, -508, -508, -508, -508, -508, -508, -508, 0,
4829 0, 0, 0, -508, -508, -508, -508, 0, 0, -508,
4830 0, 0, 0, 0, -508, 0, 0, 0, 0, 0,
4831 0, 0, 0, 0, 0, 0, 0, 0, -508, 0,
4832 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4833 0, 0, 0, -508, 0, -508, -508, -508, -508, -508,
4834 -508, -508, -508, -508, -508, 0, 0, 0, 0, -508,
4835 -508, -508, -508, -508, -349, 256, -508, -508, -508, 0,
4836 0, 0, -349, -349, -349, 0, 0, -349, -349, -349,
4837 0, -349, 0, 0, 0, 0, 0, 0, 0, -349,
4838 0, -349, -349, -349, 0, 0, 0, 0, 0, 0,
4839 0, -349, -349, 0, -349, -349, -349, -349, -349, 0,
4840 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4841 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4842 0, 0, -349, -349, 0, 0, 0, 0, 0, 0,
4843 0, 0, -349, -349, -349, -349, -349, -349, -349, -349,
4844 -349, -349, -349, -349, -349, 0, 0, 0, 0, -349,
4845 -349, -349, -349, 0, 0, -349, 0, 0, 0, 0,
4846 -349, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4847 0, 0, 0, 0, -349, 0, 0, -349, 0, 0,
4848 0, 0, 0, 0, 0, 0, 0, 0, 0, -349,
4849 -349, -349, -349, -349, -349, -349, -349, -349, -349, -349,
4850 -349, 0, 0, 0, 0, 0, -349, -349, -349, -349,
4851 -812, 0, -349, -349, -349, 0, 0, 0, -812, -812,
4852 -812, 0, 0, -812, -812, -812, 0, -812, 0, 0,
4853 0, 0, 0, 0, 0, -812, -812, -812, -812, 0,
4854 0, 0, 0, 0, 0, 0, 0, -812, -812, 0,
4855 -812, -812, -812, -812, -812, 0, 0, 0, 0, 0,
4856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4857 0, 0, 0, 0, 0, 0, 0, 0, -812, -812,
4858 0, 0, 0, 0, 0, 0, 0, 0, -812, -812,
4859 -812, -812, -812, -812, -812, -812, -812, -812, -812, -812,
4860 -812, 0, 0, 0, 0, -812, -812, -812, -812, 0,
4861 0, -812, 0, 0, 0, 0, -812, 0, 0, 0,
4862 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4863 -812, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4864 0, 0, 0, 0, 0, -812, 0, -812, -812, -812,
4865 -812, -812, -812, -812, -812, -812, -812, 0, 0, 0,
4866 0, -812, -812, -812, -812, -812, -355, 256, -812, -812,
4867 -812, 0, 0, 0, -355, -355, -355, 0, 0, -355,
4868 -355, -355, 0, -355, 0, 0, 0, 0, 0, 0,
4869 0, -355, 0, -355, -355, 0, 0, 0, 0, 0,
4870 0, 0, 0, -355, -355, 0, -355, -355, -355, -355,
4871 -355, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4872 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4873 0, 0, 0, 0, -355, -355, 0, 0, 0, 0,
4874 0, 0, 0, 0, -355, -355, -355, -355, -355, -355,
4875 -355, -355, -355, -355, -355, -355, -355, 0, 0, 0,
4876 0, -355, -355, -355, -355, 0, 878, -355, 0, 0,
4877 0, 0, -355, 0, 0, 0, 0, 0, 0, 0,
4878 0, 0, 0, 0, 0, 0, -355, 0, 0, 0,
4879 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4880 -147, -355, 0, -355, -355, -355, -355, -355, -355, -355,
4881 -355, -355, -355, 0, 0, 0, 0, 820, -355, -355,
4882 -355, -355, -362, 0, -355, -355, -355, 0, 0, 0,
4883 -362, -362, -362, 0, 0, -362, -362, -362, 0, -362,
4884 0, 0, 0, 0, 0, 0, 0, -362, 0, -362,
4885 -362, 0, 0, 0, 0, 0, 0, 0, 0, -362,
4886 -362, 0, -362, -362, -362, -362, -362, 0, 0, 0,
4887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4888 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4889 -362, -362, 0, 0, 0, 0, 0, 0, 0, 0,
4890 -362, -362, -362, -362, -362, -362, -362, -362, -362, -362,
4891 -362, -362, -362, 0, 0, 0, 0, -362, -362, -362,
4892 -362, 0, 0, -362, 0, 0, 0, 0, -362, 0,
4893 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4894 0, 0, -362, 0, 0, 0, 0, 0, 0, 0,
4895 0, 0, 0, 0, 0, 0, 0, -362, 0, -362,
4896 -362, -362, -362, -362, -362, -362, -362, -362, -362, 0,
4897 0, 0, 0, 0, -362, -362, -362, -362, -794, 450,
4898 -362, -362, -362, 0, 0, 0, -794, -794, -794, 0,
4899 0, 0, -794, -794, 0, -794, 0, 0, 0, 0,
4900 0, 0, 0, -794, -794, 0, 0, 0, 0, 0,
4901 0, 0, 0, 0, 0, -794, -794, 0, -794, -794,
4902 -794, -794, -794, 0, 0, 0, 0, 0, 0, 0,
4903 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4904 0, 0, 0, 0, 0, 0, -794, -794, 0, 0,
4905 0, 0, 0, 0, 0, 0, -794, -794, -794, -794,
4906 -794, -794, -794, -794, -794, -794, -794, -794, -794, 0,
4907 0, 0, 0, -794, -794, -794, -794, 0, 818, -794,
4908 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4909 0, 0, 0, 0, 0, 0, 0, 0, -794, 0,
4910 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4911 0, 0, -146, -794, 0, -794, -794, -794, -794, -794,
4912 -794, -794, -794, -794, -794, 0, 0, 0, 0, -794,
4913 -794, -794, -794, -137, -794, 0, -794, 0, -794, 0,
4914 0, 0, -794, -794, -794, 0, 0, 0, -794, -794,
4915 0, -794, 0, 0, 0, 0, 0, 0, 0, -794,
4916 -794, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4917 0, -794, -794, 0, -794, -794, -794, -794, -794, 0,
4918 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4919 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4920 0, 0, -794, -794, 0, 0, 0, 0, 0, 0,
4921 0, 0, -794, -794, -794, -794, -794, -794, -794, -794,
4922 -794, -794, -794, -794, -794, 0, 0, 0, 0, -794,
4923 -794, -794, -794, 0, 818, -794, 0, 0, 0, 0,
4924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4925 0, 0, 0, 0, -794, 0, 0, 0, 0, 0,
4926 0, 0, 0, 0, 0, 0, 0, 0, -146, -794,
4927 0, -794, -794, -794, -794, -794, -794, -794, -794, -794,
4928 -794, 0, 0, 0, 0, -794, -794, -794, -794, -794,
4929 -355, 0, -794, 0, -794, 0, 0, 0, -355, -355,
4930 -355, 0, 0, 0, -355, -355, 0, -355, 0, 0,
4931 0, 0, 0, 0, 0, -355, 0, 0, 0, 0,
4932 0, 0, 0, 0, 0, 0, 0, -355, -355, 0,
4933 -355, -355, -355, -355, -355, 0, 0, 0, 0, 0,
4934 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4935 0, 0, 0, 0, 0, 0, 0, 0, -355, -355,
4936 0, 0, 0, 0, 0, 0, 0, 0, -355, -355,
4937 -355, -355, -355, -355, -355, -355, -355, -355, -355, -355,
4938 -355, 0, 0, 0, 0, -355, -355, -355, -355, 0,
4939 819, -355, 0, 0, 0, 0, 0, 0, 0, 0,
4940 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4941 -355, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4942 0, 0, 0, 0, -147, -355, 0, -355, -355, -355,
4943 -355, -355, -355, -355, -355, -355, -355, 0, 0, 0,
4944 0, 820, -355, -355, -355, -138, -355, 0, -355, 0,
4945 -355, 0, 0, 0, -355, -355, -355, 0, 0, 0,
4946 -355, -355, 0, -355, 0, 0, 0, 0, 0, 0,
4947 0, -355, 0, 0, 0, 0, 0, 0, 0, 0,
4948 0, 0, 0, -355, -355, 0, -355, -355, -355, -355,
4949 -355, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4950 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4951 0, 0, 0, 0, -355, -355, 0, 0, 0, 0,
4952 0, 0, 0, 0, -355, -355, -355, -355, -355, -355,
4953 -355, -355, -355, -355, -355, -355, -355, 0, 0, 0,
4954 0, -355, -355, -355, -355, 0, 819, -355, 0, 0,
4955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4956 0, 0, 0, 0, 0, 0, -355, 0, 0, 0,
4957 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4958 -147, -355, 0, -355, -355, -355, -355, -355, -355, -355,
4959 -355, -355, -355, 0, 0, 0, 0, 820, -355, -355,
4960 -355, -355, 0, 0, -355, 3, -355, 4, 5, 6,
4961 7, 8, -812, -812, -812, 9, 10, 0, 0, -812,
4962 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
4963 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
4964 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
4965 28, 283, 30, 31, 32, 33, 34, 35, 36, 37,
4966 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
4967 0, 0, -812, 0, 0, 0, 0, 0, 0, 0,
4968 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
4969 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
4970 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
4971 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
4972 63, 64, 65, 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, 0, 0, 0, 0,
4975 0, 66, 67, 68, 0, 0, 0, 3, -812, 4,
4976 5, 6, 7, 8, -812, 0, -812, 9, 10, 0,
4977 -812, -812, 11, 0, 12, 13, 14, 15, 16, 17,
4978 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
4979 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
4980 0, 27, 28, 283, 30, 31, 32, 33, 34, 35,
4981 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
4982 45, 46, 0, 0, -812, 0, 0, 0, 0, 0,
4983 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
4984 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
4985 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
4986 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
4987 61, 62, 63, 64, 65, 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, 0, 0,
4990 0, 0, 0, 66, 67, 68, 0, 0, 0, 3,
4991 -812, 4, 5, 6, 7, 8, -812, 0, -812, 9,
4992 10, 0, 0, -812, 11, -812, 12, 13, 14, 15,
4993 16, 17, 18, 0, 0, 0, 0, 0, 19, 20,
4994 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
4995 0, 0, 0, 27, 28, 283, 30, 31, 32, 33,
4996 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
4997 43, 44, 45, 46, 0, 0, -812, 0, 0, 0,
4998 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
4999 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
5000 50, 0, 0, 0, 0, 0, 0, 51, 0, 0,
5001 52, 53, 54, 55, 0, 56, 0, 0, 57, 58,
5002 59, 60, 61, 62, 63, 64, 65, 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 0, 0, 0, 0, 0, 66, 67, 68, 0, 0,
5006 0, 3, -812, 4, 5, 6, 7, 8, -812, 0,
5007 -812, 9, 10, 0, 0, -812, 11, 0, 12, 13,
5008 14, 15, 16, 17, 18, -812, 0, 0, 0, 0,
5009 19, 20, 21, 22, 23, 24, 25, 0, 0, 26,
5010 0, 0, 0, 0, 0, 27, 28, 283, 30, 31,
5011 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
5012 41, 42, 43, 44, 45, 46, 0, 0, -812, 0,
5013 0, 0, 0, 0, 0, 0, 47, 48, 0, 0,
5014 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5015 0, 49, 50, 0, 0, 0, 0, 0, 0, 51,
5016 0, 0, 52, 53, 54, 55, 0, 56, 0, 0,
5017 57, 58, 59, 60, 61, 62, 63, 64, 65, 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, 0, 0, 0, 0, 0, 66, 67, 68,
5021 0, 0, 0, 3, -812, 4, 5, 6, 7, 8,
5022 -812, 0, -812, 9, 10, 0, 0, -812, 11, 0,
5023 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5024 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5025 0, 26, 0, 0, 0, 0, 0, 27, 28, 283,
5026 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5027 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5028 -812, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5029 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5030 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5031 0, 51, 0, 0, 52, 53, 54, 55, 0, 56,
5032 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5033 65, 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, 0, 0, 0, 0, 0, 66,
5036 67, 68, 0, 0, 0, 3, -812, 4, 5, 6,
5037 7, 8, -812, -812, -812, 9, 10, 0, 0, 0,
5038 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5039 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5040 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5041 28, 283, 30, 31, 32, 33, 34, 35, 36, 37,
5042 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5043 0, 0, -812, 0, 0, 0, 0, 0, 0, 0,
5044 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5045 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5046 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5047 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5048 63, 64, 65, 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, 0, 0, 0, 0,
5051 0, 66, 67, 68, 0, 0, 0, 3, -812, 4,
5052 5, 6, 7, 8, -812, 0, -812, 9, 10, 0,
5053 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
5054 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
5055 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
5056 0, 27, 28, 283, 30, 31, 32, 33, 34, 35,
5057 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5058 45, 46, 0, 0, -812, 0, 0, 0, 0, 0,
5059 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5060 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5061 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
5062 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
5063 61, 62, 63, 64, 65, 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, 0, 0,
5066 0, 0, 0, 66, 67, 68, 0, 0, 0, 3,
5067 -812, 4, 5, 6, 7, 8, -812, 0, 0, 9,
5068 10, 0, 0, 0, 11, 0, 12, 13, 14, 15,
5069 16, 17, 18, 0, 0, 0, 0, 0, 19, 20,
5070 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
5071 0, 0, 0, 27, 28, 283, 30, 31, 32, 33,
5072 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
5073 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
5074 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
5075 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
5076 50, 0, 0, 0, 0, 0, 0, 51, 0, 0,
5077 284, 53, 54, 55, 0, 56, 0, 0, 57, 58,
5078 59, 60, 61, 62, 63, 64, 65, 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 0, 0, 0, 0, 0, 66, 67, 68, 0, 0,
5082 0, 0, -812, 0, 0, 0, -812, 3, -812, 4,
5083 5, 6, 7, 8, 0, 0, 0, 9, 10, 0,
5084 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
5085 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
5086 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
5087 0, 27, 28, 283, 30, 31, 32, 33, 34, 35,
5088 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5089 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5090 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5091 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5092 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
5093 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
5094 61, 62, 63, 64, 65, 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, 0, 0,
5097 0, 0, 0, 66, 67, 68, 0, 0, 0, 0,
5098 -812, 0, 0, 0, -812, 3, -812, 4, 5, 6,
5099 7, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5100 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5101 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5102 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5103 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
5104 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5106 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5107 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5108 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5109 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5110 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5111 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5112 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5113 0, 66, 67, 68, 0, 0, -812, 3, -812, 4,
5114 5, 6, 7, 8, -812, 0, 0, 9, 10, 0,
5115 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
5116 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
5117 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
5118 0, 27, 28, 283, 30, 31, 32, 33, 34, 35,
5119 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5120 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5121 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5122 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5123 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
5124 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
5125 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
5126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5127 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5128 0, 0, 0, 66, 67, 68, 0, 0, -812, 403,
5129 -812, 4, 5, 6, 0, 8, -812, 0, 0, 9,
5130 10, 0, 0, 0, 11, -3, 12, 13, 14, 15,
5131 16, 17, 18, 0, 0, 0, 0, 0, 19, 20,
5132 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
5133 0, 0, 0, 0, 28, 0, 0, 31, 32, 33,
5134 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
5135 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
5136 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
5137 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
5138 50, 0, 0, 0, 0, 0, 0, 229, 0, 0,
5139 230, 53, 54, 55, 0, 0, 0, 0, 57, 58,
5140 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
5141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5142 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5143 0, 0, 0, 0, 0, 66, 67, 68, 0, 0,
5144 0, 0, 330, 0, 0, 0, 0, 0, 331, 144,
5145 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
5146 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
5147 165, 166, 167, 0, 0, 0, 168, 169, 170, 433,
5148 434, 435, 436, 175, 176, 177, 0, 0, 0, 0,
5149 0, 178, 179, 180, 181, 437, 438, 439, 440, 186,
5150 36, 37, 441, 39, 0, 0, 0, 0, 0, 0,
5151 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5152 0, 0, 188, 189, 190, 191, 192, 193, 194, 195,
5153 196, 0, 0, 197, 198, 0, 0, 0, 0, 199,
5154 200, 201, 202, 0, 0, 0, 0, 0, 0, 0,
5155 0, 0, 0, 203, 204, 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, 0, 0,
5158 0, 0, 0, 205, 206, 207, 208, 209, 210, 211,
5159 212, 213, 214, 0, 215, 216, 0, 0, 0, 0,
5160 0, 0, 217, 442, 144, 145, 146, 147, 148, 149,
5161 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
5162 160, 161, 162, 163, 164, 165, 166, 167, 0, 0,
5163 0, 168, 169, 170, 171, 172, 173, 174, 175, 176,
5164 177, 0, 0, 0, 0, 0, 178, 179, 180, 181,
5165 182, 183, 184, 185, 186, 36, 37, 187, 39, 0,
5166 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5167 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5168 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5169 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5170 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
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, 0, 0, 0, 0, 0, 205, 206,
5174 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5175 216, 0, 0, 0, 0, 0, 0, 217, 144, 145,
5176 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
5177 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
5178 166, 167, 0, 0, 0, 168, 169, 170, 171, 172,
5179 173, 174, 175, 176, 177, 0, 0, 0, 0, 0,
5180 178, 179, 180, 181, 182, 183, 184, 185, 186, 263,
5181 0, 187, 0, 0, 0, 0, 0, 0, 0, 0,
5182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5183 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5184 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5185 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5186 0, 0, 203, 204, 0, 0, 58, 0, 0, 0,
5187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5188 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5189 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5190 213, 214, 0, 215, 216, 0, 0, 0, 0, 0,
5191 0, 217, 144, 145, 146, 147, 148, 149, 150, 151,
5192 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
5193 162, 163, 164, 165, 166, 167, 0, 0, 0, 168,
5194 169, 170, 171, 172, 173, 174, 175, 176, 177, 0,
5195 0, 0, 0, 0, 178, 179, 180, 181, 182, 183,
5196 184, 185, 186, 0, 0, 187, 0, 0, 0, 0,
5197 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5198 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5199 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5200 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5201 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5202 58, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5204 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5205 209, 210, 211, 212, 213, 214, 0, 215, 216, 0,
5206 0, 0, 0, 0, 0, 217, 144, 145, 146, 147,
5207 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
5208 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
5209 0, 0, 0, 168, 169, 170, 171, 172, 173, 174,
5210 175, 176, 177, 0, 0, 0, 0, 0, 178, 179,
5211 180, 181, 182, 183, 184, 185, 186, 0, 0, 187,
5212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5213 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5214 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5215 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5216 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5217 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5219 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5220 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5221 0, 215, 216, 4, 5, 6, 0, 8, 0, 217,
5222 0, 9, 10, 0, 0, 0, 11, 0, 12, 13,
5223 14, 271, 272, 17, 18, 0, 0, 0, 0, 0,
5224 19, 20, 273, 22, 23, 24, 25, 0, 0, 227,
5225 0, 0, 0, 0, 0, 0, 301, 0, 0, 31,
5226 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
5227 41, 42, 43, 44, 45, 46, 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, 0, 0, 0, 0, 0, 302,
5231 0, 0, 230, 53, 54, 55, 0, 0, 0, 0,
5232 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5233 0, 4, 5, 6, 0, 8, 0, 0, 0, 9,
5234 10, 0, 0, 0, 11, 0, 12, 13, 14, 271,
5235 272, 17, 18, 0, 0, 0, 0, 303, 19, 20,
5236 273, 22, 23, 24, 25, 304, 0, 227, 0, 0,
5237 0, 0, 0, 0, 301, 0, 0, 31, 32, 33,
5238 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
5239 43, 44, 45, 46, 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, 0, 0, 0, 0, 0, 302, 0, 0,
5243 230, 53, 54, 55, 0, 0, 0, 0, 57, 58,
5244 59, 60, 61, 62, 63, 64, 65, 0, 0, 4,
5245 5, 6, 0, 8, 0, 0, 0, 9, 10, 0,
5246 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
5247 18, 0, 0, 0, 0, 303, 19, 20, 21, 22,
5248 23, 24, 25, 607, 0, 227, 0, 0, 0, 0,
5249 0, 0, 28, 0, 0, 31, 32, 33, 34, 35,
5250 36, 37, 38, 39, 228, 40, 41, 42, 43, 44,
5251 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5252 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5253 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5254 0, 0, 0, 0, 0, 229, 0, 0, 230, 53,
5255 54, 55, 0, 231, 232, 233, 57, 58, 234, 60,
5256 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
5257 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5258 0, 0, 0, 0, 0, 0, 0, 0, 4, 5,
5259 6, 0, 8, 66, 235, 68, 9, 10, 0, 0,
5260 260, 11, 0, 12, 13, 14, 15, 16, 17, 18,
5261 0, 0, 0, 0, 0, 19, 20, 21, 22, 23,
5262 24, 25, 0, 0, 26, 0, 0, 0, 0, 0,
5263 0, 28, 0, 0, 31, 32, 33, 34, 35, 36,
5264 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
5265 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5266 0, 47, 48, 0, 0, 0, 0, 0, 0, 0,
5267 0, 0, 0, 0, 0, 0, 49, 50, 0, 0,
5268 0, 0, 0, 0, 229, 0, 0, 230, 53, 54,
5269 55, 0, 0, 0, 0, 57, 58, 59, 60, 61,
5270 62, 63, 64, 65, 0, 0, 0, 0, 0, 0,
5271 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5272 0, 0, 0, 0, 0, 3, 0, 4, 5, 6,
5273 7, 8, 66, 67, 68, 9, 10, 0, 0, 260,
5274 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5275 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5276 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5277 28, 0, 30, 31, 32, 33, 34, 35, 36, 37,
5278 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5279 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5280 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5281 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5282 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5283 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5284 63, 64, 65, 0, 0, 403, 0, 4, 5, 6,
5285 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5286 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5287 0, 66, 67, 68, 19, 20, 21, 22, 23, 24,
5288 25, 0, 0, 26, 0, 0, 0, 0, 0, 0,
5289 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5290 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5291 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5292 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5293 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5294 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5295 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5296 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5297 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5298 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5299 0, 66, 67, 68, 19, 20, 21, 22, 23, 24,
5300 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5301 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5302 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5304 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5305 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5306 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5307 0, 231, 232, 233, 57, 58, 234, 60, 61, 62,
5308 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5309 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5310 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5311 0, 66, 235, 68, 19, 20, 21, 22, 23, 24,
5312 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5313 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5314 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5315 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5316 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5317 0, 0, 0, 0, 0, 49, 480, 0, 0, 0,
5318 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5319 0, 231, 232, 233, 57, 58, 234, 60, 61, 62,
5320 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5321 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5322 11, 0, 12, 13, 14, 271, 272, 17, 18, 0,
5323 0, 66, 235, 68, 19, 20, 273, 22, 23, 24,
5324 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5325 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5326 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5327 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5328 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5329 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5330 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5331 0, 231, 232, 233, 57, 58, 234, 60, 61, 62,
5332 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5333 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5334 11, 0, 12, 13, 14, 271, 272, 17, 18, 0,
5335 0, 66, 235, 68, 19, 20, 273, 22, 23, 24,
5336 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5337 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5338 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5339 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5340 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5341 0, 0, 0, 0, 0, 49, 480, 0, 0, 0,
5342 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5343 0, 231, 232, 233, 57, 58, 234, 60, 61, 62,
5344 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5345 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5346 11, 0, 12, 13, 14, 271, 272, 17, 18, 0,
5347 0, 66, 235, 68, 19, 20, 273, 22, 23, 24,
5348 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5349 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5350 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5352 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5353 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5354 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5355 0, 231, 232, 0, 57, 58, 234, 60, 61, 62,
5356 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5357 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5358 11, 0, 12, 13, 14, 271, 272, 17, 18, 0,
5359 0, 66, 235, 68, 19, 20, 273, 22, 23, 24,
5360 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5361 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5362 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5363 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5364 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5365 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5366 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5367 0, 0, 232, 233, 57, 58, 234, 60, 61, 62,
5368 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5369 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5370 11, 0, 12, 13, 14, 271, 272, 17, 18, 0,
5371 0, 66, 235, 68, 19, 20, 273, 22, 23, 24,
5372 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5373 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5374 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5376 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5377 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5378 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5379 0, 0, 232, 0, 57, 58, 234, 60, 61, 62,
5380 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5381 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5382 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5383 0, 66, 235, 68, 19, 20, 21, 22, 23, 24,
5384 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5385 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5386 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5387 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5388 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5389 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5390 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5391 0, 793, 0, 0, 57, 58, 59, 60, 61, 62,
5392 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5393 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5394 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5395 0, 66, 235, 68, 19, 20, 21, 22, 23, 24,
5396 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5397 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5398 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5399 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5400 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5401 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5402 0, 0, 0, 804, 0, 0, 230, 53, 54, 55,
5403 0, 793, 0, 0, 57, 58, 59, 60, 61, 62,
5404 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5405 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5406 11, 0, 12, 13, 14, 271, 272, 17, 18, 0,
5407 0, 66, 235, 68, 19, 20, 273, 22, 23, 24,
5408 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5409 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5410 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5411 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5412 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5413 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5414 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5415 0, 965, 0, 0, 57, 58, 59, 60, 61, 62,
5416 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5417 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5418 11, 0, 12, 13, 14, 271, 272, 17, 18, 0,
5419 0, 66, 235, 68, 19, 20, 273, 22, 23, 24,
5420 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5421 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5422 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5423 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5424 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5425 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5426 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5427 0, 1014, 0, 0, 57, 58, 59, 60, 61, 62,
5428 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5429 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5430 11, 0, 12, 13, 14, 271, 272, 17, 18, 0,
5431 0, 66, 235, 68, 19, 20, 273, 22, 23, 24,
5432 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5433 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5434 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5435 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5436 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5437 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5438 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5439 0, 793, 0, 0, 57, 58, 59, 60, 61, 62,
5440 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5441 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5442 11, 0, 12, 13, 14, 271, 272, 17, 18, 0,
5443 0, 66, 235, 68, 19, 20, 273, 22, 23, 24,
5444 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5445 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5446 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5448 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5449 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5450 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5451 0, 1134, 0, 0, 57, 58, 59, 60, 61, 62,
5452 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5453 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5454 11, 0, 12, 13, 14, 271, 272, 17, 18, 0,
5455 0, 66, 235, 68, 19, 20, 273, 22, 23, 24,
5456 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5457 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5458 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5460 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5461 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5462 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5463 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5464 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5465 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5466 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5467 0, 66, 235, 68, 19, 20, 21, 22, 23, 24,
5468 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5469 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5470 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5472 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5473 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5474 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5475 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5476 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5477 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5478 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5479 0, 66, 235, 68, 19, 20, 21, 22, 23, 24,
5480 25, 0, 0, 26, 0, 0, 0, 0, 0, 0,
5481 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5482 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5483 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5484 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5485 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5486 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5487 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5488 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5489 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5490 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5491 0, 66, 67, 68, 19, 20, 21, 22, 23, 24,
5492 25, 0, 0, 775, 0, 0, 0, 0, 0, 0,
5493 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5494 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5495 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5496 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5497 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5498 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5499 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5500 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5501 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5502 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5503 0, 66, 235, 68, 19, 20, 21, 22, 23, 24,
5504 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5505 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5506 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5507 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5508 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5509 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5510 0, 0, 0, 804, 0, 0, 230, 53, 54, 55,
5511 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5512 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5513 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5514 11, 0, 12, 13, 14, 271, 272, 17, 18, 0,
5515 0, 66, 235, 68, 19, 20, 273, 22, 23, 24,
5516 25, 0, 0, 875, 0, 0, 0, 0, 0, 0,
5517 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5518 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5519 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5520 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5521 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5522 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5523 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5524 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5525 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5526 11, 0, 12, 13, 14, 271, 272, 17, 18, 0,
5527 0, 66, 235, 68, 19, 20, 273, 22, 23, 24,
5528 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5529 301, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5530 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
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, 0, 0,
5534 0, 0, 0, 302, 0, 0, 362, 53, 54, 55,
5535 0, 363, 0, 0, 57, 58, 59, 60, 61, 62,
5536 63, 64, 65, 0, 0, 4, 5, 6, 0, 8,
5537 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5538 12, 13, 14, 271, 272, 17, 18, 0, 0, 0,
5539 0, 303, 19, 20, 273, 22, 23, 24, 25, 0,
5540 0, 227, 0, 0, 0, 0, 0, 0, 301, 0,
5541 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5542 0, 40, 41, 42, 43, 44, 45, 46, 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, 0, 0, 0, 0,
5546 0, 414, 0, 0, 52, 53, 54, 55, 0, 56,
5547 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5548 65, 0, 0, 4, 5, 6, 0, 8, 0, 0,
5549 0, 9, 10, 0, 0, 0, 11, 0, 12, 13,
5550 14, 271, 272, 17, 18, 0, 0, 0, 0, 303,
5551 19, 20, 273, 22, 23, 24, 25, 0, 0, 227,
5552 0, 0, 0, 0, 0, 0, 301, 0, 0, 31,
5553 32, 33, 422, 35, 36, 37, 423, 39, 0, 40,
5554 41, 42, 43, 44, 45, 46, 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 0, 0, 0, 0, 0, 424, 0, 0, 0, 425,
5558 0, 0, 230, 53, 54, 55, 0, 0, 0, 0,
5559 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5560 0, 4, 5, 6, 0, 8, 0, 0, 0, 9,
5561 10, 0, 0, 0, 11, 0, 12, 13, 14, 271,
5562 272, 17, 18, 0, 0, 0, 0, 303, 19, 20,
5563 273, 22, 23, 24, 25, 0, 0, 227, 0, 0,
5564 0, 0, 0, 0, 301, 0, 0, 31, 32, 33,
5565 422, 35, 36, 37, 423, 39, 0, 40, 41, 42,
5566 43, 44, 45, 46, 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, 0, 0, 0, 0, 0, 425, 0, 0,
5570 230, 53, 54, 55, 0, 0, 0, 0, 57, 58,
5571 59, 60, 61, 62, 63, 64, 65, 0, 0, 4,
5572 5, 6, 0, 8, 0, 0, 0, 9, 10, 0,
5573 0, 0, 11, 0, 12, 13, 14, 271, 272, 17,
5574 18, 0, 0, 0, 0, 303, 19, 20, 273, 22,
5575 23, 24, 25, 0, 0, 227, 0, 0, 0, 0,
5576 0, 0, 301, 0, 0, 31, 32, 33, 34, 35,
5577 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5578 45, 46, 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 0, 0, 0, 0, 0, 302, 0, 0, 362, 53,
5582 54, 55, 0, 0, 0, 0, 57, 58, 59, 60,
5583 61, 62, 63, 64, 65, 0, 0, 4, 5, 6,
5584 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5585 11, 0, 12, 13, 14, 271, 272, 17, 18, 0,
5586 0, 0, 0, 303, 19, 20, 273, 22, 23, 24,
5587 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5588 301, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5589 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
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, 0, 0,
5593 0, 0, 0, 1190, 0, 0, 230, 53, 54, 55,
5594 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5595 63, 64, 65, 0, 0, 4, 5, 6, 0, 8,
5596 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5597 12, 13, 14, 271, 272, 17, 18, 0, 0, 0,
5598 0, 303, 19, 20, 273, 22, 23, 24, 25, 0,
5599 0, 227, 0, 0, 0, 0, 0, 0, 301, 0,
5600 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5601 0, 40, 41, 42, 43, 44, 45, 46, 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, 0, 0, 0, 0,
5605 0, 1289, 0, 0, 230, 53, 54, 55, 22, 23,
5606 24, 25, 57, 58, 59, 60, 61, 62, 63, 64,
5607 65, 0, 0, 0, 31, 32, 33, 1077, 0, 0,
5608 0, 1078, 0, 0, 40, 41, 42, 43, 44, 0,
5609 0, 0, 0, 0, 0, 0, 0, 0, 0, 303,
5610 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5611 0, 0, 0, 0, 0, 0, 1080, 1081, 0, 0,
5612 0, 0, 0, 0, 1082, 0, 0, 1083, 0, 1084,
5613 1085, 0, 0, 0, 0, 57, 58, 59, 60, 61,
5614 62, 63, 64, 65, 0, 0, 0, 0, 0, 684,
5615 646, 0, 0, 685, 0, 0, 0, 0, 0, 0,
5616 0, 0, 0, 0, 0, 1088, 0, 0, 0, 0,
5617 0, 0, 303, 188, 189, 190, 191, 192, 193, 194,
5618 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5619 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5620 0, 0, 0, 0, 203, 204, 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, 0,
5623 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5624 211, 212, 213, 214, 0, 215, 216, 700, 638, 0,
5625 0, 701, 0, 217, 0, 0, 0, 0, 0, 0,
5626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5627 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5628 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5629 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5630 0, 0, 203, 204, 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, 0, 0, 0,
5633 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5634 213, 214, 0, 215, 216, 703, 646, 0, 0, 704,
5635 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
5636 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5637 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5638 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5639 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5640 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5641 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5642 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5643 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5644 0, 215, 216, 700, 638, 0, 0, 718, 0, 217,
5645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5646 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5647 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5648 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5649 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
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, 0, 0, 0, 0, 0, 205, 206,
5653 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5654 216, 729, 638, 0, 0, 730, 0, 217, 0, 0,
5655 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5656 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5657 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5658 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5659 0, 0, 0, 0, 0, 0, 203, 204, 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, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5663 209, 210, 211, 212, 213, 214, 0, 215, 216, 732,
5664 646, 0, 0, 733, 0, 217, 0, 0, 0, 0,
5665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5666 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5667 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5668 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5669 0, 0, 0, 0, 203, 204, 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, 0,
5672 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5673 211, 212, 213, 214, 0, 215, 216, 848, 638, 0,
5674 0, 849, 0, 217, 0, 0, 0, 0, 0, 0,
5675 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5676 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5677 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5678 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5679 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
5680 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5681 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5682 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5683 213, 214, 0, 215, 216, 851, 646, 0, 0, 852,
5684 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
5685 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5686 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5687 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5688 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5689 203, 204, 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, 0, 0, 0, 0, 0,
5692 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5693 0, 215, 216, 857, 638, 0, 0, 858, 0, 217,
5694 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5695 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5696 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5697 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5698 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
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, 0, 0, 0, 0, 0, 205, 206,
5702 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5703 216, 1020, 638, 0, 0, 1021, 0, 217, 0, 0,
5704 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5705 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5706 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5707 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5708 0, 0, 0, 0, 0, 0, 203, 204, 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, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5712 209, 210, 211, 212, 213, 214, 0, 215, 216, 1023,
5713 646, 0, 0, 1024, 0, 217, 0, 0, 0, 0,
5714 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5715 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5716 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5717 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5718 0, 0, 0, 0, 203, 204, 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, 0,
5721 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5722 211, 212, 213, 214, 0, 215, 216, 1307, 638, 0,
5723 0, 1308, 0, 217, 0, 0, 0, 0, 0, 0,
5724 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5725 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5726 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5727 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5728 0, 0, 203, 204, 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, 0, 0, 0,
5731 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5732 213, 214, 0, 215, 216, 1310, 646, 0, 0, 1311,
5733 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
5734 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5735 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5736 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5737 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5738 203, 204, 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, 0, 0, 0, 0, 0,
5741 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5742 0, 215, 216, 1355, 638, 0, 0, 1356, 0, 217,
5743 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5744 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5745 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5746 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5747 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
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, 0, 0, 0, 0, 0, 205, 206,
5751 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5752 216, 0, 0, 0, 0, 0, 0, 217
5755static const yytype_int16 yycheck[] =
5757 1, 59, 7, 103, 104, 15, 16, 107, 70, 58,
5758 58, 101, 116, 107, 347, 1, 1, 253, 13, 14,
5759 343, 56, 27, 7, 347, 115, 399, 256, 766, 425,
5760 759, 67, 573, 15, 16, 407, 27, 89, 836, 596,
5761 52, 53, 21, 27, 610, 343, 70, 15, 16, 347,
5762 596, 52, 53, 58, 89, 56, 56, 594, 761, 66,
5763 597, 295, 398, 111, 400, 299, 52, 53, 54, 55,
5764 470, 903, 54, 108, 109, 110, 470, 72, 478, 759,
5765 478, 816, 52, 107, 846, 600, 54, 55, 89, 63,
5766 64, 65, 15, 16, 80, 81, 625, 25, 905, 524,
5767 0, 474, 112, 1025, 1026, 84, 111, 108, 109, 110,
5768 111, 55, 941, 319, 320, 25, 514, 511, 454, 81,
5769 29, 564, 284, 687, 688, 84, 1282, 25, 1163, 1026,
5770 112, 78, 13, 1274, 101, 25, 693, 473, 104, 475,
5771 677, 107, 1177, 10, 112, 100, 34, 25, 34, 584,
5772 100, 100, 13, 526, 113, 590, 101, 721, 248, 100,
5773 26, 261, 262, 58, 52, 501, 52, 25, 1025, 1026,
5774 81, 154, 761, 0, 702, 158, 234, 766, 26, 134,
5775 28, 610, 607, 78, 134, 134, 276, 25, 155, 112,
5776 154, 527, 286, 134, 69, 1351, 13, 144, 145, 146,
5777 362, 68, 1343, 731, 37, 38, 134, 157, 151, 25,
5778 155, 15, 13, 108, 123, 1137, 1163, 112, 230, 309,
5779 120, 25, 1051, 98, 286, 25, 154, 155, 25, 230,
5780 158, 1063, 1179, 27, 969, 56, 336, 337, 338, 339,
5781 1137, 341, 342, 13, 230, 155, 256, 157, 258, 485,
5782 236, 237, 304, 13, 1083, 1062, 1085, 155, 687, 688,
5783 246, 999, 286, 13, 1299, 155, 267, 253, 26, 304,
5784 256, 13, 284, 154, 256, 237, 258, 155, 674, 160,
5785 1137, 267, 267, 284, 228, 151, 13, 231, 232, 233,
5786 258, 664, 721, 154, 273, 274, 303, 155, 284, 160,
5787 1003, 756, 675, 304, 759, 820, 749, 750, 408, 709,
5788 30, 711, 66, 711, 284, 709, 845, 155, 412, 856,
5789 13, 154, 850, 1180, 424, 236, 237, 417, 363, 665,
5790 1187, 1188, 860, 334, 540, 258, 542, 154, 1136, 155,
5791 676, 157, 161, 160, 306, 1025, 1026, 1294, 604, 334,
5792 362, 1298, 1299, 154, 155, 155, 1185, 1186, 155, 160,
5793 154, 362, 363, 363, 921, 119, 160, 15, 909, 17,
5794 336, 337, 338, 339, 1136, 921, 362, 98, 803, 943,
5795 944, 66, 1187, 1188, 154, 949, 950, 953, 412, 399,
5796 160, 69, 362, 151, 154, 400, 652, 409, 410, 157,
5797 160, 402, 658, 659, 154, 28, 13, 157, 409, 410,
5798 160, 1358, 154, 399, 1003, 157, 402, 52, 160, 97,
5799 98, 56, 401, 409, 410, 825, 983, 154, 1080, 1081,
5800 25, 825, 153, 160, 119, 134, 157, 974, 761, 1296,
5801 450, 427, 408, 766, 109, 69, 294, 295, 101, 454,
5802 100, 299, 155, 301, 1084, 83, 84, 1137, 424, 100,
5803 903, 154, 905, 699, 474, 154, 69, 160, 450, 1033,
5804 475, 160, 524, 97, 98, 153, 141, 912, 913, 157,
5805 709, 916, 450, 918, 134, 920, 66, 134, 474, 524,
5806 495, 1296, 726, 134, 1022, 98, 501, 483, 134, 485,
5807 1180, 154, 470, 112, 495, 155, 507, 1187, 1188, 137,
5808 138, 495, 154, 100, 943, 944, 526, 159, 155, 155,
5809 949, 950, 527, 524, 780, 469, 470, 450, 784, 153,
5810 1182, 1183, 738, 56, 478, 547, 930, 743, 157, 134,
5811 526, 121, 122, 511, 1342, 265, 547, 154, 1286, 134,
5812 52, 1280, 553, 160, 56, 607, 1084, 1187, 1188, 154,
5813 155, 547, 1151, 158, 100, 938, 66, 511, 553, 605,
5814 514, 595, 607, 100, 610, 101, 100, 822, 678, 25,
5815 100, 161, 155, 593, 570, 830, 596, 573, 844, 1018,
5816 990, 847, 990, 594, 134, 967, 597, 69, 134, 100,
5817 1280, 937, 100, 939, 1033, 861, 607, 134, 594, 1347,
5818 134, 597, 100, 155, 134, 715, 1296, 157, 1155, 1062,
5819 1063, 121, 122, 605, 124, 97, 98, 69, 610, 1064,
5820 1065, 1066, 1067, 657, 1162, 155, 134, 1165, 37, 38,
5821 360, 585, 654, 100, 656, 365, 134, 883, 157, 100,
5822 69, 687, 688, 654, 664, 656, 98, 1185, 644, 992,
5823 665, 605, 641, 649, 25, 675, 610, 155, 654, 992,
5824 656, 676, 1213, 1045, 1215, 727, 677, 134, 664, 98,
5825 1003, 153, 641, 134, 689, 721, 1082, 736, 134, 675,
5826 649, 677, 727, 1282, 992, 157, 1151, 1286, 689, 69,
5827 686, 69, 154, 155, 960, 689, 1177, 963, 154, 155,
5828 157, 157, 158, 699, 970, 69, 1187, 1188, 100, 154,
5829 976, 69, 157, 813, 100, 1058, 727, 686, 98, 97,
5830 98, 1259, 1260, 1261, 720, 1058, 26, 457, 458, 1276,
5831 719, 709, 1151, 97, 98, 1151, 69, 691, 468, 97,
5832 98, 803, 134, 853, 1126, 855, 476, 477, 134, 78,
5833 1058, 865, 1351, 69, 738, 709, 740, 711, 803, 743,
5834 744, 158, 69, 134, 97, 98, 496, 1212, 626, 69,
5835 159, 1309, 502, 1324, 69, 153, 100, 152, 1184, 154,
5836 69, 97, 98, 154, 155, 643, 134, 158, 1054, 153,
5837 97, 98, 803, 152, 69, 153, 69, 97, 98, 69,
5838 66, 67, 97, 98, 785, 863, 69, 788, 97, 98,
5839 134, 765, 69, 56, 69, 1280, 157, 1282, 1151, 155,
5840 854, 1286, 1204, 98, 97, 98, 1291, 97, 98, 161,
5841 69, 155, 1025, 1026, 97, 98, 832, 153, 834, 793,
5842 836, 98, 58, 98, 702, 856, 153, 825, 863, 959,
5843 926, 151, 928, 153, 66, 121, 122, 157, 153, 98,
5844 856, 1280, 78, 1282, 153, 100, 1282, 1286, 726, 78,
5845 1286, 825, 1291, 731, 598, 1291, 289, 853, 602, 855,
5846 153, 1264, 1347, 153, 1349, 890, 1351, 883, 1353, 843,
5847 153, 1084, 108, 109, 69, 100, 1294, 943, 944, 134,
5848 1298, 921, 151, 949, 950, 1370, 134, 119, 1101, 121,
5849 122, 134, 124, 909, 100, 134, 54, 775, 938, 1265,
5850 155, 651, 106, 98, 939, 141, 64, 65, 1347, 134,
5851 1349, 1347, 1351, 1349, 1353, 1351, 958, 1353, 155, 973,
5852 1206, 975, 938, 56, 1137, 66, 160, 958, 134, 1282,
5853 155, 1370, 25, 1286, 1370, 154, 155, 953, 14, 15,
5854 690, 953, 958, 974, 89, 90, 761, 1160, 138, 155,
5855 134, 993, 1018, 40, 41, 1, 930, 772, 974, 922,
5856 923, 26, 993, 959, 1177, 154, 155, 1033, 931, 15,
5857 16, 934, 850, 936, 1187, 1188, 155, 993, 119, 953,
5858 121, 122, 860, 69, 134, 1016, 1017, 1012, 1013, 305,
5859 306, 965, 155, 158, 1025, 1026, 152, 875, 1351, 1087,
5860 69, 1016, 1017, 155, 69, 158, 52, 53, 1050, 1088,
5861 56, 97, 98, 155, 78, 155, 990, 450, 155, 1050,
5862 155, 67, 134, 155, 1040, 52, 1042, 155, 97, 98,
5863 52, 152, 97, 98, 1050, 1321, 54, 55, 155, 57,
5864 1014, 155, 13, 89, 1174, 17, 64, 65, 481, 1080,
5865 1081, 484, 25, 1084, 1070, 1071, 489, 103, 104, 66,
5866 1125, 107, 108, 109, 110, 155, 112, 153, 818, 819,
5867 1101, 504, 1192, 1197, 152, 1049, 826, 827, 142, 143,
5868 144, 145, 146, 155, 153, 134, 151, 44, 153, 44,
5869 1132, 1133, 157, 152, 1125, 155, 1138, 155, 1129, 44,
5870 56, 1132, 1133, 44, 134, 1197, 1137, 1138, 66, 159,
5871 1152, 136, 119, 1129, 121, 122, 1132, 1133, 15, 8,
5872 1136, 1152, 1138, 155, 1155, 52, 155, 877, 878, 1160,
5873 880, 881, 1163, 152, 155, 155, 1152, 101, 155, 1155,
5874 155, 1271, 1272, 1197, 1022, 578, 1177, 1178, 1179, 66,
5875 155, 1182, 1183, 155, 1196, 155, 1187, 1188, 1246, 1224,
5876 1134, 119, 9, 121, 122, 1196, 124, 52, 1210, 54,
5877 55, 56, 57, 606, 155, 26, 66, 139, 1174, 1210,
5878 1196, 52, 152, 1199, 230, 935, 1001, 139, 1003, 155,
5879 1005, 52, 155, 1224, 1210, 155, 101, 1213, 948, 1215,
5880 56, 160, 119, 152, 121, 122, 1084, 1085, 687, 688,
5881 256, 158, 258, 155, 139, 261, 262, 102, 69, 155,
5882 1285, 267, 107, 155, 1264, 155, 705, 706, 56, 119,
5883 1265, 121, 122, 155, 155, 155, 986, 155, 284, 155,
5884 155, 155, 721, 155, 155, 1276, 97, 98, 1264, 682,
5885 1266, 157, 1268, 157, 1285, 1025, 1026, 155, 304, 267,
5886 1276, 334, 1140, 1294, 1129, 503, 66, 1298, 1299, 863,
5887 106, 605, 1314, 108, 507, 1271, 1272, 110, 98, 496,
5888 1223, 686, 1225, 1314, 1162, 954, 973, 1165, 334, 1199,
5889 336, 337, 338, 339, 749, 341, 342, 903, 1314, 1222,
5890 151, 1151, 153, 1286, 1280, 1071, 157, 1185, 1324, 1221,
5891 1080, 1081, 1178, 358, 1084, 1343, 362, 363, 866, 119,
5892 753, 121, 122, 1342, 1180, 1180, 1342, 1358, 1176, 1266,
5893 1268, 1101, 119, 1148, 542, 111, 1151, 52, 759, 54,
5894 55, 56, 57, 1221, 766, 52, 115, 54, 55, 56,
5895 57, 58, -1, 399, -1, 52, 402, 54, 55, 1337,
5896 57, -1, 408, 409, 410, -1, -1, 1137, -1, -1,
5897 52, 78, 54, 55, 56, 57, -1, -1, 424, -1,
5898 -1, 1259, 1260, 1261, 1327, 1328, -1, 102, 1331, 1332,
5899 1160, -1, 1335, 1163, 873, 102, 59, 60, 61, 62,
5900 107, 108, 109, -1, 450, 102, -1, 1177, 1178, 1179,
5901 -1, -1, 1182, 1183, -1, -1, -1, 1187, 1188, 1169,
5902 -1, 1364, 1365, 1366, 1367, -1, -1, -1, 474, 862,
5903 1373, 1309, -1, -1, 141, -1, -1, 144, 1, -1,
5904 1318, -1, -1, -1, 1025, 1026, -1, -1, -1, 882,
5905 -1, 884, 15, 16, 40, 41, 42, 43, 44, 1337,
5906 -1, 507, -1, -1, 943, 944, -1, 1282, 901, -1,
5907 949, 950, -1, -1, -1, -1, 1291, -1, 524, 52,
5908 526, 54, 55, 56, 57, -1, -1, -1, -1, 52,
5909 53, -1, -1, -1, -1, -1, -1, -1, -1, 1080,
5910 1081, 547, -1, 1084, 67, 984, 985, 553, 987, 988,
5911 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5912 1101, -1, -1, -1, 1294, -1, -1, -1, 1298, 1299,
5913 -1, -1, -1, -1, 1349, -1, 1351, -1, 1353, -1,
5914 103, 104, -1, -1, 107, -1, -1, 593, 594, 112,
5915 596, 597, -1, -1, 1033, 1370, 1137, -1, -1, 605,
5916 -1, 607, -1, -1, 610, 52, -1, 54, 55, 56,
5917 57, 58, -1, -1, -1, -1, -1, -1, 1057, 1160,
5918 -1, -1, 1163, -1, 1025, 1026, -1, -1, 1358, -1,
5919 -1, 78, -1, -1, -1, -1, 1177, 1178, 1179, -1,
5920 -1, 1182, 1183, -1, -1, 92, 1187, 1188, 654, -1,
5921 656, -1, -1, -1, -1, 102, -1, -1, 664, -1,
5922 107, 108, 109, -1, -1, -1, -1, -1, -1, 675,
5923 -1, 677, 678, -1, -1, -1, -1, -1, -1, 1080,
5924 1081, 687, 688, 1084, -1, -1, -1, -1, -1, -1,
5925 -1, -1, -1, -1, 141, -1, -1, 144, -1, -1,
5926 1101, -1, -1, -1, -1, -1, -1, 230, -1, 715,
5927 157, -1, -1, -1, 52, 721, 54, 55, 56, 57,
5928 58, 727, -1, 52, -1, 54, 55, 56, 57, 58,
5929 -1, -1, -1, 256, 78, 258, 1137, -1, 261, 262,
5930 78, -1, -1, -1, 267, -1, -1, -1, -1, 78,
5931 -1, 95, 96, 1294, 92, -1, -1, 1298, 1299, 1160,
5932 -1, 284, 1163, 92, 102, -1, -1, -1, -1, 107,
5933 108, 109, -1, 102, -1, -1, 1177, 1178, 1179, 108,
5934 109, 1182, 1183, -1, -1, -1, 1187, 1188, -1, -1,
5935 -1, 78, -1, 1186, -1, -1, -1, 803, 142, 143,
5936 144, 145, 146, 141, 78, -1, 144, -1, 95, 96,
5937 -1, 334, 141, 336, 337, 338, 339, 1358, 341, 342,
5938 -1, 95, 96, -1, -1, 52, -1, 54, 55, 56,
5939 57, 58, -1, -1, -1, -1, 1229, -1, -1, 362,
5940 -1, -1, -1, -1, -1, -1, 1239, 853, -1, 855,
5941 856, 78, 139, 140, 141, 142, 143, 144, 145, 146,
5942 -1, -1, -1, 1256, 1257, 1258, -1, 141, 142, 143,
5943 144, 145, 146, -1, -1, 102, 399, -1, -1, 402,
5944 -1, 108, 109, -1, -1, 408, 409, 410, -1, -1,
5945 -1, -1, -1, 1294, -1, -1, -1, 1298, 1299, -1,
5946 -1, 424, -1, 1025, 1026, -1, -1, -1, -1, -1,
5947 -1, -1, -1, -1, 141, 921, -1, -1, -1, -1,
5948 -1, -1, -1, -1, -1, -1, -1, 450, -1, -1,
5949 -1, -1, 938, -1, -1, -1, -1, 943, 944, -1,
5950 1, 1025, 1026, 949, 950, -1, -1, -1, -1, -1,
5951 -1, 474, 958, 959, 15, 16, -1, 1358, 1080, 1081,
5952 -1, -1, 1084, -1, -1, -1, -1, -1, 974, -1,
5953 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1101,
5954 -1, -1, -1, -1, 507, -1, -1, 993, -1, -1,
5955 -1, 52, 53, -1, -1, -1, 1080, 1081, -1, -1,
5956 1084, -1, -1, 526, -1, -1, 67, -1, -1, -1,
5957 1016, 1017, 1018, -1, -1, 1137, -1, 1101, -1, -1,
5958 -1, -1, -1, -1, 547, -1, -1, 1033, -1, -1,
5959 553, -1, -1, -1, -1, -1, -1, -1, 1160, -1,
5960 -1, 1163, 103, 104, 1050, -1, 107, -1, -1, -1,
5961 -1, 112, -1, 1137, -1, 1177, 1178, 1179, -1, -1,
5962 1182, 1183, -1, -1, -1, 1187, 1188, -1, -1, -1,
5963 593, 594, -1, 596, 597, -1, 1160, -1, -1, 1163,
5964 -1, -1, 605, -1, -1, -1, -1, 610, -1, -1,
5965 -1, -1, -1, 1177, 1178, 1179, -1, -1, 1182, 1183,
5966 -1, -1, -1, 1187, 1188, -1, -1, -1, -1, -1,
5967 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1125,
5968 -1, -1, -1, 1129, -1, -1, 1132, 1133, -1, -1,
5969 -1, 654, 1138, 656, -1, -1, -1, -1, -1, -1,
5970 -1, 664, -1, -1, -1, -1, 1152, -1, -1, 1155,
5971 -1, -1, 675, -1, 677, 678, -1, -1, -1, -1,
5972 -1, -1, -1, -1, 687, 688, -1, -1, 1174, 230,
5973 -1, -1, 1294, -1, -1, -1, 1298, 1299, -1, -1,
5974 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5975 1196, -1, 715, -1, -1, 256, -1, 258, 721, -1,
5976 261, 262, -1, -1, 1210, -1, 267, -1, -1, -1,
5977 1294, -1, -1, -1, 1298, 1299, -1, -1, 1224, -1,
5978 -1, -1, -1, 284, -1, -1, -1, -1, -1, -1,
5979 -1, -1, -1, 1025, 1026, -1, 1358, -1, -1, -1,
5980 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5981 -1, -1, -1, -1, -1, -1, -1, -1, 1264, -1,
5982 -1, -1, -1, -1, -1, 1271, 1272, -1, -1, -1,
5983 1276, -1, -1, 334, 1358, 336, 337, 338, 339, 1285,
5984 341, 342, -1, -1, -1, -1, -1, -1, 1080, 1081,
5985 -1, -1, 1084, 78, 79, 80, 81, 82, 83, 84,
5986 85, 362, 87, 88, -1, -1, -1, -1, 1314, 1101,
5987 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
5988 -1, -1, -1, -1, -1, 1025, 1026, -1, -1, -1,
5989 853, -1, 855, 856, -1, -1, -1, -1, 399, -1,
5990 -1, 402, -1, -1, -1, 1137, -1, 408, 409, 410,
5991 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
5992 145, 146, -1, 424, -1, -1, -1, -1, 1160, -1,
5993 -1, 1163, -1, -1, -1, -1, -1, -1, 1, -1,
5994 1080, 1081, -1, -1, 1084, 1177, 1178, 1179, -1, 450,
5995 1182, 1183, 15, 16, -1, 1187, 1188, -1, 921, -1,
5996 -1, 1101, -1, -1, -1, -1, -1, -1, -1, -1,
5997 -1, -1, -1, 474, -1, 938, -1, -1, -1, -1,
5998 943, 944, -1, -1, -1, -1, 949, 950, -1, 52,
5999 53, -1, -1, -1, -1, 958, 959, 1137, -1, -1,
6000 -1, -1, -1, -1, 67, -1, 507, -1, -1, -1,
6001 -1, 974, -1, -1, -1, -1, -1, -1, 25, -1,
6002 1160, -1, -1, 1163, -1, 526, -1, -1, -1, -1,
6003 993, -1, -1, -1, -1, -1, -1, 1177, 1178, 1179,
6004 103, 104, 1182, 1183, 107, -1, 547, 1187, 1188, 112,
6005 -1, -1, 553, 1016, 1017, 1018, -1, -1, -1, -1,
6006 -1, -1, 1294, -1, -1, -1, 1298, 1299, -1, -1,
6007 1033, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6008 87, 88, 89, 90, -1, -1, -1, 1050, 95, 96,
6009 -1, -1, 593, 594, 101, 596, 597, -1, -1, -1,
6010 -1, -1, -1, -1, 605, -1, -1, -1, -1, 610,
6011 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6012 -1, -1, -1, -1, -1, -1, 1358, -1, 135, -1,
6013 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6014 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6015 -1, -1, -1, 654, 1294, 656, -1, -1, 1298, 1299,
6016 -1, -1, -1, 664, -1, -1, 1129, 230, -1, 1132,
6017 1133, -1, -1, -1, 675, 1138, 677, 678, -1, -1,
6018 -1, -1, -1, -1, -1, -1, 687, 688, -1, 1152,
6019 -1, -1, 1155, 256, -1, 258, -1, -1, 261, 262,
6020 -1, -1, -1, -1, 267, 1025, 1026, -1, -1, -1,
6021 -1, 1174, -1, -1, 715, -1, -1, -1, 1358, -1,
6022 721, 284, -1, -1, -1, -1, -1, -1, -1, -1,
6023 -1, -1, -1, 1196, -1, -1, 1025, 1026, -1, -1,
6024 -1, -1, -1, -1, -1, -1, -1, 1210, -1, -1,
6025 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6026 1080, 1081, -1, -1, 1084, -1, -1, -1, -1, -1,
6027 -1, 334, -1, 336, 337, 338, 339, -1, 341, 342,
6028 -1, 1101, -1, -1, -1, -1, -1, -1, -1, -1,
6029 -1, 1080, 1081, -1, -1, 1084, -1, -1, -1, 362,
6030 -1, 1264, -1, -1, -1, -1, -1, -1, 1271, 1272,
6031 -1, -1, 1101, 1276, 1, -1, -1, 1137, -1, -1,
6032 -1, -1, -1, -1, -1, -1, 1, -1, -1, -1,
6033 -1, -1, -1, -1, -1, -1, 399, -1, -1, 402,
6034 1160, -1, -1, 1163, -1, 408, 409, 410, 1137, -1,
6035 -1, 1314, 853, -1, 855, 856, -1, 1177, 1178, 1179,
6036 -1, 424, 1182, 1183, -1, 52, 53, 1187, 1188, 56,
6037 -1, 1160, -1, -1, 1163, -1, -1, 52, 53, -1,
6038 -1, 56, -1, -1, -1, -1, -1, 450, 1177, 1178,
6039 1179, -1, -1, 1182, 1183, -1, -1, -1, 1187, 1188,
6040 -1, -1, 89, -1, -1, -1, -1, -1, -1, -1,
6041 -1, 474, -1, -1, 89, -1, -1, -1, -1, -1,
6042 921, 108, 109, 110, -1, -1, -1, -1, -1, -1,
6043 -1, -1, -1, 108, 109, 110, -1, 938, -1, -1,
6044 -1, -1, 943, 944, 507, -1, -1, -1, 949, 950,
6045 -1, -1, -1, -1, -1, -1, -1, 958, 959, -1,
6046 -1, -1, -1, 526, -1, -1, -1, -1, -1, -1,
6047 -1, -1, -1, 974, 1294, -1, -1, -1, 1298, 1299,
6048 -1, -1, -1, -1, 547, -1, -1, -1, -1, -1,
6049 553, -1, 993, -1, -1, -1, -1, -1, -1, -1,
6050 -1, -1, -1, -1, -1, 1294, -1, -1, -1, 1298,
6051 1299, -1, -1, -1, -1, 1016, 1017, 1018, -1, -1,
6052 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6053 593, 594, 1033, 596, 597, -1, -1, -1, 1358, -1,
6054 -1, -1, 605, 230, -1, -1, -1, 610, -1, 1050,
6055 -1, -1, -1, -1, -1, 230, -1, -1, -1, -1,
6056 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1358,
6057 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6058 267, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6059 -1, 654, 267, 656, -1, -1, -1, 284, -1, -1,
6060 -1, 664, -1, -1, -1, -1, -1, -1, -1, 284,
6061 -1, -1, 675, -1, 677, 678, -1, 304, -1, -1,
6062 -1, -1, -1, -1, 687, 688, -1, -1, 1129, 304,
6063 -1, 1132, 1133, -1, -1, -1, -1, 1138, -1, 78,
6064 79, 80, 81, 82, 83, 84, -1, 334, 87, 88,
6065 -1, 1152, 715, -1, 1155, -1, 95, 96, 721, 334,
6066 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6067 -1, -1, -1, 1174, -1, 362, 363, -1, -1, -1,
6068 -1, -1, -1, -1, -1, -1, -1, 362, 363, -1,
6069 -1, -1, 1, -1, -1, 1196, -1, -1, 137, 138,
6070 139, 140, 141, 142, 143, 144, 145, 146, -1, 1210,
6071 -1, -1, -1, -1, -1, 402, -1, -1, -1, -1,
6072 -1, -1, 409, 410, -1, -1, -1, 402, -1, -1,
6073 -1, -1, -1, -1, 409, 410, -1, -1, -1, -1,
6074 -1, -1, -1, 52, 53, -1, -1, 56, -1, -1,
6075 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6076 -1, -1, -1, 1264, -1, -1, -1, -1, -1, -1,
6077 1271, 1272, -1, -1, -1, 1276, -1, -1, -1, -1,
6078 89, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6079 853, -1, 855, 856, -1, -1, -1, -1, -1, 108,
6080 109, 110, -1, -1, -1, -1, -1, -1, -1, -1,
6081 -1, -1, -1, 1314, -1, -1, -1, -1, -1, -1,
6082 507, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6083 -1, -1, 507, -1, -1, -1, -1, 524, 78, 79,
6084 80, 81, 82, 83, 84, -1, -1, 87, 88, 524,
6085 -1, -1, -1, -1, -1, 95, 96, -1, 921, -1,
6086 547, -1, -1, -1, -1, -1, 553, -1, -1, -1,
6087 -1, -1, 547, -1, -1, 938, -1, -1, 553, -1,
6088 943, 944, -1, -1, -1, -1, 949, 950, -1, -1,
6089 -1, -1, -1, -1, -1, 958, 959, 137, 138, 139,
6090 140, 141, 142, 143, 144, 145, 146, 594, -1, -1,
6091 597, 974, -1, -1, -1, -1, -1, -1, -1, 594,
6092 607, 230, 597, 610, -1, -1, -1, -1, -1, -1,
6093 993, -1, 607, -1, -1, 610, -1, -1, -1, -1,
6094 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6095 -1, -1, -1, 1016, 1017, 1018, -1, -1, 267, -1,
6096 -1, -1, -1, -1, -1, -1, -1, 654, -1, 656,
6097 1033, -1, -1, -1, -1, 284, 1, -1, -1, 654,
6098 -1, 656, -1, -1, -1, -1, -1, 1050, -1, -1,
6099 677, -1, -1, -1, -1, 304, -1, -1, -1, -1,
6100 687, 688, 677, -1, -1, -1, -1, -1, -1, -1,
6101 -1, -1, 687, 688, -1, -1, -1, -1, -1, -1,
6102 -1, -1, -1, -1, -1, 334, -1, 52, 53, -1,
6103 -1, 56, -1, -1, 721, -1, -1, -1, -1, -1,
6104 727, -1, -1, -1, -1, -1, 721, -1, -1, 736,
6105 -1, -1, 727, 362, 363, -1, -1, -1, -1, -1,
6106 -1, -1, -1, -1, 89, -1, 1129, -1, -1, 1132,
6107 1133, -1, -1, -1, -1, 1138, -1, -1, -1, 33,
6108 34, 35, 36, 108, 109, 110, 111, -1, -1, 1152,
6109 -1, -1, 1155, 402, -1, 49, 50, 51, 52, -1,
6110 409, 410, 56, -1, -1, 59, 60, 61, 62, 63,
6111 -1, 1174, -1, -1, -1, -1, 803, -1, -1, -1,
6112 -1, -1, -1, -1, -1, -1, -1, -1, 803, -1,
6113 -1, -1, -1, 1196, -1, -1, -1, 91, 92, -1,
6114 -1, -1, -1, -1, -1, 99, -1, 1210, 102, -1,
6115 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6116 114, 115, 116, 117, 118, -1, -1, -1, -1, 856,
6117 -1, -1, -1, -1, -1, -1, -1, 1, -1, -1,
6118 -1, 856, -1, -1, -1, -1, 140, -1, -1, -1,
6119 -1, -1, -1, 147, -1, -1, -1, -1, 507, -1,
6120 154, 1264, -1, -1, -1, 230, -1, -1, 1271, 1272,
6121 -1, -1, -1, 1276, -1, 524, -1, -1, -1, -1,
6122 -1, -1, -1, -1, -1, -1, -1, -1, 52, 53,
6123 -1, -1, -1, -1, -1, -1, -1, -1, 547, -1,
6124 -1, -1, 267, -1, 553, -1, -1, -1, -1, -1,
6125 -1, 1314, -1, -1, -1, -1, 943, 944, -1, 284,
6126 -1, -1, 949, 950, -1, -1, -1, -1, 943, 944,
6127 -1, 958, -1, -1, 949, 950, -1, -1, -1, 304,
6128 -1, -1, -1, 958, 108, 594, -1, 974, 597, -1,
6129 -1, -1, -1, -1, -1, -1, -1, -1, 607, 974,
6130 -1, 610, -1, -1, -1, -1, 993, -1, -1, 334,
6131 -1, -1, -1, -1, -1, -1, -1, -1, 993, -1,
6132 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1016,
6133 1017, 1018, -1, -1, -1, -1, -1, 362, 363, -1,
6134 -1, 1016, 1017, 1018, -1, 654, 1033, 656, -1, -1,
6135 -1, -1, -1, -1, -1, -1, -1, -1, 1033, -1,
6136 -1, -1, -1, 1050, -1, -1, -1, -1, 677, -1,
6137 -1, -1, -1, -1, -1, 1050, -1, 402, 687, 688,
6138 -1, -1, -1, -1, 409, 410, -1, -1, -1, -1,
6139 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6140 -1, -1, -1, -1, 1, -1, 230, -1, -1, -1,
6141 -1, -1, 721, -1, -1, -1, -1, -1, 727, -1,
6142 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6143 -1, -1, -1, -1, -1, -1, -1, -1, 1125, -1,
6144 -1, -1, 1129, 267, -1, 1132, 1133, -1, -1, -1,
6145 1125, 1138, -1, -1, 1129, 52, 53, 1132, 1133, -1,
6146 284, -1, -1, 1138, -1, 1152, -1, -1, 1155, -1,
6147 -1, -1, -1, -1, -1, -1, -1, 1152, -1, -1,
6148 1155, -1, 507, -1, -1, -1, -1, -1, -1, -1,
6149 -1, -1, -1, -1, 803, -1, -1, -1, -1, 524,
6150 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1196,
6151 334, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6152 -1, 1196, 547, 1210, -1, -1, -1, -1, 553, -1,
6153 -1, -1, -1, -1, -1, 1210, -1, 1224, 362, -1,
6154 -1, -1, -1, -1, -1, -1, -1, 856, -1, 1224,
6155 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6156 82, 83, 84, 85, 86, 87, 88, 89, 90, 594,
6157 -1, -1, 597, 95, 96, -1, -1, -1, 402, -1,
6158 -1, -1, 607, -1, -1, 409, 410, -1, -1, 1276,
6159 -1, -1, -1, -1, -1, -1, -1, -1, 1285, -1,
6160 -1, 1276, -1, -1, -1, -1, -1, -1, -1, -1,
6161 1285, -1, -1, 135, -1, 137, 138, 139, 140, 141,
6162 142, 143, 144, 145, 146, -1, -1, 1314, -1, 654,
6163 -1, 656, 154, 230, 943, 944, -1, -1, -1, 1314,
6164 949, 950, -1, -1, -1, -1, -1, -1, -1, 958,
6165 -1, -1, 677, -1, 44, -1, -1, -1, -1, -1,
6166 -1, -1, -1, -1, -1, 974, -1, -1, -1, -1,
6167 267, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6168 -1, -1, -1, 507, 993, -1, -1, 284, 78, 79,
6169 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6170 90, -1, 727, -1, -1, 95, 96, 1016, 1017, 1018,
6171 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6172 -1, -1, -1, 547, 1033, -1, -1, -1, -1, 553,
6173 -1, -1, -1, -1, -1, -1, -1, 334, -1, -1,
6174 -1, 1050, -1, -1, -1, 135, -1, 137, 138, 139,
6175 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6176 -1, -1, -1, -1, -1, 362, -1, -1, -1, -1,
6177 594, -1, -1, 597, -1, -1, -1, -1, 803, -1,
6178 -1, -1, -1, -1, -1, -1, 610, -1, -1, -1,
6179 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6180 -1, -1, -1, -1, -1, 402, -1, -1, -1, -1,
6181 -1, -1, 409, 410, -1, -1, 1125, -1, -1, -1,
6182 1129, -1, -1, 1132, 1133, -1, -1, -1, -1, 1138,
6183 654, 856, 656, -1, -1, -1, -1, -1, -1, -1,
6184 -1, -1, -1, 1152, -1, -1, 1155, -1, -1, -1,
6185 -1, -1, -1, 677, -1, -1, -1, -1, -1, -1,
6186 -1, -1, -1, 687, 688, -1, -1, -1, -1, -1,
6187 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6188 -1, -1, -1, -1, -1, -1, -1, 1196, -1, -1,
6189 -1, -1, -1, -1, -1, -1, -1, 721, -1, -1,
6190 -1, 1210, -1, -1, 0, -1, -1, -1, -1, -1,
6191 507, -1, 8, 9, 10, 1224, -1, 13, 14, 15,
6192 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6193 26, 27, -1, 958, -1, -1, -1, -1, -1, -1,
6194 -1, 37, 38, 44, 40, 41, 42, 43, 44, 974,
6195 547, -1, -1, -1, -1, -1, 553, -1, -1, -1,
6196 -1, -1, -1, -1, -1, -1, -1, 1276, 993, -1,
6197 -1, -1, 68, 69, -1, -1, 1285, 78, 79, 80,
6198 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
6199 -1, 1016, 1017, -1, 95, 96, -1, 594, -1, -1,
6200 597, 97, 98, -1, -1, 1314, -1, -1, -1, -1,
6201 -1, -1, -1, 610, -1, -1, -1, -1, -1, -1,
6202 -1, -1, -1, -1, 120, 1050, -1, -1, -1, -1,
6203 -1, -1, 856, -1, 135, -1, 137, 138, 139, 140,
6204 141, 142, 143, 144, 145, 146, -1, -1, -1, -1,
6205 -1, -1, -1, -1, 155, 151, 152, 654, 154, 656,
6206 -1, 157, 158, -1, 160, -1, -1, -1, -1, -1,
6207 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6208 677, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6209 687, 688, -1, -1, -1, -1, -1, -1, -1, -1,
6210 1125, -1, -1, -1, 1129, -1, -1, 1132, 1133, -1,
6211 -1, -1, -1, 1138, -1, -1, -1, -1, -1, 943,
6212 944, 15, 16, -1, 721, 949, 950, 1152, -1, -1,
6213 1155, -1, -1, -1, 958, -1, -1, -1, -1, -1,
6214 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6215 974, -1, -1, 47, 48, 49, 50, -1, -1, -1,
6216 54, 55, -1, -1, -1, -1, -1, -1, -1, 993,
6217 -1, 1196, -1, 67, 68, -1, -1, -1, -1, -1,
6218 -1, -1, -1, -1, -1, 1210, -1, -1, -1, -1,
6219 -1, -1, 1016, 1017, 1018, -1, -1, -1, -1, 1224,
6220 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1033,
6221 -1, -1, -1, 33, 34, 35, 36, -1, 112, -1,
6222 -1, -1, -1, -1, -1, -1, 1050, -1, -1, 49,
6223 50, 51, 52, -1, -1, -1, 56, -1, 58, 59,
6224 60, 61, 62, 63, -1, -1, -1, -1, -1, -1,
6225 -1, 1276, -1, -1, -1, -1, -1, -1, 78, 856,
6226 1285, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6227 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6228 -1, -1, 102, -1, 104, 105, -1, 107, 108, 1314,
6229 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6230 -1, 1125, -1, -1, -1, 1129, -1, -1, 1132, 1133,
6231 -1, -1, -1, -1, 1138, -1, -1, -1, -1, -1,
6232 140, -1, -1, -1, -1, -1, -1, 147, 1152, -1,
6233 -1, 1155, -1, -1, 228, -1, -1, 231, 232, 233,
6234 -1, 235, -1, -1, -1, -1, 943, 944, -1, -1,
6235 -1, -1, 949, 950, -1, -1, -1, -1, -1, -1,
6236 -1, 958, 256, -1, 258, 33, 34, 35, 36, -1,
6237 -1, -1, 1196, -1, 52, 53, -1, 974, 56, -1,
6238 -1, 49, 50, 51, -1, -1, 1210, -1, -1, -1,
6239 -1, 59, 60, 61, 62, 63, 993, -1, 76, 77,
6240 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
6241 88, -1, -1, -1, -1, 93, 94, 95, 96, 1016,
6242 1017, 1018, -1, -1, -1, -1, -1, -1, -1, 107,
6243 108, -1, -1, -1, -1, -1, 1033, -1, -1, -1,
6244 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
6245 118, -1, 1276, 1050, -1, -1, -1, -1, -1, 137,
6246 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6247 148, 149, -1, 367, 368, 369, 370, 371, 156, 147,
6248 374, 375, 376, 377, 378, 379, 380, 381, -1, 383,
6249 1314, -1, 386, 387, 388, 389, 390, 391, 392, 393,
6250 394, 395, -1, -1, -1, 399, 78, 79, 80, 81,
6251 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6252 -1, -1, -1, 95, 96, -1, -1, -1, -1, -1,
6253 -1, -1, 1129, -1, -1, 1132, 1133, -1, -1, -1,
6254 -1, 1138, -1, -1, -1, -1, -1, -1, -1, -1,
6255 -1, -1, -1, -1, -1, 1152, 450, -1, 1155, -1,
6256 -1, -1, -1, 135, -1, 137, 138, 139, 140, 141,
6257 142, 143, 144, 145, 146, 469, 470, -1, -1, -1,
6258 474, -1, -1, -1, 478, -1, 480, -1, -1, -1,
6259 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1196,
6260 -1, -1, -1, -1, 498, -1, -1, -1, -1, -1,
6261 -1, -1, -1, 1210, -1, -1, -1, 511, -1, -1,
6262 514, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6263 -1, -1, 526, -1, -1, -1, -1, -1, -1, -1,
6264 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6265 544, -1, -1, -1, 33, 34, 35, 36, -1, -1,
6266 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6267 49, 50, 51, 52, -1, -1, -1, 56, -1, 1276,
6268 59, 60, 61, 62, 63, -1, -1, -1, -1, -1,
6269 -1, 585, -1, -1, -1, -1, -1, -1, -1, 593,
6270 -1, -1, 596, -1, -1, -1, -1, -1, -1, -1,
6271 -1, 605, 91, 92, -1, -1, 610, 1314, -1, -1,
6272 99, -1, -1, 102, -1, 104, 105, -1, 107, -1,
6273 -1, 110, 111, 112, 113, 114, 115, 116, 117, 118,
6274 -1, -1, -1, -1, -1, -1, -1, 52, 53, -1,
6275 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
6276 -1, 140, -1, -1, -1, -1, -1, -1, 147, -1,
6277 664, 76, 77, 78, 79, 80, 81, 82, 83, 84,
6278 -1, 675, 87, 88, -1, -1, -1, -1, 93, 94,
6279 95, 96, -1, 687, 688, -1, -1, 691, 692, 693,
6280 694, -1, 107, 108, -1, -1, -1, -1, -1, -1,
6281 -1, 705, 706, -1, -1, 709, -1, 711, -1, -1,
6282 -1, -1, -1, -1, -1, -1, -1, 721, -1, -1,
6283 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
6284 145, 146, -1, 148, 149, -1, -1, -1, -1, -1,
6285 -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
6286 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6287 -1, 765, -1, -1, -1, -1, -1, -1, -1, -1,
6288 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6289 -1, -1, -1, -1, -1, -1, -1, -1, -1, 793,
6290 -1, -1, -1, -1, -1, 0, 1, -1, 3, 4,
6291 5, 6, 7, 8, 9, 10, 11, 12, -1, 14,
6292 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
6293 25, 825, -1, -1, -1, 30, 31, 32, 33, 34,
6294 35, 36, -1, -1, 39, -1, -1, -1, -1, 843,
6295 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
6296 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6297 65, -1, -1, 68, -1, -1, -1, -1, -1, 873,
6298 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6299 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6300 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
6301 105, -1, 107, -1, -1, 110, 111, 112, 113, 114,
6302 115, 116, 117, 118, -1, 120, -1, 921, -1, -1,
6303 -1, -1, -1, -1, -1, -1, 930, -1, -1, -1,
6304 -1, -1, -1, -1, 938, -1, -1, -1, 942, 943,
6305 944, -1, 147, 148, 149, 949, 950, 152, -1, 953,
6306 -1, -1, -1, 158, -1, 160, -1, -1, -1, -1,
6307 -1, 965, -1, -1, -1, -1, -1, -1, -1, -1,
6308 -1, -1, -1, -1, -1, -1, -1, -1, -1, 983,
6309 984, 985, -1, 987, 988, -1, 990, -1, -1, -1,
6310 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6311 -1, -1, -1, -1, -1, -1, 1010, 1011, -1, -1,
6312 1014, -1, -1, -1, 1018, 1019, -1, -1, -1, -1,
6313 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1033,
6314 -1, -1, -1, -1, -1, -1, 0, 1, -1, 3,
6315 4, 5, 6, 7, -1, 1049, -1, 11, 12, -1,
6316 -1, -1, 16, 1057, 18, 19, 20, 21, 22, 23,
6317 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6318 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6319 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6320 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6321 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6322 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6323 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6324 1134, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6325 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6326 114, 115, 116, 117, 118, -1, 120, -1, -1, -1,
6327 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6328 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6329 -1, -1, -1, 147, 148, 149, -1, -1, 0, 1,
6330 154, 3, 4, 5, 6, 7, 160, -1, -1, 11,
6331 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6332 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6333 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6334 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6335 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6336 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6337 1264, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6338 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6339 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6340 102, 103, 104, 105, -1, 107, -1, -1, 110, 111,
6341 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
6342 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6343 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6344 -1, -1, -1, -1, -1, 147, 148, 149, -1, -1,
6345 0, 1, 154, 3, 4, 5, 6, 7, 160, -1,
6346 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
6347 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
6348 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6349 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
6350 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6351 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
6352 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
6353 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6354 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6355 -1, -1, 102, 103, 104, 105, -1, 107, -1, -1,
6356 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6357 -1, -1, -1, -1, -1, -1, -1, -1, 0, -1,
6358 -1, -1, -1, -1, -1, -1, 8, 9, 10, -1,
6359 -1, 13, 14, 15, -1, 17, -1, 147, 148, 149,
6360 -1, -1, 152, 25, 26, 27, 28, 29, -1, -1,
6361 160, -1, -1, -1, -1, 37, 38, -1, 40, 41,
6362 42, 43, 44, -1, -1, -1, 78, 79, 80, 81,
6363 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6364 -1, -1, -1, 95, 96, -1, 68, 69, -1, -1,
6365 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6366 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6367 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
6368 -1, -1, -1, -1, 106, 137, 138, 139, 140, 141,
6369 142, 143, 144, 145, 146, -1, -1, -1, 120, -1,
6370 -1, 123, -1, -1, -1, -1, -1, -1, -1, -1,
6371 -1, -1, 134, 135, 136, 137, 138, 139, 140, 141,
6372 142, 143, 144, 145, 146, -1, -1, -1, -1, 151,
6373 152, 153, 154, 155, 0, -1, 158, 159, 160, -1,
6374 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
6375 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6376 -1, 27, 28, 29, -1, -1, -1, -1, -1, -1,
6377 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6378 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6379 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6380 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6381 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6382 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6383 96, 97, 98, -1, 100, 101, -1, -1, -1, -1,
6384 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6385 -1, -1, -1, -1, 120, -1, -1, 123, -1, -1,
6386 -1, -1, -1, -1, -1, -1, -1, -1, 134, 135,
6387 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6388 146, -1, -1, -1, -1, -1, 152, 153, 154, 155,
6389 0, -1, 158, 159, 160, -1, -1, -1, 8, 9,
6390 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
6391 -1, -1, -1, -1, -1, 25, -1, 27, 28, 29,
6392 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
6393 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
6394 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6395 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
6396 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
6397 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6398 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
6399 100, 101, -1, -1, -1, -1, 106, -1, -1, -1,
6400 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6401 120, -1, -1, 123, -1, -1, -1, -1, -1, -1,
6402 -1, -1, -1, -1, 134, 135, 136, 137, 138, 139,
6403 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6404 -1, -1, 152, 153, 154, 155, 0, -1, 158, 159,
6405 160, -1, -1, -1, 8, 9, 10, -1, -1, 13,
6406 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
6407 -1, 25, 26, 27, 28, 29, -1, -1, -1, -1,
6408 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6409 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6410 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6411 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
6412 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6413 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6414 -1, 95, 96, 97, 98, -1, -1, 101, -1, -1,
6415 -1, -1, 106, -1, -1, -1, -1, -1, -1, -1,
6416 -1, -1, -1, -1, -1, -1, 120, -1, -1, 123,
6417 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6418 -1, 135, 136, 137, 138, 139, 140, 141, 142, 143,
6419 144, 145, 146, -1, -1, -1, -1, 151, 152, 153,
6420 154, 155, 0, -1, 158, 159, 160, -1, -1, -1,
6421 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
6422 -1, -1, -1, -1, -1, -1, -1, 25, 26, 27,
6423 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
6424 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
6425 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6426 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6427 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
6428 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6429 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
6430 98, -1, -1, 101, -1, -1, -1, -1, 106, -1,
6431 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6432 -1, -1, 120, -1, -1, 123, -1, -1, -1, -1,
6433 -1, -1, -1, -1, -1, -1, -1, 135, 136, 137,
6434 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6435 -1, -1, -1, 151, 152, 153, 154, 155, 0, -1,
6436 158, 159, 160, -1, -1, -1, 8, 9, 10, -1,
6437 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
6438 -1, -1, -1, 25, 26, 27, 28, -1, -1, -1,
6439 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
6440 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
6441 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6442 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
6443 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6444 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6445 -1, -1, -1, 95, 96, 97, 98, -1, -1, 101,
6446 -1, -1, -1, -1, 106, -1, -1, -1, -1, -1,
6447 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
6448 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6449 -1, -1, -1, 135, -1, 137, 138, 139, 140, 141,
6450 142, 143, 144, 145, 146, -1, -1, -1, -1, 151,
6451 152, 153, 154, 155, 0, 157, 158, 159, 160, -1,
6452 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
6453 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6454 -1, 27, 28, 29, -1, -1, -1, -1, -1, -1,
6455 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6456 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6457 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6458 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6459 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6460 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6461 96, 97, 98, -1, -1, 101, -1, -1, -1, -1,
6462 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6463 -1, -1, -1, -1, 120, -1, -1, 123, -1, -1,
6464 -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
6465 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6466 146, -1, -1, -1, -1, -1, 152, 153, 154, 155,
6467 0, -1, 158, 159, 160, -1, -1, -1, 8, 9,
6468 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
6469 -1, -1, -1, -1, -1, 25, 26, 27, 28, -1,
6470 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
6471 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
6472 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6473 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
6474 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
6475 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6476 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
6477 -1, 101, -1, -1, -1, -1, 106, -1, -1, -1,
6478 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6479 120, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6480 -1, -1, -1, -1, -1, 135, -1, 137, 138, 139,
6481 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6482 -1, 151, 152, 153, 154, 155, 0, 157, 158, 159,
6483 160, -1, -1, -1, 8, 9, 10, -1, -1, 13,
6484 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
6485 -1, 25, -1, 27, 28, -1, -1, -1, -1, -1,
6486 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6487 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6488 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6489 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
6490 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6491 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6492 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
6493 -1, -1, 106, -1, -1, -1, -1, -1, -1, -1,
6494 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
6495 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6496 134, 135, -1, 137, 138, 139, 140, 141, 142, 143,
6497 144, 145, 146, -1, -1, -1, -1, 151, 152, 153,
6498 154, 155, 0, -1, 158, 159, 160, -1, -1, -1,
6499 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
6500 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
6501 28, -1, -1, -1, -1, -1, -1, -1, -1, 37,
6502 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
6503 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6504 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6505 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
6506 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6507 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
6508 98, -1, -1, 101, -1, -1, -1, -1, 106, -1,
6509 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6510 -1, -1, 120, -1, -1, -1, -1, -1, -1, -1,
6511 -1, -1, -1, -1, -1, -1, -1, 135, -1, 137,
6512 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6513 -1, -1, -1, -1, 152, 153, 154, 155, 0, 157,
6514 158, 159, 160, -1, -1, -1, 8, 9, 10, -1,
6515 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
6516 -1, -1, -1, 25, 26, -1, -1, -1, -1, -1,
6517 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
6518 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
6519 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6520 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
6521 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6522 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6523 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
6524 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6525 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
6526 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6527 -1, -1, 134, 135, -1, 137, 138, 139, 140, 141,
6528 142, 143, 144, 145, 146, -1, -1, -1, -1, 151,
6529 152, 153, 154, 155, 0, -1, 158, -1, 160, -1,
6530 -1, -1, 8, 9, 10, -1, -1, -1, 14, 15,
6531 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6532 26, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6533 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6534 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6535 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6536 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6537 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6538 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6539 96, 97, 98, -1, 100, 101, -1, -1, -1, -1,
6540 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6541 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
6542 -1, -1, -1, -1, -1, -1, -1, -1, 134, 135,
6543 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6544 146, -1, -1, -1, -1, 151, 152, 153, 154, 155,
6545 0, -1, 158, -1, 160, -1, -1, -1, 8, 9,
6546 10, -1, -1, -1, 14, 15, -1, 17, -1, -1,
6547 -1, -1, -1, -1, -1, 25, -1, -1, -1, -1,
6548 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
6549 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
6550 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6551 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
6552 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
6553 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6554 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
6555 100, 101, -1, -1, -1, -1, -1, -1, -1, -1,
6556 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6557 120, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6558 -1, -1, -1, -1, 134, 135, -1, 137, 138, 139,
6559 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6560 -1, 151, 152, 153, 154, 155, 0, -1, 158, -1,
6561 160, -1, -1, -1, 8, 9, 10, -1, -1, -1,
6562 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
6563 -1, 25, -1, -1, -1, -1, -1, -1, -1, -1,
6564 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6565 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6566 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6567 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
6568 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6569 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6570 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
6571 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6572 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
6573 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6574 134, 135, -1, 137, 138, 139, 140, 141, 142, 143,
6575 144, 145, 146, -1, -1, -1, -1, 151, 152, 153,
6576 154, 155, -1, -1, 158, 1, 160, 3, 4, 5,
6577 6, 7, 8, 9, 10, 11, 12, -1, -1, 15,
6578 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6579 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6580 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6581 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6582 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6583 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
6584 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6585 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6586 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6587 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6588 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6589 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6590 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6591 -1, 147, 148, 149, -1, -1, -1, 1, 154, 3,
6592 4, 5, 6, 7, 160, -1, 10, 11, 12, -1,
6593 14, 15, 16, -1, 18, 19, 20, 21, 22, 23,
6594 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6595 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6596 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6597 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6598 64, 65, -1, -1, 68, -1, -1, -1, -1, -1,
6599 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6600 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6601 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6602 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6603 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6604 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6605 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6606 -1, -1, -1, 147, 148, 149, -1, -1, -1, 1,
6607 154, 3, 4, 5, 6, 7, 160, -1, 10, 11,
6608 12, -1, -1, 15, 16, 17, 18, 19, 20, 21,
6609 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6610 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6611 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6612 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6613 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
6614 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6615 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6616 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6617 102, 103, 104, 105, -1, 107, -1, -1, 110, 111,
6618 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
6619 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6620 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6621 -1, -1, -1, -1, -1, 147, 148, 149, -1, -1,
6622 -1, 1, 154, 3, 4, 5, 6, 7, 160, -1,
6623 10, 11, 12, -1, -1, 15, 16, -1, 18, 19,
6624 20, 21, 22, 23, 24, 25, -1, -1, -1, -1,
6625 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6626 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
6627 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6628 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
6629 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
6630 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6631 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6632 -1, -1, 102, 103, 104, 105, -1, 107, -1, -1,
6633 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6634 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6635 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6636 -1, -1, -1, -1, -1, -1, -1, 147, 148, 149,
6637 -1, -1, -1, 1, 154, 3, 4, 5, 6, 7,
6638 160, -1, 10, 11, 12, -1, -1, 15, 16, -1,
6639 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
6640 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6641 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6642 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6643 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6644 68, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6645 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6646 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6647 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
6648 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
6649 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6650 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6651 -1, -1, -1, -1, -1, -1, -1, -1, -1, 147,
6652 148, 149, -1, -1, -1, 1, 154, 3, 4, 5,
6653 6, 7, 160, 9, 10, 11, 12, -1, -1, -1,
6654 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6655 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6656 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6657 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6658 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6659 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
6660 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6661 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6662 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6663 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6664 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6665 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6666 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6667 -1, 147, 148, 149, -1, -1, -1, 1, 154, 3,
6668 4, 5, 6, 7, 160, -1, 10, 11, 12, -1,
6669 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6670 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6671 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6672 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6673 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6674 64, 65, -1, -1, 68, -1, -1, -1, -1, -1,
6675 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6676 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6677 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6678 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6679 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6680 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6681 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6682 -1, -1, -1, 147, 148, 149, -1, -1, -1, 1,
6683 154, 3, 4, 5, 6, 7, 160, -1, -1, 11,
6684 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6685 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6686 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6687 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6688 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6689 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6690 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6691 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6692 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6693 102, 103, 104, 105, -1, 107, -1, -1, 110, 111,
6694 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
6695 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6696 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6697 -1, -1, -1, -1, -1, 147, 148, 149, -1, -1,
6698 -1, -1, 154, -1, -1, -1, 158, 1, 160, 3,
6699 4, 5, 6, 7, -1, -1, -1, 11, 12, -1,
6700 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6701 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6702 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6703 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6704 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6705 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6706 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6707 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6708 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6709 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6710 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6711 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6712 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6713 -1, -1, -1, 147, 148, 149, -1, -1, -1, -1,
6714 154, -1, -1, -1, 158, 1, 160, 3, 4, 5,
6715 6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6716 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6717 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6718 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6719 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6720 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6721 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6722 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6723 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6724 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6725 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6726 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6727 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6728 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6729 -1, 147, 148, 149, -1, -1, 152, 1, 154, 3,
6730 4, 5, 6, 7, 160, -1, -1, 11, 12, -1,
6731 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6732 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6733 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6734 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6735 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6736 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6737 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6738 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6739 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6740 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6741 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6742 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6743 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6744 -1, -1, -1, 147, 148, 149, -1, -1, 152, 1,
6745 154, 3, 4, 5, -1, 7, 160, -1, -1, 11,
6746 12, -1, -1, -1, 16, 17, 18, 19, 20, 21,
6747 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6748 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6749 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6750 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6751 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6752 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6753 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6754 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6755 102, 103, 104, 105, -1, -1, -1, -1, 110, 111,
6756 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
6757 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6758 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6759 -1, -1, -1, -1, -1, 147, 148, 149, -1, -1,
6760 -1, -1, 154, -1, -1, -1, -1, -1, 160, 3,
6761 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
6762 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
6763 24, 25, 26, -1, -1, -1, 30, 31, 32, 33,
6764 34, 35, 36, 37, 38, 39, -1, -1, -1, -1,
6765 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6766 54, 55, 56, 57, -1, -1, -1, -1, -1, -1,
6767 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6768 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
6769 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
6770 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
6771 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
6772 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6773 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6774 -1, -1, -1, 137, 138, 139, 140, 141, 142, 143,
6775 144, 145, 146, -1, 148, 149, -1, -1, -1, -1,
6776 -1, -1, 156, 157, 3, 4, 5, 6, 7, 8,
6777 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
6778 19, 20, 21, 22, 23, 24, 25, 26, -1, -1,
6779 -1, 30, 31, 32, 33, 34, 35, 36, 37, 38,
6780 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6781 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6782 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6783 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
6784 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
6785 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
6786 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
6787 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6788 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6789 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
6790 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
6791 149, -1, -1, -1, -1, -1, -1, 156, 3, 4,
6792 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
6793 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
6794 25, 26, -1, -1, -1, 30, 31, 32, 33, 34,
6795 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
6796 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
6797 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
6798 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6799 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
6800 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
6801 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
6802 -1, -1, 107, 108, -1, -1, 111, -1, -1, -1,
6803 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6804 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6805 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
6806 145, 146, -1, 148, 149, -1, -1, -1, -1, -1,
6807 -1, 156, 3, 4, 5, 6, 7, 8, 9, 10,
6808 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
6809 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
6810 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
6811 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
6812 51, 52, 53, -1, -1, 56, -1, -1, -1, -1,
6813 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6814 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
6815 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
6816 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
6817 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
6818 111, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6819 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6820 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
6821 141, 142, 143, 144, 145, 146, -1, 148, 149, -1,
6822 -1, -1, -1, -1, -1, 156, 3, 4, 5, 6,
6823 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
6824 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
6825 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6826 37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
6827 47, 48, 49, 50, 51, 52, 53, -1, -1, 56,
6828 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6829 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6830 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
6831 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
6832 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6833 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
6834 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6835 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6836 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6837 -1, 148, 149, 3, 4, 5, -1, 7, -1, 156,
6838 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
6839 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
6840 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6841 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
6842 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6843 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
6844 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6845 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6846 -1, -1, -1, -1, -1, -1, -1, -1, -1, 99,
6847 -1, -1, 102, 103, 104, 105, -1, -1, -1, -1,
6848 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6849 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
6850 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6851 22, 23, 24, -1, -1, -1, -1, 147, 30, 31,
6852 32, 33, 34, 35, 36, 155, -1, 39, -1, -1,
6853 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6854 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6855 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6856 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6857 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6858 -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6859 102, 103, 104, 105, -1, -1, -1, -1, 110, 111,
6860 112, 113, 114, 115, 116, 117, 118, -1, -1, 3,
6861 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6862 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6863 24, -1, -1, -1, -1, 147, 30, 31, 32, 33,
6864 34, 35, 36, 155, -1, 39, -1, -1, -1, -1,
6865 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6866 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
6867 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6868 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6869 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6870 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6871 104, 105, -1, 107, 108, 109, 110, 111, 112, 113,
6872 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6873 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6874 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
6875 5, -1, 7, 147, 148, 149, 11, 12, -1, -1,
6876 154, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6877 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6878 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6879 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6880 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6881 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6882 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6883 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6884 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
6885 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
6886 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
6887 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6888 -1, -1, -1, -1, -1, 1, -1, 3, 4, 5,
6889 6, 7, 147, 148, 149, 11, 12, -1, -1, 154,
6890 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6891 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6892 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6893 46, -1, 48, 49, 50, 51, 52, 53, 54, 55,
6894 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6895 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6896 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6897 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6898 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6899 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6900 116, 117, 118, -1, -1, 1, -1, 3, 4, 5,
6901 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6902 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6903 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
6904 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
6905 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6906 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6907 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6908 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6909 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6910 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6911 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
6912 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
6913 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6914 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6915 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
6916 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
6917 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6918 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
6919 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6920 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6921 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6922 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6923 -1, 107, 108, 109, 110, 111, 112, 113, 114, 115,
6924 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
6925 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6926 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6927 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
6928 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
6929 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6930 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
6931 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6932 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6933 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6934 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6935 -1, 107, 108, 109, 110, 111, 112, 113, 114, 115,
6936 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
6937 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6938 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6939 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
6940 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
6941 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6942 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
6943 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6944 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6945 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6946 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6947 -1, 107, 108, 109, 110, 111, 112, 113, 114, 115,
6948 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
6949 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6950 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6951 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
6952 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
6953 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6954 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
6955 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6956 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6957 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6958 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6959 -1, 107, 108, 109, 110, 111, 112, 113, 114, 115,
6960 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
6961 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6962 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6963 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
6964 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
6965 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6966 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
6967 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6968 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6969 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6970 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6971 -1, 107, 108, -1, 110, 111, 112, 113, 114, 115,
6972 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
6973 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6974 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6975 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
6976 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
6977 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6978 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
6979 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6980 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6981 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6982 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6983 -1, -1, 108, 109, 110, 111, 112, 113, 114, 115,
6984 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
6985 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6986 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6987 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
6988 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
6989 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6990 56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
6991 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6992 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6993 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6994 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6995 -1, -1, 108, -1, 110, 111, 112, 113, 114, 115,
6996 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
6997 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6998 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6999 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7000 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7001 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7002 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7003 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7004 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7005 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7006 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7007 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
7008 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7009 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7010 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7011 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7012 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7013 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7014 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7015 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7016 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7017 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7018 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7019 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
7020 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7021 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7022 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7023 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7024 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7025 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7026 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7027 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7028 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7029 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7030 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7031 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
7032 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7033 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7034 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7035 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7036 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7037 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7038 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7039 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7040 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7041 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7042 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7043 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
7044 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7045 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7046 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7047 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7048 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7049 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7050 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7051 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7052 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7053 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7054 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7055 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
7056 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7057 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7058 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7059 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7060 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7061 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7062 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7063 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7064 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7065 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7066 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7067 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
7068 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7069 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7070 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7071 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7072 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7073 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7074 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7075 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7076 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7077 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7078 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7079 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
7080 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7081 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7082 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7083 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7084 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7085 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7086 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7087 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7088 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7089 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7090 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7091 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
7092 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7093 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7094 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7095 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7096 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7097 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7098 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7099 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7100 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7101 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7102 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7103 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
7104 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7105 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7106 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7107 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7108 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7109 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7110 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7111 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7112 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7113 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7114 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7115 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
7116 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7117 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7118 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7119 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7120 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7121 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7122 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7123 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7124 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7125 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7126 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7127 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
7128 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7129 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7130 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7131 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7132 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7133 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7134 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7135 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7136 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7137 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7138 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7139 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
7140 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7141 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7142 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7143 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7144 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7145 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7146 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7147 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7148 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7149 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7150 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7151 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
7152 116, 117, 118, -1, -1, 3, 4, 5, -1, 7,
7153 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7154 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
7155 -1, 147, 30, 31, 32, 33, 34, 35, 36, -1,
7156 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7157 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7158 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7159 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7160 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7161 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7162 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7163 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7164 118, -1, -1, 3, 4, 5, -1, 7, -1, -1,
7165 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
7166 20, 21, 22, 23, 24, -1, -1, -1, -1, 147,
7167 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
7168 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
7169 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
7170 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
7171 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7172 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7173 -1, -1, -1, -1, -1, 95, -1, -1, -1, 99,
7174 -1, -1, 102, 103, 104, 105, -1, -1, -1, -1,
7175 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
7176 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
7177 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
7178 22, 23, 24, -1, -1, -1, -1, 147, 30, 31,
7179 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
7180 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
7181 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
7182 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
7183 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7184 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7185 -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
7186 102, 103, 104, 105, -1, -1, -1, -1, 110, 111,
7187 112, 113, 114, 115, 116, 117, 118, -1, -1, 3,
7188 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
7189 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
7190 24, -1, -1, -1, -1, 147, 30, 31, 32, 33,
7191 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
7192 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
7193 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
7194 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
7195 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7196 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7197 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
7198 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
7199 114, 115, 116, 117, 118, -1, -1, 3, 4, 5,
7200 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7201 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7202 -1, -1, -1, 147, 30, 31, 32, 33, 34, 35,
7203 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7204 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7205 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7206 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7207 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7208 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7209 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7210 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
7211 116, 117, 118, -1, -1, 3, 4, 5, -1, 7,
7212 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7213 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
7214 -1, 147, 30, 31, 32, 33, 34, 35, 36, -1,
7215 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7216 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7217 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
7218 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7219 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7220 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7221 -1, 99, -1, -1, 102, 103, 104, 105, 33, 34,
7222 35, 36, 110, 111, 112, 113, 114, 115, 116, 117,
7223 118, -1, -1, -1, 49, 50, 51, 52, -1, -1,
7224 -1, 56, -1, -1, 59, 60, 61, 62, 63, -1,
7225 -1, -1, -1, -1, -1, -1, -1, -1, -1, 147,
7226 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7227 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
7228 -1, -1, -1, -1, 99, -1, -1, 102, -1, 104,
7229 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
7230 115, 116, 117, 118, -1, -1, -1, -1, -1, 52,
7231 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
7232 -1, -1, -1, -1, -1, 140, -1, -1, -1, -1,
7233 -1, -1, 147, 76, 77, 78, 79, 80, 81, 82,
7234 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7235 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7236 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
7237 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7238 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7239 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7240 143, 144, 145, 146, -1, 148, 149, 52, 53, -1,
7241 -1, 56, -1, 156, -1, -1, -1, -1, -1, -1,
7242 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7243 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7244 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7245 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7246 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7247 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7248 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7249 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7250 145, 146, -1, 148, 149, 52, 53, -1, -1, 56,
7251 -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
7252 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7253 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7254 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7255 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7256 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
7257 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7258 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7259 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7260 -1, 148, 149, 52, 53, -1, -1, 56, -1, 156,
7261 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7262 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7263 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7264 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7265 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
7266 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7267 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7268 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
7269 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
7270 149, 52, 53, -1, -1, 56, -1, 156, -1, -1,
7271 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7272 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7273 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7274 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7275 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
7276 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7277 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7278 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
7279 141, 142, 143, 144, 145, 146, -1, 148, 149, 52,
7280 53, -1, -1, 56, -1, 156, -1, -1, -1, -1,
7281 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7282 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
7283 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7284 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7285 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
7286 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7287 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7288 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7289 143, 144, 145, 146, -1, 148, 149, 52, 53, -1,
7290 -1, 56, -1, 156, -1, -1, -1, -1, -1, -1,
7291 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7292 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7293 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7294 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7295 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7296 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7297 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7298 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7299 145, 146, -1, 148, 149, 52, 53, -1, -1, 56,
7300 -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
7301 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7302 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7303 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7304 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7305 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
7306 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7307 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7308 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7309 -1, 148, 149, 52, 53, -1, -1, 56, -1, 156,
7310 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7311 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7312 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7313 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7314 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
7315 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7316 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7317 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
7318 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
7319 149, 52, 53, -1, -1, 56, -1, 156, -1, -1,
7320 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7321 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7322 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7323 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7324 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
7325 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7326 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7327 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
7328 141, 142, 143, 144, 145, 146, -1, 148, 149, 52,
7329 53, -1, -1, 56, -1, 156, -1, -1, -1, -1,
7330 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7331 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
7332 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7333 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7334 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
7335 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7336 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7337 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7338 143, 144, 145, 146, -1, 148, 149, 52, 53, -1,
7339 -1, 56, -1, 156, -1, -1, -1, -1, -1, -1,
7340 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7341 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7342 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7343 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7344 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7345 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7346 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7347 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7348 145, 146, -1, 148, 149, 52, 53, -1, -1, 56,
7349 -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
7350 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7351 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7352 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7353 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7354 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
7355 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7356 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7357 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7358 -1, 148, 149, 52, 53, -1, -1, 56, -1, 156,
7359 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7360 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7361 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7362 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7363 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
7364 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7365 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7366 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
7367 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
7368 149, -1, -1, -1, -1, -1, -1, 156
7373static const yytype_int16 yystos[] =
7375 0, 165, 166, 1, 3, 4, 5, 6, 7, 11,
7376 12, 16, 18, 19, 20, 21, 22, 23, 24, 30,
7377 31, 32, 33, 34, 35, 36, 39, 45, 46, 47,
7378 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7379 59, 60, 61, 62, 63, 64, 65, 76, 77, 91,
7380 92, 99, 102, 103, 104, 105, 107, 110, 111, 112,
7381 113, 114, 115, 116, 117, 118, 147, 148, 149, 164,
7382 167, 168, 180, 182, 183, 184, 185, 186, 187, 191,
7383 195, 197, 203, 206, 208, 209, 210, 212, 214, 215,
7384 216, 217, 226, 227, 228, 229, 230, 231, 234, 255,
7385 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
7386 277, 278, 287, 288, 321, 326, 327, 376, 377, 378,
7387 379, 380, 381, 383, 384, 387, 388, 390, 391, 392,
7388 393, 406, 407, 409, 410, 411, 412, 413, 414, 415,
7389 416, 417, 465, 0, 3, 4, 5, 6, 7, 8,
7390 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
7391 19, 20, 21, 22, 23, 24, 25, 26, 30, 31,
7392 32, 33, 34, 35, 36, 37, 38, 39, 45, 46,
7393 47, 48, 49, 50, 51, 52, 53, 56, 76, 77,
7394 78, 79, 80, 81, 82, 83, 84, 87, 88, 93,
7395 94, 95, 96, 107, 108, 137, 138, 139, 140, 141,
7396 142, 143, 144, 145, 146, 148, 149, 156, 220, 221,
7397 222, 224, 225, 406, 179, 179, 179, 39, 58, 99,
7398 102, 107, 108, 109, 112, 148, 195, 197, 209, 217,
7399 227, 238, 239, 245, 246, 249, 251, 252, 268, 413,
7400 414, 416, 417, 452, 453, 246, 157, 242, 247, 248,
7401 154, 157, 189, 54, 221, 189, 151, 169, 170, 235,
7402 465, 21, 22, 32, 208, 227, 268, 287, 288, 227,
7403 227, 227, 56, 47, 102, 171, 176, 177, 182, 211,
7404 212, 465, 171, 240, 251, 452, 465, 239, 451, 452,
7405 465, 46, 99, 147, 155, 195, 197, 216, 255, 268,
7406 413, 414, 417, 319, 220, 396, 408, 412, 396, 397,
7407 398, 161, 382, 382, 382, 382, 411, 203, 227, 227,
7408 154, 160, 163, 463, 464, 179, 40, 41, 42, 43,
7409 44, 37, 38, 157, 420, 421, 422, 423, 465, 420,
7410 422, 26, 151, 242, 248, 279, 328, 28, 280, 325,
7411 134, 155, 102, 107, 214, 134, 25, 78, 79, 80,
7412 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
7413 95, 96, 101, 135, 137, 138, 139, 140, 141, 142,
7414 143, 144, 145, 146, 233, 233, 69, 97, 98, 153,
7415 457, 458, 256, 1, 191, 198, 199, 199, 200, 202,
7416 202, 163, 199, 464, 99, 210, 217, 268, 293, 413,
7417 414, 417, 52, 56, 95, 99, 218, 219, 268, 413,
7418 414, 417, 219, 33, 34, 35, 36, 49, 50, 51,
7419 52, 56, 157, 194, 220, 415, 447, 448, 449, 246,
7420 157, 248, 98, 457, 458, 328, 379, 100, 100, 155,
7421 239, 56, 239, 239, 239, 396, 420, 420, 134, 101,
7422 155, 250, 465, 98, 153, 457, 100, 100, 155, 250,
7423 92, 244, 246, 251, 432, 452, 465, 246, 189, 191,
7424 459, 191, 54, 64, 65, 181, 157, 235, 236, 164,
7425 98, 457, 100, 178, 211, 158, 163, 464, 459, 257,
7426 159, 155, 189, 462, 155, 462, 152, 462, 189, 56,
7427 411, 213, 214, 421, 155, 98, 153, 457, 316, 66,
7428 119, 121, 122, 399, 119, 119, 399, 67, 399, 161,
7429 385, 394, 389, 395, 78, 160, 168, 151, 199, 199,
7430 199, 199, 235, 237, 191, 191, 52, 54, 55, 56,
7431 57, 58, 78, 92, 102, 107, 108, 109, 141, 144,
7432 298, 363, 424, 425, 426, 427, 428, 429, 431, 432,
7433 433, 434, 435, 436, 437, 438, 439, 440, 441, 442,
7434 443, 444, 445, 134, 265, 431, 134, 266, 329, 330,
7435 106, 207, 331, 332, 332, 235, 211, 155, 216, 155,
7436 235, 193, 227, 227, 227, 227, 227, 227, 227, 227,
7437 227, 227, 227, 227, 227, 192, 227, 227, 227, 227,
7438 227, 227, 227, 227, 227, 227, 227, 52, 53, 56,
7439 224, 454, 455, 244, 251, 52, 53, 56, 224, 454,
7440 242, 171, 174, 13, 289, 463, 289, 199, 171, 171,
7441 259, 163, 56, 98, 153, 457, 25, 199, 52, 56,
7442 218, 138, 419, 465, 98, 153, 457, 264, 450, 69,
7443 98, 456, 246, 459, 52, 56, 454, 235, 235, 223,
7444 100, 124, 134, 134, 235, 239, 239, 249, 252, 452,
7445 52, 56, 244, 52, 56, 235, 235, 453, 459, 155,
7446 459, 155, 158, 459, 221, 236, 227, 152, 56, 454,
7447 454, 235, 170, 459, 177, 158, 452, 155, 213, 52,
7448 56, 244, 52, 56, 317, 401, 400, 119, 386, 399,
7449 66, 119, 119, 386, 66, 119, 227, 171, 182, 102,
7450 107, 294, 295, 296, 297, 434, 155, 446, 465, 155,
7451 446, 155, 430, 459, 299, 300, 155, 430, 239, 34,
7452 52, 52, 155, 430, 52, 39, 188, 209, 227, 232,
7453 174, 463, 188, 232, 174, 316, 152, 330, 316, 10,
7454 68, 286, 286, 107, 203, 204, 205, 239, 251, 253,
7455 254, 459, 213, 155, 99, 185, 190, 205, 217, 227,
7456 239, 241, 254, 268, 417, 338, 338, 189, 100, 100,
7457 151, 242, 248, 189, 460, 155, 100, 100, 242, 243,
7458 248, 465, 235, 286, 171, 13, 171, 27, 290, 463,
7459 286, 286, 17, 283, 334, 25, 258, 340, 52, 56,
7460 244, 52, 56, 260, 263, 418, 262, 52, 56, 218,
7461 244, 174, 191, 196, 459, 243, 248, 190, 227, 241,
7462 190, 241, 221, 235, 239, 39, 250, 100, 100, 460,
7463 100, 100, 432, 452, 191, 190, 241, 462, 214, 460,
7464 318, 402, 405, 412, 417, 382, 399, 382, 382, 382,
7465 152, 296, 434, 155, 459, 155, 445, 424, 439, 441,
7466 427, 428, 437, 443, 134, 239, 429, 436, 443, 435,
7467 437, 189, 44, 44, 286, 286, 317, 152, 317, 239,
7468 155, 44, 213, 56, 44, 134, 44, 98, 153, 457,
7469 336, 336, 136, 235, 235, 330, 207, 159, 100, 235,
7470 235, 207, 8, 281, 372, 465, 14, 15, 284, 285,
7471 291, 292, 465, 292, 201, 107, 239, 333, 286, 338,
7472 334, 286, 460, 199, 463, 199, 174, 460, 286, 459,
7473 194, 328, 325, 189, 235, 235, 100, 235, 235, 459,
7474 155, 459, 179, 403, 459, 294, 297, 295, 446, 155,
7475 430, 155, 430, 155, 430, 155, 430, 430, 188, 232,
7476 237, 237, 318, 318, 107, 239, 237, 237, 235, 237,
7477 52, 56, 244, 52, 56, 337, 337, 227, 190, 241,
7478 190, 241, 152, 235, 190, 241, 190, 241, 239, 254,
7479 373, 465, 175, 284, 171, 199, 286, 286, 239, 155,
7480 289, 336, 286, 290, 174, 463, 286, 235, 157, 322,
7481 431, 171, 155, 155, 437, 437, 443, 437, 227, 227,
7482 179, 179, 239, 182, 182, 227, 460, 52, 56, 58,
7483 91, 92, 99, 102, 104, 105, 107, 112, 140, 321,
7484 343, 344, 345, 346, 349, 353, 354, 355, 358, 359,
7485 360, 361, 362, 363, 364, 365, 366, 367, 368, 369,
7486 370, 371, 376, 377, 380, 381, 384, 388, 391, 393,
7487 414, 439, 343, 190, 241, 101, 374, 465, 9, 282,
7488 375, 465, 172, 289, 107, 239, 171, 337, 261, 286,
7489 431, 320, 0, 120, 404, 295, 430, 430, 155, 430,
7490 430, 139, 310, 311, 465, 310, 367, 367, 56, 218,
7491 337, 344, 351, 352, 353, 354, 357, 460, 189, 337,
7492 461, 52, 396, 52, 102, 412, 101, 155, 139, 155,
7493 155, 344, 89, 90, 98, 153, 157, 347, 348, 52,
7494 99, 217, 268, 413, 414, 417, 289, 176, 171, 171,
7495 239, 292, 334, 335, 342, 343, 171, 189, 313, 29,
7496 123, 323, 437, 298, 301, 302, 303, 304, 306, 307,
7497 309, 312, 435, 437, 438, 443, 445, 171, 174, 344,
7498 460, 344, 355, 357, 460, 155, 152, 235, 124, 199,
7499 368, 351, 355, 349, 356, 357, 112, 360, 364, 367,
7500 367, 218, 337, 460, 337, 459, 351, 354, 358, 351,
7501 354, 358, 56, 98, 153, 457, 171, 163, 173, 291,
7502 289, 40, 41, 286, 160, 158, 324, 171, 430, 446,
7503 155, 446, 155, 308, 313, 300, 155, 305, 308, 99,
7504 268, 155, 308, 459, 155, 155, 350, 459, 155, 155,
7505 396, 459, 459, 459, 460, 460, 460, 52, 56, 244,
7506 52, 56, 372, 375, 339, 199, 199, 52, 314, 315,
7507 433, 174, 152, 301, 441, 304, 306, 437, 443, 139,
7508 268, 307, 443, 56, 98, 437, 356, 358, 356, 355,
7509 357, 460, 171, 155, 189, 286, 446, 155, 308, 155,
7510 308, 155, 308, 155, 308, 52, 56, 308, 155, 461,
7511 292, 340, 341, 315, 437, 437, 443, 437, 308, 308,
7512 155, 308, 308, 437, 308
7516static const yytype_int16 yyr1[] =
7518 0, 162, 165, 163, 163, 164, 166, 167, 167, 167,
7519 168, 168, 169, 170, 171, 172, 173, 174, 175, 174,
7520 176, 176, 176, 177, 178, 177, 179, 180, 181, 182,
7521 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
7522 182, 182, 183, 182, 182, 182, 182, 182, 184, 185,
7523 186, 186, 186, 186, 186, 186, 186, 186, 185, 187,
7524 187, 185, 188, 188, 189, 189, 188, 190, 190, 190,
7525 191, 191, 191, 191, 191, 192, 191, 193, 191, 191,
7526 194, 195, 196, 197, 198, 199, 199, 200, 201, 202,
7527 203, 203, 204, 205, 206, 206, 207, 208, 208, 208,
7528 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
7529 209, 209, 210, 210, 211, 211, 212, 212, 212, 213,
7530 213, 212, 212, 212, 212, 212, 212, 212, 214, 214,
7531 215, 215, 216, 216, 216, 216, 216, 216, 216, 216,
7532 216, 217, 217, 217, 217, 217, 217, 217, 217, 217,
7533 218, 218, 219, 219, 219, 220, 220, 220, 220, 220,
7534 221, 221, 222, 223, 222, 224, 224, 224, 224, 224,
7535 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7536 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7537 224, 224, 224, 224, 224, 225, 225, 225, 225, 225,
7538 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7539 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7540 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7541 225, 225, 225, 225, 225, 225, 226, 227, 228, 228,
7542 228, 228, 228, 228, 228, 228, 227, 229, 229, 229,
7543 229, 229, 229, 227, 227, 227, 227, 227, 227, 227,
7544 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7545 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7546 230, 230, 227, 227, 227, 231, 232, 232, 232, 233,
7547 233, 233, 233, 234, 234, 235, 236, 237, 238, 239,
7548 240, 240, 240, 240, 241, 241, 242, 242, 242, 243,
7549 243, 244, 244, 244, 244, 244, 245, 246, 246, 246,
7550 246, 246, 247, 248, 249, 249, 250, 250, 251, 251,
7551 251, 251, 252, 252, 253, 253, 254, 254, 254, 255,
7552 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7553 256, 255, 257, 255, 255, 255, 255, 255, 255, 255,
7554 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7555 255, 255, 255, 255, 258, 255, 259, 255, 255, 260,
7556 261, 255, 262, 255, 263, 255, 264, 255, 265, 255,
7557 266, 255, 255, 255, 255, 255, 267, 268, 269, 270,
7558 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
7559 281, 282, 283, 284, 285, 286, 286, 287, 288, 289,
7560 289, 289, 290, 290, 291, 291, 292, 292, 293, 293,
7561 294, 294, 295, 295, 296, 296, 296, 296, 296, 297,
7562 297, 298, 298, 299, 300, 301, 301, 302, 302, 303,
7563 303, 303, 303, 304, 305, 306, 307, 307, 308, 308,
7564 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
7565 309, 309, 309, 309, 309, 310, 310, 311, 312, 312,
7566 313, 313, 314, 314, 315, 315, 316, 317, 318, 319,
7567 320, 321, 322, 322, 323, 324, 323, 325, 326, 326,
7568 326, 326, 327, 327, 327, 327, 327, 327, 327, 327,
7569 328, 328, 329, 330, 331, 332, 333, 333, 333, 333,
7570 334, 335, 335, 336, 337, 338, 339, 340, 341, 341,
7571 342, 342, 342, 343, 343, 343, 343, 343, 343, 344,
7572 345, 345, 346, 346, 347, 348, 349, 349, 349, 349,
7573 349, 349, 349, 349, 349, 349, 349, 349, 349, 350,
7574 349, 349, 349, 351, 351, 351, 351, 351, 351, 352,
7575 352, 353, 353, 354, 355, 355, 356, 356, 357, 358,
7576 358, 358, 358, 359, 359, 360, 360, 361, 361, 362,
7577 362, 363, 364, 364, 365, 366, 366, 366, 366, 366,
7578 366, 365, 365, 365, 365, 367, 367, 367, 367, 367,
7579 367, 367, 367, 367, 367, 368, 369, 369, 370, 371,
7580 371, 371, 372, 372, 373, 373, 373, 374, 374, 375,
7581 375, 376, 376, 377, 378, 378, 378, 379, 380, 381,
7582 382, 382, 383, 384, 385, 385, 386, 386, 387, 388,
7583 389, 389, 390, 391, 392, 393, 394, 394, 395, 395,
7584 396, 396, 397, 397, 398, 398, 399, 400, 399, 401,
7585 402, 403, 399, 404, 404, 405, 405, 406, 406, 407,
7586 408, 408, 409, 410, 410, 411, 411, 411, 411, 412,
7587 412, 412, 413, 413, 413, 414, 414, 414, 414, 414,
7588 414, 414, 415, 415, 416, 416, 417, 417, 418, 419,
7589 419, 420, 420, 421, 422, 423, 422, 424, 424, 425,
7590 425, 426, 426, 426, 426, 427, 427, 428, 429, 429,
7591 430, 430, 431, 431, 431, 431, 431, 431, 431, 431,
7592 431, 431, 431, 431, 431, 431, 431, 432, 433, 433,
7593 433, 433, 434, 434, 435, 436, 436, 437, 437, 438,
7594 439, 439, 440, 441, 441, 442, 442, 443, 443, 444,
7595 444, 445, 445, 446, 446, 447, 448, 449, 450, 449,
7596 451, 451, 452, 452, 453, 453, 453, 453, 453, 453,
7597 454, 454, 454, 454, 455, 455, 455, 456, 456, 457,
7598 457, 458, 458, 459, 460, 461, 462, 462, 463, 463,
7603static const yytype_int8 yyr2[] =
7605 0, 2, 0, 0, 1, 2, 2, 1, 1, 3,
7606 1, 2, 1, 3, 2, 0, 0, 8, 0, 5,
7607 1, 1, 3, 1, 0, 3, 0, 2, 0, 4,
7608 3, 3, 3, 2, 3, 3, 3, 3, 4, 5,
7609 1, 4, 4, 1, 7, 4, 1, 1, 4, 1,
7610 4, 7, 6, 6, 6, 6, 5, 4, 1, 4,
7611 4, 1, 1, 4, 0, 1, 3, 1, 4, 1,
7612 1, 3, 3, 3, 2, 0, 7, 0, 7, 1,
7613 1, 2, 0, 5, 1, 1, 1, 0, 0, 4,
7614 1, 1, 1, 1, 1, 4, 3, 1, 1, 1,
7615 2, 3, 4, 5, 4, 5, 6, 2, 2, 2,
7616 2, 2, 1, 3, 1, 3, 1, 2, 3, 1,
7617 3, 5, 2, 4, 2, 4, 1, 3, 1, 3,
7618 2, 3, 1, 1, 4, 3, 3, 3, 3, 2,
7619 1, 1, 1, 4, 3, 3, 3, 3, 2, 1,
7620 1, 1, 2, 1, 3, 1, 1, 1, 1, 1,
7621 1, 1, 1, 0, 4, 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, 1, 1, 1, 1,
7627 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7628 1, 1, 1, 1, 1, 1, 4, 1, 4, 7,
7629 6, 6, 6, 6, 5, 4, 1, 3, 3, 2,
7630 2, 2, 2, 1, 3, 3, 3, 3, 3, 3,
7631 4, 2, 2, 3, 3, 3, 3, 1, 3, 3,
7632 3, 3, 3, 2, 2, 3, 3, 3, 3, 4,
7633 4, 4, 1, 1, 1, 6, 1, 4, 3, 1,
7634 1, 1, 1, 3, 3, 1, 1, 1, 1, 1,
7635 1, 2, 4, 2, 1, 4, 3, 5, 3, 1,
7636 1, 1, 1, 2, 4, 2, 1, 1, 2, 2,
7637 4, 1, 0, 2, 2, 1, 2, 1, 1, 1,
7638 3, 3, 2, 1, 1, 1, 3, 4, 2, 1,
7639 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7640 0, 4, 0, 4, 3, 3, 2, 3, 3, 1,
7641 4, 3, 1, 6, 4, 3, 2, 1, 2, 1,
7642 6, 6, 4, 4, 0, 6, 0, 5, 5, 0,
7643 0, 9, 0, 6, 0, 7, 0, 5, 0, 5,
7644 0, 5, 1, 1, 1, 1, 1, 1, 1, 1,
7645 1, 2, 2, 1, 2, 1, 1, 1, 1, 1,
7646 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7647 1, 2, 1, 1, 1, 5, 1, 2, 1, 1,
7648 1, 3, 1, 3, 1, 3, 5, 1, 3, 2,
7649 1, 1, 1, 0, 2, 2, 1, 1, 3, 4,
7650 2, 2, 1, 1, 1, 3, 1, 3, 2, 0,
7651 6, 8, 4, 6, 4, 2, 6, 2, 4, 6,
7652 2, 4, 2, 4, 1, 1, 1, 4, 0, 1,
7653 1, 4, 1, 3, 1, 1, 0, 0, 0, 0,
7654 0, 9, 4, 1, 3, 0, 4, 3, 2, 4,
7655 5, 5, 2, 4, 4, 3, 3, 2, 1, 4,
7656 3, 3, 0, 7, 0, 7, 1, 2, 3, 4,
7657 5, 1, 1, 0, 0, 0, 0, 9, 1, 1,
7658 1, 3, 3, 1, 2, 3, 1, 1, 1, 1,
7659 3, 1, 3, 1, 2, 2, 1, 1, 4, 4,
7660 4, 3, 4, 4, 4, 3, 3, 3, 2, 0,
7661 6, 2, 4, 1, 1, 2, 2, 4, 1, 2,
7662 3, 1, 3, 5, 2, 1, 1, 3, 1, 3,
7663 1, 2, 1, 1, 3, 2, 1, 1, 3, 2,
7664 1, 2, 1, 1, 1, 3, 3, 2, 2, 2,
7665 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7666 1, 1, 1, 1, 1, 1, 2, 2, 4, 2,
7667 3, 1, 6, 1, 1, 1, 1, 2, 1, 3,
7668 1, 1, 1, 1, 1, 1, 2, 3, 3, 3,
7669 1, 2, 4, 1, 0, 3, 1, 2, 4, 1,
7670 0, 3, 4, 1, 4, 1, 0, 3, 0, 3,
7671 0, 2, 0, 2, 0, 2, 1, 0, 3, 0,
7672 0, 0, 6, 1, 1, 1, 1, 1, 1, 2,
7673 1, 1, 3, 1, 2, 1, 1, 1, 1, 1,
7674 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7675 1, 1, 1, 1, 1, 1, 1, 1, 0, 4,
7676 1, 1, 1, 3, 1, 0, 3, 2, 1, 1,
7677 3, 4, 2, 2, 1, 1, 1, 3, 1, 3,
7678 2, 0, 6, 8, 4, 6, 4, 6, 2, 4,
7679 6, 2, 4, 2, 4, 1, 0, 1, 1, 1,
7680 1, 1, 1, 1, 1, 1, 3, 1, 3, 1,
7681 1, 1, 1, 2, 1, 1, 1, 2, 1, 1,
7682 1, 2, 1, 2, 1, 1, 1, 1, 0, 4,
7683 1, 2, 1, 3, 3, 2, 1, 4, 2, 1,
7684 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7685 1, 1, 1, 2, 2, 2, 1, 1, 1, 1,
7690enum { YYENOMEM = -2 };
7692#define yyerrok (yyerrstatus = 0)
7693#define yyclearin (yychar = YYEMPTY)
7695#define YYACCEPT goto yyacceptlab
7696#define YYABORT goto yyabortlab
7697#define YYERROR goto yyerrorlab
7698#define YYNOMEM goto yyexhaustedlab
7701#define YYRECOVERING() (!!yyerrstatus)
7703#define YYBACKUP(Token, Value) \
7705 if (yychar == YYEMPTY) \
7709 YYPOPSTACK (yylen); \
7715 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
7722#define YYERRCODE YYUNDEF
7728#ifndef YYLLOC_DEFAULT
7729# define YYLLOC_DEFAULT(Current, Rhs, N) \
7733 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
7734 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
7735 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
7736 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
7740 (Current).first_line = (Current).last_line = \
7741 YYRHSLOC (Rhs, 0).last_line; \
7742 (Current).first_column = (Current).last_column = \
7743 YYRHSLOC (Rhs, 0).last_column; \
7748#define YYRHSLOC(Rhs, K) ((Rhs)[K])
7756# define YYFPRINTF fprintf
7759# define YYDPRINTF(Args) \
7770# ifndef YYLOCATION_PRINT
7772# if defined YY_LOCATION_PRINT
7776# define YYLOCATION_PRINT(File, Loc, p) YY_LOCATION_PRINT(File, *(Loc), p)
7778# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
7784yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
7787 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
7788 if (0 <= yylocp->first_line)
7790 res += YYFPRINTF (yyo,
"%d", yylocp->first_line);
7791 if (0 <= yylocp->first_column)
7792 res += YYFPRINTF (yyo,
".%d", yylocp->first_column);
7794 if (0 <= yylocp->last_line)
7796 if (yylocp->first_line < yylocp->last_line)
7798 res += YYFPRINTF (yyo,
"-%d", yylocp->last_line);
7800 res += YYFPRINTF (yyo,
".%d", end_col);
7802 else if (0 <= end_col && yylocp->first_column < end_col)
7803 res += YYFPRINTF (yyo,
"-%d", end_col);
7808# define YYLOCATION_PRINT yy_location_print_
7812# define YY_LOCATION_PRINT(File, Loc, p) YYLOCATION_PRINT(File, &(Loc), p)
7816# define YYLOCATION_PRINT(File, Loc, p) ((void) 0)
7819# define YY_LOCATION_PRINT YYLOCATION_PRINT
7825# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p) \
7829 YYFPRINTF (stderr, "%s ", Title); \
7830 yy_symbol_print (stderr, \
7831 Kind, Value, Location, p); \
7832 YYFPRINTF (stderr, "\n"); \
7842yy_symbol_value_print (
FILE *yyo,
7845 FILE *yyoutput = yyo;
7847 YY_USE (yylocationp);
7851 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
7854 case YYSYMBOL_keyword_class:
7857 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7862 case YYSYMBOL_keyword_module:
7865 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7870 case YYSYMBOL_keyword_def:
7873 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7878 case YYSYMBOL_keyword_undef:
7881 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7886 case YYSYMBOL_keyword_begin:
7889 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7894 case YYSYMBOL_keyword_rescue:
7897 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7902 case YYSYMBOL_keyword_ensure:
7905 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7910 case YYSYMBOL_keyword_end:
7913 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7918 case YYSYMBOL_keyword_if:
7921 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7926 case YYSYMBOL_keyword_unless:
7929 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7934 case YYSYMBOL_keyword_then:
7937 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7942 case YYSYMBOL_keyword_elsif:
7945 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7950 case YYSYMBOL_keyword_else:
7953 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7958 case YYSYMBOL_keyword_case:
7961 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7966 case YYSYMBOL_keyword_when:
7969 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7974 case YYSYMBOL_keyword_while:
7977 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7982 case YYSYMBOL_keyword_until:
7985 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7990 case YYSYMBOL_keyword_for:
7993 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7998 case YYSYMBOL_keyword_break:
8001 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8006 case YYSYMBOL_keyword_next:
8009 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8014 case YYSYMBOL_keyword_redo:
8017 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8022 case YYSYMBOL_keyword_retry:
8025 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8030 case YYSYMBOL_keyword_in:
8033 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8038 case YYSYMBOL_keyword_do:
8041 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8046 case YYSYMBOL_keyword_do_cond:
8049 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8054 case YYSYMBOL_keyword_do_block:
8057 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8062 case YYSYMBOL_keyword_do_LAMBDA:
8065 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8070 case YYSYMBOL_keyword_return:
8073 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8078 case YYSYMBOL_keyword_yield:
8081 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8086 case YYSYMBOL_keyword_super:
8089 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8094 case YYSYMBOL_keyword_self:
8097 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8102 case YYSYMBOL_keyword_nil:
8105 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8110 case YYSYMBOL_keyword_true:
8113 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8118 case YYSYMBOL_keyword_false:
8121 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8126 case YYSYMBOL_keyword_and:
8129 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8134 case YYSYMBOL_keyword_or:
8137 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8142 case YYSYMBOL_keyword_not:
8145 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8150 case YYSYMBOL_modifier_if:
8153 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8158 case YYSYMBOL_modifier_unless:
8161 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8166 case YYSYMBOL_modifier_while:
8169 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8174 case YYSYMBOL_modifier_until:
8177 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8182 case YYSYMBOL_modifier_rescue:
8185 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8190 case YYSYMBOL_keyword_alias:
8193 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8198 case YYSYMBOL_keyword_defined:
8201 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8206 case YYSYMBOL_keyword_BEGIN:
8209 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8214 case YYSYMBOL_keyword_END:
8217 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8222 case YYSYMBOL_keyword__LINE__:
8225 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8230 case YYSYMBOL_keyword__FILE__:
8233 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8238 case YYSYMBOL_keyword__ENCODING__:
8241 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8246 case YYSYMBOL_tIDENTIFIER:
8249 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8257 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8262 case YYSYMBOL_tGVAR:
8265 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8270 case YYSYMBOL_tIVAR:
8273 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8278 case YYSYMBOL_tCONSTANT:
8281 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8286 case YYSYMBOL_tCVAR:
8289 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8294 case YYSYMBOL_tLABEL:
8297 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8302 case YYSYMBOL_tINTEGER:
8305 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8307 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8310 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8313 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8315 case NODE_IMAGINARY:
8316 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8325 case YYSYMBOL_tFLOAT:
8328 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8330 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8333 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8336 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8338 case NODE_IMAGINARY:
8339 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8348 case YYSYMBOL_tRATIONAL:
8351 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8353 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8356 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8359 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8361 case NODE_IMAGINARY:
8362 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8371 case YYSYMBOL_tIMAGINARY:
8374 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8376 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8379 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8382 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8384 case NODE_IMAGINARY:
8385 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8394 case YYSYMBOL_tCHAR:
8397 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8399 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8402 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8405 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8407 case NODE_IMAGINARY:
8408 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8417 case YYSYMBOL_tNTH_REF:
8420 rb_parser_printf(p,
"$%ld", RNODE_NTH_REF(((*yyvaluep).node))->nd_nth);
8425 case YYSYMBOL_tBACK_REF:
8428 rb_parser_printf(p,
"$%c", (
int)RNODE_BACK_REF(((*yyvaluep).node))->nd_nth);
8433 case YYSYMBOL_tSTRING_CONTENT:
8436 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8438 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8441 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8444 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8446 case NODE_IMAGINARY:
8447 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8459 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8464 case YYSYMBOL_70_backslash_:
8467 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8472 case YYSYMBOL_72_escaped_horizontal_tab_:
8475 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8480 case YYSYMBOL_73_escaped_form_feed_:
8483 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8488 case YYSYMBOL_74_escaped_carriage_return_:
8491 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8496 case YYSYMBOL_75_escaped_vertical_tab_:
8499 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8504 case YYSYMBOL_tANDDOT:
8507 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8512 case YYSYMBOL_tCOLON2:
8515 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8520 case YYSYMBOL_tOP_ASGN:
8523 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8528 case YYSYMBOL_compstmt_top_stmts:
8531 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8532 rb_parser_printf(p,
"NODE_SPECIAL");
8534 else if (((*yyvaluep).node)) {
8535 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8541 case YYSYMBOL_top_stmts:
8544 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8545 rb_parser_printf(p,
"NODE_SPECIAL");
8547 else if (((*yyvaluep).node)) {
8548 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8554 case YYSYMBOL_top_stmt:
8557 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8558 rb_parser_printf(p,
"NODE_SPECIAL");
8560 else if (((*yyvaluep).node)) {
8561 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8567 case YYSYMBOL_block_open:
8570 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
8571 rb_parser_printf(p,
"NODE_SPECIAL");
8573 else if (((*yyvaluep).node_exits)) {
8574 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8580 case YYSYMBOL_begin_block:
8583 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8584 rb_parser_printf(p,
"NODE_SPECIAL");
8586 else if (((*yyvaluep).node)) {
8587 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8593 case YYSYMBOL_compstmt_stmts:
8596 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8597 rb_parser_printf(p,
"NODE_SPECIAL");
8599 else if (((*yyvaluep).node)) {
8600 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8606 case YYSYMBOL_bodystmt:
8609 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8610 rb_parser_printf(p,
"NODE_SPECIAL");
8612 else if (((*yyvaluep).node)) {
8613 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8619 case YYSYMBOL_stmts:
8622 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8623 rb_parser_printf(p,
"NODE_SPECIAL");
8625 else if (((*yyvaluep).node)) {
8626 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8632 case YYSYMBOL_stmt_or_begin:
8635 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8636 rb_parser_printf(p,
"NODE_SPECIAL");
8638 else if (((*yyvaluep).node)) {
8639 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8645 case YYSYMBOL_allow_exits:
8648 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
8649 rb_parser_printf(p,
"NODE_SPECIAL");
8651 else if (((*yyvaluep).node_exits)) {
8652 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8661 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8662 rb_parser_printf(p,
"NODE_SPECIAL");
8664 else if (((*yyvaluep).node)) {
8665 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8671 case YYSYMBOL_asgn_mrhs:
8674 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8675 rb_parser_printf(p,
"NODE_SPECIAL");
8677 else if (((*yyvaluep).node)) {
8678 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8684 case YYSYMBOL_asgn_command_rhs:
8687 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8688 rb_parser_printf(p,
"NODE_SPECIAL");
8690 else if (((*yyvaluep).node)) {
8691 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8697 case YYSYMBOL_command_asgn:
8700 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8701 rb_parser_printf(p,
"NODE_SPECIAL");
8703 else if (((*yyvaluep).node)) {
8704 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8710 case YYSYMBOL_op_asgn_command_rhs:
8713 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8714 rb_parser_printf(p,
"NODE_SPECIAL");
8716 else if (((*yyvaluep).node)) {
8717 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8723 case YYSYMBOL_def_endless_method_endless_command:
8726 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8727 rb_parser_printf(p,
"NODE_SPECIAL");
8729 else if (((*yyvaluep).node)) {
8730 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8736 case YYSYMBOL_endless_command:
8739 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8740 rb_parser_printf(p,
"NODE_SPECIAL");
8742 else if (((*yyvaluep).node)) {
8743 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8749 case YYSYMBOL_command_rhs:
8752 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8753 rb_parser_printf(p,
"NODE_SPECIAL");
8755 else if (((*yyvaluep).node)) {
8756 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8765 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8766 rb_parser_printf(p,
"NODE_SPECIAL");
8768 else if (((*yyvaluep).node)) {
8769 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8775 case YYSYMBOL_def_name:
8778 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8783 case YYSYMBOL_defn_head:
8786 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
8787 rb_parser_printf(p,
"NODE_SPECIAL");
8789 else if (((*yyvaluep).node_def_temp)) {
8790 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8796 case YYSYMBOL_defs_head:
8799 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
8800 rb_parser_printf(p,
"NODE_SPECIAL");
8802 else if (((*yyvaluep).node_def_temp)) {
8803 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8809 case YYSYMBOL_value_expr_expr:
8812 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8813 rb_parser_printf(p,
"NODE_SPECIAL");
8815 else if (((*yyvaluep).node)) {
8816 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8822 case YYSYMBOL_expr_value:
8825 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8826 rb_parser_printf(p,
"NODE_SPECIAL");
8828 else if (((*yyvaluep).node)) {
8829 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8835 case YYSYMBOL_expr_value_do:
8838 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8839 rb_parser_printf(p,
"NODE_SPECIAL");
8841 else if (((*yyvaluep).node)) {
8842 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8848 case YYSYMBOL_command_call:
8851 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8852 rb_parser_printf(p,
"NODE_SPECIAL");
8854 else if (((*yyvaluep).node)) {
8855 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8861 case YYSYMBOL_value_expr_command_call:
8864 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8865 rb_parser_printf(p,
"NODE_SPECIAL");
8867 else if (((*yyvaluep).node)) {
8868 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8874 case YYSYMBOL_command_call_value:
8877 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8878 rb_parser_printf(p,
"NODE_SPECIAL");
8880 else if (((*yyvaluep).node)) {
8881 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8887 case YYSYMBOL_block_command:
8890 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8891 rb_parser_printf(p,
"NODE_SPECIAL");
8893 else if (((*yyvaluep).node)) {
8894 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8900 case YYSYMBOL_cmd_brace_block:
8903 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8904 rb_parser_printf(p,
"NODE_SPECIAL");
8906 else if (((*yyvaluep).node)) {
8907 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8913 case YYSYMBOL_fcall:
8916 if ((
NODE *)((*yyvaluep).node_fcall) == (
NODE *)-1) {
8917 rb_parser_printf(p,
"NODE_SPECIAL");
8919 else if (((*yyvaluep).node_fcall)) {
8920 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_fcall)))));
8926 case YYSYMBOL_command:
8929 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8930 rb_parser_printf(p,
"NODE_SPECIAL");
8932 else if (((*yyvaluep).node)) {
8933 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8942 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
8943 rb_parser_printf(p,
"NODE_SPECIAL");
8945 else if (((*yyvaluep).node_masgn)) {
8946 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
8952 case YYSYMBOL_mlhs_inner:
8955 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
8956 rb_parser_printf(p,
"NODE_SPECIAL");
8958 else if (((*yyvaluep).node_masgn)) {
8959 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
8965 case YYSYMBOL_mlhs_basic:
8968 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
8969 rb_parser_printf(p,
"NODE_SPECIAL");
8971 else if (((*yyvaluep).node_masgn)) {
8972 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
8978 case YYSYMBOL_mlhs_mlhs_item:
8981 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8982 rb_parser_printf(p,
"NODE_SPECIAL");
8984 else if (((*yyvaluep).node)) {
8985 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8991 case YYSYMBOL_mlhs_item:
8994 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8995 rb_parser_printf(p,
"NODE_SPECIAL");
8997 else if (((*yyvaluep).node)) {
8998 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9004 case YYSYMBOL_mlhs_head:
9007 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9008 rb_parser_printf(p,
"NODE_SPECIAL");
9010 else if (((*yyvaluep).node)) {
9011 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9017 case YYSYMBOL_mlhs_node:
9020 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9021 rb_parser_printf(p,
"NODE_SPECIAL");
9023 else if (((*yyvaluep).node)) {
9024 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9033 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9034 rb_parser_printf(p,
"NODE_SPECIAL");
9036 else if (((*yyvaluep).node)) {
9037 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9043 case YYSYMBOL_cname:
9046 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9051 case YYSYMBOL_cpath:
9054 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9055 rb_parser_printf(p,
"NODE_SPECIAL");
9057 else if (((*yyvaluep).node)) {
9058 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9064 case YYSYMBOL_fname:
9067 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9072 case YYSYMBOL_fitem:
9075 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9076 rb_parser_printf(p,
"NODE_SPECIAL");
9078 else if (((*yyvaluep).node)) {
9079 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9085 case YYSYMBOL_undef_list:
9088 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9089 rb_parser_printf(p,
"NODE_SPECIAL");
9091 else if (((*yyvaluep).node)) {
9092 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9101 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9106 case YYSYMBOL_reswords:
9109 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9114 case YYSYMBOL_asgn_arg_rhs:
9117 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9118 rb_parser_printf(p,
"NODE_SPECIAL");
9120 else if (((*yyvaluep).node)) {
9121 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9130 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9131 rb_parser_printf(p,
"NODE_SPECIAL");
9133 else if (((*yyvaluep).node)) {
9134 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9140 case YYSYMBOL_op_asgn_arg_rhs:
9143 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9144 rb_parser_printf(p,
"NODE_SPECIAL");
9146 else if (((*yyvaluep).node)) {
9147 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9153 case YYSYMBOL_range_expr_arg:
9156 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9157 rb_parser_printf(p,
"NODE_SPECIAL");
9159 else if (((*yyvaluep).node)) {
9160 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9166 case YYSYMBOL_def_endless_method_endless_arg:
9169 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9170 rb_parser_printf(p,
"NODE_SPECIAL");
9172 else if (((*yyvaluep).node)) {
9173 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9179 case YYSYMBOL_ternary:
9182 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9183 rb_parser_printf(p,
"NODE_SPECIAL");
9185 else if (((*yyvaluep).node)) {
9186 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9192 case YYSYMBOL_endless_arg:
9195 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9196 rb_parser_printf(p,
"NODE_SPECIAL");
9198 else if (((*yyvaluep).node)) {
9199 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9205 case YYSYMBOL_relop:
9208 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9213 case YYSYMBOL_rel_expr:
9216 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9217 rb_parser_printf(p,
"NODE_SPECIAL");
9219 else if (((*yyvaluep).node)) {
9220 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9226 case YYSYMBOL_value_expr_arg:
9229 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9230 rb_parser_printf(p,
"NODE_SPECIAL");
9232 else if (((*yyvaluep).node)) {
9233 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9239 case YYSYMBOL_arg_value:
9242 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9243 rb_parser_printf(p,
"NODE_SPECIAL");
9245 else if (((*yyvaluep).node)) {
9246 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9252 case YYSYMBOL_aref_args:
9255 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9256 rb_parser_printf(p,
"NODE_SPECIAL");
9258 else if (((*yyvaluep).node)) {
9259 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9265 case YYSYMBOL_arg_rhs:
9268 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9269 rb_parser_printf(p,
"NODE_SPECIAL");
9271 else if (((*yyvaluep).node)) {
9272 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9278 case YYSYMBOL_paren_args:
9281 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9282 rb_parser_printf(p,
"NODE_SPECIAL");
9284 else if (((*yyvaluep).node)) {
9285 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9291 case YYSYMBOL_opt_paren_args:
9294 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9295 rb_parser_printf(p,
"NODE_SPECIAL");
9297 else if (((*yyvaluep).node)) {
9298 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9304 case YYSYMBOL_opt_call_args:
9307 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9308 rb_parser_printf(p,
"NODE_SPECIAL");
9310 else if (((*yyvaluep).node)) {
9311 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9317 case YYSYMBOL_value_expr_command:
9320 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9321 rb_parser_printf(p,
"NODE_SPECIAL");
9323 else if (((*yyvaluep).node)) {
9324 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9330 case YYSYMBOL_call_args:
9333 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9334 rb_parser_printf(p,
"NODE_SPECIAL");
9336 else if (((*yyvaluep).node)) {
9337 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9343 case YYSYMBOL_command_args:
9346 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9347 rb_parser_printf(p,
"NODE_SPECIAL");
9349 else if (((*yyvaluep).node)) {
9350 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9356 case YYSYMBOL_block_arg:
9359 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
9360 rb_parser_printf(p,
"NODE_SPECIAL");
9362 else if (((*yyvaluep).node_block_pass)) {
9363 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9369 case YYSYMBOL_opt_block_arg:
9372 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
9373 rb_parser_printf(p,
"NODE_SPECIAL");
9375 else if (((*yyvaluep).node_block_pass)) {
9376 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9385 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9386 rb_parser_printf(p,
"NODE_SPECIAL");
9388 else if (((*yyvaluep).node)) {
9389 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9395 case YYSYMBOL_arg_splat:
9398 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9399 rb_parser_printf(p,
"NODE_SPECIAL");
9401 else if (((*yyvaluep).node)) {
9402 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9408 case YYSYMBOL_mrhs_arg:
9411 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9412 rb_parser_printf(p,
"NODE_SPECIAL");
9414 else if (((*yyvaluep).node)) {
9415 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9424 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9425 rb_parser_printf(p,
"NODE_SPECIAL");
9427 else if (((*yyvaluep).node)) {
9428 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9434 case YYSYMBOL_primary:
9437 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9438 rb_parser_printf(p,
"NODE_SPECIAL");
9440 else if (((*yyvaluep).node)) {
9441 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9447 case YYSYMBOL_value_expr_primary:
9450 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9451 rb_parser_printf(p,
"NODE_SPECIAL");
9453 else if (((*yyvaluep).node)) {
9454 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9460 case YYSYMBOL_primary_value:
9463 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9464 rb_parser_printf(p,
"NODE_SPECIAL");
9466 else if (((*yyvaluep).node)) {
9467 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9473 case YYSYMBOL_k_while:
9476 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9477 rb_parser_printf(p,
"NODE_SPECIAL");
9479 else if (((*yyvaluep).node_exits)) {
9480 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9486 case YYSYMBOL_k_until:
9489 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9490 rb_parser_printf(p,
"NODE_SPECIAL");
9492 else if (((*yyvaluep).node_exits)) {
9493 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9499 case YYSYMBOL_k_for:
9502 if ((
NODE *)((*yyvaluep).node_exits) == (
NODE *)-1) {
9503 rb_parser_printf(p,
"NODE_SPECIAL");
9505 else if (((*yyvaluep).node_exits)) {
9506 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9512 case YYSYMBOL_k_def:
9515 if ((
NODE *)((*yyvaluep).node_def_temp) == (
NODE *)-1) {
9516 rb_parser_printf(p,
"NODE_SPECIAL");
9518 else if (((*yyvaluep).node_def_temp)) {
9519 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
9528 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9533 case YYSYMBOL_if_tail:
9536 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9537 rb_parser_printf(p,
"NODE_SPECIAL");
9539 else if (((*yyvaluep).node)) {
9540 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9546 case YYSYMBOL_opt_else:
9549 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9550 rb_parser_printf(p,
"NODE_SPECIAL");
9552 else if (((*yyvaluep).node)) {
9553 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9559 case YYSYMBOL_for_var:
9562 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9563 rb_parser_printf(p,
"NODE_SPECIAL");
9565 else if (((*yyvaluep).node)) {
9566 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9572 case YYSYMBOL_f_marg:
9575 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9576 rb_parser_printf(p,
"NODE_SPECIAL");
9578 else if (((*yyvaluep).node)) {
9579 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9585 case YYSYMBOL_mlhs_f_marg:
9588 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9589 rb_parser_printf(p,
"NODE_SPECIAL");
9591 else if (((*yyvaluep).node)) {
9592 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9598 case YYSYMBOL_f_margs:
9601 if ((
NODE *)((*yyvaluep).node_masgn) == (
NODE *)-1) {
9602 rb_parser_printf(p,
"NODE_SPECIAL");
9604 else if (((*yyvaluep).node_masgn)) {
9605 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9611 case YYSYMBOL_f_rest_marg:
9614 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9615 rb_parser_printf(p,
"NODE_SPECIAL");
9617 else if (((*yyvaluep).node)) {
9618 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9624 case YYSYMBOL_f_any_kwrest:
9627 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9632 case YYSYMBOL_f_kw_primary_value:
9635 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9636 rb_parser_printf(p,
"NODE_SPECIAL");
9638 else if (((*yyvaluep).node_kw_arg)) {
9639 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9645 case YYSYMBOL_f_kwarg_primary_value:
9648 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9649 rb_parser_printf(p,
"NODE_SPECIAL");
9651 else if (((*yyvaluep).node_kw_arg)) {
9652 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9658 case YYSYMBOL_args_tail_basic_primary_value:
9661 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9662 rb_parser_printf(p,
"NODE_SPECIAL");
9664 else if (((*yyvaluep).node_args)) {
9665 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9671 case YYSYMBOL_block_args_tail:
9674 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9675 rb_parser_printf(p,
"NODE_SPECIAL");
9677 else if (((*yyvaluep).node_args)) {
9678 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9684 case YYSYMBOL_excessed_comma:
9687 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9692 case YYSYMBOL_f_opt_primary_value:
9695 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9696 rb_parser_printf(p,
"NODE_SPECIAL");
9698 else if (((*yyvaluep).node_opt_arg)) {
9699 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9705 case YYSYMBOL_f_opt_arg_primary_value:
9708 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9709 rb_parser_printf(p,
"NODE_SPECIAL");
9711 else if (((*yyvaluep).node_opt_arg)) {
9712 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9718 case YYSYMBOL_opt_args_tail_block_args_tail:
9721 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9722 rb_parser_printf(p,
"NODE_SPECIAL");
9724 else if (((*yyvaluep).node_args)) {
9725 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9731 case YYSYMBOL_block_param:
9734 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9735 rb_parser_printf(p,
"NODE_SPECIAL");
9737 else if (((*yyvaluep).node_args)) {
9738 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9744 case YYSYMBOL_opt_block_param_def:
9747 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9748 rb_parser_printf(p,
"NODE_SPECIAL");
9750 else if (((*yyvaluep).node_args)) {
9751 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9757 case YYSYMBOL_block_param_def:
9760 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9761 rb_parser_printf(p,
"NODE_SPECIAL");
9763 else if (((*yyvaluep).node_args)) {
9764 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9770 case YYSYMBOL_opt_block_param:
9773 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9774 rb_parser_printf(p,
"NODE_SPECIAL");
9776 else if (((*yyvaluep).node_args)) {
9777 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9783 case YYSYMBOL_opt_bv_decl:
9786 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9791 case YYSYMBOL_bv_decls:
9794 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9802 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9807 case YYSYMBOL_numparam:
9810 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9811 rb_parser_printf(p,
"NODE_SPECIAL");
9813 else if (((*yyvaluep).node)) {
9814 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9820 case YYSYMBOL_it_id:
9823 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9828 case YYSYMBOL_lambda:
9831 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9832 rb_parser_printf(p,
"NODE_SPECIAL");
9834 else if (((*yyvaluep).node)) {
9835 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9841 case YYSYMBOL_f_larglist:
9844 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9845 rb_parser_printf(p,
"NODE_SPECIAL");
9847 else if (((*yyvaluep).node_args)) {
9848 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9854 case YYSYMBOL_do_block:
9857 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9858 rb_parser_printf(p,
"NODE_SPECIAL");
9860 else if (((*yyvaluep).node)) {
9861 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9867 case YYSYMBOL_block_call:
9870 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9871 rb_parser_printf(p,
"NODE_SPECIAL");
9873 else if (((*yyvaluep).node)) {
9874 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9880 case YYSYMBOL_method_call:
9883 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9884 rb_parser_printf(p,
"NODE_SPECIAL");
9886 else if (((*yyvaluep).node)) {
9887 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9893 case YYSYMBOL_brace_block:
9896 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9897 rb_parser_printf(p,
"NODE_SPECIAL");
9899 else if (((*yyvaluep).node)) {
9900 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9906 case YYSYMBOL_brace_body:
9909 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9910 rb_parser_printf(p,
"NODE_SPECIAL");
9912 else if (((*yyvaluep).node)) {
9913 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9919 case YYSYMBOL_do_body:
9922 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9923 rb_parser_printf(p,
"NODE_SPECIAL");
9925 else if (((*yyvaluep).node)) {
9926 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9932 case YYSYMBOL_case_args:
9935 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9936 rb_parser_printf(p,
"NODE_SPECIAL");
9938 else if (((*yyvaluep).node)) {
9939 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9945 case YYSYMBOL_case_body:
9948 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9949 rb_parser_printf(p,
"NODE_SPECIAL");
9951 else if (((*yyvaluep).node)) {
9952 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9958 case YYSYMBOL_cases:
9961 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9962 rb_parser_printf(p,
"NODE_SPECIAL");
9964 else if (((*yyvaluep).node)) {
9965 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9971 case YYSYMBOL_p_case_body:
9974 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9975 rb_parser_printf(p,
"NODE_SPECIAL");
9977 else if (((*yyvaluep).node)) {
9978 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9984 case YYSYMBOL_p_cases:
9987 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9988 rb_parser_printf(p,
"NODE_SPECIAL");
9990 else if (((*yyvaluep).node)) {
9991 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9997 case YYSYMBOL_p_top_expr:
10000 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10001 rb_parser_printf(p,
"NODE_SPECIAL");
10003 else if (((*yyvaluep).node)) {
10004 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10007#line 10008 "parse.c"
10010 case YYSYMBOL_p_top_expr_body:
10011#line 2616 "parse.y"
10013 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10014 rb_parser_printf(p,
"NODE_SPECIAL");
10016 else if (((*yyvaluep).node)) {
10017 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10020#line 10021 "parse.c"
10023 case YYSYMBOL_p_expr:
10024#line 2616 "parse.y"
10026 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10027 rb_parser_printf(p,
"NODE_SPECIAL");
10029 else if (((*yyvaluep).node)) {
10030 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10033#line 10034 "parse.c"
10036 case YYSYMBOL_p_as:
10037#line 2616 "parse.y"
10039 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10040 rb_parser_printf(p,
"NODE_SPECIAL");
10042 else if (((*yyvaluep).node)) {
10043 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10046#line 10047 "parse.c"
10049 case YYSYMBOL_p_alt:
10050#line 2616 "parse.y"
10052 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10053 rb_parser_printf(p,
"NODE_SPECIAL");
10055 else if (((*yyvaluep).node)) {
10056 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10059#line 10060 "parse.c"
10062 case YYSYMBOL_p_expr_basic:
10063#line 2616 "parse.y"
10065 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10066 rb_parser_printf(p,
"NODE_SPECIAL");
10068 else if (((*yyvaluep).node)) {
10069 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10072#line 10073 "parse.c"
10075 case YYSYMBOL_p_args:
10076#line 2616 "parse.y"
10078 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10079 rb_parser_printf(p,
"NODE_SPECIAL");
10081 else if (((*yyvaluep).node)) {
10082 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10085#line 10086 "parse.c"
10088 case YYSYMBOL_p_args_head:
10089#line 2616 "parse.y"
10091 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10092 rb_parser_printf(p,
"NODE_SPECIAL");
10094 else if (((*yyvaluep).node)) {
10095 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10098#line 10099 "parse.c"
10101 case YYSYMBOL_p_args_tail:
10102#line 2616 "parse.y"
10104 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10105 rb_parser_printf(p,
"NODE_SPECIAL");
10107 else if (((*yyvaluep).node)) {
10108 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10111#line 10112 "parse.c"
10114 case YYSYMBOL_p_find:
10115#line 2616 "parse.y"
10117 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10118 rb_parser_printf(p,
"NODE_SPECIAL");
10120 else if (((*yyvaluep).node)) {
10121 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10124#line 10125 "parse.c"
10127 case YYSYMBOL_p_rest:
10128#line 2616 "parse.y"
10130 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10131 rb_parser_printf(p,
"NODE_SPECIAL");
10133 else if (((*yyvaluep).node)) {
10134 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10137#line 10138 "parse.c"
10140 case YYSYMBOL_p_args_post:
10141#line 2616 "parse.y"
10143 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10144 rb_parser_printf(p,
"NODE_SPECIAL");
10146 else if (((*yyvaluep).node)) {
10147 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10150#line 10151 "parse.c"
10153 case YYSYMBOL_p_arg:
10154#line 2616 "parse.y"
10156 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10157 rb_parser_printf(p,
"NODE_SPECIAL");
10159 else if (((*yyvaluep).node)) {
10160 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10163#line 10164 "parse.c"
10166 case YYSYMBOL_p_kwargs:
10167#line 2616 "parse.y"
10169 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10170 rb_parser_printf(p,
"NODE_SPECIAL");
10172 else if (((*yyvaluep).node)) {
10173 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10176#line 10177 "parse.c"
10179 case YYSYMBOL_p_kwarg:
10180#line 2616 "parse.y"
10182 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10183 rb_parser_printf(p,
"NODE_SPECIAL");
10185 else if (((*yyvaluep).node)) {
10186 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10189#line 10190 "parse.c"
10192 case YYSYMBOL_p_kw:
10193#line 2616 "parse.y"
10195 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10196 rb_parser_printf(p,
"NODE_SPECIAL");
10198 else if (((*yyvaluep).node)) {
10199 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10202#line 10203 "parse.c"
10205 case YYSYMBOL_p_kw_label:
10206#line 2625 "parse.y"
10208 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10210#line 10211 "parse.c"
10213 case YYSYMBOL_p_kwrest:
10214#line 2625 "parse.y"
10216 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10218#line 10219 "parse.c"
10221 case YYSYMBOL_p_kwnorest:
10222#line 2625 "parse.y"
10224 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10226#line 10227 "parse.c"
10229 case YYSYMBOL_p_any_kwrest:
10230#line 2625 "parse.y"
10232 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10234#line 10235 "parse.c"
10237 case YYSYMBOL_p_value:
10238#line 2616 "parse.y"
10240 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10241 rb_parser_printf(p,
"NODE_SPECIAL");
10243 else if (((*yyvaluep).node)) {
10244 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10247#line 10248 "parse.c"
10250 case YYSYMBOL_range_expr_p_primitive:
10251#line 2616 "parse.y"
10253 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10254 rb_parser_printf(p,
"NODE_SPECIAL");
10256 else if (((*yyvaluep).node)) {
10257 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10260#line 10261 "parse.c"
10263 case YYSYMBOL_p_primitive:
10264#line 2616 "parse.y"
10266 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10267 rb_parser_printf(p,
"NODE_SPECIAL");
10269 else if (((*yyvaluep).node)) {
10270 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10273#line 10274 "parse.c"
10276 case YYSYMBOL_p_variable:
10277#line 2616 "parse.y"
10279 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10280 rb_parser_printf(p,
"NODE_SPECIAL");
10282 else if (((*yyvaluep).node)) {
10283 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10286#line 10287 "parse.c"
10289 case YYSYMBOL_p_var_ref:
10290#line 2616 "parse.y"
10292 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10293 rb_parser_printf(p,
"NODE_SPECIAL");
10295 else if (((*yyvaluep).node)) {
10296 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10299#line 10300 "parse.c"
10302 case YYSYMBOL_p_expr_ref:
10303#line 2616 "parse.y"
10305 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10306 rb_parser_printf(p,
"NODE_SPECIAL");
10308 else if (((*yyvaluep).node)) {
10309 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10312#line 10313 "parse.c"
10315 case YYSYMBOL_p_const:
10316#line 2616 "parse.y"
10318 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10319 rb_parser_printf(p,
"NODE_SPECIAL");
10321 else if (((*yyvaluep).node)) {
10322 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10325#line 10326 "parse.c"
10328 case YYSYMBOL_opt_rescue:
10329#line 2616 "parse.y"
10331 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10332 rb_parser_printf(p,
"NODE_SPECIAL");
10334 else if (((*yyvaluep).node)) {
10335 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10338#line 10339 "parse.c"
10341 case YYSYMBOL_exc_list:
10342#line 2616 "parse.y"
10344 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10345 rb_parser_printf(p,
"NODE_SPECIAL");
10347 else if (((*yyvaluep).node)) {
10348 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10351#line 10352 "parse.c"
10354 case YYSYMBOL_exc_var:
10355#line 2616 "parse.y"
10357 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10358 rb_parser_printf(p,
"NODE_SPECIAL");
10360 else if (((*yyvaluep).node)) {
10361 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10364#line 10365 "parse.c"
10367 case YYSYMBOL_opt_ensure:
10368#line 2616 "parse.y"
10370 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10371 rb_parser_printf(p,
"NODE_SPECIAL");
10373 else if (((*yyvaluep).node)) {
10374 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10377#line 10378 "parse.c"
10380 case YYSYMBOL_literal:
10381#line 2616 "parse.y"
10383 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10384 rb_parser_printf(p,
"NODE_SPECIAL");
10386 else if (((*yyvaluep).node)) {
10387 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10390#line 10391 "parse.c"
10393 case YYSYMBOL_strings:
10394#line 2616 "parse.y"
10396 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10397 rb_parser_printf(p,
"NODE_SPECIAL");
10399 else if (((*yyvaluep).node)) {
10400 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10403#line 10404 "parse.c"
10406 case YYSYMBOL_string:
10407#line 2616 "parse.y"
10409 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10410 rb_parser_printf(p,
"NODE_SPECIAL");
10412 else if (((*yyvaluep).node)) {
10413 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10416#line 10417 "parse.c"
10419 case YYSYMBOL_string1:
10420#line 2616 "parse.y"
10422 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10423 rb_parser_printf(p,
"NODE_SPECIAL");
10425 else if (((*yyvaluep).node)) {
10426 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10429#line 10430 "parse.c"
10432 case YYSYMBOL_xstring:
10433#line 2616 "parse.y"
10435 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10436 rb_parser_printf(p,
"NODE_SPECIAL");
10438 else if (((*yyvaluep).node)) {
10439 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10442#line 10443 "parse.c"
10445 case YYSYMBOL_regexp:
10446#line 2616 "parse.y"
10448 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10449 rb_parser_printf(p,
"NODE_SPECIAL");
10451 else if (((*yyvaluep).node)) {
10452 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10455#line 10456 "parse.c"
10458 case YYSYMBOL_words_tWORDS_BEG_word_list:
10459#line 2616 "parse.y"
10461 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10462 rb_parser_printf(p,
"NODE_SPECIAL");
10464 else if (((*yyvaluep).node)) {
10465 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10468#line 10469 "parse.c"
10471 case YYSYMBOL_words:
10472#line 2616 "parse.y"
10474 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10475 rb_parser_printf(p,
"NODE_SPECIAL");
10477 else if (((*yyvaluep).node)) {
10478 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10481#line 10482 "parse.c"
10484 case YYSYMBOL_word_list:
10485#line 2616 "parse.y"
10487 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10488 rb_parser_printf(p,
"NODE_SPECIAL");
10490 else if (((*yyvaluep).node)) {
10491 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10494#line 10495 "parse.c"
10497 case YYSYMBOL_word:
10498#line 2616 "parse.y"
10500 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10501 rb_parser_printf(p,
"NODE_SPECIAL");
10503 else if (((*yyvaluep).node)) {
10504 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10507#line 10508 "parse.c"
10510 case YYSYMBOL_words_tSYMBOLS_BEG_symbol_list:
10511#line 2616 "parse.y"
10513 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10514 rb_parser_printf(p,
"NODE_SPECIAL");
10516 else if (((*yyvaluep).node)) {
10517 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10520#line 10521 "parse.c"
10523 case YYSYMBOL_symbols:
10524#line 2616 "parse.y"
10526 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10527 rb_parser_printf(p,
"NODE_SPECIAL");
10529 else if (((*yyvaluep).node)) {
10530 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10533#line 10534 "parse.c"
10536 case YYSYMBOL_symbol_list:
10537#line 2616 "parse.y"
10539 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10540 rb_parser_printf(p,
"NODE_SPECIAL");
10542 else if (((*yyvaluep).node)) {
10543 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10546#line 10547 "parse.c"
10549 case YYSYMBOL_words_tQWORDS_BEG_qword_list:
10550#line 2616 "parse.y"
10552 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10553 rb_parser_printf(p,
"NODE_SPECIAL");
10555 else if (((*yyvaluep).node)) {
10556 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10559#line 10560 "parse.c"
10562 case YYSYMBOL_qwords:
10563#line 2616 "parse.y"
10565 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10566 rb_parser_printf(p,
"NODE_SPECIAL");
10568 else if (((*yyvaluep).node)) {
10569 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10572#line 10573 "parse.c"
10575 case YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list:
10576#line 2616 "parse.y"
10578 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10579 rb_parser_printf(p,
"NODE_SPECIAL");
10581 else if (((*yyvaluep).node)) {
10582 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10585#line 10586 "parse.c"
10588 case YYSYMBOL_qsymbols:
10589#line 2616 "parse.y"
10591 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10592 rb_parser_printf(p,
"NODE_SPECIAL");
10594 else if (((*yyvaluep).node)) {
10595 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10598#line 10599 "parse.c"
10601 case YYSYMBOL_qword_list:
10602#line 2616 "parse.y"
10604 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10605 rb_parser_printf(p,
"NODE_SPECIAL");
10607 else if (((*yyvaluep).node)) {
10608 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10611#line 10612 "parse.c"
10614 case YYSYMBOL_qsym_list:
10615#line 2616 "parse.y"
10617 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10618 rb_parser_printf(p,
"NODE_SPECIAL");
10620 else if (((*yyvaluep).node)) {
10621 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10624#line 10625 "parse.c"
10627 case YYSYMBOL_string_contents:
10628#line 2616 "parse.y"
10630 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10631 rb_parser_printf(p,
"NODE_SPECIAL");
10633 else if (((*yyvaluep).node)) {
10634 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10637#line 10638 "parse.c"
10640 case YYSYMBOL_xstring_contents:
10641#line 2616 "parse.y"
10643 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10644 rb_parser_printf(p,
"NODE_SPECIAL");
10646 else if (((*yyvaluep).node)) {
10647 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10650#line 10651 "parse.c"
10653 case YYSYMBOL_regexp_contents:
10654#line 2616 "parse.y"
10656 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10657 rb_parser_printf(p,
"NODE_SPECIAL");
10659 else if (((*yyvaluep).node)) {
10660 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10663#line 10664 "parse.c"
10666 case YYSYMBOL_string_content:
10667#line 2616 "parse.y"
10669 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10670 rb_parser_printf(p,
"NODE_SPECIAL");
10672 else if (((*yyvaluep).node)) {
10673 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10676#line 10677 "parse.c"
10679 case YYSYMBOL_string_dvar:
10680#line 2616 "parse.y"
10682 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10683 rb_parser_printf(p,
"NODE_SPECIAL");
10685 else if (((*yyvaluep).node)) {
10686 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10689#line 10690 "parse.c"
10692 case YYSYMBOL_symbol:
10693#line 2616 "parse.y"
10695 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10696 rb_parser_printf(p,
"NODE_SPECIAL");
10698 else if (((*yyvaluep).node)) {
10699 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10702#line 10703 "parse.c"
10705 case YYSYMBOL_ssym:
10706#line 2616 "parse.y"
10708 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10709 rb_parser_printf(p,
"NODE_SPECIAL");
10711 else if (((*yyvaluep).node)) {
10712 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10715#line 10716 "parse.c"
10719#line 2625 "parse.y"
10721 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10723#line 10724 "parse.c"
10726 case YYSYMBOL_dsym:
10727#line 2616 "parse.y"
10729 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10730 rb_parser_printf(p,
"NODE_SPECIAL");
10732 else if (((*yyvaluep).node)) {
10733 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10736#line 10737 "parse.c"
10739 case YYSYMBOL_numeric:
10740#line 2616 "parse.y"
10742 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10743 rb_parser_printf(p,
"NODE_SPECIAL");
10745 else if (((*yyvaluep).node)) {
10746 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10749#line 10750 "parse.c"
10752 case YYSYMBOL_simple_numeric:
10753#line 2616 "parse.y"
10755 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10756 rb_parser_printf(p,
"NODE_SPECIAL");
10758 else if (((*yyvaluep).node)) {
10759 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10762#line 10763 "parse.c"
10765 case YYSYMBOL_nonlocal_var:
10766#line 2625 "parse.y"
10768 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10770#line 10771 "parse.c"
10773 case YYSYMBOL_user_variable:
10774#line 2625 "parse.y"
10776 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10778#line 10779 "parse.c"
10781 case YYSYMBOL_keyword_variable:
10782#line 2625 "parse.y"
10784 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10786#line 10787 "parse.c"
10789 case YYSYMBOL_var_ref:
10790#line 2616 "parse.y"
10792 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10793 rb_parser_printf(p,
"NODE_SPECIAL");
10795 else if (((*yyvaluep).node)) {
10796 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10799#line 10800 "parse.c"
10802 case YYSYMBOL_var_lhs:
10803#line 2616 "parse.y"
10805 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10806 rb_parser_printf(p,
"NODE_SPECIAL");
10808 else if (((*yyvaluep).node)) {
10809 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10812#line 10813 "parse.c"
10815 case YYSYMBOL_backref:
10816#line 2616 "parse.y"
10818 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10819 rb_parser_printf(p,
"NODE_SPECIAL");
10821 else if (((*yyvaluep).node)) {
10822 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10825#line 10826 "parse.c"
10828 case YYSYMBOL_superclass:
10829#line 2616 "parse.y"
10831 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
10832 rb_parser_printf(p,
"NODE_SPECIAL");
10834 else if (((*yyvaluep).node)) {
10835 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10838#line 10839 "parse.c"
10841 case YYSYMBOL_f_opt_paren_args:
10842#line 2616 "parse.y"
10844 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10845 rb_parser_printf(p,
"NODE_SPECIAL");
10847 else if (((*yyvaluep).node_args)) {
10848 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10851#line 10852 "parse.c"
10854 case YYSYMBOL_f_paren_args:
10855#line 2616 "parse.y"
10857 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10858 rb_parser_printf(p,
"NODE_SPECIAL");
10860 else if (((*yyvaluep).node_args)) {
10861 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10864#line 10865 "parse.c"
10867 case YYSYMBOL_f_arglist:
10868#line 2616 "parse.y"
10870 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10871 rb_parser_printf(p,
"NODE_SPECIAL");
10873 else if (((*yyvaluep).node_args)) {
10874 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10877#line 10878 "parse.c"
10880 case YYSYMBOL_f_kw_arg_value:
10881#line 2616 "parse.y"
10883 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
10884 rb_parser_printf(p,
"NODE_SPECIAL");
10886 else if (((*yyvaluep).node_kw_arg)) {
10887 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
10890#line 10891 "parse.c"
10893 case YYSYMBOL_f_kwarg_arg_value:
10894#line 2616 "parse.y"
10896 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
10897 rb_parser_printf(p,
"NODE_SPECIAL");
10899 else if (((*yyvaluep).node_kw_arg)) {
10900 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
10903#line 10904 "parse.c"
10906 case YYSYMBOL_args_tail_basic_arg_value:
10907#line 2616 "parse.y"
10909 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10910 rb_parser_printf(p,
"NODE_SPECIAL");
10912 else if (((*yyvaluep).node_args)) {
10913 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10916#line 10917 "parse.c"
10919 case YYSYMBOL_args_tail:
10920#line 2616 "parse.y"
10922 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10923 rb_parser_printf(p,
"NODE_SPECIAL");
10925 else if (((*yyvaluep).node_args)) {
10926 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10929#line 10930 "parse.c"
10932 case YYSYMBOL_f_opt_arg_value:
10933#line 2616 "parse.y"
10935 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
10936 rb_parser_printf(p,
"NODE_SPECIAL");
10938 else if (((*yyvaluep).node_opt_arg)) {
10939 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
10942#line 10943 "parse.c"
10945 case YYSYMBOL_f_opt_arg_arg_value:
10946#line 2616 "parse.y"
10948 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
10949 rb_parser_printf(p,
"NODE_SPECIAL");
10951 else if (((*yyvaluep).node_opt_arg)) {
10952 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
10955#line 10956 "parse.c"
10958 case YYSYMBOL_opt_args_tail_args_tail:
10959#line 2616 "parse.y"
10961 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10962 rb_parser_printf(p,
"NODE_SPECIAL");
10964 else if (((*yyvaluep).node_args)) {
10965 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10968#line 10969 "parse.c"
10971 case YYSYMBOL_f_args:
10972#line 2616 "parse.y"
10974 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
10975 rb_parser_printf(p,
"NODE_SPECIAL");
10977 else if (((*yyvaluep).node_args)) {
10978 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10981#line 10982 "parse.c"
10984 case YYSYMBOL_args_forward:
10985#line 2625 "parse.y"
10987 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10989#line 10990 "parse.c"
10992 case YYSYMBOL_f_bad_arg:
10993#line 2625 "parse.y"
10995 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10997#line 10998 "parse.c"
11000 case YYSYMBOL_f_norm_arg:
11001#line 2625 "parse.y"
11003 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11005#line 11006 "parse.c"
11008 case YYSYMBOL_f_arg_asgn:
11009#line 2625 "parse.y"
11011 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11013#line 11014 "parse.c"
11016 case YYSYMBOL_f_arg_item:
11017#line 2616 "parse.y"
11019 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
11020 rb_parser_printf(p,
"NODE_SPECIAL");
11022 else if (((*yyvaluep).node_args_aux)) {
11023 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11026#line 11027 "parse.c"
11029 case YYSYMBOL_f_arg:
11030#line 2616 "parse.y"
11032 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
11033 rb_parser_printf(p,
"NODE_SPECIAL");
11035 else if (((*yyvaluep).node_args_aux)) {
11036 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11039#line 11040 "parse.c"
11042 case YYSYMBOL_f_label:
11043#line 2625 "parse.y"
11045 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11047#line 11048 "parse.c"
11050 case YYSYMBOL_f_no_kwarg:
11051#line 2625 "parse.y"
11053 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11055#line 11056 "parse.c"
11058 case YYSYMBOL_f_kwrest:
11059#line 2625 "parse.y"
11061 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11063#line 11064 "parse.c"
11066 case YYSYMBOL_f_rest_arg:
11067#line 2625 "parse.y"
11069 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11071#line 11072 "parse.c"
11074 case YYSYMBOL_f_block_arg:
11075#line 2625 "parse.y"
11077 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11079#line 11080 "parse.c"
11082 case YYSYMBOL_opt_f_block_arg:
11083#line 2625 "parse.y"
11085 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11087#line 11088 "parse.c"
11090 case YYSYMBOL_value_expr_singleton_expr:
11091#line 2616 "parse.y"
11093 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11094 rb_parser_printf(p,
"NODE_SPECIAL");
11096 else if (((*yyvaluep).node)) {
11097 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11100#line 11101 "parse.c"
11103 case YYSYMBOL_singleton:
11104#line 2616 "parse.y"
11106 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11107 rb_parser_printf(p,
"NODE_SPECIAL");
11109 else if (((*yyvaluep).node)) {
11110 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11113#line 11114 "parse.c"
11116 case YYSYMBOL_singleton_expr:
11117#line 2616 "parse.y"
11119 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11120 rb_parser_printf(p,
"NODE_SPECIAL");
11122 else if (((*yyvaluep).node)) {
11123 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11126#line 11127 "parse.c"
11129 case YYSYMBOL_assoc_list:
11130#line 2616 "parse.y"
11132 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11133 rb_parser_printf(p,
"NODE_SPECIAL");
11135 else if (((*yyvaluep).node)) {
11136 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11139#line 11140 "parse.c"
11142 case YYSYMBOL_assocs:
11143#line 2616 "parse.y"
11145 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11146 rb_parser_printf(p,
"NODE_SPECIAL");
11148 else if (((*yyvaluep).node)) {
11149 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11152#line 11153 "parse.c"
11155 case YYSYMBOL_assoc:
11156#line 2616 "parse.y"
11158 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11159 rb_parser_printf(p,
"NODE_SPECIAL");
11161 else if (((*yyvaluep).node)) {
11162 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11165#line 11166 "parse.c"
11168 case YYSYMBOL_operation2:
11169#line 2625 "parse.y"
11171 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11173#line 11174 "parse.c"
11176 case YYSYMBOL_operation3:
11177#line 2625 "parse.y"
11179 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11181#line 11182 "parse.c"
11184 case YYSYMBOL_dot_or_colon:
11185#line 2625 "parse.y"
11187 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11189#line 11190 "parse.c"
11192 case YYSYMBOL_call_op:
11193#line 2625 "parse.y"
11195 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11197#line 11198 "parse.c"
11200 case YYSYMBOL_call_op2:
11201#line 2625 "parse.y"
11203 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11205#line 11206 "parse.c"
11208 case YYSYMBOL_none:
11209#line 2616 "parse.y"
11211 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
11212 rb_parser_printf(p,
"NODE_SPECIAL");
11214 else if (((*yyvaluep).node)) {
11215 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11218#line 11219 "parse.c"
11224 YY_IGNORE_MAYBE_UNINITIALIZED_END
11233yy_symbol_print (
FILE *yyo,
11236 YYFPRINTF (yyo,
"%s %s (",
11237 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
11239 YYLOCATION_PRINT (yyo, yylocationp, p);
11240 YYFPRINTF (yyo,
": ");
11241 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
11242 YYFPRINTF (yyo,
")");
11251yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop,
struct parser_params *p)
11253 YYFPRINTF (stderr,
"Stack now");
11254 for (; yybottom <= yytop; yybottom++)
11256 int yybot = *yybottom;
11257 YYFPRINTF (stderr,
" %d", yybot);
11259 YYFPRINTF (stderr,
"\n");
11262# define YY_STACK_PRINT(Bottom, Top, p) \
11265 yy_stack_print ((Bottom), (Top), p); \
11274yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp,
YYLTYPE *yylsp,
11277 int yylno = yyrline[yyrule];
11278 int yynrhs = yyr2[yyrule];
11280 YYFPRINTF (stderr,
"Reducing stack by rule %d (line %d):\n",
11281 yyrule - 1, yylno);
11283 for (yyi = 0; yyi < yynrhs; yyi++)
11285 YYFPRINTF (stderr,
" $%d = ", yyi + 1);
11286 yy_symbol_print (stderr,
11287 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
11288 &yyvsp[(yyi + 1) - (yynrhs)],
11289 &(yylsp[(yyi + 1) - (yynrhs)]), p);
11290 YYFPRINTF (stderr,
"\n");
11294# define YY_REDUCE_PRINT(Rule, p) \
11297 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
11306# define YYDPRINTF(Args) ((void) 0)
11307# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p)
11308# define YY_STACK_PRINT(Bottom, Top, p)
11309# define YY_REDUCE_PRINT(Rule, p)
11315# define YYINITDEPTH 200
11326# define YYMAXDEPTH 10000
11334 yysymbol_kind_t yytoken;
11346 yysymbol_kind_t yyarg[],
int yyargn)
11350 int yyn = yypact[+*yyctx->yyssp];
11351 if (!yypact_value_is_default (yyn))
11356 int yyxbegin = yyn < 0 ? -yyn : 0;
11358 int yychecklim = YYLAST - yyn + 1;
11359 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
11361 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
11362 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
11363 && !yytable_value_is_error (yytable[yyx + yyn]))
11367 else if (yycount == yyargn)
11370 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
11373 if (yyarg && yycount == 0 && 0 < yyargn)
11374 yyarg[0] = YYSYMBOL_YYEMPTY;
11382# if defined __GLIBC__ && defined _STRING_H
11383# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
11387yystrlen (
const char *yystr)
11390 for (yylen = 0; yystr[yylen]; yylen++)
11398# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
11399# define yystpcpy stpcpy
11404yystpcpy (
char *yydest,
const char *yysrc)
11406 char *yyd = yydest;
11407 const char *yys = yysrc;
11409 while ((*yyd++ = *yys++) !=
'\0')
11426yytnamerr (
char *yyres,
const char *yystr)
11430 YYPTRDIFF_T yyn = 0;
11431 char const *yyp = yystr;
11437 goto do_not_strip_quotes;
11440 if (*++yyp !=
'\\')
11441 goto do_not_strip_quotes;
11457 do_not_strip_quotes: ;
11461 return yystpcpy (yyres, yystr) - yyres;
11463 return yystrlen (yystr);
11470 yysymbol_kind_t yyarg[],
int yyargn)
11497 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
11501 yyarg[yycount] = yyctx->yytoken;
11503 yyn = yypcontext_expected_tokens (yyctx,
11504 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
11505 if (yyn == YYENOMEM)
11522yysyntax_error (YYPTRDIFF_T *yymsg_alloc,
char **yymsg,
11525 enum { YYARGS_MAX = 5 };
11527 const char *yyformat = YY_NULLPTR;
11530 yysymbol_kind_t yyarg[YYARGS_MAX];
11532 YYPTRDIFF_T yysize = 0;
11535 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
11536 if (yycount == YYENOMEM)
11541#define YYCASE_(N, S) \
11546 YYCASE_(0, YY_(
"syntax error"));
11547 YYCASE_(1, YY_(
"syntax error, unexpected %s"));
11548 YYCASE_(2, YY_(
"syntax error, unexpected %s, expecting %s"));
11549 YYCASE_(3, YY_(
"syntax error, unexpected %s, expecting %s or %s"));
11550 YYCASE_(4, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
11551 YYCASE_(5, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
11557 yysize = yystrlen (yyformat) - 2 * yycount + 1;
11560 for (yyi = 0; yyi < yycount; ++yyi)
11562 YYPTRDIFF_T yysize1
11563 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
11564 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
11571 if (*yymsg_alloc < yysize)
11573 *yymsg_alloc = 2 * yysize;
11574 if (! (yysize <= *yymsg_alloc
11575 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
11576 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
11584 char *yyp = *yymsg;
11586 while ((*yyp = *yyformat) !=
'\0')
11587 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
11589 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
11607yydestruct (
const char *yymsg,
11611 YY_USE (yylocationp);
11614 yymsg =
"Deleting";
11615 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp, p);
11617 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
11620 case YYSYMBOL_258_16:
11621#line 2653 "parse.y"
11623 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11625#line 11626 "parse.c"
11628 case YYSYMBOL_259_17:
11629#line 2653 "parse.y"
11631 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11633#line 11634 "parse.c"
11639 YY_IGNORE_MAYBE_UNINITIALIZED_END
11662static const YYSTYPE yyval_default = {};
11663(void) yyval_default;
11665YY_INITIAL_VALUE (
static const YYSTYPE yyval_default;)
11667YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
11670static const YYLTYPE yyloc_default
11671# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
11675YYLTYPE yylloc = yyloc_default;
11681 yy_state_fast_t yystate = 0;
11683 int yyerrstatus = 0;
11689 YYPTRDIFF_T yystacksize = YYINITDEPTH;
11692 yy_state_t yyssa[YYINITDEPTH];
11693 yy_state_t *yyss = yyssa;
11694 yy_state_t *yyssp = yyss;
11710 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
11720 char yymsgbuf[128];
11721 char *yymsg = yymsgbuf;
11722 YYPTRDIFF_T yymsg_alloc =
sizeof yymsgbuf;
11724#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
11730 YYDPRINTF ((stderr,
"Starting parse\n"));
11736#line 2660 "parse.y"
11738 RUBY_SET_YYLLOC_OF_NONE(yylloc);
11741#line 11742 "parse.c"
11760 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
11761 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
11762 YY_IGNORE_USELESS_CAST_BEGIN
11763 *yyssp = YY_CAST (yy_state_t, yystate);
11764 YY_IGNORE_USELESS_CAST_END
11765 YY_STACK_PRINT (yyss, yyssp, p);
11767 if (yyss + yystacksize - 1 <= yyssp)
11768#if !defined yyoverflow && !defined YYSTACK_RELOCATE
11773 YYPTRDIFF_T yysize = yyssp - yyss + 1;
11775# if defined yyoverflow
11780 yy_state_t *yyss1 = yyss;
11788 yyoverflow (YY_(
"memory exhausted"),
11789 &yyss1, yysize * YYSIZEOF (*yyssp),
11790 &yyvs1, yysize * YYSIZEOF (*yyvsp),
11791 &yyls1, yysize * YYSIZEOF (*yylsp),
11799 if (YYMAXDEPTH <= yystacksize)
11802 if (YYMAXDEPTH < yystacksize)
11803 yystacksize = YYMAXDEPTH;
11806 yy_state_t *yyss1 = yyss;
11807 union yyalloc *yyptr =
11808 YY_CAST (
union yyalloc *,
11809 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
11812 YYSTACK_RELOCATE (yyss_alloc, yyss);
11813 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
11814 YYSTACK_RELOCATE (yyls_alloc, yyls);
11815# undef YYSTACK_RELOCATE
11816 if (yyss1 != yyssa)
11817 YYSTACK_FREE (yyss1);
11821 yyssp = yyss + yysize - 1;
11822 yyvsp = yyvs + yysize - 1;
11823 yylsp = yyls + yysize - 1;
11825 YY_IGNORE_USELESS_CAST_BEGIN
11826 YYDPRINTF ((stderr,
"Stack size increased to %ld\n",
11827 YY_CAST (
long, yystacksize)));
11828 YY_IGNORE_USELESS_CAST_END
11830 if (yyss + yystacksize - 1 <= yyssp)
11836 if (yystate == YYFINAL)
11850 yyn = yypact[yystate];
11851 if (yypact_value_is_default (yyn))
11857 if (yychar == YYEMPTY)
11859 YYDPRINTF ((stderr,
"Reading a token\n"));
11860 yychar = yylex (&yylval, &yylloc, p);
11863 if (yychar <= END_OF_INPUT)
11865 yychar = END_OF_INPUT;
11866 yytoken = YYSYMBOL_YYEOF;
11867 YYDPRINTF ((stderr,
"Now at end of input.\n"));
11869 else if (yychar == YYerror)
11876 yytoken = YYSYMBOL_YYerror;
11877 yyerror_range[1] = yylloc;
11882 yytoken = YYTRANSLATE (yychar);
11883 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc, p);
11889 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
11891 yyn = yytable[yyn];
11894 if (yytable_value_is_error (yyn))
11906 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc, p);
11908 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
11910 YY_IGNORE_MAYBE_UNINITIALIZED_END
11913#line 2663 "parse.y"
11915#line 11916 "parse.c"
11927 yyn = yydefact[yystate];
11948 yyval = yyvsp[1-yylen];
11950#line 2664 "parse.y"
11951 {before_reduce(yylen, p);}
11952#line 11953 "parse.c"
11956 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
11957 yyerror_range[1] = yyloc;
11958 YY_REDUCE_PRINT (yyn, p);
11962#line 3158 "parse.y"
11964 SET_LEX_STATE(EXPR_BEG);
11965 local_push(p, ifndef_ripper(1)+0);
11967 if (!ifndef_ripper(p->do_loop) + 0) init_block_exit(p);
11969#line 11970 "parse.c"
11973#line 2973 "parse.y"
11975 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
11977#line 11978 "parse.c"
11981#line 3165 "parse.y"
11983 if ((yyvsp[0].node) && !compile_for_eval) {
11984 NODE *node = (yyvsp[0].node);
11986 if (nd_type_p(node, NODE_BLOCK)) {
11987 while (RNODE_BLOCK(node)->nd_next) {
11988 node = RNODE_BLOCK(node)->nd_next;
11990 node = RNODE_BLOCK(node)->nd_head;
11992 node = remove_begin(node);
11993 void_expr(p, node);
11995 p->eval_tree = NEW_SCOPE(0, block_append(p, p->eval_tree, (yyvsp[0].node)), &(yyloc));
11999#line 12000 "parse.c"
12003#line 3185 "parse.y"
12005 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12008#line 12009 "parse.c"
12012#line 3190 "parse.y"
12014 (yyval.node) = newline_node((yyvsp[0].node));
12017#line 12018 "parse.c"
12021#line 3195 "parse.y"
12023 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12026#line 12027 "parse.c"
12030#line 3202 "parse.y"
12032 clear_block_exit(p,
true);
12033 (yyval.node) = (yyvsp[0].node);
12035#line 12036 "parse.c"
12039#line 3207 "parse.y"
12041 (yyval.node) = (yyvsp[0].node);
12044#line 12045 "parse.c"
12048#line 3213 "parse.y"
12049 {(yyval.node_exits) = init_block_exit(p);}
12050#line 12051 "parse.c"
12054#line 3216 "parse.y"
12056 restore_block_exit(p, (yyvsp[-2].node_exits));
12057 p->eval_tree_begin = block_append(p, p->eval_tree_begin,
12058 NEW_BEGIN((yyvsp[-1].node), &(yyloc)));
12059 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12062#line 12063 "parse.c"
12066#line 2973 "parse.y"
12068 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
12070#line 12071 "parse.c"
12074#line 3229 "parse.y"
12076 if (!(yyvsp[-1].node)) yyerror1(&(yylsp[0]),
"else without rescue is useless");
12077 next_rescue_context(&p->ctxt, &(yyvsp[-2].ctxt), after_else);
12079#line 12080 "parse.c"
12083#line 3234 "parse.y"
12085 next_rescue_context(&p->ctxt, &(yyvsp[-4].ctxt), after_ensure);
12087#line 12088 "parse.c"
12091#line 3238 "parse.y"
12093 (yyval.node) = new_bodystmt(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12096#line 12097 "parse.c"
12100#line 3245 "parse.y"
12102 next_rescue_context(&p->ctxt, &(yyvsp[-1].ctxt), after_ensure);
12104#line 12105 "parse.c"
12108#line 3249 "parse.y"
12110 (yyval.node) = new_bodystmt(p, (yyvsp[-4].node), (yyvsp[-2].node), 0, (yyvsp[0].node), &(yyloc));
12113#line 12114 "parse.c"
12117#line 3256 "parse.y"
12119 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12122#line 12123 "parse.c"
12126#line 3261 "parse.y"
12128 (yyval.node) = newline_node((yyvsp[0].node));
12131#line 12132 "parse.c"
12135#line 3266 "parse.y"
12137 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12140#line 12141 "parse.c"
12144#line 3274 "parse.y"
12146 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
12148#line 12149 "parse.c"
12152#line 3278 "parse.y"
12154 (yyval.node) = (yyvsp[0].node);
12156#line 12157 "parse.c"
12160#line 3283 "parse.y"
12161 {(yyval.node_exits) = allow_block_exit(p);}
12162#line 12163 "parse.c"
12166#line 3286 "parse.y"
12168 (yyval.ctxt) = (yyvsp[0].ctxt);
12169 p->ctxt.in_rescue = before_rescue;
12172#line 12173 "parse.c"
12176#line 3292 "parse.y"
12177 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
12178#line 12179 "parse.c"
12182#line 3293 "parse.y"
12184 (yyval.node) = NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
12187#line 12188 "parse.c"
12191#line 3298 "parse.y"
12193 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].id), &(yyloc), &(yylsp[-2]));
12196#line 12197 "parse.c"
12200#line 3303 "parse.y"
12204 buf[1] = (char)RNODE_BACK_REF((yyvsp[0].node))->nd_nth;
12205 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), rb_intern2(buf, 2), &(yyloc), &(yylsp[-2]));
12208#line 12209 "parse.c"
12212#line 3311 "parse.y"
12214 static const char mesg[] =
"can't make alias for the number variables";
12216 yyerror1(&(yylsp[0]), mesg);
12218 (yyval.node) = NEW_ERROR(&(yyloc));
12221#line 12222 "parse.c"
12225#line 3320 "parse.y"
12227 nd_set_first_loc((yyvsp[0].node), (yylsp[-1]).beg_pos);
12228 RNODE_UNDEF((yyvsp[0].node))->keyword_loc = (yylsp[-1]);
12229 (yyval.node) = (yyvsp[0].node);
12232#line 12233 "parse.c"
12236#line 3327 "parse.y"
12238 (yyval.node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12239 fixpos((yyval.node), (yyvsp[0].node));
12242#line 12243 "parse.c"
12246#line 3333 "parse.y"
12248 (yyval.node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12249 fixpos((yyval.node), (yyvsp[0].node));
12252#line 12253 "parse.c"
12256#line 3339 "parse.y"
12258 clear_block_exit(p,
false);
12259 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12260 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12263 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12267#line 12268 "parse.c"
12271#line 3350 "parse.y"
12273 clear_block_exit(p,
false);
12274 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12275 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12278 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12282#line 12283 "parse.c"
12286#line 3361 "parse.y"
12288 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12290 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12291 resq = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12292 (yyval.node) = NEW_RESCUE(remove_begin((yyvsp[-3].node)), resq, 0, &(yyloc));
12295#line 12296 "parse.c"
12299#line 3370 "parse.y"
12301 if (p->ctxt.in_def) {
12302 rb_warn0(
"END in method; use at_exit");
12304 restore_block_exit(p, (yyvsp[-3].node_exits));
12305 p->ctxt = (yyvsp[-4].ctxt);
12307 NODE *scope = NEW_SCOPE2(0 , 0 , (yyvsp[-1].node) , &(yyloc));
12308 (yyval.node) = NEW_POSTEXE(scope, &(yyloc), &(yylsp[-4]), &(yylsp[-2]), &(yylsp[0]));
12312#line 12313 "parse.c"
12316#line 3384 "parse.y"
12318 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12321#line 12322 "parse.c"
12325#line 2918 "parse.y"
12327 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12330#line 12331 "parse.c"
12334#line 3391 "parse.y"
12336 p->ctxt.in_rescue = (yyvsp[-4].ctxt).in_rescue;
12337 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12338 (yyvsp[0].node) = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12339 loc.beg_pos = (yylsp[-3]).beg_pos;
12340 (yyvsp[-3].node) = NEW_RESCUE((yyvsp[-3].node), (yyvsp[0].node), 0, &loc);
12341 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-6].node_masgn), (yyvsp[-3].node), (yyvsp[-4].ctxt), &(yyloc));
12344#line 12345 "parse.c"
12348#line 3401 "parse.y"
12350 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12353#line 12354 "parse.c"
12357#line 3407 "parse.y"
12360 (yyval.node) = NEW_ERROR(&(yyloc));
12362#line 12363 "parse.c"
12366#line 2918 "parse.y"
12368 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12371#line 12372 "parse.c"
12375#line 3043 "parse.y"
12377 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12380#line 12381 "parse.c"
12384#line 3048 "parse.y"
12386 (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]));
12389#line 12390 "parse.c"
12393#line 3053 "parse.y"
12395 (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]));
12398#line 12399 "parse.c"
12402#line 3058 "parse.y"
12404 (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]));
12407#line 12408 "parse.c"
12411#line 3063 "parse.y"
12413 (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]));
12416#line 12417 "parse.c"
12420#line 3068 "parse.y"
12422 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
12423 (yyval.node) = new_const_op_assign(p, NEW_COLON2((yyvsp[-5].node), (yyvsp[-3].
id), &loc), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12426#line 12427 "parse.c"
12430#line 3074 "parse.y"
12432 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
12433 (yyval.node) = new_const_op_assign(p, NEW_COLON3((yyvsp[-3].
id), &loc), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12436#line 12437 "parse.c"
12440#line 3080 "parse.y"
12442 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
12443 (yyval.node) = NEW_ERROR(&(yyloc));
12446#line 12447 "parse.c"
12450#line 2948 "parse.y"
12452 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12453 restore_defun(p, (yyvsp[-3].node_def_temp));
12454 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
12455 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12456 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
12461#line 12462 "parse.c"
12465#line 2959 "parse.y"
12467 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12468 restore_defun(p, (yyvsp[-3].node_def_temp));
12469 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
12470 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12471 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
12476#line 12477 "parse.c"
12480#line 3420 "parse.y"
12482 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12483 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12486#line 12487 "parse.c"
12490#line 3426 "parse.y"
12492 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12495#line 12496 "parse.c"
12499#line 3434 "parse.y"
12501 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12502 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12503 (yyval.node) = NEW_RESCUE((yyvsp[-3].node), NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc));
12506#line 12507 "parse.c"
12510#line 3445 "parse.y"
12512 (yyval.node) = logop(p, idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12515#line 12516 "parse.c"
12519#line 3450 "parse.y"
12521 (yyval.node) = logop(p, idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12524#line 12525 "parse.c"
12528#line 3455 "parse.y"
12530 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12533#line 12534 "parse.c"
12537#line 3460 "parse.y"
12539 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
12542#line 12543 "parse.c"
12546#line 3465 "parse.y"
12548 value_expr((yyvsp[-1].node));
12550#line 12551 "parse.c"
12554#line 3470 "parse.y"
12556 pop_pktbl(p, (yyvsp[-1].tbl));
12557 pop_pvtbl(p, (yyvsp[-2].tbl));
12558 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12559 (yyval.node) = NEW_CASE3((yyvsp[-6].node), NEW_IN((yyvsp[0].node), 0, 0, &(yylsp[0])), &(yyloc), &NULL_LOC, &NULL_LOC);
12562#line 12563 "parse.c"
12566#line 3478 "parse.y"
12568 value_expr((yyvsp[-1].node));
12570#line 12571 "parse.c"
12574#line 3483 "parse.y"
12576 pop_pktbl(p, (yyvsp[-1].tbl));
12577 pop_pvtbl(p, (yyvsp[-2].tbl));
12578 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12579 (yyval.node) = NEW_CASE3((yyvsp[-6].node), NEW_IN((yyvsp[0].node), NEW_TRUE(&(yylsp[0])), NEW_FALSE(&(yylsp[0])), &(yylsp[0])), &(yyloc), &NULL_LOC, &NULL_LOC);
12582#line 12583 "parse.c"
12586#line 3494 "parse.y"
12588 numparam_name(p, (yyvsp[0].
id));
12590 p->ctxt.in_def = 1;
12591 p->ctxt.in_rescue = before_rescue;
12592 p->ctxt.cant_return = 0;
12593 (yyval.id) = (yyvsp[0].
id);
12595#line 12596 "parse.c"
12599#line 3505 "parse.y"
12601 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-1].node_def_temp));
12602 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12603 (yyval.node_def_temp)->nd_def = NEW_DEFN((yyvsp[0].
id), 0, &(yyloc));
12606#line 12607 "parse.c"
12610#line 3514 "parse.y"
12612 SET_LEX_STATE(EXPR_FNAME);
12614#line 12615 "parse.c"
12618#line 3518 "parse.y"
12620 SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL);
12621 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-4].node_def_temp));
12622 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12623 (yyval.node_def_temp)->nd_def = NEW_DEFS((yyvsp[-3].node), (yyvsp[0].id), 0, &(yyloc));
12626#line 12627 "parse.c"
12630#line 3143 "parse.y"
12632 value_expr((yyvsp[0].node));
12633 (yyval.node) = (yyvsp[0].node);
12635#line 12636 "parse.c"
12639#line 3529 "parse.y"
12641 (yyval.node) = NEW_ERROR(&(yyloc));
12643#line 12644 "parse.c"
12647#line 3534 "parse.y"
12649#line 12650 "parse.c"
12653#line 3534 "parse.y"
12655#line 12656 "parse.c"
12659#line 3535 "parse.y"
12661 (yyval.node) = (yyvsp[-2].node);
12664#line 12665 "parse.c"
12668#line 3143 "parse.y"
12670 value_expr((yyvsp[0].node));
12671 (yyval.node) = (yyvsp[0].node);
12673#line 12674 "parse.c"
12677#line 3550 "parse.y"
12679 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12682#line 12683 "parse.c"
12686#line 3557 "parse.y"
12688 (yyval.node) = (yyvsp[-1].node);
12689 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
12692#line 12693 "parse.c"
12696#line 3565 "parse.y"
12698 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
12701#line 12702 "parse.c"
12705#line 3565 "parse.y"
12707 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
12710#line 12711 "parse.c"
12714#line 3565 "parse.y"
12716 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
12719#line 12720 "parse.c"
12723#line 3572 "parse.y"
12725 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
12726 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
12727 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
12730#line 12731 "parse.c"
12734#line 3579 "parse.y"
12736 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
12737 (yyvsp[-2].node_fcall)->nd_args = (yyvsp[-1].node);
12738 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-2].node_fcall), (yyvsp[0].node), &(yyloc));
12739 fixpos((yyval.node), RNODE((yyvsp[-2].node_fcall)));
12740 nd_set_last_loc((yyvsp[-2].node_fcall), (yylsp[-1]).end_pos);
12743#line 12744 "parse.c"
12747#line 3588 "parse.y"
12749 (yyval.node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
12752#line 12753 "parse.c"
12756#line 3593 "parse.y"
12758 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
12761#line 12762 "parse.c"
12765#line 3598 "parse.y"
12767 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
12770#line 12771 "parse.c"
12774#line 3603 "parse.y"
12776 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-4].node), (yyvsp[-2].id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
12779#line 12780 "parse.c"
12783#line 3608 "parse.y"
12785 set_embraced_location((yyvsp[-1].node), &(yylsp[-2]), &(yylsp[0]));
12786 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-5].node), (yyvsp[-3].id), 0, (yyvsp[-1].node), &(yylsp[-3]), &(yyloc));
12789#line 12790 "parse.c"
12793#line 3614 "parse.y"
12795 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12796 fixpos((yyval.node), (yyvsp[0].node));
12799#line 12800 "parse.c"
12803#line 3620 "parse.y"
12805 (yyval.node) = NEW_YIELD((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12806 fixpos((yyval.node), (yyvsp[0].node));
12809#line 12810 "parse.c"
12813#line 3626 "parse.y"
12815 (yyval.node) = NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc), &(yylsp[-1]));
12818#line 12819 "parse.c"
12822#line 3631 "parse.y"
12825 args = ret_args(p, (yyvsp[0].node));
12826 (yyval.node) = add_block_exit(p, NEW_BREAK(args, &(yyloc), &(yylsp[-1])));
12829#line 12830 "parse.c"
12833#line 3638 "parse.y"
12836 args = ret_args(p, (yyvsp[0].node));
12837 (yyval.node) = add_block_exit(p, NEW_NEXT(args, &(yyloc), &(yylsp[-1])));
12840#line 12841 "parse.c"
12844#line 3648 "parse.y"
12846 (yyval.node_masgn) = (yyvsp[-1].node_masgn);
12849#line 12850 "parse.c"
12853#line 3656 "parse.y"
12855 (yyval.node_masgn) = NEW_MASGN(NEW_LIST((
NODE *)(yyvsp[-1].node_masgn), &(yyloc)), 0, &(yyloc));
12858#line 12859 "parse.c"
12862#line 3663 "parse.y"
12864 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
12867#line 12868 "parse.c"
12871#line 3668 "parse.y"
12873 (yyval.node_masgn) = NEW_MASGN(list_append(p, (yyvsp[-1].node), (yyvsp[0].node)), 0, &(yyloc));
12876#line 12877 "parse.c"
12880#line 3673 "parse.y"
12882 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12885#line 12886 "parse.c"
12889#line 3030 "parse.y"
12891 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
12894#line 12895 "parse.c"
12898#line 3035 "parse.y"
12900 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
12903#line 12904 "parse.c"
12907#line 3678 "parse.y"
12909 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
12912#line 12913 "parse.c"
12916#line 3683 "parse.y"
12918 (yyval.node_masgn) = NEW_MASGN((yyvsp[-1].node), NODE_SPECIAL_NO_NAME_REST, &(yyloc));
12921#line 12922 "parse.c"
12925#line 3688 "parse.y"
12927 (yyval.node_masgn) = NEW_MASGN((yyvsp[-3].node), NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
12930#line 12931 "parse.c"
12934#line 3693 "parse.y"
12936 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
12939#line 12940 "parse.c"
12943#line 3698 "parse.y"
12945 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
12948#line 12949 "parse.c"
12952#line 3703 "parse.y"
12954 (yyval.node_masgn) = NEW_MASGN(0, NODE_SPECIAL_NO_NAME_REST, &(yyloc));
12957#line 12958 "parse.c"
12961#line 3708 "parse.y"
12963 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
12966#line 12967 "parse.c"
12970#line 3716 "parse.y"
12972 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
12975#line 12976 "parse.c"
12979#line 3723 "parse.y"
12981 (yyval.node) = NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
12984#line 12985 "parse.c"
12988#line 3728 "parse.y"
12990 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
12993#line 12994 "parse.c"
12997#line 3736 "parse.y"
13000 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13002#line 13003 "parse.c"
13006#line 3736 "parse.y"
13009 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13011#line 13012 "parse.c"
13015#line 3741 "parse.y"
13017 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13020#line 13021 "parse.c"
13024#line 3746 "parse.y"
13026 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13027 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13030#line 13031 "parse.c"
13034#line 3746 "parse.y"
13036 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13037 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13040#line 13041 "parse.c"
13044#line 3752 "parse.y"
13046 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
13049#line 13050 "parse.c"
13053#line 3757 "parse.y"
13056 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
13058#line 13059 "parse.c"
13062#line 3762 "parse.y"
13065 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
13067#line 13068 "parse.c"
13071#line 3767 "parse.y"
13073 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13074 (yyval.node) = NEW_ERROR(&(yyloc));
13077#line 13078 "parse.c"
13081#line 3775 "parse.y"
13084 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13086#line 13087 "parse.c"
13090#line 3775 "parse.y"
13093 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13095#line 13096 "parse.c"
13099#line 3780 "parse.y"
13101 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13104#line 13105 "parse.c"
13108#line 3785 "parse.y"
13110 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13113#line 13114 "parse.c"
13117#line 3785 "parse.y"
13119 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
13122#line 13123 "parse.c"
13126#line 3790 "parse.y"
13128 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
13131#line 13132 "parse.c"
13135#line 3795 "parse.y"
13138 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
13140#line 13141 "parse.c"
13144#line 3800 "parse.y"
13147 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
13149#line 13150 "parse.c"
13153#line 3805 "parse.y"
13155 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13156 (yyval.node) = NEW_ERROR(&(yyloc));
13159#line 13160 "parse.c"
13163#line 3813 "parse.y"
13165 static const char mesg[] =
"class/module name must be CONSTANT";
13167 yyerror1(&(yylsp[0]), mesg);
13171#line 13172 "parse.c"
13175#line 3824 "parse.y"
13177 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
13180#line 13181 "parse.c"
13184#line 3829 "parse.y"
13186 (yyval.node) = NEW_COLON2(0, (yyvsp[0].
id), &(yyloc));
13189#line 13190 "parse.c"
13193#line 3834 "parse.y"
13195 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
13198#line 13199 "parse.c"
13202#line 3842 "parse.y"
13204 SET_LEX_STATE(EXPR_ENDFN);
13205 (yyval.id) = (yyvsp[0].
id);
13207#line 13208 "parse.c"
13211#line 3850 "parse.y"
13213 (yyval.node) = NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc));
13216#line 13217 "parse.c"
13220#line 3858 "parse.y"
13222 (yyval.node) = NEW_UNDEF((yyvsp[0].node), &(yyloc));
13225#line 13226 "parse.c"
13229#line 3862 "parse.y"
13230 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
13231#line 13232 "parse.c"
13235#line 3863 "parse.y"
13237 nd_set_last_loc((yyvsp[-3].node), (yylsp[0]).end_pos);
13238 rb_parser_ary_push_node(p, RNODE_UNDEF((yyvsp[-3].node))->nd_undefs, (yyvsp[0].node));
13241#line 13242 "parse.c"
13245#line 3870 "parse.y"
13246 { (yyval.id) =
'|'; }
13247#line 13248 "parse.c"
13251#line 3871 "parse.y"
13252 { (yyval.id) =
'^'; }
13253#line 13254 "parse.c"
13257#line 3872 "parse.y"
13258 { (yyval.id) =
'&'; }
13259#line 13260 "parse.c"
13263#line 3873 "parse.y"
13264 { (yyval.id) = tCMP; }
13265#line 13266 "parse.c"
13269#line 3874 "parse.y"
13270 { (yyval.id) = tEQ; }
13271#line 13272 "parse.c"
13275#line 3875 "parse.y"
13276 { (yyval.id) = tEQQ; }
13277#line 13278 "parse.c"
13281#line 3876 "parse.y"
13282 { (yyval.id) = tMATCH; }
13283#line 13284 "parse.c"
13287#line 3877 "parse.y"
13288 { (yyval.id) = tNMATCH; }
13289#line 13290 "parse.c"
13293#line 3878 "parse.y"
13294 { (yyval.id) =
'>'; }
13295#line 13296 "parse.c"
13299#line 3879 "parse.y"
13300 { (yyval.id) = tGEQ; }
13301#line 13302 "parse.c"
13305#line 3880 "parse.y"
13306 { (yyval.id) =
'<'; }
13307#line 13308 "parse.c"
13311#line 3881 "parse.y"
13312 { (yyval.id) = tLEQ; }
13313#line 13314 "parse.c"
13317#line 3882 "parse.y"
13318 { (yyval.id) = tNEQ; }
13319#line 13320 "parse.c"
13323#line 3883 "parse.y"
13324 { (yyval.id) = tLSHFT; }
13325#line 13326 "parse.c"
13329#line 3884 "parse.y"
13330 { (yyval.id) = tRSHFT; }
13331#line 13332 "parse.c"
13335#line 3885 "parse.y"
13336 { (yyval.id) =
'+'; }
13337#line 13338 "parse.c"
13341#line 3886 "parse.y"
13342 { (yyval.id) =
'-'; }
13343#line 13344 "parse.c"
13347#line 3887 "parse.y"
13348 { (yyval.id) =
'*'; }
13349#line 13350 "parse.c"
13353#line 3888 "parse.y"
13354 { (yyval.id) =
'*'; }
13355#line 13356 "parse.c"
13359#line 3889 "parse.y"
13360 { (yyval.id) =
'/'; }
13361#line 13362 "parse.c"
13365#line 3890 "parse.y"
13366 { (yyval.id) =
'%'; }
13367#line 13368 "parse.c"
13371#line 3891 "parse.y"
13372 { (yyval.id) = tPOW; }
13373#line 13374 "parse.c"
13377#line 3892 "parse.y"
13378 { (yyval.id) = tDSTAR; }
13379#line 13380 "parse.c"
13383#line 3893 "parse.y"
13384 { (yyval.id) =
'!'; }
13385#line 13386 "parse.c"
13389#line 3894 "parse.y"
13390 { (yyval.id) =
'~'; }
13391#line 13392 "parse.c"
13395#line 3895 "parse.y"
13396 { (yyval.id) = tUPLUS; }
13397#line 13398 "parse.c"
13401#line 3896 "parse.y"
13402 { (yyval.id) = tUMINUS; }
13403#line 13404 "parse.c"
13407#line 3897 "parse.y"
13408 { (yyval.id) = tAREF; }
13409#line 13410 "parse.c"
13413#line 3898 "parse.y"
13414 { (yyval.id) = tASET; }
13415#line 13416 "parse.c"
13419#line 3899 "parse.y"
13420 { (yyval.id) =
'`'; }
13421#line 13422 "parse.c"
13425#line 2918 "parse.y"
13427 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13430#line 13431 "parse.c"
13434#line 3043 "parse.y"
13436 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13439#line 13440 "parse.c"
13443#line 3048 "parse.y"
13445 (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]));
13448#line 13449 "parse.c"
13452#line 3053 "parse.y"
13454 (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]));
13457#line 13458 "parse.c"
13461#line 3058 "parse.y"
13463 (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]));
13466#line 13467 "parse.c"
13470#line 3063 "parse.y"
13472 (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]));
13475#line 13476 "parse.c"
13479#line 3068 "parse.y"
13481 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
13482 (yyval.node) = new_const_op_assign(p, NEW_COLON2((yyvsp[-5].node), (yyvsp[-3].
id), &loc), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13485#line 13486 "parse.c"
13489#line 3074 "parse.y"
13491 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
13492 (yyval.node) = new_const_op_assign(p, NEW_COLON3((yyvsp[-3].
id), &loc), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13495#line 13496 "parse.c"
13499#line 3080 "parse.y"
13501 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
13502 (yyval.node) = NEW_ERROR(&(yyloc));
13505#line 13506 "parse.c"
13509#line 3102 "parse.y"
13511 value_expr((yyvsp[-2].node));
13512 value_expr((yyvsp[0].node));
13513 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13516#line 13517 "parse.c"
13520#line 3109 "parse.y"
13522 value_expr((yyvsp[-2].node));
13523 value_expr((yyvsp[0].node));
13524 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13527#line 13528 "parse.c"
13531#line 3116 "parse.y"
13533 value_expr((yyvsp[-1].node));
13534 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13537#line 13538 "parse.c"
13541#line 3122 "parse.y"
13543 value_expr((yyvsp[-1].node));
13544 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13547#line 13548 "parse.c"
13551#line 3128 "parse.y"
13553 value_expr((yyvsp[0].node));
13554 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13557#line 13558 "parse.c"
13561#line 3134 "parse.y"
13563 value_expr((yyvsp[0].node));
13564 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13567#line 13568 "parse.c"
13571#line 3920 "parse.y"
13573 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13576#line 13577 "parse.c"
13580#line 3925 "parse.y"
13582 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13585#line 13586 "parse.c"
13589#line 3930 "parse.y"
13591 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13594#line 13595 "parse.c"
13598#line 3935 "parse.y"
13600 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13603#line 13604 "parse.c"
13607#line 3940 "parse.y"
13609 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13612#line 13613 "parse.c"
13616#line 3945 "parse.y"
13618 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13621#line 13622 "parse.c"
13625#line 3950 "parse.y"
13627 (yyval.node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)), idUMinus, &(yylsp[-3]), &(yyloc));
13630#line 13631 "parse.c"
13634#line 3955 "parse.y"
13636 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUPlus, &(yylsp[-1]), &(yyloc));
13639#line 13640 "parse.c"
13643#line 3960 "parse.y"
13645 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUMinus, &(yylsp[-1]), &(yyloc));
13648#line 13649 "parse.c"
13652#line 3965 "parse.y"
13654 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13657#line 13658 "parse.c"
13661#line 3970 "parse.y"
13663 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13666#line 13667 "parse.c"
13670#line 3975 "parse.y"
13672 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13675#line 13676 "parse.c"
13679#line 3980 "parse.y"
13681 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13684#line 13685 "parse.c"
13688#line 3986 "parse.y"
13690 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13693#line 13694 "parse.c"
13697#line 3991 "parse.y"
13699 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13702#line 13703 "parse.c"
13706#line 3996 "parse.y"
13708 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13711#line 13712 "parse.c"
13715#line 4001 "parse.y"
13717 (yyval.node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13720#line 13721 "parse.c"
13724#line 4006 "parse.y"
13726 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13729#line 13730 "parse.c"
13733#line 4011 "parse.y"
13735 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
13738#line 13739 "parse.c"
13742#line 4016 "parse.y"
13744 (yyval.node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
13747#line 13748 "parse.c"
13751#line 4021 "parse.y"
13753 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13756#line 13757 "parse.c"
13760#line 4026 "parse.y"
13762 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13765#line 13766 "parse.c"
13769#line 4031 "parse.y"
13771 (yyval.node) = logop(p, idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13774#line 13775 "parse.c"
13778#line 4036 "parse.y"
13780 (yyval.node) = logop(p, idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13783#line 13784 "parse.c"
13787#line 4041 "parse.y"
13789 p->ctxt.in_defined = (yyvsp[-1].ctxt).in_defined;
13790 (yyval.node) = new_defined(p, (yyvsp[0].node), &(yyloc));
13793#line 13794 "parse.c"
13797#line 2948 "parse.y"
13799 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
13800 restore_defun(p, (yyvsp[-3].node_def_temp));
13801 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
13802 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
13803 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
13808#line 13809 "parse.c"
13812#line 2959 "parse.y"
13814 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
13815 restore_defun(p, (yyvsp[-3].node_def_temp));
13816 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
13817 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
13818 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
13823#line 13824 "parse.c"
13827#line 4052 "parse.y"
13829 value_expr((yyvsp[-5].node));
13830 (yyval.node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc), &NULL_LOC, &(yylsp[-1]), &NULL_LOC);
13831 fixpos((yyval.node), (yyvsp[-5].node));
13834#line 13835 "parse.c"
13838#line 4062 "parse.y"
13840 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
13841 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
13844#line 13845 "parse.c"
13848#line 4068 "parse.y"
13850 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
13853#line 13854 "parse.c"
13857#line 4074 "parse.y"
13858 {(yyval.id) =
'>';}
13859#line 13860 "parse.c"
13863#line 4075 "parse.y"
13864 {(yyval.id) =
'<';}
13865#line 13866 "parse.c"
13869#line 4076 "parse.y"
13870 {(yyval.id) = idGE;}
13871#line 13872 "parse.c"
13875#line 4077 "parse.y"
13876 {(yyval.id) = idLE;}
13877#line 13878 "parse.c"
13881#line 4081 "parse.y"
13883 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13886#line 13887 "parse.c"
13890#line 4086 "parse.y"
13892 rb_warning1(
"comparison '%s' after comparison", WARN_ID((yyvsp[-1].
id)));
13893 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13896#line 13897 "parse.c"
13900#line 4094 "parse.y"
13902 (yyval.ctxt) = p->ctxt;
13904#line 13905 "parse.c"
13908#line 4100 "parse.y"
13910 p->ctxt.in_defined = 1;
13911 (yyval.ctxt) = (yyvsp[0].ctxt);
13913#line 13914 "parse.c"
13917#line 4107 "parse.y"
13919 p->ctxt.in_rescue = after_rescue;
13920 (yyval.ctxt) = (yyvsp[0].ctxt);
13922#line 13923 "parse.c"
13926#line 3143 "parse.y"
13928 value_expr((yyvsp[0].node));
13929 (yyval.node) = (yyvsp[0].node);
13931#line 13932 "parse.c"
13935#line 4119 "parse.y"
13937 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
13940#line 13941 "parse.c"
13944#line 4124 "parse.y"
13946 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
13949#line 13950 "parse.c"
13953#line 4131 "parse.y"
13955 value_expr((yyvsp[0].node));
13956 (yyval.node) = (yyvsp[0].node);
13958#line 13959 "parse.c"
13962#line 4136 "parse.y"
13964 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
13965 value_expr((yyvsp[-3].node));
13966 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
13969#line 13970 "parse.c"
13973#line 4145 "parse.y"
13975 (yyval.node) = (yyvsp[-1].node);
13978#line 13979 "parse.c"
13982#line 4150 "parse.y"
13984 if (!check_forwarding_args(p)) {
13988 (yyval.node) = new_args_forward_call(p, (yyvsp[-3].node), &(yylsp[-1]), &(yyloc));
13992#line 13993 "parse.c"
13996#line 4160 "parse.y"
13998 if (!check_forwarding_args(p)) {
14002 (yyval.node) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
14006#line 14007 "parse.c"
14010#line 4173 "parse.y"
14012 (yyval.node) = (yyvsp[0].node) ? (yyvsp[0].node) : NODE_SPECIAL_EMPTY_ARGS;
14014#line 14015 "parse.c"
14018#line 4182 "parse.y"
14020 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14023#line 14024 "parse.c"
14027#line 4187 "parse.y"
14029 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14032#line 14033 "parse.c"
14036#line 3143 "parse.y"
14038 value_expr((yyvsp[0].node));
14039 (yyval.node) = (yyvsp[0].node);
14041#line 14042 "parse.c"
14045#line 4194 "parse.y"
14047 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14050#line 14051 "parse.c"
14054#line 4199 "parse.y"
14056 (yyval.node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node_block_pass));
14059#line 14060 "parse.c"
14063#line 4204 "parse.y"
14065 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14066 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14069#line 14070 "parse.c"
14073#line 4210 "parse.y"
14075 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14076 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14079#line 14080 "parse.c"
14083#line 4219 "parse.y"
14094 case '(':
case tLPAREN:
case tLPAREN_ARG:
case '[':
case tLBRACK:
14097 if (lookahead) CMDARG_POP();
14099 if (lookahead) CMDARG_PUSH(0);
14101#line 14102 "parse.c"
14105#line 4237 "parse.y"
14118 if (lookahead) CMDARG_POP();
14120 if (lookahead) CMDARG_PUSH(0);
14121 (yyval.node) = (yyvsp[0].node);
14124#line 14125 "parse.c"
14128#line 4258 "parse.y"
14130 (yyval.node_block_pass) = NEW_BLOCK_PASS((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14133#line 14134 "parse.c"
14137#line 4263 "parse.y"
14139 forwarding_arg_check(p, idFWD_BLOCK, idFWD_ALL,
"block");
14140 (yyval.node_block_pass) = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14143#line 14144 "parse.c"
14147#line 4271 "parse.y"
14149 (yyval.node_block_pass) = (yyvsp[0].node_block_pass);
14152#line 14153 "parse.c"
14156#line 4276 "parse.y"
14158 (yyval.node_block_pass) = 0;
14161#line 14162 "parse.c"
14165#line 4284 "parse.y"
14167 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14170#line 14171 "parse.c"
14174#line 4289 "parse.y"
14176 (yyval.node) = (yyvsp[0].node);
14179#line 14180 "parse.c"
14183#line 4294 "parse.y"
14185 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14188#line 14189 "parse.c"
14192#line 4299 "parse.y"
14194 (yyval.node) = rest_arg_append(p, (yyvsp[-2].node), RNODE_SPLAT((yyvsp[0].node))->nd_head, &(yyloc));
14197#line 14198 "parse.c"
14201#line 4307 "parse.y"
14203 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14206#line 14207 "parse.c"
14210#line 4312 "parse.y"
14212 forwarding_arg_check(p, idFWD_REST, idFWD_ALL,
"rest");
14213 (yyval.node) = NEW_SPLAT(NEW_LVAR(idFWD_REST, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14216#line 14217 "parse.c"
14220#line 4326 "parse.y"
14222 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14225#line 14226 "parse.c"
14229#line 4331 "parse.y"
14231 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
14234#line 14235 "parse.c"
14238#line 4336 "parse.y"
14240 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14243#line 14244 "parse.c"
14247#line 4357 "parse.y"
14249 (yyval.node) = (
NODE *)NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
14252#line 14253 "parse.c"
14256#line 4362 "parse.y"
14260#line 14261 "parse.c"
14264#line 4367 "parse.y"
14267 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14268 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
14269 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14272#line 14273 "parse.c"
14276#line 4374 "parse.y"
14277 {SET_LEX_STATE(EXPR_ENDARG);}
14278#line 14279 "parse.c"
14282#line 4375 "parse.y"
14284 if (nd_type_p((yyvsp[-2].node), NODE_SELF)) RNODE_SELF((yyvsp[-2].node))->nd_state = 0;
14285 (yyval.node) = (yyvsp[-2].node);
14288#line 14289 "parse.c"
14292#line 4381 "parse.y"
14294 if (nd_type_p((yyvsp[-1].node), NODE_SELF)) RNODE_SELF((yyvsp[-1].node))->nd_state = 0;
14295 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
14298#line 14299 "parse.c"
14302#line 4387 "parse.y"
14304 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
14307#line 14308 "parse.c"
14311#line 4392 "parse.y"
14313 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
14316#line 14317 "parse.c"
14320#line 4397 "parse.y"
14322 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14325#line 14326 "parse.c"
14329#line 4402 "parse.y"
14331 (yyval.node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
14332 RNODE_HASH((yyval.node))->nd_brace = TRUE;
14335#line 14336 "parse.c"
14339#line 4408 "parse.y"
14341 (yyval.node) = NEW_RETURN(0, &(yyloc), &(yylsp[0]));
14344#line 14345 "parse.c"
14348#line 4413 "parse.y"
14350 (yyval.node) = NEW_YIELD((yyvsp[-1].node), &(yyloc), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14353#line 14354 "parse.c"
14357#line 4418 "parse.y"
14359 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
14362#line 14363 "parse.c"
14366#line 4423 "parse.y"
14368 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[0]), &NULL_LOC, &NULL_LOC);
14371#line 14372 "parse.c"
14375#line 4428 "parse.y"
14377 p->ctxt.in_defined = (yyvsp[-2].ctxt).in_defined;
14378 (yyval.node) = new_defined(p, (yyvsp[-1].node), &(yyloc));
14381#line 14382 "parse.c"
14385#line 4434 "parse.y"
14387 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])), METHOD_NOT, &(yylsp[-3]), &(yyloc));
14390#line 14391 "parse.c"
14394#line 4439 "parse.y"
14396 (yyval.node) = call_uni_op(p, method_cond(p, new_nil(&(yylsp[-1])), &(yylsp[-1])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
14399#line 14400 "parse.c"
14403#line 4444 "parse.y"
14405 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-1].node_fcall), (yyvsp[0].node), &(yyloc));
14408#line 14409 "parse.c"
14412#line 4450 "parse.y"
14414 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
14415 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14418#line 14419 "parse.c"
14422#line 4460 "parse.y"
14424 if ((yyvsp[-1].node) && nd_type_p((yyvsp[-1].node), NODE_IF))
14425 RNODE_IF((yyvsp[-1].node))->end_keyword_loc = (yylsp[0]);
14427 (yyval.node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14428 fixpos((yyval.node), (yyvsp[-4].node));
14431#line 14432 "parse.c"
14435#line 4472 "parse.y"
14437 (yyval.node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14438 fixpos((yyval.node), (yyvsp[-4].node));
14441#line 14442 "parse.c"
14445#line 4480 "parse.y"
14447 restore_block_exit(p, (yyvsp[-3].node_exits));
14448 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14449 fixpos((yyval.node), (yyvsp[-2].node));
14452#line 14453 "parse.c"
14456#line 4489 "parse.y"
14458 restore_block_exit(p, (yyvsp[-3].node_exits));
14459 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14460 fixpos((yyval.node), (yyvsp[-2].node));
14463#line 14464 "parse.c"
14467#line 4496 "parse.y"
14469 (yyval.labels) = p->case_labels;
14470 p->case_labels = CHECK_LITERAL_WHEN;
14472#line 14473 "parse.c"
14476#line 4502 "parse.y"
14478 if (CASE_LABELS_ENABLED_P(p->case_labels)) st_free_table(p->case_labels);
14479 p->case_labels = (yyvsp[-2].labels);
14480 (yyval.node) = NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[0]));
14481 fixpos((yyval.node), (yyvsp[-4].node));
14484#line 14485 "parse.c"
14488#line 4510 "parse.y"
14490 (yyval.labels) = p->case_labels;
14491 p->case_labels = 0;
14493#line 14494 "parse.c"
14497#line 4516 "parse.y"
14499 if (p->case_labels) st_free_table(p->case_labels);
14500 p->case_labels = (yyvsp[-2].labels);
14501 (yyval.node) = NEW_CASE2((yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14504#line 14505 "parse.c"
14508#line 4525 "parse.y"
14510 (yyval.node) = NEW_CASE3((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14513#line 14514 "parse.c"
14517#line 4530 "parse.y"
14519#line 14520 "parse.c"
14523#line 4530 "parse.y"
14525#line 14526 "parse.c"
14529#line 4533 "parse.y"
14531 restore_block_exit(p, (yyvsp[-8].node_exits));
14541 ID id = internal_id(p);
14544 NODE *scope, *internal_var = NEW_DVAR(
id, &(yylsp[-7]));
14548 switch (nd_type((yyvsp[-7].node))) {
14551 set_nd_value(p, (yyvsp[-7].node), internal_var);
14554 m->nd_next = (yyvsp[-7].node);
14557 m->nd_next = node_assign(p, (yyvsp[-7].node), NEW_FOR_MASGN(internal_var, &(yylsp[-7])), NO_LEX_CTXT, &(yylsp[-7]));
14560 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]));
14563 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-7])), &(yylsp[-7]));
14564 scope = NEW_SCOPE2(tbl, args, (yyvsp[-1].node), &(yyloc));
14565 YYLTYPE do_keyword_loc = (yyvsp[-3].id) == keyword_do_cond ? (yylsp[-3]) : NULL_LOC;
14566 (yyval.node) = NEW_FOR((yyvsp[-4].node), scope, &(yyloc), &(yylsp[-8]), &(yylsp[-6]), &do_keyword_loc, &(yylsp[0]));
14567 fixpos((yyval.node), (yyvsp[-7].node));
14570#line 14571 "parse.c"
14574#line 4574 "parse.y"
14576 begin_definition(
"class", &(yylsp[-2]), &(yylsp[-1]));
14578#line 14579 "parse.c"
14582#line 4579 "parse.y"
14584 YYLTYPE inheritance_operator_loc = NULL_LOC;
14585 if ((yyvsp[-3].node)) {
14586 inheritance_operator_loc = (yylsp[-3]);
14587 inheritance_operator_loc.end_pos.column = inheritance_operator_loc.beg_pos.column + 1;
14589 (yyval.node) = NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc), &(yylsp[-5]), &inheritance_operator_loc, &(yylsp[0]));
14590 nd_set_line(RNODE_CLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14591 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14592 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14595 p->ctxt.in_class = (yyvsp[-5].ctxt).in_class;
14596 p->ctxt.cant_return = (yyvsp[-5].ctxt).cant_return;
14597 p->ctxt.shareable_constant_value = (yyvsp[-5].ctxt).shareable_constant_value;
14599#line 14600 "parse.c"
14603#line 4596 "parse.y"
14605 begin_definition(
"", &(yylsp[-2]), &(yylsp[-1]));
14607#line 14608 "parse.c"
14611#line 4602 "parse.y"
14613 (yyval.node) = NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
14614 nd_set_line(RNODE_SCLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14615 set_line_body((yyvsp[-1].node), nd_line((yyvsp[-4].node)));
14616 fixpos((yyval.node), (yyvsp[-4].node));
14619 p->ctxt.in_def = (yyvsp[-6].ctxt).in_def;
14620 p->ctxt.in_class = (yyvsp[-6].ctxt).in_class;
14621 p->ctxt.cant_return = (yyvsp[-6].ctxt).cant_return;
14622 p->ctxt.shareable_constant_value = (yyvsp[-6].ctxt).shareable_constant_value;
14624#line 14625 "parse.c"
14628#line 4615 "parse.y"
14630 begin_definition(
"module", &(yylsp[-1]), &(yylsp[0]));
14632#line 14633 "parse.c"
14636#line 4620 "parse.y"
14638 (yyval.node) = NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
14639 nd_set_line(RNODE_MODULE((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14640 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14641 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14644 p->ctxt.in_class = (yyvsp[-4].ctxt).in_class;
14645 p->ctxt.cant_return = (yyvsp[-4].ctxt).cant_return;
14646 p->ctxt.shareable_constant_value = (yyvsp[-4].ctxt).shareable_constant_value;
14648#line 14649 "parse.c"
14652#line 4633 "parse.y"
14654 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14656#line 14657 "parse.c"
14660#line 4638 "parse.y"
14662 restore_defun(p, (yyvsp[-4].node_def_temp));
14663 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), &(yyloc));
14664 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
14665 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[-1].node);
14669#line 14670 "parse.c"
14673#line 4648 "parse.y"
14675 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14677#line 14678 "parse.c"
14681#line 4653 "parse.y"
14683 restore_defun(p, (yyvsp[-4].node_def_temp));
14684 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), &(yyloc));
14685 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
14686 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[-1].node);
14690#line 14691 "parse.c"
14694#line 4662 "parse.y"
14696 (yyval.node) = add_block_exit(p, NEW_BREAK(0, &(yyloc), &(yylsp[0])));
14699#line 14700 "parse.c"
14703#line 4667 "parse.y"
14705 (yyval.node) = add_block_exit(p, NEW_NEXT(0, &(yyloc), &(yylsp[0])));
14708#line 14709 "parse.c"
14712#line 4672 "parse.y"
14714 (yyval.node) = add_block_exit(p, NEW_REDO(&(yyloc), &(yylsp[0])));
14717#line 14718 "parse.c"
14721#line 4677 "parse.y"
14723 if (!p->ctxt.in_defined) {
14724 switch (p->ctxt.in_rescue) {
14725 case before_rescue: yyerror1(&(yylsp[0]),
"Invalid retry without rescue");
break;
14726 case after_rescue:
break;
14727 case after_else: yyerror1(&(yylsp[0]),
"Invalid retry after else");
break;
14728 case after_ensure: yyerror1(&(yylsp[0]),
"Invalid retry after ensure");
break;
14731 (yyval.node) = NEW_RETRY(&(yyloc));
14734#line 14735 "parse.c"
14738#line 3143 "parse.y"
14740 value_expr((yyvsp[0].node));
14741 (yyval.node) = (yyvsp[0].node);
14743#line 14744 "parse.c"
14747#line 4695 "parse.y"
14749 token_info_push(p,
"begin", &(yyloc));
14750 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14752#line 14753 "parse.c"
14756#line 4702 "parse.y"
14759 token_info_push(p,
"if", &(yyloc));
14760 if (p->token_info && p->token_info->nonspc &&
14761 p->token_info->next && !strcmp(p->token_info->next->token,
"else")) {
14763 const char *beg = p->lex.pbeg + p->token_info->next->beg.column;
14765 while (beg < tok &&
ISSPACE(*beg)) beg++;
14767 p->token_info->nonspc = 0;
14770 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14772#line 14773 "parse.c"
14776#line 4720 "parse.y"
14778 token_info_push(p,
"unless", &(yyloc));
14779 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14781#line 14782 "parse.c"
14785#line 4727 "parse.y"
14787 (yyval.node_exits) = (yyvsp[0].node_exits);
14788 token_info_push(p,
"while", &(yyloc));
14789 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14791#line 14792 "parse.c"
14795#line 4735 "parse.y"
14797 (yyval.node_exits) = (yyvsp[0].node_exits);
14798 token_info_push(p,
"until", &(yyloc));
14799 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14801#line 14802 "parse.c"
14805#line 4743 "parse.y"
14807 token_info_push(p,
"case", &(yyloc));
14808 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14810#line 14811 "parse.c"
14814#line 4750 "parse.y"
14816 (yyval.node_exits) = (yyvsp[0].node_exits);
14817 token_info_push(p,
"for", &(yyloc));
14818 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14820#line 14821 "parse.c"
14824#line 4758 "parse.y"
14826 token_info_push(p,
"class", &(yyloc));
14827 (yyval.ctxt) = p->ctxt;
14828 p->ctxt.in_rescue = before_rescue;
14829 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14831#line 14832 "parse.c"
14835#line 4767 "parse.y"
14837 token_info_push(p,
"module", &(yyloc));
14838 (yyval.ctxt) = p->ctxt;
14839 p->ctxt.in_rescue = before_rescue;
14840 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14842#line 14843 "parse.c"
14846#line 4776 "parse.y"
14848 token_info_push(p,
"def", &(yyloc));
14849 (yyval.node_def_temp) = NEW_DEF_TEMP(&(yyloc));
14850 p->ctxt.in_argdef = 1;
14852#line 14853 "parse.c"
14856#line 4784 "parse.y"
14858 token_info_push(p,
"do", &(yyloc));
14859 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14861#line 14862 "parse.c"
14865#line 4791 "parse.y"
14867 token_info_push(p,
"do", &(yyloc));
14868 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14870#line 14871 "parse.c"
14874#line 4798 "parse.y"
14876 token_info_warn(p,
"rescue", p->token_info, 1, &(yyloc));
14877 (yyval.ctxt) = p->ctxt;
14878 p->ctxt.in_rescue = after_rescue;
14880#line 14881 "parse.c"
14884#line 4806 "parse.y"
14886 token_info_warn(p,
"ensure", p->token_info, 1, &(yyloc));
14887 (yyval.ctxt) = p->ctxt;
14889#line 14890 "parse.c"
14893#line 4813 "parse.y"
14895 token_info_warn(p,
"when", p->token_info, 0, &(yyloc));
14897#line 14898 "parse.c"
14901#line 4819 "parse.y"
14904 int same = ptinfo_beg && strcmp(ptinfo_beg->token,
"case") != 0;
14905 token_info_warn(p,
"else", p->token_info, same, &(yyloc));
14908 e.next = ptinfo_beg->next;
14910 token_info_setup(&e, p->lex.pbeg, &(yyloc));
14911 if (!e.nonspc) *ptinfo_beg = e;
14914#line 14915 "parse.c"
14918#line 4834 "parse.y"
14921 token_info_warn(p,
"elsif", p->token_info, 1, &(yyloc));
14923#line 14924 "parse.c"
14927#line 4841 "parse.y"
14929 token_info_pop(p,
"end", &(yyloc));
14930 pop_end_expect_token_locations(p);
14932#line 14933 "parse.c"
14936#line 4846 "parse.y"
14938 compile_error(p,
"syntax error, unexpected end-of-input");
14940#line 14941 "parse.c"
14944#line 4852 "parse.y"
14946 if (p->ctxt.cant_return && !dyna_in_block(p))
14947 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
14949#line 14950 "parse.c"
14953#line 4859 "parse.y"
14955 if (!p->ctxt.in_defined && !p->ctxt.in_def && !compile_for_eval)
14956 yyerror1(&(yylsp[0]),
"Invalid yield");
14958#line 14959 "parse.c"
14962#line 4871 "parse.y"
14963 { (yyval.id) = keyword_do_cond; }
14964#line 14965 "parse.c"
14968#line 4878 "parse.y"
14970 (yyval.node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]), &NULL_LOC);
14971 fixpos((yyval.node), (yyvsp[-3].node));
14974#line 14975 "parse.c"
14978#line 4887 "parse.y"
14980 (yyval.node) = (yyvsp[0].node);
14983#line 14984 "parse.c"
14987#line 4898 "parse.y"
14989 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
14990 mark_lvar_used(p, (yyval.node));
14992#line 14993 "parse.c"
14996#line 4903 "parse.y"
14998 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
15001#line 15002 "parse.c"
15005#line 3030 "parse.y"
15007 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15010#line 15011 "parse.c"
15014#line 3035 "parse.y"
15016 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
15019#line 15020 "parse.c"
15023#line 4911 "parse.y"
15025 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
15028#line 15029 "parse.c"
15032#line 4916 "parse.y"
15034 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15037#line 15038 "parse.c"
15041#line 4921 "parse.y"
15043 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15046#line 15047 "parse.c"
15050#line 4926 "parse.y"
15052 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
15055#line 15056 "parse.c"
15059#line 4931 "parse.y"
15061 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15064#line 15065 "parse.c"
15068#line 4938 "parse.y"
15071 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15072 mark_lvar_used(p, (yyval.node));
15074#line 15075 "parse.c"
15078#line 4944 "parse.y"
15080 (yyval.node) = NODE_SPECIAL_NO_NAME_REST;
15083#line 15084 "parse.c"
15087#line 4952 "parse.y"
15089 (yyval.id) = idNil;
15092#line 15093 "parse.c"
15096#line 4958 "parse.y"
15097 {p->ctxt.in_argdef = 0;}
15098#line 15099 "parse.c"
15102#line 3002 "parse.y"
15104 p->ctxt.in_argdef = 1;
15105 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15108#line 15109 "parse.c"
15112#line 3008 "parse.y"
15114 p->ctxt.in_argdef = 1;
15115 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
15118#line 15119 "parse.c"
15122#line 3017 "parse.y"
15124 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
15127#line 15128 "parse.c"
15131#line 3022 "parse.y"
15133 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
15136#line 15137 "parse.c"
15140#line 2926 "parse.y"
15142 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
15145#line 15146 "parse.c"
15149#line 2931 "parse.y"
15151 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
15154#line 15155 "parse.c"
15158#line 2936 "parse.y"
15160 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
15163#line 15164 "parse.c"
15167#line 2941 "parse.y"
15169 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
15172#line 15173 "parse.c"
15176#line 4964 "parse.y"
15179 (yyval.id) = NODE_SPECIAL_EXCESSIVE_COMMA;
15182#line 15183 "parse.c"
15186#line 2980 "parse.y"
15188 p->ctxt.in_argdef = 1;
15189 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15192#line 15193 "parse.c"
15196#line 2989 "parse.y"
15198 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
15201#line 15202 "parse.c"
15205#line 2994 "parse.y"
15207 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
15210#line 15211 "parse.c"
15214#line 3089 "parse.y"
15216 (yyval.node_args) = (yyvsp[0].node_args);
15219#line 15220 "parse.c"
15223#line 3094 "parse.y"
15225 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
15228#line 15229 "parse.c"
15232#line 4972 "parse.y"
15234 (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));
15237#line 15238 "parse.c"
15241#line 4977 "parse.y"
15243 (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));
15246#line 15247 "parse.c"
15250#line 4982 "parse.y"
15252 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15255#line 15256 "parse.c"
15259#line 4987 "parse.y"
15261 (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));
15264#line 15265 "parse.c"
15268#line 4992 "parse.y"
15270 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
15273#line 15274 "parse.c"
15277#line 4997 "parse.y"
15279 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
15280 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, (yyvsp[0].id), 0, (yyval.node_args), &(yyloc));
15283#line 15284 "parse.c"
15287#line 5003 "parse.y"
15289 (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));
15292#line 15293 "parse.c"
15296#line 5008 "parse.y"
15298 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15301#line 15302 "parse.c"
15305#line 5013 "parse.y"
15307 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
15310#line 15311 "parse.c"
15314#line 5018 "parse.y"
15316 (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));
15319#line 15320 "parse.c"
15323#line 5023 "parse.y"
15325 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15328#line 15329 "parse.c"
15332#line 5028 "parse.y"
15334 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15337#line 15338 "parse.c"
15341#line 5033 "parse.y"
15343 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
15346#line 15347 "parse.c"
15350#line 5038 "parse.y"
15352 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15355#line 15356 "parse.c"
15359#line 5043 "parse.y"
15361 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15364#line 15365 "parse.c"
15368#line 5051 "parse.y"
15370 p->command_start = TRUE;
15372#line 15373 "parse.c"
15376#line 5057 "parse.y"
15378 p->max_numparam = ORDINAL_PARAM;
15379 p->ctxt.in_argdef = 0;
15380 (yyval.node_args) = (yyvsp[-2].node_args);
15383#line 15384 "parse.c"
15387#line 5066 "parse.y"
15389 (yyval.node_args) = 0;
15392#line 15393 "parse.c"
15396#line 5074 "parse.y"
15401#line 15402 "parse.c"
15405#line 5079 "parse.y"
15410#line 15411 "parse.c"
15414#line 5092 "parse.y"
15416 new_bv(p, (yyvsp[0].
id));
15419#line 15420 "parse.c"
15423#line 5099 "parse.y"
15425 (yyval.num) = p->max_numparam;
15426 p->max_numparam = 0;
15428#line 15429 "parse.c"
15432#line 5105 "parse.y"
15434 (yyval.node) = numparam_push(p);
15436#line 15437 "parse.c"
15440#line 5110 "parse.y"
15442 (yyval.id) = p->it_id;
15445#line 15446 "parse.c"
15449#line 5117 "parse.y"
15451 token_info_push(p,
"->", &(yylsp[0]));
15452 (yyval.vars) = dyna_push(p);
15454#line 15455 "parse.c"
15458#line 5123 "parse.y"
15462#line 15463 "parse.c"
15466#line 5127 "parse.y"
15468 int max_numparam = p->max_numparam;
15469 ID it_id = p->it_id;
15470 p->lex.lpar_beg = (yyvsp[-8].num);
15471 p->max_numparam = (yyvsp[-6].num);
15472 p->it_id = (yyvsp[-4].id);
15473 restore_block_exit(p, (yyvsp[-3].node_exits));
15475 (yyvsp[-2].node_args) = args_with_numbered(p, (yyvsp[-2].node_args), max_numparam, it_id);
15477 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
15478 (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);
15479 nd_set_line(RNODE_LAMBDA((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
15480 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
15481 nd_set_first_loc((yyval.node), (yylsp[-8]).beg_pos);
15482 xfree((yyvsp[0].locations_lambda_body));
15485 numparam_pop(p, (yyvsp[-5].node));
15486 dyna_pop(p, (yyvsp[-7].vars));
15488#line 15489 "parse.c"
15492#line 5151 "parse.y"
15494 p->ctxt.in_argdef = 0;
15495 (yyval.node_args) = (yyvsp[-2].node_args);
15496 p->max_numparam = ORDINAL_PARAM;
15499#line 15500 "parse.c"
15503#line 5158 "parse.y"
15505 p->ctxt.in_argdef = 0;
15506 if (!args_info_empty_p(&(yyvsp[0].node_args)->nd_ainfo))
15507 p->max_numparam = ORDINAL_PARAM;
15508 (yyval.node_args) = (yyvsp[0].node_args);
15510#line 15511 "parse.c"
15514#line 5167 "parse.y"
15516 token_info_pop(p,
"}", &(yylsp[0]));
15517 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-2]), &(yylsp[0]));
15520#line 15521 "parse.c"
15524#line 5173 "parse.y"
15526 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15528#line 15529 "parse.c"
15532#line 5177 "parse.y"
15534 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-3]), &(yylsp[0]));
15537#line 15538 "parse.c"
15541#line 5184 "parse.y"
15543 (yyval.node) = (yyvsp[-1].node);
15544 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15547#line 15548 "parse.c"
15551#line 5192 "parse.y"
15553 if (nd_type_p((yyvsp[-1].node), NODE_YIELD)) {
15554 compile_error(p,
"block given to yield");
15557 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
15559 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15560 fixpos((yyval.node), (yyvsp[-1].node));
15563#line 15564 "parse.c"
15567#line 5204 "parse.y"
15569 bool has_args = (yyvsp[0].node) != 0;
15570 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15571 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15577#line 15578 "parse.c"
15581#line 5214 "parse.y"
15583 if (NODE_EMPTY_ARGS_P((yyvsp[-1].node))) (yyvsp[-1].node) = 0;
15584 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15586 if ((yyvsp[0].node)) {
15590#line 15591 "parse.c"
15594#line 5223 "parse.y"
15596 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15599#line 15600 "parse.c"
15603#line 5230 "parse.y"
15605 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
15606 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
15607 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
15610#line 15611 "parse.c"
15614#line 5237 "parse.y"
15616 bool has_args = (yyvsp[0].node) != 0;
15617 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15618 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15619 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15625#line 15626 "parse.c"
15629#line 5248 "parse.y"
15631 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15632 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15635#line 15636 "parse.c"
15639#line 5254 "parse.y"
15641 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-2].node), (yyvsp[0].id), 0, &(yylsp[0]), &(yyloc));
15644#line 15645 "parse.c"
15648#line 5259 "parse.y"
15650 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15651 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15654#line 15655 "parse.c"
15658#line 5265 "parse.y"
15662 lparen_loc.end_pos.column = lparen_loc.beg_pos.column + 1;
15663 rparen_loc.beg_pos.column = rparen_loc.end_pos.column - 1;
15665 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &lparen_loc, &rparen_loc);
15668#line 15669 "parse.c"
15672#line 5275 "parse.y"
15674 (yyval.node) = NEW_ZSUPER(&(yyloc));
15677#line 15678 "parse.c"
15681#line 5280 "parse.y"
15683 (yyval.node) = NEW_CALL((yyvsp[-3].node), tAREF, (yyvsp[-1].node), &(yyloc));
15684 fixpos((yyval.node), (yyvsp[-3].node));
15687#line 15688 "parse.c"
15691#line 5288 "parse.y"
15693 (yyval.node) = (yyvsp[-1].node);
15694 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15697#line 15698 "parse.c"
15701#line 5294 "parse.y"
15703 (yyval.node) = (yyvsp[-1].node);
15704 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15707#line 15708 "parse.c"
15711#line 5301 "parse.y"
15712 {(yyval.vars) = dyna_push(p);}
15713#line 15714 "parse.c"
15717#line 5304 "parse.y"
15719 int max_numparam = p->max_numparam;
15720 ID it_id = p->it_id;
15721 p->max_numparam = (yyvsp[-5].num);
15722 p->it_id = (yyvsp[-3].id);
15723 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
15724 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
15726 restore_block_exit(p, (yyvsp[-2].node_exits));
15727 numparam_pop(p, (yyvsp[-4].node));
15728 dyna_pop(p, (yyvsp[-6].vars));
15730#line 15731 "parse.c"
15734#line 5318 "parse.y"
15736 (yyval.vars) = dyna_push(p);
15739#line 15740 "parse.c"
15743#line 5324 "parse.y"
15745 int max_numparam = p->max_numparam;
15746 ID it_id = p->it_id;
15747 p->max_numparam = (yyvsp[-5].num);
15748 p->it_id = (yyvsp[-3].id);
15749 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
15750 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
15753 restore_block_exit(p, (yyvsp[-2].node_exits));
15754 numparam_pop(p, (yyvsp[-4].node));
15755 dyna_pop(p, (yyvsp[-6].vars));
15757#line 15758 "parse.c"
15761#line 5340 "parse.y"
15763 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
15764 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15767#line 15768 "parse.c"
15771#line 5346 "parse.y"
15773 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
15776#line 15777 "parse.c"
15780#line 5351 "parse.y"
15782 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
15783 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15786#line 15787 "parse.c"
15790#line 5357 "parse.y"
15792 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
15795#line 15796 "parse.c"
15799#line 5366 "parse.y"
15801 (yyval.node) = NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]));
15802 fixpos((yyval.node), (yyvsp[-3].node));
15805#line 15806 "parse.c"
15809#line 5377 "parse.y"
15810 {(yyval.tbl) = p->pvtbl; p->pvtbl = st_init_numtable();}
15811#line 15812 "parse.c"
15815#line 5378 "parse.y"
15816 {(yyval.tbl) = p->pktbl; p->pktbl = 0;}
15817#line 15818 "parse.c"
15821#line 5380 "parse.y"
15823 (yyval.ctxt) = p->ctxt;
15824 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
15825 p->command_start = FALSE;
15826 p->ctxt.in_kwarg = 1;
15828#line 15829 "parse.c"
15832#line 5391 "parse.y"
15834 pop_pktbl(p, (yyvsp[-2].tbl));
15835 pop_pvtbl(p, (yyvsp[-3].tbl));
15836 p->ctxt.in_kwarg = (yyvsp[-4].ctxt).in_kwarg;
15838#line 15839 "parse.c"
15842#line 5398 "parse.y"
15844 (yyval.node) = NEW_IN((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15847#line 15848 "parse.c"
15851#line 5410 "parse.y"
15853 (yyval.node) = new_if(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
15854 fixpos((yyval.node), (yyvsp[0].node));
15857#line 15858 "parse.c"
15861#line 5416 "parse.y"
15863 (yyval.node) = new_unless(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
15864 fixpos((yyval.node), (yyvsp[0].node));
15867#line 15868 "parse.c"
15871#line 5425 "parse.y"
15873 (yyval.node) = new_array_pattern_tail(p, 0, 1, 0, 0, &(yyloc));
15874 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-1].node), (yyval.node), &(yyloc));
15877#line 15878 "parse.c"
15881#line 5431 "parse.y"
15883 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15884 nd_set_first_loc((yyval.node), (yylsp[-2]).beg_pos);
15887#line 15888 "parse.c"
15891#line 5437 "parse.y"
15893 (yyval.node) = new_find_pattern(p, 0, (yyvsp[0].node), &(yyloc));
15896#line 15897 "parse.c"
15900#line 5442 "parse.y"
15902 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[0].node), &(yyloc));
15905#line 15906 "parse.c"
15909#line 5447 "parse.y"
15911 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[0].node), &(yyloc));
15914#line 15915 "parse.c"
15918#line 5457 "parse.y"
15920 NODE *n = NEW_LIST((yyvsp[-2].node), &(yyloc));
15921 n = list_append(p, n, (yyvsp[0].node));
15922 (yyval.node) = new_hash(p, n, &(yyloc));
15925#line 15926 "parse.c"
15929#line 5467 "parse.y"
15931 (yyval.node) = NEW_OR((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
15934#line 15935 "parse.c"
15938#line 5475 "parse.y"
15940 (yyval.tbl) = (yyvsp[0].tbl);
15943#line 15944 "parse.c"
15947#line 5482 "parse.y"
15949 (yyval.tbl) = (yyvsp[0].tbl);
15952#line 15953 "parse.c"
15956#line 5491 "parse.y"
15958 pop_pktbl(p, (yyvsp[-2].tbl));
15959 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
15960 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
15963#line 15964 "parse.c"
15967#line 5498 "parse.y"
15969 pop_pktbl(p, (yyvsp[-2].tbl));
15970 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
15971 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
15974#line 15975 "parse.c"
15978#line 5505 "parse.y"
15980 pop_pktbl(p, (yyvsp[-2].tbl));
15981 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
15982 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
15985#line 15986 "parse.c"
15989#line 5512 "parse.y"
15991 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
15992 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
15995#line 15996 "parse.c"
15999#line 5518 "parse.y"
16001 pop_pktbl(p, (yyvsp[-2].tbl));
16002 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
16003 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16006#line 16007 "parse.c"
16010#line 5525 "parse.y"
16012 pop_pktbl(p, (yyvsp[-2].tbl));
16013 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16014 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16017#line 16018 "parse.c"
16021#line 5532 "parse.y"
16023 pop_pktbl(p, (yyvsp[-2].tbl));
16024 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16025 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16028#line 16029 "parse.c"
16032#line 5539 "parse.y"
16034 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16035 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
16038#line 16039 "parse.c"
16042#line 5545 "parse.y"
16044 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[-1].node), &(yyloc));
16047#line 16048 "parse.c"
16051#line 5550 "parse.y"
16053 (yyval.node) = new_find_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16056#line 16057 "parse.c"
16060#line 5555 "parse.y"
16062 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16063 (yyval.node) = new_array_pattern(p, 0, 0, (yyval.node), &(yyloc));
16066#line 16067 "parse.c"
16070#line 5561 "parse.y"
16072 p->ctxt.in_kwarg = 0;
16074#line 16075 "parse.c"
16078#line 5565 "parse.y"
16080 pop_pktbl(p, (yyvsp[-4].tbl));
16081 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
16082 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16085#line 16086 "parse.c"
16089#line 5572 "parse.y"
16091 (yyval.node) = new_hash_pattern_tail(p, 0, 0, &(yyloc));
16092 (yyval.node) = new_hash_pattern(p, 0, (yyval.node), &(yyloc));
16095#line 16096 "parse.c"
16099#line 5578 "parse.y"
16101 pop_pktbl(p, (yyvsp[-2].tbl));
16102 (yyval.node) = (yyvsp[-1].node);
16105#line 16106 "parse.c"
16109#line 5586 "parse.y"
16111 NODE *pre_args = NEW_LIST((yyvsp[0].node), &(yyloc));
16112 (yyval.node) = new_array_pattern_tail(p, pre_args, 0, 0, 0, &(yyloc));
16115#line 16116 "parse.c"
16119#line 5592 "parse.y"
16121 (yyval.node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0, 0, &(yyloc));
16124#line 16125 "parse.c"
16128#line 5597 "parse.y"
16130 (yyval.node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, 0, 0, &(yyloc));
16133#line 16134 "parse.c"
16137#line 5602 "parse.y"
16139 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, (yyvsp[0].node), 0, &(yyloc));
16142#line 16143 "parse.c"
16146#line 5607 "parse.y"
16148 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16151#line 16152 "parse.c"
16155#line 5616 "parse.y"
16157 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
16160#line 16161 "parse.c"
16164#line 5623 "parse.y"
16166 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[0].node), 0, &(yyloc));
16169#line 16170 "parse.c"
16173#line 5628 "parse.y"
16175 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16178#line 16179 "parse.c"
16182#line 5635 "parse.y"
16184 (yyval.node) = new_find_pattern_tail(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16187#line 16188 "parse.c"
16191#line 5643 "parse.y"
16193 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16195 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16197#line 16198 "parse.c"
16201#line 5649 "parse.y"
16206#line 16207 "parse.c"
16210#line 5657 "parse.y"
16212 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16215#line 16216 "parse.c"
16219#line 5664 "parse.y"
16221 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16224#line 16225 "parse.c"
16228#line 5671 "parse.y"
16230 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].id), &(yyloc));
16233#line 16234 "parse.c"
16237#line 5676 "parse.y"
16239 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
16242#line 16243 "parse.c"
16246#line 5681 "parse.y"
16248 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
16251#line 16252 "parse.c"
16255#line 5686 "parse.y"
16257 (yyval.node) = new_hash_pattern_tail(p, new_hash(p, 0, &(yyloc)), (yyvsp[0].
id), &(yyloc));
16260#line 16261 "parse.c"
16264#line 5695 "parse.y"
16266 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16269#line 16270 "parse.c"
16273#line 5702 "parse.y"
16275 error_duplicate_pattern_key(p, (yyvsp[-1].
id), &(yylsp[-1]));
16276 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
16279#line 16280 "parse.c"
16283#line 5708 "parse.y"
16285 error_duplicate_pattern_key(p, (yyvsp[0].
id), &(yylsp[0]));
16286 if ((yyvsp[0].
id) && !is_local_id((yyvsp[0].
id))) {
16287 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
16289 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16290 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
16293#line 16294 "parse.c"
16297#line 5721 "parse.y"
16299 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
16300 if (!(yyvsp[-1].node) || nd_type_p((yyvsp[-1].node), NODE_STR)) {
16301 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
16302 (yyval.id) =
rb_sym2id(rb_node_sym_string_val(node));
16305 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
16306 (yyval.id) = rb_intern_str(STR_NEW0());
16310#line 16311 "parse.c"
16314#line 5736 "parse.y"
16316 (yyval.id) = (yyvsp[0].
id);
16319#line 16320 "parse.c"
16323#line 5741 "parse.y"
16328#line 16329 "parse.c"
16332#line 5748 "parse.y"
16336#line 16337 "parse.c"
16340#line 5755 "parse.y"
16342 (yyval.id) = idNil;
16345#line 16346 "parse.c"
16349#line 3102 "parse.y"
16351 value_expr((yyvsp[-2].node));
16352 value_expr((yyvsp[0].node));
16353 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16356#line 16357 "parse.c"
16360#line 3109 "parse.y"
16362 value_expr((yyvsp[-2].node));
16363 value_expr((yyvsp[0].node));
16364 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16367#line 16368 "parse.c"
16371#line 3116 "parse.y"
16373 value_expr((yyvsp[-1].node));
16374 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16377#line 16378 "parse.c"
16381#line 3122 "parse.y"
16383 value_expr((yyvsp[-1].node));
16384 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16387#line 16388 "parse.c"
16391#line 3128 "parse.y"
16393 value_expr((yyvsp[0].node));
16394 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16397#line 16398 "parse.c"
16401#line 3134 "parse.y"
16403 value_expr((yyvsp[0].node));
16404 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16407#line 16408 "parse.c"
16411#line 5770 "parse.y"
16413 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16416#line 16417 "parse.c"
16420#line 5778 "parse.y"
16422 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16424 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16426#line 16427 "parse.c"
16430#line 5786 "parse.y"
16432 NODE *n = gettable(p, (yyvsp[0].
id), &(yyloc));
16434 n = NEW_ERROR(&(yyloc));
16436 else if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
16437 compile_error(p,
"%"PRIsVALUE
": no such local variable", rb_id2str((yyvsp[0].
id)));
16442#line 16443 "parse.c"
16446#line 5798 "parse.y"
16448 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16451#line 16452 "parse.c"
16455#line 5805 "parse.y"
16457 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
16460#line 16461 "parse.c"
16464#line 5812 "parse.y"
16466 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
16469#line 16470 "parse.c"
16473#line 5817 "parse.y"
16475 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
16478#line 16479 "parse.c"
16482#line 5822 "parse.y"
16484 (yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc));
16487#line 16488 "parse.c"
16491#line 5831 "parse.y"
16493 NODE *err = (yyvsp[-3].node);
16494 if ((yyvsp[-3].node)) {
16495 err = NEW_ERRINFO(&(yylsp[-3]));
16496 err = node_assign(p, (yyvsp[-3].node), err, NO_LEX_CTXT, &(yylsp[-3]));
16498 (yyval.node) = NEW_RESBODY((yyvsp[-4].node), (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16499 if ((yyvsp[-4].node)) {
16500 fixpos((yyval.node), (yyvsp[-4].node));
16502 else if ((yyvsp[-3].node)) {
16503 fixpos((yyval.node), (yyvsp[-3].node));
16506 fixpos((yyval.node), (yyvsp[-1].node));
16510#line 16511 "parse.c"
16514#line 5853 "parse.y"
16516 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16519#line 16520 "parse.c"
16523#line 5858 "parse.y"
16525 if (!((yyval.node) = splat_array((yyvsp[0].node)))) (yyval.node) = (yyvsp[0].node);
16527#line 16528 "parse.c"
16531#line 5865 "parse.y"
16533 (yyval.node) = (yyvsp[0].node);
16536#line 16537 "parse.c"
16540#line 5873 "parse.y"
16542 p->ctxt.in_rescue = (yyvsp[-2].ctxt).in_rescue;
16543 (yyval.node) = (yyvsp[-1].node);
16544 void_expr(p, void_stmts(p, (yyval.node)));
16547#line 16548 "parse.c"
16551#line 5887 "parse.y"
16553 if (!(yyvsp[0].node)) {
16554 (yyval.node) = NEW_STR(STRING_NEW0(), &(yyloc));
16556 (yyval.node) = evstr2dstr(p, (yyvsp[0].node));
16560#line 16561 "parse.c"
16564#line 5900 "parse.y"
16566 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16569#line 16570 "parse.c"
16573#line 5907 "parse.y"
16575 (yyval.node) = heredoc_dedent(p, (yyvsp[-1].node));
16576 if ((yyval.node)) nd_set_loc((yyval.node), &(yyloc));
16578 if (p->heredoc_indent > 0) {
16580 p->heredoc_indent = 0;
16584#line 16585 "parse.c"
16588#line 5920 "parse.y"
16590 (yyval.node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
16592 if (p->heredoc_indent > 0) {
16594 p->heredoc_indent = 0;
16598#line 16599 "parse.c"
16602#line 5932 "parse.y"
16604 (yyval.node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
16607#line 16608 "parse.c"
16611#line 3151 "parse.y"
16613 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16616#line 16617 "parse.c"
16620#line 5942 "parse.y"
16625#line 16626 "parse.c"
16629#line 5947 "parse.y"
16631 (yyval.node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
16634#line 16635 "parse.c"
16638#line 5956 "parse.y"
16640 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16643#line 16644 "parse.c"
16647#line 3151 "parse.y"
16649 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16652#line 16653 "parse.c"
16656#line 5966 "parse.y"
16661#line 16662 "parse.c"
16665#line 5971 "parse.y"
16667 (yyval.node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
16670#line 16671 "parse.c"
16674#line 3151 "parse.y"
16676 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16679#line 16680 "parse.c"
16683#line 3151 "parse.y"
16685 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16688#line 16689 "parse.c"
16692#line 5984 "parse.y"
16697#line 16698 "parse.c"
16701#line 5989 "parse.y"
16703 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
16706#line 16707 "parse.c"
16710#line 5996 "parse.y"
16715#line 16716 "parse.c"
16719#line 6001 "parse.y"
16721 (yyval.node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
16724#line 16725 "parse.c"
16728#line 6008 "parse.y"
16733#line 16734 "parse.c"
16737#line 6013 "parse.y"
16739 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16742#line 16743 "parse.c"
16746#line 6020 "parse.y"
16751#line 16752 "parse.c"
16755#line 6025 "parse.y"
16757 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16760#line 16761 "parse.c"
16764#line 6032 "parse.y"
16769#line 16770 "parse.c"
16773#line 6037 "parse.y"
16775 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
16777 (yyval.node) = tail;
16780 (yyval.node) = head;
16783 switch (nd_type(head)) {
16785 head = str2dstr(p, head);
16790 head = list_append(p, NEW_DSTR(0, &(yyloc)), head);
16793 (yyval.node) = list_append(p, head, tail);
16797#line 16798 "parse.c"
16801#line 6065 "parse.y"
16804 (yyval.strterm) = p->lex.strterm;
16805 p->lex.strterm = 0;
16806 SET_LEX_STATE(EXPR_BEG);
16808#line 16809 "parse.c"
16812#line 6072 "parse.y"
16814 p->lex.strterm = (yyvsp[-1].strterm);
16815 (yyval.node) = NEW_EVSTR((yyvsp[0].node), &(yyloc), &(yylsp[-2]), &NULL_LOC);
16816 nd_set_line((yyval.node), (yylsp[0]).end_pos.lineno);
16819#line 16820 "parse.c"
16823#line 6079 "parse.y"
16828 (yyval.strterm) = p->lex.strterm;
16829 p->lex.strterm = 0;
16830 SET_LEX_STATE(EXPR_BEG);
16832#line 16833 "parse.c"
16836#line 6087 "parse.y"
16838 (yyval.num) = p->lex.brace_nest;
16839 p->lex.brace_nest = 0;
16841#line 16842 "parse.c"
16845#line 6091 "parse.y"
16847 (yyval.num) = p->heredoc_indent;
16848 p->heredoc_indent = 0;
16850#line 16851 "parse.c"
16854#line 6096 "parse.y"
16858 p->lex.strterm = (yyvsp[-4].strterm);
16859 SET_LEX_STATE((yyvsp[-5].state));
16860 p->lex.brace_nest = (yyvsp[-3].num);
16861 p->heredoc_indent = (yyvsp[-2].num);
16862 p->heredoc_line_indent = -1;
16863 if ((yyvsp[-1].node)) nd_unset_fl_newline((yyvsp[-1].node));
16864 (yyval.node) = new_evstr(p, (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[0]));
16867#line 16868 "parse.c"
16871#line 6115 "parse.y"
16873 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16876#line 16877 "parse.c"
16880#line 6127 "parse.y"
16882 SET_LEX_STATE(EXPR_END);
16883 VALUE str = rb_id2str((yyvsp[0].
id));
16890 if (!str) str = STR_NEW0();
16891 (yyval.node) = NEW_SYM(str, &(yyloc));
16894#line 16895 "parse.c"
16898#line 6147 "parse.y"
16900 SET_LEX_STATE(EXPR_END);
16901 (yyval.node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
16904#line 16905 "parse.c"
16908#line 6156 "parse.y"
16910 (yyval.node) = (yyvsp[0].node);
16911 negate_lit(p, (yyval.node));
16914#line 16915 "parse.c"
16918#line 6178 "parse.y"
16919 {(yyval.id) = KWD2EID(nil, (yyvsp[0].
id));}
16920#line 16921 "parse.c"
16924#line 6179 "parse.y"
16925 {(yyval.id) = KWD2EID(self, (yyvsp[0].
id));}
16926#line 16927 "parse.c"
16930#line 6180 "parse.y"
16931 {(yyval.id) = KWD2EID(
true, (yyvsp[0].
id));}
16932#line 16933 "parse.c"
16936#line 6181 "parse.y"
16937 {(yyval.id) = KWD2EID(
false, (yyvsp[0].
id));}
16938#line 16939 "parse.c"
16942#line 6182 "parse.y"
16943 {(yyval.id) = KWD2EID(_FILE__, (yyvsp[0].
id));}
16944#line 16945 "parse.c"
16948#line 6183 "parse.y"
16949 {(yyval.id) = KWD2EID(_LINE__, (yyvsp[0].
id));}
16950#line 16951 "parse.c"
16954#line 6184 "parse.y"
16955 {(yyval.id) = KWD2EID(_ENCODING__, (yyvsp[0].
id));}
16956#line 16957 "parse.c"
16960#line 6188 "parse.y"
16962 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16963 if (ifdef_ripper(id_is_var(p, (yyvsp[0].
id)),
false)) {
16970#line 16971 "parse.c"
16974#line 6198 "parse.y"
16976 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16979#line 16980 "parse.c"
16983#line 6205 "parse.y"
16986 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16988#line 16989 "parse.c"
16992#line 6205 "parse.y"
16995 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16997#line 16998 "parse.c"
17001#line 6216 "parse.y"
17003 SET_LEX_STATE(EXPR_BEG);
17004 p->command_start = TRUE;
17006#line 17007 "parse.c"
17010#line 6221 "parse.y"
17012 (yyval.node) = (yyvsp[-1].node);
17015#line 17016 "parse.c"
17019#line 6230 "parse.y"
17021 p->ctxt.in_argdef = 0;
17022 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[-1]));
17023 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyval.node_args), &(yylsp[-1]));
17026#line 17027 "parse.c"
17030#line 6239 "parse.y"
17032 (yyval.node_args) = (yyvsp[-1].node_args);
17034 SET_LEX_STATE(EXPR_BEG);
17035 p->command_start = TRUE;
17036 p->ctxt.in_argdef = 0;
17038#line 17039 "parse.c"
17042#line 6249 "parse.y"
17044 (yyval.ctxt) = p->ctxt;
17045 p->ctxt.in_kwarg = 1;
17046 p->ctxt.in_argdef = 1;
17047 SET_LEX_STATE(p->lex.state|EXPR_LABEL);
17049#line 17050 "parse.c"
17053#line 6256 "parse.y"
17055 p->ctxt.in_kwarg = (yyvsp[-2].ctxt).in_kwarg;
17056 p->ctxt.in_argdef = 0;
17057 (yyval.node_args) = (yyvsp[-1].node_args);
17058 SET_LEX_STATE(EXPR_BEG);
17059 p->command_start = TRUE;
17062#line 17063 "parse.c"
17066#line 3002 "parse.y"
17068 p->ctxt.in_argdef = 1;
17069 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17072#line 17073 "parse.c"
17076#line 3008 "parse.y"
17078 p->ctxt.in_argdef = 1;
17079 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
17082#line 17083 "parse.c"
17086#line 3017 "parse.y"
17088 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
17091#line 17092 "parse.c"
17095#line 3022 "parse.y"
17097 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
17100#line 17101 "parse.c"
17104#line 2926 "parse.y"
17106 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
17109#line 17110 "parse.c"
17113#line 2931 "parse.y"
17115 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].id), &(yylsp[-1]));
17118#line 17119 "parse.c"
17122#line 2936 "parse.y"
17124 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
17127#line 17128 "parse.c"
17131#line 2941 "parse.y"
17133 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
17136#line 17137 "parse.c"
17140#line 6268 "parse.y"
17142 ID fwd = (yyvsp[0].id);
17143 if (lambda_beginning_p() ||
17144 (p->lex.lpar_beg >= 0 && p->lex.lpar_beg+1 == p->lex.paren_nest)) {
17145 yyerror0(
"unexpected ... in lambda argument");
17149 add_forwarding_args(p);
17151 (yyval.node_args) = new_args_tail(p, 0, fwd, arg_FWD_BLOCK, &(yylsp[0]));
17152 (yyval.node_args)->nd_ainfo.forwarding = 1;
17155#line 17156 "parse.c"
17159#line 2980 "parse.y"
17161 p->ctxt.in_argdef = 1;
17162 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17165#line 17166 "parse.c"
17169#line 2989 "parse.y"
17171 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
17174#line 17175 "parse.c"
17178#line 2994 "parse.y"
17180 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
17183#line 17184 "parse.c"
17187#line 3089 "parse.y"
17189 (yyval.node_args) = (yyvsp[0].node_args);
17192#line 17193 "parse.c"
17196#line 3094 "parse.y"
17198 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
17201#line 17202 "parse.c"
17205#line 6285 "parse.y"
17207 (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));
17210#line 17211 "parse.c"
17214#line 6290 "parse.y"
17216 (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));
17219#line 17220 "parse.c"
17223#line 6295 "parse.y"
17225 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17228#line 17229 "parse.c"
17232#line 6300 "parse.y"
17234 (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));
17237#line 17238 "parse.c"
17241#line 6305 "parse.y"
17243 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17246#line 17247 "parse.c"
17250#line 6310 "parse.y"
17252 (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));
17255#line 17256 "parse.c"
17259#line 6315 "parse.y"
17261 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17264#line 17265 "parse.c"
17268#line 6320 "parse.y"
17270 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), 0, (yyvsp[0].node_args), &(yyloc));
17273#line 17274 "parse.c"
17277#line 6325 "parse.y"
17279 (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));
17282#line 17283 "parse.c"
17286#line 6330 "parse.y"
17288 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17291#line 17292 "parse.c"
17295#line 6335 "parse.y"
17297 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17300#line 17301 "parse.c"
17304#line 6340 "parse.y"
17306 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17309#line 17310 "parse.c"
17313#line 6345 "parse.y"
17315 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17318#line 17319 "parse.c"
17322#line 6350 "parse.y"
17324 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17327#line 17328 "parse.c"
17331#line 6355 "parse.y"
17333 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
17334 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyval.node_args), &(yylsp[0]));
17337#line 17338 "parse.c"
17341#line 6363 "parse.y"
17343#ifdef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
17346 (yyval.id) = idFWD_KWREST;
17350#line 17351 "parse.c"
17354#line 6374 "parse.y"
17356 static const char mesg[] =
"formal argument cannot be a constant";
17358 yyerror1(&(yylsp[0]), mesg);
17363#line 17364 "parse.c"
17367#line 6383 "parse.y"
17369 static const char mesg[] =
"formal argument cannot be an instance variable";
17371 yyerror1(&(yylsp[0]), mesg);
17376#line 17377 "parse.c"
17380#line 6392 "parse.y"
17382 static const char mesg[] =
"formal argument cannot be a global variable";
17384 yyerror1(&(yylsp[0]), mesg);
17389#line 17390 "parse.c"
17393#line 6401 "parse.y"
17395 static const char mesg[] =
"formal argument cannot be a class variable";
17397 yyerror1(&(yylsp[0]), mesg);
17402#line 17403 "parse.c"
17406#line 6413 "parse.y"
17408 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
17412 p->max_numparam = ORDINAL_PARAM;
17414#line 17415 "parse.c"
17418#line 6423 "parse.y"
17420 arg_var(p, (yyvsp[0].
id));
17421 (yyval.id) = (yyvsp[0].
id);
17423#line 17424 "parse.c"
17427#line 6430 "parse.y"
17429 (yyval.node_args_aux) = NEW_ARGS_AUX((yyvsp[0].
id), 1, &NULL_LOC);
17432#line 17433 "parse.c"
17436#line 6435 "parse.y"
17438 ID tid = internal_id(p);
17440 loc.beg_pos = (yylsp[-1]).beg_pos;
17441 loc.end_pos = (yylsp[-1]).beg_pos;
17443 if (dyna_in_block(p)) {
17444 (yyvsp[-1].node_masgn)->nd_value = NEW_DVAR(tid, &loc);
17447 (yyvsp[-1].node_masgn)->nd_value = NEW_LVAR(tid, &loc);
17449 (yyval.node_args_aux) = NEW_ARGS_AUX(tid, 1, &NULL_LOC);
17450 (yyval.node_args_aux)->nd_next = (
NODE *)(yyvsp[-1].node_masgn);
17453#line 17454 "parse.c"
17457#line 6456 "parse.y"
17459 (yyval.node_args_aux) = (yyvsp[-2].node_args_aux);
17460 (yyval.node_args_aux)->nd_plen++;
17461 (yyval.node_args_aux)->nd_next = block_append(p, (yyval.node_args_aux)->nd_next, (yyvsp[0].node_args_aux)->nd_next);
17462 rb_discard_node(p, (
NODE *)(yyvsp[0].node_args_aux));
17465#line 17466 "parse.c"
17469#line 6467 "parse.y"
17471 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
17482 arg_var(p, ifdef_ripper(0, (yyvsp[0].
id)));
17484 p->max_numparam = ORDINAL_PARAM;
17485 p->ctxt.in_argdef = 0;
17487#line 17488 "parse.c"
17491#line 6491 "parse.y"
17495#line 17496 "parse.c"
17499#line 6497 "parse.y"
17501 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
17502 (yyval.id) = (yyvsp[0].
id);
17505#line 17506 "parse.c"
17509#line 6503 "parse.y"
17511 arg_var(p, idFWD_KWREST);
17512 (yyval.id) = idFWD_KWREST;
17515#line 17516 "parse.c"
17519#line 6515 "parse.y"
17521 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
17522 (yyval.id) = (yyvsp[0].
id);
17525#line 17526 "parse.c"
17529#line 6521 "parse.y"
17531 arg_var(p, idFWD_REST);
17532 (yyval.id) = idFWD_REST;
17535#line 17536 "parse.c"
17539#line 6533 "parse.y"
17541 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
17542 (yyval.id) = (yyvsp[0].
id);
17545#line 17546 "parse.c"
17549#line 6539 "parse.y"
17551 arg_var(p, idFWD_BLOCK);
17552 (yyval.id) = idFWD_BLOCK;
17555#line 17556 "parse.c"
17559#line 6547 "parse.y"
17561 (yyval.id) = (yyvsp[0].
id);
17564#line 17565 "parse.c"
17568#line 3143 "parse.y"
17570 value_expr((yyvsp[0].node));
17571 (yyval.node) = (yyvsp[0].node);
17573#line 17574 "parse.c"
17577#line 6556 "parse.y"
17579 NODE *expr = last_expr_node((yyvsp[0].node));
17580 switch (nd_type(expr)) {
17590 case NODE_ENCODING:
17593 case NODE_RATIONAL:
17594 case NODE_IMAGINARY:
17598 yyerror1(&expr->nd_loc,
"can't define singleton method for literals");
17603 (yyval.node) = (yyvsp[0].node);
17605#line 17606 "parse.c"
17609#line 6587 "parse.y"
17611 SET_LEX_STATE(EXPR_BEG);
17612 p->ctxt.in_argdef = 0;
17614#line 17615 "parse.c"
17618#line 6592 "parse.y"
17620 p->ctxt.in_argdef = 1;
17621 (yyval.node) = (yyvsp[-1].node);
17624#line 17625 "parse.c"
17628#line 6601 "parse.y"
17630 (yyval.node) = (yyvsp[-1].node);
17633#line 17634 "parse.c"
17637#line 6610 "parse.y"
17639 NODE *assocs = (yyvsp[-2].node);
17640 NODE *tail = (yyvsp[0].node);
17645 if (RNODE_LIST(assocs)->nd_head) {
17646 NODE *n = RNODE_LIST(tail)->nd_next;
17647 if (!RNODE_LIST(tail)->nd_head && nd_type_p(n, NODE_LIST) &&
17648 nd_type_p((n = RNODE_LIST(n)->nd_head), NODE_HASH)) {
17650 tail = RNODE_HASH(n)->nd_head;
17654 assocs = list_concat(assocs, tail);
17657 (yyval.node) = assocs;
17660#line 17661 "parse.c"
17664#line 6635 "parse.y"
17666 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
17669#line 17670 "parse.c"
17673#line 6640 "parse.y"
17675 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
17678#line 17679 "parse.c"
17682#line 6645 "parse.y"
17684 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
17685 if (!val) val = NEW_ERROR(&(yyloc));
17686 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
17689#line 17690 "parse.c"
17693#line 6652 "parse.y"
17695 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
17696 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
17699#line 17700 "parse.c"
17703#line 6658 "parse.y"
17705 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
17708#line 17709 "parse.c"
17712#line 6663 "parse.y"
17714 forwarding_arg_check(p, idFWD_KWREST, idFWD_ALL,
"keyword rest");
17715 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)),
17716 NEW_LVAR(idFWD_KWREST, &(yyloc)));
17719#line 17720 "parse.c"
17723#line 6709 "parse.y"
17724 {yyerrok;token_flush(p);}
17725#line 17726 "parse.c"
17729#line 6711 "parse.y"
17731 (yyloc).end_pos = (yyloc).beg_pos;
17734#line 17735 "parse.c"
17738#line 6718 "parse.y"
17740#line 17741 "parse.c"
17744#line 6722 "parse.y"
17749#line 17750 "parse.c"
17753#line 17754 "parse.c"
17768 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc, p);
17770 YYPOPSTACK (yylen);
17772#line 2665 "parse.y"
17773 {after_reduce(yylen, p);}
17774#line 17775 "parse.c"
17785 const int yylhs = yyr1[yyn] - YYNTOKENS;
17786 const int yyi = yypgoto[yylhs] + *yyssp;
17787 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
17789 : yydefgoto[yylhs]);
17801 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
17808 = {yyssp, yytoken, &yylloc};
17809 char const *yymsgp = YY_(
"syntax error");
17810 int yysyntax_error_status;
17811 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
17812 if (yysyntax_error_status == 0)
17814 else if (yysyntax_error_status == -1)
17816 if (yymsg != yymsgbuf)
17817 YYSTACK_FREE (yymsg);
17818 yymsg = YY_CAST (
char *,
17819 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
17822 yysyntax_error_status
17823 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
17829 yymsg_alloc =
sizeof yymsgbuf;
17830 yysyntax_error_status = YYENOMEM;
17833 yyerror (&yylloc, p, yymsgp);
17834 if (yysyntax_error_status == YYENOMEM)
17839 yyerror_range[1] = yylloc;
17840 if (yyerrstatus == 3)
17845 if (yychar <= END_OF_INPUT)
17848 if (yychar == END_OF_INPUT)
17853 yydestruct (
"Error: discarding",
17854 yytoken, &yylval, &yylloc, p);
17876 YYPOPSTACK (yylen);
17878#line 2667 "parse.y"
17879 {after_pop_stack(yylen, p);}
17880#line 17881 "parse.c"
17883 YY_STACK_PRINT (yyss, yyssp, p);
17897 yyn = yypact[yystate];
17898 if (!yypact_value_is_default (yyn))
17900 yyn += YYSYMBOL_YYerror;
17901 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
17903 yyn = yytable[yyn];
17913 yyerror_range[1] = *yylsp;
17914 yydestruct (
"Error: popping",
17915 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
17918#line 2667 "parse.y"
17919 {after_pop_stack(1, p);}
17920#line 17921 "parse.c"
17923 YY_STACK_PRINT (yyss, yyssp, p);
17926 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
17928 YY_IGNORE_MAYBE_UNINITIALIZED_END
17930 yyerror_range[2] = yylloc;
17932 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
17935 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp, p);
17937#line 2666 "parse.y"
17938 {after_shift_error_token(p);}
17939#line 17940 "parse.c"
17966 yyerror (&yylloc, p, YY_(
"memory exhausted"));
17975 if (yychar != YYEMPTY)
17979 yytoken = YYTRANSLATE (yychar);
17980 yydestruct (
"Cleanup: discarding lookahead",
17981 yytoken, &yylval, &yylloc, p);
17985 YYPOPSTACK (yylen);
17986 YY_STACK_PRINT (yyss, yyssp, p);
17987 while (yyssp != yyss)
17989 yydestruct (
"Cleanup: popping",
17990 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
17995 YYSTACK_FREE (yyss);
17997 if (yymsg != yymsgbuf)
17998 YYSTACK_FREE (yymsg);
18002#line 6727 "parse.y"
18007# define yylval (*p->lval)
18015#define set_parser_s_value(x) (ifdef_ripper(p->s_value = (x), (void)0))
18017# define set_yylval_node(x) { \
18018 YYLTYPE _cur_loc; \
18019 rb_parser_set_location(p, &_cur_loc); \
18020 yylval.node = (x); \
18021 set_parser_s_value(STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)); \
18023# define set_yylval_str(x) \
18025 set_yylval_node(NEW_STR(x, &_cur_loc)); \
18026 set_parser_s_value(rb_str_new_mutable_parser_string(x)); \
18028# define set_yylval_num(x) { \
18029 yylval.num = (x); \
18030 set_parser_s_value(x); \
18032# define set_yylval_id(x) (yylval.id = (x))
18033# define set_yylval_name(x) { \
18034 (yylval.id = (x)); \
18035 set_parser_s_value(ID2SYM(x)); \
18037# define yylval_id() (yylval.id)
18039#define set_yylval_noname() set_yylval_id(keyword_nil)
18040#define has_delayed_token(p) (p->delayed.token != NULL)
18043#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
18044#define dispatch_scan_event(p, t) parser_dispatch_scan_event(p, t, __LINE__)
18049 const char *
const pcur = p->lex.pcur;
18050 const char *
const ptok = p->lex.ptok;
18051 if (p->keep_tokens && (pcur < ptok)) {
18052 rb_bug(
"lex.pcur < lex.ptok. (line: %d) %"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"",
18053 p->ruby_sourceline, ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur);
18055 return pcur > ptok;
18062 case '"':
return "\\\"";
18063 case '\\':
return "\\\\";
18064 case '\0':
return "\\0";
18065 case '\n':
return "\\n";
18066 case '\r':
return "\\r";
18067 case '\t':
return "\\t";
18068 case '\f':
return "\\f";
18069 case '\013':
return "\\v";
18070 case '\010':
return "\\b";
18071 case '\007':
return "\\a";
18072 case '\033':
return "\\e";
18073 case '\x7f':
return "\\c?";
18082 const char *ptr = str->ptr;
18083 const char *pend = ptr + str->len;
18084 const char *prev = ptr;
18085 char charbuf[5] = {
'\\',
'x', 0, 0, 0};
18088 while (ptr < pend) {
18091 int n = rb_enc_precise_mbclen(ptr, pend, enc);
18093 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18094 n = rb_enc_mbminlen(enc);
18095 if (pend < ptr + n)
18096 n = (int)(pend - ptr);
18098 c = *ptr & 0xf0 >> 4;
18099 charbuf[2] = (c < 10) ?
'0' + c :
'A' + c - 10;
18101 charbuf[3] = (c < 10) ?
'0' + c :
'A' + c - 10;
18102 parser_str_cat(result, charbuf, 4);
18108 c = rb_enc_mbc_to_codepoint(ptr, pend, enc);
18110 cc = escaped_char(c);
18112 if (ptr - n > prev) parser_str_cat(result, prev, ptr - n - prev);
18113 parser_str_cat_cstr(result, cc);
18116 else if (rb_enc_isascii(c, enc) &&
ISPRINT(c)) {
18119 if (ptr - n > prev) {
18120 parser_str_cat(result, prev, ptr - n - prev);
18123 parser_str_cat(result, prev, ptr - prev);
18127 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18136 token->id = p->token_id;
18137 token->type_name = parser_token2char(p, t);
18139 token->loc.beg_pos = p->yylloc->beg_pos;
18140 token->loc.end_pos = p->yylloc->end_pos;
18141 rb_parser_ary_push_ast_token(p, p->tokens, token);
18146 rb_parser_printf(p,
"Append tokens (line: %d) [%d, :%s, \"%s\", [%d, %d, %d, %d]]\n",
18147 line, token->id, token->type_name, str_escaped->ptr,
18148 token->loc.beg_pos.lineno, token->loc.beg_pos.column,
18149 token->loc.end_pos.lineno, token->loc.end_pos.column);
18150 rb_parser_string_free(p, str_escaped);
18155parser_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t,
int line)
18157 debug_token_line(p,
"parser_dispatch_scan_event", line);
18159 if (!parser_has_token(p))
return;
18161 RUBY_SET_YYLLOC(*p->yylloc);
18163 if (p->keep_tokens) {
18164 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pcur - p->lex.ptok, p->enc);
18165 parser_append_tokens(p, str, t, line);
18171#define dispatch_delayed_token(p, t) parser_dispatch_delayed_token(p, t, __LINE__)
18173parser_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t,
int line)
18175 debug_token_line(p,
"parser_dispatch_delayed_token", line);
18177 if (!has_delayed_token(p))
return;
18179 RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(*p->yylloc);
18181 if (p->keep_tokens) {
18183 parser_append_tokens(p, p->delayed.token, t, line);
18185 rb_parser_string_free(p, p->delayed.token);
18188 p->delayed.token = NULL;
18191#define literal_flush(p, ptr) ((void)(ptr))
18196 if (p->lex.pcur < p->lex.ptok) rb_raise(
rb_eRuntimeError,
"lex.pcur < lex.ptok");
18197 return p->lex.pcur > p->lex.ptok;
18201ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
18203 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
18204 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
18205 RUBY_SET_YYLLOC(*p->yylloc);
18211ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
18213 if (!ripper_has_scan_event(p))
return;
18215 set_parser_s_value(ripper_scan_event_val(p, t));
18217#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
18220ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
18223 int saved_line = p->ruby_sourceline;
18224 const char *saved_tokp = p->lex.ptok;
18225 VALUE s_value, str;
18227 if (!has_delayed_token(p))
return;
18228 p->ruby_sourceline = p->delayed.beg_line;
18229 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
18230 str = rb_str_new_mutable_parser_string(p->delayed.token);
18231 rb_parser_string_free(p, p->delayed.token);
18232 s_value = ripper_dispatch1(p, ripper_token2eventid(t), str);
18233 set_parser_s_value(s_value);
18234 p->delayed.token = NULL;
18235 p->ruby_sourceline = saved_line;
18236 p->lex.ptok = saved_tokp;
18238#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
18244 return rb_enc_isalnum((
unsigned char)*ptr, enc) || *ptr ==
'_' || !
ISASCII(*ptr);
18250 return !(p)->eofp && is_identchar(p, p->lex.pcur-1, p->lex.pend, p->enc);
18256 return ISASCII(*(p->lex.pcur-1));
18262 int column = 1, nonspc = 0, i;
18263 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
18264 if (*ptr ==
'\t') {
18265 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
18268 if (*ptr !=
' ' && *ptr !=
'\t') {
18273 ptinfo->beg = loc->beg_pos;
18274 ptinfo->indent = column;
18275 ptinfo->nonspc = nonspc;
18283 if (!p->token_info_enabled)
return;
18285 ptinfo->token = token;
18286 ptinfo->next = p->token_info;
18287 token_info_setup(ptinfo, p->lex.pbeg, loc);
18289 p->token_info = ptinfo;
18297 if (!ptinfo_beg)
return;
18300 token_info_warn(p, token, ptinfo_beg, 1, loc);
18302 p->token_info = ptinfo_beg->next;
18303 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
18311 if (!ptinfo_beg)
return;
18312 p->token_info = ptinfo_beg->next;
18314 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
18315 ptinfo_beg->beg.column != beg_pos.column ||
18316 strcmp(ptinfo_beg->token, token)) {
18317 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
18318 beg_pos.lineno, beg_pos.column, token,
18319 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
18320 ptinfo_beg->token);
18323 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
18329 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
18330 if (!p->token_info_enabled)
return;
18331 if (!ptinfo_beg)
return;
18332 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
18333 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
18334 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
18335 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
18336 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
18337 rb_warn3L(ptinfo_end->beg.lineno,
18338 "mismatched indentations at '%s' with '%s' at %d",
18339 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
18343parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
18345 int len = rb_enc_precise_mbclen(ptr, p->lex.pend, p->enc);
18347 compile_error(p,
"invalid multibyte char (%s)", rb_enc_name(p->enc));
18358 int lineno = p->ruby_sourceline;
18362 else if (yylloc->beg_pos.lineno == lineno) {
18363 str = p->lex.lastline;
18368 ruby_show_error_line(p, p->error_buffer, yylloc, lineno, str);
18378 yylloc = RUBY_SET_YYLLOC(current);
18380 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
18381 p->ruby_sourceline != yylloc->end_pos.lineno)) {
18385 parser_compile_error(p, yylloc,
"%s", msg);
18386 parser_show_error_line(p, yylloc);
18394 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
18401 const int max_line_margin = 30;
18402 const char *ptr, *ptr_end, *pt, *pb;
18403 const char *pre =
"", *post =
"", *pend;
18404 const char *code =
"", *caret =
"";
18406 const char *
const pbeg = PARSER_STRING_PTR(str);
18411 if (!yylloc)
return;
18412 pend = rb_parser_string_end(str);
18413 if (pend > pbeg && pend[-1] ==
'\n') {
18414 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
18418 if (lineno == yylloc->end_pos.lineno &&
18419 (pend - pbeg) > yylloc->end_pos.column) {
18420 pt = pbeg + yylloc->end_pos.column;
18423 ptr = ptr_end = pt;
18424 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
18425 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
18427 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
18428 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
18430 len = ptr_end - ptr;
18433 ptr = rb_enc_prev_char(pbeg, ptr, pt, rb_parser_str_get_encoding(str));
18434 if (ptr > pbeg) pre =
"...";
18436 if (ptr_end < pend) {
18437 ptr_end = rb_enc_prev_char(pt, ptr_end, pend, rb_parser_str_get_encoding(str));
18438 if (ptr_end < pend) post =
"...";
18442 if (lineno == yylloc->beg_pos.lineno) {
18443 pb += yylloc->beg_pos.column;
18444 if (pb > pt) pb = pt;
18446 if (pb < ptr) pb = ptr;
18447 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
18450 if (
RTEST(errbuf)) {
18451 mesg = rb_attr_get(errbuf, idMesg);
18452 if (char_at_end(p, mesg,
'\n') !=
'\n')
18456 mesg = rb_enc_str_new(0, 0, rb_parser_str_get_encoding(str));
18458 if (!errbuf && rb_stderr_tty_p()) {
18459#define CSI_BEGIN "\033["
18462 CSI_BEGIN
""CSI_SGR
"%s"
18463 CSI_BEGIN
"1"CSI_SGR
"%.*s"
18464 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
18465 CSI_BEGIN
";1"CSI_SGR
"%.*s"
18466 CSI_BEGIN
""CSI_SGR
"%s"
18469 (
int)(pb - ptr), ptr,
18470 (
int)(pt - pb), pb,
18471 (
int)(ptr_end - pt), pt,
18477 len = ptr_end - ptr;
18478 lim = pt < pend ? pt : pend;
18479 i = (int)(lim - ptr);
18485 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
18491 memset(p2,
'~', (lim - ptr));
18495 rb_str_catf(mesg,
"%s%.*s%s\n""%s%s\n",
18496 pre, (
int)
len, code, post,
18499 if (!errbuf) rb_write_error_str(mesg);
18506 const char *pcur = 0, *ptok = 0;
18507 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
18508 p->ruby_sourceline == yylloc->end_pos.lineno) {
18509 pcur = p->lex.pcur;
18510 ptok = p->lex.ptok;
18511 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
18512 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
18514 parser_yyerror0(p, msg);
18516 p->lex.ptok = ptok;
18517 p->lex.pcur = pcur;
18525 dispatch1(parse_error, STR_NEW2(msg));
18537vtable_size(
const struct vtable *tbl)
18539 if (!DVARS_TERMINAL_P(tbl)) {
18557 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
18562#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
18565vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
18570 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
18573 if (!DVARS_TERMINAL_P(tbl)) {
18575 ruby_sized_xfree(tbl->tbl, tbl->capa *
sizeof(
ID));
18577 ruby_sized_xfree(tbl,
sizeof(*tbl));
18580#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
18583vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
18588 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
18589 line, name, (
void *)tbl, rb_id2name(
id));
18592 if (DVARS_TERMINAL_P(tbl)) {
18593 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
18596 if (tbl->pos == tbl->capa) {
18597 tbl->capa = tbl->capa * 2;
18598 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
18600 tbl->tbl[tbl->pos++] = id;
18602#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
18605vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
18606 struct vtable *tbl,
int n)
18609 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
18610 line, name, (
void *)tbl, n);
18612 if (tbl->pos < n) {
18613 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
18618#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
18621vtable_included(
const struct vtable * tbl,
ID id)
18625 if (!DVARS_TERMINAL_P(tbl)) {
18626 for (i = 0; i < tbl->pos; i++) {
18627 if (tbl->tbl[i] ==
id) {
18640 return strcmp(p->ruby_sourcefile,
"-e") == 0;
18647yycompile0(
VALUE arg)
18654 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string) && !e_option_supplied(p)) {
18658 if (p->debug_lines) {
18659 p->ast->body.script_lines = p->debug_lines;
18663#define RUBY_DTRACE_PARSE_HOOK(name) \
18664 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
18665 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
18667 RUBY_DTRACE_PARSE_HOOK(BEGIN);
18669 RUBY_DTRACE_PARSE_HOOK(END);
18671 p->debug_lines = 0;
18673 xfree(p->lex.strterm);
18674 p->lex.strterm = 0;
18675 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
18676 if (n || p->error_p) {
18677 VALUE mesg = p->error_buffer;
18679 mesg = syntax_error_new();
18681 if (!p->error_tolerant) {
18682 rb_set_errinfo(mesg);
18686 tree = p->eval_tree;
18688 tree = NEW_NIL(&NULL_LOC);
18693 NODE *body = parser_append_options(p, RNODE_SCOPE(tree)->nd_body);
18694 prelude = block_append(p, p->eval_tree_begin, body);
18695 RNODE_SCOPE(tree)->nd_body = prelude;
18696 p->ast->body.frozen_string_literal = p->frozen_string_literal;
18697 p->ast->body.coverage_enabled = cov;
18698 if (p->keep_tokens) {
18699 p->ast->node_buffer->tokens = tokens;
18703 p->ast->body.root = tree;
18704 p->ast->body.line_count = p->line_count;
18712 if (
NIL_P(fname)) {
18713 p->ruby_sourcefile_string =
Qnil;
18714 p->ruby_sourcefile =
"(none)";
18717 p->ruby_sourcefile_string = rb_str_to_interned_str(fname);
18720 p->ruby_sourceline = line - 1;
18724 p->ast = ast = rb_ast_new();
18725 compile_callback(yycompile0, (
VALUE)p);
18739 rb_encoding *enc = rb_parser_str_get_encoding(s);
18740 if (!rb_enc_asciicompat(enc)) {
18741 rb_raise(rb_eArgError,
"invalid source encoding");
18750 if (!line)
return 0;
18752 string_buffer_append(p, line);
18753 must_be_ascii_compatible(p, line);
18759rb_parser_compile(
rb_parser_t *p, rb_parser_lex_gets_func *gets,
VALUE fname, rb_parser_input_data input,
int line)
18761 p->lex.gets = gets;
18762 p->lex.input = input;
18763 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
18765 return yycompile(p, fname, line);
18769#define STR_FUNC_ESCAPE 0x01
18770#define STR_FUNC_EXPAND 0x02
18771#define STR_FUNC_REGEXP 0x04
18772#define STR_FUNC_QWORDS 0x08
18773#define STR_FUNC_SYMBOL 0x10
18774#define STR_FUNC_INDENT 0x20
18775#define STR_FUNC_LABEL 0x40
18776#define STR_FUNC_LIST 0x4000
18777#define STR_FUNC_TERM 0x8000
18780 str_label = STR_FUNC_LABEL,
18782 str_dquote = (STR_FUNC_EXPAND),
18783 str_xquote = (STR_FUNC_EXPAND),
18784 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
18785 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
18786 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
18787 str_ssym = (STR_FUNC_SYMBOL),
18788 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
18796 pstr = rb_parser_encoding_string_new(p, ptr,
len, enc);
18798 if (!(func & STR_FUNC_REGEXP)) {
18799 if (rb_parser_is_ascii_string(p, pstr)) {
18801 else if (rb_is_usascii_enc((
void *)enc0) && enc != rb_utf8_encoding()) {
18803 enc = rb_ascii8bit_encoding();
18804 PARSER_ENCODING_CODERANGE_SET(pstr, enc, RB_PARSER_ENC_CODERANGE_VALID);
18814 return strterm->heredoc;
18818new_strterm(
struct parser_params *p,
int func,
int term,
int paren)
18821 strterm->u.literal.func = func;
18822 strterm->u.literal.term = term;
18823 strterm->u.literal.paren = paren;
18831 strterm->heredoc =
true;
18835#define peek(p,c) peek_n(p, (c), 0)
18836#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
18837#define peekc(p) peekc_n(p, 0)
18838#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
18840#define add_delayed_token(p, tok, end) parser_add_delayed_token(p, tok, end, __LINE__)
18842parser_add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end,
int line)
18844 debug_token_line(p,
"add_delayed_token", line);
18847 if (has_delayed_token(p)) {
18848 bool next_line = parser_string_char_at_end(p, p->delayed.token, 0) ==
'\n';
18849 int end_line = (next_line ? 1 : 0) + p->delayed.end_line;
18850 int end_col = (next_line ? 0 : p->delayed.end_col);
18851 if (end_line != p->ruby_sourceline || end_col != tok - p->lex.pbeg) {
18852 dispatch_delayed_token(p, tSTRING_CONTENT);
18855 if (!has_delayed_token(p)) {
18856 p->delayed.token = rb_parser_string_new(p, 0, 0);
18857 rb_parser_enc_associate(p, p->delayed.token, p->enc);
18858 p->delayed.beg_line = p->ruby_sourceline;
18859 p->delayed.beg_col =
rb_long2int(tok - p->lex.pbeg);
18861 parser_str_cat(p->delayed.token, tok, end - tok);
18862 p->delayed.end_line = p->ruby_sourceline;
18863 p->delayed.end_col =
rb_long2int(end - p->lex.pbeg);
18871 p->lex.pbeg = p->lex.pcur = PARSER_STRING_PTR(str);
18872 p->lex.pend = p->lex.pcur + PARSER_STRING_LEN(str);
18873 p->lex.lastline = str;
18880 p->lex.nextline = 0;
18885 if (!lex_eol_ptr_p(p, p->lex.pbeg) && *(p->lex.pend-1) !=
'\n') {
18889 if (!p->lex.input || !(str = lex_getline(p))) {
18896 if (p->debug_lines) {
18897 if (set_encoding) rb_parser_enc_associate(p, str, p->enc);
18899 rb_parser_ary_push_script_line(p, p->debug_lines, copy);
18902 p->cr_seen = FALSE;
18904 else if (str == AFTER_HEREDOC_WITHOUT_TERMINATOR) {
18908 add_delayed_token(p, p->lex.ptok, p->lex.pend);
18909 if (p->heredoc_end > 0) {
18910 p->ruby_sourceline = p->heredoc_end;
18911 p->heredoc_end = 0;
18913 p->ruby_sourceline++;
18914 set_lastline(p, str);
18922 if (peek(p,
'\n')) {
18934 if (UNLIKELY(lex_eol_p(p) || p->eofp || p->lex.nextline > AFTER_HEREDOC_WITHOUT_TERMINATOR)) {
18935 if (nextline(p, set_encoding))
return -1;
18937 c = (
unsigned char)*p->lex.pcur++;
18938 if (UNLIKELY(c ==
'\r')) {
18939 c = parser_cr(p, c);
18944#define nextc(p) nextc0(p, TRUE)
18949 if (c == -1)
return;
18952 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
18957#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
18959#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
18960#define tok(p) (p)->tokenbuf
18961#define toklen(p) (p)->tokidx
18966 const char *ptr = p->lex.pcur;
18967 while (!lex_eol_ptr_p(p, ptr)) {
18968 int c = (
unsigned char)*ptr++;
18969 int eol = (c ==
'\n' || c ==
'#');
18981 if (!p->tokenbuf) {
18983 p->tokenbuf =
ALLOC_N(
char, 60);
18985 if (p->toksiz > 4096) {
18989 return p->tokenbuf;
18997 if (p->tokidx >= p->toksiz) {
18998 do {p->toksiz *= 2;}
while (p->toksiz < p->tokidx);
18999 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19001 return &p->tokenbuf[p->tokidx-n];
19007 p->tokenbuf[p->tokidx++] = (char)c;
19008 if (p->tokidx >= p->toksiz) {
19010 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19019 c = (int)ruby_scan_hex(p->lex.pcur, 2, numlen);
19022 yyerror0(
"invalid hex escape");
19023 dispatch_scan_event(p, tSTRING_CONTENT);
19026 p->lex.pcur += *numlen;
19030#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
19033escaped_control_code(
int c)
19059#define WARN_SPACE_CHAR(c, prefix) \
19060 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c))
19064 int regexp_literal,
const char *begin)
19066 const int wide = !begin;
19068 int codepoint = (int)ruby_scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
19070 p->lex.pcur += numlen;
19071 if (p->lex.strterm == NULL ||
19072 strterm_is_heredoc(p->lex.strterm) ||
19073 (p->lex.strterm->u.literal.func != str_regexp)) {
19074 if (!begin) begin = p->lex.pcur;
19075 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
19076 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19077 yyerror0(
"invalid Unicode escape");
19078 dispatch_scan_event(p, tSTRING_CONTENT);
19079 return wide && numlen > 0;
19081 if (codepoint > 0x10ffff) {
19082 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19083 yyerror0(
"invalid Unicode codepoint (too large)");
19084 dispatch_scan_event(p, tSTRING_CONTENT);
19087 if ((codepoint & 0xfffff800) == 0xd800) {
19088 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19089 yyerror0(
"invalid Unicode codepoint");
19090 dispatch_scan_event(p, tSTRING_CONTENT);
19094 if (regexp_literal) {
19095 tokcopy(p, (
int)numlen);
19097 else if (codepoint >= 0x80) {
19099 if (*encp && utf8 != *encp) {
19100 YYLTYPE loc = RUBY_INIT_YYLLOC();
19101 compile_error(p,
"UTF-8 mixed within %s source", rb_enc_name(*encp));
19102 parser_show_error_line(p, &loc);
19106 tokaddmbc(p, codepoint, *encp);
19109 tokadd(p, codepoint);
19119 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19121 p->lex.pcur +=
len - 1;
19129 int term,
int symbol_literal,
int regexp_literal)
19136 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
19138 const int open_brace =
'{', close_brace =
'}';
19140 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
19142 if (peek(p, open_brace)) {
19143 if (regexp_literal && p->lex.strterm->u.literal.func == str_regexp) {
19150 tokadd(p, open_brace);
19151 while (!lex_eol_ptr_p(p, ++p->lex.pcur)) {
19153 if (c == close_brace) {
19158 else if (c == term) {
19161 if (c ==
'\\' && !lex_eol_n_p(p, 1)) {
19163 c = *++p->lex.pcur;
19165 tokadd_mbchar(p, c);
19169 const char *second = NULL;
19170 int c, last = nextc(p);
19171 if (lex_eol_p(p))
goto unterminated;
19172 while (
ISSPACE(c = peekc(p)) && !lex_eol_ptr_p(p, ++p->lex.pcur));
19173 while (c != close_brace) {
19174 if (c == term)
goto unterminated;
19175 if (second == multiple_codepoints)
19176 second = p->lex.pcur;
19177 if (regexp_literal) tokadd(p, last);
19178 if (!tokadd_codepoint(p, encp, regexp_literal, NULL)) {
19181 while (
ISSPACE(c = peekc(p))) {
19182 if (lex_eol_ptr_p(p, ++p->lex.pcur))
goto unterminated;
19185 if (term == -1 && !second)
19186 second = multiple_codepoints;
19189 if (c != close_brace) {
19191 flush_string_content(p, rb_utf8_encoding(), 0);
19192 yyerror0(
"unterminated Unicode escape");
19193 dispatch_scan_event(p, tSTRING_CONTENT);
19196 if (second && second != multiple_codepoints) {
19197 const char *pcur = p->lex.pcur;
19198 p->lex.pcur = second;
19199 dispatch_scan_event(p, tSTRING_CONTENT);
19201 p->lex.pcur = pcur;
19202 yyerror0(multiple_codepoints);
19206 if (regexp_literal) tokadd(p, close_brace);
19211 if (!tokadd_codepoint(p, encp, regexp_literal, p->lex.pcur -
rb_strlen_lit(
"\\u"))) {
19218#define ESCAPE_CONTROL 1
19219#define ESCAPE_META 2
19222read_escape(
struct parser_params *p,
int flags,
const char *begin)
19227 switch (c = nextc(p)) {
19252 case '0':
case '1':
case '2':
case '3':
19253 case '4':
case '5':
case '6':
case '7':
19255 c = (int)ruby_scan_oct(p->lex.pcur, 3, &numlen);
19256 p->lex.pcur += numlen;
19260 c = tok_hex(p, &numlen);
19261 if (numlen == 0)
return 0;
19271 if (flags & ESCAPE_META)
goto eof;
19272 if ((c = nextc(p)) !=
'-') {
19275 if ((c = nextc(p)) ==
'\\') {
19276 switch (peekc(p)) {
19277 case 'u':
case 'U':
19281 return read_escape(p, flags|ESCAPE_META, begin) | 0x80;
19283 else if (c == -1)
goto eof;
19289 int c2 = escaped_control_code(c);
19291 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
19292 WARN_SPACE_CHAR(c2,
"\\M-");
19295 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
19298 else if (
ISCNTRL(c))
goto eof;
19299 return ((c & 0xff) | 0x80);
19303 if ((c = nextc(p)) !=
'-') {
19307 if (flags & ESCAPE_CONTROL)
goto eof;
19308 if ((c = nextc(p))==
'\\') {
19309 switch (peekc(p)) {
19310 case 'u':
case 'U':
19314 c = read_escape(p, flags|ESCAPE_CONTROL, begin);
19318 else if (c == -1)
goto eof;
19324 int c2 = escaped_control_code(c);
19327 if (flags & ESCAPE_META) {
19328 WARN_SPACE_CHAR(c2,
"\\M-");
19331 WARN_SPACE_CHAR(c2,
"");
19335 if (flags & ESCAPE_META) {
19336 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
19339 WARN_SPACE_CHAR(c2,
"\\C-");
19343 else if (
ISCNTRL(c))
goto eof;
19349 flush_string_content(p, p->enc, p->lex.pcur - begin);
19350 yyerror0(
"Invalid escape character syntax");
19351 dispatch_scan_event(p, tSTRING_CONTENT);
19366 int len = rb_enc_codelen(c, enc);
19367 rb_enc_mbcput(c, tokspace(p,
len), enc);
19375 const char *begin = p->lex.pcur;
19377 switch (c = nextc(p)) {
19381 case '0':
case '1':
case '2':
case '3':
19382 case '4':
case '5':
case '6':
case '7':
19384 ruby_scan_oct(--p->lex.pcur, 3, &numlen);
19385 if (numlen == 0)
goto eof;
19386 p->lex.pcur += numlen;
19387 tokcopy(p, (
int)numlen + 1);
19393 tok_hex(p, &numlen);
19394 if (numlen == 0)
return -1;
19395 tokcopy(p, (
int)numlen + 2);
19401 flush_string_content(p, p->enc, p->lex.pcur - begin);
19402 yyerror0(
"Invalid escape character syntax");
19414char_to_option(
int c)
19420 val = RE_ONIG_OPTION_IGNORECASE;
19423 val = RE_ONIG_OPTION_EXTEND;
19426 val = RE_ONIG_OPTION_MULTILINE;
19435#define ARG_ENCODING_FIXED 16
19436#define ARG_ENCODING_NONE 32
19437#define ENC_ASCII8BIT 1
19438#define ENC_EUC_JP 2
19439#define ENC_Windows_31J 3
19443char_to_option_kcode(
int c,
int *option,
int *kcode)
19449 *kcode = ENC_ASCII8BIT;
19450 return (*option = ARG_ENCODING_NONE);
19452 *kcode = ENC_EUC_JP;
19455 *kcode = ENC_Windows_31J;
19462 return (*option = char_to_option(c));
19464 *option = ARG_ENCODING_FIXED;
19477 while (c = nextc(p),
ISALPHA(c)) {
19479 options |= RE_OPTION_ONCE;
19481 else if (char_to_option_kcode(c, &opt, &kc)) {
19483 if (kc != ENC_ASCII8BIT) kcode = c;
19497 YYLTYPE loc = RUBY_INIT_YYLLOC();
19499 compile_error(p,
"unknown regexp option%s - %*s",
19500 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
19501 parser_show_error_line(p, &loc);
19503 return options | RE_OPTION_ENCODING(kcode);
19509 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19510 if (
len < 0)
return -1;
19512 p->lex.pcur += --
len;
19513 if (
len > 0) tokcopy(p,
len);
19518simple_re_meta(
int c)
19521 case '$':
case '*':
case '+':
case '.':
19522 case '?':
case '^':
case '|':
19523 case ')':
case ']':
case '}':
case '>':
19531parser_update_heredoc_indent(
struct parser_params *p,
int c)
19533 if (p->heredoc_line_indent == -1) {
19534 if (c ==
'\n') p->heredoc_line_indent = 0;
19538 p->heredoc_line_indent++;
19541 else if (c ==
'\t') {
19542 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
19543 p->heredoc_line_indent = w * TAB_WIDTH;
19546 else if (c !=
'\n') {
19547 if (p->heredoc_indent > p->heredoc_line_indent) {
19548 p->heredoc_indent = p->heredoc_line_indent;
19550 p->heredoc_line_indent = -1;
19554 p->heredoc_line_indent = 0;
19563 YYLTYPE loc = RUBY_INIT_YYLLOC();
19564 const char *n1 = rb_enc_name(enc1), *n2 = rb_enc_name(enc2);
19565 compile_error(p,
"%s mixed within %s source", n1, n2);
19566 parser_show_error_line(p, &loc);
19572 const char *pos = p->lex.pcur;
19574 parser_mixed_error(p, enc1, enc2);
19579nibble_char_upper(
unsigned int c)
19582 return c + (c < 10 ?
'0' :
'A' - 10);
19587 int func,
int term,
int paren,
long *nest,
19591 bool erred =
false;
19593 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
19594 int top_of_line = FALSE;
19597#define mixed_error(enc1, enc2) \
19598 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
19599#define mixed_escape(beg, enc1, enc2) \
19600 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
19602 while ((c = nextc(p)) != -1) {
19603 if (p->heredoc_indent > 0) {
19604 parser_update_heredoc_indent(p, c);
19607 if (top_of_line && heredoc_end == p->ruby_sourceline) {
19613 if (paren && c == paren) {
19616 else if (c == term) {
19617 if (!nest || !*nest) {
19623 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && !lex_eol_p(p)) {
19624 unsigned char c2 = *p->lex.pcur;
19625 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
19630 else if (c ==
'\\') {
19634 if (func & STR_FUNC_QWORDS)
break;
19635 if (func & STR_FUNC_EXPAND) {
19636 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
19647 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
19651 if ((func & STR_FUNC_EXPAND) == 0) {
19655 tokadd_utf8(p, enc, term,
19656 func & STR_FUNC_SYMBOL,
19657 func & STR_FUNC_REGEXP);
19661 if (c == -1)
return -1;
19663 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
19666 if (func & STR_FUNC_REGEXP) {
19672 c = read_escape(p, 0, p->lex.pcur - 1);
19677 *t++ = nibble_char_upper(c >> 4);
19678 *t++ = nibble_char_upper(c);
19683 if (c == term && !simple_re_meta(c)) {
19688 if ((c = tokadd_escape(p)) < 0)
19690 if (*enc && *enc != *encp) {
19691 mixed_escape(p->lex.ptok+2, *enc, *encp);
19695 else if (func & STR_FUNC_EXPAND) {
19697 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
19698 c = read_escape(p, 0, p->lex.pcur - 1);
19700 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
19703 else if (c != term && !(paren && c == paren)) {
19710 else if (!parser_isascii(p)) {
19715 else if (*enc != *encp) {
19716 mixed_error(*enc, *encp);
19719 if (tokadd_mbchar(p, c) == -1)
return -1;
19722 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
19730 else if (*enc != *encp) {
19731 mixed_error(*enc, *encp);
19737 top_of_line = (c ==
'\n');
19741 if (*enc) *encp = *enc;
19745#define NEW_STRTERM(func, term, paren) new_strterm(p, func, term, paren)
19750 p->lex.pcur -= back;
19751 if (has_delayed_token(p)) {
19752 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
19754 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
19755 p->delayed.end_line = p->ruby_sourceline;
19756 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
19758 dispatch_delayed_token(p, tSTRING_CONTENT);
19759 p->lex.ptok = p->lex.pcur;
19761 dispatch_scan_event(p, tSTRING_CONTENT);
19762 p->lex.pcur += back;
19768#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
19769#define SPECIAL_PUNCT(idx) ( \
19770 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
19771 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
19772 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
19773 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
19774 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
19776const uint_least32_t ruby_global_name_punct_bits[] = {
19782#undef SPECIAL_PUNCT
19785static enum yytokentype
19786parser_peek_variable_name(struct parser_params *p)
19789 const char *ptr = p->lex.pcur;
19791 if (lex_eol_ptr_n_p(p, ptr, 1)) return 0;
19795 if ((c = *ptr) == '-') {
19796 if (lex_eol_ptr_p(p, ++ptr)) return 0;
19799 else if (is_global_name_punct(c) || ISDIGIT(c)) {
19800 return tSTRING_DVAR;
19804 if ((c = *ptr) == '@') {
19805 if (lex_eol_ptr_p(p, ++ptr)) return 0;
19811 p->command_start = TRUE;
19812 yylval.state = p->lex.state;
19813 return tSTRING_DBEG;
19817 if (!ISASCII(c) || c == '_' || ISALPHA(c))
19818 return tSTRING_DVAR;
19822#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
19823#define IS_END() IS_lex_state(EXPR_END_ANY)
19824#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
19825#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
19826#define IS_LABEL_POSSIBLE() (\
19827 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
19829#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
19830#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
19832static inline enum yytokentype
19833parser_string_term(struct parser_params *p, int func)
19835 xfree(p->lex.strterm);
19836 p->lex.strterm = 0;
19837 if (func & STR_FUNC_REGEXP) {
19838 set_yylval_num(regx_options(p));
19839 dispatch_scan_event(p, tREGEXP_END);
19840 SET_LEX_STATE(EXPR_END);
19841 return tREGEXP_END;
19843 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
19845 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
19848 SET_LEX_STATE(EXPR_END);
19849 return tSTRING_END;
19852static enum yytokentype
19853parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
19855 int func = quote->func;
19856 int term = quote->term;
19857 int paren = quote->paren;
19859 rb_encoding *enc = p->enc;
19860 rb_encoding *base_enc = 0;
19861 rb_parser_string_t *lit;
19863 if (func & STR_FUNC_TERM) {
19864 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
19865 SET_LEX_STATE(EXPR_END);
19866 xfree(p->lex.strterm);
19867 p->lex.strterm = 0;
19868 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
19871 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
19872 while (c != '\n' && ISSPACE(c = nextc(p)));
19875 if (func & STR_FUNC_LIST) {
19876 quote->func &= ~STR_FUNC_LIST;
19879 if (c == term && !quote->nest) {
19880 if (func & STR_FUNC_QWORDS) {
19881 quote->func |= STR_FUNC_TERM;
19882 pushback(p, c); /* dispatch the term at tSTRING_END */
19883 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
19886 return parser_string_term(p, func);
19889 if (!ISSPACE(c)) pushback(p, c);
19890 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
19894 if ((func & STR_FUNC_EXPAND) && c == '#') {
19895 enum yytokentype t = parser_peek_variable_name(p);
19901 if (tokadd_string(p, func, term, paren, "e->nest,
19902 &enc, &base_enc) == -1) {
19905# define unterminated_literal(mesg) yyerror0(mesg)
19907# define unterminated_literal(mesg) compile_error(p, mesg)
19909 literal_flush(p, p->lex.pcur);
19910 if (func & STR_FUNC_QWORDS) {
19911 /* no content to add, bailing out here */
19912 unterminated_literal("unterminated list meets end of file");
19913 xfree(p->lex.strterm);
19914 p->lex.strterm = 0;
19915 return tSTRING_END;
19917 if (func & STR_FUNC_REGEXP) {
19918 unterminated_literal("unterminated regexp meets end of file");
19921 unterminated_literal("unterminated string meets end of file");
19923 quote->func |= STR_FUNC_TERM;
19928 lit = STR_NEW3(tok(p), toklen(p), enc, func);
19929 set_yylval_str(lit);
19930 flush_string_content(p, enc, 0);
19932 return tSTRING_CONTENT;
19935static enum yytokentype
19936heredoc_identifier(struct parser_params *p)
19939 * term_len is length of `<<"END"` except `END`,
19940 * in this case term_len is 4 (<, <, " and ").
19942 long len, offset = p->lex.pcur - p->lex.pbeg;
19943 int c = nextc(p), term, func = 0, quote = 0;
19944 enum yytokentype token = tSTRING_BEG;
19949 func = STR_FUNC_INDENT;
19952 else if (c == '~') {
19954 func = STR_FUNC_INDENT;
19960 func |= str_squote; goto quoted;
19962 func |= str_dquote;
goto quoted;
19964 token = tXSTRING_BEG;
19965 func |= str_xquote;
goto quoted;
19972 while ((c = nextc(p)) != term) {
19973 if (c == -1 || c ==
'\r' || c ==
'\n') {
19974 yyerror0(
"unterminated here document identifier");
19981 if (!parser_is_identchar(p)) {
19983 if (func & STR_FUNC_INDENT) {
19984 pushback(p, indent > 0 ?
'~' :
'-');
19988 func |= str_dquote;
19990 int n = parser_precise_mbclen(p, p->lex.pcur-1);
19991 if (n < 0)
return 0;
19992 p->lex.pcur += --n;
19993 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
19998 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
19999 if ((
unsigned long)
len >= HERETERM_LENGTH_MAX)
20000 yyerror0(
"too long here document identifier");
20001 dispatch_scan_event(p, tHEREDOC_BEG);
20004 p->lex.strterm = new_heredoc(p);
20006 here->offset = offset;
20007 here->sourceline = p->ruby_sourceline;
20008 here->length = (unsigned)
len;
20009 here->quote = quote;
20011 here->lastline = p->lex.lastline;
20014 p->heredoc_indent = indent;
20015 p->heredoc_line_indent = 0;
20025 p->lex.strterm = 0;
20026 line = here->lastline;
20027 p->lex.lastline = line;
20028 p->lex.pbeg = PARSER_STRING_PTR(line);
20029 p->lex.pend = p->lex.pbeg + PARSER_STRING_LEN(line);
20030 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
20031 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
20032 p->heredoc_end = p->ruby_sourceline;
20033 p->ruby_sourceline = (int)here->sourceline;
20034 if (p->eofp) p->lex.nextline = AFTER_HEREDOC_WITHOUT_TERMINATOR;
20040dedent_string_column(
const char *str,
long len,
int width)
20044 for (i = 0; i <
len && col < width; i++) {
20045 if (str[i] ==
' ') {
20048 else if (str[i] ==
'\t') {
20049 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
20050 if (n > width)
break;
20068 len = PARSER_STRING_LEN(
string);
20069 str = PARSER_STRING_PTR(
string);
20071 i = dedent_string_column(str,
len, width);
20074 rb_parser_str_modify(
string);
20075 str = PARSER_STRING_PTR(
string);
20076 if (PARSER_STRING_LEN(
string) !=
len)
20077 rb_fatal(
"literal string changed: %s", PARSER_STRING_PTR(
string));
20079 rb_parser_str_set_len(p,
string,
len - i);
20086 NODE *node, *str_node, *prev_node;
20087 int indent = p->heredoc_indent;
20090 if (indent <= 0)
return root;
20091 if (!root)
return root;
20093 prev_node = node = str_node = root;
20094 if (nd_type_p(root, NODE_LIST)) str_node = RNODE_LIST(root)->nd_head;
20098 if (nd_fl_newline(str_node)) {
20099 dedent_string(p, lit, indent);
20104 else if (!literal_concat0(p, prev_lit, lit)) {
20108 NODE *end = RNODE_LIST(node)->as.nd_end;
20109 node = RNODE_LIST(prev_node)->nd_next = RNODE_LIST(node)->nd_next;
20111 if (nd_type_p(prev_node, NODE_DSTR))
20112 nd_set_type(prev_node, NODE_STR);
20115 RNODE_LIST(node)->as.nd_end = end;
20120 while ((nd_type_p(node, NODE_LIST) || nd_type_p(node, NODE_DSTR)) && (node = RNODE_LIST(prev_node = node)->nd_next) != 0) {
20122 if (!nd_type_p(node, NODE_LIST))
break;
20123 if ((str_node = RNODE_LIST(node)->nd_head) != 0) {
20124 enum node_type
type = nd_type(str_node);
20125 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
20135whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
20137 const char *beg = p->lex.pbeg;
20138 const char *ptr = p->lex.pend;
20140 if (ptr - beg <
len)
return FALSE;
20141 if (ptr > beg && ptr[-1] ==
'\n') {
20142 if (--ptr > beg && ptr[-1] ==
'\r') --ptr;
20143 if (ptr - beg <
len)
return FALSE;
20145 if (strncmp(eos, ptr -=
len,
len))
return FALSE;
20147 while (beg < ptr &&
ISSPACE(*beg)) beg++;
20155 if (strncmp(p->lex.pcur, word,
len))
return 0;
20156 if (lex_eol_n_p(p,
len))
return 1;
20157 int c = (
unsigned char)p->lex.pcur[
len];
20160 case '\0':
case '\004':
case '\032':
return 1;
20165#define NUM_SUFFIX_R (1<<0)
20166#define NUM_SUFFIX_I (1<<1)
20167#define NUM_SUFFIX_ALL 3
20173 const char *lastp = p->lex.pcur;
20175 while ((c = nextc(p)) != -1) {
20176 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
20177 result |= (mask & NUM_SUFFIX_I);
20178 mask &= ~NUM_SUFFIX_I;
20180 mask &= ~NUM_SUFFIX_R;
20183 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
20184 result |= (mask & NUM_SUFFIX_R);
20185 mask &= ~NUM_SUFFIX_R;
20189 p->lex.pcur = lastp;
20190 literal_flush(p, p->lex.pcur);
20199static enum yytokentype
20200set_number_literal(
struct parser_params *p,
enum yytokentype
type,
int suffix,
int base,
int seen_point)
20202 enum rb_numeric_type numeric_type = integer_literal;
20204 if (
type == tFLOAT) {
20205 numeric_type = float_literal;
20208 if (suffix & NUM_SUFFIX_R) {
20210 numeric_type = rational_literal;
20212 if (suffix & NUM_SUFFIX_I) {
20218 set_yylval_node(NEW_INTEGER(
strdup(tok(p)), base, &_cur_loc));
20221 set_yylval_node(NEW_FLOAT(
strdup(tok(p)), &_cur_loc));
20224 set_yylval_node(NEW_RATIONAL(
strdup(tok(p)), base, seen_point, &_cur_loc));
20227 set_yylval_node(NEW_IMAGINARY(
strdup(tok(p)), base, seen_point, numeric_type, &_cur_loc));
20228 (void)numeric_type;
20231 rb_bug(
"unexpected token: %d",
type);
20233 SET_LEX_STATE(EXPR_END);
20237#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
20239parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
20241 if (has_delayed_token(p))
20242 dispatch_delayed_token(p, tSTRING_CONTENT);
20245 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
20246 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
20248 if (p->keep_tokens) {
20249 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pend - p->lex.ptok, p->enc);
20250 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
20251 parser_append_tokens(p, str, tHEREDOC_END, line);
20255 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
20260static enum yytokentype
20263 int c, func, indent = 0;
20264 const char *eos, *ptr, *ptr_end;
20274 eos = PARSER_STRING_PTR(here->lastline) + here->offset;
20275 len = here->length;
20276 indent = (func = here->func) & STR_FUNC_INDENT;
20278 if ((c = nextc(p)) == -1) {
20281 if (!has_delayed_token(p)) {
20282 dispatch_scan_event(p, tSTRING_CONTENT);
20284 else if (p->delayed.end_line + 1 == p->ruby_sourceline) {
20285 if ((
len = p->lex.pcur - p->lex.ptok) > 0) {
20286 if (!(func & STR_FUNC_REGEXP)) {
20290 rb_is_usascii_enc(p->enc) &&
20291 enc != rb_utf8_encoding()) {
20292 enc = rb_ascii8bit_encoding();
20295 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20297 dispatch_delayed_token(p, tSTRING_CONTENT);
20300 dispatch_delayed_token(p, tSTRING_CONTENT);
20301 dispatch_scan_event(p, tSTRING_CONTENT);
20305 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20306 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
20309 SET_LEX_STATE(EXPR_END);
20310 return tSTRING_END;
20316 else if (p->heredoc_line_indent == -1) {
20321 p->heredoc_line_indent = 0;
20323 else if (whole_match_p(p, eos,
len, indent)) {
20324 dispatch_heredoc_end(p);
20326 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20328 SET_LEX_STATE(EXPR_END);
20329 return tSTRING_END;
20332 if (!(func & STR_FUNC_EXPAND)) {
20334 ptr = PARSER_STRING_PTR(p->lex.lastline);
20335 ptr_end = p->lex.pend;
20336 if (ptr_end > ptr) {
20337 switch (ptr_end[-1]) {
20339 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
20348 if (p->heredoc_indent > 0) {
20350 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
20352 p->heredoc_line_indent = 0;
20356 parser_str_cat(str, ptr, ptr_end - ptr);
20358 str = rb_parser_encoding_string_new(p, ptr, ptr_end - ptr, enc);
20359 if (!lex_eol_ptr_p(p, ptr_end)) parser_str_cat_cstr(str,
"\n");
20361 if (p->heredoc_indent > 0) {
20364 if (nextc(p) == -1) {
20366 rb_parser_string_free(p, str);
20371 }
while (!whole_match_p(p, eos,
len, indent));
20377 enum yytokentype t = parser_peek_variable_name(p);
20378 if (p->heredoc_line_indent != -1) {
20379 if (p->heredoc_indent > p->heredoc_line_indent) {
20380 p->heredoc_indent = p->heredoc_line_indent;
20382 p->heredoc_line_indent = -1;
20391 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
20392 if (p->eofp)
goto error;
20396 if (c ==
'\\') p->heredoc_line_indent = -1;
20398 str = STR_NEW3(tok(p), toklen(p), enc, func);
20400 set_yylval_str(str);
20402 if (bol) nd_set_fl_newline(yylval.node);
20404 flush_string_content(p, enc, 0);
20405 return tSTRING_CONTENT;
20407 tokadd(p, nextc(p));
20408 if (p->heredoc_indent > 0) {
20413 if ((c = nextc(p)) == -1)
goto error;
20414 }
while (!whole_match_p(p, eos,
len, indent));
20415 str = STR_NEW3(tok(p), toklen(p), enc, func);
20417 dispatch_heredoc_end(p);
20418 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20420 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
20423 s_value = p->s_value;
20425 set_yylval_str(str);
20427 set_parser_s_value(s_value);
20431 if (bol) nd_set_fl_newline(yylval.node);
20433 return tSTRING_CONTENT;
20443 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after '%c' operator", WARN_I(c));
20446 rb_warning1(
"ambiguous first argument; put parentheses or a space even after '%c' operator", WARN_I(c));
20459 switch (id_type(
id)) {
20463# define ERR(mesg) (yyerror0(mesg), Qtrue)
20465# define ERR(mesg) WARN_S(mesg)
20468 return ERR(
"formal argument cannot be a constant");
20470 return ERR(
"formal argument cannot be an instance variable");
20472 return ERR(
"formal argument cannot be a global variable");
20474 return ERR(
"formal argument cannot be a class variable");
20476 return ERR(
"formal argument must be local variable");
20479 shadowing_lvar(p,
id);
20487 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
20496 if (
len > 5 && name[nlen =
len - 5] ==
'-') {
20497 if (rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
20500 if (
len > 4 && name[nlen =
len - 4] ==
'-') {
20501 if (rb_memcicmp(name + nlen + 1,
"dos", 3) == 0)
20503 if (rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
20504 !(
len == 8 && rb_memcicmp(name,
"utf8-mac",
len) == 0))
20512parser_set_encode(
struct parser_params *p,
const char *name)
20518 const char *wrong = 0;
20520 case 'e':
case 'E': wrong =
"external";
break;
20521 case 'i':
case 'I': wrong =
"internal";
break;
20522 case 'f':
case 'F': wrong =
"filesystem";
break;
20523 case 'l':
case 'L': wrong =
"locale";
break;
20525 if (wrong &&
STRCASECMP(name, wrong) == 0)
goto unknown;
20526 idx = rb_enc_find_index(name);
20529 excargs[1] = rb_sprintf(
"unknown encoding name: %s", name);
20531 excargs[0] = rb_eArgError;
20532 excargs[2] = rb_make_backtrace();
20533 rb_ary_unshift(excargs[2], rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
20534 VALUE exc = rb_make_exception(3, excargs);
20535 ruby_show_error_line(p, exc, &(
YYLTYPE)RUBY_INIT_YYLLOC(), p->ruby_sourceline, p->lex.lastline);
20537 rb_ast_free(p->ast);
20542 enc = rb_enc_from_index(idx);
20543 if (!rb_enc_asciicompat(enc)) {
20544 excargs[1] = rb_sprintf(
"%s is not ASCII compatible", rb_enc_name(enc));
20549 if (p->debug_lines) {
20551 for (i = 0; i < p->debug_lines->len; i++) {
20552 rb_parser_enc_associate(p, p->debug_lines->data[i], enc);
20561 if (p->token_seen)
return false;
20562 return (p->line_count == (p->has_shebang ? 2 : 1));
20565typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
20566typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
20568static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
20571magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
20573 if (!comment_at_top(p)) {
20576 parser_set_encode(p, val);
20580parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
20583 case 't':
case 'T':
20588 case 'f':
case 'F':
20594 return parser_invalid_pragma_value(p, name, val);
20598parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
20600 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
20605parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
20607 int b = parser_get_bool(p, name, val);
20608 if (b >= 0) p->token_info_enabled = b;
20612parser_set_frozen_string_literal(
struct parser_params *p,
const char *name,
const char *val)
20616 if (p->token_seen) {
20617 rb_warning1(
"'%s' is ignored after any tokens", WARN_S(name));
20621 b = parser_get_bool(p, name, val);
20624 p->frozen_string_literal = b;
20628parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
20630 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
20631 if (*s ==
' ' || *s ==
'\t')
continue;
20632 if (*s ==
'#')
break;
20633 rb_warning1(
"'%s' is ignored unless in comment-only line", WARN_S(name));
20638 case 'n':
case 'N':
20640 p->ctxt.shareable_constant_value = rb_parser_shareable_none;
20644 case 'l':
case 'L':
20646 p->ctxt.shareable_constant_value = rb_parser_shareable_literal;
20650 case 'e':
case 'E':
20651 if (
STRCASECMP(val,
"experimental_copy") == 0) {
20652 p->ctxt.shareable_constant_value = rb_parser_shareable_copy;
20655 if (
STRCASECMP(val,
"experimental_everything") == 0) {
20656 p->ctxt.shareable_constant_value = rb_parser_shareable_everything;
20661 parser_invalid_pragma_value(p, name, val);
20664# if WARN_PAST_SCOPE
20666parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
20668 int b = parser_get_bool(p, name, val);
20669 if (b >= 0) p->past_scope_enabled = b;
20675 rb_magic_comment_setter_t func;
20676 rb_magic_comment_length_t length;
20680 {
"coding", magic_comment_encoding, parser_encode_length},
20681 {
"encoding", magic_comment_encoding, parser_encode_length},
20682 {
"frozen_string_literal", parser_set_frozen_string_literal},
20683 {
"shareable_constant_value", parser_set_shareable_constant_value},
20684 {
"warn_indent", parser_set_token_info},
20685# if WARN_PAST_SCOPE
20686 {
"warn_past_scope", parser_set_past_scope},
20691magic_comment_marker(
const char *str,
long len)
20698 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
20699 return str + i + 1;
20704 if (i + 1 >=
len)
return 0;
20705 if (str[i+1] !=
'-') {
20708 else if (str[i-1] !=
'-') {
20712 return str + i + 2;
20727 VALUE name = 0, val = 0;
20728 const char *beg, *end, *vbeg, *vend;
20729#define str_copy(_s, _p, _n) ((_s) \
20730 ? (void)(rb_str_resize((_s), (_n)), \
20731 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
20732 : (void)((_s) = STR_NEW((_p), (_n))))
20734 if (
len <= 7)
return FALSE;
20735 if (!!(beg = magic_comment_marker(str,
len))) {
20736 if (!(end = magic_comment_marker(beg, str +
len - beg)))
20740 len = end - beg - 3;
20750 for (;
len > 0 && *str; str++, --
len) {
20752 case '\'':
case '"':
case ':':
case ';':
20757 for (beg = str;
len > 0; str++, --
len) {
20759 case '\'':
case '"':
case ':':
case ';':
20770 if (!indicator)
return FALSE;
20774 do str++;
while (--
len > 0 &&
ISSPACE(*str));
20776 const char *tok_beg = str;
20778 for (vbeg = ++str; --
len > 0 && *str !=
'"'; str++) {
20779 if (*str ==
'\\') {
20791 for (vbeg = str;
len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --
len, str++);
20794 const char *tok_end = str;
20796 while (
len > 0 && (*str ==
';' ||
ISSPACE(*str))) --
len, str++;
20800 if (
len)
return FALSE;
20804 str_copy(name, beg, n);
20805 s = RSTRING_PTR(name);
20806 for (i = 0; i < n; ++i) {
20807 if (s[i] ==
'-') s[i] =
'_';
20810 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
20813 n = (*mc->length)(p, vbeg, n);
20815 str_copy(val, vbeg, n);
20816 p->lex.ptok = tok_beg;
20817 p->lex.pcur = tok_end;
20818 (*mc->func)(p, mc->name, RSTRING_PTR(val));
20821 }
while (++mc < magic_comments + numberof(magic_comments));
20823 str_copy(val, vbeg, vend - vbeg);
20832set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
20835 const char *beg = str;
20839 if (send - str <= 6)
return;
20841 case 'C':
case 'c': str += 6;
continue;
20842 case 'O':
case 'o': str += 5;
continue;
20843 case 'D':
case 'd': str += 4;
continue;
20844 case 'I':
case 'i': str += 3;
continue;
20845 case 'N':
case 'n': str += 2;
continue;
20846 case 'G':
case 'g': str += 1;
continue;
20847 case '=':
case ':':
20861 if (++str >= send)
return;
20864 if (*str !=
'=' && *str !=
':')
return;
20869 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
20870 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
20873 parser_set_encode(p, RSTRING_PTR(s));
20874 rb_str_resize(s, 0);
20880 int c = nextc0(p, FALSE);
20884 if (peek(p,
'!')) p->has_shebang = 1;
20887 if (!lex_eol_n_p(p, 2) &&
20888 (
unsigned char)p->lex.pcur[0] == 0xbb &&
20889 (
unsigned char)p->lex.pcur[1] == 0xbf) {
20890 p->enc = rb_utf8_encoding();
20893 if (p->debug_lines) {
20894 rb_parser_string_set_encoding(p->lex.lastline, p->enc);
20897 p->lex.pbeg = p->lex.pcur;
20906 p->enc = rb_parser_str_get_encoding(p->lex.lastline);
20910#define ambiguous_operator(tok, op, syn) ( \
20911 rb_warning0("'"op"' after local variable or literal is interpreted as binary operator"), \
20912 rb_warning0("even though it seems like "syn""))
20914#define ambiguous_operator(tok, op, syn) \
20915 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
20917#define warn_balanced(tok, op, syn) ((void) \
20918 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
20919 space_seen && !ISSPACE(c) && \
20920 (ambiguous_operator(tok, op, syn), 0)), \
20921 (enum yytokentype)(tok))
20923static enum yytokentype
20926 yyerror0(
"numeric literal without digits");
20927 if (peek(p,
'_')) nextc(p);
20929 return set_number_literal(p, tINTEGER, 0, 10, 0);
20932static enum yytokentype
20935 int is_float, seen_point, seen_e, nondigit;
20938 is_float = seen_point = seen_e = nondigit = 0;
20939 SET_LEX_STATE(EXPR_END);
20941 if (c ==
'-' || c ==
'+') {
20946 int start = toklen(p);
20948 if (c ==
'x' || c ==
'X') {
20954 if (nondigit)
break;
20961 }
while ((c = nextc(p)) != -1);
20965 if (toklen(p) == start) {
20966 return no_digits(p);
20968 else if (nondigit)
goto trailing_uc;
20969 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
20970 return set_number_literal(p, tINTEGER, suffix, 16, 0);
20972 if (c ==
'b' || c ==
'B') {
20975 if (c ==
'0' || c ==
'1') {
20978 if (nondigit)
break;
20982 if (c !=
'0' && c !=
'1')
break;
20985 }
while ((c = nextc(p)) != -1);
20989 if (toklen(p) == start) {
20990 return no_digits(p);
20992 else if (nondigit)
goto trailing_uc;
20993 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
20994 return set_number_literal(p, tINTEGER, suffix, 2, 0);
20996 if (c ==
'd' || c ==
'D') {
21002 if (nondigit)
break;
21009 }
while ((c = nextc(p)) != -1);
21013 if (toklen(p) == start) {
21014 return no_digits(p);
21016 else if (nondigit)
goto trailing_uc;
21017 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21018 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21024 if (c ==
'o' || c ==
'O') {
21027 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
21029 return no_digits(p);
21032 if (c >=
'0' && c <=
'7') {
21037 if (nondigit)
break;
21041 if (c <
'0' || c >
'9')
break;
21042 if (c >
'7')
goto invalid_octal;
21045 }
while ((c = nextc(p)) != -1);
21046 if (toklen(p) > start) {
21049 if (nondigit)
goto trailing_uc;
21050 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21051 return set_number_literal(p, tINTEGER, suffix, 8, 0);
21058 if (c >
'7' && c <=
'9') {
21060 yyerror0(
"Invalid octal digit");
21062 else if (c ==
'.' || c ==
'e' || c ==
'E') {
21068 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21069 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21075 case '0':
case '1':
case '2':
case '3':
case '4':
21076 case '5':
case '6':
case '7':
case '8':
case '9':
21082 if (nondigit)
goto trailing_uc;
21083 if (seen_point || seen_e) {
21088 if (c0 == -1 || !
ISDIGIT(c0)) {
21094 seen_point = toklen(p);
21113 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
21119 tokadd(p, nondigit);
21123 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
21127 if (nondigit)
goto decode_num;
21141 literal_flush(p, p->lex.pcur - 1);
21142 YYLTYPE loc = RUBY_INIT_YYLLOC();
21143 compile_error(p,
"trailing '%c' in number", nondigit);
21144 parser_show_error_line(p, &loc);
21148 enum yytokentype
type = tFLOAT;
21150 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
21151 if (suffix & NUM_SUFFIX_R) {
21156 if (
errno == ERANGE) {
21157 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
21161 return set_number_literal(p,
type, suffix, 0, seen_point);
21163 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21164 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21167static enum yytokentype
21173 const char *start = p->lex.pcur;
21176 SET_LEX_STATE(EXPR_VALUE);
21181 compile_error(p,
"incomplete character syntax");
21184 if (rb_enc_isspace(c, p->enc)) {
21186 int c2 = escaped_control_code(c);
21188 WARN_SPACE_CHAR(c2,
"?");
21193 SET_LEX_STATE(EXPR_VALUE);
21198 int w = parser_precise_mbclen(p, start);
21199 if (is_identchar(p, start, p->lex.pend, p->enc) &&
21200 !(lex_eol_ptr_n_p(p, start, w) || !is_identchar(p, start + w, p->lex.pend, p->enc))) {
21202 const char *ptr = start;
21204 int n = parser_precise_mbclen(p, ptr);
21205 if (n < 0)
return -1;
21207 }
while (!lex_eol_ptr_p(p, ptr) && is_identchar(p, ptr, p->lex.pend, p->enc));
21208 rb_warn2(
"'?' just followed by '%.*s' is interpreted as" \
21209 " a conditional operator, put a space after '?'",
21210 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
21214 else if (c ==
'\\') {
21215 if (peek(p,
'u')) {
21217 enc = rb_utf8_encoding();
21218 tokadd_utf8(p, &enc, -1, 0, 0);
21220 else if (!
ISASCII(c = peekc(p)) && c != -1) {
21222 if (tokadd_mbchar(p, c) == -1)
return 0;
21230 if (tokadd_mbchar(p, c) == -1)
return 0;
21233 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
21234 set_yylval_str(lit);
21235 SET_LEX_STATE(EXPR_END);
21239static enum yytokentype
21240parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
21243 const char *ptok = p->lex.pcur;
21251 if (c == -1)
goto unterminated;
21254 if (!
ISASCII(c))
goto unknown;
21259 if (rb_enc_isalnum(term, p->enc) || !parser_isascii(p)) {
21262 c = parser_precise_mbclen(p, p->lex.pcur);
21263 if (c < 0)
return 0;
21265 yyerror0(
"unknown type of %string");
21271 compile_error(p,
"unterminated quoted string meets end of file");
21275 if (term ==
'(') term =
')';
21276 else if (term ==
'[') term =
']';
21277 else if (term ==
'{') term =
'}';
21278 else if (term ==
'<') term =
'>';
21281 p->lex.ptok = ptok-1;
21284 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
21285 return tSTRING_BEG;
21288 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
21289 return tSTRING_BEG;
21292 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21296 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21297 return tQWORDS_BEG;
21300 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21301 return tSYMBOLS_BEG;
21304 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21305 return tQSYMBOLS_BEG;
21308 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
21309 return tXSTRING_BEG;
21312 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
21313 return tREGEXP_BEG;
21316 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
21317 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
21321 yyerror0(
"unknown type of %string");
21325 if ((c = nextc(p)) ==
'=') {
21326 set_yylval_id(
'%');
21327 SET_LEX_STATE(EXPR_BEG);
21330 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
21333 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21335 return warn_balanced(
'%',
"%%",
"string literal");
21342 if (tokadd_mbchar(p, c) == -1)
return -1;
21344 }
while (parser_is_identchar(p));
21352 ID ident = TOK_INTERN();
21354 set_yylval_name(ident);
21364 unsigned long n = ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &
len, &overflow);
21365 const unsigned long nth_ref_max =
21366 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
21370 if (overflow || n > nth_ref_max) {
21372 rb_warn1(
"'%s' is too big for a number variable, always nil", WARN_S(tok(p)));
21380static enum yytokentype
21381parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
21383 const char *ptr = p->lex.pcur;
21386 SET_LEX_STATE(EXPR_END);
21387 p->lex.ptok = ptr - 1;
21393 if (parser_is_identchar(p)) {
21425 if (parser_is_identchar(p)) {
21426 if (tokadd_mbchar(p, c) == -1)
return 0;
21441 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
21446 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
21449 case '1':
case '2':
case '3':
21450 case '4':
case '5':
case '6':
21451 case '7':
case '8':
case '9':
21456 }
while (c != -1 &&
ISDIGIT(c));
21458 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
21460 c = parse_numvar(p);
21461 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
21465 if (!parser_is_identchar(p)) {
21466 YYLTYPE loc = RUBY_INIT_YYLLOC();
21468 compile_error(p,
"'$' without identifiers is not allowed as a global variable name");
21472 compile_error(p,
"'$%c' is not allowed as a global variable name", c);
21474 parser_show_error_line(p, &loc);
21475 set_yylval_noname();
21483 if (tokadd_ident(p, c))
return 0;
21484 SET_LEX_STATE(EXPR_END);
21485 if (VALID_SYMNAME_P(tok(p), toklen(p), p->enc, ID_GLOBAL)) {
21489 compile_error(p,
"'%.*s' is not allowed as a global variable name", toklen(p), tok(p));
21490 set_yylval_noname();
21498 if (n < 0)
return false;
21500 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
21503 if (p->max_numparam == ORDINAL_PARAM) {
21504 compile_error(p,
"ordinary parameter is defined");
21507 struct vtable *args = p->lvtbl->args;
21508 if (p->max_numparam < n) {
21509 p->max_numparam = n;
21511 while (n > args->pos) {
21512 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
21517static enum yytokentype
21518parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
21520 const char *ptr = p->lex.pcur;
21521 enum yytokentype result = tIVAR;
21522 register int c = nextc(p);
21525 p->lex.ptok = ptr - 1;
21533 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
21534 if (c == -1 || !parser_is_identchar(p)) {
21536 RUBY_SET_YYLLOC(loc);
21537 if (result == tIVAR) {
21538 compile_error(p,
"'@' without identifiers is not allowed as an instance variable name");
21541 compile_error(p,
"'@@' without identifiers is not allowed as a class variable name");
21543 parser_show_error_line(p, &loc);
21544 set_yylval_noname();
21545 SET_LEX_STATE(EXPR_END);
21550 RUBY_SET_YYLLOC(loc);
21551 if (result == tIVAR) {
21552 compile_error(p,
"'@%c' is not allowed as an instance variable name", c);
21555 compile_error(p,
"'@@%c' is not allowed as a class variable name", c);
21557 parser_show_error_line(p, &loc);
21558 set_yylval_noname();
21559 SET_LEX_STATE(EXPR_END);
21563 if (tokadd_ident(p, c))
return 0;
21568static enum yytokentype
21571 enum yytokentype result;
21572 bool is_ascii =
true;
21573 const enum lex_state_e last_state = p->lex.state;
21575 int enforce_keyword_end = 0;
21578 if (!
ISASCII(c)) is_ascii =
false;
21579 if (tokadd_mbchar(p, c) == -1)
return 0;
21581 }
while (parser_is_identchar(p));
21582 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
21586 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
21587 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
21588 result = tIDENTIFIER;
21592 result = tCONSTANT;
21597 if (IS_LABEL_POSSIBLE()) {
21598 if (IS_LABEL_SUFFIX(0)) {
21599 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
21607 if (peek_end_expect_token_locations(p)) {
21609 int lineno, column;
21610 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
21612 end_pos = peek_end_expect_token_locations(p)->pos;
21613 lineno = end_pos->lineno;
21614 column = end_pos->column;
21617 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
21618 p->ruby_sourceline, beg_pos, lineno, column);
21621 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
21624 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
21625 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
21626 enforce_keyword_end = 1;
21632 if (is_ascii && (!IS_lex_state(EXPR_DOT) || enforce_keyword_end)) {
21636 kw = rb_reserved_word(tok(p), toklen(p));
21638 enum lex_state_e state = p->lex.state;
21639 if (IS_lex_state_for(state, EXPR_FNAME)) {
21640 SET_LEX_STATE(EXPR_ENDFN);
21641 set_yylval_name(rb_intern2(tok(p), toklen(p)));
21644 SET_LEX_STATE(kw->state);
21645 if (IS_lex_state(EXPR_BEG)) {
21646 p->command_start = TRUE;
21648 if (kw->id[0] == keyword_do) {
21649 if (lambda_beginning_p()) {
21650 p->lex.lpar_beg = -1;
21651 return keyword_do_LAMBDA;
21653 if (COND_P())
return keyword_do_cond;
21654 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
21655 return keyword_do_block;
21658 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
21661 if (kw->id[0] != kw->id[1])
21662 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
21668 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
21670 SET_LEX_STATE(EXPR_CMDARG);
21673 SET_LEX_STATE(EXPR_ARG);
21676 else if (p->lex.state == EXPR_FNAME) {
21677 SET_LEX_STATE(EXPR_ENDFN);
21680 SET_LEX_STATE(EXPR_END);
21683 ident = tokenize_ident(p);
21684 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
21685 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
21686 (result == tIDENTIFIER) &&
21687 (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
21688 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
21699 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
21703static enum yytokentype
21707 int space_seen = 0;
21710 enum lex_state_e last_state;
21711 int fallthru = FALSE;
21712 int token_seen = p->token_seen;
21714 if (p->lex.strterm) {
21715 if (strterm_is_heredoc(p->lex.strterm)) {
21717 return here_document(p, &p->lex.strterm->u.heredoc);
21721 return parse_string(p, &p->lex.strterm->u.literal);
21724 cmd_state = p->command_start;
21725 p->command_start = FALSE;
21726 p->token_seen = TRUE;
21731 last_state = p->lex.state;
21732 switch (c = nextc(p)) {
21739 if (p->end_expect_token_locations) {
21740 pop_end_expect_token_locations(p);
21741 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
21746 RUBY_SET_YYLLOC(*p->yylloc);
21747 return END_OF_INPUT;
21753 case ' ':
case '\t':
case '\f':
21756 while ((c = nextc(p))) {
21761 case ' ':
case '\t':
case '\f':
21770 dispatch_scan_event(p, tSP);
21777 p->token_seen = token_seen;
21778 const char *
const pcur = p->lex.pcur, *
const ptok = p->lex.ptok;
21780 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
21781 if (comment_at_top(p)) {
21782 set_file_encoding(p, p->lex.pcur, p->lex.pend);
21785 p->lex.pcur = pcur, p->lex.ptok = ptok;
21787 dispatch_scan_event(p, tCOMMENT);
21791 p->token_seen = token_seen;
21793 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
21794 !IS_lex_state(EXPR_LABELED));
21795 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
21797 dispatch_scan_event(p, tIGNORED_NL);
21800 if (!c && p->ctxt.in_kwarg) {
21801 goto normal_newline;
21806 switch (c = nextc(p)) {
21807 case ' ':
case '\t':
case '\f':
case '\r':
21814 dispatch_scan_event(p, tSP);
21820 dispatch_delayed_token(p, tIGNORED_NL);
21821 if (peek(p,
'.') == (c ==
'&')) {
21823 dispatch_scan_event(p, tSP);
21828 p->ruby_sourceline--;
21829 p->lex.nextline = p->lex.lastline;
21830 set_lastline(p, prevline);
21832 if (c == -1 && space_seen) {
21833 dispatch_scan_event(p, tSP);
21838 RUBY_SET_YYLLOC(*p->yylloc);
21840 goto normal_newline;
21844 p->command_start = TRUE;
21845 SET_LEX_STATE(EXPR_BEG);
21849 if ((c = nextc(p)) ==
'*') {
21850 if ((c = nextc(p)) ==
'=') {
21851 set_yylval_id(idPow);
21852 SET_LEX_STATE(EXPR_BEG);
21856 if (IS_SPCARG(c)) {
21857 rb_warning0(
"'**' interpreted as argument prefix");
21860 else if (IS_BEG()) {
21864 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
21869 set_yylval_id(
'*');
21870 SET_LEX_STATE(EXPR_BEG);
21874 if (IS_SPCARG(c)) {
21875 rb_warning0(
"'*' interpreted as argument prefix");
21878 else if (IS_BEG()) {
21882 c = warn_balanced(
'*',
"*",
"argument prefix");
21885 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21890 if (IS_AFTER_OPERATOR()) {
21891 SET_LEX_STATE(EXPR_ARG);
21897 SET_LEX_STATE(EXPR_BEG);
21911 if (word_match_p(p,
"begin", 5)) {
21912 int first_p = TRUE;
21915 dispatch_scan_event(p, tEMBDOC_BEG);
21919 dispatch_scan_event(p, tEMBDOC);
21924 compile_error(p,
"embedded document meets end of file");
21925 return END_OF_INPUT;
21927 if (c ==
'=' && word_match_p(p,
"end", 3)) {
21933 dispatch_scan_event(p, tEMBDOC_END);
21938 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21939 if ((c = nextc(p)) ==
'=') {
21940 if ((c = nextc(p)) ==
'=') {
21949 else if (c ==
'>') {
21958 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
21960 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
21961 enum yytokentype token = heredoc_identifier(p);
21962 if (token)
return token < 0 ? 0 : token;
21964 if (IS_AFTER_OPERATOR()) {
21965 SET_LEX_STATE(EXPR_ARG);
21968 if (IS_lex_state(EXPR_CLASS))
21969 p->command_start = TRUE;
21970 SET_LEX_STATE(EXPR_BEG);
21973 if ((c = nextc(p)) ==
'>') {
21980 if ((c = nextc(p)) ==
'=') {
21981 set_yylval_id(idLTLT);
21982 SET_LEX_STATE(EXPR_BEG);
21986 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
21992 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21993 if ((c = nextc(p)) ==
'=') {
21997 if ((c = nextc(p)) ==
'=') {
21998 set_yylval_id(idGTGT);
21999 SET_LEX_STATE(EXPR_BEG);
22009 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22010 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
22011 p->lex.ptok = p->lex.pcur-1;
22012 return tSTRING_BEG;
22015 if (IS_lex_state(EXPR_FNAME)) {
22016 SET_LEX_STATE(EXPR_ENDFN);
22019 if (IS_lex_state(EXPR_DOT)) {
22021 SET_LEX_STATE(EXPR_CMDARG);
22023 SET_LEX_STATE(EXPR_ARG);
22026 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
22027 return tXSTRING_BEG;
22030 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22031 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
22032 p->lex.ptok = p->lex.pcur-1;
22033 return tSTRING_BEG;
22036 return parse_qmark(p, space_seen);
22039 if ((c = nextc(p)) ==
'&') {
22040 SET_LEX_STATE(EXPR_BEG);
22041 if ((c = nextc(p)) ==
'=') {
22042 set_yylval_id(idANDOP);
22043 SET_LEX_STATE(EXPR_BEG);
22049 else if (c ==
'=') {
22050 set_yylval_id(
'&');
22051 SET_LEX_STATE(EXPR_BEG);
22054 else if (c ==
'.') {
22055 set_yylval_id(idANDDOT);
22056 SET_LEX_STATE(EXPR_DOT);
22060 if (IS_SPCARG(c)) {
22062 (c = peekc_n(p, 1)) == -1 ||
22063 !(c ==
'\'' || c ==
'"' ||
22064 is_identchar(p, (p->lex.pcur+1), p->lex.pend, p->enc))) {
22065 rb_warning0(
"'&' interpreted as argument prefix");
22069 else if (IS_BEG()) {
22073 c = warn_balanced(
'&',
"&",
"argument prefix");
22075 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22079 if ((c = nextc(p)) ==
'|') {
22080 SET_LEX_STATE(EXPR_BEG);
22081 if ((c = nextc(p)) ==
'=') {
22082 set_yylval_id(idOROP);
22083 SET_LEX_STATE(EXPR_BEG);
22087 if (IS_lex_state_for(last_state, EXPR_BEG)) {
22095 set_yylval_id(
'|');
22096 SET_LEX_STATE(EXPR_BEG);
22099 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
22105 if (IS_AFTER_OPERATOR()) {
22106 SET_LEX_STATE(EXPR_ARG);
22114 set_yylval_id(
'+');
22115 SET_LEX_STATE(EXPR_BEG);
22118 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
22119 SET_LEX_STATE(EXPR_BEG);
22122 return parse_numeric(p,
'+');
22126 SET_LEX_STATE(EXPR_BEG);
22128 return warn_balanced(
'+',
"+",
"unary operator");
22132 if (IS_AFTER_OPERATOR()) {
22133 SET_LEX_STATE(EXPR_ARG);
22141 set_yylval_id(
'-');
22142 SET_LEX_STATE(EXPR_BEG);
22146 SET_LEX_STATE(EXPR_ENDFN);
22147 yylval.num = p->lex.lpar_beg;
22148 p->lex.lpar_beg = p->lex.paren_nest;
22151 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
22152 SET_LEX_STATE(EXPR_BEG);
22155 return tUMINUS_NUM;
22159 SET_LEX_STATE(EXPR_BEG);
22161 return warn_balanced(
'-',
"-",
"unary operator");
22164 int is_beg = IS_BEG();
22165 SET_LEX_STATE(EXPR_BEG);
22166 if ((c = nextc(p)) ==
'.') {
22167 if ((c = nextc(p)) ==
'.') {
22168 if (p->ctxt.in_argdef || IS_LABEL_POSSIBLE()) {
22169 SET_LEX_STATE(EXPR_ENDARG);
22172 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
22173 rb_warn0(
"... at EOL, should be parenthesized?");
22175 return is_beg ? tBDOT3 : tDOT3;
22178 return is_beg ? tBDOT2 : tDOT2;
22182 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
22183 parse_numeric(p,
'.');
22185 yyerror0(
"unexpected fraction part after numeric literal");
22188 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
22190 SET_LEX_STATE(EXPR_END);
22191 p->lex.ptok = p->lex.pcur;
22194 set_yylval_id(
'.');
22195 SET_LEX_STATE(EXPR_DOT);
22199 case '0':
case '1':
case '2':
case '3':
case '4':
22200 case '5':
case '6':
case '7':
case '8':
case '9':
22201 return parse_numeric(p, c);
22206 SET_LEX_STATE(EXPR_ENDFN);
22207 p->lex.paren_nest--;
22213 SET_LEX_STATE(EXPR_END);
22214 p->lex.paren_nest--;
22219 if (!p->lex.brace_nest--)
return tSTRING_DEND;
22222 SET_LEX_STATE(EXPR_END);
22223 p->lex.paren_nest--;
22229 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
22230 SET_LEX_STATE(EXPR_BEG);
22233 set_yylval_id(idCOLON2);
22234 SET_LEX_STATE(EXPR_DOT);
22237 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
22239 c = warn_balanced(
':',
":",
"symbol literal");
22240 SET_LEX_STATE(EXPR_BEG);
22245 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
22248 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
22254 SET_LEX_STATE(EXPR_FNAME);
22259 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22260 return tREGEXP_BEG;
22262 if ((c = nextc(p)) ==
'=') {
22263 set_yylval_id(
'/');
22264 SET_LEX_STATE(EXPR_BEG);
22268 if (IS_SPCARG(c)) {
22269 arg_ambiguous(p,
'/');
22270 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22271 return tREGEXP_BEG;
22273 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22274 return warn_balanced(
'/',
"/",
"regexp literal");
22277 if ((c = nextc(p)) ==
'=') {
22278 set_yylval_id(
'^');
22279 SET_LEX_STATE(EXPR_BEG);
22282 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22287 SET_LEX_STATE(EXPR_BEG);
22288 p->command_start = TRUE;
22292 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22296 if (IS_AFTER_OPERATOR()) {
22297 if ((c = nextc(p)) !=
'@') {
22300 SET_LEX_STATE(EXPR_ARG);
22303 SET_LEX_STATE(EXPR_BEG);
22311 else if (!space_seen) {
22314 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
22317 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
22318 rb_warning0(
"parentheses after method name is interpreted as "
22319 "an argument list, not a decomposed argument");
22321 p->lex.paren_nest++;
22324 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22328 p->lex.paren_nest++;
22329 if (IS_AFTER_OPERATOR()) {
22330 if ((c = nextc(p)) ==
']') {
22331 p->lex.paren_nest--;
22332 SET_LEX_STATE(EXPR_ARG);
22333 if ((c = nextc(p)) ==
'=') {
22340 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
22343 else if (IS_BEG()) {
22346 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
22349 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22355 ++p->lex.brace_nest;
22356 if (lambda_beginning_p())
22358 else if (IS_lex_state(EXPR_LABELED))
22360 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
22362 else if (IS_lex_state(EXPR_ENDARG))
22366 if (c != tLBRACE) {
22367 p->command_start = TRUE;
22368 SET_LEX_STATE(EXPR_BEG);
22371 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22373 ++p->lex.paren_nest;
22382 dispatch_scan_event(p, tSP);
22385 if (c ==
' ')
return tSP;
22391 return parse_percent(p, space_seen, last_state);
22394 return parse_gvar(p, last_state);
22397 return parse_atmark(p, last_state);
22400 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
22401 p->ruby__end__seen = 1;
22405 dispatch_scan_event(p, k__END__);
22407 return END_OF_INPUT;
22413 if (!parser_is_identchar(p)) {
22414 compile_error(p,
"Invalid char '\\x%02X' in expression", c);
22423 return parse_ident(p, c, cmd_state);
22426static enum yytokentype
22429 enum yytokentype t;
22433 p->yylloc = yylloc;
22435 t = parser_yylex(p);
22437 if (has_delayed_token(p))
22438 dispatch_delayed_token(p, t);
22439 else if (t != END_OF_INPUT)
22440 dispatch_scan_event(p, t);
22445#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
22448node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment)
22450 NODE *n = rb_ast_newnode(p->ast,
type, size, alignment);
22452 rb_node_init(n,
type);
22460 nd_set_line(nd, loc->beg_pos.lineno);
22467 NODE *n = node_new_internal(p,
type, size, alignment);
22469 nd_set_loc(n, loc);
22470 nd_set_node_id(n, parser_get_node_id(p));
22474#define NODE_NEWNODE(node_type, type, loc) (type *)(node_newnode(p, node_type, sizeof(type), RUBY_ALIGNOF(type), loc))
22480 nd_tbl = local_tbl(p);
22482 n->nd_tbl = nd_tbl;
22483 n->nd_body = nd_body;
22484 n->nd_args = nd_args;
22493 n->nd_tbl = nd_tbl;
22494 n->nd_body = nd_body;
22495 n->nd_args = nd_args;
22504 n->nd_mid = nd_mid;
22505 n->nd_defn = nd_defn;
22514 n->nd_recv = nd_recv;
22515 n->nd_mid = nd_mid;
22516 n->nd_defn = nd_defn;
22525 n->nd_head = nd_head;
22526 n->nd_end = (
NODE *)n;
22536 n->nd_body = nd_body;
22537 n->nd_iter = nd_iter;
22538 n->for_keyword_loc = *for_keyword_loc;
22539 n->in_keyword_loc = *in_keyword_loc;
22540 n->do_keyword_loc = *do_keyword_loc;
22541 n->end_keyword_loc = *end_keyword_loc;
22550 n->nd_var = nd_var;
22567 n->nd_body = nd_body;
22576 n->nd_head = nd_head;
22577 n->nd_resq = nd_resq;
22578 n->nd_else = nd_else;
22587 n->nd_args = nd_args;
22588 n->nd_exc_var = nd_exc_var;
22589 n->nd_body = nd_body;
22590 n->nd_next = nd_next;
22599 n->nd_head = nd_head;
22600 n->nd_ensr = nd_ensr;
22609 n->nd_1st = nd_1st;
22610 n->nd_2nd = nd_2nd;
22611 n->operator_loc = *operator_loc;
22620 n->nd_1st = nd_1st;
22621 n->nd_2nd = nd_2nd;
22622 n->operator_loc = *operator_loc;
22631 n->nd_stts = nd_stts;
22632 n->keyword_loc = *keyword_loc;
22639 if (nd_head) no_blockarg(p, nd_head);
22642 n->nd_head = nd_head;
22643 n->keyword_loc = *keyword_loc;
22644 n->lparen_loc = *lparen_loc;
22645 n->rparen_loc = *rparen_loc;
22654 n->nd_cond = nd_cond;
22655 n->nd_body = nd_body;
22656 n->nd_else = nd_else;
22657 n->if_keyword_loc = *if_keyword_loc;
22658 n->then_keyword_loc = *then_keyword_loc;
22659 n->end_keyword_loc = *end_keyword_loc;
22668 n->nd_cond = nd_cond;
22669 n->nd_body = nd_body;
22670 n->nd_else = nd_else;
22671 n->keyword_loc = *keyword_loc;
22672 n->then_keyword_loc = *then_keyword_loc;
22673 n->end_keyword_loc = *end_keyword_loc;
22682 NODE *scope = NEW_SCOPE(0, nd_body, loc);
22684 n->nd_cpath = nd_cpath;
22685 n->nd_body = scope;
22686 n->nd_super = nd_super;
22687 n->class_keyword_loc = *class_keyword_loc;
22688 n->inheritance_operator_loc = *inheritance_operator_loc;
22689 n->end_keyword_loc = *end_keyword_loc;
22698 NODE *scope = NEW_SCOPE(0, nd_body, loc);
22700 n->nd_recv = nd_recv;
22701 n->nd_body = scope;
22710 NODE *scope = NEW_SCOPE(0, nd_body, loc);
22712 n->nd_cpath = nd_cpath;
22713 n->nd_body = scope;
22722 NODE *scope = NEW_SCOPE(nd_args, nd_body, loc);
22724 n->nd_body = scope;
22734 NODE *scope = NEW_SCOPE(nd_args, nd_body, loc);
22735 YYLTYPE lambda_loc = code_loc_gen(operator_loc, closing_loc);
22737 n->nd_body = scope;
22738 n->operator_loc = *operator_loc;
22739 n->opening_loc = *opening_loc;
22740 n->closing_loc = *closing_loc;
22749 n->nd_head = nd_head;
22750 n->nd_body = nd_body;
22751 n->case_keyword_loc = *case_keyword_loc;
22752 n->end_keyword_loc = *end_keyword_loc;
22762 n->nd_body = nd_body;
22763 n->case_keyword_loc = *case_keyword_loc;
22764 n->end_keyword_loc = *end_keyword_loc;
22773 n->nd_head = nd_head;
22774 n->nd_body = nd_body;
22775 n->case_keyword_loc = *case_keyword_loc;
22776 n->end_keyword_loc = *end_keyword_loc;
22785 n->nd_head = nd_head;
22786 n->nd_body = nd_body;
22787 n->nd_next = nd_next;
22788 n->keyword_loc = *keyword_loc;
22789 n->then_keyword_loc = *then_keyword_loc;
22798 n->nd_head = nd_head;
22799 n->nd_body = nd_body;
22800 n->nd_next = nd_next;
22809 n->nd_cond = nd_cond;
22810 n->nd_body = nd_body;
22811 n->nd_state = nd_state;
22812 n->keyword_loc = *keyword_loc;
22813 n->closing_loc = *closing_loc;
22822 n->nd_cond = nd_cond;
22823 n->nd_body = nd_body;
22824 n->nd_state = nd_state;
22825 n->keyword_loc = *keyword_loc;
22826 n->closing_loc = *closing_loc;
22835 n->nd_head = nd_head;
22836 n->nd_mid = nd_mid;
22845 n->nd_mid = nd_mid;
22854 n->nd_beg = nd_beg;
22855 n->nd_end = nd_end;
22856 n->operator_loc = *operator_loc;
22865 n->nd_beg = nd_beg;
22866 n->nd_end = nd_end;
22867 n->operator_loc = *operator_loc;
22910 n->nd_args = nd_args;
22911 n->keyword_loc = *keyword_loc;
22912 n->lparen_loc = *lparen_loc;
22913 n->rparen_loc = *rparen_loc;
22930 n->nd_recv = nd_recv;
22931 n->nd_value = nd_value;
22941 n->nd_recv = nd_recv;
22942 n->nd_value = nd_value;
22952 n->nd_head = nd_head;
22963 n->nd_head = nd_head;
22964 n->as.nd_alen = nd_alen;
22965 n->nd_next = nd_next;
22982 n->nd_head = nd_head;
22992 n->nd_head = nd_head;
22994 n->nd_args = nd_args;
23003 n->nd_vid = nd_vid;
23004 n->nd_value = nd_value;
23013 n->nd_vid = nd_vid;
23014 n->nd_value = nd_value;
23023 n->nd_vid = nd_vid;
23024 n->nd_value = nd_value;
23033 n->nd_vid = nd_vid;
23034 n->nd_value = nd_value;
23043 n->nd_vid = nd_vid;
23044 n->nd_value = nd_value;
23053 n->nd_recv = nd_recv;
23054 n->nd_mid = nd_mid;
23055 n->nd_index = index;
23056 n->nd_rvalue = rvalue;
23057 n->call_operator_loc = *call_operator_loc;
23058 n->opening_loc = *opening_loc;
23059 n->closing_loc = *closing_loc;
23060 n->binary_operator_loc = *binary_operator_loc;
23069 n->nd_recv = nd_recv;
23070 n->nd_value = nd_value;
23071 n->nd_vid = nd_vid;
23072 n->nd_mid = nd_mid;
23073 n->nd_aid = nd_aid;
23074 n->call_operator_loc = *call_operator_loc;
23075 n->message_loc = *message_loc;
23076 n->binary_operator_loc = *binary_operator_loc;
23085 n->nd_head = nd_head;
23086 n->nd_value = nd_value;
23095 n->nd_head = nd_head;
23096 n->nd_value = nd_value;
23105 n->nd_vid = nd_vid;
23114 n->nd_vid = nd_vid;
23123 n->nd_vid = nd_vid;
23132 n->nd_vid = nd_vid;
23141 n->nd_vid = nd_vid;
23150 n->nd_vid = nd_vid;
23159 n->nd_nth = nd_nth;
23168 n->nd_nth = nd_nth;
23195rb_node_rational_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
const YYLTYPE *loc)
23201 n->seen_point = seen_point;
23207rb_node_imaginary_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
enum rb_numeric_type numeric_type,
const YYLTYPE *loc)
23213 n->seen_point = seen_point;
23214 n->type = numeric_type;
23223 n->string = string;
23233 n->string = string;
23234 n->as.nd_alen = nd_alen;
23243 return rb_node_dstr_new0(p,
string, 1, 0, loc);
23250 n->string = string;
23259 n->string = string;
23260 n->as.nd_alen = nd_alen;
23270 n->string = rb_str_to_parser_string(p, str);
23279 n->string = string;
23280 n->as.nd_alen = nd_alen;
23290 n->nd_body = nd_body;
23291 n->opening_loc = *opening_loc;
23292 n->closing_loc = *closing_loc;
23301 n->string = string;
23302 n->options = options & RE_OPTION_MASK;
23303 n->opening_loc = *opening_loc;
23304 n->content_loc = *content_loc;
23305 n->closing_loc = *closing_loc;
23314 n->nd_recv = nd_recv;
23315 n->nd_mid = nd_mid;
23316 n->nd_args = nd_args;
23325 n->nd_recv = nd_recv;
23326 n->nd_mid = nd_mid;
23327 n->nd_args = nd_args;
23336 n->nd_mid = nd_mid;
23337 n->nd_args = nd_args;
23346 n->nd_recv = nd_recv;
23347 n->nd_mid = nd_mid;
23348 n->nd_args = nd_args;
23357 n->nd_mid = nd_mid;
23366 n->nd_body = nd_body;
23384 n->nd_pid = nd_pid;
23385 n->nd_plen = nd_plen;
23395 n->nd_body = nd_body;
23405 n->nd_body = nd_body;
23415 n->nd_1st = nd_1st;
23416 n->nd_2nd = nd_2nd;
23425 n->nd_head = nd_head;
23426 n->nd_body = nd_body;
23435 n->nd_head = nd_head;
23436 n->nd_body = nd_body;
23445 n->nd_head = nd_head;
23446 n->operator_loc = *operator_loc;
23457 n->nd_body = nd_body;
23458 n->operator_loc = *operator_loc;
23467 n->nd_1st = nd_1st;
23468 n->nd_2nd = nd_2nd;
23469 n->keyword_loc = *keyword_loc;
23478 n->nd_alias = nd_alias;
23479 n->nd_orig = nd_orig;
23480 n->keyword_loc = *keyword_loc;
23489 n->nd_undefs = rb_parser_ary_new_capa_for_node(p, 1);
23490 n->keyword_loc = NULL_LOC;
23491 rb_parser_ary_push_node(p, n->nd_undefs, nd_undef);
23508 n->nd_head = nd_head;
23517 n->nd_body = nd_body;
23518 n->keyword_loc = *keyword_loc;
23519 n->opening_loc = *opening_loc;
23520 n->closing_loc = *closing_loc;
23529 n->nd_recv = nd_recv;
23530 n->nd_mid = nd_mid;
23531 n->nd_args = nd_args;
23541 n->pre_args = pre_args;
23542 n->rest_arg = rest_arg;
23543 n->post_args = post_args;
23552 n->nd_pconst = nd_pconst;
23553 n->nd_pkwargs = nd_pkwargs;
23554 n->nd_pkwrestarg = nd_pkwrestarg;
23564 n->pre_rest_arg = pre_rest_arg;
23566 n->post_rest_arg = post_rest_arg;
23583 n->path = rb_str_to_parser_string(p, str);
23598rb_node_cdecl_new(
struct parser_params *p,
ID nd_vid,
NODE *nd_value,
NODE *nd_else,
enum rb_parser_shareability shareability,
const YYLTYPE *loc)
23601 n->nd_vid = nd_vid;
23602 n->nd_value = nd_value;
23603 n->nd_else = nd_else;
23604 n->shareability = shareability;
23610rb_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)
23613 n->nd_head = nd_head;
23614 n->nd_value = nd_value;
23615 n->nd_aid = nd_aid;
23616 n->shareability = shareability;
23633 n->nd_stts = nd_stts;
23635 n->keyword_loc = *keyword_loc;
23644 n->nd_stts = nd_stts;
23646 n->keyword_loc = *keyword_loc;
23656 n->keyword_loc = *keyword_loc;
23665 n->save.numparam_save = 0;
23666 n->save.max_numparam = 0;
23667 n->save.ctxt = p->ctxt;
23677 n->save.numparam_save = numparam_push(p);
23678 n->save.max_numparam = p->max_numparam;
23683static enum node_type
23684nodetype(
NODE *node)
23686 return (
enum node_type)nd_type(node);
23690nodeline(
NODE *node)
23692 return nd_line(node);
23697newline_node(
NODE *node)
23700 node = remove_begin(node);
23701 nd_set_fl_newline(node);
23711 nd_set_line(node, nd_line(orig));
23717 NODE *end, *h = head, *nd;
23719 if (tail == 0)
return head;
23721 if (h == 0)
return tail;
23722 switch (nd_type(h)) {
23724 h = end = NEW_BLOCK(head, &head->nd_loc);
23728 end = RNODE_BLOCK(h)->nd_end;
23732 nd = RNODE_BLOCK(end)->nd_head;
23733 switch (nd_type(nd)) {
23739 rb_warning0L(nd_line(tail),
"statement not reached");
23746 if (!nd_type_p(tail, NODE_BLOCK)) {
23747 tail = NEW_BLOCK(tail, &tail->nd_loc);
23749 RNODE_BLOCK(end)->nd_next = tail;
23750 RNODE_BLOCK(h)->nd_end = RNODE_BLOCK(tail)->nd_end;
23751 nd_set_last_loc(head, nd_last_loc(tail));
23761 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
23762 if (RNODE_LIST(list)->nd_next) {
23763 last = RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end;
23769 RNODE_LIST(list)->as.nd_alen += 1;
23770 RNODE_LIST(last)->nd_next = NEW_LIST(item, &item->nd_loc);
23771 RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end = RNODE_LIST(last)->nd_next;
23773 nd_set_last_loc(list, nd_last_loc(item));
23780list_concat(
NODE *head,
NODE *tail)
23784 if (RNODE_LIST(head)->nd_next) {
23785 last = RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end;
23791 RNODE_LIST(head)->as.nd_alen += RNODE_LIST(tail)->as.nd_alen;
23792 RNODE_LIST(last)->nd_next = tail;
23793 if (RNODE_LIST(tail)->nd_next) {
23794 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = RNODE_LIST(RNODE_LIST(tail)->nd_next)->as.nd_end;
23797 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = tail;
23800 nd_set_last_loc(head, nd_last_loc(tail));
23808 if (!tail)
return 1;
23809 if (!rb_parser_enc_compatible(p, head, tail)) {
23810 compile_error(p,
"string literal encodings differ (%s / %s)",
23811 rb_enc_name(rb_parser_str_get_encoding(head)),
23812 rb_enc_name(rb_parser_str_get_encoding(tail)));
23813 rb_parser_str_resize(p, head, 0);
23814 rb_parser_str_resize(p, tail, 0);
23817 rb_parser_str_buf_append(p, head, tail);
23824 if (htype != NODE_DSTR)
return NULL;
23825 if (RNODE_DSTR(head)->nd_next) {
23826 head = RNODE_LIST(RNODE_LIST(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_head;
23827 if (!head || !nd_type_p(head, NODE_STR))
return NULL;
23839 if (!orig)
return NULL;
23840 copy = rb_parser_string_new(p, PARSER_STRING_PTR(orig), PARSER_STRING_LEN(orig));
23841 copy->coderange = orig->coderange;
23842 copy->enc = orig->enc;
23851 enum node_type htype;
23854 if (!head)
return tail;
23855 if (!tail)
return head;
23857 htype = nd_type(head);
23858 if (htype == NODE_EVSTR) {
23859 head = new_dstr(p, head, loc);
23862 if (p->heredoc_indent > 0) {
23865 head = str2dstr(p, head);
23867 return list_append(p, head, tail);
23872 switch (nd_type(tail)) {
23874 if ((lit = string_literal_head(p, htype, head)) !=
false) {
23878 lit = RNODE_DSTR(head)->string;
23880 if (htype == NODE_STR) {
23881 if (!literal_concat0(p, lit, RNODE_STR(tail)->
string)) {
23883 rb_discard_node(p, head);
23884 rb_discard_node(p, tail);
23887 rb_discard_node(p, tail);
23890 list_append(p, head, tail);
23895 if (htype == NODE_STR) {
23896 if (!literal_concat0(p, RNODE_STR(head)->
string, RNODE_DSTR(tail)->
string))
23898 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
23899 RNODE_DSTR(tail)->string = RNODE_STR(head)->string;
23900 RNODE_STR(head)->string = NULL;
23901 rb_discard_node(p, head);
23904 else if (!RNODE_DSTR(tail)->
string) {
23906 RNODE_DSTR(head)->as.nd_alen += RNODE_DSTR(tail)->as.nd_alen - 1;
23907 if (!RNODE_DSTR(head)->nd_next) {
23908 RNODE_DSTR(head)->nd_next = RNODE_DSTR(tail)->nd_next;
23910 else if (RNODE_DSTR(tail)->nd_next) {
23911 RNODE_DSTR(RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_next = RNODE_DSTR(tail)->nd_next;
23912 RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end = RNODE_DSTR(RNODE_DSTR(tail)->nd_next)->as.nd_end;
23914 rb_discard_node(p, tail);
23916 else if ((lit = string_literal_head(p, htype, head)) !=
false) {
23917 if (!literal_concat0(p, lit, RNODE_DSTR(tail)->
string))
23919 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
23920 RNODE_DSTR(tail)->string = 0;
23924 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));
23925 RNODE_DSTR(tail)->string = 0;
23930 if (htype == NODE_STR) {
23931 head = str2dstr(p, head);
23932 RNODE_DSTR(head)->as.nd_alen = 1;
23934 list_append(p, head, tail);
23941nd_copy_flag(
NODE *new_node,
NODE *old_node)
23943 if (nd_fl_newline(old_node)) nd_set_fl_newline(new_node);
23944 nd_set_line(new_node, nd_line(old_node));
23945 new_node->nd_loc = old_node->nd_loc;
23946 new_node->node_id = old_node->node_id;
23953 nd_copy_flag(new_node, node);
23954 RNODE_DSTR(new_node)->string = RNODE_STR(node)->string;
23955 RNODE_DSTR(new_node)->as.nd_alen = 0;
23956 RNODE_DSTR(new_node)->nd_next = 0;
23957 RNODE_STR(node)->string = 0;
23966 nd_copy_flag(new_node, node);
23967 RNODE_REGX(new_node)->string = RNODE_STR(node)->string;
23968 RNODE_REGX(new_node)->options = options;
23969 nd_set_loc(new_node, loc);
23970 RNODE_REGX(new_node)->opening_loc = *opening_loc;
23971 RNODE_REGX(new_node)->content_loc = *content_loc;
23972 RNODE_REGX(new_node)->closing_loc = *closing_loc;
23973 RNODE_STR(node)->string = 0;
23981 if (nd_type_p(node, NODE_EVSTR)) {
23982 node = new_dstr(p, node, &node->nd_loc);
23993 switch (nd_type(node)) {
23995 return str2dstr(p, node);
24002 return NEW_EVSTR(head, loc, opening_loc, closing_loc);
24008 NODE *dstr = NEW_DSTR(STRING_NEW0(), loc);
24009 return list_append(p, dstr, node);
24019 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
24020 nd_set_line(expr, op_loc->beg_pos.lineno);
24029 opcall = NEW_OPCALL(recv,
id, 0, loc);
24030 nd_set_line(opcall, op_loc->beg_pos.lineno);
24037 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
24038 nd_set_line(qcall, op_loc->beg_pos.lineno);
24046 if (block) block_dup_check(p, args, block);
24047 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
24048 if (block) ret = method_add_block(p, ret, block, loc);
24058 body->opening_loc = *opening_loc;
24059 body->closing_loc = *closing_loc;
24063#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? RNODE_ONCE(node)->nd_body : node)
24066last_expr_once_body(
NODE *node)
24068 if (!node)
return 0;
24069 return nd_once_body(node);
24076 int line = op_loc->beg_pos.lineno;
24081 if ((n = last_expr_once_body(node1)) != 0) {
24082 switch (nd_type(n)) {
24085 NODE *match = NEW_MATCH2(node1, node2, loc);
24086 nd_set_line(match, line);
24092 const VALUE lit = rb_node_regx_string_val(n);
24094 NODE *match = NEW_MATCH2(node1, node2, loc);
24095 RNODE_MATCH2(match)->nd_args = reg_named_capture_assign(p, lit, loc, assignable);
24096 nd_set_line(match, line);
24103 if ((n = last_expr_once_body(node2)) != 0) {
24106 switch (nd_type(n)) {
24108 match3 = NEW_MATCH3(node2, node1, loc);
24113 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
24114 nd_set_line(n, line);
24118# if WARN_PAST_SCOPE
24122 struct vtable *past = p->lvtbl->past;
24124 if (vtable_included(past,
id))
return 1;
24135 NODE *outer = local->numparam.outer;
24136 NODE *inner = local->numparam.inner;
24137 if (outer || inner) {
24138 NODE *used = outer ? outer : inner;
24139 compile_error(p,
"numbered parameter is already used in\n"
24140 "%s:%d: %s block here",
24141 p->ruby_sourcefile, nd_line(used),
24142 outer ?
"outer" :
"inner");
24143 parser_show_error_line(p, &used->nd_loc);
24152 NODE *numparam = p->lvtbl->numparam.current;
24154 compile_error(p,
"numbered parameter is already used in\n"
24155 "%s:%d: current block here",
24156 p->ruby_sourcefile, nd_line(numparam));
24157 parser_show_error_line(p, &numparam->nd_loc);
24166 NODE *it = p->lvtbl->it;
24168 compile_error(p,
"'it' is already used in\n"
24169 "%s:%d: current block here",
24170 p->ruby_sourcefile, nd_line(it));
24171 parser_show_error_line(p, &it->nd_loc);
24184 return NEW_SELF(loc);
24186 return NEW_NIL(loc);
24188 return NEW_TRUE(loc);
24189 case keyword_false:
24190 return NEW_FALSE(loc);
24191 case keyword__FILE__:
24193 VALUE file = p->ruby_sourcefile_string;
24196 node = NEW_FILE(file, loc);
24199 case keyword__LINE__:
24200 return NEW_LINE(loc);
24201 case keyword__ENCODING__:
24202 return NEW_ENCODING(loc);
24205 switch (id_type(
id)) {
24207 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
24208 if (NUMPARAM_ID_P(
id) && (numparam_nested_p(p) || it_used_p(p)))
return 0;
24209 if (vidp) *vidp |= LVAR_USED;
24210 node = NEW_DVAR(
id, loc);
24213 if (local_id_ref(p,
id, &vidp)) {
24214 if (vidp) *vidp |= LVAR_USED;
24215 node = NEW_LVAR(
id, loc);
24218 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
24219 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
24220 if (numparam_nested_p(p) || it_used_p(p))
return 0;
24221 node = NEW_DVAR(
id, loc);
24223 if (!local->numparam.current) local->numparam.current = node;
24226# if WARN_PAST_SCOPE
24228 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
24232 if (dyna_in_block(p) &&
id == rb_intern(
"it") && !(DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev))) {
24233 if (numparam_used_p(p))
return 0;
24234 if (p->max_numparam == ORDINAL_PARAM) {
24235 compile_error(p,
"ordinary parameter is defined");
24239 p->it_id = internal_id(p);
24240 vtable_add(p->lvtbl->args, p->it_id);
24242 NODE *node = NEW_DVAR(p->it_id, loc);
24243 if (!p->lvtbl->it) p->lvtbl->it = node;
24246 return NEW_VCALL(
id, loc);
24248 return NEW_GVAR(
id, loc);
24250 return NEW_IVAR(
id, loc);
24252 return NEW_CONST(
id, loc);
24254 return NEW_CVAR(
id, loc);
24256 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24264 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24266 while (opts->nd_next) {
24267 opts = opts->nd_next;
24268 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24270 opts->nd_next = opt;
24280 opt_arg_append(RNODE_OPT_ARG(kwlist), RNODE_OPT_ARG(kw));
24290 if (nd_type_p(n, NODE_BEGIN)) {
24291 n = RNODE_BEGIN(n)->nd_body;
24293 else if (nd_type_p(n, NODE_BLOCK) && RNODE_BLOCK(n)->nd_end == n) {
24294 n = RNODE_BLOCK(n)->nd_head;
24300 return NEW_DEFINED(n, loc);
24308 if (rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_BROKEN) {
24309 yyerror1(loc,
"invalid symbol");
24313 lit = rb_str_new_parser_string(str);
24315 return NEW_SYM(lit, loc);
24321 enum node_type
type = nd_type(symbol);
24324 nd_set_type(symbol, NODE_DSYM);
24327 symbol = str_to_sym_node(p, symbol, &RNODE(symbol)->nd_loc);
24330 compile_error(p,
"unexpected node as symbol: %s", parser_node_name(
type));
24332 return list_append(p, symbols, symbol);
24338 if (dreg->string) {
24339 reg_fragment_setenc(p, dreg->string, options);
24341 for (
struct RNode_LIST *list = dreg->nd_next; list; list = RNODE_LIST(list->nd_next)) {
24342 NODE *frag = list->nd_head;
24343 if (nd_type_p(frag, NODE_STR)) {
24344 reg_fragment_setenc(p, RNODE_STR(frag)->
string, options);
24346 else if (nd_type_p(frag, NODE_DSTR)) {
24347 dregex_fragment_setenc(p, RNODE_DSTR(frag), options);
24358 reg_compile(p, str, options);
24359 node = NEW_REGX(str, options, loc, opening_loc, content_loc, closing_loc);
24362 switch (nd_type(node)) {
24366 reg_compile(p, RNODE_STR(node)->
string, options);
24367 node = str2regx(p, node, options, loc, opening_loc, content_loc, closing_loc);
24371 node = NEW_DSTR0(STRING_NEW0(), 1, NEW_LIST(node, loc), loc);
24374 nd_set_type(node, NODE_DREGX);
24375 nd_set_loc(node, loc);
24377 dreg->as.nd_cflag = options & RE_OPTION_MASK;
24378 if (dreg->nd_next) {
24379 dregex_fragment_setenc(p, dreg, options);
24381 if (options & RE_OPTION_ONCE) {
24382 node = NEW_ONCE(node, loc);
24393 return NEW_KW_ARG((k), loc);
24400 NODE *xstr = NEW_XSTR(STRING_NEW0(), loc);
24403 switch (nd_type(node)) {
24405 nd_set_type(node, NODE_XSTR);
24406 nd_set_loc(node, loc);
24409 nd_set_type(node, NODE_DXSTR);
24410 nd_set_loc(node, loc);
24413 node = NEW_DXSTR(0, 1, NEW_LIST(node, loc), loc);
24425static int nd_type_st_key_enable_p(
NODE *node);
24431 if (!arg || !p->case_labels)
return;
24432 if (!nd_type_st_key_enable_p(arg))
return;
24434 if (p->case_labels == CHECK_LITERAL_WHEN) {
24435 p->case_labels = st_init_table(&literal_type);
24439 if (st_lookup(p->case_labels, (st_data_t)arg, &line)) {
24440 rb_warning2(
"'when' clause on line %d duplicates 'when' clause on line %d and is ignored",
24441 WARN_I((
int)nd_line(arg)), WARN_I((
int)line));
24445 st_insert(p->case_labels, (st_data_t)arg, (st_data_t)p->ruby_sourceline);
24452 if (is_notop_id(
id)) {
24453 switch (
id & ID_SCOPE_MASK) {
24454 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
24457 if (dyna_in_block(p)) {
24458 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
24460 if (local_id(p,
id))
return 1;
24465 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24470static inline enum lex_state_e
24471parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
24474 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
24476 return p->lex.state = ls;
24483 VALUE mesg = p->debug_buffer;
24485 if (!
NIL_P(mesg) && RSTRING_LEN(mesg)) {
24486 p->debug_buffer =
Qnil;
24487 rb_io_puts(1, &mesg, out);
24489 if (!
NIL_P(str) && RSTRING_LEN(str)) {
24490 rb_io_write(p->debug_output, str);
24494static const char rb_parser_lex_state_names[][8] = {
24495 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
24496 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
24497 "LABEL",
"LABELED",
"FITEM",
24504 unsigned int mask = 1;
24505 static const char none[] =
"NONE";
24507 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
24508 if ((
unsigned)state & mask) {
24523rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
24524 enum lex_state_e to,
int line)
24528 append_lex_state_name(p, from, mesg);
24530 append_lex_state_name(p, to, mesg);
24531 rb_str_catf(mesg,
" at line %d\n", line);
24532 flush_debug_buffer(p, p->debug_output, mesg);
24537rb_parser_lex_state_name(
struct parser_params *p,
enum lex_state_e state)
24539 return rb_str_to_interned_str(append_lex_state_name(p, state,
rb_str_new(0, 0)));
24549 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
24550 for (; mask && !(stack & mask); mask >>= 1)
continue;
24551 for (; mask; mask >>= 1)
rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
24556rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
24557 const char *name,
int line)
24559 VALUE mesg = rb_sprintf(
"%s: ", name);
24560 append_bitstack_value(p, stack, mesg);
24561 rb_str_catf(mesg,
" at line %d\n", line);
24562 flush_debug_buffer(p, p->debug_output, mesg);
24566rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
24572 rb_str_vcatf(mesg, fmt, ap);
24574 yyerror0(RSTRING_PTR(mesg));
24578 append_lex_state_name(p, p->lex.state, mesg);
24579 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
24580 rb_str_resize(mesg, 0);
24581 append_bitstack_value(p, p->cond_stack, mesg);
24582 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
24583 rb_str_resize(mesg, 0);
24584 append_bitstack_value(p, p->cmdarg_stack, mesg);
24585 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
24586 if (p->debug_output == rb_ractor_stdout())
24587 p->debug_output = rb_ractor_stderr();
24592rb_parser_set_pos(
YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
24594 yylloc->beg_pos.lineno = sourceline;
24595 yylloc->beg_pos.column = beg_pos;
24596 yylloc->end_pos.lineno = sourceline;
24597 yylloc->end_pos.column = end_pos;
24604 int sourceline = here->sourceline;
24605 int beg_pos = (int)here->offset - here->quote
24606 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
24607 int end_pos = (int)here->offset + here->length + here->quote;
24609 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24615 yylloc->beg_pos.lineno = p->delayed.beg_line;
24616 yylloc->beg_pos.column = p->delayed.beg_col;
24617 yylloc->end_pos.lineno = p->delayed.end_line;
24618 yylloc->end_pos.column = p->delayed.end_col;
24626 int sourceline = p->ruby_sourceline;
24627 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24628 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
24629 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24635 yylloc->end_pos = yylloc->beg_pos;
24643 int sourceline = p->ruby_sourceline;
24644 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24645 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
24646 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24652 int sourceline = p->ruby_sourceline;
24653 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24654 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
24655 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24662 if (!
id)
return -1;
24665 *err =
"Can't change the value of self";
24668 *err =
"Can't assign to nil";
24671 *err =
"Can't assign to true";
24673 case keyword_false:
24674 *err =
"Can't assign to false";
24676 case keyword__FILE__:
24677 *err =
"Can't assign to __FILE__";
24679 case keyword__LINE__:
24680 *err =
"Can't assign to __LINE__";
24682 case keyword__ENCODING__:
24683 *err =
"Can't assign to __ENCODING__";
24686 switch (id_type(
id)) {
24688 if (dyna_in_block(p)) {
24689 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
24690 compile_error(p,
"Can't assign to numbered parameter _%d",
24691 NUMPARAM_ID_TO_IDX(
id));
24694 if (dvar_curr(p,
id))
return NODE_DASGN;
24695 if (dvar_defined(p,
id))
return NODE_DASGN;
24696 if (local_id(p,
id))
return NODE_LASGN;
24701 if (!local_id(p,
id)) local_var(p,
id);
24705 case ID_GLOBAL:
return NODE_GASGN;
24706 case ID_INSTANCE:
return NODE_IASGN;
24708 if (!p->ctxt.in_def)
return NODE_CDECL;
24709 *err =
"dynamic constant assignment";
24711 case ID_CLASS:
return NODE_CVASGN;
24713 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
24721 const char *err = 0;
24722 int node_type = assignable0(p,
id, &err);
24723 switch (node_type) {
24724 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
24725 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
24726 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
24727 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
24728 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, p->ctxt.shareable_constant_value, loc);
24729 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
24733 if (err) yyerror1(loc, err);
24735 if (err) set_value(assign_error(p, err, p->s_lvalue));
24737 return NEW_ERROR(loc);
24744 if (name == idUScore)
return 1;
24745 if (!is_local_id(name))
return 0;
24746 s = rb_id2str(name);
24748 return RSTRING_PTR(s)[0] ==
'_';
24754 if (dyna_in_block(p)) {
24755 if (dvar_curr(p, name)) {
24756 if (is_private_local_id(p, name))
return 1;
24757 yyerror0(
"duplicated argument name");
24759 else if (dvar_defined(p, name) || local_id(p, name)) {
24760 vtable_add(p->lvtbl->vars, name);
24761 if (p->lvtbl->used) {
24762 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
24768 if (local_id(p, name)) {
24769 if (is_private_local_id(p, name))
return 1;
24770 yyerror0(
"duplicated argument name");
24779 shadowing_lvar_0(p, name);
24787 if (!is_local_id(name)) {
24788 compile_error(p,
"invalid local variable - %"PRIsVALUE,
24792 if (!shadowing_lvar_0(p, name))
return;
24795 if (dvar_defined_ref(p, name, &vidp)) {
24796 if (vidp) *vidp |= LVAR_USED;
24803 NODE *block = 0, *kwds = 0;
24804 if (args && nd_type_p(args, NODE_BLOCK_PASS)) {
24805 block = RNODE_BLOCK_PASS(args)->nd_body;
24806 args = RNODE_BLOCK_PASS(args)->nd_head;
24808 if (args && nd_type_p(args, NODE_ARGSCAT)) {
24809 args = RNODE_ARGSCAT(args)->nd_body;
24811 if (args && nd_type_p(args, NODE_ARGSPUSH)) {
24812 kwds = RNODE_ARGSPUSH(args)->nd_body;
24815 for (
NODE *next = args; next && nd_type_p(next, NODE_LIST);
24816 next = RNODE_LIST(next)->nd_next) {
24817 kwds = RNODE_LIST(next)->nd_head;
24820 if (kwds && nd_type_p(kwds, NODE_HASH) && !RNODE_HASH(kwds)->nd_brace) {
24821 yyerror1(&kwds->nd_loc,
"keyword arg given in index assignment");
24824 yyerror1(&block->nd_loc,
"block arg given in index assignment");
24831 aryset_check(p, idx);
24832 return NEW_ATTRASGN(recv, tASET, idx, loc);
24838 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
24839 compile_error(p,
"both block arg and actual block given");
24846 if (!CALL_Q_P(atype))
id = rb_id_attrset(
id);
24847 return NEW_ATTRASGN(recv,
id, 0, loc);
24854# define ERR(...) (compile_error(p, __VA_ARGS__), Qtrue)
24856# define ERR(...) rb_sprintf(__VA_ARGS__)
24858 switch (nd_type(node)) {
24860 return ERR(
"Can't set variable $%ld", RNODE_NTH_REF(node)->nd_nth);
24861 case NODE_BACK_REF:
24862 return ERR(
"Can't set variable $%c", (
int)RNODE_BACK_REF(node)->nd_nth);
24871 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
24872 switch (nd_type(node1)) {
24874 return list_append(p, node1, node2);
24875 case NODE_BLOCK_PASS:
24876 RNODE_BLOCK_PASS(node1)->nd_head = arg_append(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
24877 node1->nd_loc.end_pos = RNODE_BLOCK_PASS(node1)->nd_head->nd_loc.end_pos;
24879 case NODE_ARGSPUSH:
24880 RNODE_ARGSPUSH(node1)->nd_body = list_append(p, NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, &RNODE_ARGSPUSH(node1)->nd_body->nd_loc), node2);
24881 node1->nd_loc.end_pos = RNODE_ARGSPUSH(node1)->nd_body->nd_loc.end_pos;
24882 nd_set_type(node1, NODE_ARGSCAT);
24885 if (!nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
24886 RNODE_ARGSCAT(node1)->nd_body = list_append(p, RNODE_ARGSCAT(node1)->nd_body, node2);
24887 node1->nd_loc.end_pos = RNODE_ARGSCAT(node1)->nd_body->nd_loc.end_pos;
24890 return NEW_ARGSPUSH(node1, node2, loc);
24896 if (!node2)
return node1;
24897 switch (nd_type(node1)) {
24898 case NODE_BLOCK_PASS:
24899 if (RNODE_BLOCK_PASS(node1)->nd_head)
24900 RNODE_BLOCK_PASS(node1)->nd_head = arg_concat(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
24902 RNODE_LIST(node1)->nd_head = NEW_LIST(node2, loc);
24904 case NODE_ARGSPUSH:
24905 if (!nd_type_p(node2, NODE_LIST))
break;
24906 RNODE_ARGSPUSH(node1)->nd_body = list_concat(NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, loc), node2);
24907 nd_set_type(node1, NODE_ARGSCAT);
24910 if (!nd_type_p(node2, NODE_LIST) ||
24911 !nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
24912 RNODE_ARGSCAT(node1)->nd_body = list_concat(RNODE_ARGSCAT(node1)->nd_body, node2);
24915 return NEW_ARGSCAT(node1, node2, loc);
24922 if ((n1 = splat_array(args)) != 0) {
24923 return list_append(p, n1, last_arg);
24925 return arg_append(p, args, last_arg, loc);
24932 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
24933 return list_concat(n1, rest_arg);
24935 return arg_concat(p, args, rest_arg, loc);
24939splat_array(
NODE* node)
24941 if (nd_type_p(node, NODE_SPLAT)) node = RNODE_SPLAT(node)->nd_head;
24942 if (nd_type_p(node, NODE_LIST))
return node;
24951 switch (nd_type(rhs)) {
24953 if (local_id_ref(p, RNODE_LASGN(rhs)->nd_vid, &vidp)) {
24954 if (vidp) *vidp |= LVAR_USED;
24958 if (dvar_defined_ref(p, RNODE_DASGN(rhs)->nd_vid, &vidp)) {
24959 if (vidp) *vidp |= LVAR_USED;
24964 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
24965 mark_lvar_used(p, rhs->nd_head);
24972static int is_static_content(
NODE *node);
24977 if (!lhs)
return 0;
24979 switch (nd_type(lhs)) {
24987 set_nd_value(p, lhs, rhs);
24988 nd_set_loc(lhs, loc);
24991 case NODE_ATTRASGN:
24992 RNODE_ATTRASGN(lhs)->nd_args = arg_append(p, RNODE_ATTRASGN(lhs)->nd_args, rhs, loc);
24993 nd_set_loc(lhs, loc);
25007 NODE *void_node = 0, *vn;
25010 rb_warning0(
"empty expression");
25013 switch (nd_type(node)) {
25015 vn = RNODE_ENSURE(node)->nd_head;
25016 node = RNODE_ENSURE(node)->nd_ensr;
25018 if (vn && (vn = value_expr_check(p, vn))) {
25025 vn = RNODE_RESCUE(node)->nd_head;
25026 if (!vn || !(vn = value_expr_check(p, vn)))
return NULL;
25027 if (!void_node) void_node = vn;
25028 for (
NODE *r = RNODE_RESCUE(node)->nd_resq; r; r = RNODE_RESBODY(r)->nd_next) {
25029 if (!nd_type_p(r, NODE_RESBODY)) {
25030 compile_error(p,
"unexpected node");
25033 if (!(vn = value_expr_check(p, RNODE_RESBODY(r)->nd_body))) {
25037 if (!void_node) void_node = vn;
25039 node = RNODE_RESCUE(node)->nd_else;
25040 if (!node)
return void_node;
25051 if (!RNODE_CASE3(node)->nd_body || !nd_type_p(RNODE_CASE3(node)->nd_body, NODE_IN)) {
25052 compile_error(p,
"unexpected node");
25055 if (RNODE_IN(RNODE_CASE3(node)->nd_body)->nd_body) {
25062 while (RNODE_BLOCK(node)->nd_next) {
25063 node = RNODE_BLOCK(node)->nd_next;
25065 node = RNODE_BLOCK(node)->nd_head;
25069 node = RNODE_BEGIN(node)->nd_body;
25074 if (!RNODE_IF(node)->nd_body) {
25077 else if (!RNODE_IF(node)->nd_else) {
25080 vn = value_expr_check(p, RNODE_IF(node)->nd_body);
25081 if (!vn)
return NULL;
25082 if (!void_node) void_node = vn;
25083 node = RNODE_IF(node)->nd_else;
25088 node = RNODE_AND(node)->nd_1st;
25094 mark_lvar_used(p, node);
25106 return void_node ? void_node : node;
25112 NODE *void_node = value_expr_check(p, node);
25114 yyerror1(&void_node->nd_loc,
"void value expression");
25124 const char *useless = 0;
25128 if (!node || !(node = nd_once_body(node)))
return;
25129 switch (nd_type(node)) {
25131 switch (RNODE_OPCALL(node)->nd_mid) {
25150 useless = rb_id2name(RNODE_OPCALL(node)->nd_mid);
25161 case NODE_BACK_REF:
25162 useless =
"a variable";
25165 useless =
"a constant";
25170 case NODE_ENCODING:
25173 case NODE_RATIONAL:
25174 case NODE_IMAGINARY:
25179 useless =
"a literal";
25204 useless =
"defined?";
25209 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
25217 NODE *
const n = node;
25219 if (!node)
return n;
25220 if (!nd_type_p(node, NODE_BLOCK))
return n;
25222 while (RNODE_BLOCK(node)->nd_next) {
25223 void_expr(p, RNODE_BLOCK(node)->nd_head);
25224 node = RNODE_BLOCK(node)->nd_next;
25226 return RNODE_BLOCK(node)->nd_head;
25230remove_begin(
NODE *node)
25232 NODE **n = &node, *n1 = node;
25233 while (n1 && nd_type_p(n1, NODE_BEGIN) && RNODE_BEGIN(n1)->nd_body) {
25234 *n = n1 = RNODE_BEGIN(n1)->nd_body;
25242 NODE *node = *body;
25245 *body = NEW_NIL(&NULL_LOC);
25248#define subnodes(type, n1, n2) \
25249 ((!type(node)->n1) ? (type(node)->n2 ? (body = &type(node)->n2, 1) : 0) : \
25250 (!type(node)->n2) ? (body = &type(node)->n1, 1) : \
25251 (reduce_nodes(p, &type(node)->n1), body = &type(node)->n2, 1))
25254 int newline = (int)nd_fl_newline(node);
25255 switch (nd_type(node)) {
25261 *body = node = RNODE_BEGIN(node)->nd_body;
25262 if (newline && node) nd_set_fl_newline(node);
25265 body = &RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head;
25269 if (subnodes(RNODE_IF, nd_body, nd_else))
break;
25272 body = &RNODE_CASE(node)->nd_body;
25275 if (!subnodes(RNODE_WHEN, nd_body, nd_next))
goto end;
25278 body = &RNODE_ENSURE(node)->nd_head;
25282 if (RNODE_RESCUE(node)->nd_else) {
25283 body = &RNODE_RESCUE(node)->nd_resq;
25286 if (!subnodes(RNODE_RESCUE, nd_head, nd_resq))
goto end;
25292 if (newline && node) nd_set_fl_newline(node);
25299is_static_content(
NODE *node)
25301 if (!node)
return 1;
25302 switch (nd_type(node)) {
25304 if (!(node = RNODE_HASH(node)->nd_head))
break;
25307 if (!is_static_content(RNODE_LIST(node)->nd_head))
return 0;
25308 }
while ((node = RNODE_LIST(node)->nd_next) != 0);
25313 case NODE_ENCODING:
25316 case NODE_RATIONAL:
25317 case NODE_IMAGINARY:
25333 switch (nd_type(node)) {
25347 if (!get_nd_value(p, node))
return 1;
25348 if (is_static_content(get_nd_value(p, node))) {
25350 rb_warn0L(nd_line(get_nd_value(p, node)),
"found '= literal' in conditional, should be ==");
25361#define SWITCH_BY_COND_TYPE(t, w, arg) do { \
25363 case COND_IN_OP: break; \
25364 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
25365 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
25374 enum node_type
type;
25376 if (node == 0)
return 0;
25378 type = nd_type(node);
25380 if (
type == NODE_INTEGER) {
25381 if (!e_option_supplied(p)) rb_warn0L(nd_line(node),
"integer literal in flip-flop");
25382 ID lineno = rb_intern(
"$.");
25383 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
25385 return cond0(p, node, COND_IN_FF, loc,
true);
25391 if (node == 0)
return 0;
25392 if (!(node = nd_once_body(node)))
return 0;
25393 assign_in_cond(p, node);
25395 switch (nd_type(node)) {
25397 RNODE_BEGIN(node)->nd_body = cond0(p, RNODE_BEGIN(node)->nd_body,
type, loc, top);
25404 SWITCH_BY_COND_TYPE(
type, warn,
"string ");
25408 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ");
25409 nd_set_type(node, NODE_MATCH);
25413 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning,
"regex ");
25415 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
25419 NODE *end = RNODE_BLOCK(node)->nd_end;
25420 NODE **expr = &RNODE_BLOCK(end)->nd_head;
25421 if (top) top = node == end;
25422 *expr = cond0(p, *expr,
type, loc, top);
25428 RNODE_AND(node)->nd_1st = cond0(p, RNODE_AND(node)->nd_1st, COND_IN_COND, loc,
true);
25429 RNODE_AND(node)->nd_2nd = cond0(p, RNODE_AND(node)->nd_2nd, COND_IN_COND, loc,
true);
25435 RNODE_DOT2(node)->nd_beg = range_op(p, RNODE_DOT2(node)->nd_beg, loc);
25436 RNODE_DOT2(node)->nd_end = range_op(p, RNODE_DOT2(node)->nd_end, loc);
25437 switch (nd_type(node)) {
25439 nd_set_type(node,NODE_FLIP2);
25444 nd_set_type(node, NODE_FLIP3);
25453 SWITCH_BY_COND_TYPE(
type, warning,
"symbol ");
25457 case NODE_ENCODING:
25460 case NODE_RATIONAL:
25461 case NODE_IMAGINARY:
25462 SWITCH_BY_COND_TYPE(
type, warning,
"");
25474 if (node == 0)
return 0;
25475 return cond0(p, node, COND_IN_COND, loc,
true);
25481 if (node == 0)
return 0;
25482 return cond0(p, node, COND_IN_OP, loc,
true);
25489 return NEW_NIL(&loc);
25495 if (!cc)
return right;
25496 cc = cond0(p, cc, COND_IN_COND, loc,
true);
25497 return newline_node(NEW_IF(cc, left, right, loc, if_keyword_loc, then_keyword_loc, end_keyword_loc));
25503 if (!cc)
return right;
25504 cc = cond0(p, cc, COND_IN_COND, loc,
true);
25505 return newline_node(NEW_UNLESS(cc, left, right, loc, keyword_loc, then_keyword_loc, end_keyword_loc));
25508#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))
25514 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
25517 if (left && nd_type_p(left,
type)) {
25518 NODE *node = left, *second;
25519 while ((second = RNODE_AND(node)->nd_2nd) != 0 && nd_type_p(second,
type)) {
25522 RNODE_AND(node)->nd_2nd = NEW_AND_OR(
type, second, right, loc, op_loc);
25523 nd_set_line(RNODE_AND(node)->nd_2nd, op_loc->beg_pos.lineno);
25524 left->nd_loc.end_pos = loc->end_pos;
25527 op = NEW_AND_OR(
type, left, right, loc, op_loc);
25528 nd_set_line(op, op_loc->beg_pos.lineno);
25537 if (nd_type_p(node, NODE_BLOCK_PASS)) {
25538 compile_error(p,
"block argument should not be given");
25546 no_blockarg(p, node);
25547 if (nd_type_p(node, NODE_LIST) && !RNODE_LIST(node)->nd_next) {
25548 node = RNODE_LIST(node)->nd_head;
25557 switch (nd_type(node)) {
25559 RNODE_INTEGER(node)->minus = TRUE;
25562 RNODE_FLOAT(node)->minus = TRUE;
25564 case NODE_RATIONAL:
25565 RNODE_RATIONAL(node)->minus = TRUE;
25567 case NODE_IMAGINARY:
25568 RNODE_IMAGINARY(node)->minus = TRUE;
25578 if (!node1)
return (
NODE *)node2;
25579 node2->nd_head = node1;
25580 nd_set_first_lineno(node2, nd_first_lineno(node1));
25581 nd_set_first_column(node2, nd_first_column(node1));
25582 return (
NODE *)node2;
25590 if (args->pre_args_num)
return false;
25591 if (args->post_args_num)
return false;
25592 if (args->rest_arg)
return false;
25593 if (args->opt_args)
return false;
25594 if (args->block_arg)
return false;
25595 if (args->kw_args)
return false;
25596 if (args->kw_rest_arg)
return false;
25605 if (args->forwarding) {
25607 yyerror1(&RNODE(tail)->nd_loc,
"... after rest argument");
25610 rest_arg = idFWD_REST;
25613 args->pre_args_num = pre_args ? pre_args->nd_plen : 0;
25614 args->pre_init = pre_args ? pre_args->nd_next : 0;
25616 args->post_args_num = post_args ? post_args->nd_plen : 0;
25617 args->post_init = post_args ? post_args->nd_next : 0;
25618 args->first_post_arg = post_args ? post_args->nd_pid : 0;
25620 args->rest_arg = rest_arg;
25622 args->opt_args = opt_args;
25624#ifdef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
25625 args->ruby2_keywords = args->forwarding;
25627 args->ruby2_keywords = 0;
25630 nd_set_loc(RNODE(tail), loc);
25640 if (p->error_p)
return node;
25642 args->block_arg = block;
25643 args->kw_args = kw_args;
25652 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
25653 struct vtable *vtargs = p->lvtbl->args;
25656 if (block) block = vtargs->tbl[vtargs->pos-1];
25657 vtable_pop(vtargs, !!block + !!kw_rest_arg);
25658 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
25660 if (!NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body)))
25662 --required_kw_vars;
25663 kwn = kwn->nd_next;
25666 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
25667 ID vid = get_nd_vid(p, kwn->nd_body);
25668 if (NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body))) {
25669 *required_kw_vars++ = vid;
25676 arg_var(p, kw_bits);
25677 if (kw_rest_arg) arg_var(p, kw_rest_arg);
25678 if (block) arg_var(p, block);
25680 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
25682 else if (kw_rest_arg == idNil) {
25683 args->no_kwarg = 1;
25685 else if (kw_rest_arg) {
25686 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
25695 if (max_numparam > NO_PARAM || it_id) {
25697 YYLTYPE loc = RUBY_INIT_YYLLOC();
25698 args = new_args_tail(p, 0, 0, 0, 0);
25699 nd_set_loc(RNODE(args), &loc);
25701 args->nd_ainfo.pre_args_num = it_id ? 1 : max_numparam;
25709 RNODE_ARYPTN(aryptn)->nd_pconst = constant;
25712 NODE *pre_args = NEW_LIST(pre_arg, loc);
25713 if (RNODE_ARYPTN(aryptn)->pre_args) {
25714 RNODE_ARYPTN(aryptn)->pre_args = list_concat(pre_args, RNODE_ARYPTN(aryptn)->pre_args);
25717 RNODE_ARYPTN(aryptn)->pre_args = pre_args;
25727 rest_arg = rest_arg ? rest_arg : NODE_SPECIAL_NO_NAME_REST;
25732 NODE *node = NEW_ARYPTN(pre_args, rest_arg, post_args, loc);
25740 RNODE_FNDPTN(fndptn)->nd_pconst = constant;
25748 pre_rest_arg = pre_rest_arg ? pre_rest_arg : NODE_SPECIAL_NO_NAME_REST;
25749 post_rest_arg = post_rest_arg ? post_rest_arg : NODE_SPECIAL_NO_NAME_REST;
25750 NODE *node = NEW_FNDPTN(pre_rest_arg, args, post_rest_arg, loc);
25758 RNODE_HSHPTN(hshptn)->nd_pconst = constant;
25765 NODE *node, *kw_rest_arg_node;
25767 if (kw_rest_arg == idNil) {
25768 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
25770 else if (kw_rest_arg) {
25771 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
25774 kw_rest_arg_node = NULL;
25777 node = NEW_HSHPTN(0, kw_args, kw_rest_arg_node, loc);
25786 return NEW_SYM(STR_NEW0(), loc);
25789 switch (nd_type(node)) {
25791 nd_set_type(node, NODE_DSYM);
25792 nd_set_loc(node, loc);
25795 node = str_to_sym_node(p, node, loc);
25798 node = NEW_DSYM(0, 1, NEW_LIST(node, loc), loc);
25805nd_type_st_key_enable_p(
NODE *node)
25807 switch (nd_type(node)) {
25810 case NODE_RATIONAL:
25811 case NODE_IMAGINARY:
25817 case NODE_ENCODING:
25827 switch (nd_type(node)) {
25829 return rb_node_str_string_val(node);
25831 return rb_node_integer_literal_val(node);
25833 return rb_node_float_literal_val(node);
25834 case NODE_RATIONAL:
25835 return rb_node_rational_literal_val(node);
25836 case NODE_IMAGINARY:
25837 return rb_node_imaginary_literal_val(node);
25839 return rb_node_sym_string_val(node);
25841 return rb_node_regx_string_val(node);
25843 return rb_node_line_lineno_val(node);
25844 case NODE_ENCODING:
25845 return rb_node_encoding_val(node);
25847 return rb_node_file_path_val(node);
25849 rb_bug(
"unexpected node: %s", ruby_node_name(nd_type(node)));
25858 p->warn_duplicate_keys_table = st_init_table_with_size(&literal_type, RNODE_LIST(hash)->as.nd_alen / 2);
25859 while (hash && RNODE_LIST(hash)->nd_next) {
25860 NODE *head = RNODE_LIST(hash)->nd_head;
25861 NODE *value = RNODE_LIST(hash)->nd_next;
25862 NODE *next = RNODE_LIST(value)->nd_next;
25871 if (nd_type_st_key_enable_p(head)) {
25872 key = (st_data_t)head;
25874 if (st_delete(p->warn_duplicate_keys_table, &key, &data)) {
25875 rb_warn2L(nd_line((
NODE *)data),
25876 "key %+"PRIsWARN
" is duplicated and overwritten on line %d",
25877 nd_value(p, head), WARN_I(nd_line(head)));
25879 st_insert(p->warn_duplicate_keys_table, (st_data_t)key, (st_data_t)hash);
25883 st_free_table(p->warn_duplicate_keys_table);
25884 p->warn_duplicate_keys_table = NULL;
25890 if (hash) warn_duplicate_keys(p, hash);
25891 return NEW_HASH(hash, loc);
25897 if (is_private_local_id(p,
id)) {
25900 if (st_is_member(p->pvtbl,
id)) {
25901 yyerror1(loc,
"duplicated variable name");
25904 st_insert(p->pvtbl, (st_data_t)
id, 0);
25912 p->pktbl = st_init_numtable();
25914 else if (st_is_member(p->pktbl, key)) {
25915 yyerror1(loc,
"duplicated key name");
25918 st_insert(p->pktbl, (st_data_t)key, 0);
25924 return NEW_HASH(hash, loc);
25933 ID vid = get_nd_vid(p, lhs);
25934 YYLTYPE lhs_loc = lhs->nd_loc;
25936 set_nd_value(p, lhs, rhs);
25937 nd_set_loc(lhs, loc);
25938 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
25940 else if (op == tANDOP) {
25941 set_nd_value(p, lhs, rhs);
25942 nd_set_loc(lhs, loc);
25943 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
25947 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
25948 set_nd_value(p, asgn, rhs);
25949 nd_set_loc(asgn, loc);
25953 asgn = NEW_ERROR(loc);
25965 aryset_check(p, args);
25966 args = make_list(args, args_loc);
25967 asgn = NEW_OP_ASGN1(ary, op, args, rhs, loc, call_operator_loc, opening_loc, closing_loc, binary_operator_loc);
25979 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc, call_operator_loc, message_loc, binary_operator_loc);
25990 asgn = NEW_OP_CDECL(lhs, op, rhs, ctxt.shareable_constant_value, loc);
25993 asgn = NEW_ERROR(loc);
26002 if (p->ctxt.in_def) {
26004 yyerror1(loc,
"dynamic constant assignment");
26006 set_value(assign_error(p,
"dynamic constant assignment", p->s_lvalue));
26009 return NEW_CDECL(0, 0, (path), p->ctxt.shareable_constant_value, loc);
26016 a = dispatch2(assign_error, ERR_MESG(), a);
26025 NODE *result = head;
26027 NODE *tmp = rescue_else ? rescue_else : rescue;
26028 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
26030 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
26031 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
26034 result = NEW_ENSURE(result, ensure, loc);
26036 fixpos(result, head);
26045 if (!local->used)
return;
26046 cnt = local->used->pos;
26047 if (cnt != local->vars->pos) {
26048 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
26051 ID *v = local->vars->tbl;
26052 ID *u = local->used->tbl;
26053 for (
int i = 0; i < cnt; ++i) {
26054 if (!v[i] || (u[i] & LVAR_USED))
continue;
26055 if (is_private_local_id(p, v[i]))
continue;
26056 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
26065 int inherits_dvars = toplevel_scope && compile_for_eval;
26069 local->prev = p->lvtbl;
26070 local->args = vtable_alloc(0);
26071 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
26073 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
26074 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
26076 local->numparam.outer = 0;
26077 local->numparam.inner = 0;
26078 local->numparam.current = 0;
26080 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
26082# if WARN_PAST_SCOPE
26093 while (!DVARS_TERMINAL_P(table)) {
26094 struct vtable *cur_table = table;
26095 table = cur_table->prev;
26096 vtable_free(cur_table);
26103 vtable_chain_free(p, local->used);
26105# if WARN_PAST_SCOPE
26106 vtable_chain_free(p, local->past);
26109 vtable_chain_free(p, local->args);
26110 vtable_chain_free(p, local->vars);
26112 ruby_sized_xfree(local,
sizeof(
struct local_vars));
26119 if (p->lvtbl->used) {
26120 warn_unused_var(p, p->lvtbl);
26123 local_free(p, p->lvtbl);
26133 int cnt_args = vtable_size(p->lvtbl->args);
26134 int cnt_vars = vtable_size(p->lvtbl->vars);
26135 int cnt = cnt_args + cnt_vars;
26139 if (cnt <= 0)
return 0;
26140 tbl = rb_ast_new_local_table(p->ast, cnt);
26141 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
26143 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
26144 ID id = p->lvtbl->vars->tbl[i];
26145 if (!vtable_included(p->lvtbl->args,
id)) {
26146 tbl->ids[j++] = id;
26150 tbl = rb_ast_resize_latest_local_table(p->ast, j);
26159 if (!NUMPARAM_ID_P(
id))
return;
26160 compile_error(p,
"_%d is reserved for numbered parameter",
26161 NUMPARAM_ID_TO_IDX(
id));
26167 numparam_name(p,
id);
26168 vtable_add(p->lvtbl->args,
id);
26174 numparam_name(p,
id);
26175 vtable_add(p->lvtbl->vars,
id);
26176 if (p->lvtbl->used) {
26177 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
26185 return rb_local_defined(
id, iseq);
26192 struct vtable *vars, *args, *used;
26194 vars = p->lvtbl->vars;
26195 args = p->lvtbl->args;
26196 used = p->lvtbl->used;
26198 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26201 if (used) used = used->prev;
26204 if (vars && vars->prev == DVARS_INHERIT) {
26205 return rb_parser_local_defined(p,
id, p->parent_iseq);
26207 else if (vtable_included(args,
id)) {
26211 int i = vtable_included(vars,
id);
26212 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
26220 return local_id_ref(p,
id, NULL);
26226 if (local_id(p, idFWD_ALL))
return TRUE;
26227 compile_error(p,
"unexpected ...");
26234 arg_var(p, idFWD_REST);
26235#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
26236 arg_var(p, idFWD_KWREST);
26238 arg_var(p, idFWD_BLOCK);
26239 arg_var(p, idFWD_ALL);
26245 bool conflict =
false;
26247 struct vtable *vars, *args;
26249 vars = p->lvtbl->vars;
26250 args = p->lvtbl->args;
26252 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26253 conflict |= (vtable_included(args, arg) && !(all && vtable_included(args, all)));
26258 bool found =
false;
26259 if (vars && vars->prev == DVARS_INHERIT && !found) {
26260 found = (rb_parser_local_defined(p, arg, p->parent_iseq) &&
26261 !(all && rb_parser_local_defined(p, all, p->parent_iseq)));
26264 found = (vtable_included(args, arg) &&
26265 !(all && vtable_included(args, all)));
26269 compile_error(p,
"no anonymous %s parameter", var);
26271 else if (conflict) {
26272 compile_error(p,
"anonymous %s parameter is also used within block", var);
26279 NODE *rest = NEW_LVAR(idFWD_REST, loc);
26280#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
26281 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
26284 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc, &NULL_LOC);
26285 block->forwarding = TRUE;
26286#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
26287 args = arg_append(p, args, new_hash(p, kwrest, loc), argsloc);
26289 return arg_blk_pass(args, block);
26296 NODE *inner = local->numparam.inner;
26297 if (!local->numparam.outer) {
26298 local->numparam.outer = local->numparam.current;
26300 local->numparam.inner = 0;
26301 local->numparam.current = 0;
26312 local->numparam.inner = prev_inner;
26314 else if (local->numparam.current) {
26316 local->numparam.inner = local->numparam.current;
26318 if (p->max_numparam > NO_PARAM) {
26320 local->numparam.current = local->numparam.outer;
26321 local->numparam.outer = 0;
26325 local->numparam.current = 0;
26330static const struct vtable *
26333 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
26334 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
26335 if (p->lvtbl->used) {
26336 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
26338 return p->lvtbl->args;
26344 struct vtable *tmp = *vtblp;
26345 *vtblp = tmp->prev;
26346# if WARN_PAST_SCOPE
26347 if (p->past_scope_enabled) {
26348 tmp->prev = p->lvtbl->past;
26349 p->lvtbl->past = tmp;
26361 if ((tmp = p->lvtbl->used) != 0) {
26362 warn_unused_var(p, p->lvtbl);
26363 p->lvtbl->used = p->lvtbl->used->prev;
26366 dyna_pop_vtable(p, &p->lvtbl->args);
26367 dyna_pop_vtable(p, &p->lvtbl->vars);
26373 while (p->lvtbl->args != lvargs) {
26375 if (!p->lvtbl->args) {
26377 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
26387 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
26394 struct vtable *vars, *args, *used;
26397 args = p->lvtbl->args;
26398 vars = p->lvtbl->vars;
26399 used = p->lvtbl->used;
26401 while (!DVARS_TERMINAL_P(vars)) {
26402 if (vtable_included(args,
id)) {
26405 if ((i = vtable_included(vars,
id)) != 0) {
26406 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
26411 if (!vidrefp) used = 0;
26412 if (used) used = used->prev;
26415 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
26416 return rb_dvar_defined(
id, p->parent_iseq);
26426 return dvar_defined_ref(p,
id, NULL);
26432 return (vtable_included(p->lvtbl->args,
id) ||
26433 vtable_included(p->lvtbl->vars,
id));
26440 "regexp encoding option '%c' differs from source encoding '%s'",
26441 c, rb_enc_name(rb_parser_str_get_encoding(str)));
26448 int idx = rb_enc_find_index(name);
26450 rb_bug(
"unknown encoding name: %s", name);
26453 return rb_enc_from_index(idx);
26462 case ENC_ASCII8BIT:
26463 enc = rb_ascii8bit_encoding();
26466 enc = find_enc(p,
"EUC-JP");
26468 case ENC_Windows_31J:
26469 enc = find_enc(p,
"Windows-31J");
26472 enc = rb_utf8_encoding();
26485 int c = RE_OPTION_ENCODING_IDX(options);
26491 char_to_option_kcode(c, &opt, &idx);
26492 enc = kcode_to_enc(p, idx);
26493 if (enc != rb_parser_str_get_encoding(str) &&
26494 !rb_parser_is_ascii_string(p, str)) {
26497 rb_parser_string_set_encoding(str, enc);
26499 else if (RE_OPTION_ENCODING_NONE(options)) {
26500 if (!PARSER_ENCODING_IS_ASCII8BIT(p, str) &&
26501 !rb_parser_is_ascii_string(p, str)) {
26505 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
26507 else if (rb_is_usascii_enc(p->enc)) {
26508 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
26520 int c = rb_reg_fragment_setenc(p, str, options);
26521 if (c) reg_fragment_enc_error(p, str, c);
26524#ifndef UNIVERSAL_PARSER
26530 rb_parser_assignable_func assignable;
26534reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
26535 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
26540 long len = name_end - name;
26541 const char *s = (
const char *)name;
26543 return rb_reg_named_capture_assign_iter_impl(p, s,
len, enc, &arg->succ_block, arg->loc, arg->assignable);
26547reg_named_capture_assign(
struct parser_params* p,
VALUE regexp,
const YYLTYPE *loc, rb_parser_assignable_func assignable)
26552 arg.enc = rb_enc_get(regexp);
26553 arg.succ_block = 0;
26555 arg.assignable = assignable;
26556 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
26558 if (!arg.succ_block)
return 0;
26559 return RNODE_BLOCK(arg.succ_block)->nd_next;
26567 return assignable(p,
id, val, loc);
26571rb_reg_named_capture_assign_iter_impl(
struct parser_params *p,
const char *s,
long len,
26577 if (!
len)
return ST_CONTINUE;
26578 if (!VALID_SYMNAME_P(s,
len, enc, ID_LOCAL))
26579 return ST_CONTINUE;
26581 var = intern_cstr(s,
len, enc);
26582 if (
len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)
len)) {
26583 if (!lvar_defined(p, var))
return ST_CONTINUE;
26585 node = node_assign(p, assignable(p, var, 0, loc), NEW_SYM(rb_id2str(var), loc), NO_LEX_CTXT, loc);
26586 succ = *succ_block;
26587 if (!succ) succ = NEW_ERROR(loc);
26588 succ = block_append(p, succ, node);
26589 *succ_block = succ;
26590 return ST_CONTINUE;
26598 reg_fragment_setenc(p, str, options);
26599 str2 = rb_str_new_parser_string(str);
26600 return rb_parser_reg_compile(p, str2, options);
26607 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
26617 err = rb_errinfo();
26618 re = parser_reg_compile(p, str, options);
26620 VALUE m = rb_attr_get(rb_errinfo(), idMesg);
26621 rb_set_errinfo(err);
26622 compile_error(p,
"%"PRIsVALUE, m);
26630rb_ruby_parser_set_options(
struct parser_params *p,
int print,
int loop,
int chomp,
int split)
26632 p->do_print = print;
26634 p->do_chomp = chomp;
26635 p->do_split = split;
26641 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
26642 const YYLTYPE *
const LOC = &default_location;
26645 NODE *print = (
NODE *)NEW_FCALL(rb_intern(
"print"),
26646 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
26648 node = block_append(p, node, print);
26652 NODE *irs = NEW_LIST(NEW_GVAR(rb_intern(
"$/"), LOC), LOC);
26655 ID ifs = rb_intern(
"$;");
26656 ID fields = rb_intern(
"$F");
26657 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
26658 NODE *split = NEW_GASGN(fields,
26659 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
26660 rb_intern(
"split"), args, LOC),
26662 node = block_append(p, split, node);
26666 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
26667 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
26670 node = NEW_WHILE((
NODE *)NEW_FCALL(idGets, irs, LOC), node, 1, LOC, &NULL_LOC, &NULL_LOC);
26687 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
26695 p->command_start = TRUE;
26696 p->ruby_sourcefile_string =
Qnil;
26697 p->lex.lpar_beg = -1;
26698 string_buffer_init(p);
26700 p->delayed.token = NULL;
26701 p->frozen_string_literal = -1;
26703 p->error_buffer =
Qfalse;
26704 p->end_expect_token_locations = NULL;
26709 p->parsing_thread =
Qnil;
26711 p->s_lvalue =
Qnil;
26712 p->s_value_stack = rb_ary_new();
26714 p->debug_buffer =
Qnil;
26715 p->debug_output = rb_ractor_stdout();
26716 p->enc = rb_utf8_encoding();
26721#define rb_ruby_parser_mark ripper_parser_mark
26722#define rb_ruby_parser_free ripper_parser_free
26723#define rb_ruby_parser_memsize ripper_parser_memsize
26727rb_ruby_parser_mark(
void *ptr)
26731 rb_gc_mark(p->ruby_sourcefile_string);
26733 rb_gc_mark(p->error_buffer);
26735 rb_gc_mark(p->value);
26736 rb_gc_mark(p->result);
26737 rb_gc_mark(p->parsing_thread);
26738 rb_gc_mark(p->s_value);
26739 rb_gc_mark(p->s_lvalue);
26740 rb_gc_mark(p->s_value_stack);
26742 rb_gc_mark(p->debug_buffer);
26743 rb_gc_mark(p->debug_output);
26747rb_ruby_parser_free(
void *ptr)
26753 rb_ast_free(p->ast);
26756 if (p->warn_duplicate_keys_table) {
26757 st_free_table(p->warn_duplicate_keys_table);
26762 rb_parser_ary_free(p, p->tokens);
26767 ruby_sized_xfree(p->tokenbuf, p->toksiz);
26770 for (local = p->lvtbl; local; local = prev) {
26771 prev = local->prev;
26772 local_free(p, local);
26777 while ((ptinfo = p->token_info) != 0) {
26778 p->token_info = ptinfo->next;
26782 string_buffer_free(p);
26785 st_free_table(p->pvtbl);
26788 if (CASE_LABELS_ENABLED_P(p->case_labels)) {
26789 st_free_table(p->case_labels);
26792 xfree(p->lex.strterm);
26793 p->lex.strterm = 0;
26799rb_ruby_parser_memsize(
const void *ptr)
26803 size_t size =
sizeof(*p);
26806 for (local = p->lvtbl; local; local = local->prev) {
26807 size +=
sizeof(*local);
26808 if (local->vars) size += local->vars->capa *
sizeof(
ID);
26814#undef rb_reserved_word
26817rb_reserved_word(
const char *str,
unsigned int len)
26819 return reserved_word(str,
len);
26822#ifdef UNIVERSAL_PARSER
26824rb_ruby_parser_allocate(
const rb_parser_config_t *config)
26828 p->config = config;
26833rb_ruby_parser_new(
const rb_parser_config_t *config)
26836 rb_parser_t *p = rb_ruby_parser_allocate(config);
26837 parser_initialize(p);
26842rb_ruby_parser_allocate(
void)
26850rb_ruby_parser_new(
void)
26854 parser_initialize(p);
26863 p->parent_iseq = base;
26870 p->debug_lines = rb_parser_ary_new_capa_for_script_line(p, 10);
26876 p->error_tolerant = 1;
26882 p->keep_tokens = 1;
26883 p->tokens = rb_parser_ary_new_capa_for_ast_token(p, 10);
26895 return p->ruby__end__seen;
26899rb_ruby_parser_set_yydebug(
rb_parser_t *p,
int flag)
26928 return p->debug_output;
26934 p->debug_output = output;
26940 return p->parsing_thread;
26946 p->parsing_thread = parsing_thread;
26950rb_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)
26952 p->lex.gets = gets;
26953 p->lex.input = input;
26955 p->ruby_sourcefile_string = sourcefile_string;
26956 p->ruby_sourcefile = sourcefile;
26957 p->ruby_sourceline = sourceline;
26973rb_ruby_parser_ruby_sourcefile_string(
rb_parser_t *p)
26975 return p->ruby_sourcefile_string;
26981 return p->ruby_sourceline;
26987 return p->lex.state;
26994 p->ast = rb_ast_new();
26995 ripper_yyparse((
void*)p);
26996 rb_ast_free(p->ast);
26999 p->eval_tree_begin = 0;
27005 return dedent_string(p,
string, width);
27011 return p->lex.input != 0;
27017 parser_initialize(p);
27023 return p->lex.ptok - p->lex.pbeg;
27029 return p->lex.pcur - p->lex.ptok;
27035 return p->lex.lastline;
27039rb_ruby_ripper_lex_state_name(
struct parser_params *p,
int state)
27041 return rb_parser_lex_state_name(p, (
enum lex_state_e)state);
27044#ifdef UNIVERSAL_PARSER
27046rb_ripper_parser_params_allocate(
const rb_parser_config_t *config)
27049 p->config = config;
27055rb_ruby_ripper_parser_allocate(
void)
27063rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
27066 VALUE mesg = p->debug_buffer;
27070 rb_str_vcatf(mesg, fmt, ap);
27072 if (char_at_end(p, mesg, 0) ==
'\n') {
27073 rb_io_write(p->debug_output, mesg);
27074 p->debug_buffer =
Qnil;
27082 int lineno, column;
27085 lineno = loc->end_pos.lineno;
27086 column = loc->end_pos.column;
27089 lineno = p->ruby_sourceline;
27093 rb_io_flush(p->debug_output);
27097 rb_syntax_error_append(p->error_buffer,
27098 p->ruby_sourcefile_string,
27105count_char(
const char *str,
int c)
27108 while (str[n] == c) ++n;
27119rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
27121 if (*yystr ==
'"') {
27122 size_t yyn = 0, bquote = 0;
27123 const char *yyp = yystr;
27129 bquote = count_char(yyp+1,
'\'') + 1;
27130 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
27136 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
27137 if (yyres) memcpy(yyres + yyn, yyp, bquote);
27143 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
27144 if (yyres) memcpy(yyres + yyn, yyp, 3);
27149 goto do_not_strip_quotes;
27153 goto do_not_strip_quotes;
27156 if (*++yyp !=
'\\')
27157 goto do_not_strip_quotes;
27172 do_not_strip_quotes: ;
27175 if (!yyres)
return strlen(yystr);
27177 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
27182#define validate(x) (void)(x)
27211 return rb_funcall(p->value, mid, 3, a, b, c);
27221 return rb_funcall(p->value, mid, 4, a, b, c, d);
27232 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
27245 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.
#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.