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)
136static NODE *reg_named_capture_assign(
struct parser_params* p,
VALUE regexp,
const YYLTYPE *loc, rb_parser_assignable_func assignable);
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)
144static int rb_parser_string_hash_cmp(rb_parser_string_t *str1, rb_parser_string_t *str2);
147static rb_parser_string_t *rb_parser_string_deep_copy(
struct parser_params *p,
const rb_parser_string_t *original);
151node_integer_cmp(rb_node_integer_t *n1, rb_node_integer_t *n2)
153 return (n1->minus != n2->minus ||
154 n1->base != n2->base ||
155 strcmp(n1->val, n2->val));
159node_float_cmp(rb_node_float_t *n1, rb_node_float_t *n2)
161 return (n1->minus != n2->minus ||
162 strcmp(n1->val, n2->val));
166node_rational_cmp(rb_node_rational_t *n1, rb_node_rational_t *n2)
168 return (n1->minus != n2->minus ||
169 n1->base != n2->base ||
170 n1->seen_point != n2->seen_point ||
171 strcmp(n1->val, n2->val));
175node_imaginary_cmp(rb_node_imaginary_t *n1, rb_node_imaginary_t *n2)
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));
185rb_parser_regx_hash_cmp(rb_node_regx_t *n1, rb_node_regx_t *n2)
187 return (n1->options != n2->options ||
188 rb_parser_string_hash_cmp(n1->string, n2->string));
191static st_index_t rb_parser_str_hash(rb_parser_string_t *str);
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)
241 NODE *node = (NODE *)a;
242 enum node_type
type = nd_type(node);
246 return rb_char_p_hash(RNODE_INTEGER(node)->val);
248 return rb_char_p_hash(RNODE_FLOAT(node)->val);
250 return rb_char_p_hash(RNODE_RATIONAL(node)->val);
252 return rb_char_p_hash(RNODE_IMAGINARY(node)->val);
254 return rb_parser_str_hash(RNODE_STR(node)->
string);
256 return rb_parser_str_hash(RNODE_SYM(node)->
string);
258 return rb_parser_str_hash(RNODE_REGX(node)->
string);
260 return (st_index_t)node->nd_loc.beg_pos.lineno;
262 return rb_parser_str_hash(RNODE_FILE(node)->path);
264 return (st_index_t)RNODE_ENCODING(node)->enc;
266#ifdef UNIVERSAL_PARSER
269 rb_bug(
"unexpected node: %s", ruby_node_name(
type));
277 return '\0' <= c && c <=
'\x7f';
281#define ISASCII parse_isascii
286 return c ==
' ' || (
'\t' <= c && c <=
'\r');
290#define ISSPACE parse_isspace
295 return (
'\0' <= c && c <
' ') || c ==
'\x7f';
299#define ISCNTRL(c) parse_iscntrl(c)
304 return 'A' <= c && c <=
'Z';
310 return 'a' <= c && c <=
'z';
316 return parse_isupper(c) || parse_islower(c);
320#define ISALPHA(c) parse_isalpha(c)
325 return '0' <= c && c <=
'9';
329#define ISDIGIT(c) parse_isdigit(c)
338#define ISALNUM(c) parse_isalnum(c)
343 return ISDIGIT(c) || (
'A' <= c && c <=
'F') || (
'a' <= c && c <=
'f');
347#define ISXDIGIT(c) parse_isxdigit(c)
349#include "parser_st.h"
352#define STRCASECMP rb_parser_st_locale_insensitive_strcasecmp
355#define STRNCASECMP rb_parser_st_locale_insensitive_strncasecmp
358#include "ripper_init.h"
369 unsigned int in_defined: 1;
370 unsigned int in_kwarg: 1;
371 unsigned int in_argdef: 1;
372 unsigned int in_def: 1;
373 unsigned int in_class: 1;
374 unsigned int has_trailing_semicolon: 1;
375 BITFIELD(
enum rb_parser_shareability, shareable_constant_value, 2);
376 BITFIELD(
enum rescue_context, in_rescue, 2);
377 unsigned int cant_return: 1;
378 unsigned int in_alt_pattern: 1;
379 unsigned int capture_in_pattern: 1;
384#if defined(__GNUC__) && !defined(__clang__)
396#define NO_LEX_CTXT (struct lex_context){0}
398#ifndef WARN_PAST_SCOPE
399# define WARN_PAST_SCOPE 0
404#define yydebug (p->debug)
406#define YYFPRINTF(out, ...) rb_parser_printf(p, __VA_ARGS__)
407#define YY_LOCATION_PRINT(File, loc, p) \
408 rb_parser_printf(p, "%d.%d-%d.%d", \
409 (loc).beg_pos.lineno, (loc).beg_pos.column,\
410 (loc).end_pos.lineno, (loc).end_pos.column)
411#define YYLLOC_DEFAULT(Current, Rhs, N) \
415 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
416 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
420 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
421 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
425 (((Msgid)[0] == 'm') && (strcmp((Msgid), "memory exhausted") == 0) ? \
426 "nesting too deep" : (Msgid))
428#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
429 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
430#define RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(Current) \
431 rb_parser_set_location_of_delayed_token(p, &(Current))
432#define RUBY_SET_YYLLOC_OF_HEREDOC_END(Current) \
433 rb_parser_set_location_of_heredoc_end(p, &(Current))
434#define RUBY_SET_YYLLOC_OF_DUMMY_END(Current) \
435 rb_parser_set_location_of_dummy_end(p, &(Current))
436#define RUBY_SET_YYLLOC_OF_NONE(Current) \
437 rb_parser_set_location_of_none(p, &(Current))
438#define RUBY_SET_YYLLOC(Current) \
439 rb_parser_set_location(p, &(Current))
440#define RUBY_INIT_YYLLOC() \
442 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
443 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
446#define IS_lex_state_for(x, ls) ((x) & (ls))
447#define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
448#define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
449#define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
451# define SET_LEX_STATE(ls) \
452 parser_set_lex_state(p, ls, __LINE__)
453static inline enum lex_state_e parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line);
455typedef VALUE stack_type;
457static const rb_code_location_t NULL_LOC = { {0, -1}, {0, -1} };
459# define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
460# define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
461# define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
462# define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
463# define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
467#define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
468#define COND_POP() BITSTACK_POP(cond_stack)
469#define COND_P() BITSTACK_SET_P(cond_stack)
470#define COND_SET(n) BITSTACK_SET(cond_stack, (n))
474#define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
475#define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
476#define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
477#define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
495 NODE *outer, *inner, *current;
512#define DVARS_INHERIT ((void*)1)
513#define DVARS_TOPSCOPE NULL
514#define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
518 rb_code_position_t beg;
525 const rb_code_position_t *pos;
527} end_expect_token_locations_t;
533 rb_parser_string_t *buf[FLEX_ARY_LEN];
534} parser_string_buffer_elem_t;
537 parser_string_buffer_elem_t *head;
538 parser_string_buffer_elem_t *last;
539} parser_string_buffer_t;
541#define AFTER_HEREDOC_WITHOUT_TERMINATOR ((rb_parser_string_t *)1)
557 rb_strterm_t *strterm;
558 rb_parser_lex_gets_func *gets;
559 rb_parser_input_data input;
560 parser_string_buffer_t string_buffer;
561 rb_parser_string_t *lastline;
562 rb_parser_string_t *nextline;
567 enum lex_state_e state;
575 stack_type cond_stack;
576 stack_type cmdarg_stack;
581 int heredoc_line_indent;
588 const char *ruby_sourcefile;
589 VALUE ruby_sourcefile_string;
591 token_info *token_info;
593 rb_node_exits_t *exits;
599 rb_parser_string_t *token;
609 st_table *warn_duplicate_keys_table;
616 NODE *eval_tree_begin;
620#ifdef UNIVERSAL_PARSER
621 const rb_parser_config_t *config;
624 signed int frozen_string_literal:2;
626 unsigned int command_start:1;
627 unsigned int eofp: 1;
628 unsigned int ruby__end__seen: 1;
629 unsigned int debug: 1;
630 unsigned int has_shebang: 1;
631 unsigned int token_seen: 1;
632 unsigned int token_info_enabled: 1;
634 unsigned int past_scope_enabled: 1;
636 unsigned int error_p: 1;
637 unsigned int cr_seen: 1;
642 unsigned int do_print: 1;
643 unsigned int do_loop: 1;
644 unsigned int do_chomp: 1;
645 unsigned int do_split: 1;
646 unsigned int error_tolerant: 1;
647 unsigned int keep_tokens: 1;
650 rb_parser_ary_t *debug_lines;
655 end_expect_token_locations_t *end_expect_token_locations;
659 rb_parser_ary_t *tokens;
665 VALUE parsing_thread;
672#define NUMPARAM_ID_P(id) numparam_id_p(p, id)
673#define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - (tNUMPARAM_1 - 1))
674#define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 - 1 + (idx)))
678 if (!is_local_id(
id) ||
id < (tNUMPARAM_1 << ID_SCOPE_SHIFT))
return 0;
679 unsigned int idx = NUMPARAM_ID_TO_IDX(
id);
680 return idx > 0 && idx <= NUMPARAM_MAX;
689 rb_parser_printf(p,
"after-shift: %+"PRIsVALUE
"\n", p->s_value);
705 for (
int i = 0; i <
len; i++) {
708 rb_parser_printf(p,
"after-reduce pop: %+"PRIsVALUE
"\n", tos);
712 rb_parser_printf(p,
"after-reduce push: %+"PRIsVALUE
"\n", p->s_lvalue);
722 rb_parser_printf(p,
"after-shift-error-token:\n");
730 for (
int i = 0; i <
len; i++) {
733 rb_parser_printf(p,
"after-pop-stack pop: %+"PRIsVALUE
"\n", tos);
764#define intern_cstr(n,l,en) rb_intern3(n,l,en)
766#define STRING_NEW0() rb_parser_encoding_string_new(p,0,0,p->enc)
768#define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
769#define STR_NEW0() rb_enc_str_new(0,0,p->enc)
770#define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
771#define STR_NEW3(ptr,len,e,func) parser_str_new(p, (ptr),(len),(e),(func),p->enc)
772#define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
773#define VALID_SYMNAME_P(s, l, enc, type) (rb_enc_symname_type(s, l, enc, (1U<<(type))) == (int)(type))
779 long len = RSTRING_LEN(str);
780 return len > 0 ? (
unsigned char)RSTRING_PTR(str)[
len-1] : when_empty;
787 st_free_table(p->pvtbl);
794 if (p->pktbl) st_free_table(p->pktbl);
798#define STRING_BUF_DEFAULT_LEN 16
803 parser_string_buffer_t *buf = &p->lex.string_buffer;
804 const size_t size = offsetof(parser_string_buffer_elem_t, buf) +
sizeof(rb_parser_string_t *) * STRING_BUF_DEFAULT_LEN;
806 buf->head = buf->last =
xmalloc(size);
807 buf->head->len = STRING_BUF_DEFAULT_LEN;
809 buf->head->next = NULL;
813string_buffer_append(
struct parser_params *p, rb_parser_string_t *str)
815 parser_string_buffer_t *buf = &p->lex.string_buffer;
817 if (buf->head->used >= buf->head->len) {
818 parser_string_buffer_elem_t *elem;
819 long n = buf->head->len * 2;
820 const size_t size = offsetof(parser_string_buffer_elem_t, buf) +
sizeof(rb_parser_string_t *) * n;
826 buf->last->next = elem;
829 buf->last->buf[buf->last->used++] = str;
835 parser_string_buffer_elem_t *elem = p->lex.string_buffer.head;
838 parser_string_buffer_elem_t *next_elem = elem->next;
840 for (
long i = 0; i < elem->used; i++) {
841 rb_parser_string_free(p, elem->buf[i]);
853debug_end_expect_token_locations(
struct parser_params *p,
const char *name)
856 VALUE mesg = rb_sprintf(
"%s: [", name);
858 for (end_expect_token_locations_t *loc = p->end_expect_token_locations; loc; loc = loc->prev) {
861 rb_str_catf(mesg,
"[%d, %d]", loc->pos->lineno, loc->pos->column);
865 flush_debug_buffer(p, p->debug_output, mesg);
870push_end_expect_token_locations(
struct parser_params *p,
const rb_code_position_t *pos)
872 if(!p->error_tolerant)
return;
874 end_expect_token_locations_t *locations;
875 locations =
ALLOC(end_expect_token_locations_t);
876 locations->pos = pos;
877 locations->prev = p->end_expect_token_locations;
878 p->end_expect_token_locations = locations;
880 debug_end_expect_token_locations(p,
"push_end_expect_token_locations");
886 if(!p->end_expect_token_locations)
return;
888 end_expect_token_locations_t *locations = p->end_expect_token_locations->prev;
889 ruby_sized_xfree(p->end_expect_token_locations,
sizeof(end_expect_token_locations_t));
890 p->end_expect_token_locations = locations;
892 debug_end_expect_token_locations(p,
"pop_end_expect_token_locations");
895static end_expect_token_locations_t *
898 return p->end_expect_token_locations;
902parser_token2char(
struct parser_params *p,
enum yytokentype tok)
905#define TOKEN2CHAR(tok) case tok: return (#tok);
906#define TOKEN2CHAR2(tok, name) case tok: return (name);
907 TOKEN2CHAR2(
' ',
"word_sep");
908 TOKEN2CHAR2(
'!',
"!")
909 TOKEN2CHAR2(
'%',
"%");
910 TOKEN2CHAR2(
'&',
"&");
911 TOKEN2CHAR2(
'*',
"*");
912 TOKEN2CHAR2(
'+',
"+");
913 TOKEN2CHAR2(
'-',
"-");
914 TOKEN2CHAR2(
'/',
"/");
915 TOKEN2CHAR2(
'<',
"<");
916 TOKEN2CHAR2(
'=',
"=");
917 TOKEN2CHAR2(
'>',
">");
918 TOKEN2CHAR2(
'?',
"?");
919 TOKEN2CHAR2(
'^',
"^");
920 TOKEN2CHAR2(
'|',
"|");
921 TOKEN2CHAR2(
'~',
"~");
922 TOKEN2CHAR2(
':',
":");
923 TOKEN2CHAR2(
',',
",");
924 TOKEN2CHAR2(
'.',
".");
925 TOKEN2CHAR2(
';',
";");
926 TOKEN2CHAR2(
'`',
"`");
927 TOKEN2CHAR2(
'\n',
"nl");
928 TOKEN2CHAR2(
'{',
"\"{\"");
929 TOKEN2CHAR2(
'}',
"\"}\"");
930 TOKEN2CHAR2(
'[',
"\"[\"");
931 TOKEN2CHAR2(
']',
"\"]\"");
932 TOKEN2CHAR2(
'(',
"\"(\"");
933 TOKEN2CHAR2(
')',
"\")\"");
934 TOKEN2CHAR2(
'\\',
"backslash");
935 TOKEN2CHAR(keyword_class);
936 TOKEN2CHAR(keyword_module);
937 TOKEN2CHAR(keyword_def);
938 TOKEN2CHAR(keyword_undef);
939 TOKEN2CHAR(keyword_begin);
940 TOKEN2CHAR(keyword_rescue);
941 TOKEN2CHAR(keyword_ensure);
942 TOKEN2CHAR(keyword_end);
943 TOKEN2CHAR(keyword_if);
944 TOKEN2CHAR(keyword_unless);
945 TOKEN2CHAR(keyword_then);
946 TOKEN2CHAR(keyword_elsif);
947 TOKEN2CHAR(keyword_else);
948 TOKEN2CHAR(keyword_case);
949 TOKEN2CHAR(keyword_when);
950 TOKEN2CHAR(keyword_while);
951 TOKEN2CHAR(keyword_until);
952 TOKEN2CHAR(keyword_for);
953 TOKEN2CHAR(keyword_break);
954 TOKEN2CHAR(keyword_next);
955 TOKEN2CHAR(keyword_redo);
956 TOKEN2CHAR(keyword_retry);
957 TOKEN2CHAR(keyword_in);
958 TOKEN2CHAR(keyword_do);
959 TOKEN2CHAR(keyword_do_cond);
960 TOKEN2CHAR(keyword_do_block);
961 TOKEN2CHAR(keyword_do_LAMBDA);
962 TOKEN2CHAR(keyword_return);
963 TOKEN2CHAR(keyword_yield);
964 TOKEN2CHAR(keyword_super);
965 TOKEN2CHAR(keyword_self);
966 TOKEN2CHAR(keyword_nil);
967 TOKEN2CHAR(keyword_true);
968 TOKEN2CHAR(keyword_false);
969 TOKEN2CHAR(keyword_and);
970 TOKEN2CHAR(keyword_or);
971 TOKEN2CHAR(keyword_not);
972 TOKEN2CHAR(modifier_if);
973 TOKEN2CHAR(modifier_unless);
974 TOKEN2CHAR(modifier_while);
975 TOKEN2CHAR(modifier_until);
976 TOKEN2CHAR(modifier_rescue);
977 TOKEN2CHAR(keyword_alias);
978 TOKEN2CHAR(keyword_defined);
979 TOKEN2CHAR(keyword_BEGIN);
980 TOKEN2CHAR(keyword_END);
981 TOKEN2CHAR(keyword__LINE__);
982 TOKEN2CHAR(keyword__FILE__);
983 TOKEN2CHAR(keyword__ENCODING__);
984 TOKEN2CHAR(tIDENTIFIER);
988 TOKEN2CHAR(tCONSTANT);
991 TOKEN2CHAR(tINTEGER);
993 TOKEN2CHAR(tRATIONAL);
994 TOKEN2CHAR(tIMAGINARY);
996 TOKEN2CHAR(tNTH_REF);
997 TOKEN2CHAR(tBACK_REF);
998 TOKEN2CHAR(tSTRING_CONTENT);
999 TOKEN2CHAR(tREGEXP_END);
1000 TOKEN2CHAR(tDUMNY_END);
1003 TOKEN2CHAR(tUMINUS);
1014 TOKEN2CHAR(tNMATCH);
1023 TOKEN2CHAR(tANDDOT);
1024 TOKEN2CHAR(tCOLON2);
1025 TOKEN2CHAR(tCOLON3);
1026 TOKEN2CHAR(tOP_ASGN);
1028 TOKEN2CHAR(tLPAREN);
1029 TOKEN2CHAR(tLPAREN_ARG);
1030 TOKEN2CHAR(tLBRACK);
1031 TOKEN2CHAR(tLBRACE);
1032 TOKEN2CHAR(tLBRACE_ARG);
1036 TOKEN2CHAR(tLAMBDA);
1037 TOKEN2CHAR(tSYMBEG);
1038 TOKEN2CHAR(tSTRING_BEG);
1039 TOKEN2CHAR(tXSTRING_BEG);
1040 TOKEN2CHAR(tREGEXP_BEG);
1041 TOKEN2CHAR(tWORDS_BEG);
1042 TOKEN2CHAR(tQWORDS_BEG);
1043 TOKEN2CHAR(tSYMBOLS_BEG);
1044 TOKEN2CHAR(tQSYMBOLS_BEG);
1045 TOKEN2CHAR(tSTRING_END);
1046 TOKEN2CHAR(tSTRING_DEND);
1047 TOKEN2CHAR(tSTRING_DBEG);
1048 TOKEN2CHAR(tSTRING_DVAR);
1049 TOKEN2CHAR(tLAMBEG);
1050 TOKEN2CHAR(tLABEL_END);
1051 TOKEN2CHAR(tIGNORED_NL);
1052 TOKEN2CHAR(tCOMMENT);
1053 TOKEN2CHAR(tEMBDOC_BEG);
1054 TOKEN2CHAR(tEMBDOC);
1055 TOKEN2CHAR(tEMBDOC_END);
1056 TOKEN2CHAR(tHEREDOC_BEG);
1057 TOKEN2CHAR(tHEREDOC_END);
1058 TOKEN2CHAR(k__END__);
1059 TOKEN2CHAR(tLOWEST);
1060 TOKEN2CHAR(tUMINUS_NUM);
1061 TOKEN2CHAR(tLAST_TOKEN);
1066 rb_bug(
"parser_token2id: unknown token %d", tok);
1072push_end_expect_token_locations(
struct parser_params *p,
const rb_code_position_t *pos)
1083static
int parser_yyerror(struct
parser_params*, const YYLTYPE *yylloc, const
char*);
1085static
int parser_yyerror0(struct
parser_params*, const
char*);
1086#define yyerror0(msg) parser_yyerror0(p, (msg))
1087#define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
1088#define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
1089#define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
1090#define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
1091#define lex_eol_p(p) lex_eol_n_p(p, 0)
1092#define lex_eol_n_p(p,n) lex_eol_ptr_n_p(p, (p)->lex.pcur, n)
1093#define lex_eol_ptr_p(p,ptr) lex_eol_ptr_n_p(p,ptr,0)
1094#define lex_eol_ptr_n_p(p,ptr,n) ((ptr)+(n) >= (p)->lex.pend)
1096static void token_info_setup(
token_info *ptinfo,
const char *
ptr,
const rb_code_location_t *loc);
1097static void token_info_push(
struct parser_params*,
const char *token,
const rb_code_location_t *loc);
1098static void token_info_pop(
struct parser_params*,
const char *token,
const rb_code_location_t *loc);
1099static void token_info_warn(
struct parser_params *p,
const char *token,
token_info *ptinfo_beg,
int same,
const rb_code_location_t *loc);
1100static void token_info_drop(
struct parser_params *p,
const char *token, rb_code_position_t beg_pos);
1103#define compile_for_eval (0)
1105#define compile_for_eval (p->parent_iseq != 0)
1108#define token_column ((int)(p->lex.ptok - p->lex.pbeg))
1110#define CALL_Q_P(q) ((q) == tANDDOT)
1111#define NEW_QCALL(q,r,m,a,loc) (CALL_Q_P(q) ? NEW_QCALL0(r,m,a,loc) : NEW_CALL(r,m,a,loc))
1113#define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
1120 rb_ast_delete_node(p->ast, n);
1123static rb_node_scope_t *rb_node_scope_new(
struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body, NODE *nd_parent,
const YYLTYPE *loc);
1124static rb_node_scope_t *rb_node_scope_new2(
struct parser_params *p, rb_ast_id_table_t *nd_tbl, rb_node_args_t *nd_args, NODE *nd_body, NODE *nd_parent,
const YYLTYPE *loc);
1125static rb_node_block_t *rb_node_block_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc);
1126static rb_node_if_t *rb_node_if_new(
struct parser_params *p, NODE *nd_cond, NODE *nd_body, NODE *nd_else,
const YYLTYPE *loc,
const YYLTYPE* if_keyword_loc,
const YYLTYPE* then_keyword_loc,
const YYLTYPE* end_keyword_loc);
1127static rb_node_unless_t *rb_node_unless_new(
struct parser_params *p, NODE *nd_cond, NODE *nd_body, NODE *nd_else,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc,
const YYLTYPE *then_keyword_loc,
const YYLTYPE *end_keyword_loc);
1128static rb_node_case_t *rb_node_case_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *case_keyword_loc,
const YYLTYPE *end_keyword_loc);
1129static rb_node_case2_t *rb_node_case2_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *case_keyword_loc,
const YYLTYPE *end_keyword_loc);
1130static rb_node_case3_t *rb_node_case3_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *case_keyword_loc,
const YYLTYPE *end_keyword_loc);
1131static rb_node_when_t *rb_node_when_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body, NODE *nd_next,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc,
const YYLTYPE *then_keyword_loc);
1132static rb_node_in_t *rb_node_in_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body, NODE *nd_next,
const YYLTYPE *loc,
const YYLTYPE *in_keyword_loc,
const YYLTYPE *then_keyword_loc,
const YYLTYPE *operator_loc);
1133static rb_node_while_t *rb_node_while_new(
struct parser_params *p, NODE *nd_cond, NODE *nd_body,
long nd_state,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc,
const YYLTYPE *closing_loc);
1134static rb_node_until_t *rb_node_until_new(
struct parser_params *p, NODE *nd_cond, NODE *nd_body,
long nd_state,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc,
const YYLTYPE *closing_loc);
1135static rb_node_iter_t *rb_node_iter_new(
struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body,
const YYLTYPE *loc);
1136static rb_node_for_t *rb_node_for_new(
struct parser_params *p, NODE *nd_iter, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *for_keyword_loc,
const YYLTYPE *in_keyword_loc,
const YYLTYPE *do_keyword_loc,
const YYLTYPE *end_keyword_loc);
1137static rb_node_for_masgn_t *rb_node_for_masgn_new(
struct parser_params *p, NODE *nd_var,
const YYLTYPE *loc);
1138static rb_node_retry_t *rb_node_retry_new(
struct parser_params *p,
const YYLTYPE *loc);
1139static rb_node_begin_t *rb_node_begin_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc);
1140static rb_node_rescue_t *rb_node_rescue_new(
struct parser_params *p, NODE *nd_head, NODE *nd_resq, NODE *nd_else,
const YYLTYPE *loc);
1141static rb_node_resbody_t *rb_node_resbody_new(
struct parser_params *p, NODE *nd_args, NODE *nd_exc_var, NODE *nd_body, NODE *nd_next,
const YYLTYPE *loc);
1142static rb_node_ensure_t *rb_node_ensure_new(
struct parser_params *p, NODE *nd_head, NODE *nd_ensr,
const YYLTYPE *loc);
1143static rb_node_and_t *rb_node_and_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc,
const YYLTYPE *operator_loc);
1144static rb_node_or_t *rb_node_or_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc,
const YYLTYPE *operator_loc);
1145static rb_node_masgn_t *rb_node_masgn_new(
struct parser_params *p, NODE *nd_head, NODE *nd_args,
const YYLTYPE *loc);
1146static rb_node_lasgn_t *rb_node_lasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc);
1147static rb_node_dasgn_t *rb_node_dasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc);
1148static rb_node_gasgn_t *rb_node_gasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc);
1149static rb_node_iasgn_t *rb_node_iasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc);
1150static rb_node_cdecl_t *rb_node_cdecl_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value, NODE *nd_else,
enum rb_parser_shareability shareability,
const YYLTYPE *loc);
1151static rb_node_cvasgn_t *rb_node_cvasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc);
1152static rb_node_op_asgn1_t *rb_node_op_asgn1_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *index, NODE *rvalue,
const YYLTYPE *loc,
const YYLTYPE *call_operator_loc,
const YYLTYPE *opening_loc,
const YYLTYPE *closing_loc,
const YYLTYPE *binary_operator_loc);
1153static rb_node_op_asgn2_t *rb_node_op_asgn2_new(
struct parser_params *p, NODE *nd_recv, NODE *nd_value,
ID nd_vid,
ID nd_mid,
bool nd_aid,
const YYLTYPE *loc,
const YYLTYPE *call_operator_loc,
const YYLTYPE *message_loc,
const YYLTYPE *binary_operator_loc);
1154static rb_node_op_asgn_or_t *rb_node_op_asgn_or_new(
struct parser_params *p, NODE *nd_head, NODE *nd_value,
const YYLTYPE *loc);
1155static rb_node_op_asgn_and_t *rb_node_op_asgn_and_new(
struct parser_params *p, NODE *nd_head, NODE *nd_value,
const YYLTYPE *loc);
1156static rb_node_op_cdecl_t *rb_node_op_cdecl_new(
struct parser_params *p, NODE *nd_head, NODE *nd_value,
ID nd_aid,
enum rb_parser_shareability shareability,
const YYLTYPE *loc);
1157static rb_node_call_t *rb_node_call_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc);
1158static rb_node_opcall_t *rb_node_opcall_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc);
1159static rb_node_fcall_t *rb_node_fcall_new(
struct parser_params *p,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc);
1160static rb_node_vcall_t *rb_node_vcall_new(
struct parser_params *p,
ID nd_mid,
const YYLTYPE *loc);
1161static rb_node_qcall_t *rb_node_qcall_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc);
1162static rb_node_super_t *rb_node_super_new(
struct parser_params *p, NODE *nd_args,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc,
const YYLTYPE *lparen_loc,
const YYLTYPE *rparen_loc);
1163static rb_node_zsuper_t * rb_node_zsuper_new(
struct parser_params *p,
const YYLTYPE *loc);
1164static rb_node_list_t *rb_node_list_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc);
1165static rb_node_list_t *rb_node_list_new2(
struct parser_params *p, NODE *nd_head,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc);
1166static rb_node_zlist_t *rb_node_zlist_new(
struct parser_params *p,
const YYLTYPE *loc);
1167static rb_node_hash_t *rb_node_hash_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc);
1168static rb_node_return_t *rb_node_return_new(
struct parser_params *p, NODE *nd_stts,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc);
1169static rb_node_yield_t *rb_node_yield_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc,
const YYLTYPE *lparen_loc,
const YYLTYPE *rparen_loc);
1170static rb_node_lvar_t *rb_node_lvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc);
1171static rb_node_dvar_t *rb_node_dvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc);
1172static rb_node_gvar_t *rb_node_gvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc);
1173static rb_node_ivar_t *rb_node_ivar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc);
1174static rb_node_const_t *rb_node_const_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc);
1175static rb_node_cvar_t *rb_node_cvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc);
1176static rb_node_nth_ref_t *rb_node_nth_ref_new(
struct parser_params *p,
long nd_nth,
const YYLTYPE *loc);
1177static rb_node_back_ref_t *rb_node_back_ref_new(
struct parser_params *p,
long nd_nth,
const YYLTYPE *loc);
1178static rb_node_match2_t *rb_node_match2_new(
struct parser_params *p, NODE *nd_recv, NODE *nd_value,
const YYLTYPE *loc);
1179static rb_node_match3_t *rb_node_match3_new(
struct parser_params *p, NODE *nd_recv, NODE *nd_value,
const YYLTYPE *loc);
1180static rb_node_integer_t * rb_node_integer_new(
struct parser_params *p,
char* val,
int base,
const YYLTYPE *loc);
1181static rb_node_float_t * rb_node_float_new(
struct parser_params *p,
char* val,
const YYLTYPE *loc);
1182static rb_node_rational_t * rb_node_rational_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
const YYLTYPE *loc);
1183static rb_node_imaginary_t * rb_node_imaginary_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
enum rb_numeric_type,
const YYLTYPE *loc);
1184static rb_node_str_t *rb_node_str_new(
struct parser_params *p, rb_parser_string_t *
string,
const YYLTYPE *loc);
1185static rb_node_dstr_t *rb_node_dstr_new0(
struct parser_params *p, rb_parser_string_t *
string,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc);
1186static rb_node_dstr_t *rb_node_dstr_new(
struct parser_params *p, rb_parser_string_t *
string,
const YYLTYPE *loc);
1187static rb_node_xstr_t *rb_node_xstr_new(
struct parser_params *p, rb_parser_string_t *
string,
const YYLTYPE *loc);
1188static rb_node_dxstr_t *rb_node_dxstr_new(
struct parser_params *p, rb_parser_string_t *
string,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc);
1189static rb_node_evstr_t *rb_node_evstr_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *opening_loc,
const YYLTYPE *closing_loc);
1190static rb_node_regx_t *rb_node_regx_new(
struct parser_params *p, rb_parser_string_t *
string,
int options,
const YYLTYPE *loc,
const YYLTYPE *opening_loc,
const YYLTYPE *content_loc,
const YYLTYPE *closing_loc);
1191static rb_node_once_t *rb_node_once_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc);
1192static rb_node_args_t *rb_node_args_new(
struct parser_params *p,
const YYLTYPE *loc);
1193static rb_node_args_aux_t *rb_node_args_aux_new(
struct parser_params *p,
ID nd_pid,
int nd_plen,
const YYLTYPE *loc);
1194static rb_node_opt_arg_t *rb_node_opt_arg_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc);
1195static rb_node_kw_arg_t *rb_node_kw_arg_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc);
1196static rb_node_postarg_t *rb_node_postarg_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc);
1197static rb_node_argscat_t *rb_node_argscat_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body,
const YYLTYPE *loc);
1198static rb_node_argspush_t *rb_node_argspush_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body,
const YYLTYPE *loc);
1199static rb_node_splat_t *rb_node_splat_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc,
const YYLTYPE *operator_loc);
1200static rb_node_block_pass_t *rb_node_block_pass_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *operator_loc);
1201static rb_node_defn_t *rb_node_defn_new(
struct parser_params *p,
ID nd_mid, NODE *nd_defn,
const YYLTYPE *loc);
1202static rb_node_defs_t *rb_node_defs_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_defn,
const YYLTYPE *loc);
1203static rb_node_alias_t *rb_node_alias_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc);
1204static rb_node_valias_t *rb_node_valias_new(
struct parser_params *p,
ID nd_alias,
ID nd_orig,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc);
1205static rb_node_undef_t *rb_node_undef_new(
struct parser_params *p, NODE *nd_undef,
const YYLTYPE *loc);
1206static rb_node_class_t *rb_node_class_new(
struct parser_params *p, NODE *nd_cpath, NODE *nd_body, NODE *nd_super,
const YYLTYPE *loc,
const YYLTYPE *class_keyword_loc,
const YYLTYPE *inheritance_operator_loc,
const YYLTYPE *end_keyword_loc);
1207static rb_node_module_t *rb_node_module_new(
struct parser_params *p, NODE *nd_cpath, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *module_keyword_loc,
const YYLTYPE *end_keyword_loc);
1208static rb_node_sclass_t *rb_node_sclass_new(
struct parser_params *p, NODE *nd_recv, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *class_keyword_loc,
const YYLTYPE *operator_loc,
const YYLTYPE *end_keyword_loc);
1209static rb_node_colon2_t *rb_node_colon2_new(
struct parser_params *p, NODE *nd_head,
ID nd_mid,
const YYLTYPE *loc,
const YYLTYPE *delimiter_loc,
const YYLTYPE *name_loc);
1210static rb_node_colon3_t *rb_node_colon3_new(
struct parser_params *p,
ID nd_mid,
const YYLTYPE *loc,
const YYLTYPE *delimiter_loc,
const YYLTYPE *name_loc);
1211static rb_node_dot2_t *rb_node_dot2_new(
struct parser_params *p, NODE *nd_beg, NODE *nd_end,
const YYLTYPE *loc,
const YYLTYPE *operator_loc);
1212static rb_node_dot3_t *rb_node_dot3_new(
struct parser_params *p, NODE *nd_beg, NODE *nd_end,
const YYLTYPE *loc,
const YYLTYPE *operator_loc);
1213static rb_node_self_t *rb_node_self_new(
struct parser_params *p,
const YYLTYPE *loc);
1214static rb_node_nil_t *rb_node_nil_new(
struct parser_params *p,
const YYLTYPE *loc);
1215static rb_node_true_t *rb_node_true_new(
struct parser_params *p,
const YYLTYPE *loc);
1216static rb_node_false_t *rb_node_false_new(
struct parser_params *p,
const YYLTYPE *loc);
1217static rb_node_errinfo_t *rb_node_errinfo_new(
struct parser_params *p,
const YYLTYPE *loc);
1218static rb_node_defined_t *rb_node_defined_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc);
1219static rb_node_postexe_t *rb_node_postexe_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc,
const YYLTYPE *opening_loc,
const YYLTYPE *closing_loc);
1220static rb_node_sym_t *rb_node_sym_new(
struct parser_params *p,
VALUE str,
const YYLTYPE *loc);
1221static rb_node_dsym_t *rb_node_dsym_new(
struct parser_params *p, rb_parser_string_t *
string,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc);
1222static rb_node_attrasgn_t *rb_node_attrasgn_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc);
1223static rb_node_lambda_t *rb_node_lambda_new(
struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *operator_loc,
const YYLTYPE *opening_loc,
const YYLTYPE *closing_loc);
1224static rb_node_aryptn_t *rb_node_aryptn_new(
struct parser_params *p, NODE *pre_args, NODE *rest_arg, NODE *post_args,
const YYLTYPE *loc);
1225static rb_node_hshptn_t *rb_node_hshptn_new(
struct parser_params *p, NODE *nd_pconst, NODE *nd_pkwargs, NODE *nd_pkwrestarg,
const YYLTYPE *loc);
1226static rb_node_fndptn_t *rb_node_fndptn_new(
struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg,
const YYLTYPE *loc);
1227static rb_node_line_t *rb_node_line_new(
struct parser_params *p,
const YYLTYPE *loc);
1228static rb_node_file_t *rb_node_file_new(
struct parser_params *p,
VALUE str,
const YYLTYPE *loc);
1229static rb_node_error_t *rb_node_error_new(
struct parser_params *p,
const YYLTYPE *loc);
1231#define NEW_SCOPE(a,b,c,loc) (NODE *)rb_node_scope_new(p,a,b,c,loc)
1232#define NEW_SCOPE2(t,a,b,c,loc) (NODE *)rb_node_scope_new2(p,t,a,b,c,loc)
1233#define NEW_BLOCK(a,loc) (NODE *)rb_node_block_new(p,a,loc)
1234#define NEW_IF(c,t,e,loc,ik_loc,tk_loc,ek_loc) (NODE *)rb_node_if_new(p,c,t,e,loc,ik_loc,tk_loc,ek_loc)
1235#define NEW_UNLESS(c,t,e,loc,k_loc,t_loc,e_loc) (NODE *)rb_node_unless_new(p,c,t,e,loc,k_loc,t_loc,e_loc)
1236#define NEW_CASE(h,b,loc,ck_loc,ek_loc) (NODE *)rb_node_case_new(p,h,b,loc,ck_loc,ek_loc)
1237#define NEW_CASE2(b,loc,ck_loc,ek_loc) (NODE *)rb_node_case2_new(p,b,loc,ck_loc,ek_loc)
1238#define NEW_CASE3(h,b,loc,ck_loc,ek_loc) (NODE *)rb_node_case3_new(p,h,b,loc,ck_loc,ek_loc)
1239#define NEW_WHEN(c,t,e,loc,k_loc,t_loc) (NODE *)rb_node_when_new(p,c,t,e,loc,k_loc,t_loc)
1240#define NEW_IN(c,t,e,loc,ik_loc,tk_loc,o_loc) (NODE *)rb_node_in_new(p,c,t,e,loc,ik_loc,tk_loc,o_loc)
1241#define NEW_WHILE(c,b,n,loc,k_loc,c_loc) (NODE *)rb_node_while_new(p,c,b,n,loc,k_loc,c_loc)
1242#define NEW_UNTIL(c,b,n,loc,k_loc,c_loc) (NODE *)rb_node_until_new(p,c,b,n,loc,k_loc,c_loc)
1243#define NEW_ITER(a,b,loc) (NODE *)rb_node_iter_new(p,a,b,loc)
1244#define NEW_FOR(i,b,loc,f_loc,i_loc,d_loc,e_loc) (NODE *)rb_node_for_new(p,i,b,loc,f_loc,i_loc,d_loc,e_loc)
1245#define NEW_FOR_MASGN(v,loc) (NODE *)rb_node_for_masgn_new(p,v,loc)
1246#define NEW_RETRY(loc) (NODE *)rb_node_retry_new(p,loc)
1247#define NEW_BEGIN(b,loc) (NODE *)rb_node_begin_new(p,b,loc)
1248#define NEW_RESCUE(b,res,e,loc) (NODE *)rb_node_rescue_new(p,b,res,e,loc)
1249#define NEW_RESBODY(a,v,ex,n,loc) (NODE *)rb_node_resbody_new(p,a,v,ex,n,loc)
1250#define NEW_ENSURE(b,en,loc) (NODE *)rb_node_ensure_new(p,b,en,loc)
1251#define NEW_AND(f,s,loc,op_loc) (NODE *)rb_node_and_new(p,f,s,loc,op_loc)
1252#define NEW_OR(f,s,loc,op_loc) (NODE *)rb_node_or_new(p,f,s,loc,op_loc)
1253#define NEW_MASGN(l,r,loc) rb_node_masgn_new(p,l,r,loc)
1254#define NEW_LASGN(v,val,loc) (NODE *)rb_node_lasgn_new(p,v,val,loc)
1255#define NEW_DASGN(v,val,loc) (NODE *)rb_node_dasgn_new(p,v,val,loc)
1256#define NEW_GASGN(v,val,loc) (NODE *)rb_node_gasgn_new(p,v,val,loc)
1257#define NEW_IASGN(v,val,loc) (NODE *)rb_node_iasgn_new(p,v,val,loc)
1258#define NEW_CDECL(v,val,path,share,loc) (NODE *)rb_node_cdecl_new(p,v,val,path,share,loc)
1259#define NEW_CVASGN(v,val,loc) (NODE *)rb_node_cvasgn_new(p,v,val,loc)
1260#define NEW_OP_ASGN1(r,id,idx,rval,loc,c_op_loc,o_loc,c_loc,b_op_loc) (NODE *)rb_node_op_asgn1_new(p,r,id,idx,rval,loc,c_op_loc,o_loc,c_loc,b_op_loc)
1261#define NEW_OP_ASGN2(r,t,i,o,val,loc,c_op_loc,m_loc,b_op_loc) (NODE *)rb_node_op_asgn2_new(p,r,val,i,o,t,loc,c_op_loc,m_loc,b_op_loc)
1262#define NEW_OP_ASGN_OR(i,val,loc) (NODE *)rb_node_op_asgn_or_new(p,i,val,loc)
1263#define NEW_OP_ASGN_AND(i,val,loc) (NODE *)rb_node_op_asgn_and_new(p,i,val,loc)
1264#define NEW_OP_CDECL(v,op,val,share,loc) (NODE *)rb_node_op_cdecl_new(p,v,val,op,share,loc)
1265#define NEW_CALL(r,m,a,loc) (NODE *)rb_node_call_new(p,r,m,a,loc)
1266#define NEW_OPCALL(r,m,a,loc) (NODE *)rb_node_opcall_new(p,r,m,a,loc)
1267#define NEW_FCALL(m,a,loc) rb_node_fcall_new(p,m,a,loc)
1268#define NEW_VCALL(m,loc) (NODE *)rb_node_vcall_new(p,m,loc)
1269#define NEW_QCALL0(r,m,a,loc) (NODE *)rb_node_qcall_new(p,r,m,a,loc)
1270#define NEW_SUPER(a,loc,k_loc,l_loc,r_loc) (NODE *)rb_node_super_new(p,a,loc,k_loc,l_loc,r_loc)
1271#define NEW_ZSUPER(loc) (NODE *)rb_node_zsuper_new(p,loc)
1272#define NEW_LIST(a,loc) (NODE *)rb_node_list_new(p,a,loc)
1273#define NEW_LIST2(h,l,n,loc) (NODE *)rb_node_list_new2(p,h,l,n,loc)
1274#define NEW_ZLIST(loc) (NODE *)rb_node_zlist_new(p,loc)
1275#define NEW_HASH(a,loc) (NODE *)rb_node_hash_new(p,a,loc)
1276#define NEW_RETURN(s,loc,k_loc) (NODE *)rb_node_return_new(p,s,loc,k_loc)
1277#define NEW_YIELD(a,loc,k_loc,l_loc,r_loc) (NODE *)rb_node_yield_new(p,a,loc,k_loc,l_loc,r_loc)
1278#define NEW_LVAR(v,loc) (NODE *)rb_node_lvar_new(p,v,loc)
1279#define NEW_DVAR(v,loc) (NODE *)rb_node_dvar_new(p,v,loc)
1280#define NEW_GVAR(v,loc) (NODE *)rb_node_gvar_new(p,v,loc)
1281#define NEW_IVAR(v,loc) (NODE *)rb_node_ivar_new(p,v,loc)
1282#define NEW_CONST(v,loc) (NODE *)rb_node_const_new(p,v,loc)
1283#define NEW_CVAR(v,loc) (NODE *)rb_node_cvar_new(p,v,loc)
1284#define NEW_NTH_REF(n,loc) (NODE *)rb_node_nth_ref_new(p,n,loc)
1285#define NEW_BACK_REF(n,loc) (NODE *)rb_node_back_ref_new(p,n,loc)
1286#define NEW_MATCH2(n1,n2,loc) (NODE *)rb_node_match2_new(p,n1,n2,loc)
1287#define NEW_MATCH3(r,n2,loc) (NODE *)rb_node_match3_new(p,r,n2,loc)
1288#define NEW_INTEGER(val, base,loc) (NODE *)rb_node_integer_new(p,val,base,loc)
1289#define NEW_FLOAT(val,loc) (NODE *)rb_node_float_new(p,val,loc)
1290#define NEW_RATIONAL(val,base,seen_point,loc) (NODE *)rb_node_rational_new(p,val,base,seen_point,loc)
1291#define NEW_IMAGINARY(val,base,seen_point,numeric_type,loc) (NODE *)rb_node_imaginary_new(p,val,base,seen_point,numeric_type,loc)
1292#define NEW_STR(s,loc) (NODE *)rb_node_str_new(p,s,loc)
1293#define NEW_DSTR0(s,l,n,loc) (NODE *)rb_node_dstr_new0(p,s,l,n,loc)
1294#define NEW_DSTR(s,loc) (NODE *)rb_node_dstr_new(p,s,loc)
1295#define NEW_XSTR(s,loc) (NODE *)rb_node_xstr_new(p,s,loc)
1296#define NEW_DXSTR(s,l,n,loc) (NODE *)rb_node_dxstr_new(p,s,l,n,loc)
1297#define NEW_EVSTR(n,loc,o_loc,c_loc) (NODE *)rb_node_evstr_new(p,n,loc,o_loc,c_loc)
1298#define NEW_REGX(str,opts,loc,o_loc,ct_loc,c_loc) (NODE *)rb_node_regx_new(p,str,opts,loc,o_loc,ct_loc,c_loc)
1299#define NEW_ONCE(b,loc) (NODE *)rb_node_once_new(p,b,loc)
1300#define NEW_ARGS(loc) rb_node_args_new(p,loc)
1301#define NEW_ARGS_AUX(r,b,loc) rb_node_args_aux_new(p,r,b,loc)
1302#define NEW_OPT_ARG(v,loc) rb_node_opt_arg_new(p,v,loc)
1303#define NEW_KW_ARG(v,loc) rb_node_kw_arg_new(p,v,loc)
1304#define NEW_POSTARG(i,v,loc) (NODE *)rb_node_postarg_new(p,i,v,loc)
1305#define NEW_ARGSCAT(a,b,loc) (NODE *)rb_node_argscat_new(p,a,b,loc)
1306#define NEW_ARGSPUSH(a,b,loc) (NODE *)rb_node_argspush_new(p,a,b,loc)
1307#define NEW_SPLAT(a,loc,op_loc) (NODE *)rb_node_splat_new(p,a,loc,op_loc)
1308#define NEW_BLOCK_PASS(b,loc,o_loc) rb_node_block_pass_new(p,b,loc,o_loc)
1309#define NEW_DEFN(i,s,loc) (NODE *)rb_node_defn_new(p,i,s,loc)
1310#define NEW_DEFS(r,i,s,loc) (NODE *)rb_node_defs_new(p,r,i,s,loc)
1311#define NEW_ALIAS(n,o,loc,k_loc) (NODE *)rb_node_alias_new(p,n,o,loc,k_loc)
1312#define NEW_VALIAS(n,o,loc,k_loc) (NODE *)rb_node_valias_new(p,n,o,loc,k_loc)
1313#define NEW_UNDEF(i,loc) (NODE *)rb_node_undef_new(p,i,loc)
1314#define NEW_CLASS(n,b,s,loc,ck_loc,io_loc,ek_loc) (NODE *)rb_node_class_new(p,n,b,s,loc,ck_loc,io_loc,ek_loc)
1315#define NEW_MODULE(n,b,loc,mk_loc,ek_loc) (NODE *)rb_node_module_new(p,n,b,loc,mk_loc,ek_loc)
1316#define NEW_SCLASS(r,b,loc,ck_loc,op_loc,ek_loc) (NODE *)rb_node_sclass_new(p,r,b,loc,ck_loc,op_loc,ek_loc)
1317#define NEW_COLON2(c,i,loc,d_loc,n_loc) (NODE *)rb_node_colon2_new(p,c,i,loc,d_loc,n_loc)
1318#define NEW_COLON3(i,loc,d_loc,n_loc) (NODE *)rb_node_colon3_new(p,i,loc,d_loc,n_loc)
1319#define NEW_DOT2(b,e,loc,op_loc) (NODE *)rb_node_dot2_new(p,b,e,loc,op_loc)
1320#define NEW_DOT3(b,e,loc,op_loc) (NODE *)rb_node_dot3_new(p,b,e,loc,op_loc)
1321#define NEW_SELF(loc) (NODE *)rb_node_self_new(p,loc)
1322#define NEW_NIL(loc) (NODE *)rb_node_nil_new(p,loc)
1323#define NEW_TRUE(loc) (NODE *)rb_node_true_new(p,loc)
1324#define NEW_FALSE(loc) (NODE *)rb_node_false_new(p,loc)
1325#define NEW_ERRINFO(loc) (NODE *)rb_node_errinfo_new(p,loc)
1326#define NEW_DEFINED(e,loc,k_loc) (NODE *)rb_node_defined_new(p,e,loc, k_loc)
1327#define NEW_POSTEXE(b,loc,k_loc,o_loc,c_loc) (NODE *)rb_node_postexe_new(p,b,loc,k_loc,o_loc,c_loc)
1328#define NEW_SYM(str,loc) (NODE *)rb_node_sym_new(p,str,loc)
1329#define NEW_DSYM(s,l,n,loc) (NODE *)rb_node_dsym_new(p,s,l,n,loc)
1330#define NEW_ATTRASGN(r,m,a,loc) (NODE *)rb_node_attrasgn_new(p,r,m,a,loc)
1331#define NEW_LAMBDA(a,b,loc,op_loc,o_loc,c_loc) (NODE *)rb_node_lambda_new(p,a,b,loc,op_loc,o_loc,c_loc)
1332#define NEW_ARYPTN(pre,r,post,loc) (NODE *)rb_node_aryptn_new(p,pre,r,post,loc)
1333#define NEW_HSHPTN(c,kw,kwrest,loc) (NODE *)rb_node_hshptn_new(p,c,kw,kwrest,loc)
1334#define NEW_FNDPTN(pre,a,post,loc) (NODE *)rb_node_fndptn_new(p,pre,a,post,loc)
1335#define NEW_LINE(loc) (NODE *)rb_node_line_new(p,loc)
1336#define NEW_FILE(str,loc) (NODE *)rb_node_file_new(p,str,loc)
1337#define NEW_ENCODING(loc) (NODE *)rb_node_encoding_new(p,loc)
1338#define NEW_ERROR(loc) (NODE *)rb_node_error_new(p,loc)
1340enum internal_node_type {
1341 NODE_INTERNAL_ONLY = NODE_LAST,
1348parser_node_name(
int node)
1352 return "NODE_DEF_TEMP";
1354 return "NODE_EXITS";
1356 return ruby_node_name(node);
1366 struct RNode *nd_def;
1371 NODE *numparam_save;
1376#define RNODE_DEF_TEMP(node) ((struct RNode_DEF_TEMP *)(node))
1378static rb_node_break_t *rb_node_break_new(
struct parser_params *p, NODE *nd_stts,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc);
1379static rb_node_next_t *rb_node_next_new(
struct parser_params *p, NODE *nd_stts,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc);
1380static rb_node_redo_t *rb_node_redo_new(
struct parser_params *p,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc);
1381static rb_node_def_temp_t *rb_node_def_temp_new(
struct parser_params *p,
const YYLTYPE *loc);
1382static rb_node_def_temp_t *def_head_save(
struct parser_params *p, rb_node_def_temp_t *n);
1384#define NEW_BREAK(s,loc,k_loc) (NODE *)rb_node_break_new(p,s,loc,k_loc)
1385#define NEW_NEXT(s,loc,k_loc) (NODE *)rb_node_next_new(p,s,loc,k_loc)
1386#define NEW_REDO(loc,k_loc) (NODE *)rb_node_redo_new(p,loc,k_loc)
1387#define NEW_DEF_TEMP(loc) rb_node_def_temp_new(p,loc)
1391static NODE* node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment);
1392#define NODE_NEW_INTERNAL(ndtype, type) (type *)node_new_internal(p, (enum node_type)(ndtype), sizeof(type), RUBY_ALIGNOF(type))
1394static NODE *nd_set_loc(NODE *nd,
const YYLTYPE *loc);
1399 int node_id = p->node_id;
1405anddot_multiple_assignment_check(
struct parser_params* p,
const YYLTYPE *loc,
ID id)
1407 if (
id == tANDDOT) {
1408 yyerror1(loc,
"&. inside multiple assignment destination");
1413set_line_body(NODE *body,
int line)
1416 switch (nd_type(body)) {
1419 nd_set_line(body, line);
1424set_embraced_location(NODE *node,
const rb_code_location_t *beg,
const rb_code_location_t *end)
1426 RNODE_ITER(node)->nd_body->nd_loc = code_loc_gen(beg, end);
1427 nd_set_line(node, beg->end_pos.lineno);
1431last_expr_node(NODE *expr)
1434 if (nd_type_p(expr, NODE_BLOCK)) {
1435 expr = RNODE_BLOCK(RNODE_BLOCK(expr)->nd_end)->nd_head;
1437 else if (nd_type_p(expr, NODE_BEGIN) && RNODE_BEGIN(expr)->nd_body) {
1438 expr = RNODE_BEGIN(expr)->nd_body;
1448#define yyparse ruby_yyparse
1451static NODE* cond(
struct parser_params *p, NODE *node,
const YYLTYPE *loc);
1452static NODE* method_cond(
struct parser_params *p, NODE *node,
const YYLTYPE *loc);
1453static NODE *new_nil_at(
struct parser_params *p,
const rb_code_position_t *pos);
1454static NODE *new_if(
struct parser_params*,NODE*,NODE*,NODE*,
const YYLTYPE*,
const YYLTYPE*,
const YYLTYPE*,
const YYLTYPE*);
1455static NODE *new_unless(
struct parser_params*,NODE*,NODE*,NODE*,
const YYLTYPE*,
const YYLTYPE*,
const YYLTYPE*,
const YYLTYPE*);
1456static NODE *logop(
struct parser_params*,
ID,NODE*,NODE*,
const YYLTYPE*,
const YYLTYPE*);
1458static NODE *newline_node(NODE*);
1459static void fixpos(NODE*,NODE*);
1463static NODE *remove_begin(NODE*);
1466static void block_dup_check(
struct parser_params*,NODE*,NODE*);
1468static NODE *block_append(
struct parser_params*,NODE*,NODE*);
1470static NODE *list_concat(NODE*,NODE*);
1471static NODE *arg_append(
struct parser_params*,NODE*,NODE*,
const YYLTYPE*);
1472static NODE *last_arg_append(
struct parser_params *p, NODE *args, NODE *last_arg,
const YYLTYPE *loc);
1473static NODE *rest_arg_append(
struct parser_params *p, NODE *args, NODE *rest_arg,
const YYLTYPE *loc);
1474static NODE *literal_concat(
struct parser_params*,NODE*,NODE*,
const YYLTYPE*);
1475static NODE *new_evstr(
struct parser_params*,NODE*,
const YYLTYPE*,
const YYLTYPE*,
const YYLTYPE*);
1476static NODE *new_dstr(
struct parser_params*,NODE*,
const YYLTYPE*);
1479static NODE *splat_array(NODE*);
1480static void mark_lvar_used(
struct parser_params *p, NODE *rhs);
1482static NODE *call_bin_op(
struct parser_params*,NODE*,
ID,NODE*,
const YYLTYPE*,
const YYLTYPE*);
1483static NODE *call_uni_op(
struct parser_params*,NODE*,
ID,
const YYLTYPE*,
const YYLTYPE*);
1484static NODE *new_qcall(
struct parser_params* p,
ID atype, NODE *recv,
ID mid, NODE *args,
const YYLTYPE *op_loc,
const YYLTYPE *loc);
1485static NODE *new_command_qcall(
struct parser_params* p,
ID atype, NODE *recv,
ID mid, NODE *args, NODE *block,
const YYLTYPE *op_loc,
const YYLTYPE *loc);
1486static NODE *method_add_block(
struct parser_params*p, NODE *m, NODE *b,
const YYLTYPE *loc) {RNODE_ITER(b)->nd_iter = m; b->nd_loc = *loc;
return b;}
1487static NODE *command_add_block(
struct parser_params*p, NODE *m, NODE *b,
const YYLTYPE *loc);
1489static bool args_info_empty_p(
struct rb_args_info *args);
1490static 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*);
1491static rb_node_args_t *new_args_tail(
struct parser_params*,rb_node_kw_arg_t*,
ID,
ID,
const YYLTYPE*);
1492static NODE *new_array_pattern(
struct parser_params *p, NODE *constant, NODE *pre_arg, NODE *aryptn,
const YYLTYPE *loc);
1493static NODE *new_array_pattern_tail(
struct parser_params *p, NODE *pre_args,
int has_rest, NODE *rest_arg, NODE *post_args,
const YYLTYPE *loc);
1494static NODE *new_find_pattern(
struct parser_params *p, NODE *constant, NODE *fndptn,
const YYLTYPE *loc);
1495static NODE *new_find_pattern_tail(
struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg,
const YYLTYPE *loc);
1496static NODE *new_hash_pattern(
struct parser_params *p, NODE *constant, NODE *hshptn,
const YYLTYPE *loc);
1497static NODE *new_hash_pattern_tail(
struct parser_params *p, NODE *kw_args,
ID kw_rest_arg,
const YYLTYPE *loc);
1499static rb_node_kw_arg_t *new_kw_arg(
struct parser_params *p, NODE *k,
const YYLTYPE *loc);
1500static rb_node_args_t *args_with_numbered(
struct parser_params*,rb_node_args_t*,
int,
ID);
1502static NODE* negate_lit(
struct parser_params*, NODE*,
const YYLTYPE*);
1505static NODE *arg_blk_pass(NODE*,rb_node_block_pass_t*);
1506static NODE *dsym_node(
struct parser_params*,NODE*,
const YYLTYPE*);
1509static NODE *assignable(
struct parser_params*,
ID,NODE*,
const YYLTYPE*);
1511static NODE *aryset(
struct parser_params*,NODE*,NODE*,
const YYLTYPE*);
1518static NODE *new_ary_op_assign(
struct parser_params *p, NODE *ary, NODE *args,
ID op, NODE *rhs,
const YYLTYPE *args_loc,
const YYLTYPE *loc,
const YYLTYPE *call_operator_loc,
const YYLTYPE *opening_loc,
const YYLTYPE *closing_loc,
const YYLTYPE *binary_operator_loc);
1519static NODE *new_attr_op_assign(
struct parser_params *p, NODE *lhs,
ID atype,
ID attr,
ID op, NODE *rhs,
const YYLTYPE *loc,
const YYLTYPE *call_operator_loc,
const YYLTYPE *message_loc,
const YYLTYPE *binary_operator_loc);
1520static NODE *new_const_op_assign(
struct parser_params *p, NODE *lhs,
ID op, NODE *rhs,
struct lex_context,
const YYLTYPE *loc);
1521static NODE *new_bodystmt(
struct parser_params *p, NODE *head, NODE *rescue, NODE *rescue_else, NODE *ensure,
const YYLTYPE *loc);
1523static NODE *const_decl(
struct parser_params *p, NODE* path,
const YYLTYPE *loc);
1525static rb_node_opt_arg_t *opt_arg_append(rb_node_opt_arg_t*, rb_node_opt_arg_t*);
1526static rb_node_kw_arg_t *kwd_append(rb_node_kw_arg_t*, rb_node_kw_arg_t*);
1528static NODE *new_hash(
struct parser_params *p, NODE *hash,
const YYLTYPE *loc);
1529static NODE *new_unique_key_hash(
struct parser_params *p, NODE *hash,
const YYLTYPE *loc);
1531static NODE *new_defined(
struct parser_params *p, NODE *expr,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc);
1533static NODE *new_regexp(
struct parser_params *, NODE *,
int,
const YYLTYPE *,
const YYLTYPE *,
const YYLTYPE *,
const YYLTYPE *);
1535#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
1537static NODE *new_xstring(
struct parser_params *, NODE *,
const YYLTYPE *loc);
1539static NODE *symbol_append(
struct parser_params *p, NODE *symbols, NODE *symbol);
1541static NODE *match_op(
struct parser_params*,NODE*,NODE*,
const YYLTYPE*,
const YYLTYPE*);
1546static void reg_fragment_setenc(
struct parser_params*, rb_parser_string_t*,
int);
1548static int literal_concat0(
struct parser_params *p, rb_parser_string_t *head, rb_parser_string_t *tail);
1551static void check_literal_when(
struct parser_params *p, NODE *args,
const YYLTYPE *loc);
1556#define get_value(idx) (rb_ary_entry(p->s_value_stack, idx))
1557#define set_value(val) (p->s_lvalue = val)
1562RUBY_SYMBOL_EXPORT_BEGIN
1564int rb_reg_fragment_setenc(
struct parser_params*, rb_parser_string_t *,
int);
1565enum lex_state_e rb_parser_trace_lex_state(
struct parser_params *,
enum lex_state_e,
enum lex_state_e,
int);
1567void rb_parser_show_bitstack(
struct parser_params *, stack_type,
const char *,
int);
1568PRINTF_ARGS(
void rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...), 2, 3);
1569YYLTYPE *rb_parser_set_location_from_strterm_heredoc(
struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc);
1570YYLTYPE *rb_parser_set_location_of_delayed_token(
struct parser_params *p, YYLTYPE *yylloc);
1571YYLTYPE *rb_parser_set_location_of_heredoc_end(
struct parser_params *p, YYLTYPE *yylloc);
1572YYLTYPE *rb_parser_set_location_of_dummy_end(
struct parser_params *p, YYLTYPE *yylloc);
1573YYLTYPE *rb_parser_set_location_of_none(
struct parser_params *p, YYLTYPE *yylloc);
1574YYLTYPE *rb_parser_set_location(
struct parser_params *p, YYLTYPE *yylloc);
1575void ruby_show_error_line(
struct parser_params *p,
VALUE errbuf,
const YYLTYPE *yylloc,
int lineno, rb_parser_string_t *str);
1576RUBY_SYMBOL_EXPORT_END
1578static void flush_string_content(
struct parser_params *p, rb_encoding *enc,
size_t back);
1579static void error_duplicate_pattern_variable(
struct parser_params *p,
ID id,
const YYLTYPE *loc);
1580static void error_duplicate_pattern_key(
struct parser_params *p,
ID id,
const YYLTYPE *loc);
1591#define internal_id rb_parser_internal_id
1593static NODE *new_args_forward_call(
struct parser_params*, NODE*,
const YYLTYPE*,
const YYLTYPE*);
1596static void forwarding_arg_check(
struct parser_params *p,
ID arg,
ID all,
const char *var);
1601#define dyna_var(p, id) local_var(p, id)
1603#define dvar_defined_ref rb_parser_dvar_defined_ref
1610static void numparam_pop(
struct parser_params *p, NODE *prev_inner);
1612#define METHOD_NOT '!'
1614#define idFWD_REST '*'
1615#define idFWD_KWREST idPow
1616#define idFWD_BLOCK '&'
1617#define idFWD_ALL idDot3
1618#define arg_FWD_BLOCK idFWD_BLOCK
1620#define RE_ONIG_OPTION_IGNORECASE 1
1621#define RE_ONIG_OPTION_EXTEND (RE_ONIG_OPTION_IGNORECASE<<1)
1622#define RE_ONIG_OPTION_MULTILINE (RE_ONIG_OPTION_EXTEND<<1)
1623#define RE_OPTION_ONCE (1<<16)
1624#define RE_OPTION_ENCODING_SHIFT 8
1625#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
1626#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
1627#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
1628#define RE_OPTION_MASK 0xff
1629#define RE_OPTION_ARG_ENCODING_NONE 32
1631#define CHECK_LITERAL_WHEN (st_table *)1
1632#define CASE_LABELS_ENABLED_P(case_labels) (case_labels && case_labels != CHECK_LITERAL_WHEN)
1634#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
1635RUBY_FUNC_EXPORTED
size_t rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr);
1637#define TOKEN2ID(tok) ( \
1638 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
1639 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
1640 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
1641 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
1642 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
1643 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
1644 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
1650#include "eventids1.h"
1651#include "eventids2.h"
1653extern const struct ripper_parser_ids ripper_parser_ids;
1664#define dispatch0(n) ripper_dispatch0(p, RIPPER_ID(n))
1665#define dispatch1(n,a) ripper_dispatch1(p, RIPPER_ID(n), (a))
1666#define dispatch2(n,a,b) ripper_dispatch2(p, RIPPER_ID(n), (a), (b))
1667#define dispatch3(n,a,b,c) ripper_dispatch3(p, RIPPER_ID(n), (a), (b), (c))
1668#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, RIPPER_ID(n), (a), (b), (c), (d))
1669#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, RIPPER_ID(n), (a), (b), (c), (d), (e))
1670#define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, RIPPER_ID(n), (a), (b), (c), (d), (e), (f), (g))
1672#define yyparse ripper_yyparse
1677 if (!
NIL_P(pre_arg)) {
1678 if (!
NIL_P(pre_args)) {
1679 rb_ary_unshift(pre_args, pre_arg);
1682 pre_args = rb_ary_new_from_args(1, pre_arg);
1688#define ID2VAL(id) STATIC_ID2SYM(id)
1689#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
1692#define KWD2EID(t, v) keyword_##t
1695new_scope_body(
struct parser_params *p, rb_node_args_t *args, NODE *body, NODE *parent,
const YYLTYPE *loc)
1697 body = remove_begin(body);
1698 reduce_nodes(p, &body);
1699 NODE *n = NEW_SCOPE(args, body, parent, loc);
1700 nd_set_line(n, loc->end_pos.lineno);
1701 set_line_body(body, loc->beg_pos.lineno);
1706rescued_expr(
struct parser_params *p, NODE *arg, NODE *rescue,
1707 const YYLTYPE *arg_loc,
const YYLTYPE *mod_loc,
const YYLTYPE *res_loc)
1709 YYLTYPE loc = code_loc_gen(mod_loc, res_loc);
1710 rescue = NEW_RESBODY(0, 0, remove_begin(rescue), 0, &loc);
1711 loc.beg_pos = arg_loc->beg_pos;
1712 return NEW_RESCUE(arg, rescue, 0, &loc);
1715static NODE *add_block_exit(
struct parser_params *p, NODE *node);
1716static rb_node_exits_t *init_block_exit(
struct parser_params *p);
1717static rb_node_exits_t *allow_block_exit(
struct parser_params *p);
1718static void restore_block_exit(
struct parser_params *p, rb_node_exits_t *exits);
1719static void clear_block_exit(
struct parser_params *p,
bool error);
1724 next->in_rescue = outer->in_rescue == after_rescue ? after_rescue : def;
1728restore_defun(
struct parser_params *p, rb_node_def_temp_t *temp)
1732 p->ctxt.in_def = ctxt.in_def;
1733 p->ctxt.shareable_constant_value = ctxt.shareable_constant_value;
1734 p->ctxt.in_rescue = ctxt.in_rescue;
1735 p->max_numparam = temp->save.max_numparam;
1736 numparam_pop(p, temp->save.numparam_save);
1737 clear_block_exit(p,
true);
1741endless_method_name(
struct parser_params *p,
ID mid,
const YYLTYPE *loc)
1743 if (is_attrset_id(mid)) {
1744 yyerror1(loc,
"setter method cannot be defined in an endless method definition");
1746 token_info_drop(p,
"def", loc->beg_pos);
1749#define debug_token_line(p, name, line) do { \
1751 const char *const pcur = p->lex.pcur; \
1752 const char *const ptok = p->lex.ptok; \
1753 rb_parser_printf(p, name ":%d (%d: %"PRIdPTRDIFF"|%"PRIdPTRDIFF"|%"PRIdPTRDIFF")\n", \
1754 line, p->ruby_sourceline, \
1755 ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur); \
1759#define begin_definition(k, loc_beg, loc_end) \
1761 if (!(p->ctxt.in_class = (k)[0] != 0)) { \
1763 p->ctxt.cant_return = !p->ctxt.in_def; \
1764 p->ctxt.in_def = 0; \
1766 else if (p->ctxt.in_def) { \
1767 YYLTYPE loc = code_loc_gen(loc_beg, loc_end); \
1768 yyerror1(&loc, k " definition in method body"); \
1771 p->ctxt.cant_return = 1; \
1777# define ifndef_ripper(x) (x)
1778# define ifdef_ripper(r,x) (x)
1780# define ifndef_ripper(x)
1781# define ifdef_ripper(r,x) (r)
1784# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
1785# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
1786# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
1787# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
1788# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
1789# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
1790# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
1791# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
1792# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
1793# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
1794# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1795# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
1796# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
1797# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
1798# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1799# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
1800# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
1801# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
1802# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
1803# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1805extern const ID id_warn, id_warning, id_gets, id_assoc;
1806# define ERR_MESG() STR_NEW2(mesg)
1807# define WARN_S_L(s,l) STR_NEW(s,l)
1808# define WARN_S(s) STR_NEW2(s)
1809# define WARN_I(i) INT2NUM(i)
1810# define WARN_ID(i) rb_id2str(i)
1811# define PRIsWARN PRIsVALUE
1812# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
1813# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
1814# ifdef HAVE_VA_ARGS_MACRO
1815# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
1817# define WARN_CALL rb_funcall
1819# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
1820# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
1821# ifdef HAVE_VA_ARGS_MACRO
1822# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
1824# define WARNING_CALL rb_funcall
1826# define compile_error ripper_compile_error
1828# define WARN_S_L(s,l) s
1831# define WARN_ID(i) rb_id2name(i)
1832# define PRIsWARN PRIsVALUE
1833# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1834# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1835# define WARN_CALL rb_compile_warn
1836# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1837# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1838# define WARNING_CALL rb_compile_warning
1839PRINTF_ARGS(
static void parser_compile_error(
struct parser_params*,
const rb_code_location_t *loc,
const char *fmt, ...), 3, 4);
1840# define compile_error(p, ...) parser_compile_error(p, NULL, __VA_ARGS__)
1843#define RNODE_EXITS(node) ((rb_node_exits_t*)(node))
1849 compile_error(p,
"unexpected null node");
1852 switch (nd_type(node)) {
1853 case NODE_BREAK:
case NODE_NEXT:
case NODE_REDO:
break;
1855 compile_error(p,
"add_block_exit: unexpected node: %s", parser_node_name(nd_type(node)));
1858 if (!p->ctxt.in_defined) {
1859 rb_node_exits_t *exits = p->exits;
1861 RNODE_EXITS(exits->nd_stts)->nd_chain = node;
1862 exits->nd_stts = node;
1868static rb_node_exits_t *
1871 rb_node_exits_t *old = p->exits;
1872 rb_node_exits_t *exits = NODE_NEW_INTERNAL(NODE_EXITS, rb_node_exits_t);
1873 exits->nd_chain = 0;
1874 exits->nd_stts = RNODE(exits);
1879static rb_node_exits_t *
1882 rb_node_exits_t *exits = p->exits;
1888restore_block_exit(
struct parser_params *p, rb_node_exits_t *exits)
1896 rb_node_exits_t *exits = p->exits;
1899 for (NODE *e = RNODE(exits); (e = RNODE_EXITS(e)->nd_chain) != 0; ) {
1900 switch (nd_type(e)) {
1902 yyerror1(&e->nd_loc,
"Invalid break");
1905 yyerror1(&e->nd_loc,
"Invalid next");
1908 yyerror1(&e->nd_loc,
"Invalid redo");
1911 yyerror1(&e->nd_loc,
"unexpected node");
1917 exits->nd_stts = RNODE(exits);
1918 exits->nd_chain = 0;
1921#define WARN_EOL(tok) \
1922 (looking_at_eol_p(p) ? \
1923 (void)rb_warning0("'" tok "' at the end of line without an expression") : \
1930 switch (nd_type(node)) {
1932 return RNODE_GASGN(node)->nd_value;
1934 return RNODE_IASGN(node)->nd_value;
1936 return RNODE_LASGN(node)->nd_value;
1938 return RNODE_DASGN(node)->nd_value;
1940 return RNODE_MASGN(node)->nd_value;
1942 return RNODE_CVASGN(node)->nd_value;
1944 return RNODE_CDECL(node)->nd_value;
1946 compile_error(p,
"get_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1954 switch (nd_type(node)) {
1956 RNODE_CDECL(node)->nd_value = rhs;
1959 RNODE_GASGN(node)->nd_value = rhs;
1962 RNODE_IASGN(node)->nd_value = rhs;
1965 RNODE_LASGN(node)->nd_value = rhs;
1968 RNODE_DASGN(node)->nd_value = rhs;
1971 RNODE_MASGN(node)->nd_value = rhs;
1974 RNODE_CVASGN(node)->nd_value = rhs;
1977 compile_error(p,
"set_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1985 switch (nd_type(node)) {
1987 return RNODE_CDECL(node)->nd_vid;
1989 return RNODE_GASGN(node)->nd_vid;
1991 return RNODE_IASGN(node)->nd_vid;
1993 return RNODE_LASGN(node)->nd_vid;
1995 return RNODE_DASGN(node)->nd_vid;
1997 return RNODE_CVASGN(node)->nd_vid;
1999 compile_error(p,
"get_nd_vid: unexpected node: %s", parser_node_name(nd_type(node)));
2007 switch (nd_type(node)) {
2009 return RNODE_CALL(node)->nd_args;
2011 return RNODE_OPCALL(node)->nd_args;
2013 return RNODE_FCALL(node)->nd_args;
2015 return RNODE_QCALL(node)->nd_args;
2017 return RNODE_SUPER(node)->nd_args;
2026 compile_error(p,
"get_nd_args: unexpected node: %s", parser_node_name(nd_type(node)));
2032djb2(
const uint8_t *str,
size_t len)
2034 st_index_t hash = 5381;
2036 for (
size_t i = 0; i <
len; i++) {
2037 hash = ((hash << 5) + hash) + str[i];
2044parser_memhash(
const void *
ptr,
long len)
2049#define PARSER_STRING_PTR(str) (str->ptr)
2050#define PARSER_STRING_LEN(str) (str->len)
2051#define PARSER_STRING_END(str) (&str->ptr[str->len])
2052#define STRING_SIZE(str) ((size_t)str->len + 1)
2053#define STRING_TERM_LEN(str) (1)
2054#define STRING_TERM_FILL(str) (str->ptr[str->len] = '\0')
2055#define PARSER_STRING_RESIZE_CAPA_TERM(p,str,capacity,termlen) do {\
2056 SIZED_REALLOC_N(str->ptr, char, (size_t)total + termlen, STRING_SIZE(str)); \
2059#define STRING_SET_LEN(str, n) do { \
2062#define PARSER_STRING_GETMEM(str, ptrvar, lenvar) \
2063 ((ptrvar) = str->ptr, \
2064 (lenvar) = str->len)
2067parser_string_char_at_end(
struct parser_params *p, rb_parser_string_t *str,
int when_empty)
2069 return PARSER_STRING_LEN(str) > 0 ? (
unsigned char)PARSER_STRING_END(str)[-1] : when_empty;
2072static rb_parser_string_t *
2073rb_parser_string_new(rb_parser_t *p,
const char *
ptr,
long len)
2075 rb_parser_string_t *str;
2078 rb_bug(
"negative string size (or size too big): %ld",
len);
2081 str =
xcalloc(1,
sizeof(rb_parser_string_t));
2085 memcpy(PARSER_STRING_PTR(str),
ptr,
len);
2087 STRING_SET_LEN(str,
len);
2088 STRING_TERM_FILL(str);
2092static rb_parser_string_t *
2093rb_parser_encoding_string_new(rb_parser_t *p,
const char *
ptr,
long len, rb_encoding *enc)
2095 rb_parser_string_t *str = rb_parser_string_new(p,
ptr,
len);
2096 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2103rb_str_to_parser_string(rb_parser_t *p,
VALUE str)
2106 rb_parser_string_t *ret = rb_parser_encoding_string_new(p, RSTRING_PTR(str), RSTRING_LEN(str), rb_enc_get(str));
2112rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str)
2115 xfree(PARSER_STRING_PTR(str));
2121rb_parser_str_hash(rb_parser_string_t *str)
2123 return parser_memhash((
const void *)PARSER_STRING_PTR(str), PARSER_STRING_LEN(str));
2127rb_char_p_hash(
const char *c)
2129 return parser_memhash((
const void *)c, strlen(c));
2133rb_parser_str_capacity(rb_parser_string_t *str,
const int termlen)
2135 return PARSER_STRING_LEN(str);
2140rb_parser_string_end(rb_parser_string_t *str)
2142 return &str->ptr[str->len];
2147rb_parser_string_set_encoding(rb_parser_string_t *str, rb_encoding *enc)
2153rb_parser_str_get_encoding(rb_parser_string_t *str)
2160PARSER_ENCODING_IS_ASCII8BIT(
struct parser_params *p, rb_parser_string_t *str)
2162 return rb_parser_str_get_encoding(str) == rb_ascii8bit_encoding();
2167PARSER_ENC_CODERANGE(rb_parser_string_t *str)
2169 return str->coderange;
2173PARSER_ENC_CODERANGE_SET(rb_parser_string_t *str,
int coderange)
2175 str->coderange = coderange;
2179PARSER_ENCODING_CODERANGE_SET(rb_parser_string_t *str, rb_encoding *enc,
enum rb_parser_string_coderange_type cr)
2181 rb_parser_string_set_encoding(str, enc);
2182 PARSER_ENC_CODERANGE_SET(str, cr);
2186PARSER_ENC_CODERANGE_CLEAR(rb_parser_string_t *str)
2188 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2192PARSER_ENC_CODERANGE_ASCIIONLY(rb_parser_string_t *str)
2194 return PARSER_ENC_CODERANGE(str) == RB_PARSER_ENC_CODERANGE_7BIT;
2198PARSER_ENC_CODERANGE_CLEAN_P(
int cr)
2200 return cr == RB_PARSER_ENC_CODERANGE_7BIT || cr == RB_PARSER_ENC_CODERANGE_VALID;
2204rb_parser_search_nonascii(
const char *p,
const char *e)
2208 for (; s < e; s++) {
2209 if (*s & 0x80)
return s;
2216rb_parser_coderange_scan(
struct parser_params *p,
const char *
ptr,
long len, rb_encoding *enc)
2218 const char *e =
ptr +
len;
2220 if (enc == rb_ascii8bit_encoding()) {
2222 ptr = rb_parser_search_nonascii(
ptr, e);
2223 return ptr ? RB_PARSER_ENC_CODERANGE_VALID : RB_PARSER_ENC_CODERANGE_7BIT;
2227 ptr = rb_parser_search_nonascii(
ptr, e);
2228 if (!
ptr)
return RB_PARSER_ENC_CODERANGE_7BIT;
2230 int ret = rb_enc_precise_mbclen(
ptr, e, enc);
2233 if (
ptr == e)
break;
2234 ptr = rb_parser_search_nonascii(
ptr, e);
2238 return RB_PARSER_ENC_CODERANGE_VALID;
2242rb_parser_enc_coderange_scan(
struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2244 return rb_parser_coderange_scan(p, PARSER_STRING_PTR(str), PARSER_STRING_LEN(str), enc);
2248rb_parser_enc_str_coderange(
struct parser_params *p, rb_parser_string_t *str)
2250 int cr = PARSER_ENC_CODERANGE(str);
2252 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2253 cr = rb_parser_enc_coderange_scan(p, str, rb_parser_str_get_encoding(str));
2254 PARSER_ENC_CODERANGE_SET(str, cr);
2260static rb_parser_string_t *
2261rb_parser_enc_associate(
struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2263 if (rb_parser_str_get_encoding(str) == enc)
2265 if (!PARSER_ENC_CODERANGE_ASCIIONLY(str)) {
2266 PARSER_ENC_CODERANGE_CLEAR(str);
2268 rb_parser_string_set_encoding(str, enc);
2273rb_parser_is_ascii_string(
struct parser_params *p, rb_parser_string_t *str)
2275 return rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_7BIT;
2279rb_parser_enc_compatible(
struct parser_params *p, rb_parser_string_t *str1, rb_parser_string_t *str2)
2281 rb_encoding *enc1 = rb_parser_str_get_encoding(str1);
2282 rb_encoding *enc2 = rb_parser_str_get_encoding(str2);
2284 if (enc1 == NULL || enc2 == NULL)
2291 if (PARSER_STRING_LEN(str2) == 0)
2293 if (PARSER_STRING_LEN(str1) == 0)
2294 return rb_parser_is_ascii_string(p, str2) ? enc1 : enc2;
2298 cr1 = rb_parser_enc_str_coderange(p, str1);
2299 cr2 = rb_parser_enc_str_coderange(p, str2);
2302 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT)
return enc2;
2303 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT)
return enc1;
2306 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT) {
2310 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT) {
2318rb_parser_str_modify(rb_parser_string_t *str)
2320 PARSER_ENC_CODERANGE_CLEAR(str);
2324rb_parser_str_set_len(
struct parser_params *p, rb_parser_string_t *str,
long len)
2327 const int termlen = STRING_TERM_LEN(str);
2329 if (
len > (
capa = (
long)(rb_parser_str_capacity(str, termlen))) ||
len < 0) {
2330 rb_bug(
"probable buffer overflow: %ld for %ld",
len,
capa);
2333 int cr = PARSER_ENC_CODERANGE(str);
2334 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2337 else if (
len > PARSER_STRING_LEN(str)) {
2338 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2340 else if (
len < PARSER_STRING_LEN(str)) {
2341 if (cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2344 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2348 STRING_SET_LEN(str,
len);
2349 STRING_TERM_FILL(str);
2352static rb_parser_string_t *
2353rb_parser_str_buf_cat(
struct parser_params *p, rb_parser_string_t *str,
const char *
ptr,
long len)
2355 rb_parser_str_modify(str);
2356 if (
len == 0)
return 0;
2358 long total, olen,
off = -1;
2360 const int termlen = STRING_TERM_LEN(str);
2362 PARSER_STRING_GETMEM(str, sptr, olen);
2363 if (
ptr >= sptr &&
ptr <= sptr + olen) {
2367 if (olen > LONG_MAX -
len) {
2368 compile_error(p,
"string sizes too big");
2372 PARSER_STRING_RESIZE_CAPA_TERM(p, str, total, termlen);
2373 sptr = PARSER_STRING_PTR(str);
2377 memcpy(sptr + olen,
ptr,
len);
2378 STRING_SET_LEN(str, total);
2379 STRING_TERM_FILL(str);
2384#define parser_str_cat(str, ptr, len) rb_parser_str_buf_cat(p, str, ptr, len)
2385#define parser_str_cat_cstr(str, lit) rb_parser_str_buf_cat(p, str, lit, strlen(lit))
2387static rb_parser_string_t *
2388rb_parser_enc_cr_str_buf_cat(
struct parser_params *p, rb_parser_string_t *str,
const char *
ptr,
long len,
2389 rb_encoding *ptr_enc,
int ptr_cr,
int *ptr_cr_ret)
2392 rb_encoding *str_enc, *res_enc;
2394 str_enc = rb_parser_str_get_encoding(str);
2395 str_cr = PARSER_STRING_LEN(str) ? PARSER_ENC_CODERANGE(str) : RB_PARSER_ENC_CODERANGE_7BIT;
2397 if (str_enc == ptr_enc) {
2398 if (str_cr != RB_PARSER_ENC_CODERANGE_UNKNOWN && ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2399 ptr_cr = rb_parser_coderange_scan(p,
ptr,
len, ptr_enc);
2404 if (ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2405 ptr_cr = rb_parser_coderange_scan(p,
ptr,
len, ptr_enc);
2407 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2408 if (str_enc == rb_ascii8bit_encoding() || ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2409 str_cr = rb_parser_enc_str_coderange(p, str);
2414 *ptr_cr_ret = ptr_cr;
2416 if (str_enc != ptr_enc &&
2417 str_cr != RB_PARSER_ENC_CODERANGE_7BIT &&
2418 ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2422 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2424 res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2426 else if (str_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2427 if (ptr_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2429 res_cr = RB_PARSER_ENC_CODERANGE_7BIT;
2436 else if (str_cr == RB_PARSER_ENC_CODERANGE_VALID) {
2438 if (PARSER_ENC_CODERANGE_CLEAN_P(ptr_cr))
2446 if (0 <
len) res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2450 compile_error(p,
"negative string size (or size too big)");
2452 parser_str_cat(str,
ptr,
len);
2453 PARSER_ENCODING_CODERANGE_SET(str, res_enc, res_cr);
2457 compile_error(p,
"incompatible character encodings: %s and %s",
2458 rb_enc_name(str_enc), rb_enc_name(ptr_enc));
2463static rb_parser_string_t *
2464rb_parser_enc_str_buf_cat(
struct parser_params *p, rb_parser_string_t *str,
const char *
ptr,
long len,
2465 rb_encoding *ptr_enc)
2467 return rb_parser_enc_cr_str_buf_cat(p, str,
ptr,
len, ptr_enc, RB_PARSER_ENC_CODERANGE_UNKNOWN, NULL);
2470static rb_parser_string_t *
2471rb_parser_str_buf_append(
struct parser_params *p, rb_parser_string_t *str, rb_parser_string_t *str2)
2473 int str2_cr = rb_parser_enc_str_coderange(p, str2);
2475 rb_parser_enc_cr_str_buf_cat(p, str, PARSER_STRING_PTR(str2), PARSER_STRING_LEN(str2),
2476 rb_parser_str_get_encoding(str2), str2_cr, &str2_cr);
2478 PARSER_ENC_CODERANGE_SET(str2, str2_cr);
2483static rb_parser_string_t *
2484rb_parser_str_resize(
struct parser_params *p, rb_parser_string_t *str,
long len)
2487 rb_bug(
"negative string size (or size too big)");
2490 long slen = PARSER_STRING_LEN(str);
2492 if (slen >
len && PARSER_ENC_CODERANGE(str) != RB_PARSER_ENC_CODERANGE_7BIT) {
2493 PARSER_ENC_CODERANGE_CLEAR(str);
2498 const int termlen = STRING_TERM_LEN(str);
2501 SIZED_REALLOC_N(str->ptr,
char, (
size_t)
len + termlen, STRING_SIZE(str));
2503 else if (
len == slen)
return str;
2504 STRING_SET_LEN(str,
len);
2505 STRING_TERM_FILL(str);
2510# define PARSER_ENC_STRING_GETMEM(str, ptrvar, lenvar, encvar) \
2511 ((ptrvar) = str->ptr, \
2512 (lenvar) = str->len, \
2513 (encvar) = str->enc)
2516rb_parser_string_hash_cmp(rb_parser_string_t *str1, rb_parser_string_t *str2)
2519 const char *ptr1, *ptr2;
2520 rb_encoding *enc1, *enc2;
2522 PARSER_ENC_STRING_GETMEM(str1, ptr1, len1, enc1);
2523 PARSER_ENC_STRING_GETMEM(str2, ptr2, len2, enc2);
2525 return (len1 != len2 ||
2527 memcmp(ptr1, ptr2, len1) != 0);
2531rb_parser_ary_extend(rb_parser_t *p, rb_parser_ary_t *ary,
long len)
2534 if (ary->capa <
len) {
2536 ary->data = (rb_parser_ary_data *)
xrealloc(ary->data,
sizeof(rb_parser_ary_data) *
len);
2537 for (i = ary->len; i <
len; i++) {
2547static rb_parser_ary_t *
2548parser_ary_new_capa(rb_parser_t *p,
long len)
2551 rb_bug(
"negative array size (or size too big): %ld",
len);
2553 rb_parser_ary_t *ary =
xcalloc(1,
sizeof(rb_parser_ary_t));
2558 ary->data = (rb_parser_ary_data *)
xcalloc(
len,
sizeof(rb_parser_ary_data));
2567static rb_parser_ary_t *
2568rb_parser_ary_new_capa_for_script_line(rb_parser_t *p,
long len)
2570 rb_parser_ary_t *ary = parser_ary_new_capa(p,
len);
2571 ary->data_type = PARSER_ARY_DATA_SCRIPT_LINE;
2575static rb_parser_ary_t *
2576rb_parser_ary_new_capa_for_ast_token(rb_parser_t *p,
long len)
2578 rb_parser_ary_t *ary = parser_ary_new_capa(p,
len);
2579 ary->data_type = PARSER_ARY_DATA_AST_TOKEN;
2584static rb_parser_ary_t *
2585rb_parser_ary_new_capa_for_node(rb_parser_t *p,
long len)
2587 rb_parser_ary_t *ary = parser_ary_new_capa(p,
len);
2588 ary->data_type = PARSER_ARY_DATA_NODE;
2596static rb_parser_ary_t *
2597parser_ary_push(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ary_data val)
2599 if (ary->len == ary->capa) {
2600 rb_parser_ary_extend(p, ary, ary->len == 0 ? 1 : ary->len * 2);
2602 ary->data[ary->len++] = val;
2607static rb_parser_ary_t *
2608rb_parser_ary_push_ast_token(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ast_token_t *val)
2610 if (ary->data_type != PARSER_ARY_DATA_AST_TOKEN) {
2611 rb_bug(
"unexpected rb_parser_ary_data_type: %d", ary->data_type);
2613 return parser_ary_push(p, ary, val);
2616static rb_parser_ary_t *
2617rb_parser_ary_push_script_line(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_string_t *val)
2619 if (ary->data_type != PARSER_ARY_DATA_SCRIPT_LINE) {
2620 rb_bug(
"unexpected rb_parser_ary_data_type: %d", ary->data_type);
2622 return parser_ary_push(p, ary, val);
2626static rb_parser_ary_t *
2627rb_parser_ary_push_node(rb_parser_t *p, rb_parser_ary_t *ary, NODE *val)
2629 if (ary->data_type != PARSER_ARY_DATA_NODE) {
2630 rb_bug(
"unexpected rb_parser_ary_data_type: %d", ary->data_type);
2632 return parser_ary_push(p, ary, val);
2637rb_parser_ast_token_free(rb_parser_t *p, rb_parser_ast_token_t *token)
2640 rb_parser_string_free(p, token->str);
2645rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary)
2647# define foreach_ary(ptr) \
2648 for (rb_parser_ary_data *ptr = ary->data, *const end_ary_data = ptr + ary->len; \
2649 ptr < end_ary_data; ptr++)
2650 switch (ary->data_type) {
2651 case PARSER_ARY_DATA_AST_TOKEN:
2652 foreach_ary(data) {rb_parser_ast_token_free(p, *data);}
2654 case PARSER_ARY_DATA_SCRIPT_LINE:
2655 foreach_ary(data) {rb_parser_string_free(p, *data);}
2657 case PARSER_ARY_DATA_NODE:
2661 rb_bug(
"unexpected rb_parser_ary_data_type: %d", ary->data_type);
2675# define YY_CAST(Type, Val) static_cast<Type> (Val)
2676# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
2678# define YY_CAST(Type, Val) ((Type) (Val))
2679# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
2683# if defined __cplusplus
2684# if 201103L <= __cplusplus
2685# define YY_NULLPTR nullptr
2687# define YY_NULLPTR 0
2690# define YY_NULLPTR ((void*)0)
2698 YYSYMBOL_YYEMPTY = -2,
2700 YYSYMBOL_YYerror = 1,
2701 YYSYMBOL_YYUNDEF = 2,
2702 YYSYMBOL_keyword_class = 3,
2703 YYSYMBOL_keyword_module = 4,
2704 YYSYMBOL_keyword_def = 5,
2705 YYSYMBOL_keyword_undef = 6,
2706 YYSYMBOL_keyword_begin = 7,
2707 YYSYMBOL_keyword_rescue = 8,
2708 YYSYMBOL_keyword_ensure = 9,
2709 YYSYMBOL_keyword_end = 10,
2710 YYSYMBOL_keyword_if = 11,
2711 YYSYMBOL_keyword_unless = 12,
2712 YYSYMBOL_keyword_then = 13,
2713 YYSYMBOL_keyword_elsif = 14,
2714 YYSYMBOL_keyword_else = 15,
2715 YYSYMBOL_keyword_case = 16,
2716 YYSYMBOL_keyword_when = 17,
2717 YYSYMBOL_keyword_while = 18,
2718 YYSYMBOL_keyword_until = 19,
2719 YYSYMBOL_keyword_for = 20,
2720 YYSYMBOL_keyword_break = 21,
2721 YYSYMBOL_keyword_next = 22,
2722 YYSYMBOL_keyword_redo = 23,
2723 YYSYMBOL_keyword_retry = 24,
2724 YYSYMBOL_keyword_in = 25,
2725 YYSYMBOL_keyword_do = 26,
2726 YYSYMBOL_keyword_do_cond = 27,
2727 YYSYMBOL_keyword_do_block = 28,
2728 YYSYMBOL_keyword_do_LAMBDA = 29,
2729 YYSYMBOL_keyword_return = 30,
2730 YYSYMBOL_keyword_yield = 31,
2731 YYSYMBOL_keyword_super = 32,
2732 YYSYMBOL_keyword_self = 33,
2733 YYSYMBOL_keyword_nil = 34,
2734 YYSYMBOL_keyword_true = 35,
2735 YYSYMBOL_keyword_false = 36,
2736 YYSYMBOL_keyword_and = 37,
2737 YYSYMBOL_keyword_or = 38,
2738 YYSYMBOL_keyword_not = 39,
2739 YYSYMBOL_modifier_if = 40,
2740 YYSYMBOL_modifier_unless = 41,
2741 YYSYMBOL_modifier_while = 42,
2742 YYSYMBOL_modifier_until = 43,
2743 YYSYMBOL_modifier_rescue = 44,
2744 YYSYMBOL_keyword_alias = 45,
2745 YYSYMBOL_keyword_defined = 46,
2746 YYSYMBOL_keyword_BEGIN = 47,
2747 YYSYMBOL_keyword_END = 48,
2748 YYSYMBOL_keyword__LINE__ = 49,
2749 YYSYMBOL_keyword__FILE__ = 50,
2750 YYSYMBOL_keyword__ENCODING__ = 51,
2751 YYSYMBOL_tIDENTIFIER = 52,
2753 YYSYMBOL_tGVAR = 54,
2754 YYSYMBOL_tIVAR = 55,
2755 YYSYMBOL_tCONSTANT = 56,
2756 YYSYMBOL_tCVAR = 57,
2757 YYSYMBOL_tLABEL = 58,
2758 YYSYMBOL_tINTEGER = 59,
2759 YYSYMBOL_tFLOAT = 60,
2760 YYSYMBOL_tRATIONAL = 61,
2761 YYSYMBOL_tIMAGINARY = 62,
2762 YYSYMBOL_tCHAR = 63,
2763 YYSYMBOL_tNTH_REF = 64,
2764 YYSYMBOL_tBACK_REF = 65,
2765 YYSYMBOL_tSTRING_CONTENT = 66,
2766 YYSYMBOL_tREGEXP_END = 67,
2767 YYSYMBOL_tDUMNY_END = 68,
2769 YYSYMBOL_70_backslash_ = 70,
2771 YYSYMBOL_72_escaped_horizontal_tab_ = 72,
2772 YYSYMBOL_73_escaped_form_feed_ = 73,
2773 YYSYMBOL_74_escaped_carriage_return_ = 74,
2774 YYSYMBOL_75_escaped_vertical_tab_ = 75,
2775 YYSYMBOL_tUPLUS = 76,
2776 YYSYMBOL_tUMINUS = 77,
2784 YYSYMBOL_tANDOP = 85,
2785 YYSYMBOL_tOROP = 86,
2786 YYSYMBOL_tMATCH = 87,
2787 YYSYMBOL_tNMATCH = 88,
2788 YYSYMBOL_tDOT2 = 89,
2789 YYSYMBOL_tDOT3 = 90,
2790 YYSYMBOL_tBDOT2 = 91,
2791 YYSYMBOL_tBDOT3 = 92,
2792 YYSYMBOL_tAREF = 93,
2793 YYSYMBOL_tASET = 94,
2794 YYSYMBOL_tLSHFT = 95,
2795 YYSYMBOL_tRSHFT = 96,
2796 YYSYMBOL_tANDDOT = 97,
2797 YYSYMBOL_tCOLON2 = 98,
2798 YYSYMBOL_tCOLON3 = 99,
2799 YYSYMBOL_tOP_ASGN = 100,
2800 YYSYMBOL_tASSOC = 101,
2801 YYSYMBOL_tLPAREN = 102,
2802 YYSYMBOL_tLPAREN_ARG = 103,
2803 YYSYMBOL_tLBRACK = 104,
2804 YYSYMBOL_tLBRACE = 105,
2805 YYSYMBOL_tLBRACE_ARG = 106,
2806 YYSYMBOL_tSTAR = 107,
2807 YYSYMBOL_tDSTAR = 108,
2808 YYSYMBOL_tAMPER = 109,
2809 YYSYMBOL_tLAMBDA = 110,
2810 YYSYMBOL_tSYMBEG = 111,
2811 YYSYMBOL_tSTRING_BEG = 112,
2812 YYSYMBOL_tXSTRING_BEG = 113,
2813 YYSYMBOL_tREGEXP_BEG = 114,
2814 YYSYMBOL_tWORDS_BEG = 115,
2815 YYSYMBOL_tQWORDS_BEG = 116,
2816 YYSYMBOL_tSYMBOLS_BEG = 117,
2817 YYSYMBOL_tQSYMBOLS_BEG = 118,
2818 YYSYMBOL_tSTRING_END = 119,
2819 YYSYMBOL_tSTRING_DEND = 120,
2820 YYSYMBOL_tSTRING_DBEG = 121,
2821 YYSYMBOL_tSTRING_DVAR = 122,
2822 YYSYMBOL_tLAMBEG = 123,
2823 YYSYMBOL_tLABEL_END = 124,
2824 YYSYMBOL_tIGNORED_NL = 125,
2825 YYSYMBOL_tCOMMENT = 126,
2826 YYSYMBOL_tEMBDOC_BEG = 127,
2827 YYSYMBOL_tEMBDOC = 128,
2828 YYSYMBOL_tEMBDOC_END = 129,
2829 YYSYMBOL_tHEREDOC_BEG = 130,
2830 YYSYMBOL_tHEREDOC_END = 131,
2831 YYSYMBOL_k__END__ = 132,
2832 YYSYMBOL_tLOWEST = 133,
2833 YYSYMBOL_134_ = 134,
2834 YYSYMBOL_135_ = 135,
2835 YYSYMBOL_136_ = 136,
2836 YYSYMBOL_137_ = 137,
2837 YYSYMBOL_138_ = 138,
2838 YYSYMBOL_139_ = 139,
2839 YYSYMBOL_140_ = 140,
2840 YYSYMBOL_141_ = 141,
2841 YYSYMBOL_142_ = 142,
2842 YYSYMBOL_143_ = 143,
2843 YYSYMBOL_144_ = 144,
2844 YYSYMBOL_145_ = 145,
2845 YYSYMBOL_146_ = 146,
2846 YYSYMBOL_tUMINUS_NUM = 147,
2847 YYSYMBOL_148_ = 148,
2848 YYSYMBOL_149_ = 149,
2849 YYSYMBOL_tLAST_TOKEN = 150,
2850 YYSYMBOL_151_ = 151,
2851 YYSYMBOL_152_ = 152,
2852 YYSYMBOL_153_ = 153,
2853 YYSYMBOL_154_n_ = 154,
2854 YYSYMBOL_155_ = 155,
2855 YYSYMBOL_156_ = 156,
2856 YYSYMBOL_157_ = 157,
2857 YYSYMBOL_158_ = 158,
2858 YYSYMBOL_159_ = 159,
2859 YYSYMBOL_160_ = 160,
2860 YYSYMBOL_161_ = 161,
2861 YYSYMBOL_YYACCEPT = 162,
2862 YYSYMBOL_option_terms = 163,
2863 YYSYMBOL_compstmt_top_stmts = 164,
2864 YYSYMBOL_165_1 = 165,
2865 YYSYMBOL_program = 166,
2866 YYSYMBOL_top_stmts = 167,
2867 YYSYMBOL_top_stmt = 168,
2868 YYSYMBOL_block_open = 169,
2869 YYSYMBOL_begin_block = 170,
2870 YYSYMBOL_compstmt_stmts = 171,
2871 YYSYMBOL_172_2 = 172,
2872 YYSYMBOL_173_3 = 173,
2873 YYSYMBOL_bodystmt = 174,
2874 YYSYMBOL_175_4 = 175,
2875 YYSYMBOL_stmts = 176,
2876 YYSYMBOL_stmt_or_begin = 177,
2877 YYSYMBOL_178_5 = 178,
2878 YYSYMBOL_allow_exits = 179,
2879 YYSYMBOL_k_END = 180,
2880 YYSYMBOL_181_6 = 181,
2881 YYSYMBOL_stmt = 182,
2882 YYSYMBOL_asgn_mrhs = 183,
2883 YYSYMBOL_asgn_command_rhs = 184,
2884 YYSYMBOL_command_asgn = 185,
2885 YYSYMBOL_op_asgn_command_rhs = 186,
2886 YYSYMBOL_def_endless_method_endless_command = 187,
2887 YYSYMBOL_endless_command = 188,
2888 YYSYMBOL_option__n_ = 189,
2889 YYSYMBOL_command_rhs = 190,
2890 YYSYMBOL_expr = 191,
2891 YYSYMBOL_192_7 = 192,
2892 YYSYMBOL_193_8 = 193,
2893 YYSYMBOL_def_name = 194,
2894 YYSYMBOL_defn_head = 195,
2895 YYSYMBOL_196_9 = 196,
2896 YYSYMBOL_defs_head = 197,
2897 YYSYMBOL_value_expr_expr = 198,
2898 YYSYMBOL_expr_value = 199,
2899 YYSYMBOL_200_10 = 200,
2900 YYSYMBOL_201_11 = 201,
2901 YYSYMBOL_expr_value_do = 202,
2902 YYSYMBOL_command_call = 203,
2903 YYSYMBOL_value_expr_command_call = 204,
2904 YYSYMBOL_command_call_value = 205,
2905 YYSYMBOL_block_command = 206,
2906 YYSYMBOL_cmd_brace_block = 207,
2907 YYSYMBOL_fcall = 208,
2908 YYSYMBOL_command = 209,
2909 YYSYMBOL_mlhs = 210,
2910 YYSYMBOL_mlhs_inner = 211,
2911 YYSYMBOL_mlhs_basic = 212,
2912 YYSYMBOL_mlhs_items_mlhs_item = 213,
2913 YYSYMBOL_mlhs_item = 214,
2914 YYSYMBOL_mlhs_head = 215,
2915 YYSYMBOL_mlhs_node = 216,
2917 YYSYMBOL_cname = 218,
2918 YYSYMBOL_cpath = 219,
2919 YYSYMBOL_fname = 220,
2920 YYSYMBOL_fitem = 221,
2921 YYSYMBOL_undef_list = 222,
2922 YYSYMBOL_223_12 = 223,
2924 YYSYMBOL_reswords = 225,
2925 YYSYMBOL_asgn_arg_rhs = 226,
2927 YYSYMBOL_op_asgn_arg_rhs = 228,
2928 YYSYMBOL_range_expr_arg = 229,
2929 YYSYMBOL_def_endless_method_endless_arg = 230,
2930 YYSYMBOL_ternary = 231,
2931 YYSYMBOL_endless_arg = 232,
2932 YYSYMBOL_relop = 233,
2933 YYSYMBOL_rel_expr = 234,
2934 YYSYMBOL_lex_ctxt = 235,
2935 YYSYMBOL_begin_defined = 236,
2936 YYSYMBOL_after_rescue = 237,
2937 YYSYMBOL_value_expr_arg = 238,
2938 YYSYMBOL_arg_value = 239,
2939 YYSYMBOL_aref_args = 240,
2940 YYSYMBOL_arg_rhs = 241,
2941 YYSYMBOL_paren_args = 242,
2942 YYSYMBOL_opt_paren_args = 243,
2943 YYSYMBOL_opt_call_args = 244,
2944 YYSYMBOL_value_expr_command = 245,
2945 YYSYMBOL_call_args = 246,
2946 YYSYMBOL_247_13 = 247,
2947 YYSYMBOL_command_args = 248,
2948 YYSYMBOL_block_arg = 249,
2949 YYSYMBOL_opt_block_arg = 250,
2950 YYSYMBOL_args = 251,
2951 YYSYMBOL_arg_splat = 252,
2952 YYSYMBOL_mrhs_arg = 253,
2953 YYSYMBOL_mrhs = 254,
2954 YYSYMBOL_primary = 255,
2955 YYSYMBOL_256_14 = 256,
2956 YYSYMBOL_257_15 = 257,
2957 YYSYMBOL_258_16 = 258,
2958 YYSYMBOL_259_17 = 259,
2959 YYSYMBOL_260_18 = 260,
2960 YYSYMBOL_261_19 = 261,
2961 YYSYMBOL_262_20 = 262,
2962 YYSYMBOL_263_21 = 263,
2963 YYSYMBOL_264_22 = 264,
2964 YYSYMBOL_265_23 = 265,
2965 YYSYMBOL_266_24 = 266,
2966 YYSYMBOL_value_expr_primary = 267,
2967 YYSYMBOL_primary_value = 268,
2968 YYSYMBOL_k_begin = 269,
2969 YYSYMBOL_k_if = 270,
2970 YYSYMBOL_k_unless = 271,
2971 YYSYMBOL_k_while = 272,
2972 YYSYMBOL_k_until = 273,
2973 YYSYMBOL_k_case = 274,
2974 YYSYMBOL_k_for = 275,
2975 YYSYMBOL_k_class = 276,
2976 YYSYMBOL_k_module = 277,
2977 YYSYMBOL_k_def = 278,
2978 YYSYMBOL_k_do = 279,
2979 YYSYMBOL_k_do_block = 280,
2980 YYSYMBOL_k_rescue = 281,
2981 YYSYMBOL_k_ensure = 282,
2982 YYSYMBOL_k_when = 283,
2983 YYSYMBOL_k_else = 284,
2984 YYSYMBOL_k_elsif = 285,
2985 YYSYMBOL_k_end = 286,
2986 YYSYMBOL_k_return = 287,
2987 YYSYMBOL_k_yield = 288,
2988 YYSYMBOL_then = 289,
2990 YYSYMBOL_if_tail = 291,
2991 YYSYMBOL_opt_else = 292,
2992 YYSYMBOL_for_var = 293,
2993 YYSYMBOL_f_marg = 294,
2994 YYSYMBOL_mlhs_items_f_marg = 295,
2995 YYSYMBOL_f_margs = 296,
2996 YYSYMBOL_f_rest_marg = 297,
2997 YYSYMBOL_f_any_kwrest = 298,
2998 YYSYMBOL_299_25 = 299,
2999 YYSYMBOL_f_eq = 300,
3000 YYSYMBOL_f_kw_primary_value = 301,
3001 YYSYMBOL_f_kwarg_primary_value = 302,
3002 YYSYMBOL_args_tail_basic_primary_value = 303,
3003 YYSYMBOL_block_args_tail = 304,
3004 YYSYMBOL_excessed_comma = 305,
3005 YYSYMBOL_f_opt_primary_value = 306,
3006 YYSYMBOL_f_opt_arg_primary_value = 307,
3007 YYSYMBOL_opt_args_tail_block_args_tail = 308,
3008 YYSYMBOL_block_param = 309,
3009 YYSYMBOL_opt_block_param_def = 310,
3010 YYSYMBOL_block_param_def = 311,
3011 YYSYMBOL_opt_block_param = 312,
3012 YYSYMBOL_opt_bv_decl = 313,
3013 YYSYMBOL_bv_decls = 314,
3014 YYSYMBOL_bvar = 315,
3015 YYSYMBOL_max_numparam = 316,
3016 YYSYMBOL_numparam = 317,
3017 YYSYMBOL_it_id = 318,
3018 YYSYMBOL_319_26 = 319,
3019 YYSYMBOL_320_27 = 320,
3020 YYSYMBOL_lambda = 321,
3021 YYSYMBOL_f_larglist = 322,
3022 YYSYMBOL_lambda_body = 323,
3023 YYSYMBOL_324_28 = 324,
3024 YYSYMBOL_do_block = 325,
3025 YYSYMBOL_block_call = 326,
3026 YYSYMBOL_method_call = 327,
3027 YYSYMBOL_brace_block = 328,
3028 YYSYMBOL_329_29 = 329,
3029 YYSYMBOL_brace_body = 330,
3030 YYSYMBOL_331_30 = 331,
3031 YYSYMBOL_do_body = 332,
3032 YYSYMBOL_case_args = 333,
3033 YYSYMBOL_case_body = 334,
3034 YYSYMBOL_cases = 335,
3035 YYSYMBOL_p_pvtbl = 336,
3036 YYSYMBOL_p_pktbl = 337,
3037 YYSYMBOL_p_in_kwarg = 338,
3038 YYSYMBOL_339_31 = 339,
3039 YYSYMBOL_p_case_body = 340,
3040 YYSYMBOL_p_cases = 341,
3041 YYSYMBOL_p_top_expr = 342,
3042 YYSYMBOL_p_top_expr_body = 343,
3043 YYSYMBOL_p_expr = 344,
3044 YYSYMBOL_p_as = 345,
3045 YYSYMBOL_346_32 = 346,
3046 YYSYMBOL_p_alt = 347,
3047 YYSYMBOL_p_lparen = 348,
3048 YYSYMBOL_p_lbracket = 349,
3049 YYSYMBOL_p_expr_basic = 350,
3050 YYSYMBOL_351_33 = 351,
3051 YYSYMBOL_p_args = 352,
3052 YYSYMBOL_p_args_head = 353,
3053 YYSYMBOL_p_args_tail = 354,
3054 YYSYMBOL_p_find = 355,
3055 YYSYMBOL_p_rest = 356,
3056 YYSYMBOL_p_args_post = 357,
3057 YYSYMBOL_p_arg = 358,
3058 YYSYMBOL_p_kwargs = 359,
3059 YYSYMBOL_p_kwarg = 360,
3060 YYSYMBOL_p_kw = 361,
3061 YYSYMBOL_p_kw_label = 362,
3062 YYSYMBOL_p_kwrest = 363,
3063 YYSYMBOL_p_kwnorest = 364,
3064 YYSYMBOL_p_any_kwrest = 365,
3065 YYSYMBOL_p_value = 366,
3066 YYSYMBOL_range_expr_p_primitive = 367,
3067 YYSYMBOL_p_primitive = 368,
3068 YYSYMBOL_p_variable = 369,
3069 YYSYMBOL_p_var_ref = 370,
3070 YYSYMBOL_p_expr_ref = 371,
3071 YYSYMBOL_p_const = 372,
3072 YYSYMBOL_opt_rescue = 373,
3073 YYSYMBOL_exc_list = 374,
3074 YYSYMBOL_exc_var = 375,
3075 YYSYMBOL_opt_ensure = 376,
3076 YYSYMBOL_literal = 377,
3077 YYSYMBOL_strings = 378,
3078 YYSYMBOL_string = 379,
3079 YYSYMBOL_string1 = 380,
3080 YYSYMBOL_xstring = 381,
3081 YYSYMBOL_regexp = 382,
3082 YYSYMBOL_nonempty_list__ = 383,
3083 YYSYMBOL_words_tWORDS_BEG_word_list = 384,
3084 YYSYMBOL_words = 385,
3085 YYSYMBOL_word_list = 386,
3086 YYSYMBOL_word = 387,
3087 YYSYMBOL_words_tSYMBOLS_BEG_symbol_list = 388,
3088 YYSYMBOL_symbols = 389,
3089 YYSYMBOL_symbol_list = 390,
3090 YYSYMBOL_words_tQWORDS_BEG_qword_list = 391,
3091 YYSYMBOL_qwords = 392,
3092 YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list = 393,
3093 YYSYMBOL_qsymbols = 394,
3094 YYSYMBOL_qword_list = 395,
3095 YYSYMBOL_qsym_list = 396,
3096 YYSYMBOL_string_contents = 397,
3097 YYSYMBOL_xstring_contents = 398,
3098 YYSYMBOL_regexp_contents = 399,
3099 YYSYMBOL_string_content = 400,
3100 YYSYMBOL_401_34 = 401,
3101 YYSYMBOL_402_35 = 402,
3102 YYSYMBOL_403_36 = 403,
3103 YYSYMBOL_404_37 = 404,
3104 YYSYMBOL_405_38 = 405,
3105 YYSYMBOL_string_dend = 406,
3106 YYSYMBOL_string_dvar = 407,
3107 YYSYMBOL_symbol = 408,
3108 YYSYMBOL_ssym = 409,
3110 YYSYMBOL_dsym = 411,
3111 YYSYMBOL_numeric = 412,
3112 YYSYMBOL_simple_numeric = 413,
3113 YYSYMBOL_nonlocal_var = 414,
3114 YYSYMBOL_user_variable = 415,
3115 YYSYMBOL_keyword_variable = 416,
3116 YYSYMBOL_var_ref = 417,
3117 YYSYMBOL_var_lhs = 418,
3118 YYSYMBOL_backref = 419,
3119 YYSYMBOL_420_39 = 420,
3120 YYSYMBOL_superclass = 421,
3121 YYSYMBOL_f_opt_paren_args = 422,
3122 YYSYMBOL_f_paren_args = 423,
3123 YYSYMBOL_f_arglist = 424,
3124 YYSYMBOL_425_40 = 425,
3125 YYSYMBOL_f_kw_arg_value = 426,
3126 YYSYMBOL_f_kwarg_arg_value = 427,
3127 YYSYMBOL_args_tail_basic_arg_value = 428,
3128 YYSYMBOL_args_tail = 429,
3129 YYSYMBOL_f_opt_arg_value = 430,
3130 YYSYMBOL_f_opt_arg_arg_value = 431,
3131 YYSYMBOL_opt_args_tail_args_tail = 432,
3132 YYSYMBOL_f_args = 433,
3133 YYSYMBOL_args_forward = 434,
3134 YYSYMBOL_f_bad_arg = 435,
3135 YYSYMBOL_f_norm_arg = 436,
3136 YYSYMBOL_f_arg_asgn = 437,
3137 YYSYMBOL_f_arg_item = 438,
3138 YYSYMBOL_f_arg = 439,
3139 YYSYMBOL_f_label = 440,
3140 YYSYMBOL_kwrest_mark = 441,
3141 YYSYMBOL_f_no_kwarg = 442,
3142 YYSYMBOL_f_kwrest = 443,
3143 YYSYMBOL_restarg_mark = 444,
3144 YYSYMBOL_f_rest_arg = 445,
3145 YYSYMBOL_blkarg_mark = 446,
3146 YYSYMBOL_f_block_arg = 447,
3147 YYSYMBOL_opt_f_block_arg = 448,
3148 YYSYMBOL_value_expr_singleton_expr = 449,
3149 YYSYMBOL_singleton = 450,
3150 YYSYMBOL_singleton_expr = 451,
3151 YYSYMBOL_452_41 = 452,
3152 YYSYMBOL_assoc_list = 453,
3153 YYSYMBOL_assocs = 454,
3154 YYSYMBOL_assoc = 455,
3155 YYSYMBOL_operation2 = 456,
3156 YYSYMBOL_operation3 = 457,
3157 YYSYMBOL_dot_or_colon = 458,
3158 YYSYMBOL_call_op = 459,
3159 YYSYMBOL_call_op2 = 460,
3160 YYSYMBOL_rparen = 461,
3161 YYSYMBOL_rbracket = 462,
3162 YYSYMBOL_rbrace = 463,
3163 YYSYMBOL_trailer = 464,
3164 YYSYMBOL_term = 465,
3165 YYSYMBOL_terms = 466,
3168typedef enum yysymbol_kind_t yysymbol_kind_t;
3181#ifndef __PTRDIFF_MAX__
3183# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3194#ifdef __INT_LEAST8_MAX__
3195typedef __INT_LEAST8_TYPE__ yytype_int8;
3196#elif defined YY_STDINT_H
3197typedef int_least8_t yytype_int8;
3199typedef signed char yytype_int8;
3202#ifdef __INT_LEAST16_MAX__
3203typedef __INT_LEAST16_TYPE__ yytype_int16;
3204#elif defined YY_STDINT_H
3205typedef int_least16_t yytype_int16;
3207typedef short yytype_int16;
3216# undef UINT_LEAST8_MAX
3217# undef UINT_LEAST16_MAX
3218# define UINT_LEAST8_MAX 255
3219# define UINT_LEAST16_MAX 65535
3222#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
3223typedef __UINT_LEAST8_TYPE__ yytype_uint8;
3224#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
3225 && UINT_LEAST8_MAX <= INT_MAX)
3226typedef uint_least8_t yytype_uint8;
3227#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
3228typedef unsigned char yytype_uint8;
3230typedef short yytype_uint8;
3233#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
3234typedef __UINT_LEAST16_TYPE__ yytype_uint16;
3235#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
3236 && UINT_LEAST16_MAX <= INT_MAX)
3237typedef uint_least16_t yytype_uint16;
3238#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
3239typedef unsigned short yytype_uint16;
3241typedef int yytype_uint16;
3245# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
3246# define YYPTRDIFF_T __PTRDIFF_TYPE__
3247# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
3248# elif defined PTRDIFF_MAX
3252# define YYPTRDIFF_T ptrdiff_t
3253# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
3255# define YYPTRDIFF_T long
3256# define YYPTRDIFF_MAXIMUM LONG_MAX
3261# ifdef __SIZE_TYPE__
3262# define YYSIZE_T __SIZE_TYPE__
3263# elif defined size_t
3264# define YYSIZE_T size_t
3265# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3267# define YYSIZE_T size_t
3269# define YYSIZE_T unsigned
3273#define YYSIZE_MAXIMUM \
3274 YY_CAST (YYPTRDIFF_T, \
3275 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
3276 ? YYPTRDIFF_MAXIMUM \
3277 : YY_CAST (YYSIZE_T, -1)))
3279#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
3283typedef yytype_int16 yy_state_t;
3286typedef int yy_state_fast_t;
3289# if defined YYENABLE_NLS && YYENABLE_NLS
3291# include <libintl.h>
3292# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
3296# define YY_(Msgid) Msgid
3301#ifndef YY_ATTRIBUTE_PURE
3302# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
3303# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
3305# define YY_ATTRIBUTE_PURE
3309#ifndef YY_ATTRIBUTE_UNUSED
3310# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
3311# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
3313# define YY_ATTRIBUTE_UNUSED
3318#if ! defined lint || defined __GNUC__
3319# define YY_USE(E) ((void) (E))
3325#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
3326# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
3327# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3328 _Pragma ("GCC diagnostic push") \
3329 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
3331# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3332 _Pragma ("GCC diagnostic push") \
3333 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
3334 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
3336# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
3337 _Pragma ("GCC diagnostic pop")
3339# define YY_INITIAL_VALUE(Value) Value
3341#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3342# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3343# define YY_IGNORE_MAYBE_UNINITIALIZED_END
3345#ifndef YY_INITIAL_VALUE
3346# define YY_INITIAL_VALUE(Value)
3349#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
3350# define YY_IGNORE_USELESS_CAST_BEGIN \
3351 _Pragma ("GCC diagnostic push") \
3352 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
3353# define YY_IGNORE_USELESS_CAST_END \
3354 _Pragma ("GCC diagnostic pop")
3356#ifndef YY_IGNORE_USELESS_CAST_BEGIN
3357# define YY_IGNORE_USELESS_CAST_BEGIN
3358# define YY_IGNORE_USELESS_CAST_END
3362#define YY_ASSERT(E) ((void) (0 && (E)))
3368# ifdef YYSTACK_USE_ALLOCA
3369# if YYSTACK_USE_ALLOCA
3371# define YYSTACK_ALLOC __builtin_alloca
3372# elif defined __BUILTIN_VA_ARG_INCR
3375# define YYSTACK_ALLOC __alloca
3376# elif defined _MSC_VER
3378# define alloca _alloca
3380# define YYSTACK_ALLOC alloca
3381# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
3384# ifndef EXIT_SUCCESS
3385# define EXIT_SUCCESS 0
3392# ifdef YYSTACK_ALLOC
3394# define YYSTACK_FREE(Ptr) do { ; } while (0)
3395# ifndef YYSTACK_ALLOC_MAXIMUM
3400# define YYSTACK_ALLOC_MAXIMUM 4032
3403# define YYSTACK_ALLOC YYMALLOC
3404# define YYSTACK_FREE YYFREE
3405# ifndef YYSTACK_ALLOC_MAXIMUM
3406# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
3408# if (defined __cplusplus && ! defined EXIT_SUCCESS \
3409 && ! ((defined YYMALLOC || defined malloc) \
3410 && (defined YYFREE || defined free)))
3412# ifndef EXIT_SUCCESS
3413# define EXIT_SUCCESS 0
3417# define YYMALLOC malloc
3418# if ! defined malloc && ! defined EXIT_SUCCESS
3419void *malloc (YYSIZE_T);
3424# if ! defined free && ! defined EXIT_SUCCESS
3431#if (! defined yyoverflow \
3432 && (! defined __cplusplus \
3433 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
3434 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
3439 yy_state_t yyss_alloc;
3445# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
3449# define YYSTACK_BYTES(N) \
3450 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
3451 + YYSIZEOF (YYLTYPE)) \
3452 + 2 * YYSTACK_GAP_MAXIMUM)
3454# define YYCOPY_NEEDED 1
3461# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
3464 YYPTRDIFF_T yynewbytes; \
3465 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
3466 Stack = &yyptr->Stack_alloc; \
3467 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
3468 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
3474#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
3478# if defined __GNUC__ && 1 < __GNUC__
3479# define YYCOPY(Dst, Src, Count) \
3480 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
3482# define YYCOPY(Dst, Src, Count) \
3486 for (yyi = 0; yyi < (Count); yyi++) \
3487 (Dst)[yyi] = (Src)[yyi]; \
3500#define YYNTOKENS 162
3506#define YYNSTATES 1379
3509#define YYMAXUTOK 361
3514#define YYTRANSLATE(YYX) \
3515 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
3516 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
3521static const yytype_uint8 yytranslate[] =
3523 0, 2, 2, 2, 2, 2, 2, 2, 2, 72,
3524 154, 75, 73, 74, 2, 2, 2, 2, 2, 2,
3525 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3526 2, 2, 161, 148, 2, 2, 2, 146, 141, 2,
3527 157, 158, 144, 142, 155, 143, 69, 145, 2, 2,
3528 2, 2, 2, 2, 2, 2, 2, 2, 136, 160,
3529 138, 134, 137, 135, 2, 2, 2, 2, 2, 2,
3530 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3531 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3532 2, 153, 70, 159, 140, 2, 156, 2, 2, 2,
3533 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3534 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3535 2, 2, 2, 151, 139, 152, 149, 2, 89, 90,
3536 91, 92, 76, 77, 78, 79, 95, 96, 84, 83,
3537 80, 81, 82, 87, 88, 93, 94, 98, 85, 86,
3538 97, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3539 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3540 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3541 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3542 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3543 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3544 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3545 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3546 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3547 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3548 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
3549 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3550 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
3551 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
3552 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
3553 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
3554 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
3555 65, 66, 67, 68, 71, 99, 100, 101, 102, 103,
3556 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
3557 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
3558 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
3564static const yytype_int16 yyrline[] =
3566 0, 3167, 3161, 3167, 3167, 3167, 3167, 3187, 3192, 3197,
3567 3204, 3209, 3216, 3218, 3236, 3232, 3237, 3236, 3248, 3245,
3568 3258, 3263, 3268, 3275, 3277, 3276, 3286, 3288, 3295, 3295,
3569 3300, 3305, 3313, 3322, 3329, 3335, 3341, 3352, 3363, 3372,
3570 3386, 3387, 3392, 3392, 3393, 3404, 3409, 3410, 3417, 3417,
3571 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3418, 3419,
3572 3419, 3419, 3422, 3423, 3429, 3429, 3429, 3436, 3437, 3444,
3573 3447, 3448, 3453, 3458, 3463, 3469, 3468, 3484, 3483, 3498,
3574 3501, 3512, 3522, 3521, 3535, 3535, 3536, 3542, 3542, 3542,
3575 3549, 3550, 3553, 3553, 3556, 3557, 3564, 3572, 3572, 3572,
3576 3579, 3586, 3595, 3600, 3605, 3610, 3615, 3621, 3627, 3633,
3577 3638, 3645, 3654, 3655, 3662, 3663, 3670, 3675, 3680, 3685,
3578 3685, 3685, 3690, 3695, 3700, 3705, 3710, 3715, 3722, 3723,
3579 3730, 3735, 3743, 3743, 3748, 3753, 3753, 3759, 3764, 3769,
3580 3774, 3782, 3782, 3787, 3792, 3792, 3797, 3802, 3807, 3812,
3581 3820, 3828, 3831, 3836, 3841, 3848, 3848, 3848, 3849, 3854,
3582 3857, 3862, 3865, 3870, 3870, 3878, 3879, 3880, 3881, 3882,
3583 3883, 3884, 3885, 3886, 3887, 3888, 3889, 3890, 3891, 3892,
3584 3893, 3894, 3895, 3896, 3897, 3898, 3899, 3900, 3901, 3902,
3585 3903, 3904, 3905, 3906, 3907, 3910, 3910, 3910, 3911, 3911,
3586 3912, 3912, 3912, 3913, 3913, 3913, 3913, 3914, 3914, 3914,
3587 3914, 3915, 3915, 3915, 3916, 3916, 3916, 3916, 3917, 3917,
3588 3917, 3917, 3918, 3918, 3918, 3918, 3919, 3919, 3919, 3919,
3589 3920, 3920, 3920, 3920, 3921, 3921, 3924, 3924, 3925, 3925,
3590 3925, 3925, 3925, 3925, 3925, 3925, 3925, 3926, 3926, 3926,
3591 3926, 3926, 3926, 3926, 3927, 3932, 3937, 3942, 3947, 3952,
3592 3957, 3962, 3967, 3972, 3977, 3982, 3987, 3992, 3993, 3998,
3593 4003, 4008, 4013, 4018, 4023, 4028, 4033, 4038, 4043, 4048,
3594 4055, 4055, 4055, 4056, 4057, 4060, 4069, 4070, 4076, 4083,
3595 4084, 4085, 4086, 4089, 4094, 4102, 4108, 4115, 4122, 4122,
3596 4125, 4126, 4127, 4132, 4139, 4144, 4153, 4158, 4168, 4180,
3597 4181, 4187, 4188, 4189, 4190, 4195, 4202, 4202, 4207, 4212,
3598 4217, 4223, 4229, 4233, 4233, 4271, 4276, 4284, 4289, 4297,
3599 4302, 4307, 4312, 4320, 4325, 4334, 4335, 4339, 4344, 4349,
3600 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4367, 4368, 4369,
3601 4370, 4376, 4375, 4388, 4388, 4394, 4400, 4405, 4410, 4415,
3602 4421, 4426, 4431, 4436, 4441, 4448, 4453, 4458, 4463, 4464,
3603 4470, 4472, 4484, 4493, 4502, 4511, 4510, 4525, 4524, 4537,
3604 4545, 4545, 4546, 4590, 4589, 4612, 4611, 4631, 4630, 4649,
3605 4647, 4664, 4662, 4677, 4682, 4687, 4692, 4707, 4707, 4710,
3606 4717, 4735, 4742, 4750, 4758, 4765, 4773, 4782, 4791, 4799,
3607 4806, 4813, 4821, 4828, 4834, 4849, 4856, 4861, 4867, 4874,
3608 4881, 4882, 4883, 4886, 4887, 4890, 4892, 4901, 4902, 4909,
3609 4910, 4913, 4918, 4926, 4926, 4926, 4931, 4936, 4941, 4946,
3610 4953, 4959, 4966, 4967, 4974, 4974, 4976, 4976, 4976, 4976,
3611 4976, 4976, 4976, 4976, 4976, 4979, 4987, 4987, 4987, 4987,
3612 4987, 4987, 4992, 4997, 5002, 5007, 5012, 5018, 5023, 5028,
3613 5033, 5038, 5043, 5048, 5053, 5058, 5065, 5066, 5072, 5082,
3614 5086, 5089, 5094, 5101, 5103, 5107, 5112, 5115, 5121, 5126,
3615 5133, 5139, 5132, 5166, 5173, 5182, 5189, 5188, 5199, 5207,
3616 5213, 5223, 5229, 5234, 5242, 5249, 5260, 5266, 5271, 5277,
3617 5287, 5292, 5300, 5306, 5314, 5316, 5331, 5331, 5352, 5358,
3618 5363, 5369, 5377, 5386, 5387, 5390, 5391, 5393, 5406, 5413,
3619 5421, 5422, 5425, 5426, 5432, 5440, 5441, 5447, 5453, 5458,
3620 5463, 5470, 5473, 5480, 5484, 5483, 5496, 5499, 5506, 5513,
3621 5514, 5515, 5522, 5529, 5536, 5542, 5549, 5556, 5563, 5569,
3622 5574, 5579, 5586, 5585, 5596, 5602, 5610, 5616, 5621, 5626,
3623 5631, 5636, 5639, 5640, 5647, 5652, 5659, 5667, 5673, 5680,
3624 5681, 5688, 5695, 5700, 5705, 5710, 5717, 5719, 5726, 5732,
3625 5744, 5745, 5760, 5765, 5772, 5778, 5779, 5786, 5787, 5787,
3626 5787, 5787, 5787, 5787, 5787, 5788, 5789, 5790, 5793, 5793,
3627 5793, 5793, 5793, 5793, 5793, 5793, 5794, 5799, 5802, 5810,
3628 5822, 5829, 5836, 5841, 5846, 5854, 5874, 5877, 5882, 5886,
3629 5889, 5894, 5897, 5904, 5907, 5908, 5911, 5923, 5924, 5925,
3630 5932, 5945, 5957, 5964, 5964, 5964, 5964, 5968, 5972, 5979,
3631 5981, 5988, 5988, 5992, 5996, 6003, 6003, 6006, 6006, 6010,
3632 6014, 6022, 6026, 6034, 6038, 6046, 6050, 6058, 6062, 6088,
3633 6091, 6090, 6105, 6113, 6117, 6121, 6125, 6141, 6142, 6145,
3634 6150, 6153, 6154, 6157, 6173, 6174, 6177, 6185, 6186, 6194,
3635 6195, 6196, 6197, 6200, 6201, 6202, 6205, 6205, 6206, 6209,
3636 6210, 6211, 6212, 6213, 6214, 6215, 6218, 6228, 6235, 6235,
3637 6242, 6243, 6247, 6246, 6256, 6259, 6260, 6269, 6279, 6280,
3638 6280, 6297, 6297, 6297, 6297, 6297, 6297, 6297, 6297, 6297,
3639 6298, 6315, 6315, 6315, 6315, 6315, 6315, 6320, 6325, 6330,
3640 6335, 6340, 6345, 6350, 6355, 6360, 6365, 6370, 6375, 6380,
3641 6386, 6393, 6400, 6409, 6418, 6427, 6438, 6439, 6449, 6456,
3642 6461, 6480, 6482, 6493, 6513, 6514, 6517, 6523, 6529, 6537,
3643 6538, 6541, 6547, 6555, 6556, 6559, 6565, 6573, 6578, 6582,
3644 6582, 6612, 6614, 6613, 6626, 6627, 6634, 6636, 6659, 6664,
3645 6669, 6676, 6682, 6687, 6700, 6700, 6700, 6701, 6704, 6705,
3646 6706, 6709, 6710, 6713, 6714, 6717, 6718, 6721, 6724, 6727,
3647 6730, 6731, 6734, 6742, 6749, 6750, 6754
3652#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
3657static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
3661static const char *
const yytname[] =
3663 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"'class'\"",
3664 "\"'module'\"",
"\"'def'\"",
"\"'undef'\"",
"\"'begin'\"",
3665 "\"'rescue'\"",
"\"'ensure'\"",
"\"'end'\"",
"\"'if'\"",
"\"'unless'\"",
3666 "\"'then'\"",
"\"'elsif'\"",
"\"'else'\"",
"\"'case'\"",
"\"'when'\"",
3667 "\"'while'\"",
"\"'until'\"",
"\"'for'\"",
"\"'break'\"",
"\"'next'\"",
3668 "\"'redo'\"",
"\"'retry'\"",
"\"'in'\"",
"\"'do'\"",
3669 "\"'do' for condition\"",
"\"'do' for block\"",
"\"'do' for lambda\"",
3670 "\"'return'\"",
"\"'yield'\"",
"\"'super'\"",
"\"'self'\"",
"\"'nil'\"",
3671 "\"'true'\"",
"\"'false'\"",
"\"'and'\"",
"\"'or'\"",
"\"'not'\"",
3672 "\"'if' modifier\"",
"\"'unless' modifier\"",
"\"'while' modifier\"",
3673 "\"'until' modifier\"",
"\"'rescue' modifier\"",
"\"'alias'\"",
3674 "\"'defined?'\"",
"\"'BEGIN'\"",
"\"'END'\"",
"\"'__LINE__'\"",
3675 "\"'__FILE__'\"",
"\"'__ENCODING__'\"",
"\"local variable or method\"",
3676 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
3677 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
3678 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
3679 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
3680 "\"literal content\"",
"tREGEXP_END",
"\"dummy end\"",
"'.'",
3681 "\"backslash\"",
"\"escaped space\"",
"\"escaped horizontal tab\"",
3682 "\"escaped form feed\"",
"\"escaped carriage return\"",
3683 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
3684 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
3685 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
3686 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
3687 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
3688 "\"( arg\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
"\"**arg\"",
3689 "\"&\"",
"\"->\"",
"\"symbol literal\"",
"\"string literal\"",
3690 "\"backtick literal\"",
"\"regexp literal\"",
"\"word list\"",
3691 "\"verbatim word list\"",
"\"symbol list\"",
"\"verbatim symbol list\"",
3692 "\"terminator\"",
"\"'}'\"",
"\"'#{'\"",
"tSTRING_DVAR",
"tLAMBEG",
3693 "tLABEL_END",
"tIGNORED_NL",
"tCOMMENT",
"tEMBDOC_BEG",
"tEMBDOC",
3694 "tEMBDOC_END",
"tHEREDOC_BEG",
"tHEREDOC_END",
"k__END__",
"tLOWEST",
3695 "'='",
"'?'",
"':'",
"'>'",
"'<'",
"'|'",
"'^'",
"'&'",
"'+'",
"'-'",
3696 "'*'",
"'/'",
"'%'",
"tUMINUS_NUM",
"'!'",
"'~'",
"tLAST_TOKEN",
"'{'",
3697 "'}'",
"'['",
"'\\n'",
"','",
"'`'",
"'('",
"')'",
"']'",
"';'",
"' '",
3698 "$accept",
"option_terms",
"compstmt_top_stmts",
"$@1",
"program",
3699 "top_stmts",
"top_stmt",
"block_open",
"begin_block",
"compstmt_stmts",
3700 "$@2",
"$@3",
"bodystmt",
"$@4",
"stmts",
"stmt_or_begin",
"$@5",
3701 "allow_exits",
"k_END",
"$@6",
"stmt",
"asgn_mrhs",
"asgn_command_rhs",
3702 "command_asgn",
"op_asgn_command_rhs",
3703 "def_endless_method_endless_command",
"endless_command",
"option_'\\n'",
3704 "command_rhs",
"expr",
"$@7",
"$@8",
"def_name",
"defn_head",
"$@9",
3705 "defs_head",
"value_expr_expr",
"expr_value",
"$@10",
"$@11",
3706 "expr_value_do",
"command_call",
"value_expr_command_call",
3707 "command_call_value",
"block_command",
"cmd_brace_block",
"fcall",
3708 "command",
"mlhs",
"mlhs_inner",
"mlhs_basic",
"mlhs_items_mlhs_item",
3709 "mlhs_item",
"mlhs_head",
"mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
3710 "fitem",
"undef_list",
"$@12",
"op",
"reswords",
"asgn_arg_rhs",
"arg",
3711 "op_asgn_arg_rhs",
"range_expr_arg",
"def_endless_method_endless_arg",
3712 "ternary",
"endless_arg",
"relop",
"rel_expr",
"lex_ctxt",
3713 "begin_defined",
"after_rescue",
"value_expr_arg",
"arg_value",
3714 "aref_args",
"arg_rhs",
"paren_args",
"opt_paren_args",
"opt_call_args",
3715 "value_expr_command",
"call_args",
"$@13",
"command_args",
"block_arg",
3716 "opt_block_arg",
"args",
"arg_splat",
"mrhs_arg",
"mrhs",
"primary",
3717 "$@14",
"$@15",
"@16",
"@17",
"$@18",
"$@19",
"$@20",
"$@21",
"$@22",
3718 "$@23",
"$@24",
"value_expr_primary",
"primary_value",
"k_begin",
"k_if",
3719 "k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
3720 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
3721 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"k_yield",
"then",
3722 "do",
"if_tail",
"opt_else",
"for_var",
"f_marg",
"mlhs_items_f_marg",
3723 "f_margs",
"f_rest_marg",
"f_any_kwrest",
"$@25",
"f_eq",
3724 "f_kw_primary_value",
"f_kwarg_primary_value",
3725 "args_tail_basic_primary_value",
"block_args_tail",
"excessed_comma",
3726 "f_opt_primary_value",
"f_opt_arg_primary_value",
3727 "opt_args_tail_block_args_tail",
"block_param",
"opt_block_param_def",
3728 "block_param_def",
"opt_block_param",
"opt_bv_decl",
"bv_decls",
"bvar",
3729 "max_numparam",
"numparam",
"it_id",
"@26",
"$@27",
"lambda",
3730 "f_larglist",
"lambda_body",
"$@28",
"do_block",
"block_call",
3731 "method_call",
"brace_block",
"@29",
"brace_body",
"@30",
"do_body",
3732 "case_args",
"case_body",
"cases",
"p_pvtbl",
"p_pktbl",
"p_in_kwarg",
3733 "$@31",
"p_case_body",
"p_cases",
"p_top_expr",
"p_top_expr_body",
3734 "p_expr",
"p_as",
"$@32",
"p_alt",
"p_lparen",
"p_lbracket",
3735 "p_expr_basic",
"$@33",
"p_args",
"p_args_head",
"p_args_tail",
"p_find",
3736 "p_rest",
"p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
3737 "p_kw_label",
"p_kwrest",
"p_kwnorest",
"p_any_kwrest",
"p_value",
3738 "range_expr_p_primitive",
"p_primitive",
"p_variable",
"p_var_ref",
3739 "p_expr_ref",
"p_const",
"opt_rescue",
"exc_list",
"exc_var",
3740 "opt_ensure",
"literal",
"strings",
"string",
"string1",
"xstring",
3741 "regexp",
"nonempty_list_' '",
"words_tWORDS_BEG_word_list",
"words",
3742 "word_list",
"word",
"words_tSYMBOLS_BEG_symbol_list",
"symbols",
3743 "symbol_list",
"words_tQWORDS_BEG_qword_list",
"qwords",
3744 "words_tQSYMBOLS_BEG_qsym_list",
"qsymbols",
"qword_list",
"qsym_list",
3745 "string_contents",
"xstring_contents",
"regexp_contents",
3746 "string_content",
"@34",
"@35",
"@36",
"@37",
"@38",
"string_dend",
3747 "string_dvar",
"symbol",
"ssym",
"sym",
"dsym",
"numeric",
3748 "simple_numeric",
"nonlocal_var",
"user_variable",
"keyword_variable",
3749 "var_ref",
"var_lhs",
"backref",
"$@39",
"superclass",
3750 "f_opt_paren_args",
"f_paren_args",
"f_arglist",
"@40",
"f_kw_arg_value",
3751 "f_kwarg_arg_value",
"args_tail_basic_arg_value",
"args_tail",
3752 "f_opt_arg_value",
"f_opt_arg_arg_value",
"opt_args_tail_args_tail",
3753 "f_args",
"args_forward",
"f_bad_arg",
"f_norm_arg",
"f_arg_asgn",
3754 "f_arg_item",
"f_arg",
"f_label",
"kwrest_mark",
"f_no_kwarg",
3755 "f_kwrest",
"restarg_mark",
"f_rest_arg",
"blkarg_mark",
"f_block_arg",
3756 "opt_f_block_arg",
"value_expr_singleton_expr",
"singleton",
3757 "singleton_expr",
"$@41",
"assoc_list",
"assocs",
"assoc",
"operation2",
3758 "operation3",
"dot_or_colon",
"call_op",
"call_op2",
"rparen",
3759 "rbracket",
"rbrace",
"trailer",
"term",
"terms",
"none", YY_NULLPTR
3763yysymbol_name (yysymbol_kind_t yysymbol)
3765 return yytname[yysymbol];
3769#define YYPACT_NINF (-1145)
3771#define yypact_value_is_default(Yyn) \
3772 ((Yyn) == YYPACT_NINF)
3774#define YYTABLE_NINF (-817)
3776#define yytable_value_is_error(Yyn) \
3777 ((Yyn) == YYTABLE_NINF)
3781static const yytype_int16 yypact[] =
3783 -1145, 5956, 149, -1145, -1145, -1145, -1145, 10569, -1145, -1145,
3784 -1145, -1145, -1145, -1145, -1145, 11624, 11624, -1145, -1145, -1145,
3785 -1145, 6858, -1145, -1145, -1145, -1145, 134, 10415, 41, 37,
3786 -1145, -1145, -1145, -1145, 6234, 7014, -1145, -1145, 6390, -1145,
3787 -1145, -1145, -1145, -1145, -1145, -1145, -1145, 13184, 13184, 13184,
3788 13184, 197, 9328, 9486, 12104, 12344, 10870, -1145, 10261, -1145,
3789 -1145, -1145, 176, 176, 176, 176, 1105, 13304, 13184, -1145,
3790 317, -1145, -1145, 1233, -1145, -1145, -1145, -1145, -1145, 642,
3791 9, 9, -1145, -1145, 91, 389, 280, -1145, 272, 13904,
3792 -1145, 304, -1145, 3550, -1145, -1145, -1145, -1145, 861, 552,
3793 -1145, 718, -1145, 11504, 11504, -1145, -1145, 9948, 14022, 14140,
3794 14258, 10106, 11624, 7482, -1145, 626, 112, -1145, -1145, 337,
3795 -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145,
3796 -1145, -1145, -1145, -1145, -1145, -1145, -1145, 46, 610, -1145,
3797 374, 689, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145,
3798 -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145,
3799 -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145,
3800 -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145,
3801 -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145,
3802 -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145,
3803 -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145,
3804 -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145,
3805 338, -1145, -1145, -1145, -1145, -1145, -1145, 364, 13184, 482,
3806 9486, 13184, 13184, 13184, -1145, 13184, -1145, -1145, 412, 6204,
3807 -1145, 450, -1145, -1145, -1145, 408, -1145, 733, 74, 87,
3808 468, 355, 428, -1145, -1145, 11744, -1145, 11624, -1145, -1145,
3809 11245, 13424, 900, -1145, 429, -1145, 9644, -1145, -1145, -1145,
3810 -1145, -1145, 434, 9, 9, 91, -1145, 738, -1145, 439,
3811 550, 6360, 6360, 714, -1145, 9328, 477, 317, -1145, 1233,
3812 41, 489, -1145, -1145, 505, 807, 835, -1145, 450, 507,
3813 835, -1145, 41, 629, 1105, 14376, 555, 555, 547, -1145,
3814 742, 763, 765, 810, -1145, -1145, 523, -1145, -1145, 798,
3815 1118, 381, -1145, 546, 546, 546, 546, 640, -1145, -1145,
3816 -1145, -1145, -1145, -1145, -1145, 6108, 564, 11504, 11504, 11504,
3817 11504, -1145, 13424, 13424, 1435, 587, 603, -1145, 1435, -1145,
3818 608, -1145, -1145, -1145, -1145, 639, -1145, -1145, -1145, -1145,
3819 -1145, -1145, -1145, 9328, 10988, 606, -1145, -1145, 13184, 13184,
3820 13184, 13184, 13184, -1145, -1145, 13184, 13184, 13184, 13184, 13184,
3821 13184, 13184, 13184, -1145, 13184, -1145, -1145, 13184, 13184, 13184,
3822 13184, 13184, 13184, 13184, 13184, 13184, 13184, -1145, -1145, 14855,
3823 11624, 14953, 434, 8264, -1145, 642, -1145, 117, 117, 11504,
3824 9176, 9176, -1145, 317, 607, 728, -1145, -1145, 904, 775,
3825 86, 101, 138, 701, 796, 11504, 749, -1145, 656, 910,
3826 -1145, -1145, -1145, -1145, 125, 347, 388, 427, 534, 541,
3827 631, 637, 651, -1145, -1145, -1145, -1145, -1145, 682, -1145,
3828 -1145, 11106, -1145, -1145, -1145, 14757, -1145, -1145, -1145, -1145,
3829 -1145, -1145, 382, -1145, -1145, -1145, 638, -1145, 13184, 11864,
3830 -1145, -1145, 15051, 11624, 15149, -1145, -1145, 12224, -1145, 13184,
3831 41, -1145, 663, 41, 669, -1145, -1145, 693, 97, -1145,
3832 -1145, -1145, -1145, -1145, 10569, -1145, -1145, 13184, 695, 725,
3833 732, 15247, 15149, -1145, 37, 41, -1145, -1145, 5563, 737,
3834 730, -1145, 12104, -1145, -1145, 12344, -1145, -1145, -1145, 429,
3835 942, -1145, 741, -1145, -1145, 14376, 15345, 11624, 15443, -1145,
3836 -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145,
3837 -1145, 1161, 96, 1169, 111, 13184, -1145, -1145, 9796, -1145,
3838 -1145, -1145, -1145, -1145, 11384, -1145, -1145, -1145, -1145, -1145,
3839 -1145, -1145, -1145, -1145, -1145, 1268, -1145, -1145, -1145, -1145,
3840 -1145, 743, -1145, -1145, 746, -1145, -1145, -1145, 757, 41,
3841 -1145, -1145, -1145, 739, -1145, 760, 13184, 322, -1145, -1145,
3842 875, 778, 886, -1145, 13544, 8264, 317, 13544, 8264, -1145,
3843 824, -1145, -1145, -1145, 113, 113, 12464, 41, 14376, 802,
3844 -1145, 12584, -1145, 550, 1950, 1950, 1950, 1950, 2662, 3004,
3845 1950, 1950, 6360, 6360, 1120, 1120, -1145, 3584, 1304, 1304,
3846 1453, 58, 58, 550, 550, 550, 1078, 1078, 7638, 6546,
3847 7950, 6702, 434, -1145, 41, 825, 719, -1145, 805, -1145,
3848 7170, -1145, -1145, 113, -1145, 8416, 970, 8872, 60, 113,
3849 113, 997, 962, 150, 15541, 11624, 15639, -1145, -1145, -1145,
3850 942, -1145, -1145, -1145, -1145, 15737, 11624, 15835, 8264, 13424,
3851 -1145, -1145, -1145, 41, -1145, -1145, -1145, -1145, 3346, 13664,
3852 13664, 10569, -1145, 13184, 13184, -1145, 450, -1145, -1145, 428,
3853 5243, 7326, 41, 395, 432, 13184, 13184, -1145, -1145, 11984,
3854 -1145, 12224, -1145, -1145, -1145, 13424, 6204, -1145, 13784, 13784,
3855 71, 434, 434, 13664, -1145, 488, -1145, -1145, 835, 14376,
3856 741, 454, 685, 41, 386, 472, -1145, -1145, 1194, -1145,
3857 414, -1145, 176, -1145, -1145, 414, 176, -1145, 550, 867,
3858 -1145, 1268, 1337, -1145, 882, 41, 887, -1145, 109, -1145,
3859 -1145, 90, -1145, 1435, -1145, -1145, 918, 13184, 1435, -1145,
3860 -1145, -1145, -1145, -1145, 1288, -1145, -1145, 134, 1000, -1145,
3861 6204, 1021, 113, -1145, 1000, 1021, 113, -1145, -1145, 915,
3862 -1145, -1145, -1145, -1145, -1145, 13184, -1145, -1145, -1145, 916,
3863 917, 1033, -1145, -1145, 741, 14376, 1030, -1145, -1145, 1046,
3864 960, 7605, -1145, -1145, -1145, 963, 465, -1145, -1145, 965,
3865 -1145, -1145, -1145, -1145, 639, 939, 837, 11864, -1145, -1145,
3866 -1145, -1145, 639, -1145, 1101, -1145, 989, -1145, 1098, -1145,
3867 -1145, -1145, -1145, -1145, -1145, 12704, 113, -1145, 997, 113,
3868 264, 295, 41, 164, 181, 11504, 317, 11504, 8264, 897,
3869 685, -1145, 41, 113, 97, 10723, -1145, 112, 389, -1145,
3870 4701, -1145, -1145, -1145, -1145, 13184, -1145, -1145, -1145, -1145,
3871 490, -1145, -1145, 41, 977, 97, 134, -1145, -1145, -1145,
3872 -1145, 503, -1145, -1145, -1145, -1145, -1145, 546, -1145, 546,
3873 546, 546, -1145, 41, -1145, 1268, -1145, 1363, -1145, -1145,
3874 1068, 743, -1145, -1145, 981, 982, -1145, -1145, 986, -1145,
3875 991, -1145, 981, 13544, -1145, -1145, -1145, -1145, -1145, -1145,
3876 -1145, 992, 12824, -1145, 741, 500, -1145, -1145, -1145, 15933,
3877 11624, 16031, -1145, -1145, 13184, 13664, 13664, 975, -1145, -1145,
3878 -1145, 13664, 13664, -1145, -1145, 12944, 1098, -1145, -1145, -1145,
3879 9176, 11504, 113, -1145, -1145, 113, -1145, 13184, -1145, 147,
3880 -1145, -1145, 113, -1145, 184, 60, 8264, 317, 113, -1145,
3881 -1145, -1145, -1145, -1145, -1145, 13184, 13184, -1145, 13184, 13184,
3882 -1145, 12224, -1145, 13784, 1510, -1145, -1145, -1145, 998, 1002,
3883 -1145, 1288, -1145, 1288, -1145, 1435, -1145, 1288, -1145, -1145,
3884 1000, 1021, 13184, 13184, -1145, -1145, 13184, 1003, 11384, 11384,
3885 13664, 13184, 7794, 8106, 41, 519, 529, 5384, 5384, 6204,
3886 -1145, -1145, -1145, -1145, -1145, 13664, -1145, -1145, -1145, -1145,
3887 916, -1145, 1054, -1145, 1151, -1145, -1145, 117, -1145, -1145,
3888 -1145, 13064, 8568, -1145, -1145, -1145, 113, -1145, -1145, 13184,
3889 1435, -1145, -1145, 5804, 1363, 1363, 981, 981, 1020, 981,
3890 6204, 6204, 1038, 1038, 992, -1145, -1145, 6204, 533, -1145,
3891 -1145, -1145, 2073, 2073, 769, -1145, 4837, 312, 1131, -1145,
3892 1067, -1145, -1145, 268, -1145, 1049, -1145, -1145, -1145, 1034,
3893 -1145, 1035, -1145, 14685, -1145, -1145, -1145, -1145, -1145, 933,
3894 -1145, -1145, -1145, 29, -1145, -1145, -1145, -1145, -1145, -1145,
3895 -1145, -1145, -1145, 667, -1145, -1145, -1145, 14494, 117, -1145,
3896 -1145, 9176, -1145, -1145, 9024, 8416, 13184, -1145, 758, 5384,
3897 9176, -1145, 41, 102, 119, 1002, -1145, -1145, 1288, -1145,
3898 -1145, 1658, 9796, -1145, -1145, 8264, -1145, -1145, -1145, -1145,
3899 14685, 287, 41, 3934, -1145, 41, 1037, -1145, 1042, -1145,
3900 -1145, -1145, 954, -1145, 11504, -1145, 1149, 3934, -1145, 14685,
3901 375, 1106, 2073, 2073, 769, 253, 675, 5384, 5384, -1145,
3902 1146, -1145, 972, 126, 213, 225, 8264, 317, -1145, 989,
3903 -1145, -1145, -1145, -1145, 117, 988, 113, 1052, 1055, -1145,
3904 9796, -1145, -1145, -1145, -1145, 981, 743, -1145, 1059, -1145,
3905 -1145, -1145, 1060, -1145, 41, 739, 1070, 14612, 1073, -1145,
3906 -1145, -1145, 56, -1145, 1106, 1087, 1088, -1145, -1145, -1145,
3907 -1145, -1145, 41, -1145, -1145, 1091, 14685, 1097, -1145, -1145,
3908 -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, 41,
3909 41, 41, 41, 41, 41, 241, 16129, 11624, 16227, 1101,
3910 -1145, 1151, -1145, -1145, 11504, 11504, -1145, 1399, -1145, 8264,
3911 1109, -1145, -1145, 90, -1145, 1658, -1145, 1129, 14612, 1658,
3912 -1145, -1145, 1213, 990, 1420, -1145, -1145, 14685, -1145, 375,
3913 -1145, 14685, -1145, 3934, 496, -1145, -1145, -1145, -1145, -1145,
3914 -1145, 172, 194, 41, 283, 305, -1145, -1145, 8720, -1145,
3915 -1145, -1145, 901, -1145, -1145, 113, -1145, -1145, 743, -1145,
3916 -1145, 1115, 1124, -1145, 990, 1126, 1137, -1145, 16325, 1115,
3917 1138, 41, 1138, -1145, -1145, 308, 334, 1399, -1145, -1145,
3918 -1145, 1420, -1145, 1420, -1145, 1658, -1145, 1420, -1145, 1127,
3919 1141, -1145, 14685, -1145, -1145, -1145, -1145, -1145, 1115, 1115,
3920 1140, 1115, -1145, -1145, 1420, -1145, -1145, 1115, -1145
3926static const yytype_int16 yydefact[] =
3928 2, 0, 0, 47, 406, 407, 408, 0, 399, 400,
3929 401, 404, 26, 26, 26, 393, 394, 395, 396, 418,
3930 419, 323, 700, 699, 701, 702, 64, 0, 64, 0,
3931 816, 704, 703, 705, 97, 99, 694, 693, 98, 695,
3932 689, 690, 691, 692, 637, 710, 711, 0, 0, 0,
3933 0, 0, 0, 0, 816, 816, 126, 490, 663, 663,
3934 665, 667, 0, 0, 0, 0, 0, 0, 0, 6,
3935 3, 8, 26, 10, 43, 49, 40, 58, 61, 46,
3936 719, 719, 70, 91, 323, 90, 0, 112, 0, 116,
3937 128, 0, 237, 79, 246, 253, 282, 283, 267, 284,
3938 398, 0, 351, 0, 0, 87, 87, 0, 0, 0,
3939 0, 0, 360, 323, 370, 94, 368, 340, 341, 636,
3940 638, 342, 343, 646, 344, 652, 346, 656, 345, 658,
3941 347, 635, 681, 682, 634, 687, 698, 706, 707, 348,
3942 0, 349, 7, 1, 205, 216, 206, 229, 202, 222,
3943 212, 211, 232, 233, 227, 210, 209, 204, 230, 234,
3944 235, 214, 203, 217, 221, 223, 215, 208, 224, 231,
3945 226, 225, 218, 228, 213, 201, 220, 219, 200, 207,
3946 198, 199, 195, 196, 197, 155, 157, 156, 190, 191,
3947 186, 168, 169, 170, 177, 174, 176, 171, 172, 192,
3948 193, 178, 179, 183, 187, 173, 175, 165, 166, 167,
3949 180, 181, 182, 184, 185, 188, 189, 194, 160, 162,
3950 33, 158, 159, 161, 402, 403, 405, 0, 790, 0,
3951 0, 334, 793, 326, 663, 0, 318, 316, 0, 298,
3952 299, 329, 317, 110, 322, 816, 330, 0, 706, 707,
3953 0, 349, 816, 786, 111, 816, 509, 0, 107, 65,
3954 64, 0, 0, 28, 816, 12, 0, 11, 27, 295,
3955 393, 394, 510, 719, 719, 0, 261, 0, 360, 363,
3956 262, 251, 252, 357, 24, 0, 0, 3, 21, 23,
3957 64, 114, 20, 353, 0, 64, 64, 300, 0, 0,
3958 64, 784, 64, 0, 0, 0, 719, 719, 124, 397,
3959 0, 132, 133, 140, 487, 684, 0, 683, 685, 0,
3960 0, 0, 643, 647, 659, 653, 661, 688, 74, 273,
3961 274, 813, 812, 5, 814, 0, 0, 0, 0, 0,
3962 0, 816, 0, 0, 750, 0, 718, 389, 750, 716,
3963 0, 391, 409, 514, 504, 100, 516, 367, 410, 516,
3964 499, 816, 130, 0, 122, 117, 816, 77, 0, 0,
3965 0, 0, 0, 291, 292, 0, 0, 0, 0, 249,
3966 250, 0, 0, 75, 0, 289, 290, 0, 0, 0,
3967 0, 0, 0, 0, 0, 0, 0, 803, 804, 806,
3968 816, 805, 0, 0, 86, 84, 85, 0, 0, 0,
3969 0, 0, 377, 3, 4, 0, 430, 429, 0, 0,
3970 706, 707, 349, 150, 151, 0, 0, 153, 816, 0,
3971 706, 707, 349, 387, 225, 218, 228, 213, 195, 196,
3972 197, 155, 156, 782, 81, 80, 781, 780, 0, 779,
3973 109, 64, 108, 806, 805, 0, 369, 639, 816, 816,
3974 163, 789, 357, 333, 792, 325, 0, 816, 0, 0,
3975 319, 328, 806, 816, 805, 816, 816, 0, 320, 751,
3976 64, 312, 816, 64, 816, 311, 324, 0, 64, 366,
3977 73, 30, 32, 31, 0, 816, 296, 0, 0, 0,
3978 0, 806, 805, 816, 0, 64, 355, 14, 0, 113,
3979 0, 358, 811, 810, 301, 811, 303, 359, 785, 0,
3980 139, 688, 127, 119, 718, 0, 806, 816, 805, 488,
3981 669, 686, 672, 670, 664, 640, 641, 666, 642, 668,
3982 644, 0, 0, 0, 0, 0, 815, 9, 0, 34,
3983 35, 36, 37, 297, 0, 71, 72, 757, 754, 753,
3984 752, 755, 763, 764, 751, 0, 770, 765, 774, 773,
3985 769, 816, 766, 723, 816, 729, 749, 732, 735, 64,
3986 730, 756, 758, 759, 761, 735, 722, 768, 443, 442,
3987 772, 735, 776, 728, 0, 0, 0, 0, 0, 487,
3988 0, 514, 101, 487, 0, 0, 0, 64, 0, 118,
3989 131, 0, 527, 259, 266, 268, 269, 270, 277, 278,
3990 271, 272, 247, 248, 275, 276, 527, 64, 263, 264,
3991 265, 254, 255, 256, 257, 258, 293, 294, 794, 796,
3992 795, 797, 323, 507, 64, 816, 794, 796, 795, 797,
3993 323, 508, 816, 0, 421, 0, 420, 0, 0, 0,
3994 0, 0, 375, 357, 806, 816, 805, 380, 385, 150,
3995 151, 152, 712, 383, 714, 806, 816, 805, 0, 0,
3996 801, 802, 82, 64, 362, 794, 795, 503, 323, 0,
3997 0, 0, 816, 0, 0, 788, 331, 327, 332, 816,
3998 794, 795, 64, 794, 795, 0, 0, 787, 306, 313,
3999 308, 315, 807, 365, 29, 0, 279, 13, 0, 0,
4000 356, 0, 816, 0, 25, 115, 22, 354, 64, 0,
4001 125, 798, 138, 64, 794, 795, 489, 673, 0, 645,
4002 0, 649, 0, 655, 651, 0, 0, 657, 260, 0,
4003 38, 0, 441, 433, 435, 64, 438, 431, 0, 727,
4004 778, 0, 726, 0, 745, 717, 0, 0, 0, 742,
4005 721, 594, 767, 771, 0, 747, 775, 64, 59, 62,
4006 286, 280, 0, 720, 60, 281, 0, 488, 512, 0,
4007 488, 416, 417, 513, 498, 334, 92, 93, 41, 336,
4008 0, 45, 335, 129, 123, 0, 0, 69, 48, 67,
4009 0, 304, 329, 236, 42, 0, 349, 525, 525, 0,
4010 816, 816, 514, 506, 104, 0, 511, 313, 816, 816,
4011 310, 505, 102, 309, 816, 352, 816, 422, 816, 424,
4012 88, 423, 373, 374, 413, 0, 0, 527, 0, 0,
4013 798, 356, 64, 794, 795, 0, 0, 0, 0, 150,
4014 151, 154, 64, 0, 64, 0, 361, 500, 95, 50,
4015 304, 238, 57, 245, 164, 0, 791, 321, 816, 816,
4016 511, 816, 816, 64, 816, 64, 64, 56, 244, 302,
4017 120, 511, 26, 674, 671, 679, 680, 648, 650, 660,
4018 654, 662, 39, 64, 440, 0, 760, 0, 777, 724,
4019 768, 816, 734, 733, 735, 735, 445, 731, 735, 762,
4020 735, 759, 735, 0, 816, 816, 390, 392, 489, 96,
4021 489, 339, 0, 816, 121, 357, 816, 816, 816, 806,
4022 816, 805, 526, 526, 0, 0, 0, 0, 105, 808,
4023 816, 0, 0, 103, 411, 816, 18, 626, 415, 414,
4024 0, 0, 0, 425, 427, 0, 89, 0, 518, 0,
4025 378, 525, 0, 379, 511, 0, 0, 0, 0, 511,
4026 388, 783, 83, 501, 502, 0, 0, 816, 0, 0,
4027 307, 314, 364, 0, 750, 675, 432, 434, 436, 439,
4028 725, 0, 746, 0, 743, 0, 738, 0, 740, 748,
4029 66, 288, 0, 0, 26, 26, 334, 337, 0, 0,
4030 0, 0, 794, 795, 64, 794, 795, 0, 0, 285,
4031 54, 242, 55, 243, 106, 0, 52, 240, 53, 241,
4032 627, 628, 816, 629, 816, 15, 428, 0, 371, 372,
4033 519, 0, 0, 526, 376, 381, 0, 713, 384, 0,
4034 750, 491, 494, 0, 0, 0, 735, 735, 735, 735,
4035 63, 287, 816, 816, 338, 44, 68, 305, 511, 618,
4036 624, 590, 0, 0, 0, 526, 64, 526, 578, 663,
4037 0, 617, 78, 535, 541, 543, 546, 539, 538, 574,
4038 540, 583, 586, 589, 595, 596, 585, 549, 604, 597,
4039 550, 605, 606, 607, 608, 609, 610, 611, 612, 614,
4040 613, 615, 616, 593, 76, 51, 239, 0, 0, 631,
4041 412, 0, 19, 633, 0, 0, 0, 520, 816, 0,
4042 0, 386, 64, 0, 0, 437, 744, 739, 0, 736,
4043 741, 479, 0, 477, 476, 0, 602, 603, 151, 622,
4044 0, 566, 64, 567, 571, 64, 0, 561, 0, 816,
4045 564, 577, 0, 619, 0, 620, 0, 536, 544, 0,
4046 584, 588, 600, 601, 0, 526, 526, 0, 0, 592,
4047 0, 630, 0, 706, 707, 349, 0, 3, 16, 816,
4048 521, 523, 524, 522, 0, 532, 0, 481, 0, 496,
4049 0, 492, 678, 677, 676, 735, 816, 448, 816, 454,
4050 475, 457, 460, 480, 64, 759, 460, 447, 460, 453,
4051 515, 517, 64, 559, 581, 569, 568, 560, 572, 809,
4052 562, 591, 64, 542, 537, 574, 0, 575, 579, 663,
4053 587, 582, 598, 599, 623, 548, 558, 547, 554, 64,
4054 64, 64, 64, 64, 64, 357, 806, 816, 805, 816,
4055 632, 816, 426, 528, 0, 0, 382, 0, 493, 0,
4056 0, 737, 452, 0, 451, 0, 471, 0, 0, 455,
4057 466, 468, 0, 446, 0, 473, 565, 0, 573, 0,
4058 621, 0, 545, 0, 0, 551, 552, 553, 555, 556,
4059 557, 798, 356, 64, 794, 795, 625, 17, 0, 533,
4060 534, 485, 64, 483, 486, 0, 495, 449, 816, 459,
4061 458, 460, 460, 478, 456, 460, 460, 357, 806, 460,
4062 570, 64, 575, 576, 580, 511, 816, 0, 482, 497,
4063 450, 0, 472, 0, 469, 0, 463, 0, 465, 798,
4064 356, 474, 0, 563, 530, 531, 529, 484, 460, 460,
4065 460, 460, 470, 464, 0, 461, 467, 460, 462
4069static const yytype_int16 yypgoto[] =
4071 -1145, -104, 1039, -1145, -1145, -1145, 964, -1145, 799, -17,
4072 -1145, -1145, -466, -1145, 173, 803, -1145, -2, -1145, -1145,
4073 6, -1145, -1145, -254, -1145, 0, -518, 144, -565, -64,
4074 -1145, -1145, 442, 2796, -1145, 3210, -1145, -78, -1145, -1145,
4075 1206, -42, -1145, 709, -1145, -448, 1320, -10, 1210, -163,
4076 14, -435, -41, -1145, 18, 3905, -406, 1209, -39, -4,
4077 -1145, -1145, 17, -1145, -1145, 4762, -1145, -1145, -1145, -1145,
4078 -526, 1229, -1145, 47, 833, 167, -1145, 1935, -1145, 566,
4079 20, 643, -382, -1145, 53, -1145, -57, -396, -214, 30,
4080 -351, -1145, -535, -47, -1145, -1145, -1145, -1145, -1145, -1145,
4081 -1145, -1145, -1145, -1145, -1145, -1145, 1096, -1145, -1145, -1145,
4082 -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145, -1145,
4083 -1145, -1145, 376, -1145, 282, 2058, 2282, -395, 359, 131,
4084 -773, -1145, -813, -824, 586, 436, -308, -1145, 114, 64,
4085 -1145, -1145, 198, -1145, -1144, 61, 132, -1145, 275, -1145,
4086 -1145, 128, -1145, 7, 238, -643, -194, -1145, -1145, 453,
4087 -1145, -1145, -1145, 487, -1145, -1145, -95, -1145, -480, -1145,
4088 1004, -1145, -798, -1145, -722, -863, -541, -1145, 13, -1145,
4089 -1145, -872, -172, -1145, -1145, -1145, -1145, -1145, 118, -1145,
4090 -73, -1145, -836, -688, -1057, -452, -764, -955, -1145, 191,
4091 -1145, -1145, -784, 196, -1145, -1145, -469, 202, -1145, -1145,
4092 -1145, 105, -1145, -1145, 108, 545, 715, -1145, 1264, 781,
4093 1122, 50, -1145, 1421, -1145, 841, -1145, 1681, -1145, -1145,
4094 1867, -1145, 1882, -1145, -1145, -58, -1145, -1145, -227, -1145,
4095 -1145, -1145, -1145, -1145, -1145, -1145, 40, -1145, -1145, -1145,
4096 -1145, 34, -54, 3474, -1, 1274, 4036, 3597, -1145, -1145,
4097 8, 777, 59, -1145, 625, -1145, -1145, -291, -681, 620,
4098 -490, -320, -221, -1110, -516, -334, -735, -547, -405, -471,
4099 -1145, -724, -1145, -599, -1145, -383, -543, -1145, -1145, -1145,
4100 -1145, -1145, 43, -399, -369, -1145, -1145, -93, 1280, -153,
4101 148, 57, -236, -53, -68, 98
4105static const yytype_int16 yydefgoto[] =
4107 0, 333, 69, 1, 2, 70, 71, 266, 267, 652,
4108 1134, 1271, 653, 1044, 287, 288, 504, 224, 72, 494,
4109 289, 74, 75, 76, 77, 78, 778, 487, 808, 79,
4110 626, 612, 444, 273, 865, 274, 406, 407, 409, 966,
4111 410, 82, 797, 809, 83, 602, 275, 85, 86, 290,
4112 87, 522, 88, 89, 90, 238, 427, 428, 218, 219,
4113 220, 691, 641, 222, 92, 93, 94, 95, 96, 97,
4114 781, 395, 98, 553, 497, 554, 240, 241, 294, 813,
4115 830, 831, 480, 242, 481, 257, 258, 244, 470, 645,
4116 246, 801, 802, 99, 403, 510, 848, 661, 855, 1140,
4117 858, 856, 678, 595, 598, 100, 277, 102, 103, 104,
4118 105, 106, 107, 108, 109, 110, 111, 356, 359, 955,
4119 1131, 845, 960, 961, 793, 278, 279, 655, 840, 962,
4120 963, 419, 753, 754, 755, 756, 571, 766, 767, 1217,
4121 1218, 1219, 1329, 1290, 1221, 1222, 1286, 1223, 1152, 1153,
4122 1224, 1208, 1322, 1323, 529, 736, 892, 314, 1143, 114,
4123 1061, 1211, 1279, 360, 115, 116, 357, 599, 600, 603,
4124 604, 969, 846, 1203, 942, 1027, 817, 1318, 849, 1366,
4125 1204, 1092, 1234, 1094, 1246, 1095, 1187, 1188, 1096, 1299,
4126 1162, 1163, 1164, 1098, 1099, 1247, 1166, 1100, 1101, 1102,
4127 1103, 1104, 572, 1106, 1107, 1108, 1109, 1110, 1111, 1112,
4128 1113, 956, 1042, 1128, 1132, 117, 118, 119, 120, 121,
4129 122, 323, 123, 124, 541, 740, 125, 126, 543, 127,
4130 128, 129, 130, 542, 544, 316, 320, 321, 534, 738,
4131 737, 893, 995, 1063, 1214, 894, 131, 132, 317, 133,
4132 134, 135, 136, 248, 249, 139, 250, 251, 857, 673,
4133 345, 346, 347, 348, 573, 574, 575, 912, 577, 578,
4134 764, 579, 580, 581, 582, 921, 584, 585, 586, 587,
4135 588, 589, 590, 591, 592, 593, 759, 447, 448, 449,
4136 679, 299, 484, 253, 721, 643, 682, 677, 402, 489,
4137 826, 1170, 514, 656, 414, 269
4143static const yytype_int16 yytable[] =
4145 138, 319, 335, 412, 318, 237, 237, 73, 401, 309,
4146 583, 225, 226, 657, 583, 236, 236, 334, 644, 315,
4147 671, 456, 454, 263, 221, 328, 408, 355, 596, 413,
4148 642, 762, 650, 919, 483, 286, 293, 911, 478, 405,
4149 405, 256, 309, 405, 221, 245, 245, 223, 365, 757,
4150 972, 138, 138, 576, 334, 312, 452, 576, 252, 252,
4151 516, 309, 309, 309, 518, 965, 291, 223, 243, 254,
4152 336, 785, 445, 697, 308, 221, 814, 268, 707, 784,
4153 1028, 697, 913, 999, 295, 818, 688, 839, 312, 350,
4154 730, 702, 997, 537, 539, 769, 943, 296, 300, 142,
4155 327, 775, 237, 642, 354, 650, 1235, 421, 431, 431,
4156 431, -141, 236, 324, 325, 326, 707, 352, 698, 1212,
4157 1245, 789, 505, 791, 869, 872, -142, 1184, 221, 782,
4158 654, 1209, 786, 722, 342, 343, 368, 509, 352, -141,
4159 351, 1330, 245, -816, 928, 733, -708, 930, 562, 143,
4160 292, 292, 297, 301, 474, 252, 1124, 1176, 887, 722,
4161 654, 698, 742, -149, 915, 450, 344, 1324, 563, 920,
4162 261, 879, 264, 804, -708, -148, 466, 746, 349, 349,
4163 -141, 792, 1185, 507, 502, -146, 1186, -709, 265, -144,
4164 1139, 1097, 1097, 785, -700, 259, 488, 490, 567, 568,
4165 607, -132, 392, 393, 394, -147, -145, -147, -141, -143,
4166 259, 1330, 863, 286, 331, 743, 914, 528, 568, 508,
4167 332, -142, 1160, -700, 1169, 1210, -142, 922, -795, 138,
4168 747, 569, 1261, 1264, 334, 757, 904, 1324, -149, 1213,
4169 1145, -132, 353, 1105, 1105, 237, 1343, 237, 255, 1053,
4170 569, 259, 997, 283, -148, 236, -133, 236, 309, 549,
4171 550, 551, 552, 353, 523, 138, 919, 1205, 286, 861,
4172 478, 331, 73, 405, 405, 405, 405, 332, 555, 556,
4173 -141, 499, 500, 852, 138, 482, -141, 245, 259, -146,
4174 910, 260, 256, -140, 862, 354, -144, 722, 684, 291,
4175 252, 331, 1051, 1097, 312, -139, 971, 332, 722, 662,
4176 486, 496, 707, 697, 741, 697, 741, 309, -145, -135,
4177 -147, -143, 1255, 1257, 913, 666, -146, 708, 292, -794,
4178 710, 658, -146, 351, 138, 713, -136, 322, 521, -134,
4179 1202, 73, 947, 471, 1341, 405, 286, 668, -147, 959,
4180 471, -795, 725, 485, -147, 1105, 771, 807, 698, 847,
4181 334, 405, 138, 312, 142, 1201, 351, -142, 1000, 1176,
4182 934, 349, 349, -142, 772, 908, 948, 291, 908, -149,
4183 1030, 1032, 609, 292, 953, -149, 1036, 1038, 1176, 757,
4184 237, 757, 978, 659, 660, -148, 1105, 1011, 1165, 1236,
4185 236, -148, 138, 1105, 1105, 1010, 1068, 259, 606, 138,
4186 138, -135, -64, 611, 361, 1248, -699, 358, 649, -137,
4187 1041, -794, 651, 1177, 1002, 1004, 765, 362, 1006, 583,
4188 1008, 697, 1009, 1081, 583, 807, 807, -144, 366, 513,
4189 513, 237, -581, -144, 513, -699, 519, 530, 538, 59,
4190 -138, 236, -795, 563, 803, 476, 1066, -701, 1067, -145,
4191 1069, 292, -143, 237, -64, -145, 259, 1011, -143, 807,
4192 1125, 331, 649, 236, 458, 687, 698, 332, 309, -137,
4193 530, 245, 692, 567, 523, 877, -701, 1249, 883, -149,
4194 714, 649, 889, 460, 252, 881, -702, -136, 485, 1260,
4195 1263, 292, 532, 533, 683, 689, 690, 138, 292, 292,
4196 1056, 221, 699, 898, 694, 1105, -148, 237, 898, 649,
4197 -135, 260, 705, 706, 312, -702, 674, 236, -134, -144,
4198 866, 749, 882, 1248, 223, 532, 533, 1248, 462, 1344,
4199 -135, -135, 496, 783, -135, 649, 467, 138, 757, 757,
4200 723, 468, 1228, 138, 919, 728, 1123, 1123, 1024, 1328,
4201 750, 309, 530, 469, 796, 459, -145, 523, 475, 796,
4202 642, 485, 650, 1364, 1052, 322, 1146, 1147, 1149, 1150,
4203 471, 698, 471, 477, 779, 824, 495, 779, -137, 530,
4204 987, 255, 707, 832, 138, 697, 451, 138, 1344, -149,
4205 503, 1215, 906, -704, 1226, 841, -136, 312, -137, -137,
4206 -703, -794, -137, 1156, 1157, 864, 919, 532, 533, 828,
4207 1241, -397, -113, -112, -143, 485, -136, -136, 368, 829,
4208 -136, 868, -704, 950, -148, 506, 800, -134, 836, -703,
4209 838, 800, 531, -129, 532, 533, 292, 796, 796, -397,
4210 -397, 885, 1135, -144, 138, 237, 138, -134, -134, 517,
4211 583, -134, 823, -145, 511, 236, 237, -143, 1123, 760,
4212 877, 583, 760, 1282, 1062, 1284, 236, 138, 1159, 342,
4213 343, 796, 309, 649, 895, 520, 1332, 874, 890, 1231,
4214 1336, 807, 807, 292, 649, 397, 292, 807, 807, 834,
4215 -705, 771, 525, 576, 530, -397, -696, 540, 221, 1123,
4216 -709, 981, 344, 1252, 1253, 548, 1123, 1123, 545, 1189,
4217 -697, 594, 941, 398, 453, 1281, 583, -97, 312, -705,
4218 990, 223, 992, 1196, 1014, -696, 1015, -715, 1331, 875,
4219 1142, 823, 597, 471, -142, 601, 1227, 1339, 833, -697,
4220 996, 680, 884, 292, -356, 292, 1370, 535, 309, 532,
4221 533, 610, 693, 485, 523, -133, 807, 546, 1229, 576,
4222 -696, 819, 983, 959, 485, 844, 292, 975, 1254, 977,
4223 681, 807, -356, -356, 663, 1350, 833, 397, 825, 459,
4224 897, 405, 899, 405, 672, 900, 901, 471, -696, -696,
4225 667, 669, 397, 976, 312, 670, 1368, 397, 1369, 1273,
4226 1371, 397, 910, 1325, 503, 398, 399, 1225, 709, 828,
4227 833, 669, -98, -149, 711, 1158, 445, 1377, 1123, 259,
4228 398, 472, -706, -64, -707, 398, 501, 787, -356, 398,
4229 526, 790, -795, 1216, -140, 1340, 825, 717, -148, 1342,
4230 880, 712, -97, -144, -696, 1093, 1093, 138, -97, 718,
4231 -706, -706, -707, -707, 530, -697, 719, 945, 946, -139,
4232 884, 400, 513, -444, -135, 951, 952, 825, 1227, -349,
4233 1227, 891, 221, 1047, 1227, 1313, 473, 794, 727, 1227,
4234 994, 473, -129, -697, -697, 527, 729, 405, 758, 722,
4235 908, 761, 1229, 796, 796, 829, 1229, -349, -349, 796,
4236 796, 1229, 763, 779, 1161, 768, -706, 535, -707, 532,
4237 533, 923, 841, -798, 1057, 985, 986, 773, 988, 989,
4238 237, 1181, 957, 774, 964, 835, 964, 950, 776, -145,
4239 236, 842, 843, 1046, 373, 374, 1227, -98, 1227, -697,
4240 1227, 1225, 1227, -98, 491, 1225, 292, 805, 649, 138,
4241 -136, 259, 512, -349, 492, 493, -798, 1093, 1229, 1227,
4242 1229, -143, 1229, 397, 1229, 138, 788, 1216, 796, 397,
4243 827, 1216, 471, 837, 1020, 800, 1216, 847, 1232, 259,
4244 515, 1229, -134, 796, -798, -798, 825, 1035, 385, 386,
4245 974, 398, 664, 958, 959, 1161, 825, 398, 675, 760,
4246 979, -357, 1072, 1073, 844, 1161, 1161, 138, 138, 902,
4247 530, 1225, 1182, 1183, 1075, 1076, 1122, 1122, 1274, 1275,
4248 993, 1172, 397, 1258, 1059, 1138, 1175, 905, 485, -357,
4249 -357, 397, 907, 1216, 924, 1216, 1144, 1216, -798, 1216,
4250 -798, 138, 916, 1043, -794, 259, 1347, 665, 292, 397,
4251 398, 939, 138, 676, 926, 925, 1216, 929, 927, 398,
4252 1266, -329, 932, 535, 292, 532, 533, 933, 1241, 1296,
4253 309, 1122, 1122, 524, 524, 1122, 935, 398, 1338, 1300,
4254 936, 1012, 1013, 1270, 937, -357, 1242, 101, 949, 1268,
4255 1018, 944, 1122, 1019, 1244, 1021, 1305, 1306, 1307, 954,
4256 405, 247, 247, 959, 1259, 1262, 940, 1198, 1199, 1173,
4257 772, 36, 37, 1206, 39, 1267, 1194, 1034, 970, 508,
4258 138, 973, 991, 138, 138, 1230, 1001, 1003, 1122, 138,
4259 1129, 1005, 1133, 676, 334, 980, 1007, -333, 101, 101,
4260 292, 138, 310, 1064, 138, 1127, 368, 1065, -331, 1122,
4261 1130, 292, 1122, 247, 40, 41, 42, 43, 825, 1174,
4262 1154, 1154, 1078, 381, 382, 1148, 1122, 1151, 1122, 1269,
4263 309, 1122, 1122, 1171, 530, 310, 1122, 1122, 1178, 1179,
4264 1180, 1304, 1238, 1280, 1239, 138, 1319, 1320, 368, 247,
4265 247, 1079, 1265, 247, 418, 429, 429, 1176, 247, 138,
4266 405, 405, 1277, 1278, 1283, 1285, 1240, 387, 388, 389,
4267 390, 391, 392, 393, 394, 1289, 431, 530, 1294, 292,
4268 825, 1168, 292, 292, 1167, 530, 964, 536, 292, 532,
4269 533, 309, 1297, 1298, 1048, 1122, 1301, 1049, 36, 37,
4270 292, 39, 1303, 292, 1054, 871, 873, 237, 45, 46,
4271 1058, 1326, 390, 391, 392, 393, 394, 236, 1333, 1337,
4272 1351, 871, 873, 337, 338, 339, 340, 341, 138, 1353,
4273 739, 1355, 532, 533, -794, 649, 1207, 431, 744, 888,
4274 532, 533, 1357, 1362, 292, 1374, 1122, 964, -795, 547,
4275 1122, 1346, 1122, 724, 1197, 498, 825, 982, 292, 825,
4276 1233, 726, 411, 1237, 760, 798, 760, 138, 416, 433,
4277 557, 84, 558, 559, 560, 561, 101, 396, 715, 825,
4278 1272, 867, 1045, 1256, 1055, 84, 84, 903, 1141, 1288,
4279 557, 998, 558, 559, 560, 561, 562, 1327, 1155, 1220,
4280 1335, 247, 1287, 247, 1367, 984, 247, 247, 1291, 1365,
4281 1295, 1122, 101, 605, 1302, 485, 563, 957, 1207, 1133,
4282 751, 1250, 84, 84, 1316, 752, 1251, 292, 1243, 1317,
4283 564, 101, 368, 457, 745, 446, 909, 84, 918, 557,
4284 565, 558, 559, 560, 561, 455, 567, 568, 1363, 381,
4285 382, 310, 0, 0, 0, 0, 825, 825, 825, 0,
4286 1308, 1309, 1310, 0, 0, 557, 292, 558, 559, 560,
4287 561, 0, 0, 84, 84, 0, 760, 84, 0, 569,
4288 0, 101, 84, 247, 247, 247, 247, 0, 247, 247,
4289 0, 888, 0, 0, 964, 389, 390, 391, 392, 393,
4290 394, 1321, 0, 558, 559, 560, 561, 825, 0, 101,
4291 310, 1345, 0, 1352, 1354, 751, 1348, 1356, 1358, 0,
4292 0, 1361, 557, 0, 558, 559, 560, 561, 562, 0,
4293 1091, 1091, 0, 0, 0, 1168, 0, 557, 1276, 558,
4294 559, 560, 561, 562, 0, 0, 247, 0, 563, 101,
4295 1372, 1373, 1375, 1376, 0, 247, 101, 101, 0, 1378,
4296 0, 1031, 1033, 563, 0, 0, 0, 1037, 1039, 0,
4297 0, 247, 565, 0, 0, 0, 0, 564, 567, 568,
4298 0, 368, 0, 0, 0, 1091, 1091, 565, 0, 1091,
4299 0, 0, 566, 567, 568, 0, 0, 247, 381, 382,
4300 84, 1031, 1033, 0, 1037, 1039, 1091, 0, 0, 0,
4301 0, 569, 557, 0, 558, 559, 560, 561, 562, 247,
4302 0, 0, 1114, 1114, 0, 84, 569, 84, 0, 570,
4303 84, 84, 0, 0, 0, 0, 84, 0, 563, 0,
4304 0, 0, 1091, 0, 0, 390, 391, 392, 393, 394,
4305 0, 1126, 564, 0, 101, 84, 0, 1349, 0, 0,
4306 0, 0, 565, 1091, 0, 0, 1091, 566, 567, 568,
4307 0, 310, 0, 247, 0, 1126, 0, 1114, 1114, 0,
4308 1091, 1114, 1091, 0, 0, 1091, 1091, 0, 0, 0,
4309 1091, 1091, 0, 0, 101, 0, 0, 0, 1114, 0,
4310 101, 569, 0, 0, 570, 84, 0, 84, 84, 84,
4311 84, 0, 84, 84, 0, 0, 0, 1060, 0, 0,
4312 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4313 0, 0, 0, 84, 1114, 0, 0, 0, 0, 0,
4314 247, 101, 0, 247, 101, 0, 0, 0, 0, 1091,
4315 0, 0, 247, 0, 310, 1114, 0, 815, 1114, 0,
4316 557, 0, 558, 559, 560, 561, 562, 0, 0, 0,
4317 84, 0, 1114, 84, 1114, 0, 0, 1114, 1114, 84,
4318 84, 84, 1114, 1114, 0, 0, 563, 0, 0, 0,
4319 0, 0, 1115, 1115, 0, 84, 0, 0, 0, 0,
4320 1091, 101, 0, 101, 1091, 0, 1091, 0, 0, 0,
4321 565, 247, 0, 0, 0, 566, 567, 568, 0, 0,
4322 0, 84, 247, 0, 101, 247, 0, 0, 0, 0,
4323 0, 0, 0, 0, 0, 815, 815, 0, 0, 0,
4324 0, 1114, 0, 84, 0, 0, 0, 1115, 1115, 569,
4325 0, 1115, 570, 0, 0, 0, 0, 0, 1116, 1116,
4326 0, 247, 0, 0, 0, 1091, 0, 0, 1115, 815,
4327 0, 0, 0, 0, 0, 310, 0, 0, 84, 0,
4328 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4329 0, 0, 1114, 0, 0, 0, 1114, 84, 1114, 0,
4330 0, 0, 0, 0, 1115, 0, 0, 0, 0, 0,
4331 0, 0, 0, 1116, 1116, 0, 0, 1116, 84, 0,
4332 0, 0, 0, 0, 84, 1115, 0, 0, 1115, 0,
4333 0, 0, 0, 0, 1116, 0, 0, 0, 0, 0,
4334 0, 0, 1115, 0, 1115, 0, 0, 1115, 1115, 0,
4335 0, 310, 1115, 1115, 0, 0, 0, 1114, 0, 0,
4336 0, 0, 0, 0, 84, 84, 0, 84, 84, 0,
4337 1116, 0, 0, 0, 0, 0, 84, 0, 0, 0,
4338 0, 84, 0, 0, 0, 0, 0, 0, 0, 0,
4339 0, 1116, 0, 0, 1116, 0, 0, 0, 0, 0,
4340 0, 247, 0, 247, 101, 0, 0, 0, 1116, 0,
4341 1116, 1115, 0, 1116, 1116, 0, 0, 0, 1116, 1116,
4342 0, 0, 0, 0, 0, 84, 0, 84, 0, 0,
4343 0, 0, 0, 0, 0, 84, 0, 0, 0, 0,
4344 298, 0, 0, 0, 0, 0, 84, 0, 84, 84,
4345 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,
4346 84, 0, 1115, 0, 0, 0, 1115, 0, 1115, 247,
4347 0, 0, 0, 0, 0, 0, 0, 1116, 368, -817,
4348 -817, -817, -817, 373, 374, 84, 247, -817, -817, 0,
4349 0, 815, 815, 84, 0, 381, 382, 815, 815, 0,
4350 0, 0, 0, 0, 0, 0, 101, 247, 0, 112,
4351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4352 0, 0, 101, 112, 112, 0, 0, 1115, 1116, 0,
4353 0, 0, 1116, 0, 1116, 0, 0, 385, 386, 387,
4354 388, 389, 390, 391, 392, 393, 394, 0, 0, 0,
4355 0, 0, 0, 0, 0, 0, 22, 23, 24, 25,
4356 112, 112, 0, 0, 101, 101, 815, 0, 0, 0,
4357 0, 0, 31, 32, 33, 112, 0, 0, 0, 0,
4358 0, 815, 40, 41, 42, 43, 44, 0, 0, 0,
4359 0, 0, 0, 1116, 0, 0, 0, 0, 101, 1117,
4360 1117, 0, 0, 0, 0, 0, 0, 0, 0, 101,
4361 0, 112, 112, 461, 0, 112, 463, 464, 465, 0,
4362 112, 0, 0, 0, 0, 84, 0, 84, 84, 0,
4363 0, 0, 0, 57, 58, 59, 60, 61, 62, 63,
4364 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
4365 0, 0, 0, 0, 1117, 1117, 0, 0, 1117, 0,
4366 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4367 304, 0, 0, 1192, 0, 1117, 0, 101, 0, 0,
4368 101, 101, 0, 0, 0, 0, 101, 0, 0, 0,
4369 0, 0, 0, 84, 0, 0, 0, 0, 101, 0,
4370 0, 101, 0, 0, 0, 0, 0, 0, 0, 0,
4371 84, 1117, 0, 0, 0, 84, 84, 0, 0, 0,
4372 247, 84, 84, 0, 0, 0, 0, 0, 0, 0,
4373 84, 84, 1117, 113, 0, 1117, 0, 0, 112, 0,
4374 0, 0, 101, 0, 0, 0, 84, 113, 113, 1117,
4375 0, 1117, 0, 0, 1117, 1117, 101, 0, 0, 1117,
4376 1117, 0, 0, 112, 0, 112, 0, 0, 112, 112,
4377 0, 0, 0, 1293, 112, 0, 0, 0, 0, 0,
4378 0, 0, 0, 0, 113, 113, 0, 0, 84, 84,
4379 84, 0, 0, 112, 0, 0, 0, 0, 0, 113,
4380 0, 0, 0, 0, 0, 84, 0, 0, 0, 0,
4381 0, 0, 0, 247, 0, 0, 0, 0, 1117, 0,
4382 247, 247, 84, 0, 0, 101, 0, 0, 0, 0,
4383 0, 0, 0, 84, 1334, 113, 113, 0, 0, 113,
4384 0, 0, 0, 112, 113, 112, 112, 112, 112, 0,
4385 112, 112, 0, 695, 696, 0, 0, 0, 0, 0,
4386 0, 0, 298, 0, 101, 0, 0, 0, 0, 1117,
4387 0, 112, 0, 1117, 0, 1117, 0, 0, 0, 0,
4388 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4389 0, 0, 0, 0, 0, 0, 0, 696, 1118, 1118,
4390 298, 84, 0, 0, 84, 84, 0, 0, 112, 0,
4391 84, 112, 0, 0, 0, 0, 0, 112, 112, 112,
4392 0, 0, 84, 0, 0, 84, 0, 0, 0, 0,
4393 0, 0, 0, 112, 1117, 0, 0, 0, 0, 0,
4394 0, 0, 0, 0, 84, 0, 0, 0, 0, 0,
4395 0, 0, 0, 1118, 1118, 0, 0, 1118, 0, 112,
4396 0, 0, 113, 0, 0, 0, 84, 0, 0, 0,
4397 0, 770, 0, 0, 1118, 0, 0, 0, 0, 0,
4398 84, 112, 0, 0, 0, 0, 0, 113, 0, 113,
4399 0, 799, 113, 113, 0, 0, 812, 0, 113, 0,
4400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4401 1118, 0, 0, 0, 0, 0, 112, 113, 0, 0,
4402 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4403 0, 1118, 0, 0, 1118, 112, 0, 84, 0, 0,
4404 0, 0, 0, 0, 84, 84, 0, 0, 1118, 84,
4405 1118, 0, 0, 1118, 1118, 0, 112, 0, 1118, 1118,
4406 0, 0, 112, 0, 0, 0, 0, 113, 0, 113,
4407 113, 113, 113, 0, 113, 113, 0, 0, 876, 0,
4408 0, 0, 0, 0, 0, 0, 0, 0, 84, 0,
4409 0, 0, 0, 0, 696, 113, 298, 0, 0, 0,
4410 0, 0, 112, 112, 0, 112, 112, 0, 0, 0,
4411 0, 0, 0, 0, 112, 0, 0, 1118, 0, 112,
4412 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4413 0, 0, 113, 0, 0, 113, 0, 0, 0, 0,
4414 0, 113, 113, 113, 0, 0, 0, 0, 0, 0,
4415 0, 0, 917, 0, 0, 0, 0, 113, 1119, 1119,
4416 0, 0, 0, 112, 0, 112, 0, 0, 1118, 0,
4417 0, 0, 1118, 112, 1118, 0, 0, 0, 0, 0,
4418 931, 0, 0, 113, 112, 0, 112, 112, 0, 0,
4419 368, 369, 370, 371, 372, 373, 374, 112, 112, 377,
4420 378, 0, 0, 0, 0, 113, 0, 381, 382, 0,
4421 0, 0, 696, 1119, 1119, 0, 0, 1119, 0, 0,
4422 0, 0, 0, 112, 0, 0, 0, 0, 0, 0,
4423 968, 112, 0, 1118, 1119, 0, 0, 0, 0, 0,
4424 113, 0, 0, 0, 0, 0, 0, 80, 0, 385,
4425 386, 387, 388, 389, 390, 391, 392, 393, 394, 113,
4426 0, 80, 80, 0, 0, 0, 0, 0, 0, 0,
4427 1119, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4428 113, 0, 0, 0, 0, 0, 113, 0, 0, 0,
4429 0, 1119, 0, 0, 1119, 0, 0, 0, 80, 80,
4430 0, 0, 306, 0, 0, 0, 0, 0, 1119, 0,
4431 1119, 0, 0, 1119, 1119, 0, 0, 1017, 1119, 1119,
4432 0, 0, 0, 0, 0, 0, 113, 113, 0, 113,
4433 113, 0, 0, 0, 0, 306, 0, 0, 113, 0,
4434 1040, 0, 0, 113, 1120, 1120, 0, 0, 0, 0,
4435 0, 0, 1050, 0, 306, 306, 306, 0, 80, 1121,
4436 1121, 0, 0, 112, 0, 112, 112, 0, 0, 0,
4437 0, 0, 0, 0, 0, 0, 298, 1119, 0, 0,
4438 0, 0, 0, 0, 0, 0, 0, 113, 0, 113,
4439 0, 0, 0, 0, 0, 0, 0, 113, 0, 1120,
4440 1120, 1074, 0, 1120, 0, 0, 0, 0, 113, 0,
4441 113, 113, 0, 0, 1121, 1121, 0, 0, 1121, 0,
4442 1120, 113, 113, 0, 0, 0, 0, 0, 1119, 0,
4443 0, 112, 1119, 0, 1119, 1121, 1137, 0, 0, 0,
4444 0, 0, 0, 0, 0, 0, 0, 113, 112, 0,
4445 0, 0, 0, 112, 112, 113, 1120, 0, 0, 112,
4446 112, 0, 0, 0, 0, 0, 0, 0, 112, 112,
4447 0, 1121, 0, 0, 0, 0, 80, 1120, 0, 0,
4448 1120, 0, 0, 0, 112, 0, 0, 0, 0, 0,
4449 0, 0, 1121, 1119, 1120, 1121, 1120, 0, 0, 1120,
4450 1120, 80, 0, 80, 1120, 1120, 0, 0, 0, 1121,
4451 0, 1121, 80, 0, 1121, 1121, 0, 0, 0, 1121,
4452 1121, 1200, 0, 0, 0, 0, 112, 112, 112, 0,
4453 0, 80, 368, 369, 370, 371, 372, 373, 374, 375,
4454 0, 377, 378, 112, 0, 0, 0, 0, 0, 381,
4455 382, 306, 0, 0, 0, 0, 0, 0, 0, 0,
4456 112, 0, 0, 1120, 0, 0, 0, 0, 0, 0,
4457 0, 112, 0, 0, 0, 0, 0, 0, 1121, 0,
4458 0, 80, 0, 0, 0, 0, 0, 113, 0, 113,
4459 113, 385, 386, 387, 388, 389, 390, 391, 392, 393,
4460 394, 0, 0, 0, 0, 0, 0, 0, 0, 80,
4461 306, 0, 0, 0, 1120, 0, 0, 0, 1120, 0,
4462 1120, 0, 0, 0, 0, 0, 0, 0, 0, 1121,
4463 0, 0, 0, 1121, 0, 1121, 0, 0, 0, 112,
4464 0, 0, 112, 112, 0, 0, 80, 0, 112, 80,
4465 0, 0, 0, 0, 0, 113, 80, 80, 0, 0,
4466 112, 81, 0, 112, 0, 0, 0, 0, 0, 0,
4467 0, 0, 113, 0, 0, 81, 81, 113, 113, 1120,
4468 0, 0, 112, 113, 113, 0, 0, 0, 0, 0,
4469 0, 0, 113, 113, 1121, 0, 0, 80, 0, 0,
4470 0, 0, 0, 0, 112, 0, 0, 0, 113, 0,
4471 0, 0, 81, 81, 0, 0, 307, 0, 112, 80,
4472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4473 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4474 0, 0, 0, 0, 0, 0, 0, 0, 0, 307,
4475 113, 113, 113, 0, 80, 0, 0, 0, 0, 0,
4476 0, 0, 0, 0, 0, 0, 0, 113, 307, 307,
4477 307, 306, 81, 80, 0, 112, 0, 0, 0, 0,
4478 0, 0, 112, 112, 113, 0, 0, 112, 0, 0,
4479 0, 0, 0, 0, 80, 113, -816, 0, 0, 0,
4480 80, 0, 0, 0, -816, -816, -816, 0, 0, -816,
4481 -816, -816, 0, -816, 0, 0, 0, 0, 0, 0,
4482 0, -816, -816, -816, 0, 0, 112, 0, 0, 0,
4483 0, 0, 0, -816, -816, 0, -816, -816, -816, -816,
4484 -816, 80, 0, 0, 80, 0, 0, 0, 0, 0,
4485 0, 0, 0, 0, 306, 0, 0, 80, 0, 0,
4486 0, 0, 0, 113, -816, -816, 113, 113, 0, 0,
4487 0, 0, 113, 0, 0, 0, 0, 0, 0, 0,
4488 0, 0, 0, 0, 113, 0, 0, 113, 0, 0,
4489 81, 0, 0, -816, -816, 0, 0, 0, 0, 0,
4490 0, 80, 0, 80, 0, 0, 113, 0, 0, 0,
4491 0, 80, 0, 0, 0, 81, -816, 81, 0, 0,
4492 0, 0, 80, 0, 80, 137, 81, 0, 113, 0,
4493 0, 0, 0, 0, 0, 80, 80, 0, 0, 0,
4494 0, 0, 113, 0, 0, 81, 0, -816, -816, 0,
4495 -816, 0, 0, 255, -816, 0, -816, 0, 0, 0,
4496 0, 0, 0, 0, 0, 307, 0, 0, 0, 80,
4497 0, 0, 0, 0, 0, 306, 137, 137, 0, 0,
4498 311, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4499 0, 0, 0, 0, 0, 81, 0, 0, 0, 113,
4500 0, 0, 0, 0, 0, 0, 113, 113, 0, 0,
4501 0, 113, 0, 311, 0, 0, 0, 0, 0, 0,
4502 0, 0, 0, 81, 307, 367, 0, 0, 0, 0,
4503 0, 0, 420, 430, 430, 430, 0, 0, 0, 0,
4504 0, 0, 0, 0, 0, 0, 0, 0, 141, 0,
4505 113, 306, 0, 0, 0, 0, 0, 0, 0, 0,
4506 81, 0, 0, 81, 0, 0, 0, 0, 0, 0,
4507 81, 81, 0, 0, 0, 0, 0, 0, 368, 369,
4508 370, 371, 372, 373, 374, 375, 376, 377, 378, 379,
4509 380, 0, 0, 0, 0, 381, 382, 0, 0, 141,
4510 141, 383, 0, 313, 80, 0, 0, 0, 0, 0,
4511 0, 81, 368, 369, 370, 371, 372, 373, 374, 375,
4512 376, 377, 378, 379, 380, 0, 0, 0, 0, 381,
4513 382, 0, 0, 81, 0, 384, 313, 385, 386, 387,
4514 388, 389, 390, 391, 392, 393, 394, 0, 0, 0,
4515 0, 0, 0, 0, 137, 422, 432, 432, 0, 0,
4516 0, 0, 0, 0, 0, 0, 0, 0, 81, 384,
4517 0, 385, 386, 387, 388, 389, 390, 391, 392, 393,
4518 394, 0, 0, 0, 0, 307, 80, 81, 259, 0,
4519 137, 80, 80, 0, 0, 0, 0, 80, 80, 0,
4520 0, 0, 0, 0, 0, 0, 80, 0, 81, 137,
4521 0, 0, 0, 0, 81, 0, 0, 0, 0, 0,
4522 0, 0, 80, 0, 0, 0, 0, 0, 0, 311,
4523 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4524 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4525 0, 0, 0, 0, 0, 81, 0, 0, 81, 137,
4526 0, 0, 0, 0, 80, 80, 80, 0, 307, 0,
4527 0, 81, 0, 0, 0, 0, 0, 141, 0, 0,
4528 0, 80, 0, 0, 0, 0, 0, 137, 311, 0,
4529 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
4530 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,
4531 0, 0, 0, 141, 0, 81, 0, 81, 0, 0,
4532 0, 0, 0, 0, 0, 81, 0, 137, 0, 0,
4533 0, 0, 141, 0, 137, 137, 81, 0, 81, 0,
4534 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,
4535 81, 0, 313, 0, 0, 0, 91, 0, 0, 0,
4536 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4537 0, 0, 0, 306, 0, 0, 0, 80, 0, 0,
4538 80, 80, 141, 81, 0, 0, 80, 0, 0, 307,
4539 0, 0, 0, 0, 0, 0, 0, 0, 80, 0,
4540 0, 80, 0, 0, 0, 0, 0, 91, 91, 0,
4541 141, 313, 0, 0, 0, 0, 0, 22, 23, 24,
4542 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4543 0, 0, 137, 31, 32, 33, 1079, 0, 0, 0,
4544 1080, 0, 80, 40, 41, 42, 43, 44, 0, 311,
4545 141, 0, 0, 0, 0, 0, 80, 141, 141, 0,
4546 0, 0, 0, 417, 0, 307, 0, 0, 0, 0,
4547 0, 0, 137, 306, 0, 1082, 1083, 0, 137, 0,
4548 0, 0, 0, 1084, 0, 0, 1085, 140, 1086, 1087,
4549 0, 1088, 0, 0, 57, 58, 59, 60, 61, 62,
4550 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
4551 0, 0, 0, 80, 0, 0, 0, 0, 81, 137,
4552 0, 0, 137, 0, 1090, 80, 0, 0, 0, 0,
4553 0, 304, 311, 0, 306, 0, 0, 0, 140, 140,
4554 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4555 0, 0, 0, 0, 0, 141, 0, 0, 0, 0,
4556 0, 0, 0, 0, 80, 0, 0, 0, 0, 0,
4557 0, 0, 313, 0, 0, 0, 0, 0, 0, 137,
4558 0, 137, 0, 0, 0, 91, 0, 0, 0, 0,
4559 0, 0, 0, 0, 0, 141, 0, 0, 0, 0,
4560 81, 141, 137, 0, 0, 81, 81, 0, 0, 0,
4561 0, 81, 81, 0, 0, 0, 0, 0, 0, 0,
4562 81, 91, 0, 0, 0, 0, 0, 0, 0, 0,
4563 0, 0, 0, 0, 0, 0, 81, 0, 0, 0,
4564 91, 0, 141, 0, 0, 141, 0, 0, 0, 0,
4565 0, 0, 0, 311, 0, 313, 0, 0, 816, 0,
4566 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4567 0, 0, 0, 0, 0, 0, 0, 0, 81, 81,
4568 81, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4569 91, 0, 0, 0, 0, 81, 0, 0, 0, 0,
4570 0, 0, 141, 0, 141, 0, 0, 0, 0, 0,
4571 0, 0, 81, 0, 0, 0, 140, 0, 91, 0,
4572 0, 0, 0, 81, 0, 141, 0, 0, 0, 311,
4573 0, 0, 0, 0, 0, 0, 816, 816, 0, 0,
4574 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4575 0, 0, 140, 0, 0, 0, 0, 0, 91, 0,
4576 0, 0, 0, 0, 0, 91, 91, 0, 0, 0,
4577 816, 140, 0, 0, 0, 0, 313, 0, 0, 0,
4578 0, 0, 137, 0, 0, 896, 0, 307, 0, 0,
4579 0, 81, 0, 0, 81, 81, 0, 0, 0, 0,
4580 81, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4581 0, 0, 81, 0, 0, 81, 0, 0, 0, 0,
4582 0, 140, 0, 0, 0, 0, 0, 0, 0, 0,
4583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4584 0, 0, 0, 0, 0, 0, 0, 0, 0, 140,
4585 0, 0, 313, 0, 0, 0, 81, 0, 0, 0,
4586 0, 0, 0, 91, 0, 0, 0, 0, 0, 0,
4587 81, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4588 0, 0, 0, 0, 137, 0, 0, 307, 0, 140,
4589 0, 0, 0, 0, 0, 0, 140, 140, 0, 0,
4590 137, 0, 0, 91, 0, 141, 0, 0, 0, 91,
4591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4592 0, 0, 0, 0, 0, 0, 0, 81, 0, 0,
4593 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,
4594 0, 0, 137, 137, 0, 0, 0, 0, 307, 0,
4595 91, 0, 0, 91, 0, 0, 0, 0, 0, 0,
4596 0, 0, 0, 0, 0, 0, 810, 0, 0, 0,
4597 0, 0, 0, 0, 0, 0, 137, 0, 81, 0,
4598 0, 0, 0, 0, 0, 0, 0, 137, 0, 0,
4599 0, 0, 816, 816, 140, 0, 0, 0, 816, 816,
4600 0, 0, 0, 0, 0, 0, 0, 141, 0, 0,
4601 91, 0, 91, 0, 0, 0, 0, 0, 0, 0,
4602 0, 0, 0, 141, 0, 0, 0, 0, 0, 0,
4603 0, 0, 0, 91, 140, 0, 0, 0, 0, 0,
4604 140, 0, 0, 0, 810, 810, 0, 0, 0, 0,
4605 0, 1193, 0, 0, 0, 137, 0, 0, 137, 137,
4606 0, 0, 0, 0, 137, 141, 141, 816, 0, 0,
4607 0, 0, 0, 0, 0, 0, 137, 0, 810, 137,
4608 0, 140, 816, 0, 140, 0, 0, 0, 0, 0,
4609 0, 0, 0, 0, 0, 0, 0, 140, 0, 141,
4610 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4611 141, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4612 137, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4613 0, 0, 0, 0, 137, 0, 0, 0, 0, 0,
4614 0, 140, 0, 140, 0, 0, 0, 0, 0, 0,
4615 0, 430, 0, 0, 0, 0, 0, 0, 0, 0,
4616 0, 0, 0, 0, 140, 0, 0, 0, 0, 0,
4617 0, 0, 0, 0, 1195, 140, 140, 0, 141, 0,
4618 0, 141, 141, 0, 0, 0, 0, 141, 0, 0,
4619 0, 0, 0, 0, 0, 938, 0, 0, 0, 141,
4620 0, 0, 141, 137, 0, 0, 0, 0, 0, 140,
4621 0, 0, 430, 91, 0, 0, 0, 0, 0, 0,
4622 0, 0, 0, 0, 0, 0, 0, 239, 239, 368,
4623 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
4624 379, 380, 137, 141, 0, 0, 381, 382, 0, 0,
4625 0, 0, 0, 0, 0, 0, 0, 141, 0, 276,
4626 280, 281, 282, 0, 0, 0, 239, 239, 0, 0,
4627 0, 0, 0, 0, 432, 0, 0, 0, 0, 329,
4628 330, 0, 0, 0, 0, 0, 384, 0, 385, 386,
4629 387, 388, 389, 390, 391, 392, 393, 394, 0, 0,
4630 810, 810, 0, 0, 0, 0, 810, 810, 0, 0,
4631 0, 0, 0, 0, 0, 91, 0, 0, 0, 0,
4632 22, 23, 24, 25, 239, 0, 141, 0, 0, 0,
4633 0, 91, 0, 0, 0, 432, 31, 32, 33, 1079,
4634 0, 0, 0, 1080, 140, 0, 40, 41, 42, 43,
4635 44, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4636 0, 0, 0, 0, 0, 141, 0, 0, 0, 0,
4637 0, 0, 0, 91, 91, 810, 0, 0, 1082, 1083,
4638 0, 0, 0, 0, 0, 0, 1084, 0, 0, 1085,
4639 810, 1086, 1087, 0, 1088, 0, 0, 57, 58, 59,
4640 60, 61, 62, 63, 64, 65, 0, 91, 0, 0,
4641 0, 0, 0, 0, 0, 0, 0, 0, 91, 0,
4642 0, 0, 0, 0, 0, 0, 0, 1090, 0, 0,
4643 0, 140, 140, 0, 304, 0, 0, 140, 140, 0,
4644 239, 259, 0, 239, 239, 239, 140, 329, 0, 0,
4645 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4646 0, 0, 140, 0, 0, 0, 0, 239, 0, 239,
4647 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4648 0, 0, 1191, 0, 0, 0, 91, 0, 0, 91,
4649 91, 0, 0, 0, 0, 91, 0, 0, 0, 0,
4650 0, 0, 0, 0, 140, 140, 140, 91, 0, 0,
4651 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4652 0, 140, 0, 0, 0, 0, 0, 0, 0, 0,
4653 0, 0, 0, 0, 0, 0, 0, 0, 140, 0,
4654 0, 0, 0, 0, 0, 0, 0, 0, 0, 140,
4655 0, 91, 0, 0, 0, 0, 0, 0, 0, 0,
4656 0, 0, 0, 0, 0, 91, 0, 0, 0, 0,
4657 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4658 613, 614, 615, 616, 617, 0, 0, 618, 619, 620,
4659 621, 622, 623, 624, 625, 0, 627, 0, 0, 628,
4660 629, 630, 631, 632, 633, 634, 635, 636, 637, 0,
4661 0, 0, 239, 0, 0, 0, 0, 140, 0, 0,
4662 140, 140, 0, 0, 0, 0, 140, 0, 0, 0,
4663 0, 0, 0, 0, 91, 0, 0, 0, 140, 0,
4664 0, 140, 0, 0, 0, 0, 0, 0, 0, 0,
4665 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4666 0, 0, 0, 239, 0, 0, 0, 0, 0, 0,
4667 0, 0, 0, 91, 0, 0, 0, 0, 0, 0,
4668 239, 239, 140, 0, 0, 239, 0, 0, 0, 239,
4669 0, 282, 0, -798, 0, 0, 140, 0, 0, 0,
4670 0, -798, -798, -798, 0, 0, -798, -798, -798, 716,
4671 -798, 0, 0, 0, 0, 0, 0, 0, -798, -798,
4672 -798, -798, -798, 0, 239, 0, 0, 239, 0, 0,
4673 -798, -798, 0, -798, -798, -798, -798, -798, 0, 239,
4674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4675 0, 0, 0, 0, 0, 0, 0, 748, 0, 0,
4676 0, -798, -798, 0, 0, 140, 0, 0, 0, 0,
4677 0, -798, -798, -798, -798, -798, -798, -798, -798, -798,
4678 -798, -798, -798, -798, 0, 0, 0, 0, -798, -798,
4679 -798, -798, 0, 878, -798, 0, 0, 0, 239, -798,
4680 0, 0, 0, 0, 140, 0, 780, 0, 0, 780,
4681 0, 0, 0, -798, 0, 0, -798, 0, 239, 0,
4682 0, 0, 0, 811, 0, 0, 0, -146, -798, -798,
4683 -798, -798, -798, -798, -798, -798, -798, -798, -798, -798,
4684 0, 0, 0, 0, -798, -798, -798, -798, -798, 0,
4685 0, -798, -798, -798, 0, 0, 0, 0, 0, 0,
4686 0, 0, 0, 0, 0, 0, 0, 22, 23, 24,
4687 25, 0, 0, 0, 0, 0, 0, 239, 0, 0,
4688 0, 0, 0, 31, 32, 33, 1079, 0, 239, 0,
4689 1080, 0, 1081, 40, 41, 42, 43, 44, 0, 0,
4690 0, 870, 870, 0, 0, 239, 870, 0, 0, 0,
4691 0, 0, 563, 0, 0, 0, 0, 870, 870, 0,
4692 0, 239, 0, 239, 0, 1082, 1083, 0, 0, 0,
4693 780, 780, 0, 1084, 0, 870, 1085, 0, 1086, 1087,
4694 0, 1088, 567, 0, 57, 58, 1089, 60, 61, 62,
4695 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
4696 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4697 0, 0, 0, 0, 1090, 0, 0, 0, 0, 239,
4698 0, 304, 0, 0, 0, 0, 0, 0, 0, 0,
4699 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4700 0, 0, 0, 0, 0, 0, 0, 239, 0, 0,
4701 0, 0, 0, -4, 3, 0, 4, 5, 6, 7,
4702 8, -4, -4, -4, 9, 10, 0, -4, -4, 11,
4703 -4, 12, 13, 14, 15, 16, 17, 18, -4, 239,
4704 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
4705 0, 0, 26, 0, 0, 0, 0, 239, 27, 28,
4706 284, 30, 31, 32, 33, 34, 35, 36, 37, 38,
4707 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
4708 0, -4, 0, 0, 0, 0, 0, 870, 0, 47,
4709 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4710 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
4711 0, 0, 51, 0, 0, 52, 53, 54, 55, 0,
4712 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
4713 64, 65, 0, -4, 0, 780, 0, 0, 0, 0,
4714 0, 0, 0, 0, 239, 0, 0, 0, 0, 0,
4715 0, 0, 239, 0, 0, 0, 1029, 870, 870, 0,
4716 66, 67, 68, 870, 870, -4, 0, 239, 0, 0,
4717 0, -4, 0, 546, 0, 0, 0, 0, 0, 239,
4718 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4719 0, 0, 0, 0, 0, 0, 0, 870, 870, 0,
4720 870, 870, 0, 239, 0, 780, 0, 0, 0, 0,
4721 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4722 0, 0, 0, 0, 1070, 1071, 0, 0, 239, 0,
4723 0, 0, 870, 1077, 0, 0, 0, 0, 0, 0,
4724 0, 0, 0, 0, 0, 0, 0, 870, 0, 0,
4725 0, 0, 0, 0, -816, 3, 0, 4, 5, 6,
4726 7, 8, 0, 239, 0, 9, 10, 0, 0, 0,
4727 11, 870, 12, 13, 14, 15, 16, 17, 18, 0,
4728 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
4729 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
4730 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
4731 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
4732 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4733 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
4734 0, 0, 0, 0, 0, 49, 50, 0, 239, 0,
4735 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
4736 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
4737 63, 64, 65, 0, -816, 0, 0, 0, 0, 0,
4738 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4739 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4740 0, 66, 67, 68, 0, 0, -816, 3, -816, 4,
4741 5, 6, 7, 8, -816, 0, 0, 9, 10, 0,
4742 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
4743 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
4744 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
4745 0, 27, 28, 29, 30, 31, 32, 33, 34, 35,
4746 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
4747 45, 46, 0, 0, 0, 0, 0, 0, 0, 239,
4748 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
4749 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
4750 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
4751 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
4752 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
4753 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4754 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4755 0, 0, 0, 66, 67, 68, 0, 0, -4, 3,
4756 -816, 4, 5, 6, 7, 8, -816, 0, 0, 9,
4757 10, 0, 0, 0, 11, 0, 12, 13, 14, 15,
4758 16, 17, 18, 0, 0, 0, 0, 0, 19, 20,
4759 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
4760 0, 0, 0, 27, 28, 29, 30, 31, 32, 33,
4761 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
4762 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
4763 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
4764 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
4765 50, 0, 0, 0, 0, 0, 0, 51, 0, 0,
4766 52, 53, 54, 55, 0, 56, 0, 0, 57, 58,
4767 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
4768 0, 0, 0, 0, -696, 0, 0, 0, 0, 0,
4769 0, 0, -696, -696, -696, 0, 0, -696, -696, -696,
4770 0, -696, 0, 0, 0, 66, 67, 68, 0, -696,
4771 -4, -696, -696, -696, 0, 0, 0, 0, 546, 0,
4772 0, -696, -696, 0, -696, -696, -696, -696, -696, 0,
4773 0, 0, 368, 369, 370, 371, 372, 373, 374, 375,
4774 376, 377, 378, 379, 380, 0, 0, 0, 0, 381,
4775 382, 0, -696, -696, 0, 0, 0, 0, 0, 0,
4776 0, 0, -696, -696, -696, -696, -696, -696, -696, -696,
4777 -696, -696, -696, -696, -696, 0, 0, 0, 0, -696,
4778 -696, -696, -696, 0, -696, -696, 0, 0, 0, 384,
4779 -696, 385, 386, 387, 388, 389, 390, 391, 392, 393,
4780 394, 0, 0, 0, -696, 0, 0, -696, 0, 0,
4781 0, 0, 0, 0, 0, 0, 0, 0, -696, -696,
4782 -696, -696, -696, -696, -696, -696, -696, -696, -696, -696,
4783 -696, 0, 0, 0, 0, 0, -696, -696, -696, -696,
4784 -697, 0, -696, -696, -696, 0, 0, 0, -697, -697,
4785 -697, 0, 0, -697, -697, -697, 0, -697, 0, 0,
4786 0, 0, 0, 0, 0, -697, 0, -697, -697, -697,
4787 0, 0, 0, 0, 0, 0, 0, -697, -697, 0,
4788 -697, -697, -697, -697, -697, 0, 0, 0, 368, 369,
4789 370, 371, 372, 373, 374, 375, 376, 377, 378, -817,
4790 -817, 0, 0, 0, 0, 381, 382, 0, -697, -697,
4791 0, 0, 0, 0, 0, 0, 0, 0, -697, -697,
4792 -697, -697, -697, -697, -697, -697, -697, -697, -697, -697,
4793 -697, 0, 0, 0, 0, -697, -697, -697, -697, 0,
4794 -697, -697, 0, 0, 0, 0, -697, 385, 386, 387,
4795 388, 389, 390, 391, 392, 393, 394, 0, 0, 0,
4796 -697, 0, 0, -697, 0, 0, 0, 0, 0, 0,
4797 0, 0, 0, 0, -697, -697, -697, -697, -697, -697,
4798 -697, -697, -697, -697, -697, -697, -697, 0, 0, 0,
4799 0, 0, -697, -697, -697, -697, -799, 0, -697, -697,
4800 -697, 0, 0, 0, -799, -799, -799, 0, 0, -799,
4801 -799, -799, 0, -799, 0, 0, 0, 0, 0, 0,
4802 0, -799, -799, -799, -799, -799, 0, 0, 0, 0,
4803 0, 0, 0, -799, -799, 0, -799, -799, -799, -799,
4804 -799, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4805 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4806 0, 0, 0, 0, -799, -799, 0, 0, 0, 0,
4807 0, 0, 0, 0, -799, -799, -799, -799, -799, -799,
4808 -799, -799, -799, -799, -799, -799, -799, 0, 0, 0,
4809 0, -799, -799, -799, -799, 0, 0, -799, 0, 0,
4810 0, 0, -799, 0, 0, 0, 0, 0, 0, 0,
4811 0, 0, 0, 0, 0, 0, -799, 0, 0, -799,
4812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4813 0, -799, -799, -799, -799, -799, -799, -799, -799, -799,
4814 -799, -799, -799, 0, 0, 0, 0, -799, -799, -799,
4815 -799, -799, -800, 0, -799, -799, -799, 0, 0, 0,
4816 -800, -800, -800, 0, 0, -800, -800, -800, 0, -800,
4817 0, 0, 0, 0, 0, 0, 0, -800, -800, -800,
4818 -800, -800, 0, 0, 0, 0, 0, 0, 0, -800,
4819 -800, 0, -800, -800, -800, -800, -800, 0, 0, 0,
4820 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4821 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4822 -800, -800, 0, 0, 0, 0, 0, 0, 0, 0,
4823 -800, -800, -800, -800, -800, -800, -800, -800, -800, -800,
4824 -800, -800, -800, 0, 0, 0, 0, -800, -800, -800,
4825 -800, 0, 0, -800, 0, 0, 0, 0, -800, 0,
4826 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4827 0, 0, -800, 0, 0, -800, 0, 0, 0, 0,
4828 0, 0, 0, 0, 0, 0, 0, -800, -800, -800,
4829 -800, -800, -800, -800, -800, -800, -800, -800, -800, 0,
4830 0, 0, 0, -800, -800, -800, -800, -800, -510, 0,
4831 -800, -800, -800, 0, 0, 0, -510, -510, -510, 0,
4832 0, -510, -510, -510, 0, -510, 0, 0, 0, 0,
4833 0, 0, 0, -510, -510, -510, -510, 0, 0, 0,
4834 0, 0, 0, 0, 0, -510, -510, 0, -510, -510,
4835 -510, -510, -510, 0, 0, 0, 0, 0, 0, 0,
4836 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4837 0, 0, 0, 0, 0, 0, -510, -510, 0, 0,
4838 0, 0, 0, 0, 0, 0, -510, -510, -510, -510,
4839 -510, -510, -510, -510, -510, -510, -510, -510, -510, 0,
4840 0, 0, 0, -510, -510, -510, -510, 0, 0, -510,
4841 0, 0, 0, 0, -510, 0, 0, 0, 0, 0,
4842 0, 0, 0, 0, 0, 0, 0, 0, -510, 0,
4843 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4844 0, 0, 0, -510, 0, -510, -510, -510, -510, -510,
4845 -510, -510, -510, -510, -510, 0, 0, 0, 0, -510,
4846 -510, -510, -510, -510, -350, 255, -510, -510, -510, 0,
4847 0, 0, -350, -350, -350, 0, 0, -350, -350, -350,
4848 0, -350, 0, 0, 0, 0, 0, 0, 0, -350,
4849 0, -350, -350, -350, 0, 0, 0, 0, 0, 0,
4850 0, -350, -350, 0, -350, -350, -350, -350, -350, 0,
4851 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4853 0, 0, -350, -350, 0, 0, 0, 0, 0, 0,
4854 0, 0, -350, -350, -350, -350, -350, -350, -350, -350,
4855 -350, -350, -350, -350, -350, 0, 0, 0, 0, -350,
4856 -350, -350, -350, 0, 0, -350, 0, 0, 0, 0,
4857 -350, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4858 0, 0, 0, 0, -350, 0, 0, -350, 0, 0,
4859 0, 0, 0, 0, 0, 0, 0, 0, 0, -350,
4860 -350, -350, -350, -350, -350, -350, -350, -350, -350, -350,
4861 -350, 0, 0, 0, 0, 0, -350, -350, -350, -350,
4862 -816, 0, -350, -350, -350, 0, 0, 0, -816, -816,
4863 -816, 0, 0, -816, -816, -816, 0, -816, 0, 0,
4864 0, 0, 0, 0, 0, -816, -816, -816, -816, 0,
4865 0, 0, 0, 0, 0, 0, 0, -816, -816, 0,
4866 -816, -816, -816, -816, -816, 0, 0, 0, 0, 0,
4867 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4868 0, 0, 0, 0, 0, 0, 0, 0, -816, -816,
4869 0, 0, 0, 0, 0, 0, 0, 0, -816, -816,
4870 -816, -816, -816, -816, -816, -816, -816, -816, -816, -816,
4871 -816, 0, 0, 0, 0, -816, -816, -816, -816, 0,
4872 0, -816, 0, 0, 0, 0, -816, 0, 0, 0,
4873 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4874 -816, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4875 0, 0, 0, 0, 0, -816, 0, -816, -816, -816,
4876 -816, -816, -816, -816, -816, -816, -816, 0, 0, 0,
4877 0, -816, -816, -816, -816, -816, -356, 255, -816, -816,
4878 -816, 0, 0, 0, -356, -356, -356, 0, 0, -356,
4879 -356, -356, 0, -356, 0, 0, 0, 0, 0, 0,
4880 0, -356, 0, -356, -356, 0, 0, 0, 0, 0,
4881 0, 0, 0, -356, -356, 0, -356, -356, -356, -356,
4882 -356, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4883 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4884 0, 0, 0, 0, -356, -356, 0, 0, 0, 0,
4885 0, 0, 0, 0, -356, -356, -356, -356, -356, -356,
4886 -356, -356, -356, -356, -356, -356, -356, 0, 0, 0,
4887 0, -356, -356, -356, -356, 0, 879, -356, 0, 0,
4888 0, 0, -356, 0, 0, 0, 0, 0, 0, 0,
4889 0, 0, 0, 0, 0, 0, -356, 0, 0, 0,
4890 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4891 -147, -356, 0, -356, -356, -356, -356, -356, -356, -356,
4892 -356, -356, -356, 0, 0, 0, 0, 822, -356, -356,
4893 -356, -356, -363, 0, -356, -356, -356, 0, 0, 0,
4894 -363, -363, -363, 0, 0, -363, -363, -363, 0, -363,
4895 0, 0, 0, 0, 0, 0, 0, -363, 0, -363,
4896 -363, 0, 0, 0, 0, 0, 0, 0, 0, -363,
4897 -363, 0, -363, -363, -363, -363, -363, 0, 0, 0,
4898 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4900 -363, -363, 0, 0, 0, 0, 0, 0, 0, 0,
4901 -363, -363, -363, -363, -363, -363, -363, -363, -363, -363,
4902 -363, -363, -363, 0, 0, 0, 0, -363, -363, -363,
4903 -363, 0, 0, -363, 0, 0, 0, 0, -363, 0,
4904 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4905 0, 0, -363, 0, 0, 0, 0, 0, 0, 0,
4906 0, 0, 0, 0, 0, 0, 0, -363, 0, -363,
4907 -363, -363, -363, -363, -363, -363, -363, -363, -363, 0,
4908 0, 0, 0, 0, -363, -363, -363, -363, -798, 451,
4909 -363, -363, -363, 0, 0, 0, -798, -798, -798, 938,
4910 0, 0, -798, -798, 0, -798, 0, 0, 0, 0,
4911 0, 0, 0, -798, -798, 0, 0, 0, 0, 0,
4912 0, 0, 0, 0, 0, -798, -798, 0, -798, -798,
4913 -798, -798, -798, 368, 369, 370, 371, 372, 373, 374,
4914 375, 376, 377, 378, 379, 380, 0, 0, 0, 0,
4915 381, 382, 0, 0, 0, 0, -798, -798, 0, 0,
4916 0, 0, 0, 0, 0, 0, -798, -798, -798, -798,
4917 -798, -798, -798, -798, -798, -798, -798, -798, -798, 0,
4918 0, 0, 0, -798, -798, -798, -798, 0, 820, -798,
4919 384, 0, 385, 386, 387, 388, 389, 390, 391, 392,
4920 393, 394, 0, 0, 0, 0, 0, 0, -798, 0,
4921 -298, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4922 0, 0, -146, -798, 0, -798, -798, -798, -798, -798,
4923 -798, -798, -798, -798, -798, 0, 0, 0, 0, -798,
4924 -798, -798, -798, -137, -798, 0, -798, 0, -798, 0,
4925 0, 0, -798, -798, -798, 0, 0, 0, -798, -798,
4926 0, -798, 0, 0, 0, 0, 0, 0, 0, -798,
4927 -798, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4928 0, -798, -798, 0, -798, -798, -798, -798, -798, 0,
4929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4930 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4931 0, 0, -798, -798, 0, 0, 0, 0, 0, 0,
4932 0, 0, -798, -798, -798, -798, -798, -798, -798, -798,
4933 -798, -798, -798, -798, -798, 0, 0, 0, 0, -798,
4934 -798, -798, -798, 0, 820, -798, 0, 0, 0, 0,
4935 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4936 0, 0, 0, 0, -798, 0, 0, 0, 0, 0,
4937 0, 0, 0, 0, 0, 0, 0, 0, -146, -798,
4938 0, -798, -798, -798, -798, -798, -798, -798, -798, -798,
4939 -798, 0, 0, 0, 0, -798, -798, -798, -798, -798,
4940 -356, 0, -798, 0, -798, 0, 0, 0, -356, -356,
4941 -356, 0, 0, 0, -356, -356, 0, -356, 0, 0,
4942 0, 0, 0, 0, 0, -356, 0, 0, 0, 0,
4943 0, 0, 0, 0, 0, 0, 0, -356, -356, 0,
4944 -356, -356, -356, -356, -356, 0, 0, 0, 0, 0,
4945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4946 0, 0, 0, 0, 0, 0, 0, 0, -356, -356,
4947 0, 0, 0, 0, 0, 0, 0, 0, -356, -356,
4948 -356, -356, -356, -356, -356, -356, -356, -356, -356, -356,
4949 -356, 0, 0, 0, 0, -356, -356, -356, -356, 0,
4950 821, -356, 0, 0, 0, 0, 0, 0, 0, 0,
4951 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4952 -356, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4953 0, 0, 0, 0, -147, -356, 0, -356, -356, -356,
4954 -356, -356, -356, -356, -356, -356, -356, 0, 0, 0,
4955 0, 822, -356, -356, -356, -138, -356, 0, -356, 0,
4956 -356, 0, 0, 0, -356, -356, -356, 0, 0, 0,
4957 -356, -356, 0, -356, 0, 0, 0, 0, 0, 0,
4958 0, -356, 0, 0, 0, 0, 0, 0, 0, 0,
4959 0, 0, 0, -356, -356, 0, -356, -356, -356, -356,
4960 -356, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4961 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4962 0, 0, 0, 0, -356, -356, 0, 0, 0, 0,
4963 0, 0, 0, 0, -356, -356, -356, -356, -356, -356,
4964 -356, -356, -356, -356, -356, -356, -356, 0, 0, 0,
4965 0, -356, -356, -356, -356, 0, 821, -356, 0, 0,
4966 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4967 0, 0, 0, 0, 0, 0, -356, 0, 0, 0,
4968 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4969 -147, -356, 0, -356, -356, -356, -356, -356, -356, -356,
4970 -356, -356, -356, 0, 0, 0, 0, 822, -356, -356,
4971 -356, -356, 0, 0, -356, 3, -356, 4, 5, 6,
4972 7, 8, -816, -816, -816, 9, 10, 0, 0, -816,
4973 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
4974 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
4975 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
4976 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
4977 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
4978 0, 0, -816, 0, 0, 0, 0, 0, 0, 0,
4979 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
4980 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
4981 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
4982 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
4983 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
4984 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4985 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4986 0, 66, 67, 68, 0, 0, 0, 3, -816, 4,
4987 5, 6, 7, 8, -816, 0, -816, 9, 10, 0,
4988 -816, -816, 11, 0, 12, 13, 14, 15, 16, 17,
4989 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
4990 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
4991 0, 27, 28, 284, 30, 31, 32, 33, 34, 35,
4992 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
4993 45, 46, 0, 0, -816, 0, 0, 0, 0, 0,
4994 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
4995 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
4996 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
4997 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
4998 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
4999 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5000 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5001 0, 0, 0, 66, 67, 68, 0, 0, 0, 3,
5002 -816, 4, 5, 6, 7, 8, -816, 0, -816, 9,
5003 10, 0, 0, -816, 11, -816, 12, 13, 14, 15,
5004 16, 17, 18, 0, 0, 0, 0, 0, 19, 20,
5005 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
5006 0, 0, 0, 27, 28, 284, 30, 31, 32, 33,
5007 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
5008 43, 44, 45, 46, 0, 0, -816, 0, 0, 0,
5009 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
5010 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
5011 50, 0, 0, 0, 0, 0, 0, 51, 0, 0,
5012 52, 53, 54, 55, 0, 56, 0, 0, 57, 58,
5013 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
5014 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5015 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5016 0, 0, 0, 0, 0, 66, 67, 68, 0, 0,
5017 0, 3, -816, 4, 5, 6, 7, 8, -816, 0,
5018 -816, 9, 10, 0, 0, -816, 11, 0, 12, 13,
5019 14, 15, 16, 17, 18, -816, 0, 0, 0, 0,
5020 19, 20, 21, 22, 23, 24, 25, 0, 0, 26,
5021 0, 0, 0, 0, 0, 27, 28, 284, 30, 31,
5022 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
5023 41, 42, 43, 44, 45, 46, 0, 0, -816, 0,
5024 0, 0, 0, 0, 0, 0, 47, 48, 0, 0,
5025 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5026 0, 49, 50, 0, 0, 0, 0, 0, 0, 51,
5027 0, 0, 52, 53, 54, 55, 0, 56, 0, 0,
5028 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5029 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5030 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5031 0, 0, 0, 0, 0, 0, 0, 66, 67, 68,
5032 0, 0, 0, 3, -816, 4, 5, 6, 7, 8,
5033 -816, 0, -816, 9, 10, 0, 0, -816, 11, 0,
5034 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
5035 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
5036 0, 26, 0, 0, 0, 0, 0, 27, 28, 284,
5037 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5038 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5039 -816, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5040 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5041 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5042 0, 51, 0, 0, 52, 53, 54, 55, 0, 56,
5043 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5044 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5045 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5046 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
5047 67, 68, 0, 0, 0, 3, -816, 4, 5, 6,
5048 7, 8, -816, -816, -816, 9, 10, 0, 0, 0,
5049 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5050 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5051 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5052 28, 284, 30, 31, 32, 33, 34, 35, 36, 37,
5053 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5054 0, 0, -816, 0, 0, 0, 0, 0, 0, 0,
5055 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5056 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5057 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5058 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5059 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5060 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5061 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5062 0, 66, 67, 68, 0, 0, 0, 3, -816, 4,
5063 5, 6, 7, 8, -816, 0, -816, 9, 10, 0,
5064 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
5065 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
5066 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
5067 0, 27, 28, 284, 30, 31, 32, 33, 34, 35,
5068 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5069 45, 46, 0, 0, -816, 0, 0, 0, 0, 0,
5070 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5071 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5072 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
5073 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
5074 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
5075 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5076 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5077 0, 0, 0, 66, 67, 68, 0, 0, 0, 3,
5078 -816, 4, 5, 6, 7, 8, -816, 0, 0, 9,
5079 10, 0, 0, 0, 11, 0, 12, 13, 14, 15,
5080 16, 17, 18, 0, 0, 0, 0, 0, 19, 20,
5081 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
5082 0, 0, 0, 27, 28, 284, 30, 31, 32, 33,
5083 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
5084 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
5085 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
5086 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
5087 50, 0, 0, 0, 0, 0, 0, 51, 0, 0,
5088 285, 53, 54, 55, 0, 56, 0, 0, 57, 58,
5089 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
5090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5092 0, 0, 0, 0, 0, 66, 67, 68, 0, 0,
5093 0, 0, -816, 0, 0, 0, -816, 3, -816, 4,
5094 5, 6, 7, 8, 0, 0, 0, 9, 10, 0,
5095 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
5096 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
5097 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
5098 0, 27, 28, 284, 30, 31, 32, 33, 34, 35,
5099 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5100 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5101 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5102 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5103 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
5104 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
5105 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
5106 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5107 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5108 0, 0, 0, 66, 67, 68, 0, 0, 0, 0,
5109 -816, 0, 0, 0, -816, 3, -816, 4, 5, 6,
5110 7, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5111 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5112 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5113 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5114 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
5115 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5116 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5117 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5118 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5119 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5120 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5121 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5124 0, 66, 67, 68, 0, 0, -816, 3, -816, 4,
5125 5, 6, 7, 8, -816, 0, 0, 9, 10, 0,
5126 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
5127 18, 0, 0, 0, 0, 0, 19, 20, 21, 22,
5128 23, 24, 25, 0, 0, 26, 0, 0, 0, 0,
5129 0, 27, 28, 284, 30, 31, 32, 33, 34, 35,
5130 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5131 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5132 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5133 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5134 0, 0, 0, 0, 0, 51, 0, 0, 52, 53,
5135 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
5136 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
5137 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5138 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5139 0, 0, 0, 66, 67, 68, 0, 0, -816, 404,
5140 -816, 4, 5, 6, 0, 8, -816, 0, 0, 9,
5141 10, 0, 0, 0, 11, -3, 12, 13, 14, 15,
5142 16, 17, 18, 0, 0, 0, 0, 0, 19, 20,
5143 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
5144 0, 0, 0, 0, 28, 0, 0, 31, 32, 33,
5145 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
5146 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
5147 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
5148 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
5149 50, 0, 0, 0, 0, 0, 0, 229, 0, 0,
5150 230, 53, 54, 55, 0, 0, 0, 0, 57, 58,
5151 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
5152 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5153 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5154 0, 0, 0, 0, 0, 66, 67, 68, 0, 0,
5155 0, 0, 331, 0, 0, 0, 0, 0, 332, 144,
5156 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
5157 155, 156, 157, 158, 159, 160, 161, 162, 163, 164,
5158 165, 166, 167, 0, 0, 0, 168, 169, 170, 434,
5159 435, 436, 437, 175, 176, 177, 0, 0, 0, 0,
5160 0, 178, 179, 180, 181, 438, 439, 440, 441, 186,
5161 36, 37, 442, 39, 0, 0, 0, 0, 0, 0,
5162 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5163 0, 0, 188, 189, 190, 191, 192, 193, 194, 195,
5164 196, 0, 0, 197, 198, 0, 0, 0, 0, 199,
5165 200, 201, 202, 0, 0, 0, 0, 0, 0, 0,
5166 0, 0, 0, 203, 204, 0, 0, 0, 0, 0,
5167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5168 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5169 0, 0, 0, 205, 206, 207, 208, 209, 210, 211,
5170 212, 213, 214, 0, 215, 216, 0, 0, 0, 0,
5171 0, 0, 217, 443, 144, 145, 146, 147, 148, 149,
5172 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
5173 160, 161, 162, 163, 164, 165, 166, 167, 0, 0,
5174 0, 168, 169, 170, 171, 172, 173, 174, 175, 176,
5175 177, 0, 0, 0, 0, 0, 178, 179, 180, 181,
5176 182, 183, 184, 185, 186, 36, 37, 187, 39, 0,
5177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5178 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5179 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5180 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5181 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5182 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5183 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5184 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5185 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5186 216, 0, 0, 0, 0, 0, 0, 217, 144, 145,
5187 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
5188 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
5189 166, 167, 0, 0, 0, 168, 169, 170, 171, 172,
5190 173, 174, 175, 176, 177, 0, 0, 0, 0, 0,
5191 178, 179, 180, 181, 182, 183, 184, 185, 186, 262,
5192 0, 187, 0, 0, 0, 0, 0, 0, 0, 0,
5193 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5194 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5195 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5196 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5197 0, 0, 203, 204, 0, 0, 58, 0, 0, 0,
5198 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5200 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5201 213, 214, 0, 215, 216, 0, 0, 0, 0, 0,
5202 0, 217, 144, 145, 146, 147, 148, 149, 150, 151,
5203 152, 153, 154, 155, 156, 157, 158, 159, 160, 161,
5204 162, 163, 164, 165, 166, 167, 0, 0, 0, 168,
5205 169, 170, 171, 172, 173, 174, 175, 176, 177, 0,
5206 0, 0, 0, 0, 178, 179, 180, 181, 182, 183,
5207 184, 185, 186, 0, 0, 187, 0, 0, 0, 0,
5208 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5209 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5210 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5211 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5212 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5213 58, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5214 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5215 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5216 209, 210, 211, 212, 213, 214, 0, 215, 216, 0,
5217 0, 0, 0, 0, 0, 217, 144, 145, 146, 147,
5218 148, 149, 150, 151, 152, 153, 154, 155, 156, 157,
5219 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
5220 0, 0, 0, 168, 169, 170, 171, 172, 173, 174,
5221 175, 176, 177, 0, 0, 0, 0, 0, 178, 179,
5222 180, 181, 182, 183, 184, 185, 186, 0, 0, 187,
5223 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5224 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5225 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5226 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5227 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5228 203, 204, 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, 0,
5231 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5232 0, 215, 216, 4, 5, 6, 0, 8, 0, 217,
5233 0, 9, 10, 0, 0, 0, 11, 0, 12, 13,
5234 14, 270, 271, 17, 18, 0, 0, 0, 0, 0,
5235 19, 20, 272, 22, 23, 24, 25, 0, 0, 227,
5236 0, 0, 0, 0, 0, 0, 302, 0, 0, 31,
5237 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
5238 41, 42, 43, 44, 45, 46, 0, 0, 0, 0,
5239 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5241 0, 0, 0, 0, 0, 0, 0, 0, 0, 303,
5242 0, 0, 230, 53, 54, 55, 0, 0, 0, 0,
5243 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5244 0, 4, 5, 6, 0, 8, 0, 0, 0, 9,
5245 10, 0, 0, 0, 11, 0, 12, 13, 14, 270,
5246 271, 17, 18, 0, 0, 0, 0, 304, 19, 20,
5247 272, 22, 23, 24, 25, 305, 0, 227, 0, 0,
5248 0, 0, 0, 0, 302, 0, 0, 31, 32, 33,
5249 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
5250 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
5251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5252 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5253 0, 0, 0, 0, 0, 0, 0, 303, 0, 0,
5254 230, 53, 54, 55, 0, 0, 0, 0, 57, 58,
5255 59, 60, 61, 62, 63, 64, 65, 0, 0, 4,
5256 5, 6, 0, 8, 0, 0, 0, 9, 10, 0,
5257 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
5258 18, 0, 0, 0, 0, 304, 19, 20, 21, 22,
5259 23, 24, 25, 608, 0, 227, 0, 0, 0, 0,
5260 0, 0, 28, 0, 0, 31, 32, 33, 34, 35,
5261 36, 37, 38, 39, 228, 40, 41, 42, 43, 44,
5262 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5263 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5264 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5265 0, 0, 0, 0, 0, 229, 0, 0, 230, 53,
5266 54, 55, 0, 231, 232, 233, 57, 58, 234, 60,
5267 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
5268 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5269 0, 0, 0, 0, 0, 0, 0, 0, 4, 5,
5270 6, 0, 8, 66, 235, 68, 9, 10, 0, 0,
5271 259, 11, 0, 12, 13, 14, 15, 16, 17, 18,
5272 0, 0, 0, 0, 0, 19, 20, 21, 22, 23,
5273 24, 25, 0, 0, 26, 0, 0, 0, 0, 0,
5274 0, 28, 0, 0, 31, 32, 33, 34, 35, 36,
5275 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
5276 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5277 0, 47, 48, 0, 0, 0, 0, 0, 0, 0,
5278 0, 0, 0, 0, 0, 0, 49, 50, 0, 0,
5279 0, 0, 0, 0, 229, 0, 0, 230, 53, 54,
5280 55, 0, 0, 0, 0, 57, 58, 59, 60, 61,
5281 62, 63, 64, 65, 0, 0, 0, 0, 0, 0,
5282 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5283 0, 0, 0, 0, 0, 3, 0, 4, 5, 6,
5284 7, 8, 66, 67, 68, 9, 10, 0, 0, 259,
5285 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5286 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
5287 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5288 28, 0, 30, 31, 32, 33, 34, 35, 36, 37,
5289 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5290 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5291 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5292 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5293 0, 0, 0, 51, 0, 0, 52, 53, 54, 55,
5294 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5295 63, 64, 65, 0, 0, 404, 0, 4, 5, 6,
5296 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5297 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5298 0, 66, 67, 68, 19, 20, 21, 22, 23, 24,
5299 25, 0, 0, 26, 0, 0, 0, 0, 0, 0,
5300 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5301 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5302 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5303 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5304 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5305 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5306 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5307 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5308 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5309 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5310 0, 66, 67, 68, 19, 20, 21, 22, 23, 24,
5311 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5312 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5313 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5314 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5315 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5316 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5317 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5318 0, 231, 232, 233, 57, 58, 234, 60, 61, 62,
5319 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5320 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5321 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5322 0, 66, 235, 68, 19, 20, 21, 22, 23, 24,
5323 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5324 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5325 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5327 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5328 0, 0, 0, 0, 0, 49, 479, 0, 0, 0,
5329 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5330 0, 231, 232, 233, 57, 58, 234, 60, 61, 62,
5331 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5332 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5333 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5334 0, 66, 235, 68, 19, 20, 272, 22, 23, 24,
5335 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5336 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5337 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5338 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5339 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5340 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5341 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5342 0, 231, 232, 233, 57, 58, 234, 60, 61, 62,
5343 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5344 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5345 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5346 0, 66, 235, 68, 19, 20, 272, 22, 23, 24,
5347 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5348 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5349 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5350 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5351 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5352 0, 0, 0, 0, 0, 49, 479, 0, 0, 0,
5353 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5354 0, 231, 232, 233, 57, 58, 234, 60, 61, 62,
5355 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5356 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5357 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5358 0, 66, 235, 68, 19, 20, 272, 22, 23, 24,
5359 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5360 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5361 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5362 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5363 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5364 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5365 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5366 0, 231, 232, 0, 57, 58, 234, 60, 61, 62,
5367 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5368 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5369 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5370 0, 66, 235, 68, 19, 20, 272, 22, 23, 24,
5371 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5372 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5373 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5374 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5375 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5376 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5377 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5378 0, 0, 232, 233, 57, 58, 234, 60, 61, 62,
5379 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5380 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5381 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5382 0, 66, 235, 68, 19, 20, 272, 22, 23, 24,
5383 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5384 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5385 38, 39, 228, 40, 41, 42, 43, 44, 45, 46,
5386 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5387 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5388 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5389 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5390 0, 0, 232, 0, 57, 58, 234, 60, 61, 62,
5391 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5392 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5393 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5394 0, 66, 235, 68, 19, 20, 21, 22, 23, 24,
5395 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5396 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5397 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5398 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5399 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5400 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5401 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5402 0, 795, 0, 0, 57, 58, 59, 60, 61, 62,
5403 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5404 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5405 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5406 0, 66, 235, 68, 19, 20, 21, 22, 23, 24,
5407 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5408 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5409 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5410 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5411 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5412 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5413 0, 0, 0, 806, 0, 0, 230, 53, 54, 55,
5414 0, 795, 0, 0, 57, 58, 59, 60, 61, 62,
5415 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5416 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5417 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5418 0, 66, 235, 68, 19, 20, 272, 22, 23, 24,
5419 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5420 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5421 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5422 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5423 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5424 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5425 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5426 0, 967, 0, 0, 57, 58, 59, 60, 61, 62,
5427 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5428 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5429 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5430 0, 66, 235, 68, 19, 20, 272, 22, 23, 24,
5431 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5432 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5433 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5434 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5435 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5436 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5437 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5438 0, 1016, 0, 0, 57, 58, 59, 60, 61, 62,
5439 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5440 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5441 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5442 0, 66, 235, 68, 19, 20, 272, 22, 23, 24,
5443 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5444 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5445 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5446 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5447 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5448 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5449 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5450 0, 795, 0, 0, 57, 58, 59, 60, 61, 62,
5451 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5452 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5453 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5454 0, 66, 235, 68, 19, 20, 272, 22, 23, 24,
5455 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5456 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5457 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5458 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5459 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5460 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5461 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5462 0, 1136, 0, 0, 57, 58, 59, 60, 61, 62,
5463 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5464 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5465 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5466 0, 66, 235, 68, 19, 20, 272, 22, 23, 24,
5467 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5468 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5469 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5470 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5471 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5472 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5473 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5474 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5475 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5476 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5477 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5478 0, 66, 235, 68, 19, 20, 21, 22, 23, 24,
5479 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5480 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5481 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5483 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5484 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5485 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5486 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5487 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5488 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5489 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5490 0, 66, 235, 68, 19, 20, 21, 22, 23, 24,
5491 25, 0, 0, 26, 0, 0, 0, 0, 0, 0,
5492 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5493 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5495 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5496 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5497 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5498 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5499 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5500 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5501 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5502 0, 66, 67, 68, 19, 20, 21, 22, 23, 24,
5503 25, 0, 0, 777, 0, 0, 0, 0, 0, 0,
5504 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5505 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5506 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5507 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5508 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5509 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5510 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5511 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5512 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5513 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5514 0, 66, 235, 68, 19, 20, 21, 22, 23, 24,
5515 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5516 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5517 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5518 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5519 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5520 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5521 0, 0, 0, 806, 0, 0, 230, 53, 54, 55,
5522 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5523 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5524 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5525 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5526 0, 66, 235, 68, 19, 20, 272, 22, 23, 24,
5527 25, 0, 0, 886, 0, 0, 0, 0, 0, 0,
5528 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5529 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5530 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5531 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5532 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5533 0, 0, 0, 229, 0, 0, 230, 53, 54, 55,
5534 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5535 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5536 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5537 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5538 0, 66, 235, 68, 19, 20, 272, 22, 23, 24,
5539 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5540 302, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5541 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5542 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5543 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5544 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5545 0, 0, 0, 303, 0, 0, 363, 53, 54, 55,
5546 0, 364, 0, 0, 57, 58, 59, 60, 61, 62,
5547 63, 64, 65, 0, 0, 4, 5, 6, 0, 8,
5548 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5549 12, 13, 14, 270, 271, 17, 18, 0, 0, 0,
5550 0, 304, 19, 20, 272, 22, 23, 24, 25, 0,
5551 0, 227, 0, 0, 0, 0, 0, 0, 302, 0,
5552 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5553 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5554 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5555 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5556 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5557 0, 415, 0, 0, 52, 53, 54, 55, 0, 56,
5558 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5559 65, 0, 0, 4, 5, 6, 0, 8, 0, 0,
5560 0, 9, 10, 0, 0, 0, 11, 0, 12, 13,
5561 14, 270, 271, 17, 18, 0, 0, 0, 0, 304,
5562 19, 20, 272, 22, 23, 24, 25, 0, 0, 227,
5563 0, 0, 0, 0, 0, 0, 302, 0, 0, 31,
5564 32, 33, 423, 35, 36, 37, 424, 39, 0, 40,
5565 41, 42, 43, 44, 45, 46, 0, 0, 0, 0,
5566 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5568 0, 0, 0, 0, 0, 425, 0, 0, 0, 426,
5569 0, 0, 230, 53, 54, 55, 0, 0, 0, 0,
5570 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5571 0, 4, 5, 6, 0, 8, 0, 0, 0, 9,
5572 10, 0, 0, 0, 11, 0, 12, 13, 14, 270,
5573 271, 17, 18, 0, 0, 0, 0, 304, 19, 20,
5574 272, 22, 23, 24, 25, 0, 0, 227, 0, 0,
5575 0, 0, 0, 0, 302, 0, 0, 31, 32, 33,
5576 423, 35, 36, 37, 424, 39, 0, 40, 41, 42,
5577 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
5578 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5579 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5580 0, 0, 0, 0, 0, 0, 0, 426, 0, 0,
5581 230, 53, 54, 55, 0, 0, 0, 0, 57, 58,
5582 59, 60, 61, 62, 63, 64, 65, 0, 0, 4,
5583 5, 6, 0, 8, 0, 0, 0, 9, 10, 0,
5584 0, 0, 11, 0, 12, 13, 14, 270, 271, 17,
5585 18, 0, 0, 0, 0, 304, 19, 20, 272, 22,
5586 23, 24, 25, 0, 0, 227, 0, 0, 0, 0,
5587 0, 0, 302, 0, 0, 31, 32, 33, 34, 35,
5588 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5589 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5591 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5592 0, 0, 0, 0, 0, 303, 0, 0, 363, 53,
5593 54, 55, 0, 0, 0, 0, 57, 58, 59, 60,
5594 61, 62, 63, 64, 65, 0, 0, 4, 5, 6,
5595 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5596 11, 0, 12, 13, 14, 270, 271, 17, 18, 0,
5597 0, 0, 0, 304, 19, 20, 272, 22, 23, 24,
5598 25, 0, 0, 227, 0, 0, 0, 0, 0, 0,
5599 302, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5600 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5601 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5602 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5603 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5604 0, 0, 0, 1190, 0, 0, 230, 53, 54, 55,
5605 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5606 63, 64, 65, 0, 0, 4, 5, 6, 0, 8,
5607 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5608 12, 13, 14, 270, 271, 17, 18, 0, 0, 0,
5609 0, 304, 19, 20, 272, 22, 23, 24, 25, 0,
5610 0, 227, 0, 0, 0, 0, 0, 0, 302, 0,
5611 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5612 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5613 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5614 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5615 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5616 0, 1292, 0, 0, 230, 53, 54, 55, 22, 23,
5617 24, 25, 57, 58, 59, 60, 61, 62, 63, 64,
5618 65, 0, 0, 0, 31, 32, 33, 1079, 0, 0,
5619 0, 1080, 0, 0, 40, 41, 42, 43, 44, 0,
5620 0, 0, 0, 0, 0, 0, 0, 0, 0, 304,
5621 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5622 0, 0, 0, 0, 0, 0, 1082, 1083, 0, 0,
5623 0, 0, 0, 0, 1084, 0, 0, 1085, 0, 1086,
5624 1087, 0, 0, 0, 0, 57, 58, 59, 60, 61,
5625 62, 63, 64, 65, 0, 0, 0, 0, 0, 685,
5626 647, 0, 0, 686, 0, 0, 0, 0, 0, 0,
5627 0, 0, 0, 0, 0, 1090, 0, 0, 0, 0,
5628 0, 0, 304, 188, 189, 190, 191, 192, 193, 194,
5629 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5630 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5631 0, 0, 0, 0, 203, 204, 0, 0, 0, 0,
5632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5633 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5634 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5635 211, 212, 213, 214, 0, 215, 216, 638, 639, 0,
5636 0, 640, 0, 217, 255, 0, 0, 0, 0, 0,
5637 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5638 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5639 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5640 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5641 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
5642 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5643 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5644 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5645 213, 214, 0, 215, 216, 646, 647, 0, 0, 648,
5646 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
5647 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5648 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5649 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5650 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5651 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5652 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5653 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5654 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5655 0, 215, 216, 700, 639, 0, 0, 701, 0, 217,
5656 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5657 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5658 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5659 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5660 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5661 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5662 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5663 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5664 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5665 216, 703, 647, 0, 0, 704, 0, 217, 0, 0,
5666 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5667 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5668 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5669 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5670 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5671 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5672 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5673 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5674 209, 210, 211, 212, 213, 214, 0, 215, 216, 700,
5675 639, 0, 0, 720, 0, 217, 0, 0, 0, 0,
5676 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5677 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5678 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5679 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5680 0, 0, 0, 0, 203, 204, 0, 0, 0, 0,
5681 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5682 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5683 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5684 211, 212, 213, 214, 0, 215, 216, 731, 639, 0,
5685 0, 732, 0, 217, 0, 0, 0, 0, 0, 0,
5686 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5687 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5688 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5689 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5690 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
5691 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5692 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5693 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5694 213, 214, 0, 215, 216, 734, 647, 0, 0, 735,
5695 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
5696 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5697 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5698 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5699 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5700 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5701 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5703 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5704 0, 215, 216, 850, 639, 0, 0, 851, 0, 217,
5705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5706 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5707 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5708 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5709 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5710 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5711 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5712 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5713 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5714 216, 853, 647, 0, 0, 854, 0, 217, 0, 0,
5715 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5716 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5717 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5718 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5719 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5720 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5721 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5722 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5723 209, 210, 211, 212, 213, 214, 0, 215, 216, 859,
5724 639, 0, 0, 860, 0, 217, 0, 0, 0, 0,
5725 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5726 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5727 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5728 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5729 0, 0, 0, 0, 203, 204, 0, 0, 0, 0,
5730 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5731 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5732 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5733 211, 212, 213, 214, 0, 215, 216, 685, 647, 0,
5734 0, 686, 0, 217, 0, 0, 0, 0, 0, 0,
5735 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5736 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5737 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5738 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5739 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
5740 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5741 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5742 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5743 213, 214, 0, 215, 216, 1022, 639, 0, 0, 1023,
5744 0, 217, 0, 0, 0, 0, 0, 0, 0, 0,
5745 0, 0, 0, 0, 0, 0, 0, 0, 0, 188,
5746 189, 190, 191, 192, 193, 194, 195, 196, 0, 0,
5747 197, 198, 0, 0, 0, 0, 199, 200, 201, 202,
5748 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5749 203, 204, 0, 0, 0, 0, 0, 0, 0, 0,
5750 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5752 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
5753 0, 215, 216, 1025, 647, 0, 0, 1026, 0, 217,
5754 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5755 0, 0, 0, 0, 0, 0, 0, 188, 189, 190,
5756 191, 192, 193, 194, 195, 196, 0, 0, 197, 198,
5757 0, 0, 0, 0, 199, 200, 201, 202, 0, 0,
5758 0, 0, 0, 0, 0, 0, 0, 0, 203, 204,
5759 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5760 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5761 0, 0, 0, 0, 0, 0, 0, 0, 205, 206,
5762 207, 208, 209, 210, 211, 212, 213, 214, 0, 215,
5763 216, 1311, 639, 0, 0, 1312, 0, 217, 0, 0,
5764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5765 0, 0, 0, 0, 0, 188, 189, 190, 191, 192,
5766 193, 194, 195, 196, 0, 0, 197, 198, 0, 0,
5767 0, 0, 199, 200, 201, 202, 0, 0, 0, 0,
5768 0, 0, 0, 0, 0, 0, 203, 204, 0, 0,
5769 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5770 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5771 0, 0, 0, 0, 0, 0, 205, 206, 207, 208,
5772 209, 210, 211, 212, 213, 214, 0, 215, 216, 1314,
5773 647, 0, 0, 1315, 0, 217, 0, 0, 0, 0,
5774 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5775 0, 0, 0, 188, 189, 190, 191, 192, 193, 194,
5776 195, 196, 0, 0, 197, 198, 0, 0, 0, 0,
5777 199, 200, 201, 202, 0, 0, 0, 0, 0, 0,
5778 0, 0, 0, 0, 203, 204, 0, 0, 0, 0,
5779 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5780 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5781 0, 0, 0, 0, 205, 206, 207, 208, 209, 210,
5782 211, 212, 213, 214, 0, 215, 216, 1359, 639, 0,
5783 0, 1360, 0, 217, 0, 0, 0, 0, 0, 0,
5784 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5785 0, 188, 189, 190, 191, 192, 193, 194, 195, 196,
5786 0, 0, 197, 198, 0, 0, 0, 0, 199, 200,
5787 201, 202, 0, 0, 0, 0, 0, 0, 0, 0,
5788 0, 0, 203, 204, 0, 0, 0, 0, 0, 0,
5789 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5790 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5791 0, 0, 205, 206, 207, 208, 209, 210, 211, 212,
5792 213, 214, 0, 215, 216, 0, 0, 0, 0, 0,
5796static const yytype_int16 yycheck[] =
5798 1, 59, 70, 107, 58, 15, 16, 1, 101, 56,
5799 344, 13, 14, 408, 348, 15, 16, 70, 400, 58,
5800 426, 116, 115, 27, 7, 67, 104, 84, 348, 107,
5801 399, 574, 401, 768, 255, 52, 53, 761, 252, 103,
5802 104, 21, 89, 107, 27, 15, 16, 7, 89, 565,
5803 848, 52, 53, 344, 107, 56, 113, 348, 15, 16,
5804 296, 108, 109, 110, 300, 838, 52, 27, 15, 16,
5805 72, 597, 111, 469, 56, 58, 611, 30, 477, 597,
5806 943, 477, 763, 907, 54, 626, 455, 27, 89, 81,
5807 525, 473, 905, 320, 321, 585, 818, 54, 55, 1,
5808 66, 591, 112, 472, 84, 474, 1163, 108, 109, 110,
5809 111, 25, 112, 63, 64, 65, 515, 26, 469, 0,
5810 1177, 601, 285, 10, 689, 690, 25, 98, 111, 595,
5811 13, 29, 598, 502, 37, 38, 78, 290, 26, 13,
5812 81, 1285, 112, 134, 787, 527, 100, 790, 58, 0,
5813 52, 53, 54, 55, 247, 112, 1028, 101, 723, 528,
5814 13, 512, 66, 25, 763, 112, 157, 1277, 78, 768,
5815 26, 100, 28, 608, 100, 25, 234, 66, 80, 81,
5816 134, 68, 153, 287, 277, 13, 157, 100, 151, 25,
5817 1053, 1027, 1028, 719, 69, 154, 260, 261, 108, 109,
5818 363, 155, 144, 145, 146, 134, 25, 13, 134, 25,
5819 154, 1355, 678, 230, 154, 119, 763, 310, 109, 287,
5820 160, 134, 1085, 98, 1087, 123, 13, 774, 157, 230,
5821 119, 141, 1187, 1188, 287, 751, 752, 1347, 13, 120,
5822 1064, 155, 151, 1027, 1028, 255, 1303, 257, 157, 971,
5823 141, 154, 1065, 56, 13, 255, 155, 257, 305, 337,
5824 338, 339, 340, 151, 305, 266, 1001, 1139, 285, 675,
5825 484, 154, 266, 337, 338, 339, 340, 160, 342, 343,
5826 154, 273, 274, 665, 285, 255, 160, 257, 154, 25,
5827 761, 157, 272, 155, 676, 275, 13, 666, 451, 285,
5828 257, 154, 155, 1139, 305, 155, 847, 160, 677, 413,
5829 257, 264, 711, 709, 541, 711, 543, 364, 13, 155,
5830 25, 13, 1185, 1186, 1005, 418, 154, 480, 230, 157,
5831 483, 409, 160, 274, 335, 488, 155, 161, 304, 155,
5832 1138, 335, 822, 245, 1299, 409, 363, 425, 154, 15,
5833 252, 157, 505, 255, 160, 1139, 34, 611, 709, 25,
5834 413, 425, 363, 364, 266, 1138, 307, 154, 911, 101,
5835 805, 273, 274, 160, 52, 758, 824, 363, 761, 154,
5836 945, 946, 364, 285, 832, 160, 951, 952, 101, 905,
5837 400, 907, 858, 410, 411, 154, 1180, 923, 1086, 1163,
5838 400, 160, 403, 1187, 1188, 923, 1005, 154, 361, 410,
5839 411, 25, 159, 366, 134, 1179, 69, 28, 401, 155,
5840 955, 157, 402, 155, 914, 915, 579, 155, 918, 763,
5841 920, 827, 922, 58, 768, 689, 690, 154, 134, 295,
5842 296, 451, 155, 160, 300, 98, 302, 66, 67, 112,
5843 155, 451, 157, 78, 607, 100, 1003, 69, 1005, 154,
5844 1007, 363, 154, 473, 152, 160, 154, 993, 160, 723,
5845 1035, 154, 455, 473, 100, 455, 827, 160, 525, 25,
5846 66, 451, 100, 108, 525, 699, 98, 112, 709, 134,
5847 494, 474, 728, 155, 451, 100, 69, 25, 400, 1187,
5848 1188, 403, 121, 122, 451, 458, 459, 508, 410, 411,
5849 976, 494, 469, 740, 467, 1299, 134, 527, 745, 502,
5850 134, 157, 475, 476, 525, 98, 428, 527, 25, 134,
5851 683, 548, 100, 1297, 494, 121, 122, 1301, 56, 1303,
5852 154, 155, 495, 596, 158, 528, 134, 548, 1064, 1065,
5853 503, 101, 1151, 554, 1289, 512, 1027, 1028, 940, 1283,
5854 554, 608, 66, 155, 606, 100, 134, 608, 100, 611,
5855 939, 473, 941, 1346, 969, 161, 1066, 1067, 1068, 1069,
5856 482, 932, 484, 155, 594, 642, 157, 597, 134, 66,
5857 100, 157, 991, 650, 595, 991, 157, 598, 1362, 134,
5858 100, 1148, 755, 69, 1151, 658, 134, 608, 154, 155,
5859 69, 157, 158, 1082, 1083, 679, 1351, 121, 122, 100,
5860 124, 69, 134, 134, 134, 527, 154, 155, 78, 100,
5861 158, 688, 98, 100, 134, 158, 606, 134, 655, 98,
5862 657, 611, 119, 155, 121, 122, 548, 689, 690, 97,
5863 98, 715, 1047, 134, 655, 665, 657, 154, 155, 152,
5864 994, 158, 642, 134, 159, 665, 676, 134, 1139, 571,
5865 884, 1005, 574, 1216, 994, 1218, 676, 678, 1084, 37,
5866 38, 723, 729, 666, 738, 56, 1285, 691, 729, 1155,
5867 1289, 945, 946, 595, 677, 69, 598, 951, 952, 652,
5868 69, 34, 155, 994, 66, 153, 69, 161, 691, 1180,
5869 100, 864, 157, 1182, 1183, 151, 1187, 1188, 78, 52,
5870 69, 134, 815, 97, 98, 1215, 1060, 26, 729, 98,
5871 883, 691, 885, 1128, 928, 98, 930, 134, 1285, 692,
5872 1060, 721, 134, 645, 134, 106, 1151, 1294, 650, 98,
5873 903, 69, 709, 655, 69, 657, 1355, 119, 805, 121,
5874 122, 155, 124, 665, 805, 155, 1020, 160, 1151, 1060,
5875 69, 627, 867, 15, 676, 17, 678, 855, 1184, 857,
5876 98, 1035, 97, 98, 56, 1328, 688, 69, 644, 100,
5877 740, 855, 742, 857, 138, 745, 746, 699, 97, 98,
5878 25, 52, 69, 856, 805, 56, 1353, 69, 1355, 1204,
5879 1357, 69, 1283, 1279, 100, 97, 98, 1151, 155, 100,
5880 722, 52, 26, 134, 155, 56, 865, 1374, 1299, 154,
5881 97, 98, 69, 158, 69, 97, 98, 599, 153, 97,
5882 98, 603, 157, 1151, 155, 1297, 702, 152, 134, 1301,
5883 702, 158, 151, 134, 153, 1027, 1028, 858, 157, 134,
5884 97, 98, 97, 98, 66, 69, 134, 820, 821, 155,
5885 827, 153, 728, 134, 155, 828, 829, 733, 1283, 69,
5886 1285, 733, 865, 961, 1289, 1267, 153, 605, 158, 1294,
5887 892, 153, 155, 97, 98, 153, 155, 961, 155, 1268,
5888 1283, 155, 1285, 945, 946, 100, 1289, 97, 98, 951,
5889 952, 1294, 155, 923, 1086, 155, 153, 119, 153, 121,
5890 122, 777, 975, 26, 977, 878, 879, 52, 881, 882,
5891 940, 1103, 834, 155, 836, 653, 838, 100, 52, 134,
5892 940, 659, 660, 960, 83, 84, 1351, 151, 1353, 153,
5893 1355, 1285, 1357, 157, 54, 1289, 858, 155, 941, 960,
5894 155, 154, 155, 153, 64, 65, 69, 1139, 1351, 1374,
5895 1353, 134, 1355, 69, 1357, 976, 152, 1285, 1020, 69,
5896 155, 1289, 884, 13, 937, 955, 1294, 25, 1160, 154,
5897 155, 1374, 155, 1035, 97, 98, 852, 950, 137, 138,
5898 852, 97, 98, 14, 15, 1177, 862, 97, 98, 911,
5899 862, 69, 1014, 1015, 17, 1187, 1188, 1018, 1019, 152,
5900 66, 1355, 89, 90, 1018, 1019, 1027, 1028, 40, 41,
5901 886, 1089, 69, 1186, 987, 1052, 1090, 155, 940, 97,
5902 98, 69, 155, 1351, 44, 1353, 1063, 1355, 151, 1357,
5903 153, 1052, 134, 955, 157, 154, 155, 153, 960, 69,
5904 97, 98, 1063, 153, 782, 44, 1374, 152, 786, 97,
5905 98, 155, 155, 119, 976, 121, 122, 44, 124, 1232,
5906 1127, 1082, 1083, 306, 307, 1086, 56, 97, 98, 1242,
5907 44, 924, 925, 1197, 134, 153, 1174, 1, 159, 1192,
5908 933, 136, 1103, 936, 1177, 938, 1259, 1260, 1261, 8,
5909 1174, 15, 16, 15, 1187, 1188, 153, 1134, 1135, 52,
5910 52, 54, 55, 1140, 57, 153, 1127, 152, 846, 1197,
5911 1131, 849, 155, 1134, 1135, 1152, 155, 155, 1139, 1140,
5912 1042, 155, 1044, 153, 1197, 863, 155, 155, 52, 53,
5913 1052, 1152, 56, 155, 1155, 101, 78, 155, 155, 1160,
5914 9, 1063, 1163, 67, 59, 60, 61, 62, 1024, 102,
5915 1072, 1073, 1024, 95, 96, 155, 1177, 139, 1179, 1196,
5916 1227, 1182, 1183, 52, 66, 89, 1187, 1188, 139, 155,
5917 155, 1249, 155, 1210, 152, 1196, 1274, 1275, 78, 103,
5918 104, 52, 56, 107, 108, 109, 110, 101, 112, 1210,
5919 1274, 1275, 160, 158, 155, 155, 1169, 139, 140, 141,
5920 142, 143, 144, 145, 146, 155, 1227, 66, 155, 1131,
5921 1086, 1087, 1134, 1135, 1086, 66, 1138, 119, 1140, 121,
5922 122, 1288, 155, 155, 962, 1246, 155, 965, 54, 55,
5923 1152, 57, 155, 1155, 972, 689, 690, 1267, 64, 65,
5924 978, 152, 142, 143, 144, 145, 146, 1267, 139, 56,
5925 155, 705, 706, 40, 41, 42, 43, 44, 1279, 155,
5926 119, 155, 121, 122, 157, 1268, 1142, 1288, 119, 723,
5927 121, 122, 155, 155, 1196, 155, 1297, 1199, 157, 335,
5928 1301, 1318, 1303, 504, 1131, 266, 1162, 865, 1210, 1165,
5929 1162, 508, 106, 1165, 1216, 606, 1218, 1318, 108, 110,
5930 52, 1, 54, 55, 56, 57, 230, 98, 495, 1185,
5931 1199, 688, 956, 1185, 975, 15, 16, 751, 1056, 1225,
5932 52, 905, 54, 55, 56, 57, 58, 1283, 1073, 1151,
5933 1289, 255, 1224, 257, 1347, 868, 260, 261, 1226, 1346,
5934 1228, 1362, 266, 359, 1246, 1267, 78, 1269, 1224, 1271,
5935 102, 1180, 52, 53, 1269, 107, 1180, 1279, 1176, 1271,
5936 92, 285, 78, 119, 543, 111, 761, 67, 768, 52,
5937 102, 54, 55, 56, 57, 115, 108, 109, 1341, 95,
5938 96, 305, -1, -1, -1, -1, 1262, 1263, 1264, -1,
5939 1262, 1263, 1264, -1, -1, 52, 1318, 54, 55, 56,
5940 57, -1, -1, 103, 104, -1, 1328, 107, -1, 141,
5941 -1, 335, 112, 337, 338, 339, 340, -1, 342, 343,
5942 -1, 875, -1, -1, 1346, 141, 142, 143, 144, 145,
5943 146, 52, -1, 54, 55, 56, 57, 1313, -1, 363,
5944 364, 1313, -1, 1331, 1332, 102, 1322, 1335, 1336, -1,
5945 -1, 1339, 52, -1, 54, 55, 56, 57, 58, -1,
5946 1027, 1028, -1, -1, -1, 1341, -1, 52, 1206, 54,
5947 55, 56, 57, 58, -1, -1, 400, -1, 78, 403,
5948 1368, 1369, 1370, 1371, -1, 409, 410, 411, -1, 1377,
5949 -1, 945, 946, 78, -1, -1, -1, 951, 952, -1,
5950 -1, 425, 102, -1, -1, -1, -1, 92, 108, 109,
5951 -1, 78, -1, -1, -1, 1082, 1083, 102, -1, 1086,
5952 -1, -1, 107, 108, 109, -1, -1, 451, 95, 96,
5953 230, 985, 986, -1, 988, 989, 1103, -1, -1, -1,
5954 -1, 141, 52, -1, 54, 55, 56, 57, 58, 473,
5955 -1, -1, 1027, 1028, -1, 255, 141, 257, -1, 144,
5956 260, 261, -1, -1, -1, -1, 266, -1, 78, -1,
5957 -1, -1, 1139, -1, -1, 142, 143, 144, 145, 146,
5958 -1, 1035, 92, -1, 508, 285, -1, 1325, -1, -1,
5959 -1, -1, 102, 1160, -1, -1, 1163, 107, 108, 109,
5960 -1, 525, -1, 527, -1, 1059, -1, 1082, 1083, -1,
5961 1177, 1086, 1179, -1, -1, 1182, 1183, -1, -1, -1,
5962 1187, 1188, -1, -1, 548, -1, -1, -1, 1103, -1,
5963 554, 141, -1, -1, 144, 335, -1, 337, 338, 339,
5964 340, -1, 342, 343, -1, -1, -1, 157, -1, -1,
5965 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5966 -1, -1, -1, 363, 1139, -1, -1, -1, -1, -1,
5967 594, 595, -1, 597, 598, -1, -1, -1, -1, 1246,
5968 -1, -1, 606, -1, 608, 1160, -1, 611, 1163, -1,
5969 52, -1, 54, 55, 56, 57, 58, -1, -1, -1,
5970 400, -1, 1177, 403, 1179, -1, -1, 1182, 1183, 409,
5971 410, 411, 1187, 1188, -1, -1, 78, -1, -1, -1,
5972 -1, -1, 1027, 1028, -1, 425, -1, -1, -1, -1,
5973 1297, 655, -1, 657, 1301, -1, 1303, -1, -1, -1,
5974 102, 665, -1, -1, -1, 107, 108, 109, -1, -1,
5975 -1, 451, 676, -1, 678, 679, -1, -1, -1, -1,
5976 -1, -1, -1, -1, -1, 689, 690, -1, -1, -1,
5977 -1, 1246, -1, 473, -1, -1, -1, 1082, 1083, 141,
5978 -1, 1086, 144, -1, -1, -1, -1, -1, 1027, 1028,
5979 -1, 715, -1, -1, -1, 1362, -1, -1, 1103, 723,
5980 -1, -1, -1, -1, -1, 729, -1, -1, 508, -1,
5981 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5982 -1, -1, 1297, -1, -1, -1, 1301, 527, 1303, -1,
5983 -1, -1, -1, -1, 1139, -1, -1, -1, -1, -1,
5984 -1, -1, -1, 1082, 1083, -1, -1, 1086, 548, -1,
5985 -1, -1, -1, -1, 554, 1160, -1, -1, 1163, -1,
5986 -1, -1, -1, -1, 1103, -1, -1, -1, -1, -1,
5987 -1, -1, 1177, -1, 1179, -1, -1, 1182, 1183, -1,
5988 -1, 805, 1187, 1188, -1, -1, -1, 1362, -1, -1,
5989 -1, -1, -1, -1, 594, 595, -1, 597, 598, -1,
5990 1139, -1, -1, -1, -1, -1, 606, -1, -1, -1,
5991 -1, 611, -1, -1, -1, -1, -1, -1, -1, -1,
5992 -1, 1160, -1, -1, 1163, -1, -1, -1, -1, -1,
5993 -1, 855, -1, 857, 858, -1, -1, -1, 1177, -1,
5994 1179, 1246, -1, 1182, 1183, -1, -1, -1, 1187, 1188,
5995 -1, -1, -1, -1, -1, 655, -1, 657, -1, -1,
5996 -1, -1, -1, -1, -1, 665, -1, -1, -1, -1,
5997 55, -1, -1, -1, -1, -1, 676, -1, 678, 679,
5998 -1, -1, -1, -1, -1, -1, -1, -1, -1, 689,
5999 690, -1, 1297, -1, -1, -1, 1301, -1, 1303, 923,
6000 -1, -1, -1, -1, -1, -1, -1, 1246, 78, 79,
6001 80, 81, 82, 83, 84, 715, 940, 87, 88, -1,
6002 -1, 945, 946, 723, -1, 95, 96, 951, 952, -1,
6003 -1, -1, -1, -1, -1, -1, 960, 961, -1, 1,
6004 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6005 -1, -1, 976, 15, 16, -1, -1, 1362, 1297, -1,
6006 -1, -1, 1301, -1, 1303, -1, -1, 137, 138, 139,
6007 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6008 -1, -1, -1, -1, -1, -1, 33, 34, 35, 36,
6009 52, 53, -1, -1, 1018, 1019, 1020, -1, -1, -1,
6010 -1, -1, 49, 50, 51, 67, -1, -1, -1, -1,
6011 -1, 1035, 59, 60, 61, 62, 63, -1, -1, -1,
6012 -1, -1, -1, 1362, -1, -1, -1, -1, 1052, 1027,
6013 1028, -1, -1, -1, -1, -1, -1, -1, -1, 1063,
6014 -1, 103, 104, 228, -1, 107, 231, 232, 233, -1,
6015 112, -1, -1, -1, -1, 855, -1, 857, 858, -1,
6016 -1, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6017 117, 118, -1, -1, -1, -1, -1, -1, -1, -1,
6018 -1, -1, -1, -1, 1082, 1083, -1, -1, 1086, -1,
6019 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6020 147, -1, -1, 1127, -1, 1103, -1, 1131, -1, -1,
6021 1134, 1135, -1, -1, -1, -1, 1140, -1, -1, -1,
6022 -1, -1, -1, 923, -1, -1, -1, -1, 1152, -1,
6023 -1, 1155, -1, -1, -1, -1, -1, -1, -1, -1,
6024 940, 1139, -1, -1, -1, 945, 946, -1, -1, -1,
6025 1174, 951, 952, -1, -1, -1, -1, -1, -1, -1,
6026 960, 961, 1160, 1, -1, 1163, -1, -1, 230, -1,
6027 -1, -1, 1196, -1, -1, -1, 976, 15, 16, 1177,
6028 -1, 1179, -1, -1, 1182, 1183, 1210, -1, -1, 1187,
6029 1188, -1, -1, 255, -1, 257, -1, -1, 260, 261,
6030 -1, -1, -1, 1227, 266, -1, -1, -1, -1, -1,
6031 -1, -1, -1, -1, 52, 53, -1, -1, 1018, 1019,
6032 1020, -1, -1, 285, -1, -1, -1, -1, -1, 67,
6033 -1, -1, -1, -1, -1, 1035, -1, -1, -1, -1,
6034 -1, -1, -1, 1267, -1, -1, -1, -1, 1246, -1,
6035 1274, 1275, 1052, -1, -1, 1279, -1, -1, -1, -1,
6036 -1, -1, -1, 1063, 1288, 103, 104, -1, -1, 107,
6037 -1, -1, -1, 335, 112, 337, 338, 339, 340, -1,
6038 342, 343, -1, 468, 469, -1, -1, -1, -1, -1,
6039 -1, -1, 477, -1, 1318, -1, -1, -1, -1, 1297,
6040 -1, 363, -1, 1301, -1, 1303, -1, -1, -1, -1,
6041 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6042 -1, -1, -1, -1, -1, -1, -1, 512, 1027, 1028,
6043 515, 1131, -1, -1, 1134, 1135, -1, -1, 400, -1,
6044 1140, 403, -1, -1, -1, -1, -1, 409, 410, 411,
6045 -1, -1, 1152, -1, -1, 1155, -1, -1, -1, -1,
6046 -1, -1, -1, 425, 1362, -1, -1, -1, -1, -1,
6047 -1, -1, -1, -1, 1174, -1, -1, -1, -1, -1,
6048 -1, -1, -1, 1082, 1083, -1, -1, 1086, -1, 451,
6049 -1, -1, 230, -1, -1, -1, 1196, -1, -1, -1,
6050 -1, 586, -1, -1, 1103, -1, -1, -1, -1, -1,
6051 1210, 473, -1, -1, -1, -1, -1, 255, -1, 257,
6052 -1, 606, 260, 261, -1, -1, 611, -1, 266, -1,
6053 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6054 1139, -1, -1, -1, -1, -1, 508, 285, -1, -1,
6055 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6056 -1, 1160, -1, -1, 1163, 527, -1, 1267, -1, -1,
6057 -1, -1, -1, -1, 1274, 1275, -1, -1, 1177, 1279,
6058 1179, -1, -1, 1182, 1183, -1, 548, -1, 1187, 1188,
6059 -1, -1, 554, -1, -1, -1, -1, 335, -1, 337,
6060 338, 339, 340, -1, 342, 343, -1, -1, 693, -1,
6061 -1, -1, -1, -1, -1, -1, -1, -1, 1318, -1,
6062 -1, -1, -1, -1, 709, 363, 711, -1, -1, -1,
6063 -1, -1, 594, 595, -1, 597, 598, -1, -1, -1,
6064 -1, -1, -1, -1, 606, -1, -1, 1246, -1, 611,
6065 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6066 -1, -1, 400, -1, -1, 403, -1, -1, -1, -1,
6067 -1, 409, 410, 411, -1, -1, -1, -1, -1, -1,
6068 -1, -1, 767, -1, -1, -1, -1, 425, 1027, 1028,
6069 -1, -1, -1, 655, -1, 657, -1, -1, 1297, -1,
6070 -1, -1, 1301, 665, 1303, -1, -1, -1, -1, -1,
6071 795, -1, -1, 451, 676, -1, 678, 679, -1, -1,
6072 78, 79, 80, 81, 82, 83, 84, 689, 690, 87,
6073 88, -1, -1, -1, -1, 473, -1, 95, 96, -1,
6074 -1, -1, 827, 1082, 1083, -1, -1, 1086, -1, -1,
6075 -1, -1, -1, 715, -1, -1, -1, -1, -1, -1,
6076 845, 723, -1, 1362, 1103, -1, -1, -1, -1, -1,
6077 508, -1, -1, -1, -1, -1, -1, 1, -1, 137,
6078 138, 139, 140, 141, 142, 143, 144, 145, 146, 527,
6079 -1, 15, 16, -1, -1, -1, -1, -1, -1, -1,
6080 1139, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6081 548, -1, -1, -1, -1, -1, 554, -1, -1, -1,
6082 -1, 1160, -1, -1, 1163, -1, -1, -1, 52, 53,
6083 -1, -1, 56, -1, -1, -1, -1, -1, 1177, -1,
6084 1179, -1, -1, 1182, 1183, -1, -1, 932, 1187, 1188,
6085 -1, -1, -1, -1, -1, -1, 594, 595, -1, 597,
6086 598, -1, -1, -1, -1, 89, -1, -1, 606, -1,
6087 955, -1, -1, 611, 1027, 1028, -1, -1, -1, -1,
6088 -1, -1, 967, -1, 108, 109, 110, -1, 112, 1027,
6089 1028, -1, -1, 855, -1, 857, 858, -1, -1, -1,
6090 -1, -1, -1, -1, -1, -1, 991, 1246, -1, -1,
6091 -1, -1, -1, -1, -1, -1, -1, 655, -1, 657,
6092 -1, -1, -1, -1, -1, -1, -1, 665, -1, 1082,
6093 1083, 1016, -1, 1086, -1, -1, -1, -1, 676, -1,
6094 678, 679, -1, -1, 1082, 1083, -1, -1, 1086, -1,
6095 1103, 689, 690, -1, -1, -1, -1, -1, 1297, -1,
6096 -1, 923, 1301, -1, 1303, 1103, 1051, -1, -1, -1,
6097 -1, -1, -1, -1, -1, -1, -1, 715, 940, -1,
6098 -1, -1, -1, 945, 946, 723, 1139, -1, -1, 951,
6099 952, -1, -1, -1, -1, -1, -1, -1, 960, 961,
6100 -1, 1139, -1, -1, -1, -1, 230, 1160, -1, -1,
6101 1163, -1, -1, -1, 976, -1, -1, -1, -1, -1,
6102 -1, -1, 1160, 1362, 1177, 1163, 1179, -1, -1, 1182,
6103 1183, 255, -1, 257, 1187, 1188, -1, -1, -1, 1177,
6104 -1, 1179, 266, -1, 1182, 1183, -1, -1, -1, 1187,
6105 1188, 1136, -1, -1, -1, -1, 1018, 1019, 1020, -1,
6106 -1, 285, 78, 79, 80, 81, 82, 83, 84, 85,
6107 -1, 87, 88, 1035, -1, -1, -1, -1, -1, 95,
6108 96, 305, -1, -1, -1, -1, -1, -1, -1, -1,
6109 1052, -1, -1, 1246, -1, -1, -1, -1, -1, -1,
6110 -1, 1063, -1, -1, -1, -1, -1, -1, 1246, -1,
6111 -1, 335, -1, -1, -1, -1, -1, 855, -1, 857,
6112 858, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6113 146, -1, -1, -1, -1, -1, -1, -1, -1, 363,
6114 364, -1, -1, -1, 1297, -1, -1, -1, 1301, -1,
6115 1303, -1, -1, -1, -1, -1, -1, -1, -1, 1297,
6116 -1, -1, -1, 1301, -1, 1303, -1, -1, -1, 1131,
6117 -1, -1, 1134, 1135, -1, -1, 400, -1, 1140, 403,
6118 -1, -1, -1, -1, -1, 923, 410, 411, -1, -1,
6119 1152, 1, -1, 1155, -1, -1, -1, -1, -1, -1,
6120 -1, -1, 940, -1, -1, 15, 16, 945, 946, 1362,
6121 -1, -1, 1174, 951, 952, -1, -1, -1, -1, -1,
6122 -1, -1, 960, 961, 1362, -1, -1, 451, -1, -1,
6123 -1, -1, -1, -1, 1196, -1, -1, -1, 976, -1,
6124 -1, -1, 52, 53, -1, -1, 56, -1, 1210, 473,
6125 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6126 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6127 -1, -1, -1, -1, -1, -1, -1, -1, -1, 89,
6128 1018, 1019, 1020, -1, 508, -1, -1, -1, -1, -1,
6129 -1, -1, -1, -1, -1, -1, -1, 1035, 108, 109,
6130 110, 525, 112, 527, -1, 1267, -1, -1, -1, -1,
6131 -1, -1, 1274, 1275, 1052, -1, -1, 1279, -1, -1,
6132 -1, -1, -1, -1, 548, 1063, 0, -1, -1, -1,
6133 554, -1, -1, -1, 8, 9, 10, -1, -1, 13,
6134 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
6135 -1, 25, 26, 27, -1, -1, 1318, -1, -1, -1,
6136 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6137 44, 595, -1, -1, 598, -1, -1, -1, -1, -1,
6138 -1, -1, -1, -1, 608, -1, -1, 611, -1, -1,
6139 -1, -1, -1, 1131, 68, 69, 1134, 1135, -1, -1,
6140 -1, -1, 1140, -1, -1, -1, -1, -1, -1, -1,
6141 -1, -1, -1, -1, 1152, -1, -1, 1155, -1, -1,
6142 230, -1, -1, 97, 98, -1, -1, -1, -1, -1,
6143 -1, 655, -1, 657, -1, -1, 1174, -1, -1, -1,
6144 -1, 665, -1, -1, -1, 255, 120, 257, -1, -1,
6145 -1, -1, 676, -1, 678, 1, 266, -1, 1196, -1,
6146 -1, -1, -1, -1, -1, 689, 690, -1, -1, -1,
6147 -1, -1, 1210, -1, -1, 285, -1, 151, 152, -1,
6148 154, -1, -1, 157, 158, -1, 160, -1, -1, -1,
6149 -1, -1, -1, -1, -1, 305, -1, -1, -1, 723,
6150 -1, -1, -1, -1, -1, 729, 52, 53, -1, -1,
6151 56, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6152 -1, -1, -1, -1, -1, 335, -1, -1, -1, 1267,
6153 -1, -1, -1, -1, -1, -1, 1274, 1275, -1, -1,
6154 -1, 1279, -1, 89, -1, -1, -1, -1, -1, -1,
6155 -1, -1, -1, 363, 364, 25, -1, -1, -1, -1,
6156 -1, -1, 108, 109, 110, 111, -1, -1, -1, -1,
6157 -1, -1, -1, -1, -1, -1, -1, -1, 1, -1,
6158 1318, 805, -1, -1, -1, -1, -1, -1, -1, -1,
6159 400, -1, -1, 403, -1, -1, -1, -1, -1, -1,
6160 410, 411, -1, -1, -1, -1, -1, -1, 78, 79,
6161 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6162 90, -1, -1, -1, -1, 95, 96, -1, -1, 52,
6163 53, 101, -1, 56, 858, -1, -1, -1, -1, -1,
6164 -1, 451, 78, 79, 80, 81, 82, 83, 84, 85,
6165 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6166 96, -1, -1, 473, -1, 135, 89, 137, 138, 139,
6167 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6168 -1, -1, -1, -1, 230, 108, 109, 110, -1, -1,
6169 -1, -1, -1, -1, -1, -1, -1, -1, 508, 135,
6170 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6171 146, -1, -1, -1, -1, 525, 940, 527, 154, -1,
6172 266, 945, 946, -1, -1, -1, -1, 951, 952, -1,
6173 -1, -1, -1, -1, -1, -1, 960, -1, 548, 285,
6174 -1, -1, -1, -1, 554, -1, -1, -1, -1, -1,
6175 -1, -1, 976, -1, -1, -1, -1, -1, -1, 305,
6176 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6177 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6178 -1, -1, -1, -1, -1, 595, -1, -1, 598, 335,
6179 -1, -1, -1, -1, 1018, 1019, 1020, -1, 608, -1,
6180 -1, 611, -1, -1, -1, -1, -1, 230, -1, -1,
6181 -1, 1035, -1, -1, -1, -1, -1, 363, 364, -1,
6182 -1, -1, -1, -1, -1, -1, -1, -1, 1052, -1,
6183 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1063,
6184 -1, -1, -1, 266, -1, 655, -1, 657, -1, -1,
6185 -1, -1, -1, -1, -1, 665, -1, 403, -1, -1,
6186 -1, -1, 285, -1, 410, 411, 676, -1, 678, -1,
6187 -1, -1, -1, -1, -1, -1, -1, -1, -1, 689,
6188 690, -1, 305, -1, -1, -1, 1, -1, -1, -1,
6189 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6190 -1, -1, -1, 1127, -1, -1, -1, 1131, -1, -1,
6191 1134, 1135, 335, 723, -1, -1, 1140, -1, -1, 729,
6192 -1, -1, -1, -1, -1, -1, -1, -1, 1152, -1,
6193 -1, 1155, -1, -1, -1, -1, -1, 52, 53, -1,
6194 363, 364, -1, -1, -1, -1, -1, 33, 34, 35,
6195 36, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6196 -1, -1, 508, 49, 50, 51, 52, -1, -1, -1,
6197 56, -1, 1196, 59, 60, 61, 62, 63, -1, 525,
6198 403, -1, -1, -1, -1, -1, 1210, 410, 411, -1,
6199 -1, -1, -1, 108, -1, 805, -1, -1, -1, -1,
6200 -1, -1, 548, 1227, -1, 91, 92, -1, 554, -1,
6201 -1, -1, -1, 99, -1, -1, 102, 1, 104, 105,
6202 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6203 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6204 -1, -1, -1, 1267, -1, -1, -1, -1, 858, 595,
6205 -1, -1, 598, -1, 140, 1279, -1, -1, -1, -1,
6206 -1, 147, 608, -1, 1288, -1, -1, -1, 52, 53,
6207 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6208 -1, -1, -1, -1, -1, 508, -1, -1, -1, -1,
6209 -1, -1, -1, -1, 1318, -1, -1, -1, -1, -1,
6210 -1, -1, 525, -1, -1, -1, -1, -1, -1, 655,
6211 -1, 657, -1, -1, -1, 230, -1, -1, -1, -1,
6212 -1, -1, -1, -1, -1, 548, -1, -1, -1, -1,
6213 940, 554, 678, -1, -1, 945, 946, -1, -1, -1,
6214 -1, 951, 952, -1, -1, -1, -1, -1, -1, -1,
6215 960, 266, -1, -1, -1, -1, -1, -1, -1, -1,
6216 -1, -1, -1, -1, -1, -1, 976, -1, -1, -1,
6217 285, -1, 595, -1, -1, 598, -1, -1, -1, -1,
6218 -1, -1, -1, 729, -1, 608, -1, -1, 611, -1,
6219 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6220 -1, -1, -1, -1, -1, -1, -1, -1, 1018, 1019,
6221 1020, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6222 335, -1, -1, -1, -1, 1035, -1, -1, -1, -1,
6223 -1, -1, 655, -1, 657, -1, -1, -1, -1, -1,
6224 -1, -1, 1052, -1, -1, -1, 230, -1, 363, -1,
6225 -1, -1, -1, 1063, -1, 678, -1, -1, -1, 805,
6226 -1, -1, -1, -1, -1, -1, 689, 690, -1, -1,
6227 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6228 -1, -1, 266, -1, -1, -1, -1, -1, 403, -1,
6229 -1, -1, -1, -1, -1, 410, 411, -1, -1, -1,
6230 723, 285, -1, -1, -1, -1, 729, -1, -1, -1,
6231 -1, -1, 858, -1, -1, 738, -1, 1127, -1, -1,
6232 -1, 1131, -1, -1, 1134, 1135, -1, -1, -1, -1,
6233 1140, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6234 -1, -1, 1152, -1, -1, 1155, -1, -1, -1, -1,
6235 -1, 335, -1, -1, -1, -1, -1, -1, -1, -1,
6236 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6237 -1, -1, -1, -1, -1, -1, -1, -1, -1, 363,
6238 -1, -1, 805, -1, -1, -1, 1196, -1, -1, -1,
6239 -1, -1, -1, 508, -1, -1, -1, -1, -1, -1,
6240 1210, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6241 -1, -1, -1, -1, 960, -1, -1, 1227, -1, 403,
6242 -1, -1, -1, -1, -1, -1, 410, 411, -1, -1,
6243 976, -1, -1, 548, -1, 858, -1, -1, -1, 554,
6244 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6245 -1, -1, -1, -1, -1, -1, -1, 1267, -1, -1,
6246 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1279,
6247 -1, -1, 1018, 1019, -1, -1, -1, -1, 1288, -1,
6248 595, -1, -1, 598, -1, -1, -1, -1, -1, -1,
6249 -1, -1, -1, -1, -1, -1, 611, -1, -1, -1,
6250 -1, -1, -1, -1, -1, -1, 1052, -1, 1318, -1,
6251 -1, -1, -1, -1, -1, -1, -1, 1063, -1, -1,
6252 -1, -1, 945, 946, 508, -1, -1, -1, 951, 952,
6253 -1, -1, -1, -1, -1, -1, -1, 960, -1, -1,
6254 655, -1, 657, -1, -1, -1, -1, -1, -1, -1,
6255 -1, -1, -1, 976, -1, -1, -1, -1, -1, -1,
6256 -1, -1, -1, 678, 548, -1, -1, -1, -1, -1,
6257 554, -1, -1, -1, 689, 690, -1, -1, -1, -1,
6258 -1, 1127, -1, -1, -1, 1131, -1, -1, 1134, 1135,
6259 -1, -1, -1, -1, 1140, 1018, 1019, 1020, -1, -1,
6260 -1, -1, -1, -1, -1, -1, 1152, -1, 723, 1155,
6261 -1, 595, 1035, -1, 598, -1, -1, -1, -1, -1,
6262 -1, -1, -1, -1, -1, -1, -1, 611, -1, 1052,
6263 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6264 1063, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6265 1196, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6266 -1, -1, -1, -1, 1210, -1, -1, -1, -1, -1,
6267 -1, 655, -1, 657, -1, -1, -1, -1, -1, -1,
6268 -1, 1227, -1, -1, -1, -1, -1, -1, -1, -1,
6269 -1, -1, -1, -1, 678, -1, -1, -1, -1, -1,
6270 -1, -1, -1, -1, 1127, 689, 690, -1, 1131, -1,
6271 -1, 1134, 1135, -1, -1, -1, -1, 1140, -1, -1,
6272 -1, -1, -1, -1, -1, 44, -1, -1, -1, 1152,
6273 -1, -1, 1155, 1279, -1, -1, -1, -1, -1, 723,
6274 -1, -1, 1288, 858, -1, -1, -1, -1, -1, -1,
6275 -1, -1, -1, -1, -1, -1, -1, 15, 16, 78,
6276 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6277 89, 90, 1318, 1196, -1, -1, 95, 96, -1, -1,
6278 -1, -1, -1, -1, -1, -1, -1, 1210, -1, 47,
6279 48, 49, 50, -1, -1, -1, 54, 55, -1, -1,
6280 -1, -1, -1, -1, 1227, -1, -1, -1, -1, 67,
6281 68, -1, -1, -1, -1, -1, 135, -1, 137, 138,
6282 139, 140, 141, 142, 143, 144, 145, 146, -1, -1,
6283 945, 946, -1, -1, -1, -1, 951, 952, -1, -1,
6284 -1, -1, -1, -1, -1, 960, -1, -1, -1, -1,
6285 33, 34, 35, 36, 112, -1, 1279, -1, -1, -1,
6286 -1, 976, -1, -1, -1, 1288, 49, 50, 51, 52,
6287 -1, -1, -1, 56, 858, -1, 59, 60, 61, 62,
6288 63, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6289 -1, -1, -1, -1, -1, 1318, -1, -1, -1, -1,
6290 -1, -1, -1, 1018, 1019, 1020, -1, -1, 91, 92,
6291 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6292 1035, 104, 105, -1, 107, -1, -1, 110, 111, 112,
6293 113, 114, 115, 116, 117, 118, -1, 1052, -1, -1,
6294 -1, -1, -1, -1, -1, -1, -1, -1, 1063, -1,
6295 -1, -1, -1, -1, -1, -1, -1, 140, -1, -1,
6296 -1, 945, 946, -1, 147, -1, -1, 951, 952, -1,
6297 228, 154, -1, 231, 232, 233, 960, 235, -1, -1,
6298 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6299 -1, -1, 976, -1, -1, -1, -1, 255, -1, 257,
6300 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6301 -1, -1, 1127, -1, -1, -1, 1131, -1, -1, 1134,
6302 1135, -1, -1, -1, -1, 1140, -1, -1, -1, -1,
6303 -1, -1, -1, -1, 1018, 1019, 1020, 1152, -1, -1,
6304 1155, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6305 -1, 1035, -1, -1, -1, -1, -1, -1, -1, -1,
6306 -1, -1, -1, -1, -1, -1, -1, -1, 1052, -1,
6307 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1063,
6308 -1, 1196, -1, -1, -1, -1, -1, -1, -1, -1,
6309 -1, -1, -1, -1, -1, 1210, -1, -1, -1, -1,
6310 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6311 368, 369, 370, 371, 372, -1, -1, 375, 376, 377,
6312 378, 379, 380, 381, 382, -1, 384, -1, -1, 387,
6313 388, 389, 390, 391, 392, 393, 394, 395, 396, -1,
6314 -1, -1, 400, -1, -1, -1, -1, 1131, -1, -1,
6315 1134, 1135, -1, -1, -1, -1, 1140, -1, -1, -1,
6316 -1, -1, -1, -1, 1279, -1, -1, -1, 1152, -1,
6317 -1, 1155, -1, -1, -1, -1, -1, -1, -1, -1,
6318 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6319 -1, -1, -1, 451, -1, -1, -1, -1, -1, -1,
6320 -1, -1, -1, 1318, -1, -1, -1, -1, -1, -1,
6321 468, 469, 1196, -1, -1, 473, -1, -1, -1, 477,
6322 -1, 479, -1, 0, -1, -1, 1210, -1, -1, -1,
6323 -1, 8, 9, 10, -1, -1, 13, 14, 15, 497,
6324 17, -1, -1, -1, -1, -1, -1, -1, 25, 26,
6325 27, 28, 29, -1, 512, -1, -1, 515, -1, -1,
6326 37, 38, -1, 40, 41, 42, 43, 44, -1, 527,
6327 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6328 -1, -1, -1, -1, -1, -1, -1, 545, -1, -1,
6329 -1, 68, 69, -1, -1, 1279, -1, -1, -1, -1,
6330 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6331 87, 88, 89, 90, -1, -1, -1, -1, 95, 96,
6332 97, 98, -1, 100, 101, -1, -1, -1, 586, 106,
6333 -1, -1, -1, -1, 1318, -1, 594, -1, -1, 597,
6334 -1, -1, -1, 120, -1, -1, 123, -1, 606, -1,
6335 -1, -1, -1, 611, -1, -1, -1, 134, 135, 136,
6336 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6337 -1, -1, -1, -1, 151, 152, 153, 154, 155, -1,
6338 -1, 158, 159, 160, -1, -1, -1, -1, -1, -1,
6339 -1, -1, -1, -1, -1, -1, -1, 33, 34, 35,
6340 36, -1, -1, -1, -1, -1, -1, 665, -1, -1,
6341 -1, -1, -1, 49, 50, 51, 52, -1, 676, -1,
6342 56, -1, 58, 59, 60, 61, 62, 63, -1, -1,
6343 -1, 689, 690, -1, -1, 693, 694, -1, -1, -1,
6344 -1, -1, 78, -1, -1, -1, -1, 705, 706, -1,
6345 -1, 709, -1, 711, -1, 91, 92, -1, -1, -1,
6346 718, 719, -1, 99, -1, 723, 102, -1, 104, 105,
6347 -1, 107, 108, -1, 110, 111, 112, 113, 114, 115,
6348 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6349 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6350 -1, -1, -1, -1, 140, -1, -1, -1, -1, 767,
6351 -1, 147, -1, -1, -1, -1, -1, -1, -1, -1,
6352 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6353 -1, -1, -1, -1, -1, -1, -1, 795, -1, -1,
6354 -1, -1, -1, 0, 1, -1, 3, 4, 5, 6,
6355 7, 8, 9, 10, 11, 12, -1, 14, 15, 16,
6356 17, 18, 19, 20, 21, 22, 23, 24, 25, 827,
6357 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6358 -1, -1, 39, -1, -1, -1, -1, 845, 45, 46,
6359 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6360 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6361 -1, 68, -1, -1, -1, -1, -1, 875, -1, 76,
6362 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6363 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6364 -1, -1, 99, -1, -1, 102, 103, 104, 105, -1,
6365 107, -1, -1, 110, 111, 112, 113, 114, 115, 116,
6366 117, 118, -1, 120, -1, 923, -1, -1, -1, -1,
6367 -1, -1, -1, -1, 932, -1, -1, -1, -1, -1,
6368 -1, -1, 940, -1, -1, -1, 944, 945, 946, -1,
6369 147, 148, 149, 951, 952, 152, -1, 955, -1, -1,
6370 -1, 158, -1, 160, -1, -1, -1, -1, -1, 967,
6371 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6372 -1, -1, -1, -1, -1, -1, -1, 985, 986, -1,
6373 988, 989, -1, 991, -1, 993, -1, -1, -1, -1,
6374 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6375 -1, -1, -1, -1, 1012, 1013, -1, -1, 1016, -1,
6376 -1, -1, 1020, 1021, -1, -1, -1, -1, -1, -1,
6377 -1, -1, -1, -1, -1, -1, -1, 1035, -1, -1,
6378 -1, -1, -1, -1, 0, 1, -1, 3, 4, 5,
6379 6, 7, -1, 1051, -1, 11, 12, -1, -1, -1,
6380 16, 1059, 18, 19, 20, 21, 22, 23, 24, -1,
6381 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6382 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6383 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6384 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6385 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6386 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6387 -1, -1, -1, -1, -1, 91, 92, -1, 1136, -1,
6388 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6389 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6390 116, 117, 118, -1, 120, -1, -1, -1, -1, -1,
6391 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6392 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6393 -1, 147, 148, 149, -1, -1, 0, 1, 154, 3,
6394 4, 5, 6, 7, 160, -1, -1, 11, 12, -1,
6395 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6396 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6397 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6398 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6399 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6400 64, 65, -1, -1, -1, -1, -1, -1, -1, 1267,
6401 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6402 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6403 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6404 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6405 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6406 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6407 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6408 -1, -1, -1, 147, 148, 149, -1, -1, 0, 1,
6409 154, 3, 4, 5, 6, 7, 160, -1, -1, 11,
6410 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6411 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6412 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6413 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6414 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6415 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6416 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6417 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6418 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6419 102, 103, 104, 105, -1, 107, -1, -1, 110, 111,
6420 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
6421 -1, -1, -1, -1, 0, -1, -1, -1, -1, -1,
6422 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
6423 -1, 17, -1, -1, -1, 147, 148, 149, -1, 25,
6424 152, 27, 28, 29, -1, -1, -1, -1, 160, -1,
6425 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6426 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6427 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6428 96, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6429 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6430 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6431 96, 97, 98, -1, 100, 101, -1, -1, -1, 135,
6432 106, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6433 146, -1, -1, -1, 120, -1, -1, 123, -1, -1,
6434 -1, -1, -1, -1, -1, -1, -1, -1, 134, 135,
6435 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6436 146, -1, -1, -1, -1, -1, 152, 153, 154, 155,
6437 0, -1, 158, 159, 160, -1, -1, -1, 8, 9,
6438 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
6439 -1, -1, -1, -1, -1, 25, -1, 27, 28, 29,
6440 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
6441 40, 41, 42, 43, 44, -1, -1, -1, 78, 79,
6442 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6443 90, -1, -1, -1, -1, 95, 96, -1, 68, 69,
6444 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
6445 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6446 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
6447 100, 101, -1, -1, -1, -1, 106, 137, 138, 139,
6448 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6449 120, -1, -1, 123, -1, -1, -1, -1, -1, -1,
6450 -1, -1, -1, -1, 134, 135, 136, 137, 138, 139,
6451 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6452 -1, -1, 152, 153, 154, 155, 0, -1, 158, 159,
6453 160, -1, -1, -1, 8, 9, 10, -1, -1, 13,
6454 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
6455 -1, 25, 26, 27, 28, 29, -1, -1, -1, -1,
6456 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6457 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6458 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6459 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
6460 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6461 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6462 -1, 95, 96, 97, 98, -1, -1, 101, -1, -1,
6463 -1, -1, 106, -1, -1, -1, -1, -1, -1, -1,
6464 -1, -1, -1, -1, -1, -1, 120, -1, -1, 123,
6465 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6466 -1, 135, 136, 137, 138, 139, 140, 141, 142, 143,
6467 144, 145, 146, -1, -1, -1, -1, 151, 152, 153,
6468 154, 155, 0, -1, 158, 159, 160, -1, -1, -1,
6469 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
6470 -1, -1, -1, -1, -1, -1, -1, 25, 26, 27,
6471 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
6472 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
6473 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6474 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6475 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
6476 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6477 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
6478 98, -1, -1, 101, -1, -1, -1, -1, 106, -1,
6479 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6480 -1, -1, 120, -1, -1, 123, -1, -1, -1, -1,
6481 -1, -1, -1, -1, -1, -1, -1, 135, 136, 137,
6482 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6483 -1, -1, -1, 151, 152, 153, 154, 155, 0, -1,
6484 158, 159, 160, -1, -1, -1, 8, 9, 10, -1,
6485 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
6486 -1, -1, -1, 25, 26, 27, 28, -1, -1, -1,
6487 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
6488 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
6489 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6490 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
6491 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6492 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6493 -1, -1, -1, 95, 96, 97, 98, -1, -1, 101,
6494 -1, -1, -1, -1, 106, -1, -1, -1, -1, -1,
6495 -1, -1, -1, -1, -1, -1, -1, -1, 120, -1,
6496 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6497 -1, -1, -1, 135, -1, 137, 138, 139, 140, 141,
6498 142, 143, 144, 145, 146, -1, -1, -1, -1, 151,
6499 152, 153, 154, 155, 0, 157, 158, 159, 160, -1,
6500 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
6501 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6502 -1, 27, 28, 29, -1, -1, -1, -1, -1, -1,
6503 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6504 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6505 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6506 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6507 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6508 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6509 96, 97, 98, -1, -1, 101, -1, -1, -1, -1,
6510 106, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6511 -1, -1, -1, -1, 120, -1, -1, 123, -1, -1,
6512 -1, -1, -1, -1, -1, -1, -1, -1, -1, 135,
6513 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6514 146, -1, -1, -1, -1, -1, 152, 153, 154, 155,
6515 0, -1, 158, 159, 160, -1, -1, -1, 8, 9,
6516 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
6517 -1, -1, -1, -1, -1, 25, 26, 27, 28, -1,
6518 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
6519 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
6520 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6521 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
6522 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
6523 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6524 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
6525 -1, 101, -1, -1, -1, -1, 106, -1, -1, -1,
6526 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6527 120, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6528 -1, -1, -1, -1, -1, 135, -1, 137, 138, 139,
6529 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6530 -1, 151, 152, 153, 154, 155, 0, 157, 158, 159,
6531 160, -1, -1, -1, 8, 9, 10, -1, -1, 13,
6532 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
6533 -1, 25, -1, 27, 28, -1, -1, -1, -1, -1,
6534 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6535 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6536 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6537 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
6538 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6539 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6540 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
6541 -1, -1, 106, -1, -1, -1, -1, -1, -1, -1,
6542 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
6543 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6544 134, 135, -1, 137, 138, 139, 140, 141, 142, 143,
6545 144, 145, 146, -1, -1, -1, -1, 151, 152, 153,
6546 154, 155, 0, -1, 158, 159, 160, -1, -1, -1,
6547 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
6548 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
6549 28, -1, -1, -1, -1, -1, -1, -1, -1, 37,
6550 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
6551 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6552 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6553 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
6554 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6555 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
6556 98, -1, -1, 101, -1, -1, -1, -1, 106, -1,
6557 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6558 -1, -1, 120, -1, -1, -1, -1, -1, -1, -1,
6559 -1, -1, -1, -1, -1, -1, -1, 135, -1, 137,
6560 138, 139, 140, 141, 142, 143, 144, 145, 146, -1,
6561 -1, -1, -1, -1, 152, 153, 154, 155, 0, 157,
6562 158, 159, 160, -1, -1, -1, 8, 9, 10, 44,
6563 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
6564 -1, -1, -1, 25, 26, -1, -1, -1, -1, -1,
6565 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
6566 42, 43, 44, 78, 79, 80, 81, 82, 83, 84,
6567 85, 86, 87, 88, 89, 90, -1, -1, -1, -1,
6568 95, 96, -1, -1, -1, -1, 68, 69, -1, -1,
6569 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6570 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6571 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
6572 135, -1, 137, 138, 139, 140, 141, 142, 143, 144,
6573 145, 146, -1, -1, -1, -1, -1, -1, 120, -1,
6574 155, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6575 -1, -1, 134, 135, -1, 137, 138, 139, 140, 141,
6576 142, 143, 144, 145, 146, -1, -1, -1, -1, 151,
6577 152, 153, 154, 155, 0, -1, 158, -1, 160, -1,
6578 -1, -1, 8, 9, 10, -1, -1, -1, 14, 15,
6579 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6580 26, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6581 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6582 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6583 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6584 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6585 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6586 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6587 96, 97, 98, -1, 100, 101, -1, -1, -1, -1,
6588 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6589 -1, -1, -1, -1, 120, -1, -1, -1, -1, -1,
6590 -1, -1, -1, -1, -1, -1, -1, -1, 134, 135,
6591 -1, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6592 146, -1, -1, -1, -1, 151, 152, 153, 154, 155,
6593 0, -1, 158, -1, 160, -1, -1, -1, 8, 9,
6594 10, -1, -1, -1, 14, 15, -1, 17, -1, -1,
6595 -1, -1, -1, -1, -1, 25, -1, -1, -1, -1,
6596 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
6597 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
6598 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6599 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
6600 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
6601 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6602 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
6603 100, 101, -1, -1, -1, -1, -1, -1, -1, -1,
6604 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6605 120, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6606 -1, -1, -1, -1, 134, 135, -1, 137, 138, 139,
6607 140, 141, 142, 143, 144, 145, 146, -1, -1, -1,
6608 -1, 151, 152, 153, 154, 155, 0, -1, 158, -1,
6609 160, -1, -1, -1, 8, 9, 10, -1, -1, -1,
6610 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
6611 -1, 25, -1, -1, -1, -1, -1, -1, -1, -1,
6612 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6613 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6614 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6615 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
6616 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6617 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6618 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
6619 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6620 -1, -1, -1, -1, -1, -1, 120, -1, -1, -1,
6621 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6622 134, 135, -1, 137, 138, 139, 140, 141, 142, 143,
6623 144, 145, 146, -1, -1, -1, -1, 151, 152, 153,
6624 154, 155, -1, -1, 158, 1, 160, 3, 4, 5,
6625 6, 7, 8, 9, 10, 11, 12, -1, -1, 15,
6626 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6627 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6628 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6629 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6630 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6631 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
6632 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6633 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6634 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6635 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6636 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6637 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6638 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6639 -1, 147, 148, 149, -1, -1, -1, 1, 154, 3,
6640 4, 5, 6, 7, 160, -1, 10, 11, 12, -1,
6641 14, 15, 16, -1, 18, 19, 20, 21, 22, 23,
6642 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6643 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6644 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6645 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6646 64, 65, -1, -1, 68, -1, -1, -1, -1, -1,
6647 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6648 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6649 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6650 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6651 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6652 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6653 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6654 -1, -1, -1, 147, 148, 149, -1, -1, -1, 1,
6655 154, 3, 4, 5, 6, 7, 160, -1, 10, 11,
6656 12, -1, -1, 15, 16, 17, 18, 19, 20, 21,
6657 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6658 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6659 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6660 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6661 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
6662 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6663 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6664 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6665 102, 103, 104, 105, -1, 107, -1, -1, 110, 111,
6666 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
6667 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6668 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6669 -1, -1, -1, -1, -1, 147, 148, 149, -1, -1,
6670 -1, 1, 154, 3, 4, 5, 6, 7, 160, -1,
6671 10, 11, 12, -1, -1, 15, 16, -1, 18, 19,
6672 20, 21, 22, 23, 24, 25, -1, -1, -1, -1,
6673 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6674 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
6675 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6676 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
6677 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
6678 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6679 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6680 -1, -1, 102, 103, 104, 105, -1, 107, -1, -1,
6681 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6682 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6683 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6684 -1, -1, -1, -1, -1, -1, -1, 147, 148, 149,
6685 -1, -1, -1, 1, 154, 3, 4, 5, 6, 7,
6686 160, -1, 10, 11, 12, -1, -1, 15, 16, -1,
6687 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
6688 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6689 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6690 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6691 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6692 68, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6693 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6694 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6695 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
6696 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
6697 118, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6698 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6699 -1, -1, -1, -1, -1, -1, -1, -1, -1, 147,
6700 148, 149, -1, -1, -1, 1, 154, 3, 4, 5,
6701 6, 7, 160, 9, 10, 11, 12, -1, -1, -1,
6702 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6703 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6704 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6705 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6706 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6707 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
6708 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6709 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6710 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6711 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6712 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6713 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6714 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6715 -1, 147, 148, 149, -1, -1, -1, 1, 154, 3,
6716 4, 5, 6, 7, 160, -1, 10, 11, 12, -1,
6717 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6718 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6719 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6720 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6721 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6722 64, 65, -1, -1, 68, -1, -1, -1, -1, -1,
6723 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6724 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6725 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6726 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6727 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6728 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6729 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6730 -1, -1, -1, 147, 148, 149, -1, -1, -1, 1,
6731 154, 3, 4, 5, 6, 7, 160, -1, -1, 11,
6732 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6733 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6734 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6735 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6736 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6737 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6738 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6739 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6740 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6741 102, 103, 104, 105, -1, 107, -1, -1, 110, 111,
6742 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
6743 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6744 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6745 -1, -1, -1, -1, -1, 147, 148, 149, -1, -1,
6746 -1, -1, 154, -1, -1, -1, 158, 1, 160, 3,
6747 4, 5, 6, 7, -1, -1, -1, 11, 12, -1,
6748 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6749 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6750 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6751 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6752 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6753 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6754 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6755 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6756 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6757 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6758 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6759 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6760 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6761 -1, -1, -1, 147, 148, 149, -1, -1, -1, -1,
6762 154, -1, -1, -1, 158, 1, 160, 3, 4, 5,
6763 6, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6764 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6765 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6766 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6767 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6768 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6769 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6770 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6771 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6772 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
6773 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
6774 116, 117, 118, -1, -1, -1, -1, -1, -1, -1,
6775 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6776 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6777 -1, 147, 148, 149, -1, -1, 152, 1, 154, 3,
6778 4, 5, 6, 7, 160, -1, -1, 11, 12, -1,
6779 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6780 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
6781 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6782 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6783 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6784 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6785 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6786 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6787 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6788 104, 105, -1, 107, -1, -1, 110, 111, 112, 113,
6789 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6790 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6791 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6792 -1, -1, -1, 147, 148, 149, -1, -1, 152, 1,
6793 154, 3, 4, 5, -1, 7, 160, -1, -1, 11,
6794 12, -1, -1, -1, 16, 17, 18, 19, 20, 21,
6795 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6796 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6797 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6798 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6799 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6800 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6801 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6802 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6803 102, 103, 104, 105, -1, -1, -1, -1, 110, 111,
6804 112, 113, 114, 115, 116, 117, 118, -1, -1, -1,
6805 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6806 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6807 -1, -1, -1, -1, -1, 147, 148, 149, -1, -1,
6808 -1, -1, 154, -1, -1, -1, -1, -1, 160, 3,
6809 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
6810 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
6811 24, 25, 26, -1, -1, -1, 30, 31, 32, 33,
6812 34, 35, 36, 37, 38, 39, -1, -1, -1, -1,
6813 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6814 54, 55, 56, 57, -1, -1, -1, -1, -1, -1,
6815 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6816 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
6817 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
6818 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
6819 -1, -1, -1, 107, 108, -1, -1, -1, -1, -1,
6820 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6821 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6822 -1, -1, -1, 137, 138, 139, 140, 141, 142, 143,
6823 144, 145, 146, -1, 148, 149, -1, -1, -1, -1,
6824 -1, -1, 156, 157, 3, 4, 5, 6, 7, 8,
6825 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
6826 19, 20, 21, 22, 23, 24, 25, 26, -1, -1,
6827 -1, 30, 31, 32, 33, 34, 35, 36, 37, 38,
6828 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6829 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6830 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6831 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
6832 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
6833 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
6834 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
6835 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6836 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6837 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
6838 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
6839 149, -1, -1, -1, -1, -1, -1, 156, 3, 4,
6840 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
6841 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
6842 25, 26, -1, -1, -1, 30, 31, 32, 33, 34,
6843 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
6844 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
6845 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
6846 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6847 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
6848 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
6849 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
6850 -1, -1, 107, 108, -1, -1, 111, -1, -1, -1,
6851 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6852 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6853 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
6854 145, 146, -1, 148, 149, -1, -1, -1, -1, -1,
6855 -1, 156, 3, 4, 5, 6, 7, 8, 9, 10,
6856 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
6857 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
6858 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
6859 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
6860 51, 52, 53, -1, -1, 56, -1, -1, -1, -1,
6861 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6862 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
6863 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
6864 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
6865 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
6866 111, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6867 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6868 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
6869 141, 142, 143, 144, 145, 146, -1, 148, 149, -1,
6870 -1, -1, -1, -1, -1, 156, 3, 4, 5, 6,
6871 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
6872 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
6873 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6874 37, 38, 39, -1, -1, -1, -1, -1, 45, 46,
6875 47, 48, 49, 50, 51, 52, 53, -1, -1, 56,
6876 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6877 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6878 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
6879 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
6880 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6881 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
6882 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6883 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6884 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6885 -1, 148, 149, 3, 4, 5, -1, 7, -1, 156,
6886 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
6887 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
6888 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6889 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
6890 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6891 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
6892 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6893 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6894 -1, -1, -1, -1, -1, -1, -1, -1, -1, 99,
6895 -1, -1, 102, 103, 104, 105, -1, -1, -1, -1,
6896 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
6897 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
6898 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6899 22, 23, 24, -1, -1, -1, -1, 147, 30, 31,
6900 32, 33, 34, 35, 36, 155, -1, 39, -1, -1,
6901 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6902 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6903 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6904 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6905 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6906 -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6907 102, 103, 104, 105, -1, -1, -1, -1, 110, 111,
6908 112, 113, 114, 115, 116, 117, 118, -1, -1, 3,
6909 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6910 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6911 24, -1, -1, -1, -1, 147, 30, 31, 32, 33,
6912 34, 35, 36, 155, -1, 39, -1, -1, -1, -1,
6913 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6914 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
6915 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6916 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6917 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6918 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6919 104, 105, -1, 107, 108, 109, 110, 111, 112, 113,
6920 114, 115, 116, 117, 118, -1, -1, -1, -1, -1,
6921 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6922 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
6923 5, -1, 7, 147, 148, 149, 11, 12, -1, -1,
6924 154, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6925 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6926 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6927 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6928 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6929 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6930 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6931 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6932 -1, -1, -1, -1, 99, -1, -1, 102, 103, 104,
6933 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
6934 115, 116, 117, 118, -1, -1, -1, -1, -1, -1,
6935 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6936 -1, -1, -1, -1, -1, 1, -1, 3, 4, 5,
6937 6, 7, 147, 148, 149, 11, 12, -1, -1, 154,
6938 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6939 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6940 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6941 46, -1, 48, 49, 50, 51, 52, 53, 54, 55,
6942 56, 57, -1, 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, -1, -1, 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, -1, 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, -1, -1, -1, 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, 109, 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, 107, 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, 107, 108, 109, 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, 58, 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, 108, 109, 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, 58, 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, 108, -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, 58, 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, -1, 108, 109, 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, 58, 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, -1, 108, -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, 107, -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, 107, -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, 107, -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, 107, -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 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7149 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7150 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7151 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
7152 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7153 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7154 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7155 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7156 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7157 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7158 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7159 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7160 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7161 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7162 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7163 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
7164 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7165 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7166 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7167 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7168 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7169 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7170 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7171 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7172 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7173 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7174 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7175 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
7176 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7177 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7178 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7179 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7180 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7181 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7182 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7183 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7184 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
7185 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
7186 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7187 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
7188 116, 117, 118, -1, -1, -1, -1, 3, 4, 5,
7189 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7190 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7191 -1, 147, 148, 149, 30, 31, 32, 33, 34, 35,
7192 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7193 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7194 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
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, -1, -1, -1, -1, -1,
7198 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7199 -1, 107, -1, -1, 110, 111, 112, 113, 114, 115,
7200 116, 117, 118, -1, -1, 3, 4, 5, -1, 7,
7201 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7202 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
7203 -1, 147, 30, 31, 32, 33, 34, 35, 36, -1,
7204 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7205 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7206 -1, 59, 60, 61, 62, 63, 64, 65, -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, -1, -1, -1, -1, -1, -1, -1,
7210 -1, 99, -1, -1, 102, 103, 104, 105, -1, 107,
7211 -1, -1, 110, 111, 112, 113, 114, 115, 116, 117,
7212 118, -1, -1, 3, 4, 5, -1, 7, -1, -1,
7213 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
7214 20, 21, 22, 23, 24, -1, -1, -1, -1, 147,
7215 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
7216 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
7217 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
7218 60, 61, 62, 63, 64, 65, -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, -1, -1, -1, -1, 95, -1, -1, -1, 99,
7222 -1, -1, 102, 103, 104, 105, -1, -1, -1, -1,
7223 110, 111, 112, 113, 114, 115, 116, 117, 118, -1,
7224 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
7225 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
7226 22, 23, 24, -1, -1, -1, -1, 147, 30, 31,
7227 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
7228 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
7229 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
7230 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
7231 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7232 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7233 -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
7234 102, 103, 104, 105, -1, -1, -1, -1, 110, 111,
7235 112, 113, 114, 115, 116, 117, 118, -1, -1, 3,
7236 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
7237 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
7238 24, -1, -1, -1, -1, 147, 30, 31, 32, 33,
7239 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
7240 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
7241 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
7242 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
7243 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7244 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7245 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
7246 104, 105, -1, -1, -1, -1, 110, 111, 112, 113,
7247 114, 115, 116, 117, 118, -1, -1, 3, 4, 5,
7248 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
7249 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
7250 -1, -1, -1, 147, 30, 31, 32, 33, 34, 35,
7251 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
7252 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
7253 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
7254 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7255 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7256 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7257 -1, -1, -1, 99, -1, -1, 102, 103, 104, 105,
7258 -1, -1, -1, -1, 110, 111, 112, 113, 114, 115,
7259 116, 117, 118, -1, -1, 3, 4, 5, -1, 7,
7260 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
7261 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
7262 -1, 147, 30, 31, 32, 33, 34, 35, 36, -1,
7263 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
7264 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7265 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
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, -1, -1,
7269 -1, 99, -1, -1, 102, 103, 104, 105, 33, 34,
7270 35, 36, 110, 111, 112, 113, 114, 115, 116, 117,
7271 118, -1, -1, -1, 49, 50, 51, 52, -1, -1,
7272 -1, 56, -1, -1, 59, 60, 61, 62, 63, -1,
7273 -1, -1, -1, -1, -1, -1, -1, -1, -1, 147,
7274 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7275 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
7276 -1, -1, -1, -1, 99, -1, -1, 102, -1, 104,
7277 105, -1, -1, -1, -1, 110, 111, 112, 113, 114,
7278 115, 116, 117, 118, -1, -1, -1, -1, -1, 52,
7279 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
7280 -1, -1, -1, -1, -1, 140, -1, -1, -1, -1,
7281 -1, -1, 147, 76, 77, 78, 79, 80, 81, 82,
7282 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7283 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7284 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
7285 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7286 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7287 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7288 143, 144, 145, 146, -1, 148, 149, 52, 53, -1,
7289 -1, 56, -1, 156, 157, -1, -1, -1, -1, -1,
7290 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7291 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7292 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7293 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7294 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7295 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7296 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7297 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7298 145, 146, -1, 148, 149, 52, 53, -1, -1, 56,
7299 -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
7300 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7301 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7302 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7303 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7304 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
7305 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7306 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7307 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7308 -1, 148, 149, 52, 53, -1, -1, 56, -1, 156,
7309 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7310 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7311 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7312 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7313 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
7314 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7315 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7316 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
7317 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
7318 149, 52, 53, -1, -1, 56, -1, 156, -1, -1,
7319 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7320 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7321 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7322 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7323 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
7324 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7325 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7326 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
7327 141, 142, 143, 144, 145, 146, -1, 148, 149, 52,
7328 53, -1, -1, 56, -1, 156, -1, -1, -1, -1,
7329 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7330 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
7331 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7332 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7333 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
7334 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7335 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7336 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7337 143, 144, 145, 146, -1, 148, 149, 52, 53, -1,
7338 -1, 56, -1, 156, -1, -1, -1, -1, -1, -1,
7339 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7340 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7341 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7342 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7343 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7344 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7345 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7346 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7347 145, 146, -1, 148, 149, 52, 53, -1, -1, 56,
7348 -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
7349 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7350 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7351 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7352 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7353 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
7354 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7355 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7356 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7357 -1, 148, 149, 52, 53, -1, -1, 56, -1, 156,
7358 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7359 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7360 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7361 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7362 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
7363 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7364 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7365 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
7366 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
7367 149, 52, 53, -1, -1, 56, -1, 156, -1, -1,
7368 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7369 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7370 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7371 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7372 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
7373 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7374 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7375 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
7376 141, 142, 143, 144, 145, 146, -1, 148, 149, 52,
7377 53, -1, -1, 56, -1, 156, -1, -1, -1, -1,
7378 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7379 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
7380 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7381 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7382 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
7383 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7384 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7385 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7386 143, 144, 145, 146, -1, 148, 149, 52, 53, -1,
7387 -1, 56, -1, 156, -1, -1, -1, -1, -1, -1,
7388 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7389 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7390 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7391 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7392 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7393 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7394 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7395 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7396 145, 146, -1, 148, 149, 52, 53, -1, -1, 56,
7397 -1, 156, -1, -1, -1, -1, -1, -1, -1, -1,
7398 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7399 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7400 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7401 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7402 107, 108, -1, -1, -1, -1, -1, -1, -1, -1,
7403 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7404 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7405 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7406 -1, 148, 149, 52, 53, -1, -1, 56, -1, 156,
7407 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7408 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7409 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7410 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7411 -1, -1, -1, -1, -1, -1, -1, -1, 107, 108,
7412 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7413 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7414 -1, -1, -1, -1, -1, -1, -1, -1, 137, 138,
7415 139, 140, 141, 142, 143, 144, 145, 146, -1, 148,
7416 149, 52, 53, -1, -1, 56, -1, 156, -1, -1,
7417 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7418 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7419 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7420 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7421 -1, -1, -1, -1, -1, -1, 107, 108, -1, -1,
7422 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7423 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7424 -1, -1, -1, -1, -1, -1, 137, 138, 139, 140,
7425 141, 142, 143, 144, 145, 146, -1, 148, 149, 52,
7426 53, -1, -1, 56, -1, 156, -1, -1, -1, -1,
7427 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7428 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
7429 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7430 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7431 -1, -1, -1, -1, 107, 108, -1, -1, -1, -1,
7432 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7433 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7434 -1, -1, -1, -1, 137, 138, 139, 140, 141, 142,
7435 143, 144, 145, 146, -1, 148, 149, 52, 53, -1,
7436 -1, 56, -1, 156, -1, -1, -1, -1, -1, -1,
7437 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7438 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7439 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7440 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7441 -1, -1, 107, 108, -1, -1, -1, -1, -1, -1,
7442 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7443 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7444 -1, -1, 137, 138, 139, 140, 141, 142, 143, 144,
7445 145, 146, -1, 148, 149, -1, -1, -1, -1, -1,
7451static const yytype_int16 yystos[] =
7453 0, 165, 166, 1, 3, 4, 5, 6, 7, 11,
7454 12, 16, 18, 19, 20, 21, 22, 23, 24, 30,
7455 31, 32, 33, 34, 35, 36, 39, 45, 46, 47,
7456 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7457 59, 60, 61, 62, 63, 64, 65, 76, 77, 91,
7458 92, 99, 102, 103, 104, 105, 107, 110, 111, 112,
7459 113, 114, 115, 116, 117, 118, 147, 148, 149, 164,
7460 167, 168, 180, 182, 183, 184, 185, 186, 187, 191,
7461 195, 197, 203, 206, 208, 209, 210, 212, 214, 215,
7462 216, 217, 226, 227, 228, 229, 230, 231, 234, 255,
7463 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
7464 277, 278, 287, 288, 321, 326, 327, 377, 378, 379,
7465 380, 381, 382, 384, 385, 388, 389, 391, 392, 393,
7466 394, 408, 409, 411, 412, 413, 414, 415, 416, 417,
7467 418, 419, 467, 0, 3, 4, 5, 6, 7, 8,
7468 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
7469 19, 20, 21, 22, 23, 24, 25, 26, 30, 31,
7470 32, 33, 34, 35, 36, 37, 38, 39, 45, 46,
7471 47, 48, 49, 50, 51, 52, 53, 56, 76, 77,
7472 78, 79, 80, 81, 82, 83, 84, 87, 88, 93,
7473 94, 95, 96, 107, 108, 137, 138, 139, 140, 141,
7474 142, 143, 144, 145, 146, 148, 149, 156, 220, 221,
7475 222, 224, 225, 408, 179, 179, 179, 39, 58, 99,
7476 102, 107, 108, 109, 112, 148, 187, 209, 217, 227,
7477 238, 239, 245, 246, 249, 251, 252, 268, 415, 416,
7478 418, 419, 454, 455, 246, 157, 242, 247, 248, 154,
7479 157, 189, 54, 221, 189, 151, 169, 170, 235, 467,
7480 21, 22, 32, 195, 197, 208, 227, 268, 287, 288,
7481 227, 227, 227, 56, 47, 102, 171, 176, 177, 182,
7482 211, 212, 467, 171, 240, 251, 454, 467, 239, 453,
7483 454, 467, 46, 99, 147, 155, 195, 197, 216, 255,
7484 268, 415, 416, 419, 319, 220, 397, 410, 414, 397,
7485 398, 399, 161, 383, 383, 383, 383, 413, 203, 227,
7486 227, 154, 160, 163, 465, 466, 179, 40, 41, 42,
7487 43, 44, 37, 38, 157, 422, 423, 424, 425, 467,
7488 422, 424, 26, 151, 242, 248, 279, 328, 28, 280,
7489 325, 134, 155, 102, 107, 214, 134, 25, 78, 79,
7490 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
7491 90, 95, 96, 101, 135, 137, 138, 139, 140, 141,
7492 142, 143, 144, 145, 146, 233, 233, 69, 97, 98,
7493 153, 459, 460, 256, 1, 191, 198, 199, 199, 200,
7494 202, 202, 163, 199, 466, 99, 210, 217, 268, 293,
7495 415, 416, 419, 52, 56, 95, 99, 218, 219, 268,
7496 415, 416, 419, 219, 33, 34, 35, 36, 49, 50,
7497 51, 52, 56, 157, 194, 220, 417, 449, 450, 451,
7498 246, 157, 248, 98, 459, 460, 328, 380, 100, 100,
7499 155, 239, 56, 239, 239, 239, 397, 134, 101, 155,
7500 250, 467, 98, 153, 459, 100, 100, 155, 250, 92,
7501 244, 246, 251, 434, 454, 467, 246, 189, 191, 461,
7502 191, 54, 64, 65, 181, 157, 235, 236, 164, 422,
7503 422, 98, 459, 100, 178, 211, 158, 163, 466, 461,
7504 257, 159, 155, 189, 464, 155, 464, 152, 464, 189,
7505 56, 413, 213, 214, 423, 155, 98, 153, 459, 316,
7506 66, 119, 121, 122, 400, 119, 119, 400, 67, 400,
7507 161, 386, 395, 390, 396, 78, 160, 168, 151, 199,
7508 199, 199, 199, 235, 237, 191, 191, 52, 54, 55,
7509 56, 57, 58, 78, 92, 102, 107, 108, 109, 141,
7510 144, 298, 364, 426, 427, 428, 429, 430, 431, 433,
7511 434, 435, 436, 437, 438, 439, 440, 441, 442, 443,
7512 444, 445, 446, 447, 134, 265, 433, 134, 266, 329,
7513 330, 106, 207, 331, 332, 332, 235, 211, 155, 216,
7514 155, 235, 193, 227, 227, 227, 227, 227, 227, 227,
7515 227, 227, 227, 227, 227, 227, 192, 227, 227, 227,
7516 227, 227, 227, 227, 227, 227, 227, 227, 52, 53,
7517 56, 224, 456, 457, 244, 251, 52, 53, 56, 224,
7518 456, 242, 171, 174, 13, 289, 465, 289, 199, 171,
7519 171, 259, 163, 56, 98, 153, 459, 25, 199, 52,
7520 56, 218, 138, 421, 467, 98, 153, 459, 264, 452,
7521 69, 98, 458, 246, 461, 52, 56, 242, 456, 235,
7522 235, 223, 100, 124, 235, 239, 239, 249, 252, 454,
7523 52, 56, 244, 52, 56, 235, 235, 455, 461, 155,
7524 461, 155, 158, 461, 221, 236, 227, 152, 134, 134,
7525 56, 456, 456, 235, 170, 461, 177, 158, 454, 155,
7526 213, 52, 56, 244, 52, 56, 317, 402, 401, 119,
7527 387, 400, 66, 119, 119, 387, 66, 119, 227, 171,
7528 182, 102, 107, 294, 295, 296, 297, 436, 155, 448,
7529 467, 155, 448, 155, 432, 461, 299, 300, 155, 432,
7530 239, 34, 52, 52, 155, 432, 52, 39, 188, 209,
7531 227, 232, 174, 465, 188, 232, 174, 316, 152, 330,
7532 316, 10, 68, 286, 286, 107, 203, 204, 205, 239,
7533 251, 253, 254, 461, 213, 155, 99, 185, 190, 205,
7534 217, 227, 239, 241, 254, 268, 419, 338, 338, 189,
7535 100, 100, 151, 242, 248, 189, 462, 155, 100, 100,
7536 242, 243, 248, 467, 235, 286, 171, 13, 171, 27,
7537 290, 465, 286, 286, 17, 283, 334, 25, 258, 340,
7538 52, 56, 244, 52, 56, 260, 263, 420, 262, 52,
7539 56, 218, 244, 174, 191, 196, 461, 243, 248, 190,
7540 227, 241, 190, 241, 221, 235, 239, 250, 100, 100,
7541 462, 100, 100, 434, 454, 191, 39, 190, 241, 464,
7542 214, 462, 318, 403, 407, 414, 419, 383, 400, 383,
7543 383, 383, 152, 296, 436, 155, 461, 155, 447, 426,
7544 441, 443, 429, 430, 439, 445, 134, 239, 431, 438,
7545 445, 437, 439, 189, 44, 44, 286, 286, 317, 152,
7546 317, 239, 155, 44, 213, 56, 44, 134, 44, 98,
7547 153, 459, 336, 336, 136, 235, 235, 330, 207, 159,
7548 100, 235, 235, 207, 8, 281, 373, 467, 14, 15,
7549 284, 285, 291, 292, 467, 292, 201, 107, 239, 333,
7550 286, 338, 334, 286, 462, 199, 465, 199, 174, 462,
7551 286, 461, 194, 328, 325, 235, 235, 100, 235, 235,
7552 461, 155, 461, 189, 179, 404, 461, 294, 297, 295,
7553 448, 155, 432, 155, 432, 155, 432, 155, 432, 432,
7554 188, 232, 237, 237, 318, 318, 107, 239, 237, 237,
7555 235, 237, 52, 56, 244, 52, 56, 337, 337, 227,
7556 190, 241, 190, 241, 152, 235, 190, 241, 190, 241,
7557 239, 254, 374, 467, 175, 284, 171, 199, 286, 286,
7558 239, 155, 289, 336, 286, 290, 174, 465, 286, 235,
7559 157, 322, 433, 405, 155, 155, 439, 439, 445, 439,
7560 227, 227, 179, 179, 239, 182, 182, 227, 462, 52,
7561 56, 58, 91, 92, 99, 102, 104, 105, 107, 112,
7562 140, 321, 343, 344, 345, 347, 350, 354, 355, 356,
7563 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
7564 369, 370, 371, 372, 377, 378, 381, 382, 385, 389,
7565 392, 394, 416, 441, 343, 190, 241, 101, 375, 467,
7566 9, 282, 376, 467, 172, 289, 107, 239, 171, 337,
7567 261, 286, 433, 320, 171, 295, 432, 432, 155, 432,
7568 432, 139, 310, 311, 467, 310, 368, 368, 56, 218,
7569 337, 344, 352, 353, 354, 355, 358, 462, 189, 337,
7570 463, 52, 397, 52, 102, 414, 101, 155, 139, 155,
7571 155, 344, 89, 90, 98, 153, 157, 348, 349, 52,
7572 99, 217, 268, 415, 416, 419, 289, 176, 171, 171,
7573 239, 292, 334, 335, 342, 343, 171, 189, 313, 29,
7574 123, 323, 0, 120, 406, 439, 298, 301, 302, 303,
7575 304, 306, 307, 309, 312, 437, 439, 440, 445, 447,
7576 171, 174, 344, 462, 344, 356, 358, 462, 155, 152,
7577 235, 124, 199, 369, 352, 356, 346, 357, 358, 112,
7578 361, 365, 368, 368, 218, 337, 462, 337, 461, 352,
7579 355, 359, 352, 355, 359, 56, 98, 153, 459, 171,
7580 163, 173, 291, 289, 40, 41, 286, 160, 158, 324,
7581 171, 432, 448, 155, 448, 155, 308, 313, 300, 155,
7582 305, 308, 99, 268, 155, 308, 461, 155, 155, 351,
7583 461, 155, 350, 155, 397, 461, 461, 461, 462, 462,
7584 462, 52, 56, 244, 52, 56, 373, 376, 339, 199,
7585 199, 52, 314, 315, 435, 174, 152, 301, 443, 304,
7586 306, 439, 445, 139, 268, 307, 445, 56, 98, 439,
7587 357, 359, 357, 356, 358, 462, 171, 155, 189, 286,
7588 448, 155, 308, 155, 308, 155, 308, 155, 308, 52,
7589 56, 308, 155, 463, 292, 340, 341, 315, 439, 439,
7590 445, 439, 308, 308, 155, 308, 308, 439, 308
7594static const yytype_int16 yyr1[] =
7596 0, 162, 165, 163, 163, 164, 166, 167, 167, 167,
7597 168, 168, 169, 170, 171, 172, 173, 174, 175, 174,
7598 176, 176, 176, 177, 178, 177, 179, 180, 181, 182,
7599 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
7600 182, 182, 183, 182, 182, 182, 182, 182, 184, 185,
7601 186, 186, 186, 186, 186, 186, 186, 186, 185, 187,
7602 187, 185, 188, 188, 189, 189, 188, 190, 190, 190,
7603 191, 191, 191, 191, 191, 192, 191, 193, 191, 191,
7604 194, 195, 196, 197, 198, 199, 199, 200, 201, 202,
7605 203, 203, 204, 205, 206, 206, 207, 208, 208, 208,
7606 209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
7607 209, 209, 210, 210, 211, 211, 212, 212, 212, 213,
7608 213, 212, 212, 212, 212, 212, 212, 212, 214, 214,
7609 215, 215, 216, 216, 216, 216, 216, 216, 216, 216,
7610 216, 217, 217, 217, 217, 217, 217, 217, 217, 217,
7611 218, 218, 219, 219, 219, 220, 220, 220, 220, 220,
7612 221, 221, 222, 223, 222, 224, 224, 224, 224, 224,
7613 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7614 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
7615 224, 224, 224, 224, 224, 225, 225, 225, 225, 225,
7616 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7617 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7618 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
7619 225, 225, 225, 225, 225, 225, 226, 227, 228, 228,
7620 228, 228, 228, 228, 228, 228, 227, 229, 229, 229,
7621 229, 229, 229, 227, 227, 227, 227, 227, 227, 227,
7622 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7623 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
7624 230, 230, 227, 227, 227, 231, 232, 232, 232, 233,
7625 233, 233, 233, 234, 234, 235, 236, 237, 238, 239,
7626 240, 240, 240, 240, 241, 241, 242, 242, 242, 243,
7627 243, 244, 244, 244, 244, 244, 245, 246, 246, 246,
7628 246, 246, 246, 247, 248, 249, 249, 250, 250, 251,
7629 251, 251, 251, 252, 252, 253, 253, 254, 254, 254,
7630 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7631 255, 256, 255, 257, 255, 255, 255, 255, 255, 255,
7632 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
7633 255, 255, 255, 255, 255, 258, 255, 259, 255, 255,
7634 260, 261, 255, 262, 255, 263, 255, 264, 255, 265,
7635 255, 266, 255, 255, 255, 255, 255, 267, 268, 269,
7636 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
7637 280, 281, 282, 283, 284, 285, 286, 286, 287, 288,
7638 289, 289, 289, 290, 290, 291, 291, 292, 292, 293,
7639 293, 294, 294, 295, 295, 296, 296, 296, 296, 296,
7640 297, 297, 298, 298, 299, 300, 301, 301, 302, 302,
7641 303, 303, 303, 303, 304, 305, 306, 307, 307, 308,
7642 308, 309, 309, 309, 309, 309, 309, 309, 309, 309,
7643 309, 309, 309, 309, 309, 309, 310, 310, 311, 312,
7644 312, 313, 313, 314, 314, 315, 315, 316, 317, 318,
7645 319, 320, 321, 322, 322, 323, 324, 323, 325, 326,
7646 326, 326, 326, 326, 327, 327, 327, 327, 327, 327,
7647 327, 327, 328, 328, 329, 330, 331, 332, 333, 333,
7648 333, 333, 334, 335, 335, 336, 337, 338, 339, 340,
7649 341, 341, 342, 342, 342, 343, 343, 343, 343, 343,
7650 343, 344, 345, 345, 346, 347, 347, 348, 349, 350,
7651 350, 350, 350, 350, 350, 350, 350, 350, 350, 350,
7652 350, 350, 351, 350, 350, 350, 352, 352, 352, 352,
7653 352, 352, 353, 353, 354, 354, 355, 356, 356, 357,
7654 357, 358, 359, 359, 359, 359, 360, 360, 361, 361,
7655 362, 362, 363, 363, 364, 365, 365, 366, 367, 367,
7656 367, 367, 367, 367, 366, 366, 366, 366, 368, 368,
7657 368, 368, 368, 368, 368, 368, 368, 368, 369, 370,
7658 370, 371, 372, 372, 372, 373, 373, 374, 374, 374,
7659 375, 375, 376, 376, 377, 377, 378, 379, 379, 379,
7660 380, 381, 382, 383, 383, 384, 385, 386, 386, 387,
7661 387, 388, 389, 390, 390, 391, 392, 393, 394, 395,
7662 395, 396, 396, 397, 397, 398, 398, 399, 399, 400,
7663 401, 400, 402, 403, 404, 405, 400, 406, 406, 407,
7664 407, 408, 408, 409, 410, 410, 411, 412, 412, 413,
7665 413, 413, 413, 414, 414, 414, 415, 415, 415, 416,
7666 416, 416, 416, 416, 416, 416, 417, 417, 418, 418,
7667 419, 419, 420, 421, 421, 422, 422, 423, 424, 425,
7668 424, 426, 426, 427, 427, 428, 428, 428, 428, 429,
7669 429, 430, 431, 431, 432, 432, 433, 433, 433, 433,
7670 433, 433, 433, 433, 433, 433, 433, 433, 433, 433,
7671 433, 434, 435, 435, 435, 435, 436, 436, 437, 438,
7672 438, 439, 439, 440, 441, 441, 442, 443, 443, 444,
7673 444, 445, 445, 446, 446, 447, 447, 448, 448, 449,
7674 450, 451, 452, 451, 453, 453, 454, 454, 455, 455,
7675 455, 455, 455, 455, 456, 456, 456, 456, 457, 457,
7676 457, 458, 458, 459, 459, 460, 460, 461, 462, 463,
7677 464, 464, 465, 465, 466, 466, 467
7681static const yytype_int8 yyr2[] =
7683 0, 2, 0, 0, 1, 2, 2, 1, 1, 3,
7684 1, 2, 1, 3, 2, 0, 0, 8, 0, 5,
7685 1, 1, 3, 1, 0, 3, 0, 2, 0, 4,
7686 3, 3, 3, 2, 3, 3, 3, 3, 4, 5,
7687 1, 4, 4, 1, 7, 4, 1, 1, 4, 1,
7688 4, 7, 6, 6, 6, 6, 5, 4, 1, 4,
7689 4, 1, 1, 4, 0, 1, 3, 1, 4, 1,
7690 1, 3, 3, 3, 2, 0, 7, 0, 7, 1,
7691 1, 2, 0, 5, 1, 1, 1, 0, 0, 4,
7692 1, 1, 1, 1, 1, 4, 3, 1, 1, 1,
7693 2, 3, 4, 5, 4, 5, 6, 2, 2, 2,
7694 2, 2, 1, 3, 1, 3, 1, 2, 3, 1,
7695 3, 5, 2, 4, 2, 4, 1, 3, 1, 3,
7696 2, 3, 1, 1, 4, 3, 3, 3, 3, 2,
7697 1, 1, 1, 4, 3, 3, 3, 3, 2, 1,
7698 1, 1, 2, 1, 3, 1, 1, 1, 1, 1,
7699 1, 1, 1, 0, 4, 1, 1, 1, 1, 1,
7700 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7701 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7702 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7703 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7704 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7705 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7706 1, 1, 1, 1, 1, 1, 4, 1, 4, 7,
7707 6, 6, 6, 6, 5, 4, 1, 3, 3, 2,
7708 2, 2, 2, 1, 3, 3, 3, 3, 3, 3,
7709 4, 2, 2, 3, 3, 3, 3, 1, 3, 3,
7710 3, 3, 3, 2, 2, 3, 3, 3, 3, 4,
7711 4, 4, 1, 1, 1, 6, 1, 4, 3, 1,
7712 1, 1, 1, 3, 3, 1, 1, 1, 1, 1,
7713 1, 2, 4, 2, 1, 4, 3, 5, 3, 1,
7714 1, 1, 1, 2, 4, 2, 1, 1, 1, 2,
7715 2, 4, 1, 0, 2, 2, 1, 2, 1, 1,
7716 1, 3, 3, 2, 1, 1, 1, 3, 4, 2,
7717 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7718 1, 0, 4, 0, 4, 3, 3, 2, 3, 3,
7719 1, 4, 3, 1, 6, 4, 3, 2, 1, 2,
7720 1, 6, 6, 4, 4, 0, 6, 0, 5, 5,
7721 0, 0, 9, 0, 6, 0, 7, 0, 5, 0,
7722 5, 0, 5, 1, 1, 1, 1, 1, 1, 1,
7723 1, 1, 2, 2, 1, 2, 1, 1, 1, 1,
7724 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7725 1, 1, 2, 1, 1, 1, 5, 1, 2, 1,
7726 1, 1, 3, 1, 3, 1, 3, 5, 1, 3,
7727 2, 1, 1, 1, 0, 2, 2, 1, 1, 3,
7728 4, 2, 2, 1, 1, 1, 3, 1, 3, 2,
7729 0, 6, 8, 4, 6, 4, 2, 6, 2, 4,
7730 6, 2, 4, 2, 4, 1, 1, 1, 4, 0,
7731 1, 1, 4, 1, 3, 1, 1, 0, 0, 0,
7732 0, 0, 9, 4, 1, 3, 0, 4, 3, 2,
7733 4, 5, 5, 3, 2, 4, 4, 3, 3, 2,
7734 1, 4, 3, 3, 0, 7, 0, 7, 1, 2,
7735 3, 4, 5, 1, 1, 0, 0, 0, 0, 9,
7736 1, 1, 1, 3, 3, 1, 2, 3, 1, 1,
7737 1, 1, 3, 1, 0, 4, 1, 2, 2, 1,
7738 1, 4, 4, 4, 3, 4, 4, 4, 3, 3,
7739 3, 2, 0, 6, 2, 4, 1, 1, 2, 2,
7740 4, 1, 2, 3, 1, 3, 5, 2, 1, 1,
7741 3, 1, 3, 1, 2, 1, 1, 3, 2, 1,
7742 1, 3, 2, 1, 2, 1, 1, 1, 3, 3,
7743 2, 2, 2, 2, 1, 1, 1, 1, 1, 1,
7744 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
7745 2, 4, 2, 3, 1, 6, 1, 1, 1, 1,
7746 2, 1, 3, 1, 1, 1, 1, 1, 1, 2,
7747 3, 3, 3, 1, 2, 4, 1, 0, 3, 1,
7748 2, 4, 1, 0, 3, 4, 1, 4, 1, 0,
7749 3, 0, 3, 0, 2, 0, 2, 0, 2, 1,
7750 0, 3, 0, 0, 0, 0, 7, 1, 1, 1,
7751 1, 1, 1, 2, 1, 1, 3, 1, 2, 1,
7752 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7753 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7754 1, 1, 0, 4, 1, 1, 1, 3, 1, 0,
7755 3, 2, 1, 1, 3, 4, 2, 2, 1, 1,
7756 1, 3, 1, 3, 2, 0, 6, 8, 4, 6,
7757 4, 6, 2, 4, 6, 2, 4, 2, 4, 1,
7758 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7759 3, 1, 3, 1, 1, 1, 1, 2, 1, 1,
7760 1, 2, 1, 1, 1, 2, 1, 2, 1, 1,
7761 1, 1, 0, 4, 1, 2, 1, 3, 3, 2,
7762 1, 4, 2, 1, 1, 1, 1, 1, 1, 1,
7763 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
7768enum { YYENOMEM = -2 };
7770#define yyerrok (yyerrstatus = 0)
7771#define yyclearin (yychar = YYEMPTY)
7773#define YYACCEPT goto yyacceptlab
7774#define YYABORT goto yyabortlab
7775#define YYERROR goto yyerrorlab
7776#define YYNOMEM goto yyexhaustedlab
7779#define YYRECOVERING() (!!yyerrstatus)
7781#define YYBACKUP(Token, Value) \
7783 if (yychar == YYEMPTY) \
7787 YYPOPSTACK (yylen); \
7793 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
7800#define YYERRCODE YYUNDEF
7806#ifndef YYLLOC_DEFAULT
7807# define YYLLOC_DEFAULT(Current, Rhs, N) \
7811 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
7812 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
7813 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
7814 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
7818 (Current).first_line = (Current).last_line = \
7819 YYRHSLOC (Rhs, 0).last_line; \
7820 (Current).first_column = (Current).last_column = \
7821 YYRHSLOC (Rhs, 0).last_column; \
7826#define YYRHSLOC(Rhs, K) ((Rhs)[K])
7834# define YYFPRINTF fprintf
7837# define YYDPRINTF(Args) \
7848# ifndef YYLOCATION_PRINT
7850# if defined YY_LOCATION_PRINT
7854# define YYLOCATION_PRINT(File, Loc, p) YY_LOCATION_PRINT(File, *(Loc), p)
7856# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
7862yy_location_print_ (FILE *yyo, YYLTYPE
const *
const yylocp)
7865 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
7866 if (0 <= yylocp->first_line)
7868 res += YYFPRINTF (yyo,
"%d", yylocp->first_line);
7869 if (0 <= yylocp->first_column)
7870 res += YYFPRINTF (yyo,
".%d", yylocp->first_column);
7872 if (0 <= yylocp->last_line)
7874 if (yylocp->first_line < yylocp->last_line)
7876 res += YYFPRINTF (yyo,
"-%d", yylocp->last_line);
7878 res += YYFPRINTF (yyo,
".%d", end_col);
7880 else if (0 <= end_col && yylocp->first_column < end_col)
7881 res += YYFPRINTF (yyo,
"-%d", end_col);
7886# define YYLOCATION_PRINT yy_location_print_
7890# define YY_LOCATION_PRINT(File, Loc, p) YYLOCATION_PRINT(File, &(Loc), p)
7894# define YYLOCATION_PRINT(File, Loc, p) ((void) 0)
7897# define YY_LOCATION_PRINT YYLOCATION_PRINT
7903# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p) \
7907 YYFPRINTF (stderr, "%s ", Title); \
7908 yy_symbol_print (stderr, \
7909 Kind, Value, Location, p); \
7910 YYFPRINTF (stderr, "\n"); \
7920yy_symbol_value_print (FILE *yyo,
7921 yysymbol_kind_t yykind,
YYSTYPE const *
const yyvaluep, YYLTYPE
const *
const yylocationp,
struct parser_params *p)
7923 FILE *yyoutput = yyo;
7925 YY_USE (yylocationp);
7929 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
7932 case YYSYMBOL_keyword_class:
7935 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7940 case YYSYMBOL_keyword_module:
7943 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7948 case YYSYMBOL_keyword_def:
7951 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7956 case YYSYMBOL_keyword_undef:
7959 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7964 case YYSYMBOL_keyword_begin:
7967 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7972 case YYSYMBOL_keyword_rescue:
7975 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7980 case YYSYMBOL_keyword_ensure:
7983 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7988 case YYSYMBOL_keyword_end:
7991 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7996 case YYSYMBOL_keyword_if:
7999 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8004 case YYSYMBOL_keyword_unless:
8007 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8012 case YYSYMBOL_keyword_then:
8015 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8020 case YYSYMBOL_keyword_elsif:
8023 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8028 case YYSYMBOL_keyword_else:
8031 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8036 case YYSYMBOL_keyword_case:
8039 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8044 case YYSYMBOL_keyword_when:
8047 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8052 case YYSYMBOL_keyword_while:
8055 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8060 case YYSYMBOL_keyword_until:
8063 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8068 case YYSYMBOL_keyword_for:
8071 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8076 case YYSYMBOL_keyword_break:
8079 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8084 case YYSYMBOL_keyword_next:
8087 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8092 case YYSYMBOL_keyword_redo:
8095 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8100 case YYSYMBOL_keyword_retry:
8103 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8108 case YYSYMBOL_keyword_in:
8111 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8116 case YYSYMBOL_keyword_do:
8119 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8124 case YYSYMBOL_keyword_do_cond:
8127 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8132 case YYSYMBOL_keyword_do_block:
8135 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8140 case YYSYMBOL_keyword_do_LAMBDA:
8143 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8148 case YYSYMBOL_keyword_return:
8151 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8156 case YYSYMBOL_keyword_yield:
8159 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8164 case YYSYMBOL_keyword_super:
8167 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8172 case YYSYMBOL_keyword_self:
8175 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8180 case YYSYMBOL_keyword_nil:
8183 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8188 case YYSYMBOL_keyword_true:
8191 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8196 case YYSYMBOL_keyword_false:
8199 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8204 case YYSYMBOL_keyword_and:
8207 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8212 case YYSYMBOL_keyword_or:
8215 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8220 case YYSYMBOL_keyword_not:
8223 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8228 case YYSYMBOL_modifier_if:
8231 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8236 case YYSYMBOL_modifier_unless:
8239 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8244 case YYSYMBOL_modifier_while:
8247 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8252 case YYSYMBOL_modifier_until:
8255 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8260 case YYSYMBOL_modifier_rescue:
8263 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8268 case YYSYMBOL_keyword_alias:
8271 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8276 case YYSYMBOL_keyword_defined:
8279 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8284 case YYSYMBOL_keyword_BEGIN:
8287 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8292 case YYSYMBOL_keyword_END:
8295 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8300 case YYSYMBOL_keyword__LINE__:
8303 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8308 case YYSYMBOL_keyword__FILE__:
8311 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8316 case YYSYMBOL_keyword__ENCODING__:
8319 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8324 case YYSYMBOL_tIDENTIFIER:
8327 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8335 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8340 case YYSYMBOL_tGVAR:
8343 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8348 case YYSYMBOL_tIVAR:
8351 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8356 case YYSYMBOL_tCONSTANT:
8359 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8364 case YYSYMBOL_tCVAR:
8367 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8372 case YYSYMBOL_tLABEL:
8375 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8380 case YYSYMBOL_tINTEGER:
8383 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8385 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8388 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8391 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8393 case NODE_IMAGINARY:
8394 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8403 case YYSYMBOL_tFLOAT:
8406 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8408 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8411 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8414 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8416 case NODE_IMAGINARY:
8417 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8426 case YYSYMBOL_tRATIONAL:
8429 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8431 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8434 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8437 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8439 case NODE_IMAGINARY:
8440 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8449 case YYSYMBOL_tIMAGINARY:
8452 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8454 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8457 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8460 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8462 case NODE_IMAGINARY:
8463 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8472 case YYSYMBOL_tCHAR:
8475 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8477 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8480 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8483 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8485 case NODE_IMAGINARY:
8486 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8495 case YYSYMBOL_tNTH_REF:
8498 rb_parser_printf(p,
"$%ld", RNODE_NTH_REF(((*yyvaluep).node))->nd_nth);
8503 case YYSYMBOL_tBACK_REF:
8506 rb_parser_printf(p,
"$%c", (
int)RNODE_BACK_REF(((*yyvaluep).node))->nd_nth);
8511 case YYSYMBOL_tSTRING_CONTENT:
8514 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8516 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8519 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8522 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8524 case NODE_IMAGINARY:
8525 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8537 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8542 case YYSYMBOL_70_backslash_:
8545 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8550 case YYSYMBOL_72_escaped_horizontal_tab_:
8553 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8558 case YYSYMBOL_73_escaped_form_feed_:
8561 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8566 case YYSYMBOL_74_escaped_carriage_return_:
8569 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8574 case YYSYMBOL_75_escaped_vertical_tab_:
8577 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8582 case YYSYMBOL_tANDDOT:
8585 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8590 case YYSYMBOL_tCOLON2:
8593 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8598 case YYSYMBOL_tOP_ASGN:
8601 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8606 case YYSYMBOL_compstmt_top_stmts:
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_top_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_top_stmt:
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_block_open:
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)))));
8658 case YYSYMBOL_begin_block:
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_compstmt_stmts:
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_bodystmt:
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_stmts:
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_stmt_or_begin:
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_allow_exits:
8726 if ((NODE *)((*yyvaluep).node_exits) == (NODE *)-1) {
8727 rb_parser_printf(p,
"NODE_SPECIAL");
8729 else if (((*yyvaluep).node_exits)) {
8730 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
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_asgn_mrhs:
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)))));
8762 case YYSYMBOL_asgn_command_rhs:
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_command_asgn:
8778 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8779 rb_parser_printf(p,
"NODE_SPECIAL");
8781 else if (((*yyvaluep).node)) {
8782 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8788 case YYSYMBOL_op_asgn_command_rhs:
8791 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8792 rb_parser_printf(p,
"NODE_SPECIAL");
8794 else if (((*yyvaluep).node)) {
8795 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8801 case YYSYMBOL_def_endless_method_endless_command:
8804 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8805 rb_parser_printf(p,
"NODE_SPECIAL");
8807 else if (((*yyvaluep).node)) {
8808 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8814 case YYSYMBOL_endless_command:
8817 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8818 rb_parser_printf(p,
"NODE_SPECIAL");
8820 else if (((*yyvaluep).node)) {
8821 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8827 case YYSYMBOL_command_rhs:
8830 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8831 rb_parser_printf(p,
"NODE_SPECIAL");
8833 else if (((*yyvaluep).node)) {
8834 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8843 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8844 rb_parser_printf(p,
"NODE_SPECIAL");
8846 else if (((*yyvaluep).node)) {
8847 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8853 case YYSYMBOL_def_name:
8856 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8861 case YYSYMBOL_defn_head:
8864 if ((NODE *)((*yyvaluep).node_def_temp) == (NODE *)-1) {
8865 rb_parser_printf(p,
"NODE_SPECIAL");
8867 else if (((*yyvaluep).node_def_temp)) {
8868 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8874 case YYSYMBOL_defs_head:
8877 if ((NODE *)((*yyvaluep).node_def_temp) == (NODE *)-1) {
8878 rb_parser_printf(p,
"NODE_SPECIAL");
8880 else if (((*yyvaluep).node_def_temp)) {
8881 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8887 case YYSYMBOL_value_expr_expr:
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_expr_value:
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_expr_value_do:
8916 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8917 rb_parser_printf(p,
"NODE_SPECIAL");
8919 else if (((*yyvaluep).node)) {
8920 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8926 case YYSYMBOL_command_call:
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)))));
8939 case YYSYMBOL_value_expr_command_call:
8942 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8943 rb_parser_printf(p,
"NODE_SPECIAL");
8945 else if (((*yyvaluep).node)) {
8946 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8952 case YYSYMBOL_command_call_value:
8955 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8956 rb_parser_printf(p,
"NODE_SPECIAL");
8958 else if (((*yyvaluep).node)) {
8959 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8965 case YYSYMBOL_block_command:
8968 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8969 rb_parser_printf(p,
"NODE_SPECIAL");
8971 else if (((*yyvaluep).node)) {
8972 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8978 case YYSYMBOL_cmd_brace_block:
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_fcall:
8994 if ((NODE *)((*yyvaluep).node_fcall) == (NODE *)-1) {
8995 rb_parser_printf(p,
"NODE_SPECIAL");
8997 else if (((*yyvaluep).node_fcall)) {
8998 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_fcall)))));
9004 case YYSYMBOL_command:
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)))));
9020 if ((NODE *)((*yyvaluep).node_masgn) == (NODE *)-1) {
9021 rb_parser_printf(p,
"NODE_SPECIAL");
9023 else if (((*yyvaluep).node_masgn)) {
9024 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9030 case YYSYMBOL_mlhs_inner:
9033 if ((NODE *)((*yyvaluep).node_masgn) == (NODE *)-1) {
9034 rb_parser_printf(p,
"NODE_SPECIAL");
9036 else if (((*yyvaluep).node_masgn)) {
9037 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9043 case YYSYMBOL_mlhs_basic:
9046 if ((NODE *)((*yyvaluep).node_masgn) == (NODE *)-1) {
9047 rb_parser_printf(p,
"NODE_SPECIAL");
9049 else if (((*yyvaluep).node_masgn)) {
9050 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9056 case YYSYMBOL_mlhs_items_mlhs_item:
9059 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9060 rb_parser_printf(p,
"NODE_SPECIAL");
9062 else if (((*yyvaluep).node)) {
9063 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9069 case YYSYMBOL_mlhs_item:
9072 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9073 rb_parser_printf(p,
"NODE_SPECIAL");
9075 else if (((*yyvaluep).node)) {
9076 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9082 case YYSYMBOL_mlhs_head:
9085 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9086 rb_parser_printf(p,
"NODE_SPECIAL");
9088 else if (((*yyvaluep).node)) {
9089 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9095 case YYSYMBOL_mlhs_node:
9098 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9099 rb_parser_printf(p,
"NODE_SPECIAL");
9101 else if (((*yyvaluep).node)) {
9102 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9111 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9112 rb_parser_printf(p,
"NODE_SPECIAL");
9114 else if (((*yyvaluep).node)) {
9115 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9121 case YYSYMBOL_cname:
9124 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9129 case YYSYMBOL_cpath:
9132 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9133 rb_parser_printf(p,
"NODE_SPECIAL");
9135 else if (((*yyvaluep).node)) {
9136 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9142 case YYSYMBOL_fname:
9145 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9150 case YYSYMBOL_fitem:
9153 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9154 rb_parser_printf(p,
"NODE_SPECIAL");
9156 else if (((*yyvaluep).node)) {
9157 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9163 case YYSYMBOL_undef_list:
9166 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9167 rb_parser_printf(p,
"NODE_SPECIAL");
9169 else if (((*yyvaluep).node)) {
9170 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9179 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9184 case YYSYMBOL_reswords:
9187 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9192 case YYSYMBOL_asgn_arg_rhs:
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)))));
9208 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9209 rb_parser_printf(p,
"NODE_SPECIAL");
9211 else if (((*yyvaluep).node)) {
9212 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9218 case YYSYMBOL_op_asgn_arg_rhs:
9221 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9222 rb_parser_printf(p,
"NODE_SPECIAL");
9224 else if (((*yyvaluep).node)) {
9225 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9231 case YYSYMBOL_range_expr_arg:
9234 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9235 rb_parser_printf(p,
"NODE_SPECIAL");
9237 else if (((*yyvaluep).node)) {
9238 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9244 case YYSYMBOL_def_endless_method_endless_arg:
9247 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9248 rb_parser_printf(p,
"NODE_SPECIAL");
9250 else if (((*yyvaluep).node)) {
9251 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9257 case YYSYMBOL_ternary:
9260 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9261 rb_parser_printf(p,
"NODE_SPECIAL");
9263 else if (((*yyvaluep).node)) {
9264 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9270 case YYSYMBOL_endless_arg:
9273 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9274 rb_parser_printf(p,
"NODE_SPECIAL");
9276 else if (((*yyvaluep).node)) {
9277 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9283 case YYSYMBOL_relop:
9286 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9291 case YYSYMBOL_rel_expr:
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_value_expr_arg:
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_arg_value:
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_aref_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_arg_rhs:
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_paren_args:
9359 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9360 rb_parser_printf(p,
"NODE_SPECIAL");
9362 else if (((*yyvaluep).node)) {
9363 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9369 case YYSYMBOL_opt_paren_args:
9372 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9373 rb_parser_printf(p,
"NODE_SPECIAL");
9375 else if (((*yyvaluep).node)) {
9376 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9382 case YYSYMBOL_opt_call_args:
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_value_expr_command:
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_call_args:
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)))));
9421 case YYSYMBOL_command_args:
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_block_arg:
9437 if ((NODE *)((*yyvaluep).node_block_pass) == (NODE *)-1) {
9438 rb_parser_printf(p,
"NODE_SPECIAL");
9440 else if (((*yyvaluep).node_block_pass)) {
9441 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9447 case YYSYMBOL_opt_block_arg:
9450 if ((NODE *)((*yyvaluep).node_block_pass) == (NODE *)-1) {
9451 rb_parser_printf(p,
"NODE_SPECIAL");
9453 else if (((*yyvaluep).node_block_pass)) {
9454 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
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_arg_splat:
9476 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9477 rb_parser_printf(p,
"NODE_SPECIAL");
9479 else if (((*yyvaluep).node)) {
9480 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9486 case YYSYMBOL_mrhs_arg:
9489 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9490 rb_parser_printf(p,
"NODE_SPECIAL");
9492 else if (((*yyvaluep).node)) {
9493 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9502 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9503 rb_parser_printf(p,
"NODE_SPECIAL");
9505 else if (((*yyvaluep).node)) {
9506 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9512 case YYSYMBOL_primary:
9515 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9516 rb_parser_printf(p,
"NODE_SPECIAL");
9518 else if (((*yyvaluep).node)) {
9519 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9525 case YYSYMBOL_value_expr_primary:
9528 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9529 rb_parser_printf(p,
"NODE_SPECIAL");
9531 else if (((*yyvaluep).node)) {
9532 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9538 case YYSYMBOL_primary_value:
9541 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9542 rb_parser_printf(p,
"NODE_SPECIAL");
9544 else if (((*yyvaluep).node)) {
9545 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9551 case YYSYMBOL_k_while:
9554 if ((NODE *)((*yyvaluep).node_exits) == (NODE *)-1) {
9555 rb_parser_printf(p,
"NODE_SPECIAL");
9557 else if (((*yyvaluep).node_exits)) {
9558 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9564 case YYSYMBOL_k_until:
9567 if ((NODE *)((*yyvaluep).node_exits) == (NODE *)-1) {
9568 rb_parser_printf(p,
"NODE_SPECIAL");
9570 else if (((*yyvaluep).node_exits)) {
9571 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9577 case YYSYMBOL_k_for:
9580 if ((NODE *)((*yyvaluep).node_exits) == (NODE *)-1) {
9581 rb_parser_printf(p,
"NODE_SPECIAL");
9583 else if (((*yyvaluep).node_exits)) {
9584 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9590 case YYSYMBOL_k_def:
9593 if ((NODE *)((*yyvaluep).node_def_temp) == (NODE *)-1) {
9594 rb_parser_printf(p,
"NODE_SPECIAL");
9596 else if (((*yyvaluep).node_def_temp)) {
9597 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
9606 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9611 case YYSYMBOL_if_tail:
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_opt_else:
9627 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9628 rb_parser_printf(p,
"NODE_SPECIAL");
9630 else if (((*yyvaluep).node)) {
9631 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9637 case YYSYMBOL_for_var:
9640 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9641 rb_parser_printf(p,
"NODE_SPECIAL");
9643 else if (((*yyvaluep).node)) {
9644 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9650 case YYSYMBOL_f_marg:
9653 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9654 rb_parser_printf(p,
"NODE_SPECIAL");
9656 else if (((*yyvaluep).node)) {
9657 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9663 case YYSYMBOL_mlhs_items_f_marg:
9666 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9667 rb_parser_printf(p,
"NODE_SPECIAL");
9669 else if (((*yyvaluep).node)) {
9670 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9676 case YYSYMBOL_f_margs:
9679 if ((NODE *)((*yyvaluep).node_masgn) == (NODE *)-1) {
9680 rb_parser_printf(p,
"NODE_SPECIAL");
9682 else if (((*yyvaluep).node_masgn)) {
9683 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9689 case YYSYMBOL_f_rest_marg:
9692 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9693 rb_parser_printf(p,
"NODE_SPECIAL");
9695 else if (((*yyvaluep).node)) {
9696 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9702 case YYSYMBOL_f_any_kwrest:
9705 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9710 case YYSYMBOL_f_kw_primary_value:
9713 if ((NODE *)((*yyvaluep).node_kw_arg) == (NODE *)-1) {
9714 rb_parser_printf(p,
"NODE_SPECIAL");
9716 else if (((*yyvaluep).node_kw_arg)) {
9717 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9723 case YYSYMBOL_f_kwarg_primary_value:
9726 if ((NODE *)((*yyvaluep).node_kw_arg) == (NODE *)-1) {
9727 rb_parser_printf(p,
"NODE_SPECIAL");
9729 else if (((*yyvaluep).node_kw_arg)) {
9730 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9736 case YYSYMBOL_args_tail_basic_primary_value:
9739 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
9740 rb_parser_printf(p,
"NODE_SPECIAL");
9742 else if (((*yyvaluep).node_args)) {
9743 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9749 case YYSYMBOL_block_args_tail:
9752 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
9753 rb_parser_printf(p,
"NODE_SPECIAL");
9755 else if (((*yyvaluep).node_args)) {
9756 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9762 case YYSYMBOL_excessed_comma:
9765 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9770 case YYSYMBOL_f_opt_primary_value:
9773 if ((NODE *)((*yyvaluep).node_opt_arg) == (NODE *)-1) {
9774 rb_parser_printf(p,
"NODE_SPECIAL");
9776 else if (((*yyvaluep).node_opt_arg)) {
9777 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9783 case YYSYMBOL_f_opt_arg_primary_value:
9786 if ((NODE *)((*yyvaluep).node_opt_arg) == (NODE *)-1) {
9787 rb_parser_printf(p,
"NODE_SPECIAL");
9789 else if (((*yyvaluep).node_opt_arg)) {
9790 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9796 case YYSYMBOL_opt_args_tail_block_args_tail:
9799 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
9800 rb_parser_printf(p,
"NODE_SPECIAL");
9802 else if (((*yyvaluep).node_args)) {
9803 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9809 case YYSYMBOL_block_param:
9812 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
9813 rb_parser_printf(p,
"NODE_SPECIAL");
9815 else if (((*yyvaluep).node_args)) {
9816 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9822 case YYSYMBOL_opt_block_param_def:
9825 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
9826 rb_parser_printf(p,
"NODE_SPECIAL");
9828 else if (((*yyvaluep).node_args)) {
9829 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9835 case YYSYMBOL_block_param_def:
9838 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
9839 rb_parser_printf(p,
"NODE_SPECIAL");
9841 else if (((*yyvaluep).node_args)) {
9842 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9848 case YYSYMBOL_opt_block_param:
9851 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
9852 rb_parser_printf(p,
"NODE_SPECIAL");
9854 else if (((*yyvaluep).node_args)) {
9855 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9861 case YYSYMBOL_opt_bv_decl:
9864 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9869 case YYSYMBOL_bv_decls:
9872 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9880 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9885 case YYSYMBOL_numparam:
9888 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9889 rb_parser_printf(p,
"NODE_SPECIAL");
9891 else if (((*yyvaluep).node)) {
9892 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9898 case YYSYMBOL_it_id:
9901 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9906 case YYSYMBOL_lambda:
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_f_larglist:
9922 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
9923 rb_parser_printf(p,
"NODE_SPECIAL");
9925 else if (((*yyvaluep).node_args)) {
9926 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9932 case YYSYMBOL_do_block:
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_block_call:
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_method_call:
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_brace_block:
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_brace_body:
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_do_body:
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_case_args:
10011#line 2618 "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_case_body:
10024#line 2618 "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_cases:
10037#line 2618 "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_case_body:
10050#line 2618 "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_cases:
10063#line 2618 "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_top_expr:
10076#line 2618 "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_top_expr_body:
10089#line 2618 "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_expr:
10102#line 2618 "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_as:
10115#line 2618 "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_alt:
10128#line 2618 "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_expr_basic:
10141#line 2618 "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_args:
10154#line 2618 "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_args_head:
10167#line 2618 "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_args_tail:
10180#line 2618 "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_find:
10193#line 2618 "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_rest:
10206#line 2618 "parse.y"
10208 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10209 rb_parser_printf(p,
"NODE_SPECIAL");
10211 else if (((*yyvaluep).node)) {
10212 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10215#line 10216 "parse.c"
10218 case YYSYMBOL_p_args_post:
10219#line 2618 "parse.y"
10221 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10222 rb_parser_printf(p,
"NODE_SPECIAL");
10224 else if (((*yyvaluep).node)) {
10225 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10228#line 10229 "parse.c"
10231 case YYSYMBOL_p_arg:
10232#line 2618 "parse.y"
10234 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10235 rb_parser_printf(p,
"NODE_SPECIAL");
10237 else if (((*yyvaluep).node)) {
10238 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10241#line 10242 "parse.c"
10244 case YYSYMBOL_p_kwargs:
10245#line 2618 "parse.y"
10247 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10248 rb_parser_printf(p,
"NODE_SPECIAL");
10250 else if (((*yyvaluep).node)) {
10251 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10254#line 10255 "parse.c"
10257 case YYSYMBOL_p_kwarg:
10258#line 2618 "parse.y"
10260 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10261 rb_parser_printf(p,
"NODE_SPECIAL");
10263 else if (((*yyvaluep).node)) {
10264 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10267#line 10268 "parse.c"
10270 case YYSYMBOL_p_kw:
10271#line 2618 "parse.y"
10273 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10274 rb_parser_printf(p,
"NODE_SPECIAL");
10276 else if (((*yyvaluep).node)) {
10277 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10280#line 10281 "parse.c"
10283 case YYSYMBOL_p_kw_label:
10284#line 2627 "parse.y"
10286 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10288#line 10289 "parse.c"
10291 case YYSYMBOL_p_kwrest:
10292#line 2627 "parse.y"
10294 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10296#line 10297 "parse.c"
10299 case YYSYMBOL_p_kwnorest:
10300#line 2627 "parse.y"
10302 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10304#line 10305 "parse.c"
10307 case YYSYMBOL_p_any_kwrest:
10308#line 2627 "parse.y"
10310 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10312#line 10313 "parse.c"
10315 case YYSYMBOL_p_value:
10316#line 2618 "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_range_expr_p_primitive:
10329#line 2618 "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_p_primitive:
10342#line 2618 "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_p_variable:
10355#line 2618 "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_p_var_ref:
10368#line 2618 "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_p_expr_ref:
10381#line 2618 "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_p_const:
10394#line 2618 "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_opt_rescue:
10407#line 2618 "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_exc_list:
10420#line 2618 "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_exc_var:
10433#line 2618 "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_opt_ensure:
10446#line 2618 "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_literal:
10459#line 2618 "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_strings:
10472#line 2618 "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_string:
10485#line 2618 "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_string1:
10498#line 2618 "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_xstring:
10511#line 2618 "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_regexp:
10524#line 2618 "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_words_tWORDS_BEG_word_list:
10537#line 2618 "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:
10550#line 2618 "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_word_list:
10563#line 2618 "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_word:
10576#line 2618 "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_words_tSYMBOLS_BEG_symbol_list:
10589#line 2618 "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_symbols:
10602#line 2618 "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_symbol_list:
10615#line 2618 "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_words_tQWORDS_BEG_qword_list:
10628#line 2618 "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_qwords:
10641#line 2618 "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_words_tQSYMBOLS_BEG_qsym_list:
10654#line 2618 "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_qsymbols:
10667#line 2618 "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_qword_list:
10680#line 2618 "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_qsym_list:
10693#line 2618 "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_string_contents:
10706#line 2618 "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"
10718 case YYSYMBOL_xstring_contents:
10719#line 2618 "parse.y"
10721 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10722 rb_parser_printf(p,
"NODE_SPECIAL");
10724 else if (((*yyvaluep).node)) {
10725 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10728#line 10729 "parse.c"
10731 case YYSYMBOL_regexp_contents:
10732#line 2618 "parse.y"
10734 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10735 rb_parser_printf(p,
"NODE_SPECIAL");
10737 else if (((*yyvaluep).node)) {
10738 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10741#line 10742 "parse.c"
10744 case YYSYMBOL_string_content:
10745#line 2618 "parse.y"
10747 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10748 rb_parser_printf(p,
"NODE_SPECIAL");
10750 else if (((*yyvaluep).node)) {
10751 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10754#line 10755 "parse.c"
10757 case YYSYMBOL_string_dvar:
10758#line 2618 "parse.y"
10760 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10761 rb_parser_printf(p,
"NODE_SPECIAL");
10763 else if (((*yyvaluep).node)) {
10764 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10767#line 10768 "parse.c"
10770 case YYSYMBOL_symbol:
10771#line 2618 "parse.y"
10773 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10774 rb_parser_printf(p,
"NODE_SPECIAL");
10776 else if (((*yyvaluep).node)) {
10777 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10780#line 10781 "parse.c"
10783 case YYSYMBOL_ssym:
10784#line 2618 "parse.y"
10786 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10787 rb_parser_printf(p,
"NODE_SPECIAL");
10789 else if (((*yyvaluep).node)) {
10790 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10793#line 10794 "parse.c"
10797#line 2627 "parse.y"
10799 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10801#line 10802 "parse.c"
10804 case YYSYMBOL_dsym:
10805#line 2618 "parse.y"
10807 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10808 rb_parser_printf(p,
"NODE_SPECIAL");
10810 else if (((*yyvaluep).node)) {
10811 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10814#line 10815 "parse.c"
10817 case YYSYMBOL_numeric:
10818#line 2618 "parse.y"
10820 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10821 rb_parser_printf(p,
"NODE_SPECIAL");
10823 else if (((*yyvaluep).node)) {
10824 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10827#line 10828 "parse.c"
10830 case YYSYMBOL_simple_numeric:
10831#line 2618 "parse.y"
10833 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10834 rb_parser_printf(p,
"NODE_SPECIAL");
10836 else if (((*yyvaluep).node)) {
10837 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10840#line 10841 "parse.c"
10843 case YYSYMBOL_nonlocal_var:
10844#line 2627 "parse.y"
10846 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10848#line 10849 "parse.c"
10851 case YYSYMBOL_user_variable:
10852#line 2627 "parse.y"
10854 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10856#line 10857 "parse.c"
10859 case YYSYMBOL_keyword_variable:
10860#line 2627 "parse.y"
10862 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10864#line 10865 "parse.c"
10867 case YYSYMBOL_var_ref:
10868#line 2618 "parse.y"
10870 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10871 rb_parser_printf(p,
"NODE_SPECIAL");
10873 else if (((*yyvaluep).node)) {
10874 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10877#line 10878 "parse.c"
10880 case YYSYMBOL_var_lhs:
10881#line 2618 "parse.y"
10883 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10884 rb_parser_printf(p,
"NODE_SPECIAL");
10886 else if (((*yyvaluep).node)) {
10887 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10890#line 10891 "parse.c"
10893 case YYSYMBOL_backref:
10894#line 2618 "parse.y"
10896 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10897 rb_parser_printf(p,
"NODE_SPECIAL");
10899 else if (((*yyvaluep).node)) {
10900 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10903#line 10904 "parse.c"
10906 case YYSYMBOL_superclass:
10907#line 2618 "parse.y"
10909 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10910 rb_parser_printf(p,
"NODE_SPECIAL");
10912 else if (((*yyvaluep).node)) {
10913 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10916#line 10917 "parse.c"
10919 case YYSYMBOL_f_opt_paren_args:
10920#line 2618 "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_paren_args:
10933#line 2618 "parse.y"
10935 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
10936 rb_parser_printf(p,
"NODE_SPECIAL");
10938 else if (((*yyvaluep).node_args)) {
10939 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10942#line 10943 "parse.c"
10945 case YYSYMBOL_f_arglist:
10946#line 2618 "parse.y"
10948 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
10949 rb_parser_printf(p,
"NODE_SPECIAL");
10951 else if (((*yyvaluep).node_args)) {
10952 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10955#line 10956 "parse.c"
10958 case YYSYMBOL_f_kw_arg_value:
10959#line 2618 "parse.y"
10961 if ((NODE *)((*yyvaluep).node_kw_arg) == (NODE *)-1) {
10962 rb_parser_printf(p,
"NODE_SPECIAL");
10964 else if (((*yyvaluep).node_kw_arg)) {
10965 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
10968#line 10969 "parse.c"
10971 case YYSYMBOL_f_kwarg_arg_value:
10972#line 2618 "parse.y"
10974 if ((NODE *)((*yyvaluep).node_kw_arg) == (NODE *)-1) {
10975 rb_parser_printf(p,
"NODE_SPECIAL");
10977 else if (((*yyvaluep).node_kw_arg)) {
10978 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
10981#line 10982 "parse.c"
10984 case YYSYMBOL_args_tail_basic_arg_value:
10985#line 2618 "parse.y"
10987 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
10988 rb_parser_printf(p,
"NODE_SPECIAL");
10990 else if (((*yyvaluep).node_args)) {
10991 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10994#line 10995 "parse.c"
10997 case YYSYMBOL_args_tail:
10998#line 2618 "parse.y"
11000 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
11001 rb_parser_printf(p,
"NODE_SPECIAL");
11003 else if (((*yyvaluep).node_args)) {
11004 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11007#line 11008 "parse.c"
11010 case YYSYMBOL_f_opt_arg_value:
11011#line 2618 "parse.y"
11013 if ((NODE *)((*yyvaluep).node_opt_arg) == (NODE *)-1) {
11014 rb_parser_printf(p,
"NODE_SPECIAL");
11016 else if (((*yyvaluep).node_opt_arg)) {
11017 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
11020#line 11021 "parse.c"
11023 case YYSYMBOL_f_opt_arg_arg_value:
11024#line 2618 "parse.y"
11026 if ((NODE *)((*yyvaluep).node_opt_arg) == (NODE *)-1) {
11027 rb_parser_printf(p,
"NODE_SPECIAL");
11029 else if (((*yyvaluep).node_opt_arg)) {
11030 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
11033#line 11034 "parse.c"
11036 case YYSYMBOL_opt_args_tail_args_tail:
11037#line 2618 "parse.y"
11039 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
11040 rb_parser_printf(p,
"NODE_SPECIAL");
11042 else if (((*yyvaluep).node_args)) {
11043 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11046#line 11047 "parse.c"
11049 case YYSYMBOL_f_args:
11050#line 2618 "parse.y"
11052 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
11053 rb_parser_printf(p,
"NODE_SPECIAL");
11055 else if (((*yyvaluep).node_args)) {
11056 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
11059#line 11060 "parse.c"
11062 case YYSYMBOL_args_forward:
11063#line 2627 "parse.y"
11065 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11067#line 11068 "parse.c"
11070 case YYSYMBOL_f_bad_arg:
11071#line 2627 "parse.y"
11073 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11075#line 11076 "parse.c"
11078 case YYSYMBOL_f_norm_arg:
11079#line 2627 "parse.y"
11081 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11083#line 11084 "parse.c"
11086 case YYSYMBOL_f_arg_asgn:
11087#line 2627 "parse.y"
11089 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11091#line 11092 "parse.c"
11094 case YYSYMBOL_f_arg_item:
11095#line 2618 "parse.y"
11097 if ((NODE *)((*yyvaluep).node_args_aux) == (NODE *)-1) {
11098 rb_parser_printf(p,
"NODE_SPECIAL");
11100 else if (((*yyvaluep).node_args_aux)) {
11101 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11104#line 11105 "parse.c"
11107 case YYSYMBOL_f_arg:
11108#line 2618 "parse.y"
11110 if ((NODE *)((*yyvaluep).node_args_aux) == (NODE *)-1) {
11111 rb_parser_printf(p,
"NODE_SPECIAL");
11113 else if (((*yyvaluep).node_args_aux)) {
11114 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
11117#line 11118 "parse.c"
11120 case YYSYMBOL_f_label:
11121#line 2627 "parse.y"
11123 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11125#line 11126 "parse.c"
11128 case YYSYMBOL_f_no_kwarg:
11129#line 2627 "parse.y"
11131 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11133#line 11134 "parse.c"
11136 case YYSYMBOL_f_kwrest:
11137#line 2627 "parse.y"
11139 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11141#line 11142 "parse.c"
11144 case YYSYMBOL_f_rest_arg:
11145#line 2627 "parse.y"
11147 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11149#line 11150 "parse.c"
11152 case YYSYMBOL_f_block_arg:
11153#line 2627 "parse.y"
11155 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11157#line 11158 "parse.c"
11160 case YYSYMBOL_opt_f_block_arg:
11161#line 2627 "parse.y"
11163 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11165#line 11166 "parse.c"
11168 case YYSYMBOL_value_expr_singleton_expr:
11169#line 2618 "parse.y"
11171 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
11172 rb_parser_printf(p,
"NODE_SPECIAL");
11174 else if (((*yyvaluep).node)) {
11175 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11178#line 11179 "parse.c"
11181 case YYSYMBOL_singleton:
11182#line 2618 "parse.y"
11184 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
11185 rb_parser_printf(p,
"NODE_SPECIAL");
11187 else if (((*yyvaluep).node)) {
11188 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11191#line 11192 "parse.c"
11194 case YYSYMBOL_singleton_expr:
11195#line 2618 "parse.y"
11197 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
11198 rb_parser_printf(p,
"NODE_SPECIAL");
11200 else if (((*yyvaluep).node)) {
11201 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11204#line 11205 "parse.c"
11207 case YYSYMBOL_assoc_list:
11208#line 2618 "parse.y"
11210 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
11211 rb_parser_printf(p,
"NODE_SPECIAL");
11213 else if (((*yyvaluep).node)) {
11214 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11217#line 11218 "parse.c"
11220 case YYSYMBOL_assocs:
11221#line 2618 "parse.y"
11223 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
11224 rb_parser_printf(p,
"NODE_SPECIAL");
11226 else if (((*yyvaluep).node)) {
11227 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11230#line 11231 "parse.c"
11233 case YYSYMBOL_assoc:
11234#line 2618 "parse.y"
11236 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
11237 rb_parser_printf(p,
"NODE_SPECIAL");
11239 else if (((*yyvaluep).node)) {
11240 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11243#line 11244 "parse.c"
11246 case YYSYMBOL_operation2:
11247#line 2627 "parse.y"
11249 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11251#line 11252 "parse.c"
11254 case YYSYMBOL_operation3:
11255#line 2627 "parse.y"
11257 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11259#line 11260 "parse.c"
11262 case YYSYMBOL_dot_or_colon:
11263#line 2627 "parse.y"
11265 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11267#line 11268 "parse.c"
11270 case YYSYMBOL_call_op:
11271#line 2627 "parse.y"
11273 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11275#line 11276 "parse.c"
11278 case YYSYMBOL_call_op2:
11279#line 2627 "parse.y"
11281 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
11283#line 11284 "parse.c"
11286 case YYSYMBOL_none:
11287#line 2618 "parse.y"
11289 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
11290 rb_parser_printf(p,
"NODE_SPECIAL");
11292 else if (((*yyvaluep).node)) {
11293 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
11296#line 11297 "parse.c"
11302 YY_IGNORE_MAYBE_UNINITIALIZED_END
11311yy_symbol_print (FILE *yyo,
11312 yysymbol_kind_t yykind,
YYSTYPE const *
const yyvaluep, YYLTYPE
const *
const yylocationp,
struct parser_params *p)
11314 YYFPRINTF (yyo,
"%s %s (",
11315 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
11317 YYLOCATION_PRINT (yyo, yylocationp, p);
11318 YYFPRINTF (yyo,
": ");
11319 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
11320 YYFPRINTF (yyo,
")");
11329yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop,
struct parser_params *p)
11331 YYFPRINTF (stderr,
"Stack now");
11332 for (; yybottom <= yytop; yybottom++)
11334 int yybot = *yybottom;
11335 YYFPRINTF (stderr,
" %d", yybot);
11337 YYFPRINTF (stderr,
"\n");
11340# define YY_STACK_PRINT(Bottom, Top, p) \
11343 yy_stack_print ((Bottom), (Top), p); \
11352yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp, YYLTYPE *yylsp,
11355 int yylno = yyrline[yyrule];
11356 int yynrhs = yyr2[yyrule];
11358 YYFPRINTF (stderr,
"Reducing stack by rule %d (line %d):\n",
11359 yyrule - 1, yylno);
11361 for (yyi = 0; yyi < yynrhs; yyi++)
11363 YYFPRINTF (stderr,
" $%d = ", yyi + 1);
11364 yy_symbol_print (stderr,
11365 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
11366 &yyvsp[(yyi + 1) - (yynrhs)],
11367 &(yylsp[(yyi + 1) - (yynrhs)]), p);
11368 YYFPRINTF (stderr,
"\n");
11372# define YY_REDUCE_PRINT(Rule, p) \
11375 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
11384# define YYDPRINTF(Args) ((void) 0)
11385# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p)
11386# define YY_STACK_PRINT(Bottom, Top, p)
11387# define YY_REDUCE_PRINT(Rule, p)
11393# define YYINITDEPTH 200
11404# define YYMAXDEPTH 10000
11412 yysymbol_kind_t yytoken;
11424 yysymbol_kind_t yyarg[],
int yyargn)
11428 int yyn = yypact[+*yyctx->yyssp];
11429 if (!yypact_value_is_default (yyn))
11434 int yyxbegin = yyn < 0 ? -yyn : 0;
11436 int yychecklim = YYLAST - yyn + 1;
11437 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
11439 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
11440 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
11441 && !yytable_value_is_error (yytable[yyx + yyn]))
11445 else if (yycount == yyargn)
11448 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
11451 if (yyarg && yycount == 0 && 0 < yyargn)
11452 yyarg[0] = YYSYMBOL_YYEMPTY;
11460# if defined __GLIBC__ && defined _STRING_H
11461# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
11465yystrlen (
const char *yystr)
11468 for (yylen = 0; yystr[yylen]; yylen++)
11476# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
11477# define yystpcpy stpcpy
11482yystpcpy (
char *yydest,
const char *yysrc)
11484 char *yyd = yydest;
11485 const char *yys = yysrc;
11487 while ((*yyd++ = *yys++) !=
'\0')
11504yytnamerr (
char *yyres,
const char *yystr)
11508 YYPTRDIFF_T yyn = 0;
11509 char const *yyp = yystr;
11515 goto do_not_strip_quotes;
11518 if (*++yyp !=
'\\')
11519 goto do_not_strip_quotes;
11535 do_not_strip_quotes: ;
11539 return yystpcpy (yyres, yystr) - yyres;
11541 return yystrlen (yystr);
11548 yysymbol_kind_t yyarg[],
int yyargn)
11575 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
11579 yyarg[yycount] = yyctx->yytoken;
11581 yyn = yypcontext_expected_tokens (yyctx,
11582 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
11583 if (yyn == YYENOMEM)
11600yysyntax_error (YYPTRDIFF_T *yymsg_alloc,
char **yymsg,
11603 enum { YYARGS_MAX = 5 };
11605 const char *yyformat = YY_NULLPTR;
11608 yysymbol_kind_t yyarg[YYARGS_MAX];
11610 YYPTRDIFF_T yysize = 0;
11613 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
11614 if (yycount == YYENOMEM)
11619#define YYCASE_(N, S) \
11624 YYCASE_(0, YY_(
"syntax error"));
11625 YYCASE_(1, YY_(
"syntax error, unexpected %s"));
11626 YYCASE_(2, YY_(
"syntax error, unexpected %s, expecting %s"));
11627 YYCASE_(3, YY_(
"syntax error, unexpected %s, expecting %s or %s"));
11628 YYCASE_(4, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
11629 YYCASE_(5, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
11635 yysize = yystrlen (yyformat) - 2 * yycount + 1;
11638 for (yyi = 0; yyi < yycount; ++yyi)
11640 YYPTRDIFF_T yysize1
11641 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
11642 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
11649 if (*yymsg_alloc < yysize)
11651 *yymsg_alloc = 2 * yysize;
11652 if (! (yysize <= *yymsg_alloc
11653 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
11654 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
11662 char *yyp = *yymsg;
11664 while ((*yyp = *yyformat) !=
'\0')
11665 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
11667 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
11685yydestruct (
const char *yymsg,
11689 YY_USE (yylocationp);
11692 yymsg =
"Deleting";
11693 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp, p);
11695 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
11698 case YYSYMBOL_258_16:
11699#line 2655 "parse.y"
11701 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11703#line 11704 "parse.c"
11706 case YYSYMBOL_259_17:
11707#line 2655 "parse.y"
11709 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11711#line 11712 "parse.c"
11717 YY_IGNORE_MAYBE_UNINITIALIZED_END
11740static const YYSTYPE yyval_default = {};
11741(void) yyval_default;
11743YY_INITIAL_VALUE (
static const YYSTYPE yyval_default;)
11745YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
11748static const YYLTYPE yyloc_default
11749# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
11753YYLTYPE yylloc = yyloc_default;
11759 yy_state_fast_t yystate = 0;
11761 int yyerrstatus = 0;
11767 YYPTRDIFF_T yystacksize = YYINITDEPTH;
11770 yy_state_t yyssa[YYINITDEPTH];
11771 yy_state_t *yyss = yyssa;
11772 yy_state_t *yyssp = yyss;
11780 YYLTYPE yylsa[YYINITDEPTH];
11781 YYLTYPE *yyls = yylsa;
11782 YYLTYPE *yylsp = yyls;
11788 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
11795 YYLTYPE yyerror_range[3];
11798 char yymsgbuf[128];
11799 char *yymsg = yymsgbuf;
11800 YYPTRDIFF_T yymsg_alloc =
sizeof yymsgbuf;
11802#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
11808 YYDPRINTF ((stderr,
"Starting parse\n"));
11814#line 2662 "parse.y"
11816 RUBY_SET_YYLLOC_OF_NONE(yylloc);
11819#line 11820 "parse.c"
11838 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
11839 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
11840 YY_IGNORE_USELESS_CAST_BEGIN
11841 *yyssp = YY_CAST (yy_state_t, yystate);
11842 YY_IGNORE_USELESS_CAST_END
11843 YY_STACK_PRINT (yyss, yyssp, p);
11845 if (yyss + yystacksize - 1 <= yyssp)
11846#if !defined yyoverflow && !defined YYSTACK_RELOCATE
11851 YYPTRDIFF_T yysize = yyssp - yyss + 1;
11853# if defined yyoverflow
11858 yy_state_t *yyss1 = yyss;
11860 YYLTYPE *yyls1 = yyls;
11866 yyoverflow (YY_(
"memory exhausted"),
11867 &yyss1, yysize * YYSIZEOF (*yyssp),
11868 &yyvs1, yysize * YYSIZEOF (*yyvsp),
11869 &yyls1, yysize * YYSIZEOF (*yylsp),
11877 if (YYMAXDEPTH <= yystacksize)
11880 if (YYMAXDEPTH < yystacksize)
11881 yystacksize = YYMAXDEPTH;
11884 yy_state_t *yyss1 = yyss;
11885 union yyalloc *yyptr =
11886 YY_CAST (
union yyalloc *,
11887 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
11890 YYSTACK_RELOCATE (yyss_alloc, yyss);
11891 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
11892 YYSTACK_RELOCATE (yyls_alloc, yyls);
11893# undef YYSTACK_RELOCATE
11894 if (yyss1 != yyssa)
11895 YYSTACK_FREE (yyss1);
11899 yyssp = yyss + yysize - 1;
11900 yyvsp = yyvs + yysize - 1;
11901 yylsp = yyls + yysize - 1;
11903 YY_IGNORE_USELESS_CAST_BEGIN
11904 YYDPRINTF ((stderr,
"Stack size increased to %ld\n",
11905 YY_CAST (
long, yystacksize)));
11906 YY_IGNORE_USELESS_CAST_END
11908 if (yyss + yystacksize - 1 <= yyssp)
11914 if (yystate == YYFINAL)
11928 yyn = yypact[yystate];
11929 if (yypact_value_is_default (yyn))
11935 if (yychar == YYEMPTY)
11937 YYDPRINTF ((stderr,
"Reading a token\n"));
11938 yychar = yylex (&yylval, &yylloc, p);
11941 if (yychar <= END_OF_INPUT)
11943 yychar = END_OF_INPUT;
11944 yytoken = YYSYMBOL_YYEOF;
11945 YYDPRINTF ((stderr,
"Now at end of input.\n"));
11947 else if (yychar == YYerror)
11954 yytoken = YYSYMBOL_YYerror;
11955 yyerror_range[1] = yylloc;
11960 yytoken = YYTRANSLATE (yychar);
11961 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc, p);
11967 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
11969 yyn = yytable[yyn];
11972 if (yytable_value_is_error (yyn))
11984 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc, p);
11986 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
11988 YY_IGNORE_MAYBE_UNINITIALIZED_END
11991#line 2665 "parse.y"
11993#line 11994 "parse.c"
12005 yyn = yydefact[yystate];
12026 yyval = yyvsp[1-yylen];
12028#line 2666 "parse.y"
12029 {before_reduce(yylen, p);}
12030#line 12031 "parse.c"
12034 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
12035 yyerror_range[1] = yyloc;
12036 YY_REDUCE_PRINT (yyn, p);
12040#line 3161 "parse.y"
12042 SET_LEX_STATE(EXPR_BEG);
12043 local_push(p, ifndef_ripper(1)+0);
12045 if (!ifndef_ripper(p->do_loop) + 0) init_block_exit(p);
12047#line 12048 "parse.c"
12051#line 2976 "parse.y"
12053 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
12055#line 12056 "parse.c"
12059#line 3168 "parse.y"
12061 if ((yyvsp[0].node) && !compile_for_eval) {
12062 NODE *node = (yyvsp[0].node);
12064 if (nd_type_p(node, NODE_BLOCK)) {
12065 while (RNODE_BLOCK(node)->nd_next) {
12066 node = RNODE_BLOCK(node)->nd_next;
12068 node = RNODE_BLOCK(node)->nd_head;
12070 node = remove_begin(node);
12071 void_expr(p, node);
12073 p->eval_tree = NEW_SCOPE(0, block_append(p, p->eval_tree, (yyvsp[0].node)), NULL, &(yyloc));
12077#line 12078 "parse.c"
12081#line 3188 "parse.y"
12083 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12086#line 12087 "parse.c"
12090#line 3193 "parse.y"
12092 (yyval.node) = newline_node((yyvsp[0].node));
12095#line 12096 "parse.c"
12099#line 3198 "parse.y"
12101 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12104#line 12105 "parse.c"
12108#line 3205 "parse.y"
12110 clear_block_exit(p,
true);
12111 (yyval.node) = (yyvsp[0].node);
12113#line 12114 "parse.c"
12117#line 3210 "parse.y"
12119 (yyval.node) = (yyvsp[0].node);
12122#line 12123 "parse.c"
12126#line 3216 "parse.y"
12127 {(yyval.node_exits) = init_block_exit(p);}
12128#line 12129 "parse.c"
12132#line 3219 "parse.y"
12134 restore_block_exit(p, (yyvsp[-2].node_exits));
12135 p->eval_tree_begin = block_append(p, p->eval_tree_begin,
12136 NEW_BEGIN((yyvsp[-1].node), &(yyloc)));
12137 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12140#line 12141 "parse.c"
12144#line 2976 "parse.y"
12146 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
12148#line 12149 "parse.c"
12152#line 3232 "parse.y"
12154 if (!(yyvsp[-1].node)) yyerror1(&(yylsp[0]),
"else without rescue is useless");
12155 next_rescue_context(&p->ctxt, &(yyvsp[-2].ctxt), after_else);
12157#line 12158 "parse.c"
12161#line 3237 "parse.y"
12163 next_rescue_context(&p->ctxt, &(yyvsp[-4].ctxt), after_ensure);
12165#line 12166 "parse.c"
12169#line 3241 "parse.y"
12171 (yyval.node) = new_bodystmt(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12174#line 12175 "parse.c"
12178#line 3248 "parse.y"
12180 next_rescue_context(&p->ctxt, &(yyvsp[-1].ctxt), after_ensure);
12182#line 12183 "parse.c"
12186#line 3252 "parse.y"
12188 (yyval.node) = new_bodystmt(p, (yyvsp[-4].node), (yyvsp[-2].node), 0, (yyvsp[0].node), &(yyloc));
12191#line 12192 "parse.c"
12195#line 3259 "parse.y"
12197 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12200#line 12201 "parse.c"
12204#line 3264 "parse.y"
12206 (yyval.node) = newline_node((yyvsp[0].node));
12209#line 12210 "parse.c"
12213#line 3269 "parse.y"
12215 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
12218#line 12219 "parse.c"
12222#line 3277 "parse.y"
12224 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
12226#line 12227 "parse.c"
12230#line 3281 "parse.y"
12232 (yyval.node) = (yyvsp[0].node);
12234#line 12235 "parse.c"
12238#line 3286 "parse.y"
12239 {(yyval.node_exits) = allow_block_exit(p);}
12240#line 12241 "parse.c"
12244#line 3289 "parse.y"
12246 (yyval.ctxt) = (yyvsp[0].ctxt);
12247 p->ctxt.in_rescue = before_rescue;
12250#line 12251 "parse.c"
12254#line 3295 "parse.y"
12255 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
12256#line 12257 "parse.c"
12260#line 3296 "parse.y"
12262 (yyval.node) = NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
12265#line 12266 "parse.c"
12269#line 3301 "parse.y"
12271 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc), &(yylsp[-2]));
12274#line 12275 "parse.c"
12278#line 3306 "parse.y"
12282 buf[1] = (char)RNODE_BACK_REF((yyvsp[0].node))->nd_nth;
12283 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), rb_intern2(buf, 2), &(yyloc), &(yylsp[-2]));
12286#line 12287 "parse.c"
12290#line 3314 "parse.y"
12292 static const char mesg[] =
"can't make alias for the number variables";
12294 yyerror1(&(yylsp[0]), mesg);
12296 (yyval.node) = NEW_ERROR(&(yyloc));
12299#line 12300 "parse.c"
12303#line 3323 "parse.y"
12305 nd_set_first_loc((yyvsp[0].node), (yylsp[-1]).beg_pos);
12306 RNODE_UNDEF((yyvsp[0].node))->keyword_loc = (yylsp[-1]);
12307 (yyval.node) = (yyvsp[0].node);
12310#line 12311 "parse.c"
12314#line 3330 "parse.y"
12316 (yyval.node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12317 fixpos((yyval.node), (yyvsp[0].node));
12320#line 12321 "parse.c"
12324#line 3336 "parse.y"
12326 (yyval.node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12327 fixpos((yyval.node), (yyvsp[0].node));
12330#line 12331 "parse.c"
12334#line 3342 "parse.y"
12336 clear_block_exit(p,
false);
12337 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12338 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12341 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12345#line 12346 "parse.c"
12349#line 3353 "parse.y"
12351 clear_block_exit(p,
false);
12352 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
12353 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12356 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
12360#line 12361 "parse.c"
12364#line 3364 "parse.y"
12366 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12368 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12369 resq = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12370 (yyval.node) = NEW_RESCUE(remove_begin((yyvsp[-3].node)), resq, 0, &(yyloc));
12373#line 12374 "parse.c"
12377#line 3373 "parse.y"
12379 if (p->ctxt.in_def) {
12380 rb_warn0(
"END in method; use at_exit");
12382 restore_block_exit(p, (yyvsp[-3].node_exits));
12383 p->ctxt = (yyvsp[-4].ctxt);
12385 NODE *scope = NEW_SCOPE2(0 , 0 , (yyvsp[-1].node) , NULL , &(yyloc));
12386 (yyval.node) = NEW_POSTEXE(scope, &(yyloc), &(yylsp[-4]), &(yylsp[-2]), &(yylsp[0]));
12387 RNODE_SCOPE(scope)->nd_parent = (yyval.node);
12391#line 12392 "parse.c"
12395#line 3388 "parse.y"
12397 (yyval.node) = node_assign(p, (NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12400#line 12401 "parse.c"
12404#line 2920 "parse.y"
12406 (yyval.node) = node_assign(p, (NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12409#line 12410 "parse.c"
12413#line 3395 "parse.y"
12415 p->ctxt.in_rescue = (yyvsp[-4].ctxt).in_rescue;
12416 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12417 (yyvsp[0].node) = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
12418 loc.beg_pos = (yylsp[-3]).beg_pos;
12419 (yyvsp[-3].node) = NEW_RESCUE((yyvsp[-3].node), (yyvsp[0].node), 0, &loc);
12420 (yyval.node) = node_assign(p, (NODE *)(yyvsp[-6].node_masgn), (yyvsp[-3].node), (yyvsp[-4].ctxt), &(yyloc));
12423#line 12424 "parse.c"
12427#line 3405 "parse.y"
12429 (yyval.node) = node_assign(p, (NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12432#line 12433 "parse.c"
12436#line 3411 "parse.y"
12439 (yyval.node) = NEW_ERROR(&(yyloc));
12441#line 12442 "parse.c"
12445#line 2920 "parse.y"
12447 (yyval.node) = node_assign(p, (NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12450#line 12451 "parse.c"
12454#line 3046 "parse.y"
12456 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12459#line 12460 "parse.c"
12463#line 3051 "parse.y"
12465 (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]));
12468#line 12469 "parse.c"
12472#line 3056 "parse.y"
12474 (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]));
12477#line 12478 "parse.c"
12481#line 3061 "parse.y"
12483 (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]));
12486#line 12487 "parse.c"
12490#line 3066 "parse.y"
12492 (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]));
12495#line 12496 "parse.c"
12499#line 3071 "parse.y"
12501 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
12502 (yyval.node) = new_const_op_assign(p, NEW_COLON2((yyvsp[-5].node), (yyvsp[-3].
id), &loc, &(yylsp[-4]), &(yylsp[-3])), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12505#line 12506 "parse.c"
12509#line 3077 "parse.y"
12511 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
12512 (yyval.node) = new_const_op_assign(p, NEW_COLON3((yyvsp[-3].
id), &loc, &(yylsp[-4]), &(yylsp[-3])), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12515#line 12516 "parse.c"
12519#line 3083 "parse.y"
12521 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
12522 (yyval.node) = NEW_ERROR(&(yyloc));
12525#line 12526 "parse.c"
12529#line 2951 "parse.y"
12531 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12532 restore_defun(p, (yyvsp[-3].node_def_temp));
12533 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12534 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
12535 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
12540#line 12541 "parse.c"
12544#line 2962 "parse.y"
12546 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12547 restore_defun(p, (yyvsp[-3].node_def_temp));
12548 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12549 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
12550 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
12555#line 12556 "parse.c"
12559#line 3424 "parse.y"
12561 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12562 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12565#line 12566 "parse.c"
12569#line 3430 "parse.y"
12571 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12574#line 12575 "parse.c"
12578#line 3438 "parse.y"
12580 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12581 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12582 (yyval.node) = NEW_RESCUE((yyvsp[-3].node), NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc));
12585#line 12586 "parse.c"
12589#line 3449 "parse.y"
12591 (yyval.node) = logop(p, idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12594#line 12595 "parse.c"
12598#line 3454 "parse.y"
12600 (yyval.node) = logop(p, idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12603#line 12604 "parse.c"
12607#line 3459 "parse.y"
12609 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12612#line 12613 "parse.c"
12616#line 3464 "parse.y"
12618 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
12621#line 12622 "parse.c"
12625#line 3469 "parse.y"
12627 value_expr(p, (yyvsp[-1].node));
12629#line 12630 "parse.c"
12633#line 3474 "parse.y"
12635 pop_pktbl(p, (yyvsp[-1].tbl));
12636 pop_pvtbl(p, (yyvsp[-2].tbl));
12637 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12638 p->ctxt.in_alt_pattern = (yyvsp[-3].ctxt).in_alt_pattern;
12639 p->ctxt.capture_in_pattern = (yyvsp[-3].ctxt).capture_in_pattern;
12640 (yyval.node) = NEW_CASE3((yyvsp[-6].node), NEW_IN((yyvsp[0].node), 0, 0, &(yylsp[0]), &NULL_LOC, &NULL_LOC, &(yylsp[-5])), &(yyloc), &NULL_LOC, &NULL_LOC);
12643#line 12644 "parse.c"
12647#line 3484 "parse.y"
12649 value_expr(p, (yyvsp[-1].node));
12651#line 12652 "parse.c"
12655#line 3489 "parse.y"
12657 pop_pktbl(p, (yyvsp[-1].tbl));
12658 pop_pvtbl(p, (yyvsp[-2].tbl));
12659 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12660 p->ctxt.in_alt_pattern = (yyvsp[-3].ctxt).in_alt_pattern;
12661 p->ctxt.capture_in_pattern = (yyvsp[-3].ctxt).capture_in_pattern;
12662 (yyval.node) = NEW_CASE3((yyvsp[-6].node), NEW_IN((yyvsp[0].node), NEW_TRUE(&(yylsp[0])), NEW_FALSE(&(yylsp[0])), &(yylsp[0]), &(yylsp[-5]), &NULL_LOC, &NULL_LOC), &(yyloc), &NULL_LOC, &NULL_LOC);
12665#line 12666 "parse.c"
12669#line 3502 "parse.y"
12671 numparam_name(p, (yyvsp[0].
id));
12673 p->ctxt.in_def = 1;
12674 p->ctxt.in_rescue = before_rescue;
12675 p->ctxt.cant_return = 0;
12676 (yyval.id) = (yyvsp[0].
id);
12678#line 12679 "parse.c"
12682#line 3513 "parse.y"
12684 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-1].node_def_temp));
12685 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12686 (yyval.node_def_temp)->nd_def = NEW_DEFN((yyvsp[0].
id), 0, &(yyloc));
12689#line 12690 "parse.c"
12693#line 3522 "parse.y"
12695 SET_LEX_STATE(EXPR_FNAME);
12697#line 12698 "parse.c"
12701#line 3526 "parse.y"
12703 SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL);
12704 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-4].node_def_temp));
12705 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12706 (yyval.node_def_temp)->nd_def = NEW_DEFS((yyvsp[-3].node), (yyvsp[0].
id), 0, &(yyloc));
12709#line 12710 "parse.c"
12713#line 3146 "parse.y"
12715 value_expr(p, (yyvsp[0].node));
12716 (yyval.node) = (yyvsp[0].node);
12718#line 12719 "parse.c"
12722#line 3537 "parse.y"
12724 (yyval.node) = NEW_ERROR(&(yyloc));
12726#line 12727 "parse.c"
12730#line 3542 "parse.y"
12732#line 12733 "parse.c"
12736#line 3542 "parse.y"
12738#line 12739 "parse.c"
12742#line 3543 "parse.y"
12744 (yyval.node) = (yyvsp[-2].node);
12747#line 12748 "parse.c"
12751#line 3146 "parse.y"
12753 value_expr(p, (yyvsp[0].node));
12754 (yyval.node) = (yyvsp[0].node);
12756#line 12757 "parse.c"
12760#line 3558 "parse.y"
12762 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12765#line 12766 "parse.c"
12769#line 3565 "parse.y"
12771 (yyval.node) = (yyvsp[-1].node);
12772 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
12775#line 12776 "parse.c"
12779#line 3573 "parse.y"
12781 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
12784#line 12785 "parse.c"
12788#line 3573 "parse.y"
12790 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
12793#line 12794 "parse.c"
12797#line 3573 "parse.y"
12799 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
12802#line 12803 "parse.c"
12806#line 3580 "parse.y"
12808 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
12809 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
12810 (yyval.node) = (NODE *)(yyvsp[-1].node_fcall);
12813#line 12814 "parse.c"
12817#line 3587 "parse.y"
12819 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
12820 (yyvsp[-2].node_fcall)->nd_args = (yyvsp[-1].node);
12821 (yyval.node) = method_add_block(p, (NODE *)(yyvsp[-2].node_fcall), (yyvsp[0].node), &(yyloc));
12822 fixpos((yyval.node), RNODE((yyvsp[-2].node_fcall)));
12823 nd_set_last_loc((yyvsp[-2].node_fcall), (yylsp[-1]).end_pos);
12826#line 12827 "parse.c"
12830#line 3596 "parse.y"
12832 (yyval.node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
12835#line 12836 "parse.c"
12839#line 3601 "parse.y"
12841 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
12844#line 12845 "parse.c"
12848#line 3606 "parse.y"
12850 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
12853#line 12854 "parse.c"
12857#line 3611 "parse.y"
12859 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
12862#line 12863 "parse.c"
12866#line 3616 "parse.y"
12868 set_embraced_location((yyvsp[-1].node), &(yylsp[-2]), &(yylsp[0]));
12869 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-5].node), (yyvsp[-3].
id), 0, (yyvsp[-1].node), &(yylsp[-3]), &(yyloc));
12872#line 12873 "parse.c"
12876#line 3622 "parse.y"
12878 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12879 fixpos((yyval.node), (yyvsp[0].node));
12882#line 12883 "parse.c"
12886#line 3628 "parse.y"
12888 (yyval.node) = NEW_YIELD((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
12889 fixpos((yyval.node), (yyvsp[0].node));
12892#line 12893 "parse.c"
12896#line 3634 "parse.y"
12898 (yyval.node) = NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc), &(yylsp[-1]));
12901#line 12902 "parse.c"
12905#line 3639 "parse.y"
12908 args = ret_args(p, (yyvsp[0].node));
12909 (yyval.node) = add_block_exit(p, NEW_BREAK(args, &(yyloc), &(yylsp[-1])));
12912#line 12913 "parse.c"
12916#line 3646 "parse.y"
12919 args = ret_args(p, (yyvsp[0].node));
12920 (yyval.node) = add_block_exit(p, NEW_NEXT(args, &(yyloc), &(yylsp[-1])));
12923#line 12924 "parse.c"
12927#line 3656 "parse.y"
12929 (yyval.node_masgn) = (yyvsp[-1].node_masgn);
12932#line 12933 "parse.c"
12936#line 3664 "parse.y"
12938 (yyval.node_masgn) = NEW_MASGN(NEW_LIST((NODE *)(yyvsp[-1].node_masgn), &(yyloc)), 0, &(yyloc));
12941#line 12942 "parse.c"
12945#line 3671 "parse.y"
12947 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
12950#line 12951 "parse.c"
12954#line 3676 "parse.y"
12956 (yyval.node_masgn) = NEW_MASGN(list_append(p, (yyvsp[-1].node), (yyvsp[0].node)), 0, &(yyloc));
12959#line 12960 "parse.c"
12963#line 3681 "parse.y"
12965 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12968#line 12969 "parse.c"
12972#line 3033 "parse.y"
12974 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
12977#line 12978 "parse.c"
12981#line 3038 "parse.y"
12983 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
12986#line 12987 "parse.c"
12990#line 3686 "parse.y"
12992 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
12995#line 12996 "parse.c"
12999#line 3691 "parse.y"
13001 (yyval.node_masgn) = NEW_MASGN((yyvsp[-1].node), NODE_SPECIAL_NO_NAME_REST, &(yyloc));
13004#line 13005 "parse.c"
13008#line 3696 "parse.y"
13010 (yyval.node_masgn) = NEW_MASGN((yyvsp[-3].node), NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
13013#line 13014 "parse.c"
13017#line 3701 "parse.y"
13019 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
13022#line 13023 "parse.c"
13026#line 3706 "parse.y"
13028 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
13031#line 13032 "parse.c"
13035#line 3711 "parse.y"
13037 (yyval.node_masgn) = NEW_MASGN(0, NODE_SPECIAL_NO_NAME_REST, &(yyloc));
13040#line 13041 "parse.c"
13044#line 3716 "parse.y"
13046 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
13049#line 13050 "parse.c"
13053#line 3724 "parse.y"
13055 (yyval.node) = (NODE *)(yyvsp[-1].node_masgn);
13058#line 13059 "parse.c"
13062#line 3731 "parse.y"
13064 (yyval.node) = NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
13067#line 13068 "parse.c"
13071#line 3736 "parse.y"
13073 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
13076#line 13077 "parse.c"
13080#line 3744 "parse.y"
13083 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13085#line 13086 "parse.c"
13089#line 3744 "parse.y"
13092 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13094#line 13095 "parse.c"
13098#line 3749 "parse.y"
13100 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13103#line 13104 "parse.c"
13107#line 3754 "parse.y"
13109 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13110 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
13113#line 13114 "parse.c"
13117#line 3754 "parse.y"
13119 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
13120 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
13123#line 13124 "parse.c"
13127#line 3760 "parse.y"
13129 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].
id), &(yyloc));
13132#line 13133 "parse.c"
13136#line 3765 "parse.y"
13139 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13141#line 13142 "parse.c"
13145#line 3770 "parse.y"
13148 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13150#line 13151 "parse.c"
13154#line 3775 "parse.y"
13156 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13157 (yyval.node) = NEW_ERROR(&(yyloc));
13160#line 13161 "parse.c"
13164#line 3783 "parse.y"
13167 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13169#line 13170 "parse.c"
13173#line 3783 "parse.y"
13176 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13178#line 13179 "parse.c"
13182#line 3788 "parse.y"
13184 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13187#line 13188 "parse.c"
13191#line 3793 "parse.y"
13193 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
13196#line 13197 "parse.c"
13200#line 3793 "parse.y"
13202 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
13205#line 13206 "parse.c"
13209#line 3798 "parse.y"
13211 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].
id), &(yyloc));
13214#line 13215 "parse.c"
13218#line 3803 "parse.y"
13221 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13223#line 13224 "parse.c"
13227#line 3808 "parse.y"
13230 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0])), &(yyloc));
13232#line 13233 "parse.c"
13236#line 3813 "parse.y"
13238 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
13239 (yyval.node) = NEW_ERROR(&(yyloc));
13242#line 13243 "parse.c"
13246#line 3821 "parse.y"
13248 static const char mesg[] =
"class/module name must be CONSTANT";
13250 yyerror1(&(yylsp[0]), mesg);
13254#line 13255 "parse.c"
13258#line 3832 "parse.y"
13260 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
13263#line 13264 "parse.c"
13267#line 3837 "parse.y"
13269 (yyval.node) = NEW_COLON2(0, (yyvsp[0].
id), &(yyloc), &NULL_LOC, &(yylsp[0]));
13272#line 13273 "parse.c"
13276#line 3842 "parse.y"
13278 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
13281#line 13282 "parse.c"
13285#line 3850 "parse.y"
13287 SET_LEX_STATE(EXPR_ENDFN);
13288 (yyval.id) = (yyvsp[0].
id);
13290#line 13291 "parse.c"
13294#line 3858 "parse.y"
13296 (yyval.node) = NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc));
13299#line 13300 "parse.c"
13303#line 3866 "parse.y"
13305 (yyval.node) = NEW_UNDEF((yyvsp[0].node), &(yyloc));
13308#line 13309 "parse.c"
13312#line 3870 "parse.y"
13313 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
13314#line 13315 "parse.c"
13318#line 3871 "parse.y"
13320 nd_set_last_loc((yyvsp[-3].node), (yylsp[0]).end_pos);
13321 rb_parser_ary_push_node(p, RNODE_UNDEF((yyvsp[-3].node))->nd_undefs, (yyvsp[0].node));
13324#line 13325 "parse.c"
13328#line 3878 "parse.y"
13329 { (yyval.id) =
'|'; }
13330#line 13331 "parse.c"
13334#line 3879 "parse.y"
13335 { (yyval.id) =
'^'; }
13336#line 13337 "parse.c"
13340#line 3880 "parse.y"
13341 { (yyval.id) =
'&'; }
13342#line 13343 "parse.c"
13346#line 3881 "parse.y"
13347 { (yyval.id) = tCMP; }
13348#line 13349 "parse.c"
13352#line 3882 "parse.y"
13353 { (yyval.id) = tEQ; }
13354#line 13355 "parse.c"
13358#line 3883 "parse.y"
13359 { (yyval.id) = tEQQ; }
13360#line 13361 "parse.c"
13364#line 3884 "parse.y"
13365 { (yyval.id) = tMATCH; }
13366#line 13367 "parse.c"
13370#line 3885 "parse.y"
13371 { (yyval.id) = tNMATCH; }
13372#line 13373 "parse.c"
13376#line 3886 "parse.y"
13377 { (yyval.id) =
'>'; }
13378#line 13379 "parse.c"
13382#line 3887 "parse.y"
13383 { (yyval.id) = tGEQ; }
13384#line 13385 "parse.c"
13388#line 3888 "parse.y"
13389 { (yyval.id) =
'<'; }
13390#line 13391 "parse.c"
13394#line 3889 "parse.y"
13395 { (yyval.id) = tLEQ; }
13396#line 13397 "parse.c"
13400#line 3890 "parse.y"
13401 { (yyval.id) = tNEQ; }
13402#line 13403 "parse.c"
13406#line 3891 "parse.y"
13407 { (yyval.id) = tLSHFT; }
13408#line 13409 "parse.c"
13412#line 3892 "parse.y"
13413 { (yyval.id) = tRSHFT; }
13414#line 13415 "parse.c"
13418#line 3893 "parse.y"
13419 { (yyval.id) =
'+'; }
13420#line 13421 "parse.c"
13424#line 3894 "parse.y"
13425 { (yyval.id) =
'-'; }
13426#line 13427 "parse.c"
13430#line 3895 "parse.y"
13431 { (yyval.id) =
'*'; }
13432#line 13433 "parse.c"
13436#line 3896 "parse.y"
13437 { (yyval.id) =
'*'; }
13438#line 13439 "parse.c"
13442#line 3897 "parse.y"
13443 { (yyval.id) =
'/'; }
13444#line 13445 "parse.c"
13448#line 3898 "parse.y"
13449 { (yyval.id) =
'%'; }
13450#line 13451 "parse.c"
13454#line 3899 "parse.y"
13455 { (yyval.id) = tPOW; }
13456#line 13457 "parse.c"
13460#line 3900 "parse.y"
13461 { (yyval.id) = tDSTAR; }
13462#line 13463 "parse.c"
13466#line 3901 "parse.y"
13467 { (yyval.id) =
'!'; }
13468#line 13469 "parse.c"
13472#line 3902 "parse.y"
13473 { (yyval.id) =
'~'; }
13474#line 13475 "parse.c"
13478#line 3903 "parse.y"
13479 { (yyval.id) = tUPLUS; }
13480#line 13481 "parse.c"
13484#line 3904 "parse.y"
13485 { (yyval.id) = tUMINUS; }
13486#line 13487 "parse.c"
13490#line 3905 "parse.y"
13491 { (yyval.id) = tAREF; }
13492#line 13493 "parse.c"
13496#line 3906 "parse.y"
13497 { (yyval.id) = tASET; }
13498#line 13499 "parse.c"
13502#line 3907 "parse.y"
13503 { (yyval.id) =
'`'; }
13504#line 13505 "parse.c"
13508#line 2920 "parse.y"
13510 (yyval.node) = node_assign(p, (NODE *)(yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13513#line 13514 "parse.c"
13517#line 3046 "parse.y"
13519 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13522#line 13523 "parse.c"
13526#line 3051 "parse.y"
13528 (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]));
13531#line 13532 "parse.c"
13535#line 3056 "parse.y"
13537 (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]));
13540#line 13541 "parse.c"
13544#line 3061 "parse.y"
13546 (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]));
13549#line 13550 "parse.c"
13553#line 3066 "parse.y"
13555 (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]));
13558#line 13559 "parse.c"
13562#line 3071 "parse.y"
13564 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
13565 (yyval.node) = new_const_op_assign(p, NEW_COLON2((yyvsp[-5].node), (yyvsp[-3].
id), &loc, &(yylsp[-4]), &(yylsp[-3])), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13568#line 13569 "parse.c"
13572#line 3077 "parse.y"
13574 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
13575 (yyval.node) = new_const_op_assign(p, NEW_COLON3((yyvsp[-3].
id), &loc, &(yylsp[-4]), &(yylsp[-3])), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13578#line 13579 "parse.c"
13582#line 3083 "parse.y"
13584 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
13585 (yyval.node) = NEW_ERROR(&(yyloc));
13588#line 13589 "parse.c"
13592#line 3105 "parse.y"
13594 value_expr(p, (yyvsp[-2].node));
13595 value_expr(p, (yyvsp[0].node));
13596 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13599#line 13600 "parse.c"
13603#line 3112 "parse.y"
13605 value_expr(p, (yyvsp[-2].node));
13606 value_expr(p, (yyvsp[0].node));
13607 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13610#line 13611 "parse.c"
13614#line 3119 "parse.y"
13616 value_expr(p, (yyvsp[-1].node));
13617 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13620#line 13621 "parse.c"
13624#line 3125 "parse.y"
13626 value_expr(p, (yyvsp[-1].node));
13627 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
13630#line 13631 "parse.c"
13634#line 3131 "parse.y"
13636 value_expr(p, (yyvsp[0].node));
13637 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13640#line 13641 "parse.c"
13644#line 3137 "parse.y"
13646 value_expr(p, (yyvsp[0].node));
13647 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13650#line 13651 "parse.c"
13654#line 3928 "parse.y"
13656 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13659#line 13660 "parse.c"
13663#line 3933 "parse.y"
13665 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13668#line 13669 "parse.c"
13672#line 3938 "parse.y"
13674 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13677#line 13678 "parse.c"
13681#line 3943 "parse.y"
13683 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13686#line 13687 "parse.c"
13690#line 3948 "parse.y"
13692 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13695#line 13696 "parse.c"
13699#line 3953 "parse.y"
13701 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13704#line 13705 "parse.c"
13708#line 3958 "parse.y"
13710 (yyval.node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)), idUMinus, &(yylsp[-3]), &(yyloc));
13713#line 13714 "parse.c"
13717#line 3963 "parse.y"
13719 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUPlus, &(yylsp[-1]), &(yyloc));
13722#line 13723 "parse.c"
13726#line 3968 "parse.y"
13728 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUMinus, &(yylsp[-1]), &(yyloc));
13731#line 13732 "parse.c"
13735#line 3973 "parse.y"
13737 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13740#line 13741 "parse.c"
13744#line 3978 "parse.y"
13746 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13749#line 13750 "parse.c"
13753#line 3983 "parse.y"
13755 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13758#line 13759 "parse.c"
13762#line 3988 "parse.y"
13764 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13767#line 13768 "parse.c"
13771#line 3994 "parse.y"
13773 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13776#line 13777 "parse.c"
13780#line 3999 "parse.y"
13782 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13785#line 13786 "parse.c"
13789#line 4004 "parse.y"
13791 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13794#line 13795 "parse.c"
13798#line 4009 "parse.y"
13800 (yyval.node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13803#line 13804 "parse.c"
13807#line 4014 "parse.y"
13809 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13812#line 13813 "parse.c"
13816#line 4019 "parse.y"
13818 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
13821#line 13822 "parse.c"
13825#line 4024 "parse.y"
13827 (yyval.node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
13830#line 13831 "parse.c"
13834#line 4029 "parse.y"
13836 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13839#line 13840 "parse.c"
13843#line 4034 "parse.y"
13845 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13848#line 13849 "parse.c"
13852#line 4039 "parse.y"
13854 (yyval.node) = logop(p, idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13857#line 13858 "parse.c"
13861#line 4044 "parse.y"
13863 (yyval.node) = logop(p, idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13866#line 13867 "parse.c"
13870#line 4049 "parse.y"
13872 p->ctxt.in_defined = (yyvsp[-1].ctxt).in_defined;
13873 (yyval.node) = new_defined(p, (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
13874 p->ctxt.has_trailing_semicolon = (yyvsp[-1].ctxt).has_trailing_semicolon;
13877#line 13878 "parse.c"
13881#line 2951 "parse.y"
13883 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
13884 restore_defun(p, (yyvsp[-3].node_def_temp));
13885 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
13886 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
13887 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
13892#line 13893 "parse.c"
13896#line 2962 "parse.y"
13898 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
13899 restore_defun(p, (yyvsp[-3].node_def_temp));
13900 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
13901 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), (yyval.node), &(yyloc));
13902 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
13907#line 13908 "parse.c"
13911#line 4061 "parse.y"
13913 value_expr(p, (yyvsp[-5].node));
13914 (yyval.node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc), &NULL_LOC, &(yylsp[-1]), &NULL_LOC);
13915 fixpos((yyval.node), (yyvsp[-5].node));
13918#line 13919 "parse.c"
13922#line 4071 "parse.y"
13924 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
13925 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
13928#line 13929 "parse.c"
13932#line 4077 "parse.y"
13934 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
13937#line 13938 "parse.c"
13941#line 4083 "parse.y"
13942 {(yyval.id) =
'>';}
13943#line 13944 "parse.c"
13947#line 4084 "parse.y"
13948 {(yyval.id) =
'<';}
13949#line 13950 "parse.c"
13953#line 4085 "parse.y"
13954 {(yyval.id) = idGE;}
13955#line 13956 "parse.c"
13959#line 4086 "parse.y"
13960 {(yyval.id) = idLE;}
13961#line 13962 "parse.c"
13965#line 4090 "parse.y"
13967 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13970#line 13971 "parse.c"
13974#line 4095 "parse.y"
13976 rb_warning1(
"comparison '%s' after comparison", WARN_ID((yyvsp[-1].
id)));
13977 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13980#line 13981 "parse.c"
13984#line 4103 "parse.y"
13986 (yyval.ctxt) = p->ctxt;
13988#line 13989 "parse.c"
13992#line 4109 "parse.y"
13994 p->ctxt.in_defined = 1;
13995 (yyval.ctxt) = (yyvsp[0].ctxt);
13997#line 13998 "parse.c"
14001#line 4116 "parse.y"
14003 p->ctxt.in_rescue = after_rescue;
14004 (yyval.ctxt) = (yyvsp[0].ctxt);
14006#line 14007 "parse.c"
14010#line 3146 "parse.y"
14012 value_expr(p, (yyvsp[0].node));
14013 (yyval.node) = (yyvsp[0].node);
14015#line 14016 "parse.c"
14019#line 4128 "parse.y"
14021 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14024#line 14025 "parse.c"
14028#line 4133 "parse.y"
14030 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
14033#line 14034 "parse.c"
14037#line 4140 "parse.y"
14039 value_expr(p, (yyvsp[0].node));
14040 (yyval.node) = (yyvsp[0].node);
14042#line 14043 "parse.c"
14046#line 4145 "parse.y"
14048 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
14049 value_expr(p, (yyvsp[-3].node));
14050 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14053#line 14054 "parse.c"
14057#line 4154 "parse.y"
14059 (yyval.node) = (yyvsp[-1].node);
14062#line 14063 "parse.c"
14066#line 4159 "parse.y"
14068 if (!check_forwarding_args(p)) {
14072 (yyval.node) = new_args_forward_call(p, (yyvsp[-3].node), &(yylsp[-1]), &(yyloc));
14076#line 14077 "parse.c"
14080#line 4169 "parse.y"
14082 if (!check_forwarding_args(p)) {
14086 (yyval.node) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
14090#line 14091 "parse.c"
14094#line 4182 "parse.y"
14096 (yyval.node) = (yyvsp[0].node) ? (yyvsp[0].node) : NODE_SPECIAL_EMPTY_ARGS;
14098#line 14099 "parse.c"
14102#line 4191 "parse.y"
14104 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14107#line 14108 "parse.c"
14111#line 4196 "parse.y"
14113 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14116#line 14117 "parse.c"
14120#line 3146 "parse.y"
14122 value_expr(p, (yyvsp[0].node));
14123 (yyval.node) = (yyvsp[0].node);
14125#line 14126 "parse.c"
14129#line 4203 "parse.y"
14131 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14134#line 14135 "parse.c"
14138#line 4208 "parse.y"
14140 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14143#line 14144 "parse.c"
14147#line 4213 "parse.y"
14149 (yyval.node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node_block_pass));
14152#line 14153 "parse.c"
14156#line 4218 "parse.y"
14158 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
14159 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14162#line 14163 "parse.c"
14166#line 4224 "parse.y"
14168 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
14169 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
14172#line 14173 "parse.c"
14176#line 4233 "parse.y"
14187 case '(':
case tLPAREN:
case tLPAREN_ARG:
case '[':
case tLBRACK:
14190 if (lookahead) CMDARG_POP();
14192 if (lookahead) CMDARG_PUSH(0);
14194#line 14195 "parse.c"
14198#line 4251 "parse.y"
14211 if (lookahead) CMDARG_POP();
14213 if (lookahead) CMDARG_PUSH(0);
14214 (yyval.node) = (yyvsp[0].node);
14217#line 14218 "parse.c"
14221#line 4272 "parse.y"
14223 (yyval.node_block_pass) = NEW_BLOCK_PASS((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14226#line 14227 "parse.c"
14230#line 4277 "parse.y"
14232 forwarding_arg_check(p, idFWD_BLOCK, idFWD_ALL,
"block");
14233 (yyval.node_block_pass) = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14236#line 14237 "parse.c"
14240#line 4285 "parse.y"
14242 (yyval.node_block_pass) = (yyvsp[0].node_block_pass);
14245#line 14246 "parse.c"
14249#line 4290 "parse.y"
14251 (yyval.node_block_pass) = 0;
14254#line 14255 "parse.c"
14258#line 4298 "parse.y"
14260 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14263#line 14264 "parse.c"
14267#line 4303 "parse.y"
14269 (yyval.node) = (yyvsp[0].node);
14272#line 14273 "parse.c"
14276#line 4308 "parse.y"
14278 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14281#line 14282 "parse.c"
14285#line 4313 "parse.y"
14287 (yyval.node) = rest_arg_append(p, (yyvsp[-2].node), RNODE_SPLAT((yyvsp[0].node))->nd_head, &(yyloc));
14290#line 14291 "parse.c"
14294#line 4321 "parse.y"
14296 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14299#line 14300 "parse.c"
14303#line 4326 "parse.y"
14305 forwarding_arg_check(p, idFWD_REST, idFWD_ALL,
"rest");
14306 (yyval.node) = NEW_SPLAT(NEW_LVAR(idFWD_REST, &(yylsp[0])), &(yyloc), &(yylsp[0]));
14309#line 14310 "parse.c"
14313#line 4340 "parse.y"
14315 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14318#line 14319 "parse.c"
14322#line 4345 "parse.y"
14324 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
14327#line 14328 "parse.c"
14331#line 4350 "parse.y"
14333 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
14336#line 14337 "parse.c"
14340#line 4371 "parse.y"
14342 (yyval.node) = (NODE *)NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
14345#line 14346 "parse.c"
14349#line 4376 "parse.y"
14353#line 14354 "parse.c"
14357#line 4381 "parse.y"
14360 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14361 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
14362 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14365#line 14366 "parse.c"
14369#line 4388 "parse.y"
14370 {SET_LEX_STATE(EXPR_ENDARG);}
14371#line 14372 "parse.c"
14375#line 4389 "parse.y"
14377 if (nd_type_p((yyvsp[-2].node), NODE_SELF)) RNODE_SELF((yyvsp[-2].node))->nd_state = 0;
14378 (yyval.node) = (yyvsp[-2].node);
14381#line 14382 "parse.c"
14385#line 4395 "parse.y"
14387 if (nd_type_p((yyvsp[-1].node), NODE_SELF)) RNODE_SELF((yyvsp[-1].node))->nd_state = 0;
14388 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
14391#line 14392 "parse.c"
14395#line 4401 "parse.y"
14397 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
14400#line 14401 "parse.c"
14404#line 4406 "parse.y"
14406 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
14409#line 14410 "parse.c"
14413#line 4411 "parse.y"
14415 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
14418#line 14419 "parse.c"
14422#line 4416 "parse.y"
14424 (yyval.node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
14425 RNODE_HASH((yyval.node))->nd_brace = TRUE;
14428#line 14429 "parse.c"
14432#line 4422 "parse.y"
14434 (yyval.node) = NEW_RETURN(0, &(yyloc), &(yylsp[0]));
14437#line 14438 "parse.c"
14441#line 4427 "parse.y"
14443 (yyval.node) = NEW_YIELD((yyvsp[-1].node), &(yyloc), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
14446#line 14447 "parse.c"
14450#line 4432 "parse.y"
14452 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
14455#line 14456 "parse.c"
14459#line 4437 "parse.y"
14461 (yyval.node) = NEW_YIELD(0, &(yyloc), &(yylsp[0]), &NULL_LOC, &NULL_LOC);
14464#line 14465 "parse.c"
14468#line 4442 "parse.y"
14470 p->ctxt.in_defined = (yyvsp[-2].ctxt).in_defined;
14471 (yyval.node) = new_defined(p, (yyvsp[-1].node), &(yyloc), &(yylsp[-5]));
14472 p->ctxt.has_trailing_semicolon = (yyvsp[-2].ctxt).has_trailing_semicolon;
14475#line 14476 "parse.c"
14479#line 4449 "parse.y"
14481 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])), METHOD_NOT, &(yylsp[-3]), &(yyloc));
14484#line 14485 "parse.c"
14488#line 4454 "parse.y"
14490 (yyval.node) = call_uni_op(p, method_cond(p, NEW_NIL(&(yylsp[-1])), &(yylsp[-1])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
14493#line 14494 "parse.c"
14497#line 4459 "parse.y"
14499 (yyval.node) = method_add_block(p, (NODE *)(yyvsp[-1].node_fcall), (yyvsp[0].node), &(yyloc));
14502#line 14503 "parse.c"
14506#line 4465 "parse.y"
14508 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
14509 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14512#line 14513 "parse.c"
14516#line 4475 "parse.y"
14518 if ((yyvsp[-1].node) && nd_type_p((yyvsp[-1].node), NODE_IF))
14519 RNODE_IF((yyvsp[-1].node))->end_keyword_loc = (yylsp[0]);
14521 (yyval.node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14522 fixpos((yyval.node), (yyvsp[-4].node));
14525#line 14526 "parse.c"
14529#line 4487 "parse.y"
14531 (yyval.node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
14532 fixpos((yyval.node), (yyvsp[-4].node));
14535#line 14536 "parse.c"
14539#line 4495 "parse.y"
14541 restore_block_exit(p, (yyvsp[-3].node_exits));
14542 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14543 fixpos((yyval.node), (yyvsp[-2].node));
14546#line 14547 "parse.c"
14550#line 4504 "parse.y"
14552 restore_block_exit(p, (yyvsp[-3].node_exits));
14553 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14554 fixpos((yyval.node), (yyvsp[-2].node));
14557#line 14558 "parse.c"
14561#line 4511 "parse.y"
14563 (yyval.labels) = p->case_labels;
14564 p->case_labels = CHECK_LITERAL_WHEN;
14566#line 14567 "parse.c"
14570#line 4517 "parse.y"
14572 if (CASE_LABELS_ENABLED_P(p->case_labels)) st_free_table(p->case_labels);
14573 p->case_labels = (yyvsp[-2].labels);
14574 (yyval.node) = NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[0]));
14575 fixpos((yyval.node), (yyvsp[-4].node));
14578#line 14579 "parse.c"
14582#line 4525 "parse.y"
14584 (yyval.labels) = p->case_labels;
14585 p->case_labels = 0;
14587#line 14588 "parse.c"
14591#line 4531 "parse.y"
14593 if (p->case_labels) st_free_table(p->case_labels);
14594 p->case_labels = (yyvsp[-2].labels);
14595 (yyval.node) = NEW_CASE2((yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14598#line 14599 "parse.c"
14602#line 4540 "parse.y"
14604 (yyval.node) = NEW_CASE3((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14607#line 14608 "parse.c"
14611#line 4545 "parse.y"
14613#line 14614 "parse.c"
14617#line 4545 "parse.y"
14619#line 14620 "parse.c"
14623#line 4548 "parse.y"
14625 restore_block_exit(p, (yyvsp[-8].node_exits));
14635 ID id = internal_id(p);
14636 rb_node_args_aux_t *m = NEW_ARGS_AUX(0, 0, &NULL_LOC);
14637 rb_node_args_t *args;
14638 NODE *scope, *internal_var = NEW_DVAR(
id, &(yylsp[-7]));
14639 rb_ast_id_table_t *tbl = rb_ast_new_local_table(p->ast, 1);
14642 switch (nd_type((yyvsp[-7].node))) {
14645 set_nd_value(p, (yyvsp[-7].node), internal_var);
14648 m->nd_next = (yyvsp[-7].node);
14651 m->nd_next = node_assign(p, (yyvsp[-7].node), NEW_FOR_MASGN(internal_var, &(yylsp[-7])), NO_LEX_CTXT, &(yylsp[-7]));
14654 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]));
14657 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-7])), &(yylsp[-7]));
14658 scope = NEW_SCOPE2(tbl, args, (yyvsp[-1].node), NULL, &(yyloc));
14659 YYLTYPE do_keyword_loc = (yyvsp[-3].id) == keyword_do_cond ? (yylsp[-3]) : NULL_LOC;
14660 (yyval.node) = NEW_FOR((yyvsp[-4].node), scope, &(yyloc), &(yylsp[-8]), &(yylsp[-6]), &do_keyword_loc, &(yylsp[0]));
14661 RNODE_SCOPE(scope)->nd_parent = (yyval.node);
14662 fixpos((yyval.node), (yyvsp[-7].node));
14665#line 14666 "parse.c"
14669#line 4590 "parse.y"
14671 begin_definition(
"class", &(yylsp[-2]), &(yylsp[-1]));
14673#line 14674 "parse.c"
14677#line 4595 "parse.y"
14679 YYLTYPE inheritance_operator_loc = NULL_LOC;
14680 if ((yyvsp[-3].node)) {
14681 inheritance_operator_loc = (yylsp[-3]);
14682 inheritance_operator_loc.end_pos.column = inheritance_operator_loc.beg_pos.column + 1;
14684 (yyval.node) = NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc), &(yylsp[-5]), &inheritance_operator_loc, &(yylsp[0]));
14685 nd_set_line(RNODE_CLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14686 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14687 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14690 p->ctxt.in_class = (yyvsp[-5].ctxt).in_class;
14691 p->ctxt.cant_return = (yyvsp[-5].ctxt).cant_return;
14692 p->ctxt.shareable_constant_value = (yyvsp[-5].ctxt).shareable_constant_value;
14694#line 14695 "parse.c"
14698#line 4612 "parse.y"
14700 begin_definition(
"", &(yylsp[-2]), &(yylsp[-1]));
14702#line 14703 "parse.c"
14706#line 4618 "parse.y"
14708 (yyval.node) = NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-6]), &(yylsp[-5]), &(yylsp[0]));
14709 nd_set_line(RNODE_SCLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14710 set_line_body((yyvsp[-1].node), nd_line((yyvsp[-4].node)));
14711 fixpos((yyval.node), (yyvsp[-4].node));
14714 p->ctxt.in_def = (yyvsp[-6].ctxt).in_def;
14715 p->ctxt.in_class = (yyvsp[-6].ctxt).in_class;
14716 p->ctxt.cant_return = (yyvsp[-6].ctxt).cant_return;
14717 p->ctxt.shareable_constant_value = (yyvsp[-6].ctxt).shareable_constant_value;
14719#line 14720 "parse.c"
14723#line 4631 "parse.y"
14725 begin_definition(
"module", &(yylsp[-1]), &(yylsp[0]));
14727#line 14728 "parse.c"
14731#line 4636 "parse.y"
14733 (yyval.node) = NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14734 nd_set_line(RNODE_MODULE((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14735 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14736 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14739 p->ctxt.in_class = (yyvsp[-4].ctxt).in_class;
14740 p->ctxt.cant_return = (yyvsp[-4].ctxt).cant_return;
14741 p->ctxt.shareable_constant_value = (yyvsp[-4].ctxt).shareable_constant_value;
14743#line 14744 "parse.c"
14747#line 4649 "parse.y"
14749 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14751#line 14752 "parse.c"
14755#line 4654 "parse.y"
14757 restore_defun(p, (yyvsp[-4].node_def_temp));
14758 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
14759 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), (yyval.node), &(yyloc));
14760 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[-1].node);
14764#line 14765 "parse.c"
14768#line 4664 "parse.y"
14770 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14772#line 14773 "parse.c"
14776#line 4669 "parse.y"
14778 restore_defun(p, (yyvsp[-4].node_def_temp));
14779 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
14780 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), (yyval.node), &(yyloc));
14781 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[-1].node);
14785#line 14786 "parse.c"
14789#line 4678 "parse.y"
14791 (yyval.node) = add_block_exit(p, NEW_BREAK(0, &(yyloc), &(yylsp[0])));
14794#line 14795 "parse.c"
14798#line 4683 "parse.y"
14800 (yyval.node) = add_block_exit(p, NEW_NEXT(0, &(yyloc), &(yylsp[0])));
14803#line 14804 "parse.c"
14807#line 4688 "parse.y"
14809 (yyval.node) = add_block_exit(p, NEW_REDO(&(yyloc), &(yylsp[0])));
14812#line 14813 "parse.c"
14816#line 4693 "parse.y"
14818 if (!p->ctxt.in_defined) {
14819 switch (p->ctxt.in_rescue) {
14820 case before_rescue: yyerror1(&(yylsp[0]),
"Invalid retry without rescue");
break;
14821 case after_rescue:
break;
14822 case after_else: yyerror1(&(yylsp[0]),
"Invalid retry after else");
break;
14823 case after_ensure: yyerror1(&(yylsp[0]),
"Invalid retry after ensure");
break;
14826 (yyval.node) = NEW_RETRY(&(yyloc));
14829#line 14830 "parse.c"
14833#line 3146 "parse.y"
14835 value_expr(p, (yyvsp[0].node));
14836 (yyval.node) = (yyvsp[0].node);
14838#line 14839 "parse.c"
14842#line 4711 "parse.y"
14844 token_info_push(p,
"begin", &(yyloc));
14845 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14847#line 14848 "parse.c"
14851#line 4718 "parse.y"
14854 token_info_push(p,
"if", &(yyloc));
14855 if (p->token_info && p->token_info->nonspc &&
14856 p->token_info->next && !strcmp(p->token_info->next->token,
"else")) {
14858 const char *beg = p->lex.pbeg + p->token_info->next->beg.column;
14860 while (beg < tok &&
ISSPACE(*beg)) beg++;
14862 p->token_info->nonspc = 0;
14865 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14867#line 14868 "parse.c"
14871#line 4736 "parse.y"
14873 token_info_push(p,
"unless", &(yyloc));
14874 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14876#line 14877 "parse.c"
14880#line 4743 "parse.y"
14882 (yyval.node_exits) = (yyvsp[0].node_exits);
14883 token_info_push(p,
"while", &(yyloc));
14884 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14886#line 14887 "parse.c"
14890#line 4751 "parse.y"
14892 (yyval.node_exits) = (yyvsp[0].node_exits);
14893 token_info_push(p,
"until", &(yyloc));
14894 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14896#line 14897 "parse.c"
14900#line 4759 "parse.y"
14902 token_info_push(p,
"case", &(yyloc));
14903 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14905#line 14906 "parse.c"
14909#line 4766 "parse.y"
14911 (yyval.node_exits) = (yyvsp[0].node_exits);
14912 token_info_push(p,
"for", &(yyloc));
14913 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14915#line 14916 "parse.c"
14919#line 4774 "parse.y"
14921 token_info_push(p,
"class", &(yyloc));
14922 (yyval.ctxt) = p->ctxt;
14923 p->ctxt.in_rescue = before_rescue;
14924 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14926#line 14927 "parse.c"
14930#line 4783 "parse.y"
14932 token_info_push(p,
"module", &(yyloc));
14933 (yyval.ctxt) = p->ctxt;
14934 p->ctxt.in_rescue = before_rescue;
14935 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14937#line 14938 "parse.c"
14941#line 4792 "parse.y"
14943 token_info_push(p,
"def", &(yyloc));
14944 (yyval.node_def_temp) = NEW_DEF_TEMP(&(yyloc));
14945 p->ctxt.in_argdef = 1;
14947#line 14948 "parse.c"
14951#line 4800 "parse.y"
14953 token_info_push(p,
"do", &(yyloc));
14954 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14956#line 14957 "parse.c"
14960#line 4807 "parse.y"
14962 token_info_push(p,
"do", &(yyloc));
14963 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14965#line 14966 "parse.c"
14969#line 4814 "parse.y"
14971 token_info_warn(p,
"rescue", p->token_info, 1, &(yyloc));
14972 (yyval.ctxt) = p->ctxt;
14973 p->ctxt.in_rescue = after_rescue;
14975#line 14976 "parse.c"
14979#line 4822 "parse.y"
14981 token_info_warn(p,
"ensure", p->token_info, 1, &(yyloc));
14982 (yyval.ctxt) = p->ctxt;
14984#line 14985 "parse.c"
14988#line 4829 "parse.y"
14990 token_info_warn(p,
"when", p->token_info, 0, &(yyloc));
14992#line 14993 "parse.c"
14996#line 4835 "parse.y"
14999 int same = ptinfo_beg && strcmp(ptinfo_beg->token,
"case") != 0;
15000 token_info_warn(p,
"else", p->token_info, same, &(yyloc));
15003 e.next = ptinfo_beg->next;
15005 token_info_setup(&e, p->lex.pbeg, &(yyloc));
15006 if (!e.nonspc) *ptinfo_beg = e;
15009#line 15010 "parse.c"
15013#line 4850 "parse.y"
15016 token_info_warn(p,
"elsif", p->token_info, 1, &(yyloc));
15018#line 15019 "parse.c"
15022#line 4857 "parse.y"
15024 token_info_pop(p,
"end", &(yyloc));
15025 pop_end_expect_token_locations(p);
15027#line 15028 "parse.c"
15031#line 4862 "parse.y"
15033 compile_error(p,
"syntax error, unexpected end-of-input");
15035#line 15036 "parse.c"
15039#line 4868 "parse.y"
15041 if (p->ctxt.cant_return && !dyna_in_block(p))
15042 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
15044#line 15045 "parse.c"
15048#line 4875 "parse.y"
15050 if (!p->ctxt.in_defined && !p->ctxt.in_def && !compile_for_eval)
15051 yyerror1(&(yylsp[0]),
"Invalid yield");
15053#line 15054 "parse.c"
15057#line 4887 "parse.y"
15058 { (yyval.id) = keyword_do_cond; }
15059#line 15060 "parse.c"
15063#line 4894 "parse.y"
15065 (yyval.node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]), &NULL_LOC);
15066 fixpos((yyval.node), (yyvsp[-3].node));
15069#line 15070 "parse.c"
15073#line 4903 "parse.y"
15075 (yyval.node) = (yyvsp[0].node);
15078#line 15079 "parse.c"
15082#line 4914 "parse.y"
15084 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15085 mark_lvar_used(p, (yyval.node));
15087#line 15088 "parse.c"
15091#line 4919 "parse.y"
15093 (yyval.node) = (NODE *)(yyvsp[-1].node_masgn);
15096#line 15097 "parse.c"
15100#line 3033 "parse.y"
15102 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15105#line 15106 "parse.c"
15109#line 3038 "parse.y"
15111 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
15114#line 15115 "parse.c"
15118#line 4927 "parse.y"
15120 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
15123#line 15124 "parse.c"
15127#line 4932 "parse.y"
15129 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15132#line 15133 "parse.c"
15136#line 4937 "parse.y"
15138 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15141#line 15142 "parse.c"
15145#line 4942 "parse.y"
15147 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
15150#line 15151 "parse.c"
15154#line 4947 "parse.y"
15156 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
15159#line 15160 "parse.c"
15163#line 4954 "parse.y"
15166 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15167 mark_lvar_used(p, (yyval.node));
15169#line 15170 "parse.c"
15173#line 4960 "parse.y"
15175 (yyval.node) = NODE_SPECIAL_NO_NAME_REST;
15178#line 15179 "parse.c"
15182#line 4968 "parse.y"
15184 (yyval.id) = idNil;
15187#line 15188 "parse.c"
15191#line 4974 "parse.y"
15192 {p->ctxt.in_argdef = 0;}
15193#line 15194 "parse.c"
15197#line 3005 "parse.y"
15199 p->ctxt.in_argdef = 1;
15200 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15203#line 15204 "parse.c"
15207#line 3011 "parse.y"
15209 p->ctxt.in_argdef = 1;
15210 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
15213#line 15214 "parse.c"
15217#line 3020 "parse.y"
15219 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
15222#line 15223 "parse.c"
15226#line 3025 "parse.y"
15228 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
15231#line 15232 "parse.c"
15235#line 2928 "parse.y"
15237 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
15240#line 15241 "parse.c"
15244#line 2933 "parse.y"
15246 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].
id), &(yylsp[-1]));
15249#line 15250 "parse.c"
15253#line 2938 "parse.y"
15255 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
15258#line 15259 "parse.c"
15262#line 2943 "parse.y"
15264 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
15267#line 15268 "parse.c"
15271#line 4980 "parse.y"
15274 (yyval.id) = NODE_SPECIAL_EXCESSIVE_COMMA;
15277#line 15278 "parse.c"
15281#line 2983 "parse.y"
15283 p->ctxt.in_argdef = 1;
15284 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
15287#line 15288 "parse.c"
15291#line 2992 "parse.y"
15293 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
15296#line 15297 "parse.c"
15300#line 2997 "parse.y"
15302 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
15305#line 15306 "parse.c"
15309#line 3092 "parse.y"
15311 (yyval.node_args) = (yyvsp[0].node_args);
15314#line 15315 "parse.c"
15318#line 3097 "parse.y"
15320 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
15323#line 15324 "parse.c"
15327#line 4988 "parse.y"
15329 (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));
15332#line 15333 "parse.c"
15336#line 4993 "parse.y"
15338 (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));
15341#line 15342 "parse.c"
15345#line 4998 "parse.y"
15347 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15350#line 15351 "parse.c"
15354#line 5003 "parse.y"
15356 (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));
15359#line 15360 "parse.c"
15363#line 5008 "parse.y"
15365 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
15368#line 15369 "parse.c"
15372#line 5013 "parse.y"
15374 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
15375 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, (yyvsp[0].
id), 0, (yyval.node_args), &(yyloc));
15378#line 15379 "parse.c"
15382#line 5019 "parse.y"
15384 (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));
15387#line 15388 "parse.c"
15391#line 5024 "parse.y"
15393 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15396#line 15397 "parse.c"
15400#line 5029 "parse.y"
15402 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
15405#line 15406 "parse.c"
15409#line 5034 "parse.y"
15411 (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));
15414#line 15415 "parse.c"
15418#line 5039 "parse.y"
15420 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
15423#line 15424 "parse.c"
15427#line 5044 "parse.y"
15429 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15432#line 15433 "parse.c"
15436#line 5049 "parse.y"
15438 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
15441#line 15442 "parse.c"
15445#line 5054 "parse.y"
15447 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15450#line 15451 "parse.c"
15454#line 5059 "parse.y"
15456 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
15459#line 15460 "parse.c"
15463#line 5067 "parse.y"
15465 p->command_start = TRUE;
15467#line 15468 "parse.c"
15471#line 5073 "parse.y"
15473 p->max_numparam = ORDINAL_PARAM;
15474 p->ctxt.in_argdef = 0;
15475 (yyval.node_args) = (yyvsp[-2].node_args);
15478#line 15479 "parse.c"
15482#line 5082 "parse.y"
15484 (yyval.node_args) = 0;
15487#line 15488 "parse.c"
15491#line 5090 "parse.y"
15496#line 15497 "parse.c"
15500#line 5095 "parse.y"
15505#line 15506 "parse.c"
15509#line 5108 "parse.y"
15511 new_bv(p, (yyvsp[0].
id));
15514#line 15515 "parse.c"
15518#line 5115 "parse.y"
15520 (yyval.num) = p->max_numparam;
15521 p->max_numparam = 0;
15523#line 15524 "parse.c"
15527#line 5121 "parse.y"
15529 (yyval.node) = numparam_push(p);
15531#line 15532 "parse.c"
15535#line 5126 "parse.y"
15537 (yyval.id) = p->it_id;
15540#line 15541 "parse.c"
15544#line 5133 "parse.y"
15546 token_info_push(p,
"->", &(yylsp[0]));
15547 (yyval.vars) = dyna_push(p);
15549#line 15550 "parse.c"
15553#line 5139 "parse.y"
15557#line 15558 "parse.c"
15561#line 5143 "parse.y"
15563 int max_numparam = p->max_numparam;
15564 ID it_id = p->it_id;
15565 p->lex.lpar_beg = (yyvsp[-8].num);
15566 p->max_numparam = (yyvsp[-6].num);
15567 p->it_id = (yyvsp[-4].id);
15568 restore_block_exit(p, (yyvsp[-3].node_exits));
15570 (yyvsp[-2].node_args) = args_with_numbered(p, (yyvsp[-2].node_args), max_numparam, it_id);
15572 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
15573 (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);
15574 nd_set_line(RNODE_LAMBDA((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
15575 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
15576 nd_set_first_loc((yyval.node), (yylsp[-8]).beg_pos);
15577 xfree((yyvsp[0].locations_lambda_body));
15580 numparam_pop(p, (yyvsp[-5].node));
15581 dyna_pop(p, (yyvsp[-7].vars));
15583#line 15584 "parse.c"
15587#line 5167 "parse.y"
15589 p->ctxt.in_argdef = 0;
15590 (yyval.node_args) = (yyvsp[-2].node_args);
15591 p->max_numparam = ORDINAL_PARAM;
15594#line 15595 "parse.c"
15598#line 5174 "parse.y"
15600 p->ctxt.in_argdef = 0;
15601 if (!args_info_empty_p(&(yyvsp[0].node_args)->nd_ainfo))
15602 p->max_numparam = ORDINAL_PARAM;
15603 (yyval.node_args) = (yyvsp[0].node_args);
15605#line 15606 "parse.c"
15609#line 5183 "parse.y"
15611 token_info_pop(p,
"}", &(yylsp[0]));
15612 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-2]), &(yylsp[0]));
15615#line 15616 "parse.c"
15619#line 5189 "parse.y"
15621 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15623#line 15624 "parse.c"
15627#line 5193 "parse.y"
15629 (yyval.locations_lambda_body) = new_locations_lambda_body(p, (yyvsp[-1].node), &(yylsp[-1]), &(yylsp[-3]), &(yylsp[0]));
15632#line 15633 "parse.c"
15636#line 5200 "parse.y"
15638 (yyval.node) = (yyvsp[-1].node);
15639 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15642#line 15643 "parse.c"
15646#line 5208 "parse.y"
15648 (yyval.node) = command_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15649 fixpos((yyval.node), (yyvsp[-1].node));
15652#line 15653 "parse.c"
15656#line 5214 "parse.y"
15658 bool has_args = (yyvsp[0].node) != 0;
15659 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15660 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15666#line 15667 "parse.c"
15670#line 5224 "parse.y"
15672 if (NODE_EMPTY_ARGS_P((yyvsp[-1].node))) (yyvsp[-1].node) = 0;
15673 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15676#line 15677 "parse.c"
15680#line 5230 "parse.y"
15682 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15685#line 15686 "parse.c"
15689#line 5235 "parse.y"
15691 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15692 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15695#line 15696 "parse.c"
15699#line 5243 "parse.y"
15701 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
15702 (yyval.node) = (NODE *)(yyvsp[-1].node_fcall);
15703 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
15706#line 15707 "parse.c"
15710#line 5250 "parse.y"
15712 bool has_args = (yyvsp[0].node) != 0;
15713 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15714 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15715 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15721#line 15722 "parse.c"
15725#line 5261 "parse.y"
15727 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15728 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15731#line 15732 "parse.c"
15735#line 5267 "parse.y"
15737 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-2].node), (yyvsp[0].
id), 0, &(yylsp[0]), &(yyloc));
15740#line 15741 "parse.c"
15744#line 5272 "parse.y"
15746 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15747 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15750#line 15751 "parse.c"
15754#line 5278 "parse.y"
15756 rb_code_location_t lparen_loc = (yylsp[0]);
15757 rb_code_location_t rparen_loc = (yylsp[0]);
15758 lparen_loc.end_pos.column = lparen_loc.beg_pos.column + 1;
15759 rparen_loc.beg_pos.column = rparen_loc.end_pos.column - 1;
15761 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc), &(yylsp[-1]), &lparen_loc, &rparen_loc);
15764#line 15765 "parse.c"
15768#line 5288 "parse.y"
15770 (yyval.node) = NEW_ZSUPER(&(yyloc));
15773#line 15774 "parse.c"
15777#line 5293 "parse.y"
15779 (yyval.node) = NEW_CALL((yyvsp[-3].node), tAREF, (yyvsp[-1].node), &(yyloc));
15780 fixpos((yyval.node), (yyvsp[-3].node));
15783#line 15784 "parse.c"
15787#line 5301 "parse.y"
15789 (yyval.node) = (yyvsp[-1].node);
15790 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15793#line 15794 "parse.c"
15797#line 5307 "parse.y"
15799 (yyval.node) = (yyvsp[-1].node);
15800 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15803#line 15804 "parse.c"
15807#line 5314 "parse.y"
15808 {(yyval.vars) = dyna_push(p);}
15809#line 15810 "parse.c"
15813#line 5317 "parse.y"
15815 int max_numparam = p->max_numparam;
15816 ID it_id = p->it_id;
15817 p->max_numparam = (yyvsp[-5].num);
15818 p->it_id = (yyvsp[-3].id);
15819 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
15820 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
15822 restore_block_exit(p, (yyvsp[-2].node_exits));
15823 numparam_pop(p, (yyvsp[-4].node));
15824 dyna_pop(p, (yyvsp[-6].vars));
15826#line 15827 "parse.c"
15830#line 5331 "parse.y"
15832 (yyval.vars) = dyna_push(p);
15835#line 15836 "parse.c"
15839#line 5337 "parse.y"
15841 int max_numparam = p->max_numparam;
15842 ID it_id = p->it_id;
15843 p->max_numparam = (yyvsp[-5].num);
15844 p->it_id = (yyvsp[-3].id);
15845 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
15846 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
15849 restore_block_exit(p, (yyvsp[-2].node_exits));
15850 numparam_pop(p, (yyvsp[-4].node));
15851 dyna_pop(p, (yyvsp[-6].vars));
15853#line 15854 "parse.c"
15857#line 5353 "parse.y"
15859 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
15860 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15863#line 15864 "parse.c"
15867#line 5359 "parse.y"
15869 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
15872#line 15873 "parse.c"
15876#line 5364 "parse.y"
15878 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
15879 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15882#line 15883 "parse.c"
15886#line 5370 "parse.y"
15888 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
15891#line 15892 "parse.c"
15895#line 5379 "parse.y"
15897 (yyval.node) = NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]));
15898 fixpos((yyval.node), (yyvsp[-3].node));
15901#line 15902 "parse.c"
15905#line 5390 "parse.y"
15906 {(yyval.tbl) = p->pvtbl; p->pvtbl = st_init_numtable();}
15907#line 15908 "parse.c"
15911#line 5391 "parse.y"
15912 {(yyval.tbl) = p->pktbl; p->pktbl = 0;}
15913#line 15914 "parse.c"
15917#line 5393 "parse.y"
15919 (yyval.ctxt) = p->ctxt;
15920 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
15921 p->command_start = FALSE;
15922 p->ctxt.in_kwarg = 1;
15923 p->ctxt.in_alt_pattern = 0;
15924 p->ctxt.capture_in_pattern = 0;
15926#line 15927 "parse.c"
15930#line 5406 "parse.y"
15932 pop_pktbl(p, (yyvsp[-2].tbl));
15933 pop_pvtbl(p, (yyvsp[-3].tbl));
15934 p->ctxt.in_kwarg = (yyvsp[-4].ctxt).in_kwarg;
15935 p->ctxt.in_alt_pattern = (yyvsp[-4].ctxt).in_alt_pattern;
15936 p->ctxt.capture_in_pattern = (yyvsp[-4].ctxt).capture_in_pattern;
15938#line 15939 "parse.c"
15942#line 5415 "parse.y"
15944 (yyval.node) = NEW_IN((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-8]), &(yylsp[-3]), &NULL_LOC);
15947#line 15948 "parse.c"
15951#line 5427 "parse.y"
15953 (yyval.node) = new_if(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
15954 fixpos((yyval.node), (yyvsp[0].node));
15957#line 15958 "parse.c"
15961#line 5433 "parse.y"
15963 (yyval.node) = new_unless(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
15964 fixpos((yyval.node), (yyvsp[0].node));
15967#line 15968 "parse.c"
15971#line 5442 "parse.y"
15973 (yyval.node) = new_array_pattern_tail(p, 0, 1, 0, 0, &(yyloc));
15974 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-1].node), (yyval.node), &(yyloc));
15977#line 15978 "parse.c"
15981#line 5448 "parse.y"
15983 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15984 nd_set_first_loc((yyval.node), (yylsp[-2]).beg_pos);
15987#line 15988 "parse.c"
15991#line 5454 "parse.y"
15993 (yyval.node) = new_find_pattern(p, 0, (yyvsp[0].node), &(yyloc));
15996#line 15997 "parse.c"
16000#line 5459 "parse.y"
16002 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[0].node), &(yyloc));
16005#line 16006 "parse.c"
16009#line 5464 "parse.y"
16011 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[0].node), &(yyloc));
16014#line 16015 "parse.c"
16018#line 5474 "parse.y"
16020 NODE *n = NEW_LIST((yyvsp[-2].node), &(yyloc));
16021 n = list_append(p, n, (yyvsp[0].node));
16022 (yyval.node) = new_hash(p, n, &(yyloc));
16025#line 16026 "parse.c"
16029#line 5484 "parse.y"
16031 p->ctxt.in_alt_pattern = 1;
16033#line 16034 "parse.c"
16037#line 5488 "parse.y"
16039 if (p->ctxt.capture_in_pattern) {
16040 yyerror1(&(yylsp[-2]),
"alternative pattern after variable capture");
16042 p->ctxt.in_alt_pattern = 0;
16043 (yyval.node) = NEW_OR((yyvsp[-3].node), (yyvsp[0].node), &(yyloc), &(yylsp[-2]));
16046#line 16047 "parse.c"
16050#line 5500 "parse.y"
16052 (yyval.tbl) = (yyvsp[0].tbl);
16055#line 16056 "parse.c"
16059#line 5507 "parse.y"
16061 (yyval.tbl) = (yyvsp[0].tbl);
16064#line 16065 "parse.c"
16068#line 5516 "parse.y"
16070 pop_pktbl(p, (yyvsp[-2].tbl));
16071 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
16072 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16075#line 16076 "parse.c"
16079#line 5523 "parse.y"
16081 pop_pktbl(p, (yyvsp[-2].tbl));
16082 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16083 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16086#line 16087 "parse.c"
16090#line 5530 "parse.y"
16092 pop_pktbl(p, (yyvsp[-2].tbl));
16093 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16094 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16097#line 16098 "parse.c"
16101#line 5537 "parse.y"
16103 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16104 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
16107#line 16108 "parse.c"
16111#line 5543 "parse.y"
16113 pop_pktbl(p, (yyvsp[-2].tbl));
16114 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
16115 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16118#line 16119 "parse.c"
16122#line 5550 "parse.y"
16124 pop_pktbl(p, (yyvsp[-2].tbl));
16125 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16126 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16129#line 16130 "parse.c"
16133#line 5557 "parse.y"
16135 pop_pktbl(p, (yyvsp[-2].tbl));
16136 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
16137 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
16140#line 16141 "parse.c"
16144#line 5564 "parse.y"
16146 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16147 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
16150#line 16151 "parse.c"
16154#line 5570 "parse.y"
16156 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[-1].node), &(yyloc));
16159#line 16160 "parse.c"
16163#line 5575 "parse.y"
16165 (yyval.node) = new_find_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16168#line 16169 "parse.c"
16172#line 5580 "parse.y"
16174 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
16175 (yyval.node) = new_array_pattern(p, 0, 0, (yyval.node), &(yyloc));
16178#line 16179 "parse.c"
16182#line 5586 "parse.y"
16184 p->ctxt.in_kwarg = 0;
16186#line 16187 "parse.c"
16190#line 5590 "parse.y"
16192 pop_pktbl(p, (yyvsp[-4].tbl));
16193 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
16194 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
16197#line 16198 "parse.c"
16201#line 5597 "parse.y"
16203 (yyval.node) = new_hash_pattern_tail(p, 0, 0, &(yyloc));
16204 (yyval.node) = new_hash_pattern(p, 0, (yyval.node), &(yyloc));
16207#line 16208 "parse.c"
16211#line 5603 "parse.y"
16213 pop_pktbl(p, (yyvsp[-2].tbl));
16214 (yyval.node) = (yyvsp[-1].node);
16217#line 16218 "parse.c"
16221#line 5611 "parse.y"
16223 NODE *pre_args = NEW_LIST((yyvsp[0].node), &(yyloc));
16224 (yyval.node) = new_array_pattern_tail(p, pre_args, 0, 0, 0, &(yyloc));
16227#line 16228 "parse.c"
16231#line 5617 "parse.y"
16233 (yyval.node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0, 0, &(yyloc));
16236#line 16237 "parse.c"
16240#line 5622 "parse.y"
16242 (yyval.node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, 0, 0, &(yyloc));
16245#line 16246 "parse.c"
16249#line 5627 "parse.y"
16251 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, (yyvsp[0].node), 0, &(yyloc));
16254#line 16255 "parse.c"
16258#line 5632 "parse.y"
16260 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16263#line 16264 "parse.c"
16267#line 5641 "parse.y"
16269 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
16272#line 16273 "parse.c"
16276#line 5648 "parse.y"
16278 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[0].node), 0, &(yyloc));
16281#line 16282 "parse.c"
16285#line 5653 "parse.y"
16287 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16290#line 16291 "parse.c"
16294#line 5660 "parse.y"
16296 (yyval.node) = new_find_pattern_tail(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
16299#line 16300 "parse.c"
16303#line 5668 "parse.y"
16305 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16307 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16309#line 16310 "parse.c"
16313#line 5674 "parse.y"
16318#line 16319 "parse.c"
16322#line 5682 "parse.y"
16324 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16327#line 16328 "parse.c"
16331#line 5689 "parse.y"
16333 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16336#line 16337 "parse.c"
16340#line 5696 "parse.y"
16342 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].
id), &(yyloc));
16345#line 16346 "parse.c"
16349#line 5701 "parse.y"
16351 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
16354#line 16355 "parse.c"
16358#line 5706 "parse.y"
16360 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
16363#line 16364 "parse.c"
16367#line 5711 "parse.y"
16369 (yyval.node) = new_hash_pattern_tail(p, new_hash(p, 0, &(yyloc)), (yyvsp[0].
id), &(yyloc));
16372#line 16373 "parse.c"
16376#line 5720 "parse.y"
16378 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
16381#line 16382 "parse.c"
16385#line 5727 "parse.y"
16387 error_duplicate_pattern_key(p, (yyvsp[-1].
id), &(yylsp[-1]));
16388 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
16391#line 16392 "parse.c"
16395#line 5733 "parse.y"
16397 error_duplicate_pattern_key(p, (yyvsp[0].
id), &(yylsp[0]));
16398 if ((yyvsp[0].
id) && !is_local_id((yyvsp[0].
id))) {
16399 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
16401 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16402 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
16405#line 16406 "parse.c"
16409#line 5746 "parse.y"
16411 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
16412 if (!(yyvsp[-1].node) || nd_type_p((yyvsp[-1].node), NODE_STR)) {
16413 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
16414 (yyval.id) =
rb_sym2id(rb_node_sym_string_val(node));
16417 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
16418 (yyval.id) = rb_intern_str(STR_NEW0());
16422#line 16423 "parse.c"
16426#line 5761 "parse.y"
16428 (yyval.id) = (yyvsp[0].
id);
16431#line 16432 "parse.c"
16435#line 5766 "parse.y"
16440#line 16441 "parse.c"
16444#line 5773 "parse.y"
16448#line 16449 "parse.c"
16452#line 5780 "parse.y"
16454 (yyval.id) = idNil;
16457#line 16458 "parse.c"
16461#line 3105 "parse.y"
16463 value_expr(p, (yyvsp[-2].node));
16464 value_expr(p, (yyvsp[0].node));
16465 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16468#line 16469 "parse.c"
16472#line 3112 "parse.y"
16474 value_expr(p, (yyvsp[-2].node));
16475 value_expr(p, (yyvsp[0].node));
16476 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16479#line 16480 "parse.c"
16483#line 3119 "parse.y"
16485 value_expr(p, (yyvsp[-1].node));
16486 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16489#line 16490 "parse.c"
16493#line 3125 "parse.y"
16495 value_expr(p, (yyvsp[-1].node));
16496 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc), &(yylsp[0]));
16499#line 16500 "parse.c"
16503#line 3131 "parse.y"
16505 value_expr(p, (yyvsp[0].node));
16506 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16509#line 16510 "parse.c"
16513#line 3137 "parse.y"
16515 value_expr(p, (yyvsp[0].node));
16516 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
16519#line 16520 "parse.c"
16523#line 5795 "parse.y"
16525 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16528#line 16529 "parse.c"
16532#line 5803 "parse.y"
16534 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
16536 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16538#line 16539 "parse.c"
16542#line 5811 "parse.y"
16544 NODE *n = gettable(p, (yyvsp[0].
id), &(yyloc));
16546 n = NEW_ERROR(&(yyloc));
16548 else if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
16549 compile_error(p,
"%"PRIsVALUE
": no such local variable", rb_id2str((yyvsp[0].
id)));
16554#line 16555 "parse.c"
16558#line 5823 "parse.y"
16560 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16563#line 16564 "parse.c"
16567#line 5830 "parse.y"
16569 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
16572#line 16573 "parse.c"
16576#line 5837 "parse.y"
16578 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
16581#line 16582 "parse.c"
16585#line 5842 "parse.y"
16587 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc), &(yylsp[-1]), &(yylsp[0]));
16590#line 16591 "parse.c"
16594#line 5847 "parse.y"
16596 (yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc));
16599#line 16600 "parse.c"
16603#line 5856 "parse.y"
16605 NODE *err = (yyvsp[-3].node);
16606 if ((yyvsp[-3].node)) {
16607 err = NEW_ERRINFO(&(yylsp[-3]));
16608 err = node_assign(p, (yyvsp[-3].node), err, NO_LEX_CTXT, &(yylsp[-3]));
16610 (yyval.node) = NEW_RESBODY((yyvsp[-4].node), (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16611 if ((yyvsp[-4].node)) {
16612 fixpos((yyval.node), (yyvsp[-4].node));
16614 else if ((yyvsp[-3].node)) {
16615 fixpos((yyval.node), (yyvsp[-3].node));
16618 fixpos((yyval.node), (yyvsp[-1].node));
16622#line 16623 "parse.c"
16626#line 5878 "parse.y"
16628 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16631#line 16632 "parse.c"
16635#line 5883 "parse.y"
16637 if (!((yyval.node) = splat_array((yyvsp[0].node)))) (yyval.node) = (yyvsp[0].node);
16639#line 16640 "parse.c"
16643#line 5890 "parse.y"
16645 (yyval.node) = (yyvsp[0].node);
16648#line 16649 "parse.c"
16652#line 5898 "parse.y"
16654 p->ctxt.in_rescue = (yyvsp[-2].ctxt).in_rescue;
16655 (yyval.node) = (yyvsp[-1].node);
16656 void_expr(p, void_stmts(p, (yyval.node)));
16659#line 16660 "parse.c"
16663#line 5912 "parse.y"
16665 if (!(yyvsp[0].node)) {
16666 (yyval.node) = NEW_STR(STRING_NEW0(), &(yyloc));
16669 (yyval.node) = evstr2dstr(p, (yyvsp[0].node));
16673#line 16674 "parse.c"
16677#line 5926 "parse.y"
16679 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16682#line 16683 "parse.c"
16686#line 5933 "parse.y"
16688 (yyval.node) = heredoc_dedent(p, (yyvsp[-1].node));
16689 if ((yyval.node)) nd_set_loc((yyval.node), &(yyloc));
16691 if (p->heredoc_indent > 0) {
16693 p->heredoc_indent = 0;
16697#line 16698 "parse.c"
16701#line 5946 "parse.y"
16703 (yyval.node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
16705 if (p->heredoc_indent > 0) {
16707 p->heredoc_indent = 0;
16711#line 16712 "parse.c"
16715#line 5958 "parse.y"
16717 (yyval.node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc), &(yylsp[-2]), &(yylsp[-1]), &(yylsp[0]));
16720#line 16721 "parse.c"
16724#line 3154 "parse.y"
16726 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16729#line 16730 "parse.c"
16733#line 5968 "parse.y"
16738#line 16739 "parse.c"
16742#line 5973 "parse.y"
16744 (yyval.node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
16747#line 16748 "parse.c"
16751#line 5982 "parse.y"
16753 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16756#line 16757 "parse.c"
16760#line 3154 "parse.y"
16762 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16765#line 16766 "parse.c"
16769#line 5992 "parse.y"
16774#line 16775 "parse.c"
16778#line 5997 "parse.y"
16780 (yyval.node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
16783#line 16784 "parse.c"
16787#line 3154 "parse.y"
16789 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16792#line 16793 "parse.c"
16796#line 3154 "parse.y"
16798 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16801#line 16802 "parse.c"
16805#line 6010 "parse.y"
16810#line 16811 "parse.c"
16814#line 6015 "parse.y"
16816 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
16819#line 16820 "parse.c"
16823#line 6022 "parse.y"
16828#line 16829 "parse.c"
16832#line 6027 "parse.y"
16834 (yyval.node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
16837#line 16838 "parse.c"
16841#line 6034 "parse.y"
16846#line 16847 "parse.c"
16850#line 6039 "parse.y"
16852 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16855#line 16856 "parse.c"
16859#line 6046 "parse.y"
16864#line 16865 "parse.c"
16868#line 6051 "parse.y"
16870 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16873#line 16874 "parse.c"
16877#line 6058 "parse.y"
16882#line 16883 "parse.c"
16886#line 6063 "parse.y"
16888 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
16890 (yyval.node) = tail;
16893 (yyval.node) = head;
16896 switch (nd_type(head)) {
16898 head = str2dstr(p, head);
16903 head = list_append(p, NEW_DSTR(0, &(yyloc)), head);
16906 (yyval.node) = list_append(p, head, tail);
16910#line 16911 "parse.c"
16914#line 6091 "parse.y"
16917 (yyval.strterm) = p->lex.strterm;
16918 p->lex.strterm = 0;
16919 SET_LEX_STATE(EXPR_BEG);
16921#line 16922 "parse.c"
16925#line 6098 "parse.y"
16927 p->lex.strterm = (yyvsp[-1].strterm);
16928 (yyval.node) = NEW_EVSTR((yyvsp[0].node), &(yyloc), &(yylsp[-2]), &NULL_LOC);
16929 nd_set_line((yyval.node), (yylsp[0]).end_pos.lineno);
16932#line 16933 "parse.c"
16936#line 6105 "parse.y"
16941 (yyval.strterm) = p->lex.strterm;
16942 p->lex.strterm = 0;
16943 SET_LEX_STATE(EXPR_BEG);
16945#line 16946 "parse.c"
16949#line 6113 "parse.y"
16951 (yyval.num) = p->lex.brace_nest;
16952 p->lex.brace_nest = 0;
16954#line 16955 "parse.c"
16958#line 6117 "parse.y"
16960 (yyval.num) = p->lex.lpar_beg;
16961 p->lex.lpar_beg = -1;
16963#line 16964 "parse.c"
16967#line 6121 "parse.y"
16969 (yyval.num) = p->heredoc_indent;
16970 p->heredoc_indent = 0;
16972#line 16973 "parse.c"
16976#line 6126 "parse.y"
16980 p->lex.strterm = (yyvsp[-5].strterm);
16981 SET_LEX_STATE((yyvsp[-6].state));
16982 p->lex.brace_nest = (yyvsp[-4].num);
16983 p->lex.lpar_beg = (yyvsp[-3].num);
16984 p->heredoc_indent = (yyvsp[-2].num);
16985 p->heredoc_line_indent = -1;
16986 if ((yyvsp[-1].node)) nd_unset_fl_newline((yyvsp[-1].node));
16987 (yyval.node) = new_evstr(p, (yyvsp[-1].node), &(yyloc), &(yylsp[-6]), &(yylsp[0]));
16990#line 16991 "parse.c"
16994#line 6146 "parse.y"
16996 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16999#line 17000 "parse.c"
17003#line 6158 "parse.y"
17005 SET_LEX_STATE(EXPR_END);
17006 VALUE str = rb_id2str((yyvsp[0].
id));
17013 if (!str) str = STR_NEW0();
17014 (yyval.node) = NEW_SYM(str, &(yyloc));
17017#line 17018 "parse.c"
17021#line 6178 "parse.y"
17023 SET_LEX_STATE(EXPR_END);
17024 (yyval.node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
17027#line 17028 "parse.c"
17031#line 6187 "parse.y"
17033 (yyval.node) = (yyvsp[0].node);
17034 negate_lit(p, (yyval.node), &(yyloc));
17037#line 17038 "parse.c"
17041#line 6209 "parse.y"
17042 {(yyval.id) = KWD2EID(nil, (yyvsp[0].
id));}
17043#line 17044 "parse.c"
17047#line 6210 "parse.y"
17048 {(yyval.id) = KWD2EID(self, (yyvsp[0].
id));}
17049#line 17050 "parse.c"
17053#line 6211 "parse.y"
17054 {(yyval.id) = KWD2EID(
true, (yyvsp[0].
id));}
17055#line 17056 "parse.c"
17059#line 6212 "parse.y"
17060 {(yyval.id) = KWD2EID(
false, (yyvsp[0].
id));}
17061#line 17062 "parse.c"
17065#line 6213 "parse.y"
17066 {(yyval.id) = KWD2EID(_FILE__, (yyvsp[0].
id));}
17067#line 17068 "parse.c"
17071#line 6214 "parse.y"
17072 {(yyval.id) = KWD2EID(_LINE__, (yyvsp[0].
id));}
17073#line 17074 "parse.c"
17077#line 6215 "parse.y"
17078 {(yyval.id) = KWD2EID(_ENCODING__, (yyvsp[0].
id));}
17079#line 17080 "parse.c"
17083#line 6219 "parse.y"
17085 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17086 if (ifdef_ripper(id_is_var(p, (yyvsp[0].
id)),
false)) {
17093#line 17094 "parse.c"
17097#line 6229 "parse.y"
17099 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
17102#line 17103 "parse.c"
17106#line 6236 "parse.y"
17109 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
17111#line 17112 "parse.c"
17115#line 6236 "parse.y"
17118 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
17120#line 17121 "parse.c"
17124#line 6247 "parse.y"
17126 SET_LEX_STATE(EXPR_BEG);
17127 p->command_start = TRUE;
17129#line 17130 "parse.c"
17133#line 6252 "parse.y"
17135 (yyval.node) = (yyvsp[-1].node);
17138#line 17139 "parse.c"
17142#line 6261 "parse.y"
17144 p->ctxt.in_argdef = 0;
17145 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[-1]));
17146 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyval.node_args), &(yylsp[-1]));
17149#line 17150 "parse.c"
17153#line 6270 "parse.y"
17155 (yyval.node_args) = (yyvsp[-1].node_args);
17157 SET_LEX_STATE(EXPR_BEG);
17158 p->command_start = TRUE;
17159 p->ctxt.in_argdef = 0;
17161#line 17162 "parse.c"
17165#line 6280 "parse.y"
17167 (yyval.ctxt) = p->ctxt;
17168 p->ctxt.in_kwarg = 1;
17169 p->ctxt.in_argdef = 1;
17170 SET_LEX_STATE(p->lex.state|EXPR_LABEL);
17172#line 17173 "parse.c"
17176#line 6287 "parse.y"
17178 p->ctxt.in_kwarg = (yyvsp[-2].ctxt).in_kwarg;
17179 p->ctxt.in_argdef = 0;
17180 (yyval.node_args) = (yyvsp[-1].node_args);
17181 SET_LEX_STATE(EXPR_BEG);
17182 p->command_start = TRUE;
17185#line 17186 "parse.c"
17189#line 3005 "parse.y"
17191 p->ctxt.in_argdef = 1;
17192 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17195#line 17196 "parse.c"
17199#line 3011 "parse.y"
17201 p->ctxt.in_argdef = 1;
17202 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
17205#line 17206 "parse.c"
17209#line 3020 "parse.y"
17211 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
17214#line 17215 "parse.c"
17218#line 3025 "parse.y"
17220 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
17223#line 17224 "parse.c"
17227#line 2928 "parse.y"
17229 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
17232#line 17233 "parse.c"
17236#line 2933 "parse.y"
17238 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].
id), &(yylsp[-1]));
17241#line 17242 "parse.c"
17245#line 2938 "parse.y"
17247 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
17250#line 17251 "parse.c"
17254#line 2943 "parse.y"
17256 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
17259#line 17260 "parse.c"
17263#line 6299 "parse.y"
17265 ID fwd = (yyvsp[0].id);
17266 if (lambda_beginning_p() ||
17267 (p->lex.lpar_beg >= 0 && p->lex.lpar_beg+1 == p->lex.paren_nest)) {
17268 yyerror0(
"unexpected ... in lambda argument");
17272 add_forwarding_args(p);
17274 (yyval.node_args) = new_args_tail(p, 0, fwd, arg_FWD_BLOCK, &(yylsp[0]));
17275 (yyval.node_args)->nd_ainfo.forwarding = 1;
17278#line 17279 "parse.c"
17282#line 2983 "parse.y"
17284 p->ctxt.in_argdef = 1;
17285 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17288#line 17289 "parse.c"
17292#line 2992 "parse.y"
17294 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
17297#line 17298 "parse.c"
17301#line 2997 "parse.y"
17303 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
17306#line 17307 "parse.c"
17310#line 3092 "parse.y"
17312 (yyval.node_args) = (yyvsp[0].node_args);
17315#line 17316 "parse.c"
17319#line 3097 "parse.y"
17321 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
17324#line 17325 "parse.c"
17328#line 6316 "parse.y"
17330 (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));
17333#line 17334 "parse.c"
17337#line 6321 "parse.y"
17339 (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));
17342#line 17343 "parse.c"
17346#line 6326 "parse.y"
17348 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17351#line 17352 "parse.c"
17355#line 6331 "parse.y"
17357 (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));
17360#line 17361 "parse.c"
17364#line 6336 "parse.y"
17366 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17369#line 17370 "parse.c"
17373#line 6341 "parse.y"
17375 (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));
17378#line 17379 "parse.c"
17382#line 6346 "parse.y"
17384 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17387#line 17388 "parse.c"
17391#line 6351 "parse.y"
17393 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17396#line 17397 "parse.c"
17400#line 6356 "parse.y"
17402 (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));
17405#line 17406 "parse.c"
17409#line 6361 "parse.y"
17411 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
17414#line 17415 "parse.c"
17418#line 6366 "parse.y"
17420 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17423#line 17424 "parse.c"
17427#line 6371 "parse.y"
17429 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
17432#line 17433 "parse.c"
17436#line 6376 "parse.y"
17438 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
17441#line 17442 "parse.c"
17445#line 6381 "parse.y"
17447 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
17450#line 17451 "parse.c"
17454#line 6386 "parse.y"
17456 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
17457 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyval.node_args), &(yylsp[0]));
17460#line 17461 "parse.c"
17464#line 6394 "parse.y"
17466 (yyval.id) = idFWD_KWREST;
17469#line 17470 "parse.c"
17473#line 6401 "parse.y"
17475 static const char mesg[] =
"formal argument cannot be a constant";
17477 yyerror1(&(yylsp[0]), mesg);
17482#line 17483 "parse.c"
17486#line 6410 "parse.y"
17488 static const char mesg[] =
"formal argument cannot be an instance variable";
17490 yyerror1(&(yylsp[0]), mesg);
17495#line 17496 "parse.c"
17499#line 6419 "parse.y"
17501 static const char mesg[] =
"formal argument cannot be a global variable";
17503 yyerror1(&(yylsp[0]), mesg);
17508#line 17509 "parse.c"
17512#line 6428 "parse.y"
17514 static const char mesg[] =
"formal argument cannot be a class variable";
17516 yyerror1(&(yylsp[0]), mesg);
17521#line 17522 "parse.c"
17525#line 6440 "parse.y"
17527 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
17531 p->max_numparam = ORDINAL_PARAM;
17533#line 17534 "parse.c"
17537#line 6450 "parse.y"
17539 arg_var(p, (yyvsp[0].
id));
17540 (yyval.id) = (yyvsp[0].
id);
17542#line 17543 "parse.c"
17546#line 6457 "parse.y"
17548 (yyval.node_args_aux) = NEW_ARGS_AUX((yyvsp[0].
id), 1, &NULL_LOC);
17551#line 17552 "parse.c"
17555#line 6462 "parse.y"
17557 ID tid = internal_id(p);
17559 loc.beg_pos = (yylsp[-1]).beg_pos;
17560 loc.end_pos = (yylsp[-1]).beg_pos;
17562 if (dyna_in_block(p)) {
17563 (yyvsp[-1].node_masgn)->nd_value = NEW_DVAR(tid, &loc);
17566 (yyvsp[-1].node_masgn)->nd_value = NEW_LVAR(tid, &loc);
17568 (yyval.node_args_aux) = NEW_ARGS_AUX(tid, 1, &NULL_LOC);
17569 (yyval.node_args_aux)->nd_next = (NODE *)(yyvsp[-1].node_masgn);
17572#line 17573 "parse.c"
17576#line 6483 "parse.y"
17578 (yyval.node_args_aux) = (yyvsp[-2].node_args_aux);
17579 (yyval.node_args_aux)->nd_plen++;
17580 (yyval.node_args_aux)->nd_next = block_append(p, (yyval.node_args_aux)->nd_next, (yyvsp[0].node_args_aux)->nd_next);
17581 rb_discard_node(p, (NODE *)(yyvsp[0].node_args_aux));
17584#line 17585 "parse.c"
17588#line 6494 "parse.y"
17590 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
17601 arg_var(p, ifdef_ripper(0, (yyvsp[0].
id)));
17603 p->max_numparam = ORDINAL_PARAM;
17604 p->ctxt.in_argdef = 0;
17606#line 17607 "parse.c"
17610#line 6518 "parse.y"
17614#line 17615 "parse.c"
17618#line 6524 "parse.y"
17620 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
17621 (yyval.id) = (yyvsp[0].
id);
17624#line 17625 "parse.c"
17628#line 6530 "parse.y"
17630 arg_var(p, idFWD_KWREST);
17631 (yyval.id) = idFWD_KWREST;
17634#line 17635 "parse.c"
17638#line 6542 "parse.y"
17640 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
17641 (yyval.id) = (yyvsp[0].
id);
17644#line 17645 "parse.c"
17648#line 6548 "parse.y"
17650 arg_var(p, idFWD_REST);
17651 (yyval.id) = idFWD_REST;
17654#line 17655 "parse.c"
17658#line 6560 "parse.y"
17660 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
17661 (yyval.id) = (yyvsp[0].
id);
17664#line 17665 "parse.c"
17668#line 6566 "parse.y"
17670 arg_var(p, idFWD_BLOCK);
17671 (yyval.id) = idFWD_BLOCK;
17674#line 17675 "parse.c"
17678#line 6574 "parse.y"
17680 (yyval.id) = (yyvsp[0].
id);
17683#line 17684 "parse.c"
17687#line 3146 "parse.y"
17689 value_expr(p, (yyvsp[0].node));
17690 (yyval.node) = (yyvsp[0].node);
17692#line 17693 "parse.c"
17696#line 6583 "parse.y"
17698 NODE *expr = last_expr_node((yyvsp[0].node));
17699 switch (nd_type(expr)) {
17709 case NODE_ENCODING:
17712 case NODE_RATIONAL:
17713 case NODE_IMAGINARY:
17717 yyerror1(&expr->nd_loc,
"can't define singleton method for literals");
17722 (yyval.node) = (yyvsp[0].node);
17724#line 17725 "parse.c"
17728#line 6614 "parse.y"
17730 SET_LEX_STATE(EXPR_BEG);
17731 p->ctxt.in_argdef = 0;
17733#line 17734 "parse.c"
17737#line 6619 "parse.y"
17739 p->ctxt.in_argdef = 1;
17740 (yyval.node) = (yyvsp[-1].node);
17743#line 17744 "parse.c"
17747#line 6628 "parse.y"
17749 (yyval.node) = (yyvsp[-1].node);
17752#line 17753 "parse.c"
17756#line 6637 "parse.y"
17758 NODE *assocs = (yyvsp[-2].node);
17759 NODE *tail = (yyvsp[0].node);
17764 NODE *n = RNODE_LIST(tail)->nd_next;
17765 if (!RNODE_LIST(tail)->nd_head && nd_type_p(n, NODE_LIST) &&
17766 nd_type_p((n = RNODE_LIST(n)->nd_head), NODE_HASH)) {
17768 tail = RNODE_HASH(n)->nd_head;
17771 assocs = list_concat(assocs, tail);
17774 (yyval.node) = assocs;
17777#line 17778 "parse.c"
17781#line 6660 "parse.y"
17783 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
17786#line 17787 "parse.c"
17790#line 6665 "parse.y"
17792 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
17795#line 17796 "parse.c"
17799#line 6670 "parse.y"
17801 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
17802 if (!val) val = NEW_ERROR(&(yyloc));
17803 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
17806#line 17807 "parse.c"
17810#line 6677 "parse.y"
17812 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
17813 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
17816#line 17817 "parse.c"
17820#line 6683 "parse.y"
17822 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
17825#line 17826 "parse.c"
17829#line 6688 "parse.y"
17831 forwarding_arg_check(p, idFWD_KWREST, idFWD_ALL,
"keyword rest");
17832 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)),
17833 NEW_LVAR(idFWD_KWREST, &(yyloc)));
17836#line 17837 "parse.c"
17840#line 6735 "parse.y"
17844 if (p->ctxt.in_defined) {
17845 p->ctxt.has_trailing_semicolon = 1;
17848#line 17849 "parse.c"
17852#line 6743 "parse.y"
17854 (yyloc).end_pos = (yyloc).beg_pos;
17857#line 17858 "parse.c"
17861#line 6750 "parse.y"
17863#line 17864 "parse.c"
17867#line 6754 "parse.y"
17872#line 17873 "parse.c"
17876#line 17877 "parse.c"
17891 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc, p);
17893 YYPOPSTACK (yylen);
17895#line 2667 "parse.y"
17896 {after_reduce(yylen, p);}
17897#line 17898 "parse.c"
17908 const int yylhs = yyr1[yyn] - YYNTOKENS;
17909 const int yyi = yypgoto[yylhs] + *yyssp;
17910 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
17912 : yydefgoto[yylhs]);
17924 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
17931 = {yyssp, yytoken, &yylloc};
17932 char const *yymsgp = YY_(
"syntax error");
17933 int yysyntax_error_status;
17934 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
17935 if (yysyntax_error_status == 0)
17937 else if (yysyntax_error_status == -1)
17939 if (yymsg != yymsgbuf)
17940 YYSTACK_FREE (yymsg);
17941 yymsg = YY_CAST (
char *,
17942 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
17945 yysyntax_error_status
17946 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
17952 yymsg_alloc =
sizeof yymsgbuf;
17953 yysyntax_error_status = YYENOMEM;
17956 yyerror (&yylloc, p, yymsgp);
17957 if (yysyntax_error_status == YYENOMEM)
17962 yyerror_range[1] = yylloc;
17963 if (yyerrstatus == 3)
17968 if (yychar <= END_OF_INPUT)
17971 if (yychar == END_OF_INPUT)
17976 yydestruct (
"Error: discarding",
17977 yytoken, &yylval, &yylloc, p);
17999 YYPOPSTACK (yylen);
18001#line 2669 "parse.y"
18002 {after_pop_stack(yylen, p);}
18003#line 18004 "parse.c"
18006 YY_STACK_PRINT (yyss, yyssp, p);
18020 yyn = yypact[yystate];
18021 if (!yypact_value_is_default (yyn))
18023 yyn += YYSYMBOL_YYerror;
18024 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
18026 yyn = yytable[yyn];
18036 yyerror_range[1] = *yylsp;
18037 yydestruct (
"Error: popping",
18038 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
18041#line 2669 "parse.y"
18042 {after_pop_stack(1, p);}
18043#line 18044 "parse.c"
18046 YY_STACK_PRINT (yyss, yyssp, p);
18049 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
18051 YY_IGNORE_MAYBE_UNINITIALIZED_END
18053 yyerror_range[2] = yylloc;
18055 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
18058 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp, p);
18060#line 2668 "parse.y"
18061 {after_shift_error_token(p);}
18062#line 18063 "parse.c"
18089 yyerror (&yylloc, p, YY_(
"memory exhausted"));
18098 if (yychar != YYEMPTY)
18102 yytoken = YYTRANSLATE (yychar);
18103 yydestruct (
"Cleanup: discarding lookahead",
18104 yytoken, &yylval, &yylloc, p);
18108 YYPOPSTACK (yylen);
18109 YY_STACK_PRINT (yyss, yyssp, p);
18110 while (yyssp != yyss)
18112 yydestruct (
"Cleanup: popping",
18113 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
18118 YYSTACK_FREE (yyss);
18120 if (yymsg != yymsgbuf)
18121 YYSTACK_FREE (yymsg);
18125#line 6759 "parse.y"
18130# define yylval (*p->lval)
18133static int tokadd_string(
struct parser_params*,
int,
int,
int,
long*,rb_encoding**,rb_encoding**);
18134static void tokaddmbc(
struct parser_params *p,
int c, rb_encoding *enc);
18135static enum yytokentype parse_string(
struct parser_params*,rb_strterm_literal_t*);
18136static enum yytokentype here_document(
struct parser_params*,rb_strterm_heredoc_t*);
18138#define set_parser_s_value(x) (ifdef_ripper(p->s_value = (x), (void)0))
18140# define set_yylval_node(x) { \
18141 YYLTYPE _cur_loc; \
18142 rb_parser_set_location(p, &_cur_loc); \
18143 yylval.node = (x); \
18144 set_parser_s_value(STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)); \
18146# define set_yylval_str(x) \
18148 set_yylval_node(NEW_STR(x, &_cur_loc)); \
18149 set_parser_s_value(rb_str_new_mutable_parser_string(x)); \
18151# define set_yylval_num(x) { \
18152 yylval.num = (x); \
18153 set_parser_s_value(x); \
18155# define set_yylval_id(x) (yylval.id = (x))
18156# define set_yylval_name(x) { \
18157 (yylval.id = (x)); \
18158 set_parser_s_value(ID2SYM(x)); \
18160# define yylval_id() (yylval.id)
18162#define set_yylval_noname() set_yylval_id(keyword_nil)
18163#define has_delayed_token(p) (p->delayed.token != NULL)
18166#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
18167#define dispatch_scan_event(p, t) parser_dispatch_scan_event(p, t, __LINE__)
18172 const char *
const pcur = p->lex.pcur;
18173 const char *
const ptok = p->lex.ptok;
18174 if (p->keep_tokens && (pcur < ptok)) {
18175 rb_bug(
"lex.pcur < lex.ptok. (line: %d) %"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"",
18176 p->ruby_sourceline, ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur);
18178 return pcur > ptok;
18185 case '"':
return "\\\"";
18186 case '\\':
return "\\\\";
18187 case '\0':
return "\\0";
18188 case '\n':
return "\\n";
18189 case '\r':
return "\\r";
18190 case '\t':
return "\\t";
18191 case '\f':
return "\\f";
18192 case '\013':
return "\\v";
18193 case '\010':
return "\\b";
18194 case '\007':
return "\\a";
18195 case '\033':
return "\\e";
18196 case '\x7f':
return "\\c?";
18201static rb_parser_string_t *
18202rb_parser_str_escape(
struct parser_params *p, rb_parser_string_t *str)
18204 rb_encoding *enc = p->enc;
18205 const char *
ptr = str->ptr;
18206 const char *pend =
ptr + str->len;
18207 const char *prev =
ptr;
18208 char charbuf[5] = {
'\\',
'x', 0, 0, 0};
18209 rb_parser_string_t * result = rb_parser_string_new(p, 0, 0);
18211 while (
ptr < pend) {
18214 int n = rb_enc_precise_mbclen(
ptr, pend, enc);
18216 if (
ptr > prev) parser_str_cat(result, prev,
ptr - prev);
18217 n = rb_enc_mbminlen(enc);
18218 if (pend <
ptr + n)
18219 n = (int)(pend -
ptr);
18221 c = *
ptr & 0xf0 >> 4;
18222 charbuf[2] = (c < 10) ?
'0' + c :
'A' + c - 10;
18224 charbuf[3] = (c < 10) ?
'0' + c :
'A' + c - 10;
18225 parser_str_cat(result, charbuf, 4);
18231 c = rb_enc_mbc_to_codepoint(
ptr, pend, enc);
18233 cc = escaped_char(c);
18235 if (
ptr - n > prev) parser_str_cat(result, prev,
ptr - n - prev);
18236 parser_str_cat_cstr(result, cc);
18239 else if (rb_enc_isascii(c, enc) &&
ISPRINT(c)) {
18242 if (
ptr - n > prev) {
18243 parser_str_cat(result, prev,
ptr - n - prev);
18246 parser_str_cat(result, prev,
ptr - prev);
18250 if (
ptr > prev) parser_str_cat(result, prev,
ptr - prev);
18256parser_append_tokens(
struct parser_params *p, rb_parser_string_t *str,
enum yytokentype t,
int line)
18258 rb_parser_ast_token_t *token =
xcalloc(1,
sizeof(rb_parser_ast_token_t));
18259 token->id = p->token_id;
18260 token->type_name = parser_token2char(p, t);
18262 token->loc.beg_pos = p->yylloc->beg_pos;
18263 token->loc.end_pos = p->yylloc->end_pos;
18264 rb_parser_ary_push_ast_token(p, p->tokens, token);
18268 rb_parser_string_t *str_escaped = rb_parser_str_escape(p, str);
18269 rb_parser_printf(p,
"Append tokens (line: %d) [%d, :%s, \"%s\", [%d, %d, %d, %d]]\n",
18270 line, token->id, token->type_name, str_escaped->ptr,
18271 token->loc.beg_pos.lineno, token->loc.beg_pos.column,
18272 token->loc.end_pos.lineno, token->loc.end_pos.column);
18273 rb_parser_string_free(p, str_escaped);
18278parser_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t,
int line)
18280 debug_token_line(p,
"parser_dispatch_scan_event", line);
18282 if (!parser_has_token(p))
return;
18284 RUBY_SET_YYLLOC(*p->yylloc);
18286 if (p->keep_tokens) {
18287 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pcur - p->lex.ptok, p->enc);
18288 parser_append_tokens(p, str, t, line);
18294#define dispatch_delayed_token(p, t) parser_dispatch_delayed_token(p, t, __LINE__)
18296parser_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t,
int line)
18298 debug_token_line(p,
"parser_dispatch_delayed_token", line);
18300 if (!has_delayed_token(p))
return;
18302 RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(*p->yylloc);
18304 if (p->keep_tokens) {
18306 parser_append_tokens(p, p->delayed.token, t, line);
18309 rb_parser_string_free(p, p->delayed.token);
18312 p->delayed.token = NULL;
18315#define literal_flush(p, ptr) ((void)(ptr))
18320 if (p->lex.pcur < p->lex.ptok) rb_raise(
rb_eRuntimeError,
"lex.pcur < lex.ptok");
18321 return p->lex.pcur > p->lex.ptok;
18325ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
18327 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
18328 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
18329 RUBY_SET_YYLLOC(*p->yylloc);
18335ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
18337 if (!ripper_has_scan_event(p))
return;
18339 set_parser_s_value(ripper_scan_event_val(p, t));
18341#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
18344ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
18347 int saved_line = p->ruby_sourceline;
18348 const char *saved_tokp = p->lex.ptok;
18349 VALUE s_value, str;
18351 if (!has_delayed_token(p))
return;
18352 p->ruby_sourceline = p->delayed.beg_line;
18353 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
18354 str = rb_str_new_mutable_parser_string(p->delayed.token);
18355 rb_parser_string_free(p, p->delayed.token);
18356 s_value = ripper_dispatch1(p, ripper_token2eventid(t), str);
18357 set_parser_s_value(s_value);
18358 p->delayed.token = NULL;
18359 p->ruby_sourceline = saved_line;
18360 p->lex.ptok = saved_tokp;
18362#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
18366is_identchar(
struct parser_params *p,
const char *
ptr,
const char *MAYBE_UNUSED(ptr_end), rb_encoding *enc)
18368 return rb_enc_isalnum((
unsigned char)*
ptr, enc) || *
ptr ==
'_' || !ISASCII(*
ptr);
18374 const char *
ptr = p->lex.pcur + at;
18375 if (lex_eol_ptr_n_p(p,
ptr,
len-1))
return false;
18376 if (memcmp(
ptr, str,
len))
return false;
18377 if (lex_eol_ptr_n_p(p,
ptr,
len))
return true;
18379 case '!':
case '?':
return false;
18381 return !is_identchar(p,
ptr+
len, p->lex.pend, p->enc);
18387 return !(p)->eofp && is_identchar(p, p->lex.pcur-1, p->lex.pend, p->enc);
18393 return ISASCII(*(p->lex.pcur-1));
18397token_info_setup(
token_info *ptinfo,
const char *
ptr,
const rb_code_location_t *loc)
18399 int column = 1, nonspc = 0, i;
18400 for (i = 0; i < loc->beg_pos.column; i++,
ptr++) {
18401 if (*
ptr ==
'\t') {
18402 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
18405 if (*
ptr !=
' ' && *
ptr !=
'\t') {
18410 ptinfo->beg = loc->beg_pos;
18411 ptinfo->indent = column;
18412 ptinfo->nonspc = nonspc;
18416token_info_push(
struct parser_params *p,
const char *token,
const rb_code_location_t *loc)
18420 if (!p->token_info_enabled)
return;
18422 ptinfo->token = token;
18423 ptinfo->next = p->token_info;
18424 token_info_setup(ptinfo, p->lex.pbeg, loc);
18426 p->token_info = ptinfo;
18430token_info_pop(
struct parser_params *p,
const char *token,
const rb_code_location_t *loc)
18434 if (!ptinfo_beg)
return;
18437 token_info_warn(p, token, ptinfo_beg, 1, loc);
18439 p->token_info = ptinfo_beg->next;
18440 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
18444token_info_drop(
struct parser_params *p,
const char *token, rb_code_position_t beg_pos)
18448 if (!ptinfo_beg)
return;
18449 p->token_info = ptinfo_beg->next;
18451 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
18452 ptinfo_beg->beg.column != beg_pos.column ||
18453 strcmp(ptinfo_beg->token, token)) {
18454 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
18455 beg_pos.lineno, beg_pos.column, token,
18456 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
18457 ptinfo_beg->token);
18460 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
18464token_info_warn(
struct parser_params *p,
const char *token,
token_info *ptinfo_beg,
int same,
const rb_code_location_t *loc)
18466 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
18467 if (!p->token_info_enabled)
return;
18468 if (!ptinfo_beg)
return;
18469 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
18470 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
18471 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
18472 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
18473 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
18474 rb_warn3L(ptinfo_end->beg.lineno,
18475 "mismatched indentations at '%s' with '%s' at %d",
18476 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
18482 int len = rb_enc_precise_mbclen(
ptr, p->lex.pend, p->enc);
18484 compile_error(p,
"invalid multibyte char (%s)", rb_enc_name(p->enc));
18492parser_show_error_line(
struct parser_params *p,
const YYLTYPE *yylloc)
18494 rb_parser_string_t *str;
18495 int lineno = p->ruby_sourceline;
18499 else if (yylloc->beg_pos.lineno == lineno) {
18500 str = p->lex.lastline;
18505 ruby_show_error_line(p, p->error_buffer, yylloc, lineno, str);
18509parser_yyerror(
struct parser_params *p,
const rb_code_location_t *yylloc,
const char *msg)
18515 yylloc = RUBY_SET_YYLLOC(current);
18517 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
18518 p->ruby_sourceline != yylloc->end_pos.lineno)) {
18522 parser_compile_error(p, yylloc,
"%s", msg);
18523 parser_show_error_line(p, yylloc);
18531 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
18535ruby_show_error_line(
struct parser_params *p,
VALUE errbuf,
const YYLTYPE *yylloc,
int lineno, rb_parser_string_t *str)
18538 const int max_line_margin = 30;
18539 const char *
ptr, *ptr_end, *pt, *pb;
18540 const char *pre =
"", *post =
"", *pend;
18541 const char *code =
"", *caret =
"";
18543 const char *
const pbeg = PARSER_STRING_PTR(str);
18548 if (!yylloc)
return;
18549 pend = rb_parser_string_end(str);
18550 if (pend > pbeg && pend[-1] ==
'\n') {
18551 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
18555 if (lineno == yylloc->end_pos.lineno &&
18556 (pend - pbeg) > yylloc->end_pos.column) {
18557 pt = pbeg + yylloc->end_pos.column;
18560 ptr = ptr_end = pt;
18561 lim =
ptr - pbeg > max_line_margin ?
ptr - max_line_margin : pbeg;
18562 while ((lim <
ptr) && (*(
ptr-1) !=
'\n'))
ptr--;
18564 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
18565 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
18570 ptr = rb_enc_prev_char(pbeg,
ptr, pt, rb_parser_str_get_encoding(str));
18571 if (
ptr > pbeg) pre =
"...";
18573 if (ptr_end < pend) {
18574 ptr_end = rb_enc_prev_char(pt, ptr_end, pend, rb_parser_str_get_encoding(str));
18575 if (ptr_end < pend) post =
"...";
18579 if (lineno == yylloc->beg_pos.lineno) {
18580 pb += yylloc->beg_pos.column;
18581 if (pb > pt) pb = pt;
18587 if (
RTEST(errbuf)) {
18588 mesg = rb_attr_get(errbuf, idMesg);
18589 if (char_at_end(p, mesg,
'\n') !=
'\n')
18593 mesg = rb_enc_str_new(0, 0, rb_parser_str_get_encoding(str));
18595 if (!errbuf && rb_stderr_tty_p()) {
18596#define CSI_BEGIN "\033["
18599 CSI_BEGIN
""CSI_SGR
"%s"
18600 CSI_BEGIN
"1"CSI_SGR
"%.*s"
18601 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
18602 CSI_BEGIN
";1"CSI_SGR
"%.*s"
18603 CSI_BEGIN
""CSI_SGR
"%s"
18607 (
int)(pt - pb), pb,
18608 (
int)(ptr_end - pt), pt,
18615 lim = pt < pend ? pt : pend;
18616 i = (int)(lim -
ptr);
18622 *p2++ = *
ptr++ ==
'\t' ?
'\t' :
' ';
18628 memset(p2,
'~', (lim -
ptr));
18632 rb_str_catf(mesg,
"%s%.*s%s\n""%s%s\n",
18633 pre, (
int)
len, code, post,
18636 if (!errbuf) rb_write_error_str(mesg);
18641parser_yyerror(
struct parser_params *p,
const YYLTYPE *yylloc,
const char *msg)
18643 const char *pcur = 0, *ptok = 0;
18644 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
18645 p->ruby_sourceline == yylloc->end_pos.lineno) {
18646 pcur = p->lex.pcur;
18647 ptok = p->lex.ptok;
18648 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
18649 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
18651 parser_yyerror0(p, msg);
18653 p->lex.ptok = ptok;
18654 p->lex.pcur = pcur;
18662 dispatch1(parse_error, STR_NEW2(msg));
18668parser_show_error_line(
struct parser_params *p,
const YYLTYPE *yylloc)
18674vtable_size(
const struct vtable *tbl)
18676 if (!DVARS_TERMINAL_P(tbl)) {
18694 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
18699#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
18702vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
18707 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
18710 if (!DVARS_TERMINAL_P(tbl)) {
18712 ruby_sized_xfree(tbl->tbl, tbl->capa *
sizeof(
ID));
18714 ruby_sized_xfree(tbl,
sizeof(*tbl));
18717#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
18720vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
18725 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
18726 line, name, (
void *)tbl, rb_id2name(
id));
18729 if (DVARS_TERMINAL_P(tbl)) {
18730 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
18733 if (tbl->pos == tbl->capa) {
18734 tbl->capa = tbl->capa * 2;
18735 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
18737 tbl->tbl[tbl->pos++] = id;
18739#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
18742vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
18743 struct vtable *tbl,
int n)
18746 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
18747 line, name, (
void *)tbl, n);
18749 if (tbl->pos < n) {
18750 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
18755#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
18758vtable_included(
const struct vtable * tbl,
ID id)
18762 if (!DVARS_TERMINAL_P(tbl)) {
18763 for (i = 0; i < tbl->pos; i++) {
18764 if (tbl->tbl[i] ==
id) {
18777 return strcmp(p->ruby_sourcefile,
"-e") == 0;
18781static NODE *parser_append_options(
struct parser_params *p, NODE *node);
18784yycompile0(
VALUE arg)
18791 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string) && !e_option_supplied(p)) {
18795 if (p->debug_lines) {
18796 p->ast->body.script_lines = p->debug_lines;
18800#define RUBY_DTRACE_PARSE_HOOK(name) \
18801 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
18802 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
18804 RUBY_DTRACE_PARSE_HOOK(BEGIN);
18806 RUBY_DTRACE_PARSE_HOOK(END);
18808 p->debug_lines = 0;
18810 xfree(p->lex.strterm);
18811 p->lex.strterm = 0;
18812 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
18813 if (n || p->error_p) {
18814 VALUE mesg = p->error_buffer;
18816 mesg = syntax_error_new();
18818 if (!p->error_tolerant) {
18819 rb_set_errinfo(mesg);
18823 tree = p->eval_tree;
18825 tree = NEW_NIL(&NULL_LOC);
18828 rb_parser_ary_t *tokens = p->tokens;
18830 NODE *body = parser_append_options(p, RNODE_SCOPE(tree)->nd_body);
18831 prelude = block_append(p, p->eval_tree_begin, body);
18832 RNODE_SCOPE(tree)->nd_body = prelude;
18833 p->ast->body.frozen_string_literal = p->frozen_string_literal;
18834 p->ast->body.coverage_enabled = cov;
18835 if (p->keep_tokens) {
18836 p->ast->node_buffer->tokens = tokens;
18840 p->ast->body.root = tree;
18841 p->ast->body.line_count = p->line_count;
18849 if (
NIL_P(fname)) {
18850 p->ruby_sourcefile_string =
Qnil;
18851 p->ruby_sourcefile =
"(none)";
18854 p->ruby_sourcefile_string = rb_str_to_interned_str(fname);
18857 p->ruby_sourceline = line - 1;
18861 p->ast = ast = rb_ast_new();
18862 compile_callback(yycompile0, (
VALUE)p);
18873static rb_encoding *
18874must_be_ascii_compatible(
struct parser_params *p, rb_parser_string_t *s)
18876 rb_encoding *enc = rb_parser_str_get_encoding(s);
18877 if (!rb_enc_asciicompat(enc)) {
18878 rb_raise(rb_eArgError,
"invalid source encoding");
18883static rb_parser_string_t *
18886 rb_parser_string_t *line = (*p->lex.gets)(p, p->lex.input, p->line_count);
18887 if (!line)
return 0;
18889 string_buffer_append(p, line);
18890 must_be_ascii_compatible(p, line);
18896rb_parser_compile(rb_parser_t *p, rb_parser_lex_gets_func *gets,
VALUE fname, rb_parser_input_data input,
int line)
18898 p->lex.gets = gets;
18899 p->lex.input = input;
18900 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
18902 return yycompile(p, fname, line);
18906#define STR_FUNC_ESCAPE 0x01
18907#define STR_FUNC_EXPAND 0x02
18908#define STR_FUNC_REGEXP 0x04
18909#define STR_FUNC_QWORDS 0x08
18910#define STR_FUNC_SYMBOL 0x10
18911#define STR_FUNC_INDENT 0x20
18912#define STR_FUNC_LABEL 0x40
18913#define STR_FUNC_LIST 0x4000
18914#define STR_FUNC_TERM 0x8000
18917 str_label = STR_FUNC_LABEL,
18919 str_dquote = (STR_FUNC_EXPAND),
18920 str_xquote = (STR_FUNC_EXPAND),
18921 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
18922 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
18923 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
18924 str_ssym = (STR_FUNC_SYMBOL),
18925 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
18928static rb_parser_string_t *
18929parser_str_new(
struct parser_params *p,
const char *
ptr,
long len, rb_encoding *enc,
int func, rb_encoding *enc0)
18931 rb_parser_string_t *pstr;
18933 pstr = rb_parser_encoding_string_new(p,
ptr,
len, enc);
18935 if (!(func & STR_FUNC_REGEXP)) {
18936 if (rb_parser_is_ascii_string(p, pstr)) {
18938 else if (rb_is_usascii_enc((
void *)enc0) && enc != rb_utf8_encoding()) {
18940 enc = rb_ascii8bit_encoding();
18941 PARSER_ENCODING_CODERANGE_SET(pstr, enc, RB_PARSER_ENC_CODERANGE_VALID);
18949strterm_is_heredoc(rb_strterm_t *strterm)
18951 return strterm->heredoc;
18954static rb_strterm_t *
18955new_strterm(
struct parser_params *p,
int func,
int term,
int paren)
18957 rb_strterm_t *strterm =
ZALLOC(rb_strterm_t);
18958 strterm->u.literal.func = func;
18959 strterm->u.literal.term = term;
18960 strterm->u.literal.paren = paren;
18964static rb_strterm_t *
18967 rb_strterm_t *strterm =
ZALLOC(rb_strterm_t);
18968 strterm->heredoc =
true;
18972#define peek(p,c) peek_n(p, (c), 0)
18973#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
18974#define peekc(p) peekc_n(p, 0)
18975#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
18977#define add_delayed_token(p, tok, end) parser_add_delayed_token(p, tok, end, __LINE__)
18979parser_add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end,
int line)
18981 debug_token_line(p,
"add_delayed_token", line);
18984 if (has_delayed_token(p)) {
18985 bool next_line = parser_string_char_at_end(p, p->delayed.token, 0) ==
'\n';
18986 int end_line = (next_line ? 1 : 0) + p->delayed.end_line;
18987 int end_col = (next_line ? 0 : p->delayed.end_col);
18988 if (end_line != p->ruby_sourceline || end_col != tok - p->lex.pbeg) {
18989 dispatch_delayed_token(p, tSTRING_CONTENT);
18992 if (!has_delayed_token(p)) {
18993 p->delayed.token = rb_parser_string_new(p, 0, 0);
18994 rb_parser_enc_associate(p, p->delayed.token, p->enc);
18995 p->delayed.beg_line = p->ruby_sourceline;
18996 p->delayed.beg_col =
rb_long2int(tok - p->lex.pbeg);
18998 parser_str_cat(p->delayed.token, tok, end - tok);
18999 p->delayed.end_line = p->ruby_sourceline;
19000 p->delayed.end_col =
rb_long2int(end - p->lex.pbeg);
19006set_lastline(
struct parser_params *p, rb_parser_string_t *str)
19008 p->lex.pbeg = p->lex.pcur = PARSER_STRING_PTR(str);
19009 p->lex.pend = p->lex.pcur + PARSER_STRING_LEN(str);
19010 p->lex.lastline = str;
19016 rb_parser_string_t *str = p->lex.nextline;
19017 p->lex.nextline = 0;
19022 if (!lex_eol_ptr_p(p, p->lex.pbeg) && *(p->lex.pend-1) !=
'\n') {
19026 if (!p->lex.input || !(str = lex_getline(p))) {
19033 if (p->debug_lines) {
19034 if (set_encoding) rb_parser_enc_associate(p, str, p->enc);
19035 rb_parser_string_t *copy = rb_parser_string_deep_copy(p, str);
19036 rb_parser_ary_push_script_line(p, p->debug_lines, copy);
19039 p->cr_seen = FALSE;
19041 else if (str == AFTER_HEREDOC_WITHOUT_TERMINATOR) {
19045 add_delayed_token(p, p->lex.ptok, p->lex.pend);
19046 if (p->heredoc_end > 0) {
19047 p->ruby_sourceline = p->heredoc_end;
19048 p->heredoc_end = 0;
19050 p->ruby_sourceline++;
19051 set_lastline(p, str);
19059 if (peek(p,
'\n')) {
19071 if (UNLIKELY(lex_eol_p(p) || p->eofp || p->lex.nextline > AFTER_HEREDOC_WITHOUT_TERMINATOR)) {
19072 if (nextline(p, set_encoding))
return -1;
19074 c = (
unsigned char)*p->lex.pcur++;
19075 if (UNLIKELY(c ==
'\r')) {
19076 c = parser_cr(p, c);
19081#define nextc(p) nextc0(p, TRUE)
19086 if (c == -1)
return;
19089 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
19094#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
19096#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
19097#define tok(p) (p)->tokenbuf
19098#define toklen(p) (p)->tokidx
19103 const char *
ptr = p->lex.pcur;
19104 while (!lex_eol_ptr_p(p,
ptr)) {
19105 int c = (
unsigned char)*
ptr++;
19106 int eol = (c ==
'\n' || c ==
'#');
19118 if (!p->tokenbuf) {
19120 p->tokenbuf =
ALLOC_N(
char, 60);
19122 if (p->toksiz > 4096) {
19126 return p->tokenbuf;
19134 if (p->tokidx >= p->toksiz) {
19135 do {p->toksiz *= 2;}
while (p->toksiz < p->tokidx);
19136 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19138 return &p->tokenbuf[p->tokidx-n];
19144 p->tokenbuf[p->tokidx++] = (char)c;
19145 if (p->tokidx >= p->toksiz) {
19147 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19156 c = (int)ruby_scan_hex(p->lex.pcur, 2, numlen);
19159 yyerror0(
"invalid hex escape");
19160 dispatch_scan_event(p, tSTRING_CONTENT);
19163 p->lex.pcur += *numlen;
19167#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
19170escaped_control_code(
int c)
19196#define WARN_SPACE_CHAR(c, prefix) \
19197 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c))
19200tokadd_codepoint(
struct parser_params *p, rb_encoding **encp,
19201 int regexp_literal,
const char *begin)
19203 const int wide = !begin;
19205 int codepoint = (int)ruby_scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
19207 p->lex.pcur += numlen;
19208 if (p->lex.strterm == NULL ||
19209 strterm_is_heredoc(p->lex.strterm) ||
19210 (p->lex.strterm->u.literal.func != str_regexp)) {
19211 if (!begin) begin = p->lex.pcur;
19212 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
19213 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19214 yyerror0(
"invalid Unicode escape");
19215 dispatch_scan_event(p, tSTRING_CONTENT);
19216 return wide && numlen > 0;
19218 if (codepoint > 0x10ffff) {
19219 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19220 yyerror0(
"invalid Unicode codepoint (too large)");
19221 dispatch_scan_event(p, tSTRING_CONTENT);
19224 if ((codepoint & 0xfffff800) == 0xd800) {
19225 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
19226 yyerror0(
"invalid Unicode codepoint");
19227 dispatch_scan_event(p, tSTRING_CONTENT);
19231 if (regexp_literal) {
19232 tokcopy(p, (
int)numlen);
19234 else if (codepoint >= 0x80) {
19235 rb_encoding *utf8 = rb_utf8_encoding();
19236 if (*encp && utf8 != *encp) {
19237 YYLTYPE loc = RUBY_INIT_YYLLOC();
19238 compile_error(p,
"UTF-8 mixed within %s source", rb_enc_name(*encp));
19239 parser_show_error_line(p, &loc);
19243 tokaddmbc(p, codepoint, *encp);
19246 tokadd(p, codepoint);
19256 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19258 p->lex.pcur +=
len - 1;
19266 int term,
int symbol_literal,
int regexp_literal)
19273 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
19275 const int open_brace =
'{', close_brace =
'}';
19277 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
19279 if (peek(p, open_brace)) {
19280 if (regexp_literal && p->lex.strterm->u.literal.func == str_regexp) {
19287 tokadd(p, open_brace);
19288 while (!lex_eol_ptr_p(p, ++p->lex.pcur)) {
19290 if (c == close_brace) {
19295 else if (c == term) {
19298 if (c ==
'\\' && !lex_eol_n_p(p, 1)) {
19300 c = *++p->lex.pcur;
19302 tokadd_mbchar(p, c);
19306 const char *second = NULL;
19307 int c, last = nextc(p);
19308 if (lex_eol_p(p))
goto unterminated;
19309 while (
ISSPACE(c = peekc(p)) && !lex_eol_ptr_p(p, ++p->lex.pcur));
19310 while (c != close_brace) {
19311 if (c == term)
goto unterminated;
19312 if (second == multiple_codepoints)
19313 second = p->lex.pcur;
19314 if (regexp_literal) tokadd(p, last);
19315 if (!tokadd_codepoint(p, encp, regexp_literal, NULL)) {
19318 while (
ISSPACE(c = peekc(p))) {
19319 if (lex_eol_ptr_p(p, ++p->lex.pcur))
goto unterminated;
19322 if (term == -1 && !second)
19323 second = multiple_codepoints;
19326 if (c != close_brace) {
19328 flush_string_content(p, rb_utf8_encoding(), 0);
19329 yyerror0(
"unterminated Unicode escape");
19330 dispatch_scan_event(p, tSTRING_CONTENT);
19333 if (second && second != multiple_codepoints) {
19334 const char *pcur = p->lex.pcur;
19335 p->lex.pcur = second;
19336 dispatch_scan_event(p, tSTRING_CONTENT);
19338 p->lex.pcur = pcur;
19339 yyerror0(multiple_codepoints);
19343 if (regexp_literal) tokadd(p, close_brace);
19348 if (!tokadd_codepoint(p, encp, regexp_literal, p->lex.pcur -
rb_strlen_lit(
"\\u"))) {
19355#define ESCAPE_CONTROL 1
19356#define ESCAPE_META 2
19359read_escape(
struct parser_params *p,
int flags,
const char *begin)
19364 switch (c = nextc(p)) {
19389 case '0':
case '1':
case '2':
case '3':
19390 case '4':
case '5':
case '6':
case '7':
19392 c = (int)ruby_scan_oct(p->lex.pcur, 3, &numlen);
19393 p->lex.pcur += numlen;
19397 c = tok_hex(p, &numlen);
19398 if (numlen == 0)
return 0;
19408 if (flags & ESCAPE_META)
goto eof;
19409 if ((c = nextc(p)) !=
'-') {
19412 if ((c = nextc(p)) ==
'\\') {
19413 switch (peekc(p)) {
19414 case 'u':
case 'U':
19418 return read_escape(p, flags|ESCAPE_META, begin) | 0x80;
19420 else if (c == -1)
goto eof;
19421 else if (!ISASCII(c)) {
19426 int c2 = escaped_control_code(c);
19428 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
19429 WARN_SPACE_CHAR(c2,
"\\M-");
19432 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
19435 else if (
ISCNTRL(c))
goto eof;
19436 return ((c & 0xff) | 0x80);
19440 if ((c = nextc(p)) !=
'-') {
19444 if (flags & ESCAPE_CONTROL)
goto eof;
19445 if ((c = nextc(p))==
'\\') {
19446 switch (peekc(p)) {
19447 case 'u':
case 'U':
19451 c = read_escape(p, flags|ESCAPE_CONTROL, begin);
19455 else if (c == -1)
goto eof;
19456 else if (!ISASCII(c)) {
19461 int c2 = escaped_control_code(c);
19464 if (flags & ESCAPE_META) {
19465 WARN_SPACE_CHAR(c2,
"\\M-");
19468 WARN_SPACE_CHAR(c2,
"");
19472 if (flags & ESCAPE_META) {
19473 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
19476 WARN_SPACE_CHAR(c2,
"\\C-");
19480 else if (
ISCNTRL(c))
goto eof;
19486 flush_string_content(p, p->enc, p->lex.pcur - begin);
19487 yyerror0(
"Invalid escape character syntax");
19488 dispatch_scan_event(p, tSTRING_CONTENT);
19503 int len = rb_enc_codelen(c, enc);
19504 rb_enc_mbcput(c, tokspace(p,
len), enc);
19512 const char *begin = p->lex.pcur;
19514 switch (c = nextc(p)) {
19518 case '0':
case '1':
case '2':
case '3':
19519 case '4':
case '5':
case '6':
case '7':
19521 ruby_scan_oct(--p->lex.pcur, 3, &numlen);
19522 if (numlen == 0)
goto eof;
19523 p->lex.pcur += numlen;
19524 tokcopy(p, (
int)numlen + 1);
19530 tok_hex(p, &numlen);
19531 if (numlen == 0)
return -1;
19532 tokcopy(p, (
int)numlen + 2);
19538 flush_string_content(p, p->enc, p->lex.pcur - begin);
19539 yyerror0(
"Invalid escape character syntax");
19551char_to_option(
int c)
19557 val = RE_ONIG_OPTION_IGNORECASE;
19560 val = RE_ONIG_OPTION_EXTEND;
19563 val = RE_ONIG_OPTION_MULTILINE;
19572#define ARG_ENCODING_FIXED 16
19573#define ARG_ENCODING_NONE 32
19574#define ENC_ASCII8BIT 1
19575#define ENC_EUC_JP 2
19576#define ENC_Windows_31J 3
19580char_to_option_kcode(
int c,
int *option,
int *kcode)
19586 *kcode = ENC_ASCII8BIT;
19587 return (*option = ARG_ENCODING_NONE);
19589 *kcode = ENC_EUC_JP;
19592 *kcode = ENC_Windows_31J;
19599 return (*option = char_to_option(c));
19601 *option = ARG_ENCODING_FIXED;
19614 while (c = nextc(p),
ISALPHA(c)) {
19616 options |= RE_OPTION_ONCE;
19618 else if (char_to_option_kcode(c, &opt, &kc)) {
19620 if (kc != ENC_ASCII8BIT) kcode = c;
19634 YYLTYPE loc = RUBY_INIT_YYLLOC();
19636 compile_error(p,
"unknown regexp option%s - %*s",
19637 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
19638 parser_show_error_line(p, &loc);
19640 return options | RE_OPTION_ENCODING(kcode);
19646 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19647 if (
len < 0)
return -1;
19649 p->lex.pcur += --
len;
19650 if (
len > 0) tokcopy(p,
len);
19655simple_re_meta(
int c)
19658 case '$':
case '*':
case '+':
case '.':
19659 case '?':
case '^':
case '|':
19660 case ')':
case ']':
case '}':
case '>':
19668parser_update_heredoc_indent(
struct parser_params *p,
int c)
19670 if (p->heredoc_line_indent == -1) {
19671 if (c ==
'\n') p->heredoc_line_indent = 0;
19675 p->heredoc_line_indent++;
19678 else if (c ==
'\t') {
19679 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
19680 p->heredoc_line_indent = w * TAB_WIDTH;
19683 else if (c !=
'\n') {
19684 if (p->heredoc_indent > p->heredoc_line_indent) {
19685 p->heredoc_indent = p->heredoc_line_indent;
19687 p->heredoc_line_indent = -1;
19691 p->heredoc_line_indent = 0;
19698parser_mixed_error(
struct parser_params *p, rb_encoding *enc1, rb_encoding *enc2)
19700 YYLTYPE loc = RUBY_INIT_YYLLOC();
19701 const char *n1 = rb_enc_name(enc1), *n2 = rb_enc_name(enc2);
19702 compile_error(p,
"%s mixed within %s source", n1, n2);
19703 parser_show_error_line(p, &loc);
19707parser_mixed_escape(
struct parser_params *p,
const char *beg, rb_encoding *enc1, rb_encoding *enc2)
19709 const char *pos = p->lex.pcur;
19711 parser_mixed_error(p, enc1, enc2);
19716nibble_char_upper(
unsigned int c)
19719 return c + (c < 10 ?
'0' :
'A' - 10);
19724 int func,
int term,
int paren,
long *nest,
19725 rb_encoding **encp, rb_encoding **enc)
19728 bool erred =
false;
19730 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
19731 int top_of_line = FALSE;
19734#define mixed_error(enc1, enc2) \
19735 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
19736#define mixed_escape(beg, enc1, enc2) \
19737 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
19739 while ((c = nextc(p)) != -1) {
19740 if (p->heredoc_indent > 0) {
19741 parser_update_heredoc_indent(p, c);
19744 if (top_of_line && heredoc_end == p->ruby_sourceline) {
19750 if (paren && c == paren) {
19753 else if (c == term) {
19754 if (!nest || !*nest) {
19760 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && !lex_eol_p(p)) {
19761 unsigned char c2 = *p->lex.pcur;
19762 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
19767 else if (c ==
'\\') {
19771 if (func & STR_FUNC_QWORDS)
break;
19772 if (func & STR_FUNC_EXPAND) {
19773 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
19784 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
19788 if ((func & STR_FUNC_EXPAND) == 0) {
19792 tokadd_utf8(p, enc, term,
19793 func & STR_FUNC_SYMBOL,
19794 func & STR_FUNC_REGEXP);
19798 if (c == -1)
return -1;
19800 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
19803 if (func & STR_FUNC_REGEXP) {
19809 c = read_escape(p, 0, p->lex.pcur - 1);
19814 *t++ = nibble_char_upper(c >> 4);
19815 *t++ = nibble_char_upper(c);
19820 if (c == term && !simple_re_meta(c)) {
19825 if ((c = tokadd_escape(p)) < 0)
19827 if (*enc && *enc != *encp) {
19828 mixed_escape(p->lex.ptok+2, *enc, *encp);
19832 else if (func & STR_FUNC_EXPAND) {
19834 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
19835 c = read_escape(p, 0, p->lex.pcur - 1);
19837 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
19840 else if (c != term && !(paren && c == paren)) {
19847 else if (!parser_isascii(p)) {
19852 else if (*enc != *encp) {
19853 mixed_error(*enc, *encp);
19856 if (tokadd_mbchar(p, c) == -1)
return -1;
19859 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
19867 else if (*enc != *encp) {
19868 mixed_error(*enc, *encp);
19874 top_of_line = (c ==
'\n');
19878 if (*enc) *encp = *enc;
19882#define NEW_STRTERM(func, term, paren) new_strterm(p, func, term, paren)
19885flush_string_content(
struct parser_params *p, rb_encoding *enc,
size_t back)
19887 p->lex.pcur -= back;
19888 if (has_delayed_token(p)) {
19889 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
19891 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
19892 p->delayed.end_line = p->ruby_sourceline;
19893 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
19895 dispatch_delayed_token(p, tSTRING_CONTENT);
19896 p->lex.ptok = p->lex.pcur;
19898 dispatch_scan_event(p, tSTRING_CONTENT);
19899 p->lex.pcur += back;
19905#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
19906#define SPECIAL_PUNCT(idx) ( \
19907 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
19908 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
19909 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
19910 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
19911 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
19913const uint_least32_t ruby_global_name_punct_bits[] = {
19919#undef SPECIAL_PUNCT
19922static enum yytokentype
19923parser_peek_variable_name(struct parser_params *p)
19926 const char *ptr = p->lex.pcur;
19928 if (lex_eol_ptr_n_p(p, ptr, 1)) return 0;
19932 if ((c = *ptr) == '-') {
19933 if (lex_eol_ptr_p(p, ++ptr)) return 0;
19936 else if (is_global_name_punct(c) || ISDIGIT(c)) {
19937 return tSTRING_DVAR;
19941 if ((c = *ptr) == '@') {
19942 if (lex_eol_ptr_p(p, ++ptr)) return 0;
19948 p->command_start = TRUE;
19949 yylval.state = p->lex.state;
19950 return tSTRING_DBEG;
19954 if (!ISASCII(c) || c == '_' || ISALPHA(c))
19955 return tSTRING_DVAR;
19959#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
19960#define IS_END() IS_lex_state(EXPR_END_ANY)
19961#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
19962#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
19963#define IS_LABEL_POSSIBLE() (\
19964 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
19966#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
19967#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
19969static inline enum yytokentype
19970parser_string_term(struct parser_params *p, int func)
19972 xfree(p->lex.strterm);
19973 p->lex.strterm = 0;
19974 if (func & STR_FUNC_REGEXP) {
19975 set_yylval_num(regx_options(p));
19976 dispatch_scan_event(p, tREGEXP_END);
19977 SET_LEX_STATE(EXPR_END);
19978 return tREGEXP_END;
19980 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
19982 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
19985 SET_LEX_STATE(EXPR_END);
19986 return tSTRING_END;
19989static enum yytokentype
19990parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
19992 int func = quote->func;
19993 int term = quote->term;
19994 int paren = quote->paren;
19996 rb_encoding *enc = p->enc;
19997 rb_encoding *base_enc = 0;
19998 rb_parser_string_t *lit;
20000 if (func & STR_FUNC_TERM) {
20001 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
20002 SET_LEX_STATE(EXPR_END);
20003 xfree(p->lex.strterm);
20004 p->lex.strterm = 0;
20005 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
20008 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
20009 while (c != '\n' && ISSPACE(c = nextc(p)));
20012 if (func & STR_FUNC_LIST) {
20013 quote->func &= ~STR_FUNC_LIST;
20016 if (c == term && !quote->nest) {
20017 if (func & STR_FUNC_QWORDS) {
20018 quote->func |= STR_FUNC_TERM;
20019 pushback(p, c); /* dispatch the term at tSTRING_END */
20020 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20023 return parser_string_term(p, func);
20026 if (!ISSPACE(c)) pushback(p, c);
20027 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20031 if ((func & STR_FUNC_EXPAND) && c == '#') {
20032 enum yytokentype t = parser_peek_variable_name(p);
20038 if (tokadd_string(p, func, term, paren, "e->nest,
20039 &enc, &base_enc) == -1) {
20042# define unterminated_literal(mesg) yyerror0(mesg)
20044# define unterminated_literal(mesg) compile_error(p, mesg)
20046 literal_flush(p, p->lex.pcur);
20047 if (func & STR_FUNC_QWORDS) {
20048 /* no content to add, bailing out here */
20049 unterminated_literal("unterminated list meets end of file");
20050 xfree(p->lex.strterm);
20051 p->lex.strterm = 0;
20052 return tSTRING_END;
20054 if (func & STR_FUNC_REGEXP) {
20055 unterminated_literal("unterminated regexp meets end of file");
20058 unterminated_literal("unterminated string meets end of file");
20060 quote->func |= STR_FUNC_TERM;
20065 lit = STR_NEW3(tok(p), toklen(p), enc, func);
20066 set_yylval_str(lit);
20067 flush_string_content(p, enc, 0);
20069 return tSTRING_CONTENT;
20072static enum yytokentype
20073heredoc_identifier(struct parser_params *p)
20076 * term_len is length of `<<"END"` except `END`,
20077 * in this case term_len is 4 (<, <, " and ").
20079 long len, offset = p->lex.pcur - p->lex.pbeg;
20080 int c = nextc(p), term, func = 0, quote = 0;
20081 enum yytokentype token = tSTRING_BEG;
20086 func = STR_FUNC_INDENT;
20089 else if (c == '~') {
20091 func = STR_FUNC_INDENT;
20097 func |= str_squote; goto quoted;
20099 func |= str_dquote;
goto quoted;
20101 token = tXSTRING_BEG;
20102 func |= str_xquote;
goto quoted;
20109 while ((c = nextc(p)) != term) {
20110 if (c == -1 || c ==
'\r' || c ==
'\n') {
20111 yyerror0(
"unterminated here document identifier");
20118 if (!parser_is_identchar(p)) {
20120 if (func & STR_FUNC_INDENT) {
20121 pushback(p, indent > 0 ?
'~' :
'-');
20125 func |= str_dquote;
20127 int n = parser_precise_mbclen(p, p->lex.pcur-1);
20128 if (n < 0)
return 0;
20129 p->lex.pcur += --n;
20130 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
20135 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
20136 if ((
unsigned long)
len >= HERETERM_LENGTH_MAX)
20137 yyerror0(
"too long here document identifier");
20138 dispatch_scan_event(p, tHEREDOC_BEG);
20141 p->lex.strterm = new_heredoc(p);
20142 rb_strterm_heredoc_t *here = &p->lex.strterm->u.heredoc;
20143 here->offset = offset;
20144 here->sourceline = p->ruby_sourceline;
20145 here->length = (unsigned)
len;
20146 here->quote = quote;
20148 here->lastline = p->lex.lastline;
20151 p->heredoc_indent = indent;
20152 p->heredoc_line_indent = 0;
20157heredoc_restore(
struct parser_params *p, rb_strterm_heredoc_t *here)
20159 rb_parser_string_t *line;
20160 rb_strterm_t *term = p->lex.strterm;
20162 p->lex.strterm = 0;
20163 line = here->lastline;
20164 p->lex.lastline = line;
20165 p->lex.pbeg = PARSER_STRING_PTR(line);
20166 p->lex.pend = p->lex.pbeg + PARSER_STRING_LEN(line);
20167 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
20168 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
20169 p->heredoc_end = p->ruby_sourceline;
20170 p->ruby_sourceline = (int)here->sourceline;
20171 if (p->eofp) p->lex.nextline = AFTER_HEREDOC_WITHOUT_TERMINATOR;
20177dedent_string_column(
const char *str,
long len,
int width)
20181 for (i = 0; i <
len && col < width; i++) {
20182 if (str[i] ==
' ') {
20185 else if (str[i] ==
'\t') {
20186 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
20187 if (n > width)
break;
20199dedent_string(
struct parser_params *p, rb_parser_string_t *
string,
int width)
20205 len = PARSER_STRING_LEN(
string);
20206 str = PARSER_STRING_PTR(
string);
20208 i = dedent_string_column(str,
len, width);
20211 rb_parser_str_modify(
string);
20212 str = PARSER_STRING_PTR(
string);
20213 if (PARSER_STRING_LEN(
string) !=
len)
20214 rb_fatal(
"literal string changed: %s", PARSER_STRING_PTR(
string));
20216 rb_parser_str_set_len(p,
string,
len - i);
20223 NODE *node, *str_node, *prev_node;
20224 int indent = p->heredoc_indent;
20225 rb_parser_string_t *prev_lit = 0;
20227 if (indent <= 0)
return root;
20228 if (!root)
return root;
20230 prev_node = node = str_node = root;
20231 if (nd_type_p(root, NODE_LIST)) str_node = RNODE_LIST(root)->nd_head;
20234 rb_parser_string_t *lit = RNODE_STR(str_node)->string;
20235 if (nd_fl_newline(str_node)) {
20236 dedent_string(p, lit, indent);
20241 else if (!literal_concat0(p, prev_lit, lit)) {
20245 NODE *end = RNODE_LIST(node)->as.nd_end;
20246 node = RNODE_LIST(prev_node)->nd_next = RNODE_LIST(node)->nd_next;
20248 if (nd_type_p(prev_node, NODE_DSTR))
20249 nd_set_type(prev_node, NODE_STR);
20252 RNODE_LIST(node)->as.nd_end = end;
20257 while ((nd_type_p(node, NODE_LIST) || nd_type_p(node, NODE_DSTR)) && (node = RNODE_LIST(prev_node = node)->nd_next) != 0) {
20259 if (!nd_type_p(node, NODE_LIST))
break;
20260 if ((str_node = RNODE_LIST(node)->nd_head) != 0) {
20261 enum node_type
type = nd_type(str_node);
20262 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
20272whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
20274 const char *beg = p->lex.pbeg;
20275 const char *
ptr = p->lex.pend;
20277 if (
ptr - beg <
len)
return FALSE;
20278 if (
ptr > beg &&
ptr[-1] ==
'\n') {
20279 if (--
ptr > beg &&
ptr[-1] ==
'\r') --
ptr;
20280 if (
ptr - beg <
len)
return FALSE;
20282 if (strncmp(eos,
ptr -=
len,
len))
return FALSE;
20292 if (strncmp(p->lex.pcur, word,
len))
return 0;
20293 if (lex_eol_n_p(p,
len))
return 1;
20294 int c = (
unsigned char)p->lex.pcur[
len];
20297 case '\0':
case '\004':
case '\032':
return 1;
20302#define NUM_SUFFIX_R (1<<0)
20303#define NUM_SUFFIX_I (1<<1)
20304#define NUM_SUFFIX_ALL 3
20310 const char *lastp = p->lex.pcur;
20312 while ((c = nextc(p)) != -1) {
20313 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
20314 result |= (mask & NUM_SUFFIX_I);
20315 mask &= ~NUM_SUFFIX_I;
20317 mask &= ~NUM_SUFFIX_R;
20320 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
20321 result |= (mask & NUM_SUFFIX_R);
20322 mask &= ~NUM_SUFFIX_R;
20325 if (!ISASCII(c) ||
ISALPHA(c) || c ==
'_') {
20326 p->lex.pcur = lastp;
20335static enum yytokentype
20336set_number_literal(
struct parser_params *p,
enum yytokentype
type,
int suffix,
int base,
int seen_point)
20338 enum rb_numeric_type numeric_type = integer_literal;
20340 if (
type == tFLOAT) {
20341 numeric_type = float_literal;
20344 if (suffix & NUM_SUFFIX_R) {
20346 numeric_type = rational_literal;
20348 if (suffix & NUM_SUFFIX_I) {
20354 set_yylval_node(NEW_INTEGER(
strdup(tok(p)), base, &_cur_loc));
20357 set_yylval_node(NEW_FLOAT(
strdup(tok(p)), &_cur_loc));
20360 set_yylval_node(NEW_RATIONAL(
strdup(tok(p)), base, seen_point, &_cur_loc));
20363 set_yylval_node(NEW_IMAGINARY(
strdup(tok(p)), base, seen_point, numeric_type, &_cur_loc));
20364 (void)numeric_type;
20367 rb_bug(
"unexpected token: %d",
type);
20369 SET_LEX_STATE(EXPR_END);
20373#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
20375parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
20377 if (has_delayed_token(p))
20378 dispatch_delayed_token(p, tSTRING_CONTENT);
20381 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
20382 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
20384 if (p->keep_tokens) {
20385 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pend - p->lex.ptok, p->enc);
20386 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
20387 parser_append_tokens(p, str, tHEREDOC_END, line);
20391 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
20396static enum yytokentype
20397here_document(
struct parser_params *p, rb_strterm_heredoc_t *here)
20399 int c, func, indent = 0;
20400 const char *eos, *
ptr, *ptr_end;
20402 rb_parser_string_t *str = 0;
20403 rb_encoding *enc = p->enc;
20404 rb_encoding *base_enc = 0;
20410 eos = PARSER_STRING_PTR(here->lastline) + here->offset;
20411 len = here->length;
20412 indent = (func = here->func) & STR_FUNC_INDENT;
20414 if ((c = nextc(p)) == -1) {
20417 if (!has_delayed_token(p)) {
20418 dispatch_scan_event(p, tSTRING_CONTENT);
20420 else if (p->delayed.end_line + 1 == p->ruby_sourceline) {
20421 if ((
len = p->lex.pcur - p->lex.ptok) > 0) {
20422 if (!(func & STR_FUNC_REGEXP)) {
20426 rb_is_usascii_enc(p->enc) &&
20427 enc != rb_utf8_encoding()) {
20428 enc = rb_ascii8bit_encoding();
20431 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20433 dispatch_delayed_token(p, tSTRING_CONTENT);
20436 dispatch_delayed_token(p, tSTRING_CONTENT);
20437 dispatch_scan_event(p, tSTRING_CONTENT);
20441 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20442 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
20445 SET_LEX_STATE(EXPR_END);
20446 return tSTRING_END;
20452 else if (p->heredoc_line_indent == -1) {
20457 p->heredoc_line_indent = 0;
20459 else if (whole_match_p(p, eos,
len, indent)) {
20460 dispatch_heredoc_end(p);
20462 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20464 SET_LEX_STATE(EXPR_END);
20465 return tSTRING_END;
20468 if (!(func & STR_FUNC_EXPAND)) {
20470 ptr = PARSER_STRING_PTR(p->lex.lastline);
20471 ptr_end = p->lex.pend;
20472 if (ptr_end >
ptr) {
20473 switch (ptr_end[-1]) {
20475 if (--ptr_end ==
ptr || ptr_end[-1] !=
'\r') {
20484 if (p->heredoc_indent > 0) {
20486 while (
ptr + i < ptr_end && parser_update_heredoc_indent(p,
ptr[i]))
20488 p->heredoc_line_indent = 0;
20492 parser_str_cat(str,
ptr, ptr_end -
ptr);
20494 str = rb_parser_encoding_string_new(p,
ptr, ptr_end -
ptr, enc);
20495 if (!lex_eol_ptr_p(p, ptr_end)) parser_str_cat_cstr(str,
"\n");
20497 if (p->heredoc_indent > 0) {
20500 if (nextc(p) == -1) {
20502 rb_parser_string_free(p, str);
20507 }
while (!whole_match_p(p, eos,
len, indent));
20513 enum yytokentype t = parser_peek_variable_name(p);
20514 if (p->heredoc_line_indent != -1) {
20515 if (p->heredoc_indent > p->heredoc_line_indent) {
20516 p->heredoc_indent = p->heredoc_line_indent;
20518 p->heredoc_line_indent = -1;
20527 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
20528 if (p->eofp)
goto error;
20532 if (c ==
'\\') p->heredoc_line_indent = -1;
20534 str = STR_NEW3(tok(p), toklen(p), enc, func);
20536 set_yylval_str(str);
20538 if (bol) nd_set_fl_newline(yylval.node);
20540 flush_string_content(p, enc, 0);
20541 return tSTRING_CONTENT;
20543 tokadd(p, nextc(p));
20544 if (p->heredoc_indent > 0) {
20549 if ((c = nextc(p)) == -1)
goto error;
20550 }
while (!whole_match_p(p, eos,
len, indent));
20551 str = STR_NEW3(tok(p), toklen(p), enc, func);
20553 dispatch_heredoc_end(p);
20554 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20556 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
20559 s_value = p->s_value;
20561 set_yylval_str(str);
20563 set_parser_s_value(s_value);
20567 if (bol) nd_set_fl_newline(yylval.node);
20569 return tSTRING_CONTENT;
20579 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after '%c' operator", WARN_I(c));
20582 rb_warning1(
"ambiguous first argument; put parentheses or a space even after '%c' operator", WARN_I(c));
20595 switch (id_type(
id)) {
20599# define ERR(mesg) (yyerror0(mesg), Qtrue)
20601# define ERR(mesg) WARN_S(mesg)
20604 return ERR(
"formal argument cannot be a constant");
20606 return ERR(
"formal argument cannot be an instance variable");
20608 return ERR(
"formal argument cannot be a global variable");
20610 return ERR(
"formal argument cannot be a class variable");
20612 return ERR(
"formal argument must be local variable");
20615 shadowing_lvar(p,
id);
20623 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
20632 if (
len > 5 && name[nlen =
len - 5] ==
'-') {
20633 if (rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
20636 if (
len > 4 && name[nlen =
len - 4] ==
'-') {
20637 if (rb_memcicmp(name + nlen + 1,
"dos", 3) == 0)
20639 if (rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
20640 !(
len == 8 && rb_memcicmp(name,
"utf8-mac",
len) == 0))
20648parser_set_encode(
struct parser_params *p,
const char *name)
20654 const char *wrong = 0;
20656 case 'e':
case 'E': wrong =
"external";
break;
20657 case 'i':
case 'I': wrong =
"internal";
break;
20658 case 'f':
case 'F': wrong =
"filesystem";
break;
20659 case 'l':
case 'L': wrong =
"locale";
break;
20661 if (wrong &&
STRCASECMP(name, wrong) == 0)
goto unknown;
20662 idx = rb_enc_find_index(name);
20665 excargs[1] = rb_sprintf(
"unknown encoding name: %s", name);
20667 excargs[0] = rb_eArgError;
20668 excargs[2] = rb_make_backtrace();
20669 rb_ary_unshift(excargs[2], rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
20670 VALUE exc = rb_make_exception(3, excargs);
20671 ruby_show_error_line(p, exc, &(YYLTYPE)RUBY_INIT_YYLLOC(), p->ruby_sourceline, p->lex.lastline);
20673 rb_ast_free(p->ast);
20678 enc = rb_enc_from_index(idx);
20679 if (!rb_enc_asciicompat(enc)) {
20680 excargs[1] = rb_sprintf(
"%s is not ASCII compatible", rb_enc_name(enc));
20685 if (p->debug_lines) {
20687 for (i = 0; i < p->debug_lines->len; i++) {
20688 rb_parser_enc_associate(p, p->debug_lines->data[i], enc);
20697 if (p->token_seen)
return false;
20698 return (p->line_count == (p->has_shebang ? 2 : 1));
20701typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
20702typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
20704static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
20707magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
20709 if (!comment_at_top(p)) {
20712 parser_set_encode(p, val);
20716parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
20719 case 't':
case 'T':
20724 case 'f':
case 'F':
20730 return parser_invalid_pragma_value(p, name, val);
20734parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
20736 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
20741parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
20743 int b = parser_get_bool(p, name, val);
20744 if (b >= 0) p->token_info_enabled = b;
20748parser_set_frozen_string_literal(
struct parser_params *p,
const char *name,
const char *val)
20752 if (p->token_seen) {
20753 rb_warning1(
"'%s' is ignored after any tokens", WARN_S(name));
20757 b = parser_get_bool(p, name, val);
20760 p->frozen_string_literal = b;
20764parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
20766 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
20767 if (*s ==
' ' || *s ==
'\t')
continue;
20768 if (*s ==
'#')
break;
20769 rb_warning1(
"'%s' is ignored unless in comment-only line", WARN_S(name));
20774 case 'n':
case 'N':
20776 p->ctxt.shareable_constant_value = rb_parser_shareable_none;
20780 case 'l':
case 'L':
20782 p->ctxt.shareable_constant_value = rb_parser_shareable_literal;
20786 case 'e':
case 'E':
20787 if (
STRCASECMP(val,
"experimental_copy") == 0) {
20788 p->ctxt.shareable_constant_value = rb_parser_shareable_copy;
20791 if (
STRCASECMP(val,
"experimental_everything") == 0) {
20792 p->ctxt.shareable_constant_value = rb_parser_shareable_everything;
20797 parser_invalid_pragma_value(p, name, val);
20800# if WARN_PAST_SCOPE
20802parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
20804 int b = parser_get_bool(p, name, val);
20805 if (b >= 0) p->past_scope_enabled = b;
20811 rb_magic_comment_setter_t func;
20812 rb_magic_comment_length_t length;
20816 {
"coding", magic_comment_encoding, parser_encode_length},
20817 {
"encoding", magic_comment_encoding, parser_encode_length},
20818 {
"frozen_string_literal", parser_set_frozen_string_literal},
20819 {
"shareable_constant_value", parser_set_shareable_constant_value},
20820 {
"warn_indent", parser_set_token_info},
20821# if WARN_PAST_SCOPE
20822 {
"warn_past_scope", parser_set_past_scope},
20827magic_comment_marker(
const char *str,
long len)
20834 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
20835 return str + i + 1;
20840 if (i + 1 >=
len)
return 0;
20841 if (str[i+1] !=
'-') {
20844 else if (str[i-1] !=
'-') {
20848 return str + i + 2;
20863 VALUE name = 0, val = 0;
20864 const char *beg, *end, *vbeg, *vend;
20865#define str_copy(_s, _p, _n) ((_s) \
20866 ? (void)(rb_str_resize((_s), (_n)), \
20867 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
20868 : (void)((_s) = STR_NEW((_p), (_n))))
20870 if (
len <= 7)
return FALSE;
20871 if (!!(beg = magic_comment_marker(str,
len))) {
20872 if (!(end = magic_comment_marker(beg, str +
len - beg)))
20876 len = end - beg - 3;
20886 for (;
len > 0 && *str; str++, --
len) {
20888 case '\'':
case '"':
case ':':
case ';':
20893 for (beg = str;
len > 0; str++, --
len) {
20895 case '\'':
case '"':
case ':':
case ';':
20906 if (!indicator)
return FALSE;
20910 do str++;
while (--
len > 0 &&
ISSPACE(*str));
20912 const char *tok_beg = str;
20914 for (vbeg = ++str; --
len > 0 && *str !=
'"'; str++) {
20915 if (*str ==
'\\') {
20927 for (vbeg = str;
len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --
len, str++);
20930 const char *tok_end = str;
20932 while (
len > 0 && (*str ==
';' ||
ISSPACE(*str))) --
len, str++;
20936 if (
len)
return FALSE;
20940 str_copy(name, beg, n);
20941 s = RSTRING_PTR(name);
20942 for (i = 0; i < n; ++i) {
20943 if (s[i] ==
'-') s[i] =
'_';
20946 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
20949 n = (*mc->length)(p, vbeg, n);
20951 str_copy(val, vbeg, n);
20952 p->lex.ptok = tok_beg;
20953 p->lex.pcur = tok_end;
20954 (*mc->func)(p, mc->name, RSTRING_PTR(val));
20957 }
while (++mc < magic_comments + numberof(magic_comments));
20959 str_copy(val, vbeg, vend - vbeg);
20968set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
20971 const char *beg = str;
20975 if (send - str <= 6)
return;
20977 case 'C':
case 'c': str += 6;
continue;
20978 case 'O':
case 'o': str += 5;
continue;
20979 case 'D':
case 'd': str += 4;
continue;
20980 case 'I':
case 'i': str += 3;
continue;
20981 case 'N':
case 'n': str += 2;
continue;
20982 case 'G':
case 'g': str += 1;
continue;
20983 case '=':
case ':':
20997 if (++str >= send)
return;
21000 if (*str !=
'=' && *str !=
':')
return;
21005 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
21006 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
21009 parser_set_encode(p, RSTRING_PTR(s));
21010 rb_str_resize(s, 0);
21016 int c = nextc0(p, FALSE);
21020 if (peek(p,
'!')) p->has_shebang = 1;
21023 if (!lex_eol_n_p(p, 2) &&
21024 (
unsigned char)p->lex.pcur[0] == 0xbb &&
21025 (
unsigned char)p->lex.pcur[1] == 0xbf) {
21026 p->enc = rb_utf8_encoding();
21029 if (p->debug_lines) {
21030 rb_parser_string_set_encoding(p->lex.lastline, p->enc);
21033 p->lex.pbeg = p->lex.pcur;
21042 p->enc = rb_parser_str_get_encoding(p->lex.lastline);
21046#define ambiguous_operator(tok, op, syn) ( \
21047 rb_warning0("'"op"' after local variable or literal is interpreted as binary operator"), \
21048 rb_warning0("even though it seems like "syn""))
21050#define ambiguous_operator(tok, op, syn) \
21051 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
21053#define warn_balanced(tok, op, syn) ((void) \
21054 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
21055 space_seen && !ISSPACE(c) && \
21056 (ambiguous_operator(tok, op, syn), 0)), \
21057 (enum yytokentype)(tok))
21059static enum yytokentype
21062 yyerror0(
"numeric literal without digits");
21063 if (peek(p,
'_')) nextc(p);
21065 return set_number_literal(p, tINTEGER, 0, 10, 0);
21068static enum yytokentype
21071 int is_float, seen_point, seen_e, nondigit;
21074 is_float = seen_point = seen_e = nondigit = 0;
21075 SET_LEX_STATE(EXPR_END);
21077 if (c ==
'-' || c ==
'+') {
21082 int start = toklen(p);
21084 if (c ==
'x' || c ==
'X') {
21090 if (nondigit)
break;
21097 }
while ((c = nextc(p)) != -1);
21101 if (toklen(p) == start) {
21102 return no_digits(p);
21104 else if (nondigit)
goto trailing_uc;
21105 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21106 return set_number_literal(p, tINTEGER, suffix, 16, 0);
21108 if (c ==
'b' || c ==
'B') {
21111 if (c ==
'0' || c ==
'1') {
21114 if (nondigit)
break;
21118 if (c !=
'0' && c !=
'1')
break;
21121 }
while ((c = nextc(p)) != -1);
21125 if (toklen(p) == start) {
21126 return no_digits(p);
21128 else if (nondigit)
goto trailing_uc;
21129 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21130 return set_number_literal(p, tINTEGER, suffix, 2, 0);
21132 if (c ==
'd' || c ==
'D') {
21138 if (nondigit)
break;
21145 }
while ((c = nextc(p)) != -1);
21149 if (toklen(p) == start) {
21150 return no_digits(p);
21152 else if (nondigit)
goto trailing_uc;
21153 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21154 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21160 if (c ==
'o' || c ==
'O') {
21163 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
21165 return no_digits(p);
21168 if (c >=
'0' && c <=
'7') {
21173 if (nondigit)
break;
21177 if (c <
'0' || c >
'9')
break;
21178 if (c >
'7')
goto invalid_octal;
21181 }
while ((c = nextc(p)) != -1);
21182 if (toklen(p) > start) {
21185 if (nondigit)
goto trailing_uc;
21186 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21187 return set_number_literal(p, tINTEGER, suffix, 8, 0);
21194 if (c >
'7' && c <=
'9') {
21196 yyerror0(
"Invalid octal digit");
21198 else if (c ==
'.' || c ==
'e' || c ==
'E') {
21204 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21205 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21211 case '0':
case '1':
case '2':
case '3':
case '4':
21212 case '5':
case '6':
case '7':
case '8':
case '9':
21218 if (nondigit)
goto trailing_uc;
21219 if (seen_point || seen_e) {
21224 if (c0 == -1 || !
ISDIGIT(c0)) {
21230 seen_point = toklen(p);
21249 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
21255 tokadd(p, nondigit);
21259 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
21263 if (nondigit)
goto decode_num;
21277 literal_flush(p, p->lex.pcur - 1);
21278 YYLTYPE loc = RUBY_INIT_YYLLOC();
21279 compile_error(p,
"trailing '%c' in number", nondigit);
21280 parser_show_error_line(p, &loc);
21284 enum yytokentype
type = tFLOAT;
21286 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
21287 if (suffix & NUM_SUFFIX_R) {
21292 if (
errno == ERANGE) {
21293 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
21297 return set_number_literal(p,
type, suffix, 0, seen_point);
21299 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21300 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21303static enum yytokentype
21308 rb_parser_string_t *lit;
21309 const char *start = p->lex.pcur;
21312 SET_LEX_STATE(EXPR_VALUE);
21317 compile_error(p,
"incomplete character syntax");
21320 if (rb_enc_isspace(c, p->enc)) {
21322 int c2 = escaped_control_code(c);
21324 WARN_SPACE_CHAR(c2,
"?");
21329 SET_LEX_STATE(EXPR_VALUE);
21334 int w = parser_precise_mbclen(p, start);
21335 if (is_identchar(p, start, p->lex.pend, p->enc) &&
21336 !(lex_eol_ptr_n_p(p, start, w) || !is_identchar(p, start + w, p->lex.pend, p->enc))) {
21338 const char *
ptr = start;
21340 int n = parser_precise_mbclen(p,
ptr);
21341 if (n < 0)
return -1;
21343 }
while (!lex_eol_ptr_p(p,
ptr) && is_identchar(p,
ptr, p->lex.pend, p->enc));
21344 rb_warn2(
"'?' just followed by '%.*s' is interpreted as" \
21345 " a conditional operator, put a space after '?'",
21346 WARN_I((
int)(
ptr - start)), WARN_S_L(start, (
ptr - start)));
21350 else if (c ==
'\\') {
21351 if (peek(p,
'u')) {
21353 enc = rb_utf8_encoding();
21354 tokadd_utf8(p, &enc, -1, 0, 0);
21356 else if (!ISASCII(c = peekc(p)) && c != -1) {
21358 if (tokadd_mbchar(p, c) == -1)
return 0;
21366 if (tokadd_mbchar(p, c) == -1)
return 0;
21369 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
21370 set_yylval_str(lit);
21371 SET_LEX_STATE(EXPR_END);
21375static enum yytokentype
21376parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
21379 const char *ptok = p->lex.pcur;
21387 if (c == -1)
goto unterminated;
21390 if (!ISASCII(c))
goto unknown;
21395 if (rb_enc_isalnum(term, p->enc) || !parser_isascii(p)) {
21398 c = parser_precise_mbclen(p, p->lex.pcur);
21399 if (c < 0)
return 0;
21401 yyerror0(
"unknown type of %string");
21407 compile_error(p,
"unterminated quoted string meets end of file");
21411 if (term ==
'(') term =
')';
21412 else if (term ==
'[') term =
']';
21413 else if (term ==
'{') term =
'}';
21414 else if (term ==
'<') term =
'>';
21417 p->lex.ptok = ptok-1;
21420 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
21421 return tSTRING_BEG;
21424 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
21425 return tSTRING_BEG;
21428 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21432 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21433 return tQWORDS_BEG;
21436 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21437 return tSYMBOLS_BEG;
21440 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21441 return tQSYMBOLS_BEG;
21444 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
21445 return tXSTRING_BEG;
21448 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
21449 return tREGEXP_BEG;
21452 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
21453 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
21457 yyerror0(
"unknown type of %string");
21461 if ((c = nextc(p)) ==
'=') {
21462 set_yylval_id(
'%');
21463 SET_LEX_STATE(EXPR_BEG);
21466 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
21469 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21471 return warn_balanced(
'%',
"%%",
"string literal");
21478 if (tokadd_mbchar(p, c) == -1)
return -1;
21480 }
while (parser_is_identchar(p));
21488 ID ident = TOK_INTERN();
21490 set_yylval_name(ident);
21500 unsigned long n = ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &
len, &overflow);
21501 const unsigned long nth_ref_max =
21506 if (overflow || n > nth_ref_max) {
21508 rb_warn1(
"'%s' is too big for a number variable, always nil", WARN_S(tok(p)));
21516static enum yytokentype
21517parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
21519 const char *
ptr = p->lex.pcur;
21522 SET_LEX_STATE(EXPR_END);
21523 p->lex.ptok =
ptr - 1;
21529 if (parser_is_identchar(p)) {
21561 if (parser_is_identchar(p)) {
21562 if (tokadd_mbchar(p, c) == -1)
return 0;
21577 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
21582 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
21585 case '1':
case '2':
case '3':
21586 case '4':
case '5':
case '6':
21587 case '7':
case '8':
case '9':
21592 }
while (c != -1 &&
ISDIGIT(c));
21594 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
21596 c = parse_numvar(p);
21597 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
21601 if (!parser_is_identchar(p)) {
21602 YYLTYPE loc = RUBY_INIT_YYLLOC();
21604 compile_error(p,
"'$' without identifiers is not allowed as a global variable name");
21608 compile_error(p,
"'$%c' is not allowed as a global variable name", c);
21610 parser_show_error_line(p, &loc);
21611 set_yylval_noname();
21619 if (tokadd_ident(p, c))
return 0;
21620 SET_LEX_STATE(EXPR_END);
21621 if (VALID_SYMNAME_P(tok(p), toklen(p), p->enc, ID_GLOBAL)) {
21625 compile_error(p,
"'%.*s' is not allowed as a global variable name", toklen(p), tok(p));
21626 set_yylval_noname();
21634 if (n < 0)
return false;
21636 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
21639 if (p->max_numparam == ORDINAL_PARAM) {
21640 compile_error(p,
"ordinary parameter is defined");
21643 struct vtable *args = p->lvtbl->args;
21644 if (p->max_numparam < n) {
21645 p->max_numparam = n;
21647 while (n > args->pos) {
21648 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
21653static enum yytokentype
21654parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
21656 const char *
ptr = p->lex.pcur;
21657 enum yytokentype result = tIVAR;
21658 register int c = nextc(p);
21661 p->lex.ptok =
ptr - 1;
21669 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
21670 if (c == -1 || !parser_is_identchar(p)) {
21672 RUBY_SET_YYLLOC(loc);
21673 if (result == tIVAR) {
21674 compile_error(p,
"'@' without identifiers is not allowed as an instance variable name");
21677 compile_error(p,
"'@@' without identifiers is not allowed as a class variable name");
21679 parser_show_error_line(p, &loc);
21680 set_yylval_noname();
21681 SET_LEX_STATE(EXPR_END);
21686 RUBY_SET_YYLLOC(loc);
21687 if (result == tIVAR) {
21688 compile_error(p,
"'@%c' is not allowed as an instance variable name", c);
21691 compile_error(p,
"'@@%c' is not allowed as a class variable name", c);
21693 parser_show_error_line(p, &loc);
21694 set_yylval_noname();
21695 SET_LEX_STATE(EXPR_END);
21699 if (tokadd_ident(p, c))
return 0;
21704static enum yytokentype
21707 enum yytokentype result;
21708 bool is_ascii =
true;
21709 const enum lex_state_e last_state = p->lex.state;
21711 int enforce_keyword_end = 0;
21714 if (!ISASCII(c)) is_ascii =
false;
21715 if (tokadd_mbchar(p, c) == -1)
return 0;
21717 }
while (parser_is_identchar(p));
21718 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
21722 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
21723 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
21724 result = tIDENTIFIER;
21728 result = tCONSTANT;
21733 if (IS_LABEL_POSSIBLE()) {
21734 if (IS_LABEL_SUFFIX(0)) {
21735 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
21743 if (peek_end_expect_token_locations(p)) {
21744 const rb_code_position_t *end_pos;
21745 int lineno, column;
21746 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
21748 end_pos = peek_end_expect_token_locations(p)->pos;
21749 lineno = end_pos->lineno;
21750 column = end_pos->column;
21753 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
21754 p->ruby_sourceline, beg_pos, lineno, column);
21757 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
21760 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
21761 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
21762 enforce_keyword_end = 1;
21768 if (is_ascii && (!IS_lex_state(EXPR_DOT) || enforce_keyword_end)) {
21772 kw = rb_reserved_word(tok(p), toklen(p));
21774 enum lex_state_e state = p->lex.state;
21775 if (IS_lex_state_for(state, EXPR_FNAME)) {
21776 SET_LEX_STATE(EXPR_ENDFN);
21777 set_yylval_name(rb_intern2(tok(p), toklen(p)));
21780 SET_LEX_STATE(kw->state);
21781 if (IS_lex_state(EXPR_BEG)) {
21782 p->command_start = TRUE;
21784 if (kw->id[0] == keyword_do) {
21785 if (lambda_beginning_p()) {
21786 p->lex.lpar_beg = -1;
21787 return keyword_do_LAMBDA;
21789 if (COND_P())
return keyword_do_cond;
21790 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
21791 return keyword_do_block;
21794 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
21797 if (kw->id[0] != kw->id[1])
21798 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
21804 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
21806 SET_LEX_STATE(EXPR_CMDARG);
21809 SET_LEX_STATE(EXPR_ARG);
21812 else if (p->lex.state == EXPR_FNAME) {
21813 SET_LEX_STATE(EXPR_ENDFN);
21816 SET_LEX_STATE(EXPR_END);
21819 ident = tokenize_ident(p);
21820 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
21821 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
21822 (result == tIDENTIFIER) &&
21823 (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
21824 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
21835 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
21839static enum yytokentype
21843 int space_seen = 0;
21846 enum lex_state_e last_state;
21847 int fallthru = FALSE;
21848 int token_seen = p->token_seen;
21850 if (p->lex.strterm) {
21851 if (strterm_is_heredoc(p->lex.strterm)) {
21853 return here_document(p, &p->lex.strterm->u.heredoc);
21857 return parse_string(p, &p->lex.strterm->u.literal);
21860 cmd_state = p->command_start;
21861 p->command_start = FALSE;
21862 p->token_seen = TRUE;
21867 last_state = p->lex.state;
21868 switch (c = nextc(p)) {
21875 if (p->end_expect_token_locations) {
21876 pop_end_expect_token_locations(p);
21877 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
21882 RUBY_SET_YYLLOC(*p->yylloc);
21883 return END_OF_INPUT;
21889 case ' ':
case '\t':
case '\f':
21892 while ((c = nextc(p))) {
21897 case ' ':
case '\t':
case '\f':
21906 dispatch_scan_event(p, tSP);
21913 p->token_seen = token_seen;
21914 const char *
const pcur = p->lex.pcur, *
const ptok = p->lex.ptok;
21916 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
21917 if (comment_at_top(p)) {
21918 set_file_encoding(p, p->lex.pcur, p->lex.pend);
21921 p->lex.pcur = pcur, p->lex.ptok = ptok;
21923 dispatch_scan_event(p, tCOMMENT);
21927 p->token_seen = token_seen;
21928 rb_parser_string_t *prevline = p->lex.lastline;
21929 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
21930 !IS_lex_state(EXPR_LABELED));
21931 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
21933 dispatch_scan_event(p, tIGNORED_NL);
21936 if (!c && p->ctxt.in_kwarg) {
21937 goto normal_newline;
21942 switch (c = nextc(p)) {
21943 case ' ':
case '\t':
case '\f':
case '\r':
21950 dispatch_scan_event(p, tSP);
21955 if (peek_word_at(p,
"nd", 2, 0))
goto leading_logical;
21958 if (peek_word_at(p,
"r", 1, 0))
goto leading_logical;
21961 if (peek(p,
'|'))
goto leading_logical;
21964 if (peek(p,
'&')) {
21967 dispatch_delayed_token(p, tIGNORED_NL);
21973 dispatch_delayed_token(p, tIGNORED_NL);
21974 if (peek(p,
'.') == (c ==
'&')) {
21976 dispatch_scan_event(p, tSP);
21982 p->ruby_sourceline--;
21983 p->lex.nextline = p->lex.lastline;
21984 set_lastline(p, prevline);
21986 if (c == -1 && space_seen) {
21987 dispatch_scan_event(p, tSP);
21992 RUBY_SET_YYLLOC(*p->yylloc);
21994 goto normal_newline;
21998 p->command_start = TRUE;
21999 SET_LEX_STATE(EXPR_BEG);
22003 if ((c = nextc(p)) ==
'*') {
22004 if ((c = nextc(p)) ==
'=') {
22005 set_yylval_id(idPow);
22006 SET_LEX_STATE(EXPR_BEG);
22010 if (IS_SPCARG(c)) {
22011 rb_warning0(
"'**' interpreted as argument prefix");
22014 else if (IS_BEG()) {
22018 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
22023 set_yylval_id(
'*');
22024 SET_LEX_STATE(EXPR_BEG);
22028 if (IS_SPCARG(c)) {
22029 rb_warning0(
"'*' interpreted as argument prefix");
22032 else if (IS_BEG()) {
22036 c = warn_balanced(
'*',
"*",
"argument prefix");
22039 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22044 if (IS_AFTER_OPERATOR()) {
22045 SET_LEX_STATE(EXPR_ARG);
22051 SET_LEX_STATE(EXPR_BEG);
22065 if (word_match_p(p,
"begin", 5)) {
22066 int first_p = TRUE;
22069 dispatch_scan_event(p, tEMBDOC_BEG);
22073 dispatch_scan_event(p, tEMBDOC);
22078 compile_error(p,
"embedded document meets end of file");
22079 return END_OF_INPUT;
22081 if (c ==
'=' && word_match_p(p,
"end", 3)) {
22087 dispatch_scan_event(p, tEMBDOC_END);
22092 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22093 if ((c = nextc(p)) ==
'=') {
22094 if ((c = nextc(p)) ==
'=') {
22103 else if (c ==
'>') {
22112 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
22114 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
22115 enum yytokentype token = heredoc_identifier(p);
22116 if (token)
return token < 0 ? 0 : token;
22118 if (IS_AFTER_OPERATOR()) {
22119 SET_LEX_STATE(EXPR_ARG);
22122 if (IS_lex_state(EXPR_CLASS))
22123 p->command_start = TRUE;
22124 SET_LEX_STATE(EXPR_BEG);
22127 if ((c = nextc(p)) ==
'>') {
22134 if ((c = nextc(p)) ==
'=') {
22135 set_yylval_id(idLTLT);
22136 SET_LEX_STATE(EXPR_BEG);
22140 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
22146 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22147 if ((c = nextc(p)) ==
'=') {
22151 if ((c = nextc(p)) ==
'=') {
22152 set_yylval_id(idGTGT);
22153 SET_LEX_STATE(EXPR_BEG);
22163 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22164 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
22165 p->lex.ptok = p->lex.pcur-1;
22166 return tSTRING_BEG;
22169 if (IS_lex_state(EXPR_FNAME)) {
22170 SET_LEX_STATE(EXPR_ENDFN);
22173 if (IS_lex_state(EXPR_DOT)) {
22175 SET_LEX_STATE(EXPR_CMDARG);
22177 SET_LEX_STATE(EXPR_ARG);
22180 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
22181 return tXSTRING_BEG;
22184 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22185 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
22186 p->lex.ptok = p->lex.pcur-1;
22187 return tSTRING_BEG;
22190 return parse_qmark(p, space_seen);
22193 if ((c = nextc(p)) ==
'&') {
22194 SET_LEX_STATE(EXPR_BEG);
22195 if ((c = nextc(p)) ==
'=') {
22196 set_yylval_id(idANDOP);
22197 SET_LEX_STATE(EXPR_BEG);
22203 else if (c ==
'=') {
22204 set_yylval_id(
'&');
22205 SET_LEX_STATE(EXPR_BEG);
22208 else if (c ==
'.') {
22209 set_yylval_id(idANDDOT);
22210 SET_LEX_STATE(EXPR_DOT);
22214 if (IS_SPCARG(c)) {
22216 (c = peekc_n(p, 1)) == -1 ||
22217 !(c ==
'\'' || c ==
'"' ||
22218 is_identchar(p, (p->lex.pcur+1), p->lex.pend, p->enc))) {
22219 rb_warning0(
"'&' interpreted as argument prefix");
22223 else if (IS_BEG()) {
22227 c = warn_balanced(
'&',
"&",
"argument prefix");
22229 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22233 if ((c = nextc(p)) ==
'|') {
22234 SET_LEX_STATE(EXPR_BEG);
22235 if ((c = nextc(p)) ==
'=') {
22236 set_yylval_id(idOROP);
22237 SET_LEX_STATE(EXPR_BEG);
22241 if (IS_lex_state_for(last_state, EXPR_BEG)) {
22249 set_yylval_id(
'|');
22250 SET_LEX_STATE(EXPR_BEG);
22253 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
22259 if (IS_AFTER_OPERATOR()) {
22260 SET_LEX_STATE(EXPR_ARG);
22268 set_yylval_id(
'+');
22269 SET_LEX_STATE(EXPR_BEG);
22272 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
22273 SET_LEX_STATE(EXPR_BEG);
22276 return parse_numeric(p,
'+');
22280 SET_LEX_STATE(EXPR_BEG);
22282 return warn_balanced(
'+',
"+",
"unary operator");
22286 if (IS_AFTER_OPERATOR()) {
22287 SET_LEX_STATE(EXPR_ARG);
22295 set_yylval_id(
'-');
22296 SET_LEX_STATE(EXPR_BEG);
22300 SET_LEX_STATE(EXPR_ENDFN);
22301 yylval.num = p->lex.lpar_beg;
22302 p->lex.lpar_beg = p->lex.paren_nest;
22305 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
22306 SET_LEX_STATE(EXPR_BEG);
22309 return tUMINUS_NUM;
22313 SET_LEX_STATE(EXPR_BEG);
22315 return warn_balanced(
'-',
"-",
"unary operator");
22318 int is_beg = IS_BEG();
22319 SET_LEX_STATE(EXPR_BEG);
22320 if ((c = nextc(p)) ==
'.') {
22321 if ((c = nextc(p)) ==
'.') {
22322 if (p->ctxt.in_argdef || IS_LABEL_POSSIBLE()) {
22323 SET_LEX_STATE(EXPR_ENDARG);
22326 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
22327 rb_warn0(
"... at EOL, should be parenthesized?");
22329 return is_beg ? tBDOT3 : tDOT3;
22332 return is_beg ? tBDOT2 : tDOT2;
22336 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
22337 parse_numeric(p,
'.');
22339 yyerror0(
"unexpected fraction part after numeric literal");
22342 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
22344 SET_LEX_STATE(EXPR_END);
22345 p->lex.ptok = p->lex.pcur;
22348 set_yylval_id(
'.');
22349 SET_LEX_STATE(EXPR_DOT);
22353 case '0':
case '1':
case '2':
case '3':
case '4':
22354 case '5':
case '6':
case '7':
case '8':
case '9':
22355 return parse_numeric(p, c);
22360 SET_LEX_STATE(EXPR_ENDFN);
22361 p->lex.paren_nest--;
22367 SET_LEX_STATE(EXPR_END);
22368 p->lex.paren_nest--;
22373 if (!p->lex.brace_nest--)
return tSTRING_DEND;
22376 SET_LEX_STATE(EXPR_END);
22377 p->lex.paren_nest--;
22383 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
22384 SET_LEX_STATE(EXPR_BEG);
22387 set_yylval_id(idCOLON2);
22388 SET_LEX_STATE(EXPR_DOT);
22391 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
22393 c = warn_balanced(
':',
":",
"symbol literal");
22394 SET_LEX_STATE(EXPR_BEG);
22399 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
22402 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
22408 SET_LEX_STATE(EXPR_FNAME);
22413 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22414 return tREGEXP_BEG;
22416 if ((c = nextc(p)) ==
'=') {
22417 set_yylval_id(
'/');
22418 SET_LEX_STATE(EXPR_BEG);
22422 if (IS_SPCARG(c)) {
22423 arg_ambiguous(p,
'/');
22424 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22425 return tREGEXP_BEG;
22427 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22428 return warn_balanced(
'/',
"/",
"regexp literal");
22431 if ((c = nextc(p)) ==
'=') {
22432 set_yylval_id(
'^');
22433 SET_LEX_STATE(EXPR_BEG);
22436 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22441 SET_LEX_STATE(EXPR_BEG);
22442 p->command_start = TRUE;
22446 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22450 if (IS_AFTER_OPERATOR()) {
22451 if ((c = nextc(p)) !=
'@') {
22454 SET_LEX_STATE(EXPR_ARG);
22457 SET_LEX_STATE(EXPR_BEG);
22465 else if (!space_seen) {
22468 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
22471 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
22472 rb_warning0(
"parentheses after method name is interpreted as "
22473 "an argument list, not a decomposed argument");
22475 p->lex.paren_nest++;
22478 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22482 p->lex.paren_nest++;
22483 if (IS_AFTER_OPERATOR()) {
22484 if ((c = nextc(p)) ==
']') {
22485 p->lex.paren_nest--;
22486 SET_LEX_STATE(EXPR_ARG);
22487 if ((c = nextc(p)) ==
'=') {
22494 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
22497 else if (IS_BEG()) {
22500 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
22503 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22509 ++p->lex.brace_nest;
22510 if (lambda_beginning_p())
22512 else if (IS_lex_state(EXPR_LABELED))
22514 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
22516 else if (IS_lex_state(EXPR_ENDARG))
22520 if (c != tLBRACE) {
22521 p->command_start = TRUE;
22522 SET_LEX_STATE(EXPR_BEG);
22525 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22527 ++p->lex.paren_nest;
22536 dispatch_scan_event(p, tSP);
22539 if (c ==
' ')
return tSP;
22545 return parse_percent(p, space_seen, last_state);
22548 return parse_gvar(p, last_state);
22551 return parse_atmark(p, last_state);
22554 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
22555 p->ruby__end__seen = 1;
22559 dispatch_scan_event(p, k__END__);
22561 return END_OF_INPUT;
22567 if (!parser_is_identchar(p)) {
22568 compile_error(p,
"Invalid char '\\x%02X' in expression", c);
22577 return parse_ident(p, c, cmd_state);
22580static enum yytokentype
22583 enum yytokentype t;
22587 p->yylloc = yylloc;
22589 t = parser_yylex(p);
22591 if (has_delayed_token(p))
22592 dispatch_delayed_token(p, t);
22593 else if (t != END_OF_INPUT)
22594 dispatch_scan_event(p, t);
22599#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
22602node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment)
22604 NODE *n = rb_ast_newnode(p->ast,
type, size, alignment);
22606 rb_node_init(n,
type);
22611nd_set_loc(NODE *nd,
const YYLTYPE *loc)
22614 nd_set_line(nd, loc->beg_pos.lineno);
22619node_newnode(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment,
const rb_code_location_t *loc)
22621 NODE *n = node_new_internal(p,
type, size, alignment);
22623 nd_set_loc(n, loc);
22624 nd_set_node_id(n, parser_get_node_id(p));
22628#define NODE_NEWNODE(node_type, type, loc) (type *)(node_newnode(p, node_type, sizeof(type), RUBY_ALIGNOF(type), loc))
22630static rb_node_scope_t *
22631rb_node_scope_new(
struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body, NODE *nd_parent,
const YYLTYPE *loc)
22633 rb_ast_id_table_t *nd_tbl;
22634 nd_tbl = local_tbl(p);
22635 rb_node_scope_t *n = NODE_NEWNODE(NODE_SCOPE, rb_node_scope_t, loc);
22636 n->nd_tbl = nd_tbl;
22637 n->nd_body = nd_body;
22638 n->nd_parent = nd_parent;
22639 n->nd_args = nd_args;
22644static rb_node_scope_t *
22645rb_node_scope_new2(
struct parser_params *p, rb_ast_id_table_t *nd_tbl, rb_node_args_t *nd_args, NODE *nd_body, NODE *nd_parent,
const YYLTYPE *loc)
22647 rb_node_scope_t *n = NODE_NEWNODE(NODE_SCOPE, rb_node_scope_t, loc);
22648 n->nd_tbl = nd_tbl;
22649 n->nd_body = nd_body;
22650 n->nd_parent = nd_parent;
22651 n->nd_args = nd_args;
22656static rb_node_defn_t *
22657rb_node_defn_new(
struct parser_params *p,
ID nd_mid, NODE *nd_defn,
const YYLTYPE *loc)
22659 rb_node_defn_t *n = NODE_NEWNODE(NODE_DEFN, rb_node_defn_t, loc);
22660 n->nd_mid = nd_mid;
22661 n->nd_defn = nd_defn;
22666static rb_node_defs_t *
22667rb_node_defs_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_defn,
const YYLTYPE *loc)
22669 rb_node_defs_t *n = NODE_NEWNODE(NODE_DEFS, rb_node_defs_t, loc);
22670 n->nd_recv = nd_recv;
22671 n->nd_mid = nd_mid;
22672 n->nd_defn = nd_defn;
22677static rb_node_block_t *
22678rb_node_block_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc)
22680 rb_node_block_t *n = NODE_NEWNODE(NODE_BLOCK, rb_node_block_t, loc);
22681 n->nd_head = nd_head;
22682 n->nd_end = (NODE *)n;
22688static rb_node_for_t *
22689rb_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)
22691 rb_node_for_t *n = NODE_NEWNODE(NODE_FOR, rb_node_for_t, loc);
22692 n->nd_body = nd_body;
22693 n->nd_iter = nd_iter;
22694 n->for_keyword_loc = *for_keyword_loc;
22695 n->in_keyword_loc = *in_keyword_loc;
22696 n->do_keyword_loc = *do_keyword_loc;
22697 n->end_keyword_loc = *end_keyword_loc;
22702static rb_node_for_masgn_t *
22703rb_node_for_masgn_new(
struct parser_params *p, NODE *nd_var,
const YYLTYPE *loc)
22705 rb_node_for_masgn_t *n = NODE_NEWNODE(NODE_FOR_MASGN, rb_node_for_masgn_t, loc);
22706 n->nd_var = nd_var;
22711static rb_node_retry_t *
22712rb_node_retry_new(
struct parser_params *p,
const YYLTYPE *loc)
22714 rb_node_retry_t *n = NODE_NEWNODE(NODE_RETRY, rb_node_retry_t, loc);
22719static rb_node_begin_t *
22720rb_node_begin_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc)
22722 rb_node_begin_t *n = NODE_NEWNODE(NODE_BEGIN, rb_node_begin_t, loc);
22723 n->nd_body = nd_body;
22728static rb_node_rescue_t *
22729rb_node_rescue_new(
struct parser_params *p, NODE *nd_head, NODE *nd_resq, NODE *nd_else,
const YYLTYPE *loc)
22731 rb_node_rescue_t *n = NODE_NEWNODE(NODE_RESCUE, rb_node_rescue_t, loc);
22732 n->nd_head = nd_head;
22733 n->nd_resq = nd_resq;
22734 n->nd_else = nd_else;
22739static rb_node_resbody_t *
22740rb_node_resbody_new(
struct parser_params *p, NODE *nd_args, NODE *nd_exc_var, NODE *nd_body, NODE *nd_next,
const YYLTYPE *loc)
22742 rb_node_resbody_t *n = NODE_NEWNODE(NODE_RESBODY, rb_node_resbody_t, loc);
22743 n->nd_args = nd_args;
22744 n->nd_exc_var = nd_exc_var;
22745 n->nd_body = nd_body;
22746 n->nd_next = nd_next;
22751static rb_node_ensure_t *
22752rb_node_ensure_new(
struct parser_params *p, NODE *nd_head, NODE *nd_ensr,
const YYLTYPE *loc)
22754 rb_node_ensure_t *n = NODE_NEWNODE(NODE_ENSURE, rb_node_ensure_t, loc);
22755 n->nd_head = nd_head;
22756 n->nd_ensr = nd_ensr;
22762rb_node_and_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
22765 n->nd_1st = nd_1st;
22766 n->nd_2nd = nd_2nd;
22767 n->operator_loc = *operator_loc;
22772static rb_node_or_t *
22773rb_node_or_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
22775 rb_node_or_t *n = NODE_NEWNODE(NODE_OR, rb_node_or_t, loc);
22776 n->nd_1st = nd_1st;
22777 n->nd_2nd = nd_2nd;
22778 n->operator_loc = *operator_loc;
22783static rb_node_return_t *
22784rb_node_return_new(
struct parser_params *p, NODE *nd_stts,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
22786 rb_node_return_t *n = NODE_NEWNODE(NODE_RETURN, rb_node_return_t, loc);
22787 n->nd_stts = nd_stts;
22788 n->keyword_loc = *keyword_loc;
22792static rb_node_yield_t *
22793rb_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)
22795 if (nd_head) no_blockarg(p, nd_head);
22797 rb_node_yield_t *n = NODE_NEWNODE(NODE_YIELD, rb_node_yield_t, loc);
22798 n->nd_head = nd_head;
22799 n->keyword_loc = *keyword_loc;
22800 n->lparen_loc = *lparen_loc;
22801 n->rparen_loc = *rparen_loc;
22806static rb_node_if_t *
22807rb_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)
22809 rb_node_if_t *n = NODE_NEWNODE(NODE_IF, rb_node_if_t, loc);
22810 n->nd_cond = nd_cond;
22811 n->nd_body = nd_body;
22812 n->nd_else = nd_else;
22813 n->if_keyword_loc = *if_keyword_loc;
22814 n->then_keyword_loc = *then_keyword_loc;
22815 n->end_keyword_loc = *end_keyword_loc;
22820static rb_node_unless_t *
22821rb_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)
22823 rb_node_unless_t *n = NODE_NEWNODE(NODE_UNLESS, rb_node_unless_t, loc);
22824 n->nd_cond = nd_cond;
22825 n->nd_body = nd_body;
22826 n->nd_else = nd_else;
22827 n->keyword_loc = *keyword_loc;
22828 n->then_keyword_loc = *then_keyword_loc;
22829 n->end_keyword_loc = *end_keyword_loc;
22834static rb_node_class_t *
22835rb_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)
22838 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
22839 rb_node_class_t *n = NODE_NEWNODE(NODE_CLASS, rb_node_class_t, loc);
22840 RNODE_SCOPE(scope)->nd_parent = &n->node;
22841 n->nd_cpath = nd_cpath;
22842 n->nd_body = scope;
22843 n->nd_super = nd_super;
22844 n->class_keyword_loc = *class_keyword_loc;
22845 n->inheritance_operator_loc = *inheritance_operator_loc;
22846 n->end_keyword_loc = *end_keyword_loc;
22851static rb_node_sclass_t *
22852rb_node_sclass_new(
struct parser_params *p, NODE *nd_recv, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *class_keyword_loc,
const YYLTYPE *operator_loc,
const YYLTYPE *end_keyword_loc)
22855 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
22856 rb_node_sclass_t *n = NODE_NEWNODE(NODE_SCLASS, rb_node_sclass_t, loc);
22857 RNODE_SCOPE(scope)->nd_parent = &n->node;
22858 n->nd_recv = nd_recv;
22859 n->nd_body = scope;
22860 n->class_keyword_loc = *class_keyword_loc;
22861 n->operator_loc = *operator_loc;
22862 n->end_keyword_loc = *end_keyword_loc;
22867static rb_node_module_t *
22868rb_node_module_new(
struct parser_params *p, NODE *nd_cpath, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *module_keyword_loc,
const YYLTYPE *end_keyword_loc)
22871 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
22872 rb_node_module_t *n = NODE_NEWNODE(NODE_MODULE, rb_node_module_t, loc);
22873 RNODE_SCOPE(scope)->nd_parent = &n->node;
22874 n->nd_cpath = nd_cpath;
22875 n->nd_body = scope;
22876 n->module_keyword_loc = *module_keyword_loc;
22877 n->end_keyword_loc = *end_keyword_loc;
22882static rb_node_iter_t *
22883rb_node_iter_new(
struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body,
const YYLTYPE *loc)
22886 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
22887 rb_node_iter_t *n = NODE_NEWNODE(NODE_ITER, rb_node_iter_t, loc);
22888 RNODE_SCOPE(scope)->nd_parent = &n->node;
22889 n->nd_body = scope;
22895static rb_node_lambda_t *
22896rb_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)
22899 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
22900 YYLTYPE lambda_loc = code_loc_gen(operator_loc, closing_loc);
22901 rb_node_lambda_t *n = NODE_NEWNODE(NODE_LAMBDA, rb_node_lambda_t, &lambda_loc);
22902 RNODE_SCOPE(scope)->nd_parent = &n->node;
22903 n->nd_body = scope;
22904 n->operator_loc = *operator_loc;
22905 n->opening_loc = *opening_loc;
22906 n->closing_loc = *closing_loc;
22911static rb_node_case_t *
22912rb_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)
22914 rb_node_case_t *n = NODE_NEWNODE(NODE_CASE, rb_node_case_t, loc);
22915 n->nd_head = nd_head;
22916 n->nd_body = nd_body;
22917 n->case_keyword_loc = *case_keyword_loc;
22918 n->end_keyword_loc = *end_keyword_loc;
22923static rb_node_case2_t *
22924rb_node_case2_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *case_keyword_loc,
const YYLTYPE *end_keyword_loc)
22926 rb_node_case2_t *n = NODE_NEWNODE(NODE_CASE2, rb_node_case2_t, loc);
22928 n->nd_body = nd_body;
22929 n->case_keyword_loc = *case_keyword_loc;
22930 n->end_keyword_loc = *end_keyword_loc;
22935static rb_node_case3_t *
22936rb_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)
22938 rb_node_case3_t *n = NODE_NEWNODE(NODE_CASE3, rb_node_case3_t, loc);
22939 n->nd_head = nd_head;
22940 n->nd_body = nd_body;
22941 n->case_keyword_loc = *case_keyword_loc;
22942 n->end_keyword_loc = *end_keyword_loc;
22947static rb_node_when_t *
22948rb_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)
22950 rb_node_when_t *n = NODE_NEWNODE(NODE_WHEN, rb_node_when_t, loc);
22951 n->nd_head = nd_head;
22952 n->nd_body = nd_body;
22953 n->nd_next = nd_next;
22954 n->keyword_loc = *keyword_loc;
22955 n->then_keyword_loc = *then_keyword_loc;
22960static rb_node_in_t *
22961rb_node_in_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body, NODE *nd_next,
const YYLTYPE *loc,
const YYLTYPE *in_keyword_loc,
const YYLTYPE *then_keyword_loc,
const YYLTYPE *operator_loc)
22963 rb_node_in_t *n = NODE_NEWNODE(NODE_IN, rb_node_in_t, loc);
22964 n->nd_head = nd_head;
22965 n->nd_body = nd_body;
22966 n->nd_next = nd_next;
22967 n->in_keyword_loc = *in_keyword_loc;
22968 n->then_keyword_loc = *then_keyword_loc;
22969 n->operator_loc = *operator_loc;
22974static rb_node_while_t *
22975rb_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)
22977 rb_node_while_t *n = NODE_NEWNODE(NODE_WHILE, rb_node_while_t, loc);
22978 n->nd_cond = nd_cond;
22979 n->nd_body = nd_body;
22980 n->nd_state = nd_state;
22981 n->keyword_loc = *keyword_loc;
22982 n->closing_loc = *closing_loc;
22987static rb_node_until_t *
22988rb_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)
22990 rb_node_until_t *n = NODE_NEWNODE(NODE_UNTIL, rb_node_until_t, loc);
22991 n->nd_cond = nd_cond;
22992 n->nd_body = nd_body;
22993 n->nd_state = nd_state;
22994 n->keyword_loc = *keyword_loc;
22995 n->closing_loc = *closing_loc;
23000static rb_node_colon2_t *
23001rb_node_colon2_new(
struct parser_params *p, NODE *nd_head,
ID nd_mid,
const YYLTYPE *loc,
const YYLTYPE *delimiter_loc,
const YYLTYPE *name_loc)
23003 rb_node_colon2_t *n = NODE_NEWNODE(NODE_COLON2, rb_node_colon2_t, loc);
23004 n->nd_head = nd_head;
23005 n->nd_mid = nd_mid;
23006 n->delimiter_loc = *delimiter_loc;
23007 n->name_loc = *name_loc;
23012static rb_node_colon3_t *
23013rb_node_colon3_new(
struct parser_params *p,
ID nd_mid,
const YYLTYPE *loc,
const YYLTYPE *delimiter_loc,
const YYLTYPE *name_loc)
23015 rb_node_colon3_t *n = NODE_NEWNODE(NODE_COLON3, rb_node_colon3_t, loc);
23016 n->nd_mid = nd_mid;
23017 n->delimiter_loc = *delimiter_loc;
23018 n->name_loc = *name_loc;
23023static rb_node_dot2_t *
23024rb_node_dot2_new(
struct parser_params *p, NODE *nd_beg, NODE *nd_end,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
23026 rb_node_dot2_t *n = NODE_NEWNODE(NODE_DOT2, rb_node_dot2_t, loc);
23027 n->nd_beg = nd_beg;
23028 n->nd_end = nd_end;
23029 n->operator_loc = *operator_loc;
23034static rb_node_dot3_t *
23035rb_node_dot3_new(
struct parser_params *p, NODE *nd_beg, NODE *nd_end,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
23037 rb_node_dot3_t *n = NODE_NEWNODE(NODE_DOT3, rb_node_dot3_t, loc);
23038 n->nd_beg = nd_beg;
23039 n->nd_end = nd_end;
23040 n->operator_loc = *operator_loc;
23045static rb_node_self_t *
23046rb_node_self_new(
struct parser_params *p,
const YYLTYPE *loc)
23048 rb_node_self_t *n = NODE_NEWNODE(NODE_SELF, rb_node_self_t, loc);
23054static rb_node_nil_t *
23055rb_node_nil_new(
struct parser_params *p,
const YYLTYPE *loc)
23057 rb_node_nil_t *n = NODE_NEWNODE(NODE_NIL, rb_node_nil_t, loc);
23062static rb_node_true_t *
23063rb_node_true_new(
struct parser_params *p,
const YYLTYPE *loc)
23065 rb_node_true_t *n = NODE_NEWNODE(NODE_TRUE, rb_node_true_t, loc);
23070static rb_node_false_t *
23071rb_node_false_new(
struct parser_params *p,
const YYLTYPE *loc)
23073 rb_node_false_t *n = NODE_NEWNODE(NODE_FALSE, rb_node_false_t, loc);
23078static rb_node_super_t *
23079rb_node_super_new(
struct parser_params *p, NODE *nd_args,
const YYLTYPE *loc,
23080 const YYLTYPE *keyword_loc,
const YYLTYPE *lparen_loc,
const YYLTYPE *rparen_loc)
23082 rb_node_super_t *n = NODE_NEWNODE(NODE_SUPER, rb_node_super_t, loc);
23083 n->nd_args = nd_args;
23084 n->keyword_loc = *keyword_loc;
23085 n->lparen_loc = *lparen_loc;
23086 n->rparen_loc = *rparen_loc;
23091static rb_node_zsuper_t *
23092rb_node_zsuper_new(
struct parser_params *p,
const YYLTYPE *loc)
23094 rb_node_zsuper_t *n = NODE_NEWNODE(NODE_ZSUPER, rb_node_zsuper_t, loc);
23099static rb_node_match2_t *
23100rb_node_match2_new(
struct parser_params *p, NODE *nd_recv, NODE *nd_value,
const YYLTYPE *loc)
23102 rb_node_match2_t *n = NODE_NEWNODE(NODE_MATCH2, rb_node_match2_t, loc);
23103 n->nd_recv = nd_recv;
23104 n->nd_value = nd_value;
23110static rb_node_match3_t *
23111rb_node_match3_new(
struct parser_params *p, NODE *nd_recv, NODE *nd_value,
const YYLTYPE *loc)
23113 rb_node_match3_t *n = NODE_NEWNODE(NODE_MATCH3, rb_node_match3_t, loc);
23114 n->nd_recv = nd_recv;
23115 n->nd_value = nd_value;
23121static rb_node_list_t *
23122rb_node_list_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc)
23124 rb_node_list_t *n = NODE_NEWNODE(NODE_LIST, rb_node_list_t, loc);
23125 n->nd_head = nd_head;
23132static rb_node_list_t *
23133rb_node_list_new2(
struct parser_params *p, NODE *nd_head,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc)
23135 rb_node_list_t *n = NODE_NEWNODE(NODE_LIST, rb_node_list_t, loc);
23136 n->nd_head = nd_head;
23137 n->as.nd_alen = nd_alen;
23138 n->nd_next = nd_next;
23143static rb_node_zlist_t *
23144rb_node_zlist_new(
struct parser_params *p,
const YYLTYPE *loc)
23146 rb_node_zlist_t *n = NODE_NEWNODE(NODE_ZLIST, rb_node_zlist_t, loc);
23151static rb_node_hash_t *
23152rb_node_hash_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc)
23154 rb_node_hash_t *n = NODE_NEWNODE(NODE_HASH, rb_node_hash_t, loc);
23155 n->nd_head = nd_head;
23161static rb_node_masgn_t *
23162rb_node_masgn_new(
struct parser_params *p, NODE *nd_head, NODE *nd_args,
const YYLTYPE *loc)
23164 rb_node_masgn_t *n = NODE_NEWNODE(NODE_MASGN, rb_node_masgn_t, loc);
23165 n->nd_head = nd_head;
23167 n->nd_args = nd_args;
23172static rb_node_gasgn_t *
23173rb_node_gasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc)
23175 rb_node_gasgn_t *n = NODE_NEWNODE(NODE_GASGN, rb_node_gasgn_t, loc);
23176 n->nd_vid = nd_vid;
23177 n->nd_value = nd_value;
23182static rb_node_lasgn_t *
23183rb_node_lasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc)
23185 rb_node_lasgn_t *n = NODE_NEWNODE(NODE_LASGN, rb_node_lasgn_t, loc);
23186 n->nd_vid = nd_vid;
23187 n->nd_value = nd_value;
23192static rb_node_dasgn_t *
23193rb_node_dasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc)
23195 rb_node_dasgn_t *n = NODE_NEWNODE(NODE_DASGN, rb_node_dasgn_t, loc);
23196 n->nd_vid = nd_vid;
23197 n->nd_value = nd_value;
23202static rb_node_iasgn_t *
23203rb_node_iasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc)
23205 rb_node_iasgn_t *n = NODE_NEWNODE(NODE_IASGN, rb_node_iasgn_t, loc);
23206 n->nd_vid = nd_vid;
23207 n->nd_value = nd_value;
23212static rb_node_cvasgn_t *
23213rb_node_cvasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc)
23215 rb_node_cvasgn_t *n = NODE_NEWNODE(NODE_CVASGN, rb_node_cvasgn_t, loc);
23216 n->nd_vid = nd_vid;
23217 n->nd_value = nd_value;
23222static rb_node_op_asgn1_t *
23223rb_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)
23225 rb_node_op_asgn1_t *n = NODE_NEWNODE(NODE_OP_ASGN1, rb_node_op_asgn1_t, loc);
23226 n->nd_recv = nd_recv;
23227 n->nd_mid = nd_mid;
23228 n->nd_index = index;
23229 n->nd_rvalue = rvalue;
23230 n->call_operator_loc = *call_operator_loc;
23231 n->opening_loc = *opening_loc;
23232 n->closing_loc = *closing_loc;
23233 n->binary_operator_loc = *binary_operator_loc;
23238static rb_node_op_asgn2_t *
23239rb_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)
23241 rb_node_op_asgn2_t *n = NODE_NEWNODE(NODE_OP_ASGN2, rb_node_op_asgn2_t, loc);
23242 n->nd_recv = nd_recv;
23243 n->nd_value = nd_value;
23244 n->nd_vid = nd_vid;
23245 n->nd_mid = nd_mid;
23246 n->nd_aid = nd_aid;
23247 n->call_operator_loc = *call_operator_loc;
23248 n->message_loc = *message_loc;
23249 n->binary_operator_loc = *binary_operator_loc;
23254static rb_node_op_asgn_or_t *
23255rb_node_op_asgn_or_new(
struct parser_params *p, NODE *nd_head, NODE *nd_value,
const YYLTYPE *loc)
23257 rb_node_op_asgn_or_t *n = NODE_NEWNODE(NODE_OP_ASGN_OR, rb_node_op_asgn_or_t, loc);
23258 n->nd_head = nd_head;
23259 n->nd_value = nd_value;
23264static rb_node_op_asgn_and_t *
23265rb_node_op_asgn_and_new(
struct parser_params *p, NODE *nd_head, NODE *nd_value,
const YYLTYPE *loc)
23267 rb_node_op_asgn_and_t *n = NODE_NEWNODE(NODE_OP_ASGN_AND, rb_node_op_asgn_and_t, loc);
23268 n->nd_head = nd_head;
23269 n->nd_value = nd_value;
23274static rb_node_gvar_t *
23275rb_node_gvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
23277 rb_node_gvar_t *n = NODE_NEWNODE(NODE_GVAR, rb_node_gvar_t, loc);
23278 n->nd_vid = nd_vid;
23283static rb_node_lvar_t *
23284rb_node_lvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
23286 rb_node_lvar_t *n = NODE_NEWNODE(NODE_LVAR, rb_node_lvar_t, loc);
23287 n->nd_vid = nd_vid;
23292static rb_node_dvar_t *
23293rb_node_dvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
23295 rb_node_dvar_t *n = NODE_NEWNODE(NODE_DVAR, rb_node_dvar_t, loc);
23296 n->nd_vid = nd_vid;
23301static rb_node_ivar_t *
23302rb_node_ivar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
23304 rb_node_ivar_t *n = NODE_NEWNODE(NODE_IVAR, rb_node_ivar_t, loc);
23305 n->nd_vid = nd_vid;
23310static rb_node_const_t *
23311rb_node_const_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
23313 rb_node_const_t *n = NODE_NEWNODE(NODE_CONST, rb_node_const_t, loc);
23314 n->nd_vid = nd_vid;
23319static rb_node_cvar_t *
23320rb_node_cvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
23322 rb_node_cvar_t *n = NODE_NEWNODE(NODE_CVAR, rb_node_cvar_t, loc);
23323 n->nd_vid = nd_vid;
23328static rb_node_nth_ref_t *
23329rb_node_nth_ref_new(
struct parser_params *p,
long nd_nth,
const YYLTYPE *loc)
23331 rb_node_nth_ref_t *n = NODE_NEWNODE(NODE_NTH_REF, rb_node_nth_ref_t, loc);
23332 n->nd_nth = nd_nth;
23337static rb_node_back_ref_t *
23338rb_node_back_ref_new(
struct parser_params *p,
long nd_nth,
const YYLTYPE *loc)
23340 rb_node_back_ref_t *n = NODE_NEWNODE(NODE_BACK_REF, rb_node_back_ref_t, loc);
23341 n->nd_nth = nd_nth;
23346static rb_node_integer_t *
23347rb_node_integer_new(
struct parser_params *p,
char* val,
int base,
const YYLTYPE *loc)
23349 rb_node_integer_t *n = NODE_NEWNODE(NODE_INTEGER, rb_node_integer_t, loc);
23357static rb_node_float_t *
23358rb_node_float_new(
struct parser_params *p,
char* val,
const YYLTYPE *loc)
23360 rb_node_float_t *n = NODE_NEWNODE(NODE_FLOAT, rb_node_float_t, loc);
23367static rb_node_rational_t *
23368rb_node_rational_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
const YYLTYPE *loc)
23370 rb_node_rational_t *n = NODE_NEWNODE(NODE_RATIONAL, rb_node_rational_t, loc);
23374 n->seen_point = seen_point;
23379static rb_node_imaginary_t *
23380rb_node_imaginary_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
enum rb_numeric_type numeric_type,
const YYLTYPE *loc)
23382 rb_node_imaginary_t *n = NODE_NEWNODE(NODE_IMAGINARY, rb_node_imaginary_t, loc);
23386 n->seen_point = seen_point;
23387 n->type = numeric_type;
23392static rb_node_str_t *
23393rb_node_str_new(
struct parser_params *p, rb_parser_string_t *
string,
const YYLTYPE *loc)
23395 rb_node_str_t *n = NODE_NEWNODE(NODE_STR, rb_node_str_t, loc);
23396 n->string = string;
23402static rb_node_dstr_t *
23403rb_node_dstr_new0(
struct parser_params *p, rb_parser_string_t *
string,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc)
23405 rb_node_dstr_t *n = NODE_NEWNODE(NODE_DSTR, rb_node_dstr_t, loc);
23406 n->string = string;
23407 n->as.nd_alen = nd_alen;
23408 n->nd_next = (rb_node_list_t *)nd_next;
23413static rb_node_dstr_t *
23414rb_node_dstr_new(
struct parser_params *p, rb_parser_string_t *
string,
const YYLTYPE *loc)
23416 return rb_node_dstr_new0(p,
string, 1, 0, loc);
23419static rb_node_xstr_t *
23420rb_node_xstr_new(
struct parser_params *p, rb_parser_string_t *
string,
const YYLTYPE *loc)
23422 rb_node_xstr_t *n = NODE_NEWNODE(NODE_XSTR, rb_node_xstr_t, loc);
23423 n->string = string;
23428static rb_node_dxstr_t *
23429rb_node_dxstr_new(
struct parser_params *p, rb_parser_string_t *
string,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc)
23431 rb_node_dxstr_t *n = NODE_NEWNODE(NODE_DXSTR, rb_node_dxstr_t, loc);
23432 n->string = string;
23433 n->as.nd_alen = nd_alen;
23434 n->nd_next = (rb_node_list_t *)nd_next;
23439static rb_node_sym_t *
23442 rb_node_sym_t *n = NODE_NEWNODE(NODE_SYM, rb_node_sym_t, loc);
23443 n->string = rb_str_to_parser_string(p, str);
23448static rb_node_dsym_t *
23449rb_node_dsym_new(
struct parser_params *p, rb_parser_string_t *
string,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc)
23451 rb_node_dsym_t *n = NODE_NEWNODE(NODE_DSYM, rb_node_dsym_t, loc);
23452 n->string = string;
23453 n->as.nd_alen = nd_alen;
23454 n->nd_next = (rb_node_list_t *)nd_next;
23459static rb_node_evstr_t *
23460rb_node_evstr_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *opening_loc,
const YYLTYPE *closing_loc)
23462 rb_node_evstr_t *n = NODE_NEWNODE(NODE_EVSTR, rb_node_evstr_t, loc);
23463 n->nd_body = nd_body;
23464 n->opening_loc = *opening_loc;
23465 n->closing_loc = *closing_loc;
23470static rb_node_regx_t *
23471rb_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)
23473 rb_node_regx_t *n = NODE_NEWNODE(NODE_REGX, rb_node_regx_t, loc);
23474 n->string = string;
23475 n->options = options & RE_OPTION_MASK;
23476 n->opening_loc = *opening_loc;
23477 n->content_loc = *content_loc;
23478 n->closing_loc = *closing_loc;
23483static rb_node_call_t *
23484rb_node_call_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc)
23486 rb_node_call_t *n = NODE_NEWNODE(NODE_CALL, rb_node_call_t, loc);
23487 n->nd_recv = nd_recv;
23488 n->nd_mid = nd_mid;
23489 n->nd_args = nd_args;
23494static rb_node_opcall_t *
23495rb_node_opcall_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc)
23497 rb_node_opcall_t *n = NODE_NEWNODE(NODE_OPCALL, rb_node_opcall_t, loc);
23498 n->nd_recv = nd_recv;
23499 n->nd_mid = nd_mid;
23500 n->nd_args = nd_args;
23505static rb_node_fcall_t *
23506rb_node_fcall_new(
struct parser_params *p,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc)
23508 rb_node_fcall_t *n = NODE_NEWNODE(NODE_FCALL, rb_node_fcall_t, loc);
23509 n->nd_mid = nd_mid;
23510 n->nd_args = nd_args;
23515static rb_node_qcall_t *
23516rb_node_qcall_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc)
23518 rb_node_qcall_t *n = NODE_NEWNODE(NODE_QCALL, rb_node_qcall_t, loc);
23519 n->nd_recv = nd_recv;
23520 n->nd_mid = nd_mid;
23521 n->nd_args = nd_args;
23526static rb_node_vcall_t *
23527rb_node_vcall_new(
struct parser_params *p,
ID nd_mid,
const YYLTYPE *loc)
23529 rb_node_vcall_t *n = NODE_NEWNODE(NODE_VCALL, rb_node_vcall_t, loc);
23530 n->nd_mid = nd_mid;
23535static rb_node_once_t *
23536rb_node_once_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc)
23538 rb_node_once_t *n = NODE_NEWNODE(NODE_ONCE, rb_node_once_t, loc);
23539 n->nd_body = nd_body;
23544static rb_node_args_t *
23545rb_node_args_new(
struct parser_params *p,
const YYLTYPE *loc)
23547 rb_node_args_t *n = NODE_NEWNODE(NODE_ARGS, rb_node_args_t, loc);
23553static rb_node_args_aux_t *
23554rb_node_args_aux_new(
struct parser_params *p,
ID nd_pid,
int nd_plen,
const YYLTYPE *loc)
23556 rb_node_args_aux_t *n = NODE_NEWNODE(NODE_ARGS_AUX, rb_node_args_aux_t, loc);
23557 n->nd_pid = nd_pid;
23558 n->nd_plen = nd_plen;
23564static rb_node_opt_arg_t *
23565rb_node_opt_arg_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc)
23567 rb_node_opt_arg_t *n = NODE_NEWNODE(NODE_OPT_ARG, rb_node_opt_arg_t, loc);
23568 n->nd_body = nd_body;
23574static rb_node_kw_arg_t *
23575rb_node_kw_arg_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc)
23577 rb_node_kw_arg_t *n = NODE_NEWNODE(NODE_KW_ARG, rb_node_kw_arg_t, loc);
23578 n->nd_body = nd_body;
23584static rb_node_postarg_t *
23585rb_node_postarg_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc)
23587 rb_node_postarg_t *n = NODE_NEWNODE(NODE_POSTARG, rb_node_postarg_t, loc);
23588 n->nd_1st = nd_1st;
23589 n->nd_2nd = nd_2nd;
23594static rb_node_argscat_t *
23595rb_node_argscat_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body,
const YYLTYPE *loc)
23597 rb_node_argscat_t *n = NODE_NEWNODE(NODE_ARGSCAT, rb_node_argscat_t, loc);
23598 n->nd_head = nd_head;
23599 n->nd_body = nd_body;
23604static rb_node_argspush_t *
23605rb_node_argspush_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body,
const YYLTYPE *loc)
23607 rb_node_argspush_t *n = NODE_NEWNODE(NODE_ARGSPUSH, rb_node_argspush_t, loc);
23608 n->nd_head = nd_head;
23609 n->nd_body = nd_body;
23614static rb_node_splat_t *
23615rb_node_splat_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
23617 rb_node_splat_t *n = NODE_NEWNODE(NODE_SPLAT, rb_node_splat_t, loc);
23618 n->nd_head = nd_head;
23619 n->operator_loc = *operator_loc;
23624static rb_node_block_pass_t *
23625rb_node_block_pass_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
23627 rb_node_block_pass_t *n = NODE_NEWNODE(NODE_BLOCK_PASS, rb_node_block_pass_t, loc);
23630 n->nd_body = nd_body;
23631 n->operator_loc = *operator_loc;
23636static rb_node_alias_t *
23637rb_node_alias_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23639 rb_node_alias_t *n = NODE_NEWNODE(NODE_ALIAS, rb_node_alias_t, loc);
23640 n->nd_1st = nd_1st;
23641 n->nd_2nd = nd_2nd;
23642 n->keyword_loc = *keyword_loc;
23647static rb_node_valias_t *
23648rb_node_valias_new(
struct parser_params *p,
ID nd_alias,
ID nd_orig,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23650 rb_node_valias_t *n = NODE_NEWNODE(NODE_VALIAS, rb_node_valias_t, loc);
23651 n->nd_alias = nd_alias;
23652 n->nd_orig = nd_orig;
23653 n->keyword_loc = *keyword_loc;
23658static rb_node_undef_t *
23659rb_node_undef_new(
struct parser_params *p, NODE *nd_undef,
const YYLTYPE *loc)
23661 rb_node_undef_t *n = NODE_NEWNODE(NODE_UNDEF, rb_node_undef_t, loc);
23662 n->nd_undefs = rb_parser_ary_new_capa_for_node(p, 1);
23663 n->keyword_loc = NULL_LOC;
23664 rb_parser_ary_push_node(p, n->nd_undefs, nd_undef);
23669static rb_node_errinfo_t *
23670rb_node_errinfo_new(
struct parser_params *p,
const YYLTYPE *loc)
23672 rb_node_errinfo_t *n = NODE_NEWNODE(NODE_ERRINFO, rb_node_errinfo_t, loc);
23677static rb_node_defined_t *
23678rb_node_defined_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23680 rb_node_defined_t *n = NODE_NEWNODE(NODE_DEFINED, rb_node_defined_t, loc);
23681 n->nd_head = nd_head;
23682 n->keyword_loc = *keyword_loc;
23687static rb_node_postexe_t *
23688rb_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)
23690 rb_node_postexe_t *n = NODE_NEWNODE(NODE_POSTEXE, rb_node_postexe_t, loc);
23691 n->nd_body = nd_body;
23692 n->keyword_loc = *keyword_loc;
23693 n->opening_loc = *opening_loc;
23694 n->closing_loc = *closing_loc;
23699static rb_node_attrasgn_t *
23700rb_node_attrasgn_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc)
23702 rb_node_attrasgn_t *n = NODE_NEWNODE(NODE_ATTRASGN, rb_node_attrasgn_t, loc);
23703 n->nd_recv = nd_recv;
23704 n->nd_mid = nd_mid;
23705 n->nd_args = nd_args;
23710static rb_node_aryptn_t *
23711rb_node_aryptn_new(
struct parser_params *p, NODE *pre_args, NODE *rest_arg, NODE *post_args,
const YYLTYPE *loc)
23713 rb_node_aryptn_t *n = NODE_NEWNODE(NODE_ARYPTN, rb_node_aryptn_t, loc);
23715 n->pre_args = pre_args;
23716 n->rest_arg = rest_arg;
23717 n->post_args = post_args;
23722static rb_node_hshptn_t *
23723rb_node_hshptn_new(
struct parser_params *p, NODE *nd_pconst, NODE *nd_pkwargs, NODE *nd_pkwrestarg,
const YYLTYPE *loc)
23725 rb_node_hshptn_t *n = NODE_NEWNODE(NODE_HSHPTN, rb_node_hshptn_t, loc);
23726 n->nd_pconst = nd_pconst;
23727 n->nd_pkwargs = nd_pkwargs;
23728 n->nd_pkwrestarg = nd_pkwrestarg;
23733static rb_node_fndptn_t *
23734rb_node_fndptn_new(
struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg,
const YYLTYPE *loc)
23736 rb_node_fndptn_t *n = NODE_NEWNODE(NODE_FNDPTN, rb_node_fndptn_t, loc);
23738 n->pre_rest_arg = pre_rest_arg;
23740 n->post_rest_arg = post_rest_arg;
23745static rb_node_line_t *
23746rb_node_line_new(
struct parser_params *p,
const YYLTYPE *loc)
23748 rb_node_line_t *n = NODE_NEWNODE(NODE_LINE, rb_node_line_t, loc);
23753static rb_node_file_t *
23756 rb_node_file_t *n = NODE_NEWNODE(NODE_FILE, rb_node_file_t, loc);
23757 n->path = rb_str_to_parser_string(p, str);
23762static rb_node_encoding_t *
23763rb_node_encoding_new(
struct parser_params *p,
const YYLTYPE *loc)
23765 rb_node_encoding_t *n = NODE_NEWNODE(NODE_ENCODING, rb_node_encoding_t, loc);
23771static rb_node_cdecl_t *
23772rb_node_cdecl_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value, NODE *nd_else,
enum rb_parser_shareability shareability,
const YYLTYPE *loc)
23774 rb_node_cdecl_t *n = NODE_NEWNODE(NODE_CDECL, rb_node_cdecl_t, loc);
23775 n->nd_vid = nd_vid;
23776 n->nd_value = nd_value;
23777 n->nd_else = nd_else;
23778 n->shareability = shareability;
23783static rb_node_op_cdecl_t *
23784rb_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)
23786 rb_node_op_cdecl_t *n = NODE_NEWNODE(NODE_OP_CDECL, rb_node_op_cdecl_t, loc);
23787 n->nd_head = nd_head;
23788 n->nd_value = nd_value;
23789 n->nd_aid = nd_aid;
23790 n->shareability = shareability;
23795static rb_node_error_t *
23796rb_node_error_new(
struct parser_params *p,
const YYLTYPE *loc)
23798 rb_node_error_t *n = NODE_NEWNODE(NODE_ERROR, rb_node_error_t, loc);
23803static rb_node_break_t *
23804rb_node_break_new(
struct parser_params *p, NODE *nd_stts,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23806 rb_node_break_t *n = NODE_NEWNODE(NODE_BREAK, rb_node_break_t, loc);
23807 n->nd_stts = nd_stts;
23809 n->keyword_loc = *keyword_loc;
23814static rb_node_next_t *
23815rb_node_next_new(
struct parser_params *p, NODE *nd_stts,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23817 rb_node_next_t *n = NODE_NEWNODE(NODE_NEXT, rb_node_next_t, loc);
23818 n->nd_stts = nd_stts;
23820 n->keyword_loc = *keyword_loc;
23825static rb_node_redo_t *
23826rb_node_redo_new(
struct parser_params *p,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23828 rb_node_redo_t *n = NODE_NEWNODE(NODE_REDO, rb_node_redo_t, loc);
23830 n->keyword_loc = *keyword_loc;
23835static rb_node_def_temp_t *
23836rb_node_def_temp_new(
struct parser_params *p,
const YYLTYPE *loc)
23838 rb_node_def_temp_t *n = NODE_NEWNODE((
enum node_type)NODE_DEF_TEMP, rb_node_def_temp_t, loc);
23839 n->save.numparam_save = 0;
23840 n->save.max_numparam = 0;
23841 n->save.ctxt = p->ctxt;
23848static rb_node_def_temp_t *
23849def_head_save(
struct parser_params *p, rb_node_def_temp_t *n)
23851 n->save.numparam_save = numparam_push(p);
23852 n->save.max_numparam = p->max_numparam;
23857static enum node_type
23858nodetype(NODE *node)
23860 return (
enum node_type)nd_type(node);
23864nodeline(NODE *node)
23866 return nd_line(node);
23871newline_node(NODE *node)
23874 node = remove_begin(node);
23875 nd_set_fl_newline(node);
23881fixpos(NODE *node, NODE *orig)
23885 nd_set_line(node, nd_line(orig));
23889block_append(
struct parser_params *p, NODE *head, NODE *tail)
23891 NODE *end, *h = head, *nd;
23893 if (tail == 0)
return head;
23895 if (h == 0)
return tail;
23896 switch (nd_type(h)) {
23898 h = end = NEW_BLOCK(head, &head->nd_loc);
23902 end = RNODE_BLOCK(h)->nd_end;
23906 nd = RNODE_BLOCK(end)->nd_head;
23907 switch (nd_type(nd)) {
23913 rb_warning0L(nd_line(tail),
"statement not reached");
23920 if (!nd_type_p(tail, NODE_BLOCK)) {
23921 tail = NEW_BLOCK(tail, &tail->nd_loc);
23923 RNODE_BLOCK(end)->nd_next = tail;
23924 RNODE_BLOCK(h)->nd_end = RNODE_BLOCK(tail)->nd_end;
23925 nd_set_last_loc(head, nd_last_loc(tail));
23931list_append(
struct parser_params *p, NODE *list, NODE *item)
23935 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
23936 if (RNODE_LIST(list)->nd_next) {
23937 last = RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end;
23943 RNODE_LIST(list)->as.nd_alen += 1;
23944 RNODE_LIST(last)->nd_next = NEW_LIST(item, &item->nd_loc);
23945 RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end = RNODE_LIST(last)->nd_next;
23947 nd_set_last_loc(list, nd_last_loc(item));
23954list_concat(NODE *head, NODE *tail)
23958 if (RNODE_LIST(head)->nd_next) {
23959 last = RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end;
23965 RNODE_LIST(head)->as.nd_alen += RNODE_LIST(tail)->as.nd_alen;
23966 RNODE_LIST(last)->nd_next = tail;
23967 if (RNODE_LIST(tail)->nd_next) {
23968 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = RNODE_LIST(RNODE_LIST(tail)->nd_next)->as.nd_end;
23971 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = tail;
23974 nd_set_last_loc(head, nd_last_loc(tail));
23980literal_concat0(
struct parser_params *p, rb_parser_string_t *head, rb_parser_string_t *tail)
23982 if (!tail)
return 1;
23983 if (!rb_parser_enc_compatible(p, head, tail)) {
23984 compile_error(p,
"string literal encodings differ (%s / %s)",
23985 rb_enc_name(rb_parser_str_get_encoding(head)),
23986 rb_enc_name(rb_parser_str_get_encoding(tail)));
23987 rb_parser_str_resize(p, head, 0);
23988 rb_parser_str_resize(p, tail, 0);
23991 rb_parser_str_buf_append(p, head, tail);
23995static rb_parser_string_t *
23996string_literal_head(
struct parser_params *p,
enum node_type htype, NODE *head)
23998 if (htype != NODE_DSTR)
return NULL;
23999 if (RNODE_DSTR(head)->nd_next) {
24000 head = RNODE_LIST(RNODE_LIST(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_head;
24001 if (!head || !nd_type_p(head, NODE_STR))
return NULL;
24003 rb_parser_string_t *lit = RNODE_DSTR(head)->string;
24009static rb_parser_string_t *
24010rb_parser_string_deep_copy(
struct parser_params *p,
const rb_parser_string_t *orig)
24012 rb_parser_string_t *copy;
24013 if (!orig)
return NULL;
24014 copy = rb_parser_string_new(p, PARSER_STRING_PTR(orig), PARSER_STRING_LEN(orig));
24015 copy->coderange = orig->coderange;
24016 copy->enc = orig->enc;
24023literal_concat(
struct parser_params *p, NODE *head, NODE *tail,
const YYLTYPE *loc)
24025 enum node_type htype;
24026 rb_parser_string_t *lit;
24028 if (!head)
return tail;
24029 if (!tail)
return head;
24031 htype = nd_type(head);
24032 if (htype == NODE_EVSTR) {
24033 head = new_dstr(p, head, loc);
24036 if (p->heredoc_indent > 0) {
24039 head = str2dstr(p, head);
24041 return list_append(p, head, tail);
24046 switch (nd_type(tail)) {
24048 if ((lit = string_literal_head(p, htype, head)) !=
false) {
24052 lit = RNODE_DSTR(head)->string;
24054 if (htype == NODE_STR) {
24055 if (!literal_concat0(p, lit, RNODE_STR(tail)->
string)) {
24057 rb_discard_node(p, head);
24058 rb_discard_node(p, tail);
24061 rb_discard_node(p, tail);
24064 list_append(p, head, tail);
24069 if (htype == NODE_STR) {
24070 if (!literal_concat0(p, RNODE_STR(head)->
string, RNODE_DSTR(tail)->
string))
24072 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24073 RNODE_DSTR(tail)->string = RNODE_STR(head)->string;
24074 RNODE_STR(head)->string = NULL;
24075 rb_discard_node(p, head);
24078 else if (!RNODE_DSTR(tail)->
string) {
24080 RNODE_DSTR(head)->as.nd_alen += RNODE_DSTR(tail)->as.nd_alen - 1;
24081 if (!RNODE_DSTR(head)->nd_next) {
24082 RNODE_DSTR(head)->nd_next = RNODE_DSTR(tail)->nd_next;
24084 else if (RNODE_DSTR(tail)->nd_next) {
24085 RNODE_DSTR(RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_next = RNODE_DSTR(tail)->nd_next;
24086 RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end = RNODE_DSTR(RNODE_DSTR(tail)->nd_next)->as.nd_end;
24088 rb_discard_node(p, tail);
24090 else if ((lit = string_literal_head(p, htype, head)) !=
false) {
24091 if (!literal_concat0(p, lit, RNODE_DSTR(tail)->
string))
24093 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24094 RNODE_DSTR(tail)->string = 0;
24098 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));
24099 RNODE_DSTR(tail)->string = 0;
24104 if (htype == NODE_STR) {
24105 head = str2dstr(p, head);
24106 RNODE_DSTR(head)->as.nd_alen = 1;
24108 list_append(p, head, tail);
24115nd_copy_flag(NODE *new_node, NODE *old_node)
24117 if (nd_fl_newline(old_node)) nd_set_fl_newline(new_node);
24118 nd_set_line(new_node, nd_line(old_node));
24119 new_node->nd_loc = old_node->nd_loc;
24120 new_node->node_id = old_node->node_id;
24126 NODE *new_node = (NODE *)NODE_NEW_INTERNAL(NODE_DSTR, rb_node_dstr_t);
24127 nd_copy_flag(new_node, node);
24128 RNODE_DSTR(new_node)->string = RNODE_STR(node)->string;
24129 RNODE_DSTR(new_node)->as.nd_alen = 0;
24130 RNODE_DSTR(new_node)->nd_next = 0;
24131 RNODE_STR(node)->string = 0;
24137str2regx(
struct parser_params *p, NODE *node,
int options,
const YYLTYPE *loc,
const YYLTYPE *opening_loc,
const YYLTYPE *content_loc,
const YYLTYPE *closing_loc)
24139 NODE *new_node = (NODE *)NODE_NEW_INTERNAL(NODE_REGX, rb_node_regx_t);
24140 nd_copy_flag(new_node, node);
24141 RNODE_REGX(new_node)->string = RNODE_STR(node)->string;
24142 RNODE_REGX(new_node)->options = options;
24143 nd_set_loc(new_node, loc);
24144 RNODE_REGX(new_node)->opening_loc = *opening_loc;
24145 RNODE_REGX(new_node)->content_loc = *content_loc;
24146 RNODE_REGX(new_node)->closing_loc = *closing_loc;
24147 RNODE_STR(node)->string = 0;
24155 if (nd_type_p(node, NODE_EVSTR)) {
24156 node = new_dstr(p, node, &node->nd_loc);
24162new_evstr(
struct parser_params *p, NODE *node,
const YYLTYPE *loc,
const YYLTYPE *opening_loc,
const YYLTYPE *closing_loc)
24167 switch (nd_type(node)) {
24169 return str2dstr(p, node);
24176 return NEW_EVSTR(head, loc, opening_loc, closing_loc);
24180new_dstr(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
24182 NODE *dstr = NEW_DSTR(STRING_NEW0(), loc);
24183 return list_append(p, dstr, node);
24188 const YYLTYPE *op_loc,
const YYLTYPE *loc)
24191 value_expr(p, recv);
24192 value_expr(p, arg1);
24193 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
24194 nd_set_line(expr, op_loc->beg_pos.lineno);
24199call_uni_op(
struct parser_params *p, NODE *recv,
ID id,
const YYLTYPE *op_loc,
const YYLTYPE *loc)
24202 value_expr(p, recv);
24203 opcall = NEW_OPCALL(recv,
id, 0, loc);
24204 nd_set_line(opcall, op_loc->beg_pos.lineno);
24209new_qcall(
struct parser_params* p,
ID atype, NODE *recv,
ID mid, NODE *args,
const YYLTYPE *op_loc,
const YYLTYPE *loc)
24211 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
24212 nd_set_line(qcall, op_loc->beg_pos.lineno);
24217new_command_qcall(
struct parser_params* p,
ID atype, NODE *recv,
ID mid, NODE *args, NODE *block,
const YYLTYPE *op_loc,
const YYLTYPE *loc)
24220 if (block) block_dup_check(p, args, block);
24221 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
24222 if (block) ret = method_add_block(p, ret, block, loc);
24228new_locations_lambda_body(
struct parser_params* p, NODE *node,
const YYLTYPE *loc,
const YYLTYPE *opening_loc,
const YYLTYPE *closing_loc)
24232 body->opening_loc = *opening_loc;
24233 body->closing_loc = *closing_loc;
24238command_add_block(
struct parser_params*p, NODE *m, NODE *b,
const YYLTYPE *loc)
24241 enum node_type
type = nd_type(m);
24244 compile_error(p,
"block given to yield");
24247 body = &RNODE_RETURN(m)->nd_stts;
24251 body = &RNODE_EXITS(m)->nd_stts;
24254 compile_error(p,
"command_add_block: unexpected node: NODE_REDO");
24257 compile_error(p,
"command_add_block: unexpected node: NODE_RETRY");
24260 block_dup_check(p, get_nd_args(p, m), b);
24261 return method_add_block(p, m, b, loc);
24263 RUBY_ASSERT(*body,
"no argument %s with do_block", parser_node_name(
type));
24264 YYLTYPE b_loc = code_loc_gen(&(*body)->nd_loc, loc);
24265 *body = command_add_block(p, *body, b, &b_loc);
24266 m->nd_loc.end_pos = loc->end_pos;
24270#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? RNODE_ONCE(node)->nd_body : node)
24273last_expr_once_body(NODE *node)
24275 if (!node)
return 0;
24276 return nd_once_body(node);
24280match_op(
struct parser_params *p, NODE *node1, NODE *node2,
const YYLTYPE *op_loc,
const YYLTYPE *loc)
24283 int line = op_loc->beg_pos.lineno;
24285 value_expr(p, node1);
24286 value_expr(p, node2);
24288 if ((n = last_expr_once_body(node1)) != 0) {
24289 switch (nd_type(n)) {
24292 NODE *match = NEW_MATCH2(node1, node2, loc);
24293 nd_set_line(match, line);
24299 const VALUE lit = rb_node_regx_string_val(n);
24301 NODE *match = NEW_MATCH2(node1, node2, loc);
24302 RNODE_MATCH2(match)->nd_args = reg_named_capture_assign(p, lit, loc, assignable);
24303 nd_set_line(match, line);
24310 if ((n = last_expr_once_body(node2)) != 0) {
24313 switch (nd_type(n)) {
24315 match3 = NEW_MATCH3(node2, node1, loc);
24320 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
24321 nd_set_line(n, line);
24325# if WARN_PAST_SCOPE
24329 struct vtable *past = p->lvtbl->past;
24331 if (vtable_included(past,
id))
return 1;
24342 NODE *outer = local->numparam.outer;
24343 NODE *inner = local->numparam.inner;
24344 if (outer || inner) {
24345 NODE *used = outer ? outer : inner;
24346 compile_error(p,
"numbered parameter is already used in %s block\n"
24347 "%s:%d: numbered parameter is already used here",
24348 outer ?
"outer" :
"inner",
24349 p->ruby_sourcefile, nd_line(used));
24350 parser_show_error_line(p, &used->nd_loc);
24359 NODE *numparam = p->lvtbl->numparam.current;
24361 compile_error(p,
"'it' is not allowed when a numbered parameter is already used\n"
24362 "%s:%d: numbered parameter is already used here",
24363 p->ruby_sourcefile, nd_line(numparam));
24364 parser_show_error_line(p, &numparam->nd_loc);
24373 NODE *it = p->lvtbl->it;
24375 compile_error(p,
"numbered parameters are not allowed when 'it' is already used\n"
24376 "%s:%d: 'it' is already used here",
24377 p->ruby_sourcefile, nd_line(it));
24378 parser_show_error_line(p, &it->nd_loc);
24391 return NEW_SELF(loc);
24393 return NEW_NIL(loc);
24395 return NEW_TRUE(loc);
24396 case keyword_false:
24397 return NEW_FALSE(loc);
24398 case keyword__FILE__:
24400 VALUE file = p->ruby_sourcefile_string;
24403 node = NEW_FILE(file, loc);
24406 case keyword__LINE__:
24407 return NEW_LINE(loc);
24408 case keyword__ENCODING__:
24409 return NEW_ENCODING(loc);
24412 switch (id_type(
id)) {
24414 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
24415 if (NUMPARAM_ID_P(
id) && (numparam_nested_p(p) || it_used_p(p)))
return 0;
24416 if (vidp) *vidp |= LVAR_USED;
24417 node = NEW_DVAR(
id, loc);
24420 if (local_id_ref(p,
id, &vidp)) {
24421 if (vidp) *vidp |= LVAR_USED;
24422 node = NEW_LVAR(
id, loc);
24425 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
24426 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
24427 if (numparam_nested_p(p) || it_used_p(p))
return 0;
24428 node = NEW_DVAR(
id, loc);
24430 if (!local->numparam.current) local->numparam.current = node;
24433# if WARN_PAST_SCOPE
24435 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
24439 if (dyna_in_block(p) &&
id == idIt && !(DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev))) {
24440 if (numparam_used_p(p))
return 0;
24441 if (p->max_numparam == ORDINAL_PARAM) {
24442 compile_error(p,
"ordinary parameter is defined");
24446 p->it_id = idItImplicit;
24447 vtable_add(p->lvtbl->args, p->it_id);
24449 NODE *node = NEW_DVAR(p->it_id, loc);
24450 if (!p->lvtbl->it) p->lvtbl->it = node;
24453 return NEW_VCALL(
id, loc);
24455 return NEW_GVAR(
id, loc);
24457 return NEW_IVAR(
id, loc);
24459 return NEW_CONST(
id, loc);
24461 return NEW_CVAR(
id, loc);
24463 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24467static rb_node_opt_arg_t *
24468opt_arg_append(rb_node_opt_arg_t *opt_list, rb_node_opt_arg_t *opt)
24470 rb_node_opt_arg_t *opts = opt_list;
24471 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24473 while (opts->nd_next) {
24474 opts = opts->nd_next;
24475 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24477 opts->nd_next = opt;
24482static rb_node_kw_arg_t *
24483kwd_append(rb_node_kw_arg_t *kwlist, rb_node_kw_arg_t *kw)
24487 opt_arg_append(RNODE_OPT_ARG(kwlist), RNODE_OPT_ARG(kw));
24493new_defined(
struct parser_params *p, NODE *expr,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
24495 int had_trailing_semicolon = p->ctxt.has_trailing_semicolon;
24496 p->ctxt.has_trailing_semicolon = 0;
24500 if (nd_type_p(n, NODE_BEGIN)) {
24501 n = RNODE_BEGIN(n)->nd_body;
24503 else if (nd_type_p(n, NODE_BLOCK) && RNODE_BLOCK(n)->nd_end == n) {
24504 n = RNODE_BLOCK(n)->nd_head;
24511 if (had_trailing_semicolon && !nd_type_p(expr, NODE_BLOCK)) {
24512 NODE *block = NEW_BLOCK(expr, loc);
24513 return NEW_DEFINED(block, loc, keyword_loc);
24516 return NEW_DEFINED(n, loc, keyword_loc);
24520str_to_sym_node(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
24523 rb_parser_string_t *str = RNODE_STR(node)->string;
24524 if (rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_BROKEN) {
24525 yyerror1(loc,
"invalid symbol");
24529 lit = rb_str_new_parser_string(str);
24531 return NEW_SYM(lit, loc);
24535symbol_append(
struct parser_params *p, NODE *symbols, NODE *symbol)
24537 enum node_type
type = nd_type(symbol);
24540 nd_set_type(symbol, NODE_DSYM);
24543 symbol = str_to_sym_node(p, symbol, &RNODE(symbol)->nd_loc);
24546 compile_error(p,
"unexpected node as symbol: %s", parser_node_name(
type));
24548 return list_append(p, symbols, symbol);
24552dregex_fragment_setenc(
struct parser_params *p, rb_node_dregx_t *
const dreg,
int options)
24554 if (dreg->string) {
24555 reg_fragment_setenc(p, dreg->string, options);
24557 for (
struct RNode_LIST *list = dreg->nd_next; list; list = RNODE_LIST(list->nd_next)) {
24558 NODE *frag = list->nd_head;
24559 if (nd_type_p(frag, NODE_STR)) {
24560 reg_fragment_setenc(p, RNODE_STR(frag)->
string, options);
24562 else if (nd_type_p(frag, NODE_DSTR)) {
24563 dregex_fragment_setenc(p, RNODE_DSTR(frag), options);
24569new_regexp(
struct parser_params *p, NODE *node,
int options,
const YYLTYPE *loc,
const YYLTYPE *opening_loc,
const YYLTYPE *content_loc,
const YYLTYPE *closing_loc)
24573 rb_parser_string_t *str = STRING_NEW0();
24574 reg_compile(p, str, options);
24575 node = NEW_REGX(str, options, loc, opening_loc, content_loc, closing_loc);
24578 switch (nd_type(node)) {
24582 reg_compile(p, RNODE_STR(node)->
string, options);
24583 node = str2regx(p, node, options, loc, opening_loc, content_loc, closing_loc);
24587 node = NEW_DSTR0(STRING_NEW0(), 1, NEW_LIST(node, loc), loc);
24590 nd_set_type(node, NODE_DREGX);
24591 nd_set_loc(node, loc);
24592 rb_node_dregx_t *
const dreg = RNODE_DREGX(node);
24593 dreg->as.nd_cflag = options & RE_OPTION_MASK;
24594 if (dreg->nd_next) {
24595 dregex_fragment_setenc(p, dreg, options);
24597 if (options & RE_OPTION_ONCE) {
24598 node = NEW_ONCE(node, loc);
24605static rb_node_kw_arg_t *
24606new_kw_arg(
struct parser_params *p, NODE *k,
const YYLTYPE *loc)
24609 return NEW_KW_ARG((k), loc);
24613new_xstring(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
24616 NODE *xstr = NEW_XSTR(STRING_NEW0(), loc);
24619 switch (nd_type(node)) {
24621 nd_set_type(node, NODE_XSTR);
24622 nd_set_loc(node, loc);
24625 nd_set_type(node, NODE_DXSTR);
24626 nd_set_loc(node, loc);
24629 node = NEW_DXSTR(0, 1, NEW_LIST(node, loc), loc);
24636struct st_hash_type literal_type = {
24641static int nd_type_st_key_enable_p(NODE *node);
24644check_literal_when(
struct parser_params *p, NODE *arg,
const YYLTYPE *loc)
24647 if (!arg || !p->case_labels)
return;
24648 if (!nd_type_st_key_enable_p(arg))
return;
24650 if (p->case_labels == CHECK_LITERAL_WHEN) {
24651 p->case_labels = st_init_table(&literal_type);
24655 if (st_lookup(p->case_labels, (st_data_t)arg, &line)) {
24656 rb_warning2(
"'when' clause on line %d duplicates 'when' clause on line %d and is ignored",
24657 WARN_I((
int)nd_line(arg)), WARN_I((
int)line));
24661 st_insert(p->case_labels, (st_data_t)arg, (st_data_t)p->ruby_sourceline);
24668 if (is_notop_id(
id)) {
24669 switch (
id & ID_SCOPE_MASK) {
24670 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
24673 if (dyna_in_block(p)) {
24674 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
24676 if (local_id(p,
id))
return 1;
24681 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24686static inline enum lex_state_e
24687parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
24690 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
24692 return p->lex.state = ls;
24699 VALUE mesg = p->debug_buffer;
24701 if (!
NIL_P(mesg) && RSTRING_LEN(mesg)) {
24702 p->debug_buffer =
Qnil;
24703 rb_io_puts(1, &mesg, out);
24705 if (!
NIL_P(str) && RSTRING_LEN(str)) {
24706 rb_io_write(p->debug_output, str);
24710static const char rb_parser_lex_state_names[][8] = {
24711 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
24712 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
24713 "LABEL",
"LABELED",
"FITEM",
24720 unsigned int mask = 1;
24721 static const char none[] =
"NONE";
24723 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
24724 if ((
unsigned)state & mask) {
24739rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
24740 enum lex_state_e to,
int line)
24744 append_lex_state_name(p, from, mesg);
24746 append_lex_state_name(p, to, mesg);
24747 rb_str_catf(mesg,
" at line %d\n", line);
24748 flush_debug_buffer(p, p->debug_output, mesg);
24753rb_parser_lex_state_name(
struct parser_params *p,
enum lex_state_e state)
24755 return rb_str_to_interned_str(append_lex_state_name(p, state,
rb_str_new(0, 0)));
24765 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
24766 for (; mask && !(stack & mask); mask >>= 1)
continue;
24767 for (; mask; mask >>= 1)
rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
24772rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
24773 const char *name,
int line)
24775 VALUE mesg = rb_sprintf(
"%s: ", name);
24776 append_bitstack_value(p, stack, mesg);
24777 rb_str_catf(mesg,
" at line %d\n", line);
24778 flush_debug_buffer(p, p->debug_output, mesg);
24782rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
24788 rb_str_vcatf(mesg, fmt, ap);
24790 yyerror0(RSTRING_PTR(mesg));
24794 append_lex_state_name(p, p->lex.state, mesg);
24795 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
24796 rb_str_resize(mesg, 0);
24797 append_bitstack_value(p, p->cond_stack, mesg);
24798 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
24799 rb_str_resize(mesg, 0);
24800 append_bitstack_value(p, p->cmdarg_stack, mesg);
24801 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
24802 if (p->debug_output == rb_ractor_stdout())
24803 p->debug_output = rb_ractor_stderr();
24808rb_parser_set_pos(YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
24810 yylloc->beg_pos.lineno = sourceline;
24811 yylloc->beg_pos.column = beg_pos;
24812 yylloc->end_pos.lineno = sourceline;
24813 yylloc->end_pos.column = end_pos;
24818rb_parser_set_location_from_strterm_heredoc(
struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc)
24820 int sourceline = here->sourceline;
24821 int beg_pos = (int)here->offset - here->quote
24822 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
24823 int end_pos = (int)here->offset + here->length + here->quote;
24825 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24829rb_parser_set_location_of_delayed_token(
struct parser_params *p, YYLTYPE *yylloc)
24831 yylloc->beg_pos.lineno = p->delayed.beg_line;
24832 yylloc->beg_pos.column = p->delayed.beg_col;
24833 yylloc->end_pos.lineno = p->delayed.end_line;
24834 yylloc->end_pos.column = p->delayed.end_col;
24840rb_parser_set_location_of_heredoc_end(
struct parser_params *p, YYLTYPE *yylloc)
24842 int sourceline = p->ruby_sourceline;
24843 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24844 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
24845 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24849rb_parser_set_location_of_dummy_end(
struct parser_params *p, YYLTYPE *yylloc)
24851 yylloc->end_pos = yylloc->beg_pos;
24857rb_parser_set_location_of_none(
struct parser_params *p, YYLTYPE *yylloc)
24859 int sourceline = p->ruby_sourceline;
24860 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24861 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
24862 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24866rb_parser_set_location(
struct parser_params *p, YYLTYPE *yylloc)
24868 int sourceline = p->ruby_sourceline;
24869 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24870 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
24871 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24878 if (!
id)
return -1;
24881 *err =
"Can't change the value of self";
24884 *err =
"Can't assign to nil";
24887 *err =
"Can't assign to true";
24889 case keyword_false:
24890 *err =
"Can't assign to false";
24892 case keyword__FILE__:
24893 *err =
"Can't assign to __FILE__";
24895 case keyword__LINE__:
24896 *err =
"Can't assign to __LINE__";
24898 case keyword__ENCODING__:
24899 *err =
"Can't assign to __ENCODING__";
24902 switch (id_type(
id)) {
24904 if (dyna_in_block(p)) {
24905 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
24906 compile_error(p,
"Can't assign to numbered parameter _%d",
24907 NUMPARAM_ID_TO_IDX(
id));
24910 if (dvar_curr(p,
id))
return NODE_DASGN;
24911 if (dvar_defined(p,
id))
return NODE_DASGN;
24912 if (local_id(p,
id))
return NODE_LASGN;
24917 if (!local_id(p,
id)) local_var(p,
id);
24921 case ID_GLOBAL:
return NODE_GASGN;
24922 case ID_INSTANCE:
return NODE_IASGN;
24924 if (!p->ctxt.in_def)
return NODE_CDECL;
24925 *err =
"dynamic constant assignment";
24927 case ID_CLASS:
return NODE_CVASGN;
24929 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
24935assignable(
struct parser_params *p,
ID id, NODE *val,
const YYLTYPE *loc)
24937 const char *err = 0;
24938 int node_type = assignable0(p,
id, &err);
24939 switch (node_type) {
24940 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
24941 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
24942 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
24943 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
24944 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, p->ctxt.shareable_constant_value, loc);
24945 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
24949 if (err) yyerror1(loc, err);
24951 if (err) set_value(assign_error(p, err, p->s_lvalue));
24953 return NEW_ERROR(loc);
24960 if (name == idUScore)
return 1;
24961 if (!is_local_id(name))
return 0;
24962 s = rb_id2str(name);
24964 return RSTRING_PTR(s)[0] ==
'_';
24970 if (dyna_in_block(p)) {
24971 if (dvar_curr(p, name)) {
24972 if (is_private_local_id(p, name))
return 1;
24973 yyerror0(
"duplicated argument name");
24975 else if (dvar_defined(p, name) || local_id(p, name)) {
24976 vtable_add(p->lvtbl->vars, name);
24977 if (p->lvtbl->used) {
24978 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
24984 if (local_id(p, name)) {
24985 if (is_private_local_id(p, name))
return 1;
24986 yyerror0(
"duplicated argument name");
24995 shadowing_lvar_0(p, name);
25003 if (!is_local_id(name)) {
25004 compile_error(p,
"invalid local variable - %"PRIsVALUE,
25008 if (!shadowing_lvar_0(p, name))
return;
25011 if (dvar_defined_ref(p, name, &vidp)) {
25012 if (vidp) *vidp |= LVAR_USED;
25019 NODE *block = 0, *kwds = 0;
25020 if (args && nd_type_p(args, NODE_BLOCK_PASS)) {
25021 block = RNODE_BLOCK_PASS(args)->nd_body;
25022 args = RNODE_BLOCK_PASS(args)->nd_head;
25024 if (args && nd_type_p(args, NODE_ARGSCAT)) {
25025 args = RNODE_ARGSCAT(args)->nd_body;
25027 if (args && nd_type_p(args, NODE_ARGSPUSH)) {
25028 kwds = RNODE_ARGSPUSH(args)->nd_body;
25031 for (NODE *next = args; next && nd_type_p(next, NODE_LIST);
25032 next = RNODE_LIST(next)->nd_next) {
25033 kwds = RNODE_LIST(next)->nd_head;
25036 if (kwds && nd_type_p(kwds, NODE_HASH) && !RNODE_HASH(kwds)->nd_brace) {
25037 yyerror1(&kwds->nd_loc,
"keyword arg given in index assignment");
25040 yyerror1(&block->nd_loc,
"block arg given in index assignment");
25045aryset(
struct parser_params *p, NODE *recv, NODE *idx,
const YYLTYPE *loc)
25047 aryset_check(p, idx);
25048 return NEW_ATTRASGN(recv, tASET, idx, loc);
25052block_dup_check(
struct parser_params *p, NODE *node1, NODE *node2)
25054 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
25055 compile_error(p,
"both block arg and actual block given");
25060attrset(
struct parser_params *p, NODE *recv,
ID atype,
ID id,
const YYLTYPE *loc)
25062 if (!CALL_Q_P(atype))
id = rb_id_attrset(
id);
25063 return NEW_ATTRASGN(recv,
id, 0, loc);
25070# define ERR(...) (compile_error(p, __VA_ARGS__), Qtrue)
25072# define ERR(...) rb_sprintf(__VA_ARGS__)
25074 switch (nd_type(node)) {
25076 return ERR(
"Can't set variable $%ld", RNODE_NTH_REF(node)->nd_nth);
25077 case NODE_BACK_REF:
25078 return ERR(
"Can't set variable $%c", (
int)RNODE_BACK_REF(node)->nd_nth);
25085arg_append(
struct parser_params *p, NODE *node1, NODE *node2,
const YYLTYPE *loc)
25087 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
25088 switch (nd_type(node1)) {
25090 return list_append(p, node1, node2);
25091 case NODE_BLOCK_PASS:
25092 RNODE_BLOCK_PASS(node1)->nd_head = arg_append(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25093 node1->nd_loc.end_pos = RNODE_BLOCK_PASS(node1)->nd_head->nd_loc.end_pos;
25095 case NODE_ARGSPUSH:
25096 RNODE_ARGSPUSH(node1)->nd_body = list_append(p, NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, &RNODE_ARGSPUSH(node1)->nd_body->nd_loc), node2);
25097 node1->nd_loc.end_pos = RNODE_ARGSPUSH(node1)->nd_body->nd_loc.end_pos;
25098 nd_set_type(node1, NODE_ARGSCAT);
25101 if (!nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25102 RNODE_ARGSCAT(node1)->nd_body = list_append(p, RNODE_ARGSCAT(node1)->nd_body, node2);
25103 node1->nd_loc.end_pos = RNODE_ARGSCAT(node1)->nd_body->nd_loc.end_pos;
25106 return NEW_ARGSPUSH(node1, node2, loc);
25110arg_concat(
struct parser_params *p, NODE *node1, NODE *node2,
const YYLTYPE *loc)
25112 if (!node2)
return node1;
25113 switch (nd_type(node1)) {
25114 case NODE_BLOCK_PASS:
25115 if (RNODE_BLOCK_PASS(node1)->nd_head)
25116 RNODE_BLOCK_PASS(node1)->nd_head = arg_concat(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25118 RNODE_LIST(node1)->nd_head = NEW_LIST(node2, loc);
25120 case NODE_ARGSPUSH:
25121 if (!nd_type_p(node2, NODE_LIST))
break;
25122 RNODE_ARGSPUSH(node1)->nd_body = list_concat(NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, loc), node2);
25123 nd_set_type(node1, NODE_ARGSCAT);
25126 if (!nd_type_p(node2, NODE_LIST) ||
25127 !nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25128 RNODE_ARGSCAT(node1)->nd_body = list_concat(RNODE_ARGSCAT(node1)->nd_body, node2);
25131 return NEW_ARGSCAT(node1, node2, loc);
25135last_arg_append(
struct parser_params *p, NODE *args, NODE *last_arg,
const YYLTYPE *loc)
25138 if ((n1 = splat_array(args)) != 0) {
25139 return list_append(p, n1, last_arg);
25141 return arg_append(p, args, last_arg, loc);
25145rest_arg_append(
struct parser_params *p, NODE *args, NODE *rest_arg,
const YYLTYPE *loc)
25148 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
25149 return list_concat(n1, rest_arg);
25151 return arg_concat(p, args, rest_arg, loc);
25155splat_array(NODE* node)
25157 if (nd_type_p(node, NODE_SPLAT)) node = RNODE_SPLAT(node)->nd_head;
25158 if (nd_type_p(node, NODE_LIST))
return node;
25167 switch (nd_type(rhs)) {
25169 if (local_id_ref(p, RNODE_LASGN(rhs)->nd_vid, &vidp)) {
25170 if (vidp) *vidp |= LVAR_USED;
25174 if (dvar_defined_ref(p, RNODE_DASGN(rhs)->nd_vid, &vidp)) {
25175 if (vidp) *vidp |= LVAR_USED;
25180 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
25181 mark_lvar_used(p, rhs->nd_head);
25188static int is_static_content(NODE *node);
25193 if (!lhs)
return 0;
25195 switch (nd_type(lhs)) {
25203 set_nd_value(p, lhs, rhs);
25204 nd_set_loc(lhs, loc);
25207 case NODE_ATTRASGN:
25208 RNODE_ATTRASGN(lhs)->nd_args = arg_append(p, RNODE_ATTRASGN(lhs)->nd_args, rhs, loc);
25209 nd_set_loc(lhs, loc);
25223 NODE *void_node = 0, *vn;
25226 rb_warning0(
"empty expression");
25229 switch (nd_type(node)) {
25231 vn = RNODE_ENSURE(node)->nd_head;
25232 node = RNODE_ENSURE(node)->nd_ensr;
25234 if (vn && (vn = value_expr_check(p, vn))) {
25241 vn = RNODE_RESCUE(node)->nd_head;
25242 if (!vn || !(vn = value_expr_check(p, vn)))
return NULL;
25243 if (!void_node) void_node = vn;
25244 for (NODE *r = RNODE_RESCUE(node)->nd_resq; r; r = RNODE_RESBODY(r)->nd_next) {
25245 if (!nd_type_p(r, NODE_RESBODY)) {
25246 compile_error(p,
"unexpected node");
25249 if (!(vn = value_expr_check(p, RNODE_RESBODY(r)->nd_body))) {
25253 if (!void_node) void_node = vn;
25255 node = RNODE_RESCUE(node)->nd_else;
25256 if (!node)
return void_node;
25267 if (!RNODE_CASE3(node)->nd_body || !nd_type_p(RNODE_CASE3(node)->nd_body, NODE_IN)) {
25268 compile_error(p,
"unexpected node");
25271 if (RNODE_IN(RNODE_CASE3(node)->nd_body)->nd_body) {
25278 while (RNODE_BLOCK(node)->nd_next) {
25279 node = RNODE_BLOCK(node)->nd_next;
25281 node = RNODE_BLOCK(node)->nd_head;
25285 node = RNODE_BEGIN(node)->nd_body;
25290 if (!RNODE_IF(node)->nd_body) {
25293 else if (!RNODE_IF(node)->nd_else) {
25296 vn = value_expr_check(p, RNODE_IF(node)->nd_body);
25297 if (!vn)
return NULL;
25298 if (!void_node) void_node = vn;
25299 node = RNODE_IF(node)->nd_else;
25304 node = RNODE_AND(node)->nd_1st;
25310 mark_lvar_used(p, node);
25322 return void_node ? void_node : node;
25328 NODE *void_node = value_expr_check(p, node);
25330 yyerror1(&void_node->nd_loc,
"void value expression");
25340 const char *useless = 0;
25344 if (!node || !(node = nd_once_body(node)))
return;
25345 switch (nd_type(node)) {
25347 switch (RNODE_OPCALL(node)->nd_mid) {
25366 useless = rb_id2name(RNODE_OPCALL(node)->nd_mid);
25377 case NODE_BACK_REF:
25378 useless =
"a variable";
25381 useless =
"a constant";
25386 case NODE_ENCODING:
25389 case NODE_RATIONAL:
25390 case NODE_IMAGINARY:
25395 useless =
"a literal";
25420 useless =
"defined?";
25425 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
25433 NODE *
const n = node;
25435 if (!node)
return n;
25436 if (!nd_type_p(node, NODE_BLOCK))
return n;
25438 while (RNODE_BLOCK(node)->nd_next) {
25439 void_expr(p, RNODE_BLOCK(node)->nd_head);
25440 node = RNODE_BLOCK(node)->nd_next;
25442 return RNODE_BLOCK(node)->nd_head;
25446remove_begin(NODE *node)
25448 NODE **n = &node, *n1 = node;
25449 while (n1 && nd_type_p(n1, NODE_BEGIN) && RNODE_BEGIN(n1)->nd_body) {
25450 *n = n1 = RNODE_BEGIN(n1)->nd_body;
25458 NODE *node = *body;
25461 *body = NEW_NIL(&NULL_LOC);
25464#define subnodes(type, n1, n2) \
25465 ((!type(node)->n1) ? (type(node)->n2 ? (body = &type(node)->n2, 1) : 0) : \
25466 (!type(node)->n2) ? (body = &type(node)->n1, 1) : \
25467 (reduce_nodes(p, &type(node)->n1), body = &type(node)->n2, 1))
25470 int newline = (int)nd_fl_newline(node);
25471 switch (nd_type(node)) {
25477 *body = node = RNODE_BEGIN(node)->nd_body;
25478 if (newline && node) nd_set_fl_newline(node);
25481 body = &RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head;
25485 if (subnodes(RNODE_IF, nd_body, nd_else))
break;
25488 body = &RNODE_CASE(node)->nd_body;
25491 if (!subnodes(RNODE_WHEN, nd_body, nd_next))
goto end;
25494 body = &RNODE_ENSURE(node)->nd_head;
25498 if (RNODE_RESCUE(node)->nd_else) {
25499 body = &RNODE_RESCUE(node)->nd_resq;
25502 if (!subnodes(RNODE_RESCUE, nd_head, nd_resq))
goto end;
25508 if (newline && node) nd_set_fl_newline(node);
25515is_static_content(NODE *node)
25517 if (!node)
return 1;
25518 switch (nd_type(node)) {
25520 if (!(node = RNODE_HASH(node)->nd_head))
break;
25523 if (!is_static_content(RNODE_LIST(node)->nd_head))
return 0;
25524 }
while ((node = RNODE_LIST(node)->nd_next) != 0);
25529 case NODE_ENCODING:
25532 case NODE_RATIONAL:
25533 case NODE_IMAGINARY:
25549 switch (nd_type(node)) {
25563 if (!get_nd_value(p, node))
return 1;
25564 if (is_static_content(get_nd_value(p, node))) {
25566 rb_warn0L(nd_line(get_nd_value(p, node)),
"found '= literal' in conditional, should be ==");
25577#define SWITCH_BY_COND_TYPE(t, w, arg) do { \
25579 case COND_IN_OP: break; \
25580 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
25581 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
25585static NODE *cond0(
struct parser_params*,NODE*,
enum cond_type,
const YYLTYPE*,
bool);
25588range_op(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
25590 enum node_type
type;
25592 if (node == 0)
return 0;
25594 type = nd_type(node);
25595 value_expr(p, node);
25596 if (
type == NODE_INTEGER) {
25597 if (!e_option_supplied(p)) rb_warn0L(nd_line(node),
"integer literal in flip-flop");
25598 ID lineno = rb_intern(
"$.");
25599 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
25601 return cond0(p, node, COND_IN_FF, loc,
true);
25605cond0(
struct parser_params *p, NODE *node,
enum cond_type
type,
const YYLTYPE *loc,
bool top)
25607 if (node == 0)
return 0;
25608 if (!(node = nd_once_body(node)))
return 0;
25609 assign_in_cond(p, node);
25611 switch (nd_type(node)) {
25613 RNODE_BEGIN(node)->nd_body = cond0(p, RNODE_BEGIN(node)->nd_body,
type, loc, top);
25620 SWITCH_BY_COND_TYPE(
type, warn,
"string ");
25624 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ");
25625 nd_set_type(node, NODE_MATCH);
25629 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning,
"regex ");
25631 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
25635 NODE *end = RNODE_BLOCK(node)->nd_end;
25636 NODE **expr = &RNODE_BLOCK(end)->nd_head;
25637 if (top) top = node == end;
25638 *expr = cond0(p, *expr,
type, loc, top);
25644 RNODE_AND(node)->nd_1st = cond0(p, RNODE_AND(node)->nd_1st, COND_IN_COND, loc,
true);
25645 RNODE_AND(node)->nd_2nd = cond0(p, RNODE_AND(node)->nd_2nd, COND_IN_COND, loc,
true);
25651 RNODE_DOT2(node)->nd_beg = range_op(p, RNODE_DOT2(node)->nd_beg, loc);
25652 RNODE_DOT2(node)->nd_end = range_op(p, RNODE_DOT2(node)->nd_end, loc);
25653 switch (nd_type(node)) {
25655 nd_set_type(node,NODE_FLIP2);
25656 rb_node_flip2_t *flip2 = RNODE_FLIP2(node);
25660 nd_set_type(node, NODE_FLIP3);
25661 rb_node_flip3_t *flip3 = RNODE_FLIP3(node);
25669 SWITCH_BY_COND_TYPE(
type, warning,
"symbol ");
25673 case NODE_ENCODING:
25676 case NODE_RATIONAL:
25677 case NODE_IMAGINARY:
25678 SWITCH_BY_COND_TYPE(
type, warning,
"");
25688cond(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
25690 if (node == 0)
return 0;
25691 return cond0(p, node, COND_IN_COND, loc,
true);
25695method_cond(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
25697 if (node == 0)
return 0;
25698 return cond0(p, node, COND_IN_OP, loc,
true);
25702new_nil_at(
struct parser_params *p,
const rb_code_position_t *pos)
25704 YYLTYPE loc = {*pos, *pos};
25705 return NEW_NIL(&loc);
25709new_if(
struct parser_params *p, NODE *cc, NODE *left, NODE *right,
const YYLTYPE *loc,
const YYLTYPE* if_keyword_loc,
const YYLTYPE* then_keyword_loc,
const YYLTYPE* end_keyword_loc)
25711 if (!cc)
return right;
25712 cc = cond0(p, cc, COND_IN_COND, loc,
true);
25713 return newline_node(NEW_IF(cc, left, right, loc, if_keyword_loc, then_keyword_loc, end_keyword_loc));
25717new_unless(
struct parser_params *p, NODE *cc, NODE *left, NODE *right,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc,
const YYLTYPE *then_keyword_loc,
const YYLTYPE *end_keyword_loc)
25719 if (!cc)
return right;
25720 cc = cond0(p, cc, COND_IN_COND, loc,
true);
25721 return newline_node(NEW_UNLESS(cc, left, right, loc, keyword_loc, then_keyword_loc, end_keyword_loc));
25724#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))
25728 const YYLTYPE *op_loc,
const YYLTYPE *loc)
25730 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
25732 value_expr(p, left);
25733 if (left && nd_type_p(left,
type)) {
25734 NODE *node = left, *second;
25735 while ((second = RNODE_AND(node)->nd_2nd) != 0 && nd_type_p(second,
type)) {
25738 RNODE_AND(node)->nd_2nd = NEW_AND_OR(
type, second, right, loc, op_loc);
25739 nd_set_line(RNODE_AND(node)->nd_2nd, op_loc->beg_pos.lineno);
25740 left->nd_loc.end_pos = loc->end_pos;
25743 op = NEW_AND_OR(
type, left, right, loc, op_loc);
25744 nd_set_line(op, op_loc->beg_pos.lineno);
25753 if (nd_type_p(node, NODE_BLOCK_PASS)) {
25754 compile_error(p,
"block argument should not be given");
25762 no_blockarg(p, node);
25763 if (nd_type_p(node, NODE_LIST) && !RNODE_LIST(node)->nd_next) {
25764 node = RNODE_LIST(node)->nd_head;
25771negate_lit(
struct parser_params *p, NODE* node,
const YYLTYPE *loc)
25773 switch (nd_type(node)) {
25775 RNODE_INTEGER(node)->minus = TRUE;
25778 RNODE_FLOAT(node)->minus = TRUE;
25780 case NODE_RATIONAL:
25781 RNODE_RATIONAL(node)->minus = TRUE;
25783 case NODE_IMAGINARY:
25784 RNODE_IMAGINARY(node)->minus = TRUE;
25787 node->nd_loc = *loc;
25792arg_blk_pass(NODE *node1, rb_node_block_pass_t *node2)
25795 if (!node1)
return (NODE *)node2;
25796 node2->nd_head = node1;
25797 nd_set_first_lineno(node2, nd_first_lineno(node1));
25798 nd_set_first_column(node2, nd_first_column(node1));
25799 return (NODE *)node2;
25807 if (args->pre_args_num)
return false;
25808 if (args->post_args_num)
return false;
25809 if (args->rest_arg)
return false;
25810 if (args->opt_args)
return false;
25811 if (args->block_arg)
return false;
25812 if (args->kw_args)
return false;
25813 if (args->kw_rest_arg)
return false;
25817static rb_node_args_t *
25818new_args(
struct parser_params *p, rb_node_args_aux_t *pre_args, rb_node_opt_arg_t *opt_args,
ID rest_arg, rb_node_args_aux_t *post_args, rb_node_args_t *tail,
const YYLTYPE *loc)
25822 if (args->forwarding) {
25824 yyerror1(&RNODE(tail)->nd_loc,
"... after rest argument");
25827 rest_arg = idFWD_REST;
25830 args->pre_args_num = pre_args ? pre_args->nd_plen : 0;
25831 args->pre_init = pre_args ? pre_args->nd_next : 0;
25833 args->post_args_num = post_args ? post_args->nd_plen : 0;
25834 args->post_init = post_args ? post_args->nd_next : 0;
25835 args->first_post_arg = post_args ? post_args->nd_pid : 0;
25837 args->rest_arg = rest_arg;
25839 args->opt_args = opt_args;
25841 nd_set_loc(RNODE(tail), loc);
25846static rb_node_args_t *
25847new_args_tail(
struct parser_params *p, rb_node_kw_arg_t *kw_args,
ID kw_rest_arg,
ID block,
const YYLTYPE *kw_rest_loc)
25849 rb_node_args_t *node = NEW_ARGS(&NULL_LOC);
25851 if (p->error_p)
return node;
25853 args->block_arg = block;
25854 args->kw_args = kw_args;
25863 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
25864 struct vtable *vtargs = p->lvtbl->args;
25865 rb_node_kw_arg_t *kwn = kw_args;
25867 if (block) block = vtargs->tbl[vtargs->pos-1];
25868 vtable_pop(vtargs, !!block + !!kw_rest_arg);
25869 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
25871 if (!NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body)))
25873 --required_kw_vars;
25874 kwn = kwn->nd_next;
25877 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
25878 ID vid = get_nd_vid(p, kwn->nd_body);
25879 if (NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body))) {
25880 *required_kw_vars++ = vid;
25887 arg_var(p, kw_bits);
25888 if (kw_rest_arg) arg_var(p, kw_rest_arg);
25889 if (block) arg_var(p, block);
25891 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
25893 else if (kw_rest_arg == idNil) {
25894 args->no_kwarg = 1;
25896 else if (kw_rest_arg) {
25897 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
25903static rb_node_args_t *
25904args_with_numbered(
struct parser_params *p, rb_node_args_t *args,
int max_numparam,
ID it_id)
25906 if (max_numparam > NO_PARAM || it_id) {
25908 YYLTYPE loc = RUBY_INIT_YYLLOC();
25909 args = new_args_tail(p, 0, 0, 0, 0);
25910 nd_set_loc(RNODE(args), &loc);
25912 args->nd_ainfo.pre_args_num = it_id ? 1 : max_numparam;
25918new_array_pattern(
struct parser_params *p, NODE *constant, NODE *pre_arg, NODE *aryptn,
const YYLTYPE *loc)
25920 RNODE_ARYPTN(aryptn)->nd_pconst = constant;
25923 NODE *pre_args = NEW_LIST(pre_arg, loc);
25924 if (RNODE_ARYPTN(aryptn)->pre_args) {
25925 RNODE_ARYPTN(aryptn)->pre_args = list_concat(pre_args, RNODE_ARYPTN(aryptn)->pre_args);
25928 RNODE_ARYPTN(aryptn)->pre_args = pre_args;
25935new_array_pattern_tail(
struct parser_params *p, NODE *pre_args,
int has_rest, NODE *rest_arg, NODE *post_args,
const YYLTYPE *loc)
25938 rest_arg = rest_arg ? rest_arg : NODE_SPECIAL_NO_NAME_REST;
25943 NODE *node = NEW_ARYPTN(pre_args, rest_arg, post_args, loc);
25949new_find_pattern(
struct parser_params *p, NODE *constant, NODE *fndptn,
const YYLTYPE *loc)
25951 RNODE_FNDPTN(fndptn)->nd_pconst = constant;
25957new_find_pattern_tail(
struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg,
const YYLTYPE *loc)
25959 pre_rest_arg = pre_rest_arg ? pre_rest_arg : NODE_SPECIAL_NO_NAME_REST;
25960 post_rest_arg = post_rest_arg ? post_rest_arg : NODE_SPECIAL_NO_NAME_REST;
25961 NODE *node = NEW_FNDPTN(pre_rest_arg, args, post_rest_arg, loc);
25967new_hash_pattern(
struct parser_params *p, NODE *constant, NODE *hshptn,
const YYLTYPE *loc)
25969 RNODE_HSHPTN(hshptn)->nd_pconst = constant;
25974new_hash_pattern_tail(
struct parser_params *p, NODE *kw_args,
ID kw_rest_arg,
const YYLTYPE *loc)
25976 NODE *node, *kw_rest_arg_node;
25978 if (kw_rest_arg == idNil) {
25979 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
25981 else if (kw_rest_arg) {
25982 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
25985 kw_rest_arg_node = NULL;
25988 node = NEW_HSHPTN(0, kw_args, kw_rest_arg_node, loc);
25994dsym_node(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
25997 return NEW_SYM(STR_NEW0(), loc);
26000 switch (nd_type(node)) {
26002 nd_set_type(node, NODE_DSYM);
26003 nd_set_loc(node, loc);
26006 node = str_to_sym_node(p, node, loc);
26009 node = NEW_DSYM(0, 1, NEW_LIST(node, loc), loc);
26016nd_type_st_key_enable_p(NODE *node)
26018 switch (nd_type(node)) {
26021 case NODE_RATIONAL:
26022 case NODE_IMAGINARY:
26028 case NODE_ENCODING:
26038 switch (nd_type(node)) {
26040 return rb_node_str_string_val(node);
26042 return rb_node_integer_literal_val(node);
26044 return rb_node_float_literal_val(node);
26045 case NODE_RATIONAL:
26046 return rb_node_rational_literal_val(node);
26047 case NODE_IMAGINARY:
26048 return rb_node_imaginary_literal_val(node);
26050 return rb_node_sym_string_val(node);
26052 return rb_node_regx_string_val(node);
26054 return rb_node_line_lineno_val(node);
26055 case NODE_ENCODING:
26056 return rb_node_encoding_val(node);
26058 return rb_node_file_path_val(node);
26060 rb_bug(
"unexpected node: %s", ruby_node_name(nd_type(node)));
26069 p->warn_duplicate_keys_table = st_init_table_with_size(&literal_type, RNODE_LIST(hash)->as.nd_alen / 2);
26070 while (hash && RNODE_LIST(hash)->nd_next) {
26071 NODE *head = RNODE_LIST(hash)->nd_head;
26072 NODE *value = RNODE_LIST(hash)->nd_next;
26073 NODE *next = RNODE_LIST(value)->nd_next;
26082 if (nd_type_st_key_enable_p(head)) {
26083 key = (st_data_t)head;
26085 if (st_delete(p->warn_duplicate_keys_table, &key, &data)) {
26086 rb_warn2L(nd_line((NODE *)data),
26087 "key %+"PRIsWARN
" is duplicated and overwritten on line %d",
26088 nd_value(p, head), WARN_I(nd_line(head)));
26090 st_insert(p->warn_duplicate_keys_table, (st_data_t)key, (st_data_t)hash);
26094 st_free_table(p->warn_duplicate_keys_table);
26095 p->warn_duplicate_keys_table = NULL;
26099new_hash(
struct parser_params *p, NODE *hash,
const YYLTYPE *loc)
26101 if (hash) warn_duplicate_keys(p, hash);
26102 return NEW_HASH(hash, loc);
26106error_duplicate_pattern_variable(
struct parser_params *p,
ID id,
const YYLTYPE *loc)
26108 if (is_private_local_id(p,
id)) {
26111 if (st_is_member(p->pvtbl,
id)) {
26112 yyerror1(loc,
"duplicated variable name");
26114 else if (p->ctxt.in_alt_pattern &&
id) {
26115 yyerror1(loc,
"variable capture in alternative pattern");
26118 p->ctxt.capture_in_pattern = 1;
26119 st_insert(p->pvtbl, (st_data_t)
id, 0);
26127 p->pktbl = st_init_numtable();
26129 else if (st_is_member(p->pktbl, key)) {
26130 yyerror1(loc,
"duplicated key name");
26133 st_insert(p->pktbl, (st_data_t)key, 0);
26137new_unique_key_hash(
struct parser_params *p, NODE *hash,
const YYLTYPE *loc)
26139 return NEW_HASH(hash, loc);
26148 ID vid = get_nd_vid(p, lhs);
26149 YYLTYPE lhs_loc = lhs->nd_loc;
26151 set_nd_value(p, lhs, rhs);
26152 nd_set_loc(lhs, loc);
26153 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
26155 else if (op == tANDOP) {
26156 set_nd_value(p, lhs, rhs);
26157 nd_set_loc(lhs, loc);
26158 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
26162 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
26163 set_nd_value(p, asgn, rhs);
26164 nd_set_loc(asgn, loc);
26168 asgn = NEW_ERROR(loc);
26175 NODE *args,
ID op, NODE *rhs,
const YYLTYPE *args_loc,
const YYLTYPE *loc,
26176 const YYLTYPE *call_operator_loc,
const YYLTYPE *opening_loc,
const YYLTYPE *closing_loc,
const YYLTYPE *binary_operator_loc)
26180 aryset_check(p, args);
26181 args = make_list(args, args_loc);
26182 asgn = NEW_OP_ASGN1(ary, op, args, rhs, loc, call_operator_loc, opening_loc, closing_loc, binary_operator_loc);
26189 ID atype,
ID attr,
ID op, NODE *rhs,
const YYLTYPE *loc,
26190 const YYLTYPE *call_operator_loc,
const YYLTYPE *message_loc,
const YYLTYPE *binary_operator_loc)
26194 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc, call_operator_loc, message_loc, binary_operator_loc);
26205 asgn = NEW_OP_CDECL(lhs, op, rhs, ctxt.shareable_constant_value, loc);
26208 asgn = NEW_ERROR(loc);
26215const_decl(
struct parser_params *p, NODE *path,
const YYLTYPE *loc)
26217 if (p->ctxt.in_def) {
26219 yyerror1(loc,
"dynamic constant assignment");
26221 set_value(assign_error(p,
"dynamic constant assignment", p->s_lvalue));
26224 return NEW_CDECL(0, 0, (path), p->ctxt.shareable_constant_value, loc);
26231 a = dispatch2(assign_error, ERR_MESG(), a);
26238new_bodystmt(
struct parser_params *p, NODE *head, NODE *rescue, NODE *rescue_else, NODE *ensure,
const YYLTYPE *loc)
26240 NODE *result = head;
26242 NODE *tmp = rescue_else ? rescue_else : rescue;
26243 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
26245 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
26246 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
26249 result = NEW_ENSURE(result, ensure, loc);
26251 fixpos(result, head);
26260 if (!local->used)
return;
26261 cnt = local->used->pos;
26262 if (cnt != local->vars->pos) {
26263 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
26266 ID *v = local->vars->tbl;
26267 ID *u = local->used->tbl;
26268 for (
int i = 0; i < cnt; ++i) {
26269 if (!v[i] || (u[i] & LVAR_USED))
continue;
26270 if (is_private_local_id(p, v[i]))
continue;
26271 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
26280 int inherits_dvars = toplevel_scope && compile_for_eval;
26284 local->prev = p->lvtbl;
26285 local->args = vtable_alloc(0);
26286 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
26288 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
26289 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
26291 local->numparam.outer = 0;
26292 local->numparam.inner = 0;
26293 local->numparam.current = 0;
26295 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
26297# if WARN_PAST_SCOPE
26308 while (!DVARS_TERMINAL_P(table)) {
26309 struct vtable *cur_table = table;
26310 table = cur_table->prev;
26311 vtable_free(cur_table);
26318 vtable_chain_free(p, local->used);
26320# if WARN_PAST_SCOPE
26321 vtable_chain_free(p, local->past);
26324 vtable_chain_free(p, local->args);
26325 vtable_chain_free(p, local->vars);
26327 ruby_sized_xfree(local,
sizeof(
struct local_vars));
26334 if (p->lvtbl->used) {
26335 warn_unused_var(p, p->lvtbl);
26338 local_free(p, p->lvtbl);
26345static rb_ast_id_table_t *
26348 int cnt_args = vtable_size(p->lvtbl->args);
26349 int cnt_vars = vtable_size(p->lvtbl->vars);
26350 int cnt = cnt_args + cnt_vars;
26352 rb_ast_id_table_t *tbl;
26354 if (cnt <= 0)
return 0;
26355 tbl = rb_ast_new_local_table(p->ast, cnt);
26356 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
26358 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
26359 ID id = p->lvtbl->vars->tbl[i];
26360 if (!vtable_included(p->lvtbl->args,
id)) {
26361 tbl->ids[j++] = id;
26365 tbl = rb_ast_resize_latest_local_table(p->ast, j);
26374 if (!NUMPARAM_ID_P(
id))
return;
26375 compile_error(p,
"_%d is reserved for numbered parameter",
26376 NUMPARAM_ID_TO_IDX(
id));
26382 numparam_name(p,
id);
26383 vtable_add(p->lvtbl->args,
id);
26389 numparam_name(p,
id);
26390 vtable_add(p->lvtbl->vars,
id);
26391 if (p->lvtbl->used) {
26392 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
26400 return rb_local_defined(
id, iseq);
26407 struct vtable *vars, *args, *used;
26409 vars = p->lvtbl->vars;
26410 args = p->lvtbl->args;
26411 used = p->lvtbl->used;
26413 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26416 if (used) used = used->prev;
26419 if (vars && vars->prev == DVARS_INHERIT) {
26420 return rb_parser_local_defined(p,
id, p->parent_iseq);
26422 else if (vtable_included(args,
id)) {
26426 int i = vtable_included(vars,
id);
26427 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
26435 return local_id_ref(p,
id, NULL);
26441 if (local_id(p, idFWD_ALL))
return TRUE;
26442 compile_error(p,
"unexpected ...");
26449 arg_var(p, idFWD_REST);
26450 arg_var(p, idFWD_KWREST);
26451 arg_var(p, idFWD_BLOCK);
26452 arg_var(p, idFWD_ALL);
26458 bool conflict =
false;
26460 struct vtable *vars, *args;
26462 vars = p->lvtbl->vars;
26463 args = p->lvtbl->args;
26465 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26466 conflict |= (vtable_included(args, arg) && !(all && vtable_included(args, all)));
26471 bool found =
false;
26472 if (vars && vars->prev == DVARS_INHERIT && !found) {
26473 found = (rb_parser_local_defined(p, arg, p->parent_iseq) &&
26474 !(all && rb_parser_local_defined(p, all, p->parent_iseq)));
26477 found = (vtable_included(args, arg) &&
26478 !(all && vtable_included(args, all)));
26482 compile_error(p,
"no anonymous %s parameter", var);
26484 else if (conflict) {
26485 compile_error(p,
"anonymous %s parameter is also used within block", var);
26490new_args_forward_call(
struct parser_params *p, NODE *leading,
const YYLTYPE *loc,
const YYLTYPE *argsloc)
26492 NODE *rest = NEW_LVAR(idFWD_REST, loc);
26493 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
26494 rb_node_block_pass_t *block = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, loc), argsloc, &NULL_LOC);
26495 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc, &NULL_LOC);
26496 block->forwarding = TRUE;
26497 args = arg_append(p, args, new_hash(p, kwrest, loc), argsloc);
26498 return arg_blk_pass(args, block);
26505 NODE *inner = local->numparam.inner;
26506 if (!local->numparam.outer) {
26507 local->numparam.outer = local->numparam.current;
26509 local->numparam.inner = 0;
26510 local->numparam.current = 0;
26521 local->numparam.inner = prev_inner;
26523 else if (local->numparam.current) {
26525 local->numparam.inner = local->numparam.current;
26527 if (p->max_numparam > NO_PARAM) {
26529 local->numparam.current = local->numparam.outer;
26530 local->numparam.outer = 0;
26534 local->numparam.current = 0;
26539static const struct vtable *
26542 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
26543 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
26544 if (p->lvtbl->used) {
26545 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
26547 return p->lvtbl->args;
26553 struct vtable *tmp = *vtblp;
26554 *vtblp = tmp->prev;
26555# if WARN_PAST_SCOPE
26556 if (p->past_scope_enabled) {
26557 tmp->prev = p->lvtbl->past;
26558 p->lvtbl->past = tmp;
26570 if ((tmp = p->lvtbl->used) != 0) {
26571 warn_unused_var(p, p->lvtbl);
26572 p->lvtbl->used = p->lvtbl->used->prev;
26575 dyna_pop_vtable(p, &p->lvtbl->args);
26576 dyna_pop_vtable(p, &p->lvtbl->vars);
26582 while (p->lvtbl->args != lvargs) {
26584 if (!p->lvtbl->args) {
26586 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
26596 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
26603 struct vtable *vars, *args, *used;
26606 args = p->lvtbl->args;
26607 vars = p->lvtbl->vars;
26608 used = p->lvtbl->used;
26610 while (!DVARS_TERMINAL_P(vars)) {
26611 if (vtable_included(args,
id)) {
26614 if ((i = vtable_included(vars,
id)) != 0) {
26615 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
26620 if (!vidrefp) used = 0;
26621 if (used) used = used->prev;
26624 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
26625 return rb_dvar_defined(
id, p->parent_iseq);
26635 return dvar_defined_ref(p,
id, NULL);
26641 return (vtable_included(p->lvtbl->args,
id) ||
26642 vtable_included(p->lvtbl->vars,
id));
26646reg_fragment_enc_error(
struct parser_params* p, rb_parser_string_t *str,
int c)
26649 "regexp encoding option '%c' differs from source encoding '%s'",
26650 c, rb_enc_name(rb_parser_str_get_encoding(str)));
26654static rb_encoding *
26657 int idx = rb_enc_find_index(name);
26659 rb_bug(
"unknown encoding name: %s", name);
26662 return rb_enc_from_index(idx);
26665static rb_encoding *
26671 case ENC_ASCII8BIT:
26672 enc = rb_ascii8bit_encoding();
26675 enc = find_enc(p,
"EUC-JP");
26677 case ENC_Windows_31J:
26678 enc = find_enc(p,
"Windows-31J");
26681 enc = rb_utf8_encoding();
26692rb_reg_fragment_setenc(
struct parser_params* p, rb_parser_string_t *str,
int options)
26694 int c = RE_OPTION_ENCODING_IDX(options);
26700 char_to_option_kcode(c, &opt, &idx);
26701 enc = kcode_to_enc(p, idx);
26702 if (enc != rb_parser_str_get_encoding(str) &&
26703 !rb_parser_is_ascii_string(p, str)) {
26706 rb_parser_string_set_encoding(str, enc);
26708 else if (RE_OPTION_ENCODING_NONE(options)) {
26709 if (!PARSER_ENCODING_IS_ASCII8BIT(p, str) &&
26710 !rb_parser_is_ascii_string(p, str)) {
26714 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
26716 else if (rb_is_usascii_enc(p->enc)) {
26717 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
26727reg_fragment_setenc(
struct parser_params* p, rb_parser_string_t *str,
int options)
26729 int c = rb_reg_fragment_setenc(p, str, options);
26730 if (c) reg_fragment_enc_error(p, str, c);
26733#ifndef UNIVERSAL_PARSER
26739 rb_parser_assignable_func assignable;
26743reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
26744 int back_num,
int *back_refs, OnigRegex regex,
void *arg0)
26748 rb_encoding *enc = arg->enc;
26749 long len = name_end - name;
26750 const char *s = (
const char *)name;
26752 return rb_reg_named_capture_assign_iter_impl(p, s,
len, enc, &arg->succ_block, arg->loc, arg->assignable);
26756reg_named_capture_assign(
struct parser_params* p,
VALUE regexp,
const YYLTYPE *loc, rb_parser_assignable_func assignable)
26761 arg.enc = rb_enc_get(regexp);
26762 arg.succ_block = 0;
26764 arg.assignable = assignable;
26765 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
26767 if (!arg.succ_block)
return 0;
26768 return RNODE_BLOCK(arg.succ_block)->nd_next;
26774rb_parser_assignable(
struct parser_params *p,
ID id, NODE *val,
const YYLTYPE *loc)
26776 return assignable(p,
id, val, loc);
26780rb_reg_named_capture_assign_iter_impl(
struct parser_params *p,
const char *s,
long len,
26781 rb_encoding *enc, NODE **succ_block,
const rb_code_location_t *loc, rb_parser_assignable_func assignable)
26786 if (!
len)
return ST_CONTINUE;
26787 if (!VALID_SYMNAME_P(s,
len, enc, ID_LOCAL))
26788 return ST_CONTINUE;
26790 var = intern_cstr(s,
len, enc);
26791 if (
len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)
len)) {
26792 if (!lvar_defined(p, var))
return ST_CONTINUE;
26794 node = node_assign(p, assignable(p, var, 0, loc), NEW_SYM(rb_id2str(var), loc), NO_LEX_CTXT, loc);
26795 succ = *succ_block;
26796 if (!succ) succ = NEW_ERROR(loc);
26797 succ = block_append(p, succ, node);
26798 *succ_block = succ;
26799 return ST_CONTINUE;
26804parser_reg_compile(
struct parser_params* p, rb_parser_string_t *str,
int options)
26807 reg_fragment_setenc(p, str, options);
26808 str2 = rb_str_new_parser_string(str);
26809 return rb_parser_reg_compile(p, str2, options);
26816 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
26821reg_compile(
struct parser_params* p, rb_parser_string_t *str,
int options)
26826 err = rb_errinfo();
26827 re = parser_reg_compile(p, str, options);
26829 VALUE m = rb_attr_get(rb_errinfo(), idMesg);
26830 rb_set_errinfo(err);
26831 compile_error(p,
"%"PRIsVALUE, m);
26839rb_ruby_parser_set_options(
struct parser_params *p,
int print,
int loop,
int chomp,
int split)
26841 p->do_print = print;
26843 p->do_chomp = chomp;
26844 p->do_split = split;
26850 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
26851 const YYLTYPE *
const LOC = &default_location;
26854 NODE *print = (NODE *)NEW_FCALL(rb_intern(
"print"),
26855 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
26857 node = block_append(p, node, print);
26861 NODE *irs = NEW_LIST(NEW_GVAR(rb_intern(
"$/"), LOC), LOC);
26864 ID ifs = rb_intern(
"$;");
26865 ID fields = rb_intern(
"$F");
26866 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
26867 NODE *split = NEW_GASGN(fields,
26868 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
26869 rb_intern(
"split"), args, LOC),
26871 node = block_append(p, split, node);
26875 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
26876 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
26879 node = NEW_WHILE((NODE *)NEW_FCALL(idGets, irs, LOC), node, 1, LOC, &NULL_LOC, &NULL_LOC);
26896 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
26904 p->command_start = TRUE;
26905 p->ruby_sourcefile_string =
Qnil;
26906 p->lex.lpar_beg = -1;
26907 string_buffer_init(p);
26909 p->delayed.token = NULL;
26910 p->frozen_string_literal = -1;
26912 p->error_buffer =
Qfalse;
26913 p->end_expect_token_locations = NULL;
26918 p->parsing_thread =
Qnil;
26920 p->s_lvalue =
Qnil;
26923 p->debug_buffer =
Qnil;
26924 p->debug_output = rb_ractor_stdout();
26925 p->enc = rb_utf8_encoding();
26930#define rb_ruby_parser_mark ripper_parser_mark
26931#define rb_ruby_parser_free ripper_parser_free
26932#define rb_ruby_parser_memsize ripper_parser_memsize
26936rb_ruby_parser_mark(
void *
ptr)
26940 rb_gc_mark(p->ruby_sourcefile_string);
26942 rb_gc_mark(p->error_buffer);
26944 rb_gc_mark(p->value);
26945 rb_gc_mark(p->result);
26946 rb_gc_mark(p->parsing_thread);
26947 rb_gc_mark(p->s_value);
26948 rb_gc_mark(p->s_lvalue);
26949 rb_gc_mark(p->s_value_stack);
26951 rb_gc_mark(p->debug_buffer);
26952 rb_gc_mark(p->debug_output);
26956rb_ruby_parser_free(
void *
ptr)
26962 rb_ast_free(p->ast);
26965 if (p->warn_duplicate_keys_table) {
26966 st_free_table(p->warn_duplicate_keys_table);
26971 rb_parser_ary_free(p, p->tokens);
26976 ruby_sized_xfree(p->tokenbuf, p->toksiz);
26979 for (local = p->lvtbl; local; local = prev) {
26980 prev = local->prev;
26981 local_free(p, local);
26986 while ((ptinfo = p->token_info) != 0) {
26987 p->token_info = ptinfo->next;
26991 string_buffer_free(p);
26994 st_free_table(p->pvtbl);
26997 if (CASE_LABELS_ENABLED_P(p->case_labels)) {
26998 st_free_table(p->case_labels);
27001 xfree(p->lex.strterm);
27002 p->lex.strterm = 0;
27008rb_ruby_parser_memsize(
const void *
ptr)
27012 size_t size =
sizeof(*p);
27015 for (local = p->lvtbl; local; local = local->prev) {
27016 size +=
sizeof(*local);
27017 if (local->vars) size += local->vars->capa *
sizeof(
ID);
27023#undef rb_reserved_word
27026rb_reserved_word(
const char *str,
unsigned int len)
27028 return reserved_word(str,
len);
27031#ifdef UNIVERSAL_PARSER
27033rb_ruby_parser_allocate(
const rb_parser_config_t *config)
27036 rb_parser_t *p = (rb_parser_t *)config->calloc(1,
sizeof(rb_parser_t));
27037 p->config = config;
27042rb_ruby_parser_new(
const rb_parser_config_t *config)
27045 rb_parser_t *p = rb_ruby_parser_allocate(config);
27046 parser_initialize(p);
27051rb_ruby_parser_allocate(
void)
27054 rb_parser_t *p = (rb_parser_t *)ruby_xcalloc(1,
sizeof(rb_parser_t));
27059rb_ruby_parser_new(
void)
27062 rb_parser_t *p = rb_ruby_parser_allocate();
27063 parser_initialize(p);
27069rb_ruby_parser_set_context(rb_parser_t *p,
const struct rb_iseq_struct *base,
int main)
27072 p->parent_iseq = base;
27077rb_ruby_parser_set_script_lines(rb_parser_t *p)
27079 p->debug_lines = rb_parser_ary_new_capa_for_script_line(p, 10);
27083rb_ruby_parser_error_tolerant(rb_parser_t *p)
27085 p->error_tolerant = 1;
27089rb_ruby_parser_keep_tokens(rb_parser_t *p)
27091 p->keep_tokens = 1;
27092 p->tokens = rb_parser_ary_new_capa_for_ast_token(p, 10);
27096rb_ruby_parser_encoding(rb_parser_t *p)
27102rb_ruby_parser_end_seen_p(rb_parser_t *p)
27104 return p->ruby__end__seen;
27108rb_ruby_parser_set_yydebug(rb_parser_t *p,
int flag)
27117rb_ruby_parser_get_yydebug(rb_parser_t *p)
27123rb_ruby_parser_set_value(rb_parser_t *p,
VALUE value)
27129rb_ruby_parser_error_p(rb_parser_t *p)
27135rb_ruby_parser_debug_output(rb_parser_t *p)
27137 return p->debug_output;
27141rb_ruby_parser_set_debug_output(rb_parser_t *p,
VALUE output)
27143 p->debug_output = output;
27147rb_ruby_parser_parsing_thread(rb_parser_t *p)
27149 return p->parsing_thread;
27153rb_ruby_parser_set_parsing_thread(rb_parser_t *p,
VALUE parsing_thread)
27155 p->parsing_thread = parsing_thread;
27159rb_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)
27161 p->lex.gets = gets;
27162 p->lex.input = input;
27164 p->ruby_sourcefile_string = sourcefile_string;
27165 p->ruby_sourcefile = sourcefile;
27166 p->ruby_sourceline = sourceline;
27170rb_ruby_parser_result(rb_parser_t *p)
27176rb_ruby_parser_enc(rb_parser_t *p)
27182rb_ruby_parser_ruby_sourcefile_string(rb_parser_t *p)
27184 return p->ruby_sourcefile_string;
27188rb_ruby_parser_ruby_sourceline(rb_parser_t *p)
27190 return p->ruby_sourceline;
27194rb_ruby_parser_lex_state(rb_parser_t *p)
27196 return p->lex.state;
27200rb_ruby_ripper_parse0(rb_parser_t *p)
27203 p->ast = rb_ast_new();
27204 ripper_yyparse((
void*)p);
27205 rb_ast_free(p->ast);
27208 p->eval_tree_begin = 0;
27212rb_ruby_ripper_dedent_string(rb_parser_t *p, rb_parser_string_t *
string,
int width)
27214 return dedent_string(p,
string, width);
27218rb_ruby_ripper_initialized_p(rb_parser_t *p)
27220 return p->lex.input != 0;
27224rb_ruby_ripper_parser_initialize(rb_parser_t *p)
27226 parser_initialize(p);
27230rb_ruby_ripper_column(rb_parser_t *p)
27232 return p->lex.ptok - p->lex.pbeg;
27236rb_ruby_ripper_token_len(rb_parser_t *p)
27238 return p->lex.pcur - p->lex.ptok;
27241rb_parser_string_t *
27242rb_ruby_ripper_lex_lastline(rb_parser_t *p)
27244 return p->lex.lastline;
27248rb_ruby_ripper_lex_state_name(
struct parser_params *p,
int state)
27250 return rb_parser_lex_state_name(p, (
enum lex_state_e)state);
27253#ifdef UNIVERSAL_PARSER
27255rb_ripper_parser_params_allocate(
const rb_parser_config_t *config)
27257 rb_parser_t *p = (rb_parser_t *)config->calloc(1,
sizeof(rb_parser_t));
27258 p->config = config;
27264rb_ruby_ripper_parser_allocate(
void)
27272rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
27275 VALUE mesg = p->debug_buffer;
27279 rb_str_vcatf(mesg, fmt, ap);
27281 if (char_at_end(p, mesg, 0) ==
'\n') {
27282 rb_io_write(p->debug_output, mesg);
27283 p->debug_buffer =
Qnil;
27288parser_compile_error(
struct parser_params *p,
const rb_code_location_t *loc,
const char *fmt, ...)
27291 int lineno, column;
27294 lineno = loc->end_pos.lineno;
27295 column = loc->end_pos.column;
27298 lineno = p->ruby_sourceline;
27302 rb_io_flush(p->debug_output);
27306 rb_syntax_error_append(p->error_buffer,
27307 p->ruby_sourcefile_string,
27314count_char(
const char *str,
int c)
27317 while (str[n] == c) ++n;
27328rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
27330 if (*yystr ==
'"') {
27331 size_t yyn = 0, bquote = 0;
27332 const char *yyp = yystr;
27338 bquote = count_char(yyp+1,
'\'') + 1;
27339 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
27345 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
27346 if (yyres) memcpy(yyres + yyn, yyp, bquote);
27352 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
27353 if (yyres) memcpy(yyres + yyn, yyp, 3);
27358 goto do_not_strip_quotes;
27362 goto do_not_strip_quotes;
27365 if (*++yyp !=
'\\')
27366 goto do_not_strip_quotes;
27381 do_not_strip_quotes: ;
27384 if (!yyres)
return strlen(yystr);
27386 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
27391#define validate(x) (void)(x)
27420 return rb_funcall(p->value, mid, 3, a, b, c);
27430 return rb_funcall(p->value, mid, 4, a, b, c, d);
27441 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
27454 return rb_funcall(p->value, mid, 7, a, b, c, d, e, f, g);
#define RUBY_ASSERT(...)
Asserts that the given expression is truthy if and only if RUBY_DEBUG is truthy.
#define ISSPACE
@old{rb_isspace}
#define ISDIGIT
@old{rb_isdigit}
#define STRCASECMP
@old{st_locale_insensitive_strcasecmp}
#define ISALPHA
@old{rb_isalpha}
#define STRNCASECMP
@old{st_locale_insensitive_strncasecmp}
#define ISPRINT
@old{rb_isprint}
#define ISXDIGIT
@old{rb_isxdigit}
#define ISCNTRL
@old{rb_iscntrl}
#define ISALNUM
@old{rb_isalnum}
#define ENC_CODERANGE_7BIT
Old name of RUBY_ENC_CODERANGE_7BIT.
#define REALLOC_N
Old name of RB_REALLOC_N.
#define ALLOC
Old name of RB_ALLOC.
#define xfree
Old name of ruby_xfree.
#define xrealloc
Old name of ruby_xrealloc.
#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 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 FIXNUM_MAX
Old name of RUBY_FIXNUM_MAX.
#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 xcalloc
Old name of ruby_xcalloc.
void rb_exc_raise(VALUE mesg)
Raises an exception in the current thread.
#define ruby_verbose
This variable controls whether the interpreter is in debug mode.
VALUE rb_eRuntimeError
RuntimeError exception.
VALUE rb_eSyntaxError
SyntaxError exception.
VALUE rb_class_new_instance(int argc, const VALUE *argv, VALUE klass)
Allocates, then initialises an instance of the given class.
long rb_str_coderange_scan_restartable(const char *str, const char *end, rb_encoding *enc, int *cr)
Scans the passed string until it finds something odd.
VALUE rb_funcall(VALUE recv, ID mid, int n,...)
Calls a method.
VALUE rb_ary_new(void)
Allocates a new, empty array.
VALUE rb_ary_pop(VALUE ary)
Destructively deletes an element from the end of the passed array and returns what was deleted.
VALUE rb_ary_push(VALUE ary, VALUE elem)
Special case of rb_ary_cat() that it adds only one element.
VALUE rb_ary_entry(VALUE ary, long off)
Queries an element of an array.
#define rb_str_new(str, len)
Allocates an instance of rb_cString.
#define rb_usascii_str_new(str, len)
Identical to rb_str_new, except it generates a string of "US ASCII" encoding.
VALUE rb_str_cat(VALUE dst, const char *src, long srclen)
Destructively appends the passed contents to the string.
#define rb_strlen_lit(str)
Length of a string literal.
#define rb_str_cat_cstr(buf, str)
Identical to rb_str_cat(), except it assumes the passed pointer is a pointer to a C string.
#define rb_str_new_cstr(str)
Identical to rb_str_new, except it assumes the passed pointer is a pointer to a C string.
ID rb_sym2id(VALUE obj)
Converts an instance of rb_cSymbol into an ID.
int capa
Designed capacity of the buffer.
char * ptr
Pointer to the underlying memory region, of at least capa bytes.
int off
Offset inside of ptr.
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.
#define RBIMPL_ATTR_NONNULL(list)
Wraps (or simulates) __attribute__((nonnull)).
#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.