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)
2046 return djb2(ptr,
len);
2049#define PARSER_STRING_PTR(str) (str->ptr)
2050#define PARSER_STRING_LEN(str) (str->len)
2051#define PARSER_STRING_END(str) (&str->ptr[str->len])
2052#define STRING_SIZE(str) ((size_t)str->len + 1)
2053#define STRING_TERM_LEN(str) (1)
2054#define STRING_TERM_FILL(str) (str->ptr[str->len] = '\0')
2055#define PARSER_STRING_RESIZE_CAPA_TERM(p,str,capacity,termlen) do {\
2056 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)
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;
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) {
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, 6661, 6666,
3645 6671, 6678, 6684, 6689, 6702, 6702, 6702, 6703, 6706, 6707,
3646 6708, 6711, 6712, 6715, 6716, 6719, 6720, 6723, 6726, 6729,
3647 6732, 6733, 6736, 6744, 6751, 6752, 6756
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 if (RNODE_LIST(assocs)->nd_head) {
17765 NODE *n = RNODE_LIST(tail)->nd_next;
17766 if (!RNODE_LIST(tail)->nd_head && nd_type_p(n, NODE_LIST) &&
17767 nd_type_p((n = RNODE_LIST(n)->nd_head), NODE_HASH)) {
17769 tail = RNODE_HASH(n)->nd_head;
17773 assocs = list_concat(assocs, tail);
17776 (yyval.node) = assocs;
17779#line 17780 "parse.c"
17783#line 6662 "parse.y"
17785 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
17788#line 17789 "parse.c"
17792#line 6667 "parse.y"
17794 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
17797#line 17798 "parse.c"
17801#line 6672 "parse.y"
17803 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
17804 if (!val) val = NEW_ERROR(&(yyloc));
17805 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
17808#line 17809 "parse.c"
17812#line 6679 "parse.y"
17814 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
17815 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
17818#line 17819 "parse.c"
17822#line 6685 "parse.y"
17824 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
17827#line 17828 "parse.c"
17831#line 6690 "parse.y"
17833 forwarding_arg_check(p, idFWD_KWREST, idFWD_ALL,
"keyword rest");
17834 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)),
17835 NEW_LVAR(idFWD_KWREST, &(yyloc)));
17838#line 17839 "parse.c"
17842#line 6737 "parse.y"
17846 if (p->ctxt.in_defined) {
17847 p->ctxt.has_trailing_semicolon = 1;
17850#line 17851 "parse.c"
17854#line 6745 "parse.y"
17856 (yyloc).end_pos = (yyloc).beg_pos;
17859#line 17860 "parse.c"
17863#line 6752 "parse.y"
17865#line 17866 "parse.c"
17869#line 6756 "parse.y"
17874#line 17875 "parse.c"
17878#line 17879 "parse.c"
17893 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc, p);
17895 YYPOPSTACK (yylen);
17897#line 2667 "parse.y"
17898 {after_reduce(yylen, p);}
17899#line 17900 "parse.c"
17910 const int yylhs = yyr1[yyn] - YYNTOKENS;
17911 const int yyi = yypgoto[yylhs] + *yyssp;
17912 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
17914 : yydefgoto[yylhs]);
17926 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
17933 = {yyssp, yytoken, &yylloc};
17934 char const *yymsgp = YY_(
"syntax error");
17935 int yysyntax_error_status;
17936 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
17937 if (yysyntax_error_status == 0)
17939 else if (yysyntax_error_status == -1)
17941 if (yymsg != yymsgbuf)
17942 YYSTACK_FREE (yymsg);
17943 yymsg = YY_CAST (
char *,
17944 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
17947 yysyntax_error_status
17948 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
17954 yymsg_alloc =
sizeof yymsgbuf;
17955 yysyntax_error_status = YYENOMEM;
17958 yyerror (&yylloc, p, yymsgp);
17959 if (yysyntax_error_status == YYENOMEM)
17964 yyerror_range[1] = yylloc;
17965 if (yyerrstatus == 3)
17970 if (yychar <= END_OF_INPUT)
17973 if (yychar == END_OF_INPUT)
17978 yydestruct (
"Error: discarding",
17979 yytoken, &yylval, &yylloc, p);
18001 YYPOPSTACK (yylen);
18003#line 2669 "parse.y"
18004 {after_pop_stack(yylen, p);}
18005#line 18006 "parse.c"
18008 YY_STACK_PRINT (yyss, yyssp, p);
18022 yyn = yypact[yystate];
18023 if (!yypact_value_is_default (yyn))
18025 yyn += YYSYMBOL_YYerror;
18026 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
18028 yyn = yytable[yyn];
18038 yyerror_range[1] = *yylsp;
18039 yydestruct (
"Error: popping",
18040 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
18043#line 2669 "parse.y"
18044 {after_pop_stack(1, p);}
18045#line 18046 "parse.c"
18048 YY_STACK_PRINT (yyss, yyssp, p);
18051 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
18053 YY_IGNORE_MAYBE_UNINITIALIZED_END
18055 yyerror_range[2] = yylloc;
18057 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
18060 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp, p);
18062#line 2668 "parse.y"
18063 {after_shift_error_token(p);}
18064#line 18065 "parse.c"
18091 yyerror (&yylloc, p, YY_(
"memory exhausted"));
18100 if (yychar != YYEMPTY)
18104 yytoken = YYTRANSLATE (yychar);
18105 yydestruct (
"Cleanup: discarding lookahead",
18106 yytoken, &yylval, &yylloc, p);
18110 YYPOPSTACK (yylen);
18111 YY_STACK_PRINT (yyss, yyssp, p);
18112 while (yyssp != yyss)
18114 yydestruct (
"Cleanup: popping",
18115 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
18120 YYSTACK_FREE (yyss);
18122 if (yymsg != yymsgbuf)
18123 YYSTACK_FREE (yymsg);
18127#line 6761 "parse.y"
18132# define yylval (*p->lval)
18135static int tokadd_string(
struct parser_params*,
int,
int,
int,
long*,rb_encoding**,rb_encoding**);
18136static void tokaddmbc(
struct parser_params *p,
int c, rb_encoding *enc);
18137static enum yytokentype parse_string(
struct parser_params*,rb_strterm_literal_t*);
18138static enum yytokentype here_document(
struct parser_params*,rb_strterm_heredoc_t*);
18140#define set_parser_s_value(x) (ifdef_ripper(p->s_value = (x), (void)0))
18142# define set_yylval_node(x) { \
18143 YYLTYPE _cur_loc; \
18144 rb_parser_set_location(p, &_cur_loc); \
18145 yylval.node = (x); \
18146 set_parser_s_value(STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)); \
18148# define set_yylval_str(x) \
18150 set_yylval_node(NEW_STR(x, &_cur_loc)); \
18151 set_parser_s_value(rb_str_new_mutable_parser_string(x)); \
18153# define set_yylval_num(x) { \
18154 yylval.num = (x); \
18155 set_parser_s_value(x); \
18157# define set_yylval_id(x) (yylval.id = (x))
18158# define set_yylval_name(x) { \
18159 (yylval.id = (x)); \
18160 set_parser_s_value(ID2SYM(x)); \
18162# define yylval_id() (yylval.id)
18164#define set_yylval_noname() set_yylval_id(keyword_nil)
18165#define has_delayed_token(p) (p->delayed.token != NULL)
18168#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
18169#define dispatch_scan_event(p, t) parser_dispatch_scan_event(p, t, __LINE__)
18174 const char *
const pcur = p->lex.pcur;
18175 const char *
const ptok = p->lex.ptok;
18176 if (p->keep_tokens && (pcur < ptok)) {
18177 rb_bug(
"lex.pcur < lex.ptok. (line: %d) %"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"",
18178 p->ruby_sourceline, ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur);
18180 return pcur > ptok;
18187 case '"':
return "\\\"";
18188 case '\\':
return "\\\\";
18189 case '\0':
return "\\0";
18190 case '\n':
return "\\n";
18191 case '\r':
return "\\r";
18192 case '\t':
return "\\t";
18193 case '\f':
return "\\f";
18194 case '\013':
return "\\v";
18195 case '\010':
return "\\b";
18196 case '\007':
return "\\a";
18197 case '\033':
return "\\e";
18198 case '\x7f':
return "\\c?";
18203static rb_parser_string_t *
18204rb_parser_str_escape(
struct parser_params *p, rb_parser_string_t *str)
18206 rb_encoding *enc = p->enc;
18207 const char *ptr = str->ptr;
18208 const char *pend = ptr + str->len;
18209 const char *prev = ptr;
18210 char charbuf[5] = {
'\\',
'x', 0, 0, 0};
18211 rb_parser_string_t * result = rb_parser_string_new(p, 0, 0);
18213 while (ptr < pend) {
18216 int n = rb_enc_precise_mbclen(ptr, pend, enc);
18218 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18219 n = rb_enc_mbminlen(enc);
18220 if (pend < ptr + n)
18221 n = (int)(pend - ptr);
18223 c = *ptr & 0xf0 >> 4;
18224 charbuf[2] = (c < 10) ?
'0' + c :
'A' + c - 10;
18226 charbuf[3] = (c < 10) ?
'0' + c :
'A' + c - 10;
18227 parser_str_cat(result, charbuf, 4);
18233 c = rb_enc_mbc_to_codepoint(ptr, pend, enc);
18235 cc = escaped_char(c);
18237 if (ptr - n > prev) parser_str_cat(result, prev, ptr - n - prev);
18238 parser_str_cat_cstr(result, cc);
18241 else if (rb_enc_isascii(c, enc) &&
ISPRINT(c)) {
18244 if (ptr - n > prev) {
18245 parser_str_cat(result, prev, ptr - n - prev);
18248 parser_str_cat(result, prev, ptr - prev);
18252 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
18258parser_append_tokens(
struct parser_params *p, rb_parser_string_t *str,
enum yytokentype t,
int line)
18260 rb_parser_ast_token_t *token =
xcalloc(1,
sizeof(rb_parser_ast_token_t));
18261 token->id = p->token_id;
18262 token->type_name = parser_token2char(p, t);
18264 token->loc.beg_pos = p->yylloc->beg_pos;
18265 token->loc.end_pos = p->yylloc->end_pos;
18266 rb_parser_ary_push_ast_token(p, p->tokens, token);
18270 rb_parser_string_t *str_escaped = rb_parser_str_escape(p, str);
18271 rb_parser_printf(p,
"Append tokens (line: %d) [%d, :%s, \"%s\", [%d, %d, %d, %d]]\n",
18272 line, token->id, token->type_name, str_escaped->ptr,
18273 token->loc.beg_pos.lineno, token->loc.beg_pos.column,
18274 token->loc.end_pos.lineno, token->loc.end_pos.column);
18275 rb_parser_string_free(p, str_escaped);
18280parser_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t,
int line)
18282 debug_token_line(p,
"parser_dispatch_scan_event", line);
18284 if (!parser_has_token(p))
return;
18286 RUBY_SET_YYLLOC(*p->yylloc);
18288 if (p->keep_tokens) {
18289 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pcur - p->lex.ptok, p->enc);
18290 parser_append_tokens(p, str, t, line);
18296#define dispatch_delayed_token(p, t) parser_dispatch_delayed_token(p, t, __LINE__)
18298parser_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t,
int line)
18300 debug_token_line(p,
"parser_dispatch_delayed_token", line);
18302 if (!has_delayed_token(p))
return;
18304 RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(*p->yylloc);
18306 if (p->keep_tokens) {
18308 parser_append_tokens(p, p->delayed.token, t, line);
18311 rb_parser_string_free(p, p->delayed.token);
18314 p->delayed.token = NULL;
18317#define literal_flush(p, ptr) ((void)(ptr))
18322 if (p->lex.pcur < p->lex.ptok) rb_raise(
rb_eRuntimeError,
"lex.pcur < lex.ptok");
18323 return p->lex.pcur > p->lex.ptok;
18327ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
18329 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
18330 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
18331 RUBY_SET_YYLLOC(*p->yylloc);
18337ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
18339 if (!ripper_has_scan_event(p))
return;
18341 set_parser_s_value(ripper_scan_event_val(p, t));
18343#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
18346ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
18349 int saved_line = p->ruby_sourceline;
18350 const char *saved_tokp = p->lex.ptok;
18351 VALUE s_value, str;
18353 if (!has_delayed_token(p))
return;
18354 p->ruby_sourceline = p->delayed.beg_line;
18355 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
18356 str = rb_str_new_mutable_parser_string(p->delayed.token);
18357 rb_parser_string_free(p, p->delayed.token);
18358 s_value = ripper_dispatch1(p, ripper_token2eventid(t), str);
18359 set_parser_s_value(s_value);
18360 p->delayed.token = NULL;
18361 p->ruby_sourceline = saved_line;
18362 p->lex.ptok = saved_tokp;
18364#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
18368is_identchar(
struct parser_params *p,
const char *ptr,
const char *MAYBE_UNUSED(ptr_end), rb_encoding *enc)
18370 return rb_enc_isalnum((
unsigned char)*ptr, enc) || *ptr ==
'_' || !ISASCII(*ptr);
18376 const char *ptr = p->lex.pcur + at;
18377 if (lex_eol_ptr_n_p(p, ptr,
len-1))
return false;
18378 if (memcmp(ptr, str,
len))
return false;
18379 if (lex_eol_ptr_n_p(p, ptr,
len))
return true;
18380 switch (ptr[
len]) {
18381 case '!':
case '?':
return false;
18383 return !is_identchar(p, ptr+
len, p->lex.pend, p->enc);
18389 return !(p)->eofp && is_identchar(p, p->lex.pcur-1, p->lex.pend, p->enc);
18395 return ISASCII(*(p->lex.pcur-1));
18399token_info_setup(
token_info *ptinfo,
const char *ptr,
const rb_code_location_t *loc)
18401 int column = 1, nonspc = 0, i;
18402 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
18403 if (*ptr ==
'\t') {
18404 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
18407 if (*ptr !=
' ' && *ptr !=
'\t') {
18412 ptinfo->beg = loc->beg_pos;
18413 ptinfo->indent = column;
18414 ptinfo->nonspc = nonspc;
18418token_info_push(
struct parser_params *p,
const char *token,
const rb_code_location_t *loc)
18422 if (!p->token_info_enabled)
return;
18424 ptinfo->token = token;
18425 ptinfo->next = p->token_info;
18426 token_info_setup(ptinfo, p->lex.pbeg, loc);
18428 p->token_info = ptinfo;
18432token_info_pop(
struct parser_params *p,
const char *token,
const rb_code_location_t *loc)
18436 if (!ptinfo_beg)
return;
18439 token_info_warn(p, token, ptinfo_beg, 1, loc);
18441 p->token_info = ptinfo_beg->next;
18442 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
18446token_info_drop(
struct parser_params *p,
const char *token, rb_code_position_t beg_pos)
18450 if (!ptinfo_beg)
return;
18451 p->token_info = ptinfo_beg->next;
18453 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
18454 ptinfo_beg->beg.column != beg_pos.column ||
18455 strcmp(ptinfo_beg->token, token)) {
18456 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
18457 beg_pos.lineno, beg_pos.column, token,
18458 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
18459 ptinfo_beg->token);
18462 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
18466token_info_warn(
struct parser_params *p,
const char *token,
token_info *ptinfo_beg,
int same,
const rb_code_location_t *loc)
18468 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
18469 if (!p->token_info_enabled)
return;
18470 if (!ptinfo_beg)
return;
18471 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
18472 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
18473 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
18474 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
18475 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
18476 rb_warn3L(ptinfo_end->beg.lineno,
18477 "mismatched indentations at '%s' with '%s' at %d",
18478 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
18482parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
18484 int len = rb_enc_precise_mbclen(ptr, p->lex.pend, p->enc);
18486 compile_error(p,
"invalid multibyte char (%s)", rb_enc_name(p->enc));
18494parser_show_error_line(
struct parser_params *p,
const YYLTYPE *yylloc)
18496 rb_parser_string_t *str;
18497 int lineno = p->ruby_sourceline;
18501 else if (yylloc->beg_pos.lineno == lineno) {
18502 str = p->lex.lastline;
18507 ruby_show_error_line(p, p->error_buffer, yylloc, lineno, str);
18511parser_yyerror(
struct parser_params *p,
const rb_code_location_t *yylloc,
const char *msg)
18517 yylloc = RUBY_SET_YYLLOC(current);
18519 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
18520 p->ruby_sourceline != yylloc->end_pos.lineno)) {
18524 parser_compile_error(p, yylloc,
"%s", msg);
18525 parser_show_error_line(p, yylloc);
18533 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
18537ruby_show_error_line(
struct parser_params *p,
VALUE errbuf,
const YYLTYPE *yylloc,
int lineno, rb_parser_string_t *str)
18540 const int max_line_margin = 30;
18541 const char *ptr, *ptr_end, *pt, *pb;
18542 const char *pre =
"", *post =
"", *pend;
18543 const char *code =
"", *caret =
"";
18545 const char *
const pbeg = PARSER_STRING_PTR(str);
18550 if (!yylloc)
return;
18551 pend = rb_parser_string_end(str);
18552 if (pend > pbeg && pend[-1] ==
'\n') {
18553 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
18557 if (lineno == yylloc->end_pos.lineno &&
18558 (pend - pbeg) > yylloc->end_pos.column) {
18559 pt = pbeg + yylloc->end_pos.column;
18562 ptr = ptr_end = pt;
18563 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
18564 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
18566 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
18567 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
18569 len = ptr_end - ptr;
18572 ptr = rb_enc_prev_char(pbeg, ptr, pt, rb_parser_str_get_encoding(str));
18573 if (ptr > pbeg) pre =
"...";
18575 if (ptr_end < pend) {
18576 ptr_end = rb_enc_prev_char(pt, ptr_end, pend, rb_parser_str_get_encoding(str));
18577 if (ptr_end < pend) post =
"...";
18581 if (lineno == yylloc->beg_pos.lineno) {
18582 pb += yylloc->beg_pos.column;
18583 if (pb > pt) pb = pt;
18585 if (pb < ptr) pb = ptr;
18589 if (
RTEST(errbuf)) {
18590 mesg = rb_attr_get(errbuf, idMesg);
18591 if (char_at_end(p, mesg,
'\n') !=
'\n')
18595 mesg = rb_enc_str_new(0, 0, rb_parser_str_get_encoding(str));
18597 if (!errbuf && rb_stderr_tty_p()) {
18598#define CSI_BEGIN "\033["
18601 CSI_BEGIN
""CSI_SGR
"%s"
18602 CSI_BEGIN
"1"CSI_SGR
"%.*s"
18603 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
18604 CSI_BEGIN
";1"CSI_SGR
"%.*s"
18605 CSI_BEGIN
""CSI_SGR
"%s"
18608 (
int)(pb - ptr), ptr,
18609 (
int)(pt - pb), pb,
18610 (
int)(ptr_end - pt), pt,
18616 len = ptr_end - ptr;
18617 lim = pt < pend ? pt : pend;
18618 i = (int)(lim - ptr);
18624 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
18630 memset(p2,
'~', (lim - ptr));
18634 rb_str_catf(mesg,
"%s%.*s%s\n""%s%s\n",
18635 pre, (
int)
len, code, post,
18638 if (!errbuf) rb_write_error_str(mesg);
18643parser_yyerror(
struct parser_params *p,
const YYLTYPE *yylloc,
const char *msg)
18645 const char *pcur = 0, *ptok = 0;
18646 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
18647 p->ruby_sourceline == yylloc->end_pos.lineno) {
18648 pcur = p->lex.pcur;
18649 ptok = p->lex.ptok;
18650 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
18651 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
18653 parser_yyerror0(p, msg);
18655 p->lex.ptok = ptok;
18656 p->lex.pcur = pcur;
18664 dispatch1(parse_error, STR_NEW2(msg));
18670parser_show_error_line(
struct parser_params *p,
const YYLTYPE *yylloc)
18676vtable_size(
const struct vtable *tbl)
18678 if (!DVARS_TERMINAL_P(tbl)) {
18696 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
18701#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
18704vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
18709 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
18712 if (!DVARS_TERMINAL_P(tbl)) {
18714 ruby_sized_xfree(tbl->tbl, tbl->capa *
sizeof(
ID));
18716 ruby_sized_xfree(tbl,
sizeof(*tbl));
18719#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
18722vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
18727 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
18728 line, name, (
void *)tbl, rb_id2name(
id));
18731 if (DVARS_TERMINAL_P(tbl)) {
18732 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
18735 if (tbl->pos == tbl->capa) {
18736 tbl->capa = tbl->capa * 2;
18737 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
18739 tbl->tbl[tbl->pos++] = id;
18741#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
18744vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
18745 struct vtable *tbl,
int n)
18748 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
18749 line, name, (
void *)tbl, n);
18751 if (tbl->pos < n) {
18752 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
18757#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
18760vtable_included(
const struct vtable * tbl,
ID id)
18764 if (!DVARS_TERMINAL_P(tbl)) {
18765 for (i = 0; i < tbl->pos; i++) {
18766 if (tbl->tbl[i] ==
id) {
18779 return strcmp(p->ruby_sourcefile,
"-e") == 0;
18783static NODE *parser_append_options(
struct parser_params *p, NODE *node);
18786yycompile0(
VALUE arg)
18793 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string) && !e_option_supplied(p)) {
18797 if (p->debug_lines) {
18798 p->ast->body.script_lines = p->debug_lines;
18802#define RUBY_DTRACE_PARSE_HOOK(name) \
18803 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
18804 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
18806 RUBY_DTRACE_PARSE_HOOK(BEGIN);
18808 RUBY_DTRACE_PARSE_HOOK(END);
18810 p->debug_lines = 0;
18812 xfree(p->lex.strterm);
18813 p->lex.strterm = 0;
18814 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
18815 if (n || p->error_p) {
18816 VALUE mesg = p->error_buffer;
18818 mesg = syntax_error_new();
18820 if (!p->error_tolerant) {
18821 rb_set_errinfo(mesg);
18825 tree = p->eval_tree;
18827 tree = NEW_NIL(&NULL_LOC);
18830 rb_parser_ary_t *tokens = p->tokens;
18832 NODE *body = parser_append_options(p, RNODE_SCOPE(tree)->nd_body);
18833 prelude = block_append(p, p->eval_tree_begin, body);
18834 RNODE_SCOPE(tree)->nd_body = prelude;
18835 p->ast->body.frozen_string_literal = p->frozen_string_literal;
18836 p->ast->body.coverage_enabled = cov;
18837 if (p->keep_tokens) {
18838 p->ast->node_buffer->tokens = tokens;
18842 p->ast->body.root = tree;
18843 p->ast->body.line_count = p->line_count;
18851 if (
NIL_P(fname)) {
18852 p->ruby_sourcefile_string =
Qnil;
18853 p->ruby_sourcefile =
"(none)";
18856 p->ruby_sourcefile_string = rb_str_to_interned_str(fname);
18859 p->ruby_sourceline = line - 1;
18863 p->ast = ast = rb_ast_new();
18864 compile_callback(yycompile0, (
VALUE)p);
18875static rb_encoding *
18876must_be_ascii_compatible(
struct parser_params *p, rb_parser_string_t *s)
18878 rb_encoding *enc = rb_parser_str_get_encoding(s);
18879 if (!rb_enc_asciicompat(enc)) {
18880 rb_raise(rb_eArgError,
"invalid source encoding");
18885static rb_parser_string_t *
18888 rb_parser_string_t *line = (*p->lex.gets)(p, p->lex.input, p->line_count);
18889 if (!line)
return 0;
18891 string_buffer_append(p, line);
18892 must_be_ascii_compatible(p, line);
18898rb_parser_compile(rb_parser_t *p, rb_parser_lex_gets_func *gets,
VALUE fname, rb_parser_input_data input,
int line)
18900 p->lex.gets = gets;
18901 p->lex.input = input;
18902 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
18904 return yycompile(p, fname, line);
18908#define STR_FUNC_ESCAPE 0x01
18909#define STR_FUNC_EXPAND 0x02
18910#define STR_FUNC_REGEXP 0x04
18911#define STR_FUNC_QWORDS 0x08
18912#define STR_FUNC_SYMBOL 0x10
18913#define STR_FUNC_INDENT 0x20
18914#define STR_FUNC_LABEL 0x40
18915#define STR_FUNC_LIST 0x4000
18916#define STR_FUNC_TERM 0x8000
18919 str_label = STR_FUNC_LABEL,
18921 str_dquote = (STR_FUNC_EXPAND),
18922 str_xquote = (STR_FUNC_EXPAND),
18923 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
18924 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
18925 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
18926 str_ssym = (STR_FUNC_SYMBOL),
18927 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
18930static rb_parser_string_t *
18931parser_str_new(
struct parser_params *p,
const char *ptr,
long len, rb_encoding *enc,
int func, rb_encoding *enc0)
18933 rb_parser_string_t *pstr;
18935 pstr = rb_parser_encoding_string_new(p, ptr,
len, enc);
18937 if (!(func & STR_FUNC_REGEXP)) {
18938 if (rb_parser_is_ascii_string(p, pstr)) {
18943 PARSER_ENCODING_CODERANGE_SET(pstr, enc, RB_PARSER_ENC_CODERANGE_VALID);
18951strterm_is_heredoc(rb_strterm_t *strterm)
18953 return strterm->heredoc;
18956static rb_strterm_t *
18957new_strterm(
struct parser_params *p,
int func,
int term,
int paren)
18959 rb_strterm_t *strterm =
ZALLOC(rb_strterm_t);
18960 strterm->u.literal.func = func;
18961 strterm->u.literal.term = term;
18962 strterm->u.literal.paren = paren;
18966static rb_strterm_t *
18969 rb_strterm_t *strterm =
ZALLOC(rb_strterm_t);
18970 strterm->heredoc =
true;
18974#define peek(p,c) peek_n(p, (c), 0)
18975#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
18976#define peekc(p) peekc_n(p, 0)
18977#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
18979#define add_delayed_token(p, tok, end) parser_add_delayed_token(p, tok, end, __LINE__)
18981parser_add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end,
int line)
18983 debug_token_line(p,
"add_delayed_token", line);
18986 if (has_delayed_token(p)) {
18987 bool next_line = parser_string_char_at_end(p, p->delayed.token, 0) ==
'\n';
18988 int end_line = (next_line ? 1 : 0) + p->delayed.end_line;
18989 int end_col = (next_line ? 0 : p->delayed.end_col);
18990 if (end_line != p->ruby_sourceline || end_col != tok - p->lex.pbeg) {
18991 dispatch_delayed_token(p, tSTRING_CONTENT);
18994 if (!has_delayed_token(p)) {
18995 p->delayed.token = rb_parser_string_new(p, 0, 0);
18996 rb_parser_enc_associate(p, p->delayed.token, p->enc);
18997 p->delayed.beg_line = p->ruby_sourceline;
18998 p->delayed.beg_col =
rb_long2int(tok - p->lex.pbeg);
19000 parser_str_cat(p->delayed.token, tok, end - tok);
19001 p->delayed.end_line = p->ruby_sourceline;
19002 p->delayed.end_col =
rb_long2int(end - p->lex.pbeg);
19008set_lastline(
struct parser_params *p, rb_parser_string_t *str)
19010 p->lex.pbeg = p->lex.pcur = PARSER_STRING_PTR(str);
19011 p->lex.pend = p->lex.pcur + PARSER_STRING_LEN(str);
19012 p->lex.lastline = str;
19018 rb_parser_string_t *str = p->lex.nextline;
19019 p->lex.nextline = 0;
19024 if (!lex_eol_ptr_p(p, p->lex.pbeg) && *(p->lex.pend-1) !=
'\n') {
19028 if (!p->lex.input || !(str = lex_getline(p))) {
19035 if (p->debug_lines) {
19036 if (set_encoding) rb_parser_enc_associate(p, str, p->enc);
19037 rb_parser_string_t *copy = rb_parser_string_deep_copy(p, str);
19038 rb_parser_ary_push_script_line(p, p->debug_lines, copy);
19041 p->cr_seen = FALSE;
19043 else if (str == AFTER_HEREDOC_WITHOUT_TERMINATOR) {
19047 add_delayed_token(p, p->lex.ptok, p->lex.pend);
19048 if (p->heredoc_end > 0) {
19049 p->ruby_sourceline = p->heredoc_end;
19050 p->heredoc_end = 0;
19052 p->ruby_sourceline++;
19053 set_lastline(p, str);
19061 if (peek(p,
'\n')) {
19073 if (UNLIKELY(lex_eol_p(p) || p->eofp || p->lex.nextline > AFTER_HEREDOC_WITHOUT_TERMINATOR)) {
19074 if (nextline(p, set_encoding))
return -1;
19076 c = (
unsigned char)*p->lex.pcur++;
19077 if (UNLIKELY(c ==
'\r')) {
19078 c = parser_cr(p, c);
19083#define nextc(p) nextc0(p, TRUE)
19088 if (c == -1)
return;
19091 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
19096#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
19098#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
19099#define tok(p) (p)->tokenbuf
19100#define toklen(p) (p)->tokidx
19105 const char *ptr = p->lex.pcur;
19106 while (!lex_eol_ptr_p(p, ptr)) {
19107 int c = (
unsigned char)*ptr++;
19108 int eol = (c ==
'\n' || c ==
'#');
19120 if (!p->tokenbuf) {
19122 p->tokenbuf =
ALLOC_N(
char, 60);
19124 if (p->toksiz > 4096) {
19128 return p->tokenbuf;
19136 if (p->tokidx >= p->toksiz) {
19137 do {p->toksiz *= 2;}
while (p->toksiz < p->tokidx);
19138 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19140 return &p->tokenbuf[p->tokidx-n];
19146 p->tokenbuf[p->tokidx++] = (char)c;
19147 if (p->tokidx >= p->toksiz) {
19149 REALLOC_N(p->tokenbuf,
char, p->toksiz);
19158 c = (int)ruby_scan_hex(p->lex.pcur, 2, numlen);
19161 yyerror0(
"invalid hex escape");
19162 dispatch_scan_event(p, tSTRING_CONTENT);
19165 p->lex.pcur += *numlen;
19169#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
19172escaped_control_code(
int c)
19198#define WARN_SPACE_CHAR(c, prefix) \
19199 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c))
19202tokadd_codepoint(
struct parser_params *p, rb_encoding **encp,
19203 int regexp_literal,
const char *begin)
19205 const int wide = !begin;
19207 int codepoint = (int)ruby_scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
19209 p->lex.pcur += numlen;
19210 if (p->lex.strterm == NULL ||
19211 strterm_is_heredoc(p->lex.strterm) ||
19212 (p->lex.strterm->u.literal.func != str_regexp)) {
19213 if (!begin) begin = p->lex.pcur;
19214 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
19216 yyerror0(
"invalid Unicode escape");
19217 dispatch_scan_event(p, tSTRING_CONTENT);
19218 return wide && numlen > 0;
19220 if (codepoint > 0x10ffff) {
19222 yyerror0(
"invalid Unicode codepoint (too large)");
19223 dispatch_scan_event(p, tSTRING_CONTENT);
19226 if ((codepoint & 0xfffff800) == 0xd800) {
19228 yyerror0(
"invalid Unicode codepoint");
19229 dispatch_scan_event(p, tSTRING_CONTENT);
19233 if (regexp_literal) {
19234 tokcopy(p, (
int)numlen);
19236 else if (codepoint >= 0x80) {
19238 if (*encp && utf8 != *encp) {
19239 YYLTYPE loc = RUBY_INIT_YYLLOC();
19240 compile_error(p,
"UTF-8 mixed within %s source", rb_enc_name(*encp));
19241 parser_show_error_line(p, &loc);
19245 tokaddmbc(p, codepoint, *encp);
19248 tokadd(p, codepoint);
19258 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19260 p->lex.pcur +=
len - 1;
19268 int term,
int symbol_literal,
int regexp_literal)
19275 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
19277 const int open_brace =
'{', close_brace =
'}';
19279 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
19281 if (peek(p, open_brace)) {
19282 if (regexp_literal && p->lex.strterm->u.literal.func == str_regexp) {
19289 tokadd(p, open_brace);
19290 while (!lex_eol_ptr_p(p, ++p->lex.pcur)) {
19292 if (c == close_brace) {
19297 else if (c == term) {
19300 if (c ==
'\\' && !lex_eol_n_p(p, 1)) {
19302 c = *++p->lex.pcur;
19304 tokadd_mbchar(p, c);
19308 const char *second = NULL;
19309 int c, last = nextc(p);
19310 if (lex_eol_p(p))
goto unterminated;
19311 while (
ISSPACE(c = peekc(p)) && !lex_eol_ptr_p(p, ++p->lex.pcur));
19312 while (c != close_brace) {
19313 if (c == term)
goto unterminated;
19314 if (second == multiple_codepoints)
19315 second = p->lex.pcur;
19316 if (regexp_literal) tokadd(p, last);
19317 if (!tokadd_codepoint(p, encp, regexp_literal, NULL)) {
19320 while (
ISSPACE(c = peekc(p))) {
19321 if (lex_eol_ptr_p(p, ++p->lex.pcur))
goto unterminated;
19324 if (term == -1 && !second)
19325 second = multiple_codepoints;
19328 if (c != close_brace) {
19331 yyerror0(
"unterminated Unicode escape");
19332 dispatch_scan_event(p, tSTRING_CONTENT);
19335 if (second && second != multiple_codepoints) {
19336 const char *pcur = p->lex.pcur;
19337 p->lex.pcur = second;
19338 dispatch_scan_event(p, tSTRING_CONTENT);
19340 p->lex.pcur = pcur;
19341 yyerror0(multiple_codepoints);
19345 if (regexp_literal) tokadd(p, close_brace);
19350 if (!tokadd_codepoint(p, encp, regexp_literal, p->lex.pcur -
rb_strlen_lit(
"\\u"))) {
19357#define ESCAPE_CONTROL 1
19358#define ESCAPE_META 2
19361read_escape(
struct parser_params *p,
int flags,
const char *begin)
19366 switch (c = nextc(p)) {
19391 case '0':
case '1':
case '2':
case '3':
19392 case '4':
case '5':
case '6':
case '7':
19394 c = (int)ruby_scan_oct(p->lex.pcur, 3, &numlen);
19395 p->lex.pcur += numlen;
19399 c = tok_hex(p, &numlen);
19400 if (numlen == 0)
return 0;
19410 if (flags & ESCAPE_META)
goto eof;
19411 if ((c = nextc(p)) !=
'-') {
19414 if ((c = nextc(p)) ==
'\\') {
19415 switch (peekc(p)) {
19416 case 'u':
case 'U':
19420 return read_escape(p, flags|ESCAPE_META, begin) | 0x80;
19422 else if (c == -1)
goto eof;
19423 else if (!ISASCII(c)) {
19428 int c2 = escaped_control_code(c);
19430 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
19431 WARN_SPACE_CHAR(c2,
"\\M-");
19434 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
19437 else if (
ISCNTRL(c))
goto eof;
19438 return ((c & 0xff) | 0x80);
19442 if ((c = nextc(p)) !=
'-') {
19446 if (flags & ESCAPE_CONTROL)
goto eof;
19447 if ((c = nextc(p))==
'\\') {
19448 switch (peekc(p)) {
19449 case 'u':
case 'U':
19453 c = read_escape(p, flags|ESCAPE_CONTROL, begin);
19457 else if (c == -1)
goto eof;
19458 else if (!ISASCII(c)) {
19463 int c2 = escaped_control_code(c);
19466 if (flags & ESCAPE_META) {
19467 WARN_SPACE_CHAR(c2,
"\\M-");
19470 WARN_SPACE_CHAR(c2,
"");
19474 if (flags & ESCAPE_META) {
19475 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
19478 WARN_SPACE_CHAR(c2,
"\\C-");
19482 else if (
ISCNTRL(c))
goto eof;
19488 flush_string_content(p, p->enc, p->lex.pcur - begin);
19489 yyerror0(
"Invalid escape character syntax");
19490 dispatch_scan_event(p, tSTRING_CONTENT);
19505 int len = rb_enc_codelen(c, enc);
19506 rb_enc_mbcput(c, tokspace(p,
len), enc);
19514 const char *begin = p->lex.pcur;
19516 switch (c = nextc(p)) {
19520 case '0':
case '1':
case '2':
case '3':
19521 case '4':
case '5':
case '6':
case '7':
19523 ruby_scan_oct(--p->lex.pcur, 3, &numlen);
19524 if (numlen == 0)
goto eof;
19525 p->lex.pcur += numlen;
19526 tokcopy(p, (
int)numlen + 1);
19532 tok_hex(p, &numlen);
19533 if (numlen == 0)
return -1;
19534 tokcopy(p, (
int)numlen + 2);
19540 flush_string_content(p, p->enc, p->lex.pcur - begin);
19541 yyerror0(
"Invalid escape character syntax");
19553char_to_option(
int c)
19559 val = RE_ONIG_OPTION_IGNORECASE;
19562 val = RE_ONIG_OPTION_EXTEND;
19565 val = RE_ONIG_OPTION_MULTILINE;
19574#define ARG_ENCODING_FIXED 16
19575#define ARG_ENCODING_NONE 32
19576#define ENC_ASCII8BIT 1
19577#define ENC_EUC_JP 2
19578#define ENC_Windows_31J 3
19582char_to_option_kcode(
int c,
int *option,
int *kcode)
19588 *kcode = ENC_ASCII8BIT;
19589 return (*option = ARG_ENCODING_NONE);
19591 *kcode = ENC_EUC_JP;
19594 *kcode = ENC_Windows_31J;
19601 return (*option = char_to_option(c));
19603 *option = ARG_ENCODING_FIXED;
19616 while (c = nextc(p),
ISALPHA(c)) {
19618 options |= RE_OPTION_ONCE;
19620 else if (char_to_option_kcode(c, &opt, &kc)) {
19622 if (kc != ENC_ASCII8BIT) kcode = c;
19636 YYLTYPE loc = RUBY_INIT_YYLLOC();
19638 compile_error(p,
"unknown regexp option%s - %*s",
19639 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
19640 parser_show_error_line(p, &loc);
19642 return options | RE_OPTION_ENCODING(kcode);
19648 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19649 if (
len < 0)
return -1;
19651 p->lex.pcur += --
len;
19652 if (
len > 0) tokcopy(p,
len);
19657simple_re_meta(
int c)
19660 case '$':
case '*':
case '+':
case '.':
19661 case '?':
case '^':
case '|':
19662 case ')':
case ']':
case '}':
case '>':
19670parser_update_heredoc_indent(
struct parser_params *p,
int c)
19672 if (p->heredoc_line_indent == -1) {
19673 if (c ==
'\n') p->heredoc_line_indent = 0;
19677 p->heredoc_line_indent++;
19680 else if (c ==
'\t') {
19681 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
19682 p->heredoc_line_indent = w * TAB_WIDTH;
19685 else if (c !=
'\n') {
19686 if (p->heredoc_indent > p->heredoc_line_indent) {
19687 p->heredoc_indent = p->heredoc_line_indent;
19689 p->heredoc_line_indent = -1;
19693 p->heredoc_line_indent = 0;
19700parser_mixed_error(
struct parser_params *p, rb_encoding *enc1, rb_encoding *enc2)
19702 YYLTYPE loc = RUBY_INIT_YYLLOC();
19703 const char *n1 = rb_enc_name(enc1), *n2 = rb_enc_name(enc2);
19704 compile_error(p,
"%s mixed within %s source", n1, n2);
19705 parser_show_error_line(p, &loc);
19709parser_mixed_escape(
struct parser_params *p,
const char *beg, rb_encoding *enc1, rb_encoding *enc2)
19711 const char *pos = p->lex.pcur;
19713 parser_mixed_error(p, enc1, enc2);
19718nibble_char_upper(
unsigned int c)
19721 return c + (c < 10 ?
'0' :
'A' - 10);
19726 int func,
int term,
int paren,
long *nest,
19727 rb_encoding **encp, rb_encoding **enc)
19730 bool erred =
false;
19732 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
19733 int top_of_line = FALSE;
19736#define mixed_error(enc1, enc2) \
19737 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
19738#define mixed_escape(beg, enc1, enc2) \
19739 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
19741 while ((c = nextc(p)) != -1) {
19742 if (p->heredoc_indent > 0) {
19743 parser_update_heredoc_indent(p, c);
19746 if (top_of_line && heredoc_end == p->ruby_sourceline) {
19752 if (paren && c == paren) {
19755 else if (c == term) {
19756 if (!nest || !*nest) {
19762 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && !lex_eol_p(p)) {
19763 unsigned char c2 = *p->lex.pcur;
19764 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
19769 else if (c ==
'\\') {
19773 if (func & STR_FUNC_QWORDS)
break;
19774 if (func & STR_FUNC_EXPAND) {
19775 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
19786 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
19790 if ((func & STR_FUNC_EXPAND) == 0) {
19794 tokadd_utf8(p, enc, term,
19795 func & STR_FUNC_SYMBOL,
19796 func & STR_FUNC_REGEXP);
19800 if (c == -1)
return -1;
19802 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
19805 if (func & STR_FUNC_REGEXP) {
19811 c = read_escape(p, 0, p->lex.pcur - 1);
19816 *t++ = nibble_char_upper(c >> 4);
19817 *t++ = nibble_char_upper(c);
19822 if (c == term && !simple_re_meta(c)) {
19827 if ((c = tokadd_escape(p)) < 0)
19829 if (*enc && *enc != *encp) {
19830 mixed_escape(p->lex.ptok+2, *enc, *encp);
19834 else if (func & STR_FUNC_EXPAND) {
19836 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
19837 c = read_escape(p, 0, p->lex.pcur - 1);
19839 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
19842 else if (c != term && !(paren && c == paren)) {
19849 else if (!parser_isascii(p)) {
19854 else if (*enc != *encp) {
19855 mixed_error(*enc, *encp);
19858 if (tokadd_mbchar(p, c) == -1)
return -1;
19861 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
19869 else if (*enc != *encp) {
19870 mixed_error(*enc, *encp);
19876 top_of_line = (c ==
'\n');
19880 if (*enc) *encp = *enc;
19884#define NEW_STRTERM(func, term, paren) new_strterm(p, func, term, paren)
19887flush_string_content(
struct parser_params *p, rb_encoding *enc,
size_t back)
19889 p->lex.pcur -= back;
19890 if (has_delayed_token(p)) {
19891 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
19893 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
19894 p->delayed.end_line = p->ruby_sourceline;
19895 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
19897 dispatch_delayed_token(p, tSTRING_CONTENT);
19898 p->lex.ptok = p->lex.pcur;
19900 dispatch_scan_event(p, tSTRING_CONTENT);
19901 p->lex.pcur += back;
19907#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
19908#define SPECIAL_PUNCT(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) | \
19912 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
19913 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
19915const uint_least32_t ruby_global_name_punct_bits[] = {
19921#undef SPECIAL_PUNCT
19924static enum yytokentype
19925parser_peek_variable_name(struct parser_params *p)
19928 const char *ptr = p->lex.pcur;
19930 if (lex_eol_ptr_n_p(p, ptr, 1)) return 0;
19934 if ((c = *ptr) == '-') {
19935 if (lex_eol_ptr_p(p, ++ptr)) return 0;
19938 else if (is_global_name_punct(c) || ISDIGIT(c)) {
19939 return tSTRING_DVAR;
19943 if ((c = *ptr) == '@') {
19944 if (lex_eol_ptr_p(p, ++ptr)) return 0;
19950 p->command_start = TRUE;
19951 yylval.state = p->lex.state;
19952 return tSTRING_DBEG;
19956 if (!ISASCII(c) || c == '_' || ISALPHA(c))
19957 return tSTRING_DVAR;
19961#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
19962#define IS_END() IS_lex_state(EXPR_END_ANY)
19963#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
19964#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
19965#define IS_LABEL_POSSIBLE() (\
19966 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
19968#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
19969#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
19971static inline enum yytokentype
19972parser_string_term(struct parser_params *p, int func)
19974 xfree(p->lex.strterm);
19975 p->lex.strterm = 0;
19976 if (func & STR_FUNC_REGEXP) {
19977 set_yylval_num(regx_options(p));
19978 dispatch_scan_event(p, tREGEXP_END);
19979 SET_LEX_STATE(EXPR_END);
19980 return tREGEXP_END;
19982 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
19984 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
19987 SET_LEX_STATE(EXPR_END);
19988 return tSTRING_END;
19991static enum yytokentype
19992parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
19994 int func = quote->func;
19995 int term = quote->term;
19996 int paren = quote->paren;
19998 rb_encoding *enc = p->enc;
19999 rb_encoding *base_enc = 0;
20000 rb_parser_string_t *lit;
20002 if (func & STR_FUNC_TERM) {
20003 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
20004 SET_LEX_STATE(EXPR_END);
20005 xfree(p->lex.strterm);
20006 p->lex.strterm = 0;
20007 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
20010 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
20011 while (c != '\n' && ISSPACE(c = nextc(p)));
20014 if (func & STR_FUNC_LIST) {
20015 quote->func &= ~STR_FUNC_LIST;
20018 if (c == term && !quote->nest) {
20019 if (func & STR_FUNC_QWORDS) {
20020 quote->func |= STR_FUNC_TERM;
20021 pushback(p, c); /* dispatch the term at tSTRING_END */
20022 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20025 return parser_string_term(p, func);
20028 if (!ISSPACE(c)) pushback(p, c);
20029 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
20033 if ((func & STR_FUNC_EXPAND) && c == '#') {
20034 enum yytokentype t = parser_peek_variable_name(p);
20040 if (tokadd_string(p, func, term, paren, "e->nest,
20041 &enc, &base_enc) == -1) {
20044# define unterminated_literal(mesg) yyerror0(mesg)
20046# define unterminated_literal(mesg) compile_error(p, mesg)
20048 literal_flush(p, p->lex.pcur);
20049 if (func & STR_FUNC_QWORDS) {
20050 /* no content to add, bailing out here */
20051 unterminated_literal("unterminated list meets end of file");
20052 xfree(p->lex.strterm);
20053 p->lex.strterm = 0;
20054 return tSTRING_END;
20056 if (func & STR_FUNC_REGEXP) {
20057 unterminated_literal("unterminated regexp meets end of file");
20060 unterminated_literal("unterminated string meets end of file");
20062 quote->func |= STR_FUNC_TERM;
20067 lit = STR_NEW3(tok(p), toklen(p), enc, func);
20068 set_yylval_str(lit);
20069 flush_string_content(p, enc, 0);
20071 return tSTRING_CONTENT;
20074static enum yytokentype
20075heredoc_identifier(struct parser_params *p)
20078 * term_len is length of `<<"END"` except `END`,
20079 * in this case term_len is 4 (<, <, " and ").
20081 long len, offset = p->lex.pcur - p->lex.pbeg;
20082 int c = nextc(p), term, func = 0, quote = 0;
20083 enum yytokentype token = tSTRING_BEG;
20088 func = STR_FUNC_INDENT;
20091 else if (c == '~') {
20093 func = STR_FUNC_INDENT;
20099 func |= str_squote; goto quoted;
20101 func |= str_dquote;
goto quoted;
20103 token = tXSTRING_BEG;
20104 func |= str_xquote;
goto quoted;
20111 while ((c = nextc(p)) != term) {
20112 if (c == -1 || c ==
'\r' || c ==
'\n') {
20113 yyerror0(
"unterminated here document identifier");
20120 if (!parser_is_identchar(p)) {
20122 if (func & STR_FUNC_INDENT) {
20123 pushback(p, indent > 0 ?
'~' :
'-');
20127 func |= str_dquote;
20129 int n = parser_precise_mbclen(p, p->lex.pcur-1);
20130 if (n < 0)
return 0;
20131 p->lex.pcur += --n;
20132 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
20137 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
20138 if ((
unsigned long)
len >= HERETERM_LENGTH_MAX)
20139 yyerror0(
"too long here document identifier");
20140 dispatch_scan_event(p, tHEREDOC_BEG);
20143 p->lex.strterm = new_heredoc(p);
20144 rb_strterm_heredoc_t *here = &p->lex.strterm->u.heredoc;
20145 here->offset = offset;
20146 here->sourceline = p->ruby_sourceline;
20147 here->length = (unsigned)
len;
20148 here->quote = quote;
20150 here->lastline = p->lex.lastline;
20153 p->heredoc_indent = indent;
20154 p->heredoc_line_indent = 0;
20159heredoc_restore(
struct parser_params *p, rb_strterm_heredoc_t *here)
20161 rb_parser_string_t *line;
20162 rb_strterm_t *term = p->lex.strterm;
20164 p->lex.strterm = 0;
20165 line = here->lastline;
20166 p->lex.lastline = line;
20167 p->lex.pbeg = PARSER_STRING_PTR(line);
20168 p->lex.pend = p->lex.pbeg + PARSER_STRING_LEN(line);
20169 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
20170 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
20171 p->heredoc_end = p->ruby_sourceline;
20172 p->ruby_sourceline = (int)here->sourceline;
20173 if (p->eofp) p->lex.nextline = AFTER_HEREDOC_WITHOUT_TERMINATOR;
20179dedent_string_column(
const char *str,
long len,
int width)
20183 for (i = 0; i <
len && col < width; i++) {
20184 if (str[i] ==
' ') {
20187 else if (str[i] ==
'\t') {
20188 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
20189 if (n > width)
break;
20201dedent_string(
struct parser_params *p, rb_parser_string_t *
string,
int width)
20207 len = PARSER_STRING_LEN(
string);
20208 str = PARSER_STRING_PTR(
string);
20210 i = dedent_string_column(str,
len, width);
20213 rb_parser_str_modify(
string);
20214 str = PARSER_STRING_PTR(
string);
20215 if (PARSER_STRING_LEN(
string) !=
len)
20216 rb_fatal(
"literal string changed: %s", PARSER_STRING_PTR(
string));
20218 rb_parser_str_set_len(p,
string,
len - i);
20225 NODE *node, *str_node, *prev_node;
20226 int indent = p->heredoc_indent;
20227 rb_parser_string_t *prev_lit = 0;
20229 if (indent <= 0)
return root;
20230 if (!root)
return root;
20232 prev_node = node = str_node = root;
20233 if (nd_type_p(root, NODE_LIST)) str_node = RNODE_LIST(root)->nd_head;
20236 rb_parser_string_t *lit = RNODE_STR(str_node)->string;
20237 if (nd_fl_newline(str_node)) {
20238 dedent_string(p, lit, indent);
20243 else if (!literal_concat0(p, prev_lit, lit)) {
20247 NODE *end = RNODE_LIST(node)->as.nd_end;
20248 node = RNODE_LIST(prev_node)->nd_next = RNODE_LIST(node)->nd_next;
20250 if (nd_type_p(prev_node, NODE_DSTR))
20251 nd_set_type(prev_node, NODE_STR);
20254 RNODE_LIST(node)->as.nd_end = end;
20259 while ((nd_type_p(node, NODE_LIST) || nd_type_p(node, NODE_DSTR)) && (node = RNODE_LIST(prev_node = node)->nd_next) != 0) {
20261 if (!nd_type_p(node, NODE_LIST))
break;
20262 if ((str_node = RNODE_LIST(node)->nd_head) != 0) {
20263 enum node_type
type = nd_type(str_node);
20264 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
20274whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
20276 const char *beg = p->lex.pbeg;
20277 const char *ptr = p->lex.pend;
20279 if (ptr - beg <
len)
return FALSE;
20280 if (ptr > beg && ptr[-1] ==
'\n') {
20281 if (--ptr > beg && ptr[-1] ==
'\r') --ptr;
20282 if (ptr - beg <
len)
return FALSE;
20284 if (strncmp(eos, ptr -=
len,
len))
return FALSE;
20286 while (beg < ptr &&
ISSPACE(*beg)) beg++;
20294 if (strncmp(p->lex.pcur, word,
len))
return 0;
20295 if (lex_eol_n_p(p,
len))
return 1;
20296 int c = (
unsigned char)p->lex.pcur[
len];
20299 case '\0':
case '\004':
case '\032':
return 1;
20304#define NUM_SUFFIX_R (1<<0)
20305#define NUM_SUFFIX_I (1<<1)
20306#define NUM_SUFFIX_ALL 3
20312 const char *lastp = p->lex.pcur;
20314 while ((c = nextc(p)) != -1) {
20315 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
20316 result |= (mask & NUM_SUFFIX_I);
20317 mask &= ~NUM_SUFFIX_I;
20319 mask &= ~NUM_SUFFIX_R;
20322 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
20323 result |= (mask & NUM_SUFFIX_R);
20324 mask &= ~NUM_SUFFIX_R;
20327 if (!ISASCII(c) ||
ISALPHA(c) || c ==
'_') {
20328 p->lex.pcur = lastp;
20337static enum yytokentype
20338set_number_literal(
struct parser_params *p,
enum yytokentype
type,
int suffix,
int base,
int seen_point)
20340 enum rb_numeric_type numeric_type = integer_literal;
20342 if (
type == tFLOAT) {
20343 numeric_type = float_literal;
20346 if (suffix & NUM_SUFFIX_R) {
20348 numeric_type = rational_literal;
20350 if (suffix & NUM_SUFFIX_I) {
20356 set_yylval_node(NEW_INTEGER(
strdup(tok(p)), base, &_cur_loc));
20359 set_yylval_node(NEW_FLOAT(
strdup(tok(p)), &_cur_loc));
20362 set_yylval_node(NEW_RATIONAL(
strdup(tok(p)), base, seen_point, &_cur_loc));
20365 set_yylval_node(NEW_IMAGINARY(
strdup(tok(p)), base, seen_point, numeric_type, &_cur_loc));
20366 (void)numeric_type;
20369 rb_bug(
"unexpected token: %d",
type);
20371 SET_LEX_STATE(EXPR_END);
20375#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
20377parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
20379 if (has_delayed_token(p))
20380 dispatch_delayed_token(p, tSTRING_CONTENT);
20383 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
20384 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
20386 if (p->keep_tokens) {
20387 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pend - p->lex.ptok, p->enc);
20388 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
20389 parser_append_tokens(p, str, tHEREDOC_END, line);
20393 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
20398static enum yytokentype
20399here_document(
struct parser_params *p, rb_strterm_heredoc_t *here)
20401 int c, func, indent = 0;
20402 const char *eos, *ptr, *ptr_end;
20404 rb_parser_string_t *str = 0;
20405 rb_encoding *enc = p->enc;
20406 rb_encoding *base_enc = 0;
20412 eos = PARSER_STRING_PTR(here->lastline) + here->offset;
20413 len = here->length;
20414 indent = (func = here->func) & STR_FUNC_INDENT;
20416 if ((c = nextc(p)) == -1) {
20419 if (!has_delayed_token(p)) {
20420 dispatch_scan_event(p, tSTRING_CONTENT);
20422 else if (p->delayed.end_line + 1 == p->ruby_sourceline) {
20423 if ((
len = p->lex.pcur - p->lex.ptok) > 0) {
20424 if (!(func & STR_FUNC_REGEXP)) {
20428 rb_is_usascii_enc(p->enc) &&
20429 enc != rb_utf8_encoding()) {
20433 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
20435 dispatch_delayed_token(p, tSTRING_CONTENT);
20438 dispatch_delayed_token(p, tSTRING_CONTENT);
20439 dispatch_scan_event(p, tSTRING_CONTENT);
20443 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20444 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
20447 SET_LEX_STATE(EXPR_END);
20448 return tSTRING_END;
20454 else if (p->heredoc_line_indent == -1) {
20459 p->heredoc_line_indent = 0;
20461 else if (whole_match_p(p, eos,
len, indent)) {
20462 dispatch_heredoc_end(p);
20464 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20466 SET_LEX_STATE(EXPR_END);
20467 return tSTRING_END;
20470 if (!(func & STR_FUNC_EXPAND)) {
20472 ptr = PARSER_STRING_PTR(p->lex.lastline);
20473 ptr_end = p->lex.pend;
20474 if (ptr_end > ptr) {
20475 switch (ptr_end[-1]) {
20477 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
20486 if (p->heredoc_indent > 0) {
20488 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
20490 p->heredoc_line_indent = 0;
20494 parser_str_cat(str, ptr, ptr_end - ptr);
20496 str = rb_parser_encoding_string_new(p, ptr, ptr_end - ptr, enc);
20497 if (!lex_eol_ptr_p(p, ptr_end)) parser_str_cat_cstr(str,
"\n");
20499 if (p->heredoc_indent > 0) {
20502 if (nextc(p) == -1) {
20504 rb_parser_string_free(p, str);
20509 }
while (!whole_match_p(p, eos,
len, indent));
20515 enum yytokentype t = parser_peek_variable_name(p);
20516 if (p->heredoc_line_indent != -1) {
20517 if (p->heredoc_indent > p->heredoc_line_indent) {
20518 p->heredoc_indent = p->heredoc_line_indent;
20520 p->heredoc_line_indent = -1;
20529 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
20530 if (p->eofp)
goto error;
20534 if (c ==
'\\') p->heredoc_line_indent = -1;
20536 str = STR_NEW3(tok(p), toklen(p), enc, func);
20538 set_yylval_str(str);
20540 if (bol) nd_set_fl_newline(yylval.node);
20542 flush_string_content(p, enc, 0);
20543 return tSTRING_CONTENT;
20545 tokadd(p, nextc(p));
20546 if (p->heredoc_indent > 0) {
20551 if ((c = nextc(p)) == -1)
goto error;
20552 }
while (!whole_match_p(p, eos,
len, indent));
20553 str = STR_NEW3(tok(p), toklen(p), enc, func);
20555 dispatch_heredoc_end(p);
20556 heredoc_restore(p, &p->lex.strterm->u.heredoc);
20558 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
20561 s_value = p->s_value;
20563 set_yylval_str(str);
20565 set_parser_s_value(s_value);
20569 if (bol) nd_set_fl_newline(yylval.node);
20571 return tSTRING_CONTENT;
20581 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after '%c' operator", WARN_I(c));
20584 rb_warning1(
"ambiguous first argument; put parentheses or a space even after '%c' operator", WARN_I(c));
20597 switch (id_type(
id)) {
20601# define ERR(mesg) (yyerror0(mesg), Qtrue)
20603# define ERR(mesg) WARN_S(mesg)
20606 return ERR(
"formal argument cannot be a constant");
20608 return ERR(
"formal argument cannot be an instance variable");
20610 return ERR(
"formal argument cannot be a global variable");
20612 return ERR(
"formal argument cannot be a class variable");
20614 return ERR(
"formal argument must be local variable");
20617 shadowing_lvar(p,
id);
20625 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
20634 if (
len > 5 && name[nlen =
len - 5] ==
'-') {
20635 if (rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
20638 if (
len > 4 && name[nlen =
len - 4] ==
'-') {
20639 if (rb_memcicmp(name + nlen + 1,
"dos", 3) == 0)
20641 if (rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
20642 !(
len == 8 && rb_memcicmp(name,
"utf8-mac",
len) == 0))
20650parser_set_encode(
struct parser_params *p,
const char *name)
20656 const char *wrong = 0;
20658 case 'e':
case 'E': wrong =
"external";
break;
20659 case 'i':
case 'I': wrong =
"internal";
break;
20660 case 'f':
case 'F': wrong =
"filesystem";
break;
20661 case 'l':
case 'L': wrong =
"locale";
break;
20663 if (wrong &&
STRCASECMP(name, wrong) == 0)
goto unknown;
20664 idx = rb_enc_find_index(name);
20667 excargs[1] = rb_sprintf(
"unknown encoding name: %s", name);
20669 excargs[0] = rb_eArgError;
20671 rb_ary_unshift(excargs[2], rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
20672 VALUE exc = rb_make_exception(3, excargs);
20673 ruby_show_error_line(p, exc, &(YYLTYPE)RUBY_INIT_YYLLOC(), p->ruby_sourceline, p->lex.lastline);
20675 rb_ast_free(p->ast);
20680 enc = rb_enc_from_index(idx);
20681 if (!rb_enc_asciicompat(enc)) {
20682 excargs[1] = rb_sprintf(
"%s is not ASCII compatible", rb_enc_name(enc));
20687 if (p->debug_lines) {
20689 for (i = 0; i < p->debug_lines->len; i++) {
20690 rb_parser_enc_associate(p, p->debug_lines->data[i], enc);
20699 if (p->token_seen)
return false;
20700 return (p->line_count == (p->has_shebang ? 2 : 1));
20703typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
20704typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
20706static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
20709magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
20711 if (!comment_at_top(p)) {
20714 parser_set_encode(p, val);
20718parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
20721 case 't':
case 'T':
20726 case 'f':
case 'F':
20732 return parser_invalid_pragma_value(p, name, val);
20736parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
20738 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
20743parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
20745 int b = parser_get_bool(p, name, val);
20746 if (b >= 0) p->token_info_enabled = b;
20750parser_set_frozen_string_literal(
struct parser_params *p,
const char *name,
const char *val)
20754 if (p->token_seen) {
20755 rb_warning1(
"'%s' is ignored after any tokens", WARN_S(name));
20759 b = parser_get_bool(p, name, val);
20762 p->frozen_string_literal = b;
20766parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
20768 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
20769 if (*s ==
' ' || *s ==
'\t')
continue;
20770 if (*s ==
'#')
break;
20771 rb_warning1(
"'%s' is ignored unless in comment-only line", WARN_S(name));
20776 case 'n':
case 'N':
20778 p->ctxt.shareable_constant_value = rb_parser_shareable_none;
20782 case 'l':
case 'L':
20784 p->ctxt.shareable_constant_value = rb_parser_shareable_literal;
20788 case 'e':
case 'E':
20789 if (
STRCASECMP(val,
"experimental_copy") == 0) {
20790 p->ctxt.shareable_constant_value = rb_parser_shareable_copy;
20793 if (
STRCASECMP(val,
"experimental_everything") == 0) {
20794 p->ctxt.shareable_constant_value = rb_parser_shareable_everything;
20799 parser_invalid_pragma_value(p, name, val);
20802# if WARN_PAST_SCOPE
20804parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
20806 int b = parser_get_bool(p, name, val);
20807 if (b >= 0) p->past_scope_enabled = b;
20813 rb_magic_comment_setter_t func;
20814 rb_magic_comment_length_t length;
20818 {
"coding", magic_comment_encoding, parser_encode_length},
20819 {
"encoding", magic_comment_encoding, parser_encode_length},
20820 {
"frozen_string_literal", parser_set_frozen_string_literal},
20821 {
"shareable_constant_value", parser_set_shareable_constant_value},
20822 {
"warn_indent", parser_set_token_info},
20823# if WARN_PAST_SCOPE
20824 {
"warn_past_scope", parser_set_past_scope},
20829magic_comment_marker(
const char *str,
long len)
20836 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
20837 return str + i + 1;
20842 if (i + 1 >=
len)
return 0;
20843 if (str[i+1] !=
'-') {
20846 else if (str[i-1] !=
'-') {
20850 return str + i + 2;
20865 VALUE name = 0, val = 0;
20866 const char *beg, *end, *vbeg, *vend;
20867#define str_copy(_s, _p, _n) ((_s) \
20868 ? (void)(rb_str_resize((_s), (_n)), \
20869 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
20870 : (void)((_s) = STR_NEW((_p), (_n))))
20872 if (
len <= 7)
return FALSE;
20873 if (!!(beg = magic_comment_marker(str,
len))) {
20874 if (!(end = magic_comment_marker(beg, str +
len - beg)))
20878 len = end - beg - 3;
20888 for (;
len > 0 && *str; str++, --
len) {
20890 case '\'':
case '"':
case ':':
case ';':
20895 for (beg = str;
len > 0; str++, --
len) {
20897 case '\'':
case '"':
case ':':
case ';':
20908 if (!indicator)
return FALSE;
20912 do str++;
while (--
len > 0 &&
ISSPACE(*str));
20914 const char *tok_beg = str;
20916 for (vbeg = ++str; --
len > 0 && *str !=
'"'; str++) {
20917 if (*str ==
'\\') {
20929 for (vbeg = str;
len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --
len, str++);
20932 const char *tok_end = str;
20934 while (
len > 0 && (*str ==
';' ||
ISSPACE(*str))) --
len, str++;
20938 if (
len)
return FALSE;
20942 str_copy(name, beg, n);
20943 s = RSTRING_PTR(name);
20944 for (i = 0; i < n; ++i) {
20945 if (s[i] ==
'-') s[i] =
'_';
20948 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
20951 n = (*mc->length)(p, vbeg, n);
20953 str_copy(val, vbeg, n);
20954 p->lex.ptok = tok_beg;
20955 p->lex.pcur = tok_end;
20956 (*mc->func)(p, mc->name, RSTRING_PTR(val));
20959 }
while (++mc < magic_comments + numberof(magic_comments));
20961 str_copy(val, vbeg, vend - vbeg);
20970set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
20973 const char *beg = str;
20977 if (send - str <= 6)
return;
20979 case 'C':
case 'c': str += 6;
continue;
20980 case 'O':
case 'o': str += 5;
continue;
20981 case 'D':
case 'd': str += 4;
continue;
20982 case 'I':
case 'i': str += 3;
continue;
20983 case 'N':
case 'n': str += 2;
continue;
20984 case 'G':
case 'g': str += 1;
continue;
20985 case '=':
case ':':
20999 if (++str >= send)
return;
21002 if (*str !=
'=' && *str !=
':')
return;
21007 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
21008 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
21011 parser_set_encode(p, RSTRING_PTR(s));
21012 rb_str_resize(s, 0);
21018 int c = nextc0(p, FALSE);
21022 if (peek(p,
'!')) p->has_shebang = 1;
21025 if (!lex_eol_n_p(p, 2) &&
21026 (
unsigned char)p->lex.pcur[0] == 0xbb &&
21027 (
unsigned char)p->lex.pcur[1] == 0xbf) {
21031 if (p->debug_lines) {
21032 rb_parser_string_set_encoding(p->lex.lastline, p->enc);
21035 p->lex.pbeg = p->lex.pcur;
21044 p->enc = rb_parser_str_get_encoding(p->lex.lastline);
21048#define ambiguous_operator(tok, op, syn) ( \
21049 rb_warning0("'"op"' after local variable or literal is interpreted as binary operator"), \
21050 rb_warning0("even though it seems like "syn""))
21052#define ambiguous_operator(tok, op, syn) \
21053 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
21055#define warn_balanced(tok, op, syn) ((void) \
21056 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
21057 space_seen && !ISSPACE(c) && \
21058 (ambiguous_operator(tok, op, syn), 0)), \
21059 (enum yytokentype)(tok))
21061static enum yytokentype
21064 yyerror0(
"numeric literal without digits");
21065 if (peek(p,
'_')) nextc(p);
21067 return set_number_literal(p, tINTEGER, 0, 10, 0);
21070static enum yytokentype
21073 int is_float, seen_point, seen_e, nondigit;
21076 is_float = seen_point = seen_e = nondigit = 0;
21077 SET_LEX_STATE(EXPR_END);
21079 if (c ==
'-' || c ==
'+') {
21084 int start = toklen(p);
21086 if (c ==
'x' || c ==
'X') {
21092 if (nondigit)
break;
21099 }
while ((c = nextc(p)) != -1);
21103 if (toklen(p) == start) {
21104 return no_digits(p);
21106 else if (nondigit)
goto trailing_uc;
21107 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21108 return set_number_literal(p, tINTEGER, suffix, 16, 0);
21110 if (c ==
'b' || c ==
'B') {
21113 if (c ==
'0' || c ==
'1') {
21116 if (nondigit)
break;
21120 if (c !=
'0' && c !=
'1')
break;
21123 }
while ((c = nextc(p)) != -1);
21127 if (toklen(p) == start) {
21128 return no_digits(p);
21130 else if (nondigit)
goto trailing_uc;
21131 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21132 return set_number_literal(p, tINTEGER, suffix, 2, 0);
21134 if (c ==
'd' || c ==
'D') {
21140 if (nondigit)
break;
21147 }
while ((c = nextc(p)) != -1);
21151 if (toklen(p) == start) {
21152 return no_digits(p);
21154 else if (nondigit)
goto trailing_uc;
21155 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21156 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21162 if (c ==
'o' || c ==
'O') {
21165 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
21167 return no_digits(p);
21170 if (c >=
'0' && c <=
'7') {
21175 if (nondigit)
break;
21179 if (c <
'0' || c >
'9')
break;
21180 if (c >
'7')
goto invalid_octal;
21183 }
while ((c = nextc(p)) != -1);
21184 if (toklen(p) > start) {
21187 if (nondigit)
goto trailing_uc;
21188 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21189 return set_number_literal(p, tINTEGER, suffix, 8, 0);
21196 if (c >
'7' && c <=
'9') {
21198 yyerror0(
"Invalid octal digit");
21200 else if (c ==
'.' || c ==
'e' || c ==
'E') {
21206 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21207 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21213 case '0':
case '1':
case '2':
case '3':
case '4':
21214 case '5':
case '6':
case '7':
case '8':
case '9':
21220 if (nondigit)
goto trailing_uc;
21221 if (seen_point || seen_e) {
21226 if (c0 == -1 || !
ISDIGIT(c0)) {
21232 seen_point = toklen(p);
21251 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
21257 tokadd(p, nondigit);
21261 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
21265 if (nondigit)
goto decode_num;
21279 literal_flush(p, p->lex.pcur - 1);
21280 YYLTYPE loc = RUBY_INIT_YYLLOC();
21281 compile_error(p,
"trailing '%c' in number", nondigit);
21282 parser_show_error_line(p, &loc);
21286 enum yytokentype
type = tFLOAT;
21288 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
21289 if (suffix & NUM_SUFFIX_R) {
21294 if (
errno == ERANGE) {
21295 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
21299 return set_number_literal(p,
type, suffix, 0, seen_point);
21301 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
21302 return set_number_literal(p, tINTEGER, suffix, 10, 0);
21305static enum yytokentype
21310 rb_parser_string_t *lit;
21311 const char *start = p->lex.pcur;
21314 SET_LEX_STATE(EXPR_VALUE);
21319 compile_error(p,
"incomplete character syntax");
21322 if (rb_enc_isspace(c, p->enc)) {
21324 int c2 = escaped_control_code(c);
21326 WARN_SPACE_CHAR(c2,
"?");
21331 SET_LEX_STATE(EXPR_VALUE);
21336 int w = parser_precise_mbclen(p, start);
21337 if (is_identchar(p, start, p->lex.pend, p->enc) &&
21338 !(lex_eol_ptr_n_p(p, start, w) || !is_identchar(p, start + w, p->lex.pend, p->enc))) {
21340 const char *ptr = start;
21342 int n = parser_precise_mbclen(p, ptr);
21343 if (n < 0)
return -1;
21345 }
while (!lex_eol_ptr_p(p, ptr) && is_identchar(p, ptr, p->lex.pend, p->enc));
21346 rb_warn2(
"'?' just followed by '%.*s' is interpreted as" \
21347 " a conditional operator, put a space after '?'",
21348 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
21352 else if (c ==
'\\') {
21353 if (peek(p,
'u')) {
21356 tokadd_utf8(p, &enc, -1, 0, 0);
21358 else if (!ISASCII(c = peekc(p)) && c != -1) {
21360 if (tokadd_mbchar(p, c) == -1)
return 0;
21368 if (tokadd_mbchar(p, c) == -1)
return 0;
21371 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
21372 set_yylval_str(lit);
21373 SET_LEX_STATE(EXPR_END);
21377static enum yytokentype
21378parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
21381 const char *ptok = p->lex.pcur;
21389 if (c == -1)
goto unterminated;
21392 if (!ISASCII(c))
goto unknown;
21397 if (rb_enc_isalnum(term, p->enc) || !parser_isascii(p)) {
21400 c = parser_precise_mbclen(p, p->lex.pcur);
21401 if (c < 0)
return 0;
21403 yyerror0(
"unknown type of %string");
21409 compile_error(p,
"unterminated quoted string meets end of file");
21413 if (term ==
'(') term =
')';
21414 else if (term ==
'[') term =
']';
21415 else if (term ==
'{') term =
'}';
21416 else if (term ==
'<') term =
'>';
21419 p->lex.ptok = ptok-1;
21422 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
21423 return tSTRING_BEG;
21426 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
21427 return tSTRING_BEG;
21430 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21434 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21435 return tQWORDS_BEG;
21438 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
21439 return tSYMBOLS_BEG;
21442 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
21443 return tQSYMBOLS_BEG;
21446 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
21447 return tXSTRING_BEG;
21450 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
21451 return tREGEXP_BEG;
21454 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
21455 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
21459 yyerror0(
"unknown type of %string");
21463 if ((c = nextc(p)) ==
'=') {
21464 set_yylval_id(
'%');
21465 SET_LEX_STATE(EXPR_BEG);
21468 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
21471 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21473 return warn_balanced(
'%',
"%%",
"string literal");
21480 if (tokadd_mbchar(p, c) == -1)
return -1;
21482 }
while (parser_is_identchar(p));
21490 ID ident = TOK_INTERN();
21492 set_yylval_name(ident);
21502 unsigned long n = ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &
len, &overflow);
21503 const unsigned long nth_ref_max =
21508 if (overflow || n > nth_ref_max) {
21510 rb_warn1(
"'%s' is too big for a number variable, always nil", WARN_S(tok(p)));
21518static enum yytokentype
21519parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
21521 const char *ptr = p->lex.pcur;
21524 SET_LEX_STATE(EXPR_END);
21525 p->lex.ptok = ptr - 1;
21531 if (parser_is_identchar(p)) {
21563 if (parser_is_identchar(p)) {
21564 if (tokadd_mbchar(p, c) == -1)
return 0;
21579 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
21584 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
21587 case '1':
case '2':
case '3':
21588 case '4':
case '5':
case '6':
21589 case '7':
case '8':
case '9':
21594 }
while (c != -1 &&
ISDIGIT(c));
21596 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
21598 c = parse_numvar(p);
21599 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
21603 if (!parser_is_identchar(p)) {
21604 YYLTYPE loc = RUBY_INIT_YYLLOC();
21606 compile_error(p,
"'$' without identifiers is not allowed as a global variable name");
21610 compile_error(p,
"'$%c' is not allowed as a global variable name", c);
21612 parser_show_error_line(p, &loc);
21613 set_yylval_noname();
21621 if (tokadd_ident(p, c))
return 0;
21622 SET_LEX_STATE(EXPR_END);
21623 if (VALID_SYMNAME_P(tok(p), toklen(p), p->enc, ID_GLOBAL)) {
21627 compile_error(p,
"'%.*s' is not allowed as a global variable name", toklen(p), tok(p));
21628 set_yylval_noname();
21636 if (n < 0)
return false;
21638 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
21641 if (p->max_numparam == ORDINAL_PARAM) {
21642 compile_error(p,
"ordinary parameter is defined");
21645 struct vtable *args = p->lvtbl->args;
21646 if (p->max_numparam < n) {
21647 p->max_numparam = n;
21649 while (n > args->pos) {
21650 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
21655static enum yytokentype
21656parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
21658 const char *ptr = p->lex.pcur;
21659 enum yytokentype result = tIVAR;
21660 register int c = nextc(p);
21663 p->lex.ptok = ptr - 1;
21671 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
21672 if (c == -1 || !parser_is_identchar(p)) {
21674 RUBY_SET_YYLLOC(loc);
21675 if (result == tIVAR) {
21676 compile_error(p,
"'@' without identifiers is not allowed as an instance variable name");
21679 compile_error(p,
"'@@' without identifiers is not allowed as a class variable name");
21681 parser_show_error_line(p, &loc);
21682 set_yylval_noname();
21683 SET_LEX_STATE(EXPR_END);
21688 RUBY_SET_YYLLOC(loc);
21689 if (result == tIVAR) {
21690 compile_error(p,
"'@%c' is not allowed as an instance variable name", c);
21693 compile_error(p,
"'@@%c' is not allowed as a class variable name", c);
21695 parser_show_error_line(p, &loc);
21696 set_yylval_noname();
21697 SET_LEX_STATE(EXPR_END);
21701 if (tokadd_ident(p, c))
return 0;
21706static enum yytokentype
21709 enum yytokentype result;
21710 bool is_ascii =
true;
21711 const enum lex_state_e last_state = p->lex.state;
21713 int enforce_keyword_end = 0;
21716 if (!ISASCII(c)) is_ascii =
false;
21717 if (tokadd_mbchar(p, c) == -1)
return 0;
21719 }
while (parser_is_identchar(p));
21720 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
21724 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
21725 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
21726 result = tIDENTIFIER;
21730 result = tCONSTANT;
21735 if (IS_LABEL_POSSIBLE()) {
21736 if (IS_LABEL_SUFFIX(0)) {
21737 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
21745 if (peek_end_expect_token_locations(p)) {
21746 const rb_code_position_t *end_pos;
21747 int lineno, column;
21748 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
21750 end_pos = peek_end_expect_token_locations(p)->pos;
21751 lineno = end_pos->lineno;
21752 column = end_pos->column;
21755 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
21756 p->ruby_sourceline, beg_pos, lineno, column);
21759 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
21762 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
21763 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
21764 enforce_keyword_end = 1;
21770 if (is_ascii && (!IS_lex_state(EXPR_DOT) || enforce_keyword_end)) {
21774 kw = rb_reserved_word(tok(p), toklen(p));
21776 enum lex_state_e state = p->lex.state;
21777 if (IS_lex_state_for(state, EXPR_FNAME)) {
21778 SET_LEX_STATE(EXPR_ENDFN);
21779 set_yylval_name(rb_intern2(tok(p), toklen(p)));
21782 SET_LEX_STATE(kw->state);
21783 if (IS_lex_state(EXPR_BEG)) {
21784 p->command_start = TRUE;
21786 if (kw->id[0] == keyword_do) {
21787 if (lambda_beginning_p()) {
21788 p->lex.lpar_beg = -1;
21789 return keyword_do_LAMBDA;
21791 if (COND_P())
return keyword_do_cond;
21792 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
21793 return keyword_do_block;
21796 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
21799 if (kw->id[0] != kw->id[1])
21800 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
21806 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
21808 SET_LEX_STATE(EXPR_CMDARG);
21811 SET_LEX_STATE(EXPR_ARG);
21814 else if (p->lex.state == EXPR_FNAME) {
21815 SET_LEX_STATE(EXPR_ENDFN);
21818 SET_LEX_STATE(EXPR_END);
21821 ident = tokenize_ident(p);
21822 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
21823 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
21824 (result == tIDENTIFIER) &&
21825 (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
21826 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
21837 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
21841static enum yytokentype
21845 int space_seen = 0;
21848 enum lex_state_e last_state;
21849 int fallthru = FALSE;
21850 int token_seen = p->token_seen;
21852 if (p->lex.strterm) {
21853 if (strterm_is_heredoc(p->lex.strterm)) {
21855 return here_document(p, &p->lex.strterm->u.heredoc);
21859 return parse_string(p, &p->lex.strterm->u.literal);
21862 cmd_state = p->command_start;
21863 p->command_start = FALSE;
21864 p->token_seen = TRUE;
21869 last_state = p->lex.state;
21870 switch (c = nextc(p)) {
21877 if (p->end_expect_token_locations) {
21878 pop_end_expect_token_locations(p);
21879 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
21884 RUBY_SET_YYLLOC(*p->yylloc);
21885 return END_OF_INPUT;
21891 case ' ':
case '\t':
case '\f':
21894 while ((c = nextc(p))) {
21899 case ' ':
case '\t':
case '\f':
21908 dispatch_scan_event(p, tSP);
21915 p->token_seen = token_seen;
21916 const char *
const pcur = p->lex.pcur, *
const ptok = p->lex.ptok;
21918 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
21919 if (comment_at_top(p)) {
21920 set_file_encoding(p, p->lex.pcur, p->lex.pend);
21923 p->lex.pcur = pcur, p->lex.ptok = ptok;
21925 dispatch_scan_event(p, tCOMMENT);
21929 p->token_seen = token_seen;
21930 rb_parser_string_t *prevline = p->lex.lastline;
21931 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
21932 !IS_lex_state(EXPR_LABELED));
21933 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
21935 dispatch_scan_event(p, tIGNORED_NL);
21938 if (!c && p->ctxt.in_kwarg) {
21939 goto normal_newline;
21944 switch (c = nextc(p)) {
21945 case ' ':
case '\t':
case '\f':
case '\r':
21952 dispatch_scan_event(p, tSP);
21957 if (peek_word_at(p,
"nd", 2, 0))
goto leading_logical;
21960 if (peek_word_at(p,
"r", 1, 0))
goto leading_logical;
21963 if (peek(p,
'|'))
goto leading_logical;
21966 if (peek(p,
'&')) {
21969 dispatch_delayed_token(p, tIGNORED_NL);
21975 dispatch_delayed_token(p, tIGNORED_NL);
21976 if (peek(p,
'.') == (c ==
'&')) {
21978 dispatch_scan_event(p, tSP);
21984 p->ruby_sourceline--;
21985 p->lex.nextline = p->lex.lastline;
21986 set_lastline(p, prevline);
21988 if (c == -1 && space_seen) {
21989 dispatch_scan_event(p, tSP);
21994 RUBY_SET_YYLLOC(*p->yylloc);
21996 goto normal_newline;
22000 p->command_start = TRUE;
22001 SET_LEX_STATE(EXPR_BEG);
22005 if ((c = nextc(p)) ==
'*') {
22006 if ((c = nextc(p)) ==
'=') {
22007 set_yylval_id(idPow);
22008 SET_LEX_STATE(EXPR_BEG);
22012 if (IS_SPCARG(c)) {
22013 rb_warning0(
"'**' interpreted as argument prefix");
22016 else if (IS_BEG()) {
22020 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
22025 set_yylval_id(
'*');
22026 SET_LEX_STATE(EXPR_BEG);
22030 if (IS_SPCARG(c)) {
22031 rb_warning0(
"'*' interpreted as argument prefix");
22034 else if (IS_BEG()) {
22038 c = warn_balanced(
'*',
"*",
"argument prefix");
22041 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22046 if (IS_AFTER_OPERATOR()) {
22047 SET_LEX_STATE(EXPR_ARG);
22053 SET_LEX_STATE(EXPR_BEG);
22067 if (word_match_p(p,
"begin", 5)) {
22068 int first_p = TRUE;
22071 dispatch_scan_event(p, tEMBDOC_BEG);
22075 dispatch_scan_event(p, tEMBDOC);
22080 compile_error(p,
"embedded document meets end of file");
22081 return END_OF_INPUT;
22083 if (c ==
'=' && word_match_p(p,
"end", 3)) {
22089 dispatch_scan_event(p, tEMBDOC_END);
22094 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22095 if ((c = nextc(p)) ==
'=') {
22096 if ((c = nextc(p)) ==
'=') {
22105 else if (c ==
'>') {
22114 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
22116 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
22117 enum yytokentype token = heredoc_identifier(p);
22118 if (token)
return token < 0 ? 0 : token;
22120 if (IS_AFTER_OPERATOR()) {
22121 SET_LEX_STATE(EXPR_ARG);
22124 if (IS_lex_state(EXPR_CLASS))
22125 p->command_start = TRUE;
22126 SET_LEX_STATE(EXPR_BEG);
22129 if ((c = nextc(p)) ==
'>') {
22136 if ((c = nextc(p)) ==
'=') {
22137 set_yylval_id(idLTLT);
22138 SET_LEX_STATE(EXPR_BEG);
22142 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
22148 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22149 if ((c = nextc(p)) ==
'=') {
22153 if ((c = nextc(p)) ==
'=') {
22154 set_yylval_id(idGTGT);
22155 SET_LEX_STATE(EXPR_BEG);
22165 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22166 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
22167 p->lex.ptok = p->lex.pcur-1;
22168 return tSTRING_BEG;
22171 if (IS_lex_state(EXPR_FNAME)) {
22172 SET_LEX_STATE(EXPR_ENDFN);
22175 if (IS_lex_state(EXPR_DOT)) {
22177 SET_LEX_STATE(EXPR_CMDARG);
22179 SET_LEX_STATE(EXPR_ARG);
22182 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
22183 return tXSTRING_BEG;
22186 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
22187 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
22188 p->lex.ptok = p->lex.pcur-1;
22189 return tSTRING_BEG;
22192 return parse_qmark(p, space_seen);
22195 if ((c = nextc(p)) ==
'&') {
22196 SET_LEX_STATE(EXPR_BEG);
22197 if ((c = nextc(p)) ==
'=') {
22198 set_yylval_id(idANDOP);
22199 SET_LEX_STATE(EXPR_BEG);
22205 else if (c ==
'=') {
22206 set_yylval_id(
'&');
22207 SET_LEX_STATE(EXPR_BEG);
22210 else if (c ==
'.') {
22211 set_yylval_id(idANDDOT);
22212 SET_LEX_STATE(EXPR_DOT);
22216 if (IS_SPCARG(c)) {
22218 (c = peekc_n(p, 1)) == -1 ||
22219 !(c ==
'\'' || c ==
'"' ||
22220 is_identchar(p, (p->lex.pcur+1), p->lex.pend, p->enc))) {
22221 rb_warning0(
"'&' interpreted as argument prefix");
22225 else if (IS_BEG()) {
22229 c = warn_balanced(
'&',
"&",
"argument prefix");
22231 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22235 if ((c = nextc(p)) ==
'|') {
22236 SET_LEX_STATE(EXPR_BEG);
22237 if ((c = nextc(p)) ==
'=') {
22238 set_yylval_id(idOROP);
22239 SET_LEX_STATE(EXPR_BEG);
22243 if (IS_lex_state_for(last_state, EXPR_BEG)) {
22251 set_yylval_id(
'|');
22252 SET_LEX_STATE(EXPR_BEG);
22255 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
22261 if (IS_AFTER_OPERATOR()) {
22262 SET_LEX_STATE(EXPR_ARG);
22270 set_yylval_id(
'+');
22271 SET_LEX_STATE(EXPR_BEG);
22274 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
22275 SET_LEX_STATE(EXPR_BEG);
22278 return parse_numeric(p,
'+');
22282 SET_LEX_STATE(EXPR_BEG);
22284 return warn_balanced(
'+',
"+",
"unary operator");
22288 if (IS_AFTER_OPERATOR()) {
22289 SET_LEX_STATE(EXPR_ARG);
22297 set_yylval_id(
'-');
22298 SET_LEX_STATE(EXPR_BEG);
22302 SET_LEX_STATE(EXPR_ENDFN);
22303 yylval.num = p->lex.lpar_beg;
22304 p->lex.lpar_beg = p->lex.paren_nest;
22307 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
22308 SET_LEX_STATE(EXPR_BEG);
22311 return tUMINUS_NUM;
22315 SET_LEX_STATE(EXPR_BEG);
22317 return warn_balanced(
'-',
"-",
"unary operator");
22320 int is_beg = IS_BEG();
22321 SET_LEX_STATE(EXPR_BEG);
22322 if ((c = nextc(p)) ==
'.') {
22323 if ((c = nextc(p)) ==
'.') {
22324 if (p->ctxt.in_argdef || IS_LABEL_POSSIBLE()) {
22325 SET_LEX_STATE(EXPR_ENDARG);
22328 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
22329 rb_warn0(
"... at EOL, should be parenthesized?");
22331 return is_beg ? tBDOT3 : tDOT3;
22334 return is_beg ? tBDOT2 : tDOT2;
22338 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
22339 parse_numeric(p,
'.');
22341 yyerror0(
"unexpected fraction part after numeric literal");
22344 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
22346 SET_LEX_STATE(EXPR_END);
22347 p->lex.ptok = p->lex.pcur;
22350 set_yylval_id(
'.');
22351 SET_LEX_STATE(EXPR_DOT);
22355 case '0':
case '1':
case '2':
case '3':
case '4':
22356 case '5':
case '6':
case '7':
case '8':
case '9':
22357 return parse_numeric(p, c);
22362 SET_LEX_STATE(EXPR_ENDFN);
22363 p->lex.paren_nest--;
22369 SET_LEX_STATE(EXPR_END);
22370 p->lex.paren_nest--;
22375 if (!p->lex.brace_nest--)
return tSTRING_DEND;
22378 SET_LEX_STATE(EXPR_END);
22379 p->lex.paren_nest--;
22385 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
22386 SET_LEX_STATE(EXPR_BEG);
22389 set_yylval_id(idCOLON2);
22390 SET_LEX_STATE(EXPR_DOT);
22393 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
22395 c = warn_balanced(
':',
":",
"symbol literal");
22396 SET_LEX_STATE(EXPR_BEG);
22401 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
22404 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
22410 SET_LEX_STATE(EXPR_FNAME);
22415 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22416 return tREGEXP_BEG;
22418 if ((c = nextc(p)) ==
'=') {
22419 set_yylval_id(
'/');
22420 SET_LEX_STATE(EXPR_BEG);
22424 if (IS_SPCARG(c)) {
22425 arg_ambiguous(p,
'/');
22426 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
22427 return tREGEXP_BEG;
22429 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22430 return warn_balanced(
'/',
"/",
"regexp literal");
22433 if ((c = nextc(p)) ==
'=') {
22434 set_yylval_id(
'^');
22435 SET_LEX_STATE(EXPR_BEG);
22438 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
22443 SET_LEX_STATE(EXPR_BEG);
22444 p->command_start = TRUE;
22448 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22452 if (IS_AFTER_OPERATOR()) {
22453 if ((c = nextc(p)) !=
'@') {
22456 SET_LEX_STATE(EXPR_ARG);
22459 SET_LEX_STATE(EXPR_BEG);
22467 else if (!space_seen) {
22470 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
22473 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
22474 rb_warning0(
"parentheses after method name is interpreted as "
22475 "an argument list, not a decomposed argument");
22477 p->lex.paren_nest++;
22480 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22484 p->lex.paren_nest++;
22485 if (IS_AFTER_OPERATOR()) {
22486 if ((c = nextc(p)) ==
']') {
22487 p->lex.paren_nest--;
22488 SET_LEX_STATE(EXPR_ARG);
22489 if ((c = nextc(p)) ==
'=') {
22496 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
22499 else if (IS_BEG()) {
22502 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
22505 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22511 ++p->lex.brace_nest;
22512 if (lambda_beginning_p())
22514 else if (IS_lex_state(EXPR_LABELED))
22516 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
22518 else if (IS_lex_state(EXPR_ENDARG))
22522 if (c != tLBRACE) {
22523 p->command_start = TRUE;
22524 SET_LEX_STATE(EXPR_BEG);
22527 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
22529 ++p->lex.paren_nest;
22538 dispatch_scan_event(p, tSP);
22541 if (c ==
' ')
return tSP;
22547 return parse_percent(p, space_seen, last_state);
22550 return parse_gvar(p, last_state);
22553 return parse_atmark(p, last_state);
22556 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
22557 p->ruby__end__seen = 1;
22561 dispatch_scan_event(p, k__END__);
22563 return END_OF_INPUT;
22569 if (!parser_is_identchar(p)) {
22570 compile_error(p,
"Invalid char '\\x%02X' in expression", c);
22579 return parse_ident(p, c, cmd_state);
22582static enum yytokentype
22585 enum yytokentype t;
22589 p->yylloc = yylloc;
22591 t = parser_yylex(p);
22593 if (has_delayed_token(p))
22594 dispatch_delayed_token(p, t);
22595 else if (t != END_OF_INPUT)
22596 dispatch_scan_event(p, t);
22601#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
22604node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment)
22606 NODE *n = rb_ast_newnode(p->ast,
type, size, alignment);
22608 rb_node_init(n,
type);
22613nd_set_loc(NODE *nd,
const YYLTYPE *loc)
22616 nd_set_line(nd, loc->beg_pos.lineno);
22621node_newnode(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment,
const rb_code_location_t *loc)
22623 NODE *n = node_new_internal(p,
type, size, alignment);
22625 nd_set_loc(n, loc);
22626 nd_set_node_id(n, parser_get_node_id(p));
22630#define NODE_NEWNODE(node_type, type, loc) (type *)(node_newnode(p, node_type, sizeof(type), RUBY_ALIGNOF(type), loc))
22632static rb_node_scope_t *
22633rb_node_scope_new(
struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body, NODE *nd_parent,
const YYLTYPE *loc)
22635 rb_ast_id_table_t *nd_tbl;
22636 nd_tbl = local_tbl(p);
22637 rb_node_scope_t *n = NODE_NEWNODE(NODE_SCOPE, rb_node_scope_t, loc);
22638 n->nd_tbl = nd_tbl;
22639 n->nd_body = nd_body;
22640 n->nd_parent = nd_parent;
22641 n->nd_args = nd_args;
22646static rb_node_scope_t *
22647rb_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)
22649 rb_node_scope_t *n = NODE_NEWNODE(NODE_SCOPE, rb_node_scope_t, loc);
22650 n->nd_tbl = nd_tbl;
22651 n->nd_body = nd_body;
22652 n->nd_parent = nd_parent;
22653 n->nd_args = nd_args;
22658static rb_node_defn_t *
22659rb_node_defn_new(
struct parser_params *p,
ID nd_mid, NODE *nd_defn,
const YYLTYPE *loc)
22661 rb_node_defn_t *n = NODE_NEWNODE(NODE_DEFN, rb_node_defn_t, loc);
22662 n->nd_mid = nd_mid;
22663 n->nd_defn = nd_defn;
22668static rb_node_defs_t *
22669rb_node_defs_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_defn,
const YYLTYPE *loc)
22671 rb_node_defs_t *n = NODE_NEWNODE(NODE_DEFS, rb_node_defs_t, loc);
22672 n->nd_recv = nd_recv;
22673 n->nd_mid = nd_mid;
22674 n->nd_defn = nd_defn;
22679static rb_node_block_t *
22680rb_node_block_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc)
22682 rb_node_block_t *n = NODE_NEWNODE(NODE_BLOCK, rb_node_block_t, loc);
22683 n->nd_head = nd_head;
22684 n->nd_end = (NODE *)n;
22690static rb_node_for_t *
22691rb_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)
22693 rb_node_for_t *n = NODE_NEWNODE(NODE_FOR, rb_node_for_t, loc);
22694 n->nd_body = nd_body;
22695 n->nd_iter = nd_iter;
22696 n->for_keyword_loc = *for_keyword_loc;
22697 n->in_keyword_loc = *in_keyword_loc;
22698 n->do_keyword_loc = *do_keyword_loc;
22699 n->end_keyword_loc = *end_keyword_loc;
22704static rb_node_for_masgn_t *
22705rb_node_for_masgn_new(
struct parser_params *p, NODE *nd_var,
const YYLTYPE *loc)
22707 rb_node_for_masgn_t *n = NODE_NEWNODE(NODE_FOR_MASGN, rb_node_for_masgn_t, loc);
22708 n->nd_var = nd_var;
22713static rb_node_retry_t *
22714rb_node_retry_new(
struct parser_params *p,
const YYLTYPE *loc)
22716 rb_node_retry_t *n = NODE_NEWNODE(NODE_RETRY, rb_node_retry_t, loc);
22721static rb_node_begin_t *
22722rb_node_begin_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc)
22724 rb_node_begin_t *n = NODE_NEWNODE(NODE_BEGIN, rb_node_begin_t, loc);
22725 n->nd_body = nd_body;
22730static rb_node_rescue_t *
22731rb_node_rescue_new(
struct parser_params *p, NODE *nd_head, NODE *nd_resq, NODE *nd_else,
const YYLTYPE *loc)
22733 rb_node_rescue_t *n = NODE_NEWNODE(NODE_RESCUE, rb_node_rescue_t, loc);
22734 n->nd_head = nd_head;
22735 n->nd_resq = nd_resq;
22736 n->nd_else = nd_else;
22741static rb_node_resbody_t *
22742rb_node_resbody_new(
struct parser_params *p, NODE *nd_args, NODE *nd_exc_var, NODE *nd_body, NODE *nd_next,
const YYLTYPE *loc)
22744 rb_node_resbody_t *n = NODE_NEWNODE(NODE_RESBODY, rb_node_resbody_t, loc);
22745 n->nd_args = nd_args;
22746 n->nd_exc_var = nd_exc_var;
22747 n->nd_body = nd_body;
22748 n->nd_next = nd_next;
22753static rb_node_ensure_t *
22754rb_node_ensure_new(
struct parser_params *p, NODE *nd_head, NODE *nd_ensr,
const YYLTYPE *loc)
22756 rb_node_ensure_t *n = NODE_NEWNODE(NODE_ENSURE, rb_node_ensure_t, loc);
22757 n->nd_head = nd_head;
22758 n->nd_ensr = nd_ensr;
22764rb_node_and_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
22767 n->nd_1st = nd_1st;
22768 n->nd_2nd = nd_2nd;
22769 n->operator_loc = *operator_loc;
22774static rb_node_or_t *
22775rb_node_or_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
22777 rb_node_or_t *n = NODE_NEWNODE(NODE_OR, rb_node_or_t, loc);
22778 n->nd_1st = nd_1st;
22779 n->nd_2nd = nd_2nd;
22780 n->operator_loc = *operator_loc;
22785static rb_node_return_t *
22786rb_node_return_new(
struct parser_params *p, NODE *nd_stts,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
22788 rb_node_return_t *n = NODE_NEWNODE(NODE_RETURN, rb_node_return_t, loc);
22789 n->nd_stts = nd_stts;
22790 n->keyword_loc = *keyword_loc;
22794static rb_node_yield_t *
22795rb_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)
22797 if (nd_head) no_blockarg(p, nd_head);
22799 rb_node_yield_t *n = NODE_NEWNODE(NODE_YIELD, rb_node_yield_t, loc);
22800 n->nd_head = nd_head;
22801 n->keyword_loc = *keyword_loc;
22802 n->lparen_loc = *lparen_loc;
22803 n->rparen_loc = *rparen_loc;
22808static rb_node_if_t *
22809rb_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)
22811 rb_node_if_t *n = NODE_NEWNODE(NODE_IF, rb_node_if_t, loc);
22812 n->nd_cond = nd_cond;
22813 n->nd_body = nd_body;
22814 n->nd_else = nd_else;
22815 n->if_keyword_loc = *if_keyword_loc;
22816 n->then_keyword_loc = *then_keyword_loc;
22817 n->end_keyword_loc = *end_keyword_loc;
22822static rb_node_unless_t *
22823rb_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)
22825 rb_node_unless_t *n = NODE_NEWNODE(NODE_UNLESS, rb_node_unless_t, loc);
22826 n->nd_cond = nd_cond;
22827 n->nd_body = nd_body;
22828 n->nd_else = nd_else;
22829 n->keyword_loc = *keyword_loc;
22830 n->then_keyword_loc = *then_keyword_loc;
22831 n->end_keyword_loc = *end_keyword_loc;
22836static rb_node_class_t *
22837rb_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)
22840 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
22841 rb_node_class_t *n = NODE_NEWNODE(NODE_CLASS, rb_node_class_t, loc);
22842 RNODE_SCOPE(scope)->nd_parent = &n->node;
22843 n->nd_cpath = nd_cpath;
22844 n->nd_body = scope;
22845 n->nd_super = nd_super;
22846 n->class_keyword_loc = *class_keyword_loc;
22847 n->inheritance_operator_loc = *inheritance_operator_loc;
22848 n->end_keyword_loc = *end_keyword_loc;
22853static rb_node_sclass_t *
22854rb_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)
22857 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
22858 rb_node_sclass_t *n = NODE_NEWNODE(NODE_SCLASS, rb_node_sclass_t, loc);
22859 RNODE_SCOPE(scope)->nd_parent = &n->node;
22860 n->nd_recv = nd_recv;
22861 n->nd_body = scope;
22862 n->class_keyword_loc = *class_keyword_loc;
22863 n->operator_loc = *operator_loc;
22864 n->end_keyword_loc = *end_keyword_loc;
22869static rb_node_module_t *
22870rb_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)
22873 NODE *scope = NEW_SCOPE(0, nd_body, NULL, loc);
22874 rb_node_module_t *n = NODE_NEWNODE(NODE_MODULE, rb_node_module_t, loc);
22875 RNODE_SCOPE(scope)->nd_parent = &n->node;
22876 n->nd_cpath = nd_cpath;
22877 n->nd_body = scope;
22878 n->module_keyword_loc = *module_keyword_loc;
22879 n->end_keyword_loc = *end_keyword_loc;
22884static rb_node_iter_t *
22885rb_node_iter_new(
struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body,
const YYLTYPE *loc)
22888 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
22889 rb_node_iter_t *n = NODE_NEWNODE(NODE_ITER, rb_node_iter_t, loc);
22890 RNODE_SCOPE(scope)->nd_parent = &n->node;
22891 n->nd_body = scope;
22897static rb_node_lambda_t *
22898rb_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)
22901 NODE *scope = NEW_SCOPE(nd_args, nd_body, NULL, loc);
22902 YYLTYPE lambda_loc = code_loc_gen(operator_loc, closing_loc);
22903 rb_node_lambda_t *n = NODE_NEWNODE(NODE_LAMBDA, rb_node_lambda_t, &lambda_loc);
22904 RNODE_SCOPE(scope)->nd_parent = &n->node;
22905 n->nd_body = scope;
22906 n->operator_loc = *operator_loc;
22907 n->opening_loc = *opening_loc;
22908 n->closing_loc = *closing_loc;
22913static rb_node_case_t *
22914rb_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)
22916 rb_node_case_t *n = NODE_NEWNODE(NODE_CASE, rb_node_case_t, loc);
22917 n->nd_head = nd_head;
22918 n->nd_body = nd_body;
22919 n->case_keyword_loc = *case_keyword_loc;
22920 n->end_keyword_loc = *end_keyword_loc;
22925static rb_node_case2_t *
22926rb_node_case2_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *case_keyword_loc,
const YYLTYPE *end_keyword_loc)
22928 rb_node_case2_t *n = NODE_NEWNODE(NODE_CASE2, rb_node_case2_t, loc);
22930 n->nd_body = nd_body;
22931 n->case_keyword_loc = *case_keyword_loc;
22932 n->end_keyword_loc = *end_keyword_loc;
22937static rb_node_case3_t *
22938rb_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)
22940 rb_node_case3_t *n = NODE_NEWNODE(NODE_CASE3, rb_node_case3_t, loc);
22941 n->nd_head = nd_head;
22942 n->nd_body = nd_body;
22943 n->case_keyword_loc = *case_keyword_loc;
22944 n->end_keyword_loc = *end_keyword_loc;
22949static rb_node_when_t *
22950rb_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)
22952 rb_node_when_t *n = NODE_NEWNODE(NODE_WHEN, rb_node_when_t, loc);
22953 n->nd_head = nd_head;
22954 n->nd_body = nd_body;
22955 n->nd_next = nd_next;
22956 n->keyword_loc = *keyword_loc;
22957 n->then_keyword_loc = *then_keyword_loc;
22962static rb_node_in_t *
22963rb_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)
22965 rb_node_in_t *n = NODE_NEWNODE(NODE_IN, rb_node_in_t, loc);
22966 n->nd_head = nd_head;
22967 n->nd_body = nd_body;
22968 n->nd_next = nd_next;
22969 n->in_keyword_loc = *in_keyword_loc;
22970 n->then_keyword_loc = *then_keyword_loc;
22971 n->operator_loc = *operator_loc;
22976static rb_node_while_t *
22977rb_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)
22979 rb_node_while_t *n = NODE_NEWNODE(NODE_WHILE, rb_node_while_t, loc);
22980 n->nd_cond = nd_cond;
22981 n->nd_body = nd_body;
22982 n->nd_state = nd_state;
22983 n->keyword_loc = *keyword_loc;
22984 n->closing_loc = *closing_loc;
22989static rb_node_until_t *
22990rb_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)
22992 rb_node_until_t *n = NODE_NEWNODE(NODE_UNTIL, rb_node_until_t, loc);
22993 n->nd_cond = nd_cond;
22994 n->nd_body = nd_body;
22995 n->nd_state = nd_state;
22996 n->keyword_loc = *keyword_loc;
22997 n->closing_loc = *closing_loc;
23002static rb_node_colon2_t *
23003rb_node_colon2_new(
struct parser_params *p, NODE *nd_head,
ID nd_mid,
const YYLTYPE *loc,
const YYLTYPE *delimiter_loc,
const YYLTYPE *name_loc)
23005 rb_node_colon2_t *n = NODE_NEWNODE(NODE_COLON2, rb_node_colon2_t, loc);
23006 n->nd_head = nd_head;
23007 n->nd_mid = nd_mid;
23008 n->delimiter_loc = *delimiter_loc;
23009 n->name_loc = *name_loc;
23014static rb_node_colon3_t *
23015rb_node_colon3_new(
struct parser_params *p,
ID nd_mid,
const YYLTYPE *loc,
const YYLTYPE *delimiter_loc,
const YYLTYPE *name_loc)
23017 rb_node_colon3_t *n = NODE_NEWNODE(NODE_COLON3, rb_node_colon3_t, loc);
23018 n->nd_mid = nd_mid;
23019 n->delimiter_loc = *delimiter_loc;
23020 n->name_loc = *name_loc;
23025static rb_node_dot2_t *
23026rb_node_dot2_new(
struct parser_params *p, NODE *nd_beg, NODE *nd_end,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
23028 rb_node_dot2_t *n = NODE_NEWNODE(NODE_DOT2, rb_node_dot2_t, loc);
23029 n->nd_beg = nd_beg;
23030 n->nd_end = nd_end;
23031 n->operator_loc = *operator_loc;
23036static rb_node_dot3_t *
23037rb_node_dot3_new(
struct parser_params *p, NODE *nd_beg, NODE *nd_end,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
23039 rb_node_dot3_t *n = NODE_NEWNODE(NODE_DOT3, rb_node_dot3_t, loc);
23040 n->nd_beg = nd_beg;
23041 n->nd_end = nd_end;
23042 n->operator_loc = *operator_loc;
23047static rb_node_self_t *
23048rb_node_self_new(
struct parser_params *p,
const YYLTYPE *loc)
23050 rb_node_self_t *n = NODE_NEWNODE(NODE_SELF, rb_node_self_t, loc);
23056static rb_node_nil_t *
23057rb_node_nil_new(
struct parser_params *p,
const YYLTYPE *loc)
23059 rb_node_nil_t *n = NODE_NEWNODE(NODE_NIL, rb_node_nil_t, loc);
23064static rb_node_true_t *
23065rb_node_true_new(
struct parser_params *p,
const YYLTYPE *loc)
23067 rb_node_true_t *n = NODE_NEWNODE(NODE_TRUE, rb_node_true_t, loc);
23072static rb_node_false_t *
23073rb_node_false_new(
struct parser_params *p,
const YYLTYPE *loc)
23075 rb_node_false_t *n = NODE_NEWNODE(NODE_FALSE, rb_node_false_t, loc);
23080static rb_node_super_t *
23081rb_node_super_new(
struct parser_params *p, NODE *nd_args,
const YYLTYPE *loc,
23082 const YYLTYPE *keyword_loc,
const YYLTYPE *lparen_loc,
const YYLTYPE *rparen_loc)
23084 rb_node_super_t *n = NODE_NEWNODE(NODE_SUPER, rb_node_super_t, loc);
23085 n->nd_args = nd_args;
23086 n->keyword_loc = *keyword_loc;
23087 n->lparen_loc = *lparen_loc;
23088 n->rparen_loc = *rparen_loc;
23093static rb_node_zsuper_t *
23094rb_node_zsuper_new(
struct parser_params *p,
const YYLTYPE *loc)
23096 rb_node_zsuper_t *n = NODE_NEWNODE(NODE_ZSUPER, rb_node_zsuper_t, loc);
23101static rb_node_match2_t *
23102rb_node_match2_new(
struct parser_params *p, NODE *nd_recv, NODE *nd_value,
const YYLTYPE *loc)
23104 rb_node_match2_t *n = NODE_NEWNODE(NODE_MATCH2, rb_node_match2_t, loc);
23105 n->nd_recv = nd_recv;
23106 n->nd_value = nd_value;
23112static rb_node_match3_t *
23113rb_node_match3_new(
struct parser_params *p, NODE *nd_recv, NODE *nd_value,
const YYLTYPE *loc)
23115 rb_node_match3_t *n = NODE_NEWNODE(NODE_MATCH3, rb_node_match3_t, loc);
23116 n->nd_recv = nd_recv;
23117 n->nd_value = nd_value;
23123static rb_node_list_t *
23124rb_node_list_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc)
23126 rb_node_list_t *n = NODE_NEWNODE(NODE_LIST, rb_node_list_t, loc);
23127 n->nd_head = nd_head;
23134static rb_node_list_t *
23135rb_node_list_new2(
struct parser_params *p, NODE *nd_head,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc)
23137 rb_node_list_t *n = NODE_NEWNODE(NODE_LIST, rb_node_list_t, loc);
23138 n->nd_head = nd_head;
23139 n->as.nd_alen = nd_alen;
23140 n->nd_next = nd_next;
23145static rb_node_zlist_t *
23146rb_node_zlist_new(
struct parser_params *p,
const YYLTYPE *loc)
23148 rb_node_zlist_t *n = NODE_NEWNODE(NODE_ZLIST, rb_node_zlist_t, loc);
23153static rb_node_hash_t *
23154rb_node_hash_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc)
23156 rb_node_hash_t *n = NODE_NEWNODE(NODE_HASH, rb_node_hash_t, loc);
23157 n->nd_head = nd_head;
23163static rb_node_masgn_t *
23164rb_node_masgn_new(
struct parser_params *p, NODE *nd_head, NODE *nd_args,
const YYLTYPE *loc)
23166 rb_node_masgn_t *n = NODE_NEWNODE(NODE_MASGN, rb_node_masgn_t, loc);
23167 n->nd_head = nd_head;
23169 n->nd_args = nd_args;
23174static rb_node_gasgn_t *
23175rb_node_gasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc)
23177 rb_node_gasgn_t *n = NODE_NEWNODE(NODE_GASGN, rb_node_gasgn_t, loc);
23178 n->nd_vid = nd_vid;
23179 n->nd_value = nd_value;
23184static rb_node_lasgn_t *
23185rb_node_lasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc)
23187 rb_node_lasgn_t *n = NODE_NEWNODE(NODE_LASGN, rb_node_lasgn_t, loc);
23188 n->nd_vid = nd_vid;
23189 n->nd_value = nd_value;
23194static rb_node_dasgn_t *
23195rb_node_dasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc)
23197 rb_node_dasgn_t *n = NODE_NEWNODE(NODE_DASGN, rb_node_dasgn_t, loc);
23198 n->nd_vid = nd_vid;
23199 n->nd_value = nd_value;
23204static rb_node_iasgn_t *
23205rb_node_iasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc)
23207 rb_node_iasgn_t *n = NODE_NEWNODE(NODE_IASGN, rb_node_iasgn_t, loc);
23208 n->nd_vid = nd_vid;
23209 n->nd_value = nd_value;
23214static rb_node_cvasgn_t *
23215rb_node_cvasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc)
23217 rb_node_cvasgn_t *n = NODE_NEWNODE(NODE_CVASGN, rb_node_cvasgn_t, loc);
23218 n->nd_vid = nd_vid;
23219 n->nd_value = nd_value;
23224static rb_node_op_asgn1_t *
23225rb_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)
23227 rb_node_op_asgn1_t *n = NODE_NEWNODE(NODE_OP_ASGN1, rb_node_op_asgn1_t, loc);
23228 n->nd_recv = nd_recv;
23229 n->nd_mid = nd_mid;
23230 n->nd_index = index;
23231 n->nd_rvalue = rvalue;
23232 n->call_operator_loc = *call_operator_loc;
23233 n->opening_loc = *opening_loc;
23234 n->closing_loc = *closing_loc;
23235 n->binary_operator_loc = *binary_operator_loc;
23240static rb_node_op_asgn2_t *
23241rb_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)
23243 rb_node_op_asgn2_t *n = NODE_NEWNODE(NODE_OP_ASGN2, rb_node_op_asgn2_t, loc);
23244 n->nd_recv = nd_recv;
23245 n->nd_value = nd_value;
23246 n->nd_vid = nd_vid;
23247 n->nd_mid = nd_mid;
23248 n->nd_aid = nd_aid;
23249 n->call_operator_loc = *call_operator_loc;
23250 n->message_loc = *message_loc;
23251 n->binary_operator_loc = *binary_operator_loc;
23256static rb_node_op_asgn_or_t *
23257rb_node_op_asgn_or_new(
struct parser_params *p, NODE *nd_head, NODE *nd_value,
const YYLTYPE *loc)
23259 rb_node_op_asgn_or_t *n = NODE_NEWNODE(NODE_OP_ASGN_OR, rb_node_op_asgn_or_t, loc);
23260 n->nd_head = nd_head;
23261 n->nd_value = nd_value;
23266static rb_node_op_asgn_and_t *
23267rb_node_op_asgn_and_new(
struct parser_params *p, NODE *nd_head, NODE *nd_value,
const YYLTYPE *loc)
23269 rb_node_op_asgn_and_t *n = NODE_NEWNODE(NODE_OP_ASGN_AND, rb_node_op_asgn_and_t, loc);
23270 n->nd_head = nd_head;
23271 n->nd_value = nd_value;
23276static rb_node_gvar_t *
23277rb_node_gvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
23279 rb_node_gvar_t *n = NODE_NEWNODE(NODE_GVAR, rb_node_gvar_t, loc);
23280 n->nd_vid = nd_vid;
23285static rb_node_lvar_t *
23286rb_node_lvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
23288 rb_node_lvar_t *n = NODE_NEWNODE(NODE_LVAR, rb_node_lvar_t, loc);
23289 n->nd_vid = nd_vid;
23294static rb_node_dvar_t *
23295rb_node_dvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
23297 rb_node_dvar_t *n = NODE_NEWNODE(NODE_DVAR, rb_node_dvar_t, loc);
23298 n->nd_vid = nd_vid;
23303static rb_node_ivar_t *
23304rb_node_ivar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
23306 rb_node_ivar_t *n = NODE_NEWNODE(NODE_IVAR, rb_node_ivar_t, loc);
23307 n->nd_vid = nd_vid;
23312static rb_node_const_t *
23313rb_node_const_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
23315 rb_node_const_t *n = NODE_NEWNODE(NODE_CONST, rb_node_const_t, loc);
23316 n->nd_vid = nd_vid;
23321static rb_node_cvar_t *
23322rb_node_cvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
23324 rb_node_cvar_t *n = NODE_NEWNODE(NODE_CVAR, rb_node_cvar_t, loc);
23325 n->nd_vid = nd_vid;
23330static rb_node_nth_ref_t *
23331rb_node_nth_ref_new(
struct parser_params *p,
long nd_nth,
const YYLTYPE *loc)
23333 rb_node_nth_ref_t *n = NODE_NEWNODE(NODE_NTH_REF, rb_node_nth_ref_t, loc);
23334 n->nd_nth = nd_nth;
23339static rb_node_back_ref_t *
23340rb_node_back_ref_new(
struct parser_params *p,
long nd_nth,
const YYLTYPE *loc)
23342 rb_node_back_ref_t *n = NODE_NEWNODE(NODE_BACK_REF, rb_node_back_ref_t, loc);
23343 n->nd_nth = nd_nth;
23348static rb_node_integer_t *
23349rb_node_integer_new(
struct parser_params *p,
char* val,
int base,
const YYLTYPE *loc)
23351 rb_node_integer_t *n = NODE_NEWNODE(NODE_INTEGER, rb_node_integer_t, loc);
23359static rb_node_float_t *
23360rb_node_float_new(
struct parser_params *p,
char* val,
const YYLTYPE *loc)
23362 rb_node_float_t *n = NODE_NEWNODE(NODE_FLOAT, rb_node_float_t, loc);
23369static rb_node_rational_t *
23370rb_node_rational_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
const YYLTYPE *loc)
23372 rb_node_rational_t *n = NODE_NEWNODE(NODE_RATIONAL, rb_node_rational_t, loc);
23376 n->seen_point = seen_point;
23381static rb_node_imaginary_t *
23382rb_node_imaginary_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
enum rb_numeric_type numeric_type,
const YYLTYPE *loc)
23384 rb_node_imaginary_t *n = NODE_NEWNODE(NODE_IMAGINARY, rb_node_imaginary_t, loc);
23388 n->seen_point = seen_point;
23389 n->type = numeric_type;
23394static rb_node_str_t *
23395rb_node_str_new(
struct parser_params *p, rb_parser_string_t *
string,
const YYLTYPE *loc)
23397 rb_node_str_t *n = NODE_NEWNODE(NODE_STR, rb_node_str_t, loc);
23398 n->string = string;
23404static rb_node_dstr_t *
23405rb_node_dstr_new0(
struct parser_params *p, rb_parser_string_t *
string,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc)
23407 rb_node_dstr_t *n = NODE_NEWNODE(NODE_DSTR, rb_node_dstr_t, loc);
23408 n->string = string;
23409 n->as.nd_alen = nd_alen;
23410 n->nd_next = (rb_node_list_t *)nd_next;
23415static rb_node_dstr_t *
23416rb_node_dstr_new(
struct parser_params *p, rb_parser_string_t *
string,
const YYLTYPE *loc)
23418 return rb_node_dstr_new0(p,
string, 1, 0, loc);
23421static rb_node_xstr_t *
23422rb_node_xstr_new(
struct parser_params *p, rb_parser_string_t *
string,
const YYLTYPE *loc)
23424 rb_node_xstr_t *n = NODE_NEWNODE(NODE_XSTR, rb_node_xstr_t, loc);
23425 n->string = string;
23430static rb_node_dxstr_t *
23431rb_node_dxstr_new(
struct parser_params *p, rb_parser_string_t *
string,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc)
23433 rb_node_dxstr_t *n = NODE_NEWNODE(NODE_DXSTR, rb_node_dxstr_t, loc);
23434 n->string = string;
23435 n->as.nd_alen = nd_alen;
23436 n->nd_next = (rb_node_list_t *)nd_next;
23441static rb_node_sym_t *
23444 rb_node_sym_t *n = NODE_NEWNODE(NODE_SYM, rb_node_sym_t, loc);
23445 n->string = rb_str_to_parser_string(p, str);
23450static rb_node_dsym_t *
23451rb_node_dsym_new(
struct parser_params *p, rb_parser_string_t *
string,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc)
23453 rb_node_dsym_t *n = NODE_NEWNODE(NODE_DSYM, rb_node_dsym_t, loc);
23454 n->string = string;
23455 n->as.nd_alen = nd_alen;
23456 n->nd_next = (rb_node_list_t *)nd_next;
23461static rb_node_evstr_t *
23462rb_node_evstr_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *opening_loc,
const YYLTYPE *closing_loc)
23464 rb_node_evstr_t *n = NODE_NEWNODE(NODE_EVSTR, rb_node_evstr_t, loc);
23465 n->nd_body = nd_body;
23466 n->opening_loc = *opening_loc;
23467 n->closing_loc = *closing_loc;
23472static rb_node_regx_t *
23473rb_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)
23475 rb_node_regx_t *n = NODE_NEWNODE(NODE_REGX, rb_node_regx_t, loc);
23476 n->string = string;
23477 n->options = options & RE_OPTION_MASK;
23478 n->opening_loc = *opening_loc;
23479 n->content_loc = *content_loc;
23480 n->closing_loc = *closing_loc;
23485static rb_node_call_t *
23486rb_node_call_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc)
23488 rb_node_call_t *n = NODE_NEWNODE(NODE_CALL, rb_node_call_t, loc);
23489 n->nd_recv = nd_recv;
23490 n->nd_mid = nd_mid;
23491 n->nd_args = nd_args;
23496static rb_node_opcall_t *
23497rb_node_opcall_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc)
23499 rb_node_opcall_t *n = NODE_NEWNODE(NODE_OPCALL, rb_node_opcall_t, loc);
23500 n->nd_recv = nd_recv;
23501 n->nd_mid = nd_mid;
23502 n->nd_args = nd_args;
23507static rb_node_fcall_t *
23508rb_node_fcall_new(
struct parser_params *p,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc)
23510 rb_node_fcall_t *n = NODE_NEWNODE(NODE_FCALL, rb_node_fcall_t, loc);
23511 n->nd_mid = nd_mid;
23512 n->nd_args = nd_args;
23517static rb_node_qcall_t *
23518rb_node_qcall_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc)
23520 rb_node_qcall_t *n = NODE_NEWNODE(NODE_QCALL, rb_node_qcall_t, loc);
23521 n->nd_recv = nd_recv;
23522 n->nd_mid = nd_mid;
23523 n->nd_args = nd_args;
23528static rb_node_vcall_t *
23529rb_node_vcall_new(
struct parser_params *p,
ID nd_mid,
const YYLTYPE *loc)
23531 rb_node_vcall_t *n = NODE_NEWNODE(NODE_VCALL, rb_node_vcall_t, loc);
23532 n->nd_mid = nd_mid;
23537static rb_node_once_t *
23538rb_node_once_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc)
23540 rb_node_once_t *n = NODE_NEWNODE(NODE_ONCE, rb_node_once_t, loc);
23541 n->nd_body = nd_body;
23546static rb_node_args_t *
23547rb_node_args_new(
struct parser_params *p,
const YYLTYPE *loc)
23549 rb_node_args_t *n = NODE_NEWNODE(NODE_ARGS, rb_node_args_t, loc);
23555static rb_node_args_aux_t *
23556rb_node_args_aux_new(
struct parser_params *p,
ID nd_pid,
int nd_plen,
const YYLTYPE *loc)
23558 rb_node_args_aux_t *n = NODE_NEWNODE(NODE_ARGS_AUX, rb_node_args_aux_t, loc);
23559 n->nd_pid = nd_pid;
23560 n->nd_plen = nd_plen;
23566static rb_node_opt_arg_t *
23567rb_node_opt_arg_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc)
23569 rb_node_opt_arg_t *n = NODE_NEWNODE(NODE_OPT_ARG, rb_node_opt_arg_t, loc);
23570 n->nd_body = nd_body;
23576static rb_node_kw_arg_t *
23577rb_node_kw_arg_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc)
23579 rb_node_kw_arg_t *n = NODE_NEWNODE(NODE_KW_ARG, rb_node_kw_arg_t, loc);
23580 n->nd_body = nd_body;
23586static rb_node_postarg_t *
23587rb_node_postarg_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc)
23589 rb_node_postarg_t *n = NODE_NEWNODE(NODE_POSTARG, rb_node_postarg_t, loc);
23590 n->nd_1st = nd_1st;
23591 n->nd_2nd = nd_2nd;
23596static rb_node_argscat_t *
23597rb_node_argscat_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body,
const YYLTYPE *loc)
23599 rb_node_argscat_t *n = NODE_NEWNODE(NODE_ARGSCAT, rb_node_argscat_t, loc);
23600 n->nd_head = nd_head;
23601 n->nd_body = nd_body;
23606static rb_node_argspush_t *
23607rb_node_argspush_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body,
const YYLTYPE *loc)
23609 rb_node_argspush_t *n = NODE_NEWNODE(NODE_ARGSPUSH, rb_node_argspush_t, loc);
23610 n->nd_head = nd_head;
23611 n->nd_body = nd_body;
23616static rb_node_splat_t *
23617rb_node_splat_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
23619 rb_node_splat_t *n = NODE_NEWNODE(NODE_SPLAT, rb_node_splat_t, loc);
23620 n->nd_head = nd_head;
23621 n->operator_loc = *operator_loc;
23626static rb_node_block_pass_t *
23627rb_node_block_pass_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
23629 rb_node_block_pass_t *n = NODE_NEWNODE(NODE_BLOCK_PASS, rb_node_block_pass_t, loc);
23632 n->nd_body = nd_body;
23633 n->operator_loc = *operator_loc;
23638static rb_node_alias_t *
23639rb_node_alias_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23641 rb_node_alias_t *n = NODE_NEWNODE(NODE_ALIAS, rb_node_alias_t, loc);
23642 n->nd_1st = nd_1st;
23643 n->nd_2nd = nd_2nd;
23644 n->keyword_loc = *keyword_loc;
23649static rb_node_valias_t *
23650rb_node_valias_new(
struct parser_params *p,
ID nd_alias,
ID nd_orig,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23652 rb_node_valias_t *n = NODE_NEWNODE(NODE_VALIAS, rb_node_valias_t, loc);
23653 n->nd_alias = nd_alias;
23654 n->nd_orig = nd_orig;
23655 n->keyword_loc = *keyword_loc;
23660static rb_node_undef_t *
23661rb_node_undef_new(
struct parser_params *p, NODE *nd_undef,
const YYLTYPE *loc)
23663 rb_node_undef_t *n = NODE_NEWNODE(NODE_UNDEF, rb_node_undef_t, loc);
23664 n->nd_undefs = rb_parser_ary_new_capa_for_node(p, 1);
23665 n->keyword_loc = NULL_LOC;
23666 rb_parser_ary_push_node(p, n->nd_undefs, nd_undef);
23671static rb_node_errinfo_t *
23672rb_node_errinfo_new(
struct parser_params *p,
const YYLTYPE *loc)
23674 rb_node_errinfo_t *n = NODE_NEWNODE(NODE_ERRINFO, rb_node_errinfo_t, loc);
23679static rb_node_defined_t *
23680rb_node_defined_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23682 rb_node_defined_t *n = NODE_NEWNODE(NODE_DEFINED, rb_node_defined_t, loc);
23683 n->nd_head = nd_head;
23684 n->keyword_loc = *keyword_loc;
23689static rb_node_postexe_t *
23690rb_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)
23692 rb_node_postexe_t *n = NODE_NEWNODE(NODE_POSTEXE, rb_node_postexe_t, loc);
23693 n->nd_body = nd_body;
23694 n->keyword_loc = *keyword_loc;
23695 n->opening_loc = *opening_loc;
23696 n->closing_loc = *closing_loc;
23701static rb_node_attrasgn_t *
23702rb_node_attrasgn_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc)
23704 rb_node_attrasgn_t *n = NODE_NEWNODE(NODE_ATTRASGN, rb_node_attrasgn_t, loc);
23705 n->nd_recv = nd_recv;
23706 n->nd_mid = nd_mid;
23707 n->nd_args = nd_args;
23712static rb_node_aryptn_t *
23713rb_node_aryptn_new(
struct parser_params *p, NODE *pre_args, NODE *rest_arg, NODE *post_args,
const YYLTYPE *loc)
23715 rb_node_aryptn_t *n = NODE_NEWNODE(NODE_ARYPTN, rb_node_aryptn_t, loc);
23717 n->pre_args = pre_args;
23718 n->rest_arg = rest_arg;
23719 n->post_args = post_args;
23724static rb_node_hshptn_t *
23725rb_node_hshptn_new(
struct parser_params *p, NODE *nd_pconst, NODE *nd_pkwargs, NODE *nd_pkwrestarg,
const YYLTYPE *loc)
23727 rb_node_hshptn_t *n = NODE_NEWNODE(NODE_HSHPTN, rb_node_hshptn_t, loc);
23728 n->nd_pconst = nd_pconst;
23729 n->nd_pkwargs = nd_pkwargs;
23730 n->nd_pkwrestarg = nd_pkwrestarg;
23735static rb_node_fndptn_t *
23736rb_node_fndptn_new(
struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg,
const YYLTYPE *loc)
23738 rb_node_fndptn_t *n = NODE_NEWNODE(NODE_FNDPTN, rb_node_fndptn_t, loc);
23740 n->pre_rest_arg = pre_rest_arg;
23742 n->post_rest_arg = post_rest_arg;
23747static rb_node_line_t *
23748rb_node_line_new(
struct parser_params *p,
const YYLTYPE *loc)
23750 rb_node_line_t *n = NODE_NEWNODE(NODE_LINE, rb_node_line_t, loc);
23755static rb_node_file_t *
23758 rb_node_file_t *n = NODE_NEWNODE(NODE_FILE, rb_node_file_t, loc);
23759 n->path = rb_str_to_parser_string(p, str);
23764static rb_node_encoding_t *
23765rb_node_encoding_new(
struct parser_params *p,
const YYLTYPE *loc)
23767 rb_node_encoding_t *n = NODE_NEWNODE(NODE_ENCODING, rb_node_encoding_t, loc);
23773static rb_node_cdecl_t *
23774rb_node_cdecl_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value, NODE *nd_else,
enum rb_parser_shareability shareability,
const YYLTYPE *loc)
23776 rb_node_cdecl_t *n = NODE_NEWNODE(NODE_CDECL, rb_node_cdecl_t, loc);
23777 n->nd_vid = nd_vid;
23778 n->nd_value = nd_value;
23779 n->nd_else = nd_else;
23780 n->shareability = shareability;
23785static rb_node_op_cdecl_t *
23786rb_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)
23788 rb_node_op_cdecl_t *n = NODE_NEWNODE(NODE_OP_CDECL, rb_node_op_cdecl_t, loc);
23789 n->nd_head = nd_head;
23790 n->nd_value = nd_value;
23791 n->nd_aid = nd_aid;
23792 n->shareability = shareability;
23797static rb_node_error_t *
23798rb_node_error_new(
struct parser_params *p,
const YYLTYPE *loc)
23800 rb_node_error_t *n = NODE_NEWNODE(NODE_ERROR, rb_node_error_t, loc);
23805static rb_node_break_t *
23806rb_node_break_new(
struct parser_params *p, NODE *nd_stts,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23808 rb_node_break_t *n = NODE_NEWNODE(NODE_BREAK, rb_node_break_t, loc);
23809 n->nd_stts = nd_stts;
23811 n->keyword_loc = *keyword_loc;
23816static rb_node_next_t *
23817rb_node_next_new(
struct parser_params *p, NODE *nd_stts,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23819 rb_node_next_t *n = NODE_NEWNODE(NODE_NEXT, rb_node_next_t, loc);
23820 n->nd_stts = nd_stts;
23822 n->keyword_loc = *keyword_loc;
23827static rb_node_redo_t *
23828rb_node_redo_new(
struct parser_params *p,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23830 rb_node_redo_t *n = NODE_NEWNODE(NODE_REDO, rb_node_redo_t, loc);
23832 n->keyword_loc = *keyword_loc;
23837static rb_node_def_temp_t *
23838rb_node_def_temp_new(
struct parser_params *p,
const YYLTYPE *loc)
23840 rb_node_def_temp_t *n = NODE_NEWNODE((
enum node_type)NODE_DEF_TEMP, rb_node_def_temp_t, loc);
23841 n->save.numparam_save = 0;
23842 n->save.max_numparam = 0;
23843 n->save.ctxt = p->ctxt;
23850static rb_node_def_temp_t *
23851def_head_save(
struct parser_params *p, rb_node_def_temp_t *n)
23853 n->save.numparam_save = numparam_push(p);
23854 n->save.max_numparam = p->max_numparam;
23859static enum node_type
23860nodetype(NODE *node)
23862 return (
enum node_type)nd_type(node);
23866nodeline(NODE *node)
23868 return nd_line(node);
23873newline_node(NODE *node)
23876 node = remove_begin(node);
23877 nd_set_fl_newline(node);
23883fixpos(NODE *node, NODE *orig)
23887 nd_set_line(node, nd_line(orig));
23891block_append(
struct parser_params *p, NODE *head, NODE *tail)
23893 NODE *end, *h = head, *nd;
23895 if (tail == 0)
return head;
23897 if (h == 0)
return tail;
23898 switch (nd_type(h)) {
23900 h = end = NEW_BLOCK(head, &head->nd_loc);
23904 end = RNODE_BLOCK(h)->nd_end;
23908 nd = RNODE_BLOCK(end)->nd_head;
23909 switch (nd_type(nd)) {
23915 rb_warning0L(nd_line(tail),
"statement not reached");
23922 if (!nd_type_p(tail, NODE_BLOCK)) {
23923 tail = NEW_BLOCK(tail, &tail->nd_loc);
23925 RNODE_BLOCK(end)->nd_next = tail;
23926 RNODE_BLOCK(h)->nd_end = RNODE_BLOCK(tail)->nd_end;
23927 nd_set_last_loc(head, nd_last_loc(tail));
23933list_append(
struct parser_params *p, NODE *list, NODE *item)
23937 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
23938 if (RNODE_LIST(list)->nd_next) {
23939 last = RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end;
23945 RNODE_LIST(list)->as.nd_alen += 1;
23946 RNODE_LIST(last)->nd_next = NEW_LIST(item, &item->nd_loc);
23947 RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end = RNODE_LIST(last)->nd_next;
23949 nd_set_last_loc(list, nd_last_loc(item));
23956list_concat(NODE *head, NODE *tail)
23960 if (RNODE_LIST(head)->nd_next) {
23961 last = RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end;
23967 RNODE_LIST(head)->as.nd_alen += RNODE_LIST(tail)->as.nd_alen;
23968 RNODE_LIST(last)->nd_next = tail;
23969 if (RNODE_LIST(tail)->nd_next) {
23970 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = RNODE_LIST(RNODE_LIST(tail)->nd_next)->as.nd_end;
23973 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = tail;
23976 nd_set_last_loc(head, nd_last_loc(tail));
23982literal_concat0(
struct parser_params *p, rb_parser_string_t *head, rb_parser_string_t *tail)
23984 if (!tail)
return 1;
23985 if (!rb_parser_enc_compatible(p, head, tail)) {
23986 compile_error(p,
"string literal encodings differ (%s / %s)",
23987 rb_enc_name(rb_parser_str_get_encoding(head)),
23988 rb_enc_name(rb_parser_str_get_encoding(tail)));
23989 rb_parser_str_resize(p, head, 0);
23990 rb_parser_str_resize(p, tail, 0);
23993 rb_parser_str_buf_append(p, head, tail);
23997static rb_parser_string_t *
23998string_literal_head(
struct parser_params *p,
enum node_type htype, NODE *head)
24000 if (htype != NODE_DSTR)
return NULL;
24001 if (RNODE_DSTR(head)->nd_next) {
24002 head = RNODE_LIST(RNODE_LIST(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_head;
24003 if (!head || !nd_type_p(head, NODE_STR))
return NULL;
24005 rb_parser_string_t *lit = RNODE_DSTR(head)->string;
24011static rb_parser_string_t *
24012rb_parser_string_deep_copy(
struct parser_params *p,
const rb_parser_string_t *orig)
24014 rb_parser_string_t *copy;
24015 if (!orig)
return NULL;
24016 copy = rb_parser_string_new(p, PARSER_STRING_PTR(orig), PARSER_STRING_LEN(orig));
24017 copy->coderange = orig->coderange;
24018 copy->enc = orig->enc;
24025literal_concat(
struct parser_params *p, NODE *head, NODE *tail,
const YYLTYPE *loc)
24027 enum node_type htype;
24028 rb_parser_string_t *lit;
24030 if (!head)
return tail;
24031 if (!tail)
return head;
24033 htype = nd_type(head);
24034 if (htype == NODE_EVSTR) {
24035 head = new_dstr(p, head, loc);
24038 if (p->heredoc_indent > 0) {
24041 head = str2dstr(p, head);
24043 return list_append(p, head, tail);
24048 switch (nd_type(tail)) {
24050 if ((lit = string_literal_head(p, htype, head)) !=
false) {
24054 lit = RNODE_DSTR(head)->string;
24056 if (htype == NODE_STR) {
24057 if (!literal_concat0(p, lit, RNODE_STR(tail)->
string)) {
24059 rb_discard_node(p, head);
24060 rb_discard_node(p, tail);
24063 rb_discard_node(p, tail);
24066 list_append(p, head, tail);
24071 if (htype == NODE_STR) {
24072 if (!literal_concat0(p, RNODE_STR(head)->
string, RNODE_DSTR(tail)->
string))
24074 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24075 RNODE_DSTR(tail)->string = RNODE_STR(head)->string;
24076 RNODE_STR(head)->string = NULL;
24077 rb_discard_node(p, head);
24080 else if (!RNODE_DSTR(tail)->
string) {
24082 RNODE_DSTR(head)->as.nd_alen += RNODE_DSTR(tail)->as.nd_alen - 1;
24083 if (!RNODE_DSTR(head)->nd_next) {
24084 RNODE_DSTR(head)->nd_next = RNODE_DSTR(tail)->nd_next;
24086 else if (RNODE_DSTR(tail)->nd_next) {
24087 RNODE_DSTR(RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_next = RNODE_DSTR(tail)->nd_next;
24088 RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end = RNODE_DSTR(RNODE_DSTR(tail)->nd_next)->as.nd_end;
24090 rb_discard_node(p, tail);
24092 else if ((lit = string_literal_head(p, htype, head)) !=
false) {
24093 if (!literal_concat0(p, lit, RNODE_DSTR(tail)->
string))
24095 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
24096 RNODE_DSTR(tail)->string = 0;
24100 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));
24101 RNODE_DSTR(tail)->string = 0;
24106 if (htype == NODE_STR) {
24107 head = str2dstr(p, head);
24108 RNODE_DSTR(head)->as.nd_alen = 1;
24110 list_append(p, head, tail);
24117nd_copy_flag(NODE *new_node, NODE *old_node)
24119 if (nd_fl_newline(old_node)) nd_set_fl_newline(new_node);
24120 nd_set_line(new_node, nd_line(old_node));
24121 new_node->nd_loc = old_node->nd_loc;
24122 new_node->node_id = old_node->node_id;
24128 NODE *new_node = (NODE *)NODE_NEW_INTERNAL(NODE_DSTR, rb_node_dstr_t);
24129 nd_copy_flag(new_node, node);
24130 RNODE_DSTR(new_node)->string = RNODE_STR(node)->string;
24131 RNODE_DSTR(new_node)->as.nd_alen = 0;
24132 RNODE_DSTR(new_node)->nd_next = 0;
24133 RNODE_STR(node)->string = 0;
24139str2regx(
struct parser_params *p, NODE *node,
int options,
const YYLTYPE *loc,
const YYLTYPE *opening_loc,
const YYLTYPE *content_loc,
const YYLTYPE *closing_loc)
24141 NODE *new_node = (NODE *)NODE_NEW_INTERNAL(NODE_REGX, rb_node_regx_t);
24142 nd_copy_flag(new_node, node);
24143 RNODE_REGX(new_node)->string = RNODE_STR(node)->string;
24144 RNODE_REGX(new_node)->options = options;
24145 nd_set_loc(new_node, loc);
24146 RNODE_REGX(new_node)->opening_loc = *opening_loc;
24147 RNODE_REGX(new_node)->content_loc = *content_loc;
24148 RNODE_REGX(new_node)->closing_loc = *closing_loc;
24149 RNODE_STR(node)->string = 0;
24157 if (nd_type_p(node, NODE_EVSTR)) {
24158 node = new_dstr(p, node, &node->nd_loc);
24164new_evstr(
struct parser_params *p, NODE *node,
const YYLTYPE *loc,
const YYLTYPE *opening_loc,
const YYLTYPE *closing_loc)
24169 switch (nd_type(node)) {
24171 return str2dstr(p, node);
24178 return NEW_EVSTR(head, loc, opening_loc, closing_loc);
24182new_dstr(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
24184 NODE *dstr = NEW_DSTR(STRING_NEW0(), loc);
24185 return list_append(p, dstr, node);
24190 const YYLTYPE *op_loc,
const YYLTYPE *loc)
24193 value_expr(p, recv);
24194 value_expr(p, arg1);
24195 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
24196 nd_set_line(expr, op_loc->beg_pos.lineno);
24201call_uni_op(
struct parser_params *p, NODE *recv,
ID id,
const YYLTYPE *op_loc,
const YYLTYPE *loc)
24204 value_expr(p, recv);
24205 opcall = NEW_OPCALL(recv,
id, 0, loc);
24206 nd_set_line(opcall, op_loc->beg_pos.lineno);
24211new_qcall(
struct parser_params* p,
ID atype, NODE *recv,
ID mid, NODE *args,
const YYLTYPE *op_loc,
const YYLTYPE *loc)
24213 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
24214 nd_set_line(qcall, op_loc->beg_pos.lineno);
24219new_command_qcall(
struct parser_params* p,
ID atype, NODE *recv,
ID mid, NODE *args, NODE *block,
const YYLTYPE *op_loc,
const YYLTYPE *loc)
24222 if (block) block_dup_check(p, args, block);
24223 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
24224 if (block) ret = method_add_block(p, ret, block, loc);
24230new_locations_lambda_body(
struct parser_params* p, NODE *node,
const YYLTYPE *loc,
const YYLTYPE *opening_loc,
const YYLTYPE *closing_loc)
24234 body->opening_loc = *opening_loc;
24235 body->closing_loc = *closing_loc;
24240command_add_block(
struct parser_params*p, NODE *m, NODE *b,
const YYLTYPE *loc)
24243 enum node_type
type = nd_type(m);
24246 compile_error(p,
"block given to yield");
24249 body = &RNODE_RETURN(m)->nd_stts;
24253 body = &RNODE_EXITS(m)->nd_stts;
24256 compile_error(p,
"command_add_block: unexpected node: NODE_REDO");
24259 compile_error(p,
"command_add_block: unexpected node: NODE_RETRY");
24262 block_dup_check(p, get_nd_args(p, m), b);
24263 return method_add_block(p, m, b, loc);
24265 RUBY_ASSERT(*body,
"no argument %s with do_block", parser_node_name(
type));
24266 YYLTYPE b_loc = code_loc_gen(&(*body)->nd_loc, loc);
24267 *body = command_add_block(p, *body, b, &b_loc);
24268 m->nd_loc.end_pos = loc->end_pos;
24272#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? RNODE_ONCE(node)->nd_body : node)
24275last_expr_once_body(NODE *node)
24277 if (!node)
return 0;
24278 return nd_once_body(node);
24282match_op(
struct parser_params *p, NODE *node1, NODE *node2,
const YYLTYPE *op_loc,
const YYLTYPE *loc)
24285 int line = op_loc->beg_pos.lineno;
24287 value_expr(p, node1);
24288 value_expr(p, node2);
24290 if ((n = last_expr_once_body(node1)) != 0) {
24291 switch (nd_type(n)) {
24294 NODE *match = NEW_MATCH2(node1, node2, loc);
24295 nd_set_line(match, line);
24301 const VALUE lit = rb_node_regx_string_val(n);
24303 NODE *match = NEW_MATCH2(node1, node2, loc);
24304 RNODE_MATCH2(match)->nd_args = reg_named_capture_assign(p, lit, loc, assignable);
24305 nd_set_line(match, line);
24312 if ((n = last_expr_once_body(node2)) != 0) {
24315 switch (nd_type(n)) {
24317 match3 = NEW_MATCH3(node2, node1, loc);
24322 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
24323 nd_set_line(n, line);
24327# if WARN_PAST_SCOPE
24331 struct vtable *past = p->lvtbl->past;
24333 if (vtable_included(past,
id))
return 1;
24344 NODE *outer = local->numparam.outer;
24345 NODE *inner = local->numparam.inner;
24346 if (outer || inner) {
24347 NODE *used = outer ? outer : inner;
24348 compile_error(p,
"numbered parameter is already used in %s block\n"
24349 "%s:%d: numbered parameter is already used here",
24350 outer ?
"outer" :
"inner",
24351 p->ruby_sourcefile, nd_line(used));
24352 parser_show_error_line(p, &used->nd_loc);
24361 NODE *numparam = p->lvtbl->numparam.current;
24363 compile_error(p,
"'it' is not allowed when a numbered parameter is already used\n"
24364 "%s:%d: numbered parameter is already used here",
24365 p->ruby_sourcefile, nd_line(numparam));
24366 parser_show_error_line(p, &numparam->nd_loc);
24375 NODE *it = p->lvtbl->it;
24377 compile_error(p,
"numbered parameters are not allowed when 'it' is already used\n"
24378 "%s:%d: 'it' is already used here",
24379 p->ruby_sourcefile, nd_line(it));
24380 parser_show_error_line(p, &it->nd_loc);
24393 return NEW_SELF(loc);
24395 return NEW_NIL(loc);
24397 return NEW_TRUE(loc);
24398 case keyword_false:
24399 return NEW_FALSE(loc);
24400 case keyword__FILE__:
24402 VALUE file = p->ruby_sourcefile_string;
24405 node = NEW_FILE(file, loc);
24408 case keyword__LINE__:
24409 return NEW_LINE(loc);
24410 case keyword__ENCODING__:
24411 return NEW_ENCODING(loc);
24414 switch (id_type(
id)) {
24416 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
24417 if (NUMPARAM_ID_P(
id) && (numparam_nested_p(p) || it_used_p(p)))
return 0;
24418 if (vidp) *vidp |= LVAR_USED;
24419 node = NEW_DVAR(
id, loc);
24422 if (local_id_ref(p,
id, &vidp)) {
24423 if (vidp) *vidp |= LVAR_USED;
24424 node = NEW_LVAR(
id, loc);
24427 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
24428 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
24429 if (numparam_nested_p(p) || it_used_p(p))
return 0;
24430 node = NEW_DVAR(
id, loc);
24432 if (!local->numparam.current) local->numparam.current = node;
24435# if WARN_PAST_SCOPE
24437 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
24441 if (dyna_in_block(p) &&
id == idIt && !(DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev))) {
24442 if (numparam_used_p(p))
return 0;
24443 if (p->max_numparam == ORDINAL_PARAM) {
24444 compile_error(p,
"ordinary parameter is defined");
24448 p->it_id = idItImplicit;
24449 vtable_add(p->lvtbl->args, p->it_id);
24451 NODE *node = NEW_DVAR(p->it_id, loc);
24452 if (!p->lvtbl->it) p->lvtbl->it = node;
24455 return NEW_VCALL(
id, loc);
24457 return NEW_GVAR(
id, loc);
24459 return NEW_IVAR(
id, loc);
24461 return NEW_CONST(
id, loc);
24463 return NEW_CVAR(
id, loc);
24465 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24469static rb_node_opt_arg_t *
24470opt_arg_append(rb_node_opt_arg_t *opt_list, rb_node_opt_arg_t *opt)
24472 rb_node_opt_arg_t *opts = opt_list;
24473 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24475 while (opts->nd_next) {
24476 opts = opts->nd_next;
24477 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
24479 opts->nd_next = opt;
24484static rb_node_kw_arg_t *
24485kwd_append(rb_node_kw_arg_t *kwlist, rb_node_kw_arg_t *kw)
24489 opt_arg_append(RNODE_OPT_ARG(kwlist), RNODE_OPT_ARG(kw));
24495new_defined(
struct parser_params *p, NODE *expr,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
24497 int had_trailing_semicolon = p->ctxt.has_trailing_semicolon;
24498 p->ctxt.has_trailing_semicolon = 0;
24502 if (nd_type_p(n, NODE_BEGIN)) {
24503 n = RNODE_BEGIN(n)->nd_body;
24505 else if (nd_type_p(n, NODE_BLOCK) && RNODE_BLOCK(n)->nd_end == n) {
24506 n = RNODE_BLOCK(n)->nd_head;
24513 if (had_trailing_semicolon && !nd_type_p(expr, NODE_BLOCK)) {
24514 NODE *block = NEW_BLOCK(expr, loc);
24515 return NEW_DEFINED(block, loc, keyword_loc);
24518 return NEW_DEFINED(n, loc, keyword_loc);
24522str_to_sym_node(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
24525 rb_parser_string_t *str = RNODE_STR(node)->string;
24526 if (rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_BROKEN) {
24527 yyerror1(loc,
"invalid symbol");
24531 lit = rb_str_new_parser_string(str);
24533 return NEW_SYM(lit, loc);
24537symbol_append(
struct parser_params *p, NODE *symbols, NODE *symbol)
24539 enum node_type
type = nd_type(symbol);
24542 nd_set_type(symbol, NODE_DSYM);
24545 symbol = str_to_sym_node(p, symbol, &RNODE(symbol)->nd_loc);
24548 compile_error(p,
"unexpected node as symbol: %s", parser_node_name(
type));
24550 return list_append(p, symbols, symbol);
24554dregex_fragment_setenc(
struct parser_params *p, rb_node_dregx_t *
const dreg,
int options)
24556 if (dreg->string) {
24557 reg_fragment_setenc(p, dreg->string, options);
24559 for (
struct RNode_LIST *list = dreg->nd_next; list; list = RNODE_LIST(list->nd_next)) {
24560 NODE *frag = list->nd_head;
24561 if (nd_type_p(frag, NODE_STR)) {
24562 reg_fragment_setenc(p, RNODE_STR(frag)->
string, options);
24564 else if (nd_type_p(frag, NODE_DSTR)) {
24565 dregex_fragment_setenc(p, RNODE_DSTR(frag), options);
24571new_regexp(
struct parser_params *p, NODE *node,
int options,
const YYLTYPE *loc,
const YYLTYPE *opening_loc,
const YYLTYPE *content_loc,
const YYLTYPE *closing_loc)
24575 rb_parser_string_t *str = STRING_NEW0();
24576 reg_compile(p, str, options);
24577 node = NEW_REGX(str, options, loc, opening_loc, content_loc, closing_loc);
24580 switch (nd_type(node)) {
24584 reg_compile(p, RNODE_STR(node)->
string, options);
24585 node = str2regx(p, node, options, loc, opening_loc, content_loc, closing_loc);
24589 node = NEW_DSTR0(STRING_NEW0(), 1, NEW_LIST(node, loc), loc);
24592 nd_set_type(node, NODE_DREGX);
24593 nd_set_loc(node, loc);
24594 rb_node_dregx_t *
const dreg = RNODE_DREGX(node);
24595 dreg->as.nd_cflag = options & RE_OPTION_MASK;
24596 if (dreg->nd_next) {
24597 dregex_fragment_setenc(p, dreg, options);
24599 if (options & RE_OPTION_ONCE) {
24600 node = NEW_ONCE(node, loc);
24607static rb_node_kw_arg_t *
24608new_kw_arg(
struct parser_params *p, NODE *k,
const YYLTYPE *loc)
24611 return NEW_KW_ARG((k), loc);
24615new_xstring(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
24618 NODE *xstr = NEW_XSTR(STRING_NEW0(), loc);
24621 switch (nd_type(node)) {
24623 nd_set_type(node, NODE_XSTR);
24624 nd_set_loc(node, loc);
24627 nd_set_type(node, NODE_DXSTR);
24628 nd_set_loc(node, loc);
24631 node = NEW_DXSTR(0, 1, NEW_LIST(node, loc), loc);
24638struct st_hash_type literal_type = {
24643static int nd_type_st_key_enable_p(NODE *node);
24646check_literal_when(
struct parser_params *p, NODE *arg,
const YYLTYPE *loc)
24649 if (!arg || !p->case_labels)
return;
24650 if (!nd_type_st_key_enable_p(arg))
return;
24652 if (p->case_labels == CHECK_LITERAL_WHEN) {
24653 p->case_labels = st_init_table(&literal_type);
24657 if (st_lookup(p->case_labels, (st_data_t)arg, &line)) {
24658 rb_warning2(
"'when' clause on line %d duplicates 'when' clause on line %d and is ignored",
24659 WARN_I((
int)nd_line(arg)), WARN_I((
int)line));
24663 st_insert(p->case_labels, (st_data_t)arg, (st_data_t)p->ruby_sourceline);
24670 if (is_notop_id(
id)) {
24671 switch (
id & ID_SCOPE_MASK) {
24672 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
24675 if (dyna_in_block(p)) {
24676 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
24678 if (local_id(p,
id))
return 1;
24683 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24688static inline enum lex_state_e
24689parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
24692 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
24694 return p->lex.state = ls;
24701 VALUE mesg = p->debug_buffer;
24703 if (!
NIL_P(mesg) && RSTRING_LEN(mesg)) {
24704 p->debug_buffer =
Qnil;
24705 rb_io_puts(1, &mesg, out);
24707 if (!
NIL_P(str) && RSTRING_LEN(str)) {
24708 rb_io_write(p->debug_output, str);
24712static const char rb_parser_lex_state_names[][8] = {
24713 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
24714 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
24715 "LABEL",
"LABELED",
"FITEM",
24722 unsigned int mask = 1;
24723 static const char none[] =
"NONE";
24725 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
24726 if ((
unsigned)state & mask) {
24741rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
24742 enum lex_state_e to,
int line)
24746 append_lex_state_name(p, from, mesg);
24748 append_lex_state_name(p, to, mesg);
24749 rb_str_catf(mesg,
" at line %d\n", line);
24750 flush_debug_buffer(p, p->debug_output, mesg);
24755rb_parser_lex_state_name(
struct parser_params *p,
enum lex_state_e state)
24757 return rb_str_to_interned_str(append_lex_state_name(p, state,
rb_str_new(0, 0)));
24767 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
24768 for (; mask && !(stack & mask); mask >>= 1)
continue;
24769 for (; mask; mask >>= 1)
rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
24774rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
24775 const char *name,
int line)
24777 VALUE mesg = rb_sprintf(
"%s: ", name);
24778 append_bitstack_value(p, stack, mesg);
24779 rb_str_catf(mesg,
" at line %d\n", line);
24780 flush_debug_buffer(p, p->debug_output, mesg);
24784rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
24790 rb_str_vcatf(mesg, fmt, ap);
24792 yyerror0(RSTRING_PTR(mesg));
24796 append_lex_state_name(p, p->lex.state, mesg);
24797 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
24798 rb_str_resize(mesg, 0);
24799 append_bitstack_value(p, p->cond_stack, mesg);
24800 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
24801 rb_str_resize(mesg, 0);
24802 append_bitstack_value(p, p->cmdarg_stack, mesg);
24803 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
24804 if (p->debug_output == rb_ractor_stdout())
24810rb_parser_set_pos(YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
24812 yylloc->beg_pos.lineno = sourceline;
24813 yylloc->beg_pos.column = beg_pos;
24814 yylloc->end_pos.lineno = sourceline;
24815 yylloc->end_pos.column = end_pos;
24820rb_parser_set_location_from_strterm_heredoc(
struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc)
24822 int sourceline = here->sourceline;
24823 int beg_pos = (int)here->offset - here->quote
24824 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
24825 int end_pos = (int)here->offset + here->length + here->quote;
24827 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24831rb_parser_set_location_of_delayed_token(
struct parser_params *p, YYLTYPE *yylloc)
24833 yylloc->beg_pos.lineno = p->delayed.beg_line;
24834 yylloc->beg_pos.column = p->delayed.beg_col;
24835 yylloc->end_pos.lineno = p->delayed.end_line;
24836 yylloc->end_pos.column = p->delayed.end_col;
24842rb_parser_set_location_of_heredoc_end(
struct parser_params *p, YYLTYPE *yylloc)
24844 int sourceline = p->ruby_sourceline;
24845 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24846 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
24847 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24851rb_parser_set_location_of_dummy_end(
struct parser_params *p, YYLTYPE *yylloc)
24853 yylloc->end_pos = yylloc->beg_pos;
24859rb_parser_set_location_of_none(
struct parser_params *p, YYLTYPE *yylloc)
24861 int sourceline = p->ruby_sourceline;
24862 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24863 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
24864 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24868rb_parser_set_location(
struct parser_params *p, YYLTYPE *yylloc)
24870 int sourceline = p->ruby_sourceline;
24871 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24872 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
24873 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24880 if (!
id)
return -1;
24883 *err =
"Can't change the value of self";
24886 *err =
"Can't assign to nil";
24889 *err =
"Can't assign to true";
24891 case keyword_false:
24892 *err =
"Can't assign to false";
24894 case keyword__FILE__:
24895 *err =
"Can't assign to __FILE__";
24897 case keyword__LINE__:
24898 *err =
"Can't assign to __LINE__";
24900 case keyword__ENCODING__:
24901 *err =
"Can't assign to __ENCODING__";
24904 switch (id_type(
id)) {
24906 if (dyna_in_block(p)) {
24907 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
24908 compile_error(p,
"Can't assign to numbered parameter _%d",
24909 NUMPARAM_ID_TO_IDX(
id));
24912 if (dvar_curr(p,
id))
return NODE_DASGN;
24913 if (dvar_defined(p,
id))
return NODE_DASGN;
24914 if (local_id(p,
id))
return NODE_LASGN;
24919 if (!local_id(p,
id)) local_var(p,
id);
24923 case ID_GLOBAL:
return NODE_GASGN;
24924 case ID_INSTANCE:
return NODE_IASGN;
24926 if (!p->ctxt.in_def)
return NODE_CDECL;
24927 *err =
"dynamic constant assignment";
24929 case ID_CLASS:
return NODE_CVASGN;
24931 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
24937assignable(
struct parser_params *p,
ID id, NODE *val,
const YYLTYPE *loc)
24939 const char *err = 0;
24940 int node_type = assignable0(p,
id, &err);
24941 switch (node_type) {
24942 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
24943 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
24944 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
24945 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
24946 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, p->ctxt.shareable_constant_value, loc);
24947 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
24951 if (err) yyerror1(loc, err);
24953 if (err) set_value(assign_error(p, err, p->s_lvalue));
24955 return NEW_ERROR(loc);
24962 if (name == idUScore)
return 1;
24963 if (!is_local_id(name))
return 0;
24964 s = rb_id2str(name);
24966 return RSTRING_PTR(s)[0] ==
'_';
24972 if (dyna_in_block(p)) {
24973 if (dvar_curr(p, name)) {
24974 if (is_private_local_id(p, name))
return 1;
24975 yyerror0(
"duplicated argument name");
24977 else if (dvar_defined(p, name) || local_id(p, name)) {
24978 vtable_add(p->lvtbl->vars, name);
24979 if (p->lvtbl->used) {
24980 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
24986 if (local_id(p, name)) {
24987 if (is_private_local_id(p, name))
return 1;
24988 yyerror0(
"duplicated argument name");
24997 shadowing_lvar_0(p, name);
25005 if (!is_local_id(name)) {
25006 compile_error(p,
"invalid local variable - %"PRIsVALUE,
25010 if (!shadowing_lvar_0(p, name))
return;
25013 if (dvar_defined_ref(p, name, &vidp)) {
25014 if (vidp) *vidp |= LVAR_USED;
25021 NODE *block = 0, *kwds = 0;
25022 if (args && nd_type_p(args, NODE_BLOCK_PASS)) {
25023 block = RNODE_BLOCK_PASS(args)->nd_body;
25024 args = RNODE_BLOCK_PASS(args)->nd_head;
25026 if (args && nd_type_p(args, NODE_ARGSCAT)) {
25027 args = RNODE_ARGSCAT(args)->nd_body;
25029 if (args && nd_type_p(args, NODE_ARGSPUSH)) {
25030 kwds = RNODE_ARGSPUSH(args)->nd_body;
25033 for (NODE *next = args; next && nd_type_p(next, NODE_LIST);
25034 next = RNODE_LIST(next)->nd_next) {
25035 kwds = RNODE_LIST(next)->nd_head;
25038 if (kwds && nd_type_p(kwds, NODE_HASH) && !RNODE_HASH(kwds)->nd_brace) {
25039 yyerror1(&kwds->nd_loc,
"keyword arg given in index assignment");
25042 yyerror1(&block->nd_loc,
"block arg given in index assignment");
25047aryset(
struct parser_params *p, NODE *recv, NODE *idx,
const YYLTYPE *loc)
25049 aryset_check(p, idx);
25050 return NEW_ATTRASGN(recv, tASET, idx, loc);
25054block_dup_check(
struct parser_params *p, NODE *node1, NODE *node2)
25056 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
25057 compile_error(p,
"both block arg and actual block given");
25062attrset(
struct parser_params *p, NODE *recv,
ID atype,
ID id,
const YYLTYPE *loc)
25064 if (!CALL_Q_P(atype))
id = rb_id_attrset(
id);
25065 return NEW_ATTRASGN(recv,
id, 0, loc);
25072# define ERR(...) (compile_error(p, __VA_ARGS__), Qtrue)
25074# define ERR(...) rb_sprintf(__VA_ARGS__)
25076 switch (nd_type(node)) {
25078 return ERR(
"Can't set variable $%ld", RNODE_NTH_REF(node)->nd_nth);
25079 case NODE_BACK_REF:
25080 return ERR(
"Can't set variable $%c", (
int)RNODE_BACK_REF(node)->nd_nth);
25087arg_append(
struct parser_params *p, NODE *node1, NODE *node2,
const YYLTYPE *loc)
25089 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
25090 switch (nd_type(node1)) {
25092 return list_append(p, node1, node2);
25093 case NODE_BLOCK_PASS:
25094 RNODE_BLOCK_PASS(node1)->nd_head = arg_append(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25095 node1->nd_loc.end_pos = RNODE_BLOCK_PASS(node1)->nd_head->nd_loc.end_pos;
25097 case NODE_ARGSPUSH:
25098 RNODE_ARGSPUSH(node1)->nd_body = list_append(p, NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, &RNODE_ARGSPUSH(node1)->nd_body->nd_loc), node2);
25099 node1->nd_loc.end_pos = RNODE_ARGSPUSH(node1)->nd_body->nd_loc.end_pos;
25100 nd_set_type(node1, NODE_ARGSCAT);
25103 if (!nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25104 RNODE_ARGSCAT(node1)->nd_body = list_append(p, RNODE_ARGSCAT(node1)->nd_body, node2);
25105 node1->nd_loc.end_pos = RNODE_ARGSCAT(node1)->nd_body->nd_loc.end_pos;
25108 return NEW_ARGSPUSH(node1, node2, loc);
25112arg_concat(
struct parser_params *p, NODE *node1, NODE *node2,
const YYLTYPE *loc)
25114 if (!node2)
return node1;
25115 switch (nd_type(node1)) {
25116 case NODE_BLOCK_PASS:
25117 if (RNODE_BLOCK_PASS(node1)->nd_head)
25118 RNODE_BLOCK_PASS(node1)->nd_head = arg_concat(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
25120 RNODE_LIST(node1)->nd_head = NEW_LIST(node2, loc);
25122 case NODE_ARGSPUSH:
25123 if (!nd_type_p(node2, NODE_LIST))
break;
25124 RNODE_ARGSPUSH(node1)->nd_body = list_concat(NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, loc), node2);
25125 nd_set_type(node1, NODE_ARGSCAT);
25128 if (!nd_type_p(node2, NODE_LIST) ||
25129 !nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
25130 RNODE_ARGSCAT(node1)->nd_body = list_concat(RNODE_ARGSCAT(node1)->nd_body, node2);
25133 return NEW_ARGSCAT(node1, node2, loc);
25137last_arg_append(
struct parser_params *p, NODE *args, NODE *last_arg,
const YYLTYPE *loc)
25140 if ((n1 = splat_array(args)) != 0) {
25141 return list_append(p, n1, last_arg);
25143 return arg_append(p, args, last_arg, loc);
25147rest_arg_append(
struct parser_params *p, NODE *args, NODE *rest_arg,
const YYLTYPE *loc)
25150 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
25151 return list_concat(n1, rest_arg);
25153 return arg_concat(p, args, rest_arg, loc);
25157splat_array(NODE* node)
25159 if (nd_type_p(node, NODE_SPLAT)) node = RNODE_SPLAT(node)->nd_head;
25160 if (nd_type_p(node, NODE_LIST))
return node;
25169 switch (nd_type(rhs)) {
25171 if (local_id_ref(p, RNODE_LASGN(rhs)->nd_vid, &vidp)) {
25172 if (vidp) *vidp |= LVAR_USED;
25176 if (dvar_defined_ref(p, RNODE_DASGN(rhs)->nd_vid, &vidp)) {
25177 if (vidp) *vidp |= LVAR_USED;
25182 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
25183 mark_lvar_used(p, rhs->nd_head);
25190static int is_static_content(NODE *node);
25195 if (!lhs)
return 0;
25197 switch (nd_type(lhs)) {
25205 set_nd_value(p, lhs, rhs);
25206 nd_set_loc(lhs, loc);
25209 case NODE_ATTRASGN:
25210 RNODE_ATTRASGN(lhs)->nd_args = arg_append(p, RNODE_ATTRASGN(lhs)->nd_args, rhs, loc);
25211 nd_set_loc(lhs, loc);
25225 NODE *void_node = 0, *vn;
25228 rb_warning0(
"empty expression");
25231 switch (nd_type(node)) {
25233 vn = RNODE_ENSURE(node)->nd_head;
25234 node = RNODE_ENSURE(node)->nd_ensr;
25236 if (vn && (vn = value_expr_check(p, vn))) {
25243 vn = RNODE_RESCUE(node)->nd_head;
25244 if (!vn || !(vn = value_expr_check(p, vn)))
return NULL;
25245 if (!void_node) void_node = vn;
25246 for (NODE *r = RNODE_RESCUE(node)->nd_resq; r; r = RNODE_RESBODY(r)->nd_next) {
25247 if (!nd_type_p(r, NODE_RESBODY)) {
25248 compile_error(p,
"unexpected node");
25251 if (!(vn = value_expr_check(p, RNODE_RESBODY(r)->nd_body))) {
25255 if (!void_node) void_node = vn;
25257 node = RNODE_RESCUE(node)->nd_else;
25258 if (!node)
return void_node;
25269 if (!RNODE_CASE3(node)->nd_body || !nd_type_p(RNODE_CASE3(node)->nd_body, NODE_IN)) {
25270 compile_error(p,
"unexpected node");
25273 if (RNODE_IN(RNODE_CASE3(node)->nd_body)->nd_body) {
25280 while (RNODE_BLOCK(node)->nd_next) {
25281 node = RNODE_BLOCK(node)->nd_next;
25283 node = RNODE_BLOCK(node)->nd_head;
25287 node = RNODE_BEGIN(node)->nd_body;
25292 if (!RNODE_IF(node)->nd_body) {
25295 else if (!RNODE_IF(node)->nd_else) {
25298 vn = value_expr_check(p, RNODE_IF(node)->nd_body);
25299 if (!vn)
return NULL;
25300 if (!void_node) void_node = vn;
25301 node = RNODE_IF(node)->nd_else;
25306 node = RNODE_AND(node)->nd_1st;
25312 mark_lvar_used(p, node);
25324 return void_node ? void_node : node;
25330 NODE *void_node = value_expr_check(p, node);
25332 yyerror1(&void_node->nd_loc,
"void value expression");
25342 const char *useless = 0;
25346 if (!node || !(node = nd_once_body(node)))
return;
25347 switch (nd_type(node)) {
25349 switch (RNODE_OPCALL(node)->nd_mid) {
25368 useless = rb_id2name(RNODE_OPCALL(node)->nd_mid);
25379 case NODE_BACK_REF:
25380 useless =
"a variable";
25383 useless =
"a constant";
25388 case NODE_ENCODING:
25391 case NODE_RATIONAL:
25392 case NODE_IMAGINARY:
25397 useless =
"a literal";
25422 useless =
"defined?";
25427 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
25435 NODE *
const n = node;
25437 if (!node)
return n;
25438 if (!nd_type_p(node, NODE_BLOCK))
return n;
25440 while (RNODE_BLOCK(node)->nd_next) {
25441 void_expr(p, RNODE_BLOCK(node)->nd_head);
25442 node = RNODE_BLOCK(node)->nd_next;
25444 return RNODE_BLOCK(node)->nd_head;
25448remove_begin(NODE *node)
25450 NODE **n = &node, *n1 = node;
25451 while (n1 && nd_type_p(n1, NODE_BEGIN) && RNODE_BEGIN(n1)->nd_body) {
25452 *n = n1 = RNODE_BEGIN(n1)->nd_body;
25460 NODE *node = *body;
25463 *body = NEW_NIL(&NULL_LOC);
25466#define subnodes(type, n1, n2) \
25467 ((!type(node)->n1) ? (type(node)->n2 ? (body = &type(node)->n2, 1) : 0) : \
25468 (!type(node)->n2) ? (body = &type(node)->n1, 1) : \
25469 (reduce_nodes(p, &type(node)->n1), body = &type(node)->n2, 1))
25472 int newline = (int)nd_fl_newline(node);
25473 switch (nd_type(node)) {
25479 *body = node = RNODE_BEGIN(node)->nd_body;
25480 if (newline && node) nd_set_fl_newline(node);
25483 body = &RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head;
25487 if (subnodes(RNODE_IF, nd_body, nd_else))
break;
25490 body = &RNODE_CASE(node)->nd_body;
25493 if (!subnodes(RNODE_WHEN, nd_body, nd_next))
goto end;
25496 body = &RNODE_ENSURE(node)->nd_head;
25500 if (RNODE_RESCUE(node)->nd_else) {
25501 body = &RNODE_RESCUE(node)->nd_resq;
25504 if (!subnodes(RNODE_RESCUE, nd_head, nd_resq))
goto end;
25510 if (newline && node) nd_set_fl_newline(node);
25517is_static_content(NODE *node)
25519 if (!node)
return 1;
25520 switch (nd_type(node)) {
25522 if (!(node = RNODE_HASH(node)->nd_head))
break;
25525 if (!is_static_content(RNODE_LIST(node)->nd_head))
return 0;
25526 }
while ((node = RNODE_LIST(node)->nd_next) != 0);
25531 case NODE_ENCODING:
25534 case NODE_RATIONAL:
25535 case NODE_IMAGINARY:
25551 switch (nd_type(node)) {
25565 if (!get_nd_value(p, node))
return 1;
25566 if (is_static_content(get_nd_value(p, node))) {
25568 rb_warn0L(nd_line(get_nd_value(p, node)),
"found '= literal' in conditional, should be ==");
25579#define SWITCH_BY_COND_TYPE(t, w, arg) do { \
25581 case COND_IN_OP: break; \
25582 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
25583 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
25587static NODE *cond0(
struct parser_params*,NODE*,
enum cond_type,
const YYLTYPE*,
bool);
25590range_op(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
25592 enum node_type
type;
25594 if (node == 0)
return 0;
25596 type = nd_type(node);
25597 value_expr(p, node);
25598 if (
type == NODE_INTEGER) {
25599 if (!e_option_supplied(p)) rb_warn0L(nd_line(node),
"integer literal in flip-flop");
25600 ID lineno = rb_intern(
"$.");
25601 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
25603 return cond0(p, node, COND_IN_FF, loc,
true);
25607cond0(
struct parser_params *p, NODE *node,
enum cond_type
type,
const YYLTYPE *loc,
bool top)
25609 if (node == 0)
return 0;
25610 if (!(node = nd_once_body(node)))
return 0;
25611 assign_in_cond(p, node);
25613 switch (nd_type(node)) {
25615 RNODE_BEGIN(node)->nd_body = cond0(p, RNODE_BEGIN(node)->nd_body,
type, loc, top);
25622 SWITCH_BY_COND_TYPE(
type, warn,
"string ");
25626 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ");
25627 nd_set_type(node, NODE_MATCH);
25631 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning,
"regex ");
25633 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
25637 NODE *end = RNODE_BLOCK(node)->nd_end;
25638 NODE **expr = &RNODE_BLOCK(end)->nd_head;
25639 if (top) top = node == end;
25640 *expr = cond0(p, *expr,
type, loc, top);
25646 RNODE_AND(node)->nd_1st = cond0(p, RNODE_AND(node)->nd_1st, COND_IN_COND, loc,
true);
25647 RNODE_AND(node)->nd_2nd = cond0(p, RNODE_AND(node)->nd_2nd, COND_IN_COND, loc,
true);
25653 RNODE_DOT2(node)->nd_beg = range_op(p, RNODE_DOT2(node)->nd_beg, loc);
25654 RNODE_DOT2(node)->nd_end = range_op(p, RNODE_DOT2(node)->nd_end, loc);
25655 switch (nd_type(node)) {
25657 nd_set_type(node,NODE_FLIP2);
25658 rb_node_flip2_t *flip2 = RNODE_FLIP2(node);
25662 nd_set_type(node, NODE_FLIP3);
25663 rb_node_flip3_t *flip3 = RNODE_FLIP3(node);
25671 SWITCH_BY_COND_TYPE(
type, warning,
"symbol ");
25675 case NODE_ENCODING:
25678 case NODE_RATIONAL:
25679 case NODE_IMAGINARY:
25680 SWITCH_BY_COND_TYPE(
type, warning,
"");
25690cond(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
25692 if (node == 0)
return 0;
25693 return cond0(p, node, COND_IN_COND, loc,
true);
25697method_cond(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
25699 if (node == 0)
return 0;
25700 return cond0(p, node, COND_IN_OP, loc,
true);
25704new_nil_at(
struct parser_params *p,
const rb_code_position_t *pos)
25706 YYLTYPE loc = {*pos, *pos};
25707 return NEW_NIL(&loc);
25711new_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)
25713 if (!cc)
return right;
25714 cc = cond0(p, cc, COND_IN_COND, loc,
true);
25715 return newline_node(NEW_IF(cc, left, right, loc, if_keyword_loc, then_keyword_loc, end_keyword_loc));
25719new_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)
25721 if (!cc)
return right;
25722 cc = cond0(p, cc, COND_IN_COND, loc,
true);
25723 return newline_node(NEW_UNLESS(cc, left, right, loc, keyword_loc, then_keyword_loc, end_keyword_loc));
25726#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))
25730 const YYLTYPE *op_loc,
const YYLTYPE *loc)
25732 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
25734 value_expr(p, left);
25735 if (left && nd_type_p(left,
type)) {
25736 NODE *node = left, *second;
25737 while ((second = RNODE_AND(node)->nd_2nd) != 0 && nd_type_p(second,
type)) {
25740 RNODE_AND(node)->nd_2nd = NEW_AND_OR(
type, second, right, loc, op_loc);
25741 nd_set_line(RNODE_AND(node)->nd_2nd, op_loc->beg_pos.lineno);
25742 left->nd_loc.end_pos = loc->end_pos;
25745 op = NEW_AND_OR(
type, left, right, loc, op_loc);
25746 nd_set_line(op, op_loc->beg_pos.lineno);
25755 if (nd_type_p(node, NODE_BLOCK_PASS)) {
25756 compile_error(p,
"block argument should not be given");
25764 no_blockarg(p, node);
25765 if (nd_type_p(node, NODE_LIST) && !RNODE_LIST(node)->nd_next) {
25766 node = RNODE_LIST(node)->nd_head;
25773negate_lit(
struct parser_params *p, NODE* node,
const YYLTYPE *loc)
25775 switch (nd_type(node)) {
25777 RNODE_INTEGER(node)->minus = TRUE;
25780 RNODE_FLOAT(node)->minus = TRUE;
25782 case NODE_RATIONAL:
25783 RNODE_RATIONAL(node)->minus = TRUE;
25785 case NODE_IMAGINARY:
25786 RNODE_IMAGINARY(node)->minus = TRUE;
25789 node->nd_loc = *loc;
25794arg_blk_pass(NODE *node1, rb_node_block_pass_t *node2)
25797 if (!node1)
return (NODE *)node2;
25798 node2->nd_head = node1;
25799 nd_set_first_lineno(node2, nd_first_lineno(node1));
25800 nd_set_first_column(node2, nd_first_column(node1));
25801 return (NODE *)node2;
25809 if (args->pre_args_num)
return false;
25810 if (args->post_args_num)
return false;
25811 if (args->rest_arg)
return false;
25812 if (args->opt_args)
return false;
25813 if (args->block_arg)
return false;
25814 if (args->kw_args)
return false;
25815 if (args->kw_rest_arg)
return false;
25819static rb_node_args_t *
25820new_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)
25824 if (args->forwarding) {
25826 yyerror1(&RNODE(tail)->nd_loc,
"... after rest argument");
25829 rest_arg = idFWD_REST;
25832 args->pre_args_num = pre_args ? pre_args->nd_plen : 0;
25833 args->pre_init = pre_args ? pre_args->nd_next : 0;
25835 args->post_args_num = post_args ? post_args->nd_plen : 0;
25836 args->post_init = post_args ? post_args->nd_next : 0;
25837 args->first_post_arg = post_args ? post_args->nd_pid : 0;
25839 args->rest_arg = rest_arg;
25841 args->opt_args = opt_args;
25843 nd_set_loc(RNODE(tail), loc);
25848static rb_node_args_t *
25849new_args_tail(
struct parser_params *p, rb_node_kw_arg_t *kw_args,
ID kw_rest_arg,
ID block,
const YYLTYPE *kw_rest_loc)
25851 rb_node_args_t *node = NEW_ARGS(&NULL_LOC);
25853 if (p->error_p)
return node;
25855 args->block_arg = block;
25856 args->kw_args = kw_args;
25865 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
25866 struct vtable *vtargs = p->lvtbl->args;
25867 rb_node_kw_arg_t *kwn = kw_args;
25869 if (block) block = vtargs->tbl[vtargs->pos-1];
25870 vtable_pop(vtargs, !!block + !!kw_rest_arg);
25871 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
25873 if (!NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body)))
25875 --required_kw_vars;
25876 kwn = kwn->nd_next;
25879 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
25880 ID vid = get_nd_vid(p, kwn->nd_body);
25881 if (NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body))) {
25882 *required_kw_vars++ = vid;
25889 arg_var(p, kw_bits);
25890 if (kw_rest_arg) arg_var(p, kw_rest_arg);
25891 if (block) arg_var(p, block);
25893 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
25895 else if (kw_rest_arg == idNil) {
25896 args->no_kwarg = 1;
25898 else if (kw_rest_arg) {
25899 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
25905static rb_node_args_t *
25906args_with_numbered(
struct parser_params *p, rb_node_args_t *args,
int max_numparam,
ID it_id)
25908 if (max_numparam > NO_PARAM || it_id) {
25910 YYLTYPE loc = RUBY_INIT_YYLLOC();
25911 args = new_args_tail(p, 0, 0, 0, 0);
25912 nd_set_loc(RNODE(args), &loc);
25914 args->nd_ainfo.pre_args_num = it_id ? 1 : max_numparam;
25920new_array_pattern(
struct parser_params *p, NODE *constant, NODE *pre_arg, NODE *aryptn,
const YYLTYPE *loc)
25922 RNODE_ARYPTN(aryptn)->nd_pconst = constant;
25925 NODE *pre_args = NEW_LIST(pre_arg, loc);
25926 if (RNODE_ARYPTN(aryptn)->pre_args) {
25927 RNODE_ARYPTN(aryptn)->pre_args = list_concat(pre_args, RNODE_ARYPTN(aryptn)->pre_args);
25930 RNODE_ARYPTN(aryptn)->pre_args = pre_args;
25937new_array_pattern_tail(
struct parser_params *p, NODE *pre_args,
int has_rest, NODE *rest_arg, NODE *post_args,
const YYLTYPE *loc)
25940 rest_arg = rest_arg ? rest_arg : NODE_SPECIAL_NO_NAME_REST;
25945 NODE *node = NEW_ARYPTN(pre_args, rest_arg, post_args, loc);
25951new_find_pattern(
struct parser_params *p, NODE *constant, NODE *fndptn,
const YYLTYPE *loc)
25953 RNODE_FNDPTN(fndptn)->nd_pconst = constant;
25959new_find_pattern_tail(
struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg,
const YYLTYPE *loc)
25961 pre_rest_arg = pre_rest_arg ? pre_rest_arg : NODE_SPECIAL_NO_NAME_REST;
25962 post_rest_arg = post_rest_arg ? post_rest_arg : NODE_SPECIAL_NO_NAME_REST;
25963 NODE *node = NEW_FNDPTN(pre_rest_arg, args, post_rest_arg, loc);
25969new_hash_pattern(
struct parser_params *p, NODE *constant, NODE *hshptn,
const YYLTYPE *loc)
25971 RNODE_HSHPTN(hshptn)->nd_pconst = constant;
25976new_hash_pattern_tail(
struct parser_params *p, NODE *kw_args,
ID kw_rest_arg,
const YYLTYPE *loc)
25978 NODE *node, *kw_rest_arg_node;
25980 if (kw_rest_arg == idNil) {
25981 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
25983 else if (kw_rest_arg) {
25984 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
25987 kw_rest_arg_node = NULL;
25990 node = NEW_HSHPTN(0, kw_args, kw_rest_arg_node, loc);
25996dsym_node(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
25999 return NEW_SYM(STR_NEW0(), loc);
26002 switch (nd_type(node)) {
26004 nd_set_type(node, NODE_DSYM);
26005 nd_set_loc(node, loc);
26008 node = str_to_sym_node(p, node, loc);
26011 node = NEW_DSYM(0, 1, NEW_LIST(node, loc), loc);
26018nd_type_st_key_enable_p(NODE *node)
26020 switch (nd_type(node)) {
26023 case NODE_RATIONAL:
26024 case NODE_IMAGINARY:
26030 case NODE_ENCODING:
26040 switch (nd_type(node)) {
26042 return rb_node_str_string_val(node);
26044 return rb_node_integer_literal_val(node);
26046 return rb_node_float_literal_val(node);
26047 case NODE_RATIONAL:
26048 return rb_node_rational_literal_val(node);
26049 case NODE_IMAGINARY:
26050 return rb_node_imaginary_literal_val(node);
26052 return rb_node_sym_string_val(node);
26054 return rb_node_regx_string_val(node);
26056 return rb_node_line_lineno_val(node);
26057 case NODE_ENCODING:
26058 return rb_node_encoding_val(node);
26060 return rb_node_file_path_val(node);
26062 rb_bug(
"unexpected node: %s", ruby_node_name(nd_type(node)));
26071 p->warn_duplicate_keys_table = st_init_table_with_size(&literal_type, RNODE_LIST(hash)->as.nd_alen / 2);
26072 while (hash && RNODE_LIST(hash)->nd_next) {
26073 NODE *head = RNODE_LIST(hash)->nd_head;
26074 NODE *value = RNODE_LIST(hash)->nd_next;
26075 NODE *next = RNODE_LIST(value)->nd_next;
26084 if (nd_type_st_key_enable_p(head)) {
26085 key = (st_data_t)head;
26087 if (st_delete(p->warn_duplicate_keys_table, &key, &data)) {
26088 rb_warn2L(nd_line((NODE *)data),
26089 "key %+"PRIsWARN
" is duplicated and overwritten on line %d",
26090 nd_value(p, head), WARN_I(nd_line(head)));
26092 st_insert(p->warn_duplicate_keys_table, (st_data_t)key, (st_data_t)hash);
26096 st_free_table(p->warn_duplicate_keys_table);
26097 p->warn_duplicate_keys_table = NULL;
26101new_hash(
struct parser_params *p, NODE *hash,
const YYLTYPE *loc)
26103 if (hash) warn_duplicate_keys(p, hash);
26104 return NEW_HASH(hash, loc);
26108error_duplicate_pattern_variable(
struct parser_params *p,
ID id,
const YYLTYPE *loc)
26110 if (is_private_local_id(p,
id)) {
26113 if (st_is_member(p->pvtbl,
id)) {
26114 yyerror1(loc,
"duplicated variable name");
26116 else if (p->ctxt.in_alt_pattern &&
id) {
26117 yyerror1(loc,
"variable capture in alternative pattern");
26120 p->ctxt.capture_in_pattern = 1;
26121 st_insert(p->pvtbl, (st_data_t)
id, 0);
26129 p->pktbl = st_init_numtable();
26131 else if (st_is_member(p->pktbl, key)) {
26132 yyerror1(loc,
"duplicated key name");
26135 st_insert(p->pktbl, (st_data_t)key, 0);
26139new_unique_key_hash(
struct parser_params *p, NODE *hash,
const YYLTYPE *loc)
26141 return NEW_HASH(hash, loc);
26150 ID vid = get_nd_vid(p, lhs);
26151 YYLTYPE lhs_loc = lhs->nd_loc;
26153 set_nd_value(p, lhs, rhs);
26154 nd_set_loc(lhs, loc);
26155 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
26157 else if (op == tANDOP) {
26158 set_nd_value(p, lhs, rhs);
26159 nd_set_loc(lhs, loc);
26160 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
26164 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
26165 set_nd_value(p, asgn, rhs);
26166 nd_set_loc(asgn, loc);
26170 asgn = NEW_ERROR(loc);
26177 NODE *args,
ID op, NODE *rhs,
const YYLTYPE *args_loc,
const YYLTYPE *loc,
26178 const YYLTYPE *call_operator_loc,
const YYLTYPE *opening_loc,
const YYLTYPE *closing_loc,
const YYLTYPE *binary_operator_loc)
26182 aryset_check(p, args);
26183 args = make_list(args, args_loc);
26184 asgn = NEW_OP_ASGN1(ary, op, args, rhs, loc, call_operator_loc, opening_loc, closing_loc, binary_operator_loc);
26191 ID atype,
ID attr,
ID op, NODE *rhs,
const YYLTYPE *loc,
26192 const YYLTYPE *call_operator_loc,
const YYLTYPE *message_loc,
const YYLTYPE *binary_operator_loc)
26196 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc, call_operator_loc, message_loc, binary_operator_loc);
26207 asgn = NEW_OP_CDECL(lhs, op, rhs, ctxt.shareable_constant_value, loc);
26210 asgn = NEW_ERROR(loc);
26217const_decl(
struct parser_params *p, NODE *path,
const YYLTYPE *loc)
26219 if (p->ctxt.in_def) {
26221 yyerror1(loc,
"dynamic constant assignment");
26223 set_value(assign_error(p,
"dynamic constant assignment", p->s_lvalue));
26226 return NEW_CDECL(0, 0, (path), p->ctxt.shareable_constant_value, loc);
26233 a = dispatch2(assign_error, ERR_MESG(), a);
26240new_bodystmt(
struct parser_params *p, NODE *head, NODE *rescue, NODE *rescue_else, NODE *ensure,
const YYLTYPE *loc)
26242 NODE *result = head;
26244 NODE *tmp = rescue_else ? rescue_else : rescue;
26245 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
26247 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
26248 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
26251 result = NEW_ENSURE(result, ensure, loc);
26253 fixpos(result, head);
26262 if (!local->used)
return;
26263 cnt = local->used->pos;
26264 if (cnt != local->vars->pos) {
26265 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
26268 ID *v = local->vars->tbl;
26269 ID *u = local->used->tbl;
26270 for (
int i = 0; i < cnt; ++i) {
26271 if (!v[i] || (u[i] & LVAR_USED))
continue;
26272 if (is_private_local_id(p, v[i]))
continue;
26273 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
26282 int inherits_dvars = toplevel_scope && compile_for_eval;
26286 local->prev = p->lvtbl;
26287 local->args = vtable_alloc(0);
26288 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
26290 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
26291 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
26293 local->numparam.outer = 0;
26294 local->numparam.inner = 0;
26295 local->numparam.current = 0;
26297 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
26299# if WARN_PAST_SCOPE
26310 while (!DVARS_TERMINAL_P(table)) {
26311 struct vtable *cur_table = table;
26312 table = cur_table->prev;
26313 vtable_free(cur_table);
26320 vtable_chain_free(p, local->used);
26322# if WARN_PAST_SCOPE
26323 vtable_chain_free(p, local->past);
26326 vtable_chain_free(p, local->args);
26327 vtable_chain_free(p, local->vars);
26329 ruby_sized_xfree(local,
sizeof(
struct local_vars));
26336 if (p->lvtbl->used) {
26337 warn_unused_var(p, p->lvtbl);
26340 local_free(p, p->lvtbl);
26347static rb_ast_id_table_t *
26350 int cnt_args = vtable_size(p->lvtbl->args);
26351 int cnt_vars = vtable_size(p->lvtbl->vars);
26352 int cnt = cnt_args + cnt_vars;
26354 rb_ast_id_table_t *tbl;
26356 if (cnt <= 0)
return 0;
26357 tbl = rb_ast_new_local_table(p->ast, cnt);
26358 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
26360 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
26361 ID id = p->lvtbl->vars->tbl[i];
26362 if (!vtable_included(p->lvtbl->args,
id)) {
26363 tbl->ids[j++] = id;
26367 tbl = rb_ast_resize_latest_local_table(p->ast, j);
26376 if (!NUMPARAM_ID_P(
id))
return;
26377 compile_error(p,
"_%d is reserved for numbered parameter",
26378 NUMPARAM_ID_TO_IDX(
id));
26384 numparam_name(p,
id);
26385 vtable_add(p->lvtbl->args,
id);
26391 numparam_name(p,
id);
26392 vtable_add(p->lvtbl->vars,
id);
26393 if (p->lvtbl->used) {
26394 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
26402 return rb_local_defined(
id, iseq);
26409 struct vtable *vars, *args, *used;
26411 vars = p->lvtbl->vars;
26412 args = p->lvtbl->args;
26413 used = p->lvtbl->used;
26415 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26418 if (used) used = used->prev;
26421 if (vars && vars->prev == DVARS_INHERIT) {
26422 return rb_parser_local_defined(p,
id, p->parent_iseq);
26424 else if (vtable_included(args,
id)) {
26428 int i = vtable_included(vars,
id);
26429 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
26437 return local_id_ref(p,
id, NULL);
26443 if (local_id(p, idFWD_ALL))
return TRUE;
26444 compile_error(p,
"unexpected ...");
26451 arg_var(p, idFWD_REST);
26452 arg_var(p, idFWD_KWREST);
26453 arg_var(p, idFWD_BLOCK);
26454 arg_var(p, idFWD_ALL);
26460 bool conflict =
false;
26462 struct vtable *vars, *args;
26464 vars = p->lvtbl->vars;
26465 args = p->lvtbl->args;
26467 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
26468 conflict |= (vtable_included(args, arg) && !(all && vtable_included(args, all)));
26473 bool found =
false;
26474 if (vars && vars->prev == DVARS_INHERIT && !found) {
26475 found = (rb_parser_local_defined(p, arg, p->parent_iseq) &&
26476 !(all && rb_parser_local_defined(p, all, p->parent_iseq)));
26479 found = (vtable_included(args, arg) &&
26480 !(all && vtable_included(args, all)));
26484 compile_error(p,
"no anonymous %s parameter", var);
26486 else if (conflict) {
26487 compile_error(p,
"anonymous %s parameter is also used within block", var);
26492new_args_forward_call(
struct parser_params *p, NODE *leading,
const YYLTYPE *loc,
const YYLTYPE *argsloc)
26494 NODE *rest = NEW_LVAR(idFWD_REST, loc);
26495 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
26496 rb_node_block_pass_t *block = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, loc), argsloc, &NULL_LOC);
26497 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc, &NULL_LOC);
26498 block->forwarding = TRUE;
26499 args = arg_append(p, args, new_hash(p, kwrest, loc), argsloc);
26500 return arg_blk_pass(args, block);
26507 NODE *inner = local->numparam.inner;
26508 if (!local->numparam.outer) {
26509 local->numparam.outer = local->numparam.current;
26511 local->numparam.inner = 0;
26512 local->numparam.current = 0;
26523 local->numparam.inner = prev_inner;
26525 else if (local->numparam.current) {
26527 local->numparam.inner = local->numparam.current;
26529 if (p->max_numparam > NO_PARAM) {
26531 local->numparam.current = local->numparam.outer;
26532 local->numparam.outer = 0;
26536 local->numparam.current = 0;
26541static const struct vtable *
26544 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
26545 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
26546 if (p->lvtbl->used) {
26547 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
26549 return p->lvtbl->args;
26555 struct vtable *tmp = *vtblp;
26556 *vtblp = tmp->prev;
26557# if WARN_PAST_SCOPE
26558 if (p->past_scope_enabled) {
26559 tmp->prev = p->lvtbl->past;
26560 p->lvtbl->past = tmp;
26572 if ((tmp = p->lvtbl->used) != 0) {
26573 warn_unused_var(p, p->lvtbl);
26574 p->lvtbl->used = p->lvtbl->used->prev;
26577 dyna_pop_vtable(p, &p->lvtbl->args);
26578 dyna_pop_vtable(p, &p->lvtbl->vars);
26584 while (p->lvtbl->args != lvargs) {
26586 if (!p->lvtbl->args) {
26588 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
26598 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
26605 struct vtable *vars, *args, *used;
26608 args = p->lvtbl->args;
26609 vars = p->lvtbl->vars;
26610 used = p->lvtbl->used;
26612 while (!DVARS_TERMINAL_P(vars)) {
26613 if (vtable_included(args,
id)) {
26616 if ((i = vtable_included(vars,
id)) != 0) {
26617 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
26622 if (!vidrefp) used = 0;
26623 if (used) used = used->prev;
26626 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
26627 return rb_dvar_defined(
id, p->parent_iseq);
26637 return dvar_defined_ref(p,
id, NULL);
26643 return (vtable_included(p->lvtbl->args,
id) ||
26644 vtable_included(p->lvtbl->vars,
id));
26648reg_fragment_enc_error(
struct parser_params* p, rb_parser_string_t *str,
int c)
26651 "regexp encoding option '%c' differs from source encoding '%s'",
26652 c, rb_enc_name(rb_parser_str_get_encoding(str)));
26656static rb_encoding *
26659 int idx = rb_enc_find_index(name);
26661 rb_bug(
"unknown encoding name: %s", name);
26664 return rb_enc_from_index(idx);
26667static rb_encoding *
26673 case ENC_ASCII8BIT:
26677 enc = find_enc(p,
"EUC-JP");
26679 case ENC_Windows_31J:
26680 enc = find_enc(p,
"Windows-31J");
26694rb_reg_fragment_setenc(
struct parser_params* p, rb_parser_string_t *str,
int options)
26696 int c = RE_OPTION_ENCODING_IDX(options);
26702 char_to_option_kcode(c, &opt, &idx);
26703 enc = kcode_to_enc(p, idx);
26704 if (enc != rb_parser_str_get_encoding(str) &&
26705 !rb_parser_is_ascii_string(p, str)) {
26708 rb_parser_string_set_encoding(str, enc);
26710 else if (RE_OPTION_ENCODING_NONE(options)) {
26711 if (!PARSER_ENCODING_IS_ASCII8BIT(p, str) &&
26712 !rb_parser_is_ascii_string(p, str)) {
26718 else if (rb_is_usascii_enc(p->enc)) {
26729reg_fragment_setenc(
struct parser_params* p, rb_parser_string_t *str,
int options)
26731 int c = rb_reg_fragment_setenc(p, str, options);
26732 if (c) reg_fragment_enc_error(p, str, c);
26735#ifndef UNIVERSAL_PARSER
26741 rb_parser_assignable_func assignable;
26745reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
26746 int back_num,
int *back_refs, OnigRegex regex,
void *arg0)
26750 rb_encoding *enc = arg->enc;
26751 long len = name_end - name;
26752 const char *s = (
const char *)name;
26754 return rb_reg_named_capture_assign_iter_impl(p, s,
len, enc, &arg->succ_block, arg->loc, arg->assignable);
26758reg_named_capture_assign(
struct parser_params* p,
VALUE regexp,
const YYLTYPE *loc, rb_parser_assignable_func assignable)
26763 arg.enc = rb_enc_get(regexp);
26764 arg.succ_block = 0;
26766 arg.assignable = assignable;
26767 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
26769 if (!arg.succ_block)
return 0;
26770 return RNODE_BLOCK(arg.succ_block)->nd_next;
26776rb_parser_assignable(
struct parser_params *p,
ID id, NODE *val,
const YYLTYPE *loc)
26778 return assignable(p,
id, val, loc);
26782rb_reg_named_capture_assign_iter_impl(
struct parser_params *p,
const char *s,
long len,
26783 rb_encoding *enc, NODE **succ_block,
const rb_code_location_t *loc, rb_parser_assignable_func assignable)
26788 if (!
len)
return ST_CONTINUE;
26789 if (!VALID_SYMNAME_P(s,
len, enc, ID_LOCAL))
26790 return ST_CONTINUE;
26792 var = intern_cstr(s,
len, enc);
26793 if (
len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)
len)) {
26794 if (!lvar_defined(p, var))
return ST_CONTINUE;
26796 node = node_assign(p, assignable(p, var, 0, loc), NEW_SYM(rb_id2str(var), loc), NO_LEX_CTXT, loc);
26797 succ = *succ_block;
26798 if (!succ) succ = NEW_ERROR(loc);
26799 succ = block_append(p, succ, node);
26800 *succ_block = succ;
26801 return ST_CONTINUE;
26806parser_reg_compile(
struct parser_params* p, rb_parser_string_t *str,
int options)
26809 reg_fragment_setenc(p, str, options);
26810 str2 = rb_str_new_parser_string(str);
26811 return rb_parser_reg_compile(p, str2, options);
26818 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
26823reg_compile(
struct parser_params* p, rb_parser_string_t *str,
int options)
26829 re = parser_reg_compile(p, str, options);
26832 rb_set_errinfo(err);
26833 compile_error(p,
"%"PRIsVALUE, m);
26841rb_ruby_parser_set_options(
struct parser_params *p,
int print,
int loop,
int chomp,
int split)
26843 p->do_print = print;
26845 p->do_chomp = chomp;
26846 p->do_split = split;
26852 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
26853 const YYLTYPE *
const LOC = &default_location;
26856 NODE *print = (NODE *)NEW_FCALL(rb_intern(
"print"),
26857 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
26859 node = block_append(p, node, print);
26863 NODE *irs = NEW_LIST(NEW_GVAR(rb_intern(
"$/"), LOC), LOC);
26866 ID ifs = rb_intern(
"$;");
26867 ID fields = rb_intern(
"$F");
26868 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
26869 NODE *split = NEW_GASGN(fields,
26870 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
26871 rb_intern(
"split"), args, LOC),
26873 node = block_append(p, split, node);
26877 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
26878 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
26881 node = NEW_WHILE((NODE *)NEW_FCALL(idGets, irs, LOC), node, 1, LOC, &NULL_LOC, &NULL_LOC);
26898 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
26906 p->command_start = TRUE;
26907 p->ruby_sourcefile_string =
Qnil;
26908 p->lex.lpar_beg = -1;
26909 string_buffer_init(p);
26911 p->delayed.token = NULL;
26912 p->frozen_string_literal = -1;
26914 p->error_buffer =
Qfalse;
26915 p->end_expect_token_locations = NULL;
26920 p->parsing_thread =
Qnil;
26922 p->s_lvalue =
Qnil;
26925 p->debug_buffer =
Qnil;
26932#define rb_ruby_parser_mark ripper_parser_mark
26933#define rb_ruby_parser_free ripper_parser_free
26934#define rb_ruby_parser_memsize ripper_parser_memsize
26938rb_ruby_parser_mark(
void *ptr)
26942 rb_gc_mark(p->ruby_sourcefile_string);
26944 rb_gc_mark(p->error_buffer);
26946 rb_gc_mark(p->value);
26947 rb_gc_mark(p->result);
26948 rb_gc_mark(p->parsing_thread);
26949 rb_gc_mark(p->s_value);
26950 rb_gc_mark(p->s_lvalue);
26951 rb_gc_mark(p->s_value_stack);
26953 rb_gc_mark(p->debug_buffer);
26954 rb_gc_mark(p->debug_output);
26958rb_ruby_parser_free(
void *ptr)
26964 rb_ast_free(p->ast);
26967 if (p->warn_duplicate_keys_table) {
26968 st_free_table(p->warn_duplicate_keys_table);
26973 rb_parser_ary_free(p, p->tokens);
26978 ruby_sized_xfree(p->tokenbuf, p->toksiz);
26981 for (local = p->lvtbl; local; local = prev) {
26982 prev = local->prev;
26983 local_free(p, local);
26988 while ((ptinfo = p->token_info) != 0) {
26989 p->token_info = ptinfo->next;
26993 string_buffer_free(p);
26996 st_free_table(p->pvtbl);
26999 if (CASE_LABELS_ENABLED_P(p->case_labels)) {
27000 st_free_table(p->case_labels);
27003 xfree(p->lex.strterm);
27004 p->lex.strterm = 0;
27010rb_ruby_parser_memsize(
const void *ptr)
27014 size_t size =
sizeof(*p);
27017 for (local = p->lvtbl; local; local = local->prev) {
27018 size +=
sizeof(*local);
27019 if (local->vars) size += local->vars->capa *
sizeof(
ID);
27025#undef rb_reserved_word
27028rb_reserved_word(
const char *str,
unsigned int len)
27030 return reserved_word(str,
len);
27033#ifdef UNIVERSAL_PARSER
27035rb_ruby_parser_allocate(
const rb_parser_config_t *config)
27038 rb_parser_t *p = (rb_parser_t *)config->calloc(1,
sizeof(rb_parser_t));
27039 p->config = config;
27044rb_ruby_parser_new(
const rb_parser_config_t *config)
27047 rb_parser_t *p = rb_ruby_parser_allocate(config);
27048 parser_initialize(p);
27053rb_ruby_parser_allocate(
void)
27056 rb_parser_t *p = (rb_parser_t *)ruby_xcalloc(1,
sizeof(rb_parser_t));
27061rb_ruby_parser_new(
void)
27064 rb_parser_t *p = rb_ruby_parser_allocate();
27065 parser_initialize(p);
27071rb_ruby_parser_set_context(rb_parser_t *p,
const struct rb_iseq_struct *base,
int main)
27074 p->parent_iseq = base;
27079rb_ruby_parser_set_script_lines(rb_parser_t *p)
27081 p->debug_lines = rb_parser_ary_new_capa_for_script_line(p, 10);
27085rb_ruby_parser_error_tolerant(rb_parser_t *p)
27087 p->error_tolerant = 1;
27091rb_ruby_parser_keep_tokens(rb_parser_t *p)
27093 p->keep_tokens = 1;
27094 p->tokens = rb_parser_ary_new_capa_for_ast_token(p, 10);
27098rb_ruby_parser_encoding(rb_parser_t *p)
27104rb_ruby_parser_end_seen_p(rb_parser_t *p)
27106 return p->ruby__end__seen;
27110rb_ruby_parser_set_yydebug(rb_parser_t *p,
int flag)
27119rb_ruby_parser_get_yydebug(rb_parser_t *p)
27125rb_ruby_parser_set_value(rb_parser_t *p,
VALUE value)
27131rb_ruby_parser_error_p(rb_parser_t *p)
27137rb_ruby_parser_debug_output(rb_parser_t *p)
27139 return p->debug_output;
27143rb_ruby_parser_set_debug_output(rb_parser_t *p,
VALUE output)
27145 p->debug_output = output;
27149rb_ruby_parser_parsing_thread(rb_parser_t *p)
27151 return p->parsing_thread;
27155rb_ruby_parser_set_parsing_thread(rb_parser_t *p,
VALUE parsing_thread)
27157 p->parsing_thread = parsing_thread;
27161rb_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)
27163 p->lex.gets = gets;
27164 p->lex.input = input;
27166 p->ruby_sourcefile_string = sourcefile_string;
27167 p->ruby_sourcefile = sourcefile;
27168 p->ruby_sourceline = sourceline;
27172rb_ruby_parser_result(rb_parser_t *p)
27178rb_ruby_parser_enc(rb_parser_t *p)
27184rb_ruby_parser_ruby_sourcefile_string(rb_parser_t *p)
27186 return p->ruby_sourcefile_string;
27190rb_ruby_parser_ruby_sourceline(rb_parser_t *p)
27192 return p->ruby_sourceline;
27196rb_ruby_parser_lex_state(rb_parser_t *p)
27198 return p->lex.state;
27202rb_ruby_ripper_parse0(rb_parser_t *p)
27205 p->ast = rb_ast_new();
27206 ripper_yyparse((
void*)p);
27207 rb_ast_free(p->ast);
27210 p->eval_tree_begin = 0;
27214rb_ruby_ripper_dedent_string(rb_parser_t *p, rb_parser_string_t *
string,
int width)
27216 return dedent_string(p,
string, width);
27220rb_ruby_ripper_initialized_p(rb_parser_t *p)
27222 return p->lex.input != 0;
27226rb_ruby_ripper_parser_initialize(rb_parser_t *p)
27228 parser_initialize(p);
27232rb_ruby_ripper_column(rb_parser_t *p)
27234 return p->lex.ptok - p->lex.pbeg;
27238rb_ruby_ripper_token_len(rb_parser_t *p)
27240 return p->lex.pcur - p->lex.ptok;
27243rb_parser_string_t *
27244rb_ruby_ripper_lex_lastline(rb_parser_t *p)
27246 return p->lex.lastline;
27250rb_ruby_ripper_lex_state_name(
struct parser_params *p,
int state)
27252 return rb_parser_lex_state_name(p, (
enum lex_state_e)state);
27255#ifdef UNIVERSAL_PARSER
27257rb_ripper_parser_params_allocate(
const rb_parser_config_t *config)
27259 rb_parser_t *p = (rb_parser_t *)config->calloc(1,
sizeof(rb_parser_t));
27260 p->config = config;
27266rb_ruby_ripper_parser_allocate(
void)
27274rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
27277 VALUE mesg = p->debug_buffer;
27281 rb_str_vcatf(mesg, fmt, ap);
27283 if (char_at_end(p, mesg, 0) ==
'\n') {
27284 rb_io_write(p->debug_output, mesg);
27285 p->debug_buffer =
Qnil;
27290parser_compile_error(
struct parser_params *p,
const rb_code_location_t *loc,
const char *fmt, ...)
27293 int lineno, column;
27296 lineno = loc->end_pos.lineno;
27297 column = loc->end_pos.column;
27300 lineno = p->ruby_sourceline;
27304 rb_io_flush(p->debug_output);
27308 rb_syntax_error_append(p->error_buffer,
27309 p->ruby_sourcefile_string,
27316count_char(
const char *str,
int c)
27319 while (str[n] == c) ++n;
27330rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
27332 if (*yystr ==
'"') {
27333 size_t yyn = 0, bquote = 0;
27334 const char *yyp = yystr;
27340 bquote = count_char(yyp+1,
'\'') + 1;
27341 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
27347 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
27348 if (yyres) memcpy(yyres + yyn, yyp, bquote);
27354 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
27355 if (yyres) memcpy(yyres + yyn, yyp, 3);
27360 goto do_not_strip_quotes;
27364 goto do_not_strip_quotes;
27367 if (*++yyp !=
'\\')
27368 goto do_not_strip_quotes;
27383 do_not_strip_quotes: ;
27386 if (!yyres)
return strlen(yystr);
27388 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
27393#define validate(x) (void)(x)
27422 return rb_funcall(p->value, mid, 3, a, b, c);
27432 return rb_funcall(p->value, mid, 4, a, b, c, d);
27443 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
27456 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_errinfo(void)
This is the same as $! in Ruby.
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.
rb_encoding * rb_utf8_encoding(void)
Queries the encoding that represents UTF-8.
rb_encoding * rb_ascii8bit_encoding(void)
Queries the encoding that represents ASCII-8BIT a.k.a.
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.
VALUE rb_make_backtrace(void)
Creates the good old fashioned array-of-strings style backtrace info.
ID rb_sym2id(VALUE obj)
Converts an instance of rb_cSymbol into an ID.
int capa
Designed capacity of the buffer.
int off
Offset inside of ptr.
int len
Length of the buffer.
VALUE rb_ractor_stderr(void)
Queries the standard error of the current Ractor that is calling this function.
VALUE rb_ractor_stdout(void)
Queries the standard output of the current Ractor that is calling this function.
#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.