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)
334 return parse_isalpha(c) || parse_isdigit(c);
338#define ISALNUM(c) parse_isalnum(c)
343 return parse_isdigit(c) || (
'A' <= c && c <=
'F') || (
'a' <= c && c <=
'f');
347#define ISXDIGIT(c) parse_isxdigit(c)
349#include "parser_st.h"
352#define STRCASECMP rb_parser_st_locale_insensitive_strcasecmp
355#define STRNCASECMP rb_parser_st_locale_insensitive_strncasecmp
358#include "ripper_init.h"
369 unsigned int in_defined: 1;
370 unsigned int in_kwarg: 1;
371 unsigned int in_argdef: 1;
372 unsigned int in_def: 1;
373 unsigned int in_class: 1;
374 BITFIELD(
enum rb_parser_shareability, shareable_constant_value, 2);
375 BITFIELD(
enum rescue_context, in_rescue, 2);
376 unsigned int cant_return: 1;
381#if defined(__GNUC__) && !defined(__clang__)
393#define NO_LEX_CTXT (struct lex_context){0}
395#ifndef WARN_PAST_SCOPE
396# define WARN_PAST_SCOPE 0
401#define yydebug (p->debug)
403#define YYFPRINTF(out, ...) rb_parser_printf(p, __VA_ARGS__)
404#define YY_LOCATION_PRINT(File, loc, p) \
405 rb_parser_printf(p, "%d.%d-%d.%d", \
406 (loc).beg_pos.lineno, (loc).beg_pos.column,\
407 (loc).end_pos.lineno, (loc).end_pos.column)
408#define YYLLOC_DEFAULT(Current, Rhs, N) \
412 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
413 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
417 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
418 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
422 (((Msgid)[0] == 'm') && (strcmp((Msgid), "memory exhausted") == 0) ? \
423 "nesting too deep" : (Msgid))
425#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
426 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
427#define RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(Current) \
428 rb_parser_set_location_of_delayed_token(p, &(Current))
429#define RUBY_SET_YYLLOC_OF_HEREDOC_END(Current) \
430 rb_parser_set_location_of_heredoc_end(p, &(Current))
431#define RUBY_SET_YYLLOC_OF_DUMMY_END(Current) \
432 rb_parser_set_location_of_dummy_end(p, &(Current))
433#define RUBY_SET_YYLLOC_OF_NONE(Current) \
434 rb_parser_set_location_of_none(p, &(Current))
435#define RUBY_SET_YYLLOC(Current) \
436 rb_parser_set_location(p, &(Current))
437#define RUBY_INIT_YYLLOC() \
439 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
440 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
443#define IS_lex_state_for(x, ls) ((x) & (ls))
444#define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
445#define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
446#define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
448# define SET_LEX_STATE(ls) \
449 parser_set_lex_state(p, ls, __LINE__)
450static inline enum lex_state_e parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line);
452typedef VALUE stack_type;
454static const rb_code_location_t NULL_LOC = { {0, -1}, {0, -1} };
456# define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
457# define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
458# define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
459# define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
460# define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
464#define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
465#define COND_POP() BITSTACK_POP(cond_stack)
466#define COND_P() BITSTACK_SET_P(cond_stack)
467#define COND_SET(n) BITSTACK_SET(cond_stack, (n))
471#define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
472#define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
473#define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
474#define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
492 NODE *outer, *inner, *current;
503#define DVARS_INHERIT ((void*)1)
504#define DVARS_TOPSCOPE NULL
505#define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
509 rb_code_position_t beg;
516 const rb_code_position_t *pos;
518} end_expect_token_locations_t;
524 rb_parser_string_t *buf[FLEX_ARY_LEN];
525} parser_string_buffer_elem_t;
528 parser_string_buffer_elem_t *head;
529 parser_string_buffer_elem_t *last;
530} parser_string_buffer_t;
532#define AFTER_HEREDOC_WITHOUT_TERMINTOR ((rb_parser_string_t *)1)
548 rb_strterm_t *strterm;
549 rb_parser_lex_gets_func *gets;
550 rb_parser_input_data input;
551 parser_string_buffer_t string_buffer;
552 rb_parser_string_t *lastline;
553 rb_parser_string_t *nextline;
558 enum lex_state_e state;
566 stack_type cond_stack;
567 stack_type cmdarg_stack;
572 int heredoc_line_indent;
579 const char *ruby_sourcefile;
580 VALUE ruby_sourcefile_string;
582 token_info *token_info;
584 rb_node_exits_t *exits;
590 rb_parser_string_t *token;
600 st_table *warn_duplicate_keys_table;
607 NODE *eval_tree_begin;
611#ifdef UNIVERSAL_PARSER
612 const rb_parser_config_t *config;
615 signed int frozen_string_literal:2;
617 unsigned int command_start:1;
618 unsigned int eofp: 1;
619 unsigned int ruby__end__seen: 1;
620 unsigned int debug: 1;
621 unsigned int has_shebang: 1;
622 unsigned int token_seen: 1;
623 unsigned int token_info_enabled: 1;
625 unsigned int past_scope_enabled: 1;
627 unsigned int error_p: 1;
628 unsigned int cr_seen: 1;
633 unsigned int do_print: 1;
634 unsigned int do_loop: 1;
635 unsigned int do_chomp: 1;
636 unsigned int do_split: 1;
637 unsigned int error_tolerant: 1;
638 unsigned int keep_tokens: 1;
641 rb_parser_ary_t *debug_lines;
646 end_expect_token_locations_t *end_expect_token_locations;
650 rb_parser_ary_t *tokens;
656 VALUE parsing_thread;
663#define NUMPARAM_ID_P(id) numparam_id_p(p, id)
664#define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - (tNUMPARAM_1 - 1))
665#define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 - 1 + (idx)))
669 if (!is_local_id(
id) ||
id < (tNUMPARAM_1 << ID_SCOPE_SHIFT))
return 0;
670 unsigned int idx = NUMPARAM_ID_TO_IDX(
id);
671 return idx > 0 && idx <= NUMPARAM_MAX;
680 rb_parser_printf(p,
"after-shift: %+"PRIsVALUE
"\n", p->s_value);
682 rb_ary_push(p->s_value_stack, p->s_value);
690 if (
len) p->s_lvalue = rb_ary_entry(p->s_value_stack, -
len);
696 for (
int i = 0; i <
len; i++) {
697 VALUE tos = rb_ary_pop(p->s_value_stack);
699 rb_parser_printf(p,
"after-reduce pop: %+"PRIsVALUE
"\n", tos);
703 rb_parser_printf(p,
"after-reduce push: %+"PRIsVALUE
"\n", p->s_lvalue);
705 rb_ary_push(p->s_value_stack, p->s_lvalue);
713 rb_parser_printf(p,
"after-shift-error-token:\n");
715 rb_ary_push(p->s_value_stack,
Qnil);
721 for (
int i = 0; i <
len; i++) {
722 VALUE tos = rb_ary_pop(p->s_value_stack);
724 rb_parser_printf(p,
"after-pop-stack pop: %+"PRIsVALUE
"\n", tos);
755#define intern_cstr(n,l,en) rb_intern3(n,l,en)
757#define STRING_NEW0() rb_parser_encoding_string_new(p,0,0,p->enc)
759#define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
760#define STR_NEW0() rb_enc_str_new(0,0,p->enc)
761#define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
762#define STR_NEW3(ptr,len,e,func) parser_str_new(p, (ptr),(len),(e),(func),p->enc)
763#define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
764#define VALID_SYMNAME_P(s, l, enc, type) (rb_enc_symname_type(s, l, enc, (1U<<(type))) == (int)(type))
770 long len = RSTRING_LEN(str);
771 return len > 0 ? (
unsigned char)RSTRING_PTR(str)[
len-1] : when_empty;
778 st_free_table(p->pvtbl);
785 if (p->pktbl) st_free_table(p->pktbl);
789#define STRING_BUF_DEFAULT_LEN 16
794 parser_string_buffer_t *buf = &p->lex.string_buffer;
795 const size_t size = offsetof(parser_string_buffer_elem_t, buf) +
sizeof(rb_parser_string_t *) * STRING_BUF_DEFAULT_LEN;
797 buf->head = buf->last =
xmalloc(size);
798 buf->head->len = STRING_BUF_DEFAULT_LEN;
800 buf->head->next = NULL;
804string_buffer_append(
struct parser_params *p, rb_parser_string_t *str)
806 parser_string_buffer_t *buf = &p->lex.string_buffer;
808 if (buf->head->used >= buf->head->len) {
809 parser_string_buffer_elem_t *elem;
810 long n = buf->head->len * 2;
811 const size_t size = offsetof(parser_string_buffer_elem_t, buf) +
sizeof(rb_parser_string_t *) * n;
817 buf->last->next = elem;
820 buf->last->buf[buf->last->used++] = str;
826 parser_string_buffer_elem_t *elem = p->lex.string_buffer.head;
829 parser_string_buffer_elem_t *next_elem = elem->next;
831 for (
long i = 0; i < elem->used; i++) {
832 rb_parser_string_free(p, elem->buf[i]);
844debug_end_expect_token_locations(
struct parser_params *p,
const char *name)
847 VALUE mesg = rb_sprintf(
"%s: [", name);
849 for (end_expect_token_locations_t *loc = p->end_expect_token_locations; loc; loc = loc->prev) {
852 rb_str_catf(mesg,
"[%d, %d]", loc->pos->lineno, loc->pos->column);
856 flush_debug_buffer(p, p->debug_output, mesg);
861push_end_expect_token_locations(
struct parser_params *p,
const rb_code_position_t *pos)
863 if(!p->error_tolerant)
return;
865 end_expect_token_locations_t *locations;
866 locations =
ALLOC(end_expect_token_locations_t);
867 locations->pos = pos;
868 locations->prev = p->end_expect_token_locations;
869 p->end_expect_token_locations = locations;
871 debug_end_expect_token_locations(p,
"push_end_expect_token_locations");
877 if(!p->end_expect_token_locations)
return;
879 end_expect_token_locations_t *locations = p->end_expect_token_locations->prev;
880 ruby_sized_xfree(p->end_expect_token_locations,
sizeof(end_expect_token_locations_t));
881 p->end_expect_token_locations = locations;
883 debug_end_expect_token_locations(p,
"pop_end_expect_token_locations");
886static end_expect_token_locations_t *
889 return p->end_expect_token_locations;
893parser_token2char(
struct parser_params *p,
enum yytokentype tok)
896#define TOKEN2CHAR(tok) case tok: return (#tok);
897#define TOKEN2CHAR2(tok, name) case tok: return (name);
898 TOKEN2CHAR2(
' ',
"word_sep");
899 TOKEN2CHAR2(
'!',
"!")
900 TOKEN2CHAR2(
'%',
"%");
901 TOKEN2CHAR2(
'&',
"&");
902 TOKEN2CHAR2(
'*',
"*");
903 TOKEN2CHAR2(
'+',
"+");
904 TOKEN2CHAR2(
'-',
"-");
905 TOKEN2CHAR2(
'/',
"/");
906 TOKEN2CHAR2(
'<',
"<");
907 TOKEN2CHAR2(
'=',
"=");
908 TOKEN2CHAR2(
'>',
">");
909 TOKEN2CHAR2(
'?',
"?");
910 TOKEN2CHAR2(
'^',
"^");
911 TOKEN2CHAR2(
'|',
"|");
912 TOKEN2CHAR2(
'~',
"~");
913 TOKEN2CHAR2(
':',
":");
914 TOKEN2CHAR2(
',',
",");
915 TOKEN2CHAR2(
'.',
".");
916 TOKEN2CHAR2(
';',
";");
917 TOKEN2CHAR2(
'`',
"`");
918 TOKEN2CHAR2(
'\n',
"nl");
919 TOKEN2CHAR2(
'{',
"\"{\"");
920 TOKEN2CHAR2(
'}',
"\"}\"");
921 TOKEN2CHAR2(
'[',
"\"[\"");
922 TOKEN2CHAR2(
']',
"\"]\"");
923 TOKEN2CHAR2(
'(',
"\"(\"");
924 TOKEN2CHAR2(
')',
"\")\"");
925 TOKEN2CHAR2(
'\\',
"backslash");
926 TOKEN2CHAR(keyword_class);
927 TOKEN2CHAR(keyword_module);
928 TOKEN2CHAR(keyword_def);
929 TOKEN2CHAR(keyword_undef);
930 TOKEN2CHAR(keyword_begin);
931 TOKEN2CHAR(keyword_rescue);
932 TOKEN2CHAR(keyword_ensure);
933 TOKEN2CHAR(keyword_end);
934 TOKEN2CHAR(keyword_if);
935 TOKEN2CHAR(keyword_unless);
936 TOKEN2CHAR(keyword_then);
937 TOKEN2CHAR(keyword_elsif);
938 TOKEN2CHAR(keyword_else);
939 TOKEN2CHAR(keyword_case);
940 TOKEN2CHAR(keyword_when);
941 TOKEN2CHAR(keyword_while);
942 TOKEN2CHAR(keyword_until);
943 TOKEN2CHAR(keyword_for);
944 TOKEN2CHAR(keyword_break);
945 TOKEN2CHAR(keyword_next);
946 TOKEN2CHAR(keyword_redo);
947 TOKEN2CHAR(keyword_retry);
948 TOKEN2CHAR(keyword_in);
949 TOKEN2CHAR(keyword_do);
950 TOKEN2CHAR(keyword_do_cond);
951 TOKEN2CHAR(keyword_do_block);
952 TOKEN2CHAR(keyword_do_LAMBDA);
953 TOKEN2CHAR(keyword_return);
954 TOKEN2CHAR(keyword_yield);
955 TOKEN2CHAR(keyword_super);
956 TOKEN2CHAR(keyword_self);
957 TOKEN2CHAR(keyword_nil);
958 TOKEN2CHAR(keyword_true);
959 TOKEN2CHAR(keyword_false);
960 TOKEN2CHAR(keyword_and);
961 TOKEN2CHAR(keyword_or);
962 TOKEN2CHAR(keyword_not);
963 TOKEN2CHAR(modifier_if);
964 TOKEN2CHAR(modifier_unless);
965 TOKEN2CHAR(modifier_while);
966 TOKEN2CHAR(modifier_until);
967 TOKEN2CHAR(modifier_rescue);
968 TOKEN2CHAR(keyword_alias);
969 TOKEN2CHAR(keyword_defined);
970 TOKEN2CHAR(keyword_BEGIN);
971 TOKEN2CHAR(keyword_END);
972 TOKEN2CHAR(keyword__LINE__);
973 TOKEN2CHAR(keyword__FILE__);
974 TOKEN2CHAR(keyword__ENCODING__);
975 TOKEN2CHAR(tIDENTIFIER);
979 TOKEN2CHAR(tCONSTANT);
982 TOKEN2CHAR(tINTEGER);
984 TOKEN2CHAR(tRATIONAL);
985 TOKEN2CHAR(tIMAGINARY);
987 TOKEN2CHAR(tNTH_REF);
988 TOKEN2CHAR(tBACK_REF);
989 TOKEN2CHAR(tSTRING_CONTENT);
990 TOKEN2CHAR(tREGEXP_END);
991 TOKEN2CHAR(tDUMNY_END);
1005 TOKEN2CHAR(tNMATCH);
1014 TOKEN2CHAR(tANDDOT);
1015 TOKEN2CHAR(tCOLON2);
1016 TOKEN2CHAR(tCOLON3);
1017 TOKEN2CHAR(tOP_ASGN);
1019 TOKEN2CHAR(tLPAREN);
1020 TOKEN2CHAR(tLPAREN_ARG);
1021 TOKEN2CHAR(tRPAREN);
1022 TOKEN2CHAR(tLBRACK);
1023 TOKEN2CHAR(tLBRACE);
1024 TOKEN2CHAR(tLBRACE_ARG);
1028 TOKEN2CHAR(tLAMBDA);
1029 TOKEN2CHAR(tSYMBEG);
1030 TOKEN2CHAR(tSTRING_BEG);
1031 TOKEN2CHAR(tXSTRING_BEG);
1032 TOKEN2CHAR(tREGEXP_BEG);
1033 TOKEN2CHAR(tWORDS_BEG);
1034 TOKEN2CHAR(tQWORDS_BEG);
1035 TOKEN2CHAR(tSYMBOLS_BEG);
1036 TOKEN2CHAR(tQSYMBOLS_BEG);
1037 TOKEN2CHAR(tSTRING_END);
1038 TOKEN2CHAR(tSTRING_DEND);
1039 TOKEN2CHAR(tSTRING_DBEG);
1040 TOKEN2CHAR(tSTRING_DVAR);
1041 TOKEN2CHAR(tLAMBEG);
1042 TOKEN2CHAR(tLABEL_END);
1043 TOKEN2CHAR(tIGNORED_NL);
1044 TOKEN2CHAR(tCOMMENT);
1045 TOKEN2CHAR(tEMBDOC_BEG);
1046 TOKEN2CHAR(tEMBDOC);
1047 TOKEN2CHAR(tEMBDOC_END);
1048 TOKEN2CHAR(tHEREDOC_BEG);
1049 TOKEN2CHAR(tHEREDOC_END);
1050 TOKEN2CHAR(k__END__);
1051 TOKEN2CHAR(tLOWEST);
1052 TOKEN2CHAR(tUMINUS_NUM);
1053 TOKEN2CHAR(tLAST_TOKEN);
1058 rb_bug(
"parser_token2id: unknown token %d", tok);
1064push_end_expect_token_locations(
struct parser_params *p,
const rb_code_position_t *pos)
1075static
int parser_yyerror(struct
parser_params*, const YYLTYPE *yylloc, const
char*);
1077static
int parser_yyerror0(struct
parser_params*, const
char*);
1078#define yyerror0(msg) parser_yyerror0(p, (msg))
1079#define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
1080#define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
1081#define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
1082#define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
1083#define lex_eol_p(p) lex_eol_n_p(p, 0)
1084#define lex_eol_n_p(p,n) lex_eol_ptr_n_p(p, (p)->lex.pcur, n)
1085#define lex_eol_ptr_p(p,ptr) lex_eol_ptr_n_p(p,ptr,0)
1086#define lex_eol_ptr_n_p(p,ptr,n) ((ptr)+(n) >= (p)->lex.pend)
1088static void token_info_setup(
token_info *ptinfo,
const char *ptr,
const rb_code_location_t *loc);
1089static void token_info_push(
struct parser_params*,
const char *token,
const rb_code_location_t *loc);
1090static void token_info_pop(
struct parser_params*,
const char *token,
const rb_code_location_t *loc);
1091static void token_info_warn(
struct parser_params *p,
const char *token,
token_info *ptinfo_beg,
int same,
const rb_code_location_t *loc);
1092static void token_info_drop(
struct parser_params *p,
const char *token, rb_code_position_t beg_pos);
1095#define compile_for_eval (0)
1097#define compile_for_eval (p->parent_iseq != 0)
1100#define token_column ((int)(p->lex.ptok - p->lex.pbeg))
1102#define CALL_Q_P(q) ((q) == tANDDOT)
1103#define NEW_QCALL(q,r,m,a,loc) (CALL_Q_P(q) ? NEW_QCALL0(r,m,a,loc) : NEW_CALL(r,m,a,loc))
1105#define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
1112 rb_ast_delete_node(p->ast, n);
1115static rb_node_scope_t *rb_node_scope_new(
struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body,
const YYLTYPE *loc);
1116static rb_node_scope_t *rb_node_scope_new2(
struct parser_params *p, rb_ast_id_table_t *nd_tbl, rb_node_args_t *nd_args, NODE *nd_body,
const YYLTYPE *loc);
1117static rb_node_block_t *rb_node_block_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc);
1118static rb_node_if_t *rb_node_if_new(
struct parser_params *p, NODE *nd_cond, NODE *nd_body, NODE *nd_else,
const YYLTYPE *loc);
1119static 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);
1120static 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);
1121static 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);
1122static 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);
1123static 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);
1124static rb_node_in_t *rb_node_in_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body, NODE *nd_next,
const YYLTYPE *loc);
1125static 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);
1126static 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);
1127static rb_node_iter_t *rb_node_iter_new(
struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body,
const YYLTYPE *loc);
1128static rb_node_for_t *rb_node_for_new(
struct parser_params *p, NODE *nd_iter, NODE *nd_body,
const YYLTYPE *loc);
1129static rb_node_for_masgn_t *rb_node_for_masgn_new(
struct parser_params *p, NODE *nd_var,
const YYLTYPE *loc);
1130static rb_node_retry_t *rb_node_retry_new(
struct parser_params *p,
const YYLTYPE *loc);
1131static rb_node_begin_t *rb_node_begin_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc);
1132static rb_node_rescue_t *rb_node_rescue_new(
struct parser_params *p, NODE *nd_head, NODE *nd_resq, NODE *nd_else,
const YYLTYPE *loc);
1133static 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);
1134static rb_node_ensure_t *rb_node_ensure_new(
struct parser_params *p, NODE *nd_head, NODE *nd_ensr,
const YYLTYPE *loc);
1135static 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);
1136static 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);
1137static rb_node_masgn_t *rb_node_masgn_new(
struct parser_params *p, NODE *nd_head, NODE *nd_args,
const YYLTYPE *loc);
1138static rb_node_lasgn_t *rb_node_lasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc);
1139static rb_node_dasgn_t *rb_node_dasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc);
1140static rb_node_gasgn_t *rb_node_gasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc);
1141static rb_node_iasgn_t *rb_node_iasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc);
1142static 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);
1143static rb_node_cvasgn_t *rb_node_cvasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc);
1144static 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);
1145static 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);
1146static 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);
1147static 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);
1148static 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);
1149static rb_node_call_t *rb_node_call_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc);
1150static rb_node_opcall_t *rb_node_opcall_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc);
1151static rb_node_fcall_t *rb_node_fcall_new(
struct parser_params *p,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc);
1152static rb_node_vcall_t *rb_node_vcall_new(
struct parser_params *p,
ID nd_mid,
const YYLTYPE *loc);
1153static rb_node_qcall_t *rb_node_qcall_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc);
1154static rb_node_super_t *rb_node_super_new(
struct parser_params *p, NODE *nd_args,
const YYLTYPE *loc);
1155static rb_node_zsuper_t * rb_node_zsuper_new(
struct parser_params *p,
const YYLTYPE *loc);
1156static rb_node_list_t *rb_node_list_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc);
1157static rb_node_list_t *rb_node_list_new2(
struct parser_params *p, NODE *nd_head,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc);
1158static rb_node_zlist_t *rb_node_zlist_new(
struct parser_params *p,
const YYLTYPE *loc);
1159static rb_node_hash_t *rb_node_hash_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc);
1160static rb_node_return_t *rb_node_return_new(
struct parser_params *p, NODE *nd_stts,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc);
1161static rb_node_yield_t *rb_node_yield_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc);
1162static rb_node_lvar_t *rb_node_lvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc);
1163static rb_node_dvar_t *rb_node_dvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc);
1164static rb_node_gvar_t *rb_node_gvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc);
1165static rb_node_ivar_t *rb_node_ivar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc);
1166static rb_node_const_t *rb_node_const_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc);
1167static rb_node_cvar_t *rb_node_cvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc);
1168static rb_node_nth_ref_t *rb_node_nth_ref_new(
struct parser_params *p,
long nd_nth,
const YYLTYPE *loc);
1169static rb_node_back_ref_t *rb_node_back_ref_new(
struct parser_params *p,
long nd_nth,
const YYLTYPE *loc);
1170static rb_node_match2_t *rb_node_match2_new(
struct parser_params *p, NODE *nd_recv, NODE *nd_value,
const YYLTYPE *loc);
1171static rb_node_match3_t *rb_node_match3_new(
struct parser_params *p, NODE *nd_recv, NODE *nd_value,
const YYLTYPE *loc);
1172static rb_node_integer_t * rb_node_integer_new(
struct parser_params *p,
char* val,
int base,
const YYLTYPE *loc);
1173static rb_node_float_t * rb_node_float_new(
struct parser_params *p,
char* val,
const YYLTYPE *loc);
1174static rb_node_rational_t * rb_node_rational_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
const YYLTYPE *loc);
1175static 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);
1176static rb_node_str_t *rb_node_str_new(
struct parser_params *p, rb_parser_string_t *
string,
const YYLTYPE *loc);
1177static 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);
1178static rb_node_dstr_t *rb_node_dstr_new(
struct parser_params *p, rb_parser_string_t *
string,
const YYLTYPE *loc);
1179static rb_node_xstr_t *rb_node_xstr_new(
struct parser_params *p, rb_parser_string_t *
string,
const YYLTYPE *loc);
1180static 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);
1181static rb_node_evstr_t *rb_node_evstr_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc);
1182static rb_node_regx_t *rb_node_regx_new(
struct parser_params *p, rb_parser_string_t *
string,
int options,
const YYLTYPE *loc);
1183static rb_node_once_t *rb_node_once_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc);
1184static rb_node_args_t *rb_node_args_new(
struct parser_params *p,
const YYLTYPE *loc);
1185static rb_node_args_aux_t *rb_node_args_aux_new(
struct parser_params *p,
ID nd_pid,
int nd_plen,
const YYLTYPE *loc);
1186static rb_node_opt_arg_t *rb_node_opt_arg_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc);
1187static rb_node_kw_arg_t *rb_node_kw_arg_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc);
1188static rb_node_postarg_t *rb_node_postarg_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc);
1189static rb_node_argscat_t *rb_node_argscat_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body,
const YYLTYPE *loc);
1190static rb_node_argspush_t *rb_node_argspush_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body,
const YYLTYPE *loc);
1191static rb_node_splat_t *rb_node_splat_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc,
const YYLTYPE *operator_loc);
1192static rb_node_block_pass_t *rb_node_block_pass_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *operator_loc);
1193static rb_node_defn_t *rb_node_defn_new(
struct parser_params *p,
ID nd_mid, NODE *nd_defn,
const YYLTYPE *loc);
1194static rb_node_defs_t *rb_node_defs_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_defn,
const YYLTYPE *loc);
1195static 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);
1196static 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);
1197static rb_node_undef_t *rb_node_undef_new(
struct parser_params *p, NODE *nd_undef,
const YYLTYPE *loc);
1198static rb_node_class_t *rb_node_class_new(
struct parser_params *p, NODE *nd_cpath, NODE *nd_body, NODE *nd_super,
const YYLTYPE *loc);
1199static rb_node_module_t *rb_node_module_new(
struct parser_params *p, NODE *nd_cpath, NODE *nd_body,
const YYLTYPE *loc);
1200static rb_node_sclass_t *rb_node_sclass_new(
struct parser_params *p, NODE *nd_recv, NODE *nd_body,
const YYLTYPE *loc);
1201static rb_node_colon2_t *rb_node_colon2_new(
struct parser_params *p, NODE *nd_head,
ID nd_mid,
const YYLTYPE *loc);
1202static rb_node_colon3_t *rb_node_colon3_new(
struct parser_params *p,
ID nd_mid,
const YYLTYPE *loc);
1203static rb_node_dot2_t *rb_node_dot2_new(
struct parser_params *p, NODE *nd_beg, NODE *nd_end,
const YYLTYPE *loc);
1204static rb_node_dot3_t *rb_node_dot3_new(
struct parser_params *p, NODE *nd_beg, NODE *nd_end,
const YYLTYPE *loc);
1205static rb_node_self_t *rb_node_self_new(
struct parser_params *p,
const YYLTYPE *loc);
1206static rb_node_nil_t *rb_node_nil_new(
struct parser_params *p,
const YYLTYPE *loc);
1207static rb_node_true_t *rb_node_true_new(
struct parser_params *p,
const YYLTYPE *loc);
1208static rb_node_false_t *rb_node_false_new(
struct parser_params *p,
const YYLTYPE *loc);
1209static rb_node_errinfo_t *rb_node_errinfo_new(
struct parser_params *p,
const YYLTYPE *loc);
1210static rb_node_defined_t *rb_node_defined_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc);
1211static rb_node_postexe_t *rb_node_postexe_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc);
1212static rb_node_sym_t *rb_node_sym_new(
struct parser_params *p,
VALUE str,
const YYLTYPE *loc);
1213static 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);
1214static rb_node_attrasgn_t *rb_node_attrasgn_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc);
1215static rb_node_lambda_t *rb_node_lambda_new(
struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body,
const YYLTYPE *loc);
1216static rb_node_aryptn_t *rb_node_aryptn_new(
struct parser_params *p, NODE *pre_args, NODE *rest_arg, NODE *post_args,
const YYLTYPE *loc);
1217static rb_node_hshptn_t *rb_node_hshptn_new(
struct parser_params *p, NODE *nd_pconst, NODE *nd_pkwargs, NODE *nd_pkwrestarg,
const YYLTYPE *loc);
1218static 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);
1219static rb_node_line_t *rb_node_line_new(
struct parser_params *p,
const YYLTYPE *loc);
1220static rb_node_file_t *rb_node_file_new(
struct parser_params *p,
VALUE str,
const YYLTYPE *loc);
1221static rb_node_error_t *rb_node_error_new(
struct parser_params *p,
const YYLTYPE *loc);
1223#define NEW_SCOPE(a,b,loc) (NODE *)rb_node_scope_new(p,a,b,loc)
1224#define NEW_SCOPE2(t,a,b,loc) (NODE *)rb_node_scope_new2(p,t,a,b,loc)
1225#define NEW_BLOCK(a,loc) (NODE *)rb_node_block_new(p,a,loc)
1226#define NEW_IF(c,t,e,loc) (NODE *)rb_node_if_new(p,c,t,e,loc)
1227#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)
1228#define NEW_CASE(h,b,loc,ck_loc,ek_loc) (NODE *)rb_node_case_new(p,h,b,loc,ck_loc,ek_loc)
1229#define NEW_CASE2(b,loc,ck_loc,ek_loc) (NODE *)rb_node_case2_new(p,b,loc,ck_loc,ek_loc)
1230#define NEW_CASE3(h,b,loc,ck_loc,ek_loc) (NODE *)rb_node_case3_new(p,h,b,loc,ck_loc,ek_loc)
1231#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)
1232#define NEW_IN(c,t,e,loc) (NODE *)rb_node_in_new(p,c,t,e,loc)
1233#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)
1234#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)
1235#define NEW_ITER(a,b,loc) (NODE *)rb_node_iter_new(p,a,b,loc)
1236#define NEW_FOR(i,b,loc) (NODE *)rb_node_for_new(p,i,b,loc)
1237#define NEW_FOR_MASGN(v,loc) (NODE *)rb_node_for_masgn_new(p,v,loc)
1238#define NEW_RETRY(loc) (NODE *)rb_node_retry_new(p,loc)
1239#define NEW_BEGIN(b,loc) (NODE *)rb_node_begin_new(p,b,loc)
1240#define NEW_RESCUE(b,res,e,loc) (NODE *)rb_node_rescue_new(p,b,res,e,loc)
1241#define NEW_RESBODY(a,v,ex,n,loc) (NODE *)rb_node_resbody_new(p,a,v,ex,n,loc)
1242#define NEW_ENSURE(b,en,loc) (NODE *)rb_node_ensure_new(p,b,en,loc)
1243#define NEW_AND(f,s,loc,op_loc) (NODE *)rb_node_and_new(p,f,s,loc,op_loc)
1244#define NEW_OR(f,s,loc,op_loc) (NODE *)rb_node_or_new(p,f,s,loc,op_loc)
1245#define NEW_MASGN(l,r,loc) rb_node_masgn_new(p,l,r,loc)
1246#define NEW_LASGN(v,val,loc) (NODE *)rb_node_lasgn_new(p,v,val,loc)
1247#define NEW_DASGN(v,val,loc) (NODE *)rb_node_dasgn_new(p,v,val,loc)
1248#define NEW_GASGN(v,val,loc) (NODE *)rb_node_gasgn_new(p,v,val,loc)
1249#define NEW_IASGN(v,val,loc) (NODE *)rb_node_iasgn_new(p,v,val,loc)
1250#define NEW_CDECL(v,val,path,share,loc) (NODE *)rb_node_cdecl_new(p,v,val,path,share,loc)
1251#define NEW_CVASGN(v,val,loc) (NODE *)rb_node_cvasgn_new(p,v,val,loc)
1252#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)
1253#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)
1254#define NEW_OP_ASGN_OR(i,val,loc) (NODE *)rb_node_op_asgn_or_new(p,i,val,loc)
1255#define NEW_OP_ASGN_AND(i,val,loc) (NODE *)rb_node_op_asgn_and_new(p,i,val,loc)
1256#define NEW_OP_CDECL(v,op,val,share,loc) (NODE *)rb_node_op_cdecl_new(p,v,val,op,share,loc)
1257#define NEW_CALL(r,m,a,loc) (NODE *)rb_node_call_new(p,r,m,a,loc)
1258#define NEW_OPCALL(r,m,a,loc) (NODE *)rb_node_opcall_new(p,r,m,a,loc)
1259#define NEW_FCALL(m,a,loc) rb_node_fcall_new(p,m,a,loc)
1260#define NEW_VCALL(m,loc) (NODE *)rb_node_vcall_new(p,m,loc)
1261#define NEW_QCALL0(r,m,a,loc) (NODE *)rb_node_qcall_new(p,r,m,a,loc)
1262#define NEW_SUPER(a,loc) (NODE *)rb_node_super_new(p,a,loc)
1263#define NEW_ZSUPER(loc) (NODE *)rb_node_zsuper_new(p,loc)
1264#define NEW_LIST(a,loc) (NODE *)rb_node_list_new(p,a,loc)
1265#define NEW_LIST2(h,l,n,loc) (NODE *)rb_node_list_new2(p,h,l,n,loc)
1266#define NEW_ZLIST(loc) (NODE *)rb_node_zlist_new(p,loc)
1267#define NEW_HASH(a,loc) (NODE *)rb_node_hash_new(p,a,loc)
1268#define NEW_RETURN(s,loc,k_loc) (NODE *)rb_node_return_new(p,s,loc,k_loc)
1269#define NEW_YIELD(a,loc) (NODE *)rb_node_yield_new(p,a,loc)
1270#define NEW_LVAR(v,loc) (NODE *)rb_node_lvar_new(p,v,loc)
1271#define NEW_DVAR(v,loc) (NODE *)rb_node_dvar_new(p,v,loc)
1272#define NEW_GVAR(v,loc) (NODE *)rb_node_gvar_new(p,v,loc)
1273#define NEW_IVAR(v,loc) (NODE *)rb_node_ivar_new(p,v,loc)
1274#define NEW_CONST(v,loc) (NODE *)rb_node_const_new(p,v,loc)
1275#define NEW_CVAR(v,loc) (NODE *)rb_node_cvar_new(p,v,loc)
1276#define NEW_NTH_REF(n,loc) (NODE *)rb_node_nth_ref_new(p,n,loc)
1277#define NEW_BACK_REF(n,loc) (NODE *)rb_node_back_ref_new(p,n,loc)
1278#define NEW_MATCH2(n1,n2,loc) (NODE *)rb_node_match2_new(p,n1,n2,loc)
1279#define NEW_MATCH3(r,n2,loc) (NODE *)rb_node_match3_new(p,r,n2,loc)
1280#define NEW_INTEGER(val, base,loc) (NODE *)rb_node_integer_new(p,val,base,loc)
1281#define NEW_FLOAT(val,loc) (NODE *)rb_node_float_new(p,val,loc)
1282#define NEW_RATIONAL(val,base,seen_point,loc) (NODE *)rb_node_rational_new(p,val,base,seen_point,loc)
1283#define NEW_IMAGINARY(val,base,seen_point,numeric_type,loc) (NODE *)rb_node_imaginary_new(p,val,base,seen_point,numeric_type,loc)
1284#define NEW_STR(s,loc) (NODE *)rb_node_str_new(p,s,loc)
1285#define NEW_DSTR0(s,l,n,loc) (NODE *)rb_node_dstr_new0(p,s,l,n,loc)
1286#define NEW_DSTR(s,loc) (NODE *)rb_node_dstr_new(p,s,loc)
1287#define NEW_XSTR(s,loc) (NODE *)rb_node_xstr_new(p,s,loc)
1288#define NEW_DXSTR(s,l,n,loc) (NODE *)rb_node_dxstr_new(p,s,l,n,loc)
1289#define NEW_EVSTR(n,loc) (NODE *)rb_node_evstr_new(p,n,loc)
1290#define NEW_REGX(str,opts,loc) (NODE *)rb_node_regx_new(p,str,opts,loc)
1291#define NEW_ONCE(b,loc) (NODE *)rb_node_once_new(p,b,loc)
1292#define NEW_ARGS(loc) rb_node_args_new(p,loc)
1293#define NEW_ARGS_AUX(r,b,loc) rb_node_args_aux_new(p,r,b,loc)
1294#define NEW_OPT_ARG(v,loc) rb_node_opt_arg_new(p,v,loc)
1295#define NEW_KW_ARG(v,loc) rb_node_kw_arg_new(p,v,loc)
1296#define NEW_POSTARG(i,v,loc) (NODE *)rb_node_postarg_new(p,i,v,loc)
1297#define NEW_ARGSCAT(a,b,loc) (NODE *)rb_node_argscat_new(p,a,b,loc)
1298#define NEW_ARGSPUSH(a,b,loc) (NODE *)rb_node_argspush_new(p,a,b,loc)
1299#define NEW_SPLAT(a,loc,op_loc) (NODE *)rb_node_splat_new(p,a,loc,op_loc)
1300#define NEW_BLOCK_PASS(b,loc,o_loc) rb_node_block_pass_new(p,b,loc,o_loc)
1301#define NEW_DEFN(i,s,loc) (NODE *)rb_node_defn_new(p,i,s,loc)
1302#define NEW_DEFS(r,i,s,loc) (NODE *)rb_node_defs_new(p,r,i,s,loc)
1303#define NEW_ALIAS(n,o,loc,k_loc) (NODE *)rb_node_alias_new(p,n,o,loc,k_loc)
1304#define NEW_VALIAS(n,o,loc,k_loc) (NODE *)rb_node_valias_new(p,n,o,loc,k_loc)
1305#define NEW_UNDEF(i,loc) (NODE *)rb_node_undef_new(p,i,loc)
1306#define NEW_CLASS(n,b,s,loc) (NODE *)rb_node_class_new(p,n,b,s,loc)
1307#define NEW_MODULE(n,b,loc) (NODE *)rb_node_module_new(p,n,b,loc)
1308#define NEW_SCLASS(r,b,loc) (NODE *)rb_node_sclass_new(p,r,b,loc)
1309#define NEW_COLON2(c,i,loc) (NODE *)rb_node_colon2_new(p,c,i,loc)
1310#define NEW_COLON3(i,loc) (NODE *)rb_node_colon3_new(p,i,loc)
1311#define NEW_DOT2(b,e,loc) (NODE *)rb_node_dot2_new(p,b,e,loc)
1312#define NEW_DOT3(b,e,loc) (NODE *)rb_node_dot3_new(p,b,e,loc)
1313#define NEW_SELF(loc) (NODE *)rb_node_self_new(p,loc)
1314#define NEW_NIL(loc) (NODE *)rb_node_nil_new(p,loc)
1315#define NEW_TRUE(loc) (NODE *)rb_node_true_new(p,loc)
1316#define NEW_FALSE(loc) (NODE *)rb_node_false_new(p,loc)
1317#define NEW_ERRINFO(loc) (NODE *)rb_node_errinfo_new(p,loc)
1318#define NEW_DEFINED(e,loc) (NODE *)rb_node_defined_new(p,e,loc)
1319#define NEW_POSTEXE(b,loc) (NODE *)rb_node_postexe_new(p,b,loc)
1320#define NEW_SYM(str,loc) (NODE *)rb_node_sym_new(p,str,loc)
1321#define NEW_DSYM(s,l,n,loc) (NODE *)rb_node_dsym_new(p,s,l,n,loc)
1322#define NEW_ATTRASGN(r,m,a,loc) (NODE *)rb_node_attrasgn_new(p,r,m,a,loc)
1323#define NEW_LAMBDA(a,b,loc) (NODE *)rb_node_lambda_new(p,a,b,loc)
1324#define NEW_ARYPTN(pre,r,post,loc) (NODE *)rb_node_aryptn_new(p,pre,r,post,loc)
1325#define NEW_HSHPTN(c,kw,kwrest,loc) (NODE *)rb_node_hshptn_new(p,c,kw,kwrest,loc)
1326#define NEW_FNDPTN(pre,a,post,loc) (NODE *)rb_node_fndptn_new(p,pre,a,post,loc)
1327#define NEW_LINE(loc) (NODE *)rb_node_line_new(p,loc)
1328#define NEW_FILE(str,loc) (NODE *)rb_node_file_new(p,str,loc)
1329#define NEW_ENCODING(loc) (NODE *)rb_node_encoding_new(p,loc)
1330#define NEW_ERROR(loc) (NODE *)rb_node_error_new(p,loc)
1332enum internal_node_type {
1333 NODE_INTERNAL_ONLY = NODE_LAST,
1340parser_node_name(
int node)
1344 return "NODE_DEF_TEMP";
1346 return "NODE_EXITS";
1348 return ruby_node_name(node);
1358 struct RNode *nd_def;
1363 NODE *numparam_save;
1368#define RNODE_DEF_TEMP(node) ((struct RNode_DEF_TEMP *)(node))
1370static rb_node_break_t *rb_node_break_new(
struct parser_params *p, NODE *nd_stts,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc);
1371static rb_node_next_t *rb_node_next_new(
struct parser_params *p, NODE *nd_stts,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc);
1372static rb_node_redo_t *rb_node_redo_new(
struct parser_params *p,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc);
1373static rb_node_def_temp_t *rb_node_def_temp_new(
struct parser_params *p,
const YYLTYPE *loc);
1374static rb_node_def_temp_t *def_head_save(
struct parser_params *p, rb_node_def_temp_t *n);
1376#define NEW_BREAK(s,loc,k_loc) (NODE *)rb_node_break_new(p,s,loc,k_loc)
1377#define NEW_NEXT(s,loc,k_loc) (NODE *)rb_node_next_new(p,s,loc,k_loc)
1378#define NEW_REDO(loc,k_loc) (NODE *)rb_node_redo_new(p,loc,k_loc)
1379#define NEW_DEF_TEMP(loc) rb_node_def_temp_new(p,loc)
1383static NODE* node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment);
1384#define NODE_NEW_INTERNAL(ndtype, type) (type *)node_new_internal(p, (enum node_type)(ndtype), sizeof(type), RUBY_ALIGNOF(type))
1386static NODE *nd_set_loc(NODE *nd,
const YYLTYPE *loc);
1391 int node_id = p->node_id;
1397anddot_multiple_assignment_check(
struct parser_params* p,
const YYLTYPE *loc,
ID id)
1399 if (
id == tANDDOT) {
1400 yyerror1(loc,
"&. inside multiple assignment destination");
1405set_line_body(NODE *body,
int line)
1408 switch (nd_type(body)) {
1411 nd_set_line(body, line);
1416set_embraced_location(NODE *node,
const rb_code_location_t *beg,
const rb_code_location_t *end)
1418 RNODE_ITER(node)->nd_body->nd_loc = code_loc_gen(beg, end);
1419 nd_set_line(node, beg->end_pos.lineno);
1423last_expr_node(NODE *expr)
1426 if (nd_type_p(expr, NODE_BLOCK)) {
1427 expr = RNODE_BLOCK(RNODE_BLOCK(expr)->nd_end)->nd_head;
1429 else if (nd_type_p(expr, NODE_BEGIN) && RNODE_BEGIN(expr)->nd_body) {
1430 expr = RNODE_BEGIN(expr)->nd_body;
1440#define yyparse ruby_yyparse
1443static NODE* cond(
struct parser_params *p, NODE *node,
const YYLTYPE *loc);
1444static NODE* method_cond(
struct parser_params *p, NODE *node,
const YYLTYPE *loc);
1445#define new_nil(loc) NEW_NIL(loc)
1446static NODE *new_nil_at(
struct parser_params *p,
const rb_code_position_t *pos);
1447static NODE *new_if(
struct parser_params*,NODE*,NODE*,NODE*,
const YYLTYPE*);
1448static NODE *new_unless(
struct parser_params*,NODE*,NODE*,NODE*,
const YYLTYPE*,
const YYLTYPE*,
const YYLTYPE*,
const YYLTYPE*);
1449static NODE *logop(
struct parser_params*,
ID,NODE*,NODE*,
const YYLTYPE*,
const YYLTYPE*);
1451static NODE *newline_node(NODE*);
1452static void fixpos(NODE*,NODE*);
1456static NODE *remove_begin(NODE*);
1457#define value_expr(node) value_expr_gen(p, (node))
1460static void block_dup_check(
struct parser_params*,NODE*,NODE*);
1462static NODE *block_append(
struct parser_params*,NODE*,NODE*);
1464static NODE *list_concat(NODE*,NODE*);
1465static NODE *arg_append(
struct parser_params*,NODE*,NODE*,
const YYLTYPE*);
1466static NODE *last_arg_append(
struct parser_params *p, NODE *args, NODE *last_arg,
const YYLTYPE *loc);
1467static NODE *rest_arg_append(
struct parser_params *p, NODE *args, NODE *rest_arg,
const YYLTYPE *loc);
1468static NODE *literal_concat(
struct parser_params*,NODE*,NODE*,
const YYLTYPE*);
1469static NODE *new_evstr(
struct parser_params*,NODE*,
const YYLTYPE*);
1470static NODE *new_dstr(
struct parser_params*,NODE*,
const YYLTYPE*);
1473static NODE *splat_array(NODE*);
1474static void mark_lvar_used(
struct parser_params *p, NODE *rhs);
1476static NODE *call_bin_op(
struct parser_params*,NODE*,
ID,NODE*,
const YYLTYPE*,
const YYLTYPE*);
1477static NODE *call_uni_op(
struct parser_params*,NODE*,
ID,
const YYLTYPE*,
const YYLTYPE*);
1478static NODE *new_qcall(
struct parser_params* p,
ID atype, NODE *recv,
ID mid, NODE *args,
const YYLTYPE *op_loc,
const YYLTYPE *loc);
1479static 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);
1480static 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;}
1482static bool args_info_empty_p(
struct rb_args_info *args);
1483static 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*);
1484static rb_node_args_t *new_args_tail(
struct parser_params*,rb_node_kw_arg_t*,
ID,
ID,
const YYLTYPE*);
1485static NODE *new_array_pattern(
struct parser_params *p, NODE *constant, NODE *pre_arg, NODE *aryptn,
const YYLTYPE *loc);
1486static NODE *new_array_pattern_tail(
struct parser_params *p, NODE *pre_args,
int has_rest, NODE *rest_arg, NODE *post_args,
const YYLTYPE *loc);
1487static NODE *new_find_pattern(
struct parser_params *p, NODE *constant, NODE *fndptn,
const YYLTYPE *loc);
1488static NODE *new_find_pattern_tail(
struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg,
const YYLTYPE *loc);
1489static NODE *new_hash_pattern(
struct parser_params *p, NODE *constant, NODE *hshptn,
const YYLTYPE *loc);
1490static NODE *new_hash_pattern_tail(
struct parser_params *p, NODE *kw_args,
ID kw_rest_arg,
const YYLTYPE *loc);
1492static rb_node_kw_arg_t *new_kw_arg(
struct parser_params *p, NODE *k,
const YYLTYPE *loc);
1493static rb_node_args_t *args_with_numbered(
struct parser_params*,rb_node_args_t*,
int,
ID);
1497static NODE *arg_blk_pass(NODE*,rb_node_block_pass_t*);
1498static NODE *new_yield(
struct parser_params*,NODE*,
const YYLTYPE*);
1499static NODE *dsym_node(
struct parser_params*,NODE*,
const YYLTYPE*);
1502static NODE *assignable(
struct parser_params*,
ID,NODE*,
const YYLTYPE*);
1504static NODE *aryset(
struct parser_params*,NODE*,NODE*,
const YYLTYPE*);
1511static 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);
1512static 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);
1513static NODE *new_const_op_assign(
struct parser_params *p, NODE *lhs,
ID op, NODE *rhs,
struct lex_context,
const YYLTYPE *loc);
1514static NODE *new_bodystmt(
struct parser_params *p, NODE *head, NODE *rescue, NODE *rescue_else, NODE *ensure,
const YYLTYPE *loc);
1516static NODE *const_decl(
struct parser_params *p, NODE* path,
const YYLTYPE *loc);
1518static rb_node_opt_arg_t *opt_arg_append(rb_node_opt_arg_t*, rb_node_opt_arg_t*);
1519static rb_node_kw_arg_t *kwd_append(rb_node_kw_arg_t*, rb_node_kw_arg_t*);
1521static NODE *new_hash(
struct parser_params *p, NODE *hash,
const YYLTYPE *loc);
1522static NODE *new_unique_key_hash(
struct parser_params *p, NODE *hash,
const YYLTYPE *loc);
1524static NODE *new_defined(
struct parser_params *p, NODE *expr,
const YYLTYPE *loc);
1526static NODE *new_regexp(
struct parser_params *, NODE *,
int,
const YYLTYPE *);
1528#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
1530static NODE *new_xstring(
struct parser_params *, NODE *,
const YYLTYPE *loc);
1532static NODE *symbol_append(
struct parser_params *p, NODE *symbols, NODE *symbol);
1534static NODE *match_op(
struct parser_params*,NODE*,NODE*,
const YYLTYPE*,
const YYLTYPE*);
1539static void reg_fragment_setenc(
struct parser_params*, rb_parser_string_t*,
int);
1540#define reg_fragment_check rb_parser_reg_fragment_check
1541int reg_fragment_check(
struct parser_params*, rb_parser_string_t*,
int);
1543static int literal_concat0(
struct parser_params *p, rb_parser_string_t *head, rb_parser_string_t *tail);
1546static void check_literal_when(
struct parser_params *p, NODE *args,
const YYLTYPE *loc);
1549#define get_value(idx) (rb_ary_entry(p->s_value_stack, idx))
1550#define set_value(val) (p->s_lvalue = val)
1555RUBY_SYMBOL_EXPORT_BEGIN
1557int rb_reg_fragment_setenc(
struct parser_params*, rb_parser_string_t *,
int);
1558enum lex_state_e rb_parser_trace_lex_state(
struct parser_params *,
enum lex_state_e,
enum lex_state_e,
int);
1560void rb_parser_show_bitstack(
struct parser_params *, stack_type,
const char *,
int);
1561PRINTF_ARGS(
void rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...), 2, 3);
1562YYLTYPE *rb_parser_set_location_from_strterm_heredoc(
struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc);
1563YYLTYPE *rb_parser_set_location_of_delayed_token(
struct parser_params *p, YYLTYPE *yylloc);
1564YYLTYPE *rb_parser_set_location_of_heredoc_end(
struct parser_params *p, YYLTYPE *yylloc);
1565YYLTYPE *rb_parser_set_location_of_dummy_end(
struct parser_params *p, YYLTYPE *yylloc);
1566YYLTYPE *rb_parser_set_location_of_none(
struct parser_params *p, YYLTYPE *yylloc);
1567YYLTYPE *rb_parser_set_location(
struct parser_params *p, YYLTYPE *yylloc);
1568void ruby_show_error_line(
struct parser_params *p,
VALUE errbuf,
const YYLTYPE *yylloc,
int lineno, rb_parser_string_t *str);
1569RUBY_SYMBOL_EXPORT_END
1571static void flush_string_content(
struct parser_params *p, rb_encoding *enc,
size_t back);
1572static void error_duplicate_pattern_variable(
struct parser_params *p,
ID id,
const YYLTYPE *loc);
1573static void error_duplicate_pattern_key(
struct parser_params *p,
ID id,
const YYLTYPE *loc);
1584#define internal_id rb_parser_internal_id
1586static NODE *new_args_forward_call(
struct parser_params*, NODE*,
const YYLTYPE*,
const YYLTYPE*);
1589static void forwarding_arg_check(
struct parser_params *p,
ID arg,
ID all,
const char *var);
1594#define dyna_var(p, id) local_var(p, id)
1596#define dvar_defined_ref rb_parser_dvar_defined_ref
1603static void numparam_pop(
struct parser_params *p, NODE *prev_inner);
1605#define METHOD_NOT '!'
1607#define idFWD_REST '*'
1608#define idFWD_KWREST idPow
1609#define idFWD_BLOCK '&'
1610#define idFWD_ALL idDot3
1611#define arg_FWD_BLOCK idFWD_BLOCK
1613#define RE_ONIG_OPTION_IGNORECASE 1
1614#define RE_ONIG_OPTION_EXTEND (RE_ONIG_OPTION_IGNORECASE<<1)
1615#define RE_ONIG_OPTION_MULTILINE (RE_ONIG_OPTION_EXTEND<<1)
1616#define RE_OPTION_ONCE (1<<16)
1617#define RE_OPTION_ENCODING_SHIFT 8
1618#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
1619#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
1620#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
1621#define RE_OPTION_MASK 0xff
1622#define RE_OPTION_ARG_ENCODING_NONE 32
1624#define CHECK_LITERAL_WHEN (st_table *)1
1625#define CASE_LABELS_ENABLED_P(case_labels) (case_labels && case_labels != CHECK_LITERAL_WHEN)
1627#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
1628RUBY_FUNC_EXPORTED
size_t rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr);
1630#define TOKEN2ID(tok) ( \
1631 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
1632 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
1633 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
1634 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
1635 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
1636 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
1637 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
1643#include "eventids1.h"
1644#include "eventids2.h"
1646extern const struct ripper_parser_ids ripper_parser_ids;
1657#define dispatch0(n) ripper_dispatch0(p, RIPPER_ID(n))
1658#define dispatch1(n,a) ripper_dispatch1(p, RIPPER_ID(n), (a))
1659#define dispatch2(n,a,b) ripper_dispatch2(p, RIPPER_ID(n), (a), (b))
1660#define dispatch3(n,a,b,c) ripper_dispatch3(p, RIPPER_ID(n), (a), (b), (c))
1661#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, RIPPER_ID(n), (a), (b), (c), (d))
1662#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, RIPPER_ID(n), (a), (b), (c), (d), (e))
1663#define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, RIPPER_ID(n), (a), (b), (c), (d), (e), (f), (g))
1665#define yyparse ripper_yyparse
1670 if (!
NIL_P(pre_arg)) {
1671 if (!
NIL_P(pre_args)) {
1672 rb_ary_unshift(pre_args, pre_arg);
1675 pre_args = rb_ary_new_from_args(1, pre_arg);
1681#define ID2VAL(id) STATIC_ID2SYM(id)
1682#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
1685#define KWD2EID(t, v) keyword_##t
1688new_scope_body(
struct parser_params *p, rb_node_args_t *args, NODE *body,
const YYLTYPE *loc)
1690 body = remove_begin(body);
1691 reduce_nodes(p, &body);
1692 NODE *n = NEW_SCOPE(args, body, loc);
1693 nd_set_line(n, loc->end_pos.lineno);
1694 set_line_body(body, loc->beg_pos.lineno);
1699rescued_expr(
struct parser_params *p, NODE *arg, NODE *rescue,
1700 const YYLTYPE *arg_loc,
const YYLTYPE *mod_loc,
const YYLTYPE *res_loc)
1702 YYLTYPE loc = code_loc_gen(mod_loc, res_loc);
1703 rescue = NEW_RESBODY(0, 0, remove_begin(rescue), 0, &loc);
1704 loc.beg_pos = arg_loc->beg_pos;
1705 return NEW_RESCUE(arg, rescue, 0, &loc);
1708static NODE *add_block_exit(
struct parser_params *p, NODE *node);
1709static rb_node_exits_t *init_block_exit(
struct parser_params *p);
1710static rb_node_exits_t *allow_block_exit(
struct parser_params *p);
1711static void restore_block_exit(
struct parser_params *p, rb_node_exits_t *exits);
1712static void clear_block_exit(
struct parser_params *p,
bool error);
1717 next->in_rescue = outer->in_rescue == after_rescue ? after_rescue : def;
1721restore_defun(
struct parser_params *p, rb_node_def_temp_t *temp)
1725 p->ctxt.in_def = ctxt.in_def;
1726 p->ctxt.shareable_constant_value = ctxt.shareable_constant_value;
1727 p->ctxt.in_rescue = ctxt.in_rescue;
1728 p->max_numparam = temp->save.max_numparam;
1729 numparam_pop(p, temp->save.numparam_save);
1730 clear_block_exit(p,
true);
1734endless_method_name(
struct parser_params *p,
ID mid,
const YYLTYPE *loc)
1736 if (is_attrset_id(mid)) {
1737 yyerror1(loc,
"setter method cannot be defined in an endless method definition");
1739 token_info_drop(p,
"def", loc->beg_pos);
1742#define debug_token_line(p, name, line) do { \
1744 const char *const pcur = p->lex.pcur; \
1745 const char *const ptok = p->lex.ptok; \
1746 rb_parser_printf(p, name ":%d (%d: %"PRIdPTRDIFF"|%"PRIdPTRDIFF"|%"PRIdPTRDIFF")\n", \
1747 line, p->ruby_sourceline, \
1748 ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur); \
1752#define begin_definition(k, loc_beg, loc_end) \
1754 if (!(p->ctxt.in_class = (k)[0] != 0)) { \
1756 p->ctxt.cant_return = !p->ctxt.in_def; \
1757 p->ctxt.in_def = 0; \
1759 else if (p->ctxt.in_def) { \
1760 YYLTYPE loc = code_loc_gen(loc_beg, loc_end); \
1761 yyerror1(&loc, k " definition in method body"); \
1764 p->ctxt.cant_return = 1; \
1770# define ifndef_ripper(x) (x)
1771# define ifdef_ripper(r,x) (x)
1773# define ifndef_ripper(x)
1774# define ifdef_ripper(r,x) (r)
1777# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
1778# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
1779# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
1780# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
1781# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
1782# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
1783# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
1784# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
1785# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
1786# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
1787# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1788# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
1789# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
1790# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
1791# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1792# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
1793# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
1794# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
1795# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
1796# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1798extern const ID id_warn, id_warning, id_gets, id_assoc;
1799# define ERR_MESG() STR_NEW2(mesg)
1800# define WARN_S_L(s,l) STR_NEW(s,l)
1801# define WARN_S(s) STR_NEW2(s)
1802# define WARN_I(i) INT2NUM(i)
1803# define WARN_ID(i) rb_id2str(i)
1804# define PRIsWARN PRIsVALUE
1805# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
1806# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
1807# ifdef HAVE_VA_ARGS_MACRO
1808# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
1810# define WARN_CALL rb_funcall
1812# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
1813# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
1814# ifdef HAVE_VA_ARGS_MACRO
1815# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
1817# define WARNING_CALL rb_funcall
1819# define compile_error ripper_compile_error
1821# define WARN_S_L(s,l) s
1824# define WARN_ID(i) rb_id2name(i)
1825# define PRIsWARN PRIsVALUE
1826# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1827# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1828# define WARN_CALL rb_compile_warn
1829# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1830# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1831# define WARNING_CALL rb_compile_warning
1832PRINTF_ARGS(
static void parser_compile_error(
struct parser_params*,
const rb_code_location_t *loc,
const char *fmt, ...), 3, 4);
1833# define compile_error(p, ...) parser_compile_error(p, NULL, __VA_ARGS__)
1836#define RNODE_EXITS(node) ((rb_node_exits_t*)(node))
1842 compile_error(p,
"unexpected null node");
1845 switch (nd_type(node)) {
1846 case NODE_BREAK:
case NODE_NEXT:
case NODE_REDO:
break;
1848 compile_error(p,
"add_block_exit: unexpected node: %s", parser_node_name(nd_type(node)));
1851 if (!p->ctxt.in_defined) {
1852 rb_node_exits_t *exits = p->exits;
1854 RNODE_EXITS(exits->nd_stts)->nd_chain = node;
1855 exits->nd_stts = node;
1861static rb_node_exits_t *
1864 rb_node_exits_t *old = p->exits;
1865 rb_node_exits_t *exits = NODE_NEW_INTERNAL(NODE_EXITS, rb_node_exits_t);
1866 exits->nd_chain = 0;
1867 exits->nd_stts = RNODE(exits);
1872static rb_node_exits_t *
1875 rb_node_exits_t *exits = p->exits;
1881restore_block_exit(
struct parser_params *p, rb_node_exits_t *exits)
1889 rb_node_exits_t *exits = p->exits;
1892 for (NODE *e = RNODE(exits); (e = RNODE_EXITS(e)->nd_chain) != 0; ) {
1893 switch (nd_type(e)) {
1895 yyerror1(&e->nd_loc,
"Invalid break");
1898 yyerror1(&e->nd_loc,
"Invalid next");
1901 yyerror1(&e->nd_loc,
"Invalid redo");
1904 yyerror1(&e->nd_loc,
"unexpected node");
1910 exits->nd_stts = RNODE(exits);
1911 exits->nd_chain = 0;
1914#define WARN_EOL(tok) \
1915 (looking_at_eol_p(p) ? \
1916 (void)rb_warning0("'" tok "' at the end of line without an expression") : \
1923 switch (nd_type(node)) {
1925 return RNODE_GASGN(node)->nd_value;
1927 return RNODE_IASGN(node)->nd_value;
1929 return RNODE_LASGN(node)->nd_value;
1931 return RNODE_DASGN(node)->nd_value;
1933 return RNODE_MASGN(node)->nd_value;
1935 return RNODE_CVASGN(node)->nd_value;
1937 return RNODE_CDECL(node)->nd_value;
1939 compile_error(p,
"get_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1947 switch (nd_type(node)) {
1949 RNODE_CDECL(node)->nd_value = rhs;
1952 RNODE_GASGN(node)->nd_value = rhs;
1955 RNODE_IASGN(node)->nd_value = rhs;
1958 RNODE_LASGN(node)->nd_value = rhs;
1961 RNODE_DASGN(node)->nd_value = rhs;
1964 RNODE_MASGN(node)->nd_value = rhs;
1967 RNODE_CVASGN(node)->nd_value = rhs;
1970 compile_error(p,
"set_nd_value: unexpected node: %s", parser_node_name(nd_type(node)));
1978 switch (nd_type(node)) {
1980 return RNODE_CDECL(node)->nd_vid;
1982 return RNODE_GASGN(node)->nd_vid;
1984 return RNODE_IASGN(node)->nd_vid;
1986 return RNODE_LASGN(node)->nd_vid;
1988 return RNODE_DASGN(node)->nd_vid;
1990 return RNODE_CVASGN(node)->nd_vid;
1992 compile_error(p,
"get_nd_vid: unexpected node: %s", parser_node_name(nd_type(node)));
2000 switch (nd_type(node)) {
2002 return RNODE_CALL(node)->nd_args;
2004 return RNODE_OPCALL(node)->nd_args;
2006 return RNODE_FCALL(node)->nd_args;
2008 return RNODE_QCALL(node)->nd_args;
2010 return RNODE_SUPER(node)->nd_args;
2019 compile_error(p,
"get_nd_args: unexpected node: %s", parser_node_name(nd_type(node)));
2025djb2(
const uint8_t *str,
size_t len)
2027 st_index_t hash = 5381;
2029 for (
size_t i = 0; i <
len; i++) {
2030 hash = ((hash << 5) + hash) + str[i];
2037parser_memhash(
const void *ptr,
long len)
2039 return djb2(ptr,
len);
2042#define PARSER_STRING_PTR(str) (str->ptr)
2043#define PARSER_STRING_LEN(str) (str->len)
2044#define PARSER_STRING_END(str) (&str->ptr[str->len])
2045#define STRING_SIZE(str) ((size_t)str->len + 1)
2046#define STRING_TERM_LEN(str) (1)
2047#define STRING_TERM_FILL(str) (str->ptr[str->len] = '\0')
2048#define PARSER_STRING_RESIZE_CAPA_TERM(p,str,capacity,termlen) do {\
2049 SIZED_REALLOC_N(str->ptr, char, (size_t)total + termlen, STRING_SIZE(str)); \
2052#define STRING_SET_LEN(str, n) do { \
2055#define PARSER_STRING_GETMEM(str, ptrvar, lenvar) \
2056 ((ptrvar) = str->ptr, \
2057 (lenvar) = str->len)
2060parser_string_char_at_end(
struct parser_params *p, rb_parser_string_t *str,
int when_empty)
2062 return PARSER_STRING_LEN(str) > 0 ? (
unsigned char)PARSER_STRING_END(str)[-1] : when_empty;
2065static rb_parser_string_t *
2066rb_parser_string_new(rb_parser_t *p,
const char *ptr,
long len)
2068 rb_parser_string_t *str;
2071 rb_bug(
"negative string size (or size too big): %ld",
len);
2074 str =
xcalloc(1,
sizeof(rb_parser_string_t));
2078 memcpy(PARSER_STRING_PTR(str), ptr,
len);
2080 STRING_SET_LEN(str,
len);
2081 STRING_TERM_FILL(str);
2085static rb_parser_string_t *
2086rb_parser_encoding_string_new(rb_parser_t *p,
const char *ptr,
long len, rb_encoding *enc)
2088 rb_parser_string_t *str = rb_parser_string_new(p, ptr,
len);
2089 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2096rb_str_to_parser_string(rb_parser_t *p,
VALUE str)
2099 rb_parser_string_t *ret = rb_parser_encoding_string_new(p, RSTRING_PTR(str), RSTRING_LEN(str), rb_enc_get(str));
2105rb_parser_string_free(rb_parser_t *p, rb_parser_string_t *str)
2108 xfree(PARSER_STRING_PTR(str));
2114rb_parser_str_hash(rb_parser_string_t *str)
2116 return parser_memhash((
const void *)PARSER_STRING_PTR(str), PARSER_STRING_LEN(str));
2120rb_char_p_hash(
const char *c)
2122 return parser_memhash((
const void *)c, strlen(c));
2126rb_parser_str_capacity(rb_parser_string_t *str,
const int termlen)
2128 return PARSER_STRING_LEN(str);
2133rb_parser_string_end(rb_parser_string_t *str)
2135 return &str->ptr[str->len];
2140rb_parser_string_set_encoding(rb_parser_string_t *str, rb_encoding *enc)
2146rb_parser_str_get_encoding(rb_parser_string_t *str)
2153PARSER_ENCODING_IS_ASCII8BIT(
struct parser_params *p, rb_parser_string_t *str)
2155 return rb_parser_str_get_encoding(str) == rb_ascii8bit_encoding();
2160PARSER_ENC_CODERANGE(rb_parser_string_t *str)
2162 return str->coderange;
2166PARSER_ENC_CODERANGE_SET(rb_parser_string_t *str,
int coderange)
2168 str->coderange = coderange;
2172PARSER_ENCODING_CODERANGE_SET(rb_parser_string_t *str, rb_encoding *enc,
enum rb_parser_string_coderange_type cr)
2174 rb_parser_string_set_encoding(str, enc);
2175 PARSER_ENC_CODERANGE_SET(str, cr);
2179PARSER_ENC_CODERANGE_CLEAR(rb_parser_string_t *str)
2181 str->coderange = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2185PARSER_ENC_CODERANGE_ASCIIONLY(rb_parser_string_t *str)
2187 return PARSER_ENC_CODERANGE(str) == RB_PARSER_ENC_CODERANGE_7BIT;
2191PARSER_ENC_CODERANGE_CLEAN_P(
int cr)
2193 return cr == RB_PARSER_ENC_CODERANGE_7BIT || cr == RB_PARSER_ENC_CODERANGE_VALID;
2197rb_parser_search_nonascii(
const char *p,
const char *e)
2201 for (; s < e; s++) {
2202 if (*s & 0x80)
return s;
2209rb_parser_coderange_scan(
struct parser_params *p,
const char *ptr,
long len, rb_encoding *enc)
2211 const char *e = ptr +
len;
2213 if (enc == rb_ascii8bit_encoding()) {
2215 ptr = rb_parser_search_nonascii(ptr, e);
2216 return ptr ? RB_PARSER_ENC_CODERANGE_VALID : RB_PARSER_ENC_CODERANGE_7BIT;
2220 ptr = rb_parser_search_nonascii(ptr, e);
2221 if (!ptr)
return RB_PARSER_ENC_CODERANGE_7BIT;
2223 int ret = rb_enc_precise_mbclen(ptr, e, enc);
2226 if (ptr == e)
break;
2227 ptr = rb_parser_search_nonascii(ptr, e);
2231 return RB_PARSER_ENC_CODERANGE_VALID;
2235rb_parser_enc_coderange_scan(
struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2237 return rb_parser_coderange_scan(p, PARSER_STRING_PTR(str), PARSER_STRING_LEN(str), enc);
2241rb_parser_enc_str_coderange(
struct parser_params *p, rb_parser_string_t *str)
2243 int cr = PARSER_ENC_CODERANGE(str);
2245 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2246 cr = rb_parser_enc_coderange_scan(p, str, rb_parser_str_get_encoding(str));
2247 PARSER_ENC_CODERANGE_SET(str, cr);
2253static rb_parser_string_t *
2254rb_parser_enc_associate(
struct parser_params *p, rb_parser_string_t *str, rb_encoding *enc)
2256 if (rb_parser_str_get_encoding(str) == enc)
2258 if (!PARSER_ENC_CODERANGE_ASCIIONLY(str)) {
2259 PARSER_ENC_CODERANGE_CLEAR(str);
2261 rb_parser_string_set_encoding(str, enc);
2266rb_parser_is_ascii_string(
struct parser_params *p, rb_parser_string_t *str)
2268 return rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_7BIT;
2272rb_parser_enc_compatible(
struct parser_params *p, rb_parser_string_t *str1, rb_parser_string_t *str2)
2274 rb_encoding *enc1 = rb_parser_str_get_encoding(str1);
2275 rb_encoding *enc2 = rb_parser_str_get_encoding(str2);
2277 if (enc1 == NULL || enc2 == NULL)
2284 if (PARSER_STRING_LEN(str2) == 0)
2286 if (PARSER_STRING_LEN(str1) == 0)
2287 return rb_parser_is_ascii_string(p, str2) ? enc1 : enc2;
2291 cr1 = rb_parser_enc_str_coderange(p, str1);
2292 cr2 = rb_parser_enc_str_coderange(p, str2);
2295 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT)
return enc2;
2296 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT)
return enc1;
2299 if (cr2 == RB_PARSER_ENC_CODERANGE_7BIT) {
2303 if (cr1 == RB_PARSER_ENC_CODERANGE_7BIT) {
2311rb_parser_str_modify(rb_parser_string_t *str)
2313 PARSER_ENC_CODERANGE_CLEAR(str);
2317rb_parser_str_set_len(
struct parser_params *p, rb_parser_string_t *str,
long len)
2320 const int termlen = STRING_TERM_LEN(str);
2322 if (
len > (
capa = (
long)(rb_parser_str_capacity(str, termlen))) ||
len < 0) {
2323 rb_bug(
"probable buffer overflow: %ld for %ld",
len,
capa);
2326 int cr = PARSER_ENC_CODERANGE(str);
2327 if (cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2330 else if (
len > PARSER_STRING_LEN(str)) {
2331 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2333 else if (
len < PARSER_STRING_LEN(str)) {
2334 if (cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2337 PARSER_ENC_CODERANGE_SET(str, RB_PARSER_ENC_CODERANGE_UNKNOWN);
2341 STRING_SET_LEN(str,
len);
2342 STRING_TERM_FILL(str);
2345static rb_parser_string_t *
2346rb_parser_str_buf_cat(
struct parser_params *p, rb_parser_string_t *str,
const char *ptr,
long len)
2348 rb_parser_str_modify(str);
2349 if (
len == 0)
return 0;
2351 long total, olen,
off = -1;
2353 const int termlen = STRING_TERM_LEN(str);
2355 PARSER_STRING_GETMEM(str, sptr, olen);
2356 if (ptr >= sptr && ptr <= sptr + olen) {
2360 if (olen > LONG_MAX -
len) {
2361 compile_error(p,
"string sizes too big");
2365 PARSER_STRING_RESIZE_CAPA_TERM(p, str, total, termlen);
2366 sptr = PARSER_STRING_PTR(str);
2370 memcpy(sptr + olen, ptr,
len);
2371 STRING_SET_LEN(str, total);
2372 STRING_TERM_FILL(str);
2377#define parser_str_cat(str, ptr, len) rb_parser_str_buf_cat(p, str, ptr, len)
2378#define parser_str_cat_cstr(str, lit) rb_parser_str_buf_cat(p, str, lit, strlen(lit))
2380static rb_parser_string_t *
2381rb_parser_enc_cr_str_buf_cat(
struct parser_params *p, rb_parser_string_t *str,
const char *ptr,
long len,
2382 rb_encoding *ptr_enc,
int ptr_cr,
int *ptr_cr_ret)
2385 rb_encoding *str_enc, *res_enc;
2387 str_enc = rb_parser_str_get_encoding(str);
2388 str_cr = PARSER_STRING_LEN(str) ? PARSER_ENC_CODERANGE(str) : RB_PARSER_ENC_CODERANGE_7BIT;
2390 if (str_enc == ptr_enc) {
2391 if (str_cr != RB_PARSER_ENC_CODERANGE_UNKNOWN && ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2392 ptr_cr = rb_parser_coderange_scan(p, ptr,
len, ptr_enc);
2397 if (ptr_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2398 ptr_cr = rb_parser_coderange_scan(p, ptr,
len, ptr_enc);
2400 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2401 if (str_enc == rb_ascii8bit_encoding() || ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2402 str_cr = rb_parser_enc_str_coderange(p, str);
2407 *ptr_cr_ret = ptr_cr;
2409 if (str_enc != ptr_enc &&
2410 str_cr != RB_PARSER_ENC_CODERANGE_7BIT &&
2411 ptr_cr != RB_PARSER_ENC_CODERANGE_7BIT) {
2415 if (str_cr == RB_PARSER_ENC_CODERANGE_UNKNOWN) {
2417 res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2419 else if (str_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2420 if (ptr_cr == RB_PARSER_ENC_CODERANGE_7BIT) {
2422 res_cr = RB_PARSER_ENC_CODERANGE_7BIT;
2429 else if (str_cr == RB_PARSER_ENC_CODERANGE_VALID) {
2431 if (PARSER_ENC_CODERANGE_CLEAN_P(ptr_cr))
2439 if (0 <
len) res_cr = RB_PARSER_ENC_CODERANGE_UNKNOWN;
2443 compile_error(p,
"negative string size (or size too big)");
2445 parser_str_cat(str, ptr,
len);
2446 PARSER_ENCODING_CODERANGE_SET(str, res_enc, res_cr);
2450 compile_error(p,
"incompatible character encodings: %s and %s",
2451 rb_enc_name(str_enc), rb_enc_name(ptr_enc));
2456static rb_parser_string_t *
2457rb_parser_enc_str_buf_cat(
struct parser_params *p, rb_parser_string_t *str,
const char *ptr,
long len,
2458 rb_encoding *ptr_enc)
2460 return rb_parser_enc_cr_str_buf_cat(p, str, ptr,
len, ptr_enc, RB_PARSER_ENC_CODERANGE_UNKNOWN, NULL);
2463static rb_parser_string_t *
2464rb_parser_str_buf_append(
struct parser_params *p, rb_parser_string_t *str, rb_parser_string_t *str2)
2466 int str2_cr = rb_parser_enc_str_coderange(p, str2);
2468 rb_parser_enc_cr_str_buf_cat(p, str, PARSER_STRING_PTR(str2), PARSER_STRING_LEN(str2),
2469 rb_parser_str_get_encoding(str2), str2_cr, &str2_cr);
2471 PARSER_ENC_CODERANGE_SET(str2, str2_cr);
2476static rb_parser_string_t *
2477rb_parser_str_resize(
struct parser_params *p, rb_parser_string_t *str,
long len)
2480 rb_bug(
"negative string size (or size too big)");
2483 long slen = PARSER_STRING_LEN(str);
2485 if (slen >
len && PARSER_ENC_CODERANGE(str) != RB_PARSER_ENC_CODERANGE_7BIT) {
2486 PARSER_ENC_CODERANGE_CLEAR(str);
2491 const int termlen = STRING_TERM_LEN(str);
2494 SIZED_REALLOC_N(str->ptr,
char, (
size_t)
len + termlen, STRING_SIZE(str));
2496 else if (
len == slen)
return str;
2497 STRING_SET_LEN(str,
len);
2498 STRING_TERM_FILL(str);
2503# define PARSER_ENC_STRING_GETMEM(str, ptrvar, lenvar, encvar) \
2504 ((ptrvar) = str->ptr, \
2505 (lenvar) = str->len, \
2506 (encvar) = str->enc)
2509rb_parser_string_hash_cmp(rb_parser_string_t *str1, rb_parser_string_t *str2)
2512 const char *ptr1, *ptr2;
2513 rb_encoding *enc1, *enc2;
2515 PARSER_ENC_STRING_GETMEM(str1, ptr1, len1, enc1);
2516 PARSER_ENC_STRING_GETMEM(str2, ptr2, len2, enc2);
2518 return (len1 != len2 ||
2520 memcmp(ptr1, ptr2, len1) != 0);
2524rb_parser_ary_extend(rb_parser_t *p, rb_parser_ary_t *ary,
long len)
2527 if (ary->capa <
len) {
2529 ary->data = (rb_parser_ary_data *)
xrealloc(ary->data,
sizeof(rb_parser_ary_data) *
len);
2530 for (i = ary->len; i <
len; i++) {
2540static rb_parser_ary_t *
2541parser_ary_new_capa(rb_parser_t *p,
long len)
2544 rb_bug(
"negative array size (or size too big): %ld",
len);
2546 rb_parser_ary_t *ary =
xcalloc(1,
sizeof(rb_parser_ary_t));
2551 ary->data = (rb_parser_ary_data *)
xcalloc(
len,
sizeof(rb_parser_ary_data));
2560static rb_parser_ary_t *
2561rb_parser_ary_new_capa_for_script_line(rb_parser_t *p,
long len)
2563 rb_parser_ary_t *ary = parser_ary_new_capa(p,
len);
2564 ary->data_type = PARSER_ARY_DATA_SCRIPT_LINE;
2568static rb_parser_ary_t *
2569rb_parser_ary_new_capa_for_ast_token(rb_parser_t *p,
long len)
2571 rb_parser_ary_t *ary = parser_ary_new_capa(p,
len);
2572 ary->data_type = PARSER_ARY_DATA_AST_TOKEN;
2577static rb_parser_ary_t *
2578rb_parser_ary_new_capa_for_node(rb_parser_t *p,
long len)
2580 rb_parser_ary_t *ary = parser_ary_new_capa(p,
len);
2581 ary->data_type = PARSER_ARY_DATA_NODE;
2589static rb_parser_ary_t *
2590parser_ary_push(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ary_data val)
2592 if (ary->len == ary->capa) {
2593 rb_parser_ary_extend(p, ary, ary->len == 0 ? 1 : ary->len * 2);
2595 ary->data[ary->len++] = val;
2600static rb_parser_ary_t *
2601rb_parser_ary_push_ast_token(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_ast_token_t *val)
2603 if (ary->data_type != PARSER_ARY_DATA_AST_TOKEN) {
2604 rb_bug(
"unexpected rb_parser_ary_data_type: %d", ary->data_type);
2606 return parser_ary_push(p, ary, val);
2609static rb_parser_ary_t *
2610rb_parser_ary_push_script_line(rb_parser_t *p, rb_parser_ary_t *ary, rb_parser_string_t *val)
2612 if (ary->data_type != PARSER_ARY_DATA_SCRIPT_LINE) {
2613 rb_bug(
"unexpected rb_parser_ary_data_type: %d", ary->data_type);
2615 return parser_ary_push(p, ary, val);
2619static rb_parser_ary_t *
2620rb_parser_ary_push_node(rb_parser_t *p, rb_parser_ary_t *ary, NODE *val)
2622 if (ary->data_type != PARSER_ARY_DATA_NODE) {
2623 rb_bug(
"unexpected rb_parser_ary_data_type: %d", ary->data_type);
2625 return parser_ary_push(p, ary, val);
2630rb_parser_ast_token_free(rb_parser_t *p, rb_parser_ast_token_t *token)
2633 rb_parser_string_free(p, token->str);
2638rb_parser_ary_free(rb_parser_t *p, rb_parser_ary_t *ary)
2640# define foreach_ary(ptr) \
2641 for (rb_parser_ary_data *ptr = ary->data, *const end_ary_data = ptr + ary->len; \
2642 ptr < end_ary_data; ptr++)
2643 switch (ary->data_type) {
2644 case PARSER_ARY_DATA_AST_TOKEN:
2645 foreach_ary(data) {rb_parser_ast_token_free(p, *data);}
2647 case PARSER_ARY_DATA_SCRIPT_LINE:
2648 foreach_ary(data) {rb_parser_string_free(p, *data);}
2650 case PARSER_ARY_DATA_NODE:
2654 rb_bug(
"unexpected rb_parser_ary_data_type: %d", ary->data_type);
2668# define YY_CAST(Type, Val) static_cast<Type> (Val)
2669# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
2671# define YY_CAST(Type, Val) ((Type) (Val))
2672# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
2676# if defined __cplusplus
2677# if 201103L <= __cplusplus
2678# define YY_NULLPTR nullptr
2680# define YY_NULLPTR 0
2683# define YY_NULLPTR ((void*)0)
2691 YYSYMBOL_YYEMPTY = -2,
2693 YYSYMBOL_YYerror = 1,
2694 YYSYMBOL_YYUNDEF = 2,
2695 YYSYMBOL_keyword_class = 3,
2696 YYSYMBOL_keyword_module = 4,
2697 YYSYMBOL_keyword_def = 5,
2698 YYSYMBOL_keyword_undef = 6,
2699 YYSYMBOL_keyword_begin = 7,
2700 YYSYMBOL_keyword_rescue = 8,
2701 YYSYMBOL_keyword_ensure = 9,
2702 YYSYMBOL_keyword_end = 10,
2703 YYSYMBOL_keyword_if = 11,
2704 YYSYMBOL_keyword_unless = 12,
2705 YYSYMBOL_keyword_then = 13,
2706 YYSYMBOL_keyword_elsif = 14,
2707 YYSYMBOL_keyword_else = 15,
2708 YYSYMBOL_keyword_case = 16,
2709 YYSYMBOL_keyword_when = 17,
2710 YYSYMBOL_keyword_while = 18,
2711 YYSYMBOL_keyword_until = 19,
2712 YYSYMBOL_keyword_for = 20,
2713 YYSYMBOL_keyword_break = 21,
2714 YYSYMBOL_keyword_next = 22,
2715 YYSYMBOL_keyword_redo = 23,
2716 YYSYMBOL_keyword_retry = 24,
2717 YYSYMBOL_keyword_in = 25,
2718 YYSYMBOL_keyword_do = 26,
2719 YYSYMBOL_keyword_do_cond = 27,
2720 YYSYMBOL_keyword_do_block = 28,
2721 YYSYMBOL_keyword_do_LAMBDA = 29,
2722 YYSYMBOL_keyword_return = 30,
2723 YYSYMBOL_keyword_yield = 31,
2724 YYSYMBOL_keyword_super = 32,
2725 YYSYMBOL_keyword_self = 33,
2726 YYSYMBOL_keyword_nil = 34,
2727 YYSYMBOL_keyword_true = 35,
2728 YYSYMBOL_keyword_false = 36,
2729 YYSYMBOL_keyword_and = 37,
2730 YYSYMBOL_keyword_or = 38,
2731 YYSYMBOL_keyword_not = 39,
2732 YYSYMBOL_modifier_if = 40,
2733 YYSYMBOL_modifier_unless = 41,
2734 YYSYMBOL_modifier_while = 42,
2735 YYSYMBOL_modifier_until = 43,
2736 YYSYMBOL_modifier_rescue = 44,
2737 YYSYMBOL_keyword_alias = 45,
2738 YYSYMBOL_keyword_defined = 46,
2739 YYSYMBOL_keyword_BEGIN = 47,
2740 YYSYMBOL_keyword_END = 48,
2741 YYSYMBOL_keyword__LINE__ = 49,
2742 YYSYMBOL_keyword__FILE__ = 50,
2743 YYSYMBOL_keyword__ENCODING__ = 51,
2744 YYSYMBOL_tIDENTIFIER = 52,
2746 YYSYMBOL_tGVAR = 54,
2747 YYSYMBOL_tIVAR = 55,
2748 YYSYMBOL_tCONSTANT = 56,
2749 YYSYMBOL_tCVAR = 57,
2750 YYSYMBOL_tLABEL = 58,
2751 YYSYMBOL_tINTEGER = 59,
2752 YYSYMBOL_tFLOAT = 60,
2753 YYSYMBOL_tRATIONAL = 61,
2754 YYSYMBOL_tIMAGINARY = 62,
2755 YYSYMBOL_tCHAR = 63,
2756 YYSYMBOL_tNTH_REF = 64,
2757 YYSYMBOL_tBACK_REF = 65,
2758 YYSYMBOL_tSTRING_CONTENT = 66,
2759 YYSYMBOL_tREGEXP_END = 67,
2760 YYSYMBOL_tDUMNY_END = 68,
2762 YYSYMBOL_70_backslash_ = 70,
2764 YYSYMBOL_72_escaped_horizontal_tab_ = 72,
2765 YYSYMBOL_73_escaped_form_feed_ = 73,
2766 YYSYMBOL_74_escaped_carriage_return_ = 74,
2767 YYSYMBOL_75_escaped_vertical_tab_ = 75,
2768 YYSYMBOL_tUPLUS = 76,
2769 YYSYMBOL_tUMINUS = 77,
2777 YYSYMBOL_tANDOP = 85,
2778 YYSYMBOL_tOROP = 86,
2779 YYSYMBOL_tMATCH = 87,
2780 YYSYMBOL_tNMATCH = 88,
2781 YYSYMBOL_tDOT2 = 89,
2782 YYSYMBOL_tDOT3 = 90,
2783 YYSYMBOL_tBDOT2 = 91,
2784 YYSYMBOL_tBDOT3 = 92,
2785 YYSYMBOL_tAREF = 93,
2786 YYSYMBOL_tASET = 94,
2787 YYSYMBOL_tLSHFT = 95,
2788 YYSYMBOL_tRSHFT = 96,
2789 YYSYMBOL_tANDDOT = 97,
2790 YYSYMBOL_tCOLON2 = 98,
2791 YYSYMBOL_tCOLON3 = 99,
2792 YYSYMBOL_tOP_ASGN = 100,
2793 YYSYMBOL_tASSOC = 101,
2794 YYSYMBOL_tLPAREN = 102,
2795 YYSYMBOL_tLPAREN_ARG = 103,
2796 YYSYMBOL_tRPAREN = 104,
2797 YYSYMBOL_tLBRACK = 105,
2798 YYSYMBOL_tLBRACE = 106,
2799 YYSYMBOL_tLBRACE_ARG = 107,
2800 YYSYMBOL_tSTAR = 108,
2801 YYSYMBOL_tDSTAR = 109,
2802 YYSYMBOL_tAMPER = 110,
2803 YYSYMBOL_tLAMBDA = 111,
2804 YYSYMBOL_tSYMBEG = 112,
2805 YYSYMBOL_tSTRING_BEG = 113,
2806 YYSYMBOL_tXSTRING_BEG = 114,
2807 YYSYMBOL_tREGEXP_BEG = 115,
2808 YYSYMBOL_tWORDS_BEG = 116,
2809 YYSYMBOL_tQWORDS_BEG = 117,
2810 YYSYMBOL_tSYMBOLS_BEG = 118,
2811 YYSYMBOL_tQSYMBOLS_BEG = 119,
2812 YYSYMBOL_tSTRING_END = 120,
2813 YYSYMBOL_tSTRING_DEND = 121,
2814 YYSYMBOL_tSTRING_DBEG = 122,
2815 YYSYMBOL_tSTRING_DVAR = 123,
2816 YYSYMBOL_tLAMBEG = 124,
2817 YYSYMBOL_tLABEL_END = 125,
2818 YYSYMBOL_tIGNORED_NL = 126,
2819 YYSYMBOL_tCOMMENT = 127,
2820 YYSYMBOL_tEMBDOC_BEG = 128,
2821 YYSYMBOL_tEMBDOC = 129,
2822 YYSYMBOL_tEMBDOC_END = 130,
2823 YYSYMBOL_tHEREDOC_BEG = 131,
2824 YYSYMBOL_tHEREDOC_END = 132,
2825 YYSYMBOL_k__END__ = 133,
2826 YYSYMBOL_tLOWEST = 134,
2827 YYSYMBOL_135_ = 135,
2828 YYSYMBOL_136_ = 136,
2829 YYSYMBOL_137_ = 137,
2830 YYSYMBOL_138_ = 138,
2831 YYSYMBOL_139_ = 139,
2832 YYSYMBOL_140_ = 140,
2833 YYSYMBOL_141_ = 141,
2834 YYSYMBOL_142_ = 142,
2835 YYSYMBOL_143_ = 143,
2836 YYSYMBOL_144_ = 144,
2837 YYSYMBOL_145_ = 145,
2838 YYSYMBOL_146_ = 146,
2839 YYSYMBOL_147_ = 147,
2840 YYSYMBOL_tUMINUS_NUM = 148,
2841 YYSYMBOL_149_ = 149,
2842 YYSYMBOL_150_ = 150,
2843 YYSYMBOL_tLAST_TOKEN = 151,
2844 YYSYMBOL_152_ = 152,
2845 YYSYMBOL_153_ = 153,
2846 YYSYMBOL_154_ = 154,
2847 YYSYMBOL_155_n_ = 155,
2848 YYSYMBOL_156_ = 156,
2849 YYSYMBOL_157_ = 157,
2850 YYSYMBOL_158_ = 158,
2851 YYSYMBOL_159_ = 159,
2852 YYSYMBOL_160_ = 160,
2853 YYSYMBOL_161_ = 161,
2854 YYSYMBOL_162_ = 162,
2855 YYSYMBOL_YYACCEPT = 163,
2856 YYSYMBOL_164_1 = 164,
2857 YYSYMBOL_program = 165,
2858 YYSYMBOL_option_terms = 166,
2859 YYSYMBOL_top_compstmt = 167,
2860 YYSYMBOL_top_stmts = 168,
2861 YYSYMBOL_top_stmt = 169,
2862 YYSYMBOL_block_open = 170,
2863 YYSYMBOL_begin_block = 171,
2864 YYSYMBOL_172_2 = 172,
2865 YYSYMBOL_173_3 = 173,
2866 YYSYMBOL_bodystmt = 174,
2867 YYSYMBOL_175_4 = 175,
2868 YYSYMBOL_compstmt = 176,
2869 YYSYMBOL_stmts = 177,
2870 YYSYMBOL_stmt_or_begin = 178,
2871 YYSYMBOL_179_5 = 179,
2872 YYSYMBOL_allow_exits = 180,
2873 YYSYMBOL_k_END = 181,
2874 YYSYMBOL_182_6 = 182,
2875 YYSYMBOL_stmt = 183,
2876 YYSYMBOL_command_asgn = 184,
2877 YYSYMBOL_endless_command = 185,
2878 YYSYMBOL_option__n_ = 186,
2879 YYSYMBOL_command_rhs = 187,
2880 YYSYMBOL_expr = 188,
2881 YYSYMBOL_189_7 = 189,
2882 YYSYMBOL_190_8 = 190,
2883 YYSYMBOL_def_name = 191,
2884 YYSYMBOL_defn_head = 192,
2885 YYSYMBOL_193_9 = 193,
2886 YYSYMBOL_defs_head = 194,
2887 YYSYMBOL_expr_value = 195,
2888 YYSYMBOL_196_10 = 196,
2889 YYSYMBOL_197_11 = 197,
2890 YYSYMBOL_expr_value_do = 198,
2891 YYSYMBOL_command_call = 199,
2892 YYSYMBOL_block_command = 200,
2893 YYSYMBOL_cmd_brace_block = 201,
2894 YYSYMBOL_fcall = 202,
2895 YYSYMBOL_command = 203,
2896 YYSYMBOL_mlhs = 204,
2897 YYSYMBOL_mlhs_inner = 205,
2898 YYSYMBOL_mlhs_basic = 206,
2899 YYSYMBOL_mlhs_item = 207,
2900 YYSYMBOL_mlhs_head = 208,
2901 YYSYMBOL_mlhs_post = 209,
2902 YYSYMBOL_mlhs_node = 210,
2904 YYSYMBOL_cname = 212,
2905 YYSYMBOL_cpath = 213,
2906 YYSYMBOL_fname = 214,
2907 YYSYMBOL_fitem = 215,
2908 YYSYMBOL_undef_list = 216,
2909 YYSYMBOL_217_12 = 217,
2911 YYSYMBOL_reswords = 219,
2913 YYSYMBOL_endless_arg = 221,
2914 YYSYMBOL_relop = 222,
2915 YYSYMBOL_rel_expr = 223,
2916 YYSYMBOL_lex_ctxt = 224,
2917 YYSYMBOL_begin_defined = 225,
2918 YYSYMBOL_after_rescue = 226,
2919 YYSYMBOL_arg_value = 227,
2920 YYSYMBOL_aref_args = 228,
2921 YYSYMBOL_arg_rhs = 229,
2922 YYSYMBOL_paren_args = 230,
2923 YYSYMBOL_opt_paren_args = 231,
2924 YYSYMBOL_opt_call_args = 232,
2925 YYSYMBOL_call_args = 233,
2926 YYSYMBOL_234_13 = 234,
2927 YYSYMBOL_command_args = 235,
2928 YYSYMBOL_block_arg = 236,
2929 YYSYMBOL_opt_block_arg = 237,
2930 YYSYMBOL_args = 238,
2931 YYSYMBOL_arg_splat = 239,
2932 YYSYMBOL_mrhs_arg = 240,
2933 YYSYMBOL_mrhs = 241,
2934 YYSYMBOL_primary = 242,
2935 YYSYMBOL_243_14 = 243,
2936 YYSYMBOL_244_15 = 244,
2937 YYSYMBOL_245_16 = 245,
2938 YYSYMBOL_246_17 = 246,
2939 YYSYMBOL_247_18 = 247,
2940 YYSYMBOL_248_19 = 248,
2941 YYSYMBOL_249_20 = 249,
2942 YYSYMBOL_250_21 = 250,
2943 YYSYMBOL_251_22 = 251,
2944 YYSYMBOL_primary_value = 252,
2945 YYSYMBOL_k_begin = 253,
2946 YYSYMBOL_k_if = 254,
2947 YYSYMBOL_k_unless = 255,
2948 YYSYMBOL_k_while = 256,
2949 YYSYMBOL_k_until = 257,
2950 YYSYMBOL_k_case = 258,
2951 YYSYMBOL_k_for = 259,
2952 YYSYMBOL_k_class = 260,
2953 YYSYMBOL_k_module = 261,
2954 YYSYMBOL_k_def = 262,
2955 YYSYMBOL_k_do = 263,
2956 YYSYMBOL_k_do_block = 264,
2957 YYSYMBOL_k_rescue = 265,
2958 YYSYMBOL_k_ensure = 266,
2959 YYSYMBOL_k_when = 267,
2960 YYSYMBOL_k_else = 268,
2961 YYSYMBOL_k_elsif = 269,
2962 YYSYMBOL_k_end = 270,
2963 YYSYMBOL_k_return = 271,
2964 YYSYMBOL_k_yield = 272,
2965 YYSYMBOL_then = 273,
2967 YYSYMBOL_if_tail = 275,
2968 YYSYMBOL_opt_else = 276,
2969 YYSYMBOL_for_var = 277,
2970 YYSYMBOL_f_marg = 278,
2971 YYSYMBOL_f_marg_list = 279,
2972 YYSYMBOL_f_margs = 280,
2973 YYSYMBOL_f_rest_marg = 281,
2974 YYSYMBOL_f_any_kwrest = 282,
2975 YYSYMBOL_283_23 = 283,
2976 YYSYMBOL_f_eq = 284,
2977 YYSYMBOL_f_kwarg_f_block_kw = 285,
2978 YYSYMBOL_block_args_tail = 286,
2979 YYSYMBOL_excessed_comma = 287,
2980 YYSYMBOL_f_opt_primary_value = 288,
2981 YYSYMBOL_f_optarg_primary_value = 289,
2982 YYSYMBOL_opt_args_tail_block_args_tail = 290,
2983 YYSYMBOL_block_param = 291,
2984 YYSYMBOL_opt_block_param = 292,
2985 YYSYMBOL_block_param_def = 293,
2986 YYSYMBOL_opt_bv_decl = 294,
2987 YYSYMBOL_bv_decls = 295,
2988 YYSYMBOL_bvar = 296,
2989 YYSYMBOL_max_numparam = 297,
2990 YYSYMBOL_numparam = 298,
2991 YYSYMBOL_it_id = 299,
2992 YYSYMBOL_300_24 = 300,
2993 YYSYMBOL_301_25 = 301,
2994 YYSYMBOL_lambda = 302,
2995 YYSYMBOL_f_larglist = 303,
2996 YYSYMBOL_lambda_body = 304,
2997 YYSYMBOL_305_26 = 305,
2998 YYSYMBOL_do_block = 306,
2999 YYSYMBOL_block_call = 307,
3000 YYSYMBOL_method_call = 308,
3001 YYSYMBOL_brace_block = 309,
3002 YYSYMBOL_310_27 = 310,
3003 YYSYMBOL_brace_body = 311,
3004 YYSYMBOL_312_28 = 312,
3005 YYSYMBOL_do_body = 313,
3006 YYSYMBOL_case_args = 314,
3007 YYSYMBOL_case_body = 315,
3008 YYSYMBOL_cases = 316,
3009 YYSYMBOL_p_pvtbl = 317,
3010 YYSYMBOL_p_pktbl = 318,
3011 YYSYMBOL_p_in_kwarg = 319,
3012 YYSYMBOL_320_29 = 320,
3013 YYSYMBOL_p_case_body = 321,
3014 YYSYMBOL_p_cases = 322,
3015 YYSYMBOL_p_top_expr = 323,
3016 YYSYMBOL_p_top_expr_body = 324,
3017 YYSYMBOL_p_expr = 325,
3018 YYSYMBOL_p_as = 326,
3019 YYSYMBOL_p_alt = 327,
3020 YYSYMBOL_p_lparen = 328,
3021 YYSYMBOL_p_lbracket = 329,
3022 YYSYMBOL_p_expr_basic = 330,
3023 YYSYMBOL_331_30 = 331,
3024 YYSYMBOL_p_args = 332,
3025 YYSYMBOL_p_args_head = 333,
3026 YYSYMBOL_p_args_tail = 334,
3027 YYSYMBOL_p_find = 335,
3028 YYSYMBOL_p_rest = 336,
3029 YYSYMBOL_p_args_post = 337,
3030 YYSYMBOL_p_arg = 338,
3031 YYSYMBOL_p_kwargs = 339,
3032 YYSYMBOL_p_kwarg = 340,
3033 YYSYMBOL_p_kw = 341,
3034 YYSYMBOL_p_kw_label = 342,
3035 YYSYMBOL_p_kwrest = 343,
3036 YYSYMBOL_p_kwnorest = 344,
3037 YYSYMBOL_p_any_kwrest = 345,
3038 YYSYMBOL_p_value = 346,
3039 YYSYMBOL_p_primitive = 347,
3040 YYSYMBOL_p_variable = 348,
3041 YYSYMBOL_p_var_ref = 349,
3042 YYSYMBOL_p_expr_ref = 350,
3043 YYSYMBOL_p_const = 351,
3044 YYSYMBOL_opt_rescue = 352,
3045 YYSYMBOL_exc_list = 353,
3046 YYSYMBOL_exc_var = 354,
3047 YYSYMBOL_opt_ensure = 355,
3048 YYSYMBOL_literal = 356,
3049 YYSYMBOL_strings = 357,
3050 YYSYMBOL_string = 358,
3051 YYSYMBOL_string1 = 359,
3052 YYSYMBOL_xstring = 360,
3053 YYSYMBOL_regexp = 361,
3054 YYSYMBOL_nonempty_list__ = 362,
3055 YYSYMBOL_words_tWORDS_BEG_word_list = 363,
3056 YYSYMBOL_words = 364,
3057 YYSYMBOL_word_list = 365,
3058 YYSYMBOL_word = 366,
3059 YYSYMBOL_words_tSYMBOLS_BEG_symbol_list = 367,
3060 YYSYMBOL_symbols = 368,
3061 YYSYMBOL_symbol_list = 369,
3062 YYSYMBOL_words_tQWORDS_BEG_qword_list = 370,
3063 YYSYMBOL_qwords = 371,
3064 YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list = 372,
3065 YYSYMBOL_qsymbols = 373,
3066 YYSYMBOL_qword_list = 374,
3067 YYSYMBOL_qsym_list = 375,
3068 YYSYMBOL_string_contents = 376,
3069 YYSYMBOL_xstring_contents = 377,
3070 YYSYMBOL_regexp_contents = 378,
3071 YYSYMBOL_string_content = 379,
3072 YYSYMBOL_380_31 = 380,
3073 YYSYMBOL_381_32 = 381,
3074 YYSYMBOL_382_33 = 382,
3075 YYSYMBOL_383_34 = 383,
3076 YYSYMBOL_string_dend = 384,
3077 YYSYMBOL_string_dvar = 385,
3078 YYSYMBOL_symbol = 386,
3079 YYSYMBOL_ssym = 387,
3081 YYSYMBOL_dsym = 389,
3082 YYSYMBOL_numeric = 390,
3083 YYSYMBOL_simple_numeric = 391,
3084 YYSYMBOL_nonlocal_var = 392,
3085 YYSYMBOL_user_variable = 393,
3086 YYSYMBOL_keyword_variable = 394,
3087 YYSYMBOL_var_ref = 395,
3088 YYSYMBOL_var_lhs = 396,
3089 YYSYMBOL_backref = 397,
3090 YYSYMBOL_398_35 = 398,
3091 YYSYMBOL_superclass = 399,
3092 YYSYMBOL_f_opt_paren_args = 400,
3093 YYSYMBOL_f_paren_args = 401,
3094 YYSYMBOL_f_arglist = 402,
3095 YYSYMBOL_403_36 = 403,
3096 YYSYMBOL_f_kwarg_f_kw = 404,
3097 YYSYMBOL_args_tail = 405,
3098 YYSYMBOL_f_opt_arg_value = 406,
3099 YYSYMBOL_f_optarg_arg_value = 407,
3100 YYSYMBOL_opt_args_tail_args_tail = 408,
3101 YYSYMBOL_f_args = 409,
3102 YYSYMBOL_args_forward = 410,
3103 YYSYMBOL_f_bad_arg = 411,
3104 YYSYMBOL_f_norm_arg = 412,
3105 YYSYMBOL_f_arg_asgn = 413,
3106 YYSYMBOL_f_arg_item = 414,
3107 YYSYMBOL_f_arg = 415,
3108 YYSYMBOL_f_label = 416,
3109 YYSYMBOL_f_kw = 417,
3110 YYSYMBOL_f_block_kw = 418,
3111 YYSYMBOL_kwrest_mark = 419,
3112 YYSYMBOL_f_no_kwarg = 420,
3113 YYSYMBOL_f_kwrest = 421,
3114 YYSYMBOL_restarg_mark = 422,
3115 YYSYMBOL_f_rest_arg = 423,
3116 YYSYMBOL_blkarg_mark = 424,
3117 YYSYMBOL_f_block_arg = 425,
3118 YYSYMBOL_opt_f_block_arg = 426,
3119 YYSYMBOL_singleton = 427,
3120 YYSYMBOL_428_37 = 428,
3121 YYSYMBOL_assoc_list = 429,
3122 YYSYMBOL_assocs = 430,
3123 YYSYMBOL_assoc = 431,
3124 YYSYMBOL_operation = 432,
3125 YYSYMBOL_operation2 = 433,
3126 YYSYMBOL_operation3 = 434,
3127 YYSYMBOL_dot_or_colon = 435,
3128 YYSYMBOL_call_op = 436,
3129 YYSYMBOL_call_op2 = 437,
3130 YYSYMBOL_rparen = 438,
3131 YYSYMBOL_rbracket = 439,
3132 YYSYMBOL_rbrace = 440,
3133 YYSYMBOL_trailer = 441,
3134 YYSYMBOL_term = 442,
3135 YYSYMBOL_terms = 443,
3138typedef enum yysymbol_kind_t yysymbol_kind_t;
3151#ifndef __PTRDIFF_MAX__
3153# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3164#ifdef __INT_LEAST8_MAX__
3165typedef __INT_LEAST8_TYPE__ yytype_int8;
3166#elif defined YY_STDINT_H
3167typedef int_least8_t yytype_int8;
3169typedef signed char yytype_int8;
3172#ifdef __INT_LEAST16_MAX__
3173typedef __INT_LEAST16_TYPE__ yytype_int16;
3174#elif defined YY_STDINT_H
3175typedef int_least16_t yytype_int16;
3177typedef short yytype_int16;
3186# undef UINT_LEAST8_MAX
3187# undef UINT_LEAST16_MAX
3188# define UINT_LEAST8_MAX 255
3189# define UINT_LEAST16_MAX 65535
3192#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
3193typedef __UINT_LEAST8_TYPE__ yytype_uint8;
3194#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
3195 && UINT_LEAST8_MAX <= INT_MAX)
3196typedef uint_least8_t yytype_uint8;
3197#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
3198typedef unsigned char yytype_uint8;
3200typedef short yytype_uint8;
3203#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
3204typedef __UINT_LEAST16_TYPE__ yytype_uint16;
3205#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
3206 && UINT_LEAST16_MAX <= INT_MAX)
3207typedef uint_least16_t yytype_uint16;
3208#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
3209typedef unsigned short yytype_uint16;
3211typedef int yytype_uint16;
3215# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
3216# define YYPTRDIFF_T __PTRDIFF_TYPE__
3217# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
3218# elif defined PTRDIFF_MAX
3222# define YYPTRDIFF_T ptrdiff_t
3223# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
3225# define YYPTRDIFF_T long
3226# define YYPTRDIFF_MAXIMUM LONG_MAX
3231# ifdef __SIZE_TYPE__
3232# define YYSIZE_T __SIZE_TYPE__
3233# elif defined size_t
3234# define YYSIZE_T size_t
3235# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
3237# define YYSIZE_T size_t
3239# define YYSIZE_T unsigned
3243#define YYSIZE_MAXIMUM \
3244 YY_CAST (YYPTRDIFF_T, \
3245 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
3246 ? YYPTRDIFF_MAXIMUM \
3247 : YY_CAST (YYSIZE_T, -1)))
3249#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
3253typedef yytype_int16 yy_state_t;
3256typedef int yy_state_fast_t;
3259# if defined YYENABLE_NLS && YYENABLE_NLS
3261# include <libintl.h>
3262# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
3266# define YY_(Msgid) Msgid
3271#ifndef YY_ATTRIBUTE_PURE
3272# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
3273# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
3275# define YY_ATTRIBUTE_PURE
3279#ifndef YY_ATTRIBUTE_UNUSED
3280# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
3281# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
3283# define YY_ATTRIBUTE_UNUSED
3288#if ! defined lint || defined __GNUC__
3289# define YY_USE(E) ((void) (E))
3295#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
3296# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
3297# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3298 _Pragma ("GCC diagnostic push") \
3299 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
3301# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
3302 _Pragma ("GCC diagnostic push") \
3303 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
3304 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
3306# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
3307 _Pragma ("GCC diagnostic pop")
3309# define YY_INITIAL_VALUE(Value) Value
3311#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3312# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3313# define YY_IGNORE_MAYBE_UNINITIALIZED_END
3315#ifndef YY_INITIAL_VALUE
3316# define YY_INITIAL_VALUE(Value)
3319#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
3320# define YY_IGNORE_USELESS_CAST_BEGIN \
3321 _Pragma ("GCC diagnostic push") \
3322 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
3323# define YY_IGNORE_USELESS_CAST_END \
3324 _Pragma ("GCC diagnostic pop")
3326#ifndef YY_IGNORE_USELESS_CAST_BEGIN
3327# define YY_IGNORE_USELESS_CAST_BEGIN
3328# define YY_IGNORE_USELESS_CAST_END
3332#define YY_ASSERT(E) ((void) (0 && (E)))
3338# ifdef YYSTACK_USE_ALLOCA
3339# if YYSTACK_USE_ALLOCA
3341# define YYSTACK_ALLOC __builtin_alloca
3342# elif defined __BUILTIN_VA_ARG_INCR
3345# define YYSTACK_ALLOC __alloca
3346# elif defined _MSC_VER
3348# define alloca _alloca
3350# define YYSTACK_ALLOC alloca
3351# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
3354# ifndef EXIT_SUCCESS
3355# define EXIT_SUCCESS 0
3362# ifdef YYSTACK_ALLOC
3364# define YYSTACK_FREE(Ptr) do { ; } while (0)
3365# ifndef YYSTACK_ALLOC_MAXIMUM
3370# define YYSTACK_ALLOC_MAXIMUM 4032
3373# define YYSTACK_ALLOC YYMALLOC
3374# define YYSTACK_FREE YYFREE
3375# ifndef YYSTACK_ALLOC_MAXIMUM
3376# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
3378# if (defined __cplusplus && ! defined EXIT_SUCCESS \
3379 && ! ((defined YYMALLOC || defined malloc) \
3380 && (defined YYFREE || defined free)))
3382# ifndef EXIT_SUCCESS
3383# define EXIT_SUCCESS 0
3387# define YYMALLOC malloc
3388# if ! defined malloc && ! defined EXIT_SUCCESS
3389void *malloc (YYSIZE_T);
3394# if ! defined free && ! defined EXIT_SUCCESS
3401#if (! defined yyoverflow \
3402 && (! defined __cplusplus \
3403 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
3404 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
3409 yy_state_t yyss_alloc;
3415# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
3419# define YYSTACK_BYTES(N) \
3420 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
3421 + YYSIZEOF (YYLTYPE)) \
3422 + 2 * YYSTACK_GAP_MAXIMUM)
3424# define YYCOPY_NEEDED 1
3431# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
3434 YYPTRDIFF_T yynewbytes; \
3435 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
3436 Stack = &yyptr->Stack_alloc; \
3437 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
3438 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
3444#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
3448# if defined __GNUC__ && 1 < __GNUC__
3449# define YYCOPY(Dst, Src, Count) \
3450 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
3452# define YYCOPY(Dst, Src, Count) \
3456 for (yyi = 0; yyi < (Count); yyi++) \
3457 (Dst)[yyi] = (Src)[yyi]; \
3470#define YYNTOKENS 163
3476#define YYNSTATES 1349
3479#define YYMAXUTOK 362
3484#define YYTRANSLATE(YYX) \
3485 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
3486 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
3491static const yytype_uint8 yytranslate[] =
3493 0, 2, 2, 2, 2, 2, 2, 2, 2, 72,
3494 155, 75, 73, 74, 2, 2, 2, 2, 2, 2,
3495 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3496 2, 2, 162, 149, 2, 2, 2, 147, 142, 2,
3497 158, 159, 145, 143, 156, 144, 69, 146, 2, 2,
3498 2, 2, 2, 2, 2, 2, 2, 2, 137, 161,
3499 139, 135, 138, 136, 2, 2, 2, 2, 2, 2,
3500 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3501 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3502 2, 154, 70, 160, 141, 2, 157, 2, 2, 2,
3503 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3504 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3505 2, 2, 2, 152, 140, 153, 150, 2, 89, 90,
3506 91, 92, 76, 77, 78, 79, 95, 96, 84, 83,
3507 80, 81, 82, 87, 88, 93, 94, 98, 85, 86,
3508 97, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3509 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3510 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3511 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3512 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3513 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3514 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3515 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3516 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3517 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
3518 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
3519 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
3520 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
3521 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
3522 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
3523 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
3524 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
3525 65, 66, 67, 68, 71, 99, 100, 101, 102, 103,
3526 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
3527 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
3528 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
3534static const yytype_int16 yyrline[] =
3536 0, 2967, 2967, 2967, 2993, 2993, 2993, 2999, 3004, 3009,
3537 3016, 3021, 3028, 3030, 3044, 3049, 3040, 3060, 3057, 3070,
3538 3076, 3081, 3086, 3093, 3098, 3097, 3107, 3109, 3116, 3116,
3539 3121, 3126, 3134, 3143, 3150, 3156, 3162, 3173, 3184, 3193,
3540 3206, 3207, 3213, 3218, 3229, 3234, 3235, 3242, 3247, 3252,
3541 3258, 3258, 3263, 3269, 3274, 3285, 3296, 3304, 3305, 3311,
3542 3311, 3311, 3318, 3323, 3331, 3334, 3335, 3340, 3345, 3350,
3543 3356, 3355, 3369, 3368, 3381, 3384, 3396, 3406, 3405, 3419,
3544 3424, 3430, 3430, 3430, 3437, 3438, 3441, 3442, 3449, 3457,
3545 3464, 3471, 3480, 3485, 3490, 3495, 3500, 3506, 3512, 3518,
3546 3523, 3530, 3539, 3540, 3547, 3548, 3555, 3560, 3565, 3570,
3547 3575, 3580, 3585, 3590, 3595, 3600, 3607, 3608, 3615, 3620,
3548 3627, 3632, 3639, 3639, 3644, 3649, 3655, 3660, 3666, 3671,
3549 3676, 3684, 3684, 3689, 3694, 3699, 3704, 3709, 3714, 3719,
3550 3727, 3735, 3738, 3743, 3748, 3755, 3755, 3756, 3757, 3762,
3551 3765, 3770, 3773, 3778, 3778, 3786, 3787, 3788, 3789, 3790,
3552 3791, 3792, 3793, 3794, 3795, 3796, 3797, 3798, 3799, 3800,
3553 3801, 3802, 3803, 3804, 3805, 3806, 3807, 3808, 3809, 3810,
3554 3811, 3812, 3813, 3814, 3815, 3818, 3818, 3818, 3819, 3819,
3555 3820, 3820, 3820, 3821, 3821, 3821, 3821, 3822, 3822, 3822,
3556 3822, 3823, 3823, 3823, 3824, 3824, 3824, 3824, 3825, 3825,
3557 3825, 3825, 3826, 3826, 3826, 3826, 3827, 3827, 3827, 3827,
3558 3828, 3828, 3828, 3828, 3829, 3829, 3832, 3837, 3842, 3847,
3559 3852, 3857, 3862, 3868, 3874, 3880, 3887, 3894, 3900, 3906,
3560 3912, 3918, 3923, 3928, 3933, 3938, 3943, 3948, 3953, 3958,
3561 3963, 3968, 3973, 3978, 3983, 3984, 3989, 3994, 3999, 4004,
3562 4009, 4014, 4019, 4024, 4029, 4034, 4039, 4045, 4052, 4063,
3563 4074, 4080, 4081, 4087, 4094, 4095, 4096, 4097, 4100, 4105,
3564 4113, 4119, 4126, 4133, 4140, 4141, 4145, 4150, 4157, 4162,
3565 4171, 4176, 4186, 4198, 4199, 4205, 4206, 4207, 4211, 4216,
3566 4223, 4229, 4234, 4240, 4246, 4250, 4250, 4288, 4293, 4301,
3567 4306, 4314, 4319, 4324, 4329, 4337, 4342, 4351, 4352, 4356,
3568 4361, 4366, 4384, 4384, 4384, 4384, 4384, 4384, 4384, 4384,
3569 4385, 4386, 4387, 4393, 4392, 4405, 4405, 4411, 4417, 4422,
3570 4427, 4432, 4438, 4443, 4448, 4453, 4458, 4464, 4469, 4474,
3571 4479, 4480, 4486, 4487, 4496, 4505, 4514, 4524, 4523, 4538,
3572 4537, 4550, 4557, 4600, 4599, 4617, 4616, 4636, 4635, 4654,
3573 4652, 4669, 4667, 4682, 4687, 4692, 4697, 4712, 4719, 4726,
3574 4744, 4751, 4759, 4767, 4774, 4782, 4791, 4800, 4808, 4815,
3575 4822, 4830, 4837, 4843, 4858, 4865, 4870, 4876, 4883, 4890,
3576 4891, 4892, 4895, 4896, 4899, 4900, 4910, 4911, 4918, 4919,
3577 4922, 4927, 4934, 4939, 4946, 4951, 4956, 4961, 4966, 4973,
3578 4979, 4986, 4987, 4994, 4994, 4996, 4996, 4996, 5001, 5006,
3579 5011, 5018, 5026, 5026, 5026, 5026, 5026, 5026, 5031, 5036,
3580 5041, 5046, 5051, 5057, 5062, 5067, 5072, 5077, 5082, 5087,
3581 5092, 5097, 5104, 5105, 5111, 5118, 5128, 5133, 5140, 5142,
3582 5146, 5151, 5157, 5163, 5168, 5175, 5181, 5174, 5207, 5214,
3583 5223, 5230, 5229, 5240, 5248, 5260, 5270, 5279, 5286, 5293,
3584 5304, 5310, 5315, 5321, 5327, 5332, 5337, 5345, 5351, 5359,
3585 5359, 5376, 5376, 5397, 5403, 5408, 5414, 5421, 5431, 5432,
3586 5435, 5436, 5438, 5449, 5446, 5462, 5463, 5466, 5467, 5473,
3587 5481, 5482, 5488, 5494, 5499, 5504, 5511, 5514, 5521, 5524,
3588 5529, 5532, 5539, 5546, 5547, 5548, 5555, 5562, 5569, 5575,
3589 5582, 5589, 5596, 5602, 5607, 5612, 5619, 5618, 5629, 5635,
3590 5643, 5649, 5654, 5659, 5664, 5669, 5672, 5676, 5683, 5688,
3591 5695, 5703, 5709, 5716, 5717, 5724, 5731, 5736, 5741, 5746,
3592 5753, 5755, 5762, 5768, 5780, 5781, 5796, 5801, 5808, 5814,
3593 5815, 5822, 5823, 5830, 5837, 5843, 5849, 5850, 5851, 5852,
3594 5858, 5866, 5866, 5866, 5866, 5866, 5866, 5866, 5866, 5867,
3595 5872, 5875, 5883, 5895, 5902, 5909, 5914, 5919, 5926, 5947,
3596 5950, 5955, 5959, 5962, 5967, 5970, 5977, 5980, 5981, 5984,
3597 5998, 5999, 6000, 6007, 6020, 6032, 6039, 6039, 6039, 6039,
3598 6043, 6047, 6054, 6056, 6063, 6063, 6067, 6071, 6078, 6078,
3599 6081, 6081, 6085, 6089, 6097, 6101, 6109, 6113, 6121, 6125,
3600 6133, 6137, 6163, 6166, 6165, 6180, 6188, 6192, 6179, 6211,
3601 6212, 6215, 6220, 6223, 6224, 6227, 6243, 6244, 6247, 6255,
3602 6256, 6264, 6265, 6266, 6267, 6270, 6271, 6272, 6275, 6275,
3603 6276, 6279, 6280, 6281, 6282, 6283, 6284, 6285, 6288, 6298,
3604 6305, 6305, 6312, 6313, 6317, 6316, 6327, 6333, 6334, 6343,
3605 6353, 6354, 6354, 6371, 6371, 6371, 6376, 6381, 6386, 6391,
3606 6408, 6408, 6408, 6408, 6408, 6408, 6413, 6418, 6423, 6428,
3607 6433, 6438, 6443, 6448, 6453, 6458, 6463, 6468, 6473, 6479,
3608 6486, 6497, 6506, 6515, 6524, 6535, 6536, 6546, 6554, 6559,
3609 6578, 6580, 6591, 6611, 6617, 6625, 6631, 6639, 6640, 6643,
3610 6649, 6655, 6663, 6664, 6667, 6673, 6681, 6682, 6685, 6691,
3611 6699, 6704, 6711, 6717, 6716, 6754, 6755, 6762, 6764, 6789,
3612 6794, 6799, 6806, 6812, 6817, 6826, 6826, 6827, 6830, 6831,
3613 6834, 6835, 6836, 6839, 6840, 6843, 6844, 6847, 6848, 6851,
3614 6854, 6857, 6860, 6861, 6864, 6865, 6872, 6873, 6877
3619#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
3624static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
3628static const char *
const yytname[] =
3630 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"'class'\"",
3631 "\"'module'\"",
"\"'def'\"",
"\"'undef'\"",
"\"'begin'\"",
3632 "\"'rescue'\"",
"\"'ensure'\"",
"\"'end'\"",
"\"'if'\"",
"\"'unless'\"",
3633 "\"'then'\"",
"\"'elsif'\"",
"\"'else'\"",
"\"'case'\"",
"\"'when'\"",
3634 "\"'while'\"",
"\"'until'\"",
"\"'for'\"",
"\"'break'\"",
"\"'next'\"",
3635 "\"'redo'\"",
"\"'retry'\"",
"\"'in'\"",
"\"'do'\"",
3636 "\"'do' for condition\"",
"\"'do' for block\"",
"\"'do' for lambda\"",
3637 "\"'return'\"",
"\"'yield'\"",
"\"'super'\"",
"\"'self'\"",
"\"'nil'\"",
3638 "\"'true'\"",
"\"'false'\"",
"\"'and'\"",
"\"'or'\"",
"\"'not'\"",
3639 "\"'if' modifier\"",
"\"'unless' modifier\"",
"\"'while' modifier\"",
3640 "\"'until' modifier\"",
"\"'rescue' modifier\"",
"\"'alias'\"",
3641 "\"'defined?'\"",
"\"'BEGIN'\"",
"\"'END'\"",
"\"'__LINE__'\"",
3642 "\"'__FILE__'\"",
"\"'__ENCODING__'\"",
"\"local variable or method\"",
3643 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
3644 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
3645 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
3646 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
3647 "\"literal content\"",
"tREGEXP_END",
"\"dummy end\"",
"'.'",
3648 "\"backslash\"",
"\"escaped space\"",
"\"escaped horizontal tab\"",
3649 "\"escaped form feed\"",
"\"escaped carriage return\"",
3650 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
3651 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
3652 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
3653 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
3654 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
3655 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
3656 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
3657 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
3658 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
3659 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"\"'#{'\"",
3660 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tIGNORED_NL",
"tCOMMENT",
3661 "tEMBDOC_BEG",
"tEMBDOC",
"tEMBDOC_END",
"tHEREDOC_BEG",
"tHEREDOC_END",
3662 "k__END__",
"tLOWEST",
"'='",
"'?'",
"':'",
"'>'",
"'<'",
"'|'",
"'^'",
3663 "'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
"tUMINUS_NUM",
"'!'",
"'~'",
3664 "tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"'\\n'",
"','",
"'`'",
"'('",
"')'",
3665 "']'",
"';'",
"' '",
"$accept",
"$@1",
"program",
"option_terms",
3666 "top_compstmt",
"top_stmts",
"top_stmt",
"block_open",
"begin_block",
3667 "$@2",
"$@3",
"bodystmt",
"$@4",
"compstmt",
"stmts",
"stmt_or_begin",
3668 "$@5",
"allow_exits",
"k_END",
"$@6",
"stmt",
"command_asgn",
3669 "endless_command",
"option_'\\n'",
"command_rhs",
"expr",
"$@7",
"$@8",
3670 "def_name",
"defn_head",
"$@9",
"defs_head",
"expr_value",
"$@10",
3671 "$@11",
"expr_value_do",
"command_call",
"block_command",
3672 "cmd_brace_block",
"fcall",
"command",
"mlhs",
"mlhs_inner",
3673 "mlhs_basic",
"mlhs_item",
"mlhs_head",
"mlhs_post",
"mlhs_node",
"lhs",
3674 "cname",
"cpath",
"fname",
"fitem",
"undef_list",
"$@12",
"op",
3675 "reswords",
"arg",
"endless_arg",
"relop",
"rel_expr",
"lex_ctxt",
3676 "begin_defined",
"after_rescue",
"arg_value",
"aref_args",
"arg_rhs",
3677 "paren_args",
"opt_paren_args",
"opt_call_args",
"call_args",
"$@13",
3678 "command_args",
"block_arg",
"opt_block_arg",
"args",
"arg_splat",
3679 "mrhs_arg",
"mrhs",
"primary",
"$@14",
"$@15",
"@16",
"@17",
"$@18",
3680 "$@19",
"$@20",
"$@21",
"$@22",
"primary_value",
"k_begin",
"k_if",
3681 "k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
3682 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
3683 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"k_yield",
"then",
3684 "do",
"if_tail",
"opt_else",
"for_var",
"f_marg",
"f_marg_list",
3685 "f_margs",
"f_rest_marg",
"f_any_kwrest",
"$@23",
"f_eq",
3686 "f_kwarg_f_block_kw",
"block_args_tail",
"excessed_comma",
3687 "f_opt_primary_value",
"f_optarg_primary_value",
3688 "opt_args_tail_block_args_tail",
"block_param",
"opt_block_param",
3689 "block_param_def",
"opt_bv_decl",
"bv_decls",
"bvar",
"max_numparam",
3690 "numparam",
"it_id",
"@24",
"$@25",
"lambda",
"f_larglist",
3691 "lambda_body",
"$@26",
"do_block",
"block_call",
"method_call",
3692 "brace_block",
"@27",
"brace_body",
"@28",
"do_body",
"case_args",
3693 "case_body",
"cases",
"p_pvtbl",
"p_pktbl",
"p_in_kwarg",
"$@29",
3694 "p_case_body",
"p_cases",
"p_top_expr",
"p_top_expr_body",
"p_expr",
3695 "p_as",
"p_alt",
"p_lparen",
"p_lbracket",
"p_expr_basic",
"$@30",
3696 "p_args",
"p_args_head",
"p_args_tail",
"p_find",
"p_rest",
3697 "p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
"p_kw_label",
3698 "p_kwrest",
"p_kwnorest",
"p_any_kwrest",
"p_value",
"p_primitive",
3699 "p_variable",
"p_var_ref",
"p_expr_ref",
"p_const",
"opt_rescue",
3700 "exc_list",
"exc_var",
"opt_ensure",
"literal",
"strings",
"string",
3701 "string1",
"xstring",
"regexp",
"nonempty_list_' '",
3702 "words_tWORDS_BEG_word_list",
"words",
"word_list",
"word",
3703 "words_tSYMBOLS_BEG_symbol_list",
"symbols",
"symbol_list",
3704 "words_tQWORDS_BEG_qword_list",
"qwords",
3705 "words_tQSYMBOLS_BEG_qsym_list",
"qsymbols",
"qword_list",
"qsym_list",
3706 "string_contents",
"xstring_contents",
"regexp_contents",
3707 "string_content",
"@31",
"@32",
"@33",
"@34",
"string_dend",
3708 "string_dvar",
"symbol",
"ssym",
"sym",
"dsym",
"numeric",
3709 "simple_numeric",
"nonlocal_var",
"user_variable",
"keyword_variable",
3710 "var_ref",
"var_lhs",
"backref",
"$@35",
"superclass",
3711 "f_opt_paren_args",
"f_paren_args",
"f_arglist",
"@36",
"f_kwarg_f_kw",
3712 "args_tail",
"f_opt_arg_value",
"f_optarg_arg_value",
3713 "opt_args_tail_args_tail",
"f_args",
"args_forward",
"f_bad_arg",
3714 "f_norm_arg",
"f_arg_asgn",
"f_arg_item",
"f_arg",
"f_label",
"f_kw",
3715 "f_block_kw",
"kwrest_mark",
"f_no_kwarg",
"f_kwrest",
"restarg_mark",
3716 "f_rest_arg",
"blkarg_mark",
"f_block_arg",
"opt_f_block_arg",
3717 "singleton",
"$@37",
"assoc_list",
"assocs",
"assoc",
"operation",
3718 "operation2",
"operation3",
"dot_or_colon",
"call_op",
"call_op2",
3719 "rparen",
"rbracket",
"rbrace",
"trailer",
"term",
"terms",
"none", YY_NULLPTR
3723yysymbol_name (yysymbol_kind_t yysymbol)
3725 return yytname[yysymbol];
3729#define YYPACT_NINF (-1105)
3731#define yypact_value_is_default(Yyn) \
3732 ((Yyn) == YYPACT_NINF)
3734#define YYTABLE_NINF (-789)
3736#define yytable_value_is_error(Yyn) \
3737 ((Yyn) == YYTABLE_NINF)
3741static const yytype_int16 yypact[] =
3743 -1105, 5137, 116, -1105, -1105, -1105, -1105, 9782, -1105, -1105,
3744 -1105, -1105, -1105, -1105, -1105, 10845, 10845, -1105, -1105, -1105,
3745 -1105, 6047, -1105, -1105, -1105, -1105, 577, 9627, 14, 2,
3746 -1105, -1105, -1105, -1105, 4430, 6204, -1105, -1105, 5576, -1105,
3747 -1105, -1105, -1105, -1105, -1105, -1105, -1105, 12297, 12297, 12297,
3748 12297, 176, 8533, 8692, 11329, 11571, 10085, -1105, 9472, -1105,
3749 -1105, -1105, 117, 117, 117, 117, 1370, 12418, 12297, -1105,
3750 646, -1105, -1105, 1384, -1105, 776, 314, 314, -1105, -1105,
3751 260, 148, 160, -1105, 186, 12902, -1105, 268, 2773, 925,
3752 370, 385, -1105, 10724, 10724, -1105, -1105, 9157, 13021, 13140,
3753 13259, 9316, 10845, 6675, -1105, 683, 78, -1105, -1105, 366,
3754 -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105,
3755 -1105, -1105, -1105, -1105, -1105, -1105, -1105, 320, 420, -1105,
3756 308, 427, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105,
3757 -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105,
3758 -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105,
3759 -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105,
3760 -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105,
3761 -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105,
3762 -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105,
3763 -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105,
3764 -1105, 333, -1105, -1105, -1105, -1105, -1105, -1105, 336, 12297,
3765 448, 8692, 12297, 12297, 12297, -1105, 12297, 314, 314, -1105,
3766 393, 5546, 480, -1105, -1105, 435, -1105, 432, 52, 53,
3767 500, 70, 465, -1105, -1105, 10966, -1105, 10845, -1105, -1105,
3768 10463, 12539, 614, -1105, 474, -1105, 8851, -1105, -1105, -1105,
3769 -1105, -1105, 519, 260, -1105, 546, -1105, 572, 621, 5703,
3770 5703, 611, -1105, 8533, 561, 646, -1105, 1384, 14, 602,
3771 -1105, -1105, 590, 720, 819, -1105, 480, 616, 819, -1105,
3772 14, 704, 1370, 13378, 613, 613, 627, -1105, 658, 731,
3773 741, 746, -1105, -1105, 818, -1105, -1105, 972, 1002, 547,
3774 -1105, 630, 630, 630, 630, 716, -1105, -1105, -1105, -1105,
3775 -1105, -1105, -1105, 5290, 672, 10724, 10724, 10724, 10724, -1105,
3776 12539, 12539, 2275, 691, 710, -1105, 2275, -1105, 752, -1105,
3777 -1105, -1105, -1105, 747, -1105, -1105, -1105, -1105, -1105, -1105,
3778 -1105, 8533, 10204, 743, -1105, -1105, 12297, 12297, 12297, 12297,
3779 12297, -1105, -1105, 12297, 12297, 12297, 12297, 12297, 12297, 12297,
3780 12297, -1105, 12297, -1105, -1105, 12297, 12297, 12297, 12297, 12297,
3781 12297, 12297, 12297, 12297, 12297, -1105, -1105, 4541, 10845, 13864,
3782 7462, -1105, 776, 88, 88, 10724, 8380, 8380, -1105, 646,
3783 733, 854, -1105, -1105, 749, 883, 81, 135, 140, 879,
3784 887, 10724, 634, -1105, 778, 793, -1105, -1105, -1105, -1105,
3785 59, 92, 526, 584, 624, 649, 719, 724, 742, -1105,
3786 -1105, -1105, -1105, 788, -1105, 10323, -1105, -1105, -1105, 15349,
3787 -1105, -1105, -1105, -1105, -1105, -1105, 410, -1105, -1105, -1105,
3788 730, 804, 807, -1105, 12297, 11087, -1105, -1105, 13963, 10845,
3789 14062, -1105, -1105, 11450, -1105, 12297, 14, -1105, 789, 14,
3790 797, -1105, -1105, 799, 177, -1105, -1105, -1105, -1105, -1105,
3791 9782, -1105, -1105, 12297, 815, 14161, 14062, -1105, 2, 14,
3792 -1105, -1105, 4702, 834, 841, -1105, 11329, -1105, -1105, 11571,
3793 -1105, -1105, -1105, 474, 809, -1105, -1105, 869, -1105, 13378,
3794 14260, 10845, 14359, -1105, -1105, -1105, -1105, -1105, -1105, -1105,
3795 -1105, -1105, -1105, -1105, -1105, 1050, 297, 1081, 326, 12297,
3796 -1105, -1105, 9004, -1105, -1105, -1105, -1105, -1105, 10603, -1105,
3797 -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, 1300,
3798 -1105, -1105, -1105, -1105, -1105, 876, -1105, 880, -1105, -1105,
3799 886, 14, -1105, -1105, -1105, 913, -1105, 900, 12297, -1105,
3800 115, -1105, -1105, 1007, 904, 1010, -1105, 12660, 7462, 646,
3801 12660, 7462, -1105, 914, -1105, -1105, -1105, 134, 134, 11692,
3802 14, 13378, 916, -1105, 11692, -1105, 621, 4975, 4975, 4975,
3803 4975, 5128, 4761, 4975, 4975, 5703, 5703, 529, 529, -1105,
3804 5389, 1270, 1270, 1294, 406, 406, 621, 621, 621, 1457,
3805 1457, 6832, 5733, 7146, 5890, -1105, -1105, 519, -1105, 14,
3806 920, 643, -1105, 685, -1105, -1105, 6361, 134, -1105, -1105,
3807 7615, 1056, 8074, 170, 134, 134, 1062, 1057, 164, 14458,
3808 10845, 14557, -1105, -1105, -1105, 809, -1105, -1105, -1105, 14656,
3809 10845, 14755, 7462, 12539, -1105, -1105, -1105, 14, -1105, -1105,
3810 -1105, 3926, 12418, 12418, 9782, 12297, 12781, 12781, 12297, -1105,
3811 480, -1105, -1105, 465, 5419, 6518, 14, 413, 422, 12297,
3812 12297, -1105, -1105, 11208, -1105, 11450, -1105, -1105, -1105, 12539,
3813 5546, -1105, 50, 519, 519, 12297, -1105, 259, -1105, -1105,
3814 819, 13378, 869, 305, 344, 14, 391, 423, -1105, -1105,
3815 1151, -1105, 315, -1105, 117, -1105, -1105, 315, 117, -1105,
3816 621, 931, -1105, 1300, 1251, -1105, 929, 14, 930, -1105,
3817 291, -1105, -1105, 68, -1105, 2275, -1105, -1105, 955, 12297,
3818 2275, -1105, -1105, -1105, -1105, -1105, 1777, -1105, -1105, 577,
3819 1047, -1105, 5546, 1053, 134, -1105, 1047, 1053, 134, -1105,
3820 -1105, 946, -1105, -1105, -1105, -1105, -1105, 12297, -1105, 950,
3821 951, 1071, -1105, -1105, 869, 13378, -1105, -1105, 1076, 991,
3822 4088, -1105, -1105, -1105, 852, 461, -1105, -1105, 994, -1105,
3823 -1105, -1105, -1105, 747, 968, 878, 11087, -1105, -1105, -1105,
3824 -1105, 747, -1105, -1105, 1124, 965, -1105, 1122, -1105, -1105,
3825 -1105, -1105, -1105, -1105, 11813, 134, -1105, 1062, 134, 349,
3826 359, 14, 171, 178, 8380, 646, 10724, 7462, 1242, 344,
3827 -1105, 14, 134, 177, 9937, -1105, 78, 148, -1105, 4172,
3828 -1105, -1105, -1105, -1105, -1105, 577, -1105, -1105, -1105, 527,
3829 -1105, -1105, 14, 983, 177, -1105, -1105, -1105, 467, -1105,
3830 -1105, -1105, -1105, -1105, 630, -1105, 630, 630, 630, -1105,
3831 14, -1105, 1300, -1105, 1261, -1105, -1105, 1090, 876, -1105,
3832 -1105, 987, 988, -1105, -1105, 992, -1105, 993, -1105, 987,
3833 12660, -1105, -1105, -1105, -1105, -1105, -1105, -1105, 999, 11934,
3834 -1105, 869, -1105, -1105, -1105, 14854, 10845, 14953, -1105, -1105,
3835 12297, 12418, 12418, 997, -1105, -1105, -1105, 12418, 12418, -1105,
3836 -1105, 12055, 1122, -1105, -1105, -1105, 8380, 10724, 134, -1105,
3837 -1105, 134, -1105, 12297, -1105, 98, -1105, -1105, 134, -1105,
3838 191, 134, 7462, 646, 134, -1105, -1105, -1105, -1105, -1105,
3839 -1105, 12781, 12297, 12297, -1105, 12297, 12297, -1105, 11450, -1105,
3840 1672, 4984, -1105, -1105, 1018, 1021, -1105, 1777, -1105, 1777,
3841 -1105, 2275, -1105, 1777, -1105, -1105, 1047, 1053, 12297, 12297,
3842 -1105, -1105, 12297, 1029, 10603, 10603, 12418, 12297, 6989, 7303,
3843 14, 549, 589, 13690, 13690, 5546, -1105, -1105, -1105, -1105,
3844 -1105, 12418, -1105, -1105, -1105, -1105, 950, -1105, 1065, -1105,
3845 1178, -1105, -1105, 88, -1105, -1105, -1105, 12176, 7768, -1105,
3846 -1105, -1105, 134, -1105, -1105, 12297, 2275, -1105, -1105, 137,
3847 1261, 1261, 987, 987, 1035, 987, 5546, 5546, 1059, 1059,
3848 999, -1105, -1105, 5546, 607, -1105, -1105, -1105, 3518, 3518,
3849 779, -1105, 4010, 272, 1150, -1105, 1225, -1105, -1105, 35,
3850 -1105, 1067, -1105, -1105, -1105, 1054, -1105, 1058, -1105, 13876,
3851 -1105, -1105, -1105, -1105, 908, -1105, -1105, -1105, 41, -1105,
3852 -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, 469, -1105,
3853 -1105, -1105, 13497, 88, -1105, -1105, 8380, -1105, -1105, 8227,
3854 7615, 12297, -1105, 494, 13690, -1105, 14, 89, -1105, -1105,
3855 -1105, 1021, -1105, -1105, 1777, -1105, -1105, 1993, 9004, -1105,
3856 -1105, 7462, -1105, -1105, -1105, -1105, 13876, 251, 14, 13783,
3857 -1105, 14, 1064, -1105, 1068, -1105, -1105, -1105, 738, -1105,
3858 10724, -1105, 1157, 13783, 13876, 13876, 696, 1111, 3518, 3518,
3859 779, -13, 712, 13690, 13690, -1105, 1166, -1105, 875, 106,
3860 120, 188, 7462, 646, -1105, 965, -1105, -1105, -1105, -1105,
3861 88, 979, 1063, 1066, -1105, 9004, -1105, 987, 876, 1072,
3862 -1105, -1105, 1073, 14, 1093, 913, 1079, 13616, -1105, 1082,
3863 -1105, -1105, -1105, 74, -1105, 1111, 1083, 1085, -1105, -1105,
3864 -1105, -1105, -1105, 14, -1105, -1105, 1086, -1105, 1089, -1105,
3865 -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105,
3866 14, 14, 14, 14, 14, 14, 209, 15052, 10845, 15151,
3867 1124, -1105, 1178, -1105, -1105, 10724, 10724, 1290, -1105, 7462,
3868 1101, -1105, -1105, 68, -1105, 1854, -1105, 1116, -1105, 13616,
3869 1854, -1105, -1105, 1204, 890, 1697, -1105, -1105, 13876, -1105,
3870 696, -1105, 13876, 13783, 832, -1105, -1105, -1105, -1105, -1105,
3871 -1105, 227, 232, 14, 243, 244, -1105, -1105, 7921, -1105,
3872 -1105, -1105, 895, -1105, -1105, 134, -1105, -1105, 876, -1105,
3873 -1105, 1105, 1114, -1105, 890, 1119, 1120, -1105, 15250, 1105,
3874 1129, 14, 1129, -1105, -1105, 267, 409, 1290, -1105, -1105,
3875 -1105, 1697, -1105, 1697, -1105, 1854, -1105, 1697, -1105, 1130,
3876 1132, -1105, 13876, -1105, -1105, -1105, -1105, -1105, 1105, 1105,
3877 1135, 1105, -1105, -1105, 1697, -1105, -1105, 1105, -1105
3883static const yytype_int16 yydefact[] =
3885 2, 0, 0, 46, 385, 386, 387, 0, 378, 379,
3886 380, 383, 26, 26, 26, 373, 374, 375, 376, 397,
3887 398, 305, 672, 671, 673, 674, 59, 0, 59, 0,
3888 788, 676, 675, 677, 765, 767, 666, 665, 766, 667,
3889 661, 662, 663, 664, 610, 682, 683, 0, 0, 0,
3890 0, 0, 0, 0, 788, 788, 114, 465, 636, 636,
3891 638, 640, 0, 0, 0, 0, 0, 0, 0, 3,
3892 4, 8, 26, 10, 40, 45, 691, 691, 65, 85,
3893 305, 84, 0, 102, 0, 106, 116, 0, 74, 254,
3894 270, 0, 333, 0, 0, 81, 81, 0, 0, 0,
3895 0, 0, 342, 305, 352, 86, 350, 322, 323, 609,
3896 611, 324, 325, 619, 326, 625, 328, 629, 327, 631,
3897 329, 608, 653, 654, 607, 659, 670, 678, 679, 330,
3898 0, 331, 89, 7, 1, 195, 206, 196, 219, 192,
3899 212, 202, 201, 222, 223, 217, 200, 199, 194, 220,
3900 224, 225, 204, 193, 207, 211, 213, 205, 198, 214,
3901 221, 216, 215, 208, 218, 203, 191, 210, 209, 190,
3902 197, 188, 189, 185, 186, 187, 145, 147, 146, 180,
3903 181, 176, 158, 159, 160, 167, 164, 166, 161, 162,
3904 182, 183, 168, 169, 173, 177, 163, 165, 155, 156,
3905 157, 170, 171, 172, 174, 175, 178, 179, 184, 150,
3906 152, 33, 148, 149, 151, 381, 382, 384, 0, 761,
3907 0, 0, 316, 764, 308, 636, 0, 691, 691, 300,
3908 0, 283, 311, 100, 304, 788, 312, 0, 678, 679,
3909 0, 331, 788, 757, 101, 788, 484, 0, 97, 60,
3910 59, 0, 0, 28, 788, 12, 0, 11, 27, 280,
3911 373, 374, 485, 0, 248, 0, 342, 345, 249, 239,
3912 240, 339, 24, 0, 0, 4, 21, 23, 59, 104,
3913 20, 335, 0, 59, 59, 284, 0, 0, 59, 755,
3914 59, 0, 0, 0, 691, 691, 112, 377, 0, 122,
3915 123, 130, 462, 656, 0, 655, 657, 0, 0, 0,
3916 616, 620, 632, 626, 634, 660, 69, 260, 261, 785,
3917 784, 6, 786, 0, 0, 0, 0, 0, 0, 788,
3918 0, 0, 719, 0, 690, 369, 719, 688, 0, 371,
3919 388, 489, 478, 90, 491, 349, 389, 491, 474, 788,
3920 118, 0, 110, 107, 788, 72, 0, 0, 0, 0,
3921 0, 276, 277, 0, 0, 0, 0, 237, 238, 0,
3922 0, 70, 0, 274, 275, 0, 0, 0, 0, 0,
3923 0, 0, 0, 0, 0, 775, 776, 0, 788, 0,
3924 0, 80, 79, 0, 0, 0, 0, 0, 359, 4,
3925 5, 0, 409, 408, 0, 0, 678, 679, 331, 140,
3926 141, 0, 0, 143, 686, 0, 678, 679, 331, 367,
3927 215, 208, 218, 203, 185, 186, 187, 145, 146, 753,
3928 76, 75, 752, 0, 99, 59, 98, 778, 777, 0,
3929 351, 612, 788, 788, 153, 760, 339, 315, 763, 307,
3930 0, 0, 0, 788, 0, 0, 301, 310, 0, 788,
3931 0, 788, 788, 0, 302, 720, 59, 296, 788, 59,
3932 788, 295, 306, 0, 59, 348, 68, 30, 32, 31,
3933 0, 788, 281, 0, 0, 0, 0, 788, 0, 59,
3934 337, 19, 0, 103, 0, 340, 783, 782, 285, 783,
3935 287, 341, 756, 0, 129, 660, 120, 115, 690, 0,
3936 0, 788, 0, 463, 642, 658, 645, 643, 637, 613,
3937 614, 639, 615, 641, 617, 0, 0, 0, 0, 0,
3938 787, 9, 0, 34, 35, 36, 37, 282, 0, 66,
3939 67, 726, 723, 722, 721, 724, 732, 737, 720, 0,
3940 743, 738, 747, 746, 742, 788, 739, 788, 718, 701,
3941 704, 59, 699, 725, 727, 728, 730, 704, 734, 693,
3942 741, 422, 421, 745, 704, 749, 698, 0, 0, 0,
3943 0, 0, 462, 0, 489, 91, 462, 0, 0, 0,
3944 59, 0, 108, 119, 0, 502, 246, 253, 255, 256,
3945 257, 264, 265, 258, 259, 235, 236, 262, 263, 502,
3946 59, 250, 251, 252, 241, 242, 243, 244, 245, 278,
3947 279, 765, 767, 766, 769, 483, 768, 305, 481, 59,
3948 788, 765, 767, 766, 769, 482, 305, 0, 788, 400,
3949 0, 399, 0, 0, 0, 0, 0, 357, 339, 0,
3950 788, 0, 81, 365, 140, 141, 142, 684, 363, 0,
3951 788, 0, 0, 0, 773, 774, 77, 59, 344, 765,
3952 766, 305, 0, 0, 0, 0, 0, 0, 0, 759,
3953 313, 309, 314, 788, 765, 766, 59, 765, 766, 0,
3954 0, 758, 290, 297, 292, 299, 779, 347, 29, 0,
3955 266, 13, 338, 0, 788, 0, 25, 105, 22, 336,
3956 59, 0, 113, 770, 128, 59, 765, 766, 464, 646,
3957 0, 618, 0, 622, 0, 628, 624, 0, 0, 630,
3958 247, 0, 38, 0, 420, 412, 414, 59, 417, 410,
3959 0, 697, 751, 0, 696, 0, 714, 689, 0, 0,
3960 0, 711, 733, 568, 740, 744, 0, 716, 748, 59,
3961 54, 57, 271, 268, 0, 692, 55, 269, 0, 463,
3962 487, 0, 463, 395, 396, 488, 473, 316, 41, 318,
3963 0, 44, 317, 117, 111, 0, 64, 47, 62, 0,
3964 288, 311, 226, 42, 0, 331, 500, 500, 0, 788,
3965 788, 489, 480, 94, 0, 486, 297, 788, 788, 294,
3966 479, 92, 293, 334, 788, 788, 401, 788, 403, 82,
3967 402, 355, 356, 392, 0, 0, 502, 0, 0, 770,
3968 338, 59, 765, 766, 0, 0, 0, 0, 140, 141,
3969 144, 59, 0, 59, 0, 343, 475, 87, 48, 288,
3970 227, 56, 234, 154, 762, 59, 303, 788, 788, 486,
3971 788, 788, 59, 788, 59, 233, 286, 121, 486, 26,
3972 647, 644, 651, 652, 621, 623, 633, 627, 635, 39,
3973 59, 419, 0, 729, 0, 750, 694, 741, 788, 703,
3974 702, 704, 704, 424, 700, 704, 731, 704, 728, 704,
3975 0, 788, 788, 370, 372, 464, 88, 464, 321, 0,
3976 788, 109, 788, 788, 788, 0, 788, 0, 501, 501,
3977 0, 0, 0, 0, 95, 780, 788, 0, 0, 93,
3978 390, 788, 17, 599, 394, 393, 0, 0, 0, 404,
3979 406, 0, 83, 0, 493, 0, 360, 500, 0, 361,
3980 486, 0, 0, 0, 0, 486, 368, 754, 78, 476,
3981 477, 0, 0, 0, 788, 0, 0, 291, 298, 346,
3982 719, 0, 411, 413, 415, 418, 695, 0, 715, 0,
3983 712, 0, 707, 0, 709, 717, 61, 273, 0, 0,
3984 26, 26, 316, 319, 0, 0, 0, 0, 765, 766,
3985 59, 765, 766, 0, 0, 267, 53, 231, 52, 232,
3986 96, 0, 50, 229, 51, 230, 600, 601, 788, 602,
3987 788, 14, 407, 0, 353, 354, 494, 0, 0, 501,
3988 358, 362, 0, 685, 364, 0, 719, 466, 469, 0,
3989 0, 0, 704, 704, 704, 704, 58, 272, 788, 788,
3990 320, 43, 63, 289, 486, 591, 597, 564, 0, 0,
3991 0, 501, 59, 501, 552, 636, 0, 590, 73, 510,
3992 516, 518, 520, 514, 513, 548, 515, 557, 560, 563,
3993 569, 570, 559, 523, 571, 524, 576, 577, 578, 581,
3994 582, 583, 584, 585, 587, 586, 588, 589, 567, 71,
3995 49, 228, 0, 0, 604, 391, 0, 18, 606, 0,
3996 0, 0, 495, 788, 0, 366, 59, 0, 650, 649,
3997 648, 416, 713, 708, 0, 705, 710, 59, 0, 453,
3998 452, 0, 579, 580, 141, 595, 0, 540, 59, 541,
3999 545, 59, 0, 535, 0, 788, 538, 551, 0, 592,
4000 0, 593, 0, 511, 0, 0, 558, 562, 574, 575,
4001 0, 501, 501, 0, 0, 566, 0, 603, 0, 678,
4002 679, 331, 0, 4, 15, 788, 496, 498, 499, 497,
4003 0, 507, 456, 0, 471, 0, 467, 704, 788, 788,
4004 451, 433, 436, 59, 0, 728, 436, 736, 425, 436,
4005 430, 490, 492, 59, 533, 555, 543, 542, 534, 546,
4006 781, 536, 565, 59, 517, 512, 548, 519, 549, 553,
4007 636, 561, 556, 572, 573, 596, 522, 532, 521, 528,
4008 59, 59, 59, 59, 59, 59, 339, 0, 788, 0,
4009 788, 605, 788, 405, 503, 0, 0, 0, 468, 0,
4010 0, 706, 429, 0, 428, 0, 447, 0, 454, 0,
4011 431, 442, 444, 0, 735, 0, 449, 539, 0, 547,
4012 0, 594, 0, 0, 0, 525, 526, 527, 529, 530,
4013 531, 770, 338, 59, 765, 766, 598, 16, 0, 508,
4014 509, 460, 59, 458, 461, 0, 470, 426, 788, 435,
4015 434, 436, 436, 455, 432, 436, 436, 339, 0, 436,
4016 544, 59, 549, 550, 554, 486, 788, 0, 457, 472,
4017 427, 0, 448, 0, 445, 0, 439, 0, 441, 770,
4018 338, 450, 0, 537, 505, 506, 504, 459, 436, 436,
4019 436, 436, 446, 440, 0, 437, 443, 436, 438
4023static const yytype_int16 yypgoto[] =
4025 -1105, -1105, -1105, -96, 1038, -1105, 973, -1105, 811, -1105,
4026 -1105, -533, -1105, -39, 194, 817, -1105, 5, -1105, -1105,
4027 22, 254, -520, 18, -492, -57, -1105, -1105, 470, 2485,
4028 -1105, 2614, -9, -1105, -1105, -58, 125, -1105, -244, 1231,
4029 -12, 1221, -153, 21, -51, -1105, -417, 10, 1013, -395,
4030 1220, -38, -18, -1105, -1105, 20, -1105, 3966, -547, 1232,
4031 -1105, 562, 842, 541, 2850, -1105, 702, -16, 659, -373,
4032 60, -1105, 65, -328, -226, 15, -353, -1105, -540, -28,
4033 -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, 867,
4034 -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105, -1105,
4035 -1105, -1105, -1105, -1105, -1105, 402, -1105, 629, 1595, 2113,
4036 -372, -1105, 162, -767, -1105, -793, -801, 605, 453, -502,
4037 -1105, 146, -1105, 231, -1105, -1104, 100, 184, -1105, 318,
4038 -1105, -993, -1105, 51, 295, 161, -389, -1105, -1105, 581,
4039 -1105, -1105, -1105, 530, -1105, -1105, -95, -1105, -516, -1105,
4040 1026, -1105, -769, -1105, -706, -825, -513, -1105, 63, -1105,
4041 -1105, -891, -753, -1105, -1105, -1105, -1105, 228, -1105, -142,
4042 -1105, -779, -957, -980, -343, -984, -732, -1105, 225, -1105,
4043 -1105, -785, 239, -1105, -584, 235, -1105, -1105, -1105, 158,
4044 -1105, -1105, 159, 1133, 1320, -1105, 1279, 1660, 1842, 17,
4045 -1105, 2023, -1105, 877, -1105, 2256, -1105, -1105, 2643, -1105,
4046 2725, -1105, -1105, -53, -1105, -1105, -186, -1105, -1105, -1105,
4047 -1105, -1105, -1105, 32, -1105, -1105, -1105, -1105, 29, -56,
4048 3112, -1, 1305, 3168, 1958, -1105, -1105, 132, 760, 38,
4049 -1105, -1105, -311, -683, 661, -426, -307, -196, -1089, -507,
4050 -324, -663, -493, -225, 675, 168, -374, -1105, -711, -1105,
4051 -671, -1105, -557, -522, -1105, -1105, -1105, 109, -396, 263,
4052 -346, -1105, -1105, -81, -1105, 119, 151, 122, -223, -44,
4057static const yytype_int16 yydefgoto[] =
4059 0, 1, 2, 321, 69, 70, 71, 256, 257, 1109,
4060 1242, 637, 1020, 638, 275, 276, 488, 215, 72, 480,
4061 277, 74, 760, 473, 787, 75, 609, 595, 430, 227,
4062 844, 228, 393, 395, 942, 396, 78, 79, 585, 263,
4063 81, 82, 278, 83, 84, 85, 507, 86, 230, 413,
4064 414, 209, 210, 211, 674, 624, 213, 88, 763, 383,
4065 89, 537, 483, 538, 232, 282, 792, 625, 810, 466,
4066 467, 247, 248, 234, 456, 630, 236, 781, 782, 90,
4067 390, 494, 827, 646, 837, 835, 662, 578, 581, 265,
4068 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
4069 344, 347, 931, 1106, 824, 936, 937, 775, 266, 267,
4070 640, 819, 938, 939, 405, 735, 736, 737, 738, 555,
4071 748, 749, 1189, 1299, 1261, 1191, 1192, 1256, 1193, 1128,
4072 1129, 1183, 1292, 1293, 513, 718, 869, 302, 1117, 104,
4073 1037, 1186, 1249, 348, 105, 106, 345, 582, 583, 586,
4074 587, 945, 825, 1179, 918, 1003, 796, 1288, 828, 1336,
4075 1180, 1068, 1205, 1070, 1071, 1163, 1164, 1072, 1270, 1138,
4076 1139, 1140, 1074, 1075, 1218, 1142, 1076, 1077, 1078, 1079,
4077 1080, 556, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 932,
4078 1018, 1103, 1107, 107, 108, 109, 110, 111, 112, 311,
4079 113, 114, 525, 722, 115, 116, 527, 117, 118, 119,
4080 120, 526, 528, 304, 308, 309, 518, 720, 719, 870,
4081 971, 1120, 871, 121, 122, 305, 123, 124, 125, 126,
4082 238, 239, 129, 240, 241, 836, 658, 333, 334, 335,
4083 336, 557, 889, 559, 560, 746, 561, 562, 563, 564,
4084 898, 566, 567, 568, 569, 1198, 570, 571, 572, 573,
4085 574, 575, 576, 741, 433, 663, 287, 470, 243, 132,
4086 703, 628, 666, 661, 439, 475, 805, 1146, 498, 641,
4093static const yytype_int16 yytable[] =
4095 128, 398, 306, 229, 229, 246, 307, 323, 565, 253,
4096 389, 440, 565, 274, 281, 629, 464, 656, 216, 217,
4097 303, 558, 642, 73, 438, 558, 322, 212, 297, 579,
4098 235, 235, 888, 767, 353, 744, 392, 392, 397, 214,
4099 392, 627, 739, 636, 251, 764, 254, 212, 768, 469,
4100 941, 128, 128, 322, 793, 300, 133, 297, 948, 214,
4101 766, 500, 890, 431, 342, 502, 296, 691, 771, 283,
4102 297, 297, 297, 279, 892, 233, 244, 324, 212, 897,
4103 312, 313, 314, 975, 300, 394, 686, 896, 399, 973,
4104 229, 919, 712, 671, 1004, 315, 797, 407, 417, 417,
4105 417, 639, 682, 691, 340, 1141, -131, 280, 280, 285,
4106 289, 639, 627, 1099, 636, 339, 134, 235, 1184, -131,
4107 489, 212, 521, 523, 242, 242, 546, 681, -672, 842,
4108 767, 337, 337, -132, 1194, 681, 1152, 1118, 715, 1160,
4109 704, 751, 249, 682, 773, 343, 547, -59, 757, 753,
4110 858, 1300, -680, -681, 255, 1207, 460, -672, 1294, 1206,
4111 -132, -671, 434, 284, 288, -139, 704, 754, 436, 249,
4112 462, 1219, 450, 1216, 784, 1152, 346, 551, 552, 491,
4113 848, 851, 274, 885, 486, -137, 885, -131, -132, -138,
4114 -671, 1153, 316, 474, 476, 1161, -134, 818, 590, 1162,
4115 1257, -139, 774, -136, 1114, -139, 1231, 1234, -766, 338,
4116 553, 242, 492, 1185, 330, 331, -133, 512, 1081, 1081,
4117 128, 1300, -138, 1181, 1073, 1073, 739, 881, 1294, 249,
4118 341, 322, 271, 229, 274, 229, 1136, -122, 1145, 1121,
4119 -135, 1029, 506, 319, 464, -137, 246, 342, 973, 320,
4120 1069, 1069, 891, 319, 1027, 128, -134, -136, 1119, 320,
4121 468, -131, 235, 899, 840, 297, 339, -131, 392, 392,
4122 392, 392, 128, 539, 540, -132, 280, 831, 73, 310,
4123 -133, -132, 337, 337, 1219, 923, 340, 841, 1219, 1314,
4124 457, -123, 300, 1313, 279, 349, -130, 457, 890, 691,
4125 471, 497, 497, 647, 954, 704, 497, 472, 503, 1137,
4126 1044, 133, 274, 947, 896, 704, 533, 534, 535, 536,
4127 -129, 505, 128, 651, 297, 319, 1157, -125, 280, 1081,
4128 -126, 320, 249, 339, -127, 1073, 1226, 1228, 392, 723,
4129 682, 723, 350, -139, 1178, 73, 1177, -124, 1314, -139,
4130 128, 300, 1152, 987, 392, 322, 242, 644, 645, 451,
4131 452, 1069, 592, 724, -138, 681, 976, 681, 911, 887,
4132 -138, 1081, 279, 635, -135, 739, 229, 739, 1081, 1081,
4133 986, 514, -135, 1203, -137, -765, 643, -137, -135, 128,
4134 -766, 1017, 728, -137, -103, 128, 128, 493, -134, -136,
4135 1137, 552, 653, 354, -134, -136, 280, -555, 442, 634,
4136 1137, 1137, 341, -338, 987, -117, -125, 725, 245, 1032,
4137 -680, 565, -133, 229, 935, -59, 565, 249, -133, 1006,
4138 1008, 1232, 1235, 553, 826, 1012, 1014, 516, 517, -377,
4139 -126, -338, -338, 471, 635, 280, 729, 229, -127, -788,
4140 235, 280, 280, 682, 385, -131, 1199, 856, 506, 634,
4141 -126, -126, 698, -765, -126, 978, 980, -377, -377, 982,
4142 635, 984, 332, 985, 1132, 1133, -122, 310, 681, 59,
4143 634, 297, 386, 387, 356, 1081, 1042, 866, 1043, 444,
4144 1045, 128, -124, 731, 250, 667, 635, 862, -338, 229,
4145 212, 385, -766, 753, 446, -126, 634, -765, 300, 935,
4146 487, 823, 214, 860, 471, -128, 990, -766, 991, 1100,
4147 -681, 1165, 861, 457, -377, 457, -125, 443, 453, 386,
4148 458, 128, 634, 739, 739, 765, 875, 128, 1311, 388,
4149 506, 875, 1298, 1000, 242, -138, -125, -125, -134, 1334,
4150 -125, 380, 381, 382, 668, -132, 682, -136, -127, 924,
4151 732, 443, -139, 297, 683, 761, 471, 929, 761, 627,
4152 1200, 636, 691, 1028, 1223, 1224, -123, 128, -127, -127,
4153 128, 454, -127, -130, 1302, 692, 459, 280, 694, 1306,
4154 300, 455, 258, 697, 834, -673, -139, 896, 1202, 820,
4155 461, 815, -124, 817, 780, 710, 843, 356, 707, 780,
4156 742, 802, 742, 514, 522, 385, 1122, 1123, 1125, 1126,
4157 809, 463, -124, -124, -673, 1188, -124, 964, 798, 1098,
4158 1098, 1187, 481, 280, 1196, 635, 280, 856, 229, 128,
4159 681, 128, 864, 386, 485, 635, 565, 804, 229, 807,
4160 626, 1110, 626, -674, 1340, 809, 853, 565, 896, 558,
4161 867, 128, -133, 1038, 872, 1135, 1252, 1254, 477, 516,
4162 517, 634, 378, 379, 380, 381, 382, 245, 478, 479,
4163 747, 634, -674, 297, -134, 457, 654, 802, 809, 808,
4164 655, 812, 803, -676, 212, 280, 885, 280, 1200, 356,
4165 459, 811, 626, 1200, 804, 471, 214, 926, 1200, 783,
4166 300, 487, 565, 917, 778, 471, 1295, 280, -675, 788,
4167 490, 626, -676, 626, -136, 558, 812, 385, 497, 1116,
4168 435, 1172, 249, 804, 506, 250, 847, -102, 457, 874,
4169 1098, 876, -133, 807, 877, 878, -138, -675, 626, 626,
4170 495, 959, 385, 1188, 1057, 386, 510, 297, 1188, 812,
4171 504, 1251, 1301, 1188, 1200, 1225, 1200, -129, 1200, 501,
4172 1200, 332, 1309, 626, 547, 626, 1320, 900, -134, 392,
4173 386, 437, 1098, 509, 300, 808, 845, 1200, -677, 1098,
4174 1098, 952, 524, -668, 529, 951, 514, 788, 788, -125,
4175 -678, 319, 863, 1195, 514, 551, 431, 320, 1244, 1220,
4176 -679, -669, 511, 330, 331, -331, 482, -677, 385, 1188,
4177 -136, 1188, -668, 1188, 532, 1188, 577, 953, -678, -678,
4178 1338, 654, 1339, 128, 1341, 1134, 128, 859, -679, -679,
4179 -669, -127, 1188, -331, -331, -687, 386, 649, 786, 804,
4180 519, 1347, 516, 517, 584, 675, 883, 664, 519, 804,
4181 516, 517, 385, 1212, 212, 1283, 868, 249, 91, 933,
4182 940, -59, 940, 961, 970, 249, 496, 769, -339, 887,
4183 392, 772, 237, 237, 514, -678, 665, 580, 761, 280,
4184 386, 659, 280, 704, 530, -679, 1098, 1022, 514, 593,
4185 -331, 635, 1197, 650, 229, -765, -339, -339, 652, 1033,
4186 648, 589, 626, -766, 626, 863, 594, 657, 457, 91,
4187 91, 385, 626, 298, 626, 1310, 786, 786, 1023, 1312,
4188 905, 1195, 1039, 907, 237, 128, 1195, 634, 515, 676,
4189 516, 517, 677, 742, 385, 693, 780, 660, -668, 386,
4190 915, 128, 298, 695, 516, 517, -669, 1212, 696, 385,
4191 237, 237, 957, -339, 237, 404, 415, 415, 701, 237,
4192 128, 471, 386, 1237, 249, 499, -668, -668, 926, 934,
4193 935, 967, 950, 969, -669, -669, 1019, 386, 1308, 1113,
4194 -117, 280, 955, 128, 128, 1048, 1049, 1158, 1159, 972,
4195 709, 1195, 1097, 1097, 672, 673, 916, 280, 361, 362,
4196 1151, 1215, 1148, -133, 87, 678, 1051, 1052, 804, 1245,
4197 1246, 1230, 1233, 689, 690, 711, 280, 128, 1197, 1238,
4198 1197, -765, 740, -668, -124, 1197, 743, -765, 514, -766,
4199 1197, -669, 745, 482, 660, -766, 788, 788, -423, 705,
4200 249, 1317, 788, 788, 508, 508, 750, 1097, 1097, 755,
4201 756, 1097, 758, 373, 374, 87, 87, 770, 514, 816,
4202 1174, 1175, 785, 1104, 297, 1108, 806, 1241, 1097, 823,
4203 804, 1144, 826, 280, 879, 882, 884, 1239, 91, 1201,
4204 893, 901, 519, 392, 516, 517, 1197, 902, 1197, 906,
4205 1197, 1170, 1197, 1130, 1130, 128, -311, 909, 128, 128,
4206 492, 403, 237, 1097, 237, 910, 514, 237, 237, 1197,
4207 912, 788, 520, 91, 516, 517, 913, 128, 925, 322,
4208 128, 920, 930, 1240, 1182, 1097, 788, 935, 1097, 968,
4209 91, 1213, 754, 977, 979, 1182, 1250, 514, 981, 983,
4210 1010, 1054, 1097, 1097, 1097, -315, 804, 1097, 1097, 804,
4211 298, 280, 1097, 1097, 280, 280, 1102, 1274, 940, 297,
4212 721, 128, 516, 517, 1040, 786, 786, 1041, 626, 804,
4213 626, 786, 786, 280, 128, -313, 280, 1105, 392, 392,
4214 91, 1124, 237, 237, 237, 237, 417, 237, 237, 1127,
4215 814, 726, 1147, 516, 517, 36, 37, 1154, 39, 1055,
4216 1155, 1182, 1152, 1143, 1156, 45, 46, 776, 91, 298,
4217 1209, 1210, 1236, 635, 1247, 1248, 229, 280, 1253, 1255,
4218 940, 297, 80, 1258, 87, 1260, 1289, 1290, 1265, 1268,
4219 280, 1269, 1272, 742, 742, 1273, 80, 80, 128, 1316,
4220 786, 804, 804, 804, 1296, 237, 1303, 91, 417, 634,
4221 1307, 1321, 237, 91, 91, 786, 813, 1097, -770, 87,
4222 1323, 1097, 1097, 821, 822, 1325, 1327, 1149, 237, 36,
4223 37, 1229, 39, 80, 80, 1332, 87, 128, -765, 1204,
4224 -766, 1344, 1208, 471, 484, 933, 531, 1108, 80, 706,
4225 1173, 804, 237, 541, 280, 542, 543, 544, 545, 708,
4226 1318, -770, 1227, 541, 958, 542, 543, 544, 545, 402,
4227 419, 384, 1267, 699, 80, 80, 237, 1150, 80, 1144,
4228 846, 1097, 1271, 80, 1021, 974, 87, 1243, 880, -770,
4229 -770, 1259, 1291, 280, 542, 543, 544, 545, 356, 1275,
4230 1276, 1277, 541, 742, 542, 543, 544, 545, 1190, 91,
4231 1305, 921, 922, 733, 87, 369, 370, 1131, 1337, 927,
4232 928, 940, 356, 588, 850, 852, 298, 960, 237, 1335,
4233 1262, 1221, 1217, 1266, 1278, 1279, 1280, 1214, 441, 369,
4234 370, 850, 852, 903, -770, 1222, -770, 904, 1286, 91,
4235 -765, 1287, 733, 87, 727, 91, 432, 865, 734, 87,
4236 87, 895, 377, 378, 379, 380, 381, 382, 886, 962,
4237 963, 1297, 965, 966, 325, 326, 327, 328, 329, 40,
4238 41, 42, 43, 1333, 1315, 0, 0, 378, 379, 380,
4239 381, 382, 988, 989, 237, 91, 0, 237, 91, 0,
4240 0, 994, 80, 995, 946, 997, 237, 949, 298, 0,
4241 0, 794, 0, 0, 0, 0, 0, 0, 0, 0,
4242 0, 956, 0, 0, 0, 996, 80, 0, 80, 0,
4243 0, 80, 80, 0, 0, 1322, 1324, 80, 1011, 1326,
4244 1328, 0, 0, 1331, 0, 0, 0, 0, 0, 0,
4245 626, 0, 626, 0, 80, 87, 0, 91, 0, 91,
4246 0, 0, 0, 0, 0, 0, 0, 237, 0, 0,
4247 0, 0, 1342, 1343, 1345, 1346, 1035, 237, 0, 91,
4248 237, 1348, 0, 0, 0, 356, 0, 0, 0, 794,
4249 794, 0, 0, 0, 0, 87, 0, 0, 0, 0,
4250 0, 87, 369, 370, 80, 0, 80, 80, 80, 80,
4251 0, 80, 80, 0, 0, 0, 237, 1024, 0, 0,
4252 1025, 626, 0, 0, 0, 0, 0, 1030, 298, 0,
4253 1031, 0, 80, 1034, 1067, 1067, 0, 0, 0, 0,
4254 0, 87, 0, 0, 87, 0, 102, 375, 376, 377,
4255 378, 379, 380, 381, 382, 0, 0, 789, 0, 0,
4256 102, 102, 0, 0, 0, 0, 0, 0, 0, 80,
4257 0, 80, 0, 1007, 1009, 0, 80, 80, 80, 1013,
4258 1015, 0, 0, 0, 0, 0, 0, 0, 0, 1067,
4259 1067, 0, 80, 1067, 0, 0, 0, 102, 102, 0,
4260 0, 0, 298, 87, 0, 87, 0, 0, 0, 0,
4261 1067, 1115, 102, 0, 1007, 1009, 80, 1013, 1015, 0,
4262 0, 0, 0, 0, 0, 87, 0, 0, 0, 0,
4263 0, 0, 0, 0, 0, 789, 789, 0, 102, 102,
4264 80, 0, 102, 0, 0, 1067, 0, 102, 0, 0,
4265 0, 91, 0, 237, 91, 0, 0, 1211, 0, 0,
4266 0, 0, 0, 1101, 0, 0, 0, 1067, 0, 0,
4267 1067, 0, 0, 80, 541, 0, 542, 543, 544, 545,
4268 546, 0, 0, 0, 1067, 1067, 1067, 1101, 0, 1067,
4269 1067, 0, 80, 0, 1067, 1067, 0, 0, 0, 541,
4270 547, 542, 543, 544, 545, 546, 0, 0, 0, 0,
4271 0, 0, 0, 80, 548, 0, 0, 237, 0, 80,
4272 0, 0, 0, 0, 549, 547, 0, 0, 0, 0,
4273 550, 551, 552, 237, 0, 0, 0, 0, 794, 794,
4274 0, 0, 0, 0, 794, 794, 0, 0, 0, 549,
4275 0, 0, 0, 91, 237, 0, 551, 552, 80, 80,
4276 0, 80, 80, 0, 553, 0, 102, 554, 0, 91,
4277 80, 0, 0, 0, 0, 80, 0, 0, 0, 541,
4278 1036, 542, 543, 544, 545, 546, 0, 0, 91, 553,
4279 102, 0, 102, 0, 0, 102, 102, 87, 0, 1067,
4280 87, 102, 0, 1067, 1067, 547, 0, 0, 0, 0,
4281 0, 91, 91, 794, 0, 0, 0, 0, 102, 548,
4282 0, 80, 0, 80, 0, 0, 0, 0, 794, 549,
4283 0, 80, 0, 0, 0, 0, 551, 552, 0, 0,
4284 0, 80, 0, 80, 80, 91, 0, 0, 0, 0,
4285 0, 0, 0, 80, 80, 0, 541, 0, 542, 543,
4286 544, 545, 546, 1067, 0, 0, 0, 0, 102, 553,
4287 102, 102, 102, 102, 1319, 102, 102, 0, 0, 0,
4288 80, 0, 547, 0, 789, 789, 0, 0, 0, 0,
4289 789, 789, 0, 0, 0, 0, 102, 0, 0, 87,
4290 0, 0, 0, 0, 0, 0, 549, 0, 0, 131,
4291 0, 0, 550, 551, 552, 87, 0, 0, 0, 1168,
4292 0, 0, 0, 91, 0, 0, 91, 91, 0, 0,
4293 0, 0, 0, 102, 87, 102, 0, 0, 0, 0,
4294 102, 102, 102, 0, 0, 91, 553, 0, 91, 554,
4295 0, 0, 0, 0, 0, 0, 102, 87, 87, 789,
4296 131, 131, 0, 0, 301, 0, 0, 237, 0, 0,
4297 0, 0, 0, 0, 789, 0, 0, 0, 0, 0,
4298 102, 0, 0, 0, 0, 0, 0, 0, 0, 91,
4299 0, 87, 0, 301, 0, 541, 0, 542, 543, 544,
4300 545, 546, 91, 0, 102, 0, 408, 418, 418, 0,
4301 0, 0, 0, 0, 1264, 80, 0, 80, 80, 0,
4302 0, 547, 0, 0, 0, 0, 0, 0, 0, 0,
4303 0, 0, 0, 0, 0, 0, 0, 102, 0, 0,
4304 0, 0, 0, 0, 0, 549, 0, 0, 0, 0,
4305 0, 550, 551, 552, 0, 237, 102, 0, 0, 0,
4306 0, 0, 237, 237, 103, 1167, 91, 0, 0, 87,
4307 0, 0, 87, 87, 0, 0, 1304, 102, 103, 103,
4308 0, 80, 0, 102, 0, 553, 1089, 1089, 554, 0,
4309 0, 87, 0, 0, 87, 0, 0, 80, 249, 0,
4310 0, 0, 80, 80, 0, 91, 0, 0, 80, 80,
4311 0, 0, 0, 0, 0, 103, 103, 80, 80, 0,
4312 0, 0, 102, 102, 0, 102, 102, 0, 0, 131,
4313 103, 0, 0, 80, 102, 87, 0, 0, 0, 102,
4314 0, 1089, 1089, 0, 0, 1089, 0, 0, 87, 0,
4315 0, 0, 80, 0, 0, 0, 103, 103, 0, 0,
4316 103, 0, 1089, 0, 131, 103, 0, 0, 0, 0,
4317 0, 0, 0, 0, 0, 80, 80, 80, 0, 0,
4318 0, 131, 0, 0, 0, 102, 0, 102, 0, 0,
4319 0, 0, 80, 0, 0, 102, 0, 1089, 0, 0,
4320 0, 301, 0, 0, 0, 102, 0, 102, 102, 80,
4321 0, 0, 87, 0, 0, 0, 0, 102, 102, 1089,
4322 0, 0, 1089, 0, 0, 0, 0, 0, 0, 0,
4323 0, 131, 0, 0, 0, 0, 1089, 1089, 1089, 0,
4324 0, 1089, 1089, 0, 102, 0, 1089, 1089, 0, 0,
4325 0, 87, 0, 0, 0, 0, 0, 0, 0, 131,
4326 301, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4327 0, 0, 0, 1090, 1090, 0, 0, 541, 0, 542,
4328 543, 544, 545, 546, 103, 0, 0, 80, 0, 0,
4329 80, 80, 0, 0, 0, 0, 0, 0, 131, 0,
4330 0, 0, 0, 547, 131, 131, 0, 0, 103, 80,
4331 103, 0, 80, 103, 103, 0, 0, 548, 0, 103,
4332 0, 0, 0, 0, 0, 0, 0, 549, 1090, 1090,
4333 0, 80, 1090, 550, 551, 552, 103, 0, 0, 0,
4334 0, 0, 0, 0, 0, 0, 0, 0, 0, 1090,
4335 0, 1089, 0, 80, 0, 1089, 1089, 0, 0, 0,
4336 0, 0, 0, 0, 0, 0, 80, 553, 0, 0,
4337 554, 0, 0, 0, 0, 0, 0, 0, 0, 102,
4338 0, 102, 102, 0, 1090, 0, 103, 0, 103, 103,
4339 103, 103, 0, 103, 103, 0, 0, 0, 0, 0,
4340 131, 0, 0, 0, 0, 0, 1090, 0, 0, 1090,
4341 0, 0, 0, 0, 103, 1089, 0, 301, 0, 80,
4342 0, 0, 0, 1090, 1090, 1090, 80, 80, 1090, 1090,
4343 80, 0, 0, 1090, 1090, 0, 76, 0, 0, 0,
4344 131, 0, 0, 0, 0, 102, 131, 0, 0, 0,
4345 0, 103, 0, 103, 0, 0, 0, 0, 103, 103,
4346 103, 102, 0, 0, 0, 0, 102, 102, 0, 80,
4347 0, 0, 102, 102, 103, 0, 0, 0, 0, 0,
4348 0, 102, 102, 0, 0, 0, 131, 76, 76, 131,
4349 0, 294, 0, 0, 0, 0, 0, 102, 103, 301,
4350 0, 0, 795, 0, 0, 0, 0, 0, 0, 0,
4351 0, 0, 0, 0, 0, 0, 102, 0, 0, 0,
4352 294, 0, 103, 0, 0, 0, 0, 0, 0, 0,
4353 0, 0, 0, 294, 294, 294, 0, 0, 1090, 102,
4354 102, 102, 1090, 1090, 0, 0, 0, 0, 131, 0,
4355 131, 0, 0, 0, 0, 103, 102, 0, 0, 0,
4356 0, 0, 0, 0, 0, 77, 0, 0, 0, 0,
4357 131, 0, 0, 102, 103, 0, 0, 0, 0, 0,
4358 795, 795, 0, 0, 0, 0, 0, 0, 0, 0,
4359 0, 0, 0, 0, 0, 103, 0, 0, 0, 0,
4360 0, 103, 1090, 0, 0, 0, 0, 0, 0, 0,
4361 0, 0, 0, 1091, 1091, 0, 77, 77, 0, 301,
4362 295, 0, 0, 0, 0, 0, 0, 0, 873, 0,
4363 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4364 103, 103, 0, 103, 103, 0, 0, 0, 0, 295,
4365 0, 102, 103, 0, 102, 102, 76, 103, 0, 0,
4366 0, 0, 295, 295, 295, 0, 0, 0, 1091, 1091,
4367 0, 0, 1091, 102, 0, 0, 102, 0, 0, 0,
4368 0, 0, 0, 0, 0, 0, 0, 0, 0, 1091,
4369 0, 76, 0, 301, 0, 102, 0, 0, 0, 0,
4370 0, 0, 0, 103, 0, 103, 0, 0, 76, 0,
4371 0, 0, 0, 103, 0, 0, 0, 102, 0, 0,
4372 0, 0, 0, 103, 1091, 103, 103, 0, 294, 0,
4373 102, 0, 0, 0, 0, 103, 103, 0, 0, 0,
4374 0, 0, 131, 0, 0, 131, 1091, 0, 355, 1091,
4375 0, 0, 0, 0, 0, 0, 0, 0, 76, 0,
4376 0, 0, 103, 1091, 1091, 1091, 0, 0, 1091, 1091,
4377 0, 0, 0, 1091, 1091, 0, 0, 0, 0, 0,
4378 0, 0, 0, 102, 0, 77, 76, 294, 0, 0,
4379 102, 102, 0, 0, 102, 1092, 1092, 0, 0, 0,
4380 0, 356, 357, 358, 359, 360, 361, 362, 363, 364,
4381 365, 366, 367, 368, 0, 0, 0, 0, 369, 370,
4382 77, 0, 0, 0, 371, 76, 0, 0, 0, 795,
4383 795, 76, 76, 102, 0, 795, 795, 77, 0, 0,
4384 0, 0, 0, 0, 131, 0, 0, 0, 0, 0,
4385 1092, 1092, 0, 0, 1092, 286, 0, 295, 0, 372,
4386 131, 373, 374, 375, 376, 377, 378, 379, 380, 381,
4387 382, 1092, 0, 0, 0, 0, 0, 0, 1091, 131,
4388 0, 0, 1091, 1091, 0, 0, 0, 77, 0, 0,
4389 0, 0, 0, 0, 0, 0, 0, 103, 0, 103,
4390 103, 0, 131, 131, 795, 0, 1092, 0, 0, 0,
4391 0, 0, 0, 0, 0, 77, 295, 0, 0, 795,
4392 0, 0, 0, 0, 0, 0, 0, 76, 1092, 0,
4393 0, 1092, 0, 0, 0, 0, 131, 0, 0, 0,
4394 0, 0, 1091, 0, 294, 1092, 1092, 1092, 0, 0,
4395 1092, 1092, 0, 0, 77, 1092, 1092, 0, 0, 0,
4396 77, 77, 0, 103, 0, 0, 0, 76, 0, 0,
4397 0, 0, 0, 76, 0, 0, 1093, 1093, 0, 103,
4398 0, 0, 0, 0, 103, 103, 0, 0, 0, 0,
4399 103, 103, 0, 0, 0, 0, 0, 0, 0, 103,
4400 103, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4401 1171, 0, 0, 76, 131, 103, 76, 131, 131, 445,
4402 0, 0, 447, 448, 449, 0, 294, 0, 0, 76,
4403 0, 1093, 1093, 0, 103, 1093, 131, 0, 0, 131,
4404 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4405 0, 0, 1093, 0, 0, 0, 77, 103, 103, 103,
4406 1092, 0, 0, 127, 1092, 1092, 0, 0, 0, 0,
4407 0, 0, 0, 295, 103, 76, 0, 76, 0, 0,
4408 131, 0, 0, 0, 0, 0, 0, 1093, 0, 0,
4409 0, 103, 0, 131, 0, 0, 77, 76, 0, 0,
4410 0, 0, 77, 0, 0, 418, 0, 76, 76, 1093,
4411 0, 0, 1093, 0, 127, 127, 0, 0, 299, 130,
4412 0, 0, 0, 0, 1092, 0, 1093, 1093, 1093, 0,
4413 0, 1093, 1093, 0, 0, 0, 1093, 1093, 0, 0,
4414 0, 0, 77, 0, 0, 77, 294, 299, 0, 0,
4415 0, 0, 0, 0, 0, 295, 0, 131, 77, 0,
4416 406, 416, 416, 416, 0, 0, 0, 418, 0, 103,
4417 130, 130, 103, 103, 0, 0, 0, 0, 0, 0,
4418 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4419 0, 103, 0, 0, 103, 0, 131, 0, 0, 0,
4420 0, 0, 0, 0, 77, 0, 77, 0, 0, 1094,
4421 1094, 0, 0, 103, 0, 0, 0, 0, 0, 0,
4422 294, 0, 0, 0, 0, 0, 77, 0, 0, 0,
4423 0, 0, 0, 0, 0, 103, 77, 77, 0, 0,
4424 0, 1093, 0, 0, 0, 1093, 1093, 0, 103, 0,
4425 0, 0, 0, 0, 679, 680, 0, 0, 0, 0,
4426 0, 0, 0, 286, 1094, 1094, 0, 0, 1094, 76,
4427 0, 0, 76, 0, 0, 295, 0, 0, 0, 0,
4428 0, 0, 0, 127, 0, 1094, 0, 0, 0, 0,
4429 0, 0, 0, 0, 0, 0, 680, 0, 0, 286,
4430 0, 103, 0, 0, 0, 1093, 0, 0, 103, 103,
4431 0, 0, 103, 0, 0, 0, 0, 0, 127, 0,
4432 1094, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4433 0, 0, 0, 0, 0, 127, 0, 0, 0, 130,
4434 0, 0, 1094, 0, 0, 1094, 0, 0, 0, 295,
4435 0, 103, 0, 0, 0, 299, 76, 76, 0, 1094,
4436 1094, 1094, 76, 76, 1094, 1094, 0, 0, 752, 1094,
4437 1094, 76, 0, 0, 130, 0, 0, 0, 0, 0,
4438 0, 0, 0, 0, 0, 127, 0, 76, 0, 779,
4439 0, 130, 0, 0, 791, 0, 0, 0, 77, 0,
4440 0, 77, 0, 0, 0, 0, 76, 0, 0, 0,
4441 0, 0, 0, 127, 299, 0, 0, 0, 0, 0,
4442 0, 0, 0, 0, 0, 0, 0, 0, 0, 76,
4443 76, 76, 0, 0, 0, 0, 0, 0, 0, 0,
4444 0, 130, 0, 0, 0, 0, 76, 0, 0, 0,
4445 0, 0, 127, 0, 0, 0, 0, 0, 127, 127,
4446 0, 0, 0, 76, 0, 0, 0, 0, 0, 130,
4447 0, 0, 0, 0, 1094, 854, 0, 0, 1094, 1094,
4448 0, 0, 0, 0, 0, 77, 77, 0, 0, 0,
4449 0, 77, 77, 680, 0, 286, 0, 0, 0, 0,
4450 77, 22, 23, 24, 25, 0, 0, 0, 130, 0,
4451 0, 0, 0, 0, 130, 130, 77, 31, 32, 33,
4452 0, 0, 0, 0, 0, 0, 0, 40, 41, 42,
4453 43, 44, 0, 0, 0, 77, 0, 294, 1094, 0,
4454 0, 76, 0, 0, 76, 76, 0, 0, 0, 894,
4455 0, 0, 0, 0, 127, 0, 0, 0, 77, 77,
4456 77, 0, 0, 76, 0, 0, 76, 0, 0, 0,
4457 0, 299, 0, 0, 0, 77, 0, 908, 0, 57,
4458 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
4459 0, 0, 77, 0, 127, 0, 1095, 1095, 0, 0,
4460 127, 0, 0, 0, 0, 0, 680, 76, 0, 0,
4461 130, 0, 0, 0, 0, 0, 292, 0, 0, 0,
4462 76, 0, 0, 0, 944, 0, 0, 0, 0, 0,
4463 0, 0, 294, 0, 0, 0, 0, 0, 0, 0,
4464 127, 0, 0, 127, 0, 0, 0, 0, 0, 0,
4465 130, 1095, 1095, 299, 0, 1095, 130, 0, 0, 0,
4466 0, 0, 0, 0, 0, 0, 295, 0, 0, 0,
4467 77, 0, 1095, 77, 77, 0, 0, 0, 1096, 1096,
4468 0, 0, 0, 0, 76, 0, 0, 0, 0, 0,
4469 0, 0, 77, 0, 294, 77, 130, 0, 0, 130,
4470 0, 0, 127, 0, 127, 0, 0, 1095, 0, 993,
4471 0, 0, 130, 0, 0, 0, 0, 0, 0, 0,
4472 0, 0, 0, 76, 127, 0, 0, 0, 0, 1095,
4473 0, 1016, 1095, 1096, 1096, 0, 77, 1096, 0, 0,
4474 0, 0, 0, 1026, 0, 0, 1095, 1095, 1095, 77,
4475 0, 1095, 1095, 0, 1096, 0, 1095, 1095, 130, 0,
4476 130, 295, 0, 0, 0, 0, 0, 0, 286, 0,
4477 0, 0, 0, 299, 0, 0, 0, 0, 0, 0,
4478 130, 0, 0, 0, 0, 0, 0, 0, 0, 1096,
4479 130, 130, 1050, 0, 0, 0, 0, 0, 0, 0,
4480 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4481 0, 1096, 0, 77, 1096, 0, 0, 0, 0, 0,
4482 0, 0, 0, 295, 0, 0, 0, 1112, 1096, 1096,
4483 1096, 0, 0, 1096, 1096, 0, 0, 0, 1096, 1096,
4484 0, 0, 0, 0, 0, 0, 0, 299, 0, 0,
4485 0, 0, 77, 0, 0, 0, 0, 0, 0, 0,
4486 0, 1095, 0, 0, 0, 1095, 1095, 0, 0, 0,
4487 0, 0, 0, 0, 0, 0, -788, 0, 0, 0,
4488 0, 0, 0, 0, -788, -788, -788, 0, 0, -788,
4489 -788, -788, 0, -788, 0, 0, 127, 0, 0, 127,
4490 0, -788, -788, -788, 0, 0, 0, 0, 0, 0,
4491 0, 1176, 0, -788, -788, 0, -788, -788, -788, -788,
4492 -788, 0, 0, 0, 0, 1095, 0, 0, 0, 0,
4493 0, 231, 231, 0, 0, 0, 0, 0, 0, 0,
4494 0, 0, 0, 1096, -788, -788, 0, 1096, 1096, 0,
4495 0, 0, 130, 0, 0, 130, 0, 0, 0, 0,
4496 0, 0, 0, 264, 268, 269, 270, 0, 0, 0,
4497 231, 231, 0, -788, -788, 0, 0, 0, 0, 0,
4498 0, 0, 0, 317, 318, 0, 0, 0, 0, 0,
4499 0, 0, 0, 22, 23, 24, 25, -788, 127, 0,
4500 0, 0, 0, 0, 0, 0, 0, 1096, 0, 31,
4501 32, 33, 1055, 0, 127, 0, 1056, 0, 231, 40,
4502 41, 42, 43, 44, 0, 0, 0, 0, -788, -788,
4503 0, -788, 0, 127, 245, -788, 0, -788, 0, 130,
4504 130, 0, 0, 0, 0, 130, 130, 0, 0, 0,
4505 0, 1058, 1059, 0, 130, 0, 127, 127, 0, 1060,
4506 0, 0, 1061, 0, 0, 1062, 1063, 0, 1064, 0,
4507 130, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4508 0, 0, 914, 0, 0, 0, 0, 0, 0, 130,
4509 127, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4510 0, 1066, 0, 0, 0, 0, 0, 0, 292, 0,
4511 0, 0, 130, 130, 130, 249, 356, 357, 358, 359,
4512 360, 361, 362, 363, 364, 365, 366, 367, 368, 130,
4513 0, 0, 0, 369, 370, 231, 0, 0, 231, 231,
4514 231, 0, 317, 0, 0, 0, 130, 0, 0, 0,
4515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4516 0, 231, 0, 231, 1169, 0, 914, 0, 127, 0,
4517 0, 127, 127, 0, 372, 0, 373, 374, 375, 376,
4518 377, 378, 379, 380, 381, 382, 0, 0, 0, 0,
4519 127, 0, 0, 127, -283, 0, 0, 0, 0, 0,
4520 356, 357, 358, 359, 360, 361, 362, 363, 364, 365,
4521 366, 367, 368, 0, 0, 0, 0, 369, 370, 0,
4522 0, 0, 0, 0, 130, 0, 0, 130, 130, 0,
4523 0, 0, 0, 0, 127, 0, 0, 0, 0, 0,
4524 0, 0, 0, 0, 0, 0, 130, 127, 0, 130,
4525 0, 0, 0, 0, 0, 0, 0, 0, 372, 416,
4526 373, 374, 375, 376, 377, 378, 379, 380, 381, 382,
4527 0, 0, 596, 597, 598, 599, 600, 0, 0, 601,
4528 602, 603, 604, 605, 606, 607, 608, 0, 610, 0,
4529 130, 611, 612, 613, 614, 615, 616, 617, 618, 619,
4530 620, 0, 0, 130, 231, 0, 0, 0, 0, 0,
4531 0, 127, 0, 0, 0, 0, 0, 0, 0, 0,
4532 0, 416, 0, 0, 0, 0, 0, 0, 0, 0,
4533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4534 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4535 127, 231, 0, 0, 0, 0, 0, 0, 0, 0,
4536 0, 0, 0, 0, 0, 0, 0, 130, 0, 0,
4537 231, 231, 0, 0, 0, 231, 0, 0, 0, 231,
4538 -668, 270, 0, 0, 0, 0, 0, 0, -668, -668,
4539 -668, 0, 0, -668, -668, -668, 0, -668, 0, 700,
4540 0, 0, 0, 0, 0, -668, 130, -668, -668, -668,
4541 0, 0, 231, 0, 0, 231, 0, -668, -668, 0,
4542 -668, -668, -668, -668, -668, 0, 0, 231, 0, 0,
4543 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4544 0, 0, 0, 0, 0, 730, 0, 0, -668, -668,
4545 0, 0, 0, 0, 0, 0, 0, 0, -668, -668,
4546 -668, -668, -668, -668, -668, -668, -668, -668, -668, -668,
4547 -668, 0, 0, 0, 0, -668, -668, -668, -668, 0,
4548 -668, -668, 0, 0, 231, 0, 0, -668, 0, 0,
4549 0, 0, 0, 762, 0, 0, 762, 0, 0, 0,
4550 0, -668, 0, 0, -668, 231, 0, 0, 0, 0,
4551 790, 0, 0, 0, 0, -668, -668, -668, -668, -668,
4552 -668, -668, -668, -668, -668, -668, -668, -668, 0, 0,
4553 0, 0, 0, -668, -668, -668, -668, 0, 0, -668,
4554 -668, -668, 0, 621, 622, 0, 0, 623, 0, 0,
4555 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4556 0, 0, 0, 0, 0, 0, 231, 179, 180, 181,
4557 182, 183, 184, 185, 186, 187, 231, 0, 188, 189,
4558 0, 0, 0, 0, 190, 191, 192, 193, 849, 849,
4559 0, 231, 762, 762, 849, 0, 0, 0, 0, 194,
4560 195, 0, 0, 0, 0, 849, 849, 0, 0, 231,
4561 0, 231, 0, 0, 0, 0, 0, 0, 0, 0,
4562 0, 849, 0, 0, 0, 0, 0, 0, 0, 196,
4563 197, 198, 199, 200, 201, 202, 203, 204, 205, 0,
4564 206, 207, 0, 0, 0, 0, 0, 0, 208, 245,
4565 0, 0, -5, 3, 0, 4, 5, 6, 7, 8,
4566 -5, -5, -5, 9, 10, 231, -5, -5, 11, -5,
4567 12, 13, 14, 15, 16, 17, 18, -5, 0, 0,
4568 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
4569 0, 26, 0, 231, 0, 0, 0, 27, 28, 272,
4570 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4571 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
4572 -5, 0, 231, 0, 0, 0, 0, 0, 47, 48,
4573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4574 231, 0, 0, 49, 50, 0, 0, 0, 0, 0,
4575 0, 51, 0, 0, 52, 53, 0, 54, 55, 0,
4576 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
4577 64, 65, 0, -5, 0, 0, 0, 0, 0, 0,
4578 0, 0, 0, 0, 0, 0, 0, 0, 0, 356,
4579 357, 358, 359, 360, 361, 362, 363, 0, 365, 366,
4580 66, 67, 68, 0, 0, -5, 369, 370, 0, 0,
4581 0, -5, 0, 530, 0, 0, 762, 0, 0, 0,
4582 0, 0, 0, 0, 0, 231, 0, 0, 0, 0,
4583 0, 0, 231, 0, 0, 0, 1005, 849, 849, 0,
4584 0, 0, 0, 849, 849, 0, 0, 231, 0, 373,
4585 374, 375, 376, 377, 378, 379, 380, 381, 382, 231,
4586 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4587 0, 0, 0, 0, 0, 0, 0, 762, 849, 849,
4588 0, 849, 849, 0, 231, 0, 0, 0, 0, 0,
4589 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4590 0, 0, 0, 0, 1046, 1047, 0, 0, 231, 0,
4591 0, 0, 849, 1053, 0, 0, 0, 0, 0, 0,
4592 0, 0, 0, 0, 0, 0, 0, 849, 0, 0,
4593 0, 0, 0, 0, -788, 3, 0, 4, 5, 6,
4594 7, 8, 0, 231, 0, 9, 10, 0, 0, 0,
4595 11, 849, 12, 13, 14, 15, 16, 17, 18, 0,
4596 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
4597 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
4598 28, 272, 30, 31, 32, 33, 34, 35, 36, 37,
4599 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
4600 0, 0, 0, 356, -789, -789, -789, -789, 361, 362,
4601 47, 48, -789, -789, 0, 0, 0, 0, 0, 0,
4602 369, 370, 0, 0, 0, 49, 50, 231, 0, 0,
4603 0, 0, 0, 51, 0, 0, 52, 53, 0, 54,
4604 55, 0, 56, 0, 0, 57, 58, 59, 60, 61,
4605 62, 63, 64, 65, 0, -788, 0, 0, 0, 0,
4606 0, 0, 0, 373, 374, 375, 376, 377, 378, 379,
4607 380, 381, 382, 0, 0, 0, 0, 0, 0, 0,
4608 0, 0, 66, 67, 68, 0, 0, -788, 3, -788,
4609 4, 5, 6, 7, 8, -788, 0, 0, 9, 10,
4610 0, 0, 0, 11, 0, 12, 13, 14, 15, 16,
4611 17, 18, 0, 0, 0, 0, 0, 19, 20, 21,
4612 22, 23, 24, 25, 0, 0, 26, 0, 0, 0,
4613 0, 0, 27, 28, 29, 30, 31, 32, 33, 34,
4614 35, 36, 37, 38, 39, 0, 40, 41, 42, 43,
4615 44, 45, 46, 0, 231, 0, 356, 357, 358, 359,
4616 360, 361, 362, 47, 48, 365, 366, 0, 0, 0,
4617 0, 0, 0, 369, 370, 0, 0, 0, 49, 50,
4618 0, 0, 0, 0, 0, 0, 51, 0, 0, 52,
4619 53, 0, 54, 55, 0, 56, 0, 0, 57, 58,
4620 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
4621 0, 0, 0, 0, 0, 0, 373, 374, 375, 376,
4622 377, 378, 379, 380, 381, 382, 0, 0, 0, 0,
4623 0, 0, 0, 0, 0, 66, 67, 68, 0, 0,
4624 -5, 3, -788, 4, 5, 6, 7, 8, -788, 0,
4625 0, 9, 10, 0, 0, 0, 11, 0, 12, 13,
4626 14, 15, 16, 17, 18, 0, 0, 0, 0, 0,
4627 19, 20, 21, 22, 23, 24, 25, 0, 0, 26,
4628 0, 0, 0, 0, 0, 27, 28, 29, 30, 31,
4629 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
4630 41, 42, 43, 44, 45, 46, 0, 0, 0, 0,
4631 0, 0, 0, 0, 0, 0, 47, 48, 0, 0,
4632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4633 0, 49, 50, 0, 0, 0, 0, 0, 0, 51,
4634 0, 0, 52, 53, 0, 54, 55, 0, 56, 0,
4635 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4636 0, 0, 0, 0, 0, 0, 0, 0, 0, -770,
4637 0, 0, 0, 0, 0, 0, 0, -770, -770, -770,
4638 0, 0, -770, -770, -770, 0, -770, 0, 66, 67,
4639 68, 0, 0, -5, -770, -770, -770, -770, -770, 0,
4640 0, 530, 0, 0, 0, 0, -770, -770, 0, -770,
4641 -770, -770, -770, -770, 0, 0, 0, 356, 357, 358,
4642 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
4643 0, 0, 0, 0, 369, 370, 0, -770, -770, 0,
4644 0, 0, 0, 0, 0, 0, 0, -770, -770, -770,
4645 -770, -770, -770, -770, -770, -770, -770, -770, -770, -770,
4646 0, 0, 0, 0, -770, -770, -770, -770, 0, 857,
4647 -770, 0, 0, 0, 0, 372, -770, 373, 374, 375,
4648 376, 377, 378, 379, 380, 381, 382, 0, 0, 0,
4649 -770, 0, 0, -770, 249, 0, 0, 0, 0, 0,
4650 0, 0, 0, 0, -135, -770, -770, -770, -770, -770,
4651 -770, -770, -770, -770, -770, -770, -770, 0, 0, 0,
4652 0, -770, -770, -770, -770, -770, -669, 0, -770, -770,
4653 -770, 0, 0, 0, -669, -669, -669, 0, 0, -669,
4654 -669, -669, 0, -669, 0, 0, 0, 0, 0, 0,
4655 0, -669, 0, -669, -669, -669, 0, 0, 0, 0,
4656 0, 0, 0, -669, -669, 0, -669, -669, -669, -669,
4657 -669, 0, 0, 0, 356, 357, 358, 359, 360, 361,
4658 362, 363, 364, 365, 366, 367, 368, 0, 0, 0,
4659 0, 369, 370, 0, -669, -669, 0, 0, 0, 0,
4660 0, 0, 0, 0, -669, -669, -669, -669, -669, -669,
4661 -669, -669, -669, -669, -669, -669, -669, 0, 0, 0,
4662 0, -669, -669, -669, -669, 0, -669, -669, 0, 0,
4663 0, 0, 372, -669, 373, 374, 375, 376, 377, 378,
4664 379, 380, 381, 382, 0, 0, 0, -669, 0, 0,
4665 -669, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4666 0, -669, -669, -669, -669, -669, -669, -669, -669, -669,
4667 -669, -669, -669, -669, 0, 0, 0, 0, 0, -669,
4668 -669, -669, -669, -771, 0, -669, -669, -669, 0, 0,
4669 0, -771, -771, -771, 0, 0, -771, -771, -771, 0,
4670 -771, 0, 0, 0, 0, 0, 0, 0, -771, -771,
4671 -771, -771, -771, 0, 0, 0, 0, 0, 0, 0,
4672 -771, -771, 0, -771, -771, -771, -771, -771, 0, 0,
4673 0, 356, 357, 358, 359, 360, 361, 362, 363, 364,
4674 365, 366, -789, -789, 0, 0, 0, 0, 369, 370,
4675 0, -771, -771, 0, 0, 0, 0, 0, 0, 0,
4676 0, -771, -771, -771, -771, -771, -771, -771, -771, -771,
4677 -771, -771, -771, -771, 0, 0, 0, 0, -771, -771,
4678 -771, -771, 0, 0, -771, 0, 0, 0, 0, 0,
4679 -771, 373, 374, 375, 376, 377, 378, 379, 380, 381,
4680 382, 0, 0, 0, -771, 0, 0, -771, 0, 0,
4681 0, 0, 0, 0, 0, 0, 0, 0, 0, -771,
4682 -771, -771, -771, -771, -771, -771, -771, -771, -771, -771,
4683 -771, 0, 0, 0, 0, -771, -771, -771, -771, -771,
4684 -772, 0, -771, -771, -771, 0, 0, 0, -772, -772,
4685 -772, 0, 0, -772, -772, -772, 0, -772, 0, 0,
4686 0, 0, 0, 0, 0, -772, -772, -772, -772, -772,
4687 0, 0, 0, 0, 0, 0, 0, -772, -772, 0,
4688 -772, -772, -772, -772, -772, 0, 0, 0, 0, 0,
4689 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4690 0, 0, 0, 0, 0, 0, 0, 0, -772, -772,
4691 0, 0, 0, 0, 0, 0, 0, 0, -772, -772,
4692 -772, -772, -772, -772, -772, -772, -772, -772, -772, -772,
4693 -772, 0, 0, 0, 0, -772, -772, -772, -772, 0,
4694 0, -772, 0, 0, 0, 0, 0, -772, 0, 0,
4695 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4696 0, -772, 0, 0, -772, 0, 0, 0, 0, 0,
4697 0, 0, 0, 0, 0, 0, -772, -772, -772, -772,
4698 -772, -772, -772, -772, -772, -772, -772, -772, 0, 0,
4699 0, 0, -772, -772, -772, -772, -772, -485, 0, -772,
4700 -772, -772, 0, 0, 0, -485, -485, -485, 0, 0,
4701 -485, -485, -485, 0, -485, 0, 0, 0, 0, 0,
4702 0, 0, -485, -485, -485, -485, 0, 0, 0, 0,
4703 0, 0, 0, 0, -485, -485, 0, -485, -485, -485,
4704 -485, -485, 0, 0, 0, 0, 0, 0, 0, 0,
4705 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4706 0, 0, 0, 0, 0, -485, -485, 0, 0, 0,
4707 0, 0, 0, 0, 0, -485, -485, -485, -485, -485,
4708 -485, -485, -485, -485, -485, -485, -485, -485, 0, 0,
4709 0, 0, -485, -485, -485, -485, 0, 0, -485, 0,
4710 0, 0, 0, 0, -485, 0, 0, 0, 0, 0,
4711 0, 0, 0, 0, 0, 0, 0, 0, -485, 0,
4712 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4713 0, 0, 0, -485, 0, -485, -485, -485, -485, -485,
4714 -485, -485, -485, -485, -485, 0, 0, 0, 0, -485,
4715 -485, -485, -485, -485, -332, 245, -485, -485, -485, 0,
4716 0, 0, -332, -332, -332, 0, 0, -332, -332, -332,
4717 0, -332, 0, 0, 0, 0, 0, 0, 0, -332,
4718 0, -332, -332, -332, 0, 0, 0, 0, 0, 0,
4719 0, -332, -332, 0, -332, -332, -332, -332, -332, 0,
4720 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4721 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4722 0, 0, -332, -332, 0, 0, 0, 0, 0, 0,
4723 0, 0, -332, -332, -332, -332, -332, -332, -332, -332,
4724 -332, -332, -332, -332, -332, 0, 0, 0, 0, -332,
4725 -332, -332, -332, 0, 0, -332, 0, 0, 0, 0,
4726 0, -332, 0, 0, 0, 0, 0, 0, 0, 0,
4727 0, 0, 0, 0, 0, -332, 0, 0, -332, 0,
4728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4729 -332, -332, -332, -332, -332, -332, -332, -332, -332, -332,
4730 -332, -332, 0, 0, 0, 0, 0, -332, -332, -332,
4731 -332, -788, 0, -332, -332, -332, 0, 0, 0, -788,
4732 -788, -788, 0, 0, -788, -788, -788, 0, -788, 0,
4733 0, 0, 0, 0, 0, 0, -788, -788, -788, -788,
4734 0, 0, 0, 0, 0, 0, 0, 0, -788, -788,
4735 0, -788, -788, -788, -788, -788, 0, 0, 0, 0,
4736 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4737 0, 0, 0, 0, 0, 0, 0, 0, 0, -788,
4738 -788, 0, 0, 0, 0, 0, 0, 0, 0, -788,
4739 -788, -788, -788, -788, -788, -788, -788, -788, -788, -788,
4740 -788, -788, 0, 0, 0, 0, -788, -788, -788, -788,
4741 0, 0, -788, 0, 0, 0, 0, 0, -788, 0,
4742 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4743 0, 0, -788, 0, 0, 0, 0, 0, 0, 0,
4744 0, 0, 0, 0, 0, 0, 0, -788, 0, -788,
4745 -788, -788, -788, -788, -788, -788, -788, -788, -788, 0,
4746 0, 0, 0, -788, -788, -788, -788, -788, -338, 245,
4747 -788, -788, -788, 0, 0, 0, -338, -338, -338, 0,
4748 0, -338, -338, -338, 0, -338, 0, 0, 0, 0,
4749 0, 0, 0, -338, 0, -338, -338, 0, 0, 0,
4750 0, 0, 0, 0, 0, -338, -338, 0, -338, -338,
4751 -338, -338, -338, 0, 0, 0, 0, 0, 0, 0,
4752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4753 0, 0, 0, 0, 0, 0, -338, -338, 0, 0,
4754 0, 0, 0, 0, 0, 0, -338, -338, -338, -338,
4755 -338, -338, -338, -338, -338, -338, -338, -338, -338, 0,
4756 0, 0, 0, -338, -338, -338, -338, 0, 858, -338,
4757 0, 0, 0, 0, 0, -338, 0, 0, 0, 0,
4758 0, 0, 0, 0, 0, 0, 0, 0, 0, -338,
4759 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4760 0, 0, 0, -137, -338, 0, -338, -338, -338, -338,
4761 -338, -338, -338, -338, -338, -338, 0, 0, 0, 0,
4762 801, -338, -338, -338, -338, -345, 0, -338, -338, -338,
4763 0, 0, 0, -345, -345, -345, 0, 0, -345, -345,
4764 -345, 0, -345, 0, 0, 0, 0, 0, 0, 0,
4765 -345, 0, -345, -345, 0, 0, 0, 0, 0, 0,
4766 0, 0, -345, -345, 0, -345, -345, -345, -345, -345,
4767 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4768 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4769 0, 0, 0, -345, -345, 0, 0, 0, 0, 0,
4770 0, 0, 0, -345, -345, -345, -345, -345, -345, -345,
4771 -345, -345, -345, -345, -345, -345, 0, 0, 0, 0,
4772 -345, -345, -345, -345, 0, 0, -345, 0, 0, 0,
4773 0, 0, -345, 0, 0, 0, 0, 0, 0, 0,
4774 0, 0, 0, 0, 0, 0, -345, 0, 0, 0,
4775 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4776 0, -345, 0, -345, -345, -345, -345, -345, -345, -345,
4777 -345, -345, -345, 0, 0, 0, 0, 0, -345, -345,
4778 -345, -345, -770, 435, -345, -345, -345, 0, 0, 0,
4779 -770, -770, -770, 0, 0, 0, -770, -770, 0, -770,
4780 0, 0, 0, 0, 0, 0, 0, -770, -770, 0,
4781 0, 0, 0, 0, 0, 0, 0, 0, 0, -770,
4782 -770, 0, -770, -770, -770, -770, -770, 0, 0, 0,
4783 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4784 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4785 -770, -770, 0, 0, 0, 0, 0, 0, 0, 0,
4786 -770, -770, -770, -770, -770, -770, -770, -770, -770, -770,
4787 -770, -770, -770, 0, 0, 0, 0, -770, -770, -770,
4788 -770, 0, 799, -770, 0, 0, 0, 0, 0, 0,
4789 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4790 0, 0, 0, -770, 0, 0, 0, 0, 0, 0,
4791 0, 0, 0, 0, 0, 0, 0, -135, -770, 0,
4792 -770, -770, -770, -770, -770, -770, -770, -770, -770, -770,
4793 0, 0, 0, 0, -770, -770, -770, -770, -126, -770,
4794 0, -770, 0, -770, 0, 0, 0, -770, -770, -770,
4795 0, 0, 0, -770, -770, 0, -770, 0, 0, 0,
4796 0, 0, 0, 0, -770, -770, 0, 0, 0, 0,
4797 0, 0, 0, 0, 0, 0, -770, -770, 0, -770,
4798 -770, -770, -770, -770, 0, 0, 0, 0, 0, 0,
4799 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4800 0, 0, 0, 0, 0, 0, 0, -770, -770, 0,
4801 0, 0, 0, 0, 0, 0, 0, -770, -770, -770,
4802 -770, -770, -770, -770, -770, -770, -770, -770, -770, -770,
4803 0, 0, 0, 0, -770, -770, -770, -770, 0, 799,
4804 -770, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4805 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4806 -770, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4807 0, 0, 0, 0, -135, -770, 0, -770, -770, -770,
4808 -770, -770, -770, -770, -770, -770, -770, 0, 0, 0,
4809 0, -770, -770, -770, -770, -770, -338, 0, -770, 0,
4810 -770, 0, 0, 0, -338, -338, -338, 0, 0, 0,
4811 -338, -338, 0, -338, 0, 0, 0, 0, 0, 0,
4812 0, -338, 0, 0, 0, 0, 0, 0, 0, 0,
4813 0, 0, 0, -338, -338, 0, -338, -338, -338, -338,
4814 -338, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4815 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4816 0, 0, 0, 0, -338, -338, 0, 0, 0, 0,
4817 0, 0, 0, 0, -338, -338, -338, -338, -338, -338,
4818 -338, -338, -338, -338, -338, -338, -338, 0, 0, 0,
4819 0, -338, -338, -338, -338, 0, 800, -338, 0, 0,
4820 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4821 0, 0, 0, 0, 0, 0, 0, -338, 0, 0,
4822 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4823 0, -137, -338, 0, -338, -338, -338, -338, -338, -338,
4824 -338, -338, -338, -338, 0, 0, 0, 0, 801, -338,
4825 -338, -338, -128, -338, 0, -338, 0, -338, 0, 0,
4826 0, -338, -338, -338, 0, 0, 0, -338, -338, 0,
4827 -338, 0, 0, 0, 0, 0, 0, 0, -338, 0,
4828 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4829 -338, -338, 0, -338, -338, -338, -338, -338, 0, 0,
4830 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4831 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4832 0, -338, -338, 0, 0, 0, 0, 0, 0, 0,
4833 0, -338, -338, -338, -338, -338, -338, -338, -338, -338,
4834 -338, -338, -338, -338, 0, 0, 0, 0, -338, -338,
4835 -338, -338, 0, 800, -338, 0, 0, 0, 0, 0,
4836 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4837 0, 0, 0, 0, -338, 0, 0, 0, 0, 0,
4838 0, 0, 0, 0, 0, 0, 0, 0, -137, -338,
4839 0, -338, -338, -338, -338, -338, -338, -338, -338, -338,
4840 -338, 0, 0, 0, 0, 801, -338, -338, -338, -338,
4841 0, 0, -338, 3, -338, 4, 5, 6, 7, 8,
4842 -788, -788, -788, 9, 10, 0, 0, -788, 11, 0,
4843 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
4844 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
4845 0, 26, 0, 0, 0, 0, 0, 27, 28, 272,
4846 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4847 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
4848 -788, 0, 0, 0, 0, 0, 0, 0, 47, 48,
4849 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4850 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
4851 0, 51, 0, 0, 52, 53, 0, 54, 55, 0,
4852 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
4853 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
4854 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4855 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4856 66, 67, 68, 0, 0, 0, 3, -788, 4, 5,
4857 6, 7, 8, -788, 0, -788, 9, 10, 0, -788,
4858 -788, 11, 0, 12, 13, 14, 15, 16, 17, 18,
4859 0, 0, 0, 0, 0, 19, 20, 21, 22, 23,
4860 24, 25, 0, 0, 26, 0, 0, 0, 0, 0,
4861 27, 28, 272, 30, 31, 32, 33, 34, 35, 36,
4862 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
4863 46, 0, 0, -788, 0, 0, 0, 0, 0, 0,
4864 0, 47, 48, 0, 0, 0, 0, 0, 0, 0,
4865 0, 0, 0, 0, 0, 0, 49, 50, 0, 0,
4866 0, 0, 0, 0, 51, 0, 0, 52, 53, 0,
4867 54, 55, 0, 56, 0, 0, 57, 58, 59, 60,
4868 61, 62, 63, 64, 65, 0, 0, 0, 0, 0,
4869 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4870 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4871 0, 0, 0, 66, 67, 68, 0, 0, 0, 3,
4872 -788, 4, 5, 6, 7, 8, -788, 0, -788, 9,
4873 10, 0, 0, -788, 11, -788, 12, 13, 14, 15,
4874 16, 17, 18, 0, 0, 0, 0, 0, 19, 20,
4875 21, 22, 23, 24, 25, 0, 0, 26, 0, 0,
4876 0, 0, 0, 27, 28, 272, 30, 31, 32, 33,
4877 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
4878 43, 44, 45, 46, 0, 0, -788, 0, 0, 0,
4879 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
4880 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
4881 50, 0, 0, 0, 0, 0, 0, 51, 0, 0,
4882 52, 53, 0, 54, 55, 0, 56, 0, 0, 57,
4883 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
4884 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4886 0, 0, 0, 0, 0, 0, 66, 67, 68, 0,
4887 0, 0, 3, -788, 4, 5, 6, 7, 8, -788,
4888 0, -788, 9, 10, 0, 0, -788, 11, 0, 12,
4889 13, 14, 15, 16, 17, 18, -788, 0, 0, 0,
4890 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
4891 26, 0, 0, 0, 0, 0, 27, 28, 272, 30,
4892 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
4893 40, 41, 42, 43, 44, 45, 46, 0, 0, -788,
4894 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
4895 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4896 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
4897 51, 0, 0, 52, 53, 0, 54, 55, 0, 56,
4898 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
4899 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4900 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4901 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
4902 67, 68, 0, 0, 0, 3, -788, 4, 5, 6,
4903 7, 8, -788, 0, -788, 9, 10, 0, 0, -788,
4904 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
4905 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
4906 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
4907 28, 272, 30, 31, 32, 33, 34, 35, 36, 37,
4908 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
4909 0, 0, -788, 0, 0, 0, 0, 0, 0, 0,
4910 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
4911 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
4912 0, 0, 0, 51, 0, 0, 52, 53, 0, 54,
4913 55, 0, 56, 0, 0, 57, 58, 59, 60, 61,
4914 62, 63, 64, 65, 0, 0, 0, 0, 0, 0,
4915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4916 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4917 0, 0, 66, 67, 68, 0, 0, 0, 3, -788,
4918 4, 5, 6, 7, 8, -788, -788, -788, 9, 10,
4919 0, 0, 0, 11, 0, 12, 13, 14, 15, 16,
4920 17, 18, 0, 0, 0, 0, 0, 19, 20, 21,
4921 22, 23, 24, 25, 0, 0, 26, 0, 0, 0,
4922 0, 0, 27, 28, 272, 30, 31, 32, 33, 34,
4923 35, 36, 37, 38, 39, 0, 40, 41, 42, 43,
4924 44, 45, 46, 0, 0, -788, 0, 0, 0, 0,
4925 0, 0, 0, 47, 48, 0, 0, 0, 0, 0,
4926 0, 0, 0, 0, 0, 0, 0, 0, 49, 50,
4927 0, 0, 0, 0, 0, 0, 51, 0, 0, 52,
4928 53, 0, 54, 55, 0, 56, 0, 0, 57, 58,
4929 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
4930 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4932 0, 0, 0, 0, 0, 66, 67, 68, 0, 0,
4933 0, 3, -788, 4, 5, 6, 7, 8, -788, 0,
4934 -788, 9, 10, 0, 0, 0, 11, 0, 12, 13,
4935 14, 15, 16, 17, 18, 0, 0, 0, 0, 0,
4936 19, 20, 21, 22, 23, 24, 25, 0, 0, 26,
4937 0, 0, 0, 0, 0, 27, 28, 272, 30, 31,
4938 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
4939 41, 42, 43, 44, 45, 46, 0, 0, -788, 0,
4940 0, 0, 0, 0, 0, 0, 47, 48, 0, 0,
4941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4942 0, 49, 50, 0, 0, 0, 0, 0, 0, 51,
4943 0, 0, 52, 53, 0, 54, 55, 0, 56, 0,
4944 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
4945 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4946 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4947 0, 0, 0, 0, 0, 0, 0, 0, 66, 67,
4948 68, 0, 0, 0, 3, -788, 4, 5, 6, 7,
4949 8, -788, 0, 0, 9, 10, 0, 0, 0, 11,
4950 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
4951 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
4952 0, 0, 26, 0, 0, 0, 0, 0, 27, 28,
4953 272, 30, 31, 32, 33, 34, 35, 36, 37, 38,
4954 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
4955 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
4956 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4957 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
4958 0, 0, 51, 0, 0, 273, 53, 0, 54, 55,
4959 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
4960 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
4961 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4962 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4963 0, 66, 67, 68, 0, 0, 0, 0, -788, 0,
4964 0, 0, -788, 3, -788, 4, 5, 6, 7, 8,
4965 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
4966 12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
4967 0, 0, 19, 20, 21, 22, 23, 24, 25, 0,
4968 0, 26, 0, 0, 0, 0, 0, 27, 28, 272,
4969 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4970 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
4971 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
4972 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4973 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
4974 0, 51, 0, 0, 52, 53, 0, 54, 55, 0,
4975 56, 0, 0, 57, 58, 59, 60, 61, 62, 63,
4976 64, 65, 0, 0, 0, 0, 0, 0, 0, 0,
4977 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4978 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4979 66, 67, 68, 0, 0, 0, 0, -788, 0, 0,
4980 0, -788, 3, -788, 4, 5, 6, 7, 8, 0,
4981 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
4982 13, 14, 15, 16, 17, 18, 0, 0, 0, 0,
4983 0, 19, 20, 21, 22, 23, 24, 25, 0, 0,
4984 26, 0, 0, 0, 0, 0, 27, 28, 29, 30,
4985 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
4986 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
4987 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
4988 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4989 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
4990 51, 0, 0, 52, 53, 0, 54, 55, 0, 56,
4991 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
4992 65, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4993 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4994 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,
4995 67, 68, 0, 0, -788, 3, -788, 4, 5, 6,
4996 7, 8, -788, 0, 0, 9, 10, 0, 0, 0,
4997 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
4998 0, 0, 0, 0, 19, 20, 21, 22, 23, 24,
4999 25, 0, 0, 26, 0, 0, 0, 0, 0, 27,
5000 28, 272, 30, 31, 32, 33, 34, 35, 36, 37,
5001 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5002 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5003 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5004 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5005 0, 0, 0, 51, 0, 0, 52, 53, 0, 54,
5006 55, 0, 56, 0, 0, 57, 58, 59, 60, 61,
5007 62, 63, 64, 65, 0, 0, 0, 0, 0, 0,
5008 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5009 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5010 0, 0, 66, 67, 68, 0, 0, -788, 391, -788,
5011 4, 5, 6, 0, 8, -788, 0, 0, 9, 10,
5012 0, 0, 0, 11, -4, 12, 13, 14, 15, 16,
5013 17, 18, 0, 0, 0, 0, 0, 19, 20, 21,
5014 22, 23, 24, 25, 0, 0, 26, 0, 0, 0,
5015 0, 0, 0, 28, 0, 0, 31, 32, 33, 34,
5016 35, 36, 37, 38, 39, 0, 40, 41, 42, 43,
5017 44, 45, 46, 0, 0, 0, 0, 0, 0, 0,
5018 0, 0, 0, 47, 48, 0, 0, 0, 0, 0,
5019 0, 0, 0, 0, 0, 0, 0, 0, 49, 50,
5020 0, 0, 0, 0, 0, 0, 220, 0, 0, 221,
5021 53, 0, 54, 55, 0, 0, 0, 0, 57, 58,
5022 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
5023 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5024 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5025 0, 0, 0, 0, 0, 66, 67, 68, 0, 0,
5026 0, 0, 319, 0, 0, 0, 0, 0, 320, 135,
5027 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
5028 146, 147, 148, 149, 150, 151, 152, 153, 154, 155,
5029 156, 157, 158, 0, 0, 0, 159, 160, 161, 420,
5030 421, 422, 423, 166, 167, 168, 0, 0, 0, 0,
5031 0, 169, 170, 171, 172, 424, 425, 426, 427, 177,
5032 36, 37, 428, 39, 0, 0, 0, 0, 0, 0,
5033 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5034 0, 0, 179, 180, 181, 182, 183, 184, 185, 186,
5035 187, 0, 0, 188, 189, 0, 0, 0, 0, 190,
5036 191, 192, 193, 0, 0, 0, 0, 0, 0, 0,
5037 0, 0, 0, 0, 194, 195, 0, 0, 0, 0,
5038 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5039 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5040 0, 0, 0, 0, 196, 197, 198, 199, 200, 201,
5041 202, 203, 204, 205, 0, 206, 207, 0, 0, 0,
5042 0, 0, 0, 208, 429, 135, 136, 137, 138, 139,
5043 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
5044 150, 151, 152, 153, 154, 155, 156, 157, 158, 0,
5045 0, 0, 159, 160, 161, 162, 163, 164, 165, 166,
5046 167, 168, 0, 0, 0, 0, 0, 169, 170, 171,
5047 172, 173, 174, 175, 176, 177, 36, 37, 178, 39,
5048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5049 0, 0, 0, 0, 0, 0, 0, 0, 179, 180,
5050 181, 182, 183, 184, 185, 186, 187, 0, 0, 188,
5051 189, 0, 0, 0, 0, 190, 191, 192, 193, 0,
5052 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5053 194, 195, 0, 0, 0, 0, 0, 0, 0, 0,
5054 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5055 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5056 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
5057 0, 206, 207, 0, 0, 0, 0, 0, 0, 208,
5058 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
5059 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
5060 155, 156, 157, 158, 0, 0, 0, 159, 160, 161,
5061 162, 163, 164, 165, 166, 167, 168, 0, 0, 0,
5062 0, 0, 169, 170, 171, 172, 173, 174, 175, 176,
5063 177, 252, 0, 178, 0, 0, 0, 0, 0, 0,
5064 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5065 0, 0, 0, 179, 180, 181, 182, 183, 184, 185,
5066 186, 187, 0, 0, 188, 189, 0, 0, 0, 0,
5067 190, 191, 192, 193, 0, 0, 0, 0, 0, 0,
5068 0, 0, 0, 0, 0, 194, 195, 0, 0, 58,
5069 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5070 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5071 0, 0, 0, 0, 0, 196, 197, 198, 199, 200,
5072 201, 202, 203, 204, 205, 0, 206, 207, 0, 0,
5073 0, 0, 0, 0, 208, 135, 136, 137, 138, 139,
5074 140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
5075 150, 151, 152, 153, 154, 155, 156, 157, 158, 0,
5076 0, 0, 159, 160, 161, 162, 163, 164, 165, 166,
5077 167, 168, 0, 0, 0, 0, 0, 169, 170, 171,
5078 172, 173, 174, 175, 176, 177, 0, 0, 178, 0,
5079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5080 0, 0, 0, 0, 0, 0, 0, 0, 179, 180,
5081 181, 182, 183, 184, 185, 186, 187, 0, 0, 188,
5082 189, 0, 0, 0, 0, 190, 191, 192, 193, 0,
5083 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5084 194, 195, 0, 0, 58, 0, 0, 0, 0, 0,
5085 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5086 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5087 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
5088 0, 206, 207, 0, 0, 0, 0, 0, 0, 208,
5089 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
5090 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
5091 155, 156, 157, 158, 0, 0, 0, 159, 160, 161,
5092 162, 163, 164, 165, 166, 167, 168, 0, 0, 0,
5093 0, 0, 169, 170, 171, 172, 173, 174, 175, 176,
5094 177, 0, 0, 178, 0, 0, 0, 0, 0, 0,
5095 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5096 0, 0, 0, 179, 180, 181, 182, 183, 184, 185,
5097 186, 187, 0, 0, 188, 189, 0, 0, 0, 0,
5098 190, 191, 192, 193, 0, 0, 0, 0, 0, 0,
5099 0, 0, 0, 0, 0, 194, 195, 0, 0, 0,
5100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5102 0, 0, 0, 0, 0, 196, 197, 198, 199, 200,
5103 201, 202, 203, 204, 205, 0, 206, 207, 4, 5,
5104 6, 0, 8, 0, 208, 0, 9, 10, 0, 0,
5105 0, 11, 0, 12, 13, 14, 260, 261, 17, 18,
5106 0, 0, 0, 0, 0, 19, 20, 262, 22, 23,
5107 24, 25, 0, 0, 218, 0, 0, 0, 0, 0,
5108 0, 290, 0, 0, 31, 32, 33, 34, 35, 36,
5109 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
5110 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5111 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5112 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5113 0, 0, 0, 0, 291, 0, 0, 221, 53, 0,
5114 54, 55, 0, 0, 0, 0, 57, 58, 59, 60,
5115 61, 62, 63, 64, 65, 0, 0, 4, 5, 6,
5116 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5117 11, 0, 12, 13, 14, 260, 261, 17, 18, 0,
5118 0, 0, 0, 292, 19, 20, 262, 22, 23, 24,
5119 25, 293, 0, 218, 0, 0, 0, 0, 0, 0,
5120 290, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5121 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5122 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5123 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5124 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5125 0, 0, 0, 291, 0, 0, 221, 53, 0, 54,
5126 55, 0, 0, 0, 0, 57, 58, 59, 60, 61,
5127 62, 63, 64, 65, 0, 0, 4, 5, 6, 0,
5128 8, 0, 0, 0, 9, 10, 0, 0, 0, 11,
5129 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5130 0, 0, 292, 19, 20, 21, 22, 23, 24, 25,
5131 591, 0, 218, 0, 0, 0, 0, 0, 0, 28,
5132 0, 0, 31, 32, 33, 34, 35, 36, 37, 38,
5133 39, 219, 40, 41, 42, 43, 44, 45, 46, 0,
5134 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
5135 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5136 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5137 0, 0, 220, 0, 0, 221, 53, 0, 54, 55,
5138 0, 222, 223, 224, 57, 58, 225, 60, 61, 62,
5139 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5140 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5141 0, 0, 0, 0, 0, 0, 4, 5, 6, 0,
5142 8, 66, 226, 68, 9, 10, 0, 0, 249, 11,
5143 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5144 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
5145 0, 0, 26, 0, 0, 0, 0, 0, 0, 28,
5146 0, 0, 31, 32, 33, 34, 35, 36, 37, 38,
5147 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5148 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
5149 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5150 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5151 0, 0, 220, 0, 0, 221, 53, 0, 54, 55,
5152 0, 0, 0, 0, 57, 58, 59, 60, 61, 62,
5153 63, 64, 65, 0, 0, 0, 0, 0, 0, 0,
5154 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5155 0, 0, 0, 0, 3, 0, 4, 5, 6, 7,
5156 8, 66, 67, 68, 9, 10, 0, 0, 249, 11,
5157 0, 12, 13, 14, 15, 16, 17, 18, 0, 0,
5158 0, 0, 0, 19, 20, 21, 22, 23, 24, 25,
5159 0, 0, 26, 0, 0, 0, 0, 0, 27, 28,
5160 0, 30, 31, 32, 33, 34, 35, 36, 37, 38,
5161 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5162 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
5163 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5164 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5165 0, 0, 51, 0, 0, 52, 53, 0, 54, 55,
5166 0, 56, 0, 0, 57, 58, 59, 60, 61, 62,
5167 63, 64, 65, 0, 0, 391, 0, 4, 5, 6,
5168 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5169 11, 0, 12, 13, 14, 15, 16, 17, 18, 0,
5170 0, 66, 67, 68, 19, 20, 21, 22, 23, 24,
5171 25, 0, 0, 26, 0, 0, 0, 0, 0, 0,
5172 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5173 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5174 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5175 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5176 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5177 0, 0, 0, 220, 0, 0, 221, 53, 0, 54,
5178 55, 0, 0, 0, 0, 57, 58, 59, 60, 61,
5179 62, 63, 64, 65, 0, 0, 0, 0, 4, 5,
5180 6, 0, 8, 0, 0, 0, 9, 10, 0, 0,
5181 0, 11, 0, 12, 13, 14, 15, 16, 17, 18,
5182 0, 0, 66, 67, 68, 19, 20, 21, 22, 23,
5183 24, 25, 0, 0, 218, 0, 0, 0, 0, 0,
5184 0, 28, 0, 0, 31, 32, 33, 34, 35, 36,
5185 37, 38, 39, 219, 40, 41, 42, 43, 44, 45,
5186 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5187 0, 47, 48, 0, 0, 0, 0, 0, 0, 0,
5188 0, 0, 0, 0, 0, 0, 49, 50, 0, 0,
5189 0, 0, 0, 0, 220, 0, 0, 221, 53, 0,
5190 54, 55, 0, 222, 223, 224, 57, 58, 225, 60,
5191 61, 62, 63, 64, 65, 0, 0, 0, 0, 4,
5192 5, 6, 0, 8, 0, 0, 0, 9, 10, 0,
5193 0, 0, 11, 0, 12, 13, 14, 15, 16, 17,
5194 18, 0, 0, 66, 226, 68, 19, 20, 21, 22,
5195 23, 24, 25, 0, 0, 218, 0, 0, 0, 0,
5196 0, 0, 28, 0, 0, 31, 32, 33, 34, 35,
5197 36, 37, 38, 39, 219, 40, 41, 42, 43, 44,
5198 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5199 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5200 0, 0, 0, 0, 0, 0, 0, 49, 465, 0,
5201 0, 0, 0, 0, 0, 220, 0, 0, 221, 53,
5202 0, 54, 55, 0, 222, 223, 224, 57, 58, 225,
5203 60, 61, 62, 63, 64, 65, 0, 0, 0, 0,
5204 4, 5, 6, 0, 8, 0, 0, 0, 9, 10,
5205 0, 0, 0, 11, 0, 12, 13, 14, 260, 261,
5206 17, 18, 0, 0, 66, 226, 68, 19, 20, 262,
5207 22, 23, 24, 25, 0, 0, 218, 0, 0, 0,
5208 0, 0, 0, 28, 0, 0, 31, 32, 33, 34,
5209 35, 36, 37, 38, 39, 219, 40, 41, 42, 43,
5210 44, 45, 46, 0, 0, 0, 0, 0, 0, 0,
5211 0, 0, 0, 47, 48, 0, 0, 0, 0, 0,
5212 0, 0, 0, 0, 0, 0, 0, 0, 49, 50,
5213 0, 0, 0, 0, 0, 0, 220, 0, 0, 221,
5214 53, 0, 54, 55, 0, 222, 223, 224, 57, 58,
5215 225, 60, 61, 62, 63, 64, 65, 0, 0, 0,
5216 0, 4, 5, 6, 0, 8, 0, 0, 0, 9,
5217 10, 0, 0, 0, 11, 0, 12, 13, 14, 260,
5218 261, 17, 18, 0, 0, 66, 226, 68, 19, 20,
5219 262, 22, 23, 24, 25, 0, 0, 218, 0, 0,
5220 0, 0, 0, 0, 28, 0, 0, 31, 32, 33,
5221 34, 35, 36, 37, 38, 39, 219, 40, 41, 42,
5222 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
5223 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
5224 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
5225 465, 0, 0, 0, 0, 0, 0, 220, 0, 0,
5226 221, 53, 0, 54, 55, 0, 222, 223, 224, 57,
5227 58, 225, 60, 61, 62, 63, 64, 65, 0, 0,
5228 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5229 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5230 260, 261, 17, 18, 0, 0, 66, 226, 68, 19,
5231 20, 262, 22, 23, 24, 25, 0, 0, 218, 0,
5232 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5233 33, 34, 35, 36, 37, 38, 39, 219, 40, 41,
5234 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5235 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5236 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5237 49, 50, 0, 0, 0, 0, 0, 0, 220, 0,
5238 0, 221, 53, 0, 54, 55, 0, 222, 223, 0,
5239 57, 58, 225, 60, 61, 62, 63, 64, 65, 0,
5240 0, 0, 0, 4, 5, 6, 0, 8, 0, 0,
5241 0, 9, 10, 0, 0, 0, 11, 0, 12, 13,
5242 14, 260, 261, 17, 18, 0, 0, 66, 226, 68,
5243 19, 20, 262, 22, 23, 24, 25, 0, 0, 218,
5244 0, 0, 0, 0, 0, 0, 28, 0, 0, 31,
5245 32, 33, 34, 35, 36, 37, 38, 39, 219, 40,
5246 41, 42, 43, 44, 45, 46, 0, 0, 0, 0,
5247 0, 0, 0, 0, 0, 0, 47, 48, 0, 0,
5248 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5249 0, 49, 50, 0, 0, 0, 0, 0, 0, 220,
5250 0, 0, 221, 53, 0, 54, 55, 0, 0, 223,
5251 224, 57, 58, 225, 60, 61, 62, 63, 64, 65,
5252 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5253 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5254 13, 14, 260, 261, 17, 18, 0, 0, 66, 226,
5255 68, 19, 20, 262, 22, 23, 24, 25, 0, 0,
5256 218, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5257 31, 32, 33, 34, 35, 36, 37, 38, 39, 219,
5258 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5259 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5260 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5261 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5262 220, 0, 0, 221, 53, 0, 54, 55, 0, 0,
5263 223, 0, 57, 58, 225, 60, 61, 62, 63, 64,
5264 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5265 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5266 12, 13, 14, 15, 16, 17, 18, 0, 0, 66,
5267 226, 68, 19, 20, 21, 22, 23, 24, 25, 0,
5268 0, 218, 0, 0, 0, 0, 0, 0, 28, 0,
5269 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5270 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5271 0, 0, 0, 0, 0, 0, 0, 0, 47, 48,
5272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5273 0, 0, 0, 49, 50, 0, 0, 0, 0, 0,
5274 0, 220, 0, 0, 221, 53, 0, 54, 55, 0,
5275 777, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5276 64, 65, 0, 0, 0, 0, 4, 5, 6, 0,
5277 8, 0, 0, 0, 9, 10, 0, 0, 0, 11,
5278 0, 12, 13, 14, 260, 261, 17, 18, 0, 0,
5279 66, 226, 68, 19, 20, 262, 22, 23, 24, 25,
5280 0, 0, 218, 0, 0, 0, 0, 0, 0, 28,
5281 0, 0, 31, 32, 33, 34, 35, 36, 37, 38,
5282 39, 0, 40, 41, 42, 43, 44, 45, 46, 0,
5283 0, 0, 0, 0, 0, 0, 0, 0, 0, 47,
5284 48, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5285 0, 0, 0, 0, 49, 50, 0, 0, 0, 0,
5286 0, 0, 220, 0, 0, 221, 53, 0, 54, 55,
5287 0, 943, 0, 0, 57, 58, 59, 60, 61, 62,
5288 63, 64, 65, 0, 0, 0, 0, 4, 5, 6,
5289 0, 8, 0, 0, 0, 9, 10, 0, 0, 0,
5290 11, 0, 12, 13, 14, 260, 261, 17, 18, 0,
5291 0, 66, 226, 68, 19, 20, 262, 22, 23, 24,
5292 25, 0, 0, 218, 0, 0, 0, 0, 0, 0,
5293 28, 0, 0, 31, 32, 33, 34, 35, 36, 37,
5294 38, 39, 0, 40, 41, 42, 43, 44, 45, 46,
5295 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5296 47, 48, 0, 0, 0, 0, 0, 0, 0, 0,
5297 0, 0, 0, 0, 0, 49, 50, 0, 0, 0,
5298 0, 0, 0, 220, 0, 0, 221, 53, 0, 54,
5299 55, 0, 992, 0, 0, 57, 58, 59, 60, 61,
5300 62, 63, 64, 65, 0, 0, 0, 0, 4, 5,
5301 6, 0, 8, 0, 0, 0, 9, 10, 0, 0,
5302 0, 11, 0, 12, 13, 14, 260, 261, 17, 18,
5303 0, 0, 66, 226, 68, 19, 20, 262, 22, 23,
5304 24, 25, 0, 0, 218, 0, 0, 0, 0, 0,
5305 0, 28, 0, 0, 31, 32, 33, 34, 35, 36,
5306 37, 38, 39, 0, 40, 41, 42, 43, 44, 45,
5307 46, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5308 0, 47, 48, 0, 0, 0, 0, 0, 0, 0,
5309 0, 0, 0, 0, 0, 0, 49, 50, 0, 0,
5310 0, 0, 0, 0, 220, 0, 0, 221, 53, 0,
5311 54, 55, 0, 777, 0, 0, 57, 58, 59, 60,
5312 61, 62, 63, 64, 65, 0, 0, 0, 0, 4,
5313 5, 6, 0, 8, 0, 0, 0, 9, 10, 0,
5314 0, 0, 11, 0, 12, 13, 14, 260, 261, 17,
5315 18, 0, 0, 66, 226, 68, 19, 20, 262, 22,
5316 23, 24, 25, 0, 0, 218, 0, 0, 0, 0,
5317 0, 0, 28, 0, 0, 31, 32, 33, 34, 35,
5318 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5319 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5320 0, 0, 47, 48, 0, 0, 0, 0, 0, 0,
5321 0, 0, 0, 0, 0, 0, 0, 49, 50, 0,
5322 0, 0, 0, 0, 0, 220, 0, 0, 221, 53,
5323 0, 54, 55, 0, 1111, 0, 0, 57, 58, 59,
5324 60, 61, 62, 63, 64, 65, 0, 0, 0, 0,
5325 4, 5, 6, 0, 8, 0, 0, 0, 9, 10,
5326 0, 0, 0, 11, 0, 12, 13, 14, 260, 261,
5327 17, 18, 0, 0, 66, 226, 68, 19, 20, 262,
5328 22, 23, 24, 25, 0, 0, 218, 0, 0, 0,
5329 0, 0, 0, 28, 0, 0, 31, 32, 33, 34,
5330 35, 36, 37, 38, 39, 0, 40, 41, 42, 43,
5331 44, 45, 46, 0, 0, 0, 0, 0, 0, 0,
5332 0, 0, 0, 47, 48, 0, 0, 0, 0, 0,
5333 0, 0, 0, 0, 0, 0, 0, 0, 49, 50,
5334 0, 0, 0, 0, 0, 0, 220, 0, 0, 221,
5335 53, 0, 54, 55, 0, 0, 0, 0, 57, 58,
5336 59, 60, 61, 62, 63, 64, 65, 0, 0, 0,
5337 0, 4, 5, 6, 0, 8, 0, 0, 0, 9,
5338 10, 0, 0, 0, 11, 0, 12, 13, 14, 15,
5339 16, 17, 18, 0, 0, 66, 226, 68, 19, 20,
5340 21, 22, 23, 24, 25, 0, 0, 218, 0, 0,
5341 0, 0, 0, 0, 28, 0, 0, 31, 32, 33,
5342 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
5343 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
5344 0, 0, 0, 0, 47, 48, 0, 0, 0, 0,
5345 0, 0, 0, 0, 0, 0, 0, 0, 0, 49,
5346 50, 0, 0, 0, 0, 0, 0, 220, 0, 0,
5347 221, 53, 0, 54, 55, 0, 0, 0, 0, 57,
5348 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5349 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5350 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5351 15, 16, 17, 18, 0, 0, 66, 226, 68, 19,
5352 20, 21, 22, 23, 24, 25, 0, 0, 26, 0,
5353 0, 0, 0, 0, 0, 28, 0, 0, 31, 32,
5354 33, 34, 35, 36, 37, 38, 39, 0, 40, 41,
5355 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5356 0, 0, 0, 0, 0, 47, 48, 0, 0, 0,
5357 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5358 49, 50, 0, 0, 0, 0, 0, 0, 220, 0,
5359 0, 221, 53, 0, 54, 55, 0, 0, 0, 0,
5360 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5361 0, 0, 0, 4, 5, 6, 0, 8, 0, 0,
5362 0, 9, 10, 0, 0, 0, 11, 0, 12, 13,
5363 14, 15, 16, 17, 18, 0, 0, 66, 67, 68,
5364 19, 20, 21, 22, 23, 24, 25, 0, 0, 759,
5365 0, 0, 0, 0, 0, 0, 28, 0, 0, 31,
5366 32, 33, 34, 35, 36, 37, 38, 39, 0, 40,
5367 41, 42, 43, 44, 45, 46, 0, 0, 0, 0,
5368 0, 0, 0, 0, 0, 0, 47, 48, 0, 0,
5369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5370 0, 49, 50, 0, 0, 0, 0, 0, 0, 220,
5371 0, 0, 221, 53, 0, 54, 55, 0, 0, 0,
5372 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5373 0, 0, 0, 0, 4, 5, 6, 0, 8, 0,
5374 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5375 13, 14, 260, 261, 17, 18, 0, 0, 66, 226,
5376 68, 19, 20, 262, 22, 23, 24, 25, 0, 0,
5377 855, 0, 0, 0, 0, 0, 0, 28, 0, 0,
5378 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5379 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5380 0, 0, 0, 0, 0, 0, 0, 47, 48, 0,
5381 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5382 0, 0, 49, 50, 0, 0, 0, 0, 0, 0,
5383 220, 0, 0, 221, 53, 0, 54, 55, 0, 0,
5384 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5385 65, 0, 0, 0, 0, 4, 5, 6, 0, 8,
5386 0, 0, 0, 9, 10, 0, 0, 0, 11, 0,
5387 12, 13, 14, 260, 261, 17, 18, 0, 0, 66,
5388 226, 68, 19, 20, 262, 22, 23, 24, 25, 0,
5389 0, 218, 0, 0, 0, 0, 0, 0, 290, 0,
5390 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
5391 0, 40, 41, 42, 43, 44, 45, 46, 0, 0,
5392 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5393 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5394 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5395 0, 291, 0, 0, 351, 53, 0, 54, 55, 0,
5396 352, 0, 0, 57, 58, 59, 60, 61, 62, 63,
5397 64, 65, 0, 0, 4, 5, 6, 0, 8, 0,
5398 0, 0, 9, 10, 0, 0, 0, 11, 0, 12,
5399 13, 14, 260, 261, 17, 18, 0, 0, 0, 0,
5400 292, 19, 20, 262, 22, 23, 24, 25, 0, 0,
5401 218, 0, 0, 0, 0, 0, 0, 290, 0, 0,
5402 31, 32, 33, 34, 35, 36, 37, 38, 39, 0,
5403 40, 41, 42, 43, 44, 45, 46, 0, 0, 0,
5404 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5405 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5407 401, 0, 0, 52, 53, 0, 54, 55, 0, 56,
5408 0, 0, 57, 58, 59, 60, 61, 62, 63, 64,
5409 65, 0, 0, 4, 5, 6, 0, 8, 0, 0,
5410 0, 9, 10, 0, 0, 0, 11, 0, 12, 13,
5411 14, 260, 261, 17, 18, 0, 0, 0, 0, 292,
5412 19, 20, 262, 22, 23, 24, 25, 0, 0, 218,
5413 0, 0, 0, 0, 0, 0, 290, 0, 0, 31,
5414 32, 33, 409, 35, 36, 37, 410, 39, 0, 40,
5415 41, 42, 43, 44, 45, 46, 0, 0, 0, 0,
5416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5417 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5418 0, 0, 0, 0, 0, 411, 0, 0, 0, 412,
5419 0, 0, 221, 53, 0, 54, 55, 0, 0, 0,
5420 0, 57, 58, 59, 60, 61, 62, 63, 64, 65,
5421 0, 0, 4, 5, 6, 0, 8, 0, 0, 0,
5422 9, 10, 0, 0, 0, 11, 0, 12, 13, 14,
5423 260, 261, 17, 18, 0, 0, 0, 0, 292, 19,
5424 20, 262, 22, 23, 24, 25, 0, 0, 218, 0,
5425 0, 0, 0, 0, 0, 290, 0, 0, 31, 32,
5426 33, 409, 35, 36, 37, 410, 39, 0, 40, 41,
5427 42, 43, 44, 45, 46, 0, 0, 0, 0, 0,
5428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5430 0, 0, 0, 0, 0, 0, 0, 0, 412, 0,
5431 0, 221, 53, 0, 54, 55, 0, 0, 0, 0,
5432 57, 58, 59, 60, 61, 62, 63, 64, 65, 0,
5433 0, 4, 5, 6, 0, 8, 0, 0, 0, 9,
5434 10, 0, 0, 0, 11, 0, 12, 13, 14, 260,
5435 261, 17, 18, 0, 0, 0, 0, 292, 19, 20,
5436 262, 22, 23, 24, 25, 0, 0, 218, 0, 0,
5437 0, 0, 0, 0, 290, 0, 0, 31, 32, 33,
5438 34, 35, 36, 37, 38, 39, 0, 40, 41, 42,
5439 43, 44, 45, 46, 0, 0, 0, 0, 0, 0,
5440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5441 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5442 0, 0, 0, 0, 0, 0, 0, 291, 0, 0,
5443 351, 53, 0, 54, 55, 0, 0, 0, 0, 57,
5444 58, 59, 60, 61, 62, 63, 64, 65, 0, 0,
5445 4, 5, 6, 0, 8, 0, 0, 0, 9, 10,
5446 0, 0, 0, 11, 0, 12, 13, 14, 260, 261,
5447 17, 18, 0, 0, 0, 0, 292, 19, 20, 262,
5448 22, 23, 24, 25, 0, 0, 218, 0, 0, 0,
5449 0, 0, 0, 290, 0, 0, 31, 32, 33, 34,
5450 35, 36, 37, 38, 39, 0, 40, 41, 42, 43,
5451 44, 45, 46, 0, 0, 0, 0, 0, 0, 0,
5452 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5453 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5454 0, 0, 0, 0, 0, 0, 1166, 0, 0, 221,
5455 53, 0, 54, 55, 0, 0, 0, 0, 57, 58,
5456 59, 60, 61, 62, 63, 64, 65, 0, 0, 4,
5457 5, 6, 0, 8, 0, 0, 0, 9, 10, 0,
5458 0, 0, 11, 0, 12, 13, 14, 260, 261, 17,
5459 18, 0, 0, 0, 0, 292, 19, 20, 262, 22,
5460 23, 24, 25, 0, 0, 218, 0, 0, 0, 0,
5461 0, 0, 290, 0, 0, 31, 32, 33, 34, 35,
5462 36, 37, 38, 39, 0, 40, 41, 42, 43, 44,
5463 45, 46, 0, 0, 0, 0, 0, 0, 0, 0,
5464 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5466 0, 0, 0, 0, 0, 1263, 0, 0, 221, 53,
5467 0, 54, 55, 22, 23, 24, 25, 57, 58, 59,
5468 60, 61, 62, 63, 64, 65, 0, 0, 0, 31,
5469 32, 33, 1055, 0, 0, 0, 1056, 0, 1057, 40,
5470 41, 42, 43, 44, 0, 0, 0, 0, 0, 0,
5471 0, 0, 0, 0, 292, 0, 0, 0, 547, 0,
5472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5473 0, 1058, 1059, 0, 0, 0, 0, 0, 0, 1060,
5474 0, 0, 1061, 0, 0, 1062, 1063, 0, 1064, 551,
5475 0, 57, 58, 1065, 60, 61, 62, 63, 64, 65,
5476 0, 0, 0, 0, 0, 0, 22, 23, 24, 25,
5477 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5478 0, 1066, 31, 32, 33, 1055, 0, 0, 292, 1056,
5479 0, 0, 40, 41, 42, 43, 44, 0, 0, 0,
5480 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5481 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5482 0, 0, 0, 0, 1058, 1059, 0, 0, 0, 0,
5483 0, 0, 1060, 0, 0, 1061, 0, 0, 1062, 1063,
5484 0, 1064, 0, 0, 57, 58, 59, 60, 61, 62,
5485 63, 64, 65, 0, 0, 0, 0, 0, 0, 22,
5486 23, 24, 25, 0, 0, 0, 631, 632, 0, 0,
5487 633, 0, 0, 0, 1066, 31, 32, 33, 1055, 0,
5488 0, 292, 1056, 0, 0, 40, 41, 42, 43, 44,
5489 179, 180, 181, 182, 183, 184, 185, 186, 187, 0,
5490 0, 188, 189, 0, 0, 0, 0, 190, 191, 192,
5491 193, 0, 0, 0, 0, 0, 0, 1058, 1059, 0,
5492 0, 0, 194, 195, 0, 1060, 0, 0, 1061, 0,
5493 0, 1062, 1063, 0, 0, 0, 0, 57, 58, 59,
5494 60, 61, 62, 63, 64, 65, 0, 0, 0, 0,
5495 0, 0, 196, 197, 198, 199, 200, 201, 202, 203,
5496 204, 205, 0, 206, 207, 684, 622, 1066, 0, 685,
5497 0, 208, 245, 0, 292, 0, 0, 0, 0, 0,
5498 0, 0, 0, 0, 0, 0, 0, 0, 0, 179,
5499 180, 181, 182, 183, 184, 185, 186, 187, 0, 0,
5500 188, 189, 0, 0, 0, 0, 190, 191, 192, 193,
5501 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5502 0, 194, 195, 0, 0, 0, 0, 0, 0, 0,
5503 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5504 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5505 0, 196, 197, 198, 199, 200, 201, 202, 203, 204,
5506 205, 0, 206, 207, 687, 632, 0, 0, 688, 0,
5507 208, 245, 0, 0, 0, 0, 0, 0, 0, 0,
5508 0, 0, 0, 0, 0, 0, 0, 0, 179, 180,
5509 181, 182, 183, 184, 185, 186, 187, 0, 0, 188,
5510 189, 0, 0, 0, 0, 190, 191, 192, 193, 0,
5511 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5512 194, 195, 0, 0, 0, 0, 0, 0, 0, 0,
5513 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5514 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5515 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
5516 0, 206, 207, 684, 622, 0, 0, 702, 0, 208,
5517 245, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5518 0, 0, 0, 0, 0, 0, 0, 179, 180, 181,
5519 182, 183, 184, 185, 186, 187, 0, 0, 188, 189,
5520 0, 0, 0, 0, 190, 191, 192, 193, 0, 0,
5521 0, 0, 0, 0, 0, 0, 0, 0, 0, 194,
5522 195, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5523 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5524 0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
5525 197, 198, 199, 200, 201, 202, 203, 204, 205, 0,
5526 206, 207, 713, 622, 0, 0, 714, 0, 208, 245,
5527 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5528 0, 0, 0, 0, 0, 0, 179, 180, 181, 182,
5529 183, 184, 185, 186, 187, 0, 0, 188, 189, 0,
5530 0, 0, 0, 190, 191, 192, 193, 0, 0, 0,
5531 0, 0, 0, 0, 0, 0, 0, 0, 194, 195,
5532 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5533 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5534 0, 0, 0, 0, 0, 0, 0, 0, 196, 197,
5535 198, 199, 200, 201, 202, 203, 204, 205, 0, 206,
5536 207, 716, 632, 0, 0, 717, 0, 208, 245, 0,
5537 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5538 0, 0, 0, 0, 0, 179, 180, 181, 182, 183,
5539 184, 185, 186, 187, 0, 0, 188, 189, 0, 0,
5540 0, 0, 190, 191, 192, 193, 0, 0, 0, 0,
5541 0, 0, 0, 0, 0, 0, 0, 194, 195, 0,
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, 196, 197, 198,
5545 199, 200, 201, 202, 203, 204, 205, 0, 206, 207,
5546 829, 622, 0, 0, 830, 0, 208, 245, 0, 0,
5547 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5548 0, 0, 0, 0, 179, 180, 181, 182, 183, 184,
5549 185, 186, 187, 0, 0, 188, 189, 0, 0, 0,
5550 0, 190, 191, 192, 193, 0, 0, 0, 0, 0,
5551 0, 0, 0, 0, 0, 0, 194, 195, 0, 0,
5552 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5553 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5554 0, 0, 0, 0, 0, 0, 196, 197, 198, 199,
5555 200, 201, 202, 203, 204, 205, 0, 206, 207, 832,
5556 632, 0, 0, 833, 0, 208, 245, 0, 0, 0,
5557 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5558 0, 0, 0, 179, 180, 181, 182, 183, 184, 185,
5559 186, 187, 0, 0, 188, 189, 0, 0, 0, 0,
5560 190, 191, 192, 193, 0, 0, 0, 0, 0, 0,
5561 0, 0, 0, 0, 0, 194, 195, 0, 0, 0,
5562 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5563 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5564 0, 0, 0, 0, 0, 196, 197, 198, 199, 200,
5565 201, 202, 203, 204, 205, 0, 206, 207, 838, 622,
5566 0, 0, 839, 0, 208, 245, 0, 0, 0, 0,
5567 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5568 0, 0, 179, 180, 181, 182, 183, 184, 185, 186,
5569 187, 0, 0, 188, 189, 0, 0, 0, 0, 190,
5570 191, 192, 193, 0, 0, 0, 0, 0, 0, 0,
5571 0, 0, 0, 0, 194, 195, 0, 0, 0, 0,
5572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5573 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5574 0, 0, 0, 0, 196, 197, 198, 199, 200, 201,
5575 202, 203, 204, 205, 0, 206, 207, 669, 632, 0,
5576 0, 670, 0, 208, 245, 0, 0, 0, 0, 0,
5577 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5578 0, 179, 180, 181, 182, 183, 184, 185, 186, 187,
5579 0, 0, 188, 189, 0, 0, 0, 0, 190, 191,
5580 192, 193, 0, 0, 0, 0, 0, 0, 0, 0,
5581 0, 0, 0, 194, 195, 0, 0, 0, 0, 0,
5582 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5584 0, 0, 0, 196, 197, 198, 199, 200, 201, 202,
5585 203, 204, 205, 0, 206, 207, 998, 622, 0, 0,
5586 999, 0, 208, 245, 0, 0, 0, 0, 0, 0,
5587 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5588 179, 180, 181, 182, 183, 184, 185, 186, 187, 0,
5589 0, 188, 189, 0, 0, 0, 0, 190, 191, 192,
5590 193, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5591 0, 0, 194, 195, 0, 0, 0, 0, 0, 0,
5592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5593 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5594 0, 0, 196, 197, 198, 199, 200, 201, 202, 203,
5595 204, 205, 0, 206, 207, 1001, 632, 0, 0, 1002,
5596 0, 208, 245, 0, 0, 0, 0, 0, 0, 0,
5597 0, 0, 0, 0, 0, 0, 0, 0, 0, 179,
5598 180, 181, 182, 183, 184, 185, 186, 187, 0, 0,
5599 188, 189, 0, 0, 0, 0, 190, 191, 192, 193,
5600 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5601 0, 194, 195, 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, 196, 197, 198, 199, 200, 201, 202, 203, 204,
5605 205, 0, 206, 207, 1281, 622, 0, 0, 1282, 0,
5606 208, 245, 0, 0, 0, 0, 0, 0, 0, 0,
5607 0, 0, 0, 0, 0, 0, 0, 0, 179, 180,
5608 181, 182, 183, 184, 185, 186, 187, 0, 0, 188,
5609 189, 0, 0, 0, 0, 190, 191, 192, 193, 0,
5610 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5611 194, 195, 0, 0, 0, 0, 0, 0, 0, 0,
5612 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5613 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5614 196, 197, 198, 199, 200, 201, 202, 203, 204, 205,
5615 0, 206, 207, 1284, 632, 0, 0, 1285, 0, 208,
5616 245, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5617 0, 0, 0, 0, 0, 0, 0, 179, 180, 181,
5618 182, 183, 184, 185, 186, 187, 0, 0, 188, 189,
5619 0, 0, 0, 0, 190, 191, 192, 193, 0, 0,
5620 0, 0, 0, 0, 0, 0, 0, 0, 0, 194,
5621 195, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5622 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5623 0, 0, 0, 0, 0, 0, 0, 0, 0, 196,
5624 197, 198, 199, 200, 201, 202, 203, 204, 205, 0,
5625 206, 207, 1329, 622, 0, 0, 1330, 0, 208, 245,
5626 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5627 0, 0, 0, 0, 0, 0, 179, 180, 181, 182,
5628 183, 184, 185, 186, 187, 0, 0, 188, 189, 0,
5629 0, 0, 0, 190, 191, 192, 193, 0, 0, 0,
5630 0, 0, 0, 0, 0, 0, 0, 0, 194, 195,
5631 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5632 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5633 0, 0, 0, 0, 0, 0, 0, 0, 196, 197,
5634 198, 199, 200, 201, 202, 203, 204, 205, 0, 206,
5635 207, 669, 632, 0, 0, 670, 0, 208, 245, 0,
5636 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
5637 0, 0, 0, 0, 0, 179, 180, 181, 182, 183,
5638 184, 185, 186, 187, 0, 0, 188, 189, 0, 0,
5639 0, 0, 190, 191, 192, 193, 0, 0, 0, 0,
5640 0, 0, 0, 0, 0, 0, 0, 194, 195, 0,
5641 0, 0, 0, 0, 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, 196, 197, 198,
5644 199, 200, 201, 202, 203, 204, 205, 0, 206, 207,
5645 0, 0, 0, 0, 0, 0, 208
5648static const yytype_int16 yycheck[] =
5650 1, 97, 58, 15, 16, 21, 59, 70, 332, 27,
5651 91, 106, 336, 52, 53, 388, 242, 412, 13, 14,
5652 58, 332, 394, 1, 105, 336, 70, 7, 56, 336,
5653 15, 16, 743, 580, 85, 557, 93, 94, 96, 7,
5654 97, 387, 549, 389, 26, 578, 28, 27, 581, 245,
5655 817, 52, 53, 97, 594, 56, 1, 85, 827, 27,
5656 580, 284, 745, 101, 80, 288, 56, 463, 584, 54,
5657 98, 99, 100, 52, 745, 15, 16, 72, 58, 750,
5658 63, 64, 65, 884, 85, 94, 459, 750, 97, 882,
5659 102, 797, 509, 439, 919, 66, 609, 98, 99, 100,
5660 101, 13, 455, 499, 26, 1062, 25, 52, 53, 54,
5661 55, 13, 458, 1004, 460, 77, 0, 102, 29, 13,
5662 273, 101, 308, 309, 15, 16, 58, 455, 69, 662,
5663 677, 76, 77, 13, 1127, 463, 101, 0, 511, 98,
5664 486, 567, 155, 496, 10, 80, 78, 160, 574, 34,
5665 100, 1255, 100, 100, 152, 1139, 237, 98, 1247, 1139,
5666 25, 69, 102, 54, 55, 25, 512, 52, 103, 155,
5667 100, 1155, 225, 1153, 591, 101, 28, 109, 110, 275,
5668 672, 673, 221, 740, 265, 135, 743, 135, 135, 25,
5669 98, 156, 67, 250, 251, 154, 25, 27, 351, 158,
5670 1193, 13, 68, 25, 1029, 135, 1163, 1164, 158, 77,
5671 142, 102, 275, 124, 37, 38, 25, 298, 1003, 1004,
5672 221, 1325, 13, 1114, 1003, 1004, 733, 734, 1317, 155,
5673 152, 275, 56, 245, 273, 247, 1061, 156, 1063, 1040,
5674 13, 947, 293, 155, 470, 13, 262, 263, 1041, 161,
5675 1003, 1004, 745, 155, 156, 256, 13, 13, 121, 161,
5676 245, 155, 247, 756, 659, 293, 228, 161, 325, 326,
5677 327, 328, 273, 330, 331, 155, 221, 650, 256, 162,
5678 13, 161, 227, 228, 1268, 801, 26, 660, 1272, 1273,
5679 235, 156, 293, 1273, 273, 135, 156, 242, 981, 695,
5680 245, 283, 284, 399, 837, 651, 288, 247, 290, 1062,
5681 981, 256, 351, 826, 977, 661, 325, 326, 327, 328,
5682 156, 292, 323, 404, 352, 155, 1079, 156, 273, 1114,
5683 25, 161, 155, 295, 156, 1114, 1161, 1162, 395, 525,
5684 693, 527, 156, 155, 1113, 323, 1113, 156, 1332, 161,
5685 351, 352, 101, 900, 411, 399, 247, 396, 397, 227,
5686 228, 1114, 352, 66, 155, 693, 888, 695, 785, 743,
5687 161, 1156, 351, 389, 25, 882, 388, 884, 1163, 1164,
5688 900, 66, 155, 1136, 25, 158, 395, 155, 161, 390,
5689 158, 931, 66, 161, 135, 396, 397, 278, 155, 155,
5690 1153, 110, 411, 135, 161, 161, 351, 156, 100, 389,
5691 1163, 1164, 152, 69, 961, 156, 25, 120, 158, 952,
5692 100, 745, 155, 435, 15, 153, 750, 155, 161, 921,
5693 922, 1163, 1164, 142, 25, 927, 928, 122, 123, 69,
5694 135, 97, 98, 388, 460, 390, 120, 459, 25, 135,
5695 435, 396, 397, 806, 69, 135, 1127, 683, 509, 439,
5696 155, 156, 480, 158, 159, 891, 892, 97, 98, 895,
5697 486, 897, 158, 899, 1058, 1059, 156, 162, 806, 113,
5698 460, 509, 97, 98, 78, 1270, 979, 710, 981, 156,
5699 983, 492, 25, 532, 158, 435, 512, 693, 154, 511,
5700 480, 69, 158, 34, 56, 156, 486, 158, 509, 15,
5701 100, 17, 480, 100, 459, 156, 905, 158, 907, 1011,
5702 100, 52, 100, 468, 154, 470, 135, 100, 135, 97,
5703 98, 532, 512, 1040, 1041, 579, 722, 538, 1270, 154,
5704 591, 727, 1253, 916, 435, 135, 155, 156, 135, 1316,
5705 159, 145, 146, 147, 435, 135, 909, 135, 135, 803,
5706 538, 100, 135, 591, 455, 577, 511, 811, 580, 915,
5707 1127, 917, 968, 945, 1158, 1159, 156, 578, 155, 156,
5708 581, 101, 159, 156, 1255, 466, 154, 532, 469, 1260,
5709 591, 156, 30, 474, 652, 69, 135, 1260, 1131, 643,
5710 100, 640, 135, 642, 589, 496, 663, 78, 489, 594,
5711 555, 627, 557, 66, 67, 69, 1042, 1043, 1044, 1045,
5712 636, 156, 155, 156, 98, 1127, 159, 100, 610, 1003,
5713 1004, 1124, 158, 578, 1127, 651, 581, 863, 650, 640,
5714 968, 642, 699, 97, 98, 661, 970, 629, 660, 100,
5715 387, 1023, 389, 69, 1325, 671, 674, 981, 1321, 970,
5716 711, 662, 135, 970, 720, 1060, 1188, 1189, 54, 122,
5717 123, 651, 143, 144, 145, 146, 147, 158, 64, 65,
5718 561, 661, 98, 711, 135, 630, 52, 703, 704, 100,
5719 56, 636, 627, 69, 674, 640, 1253, 642, 1255, 78,
5720 154, 636, 439, 1260, 686, 650, 674, 100, 1265, 590,
5721 711, 100, 1036, 794, 589, 660, 1249, 662, 69, 594,
5722 159, 458, 98, 460, 135, 1036, 671, 69, 710, 1036,
5723 158, 1103, 155, 715, 785, 158, 671, 135, 683, 722,
5724 1114, 724, 135, 100, 727, 728, 135, 98, 485, 486,
5725 160, 846, 69, 1255, 58, 97, 98, 785, 1260, 704,
5726 56, 1187, 1255, 1265, 1321, 1160, 1323, 156, 1325, 153,
5727 1327, 158, 1265, 510, 78, 512, 1298, 759, 135, 836,
5728 97, 98, 1156, 156, 785, 100, 667, 1344, 69, 1163,
5729 1164, 835, 162, 69, 78, 834, 66, 672, 673, 156,
5730 69, 155, 693, 1127, 66, 109, 844, 161, 1180, 113,
5731 69, 69, 154, 37, 38, 69, 254, 98, 69, 1321,
5732 135, 1323, 98, 1325, 152, 1327, 135, 836, 97, 98,
5733 1323, 52, 1325, 834, 1327, 56, 837, 686, 97, 98,
5734 98, 156, 1344, 97, 98, 135, 97, 98, 594, 831,
5735 120, 1344, 122, 123, 107, 125, 737, 69, 120, 841,
5736 122, 123, 69, 125, 844, 1238, 715, 155, 1, 814,
5737 815, 159, 817, 855, 869, 155, 156, 582, 69, 1253,
5738 937, 586, 15, 16, 66, 154, 98, 135, 900, 834,
5739 97, 98, 837, 1239, 161, 154, 1270, 936, 66, 156,
5740 154, 917, 1127, 154, 916, 26, 97, 98, 25, 953,
5741 56, 349, 649, 26, 651, 806, 354, 139, 863, 52,
5742 53, 69, 659, 56, 661, 1268, 672, 673, 937, 1272,
5743 769, 1255, 971, 772, 67, 936, 1260, 917, 120, 135,
5744 122, 123, 135, 888, 69, 156, 931, 154, 69, 97,
5745 98, 952, 85, 156, 122, 123, 69, 125, 159, 69,
5746 93, 94, 843, 154, 97, 98, 99, 100, 153, 102,
5747 971, 916, 97, 98, 155, 156, 97, 98, 100, 14,
5748 15, 862, 831, 864, 97, 98, 931, 97, 98, 1028,
5749 156, 936, 841, 994, 995, 990, 991, 89, 90, 880,
5750 159, 1325, 1003, 1004, 442, 443, 154, 952, 83, 84,
5751 1066, 1153, 1065, 135, 1, 453, 994, 995, 1000, 40,
5752 41, 1163, 1164, 461, 462, 156, 971, 1028, 1253, 154,
5753 1255, 152, 156, 154, 156, 1260, 156, 158, 66, 152,
5754 1265, 154, 156, 481, 154, 158, 921, 922, 135, 487,
5755 155, 156, 927, 928, 294, 295, 156, 1058, 1059, 52,
5756 156, 1062, 52, 138, 139, 52, 53, 153, 66, 13,
5757 1109, 1110, 156, 1018, 1102, 1020, 156, 1173, 1079, 17,
5758 1062, 1063, 25, 1028, 153, 156, 156, 1168, 221, 1128,
5759 135, 44, 120, 1150, 122, 123, 1321, 44, 1323, 153,
5760 1325, 1102, 1327, 1048, 1049, 1106, 156, 156, 1109, 1110,
5761 1173, 98, 245, 1114, 247, 44, 66, 250, 251, 1344,
5762 44, 996, 120, 256, 122, 123, 135, 1128, 160, 1173,
5763 1131, 137, 8, 1172, 1116, 1136, 1011, 15, 1139, 156,
5764 273, 1150, 52, 156, 156, 1127, 1185, 66, 156, 156,
5765 153, 1000, 1153, 1154, 1155, 156, 1138, 1158, 1159, 1141,
5766 293, 1106, 1163, 1164, 1109, 1110, 101, 1220, 1113, 1197,
5767 120, 1172, 122, 123, 156, 921, 922, 156, 915, 1161,
5768 917, 927, 928, 1128, 1185, 156, 1131, 9, 1245, 1246,
5769 323, 156, 325, 326, 327, 328, 1197, 330, 331, 140,
5770 638, 120, 52, 122, 123, 54, 55, 140, 57, 52,
5771 156, 1193, 101, 1062, 156, 64, 65, 588, 351, 352,
5772 156, 153, 56, 1239, 161, 159, 1238, 1172, 156, 156,
5773 1175, 1259, 1, 140, 221, 156, 1245, 1246, 156, 156,
5774 1185, 156, 156, 1188, 1189, 156, 15, 16, 1249, 1288,
5775 996, 1233, 1234, 1235, 153, 388, 140, 390, 1259, 1239,
5776 56, 156, 395, 396, 397, 1011, 637, 1268, 26, 256,
5777 156, 1272, 1273, 644, 645, 156, 156, 52, 411, 54,
5778 55, 1162, 57, 52, 53, 156, 273, 1288, 158, 1138,
5779 158, 156, 1141, 1238, 256, 1240, 323, 1242, 67, 488,
5780 1106, 1283, 435, 52, 1249, 54, 55, 56, 57, 492,
5781 1292, 69, 1161, 52, 844, 54, 55, 56, 57, 98,
5782 100, 89, 1203, 481, 93, 94, 459, 102, 97, 1311,
5783 671, 1332, 1213, 102, 932, 882, 323, 1175, 733, 97,
5784 98, 1195, 52, 1288, 54, 55, 56, 57, 78, 1230,
5785 1231, 1232, 52, 1298, 54, 55, 56, 57, 1127, 492,
5786 1260, 799, 800, 102, 351, 95, 96, 1049, 1317, 807,
5787 808, 1316, 78, 347, 672, 673, 509, 847, 511, 1316,
5788 1196, 1156, 1154, 1199, 1233, 1234, 1235, 1152, 109, 95,
5789 96, 689, 690, 764, 152, 1156, 154, 768, 1240, 532,
5790 158, 1242, 102, 390, 527, 538, 101, 705, 108, 396,
5791 397, 750, 142, 143, 144, 145, 146, 147, 743, 857,
5792 858, 1253, 860, 861, 40, 41, 42, 43, 44, 59,
5793 60, 61, 62, 1311, 1283, -1, -1, 143, 144, 145,
5794 146, 147, 901, 902, 577, 578, -1, 580, 581, -1,
5795 -1, 910, 221, 912, 825, 914, 589, 828, 591, -1,
5796 -1, 594, -1, -1, -1, -1, -1, -1, -1, -1,
5797 -1, 842, -1, -1, -1, 913, 245, -1, 247, -1,
5798 -1, 250, 251, -1, -1, 1301, 1302, 256, 926, 1305,
5799 1306, -1, -1, 1309, -1, -1, -1, -1, -1, -1,
5800 1237, -1, 1239, -1, 273, 492, -1, 640, -1, 642,
5801 -1, -1, -1, -1, -1, -1, -1, 650, -1, -1,
5802 -1, -1, 1338, 1339, 1340, 1341, 964, 660, -1, 662,
5803 663, 1347, -1, -1, -1, 78, -1, -1, -1, 672,
5804 673, -1, -1, -1, -1, 532, -1, -1, -1, -1,
5805 -1, 538, 95, 96, 323, -1, 325, 326, 327, 328,
5806 -1, 330, 331, -1, -1, -1, 699, 938, -1, -1,
5807 941, 1308, -1, -1, -1, -1, -1, 948, 711, -1,
5808 951, -1, 351, 954, 1003, 1004, -1, -1, -1, -1,
5809 -1, 578, -1, -1, 581, -1, 1, 140, 141, 142,
5810 143, 144, 145, 146, 147, -1, -1, 594, -1, -1,
5811 15, 16, -1, -1, -1, -1, -1, -1, -1, 388,
5812 -1, 390, -1, 921, 922, -1, 395, 396, 397, 927,
5813 928, -1, -1, -1, -1, -1, -1, -1, -1, 1058,
5814 1059, -1, 411, 1062, -1, -1, -1, 52, 53, -1,
5815 -1, -1, 785, 640, -1, 642, -1, -1, -1, -1,
5816 1079, 1032, 67, -1, 962, 963, 435, 965, 966, -1,
5817 -1, -1, -1, -1, -1, 662, -1, -1, -1, -1,
5818 -1, -1, -1, -1, -1, 672, 673, -1, 93, 94,
5819 459, -1, 97, -1, -1, 1114, -1, 102, -1, -1,
5820 -1, 834, -1, 836, 837, -1, -1, 1145, -1, -1,
5821 -1, -1, -1, 1011, -1, -1, -1, 1136, -1, -1,
5822 1139, -1, -1, 492, 52, -1, 54, 55, 56, 57,
5823 58, -1, -1, -1, 1153, 1154, 1155, 1035, -1, 1158,
5824 1159, -1, 511, -1, 1163, 1164, -1, -1, -1, 52,
5825 78, 54, 55, 56, 57, 58, -1, -1, -1, -1,
5826 -1, -1, -1, 532, 92, -1, -1, 900, -1, 538,
5827 -1, -1, -1, -1, 102, 78, -1, -1, -1, -1,
5828 108, 109, 110, 916, -1, -1, -1, -1, 921, 922,
5829 -1, -1, -1, -1, 927, 928, -1, -1, -1, 102,
5830 -1, -1, -1, 936, 937, -1, 109, 110, 577, 578,
5831 -1, 580, 581, -1, 142, -1, 221, 145, -1, 952,
5832 589, -1, -1, -1, -1, 594, -1, -1, -1, 52,
5833 158, 54, 55, 56, 57, 58, -1, -1, 971, 142,
5834 245, -1, 247, -1, -1, 250, 251, 834, -1, 1268,
5835 837, 256, -1, 1272, 1273, 78, -1, -1, -1, -1,
5836 -1, 994, 995, 996, -1, -1, -1, -1, 273, 92,
5837 -1, 640, -1, 642, -1, -1, -1, -1, 1011, 102,
5838 -1, 650, -1, -1, -1, -1, 109, 110, -1, -1,
5839 -1, 660, -1, 662, 663, 1028, -1, -1, -1, -1,
5840 -1, -1, -1, 672, 673, -1, 52, -1, 54, 55,
5841 56, 57, 58, 1332, -1, -1, -1, -1, 323, 142,
5842 325, 326, 327, 328, 1295, 330, 331, -1, -1, -1,
5843 699, -1, 78, -1, 921, 922, -1, -1, -1, -1,
5844 927, 928, -1, -1, -1, -1, 351, -1, -1, 936,
5845 -1, -1, -1, -1, -1, -1, 102, -1, -1, 1,
5846 -1, -1, 108, 109, 110, 952, -1, -1, -1, 1102,
5847 -1, -1, -1, 1106, -1, -1, 1109, 1110, -1, -1,
5848 -1, -1, -1, 388, 971, 390, -1, -1, -1, -1,
5849 395, 396, 397, -1, -1, 1128, 142, -1, 1131, 145,
5850 -1, -1, -1, -1, -1, -1, 411, 994, 995, 996,
5851 52, 53, -1, -1, 56, -1, -1, 1150, -1, -1,
5852 -1, -1, -1, -1, 1011, -1, -1, -1, -1, -1,
5853 435, -1, -1, -1, -1, -1, -1, -1, -1, 1172,
5854 -1, 1028, -1, 85, -1, 52, -1, 54, 55, 56,
5855 57, 58, 1185, -1, 459, -1, 98, 99, 100, -1,
5856 -1, -1, -1, -1, 1197, 834, -1, 836, 837, -1,
5857 -1, 78, -1, -1, -1, -1, -1, -1, -1, -1,
5858 -1, -1, -1, -1, -1, -1, -1, 492, -1, -1,
5859 -1, -1, -1, -1, -1, 102, -1, -1, -1, -1,
5860 -1, 108, 109, 110, -1, 1238, 511, -1, -1, -1,
5861 -1, -1, 1245, 1246, 1, 1102, 1249, -1, -1, 1106,
5862 -1, -1, 1109, 1110, -1, -1, 1259, 532, 15, 16,
5863 -1, 900, -1, 538, -1, 142, 1003, 1004, 145, -1,
5864 -1, 1128, -1, -1, 1131, -1, -1, 916, 155, -1,
5865 -1, -1, 921, 922, -1, 1288, -1, -1, 927, 928,
5866 -1, -1, -1, -1, -1, 52, 53, 936, 937, -1,
5867 -1, -1, 577, 578, -1, 580, 581, -1, -1, 221,
5868 67, -1, -1, 952, 589, 1172, -1, -1, -1, 594,
5869 -1, 1058, 1059, -1, -1, 1062, -1, -1, 1185, -1,
5870 -1, -1, 971, -1, -1, -1, 93, 94, -1, -1,
5871 97, -1, 1079, -1, 256, 102, -1, -1, -1, -1,
5872 -1, -1, -1, -1, -1, 994, 995, 996, -1, -1,
5873 -1, 273, -1, -1, -1, 640, -1, 642, -1, -1,
5874 -1, -1, 1011, -1, -1, 650, -1, 1114, -1, -1,
5875 -1, 293, -1, -1, -1, 660, -1, 662, 663, 1028,
5876 -1, -1, 1249, -1, -1, -1, -1, 672, 673, 1136,
5877 -1, -1, 1139, -1, -1, -1, -1, -1, -1, -1,
5878 -1, 323, -1, -1, -1, -1, 1153, 1154, 1155, -1,
5879 -1, 1158, 1159, -1, 699, -1, 1163, 1164, -1, -1,
5880 -1, 1288, -1, -1, -1, -1, -1, -1, -1, 351,
5881 352, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5882 -1, -1, -1, 1003, 1004, -1, -1, 52, -1, 54,
5883 55, 56, 57, 58, 221, -1, -1, 1106, -1, -1,
5884 1109, 1110, -1, -1, -1, -1, -1, -1, 390, -1,
5885 -1, -1, -1, 78, 396, 397, -1, -1, 245, 1128,
5886 247, -1, 1131, 250, 251, -1, -1, 92, -1, 256,
5887 -1, -1, -1, -1, -1, -1, -1, 102, 1058, 1059,
5888 -1, 1150, 1062, 108, 109, 110, 273, -1, -1, -1,
5889 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1079,
5890 -1, 1268, -1, 1172, -1, 1272, 1273, -1, -1, -1,
5891 -1, -1, -1, -1, -1, -1, 1185, 142, -1, -1,
5892 145, -1, -1, -1, -1, -1, -1, -1, -1, 834,
5893 -1, 836, 837, -1, 1114, -1, 323, -1, 325, 326,
5894 327, 328, -1, 330, 331, -1, -1, -1, -1, -1,
5895 492, -1, -1, -1, -1, -1, 1136, -1, -1, 1139,
5896 -1, -1, -1, -1, 351, 1332, -1, 509, -1, 1238,
5897 -1, -1, -1, 1153, 1154, 1155, 1245, 1246, 1158, 1159,
5898 1249, -1, -1, 1163, 1164, -1, 1, -1, -1, -1,
5899 532, -1, -1, -1, -1, 900, 538, -1, -1, -1,
5900 -1, 388, -1, 390, -1, -1, -1, -1, 395, 396,
5901 397, 916, -1, -1, -1, -1, 921, 922, -1, 1288,
5902 -1, -1, 927, 928, 411, -1, -1, -1, -1, -1,
5903 -1, 936, 937, -1, -1, -1, 578, 52, 53, 581,
5904 -1, 56, -1, -1, -1, -1, -1, 952, 435, 591,
5905 -1, -1, 594, -1, -1, -1, -1, -1, -1, -1,
5906 -1, -1, -1, -1, -1, -1, 971, -1, -1, -1,
5907 85, -1, 459, -1, -1, -1, -1, -1, -1, -1,
5908 -1, -1, -1, 98, 99, 100, -1, -1, 1268, 994,
5909 995, 996, 1272, 1273, -1, -1, -1, -1, 640, -1,
5910 642, -1, -1, -1, -1, 492, 1011, -1, -1, -1,
5911 -1, -1, -1, -1, -1, 1, -1, -1, -1, -1,
5912 662, -1, -1, 1028, 511, -1, -1, -1, -1, -1,
5913 672, 673, -1, -1, -1, -1, -1, -1, -1, -1,
5914 -1, -1, -1, -1, -1, 532, -1, -1, -1, -1,
5915 -1, 538, 1332, -1, -1, -1, -1, -1, -1, -1,
5916 -1, -1, -1, 1003, 1004, -1, 52, 53, -1, 711,
5917 56, -1, -1, -1, -1, -1, -1, -1, 720, -1,
5918 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5919 577, 578, -1, 580, 581, -1, -1, -1, -1, 85,
5920 -1, 1106, 589, -1, 1109, 1110, 221, 594, -1, -1,
5921 -1, -1, 98, 99, 100, -1, -1, -1, 1058, 1059,
5922 -1, -1, 1062, 1128, -1, -1, 1131, -1, -1, -1,
5923 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1079,
5924 -1, 256, -1, 785, -1, 1150, -1, -1, -1, -1,
5925 -1, -1, -1, 640, -1, 642, -1, -1, 273, -1,
5926 -1, -1, -1, 650, -1, -1, -1, 1172, -1, -1,
5927 -1, -1, -1, 660, 1114, 662, 663, -1, 293, -1,
5928 1185, -1, -1, -1, -1, 672, 673, -1, -1, -1,
5929 -1, -1, 834, -1, -1, 837, 1136, -1, 25, 1139,
5930 -1, -1, -1, -1, -1, -1, -1, -1, 323, -1,
5931 -1, -1, 699, 1153, 1154, 1155, -1, -1, 1158, 1159,
5932 -1, -1, -1, 1163, 1164, -1, -1, -1, -1, -1,
5933 -1, -1, -1, 1238, -1, 221, 351, 352, -1, -1,
5934 1245, 1246, -1, -1, 1249, 1003, 1004, -1, -1, -1,
5935 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
5936 87, 88, 89, 90, -1, -1, -1, -1, 95, 96,
5937 256, -1, -1, -1, 101, 390, -1, -1, -1, 921,
5938 922, 396, 397, 1288, -1, 927, 928, 273, -1, -1,
5939 -1, -1, -1, -1, 936, -1, -1, -1, -1, -1,
5940 1058, 1059, -1, -1, 1062, 55, -1, 293, -1, 136,
5941 952, 138, 139, 140, 141, 142, 143, 144, 145, 146,
5942 147, 1079, -1, -1, -1, -1, -1, -1, 1268, 971,
5943 -1, -1, 1272, 1273, -1, -1, -1, 323, -1, -1,
5944 -1, -1, -1, -1, -1, -1, -1, 834, -1, 836,
5945 837, -1, 994, 995, 996, -1, 1114, -1, -1, -1,
5946 -1, -1, -1, -1, -1, 351, 352, -1, -1, 1011,
5947 -1, -1, -1, -1, -1, -1, -1, 492, 1136, -1,
5948 -1, 1139, -1, -1, -1, -1, 1028, -1, -1, -1,
5949 -1, -1, 1332, -1, 509, 1153, 1154, 1155, -1, -1,
5950 1158, 1159, -1, -1, 390, 1163, 1164, -1, -1, -1,
5951 396, 397, -1, 900, -1, -1, -1, 532, -1, -1,
5952 -1, -1, -1, 538, -1, -1, 1003, 1004, -1, 916,
5953 -1, -1, -1, -1, 921, 922, -1, -1, -1, -1,
5954 927, 928, -1, -1, -1, -1, -1, -1, -1, 936,
5955 937, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5956 1102, -1, -1, 578, 1106, 952, 581, 1109, 1110, 219,
5957 -1, -1, 222, 223, 224, -1, 591, -1, -1, 594,
5958 -1, 1058, 1059, -1, 971, 1062, 1128, -1, -1, 1131,
5959 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5960 -1, -1, 1079, -1, -1, -1, 492, 994, 995, 996,
5961 1268, -1, -1, 1, 1272, 1273, -1, -1, -1, -1,
5962 -1, -1, -1, 509, 1011, 640, -1, 642, -1, -1,
5963 1172, -1, -1, -1, -1, -1, -1, 1114, -1, -1,
5964 -1, 1028, -1, 1185, -1, -1, 532, 662, -1, -1,
5965 -1, -1, 538, -1, -1, 1197, -1, 672, 673, 1136,
5966 -1, -1, 1139, -1, 52, 53, -1, -1, 56, 1,
5967 -1, -1, -1, -1, 1332, -1, 1153, 1154, 1155, -1,
5968 -1, 1158, 1159, -1, -1, -1, 1163, 1164, -1, -1,
5969 -1, -1, 578, -1, -1, 581, 711, 85, -1, -1,
5970 -1, -1, -1, -1, -1, 591, -1, 1249, 594, -1,
5971 98, 99, 100, 101, -1, -1, -1, 1259, -1, 1106,
5972 52, 53, 1109, 1110, -1, -1, -1, -1, -1, -1,
5973 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5974 -1, 1128, -1, -1, 1131, -1, 1288, -1, -1, -1,
5975 -1, -1, -1, -1, 640, -1, 642, -1, -1, 1003,
5976 1004, -1, -1, 1150, -1, -1, -1, -1, -1, -1,
5977 785, -1, -1, -1, -1, -1, 662, -1, -1, -1,
5978 -1, -1, -1, -1, -1, 1172, 672, 673, -1, -1,
5979 -1, 1268, -1, -1, -1, 1272, 1273, -1, 1185, -1,
5980 -1, -1, -1, -1, 454, 455, -1, -1, -1, -1,
5981 -1, -1, -1, 463, 1058, 1059, -1, -1, 1062, 834,
5982 -1, -1, 837, -1, -1, 711, -1, -1, -1, -1,
5983 -1, -1, -1, 221, -1, 1079, -1, -1, -1, -1,
5984 -1, -1, -1, -1, -1, -1, 496, -1, -1, 499,
5985 -1, 1238, -1, -1, -1, 1332, -1, -1, 1245, 1246,
5986 -1, -1, 1249, -1, -1, -1, -1, -1, 256, -1,
5987 1114, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5988 -1, -1, -1, -1, -1, 273, -1, -1, -1, 221,
5989 -1, -1, 1136, -1, -1, 1139, -1, -1, -1, 785,
5990 -1, 1288, -1, -1, -1, 293, 921, 922, -1, 1153,
5991 1154, 1155, 927, 928, 1158, 1159, -1, -1, 568, 1163,
5992 1164, 936, -1, -1, 256, -1, -1, -1, -1, -1,
5993 -1, -1, -1, -1, -1, 323, -1, 952, -1, 589,
5994 -1, 273, -1, -1, 594, -1, -1, -1, 834, -1,
5995 -1, 837, -1, -1, -1, -1, 971, -1, -1, -1,
5996 -1, -1, -1, 351, 352, -1, -1, -1, -1, -1,
5997 -1, -1, -1, -1, -1, -1, -1, -1, -1, 994,
5998 995, 996, -1, -1, -1, -1, -1, -1, -1, -1,
5999 -1, 323, -1, -1, -1, -1, 1011, -1, -1, -1,
6000 -1, -1, 390, -1, -1, -1, -1, -1, 396, 397,
6001 -1, -1, -1, 1028, -1, -1, -1, -1, -1, 351,
6002 -1, -1, -1, -1, 1268, 675, -1, -1, 1272, 1273,
6003 -1, -1, -1, -1, -1, 921, 922, -1, -1, -1,
6004 -1, 927, 928, 693, -1, 695, -1, -1, -1, -1,
6005 936, 33, 34, 35, 36, -1, -1, -1, 390, -1,
6006 -1, -1, -1, -1, 396, 397, 952, 49, 50, 51,
6007 -1, -1, -1, -1, -1, -1, -1, 59, 60, 61,
6008 62, 63, -1, -1, -1, 971, -1, 1102, 1332, -1,
6009 -1, 1106, -1, -1, 1109, 1110, -1, -1, -1, 749,
6010 -1, -1, -1, -1, 492, -1, -1, -1, 994, 995,
6011 996, -1, -1, 1128, -1, -1, 1131, -1, -1, -1,
6012 -1, 509, -1, -1, -1, 1011, -1, 777, -1, 111,
6013 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
6014 -1, -1, 1028, -1, 532, -1, 1003, 1004, -1, -1,
6015 538, -1, -1, -1, -1, -1, 806, 1172, -1, -1,
6016 492, -1, -1, -1, -1, -1, 148, -1, -1, -1,
6017 1185, -1, -1, -1, 824, -1, -1, -1, -1, -1,
6018 -1, -1, 1197, -1, -1, -1, -1, -1, -1, -1,
6019 578, -1, -1, 581, -1, -1, -1, -1, -1, -1,
6020 532, 1058, 1059, 591, -1, 1062, 538, -1, -1, -1,
6021 -1, -1, -1, -1, -1, -1, 1102, -1, -1, -1,
6022 1106, -1, 1079, 1109, 1110, -1, -1, -1, 1003, 1004,
6023 -1, -1, -1, -1, 1249, -1, -1, -1, -1, -1,
6024 -1, -1, 1128, -1, 1259, 1131, 578, -1, -1, 581,
6025 -1, -1, 640, -1, 642, -1, -1, 1114, -1, 909,
6026 -1, -1, 594, -1, -1, -1, -1, -1, -1, -1,
6027 -1, -1, -1, 1288, 662, -1, -1, -1, -1, 1136,
6028 -1, 931, 1139, 1058, 1059, -1, 1172, 1062, -1, -1,
6029 -1, -1, -1, 943, -1, -1, 1153, 1154, 1155, 1185,
6030 -1, 1158, 1159, -1, 1079, -1, 1163, 1164, 640, -1,
6031 642, 1197, -1, -1, -1, -1, -1, -1, 968, -1,
6032 -1, -1, -1, 711, -1, -1, -1, -1, -1, -1,
6033 662, -1, -1, -1, -1, -1, -1, -1, -1, 1114,
6034 672, 673, 992, -1, -1, -1, -1, -1, -1, -1,
6035 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6036 -1, 1136, -1, 1249, 1139, -1, -1, -1, -1, -1,
6037 -1, -1, -1, 1259, -1, -1, -1, 1027, 1153, 1154,
6038 1155, -1, -1, 1158, 1159, -1, -1, -1, 1163, 1164,
6039 -1, -1, -1, -1, -1, -1, -1, 785, -1, -1,
6040 -1, -1, 1288, -1, -1, -1, -1, -1, -1, -1,
6041 -1, 1268, -1, -1, -1, 1272, 1273, -1, -1, -1,
6042 -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
6043 -1, -1, -1, -1, 8, 9, 10, -1, -1, 13,
6044 14, 15, -1, 17, -1, -1, 834, -1, -1, 837,
6045 -1, 25, 26, 27, -1, -1, -1, -1, -1, -1,
6046 -1, 1111, -1, 37, 38, -1, 40, 41, 42, 43,
6047 44, -1, -1, -1, -1, 1332, -1, -1, -1, -1,
6048 -1, 15, 16, -1, -1, -1, -1, -1, -1, -1,
6049 -1, -1, -1, 1268, 68, 69, -1, 1272, 1273, -1,
6050 -1, -1, 834, -1, -1, 837, -1, -1, -1, -1,
6051 -1, -1, -1, 47, 48, 49, 50, -1, -1, -1,
6052 54, 55, -1, 97, 98, -1, -1, -1, -1, -1,
6053 -1, -1, -1, 67, 68, -1, -1, -1, -1, -1,
6054 -1, -1, -1, 33, 34, 35, 36, 121, 936, -1,
6055 -1, -1, -1, -1, -1, -1, -1, 1332, -1, 49,
6056 50, 51, 52, -1, 952, -1, 56, -1, 102, 59,
6057 60, 61, 62, 63, -1, -1, -1, -1, 152, 153,
6058 -1, 155, -1, 971, 158, 159, -1, 161, -1, 921,
6059 922, -1, -1, -1, -1, 927, 928, -1, -1, -1,
6060 -1, 91, 92, -1, 936, -1, 994, 995, -1, 99,
6061 -1, -1, 102, -1, -1, 105, 106, -1, 108, -1,
6062 952, 111, 112, 113, 114, 115, 116, 117, 118, 119,
6063 -1, -1, 44, -1, -1, -1, -1, -1, -1, 971,
6064 1028, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6065 -1, 141, -1, -1, -1, -1, -1, -1, 148, -1,
6066 -1, -1, 994, 995, 996, 155, 78, 79, 80, 81,
6067 82, 83, 84, 85, 86, 87, 88, 89, 90, 1011,
6068 -1, -1, -1, 95, 96, 219, -1, -1, 222, 223,
6069 224, -1, 226, -1, -1, -1, 1028, -1, -1, -1,
6070 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6071 -1, 245, -1, 247, 1102, -1, 44, -1, 1106, -1,
6072 -1, 1109, 1110, -1, 136, -1, 138, 139, 140, 141,
6073 142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
6074 1128, -1, -1, 1131, 156, -1, -1, -1, -1, -1,
6075 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6076 88, 89, 90, -1, -1, -1, -1, 95, 96, -1,
6077 -1, -1, -1, -1, 1106, -1, -1, 1109, 1110, -1,
6078 -1, -1, -1, -1, 1172, -1, -1, -1, -1, -1,
6079 -1, -1, -1, -1, -1, -1, 1128, 1185, -1, 1131,
6080 -1, -1, -1, -1, -1, -1, -1, -1, 136, 1197,
6081 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
6082 -1, -1, 356, 357, 358, 359, 360, -1, -1, 363,
6083 364, 365, 366, 367, 368, 369, 370, -1, 372, -1,
6084 1172, 375, 376, 377, 378, 379, 380, 381, 382, 383,
6085 384, -1, -1, 1185, 388, -1, -1, -1, -1, -1,
6086 -1, 1249, -1, -1, -1, -1, -1, -1, -1, -1,
6087 -1, 1259, -1, -1, -1, -1, -1, -1, -1, -1,
6088 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6089 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6090 1288, 435, -1, -1, -1, -1, -1, -1, -1, -1,
6091 -1, -1, -1, -1, -1, -1, -1, 1249, -1, -1,
6092 454, 455, -1, -1, -1, 459, -1, -1, -1, 463,
6093 0, 465, -1, -1, -1, -1, -1, -1, 8, 9,
6094 10, -1, -1, 13, 14, 15, -1, 17, -1, 483,
6095 -1, -1, -1, -1, -1, 25, 1288, 27, 28, 29,
6096 -1, -1, 496, -1, -1, 499, -1, 37, 38, -1,
6097 40, 41, 42, 43, 44, -1, -1, 511, -1, -1,
6098 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6099 -1, -1, -1, -1, -1, 529, -1, -1, 68, 69,
6100 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
6101 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6102 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
6103 100, 101, -1, -1, 568, -1, -1, 107, -1, -1,
6104 -1, -1, -1, 577, -1, -1, 580, -1, -1, -1,
6105 -1, 121, -1, -1, 124, 589, -1, -1, -1, -1,
6106 594, -1, -1, -1, -1, 135, 136, 137, 138, 139,
6107 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
6108 -1, -1, -1, 153, 154, 155, 156, -1, -1, 159,
6109 160, 161, -1, 52, 53, -1, -1, 56, -1, -1,
6110 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6111 -1, -1, -1, -1, -1, -1, 650, 76, 77, 78,
6112 79, 80, 81, 82, 83, 84, 660, -1, 87, 88,
6113 -1, -1, -1, -1, 93, 94, 95, 96, 672, 673,
6114 -1, 675, 676, 677, 678, -1, -1, -1, -1, 108,
6115 109, -1, -1, -1, -1, 689, 690, -1, -1, 693,
6116 -1, 695, -1, -1, -1, -1, -1, -1, -1, -1,
6117 -1, 705, -1, -1, -1, -1, -1, -1, -1, 138,
6118 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
6119 149, 150, -1, -1, -1, -1, -1, -1, 157, 158,
6120 -1, -1, 0, 1, -1, 3, 4, 5, 6, 7,
6121 8, 9, 10, 11, 12, 749, 14, 15, 16, 17,
6122 18, 19, 20, 21, 22, 23, 24, 25, -1, -1,
6123 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6124 -1, 39, -1, 777, -1, -1, -1, 45, 46, 47,
6125 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6126 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6127 68, -1, 806, -1, -1, -1, -1, -1, 76, 77,
6128 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6129 824, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6130 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
6131 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
6132 118, 119, -1, 121, -1, -1, -1, -1, -1, -1,
6133 -1, -1, -1, -1, -1, -1, -1, -1, -1, 78,
6134 79, 80, 81, 82, 83, 84, 85, -1, 87, 88,
6135 148, 149, 150, -1, -1, 153, 95, 96, -1, -1,
6136 -1, 159, -1, 161, -1, -1, 900, -1, -1, -1,
6137 -1, -1, -1, -1, -1, 909, -1, -1, -1, -1,
6138 -1, -1, 916, -1, -1, -1, 920, 921, 922, -1,
6139 -1, -1, -1, 927, 928, -1, -1, 931, -1, 138,
6140 139, 140, 141, 142, 143, 144, 145, 146, 147, 943,
6141 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6142 -1, -1, -1, -1, -1, -1, -1, 961, 962, 963,
6143 -1, 965, 966, -1, 968, -1, -1, -1, -1, -1,
6144 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6145 -1, -1, -1, -1, 988, 989, -1, -1, 992, -1,
6146 -1, -1, 996, 997, -1, -1, -1, -1, -1, -1,
6147 -1, -1, -1, -1, -1, -1, -1, 1011, -1, -1,
6148 -1, -1, -1, -1, 0, 1, -1, 3, 4, 5,
6149 6, 7, -1, 1027, -1, 11, 12, -1, -1, -1,
6150 16, 1035, 18, 19, 20, 21, 22, 23, 24, -1,
6151 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6152 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6153 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6154 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6155 -1, -1, -1, 78, 79, 80, 81, 82, 83, 84,
6156 76, 77, 87, 88, -1, -1, -1, -1, -1, -1,
6157 95, 96, -1, -1, -1, 91, 92, 1111, -1, -1,
6158 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
6159 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
6160 116, 117, 118, 119, -1, 121, -1, -1, -1, -1,
6161 -1, -1, -1, 138, 139, 140, 141, 142, 143, 144,
6162 145, 146, 147, -1, -1, -1, -1, -1, -1, -1,
6163 -1, -1, 148, 149, 150, -1, -1, 0, 1, 155,
6164 3, 4, 5, 6, 7, 161, -1, -1, 11, 12,
6165 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
6166 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
6167 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6168 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
6169 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
6170 63, 64, 65, -1, 1238, -1, 78, 79, 80, 81,
6171 82, 83, 84, 76, 77, 87, 88, -1, -1, -1,
6172 -1, -1, -1, 95, 96, -1, -1, -1, 91, 92,
6173 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6174 103, -1, 105, 106, -1, 108, -1, -1, 111, 112,
6175 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
6176 -1, -1, -1, -1, -1, -1, 138, 139, 140, 141,
6177 142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
6178 -1, -1, -1, -1, -1, 148, 149, 150, -1, -1,
6179 0, 1, 155, 3, 4, 5, 6, 7, 161, -1,
6180 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
6181 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
6182 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6183 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
6184 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6185 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
6186 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
6187 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6188 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6189 -1, -1, 102, 103, -1, 105, 106, -1, 108, -1,
6190 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
6191 -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
6192 -1, -1, -1, -1, -1, -1, -1, 8, 9, 10,
6193 -1, -1, 13, 14, 15, -1, 17, -1, 148, 149,
6194 150, -1, -1, 153, 25, 26, 27, 28, 29, -1,
6195 -1, 161, -1, -1, -1, -1, 37, 38, -1, 40,
6196 41, 42, 43, 44, -1, -1, -1, 78, 79, 80,
6197 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
6198 -1, -1, -1, -1, 95, 96, -1, 68, 69, -1,
6199 -1, -1, -1, -1, -1, -1, -1, 78, 79, 80,
6200 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
6201 -1, -1, -1, -1, 95, 96, 97, 98, -1, 100,
6202 101, -1, -1, -1, -1, 136, 107, 138, 139, 140,
6203 141, 142, 143, 144, 145, 146, 147, -1, -1, -1,
6204 121, -1, -1, 124, 155, -1, -1, -1, -1, -1,
6205 -1, -1, -1, -1, 135, 136, 137, 138, 139, 140,
6206 141, 142, 143, 144, 145, 146, 147, -1, -1, -1,
6207 -1, 152, 153, 154, 155, 156, 0, -1, 159, 160,
6208 161, -1, -1, -1, 8, 9, 10, -1, -1, 13,
6209 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
6210 -1, 25, -1, 27, 28, 29, -1, -1, -1, -1,
6211 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6212 44, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6213 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6214 -1, 95, 96, -1, 68, 69, -1, -1, -1, -1,
6215 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6216 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6217 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
6218 -1, -1, 136, 107, 138, 139, 140, 141, 142, 143,
6219 144, 145, 146, 147, -1, -1, -1, 121, -1, -1,
6220 124, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6221 -1, 135, 136, 137, 138, 139, 140, 141, 142, 143,
6222 144, 145, 146, 147, -1, -1, -1, -1, -1, 153,
6223 154, 155, 156, 0, -1, 159, 160, 161, -1, -1,
6224 -1, 8, 9, 10, -1, -1, 13, 14, 15, -1,
6225 17, -1, -1, -1, -1, -1, -1, -1, 25, 26,
6226 27, 28, 29, -1, -1, -1, -1, -1, -1, -1,
6227 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
6228 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6229 87, 88, 89, 90, -1, -1, -1, -1, 95, 96,
6230 -1, 68, 69, -1, -1, -1, -1, -1, -1, -1,
6231 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6232 87, 88, 89, 90, -1, -1, -1, -1, 95, 96,
6233 97, 98, -1, -1, 101, -1, -1, -1, -1, -1,
6234 107, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6235 147, -1, -1, -1, 121, -1, -1, 124, -1, -1,
6236 -1, -1, -1, -1, -1, -1, -1, -1, -1, 136,
6237 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6238 147, -1, -1, -1, -1, 152, 153, 154, 155, 156,
6239 0, -1, 159, 160, 161, -1, -1, -1, 8, 9,
6240 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
6241 -1, -1, -1, -1, -1, 25, 26, 27, 28, 29,
6242 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
6243 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
6244 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6245 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
6246 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
6247 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
6248 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
6249 -1, 101, -1, -1, -1, -1, -1, 107, -1, -1,
6250 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6251 -1, 121, -1, -1, 124, -1, -1, -1, -1, -1,
6252 -1, -1, -1, -1, -1, -1, 136, 137, 138, 139,
6253 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
6254 -1, -1, 152, 153, 154, 155, 156, 0, -1, 159,
6255 160, 161, -1, -1, -1, 8, 9, 10, -1, -1,
6256 13, 14, 15, -1, 17, -1, -1, -1, -1, -1,
6257 -1, -1, 25, 26, 27, 28, -1, -1, -1, -1,
6258 -1, -1, -1, -1, 37, 38, -1, 40, 41, 42,
6259 43, 44, -1, -1, -1, -1, -1, -1, -1, -1,
6260 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6261 -1, -1, -1, -1, -1, 68, 69, -1, -1, -1,
6262 -1, -1, -1, -1, -1, 78, 79, 80, 81, 82,
6263 83, 84, 85, 86, 87, 88, 89, 90, -1, -1,
6264 -1, -1, 95, 96, 97, 98, -1, -1, 101, -1,
6265 -1, -1, -1, -1, 107, -1, -1, -1, -1, -1,
6266 -1, -1, -1, -1, -1, -1, -1, -1, 121, -1,
6267 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6268 -1, -1, -1, 136, -1, 138, 139, 140, 141, 142,
6269 143, 144, 145, 146, 147, -1, -1, -1, -1, 152,
6270 153, 154, 155, 156, 0, 158, 159, 160, 161, -1,
6271 -1, -1, 8, 9, 10, -1, -1, 13, 14, 15,
6272 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
6273 -1, 27, 28, 29, -1, -1, -1, -1, -1, -1,
6274 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
6275 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6276 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6277 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
6278 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
6279 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
6280 96, 97, 98, -1, -1, 101, -1, -1, -1, -1,
6281 -1, 107, -1, -1, -1, -1, -1, -1, -1, -1,
6282 -1, -1, -1, -1, -1, 121, -1, -1, 124, -1,
6283 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6284 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
6285 146, 147, -1, -1, -1, -1, -1, 153, 154, 155,
6286 156, 0, -1, 159, 160, 161, -1, -1, -1, 8,
6287 9, 10, -1, -1, 13, 14, 15, -1, 17, -1,
6288 -1, -1, -1, -1, -1, -1, 25, 26, 27, 28,
6289 -1, -1, -1, -1, -1, -1, -1, -1, 37, 38,
6290 -1, 40, 41, 42, 43, 44, -1, -1, -1, -1,
6291 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6292 -1, -1, -1, -1, -1, -1, -1, -1, -1, 68,
6293 69, -1, -1, -1, -1, -1, -1, -1, -1, 78,
6294 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
6295 89, 90, -1, -1, -1, -1, 95, 96, 97, 98,
6296 -1, -1, 101, -1, -1, -1, -1, -1, 107, -1,
6297 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6298 -1, -1, 121, -1, -1, -1, -1, -1, -1, -1,
6299 -1, -1, -1, -1, -1, -1, -1, 136, -1, 138,
6300 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
6301 -1, -1, -1, 152, 153, 154, 155, 156, 0, 158,
6302 159, 160, 161, -1, -1, -1, 8, 9, 10, -1,
6303 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
6304 -1, -1, -1, 25, -1, 27, 28, -1, -1, -1,
6305 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
6306 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
6307 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6308 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
6309 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
6310 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
6311 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
6312 -1, -1, -1, -1, -1, 107, -1, -1, -1, -1,
6313 -1, -1, -1, -1, -1, -1, -1, -1, -1, 121,
6314 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6315 -1, -1, -1, 135, 136, -1, 138, 139, 140, 141,
6316 142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
6317 152, 153, 154, 155, 156, 0, -1, 159, 160, 161,
6318 -1, -1, -1, 8, 9, 10, -1, -1, 13, 14,
6319 15, -1, 17, -1, -1, -1, -1, -1, -1, -1,
6320 25, -1, 27, 28, -1, -1, -1, -1, -1, -1,
6321 -1, -1, 37, 38, -1, 40, 41, 42, 43, 44,
6322 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6323 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6324 -1, -1, -1, 68, 69, -1, -1, -1, -1, -1,
6325 -1, -1, -1, 78, 79, 80, 81, 82, 83, 84,
6326 85, 86, 87, 88, 89, 90, -1, -1, -1, -1,
6327 95, 96, 97, 98, -1, -1, 101, -1, -1, -1,
6328 -1, -1, 107, -1, -1, -1, -1, -1, -1, -1,
6329 -1, -1, -1, -1, -1, -1, 121, -1, -1, -1,
6330 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6331 -1, 136, -1, 138, 139, 140, 141, 142, 143, 144,
6332 145, 146, 147, -1, -1, -1, -1, -1, 153, 154,
6333 155, 156, 0, 158, 159, 160, 161, -1, -1, -1,
6334 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
6335 -1, -1, -1, -1, -1, -1, -1, 25, 26, -1,
6336 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
6337 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
6338 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6339 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6340 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
6341 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
6342 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
6343 98, -1, 100, 101, -1, -1, -1, -1, -1, -1,
6344 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6345 -1, -1, -1, 121, -1, -1, -1, -1, -1, -1,
6346 -1, -1, -1, -1, -1, -1, -1, 135, 136, -1,
6347 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
6348 -1, -1, -1, -1, 152, 153, 154, 155, 156, 0,
6349 -1, 159, -1, 161, -1, -1, -1, 8, 9, 10,
6350 -1, -1, -1, 14, 15, -1, 17, -1, -1, -1,
6351 -1, -1, -1, -1, 25, 26, -1, -1, -1, -1,
6352 -1, -1, -1, -1, -1, -1, 37, 38, -1, 40,
6353 41, 42, 43, 44, -1, -1, -1, -1, -1, -1,
6354 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6355 -1, -1, -1, -1, -1, -1, -1, 68, 69, -1,
6356 -1, -1, -1, -1, -1, -1, -1, 78, 79, 80,
6357 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
6358 -1, -1, -1, -1, 95, 96, 97, 98, -1, 100,
6359 101, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6360 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6361 121, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6362 -1, -1, -1, -1, 135, 136, -1, 138, 139, 140,
6363 141, 142, 143, 144, 145, 146, 147, -1, -1, -1,
6364 -1, 152, 153, 154, 155, 156, 0, -1, 159, -1,
6365 161, -1, -1, -1, 8, 9, 10, -1, -1, -1,
6366 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
6367 -1, 25, -1, -1, -1, -1, -1, -1, -1, -1,
6368 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
6369 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6370 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6371 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
6372 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
6373 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
6374 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
6375 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6376 -1, -1, -1, -1, -1, -1, -1, 121, -1, -1,
6377 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6378 -1, 135, 136, -1, 138, 139, 140, 141, 142, 143,
6379 144, 145, 146, 147, -1, -1, -1, -1, 152, 153,
6380 154, 155, 156, 0, -1, 159, -1, 161, -1, -1,
6381 -1, 8, 9, 10, -1, -1, -1, 14, 15, -1,
6382 17, -1, -1, -1, -1, -1, -1, -1, 25, -1,
6383 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6384 37, 38, -1, 40, 41, 42, 43, 44, -1, -1,
6385 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6386 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6387 -1, 68, 69, -1, -1, -1, -1, -1, -1, -1,
6388 -1, 78, 79, 80, 81, 82, 83, 84, 85, 86,
6389 87, 88, 89, 90, -1, -1, -1, -1, 95, 96,
6390 97, 98, -1, 100, 101, -1, -1, -1, -1, -1,
6391 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6392 -1, -1, -1, -1, 121, -1, -1, -1, -1, -1,
6393 -1, -1, -1, -1, -1, -1, -1, -1, 135, 136,
6394 -1, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6395 147, -1, -1, -1, -1, 152, 153, 154, 155, 156,
6396 -1, -1, 159, 1, 161, 3, 4, 5, 6, 7,
6397 8, 9, 10, 11, 12, -1, -1, 15, 16, -1,
6398 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
6399 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6400 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6401 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6402 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6403 68, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6404 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6405 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6406 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
6407 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
6408 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
6409 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6410 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6411 148, 149, 150, -1, -1, -1, 1, 155, 3, 4,
6412 5, 6, 7, 161, -1, 10, 11, 12, -1, 14,
6413 15, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6414 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6415 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6416 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
6417 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6418 65, -1, -1, 68, -1, -1, -1, -1, -1, -1,
6419 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6420 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6421 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
6422 105, 106, -1, 108, -1, -1, 111, 112, 113, 114,
6423 115, 116, 117, 118, 119, -1, -1, -1, -1, -1,
6424 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6425 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6426 -1, -1, -1, 148, 149, 150, -1, -1, -1, 1,
6427 155, 3, 4, 5, 6, 7, 161, -1, 10, 11,
6428 12, -1, -1, 15, 16, 17, 18, 19, 20, 21,
6429 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
6430 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6431 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
6432 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6433 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
6434 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6435 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6436 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6437 102, 103, -1, 105, 106, -1, 108, -1, -1, 111,
6438 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
6439 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6440 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6441 -1, -1, -1, -1, -1, -1, 148, 149, 150, -1,
6442 -1, -1, 1, 155, 3, 4, 5, 6, 7, 161,
6443 -1, 10, 11, 12, -1, -1, 15, 16, -1, 18,
6444 19, 20, 21, 22, 23, 24, 25, -1, -1, -1,
6445 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6446 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6447 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6448 59, 60, 61, 62, 63, 64, 65, -1, -1, 68,
6449 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6450 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6451 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6452 99, -1, -1, 102, 103, -1, 105, 106, -1, 108,
6453 -1, -1, 111, 112, 113, 114, 115, 116, 117, 118,
6454 119, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6455 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6456 -1, -1, -1, -1, -1, -1, -1, -1, -1, 148,
6457 149, 150, -1, -1, -1, 1, 155, 3, 4, 5,
6458 6, 7, 161, -1, 10, 11, 12, -1, -1, 15,
6459 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6460 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6461 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6462 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6463 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6464 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
6465 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6466 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6467 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
6468 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
6469 116, 117, 118, 119, -1, -1, -1, -1, -1, -1,
6470 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6471 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6472 -1, -1, 148, 149, 150, -1, -1, -1, 1, 155,
6473 3, 4, 5, 6, 7, 161, 9, 10, 11, 12,
6474 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
6475 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
6476 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6477 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
6478 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
6479 63, 64, 65, -1, -1, 68, -1, -1, -1, -1,
6480 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
6481 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
6482 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6483 103, -1, 105, 106, -1, 108, -1, -1, 111, 112,
6484 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
6485 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6486 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6487 -1, -1, -1, -1, -1, 148, 149, 150, -1, -1,
6488 -1, 1, 155, 3, 4, 5, 6, 7, 161, -1,
6489 10, 11, 12, -1, -1, -1, 16, -1, 18, 19,
6490 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
6491 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6492 -1, -1, -1, -1, -1, 45, 46, 47, 48, 49,
6493 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6494 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
6495 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
6496 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6497 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6498 -1, -1, 102, 103, -1, 105, 106, -1, 108, -1,
6499 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
6500 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6501 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6502 -1, -1, -1, -1, -1, -1, -1, -1, 148, 149,
6503 150, -1, -1, -1, 1, 155, 3, 4, 5, 6,
6504 7, 161, -1, -1, 11, 12, -1, -1, -1, 16,
6505 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6506 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6507 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6508 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6509 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6510 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6511 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6512 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6513 -1, -1, 99, -1, -1, 102, 103, -1, 105, 106,
6514 -1, 108, -1, -1, 111, 112, 113, 114, 115, 116,
6515 117, 118, 119, -1, -1, -1, -1, -1, -1, -1,
6516 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6517 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6518 -1, 148, 149, 150, -1, -1, -1, -1, 155, -1,
6519 -1, -1, 159, 1, 161, 3, 4, 5, 6, 7,
6520 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
6521 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
6522 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
6523 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6524 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6525 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6526 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6527 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6528 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6529 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
6530 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
6531 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
6532 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6533 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6534 148, 149, 150, -1, -1, -1, -1, 155, -1, -1,
6535 -1, 159, 1, 161, 3, 4, 5, 6, 7, -1,
6536 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6537 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6538 -1, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6539 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
6540 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6541 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6542 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6543 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6544 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6545 99, -1, -1, 102, 103, -1, 105, 106, -1, 108,
6546 -1, -1, 111, 112, 113, 114, 115, 116, 117, 118,
6547 119, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6548 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6549 -1, -1, -1, -1, -1, -1, -1, -1, -1, 148,
6550 149, 150, -1, -1, 153, 1, 155, 3, 4, 5,
6551 6, 7, 161, -1, -1, 11, 12, -1, -1, -1,
6552 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6553 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
6554 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
6555 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
6556 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6557 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6558 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6559 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6560 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
6561 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
6562 116, 117, 118, 119, -1, -1, -1, -1, -1, -1,
6563 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6564 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6565 -1, -1, 148, 149, 150, -1, -1, 153, 1, 155,
6566 3, 4, 5, -1, 7, 161, -1, -1, 11, 12,
6567 -1, -1, -1, 16, 17, 18, 19, 20, 21, 22,
6568 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
6569 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6570 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
6571 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
6572 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
6573 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
6574 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
6575 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6576 103, -1, 105, 106, -1, -1, -1, -1, 111, 112,
6577 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
6578 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6579 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6580 -1, -1, -1, -1, -1, 148, 149, 150, -1, -1,
6581 -1, -1, 155, -1, -1, -1, -1, -1, 161, 3,
6582 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
6583 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
6584 24, 25, 26, -1, -1, -1, 30, 31, 32, 33,
6585 34, 35, 36, 37, 38, 39, -1, -1, -1, -1,
6586 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
6587 54, 55, 56, 57, -1, -1, -1, -1, -1, -1,
6588 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6589 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
6590 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
6591 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
6592 -1, -1, -1, -1, 108, 109, -1, -1, -1, -1,
6593 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6594 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6595 -1, -1, -1, -1, 138, 139, 140, 141, 142, 143,
6596 144, 145, 146, 147, -1, 149, 150, -1, -1, -1,
6597 -1, -1, -1, 157, 158, 3, 4, 5, 6, 7,
6598 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
6599 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
6600 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
6601 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6602 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6603 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6604 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6605 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
6606 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
6607 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6608 108, 109, -1, -1, -1, -1, -1, -1, -1, -1,
6609 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6610 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6611 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
6612 -1, 149, 150, -1, -1, -1, -1, -1, -1, 157,
6613 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
6614 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
6615 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
6616 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
6617 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
6618 53, 54, -1, 56, -1, -1, -1, -1, -1, -1,
6619 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6620 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
6621 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
6622 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
6623 -1, -1, -1, -1, -1, 108, 109, -1, -1, 112,
6624 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6625 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6626 -1, -1, -1, -1, -1, 138, 139, 140, 141, 142,
6627 143, 144, 145, 146, 147, -1, 149, 150, -1, -1,
6628 -1, -1, -1, -1, 157, 3, 4, 5, 6, 7,
6629 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
6630 18, 19, 20, 21, 22, 23, 24, 25, 26, -1,
6631 -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
6632 38, 39, -1, -1, -1, -1, -1, 45, 46, 47,
6633 48, 49, 50, 51, 52, 53, -1, -1, 56, -1,
6634 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6635 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6636 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
6637 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
6638 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6639 108, 109, -1, -1, 112, -1, -1, -1, -1, -1,
6640 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6641 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6642 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
6643 -1, 149, 150, -1, -1, -1, -1, -1, -1, 157,
6644 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
6645 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
6646 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
6647 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
6648 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
6649 53, -1, -1, 56, -1, -1, -1, -1, -1, -1,
6650 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6651 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
6652 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
6653 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
6654 -1, -1, -1, -1, -1, 108, 109, -1, -1, -1,
6655 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6656 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6657 -1, -1, -1, -1, -1, 138, 139, 140, 141, 142,
6658 143, 144, 145, 146, 147, -1, 149, 150, 3, 4,
6659 5, -1, 7, -1, 157, -1, 11, 12, -1, -1,
6660 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6661 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6662 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6663 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6664 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6665 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6666 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6667 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6668 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
6669 105, 106, -1, -1, -1, -1, 111, 112, 113, 114,
6670 115, 116, 117, 118, 119, -1, -1, 3, 4, 5,
6671 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6672 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6673 -1, -1, -1, 148, 30, 31, 32, 33, 34, 35,
6674 36, 156, -1, 39, -1, -1, -1, -1, -1, -1,
6675 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6676 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6677 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6678 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6679 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6680 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
6681 106, -1, -1, -1, -1, 111, 112, 113, 114, 115,
6682 116, 117, 118, 119, -1, -1, 3, 4, 5, -1,
6683 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
6684 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6685 -1, -1, 148, 30, 31, 32, 33, 34, 35, 36,
6686 156, -1, 39, -1, -1, -1, -1, -1, -1, 46,
6687 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
6688 57, 58, 59, 60, 61, 62, 63, 64, 65, -1,
6689 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6690 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6691 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6692 -1, -1, 99, -1, -1, 102, 103, -1, 105, 106,
6693 -1, 108, 109, 110, 111, 112, 113, 114, 115, 116,
6694 117, 118, 119, -1, -1, -1, -1, -1, -1, -1,
6695 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6696 -1, -1, -1, -1, -1, -1, 3, 4, 5, -1,
6697 7, 148, 149, 150, 11, 12, -1, -1, 155, 16,
6698 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6699 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6700 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
6701 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
6702 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6703 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6704 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6705 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6706 -1, -1, 99, -1, -1, 102, 103, -1, 105, 106,
6707 -1, -1, -1, -1, 111, 112, 113, 114, 115, 116,
6708 117, 118, 119, -1, -1, -1, -1, -1, -1, -1,
6709 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6710 -1, -1, -1, -1, 1, -1, 3, 4, 5, 6,
6711 7, 148, 149, 150, 11, 12, -1, -1, 155, 16,
6712 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6713 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6714 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6715 -1, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6716 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6717 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6718 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6719 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6720 -1, -1, 99, -1, -1, 102, 103, -1, 105, 106,
6721 -1, 108, -1, -1, 111, 112, 113, 114, 115, 116,
6722 117, 118, 119, -1, -1, 1, -1, 3, 4, 5,
6723 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6724 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6725 -1, 148, 149, 150, 30, 31, 32, 33, 34, 35,
6726 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
6727 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6728 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6729 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6730 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6731 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6732 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
6733 106, -1, -1, -1, -1, 111, 112, 113, 114, 115,
6734 116, 117, 118, 119, -1, -1, -1, -1, 3, 4,
6735 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
6736 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6737 -1, -1, 148, 149, 150, 30, 31, 32, 33, 34,
6738 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6739 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6740 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
6741 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6742 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6743 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6744 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
6745 105, 106, -1, 108, 109, 110, 111, 112, 113, 114,
6746 115, 116, 117, 118, 119, -1, -1, -1, -1, 3,
6747 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6748 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6749 24, -1, -1, 148, 149, 150, 30, 31, 32, 33,
6750 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6751 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6752 54, 55, 56, 57, 58, 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 -1, 105, 106, -1, 108, 109, 110, 111, 112, 113,
6758 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
6759 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
6760 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
6761 23, 24, -1, -1, 148, 149, 150, 30, 31, 32,
6762 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6763 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
6764 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
6765 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
6766 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
6767 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
6768 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6769 103, -1, 105, 106, -1, 108, 109, 110, 111, 112,
6770 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
6771 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
6772 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6773 22, 23, 24, -1, -1, 148, 149, 150, 30, 31,
6774 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6775 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6776 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
6777 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6778 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6779 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6780 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6781 102, 103, -1, 105, 106, -1, 108, 109, 110, 111,
6782 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
6783 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6784 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6785 21, 22, 23, 24, -1, -1, 148, 149, 150, 30,
6786 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6787 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6788 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
6789 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6790 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6791 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6792 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6793 -1, 102, 103, -1, 105, 106, -1, 108, 109, -1,
6794 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
6795 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
6796 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
6797 20, 21, 22, 23, 24, -1, -1, 148, 149, 150,
6798 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6799 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
6800 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
6801 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
6802 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
6803 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6804 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6805 -1, -1, 102, 103, -1, 105, 106, -1, -1, 109,
6806 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
6807 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
6808 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6809 19, 20, 21, 22, 23, 24, -1, -1, 148, 149,
6810 150, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6811 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
6812 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
6813 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6814 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6815 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6816 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6817 99, -1, -1, 102, 103, -1, 105, 106, -1, -1,
6818 109, -1, 111, 112, 113, 114, 115, 116, 117, 118,
6819 119, -1, -1, -1, -1, 3, 4, 5, -1, 7,
6820 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
6821 18, 19, 20, 21, 22, 23, 24, -1, -1, 148,
6822 149, 150, 30, 31, 32, 33, 34, 35, 36, -1,
6823 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
6824 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6825 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6826 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6827 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6828 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6829 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
6830 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
6831 118, 119, -1, -1, -1, -1, 3, 4, 5, -1,
6832 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
6833 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6834 148, 149, 150, 30, 31, 32, 33, 34, 35, 36,
6835 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
6836 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
6837 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6838 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6839 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6840 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6841 -1, -1, 99, -1, -1, 102, 103, -1, 105, 106,
6842 -1, 108, -1, -1, 111, 112, 113, 114, 115, 116,
6843 117, 118, 119, -1, -1, -1, -1, 3, 4, 5,
6844 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6845 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6846 -1, 148, 149, 150, 30, 31, 32, 33, 34, 35,
6847 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
6848 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6849 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6850 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6851 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6852 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6853 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
6854 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
6855 116, 117, 118, 119, -1, -1, -1, -1, 3, 4,
6856 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
6857 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6858 -1, -1, 148, 149, 150, 30, 31, 32, 33, 34,
6859 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6860 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6861 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6862 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6863 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6864 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6865 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
6866 105, 106, -1, 108, -1, -1, 111, 112, 113, 114,
6867 115, 116, 117, 118, 119, -1, -1, -1, -1, 3,
6868 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6869 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6870 24, -1, -1, 148, 149, 150, 30, 31, 32, 33,
6871 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6872 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6873 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6874 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6875 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6876 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6877 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6878 -1, 105, 106, -1, 108, -1, -1, 111, 112, 113,
6879 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
6880 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
6881 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
6882 23, 24, -1, -1, 148, 149, 150, 30, 31, 32,
6883 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6884 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
6885 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
6886 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
6887 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
6888 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
6889 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6890 103, -1, 105, 106, -1, -1, -1, -1, 111, 112,
6891 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
6892 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
6893 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6894 22, 23, 24, -1, -1, 148, 149, 150, 30, 31,
6895 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6896 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6897 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6898 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6899 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6900 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6901 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6902 102, 103, -1, 105, 106, -1, -1, -1, -1, 111,
6903 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
6904 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6905 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6906 21, 22, 23, 24, -1, -1, 148, 149, 150, 30,
6907 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6908 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6909 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
6910 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6911 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6912 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6913 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6914 -1, 102, 103, -1, 105, 106, -1, -1, -1, -1,
6915 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
6916 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
6917 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
6918 20, 21, 22, 23, 24, -1, -1, 148, 149, 150,
6919 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6920 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
6921 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6922 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
6923 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
6924 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6925 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6926 -1, -1, 102, 103, -1, 105, 106, -1, -1, -1,
6927 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
6928 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
6929 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6930 19, 20, 21, 22, 23, 24, -1, -1, 148, 149,
6931 150, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6932 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
6933 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6934 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6935 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6936 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6937 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6938 99, -1, -1, 102, 103, -1, 105, 106, -1, -1,
6939 -1, -1, 111, 112, 113, 114, 115, 116, 117, 118,
6940 119, -1, -1, -1, -1, 3, 4, 5, -1, 7,
6941 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
6942 18, 19, 20, 21, 22, 23, 24, -1, -1, 148,
6943 149, 150, 30, 31, 32, 33, 34, 35, 36, -1,
6944 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
6945 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6946 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6947 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6948 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6949 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6950 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
6951 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
6952 118, 119, -1, -1, 3, 4, 5, -1, 7, -1,
6953 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6954 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6955 148, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6956 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
6957 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6958 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6959 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6960 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6961 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6962 99, -1, -1, 102, 103, -1, 105, 106, -1, 108,
6963 -1, -1, 111, 112, 113, 114, 115, 116, 117, 118,
6964 119, -1, -1, 3, 4, 5, -1, 7, -1, -1,
6965 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
6966 20, 21, 22, 23, 24, -1, -1, -1, -1, 148,
6967 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6968 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
6969 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6970 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
6971 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6972 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6973 -1, -1, -1, -1, -1, 95, -1, -1, -1, 99,
6974 -1, -1, 102, 103, -1, 105, 106, -1, -1, -1,
6975 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
6976 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6977 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6978 21, 22, 23, 24, -1, -1, -1, -1, 148, 30,
6979 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6980 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6981 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
6982 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6983 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6984 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6985 -1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
6986 -1, 102, 103, -1, 105, 106, -1, -1, -1, -1,
6987 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
6988 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
6989 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6990 22, 23, 24, -1, -1, -1, -1, 148, 30, 31,
6991 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6992 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6993 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6994 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6995 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6996 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6997 -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6998 102, 103, -1, 105, 106, -1, -1, -1, -1, 111,
6999 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
7000 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
7001 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
7002 23, 24, -1, -1, -1, -1, 148, 30, 31, 32,
7003 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
7004 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
7005 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
7006 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
7007 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7008 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7009 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
7010 103, -1, 105, 106, -1, -1, -1, -1, 111, 112,
7011 113, 114, 115, 116, 117, 118, 119, -1, -1, 3,
7012 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
7013 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
7014 24, -1, -1, -1, -1, 148, 30, 31, 32, 33,
7015 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
7016 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
7017 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
7018 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
7019 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7020 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7021 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
7022 -1, 105, 106, 33, 34, 35, 36, 111, 112, 113,
7023 114, 115, 116, 117, 118, 119, -1, -1, -1, 49,
7024 50, 51, 52, -1, -1, -1, 56, -1, 58, 59,
7025 60, 61, 62, 63, -1, -1, -1, -1, -1, -1,
7026 -1, -1, -1, -1, 148, -1, -1, -1, 78, -1,
7027 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7028 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
7029 -1, -1, 102, -1, -1, 105, 106, -1, 108, 109,
7030 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
7031 -1, -1, -1, -1, -1, -1, 33, 34, 35, 36,
7032 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7033 -1, 141, 49, 50, 51, 52, -1, -1, 148, 56,
7034 -1, -1, 59, 60, 61, 62, 63, -1, -1, -1,
7035 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7036 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7037 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
7038 -1, -1, 99, -1, -1, 102, -1, -1, 105, 106,
7039 -1, 108, -1, -1, 111, 112, 113, 114, 115, 116,
7040 117, 118, 119, -1, -1, -1, -1, -1, -1, 33,
7041 34, 35, 36, -1, -1, -1, 52, 53, -1, -1,
7042 56, -1, -1, -1, 141, 49, 50, 51, 52, -1,
7043 -1, 148, 56, -1, -1, 59, 60, 61, 62, 63,
7044 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
7045 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
7046 96, -1, -1, -1, -1, -1, -1, 91, 92, -1,
7047 -1, -1, 108, 109, -1, 99, -1, -1, 102, -1,
7048 -1, 105, 106, -1, -1, -1, -1, 111, 112, 113,
7049 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
7050 -1, -1, 138, 139, 140, 141, 142, 143, 144, 145,
7051 146, 147, -1, 149, 150, 52, 53, 141, -1, 56,
7052 -1, 157, 158, -1, 148, -1, -1, -1, -1, -1,
7053 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7054 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7055 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7056 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7057 -1, 108, 109, -1, -1, -1, -1, -1, -1, -1,
7058 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7059 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7060 -1, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7061 147, -1, 149, 150, 52, 53, -1, -1, 56, -1,
7062 157, 158, -1, -1, -1, -1, -1, -1, -1, -1,
7063 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7064 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
7065 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
7066 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7067 108, 109, -1, -1, -1, -1, -1, -1, -1, -1,
7068 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7069 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7070 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
7071 -1, 149, 150, 52, 53, -1, -1, 56, -1, 157,
7072 158, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7073 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7074 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7075 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7076 -1, -1, -1, -1, -1, -1, -1, -1, -1, 108,
7077 109, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7078 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7079 -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
7080 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
7081 149, 150, 52, 53, -1, -1, 56, -1, 157, 158,
7082 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7083 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
7084 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
7085 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
7086 -1, -1, -1, -1, -1, -1, -1, -1, 108, 109,
7087 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7088 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7089 -1, -1, -1, -1, -1, -1, -1, -1, 138, 139,
7090 140, 141, 142, 143, 144, 145, 146, 147, -1, 149,
7091 150, 52, 53, -1, -1, 56, -1, 157, 158, -1,
7092 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7093 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7094 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7095 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7096 -1, -1, -1, -1, -1, -1, -1, 108, 109, -1,
7097 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7098 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7099 -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
7100 141, 142, 143, 144, 145, 146, 147, -1, 149, 150,
7101 52, 53, -1, -1, 56, -1, 157, 158, -1, -1,
7102 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7103 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
7104 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
7105 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
7106 -1, -1, -1, -1, -1, -1, 108, 109, -1, -1,
7107 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7108 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7109 -1, -1, -1, -1, -1, -1, 138, 139, 140, 141,
7110 142, 143, 144, 145, 146, 147, -1, 149, 150, 52,
7111 53, -1, -1, 56, -1, 157, 158, -1, -1, -1,
7112 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7113 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
7114 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
7115 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
7116 -1, -1, -1, -1, -1, 108, 109, -1, -1, -1,
7117 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7118 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7119 -1, -1, -1, -1, -1, 138, 139, 140, 141, 142,
7120 143, 144, 145, 146, 147, -1, 149, 150, 52, 53,
7121 -1, -1, 56, -1, 157, 158, -1, -1, -1, -1,
7122 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7123 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
7124 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
7125 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
7126 -1, -1, -1, -1, 108, 109, -1, -1, -1, -1,
7127 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7128 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7129 -1, -1, -1, -1, 138, 139, 140, 141, 142, 143,
7130 144, 145, 146, 147, -1, 149, 150, 52, 53, -1,
7131 -1, 56, -1, 157, 158, -1, -1, -1, -1, -1,
7132 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7133 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
7134 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
7135 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
7136 -1, -1, -1, 108, 109, -1, -1, -1, -1, -1,
7137 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7138 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7139 -1, -1, -1, 138, 139, 140, 141, 142, 143, 144,
7140 145, 146, 147, -1, 149, 150, 52, 53, -1, -1,
7141 56, -1, 157, 158, -1, -1, -1, -1, -1, -1,
7142 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7143 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
7144 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
7145 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7146 -1, -1, 108, 109, -1, -1, -1, -1, -1, -1,
7147 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7148 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7149 -1, -1, 138, 139, 140, 141, 142, 143, 144, 145,
7150 146, 147, -1, 149, 150, 52, 53, -1, -1, 56,
7151 -1, 157, 158, -1, -1, -1, -1, -1, -1, -1,
7152 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
7153 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
7154 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
7155 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7156 -1, 108, 109, -1, -1, -1, -1, -1, -1, -1,
7157 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7158 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7159 -1, 138, 139, 140, 141, 142, 143, 144, 145, 146,
7160 147, -1, 149, 150, 52, 53, -1, -1, 56, -1,
7161 157, 158, -1, -1, -1, -1, -1, -1, -1, -1,
7162 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
7163 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
7164 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
7165 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7166 108, 109, -1, -1, -1, -1, -1, -1, -1, -1,
7167 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7168 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7169 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
7170 -1, 149, 150, 52, 53, -1, -1, 56, -1, 157,
7171 158, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7172 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
7173 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
7174 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
7175 -1, -1, -1, -1, -1, -1, -1, -1, -1, 108,
7176 109, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7177 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7178 -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
7179 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
7180 149, 150, 52, 53, -1, -1, 56, -1, 157, 158,
7181 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7182 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
7183 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
7184 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
7185 -1, -1, -1, -1, -1, -1, -1, -1, 108, 109,
7186 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7187 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7188 -1, -1, -1, -1, -1, -1, -1, -1, 138, 139,
7189 140, 141, 142, 143, 144, 145, 146, 147, -1, 149,
7190 150, 52, 53, -1, -1, 56, -1, 157, 158, -1,
7191 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
7192 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
7193 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
7194 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
7195 -1, -1, -1, -1, -1, -1, -1, 108, 109, -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, -1, -1, -1, -1, 138, 139, 140,
7199 141, 142, 143, 144, 145, 146, 147, -1, 149, 150,
7200 -1, -1, -1, -1, -1, -1, 157
7205static const yytype_int16 yystos[] =
7207 0, 164, 165, 1, 3, 4, 5, 6, 7, 11,
7208 12, 16, 18, 19, 20, 21, 22, 23, 24, 30,
7209 31, 32, 33, 34, 35, 36, 39, 45, 46, 47,
7210 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
7211 59, 60, 61, 62, 63, 64, 65, 76, 77, 91,
7212 92, 99, 102, 103, 105, 106, 108, 111, 112, 113,
7213 114, 115, 116, 117, 118, 119, 148, 149, 150, 167,
7214 168, 169, 181, 183, 184, 188, 192, 194, 199, 200,
7215 202, 203, 204, 206, 207, 208, 210, 211, 220, 223,
7216 242, 252, 253, 254, 255, 256, 257, 258, 259, 260,
7217 261, 262, 271, 272, 302, 307, 308, 356, 357, 358,
7218 359, 360, 361, 363, 364, 367, 368, 370, 371, 372,
7219 373, 386, 387, 389, 390, 391, 392, 393, 394, 395,
7220 396, 397, 432, 444, 0, 3, 4, 5, 6, 7,
7221 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
7222 18, 19, 20, 21, 22, 23, 24, 25, 26, 30,
7223 31, 32, 33, 34, 35, 36, 37, 38, 39, 45,
7224 46, 47, 48, 49, 50, 51, 52, 53, 56, 76,
7225 77, 78, 79, 80, 81, 82, 83, 84, 87, 88,
7226 93, 94, 95, 96, 108, 109, 138, 139, 140, 141,
7227 142, 143, 144, 145, 146, 147, 149, 150, 157, 214,
7228 215, 216, 218, 219, 386, 180, 180, 180, 39, 58,
7229 99, 102, 108, 109, 110, 113, 149, 192, 194, 203,
7230 211, 220, 227, 233, 236, 238, 239, 252, 393, 394,
7231 396, 397, 430, 431, 233, 158, 230, 234, 235, 155,
7232 158, 186, 54, 215, 186, 152, 170, 171, 224, 444,
7233 21, 22, 32, 202, 220, 252, 271, 272, 220, 220,
7234 220, 56, 47, 102, 176, 177, 178, 183, 205, 206,
7235 444, 176, 228, 238, 430, 444, 227, 429, 430, 444,
7236 46, 99, 148, 156, 192, 194, 210, 242, 252, 393,
7237 394, 397, 300, 214, 376, 388, 392, 376, 377, 378,
7238 162, 362, 362, 362, 362, 391, 199, 220, 220, 155,
7239 161, 166, 442, 443, 180, 40, 41, 42, 43, 44,
7240 37, 38, 158, 400, 401, 402, 403, 444, 400, 402,
7241 26, 152, 230, 235, 263, 309, 28, 264, 306, 135,
7242 156, 102, 108, 207, 135, 25, 78, 79, 80, 81,
7243 82, 83, 84, 85, 86, 87, 88, 89, 90, 95,
7244 96, 101, 136, 138, 139, 140, 141, 142, 143, 144,
7245 145, 146, 147, 222, 222, 69, 97, 98, 154, 436,
7246 243, 1, 188, 195, 195, 196, 198, 198, 166, 195,
7247 443, 99, 204, 211, 252, 277, 393, 394, 397, 52,
7248 56, 95, 99, 212, 213, 252, 393, 394, 397, 213,
7249 33, 34, 35, 36, 49, 50, 51, 52, 56, 158,
7250 191, 214, 395, 427, 233, 158, 235, 98, 436, 437,
7251 309, 359, 100, 100, 156, 227, 56, 227, 227, 227,
7252 376, 400, 400, 135, 101, 156, 237, 444, 98, 154,
7253 436, 100, 100, 156, 237, 92, 232, 233, 238, 410,
7254 430, 444, 233, 186, 188, 438, 188, 54, 64, 65,
7255 182, 158, 224, 225, 167, 98, 436, 100, 179, 205,
7256 159, 166, 443, 438, 244, 160, 156, 186, 441, 156,
7257 441, 153, 441, 186, 56, 391, 207, 209, 401, 156,
7258 98, 154, 436, 297, 66, 120, 122, 123, 379, 120,
7259 120, 379, 67, 379, 162, 365, 374, 369, 375, 78,
7260 161, 169, 152, 195, 195, 195, 195, 224, 226, 188,
7261 188, 52, 54, 55, 56, 57, 58, 78, 92, 102,
7262 108, 109, 110, 142, 145, 282, 344, 404, 405, 406,
7263 407, 409, 410, 411, 412, 413, 414, 415, 416, 417,
7264 419, 420, 421, 422, 423, 424, 425, 135, 250, 409,
7265 135, 251, 310, 311, 107, 201, 312, 313, 313, 224,
7266 205, 156, 210, 156, 224, 190, 220, 220, 220, 220,
7267 220, 220, 220, 220, 220, 220, 220, 220, 220, 189,
7268 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
7269 220, 52, 53, 56, 218, 230, 432, 433, 434, 232,
7270 238, 52, 53, 56, 218, 230, 433, 174, 176, 13,
7271 273, 442, 273, 195, 176, 176, 246, 166, 56, 98,
7272 154, 436, 25, 195, 52, 56, 212, 139, 399, 98,
7273 154, 436, 249, 428, 69, 98, 435, 233, 438, 52,
7274 56, 433, 224, 224, 217, 125, 135, 135, 224, 227,
7275 227, 236, 239, 430, 52, 56, 232, 52, 56, 224,
7276 224, 431, 438, 156, 438, 156, 159, 438, 215, 225,
7277 220, 153, 56, 433, 433, 224, 171, 438, 178, 159,
7278 430, 156, 209, 52, 56, 232, 52, 56, 298, 381,
7279 380, 120, 366, 379, 66, 120, 120, 366, 66, 120,
7280 220, 176, 183, 102, 108, 278, 279, 280, 281, 412,
7281 156, 426, 444, 156, 426, 156, 408, 438, 283, 284,
7282 156, 408, 227, 34, 52, 52, 156, 408, 52, 39,
7283 185, 203, 220, 221, 174, 442, 185, 221, 174, 297,
7284 153, 311, 297, 10, 68, 270, 270, 108, 199, 227,
7285 238, 240, 241, 438, 209, 156, 184, 187, 199, 211,
7286 220, 227, 229, 241, 252, 397, 319, 319, 186, 100,
7287 100, 152, 230, 235, 186, 439, 156, 100, 100, 230,
7288 231, 235, 444, 270, 224, 176, 13, 176, 27, 274,
7289 442, 270, 270, 17, 267, 315, 25, 245, 321, 52,
7290 56, 232, 52, 56, 198, 248, 398, 247, 52, 56,
7291 212, 232, 174, 188, 193, 438, 231, 235, 187, 220,
7292 229, 187, 229, 215, 227, 39, 237, 100, 100, 439,
7293 100, 100, 410, 430, 188, 229, 441, 207, 439, 299,
7294 382, 385, 392, 397, 362, 379, 362, 362, 362, 153,
7295 280, 412, 156, 438, 156, 425, 417, 419, 421, 405,
7296 406, 415, 423, 135, 227, 407, 414, 423, 413, 415,
7297 186, 44, 44, 270, 270, 298, 153, 298, 227, 156,
7298 44, 209, 44, 135, 44, 98, 154, 436, 317, 317,
7299 137, 224, 224, 311, 201, 160, 100, 224, 224, 201,
7300 8, 265, 352, 444, 14, 15, 268, 269, 275, 276,
7301 444, 276, 197, 108, 227, 314, 270, 319, 315, 270,
7302 439, 176, 442, 195, 174, 439, 270, 438, 191, 309,
7303 306, 186, 224, 224, 100, 224, 224, 438, 156, 438,
7304 180, 383, 438, 278, 281, 279, 426, 156, 408, 156,
7305 408, 156, 408, 156, 408, 408, 185, 221, 226, 226,
7306 299, 299, 108, 227, 226, 226, 224, 226, 52, 56,
7307 232, 52, 56, 318, 318, 220, 187, 229, 187, 229,
7308 153, 224, 187, 229, 187, 229, 227, 241, 353, 444,
7309 175, 268, 176, 195, 270, 270, 227, 156, 273, 317,
7310 270, 270, 174, 442, 270, 224, 158, 303, 409, 176,
7311 156, 156, 415, 415, 423, 415, 220, 220, 180, 180,
7312 227, 183, 183, 220, 439, 52, 56, 58, 91, 92,
7313 99, 102, 105, 106, 108, 113, 141, 302, 324, 325,
7314 326, 327, 330, 334, 335, 336, 339, 340, 341, 342,
7315 343, 344, 345, 346, 347, 348, 349, 350, 351, 356,
7316 357, 360, 361, 364, 368, 371, 373, 394, 419, 324,
7317 187, 229, 101, 354, 444, 9, 266, 355, 444, 172,
7318 273, 108, 227, 176, 318, 270, 409, 301, 0, 121,
7319 384, 279, 408, 408, 156, 408, 408, 140, 292, 293,
7320 444, 292, 347, 347, 56, 212, 318, 325, 332, 333,
7321 334, 335, 338, 439, 186, 318, 440, 52, 376, 52,
7322 102, 392, 101, 156, 140, 156, 156, 325, 89, 90,
7323 98, 154, 158, 328, 329, 52, 99, 211, 252, 393,
7324 394, 397, 273, 177, 176, 176, 227, 276, 315, 316,
7325 323, 324, 186, 294, 29, 124, 304, 415, 282, 285,
7326 286, 288, 289, 291, 294, 413, 415, 416, 418, 423,
7327 425, 176, 174, 325, 439, 325, 336, 338, 439, 156,
7328 153, 224, 125, 195, 348, 332, 336, 330, 337, 338,
7329 113, 341, 345, 347, 347, 212, 318, 439, 318, 438,
7330 332, 335, 339, 332, 335, 339, 56, 98, 154, 436,
7331 176, 166, 173, 275, 273, 40, 41, 161, 159, 305,
7332 176, 408, 426, 156, 426, 156, 290, 294, 140, 284,
7333 156, 287, 290, 99, 252, 156, 290, 438, 156, 156,
7334 331, 438, 156, 156, 376, 438, 438, 438, 439, 439,
7335 439, 52, 56, 232, 52, 56, 352, 355, 320, 195,
7336 195, 52, 295, 296, 411, 174, 153, 418, 421, 286,
7337 288, 415, 423, 140, 252, 289, 423, 56, 98, 415,
7338 337, 339, 337, 336, 338, 439, 176, 156, 186, 270,
7339 426, 156, 290, 156, 290, 156, 290, 156, 290, 52,
7340 56, 290, 156, 440, 276, 321, 322, 296, 415, 415,
7341 423, 415, 290, 290, 156, 290, 290, 415, 290
7345static const yytype_int16 yyr1[] =
7347 0, 163, 164, 165, 166, 166, 167, 168, 168, 168,
7348 169, 169, 170, 171, 172, 173, 174, 175, 174, 176,
7349 177, 177, 177, 178, 179, 178, 180, 181, 182, 183,
7350 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
7351 183, 183, 183, 183, 183, 183, 183, 184, 184, 184,
7352 184, 184, 184, 184, 184, 184, 184, 185, 185, 186,
7353 186, 185, 187, 187, 187, 188, 188, 188, 188, 188,
7354 189, 188, 190, 188, 188, 191, 192, 193, 194, 195,
7355 195, 196, 197, 198, 199, 199, 200, 200, 201, 202,
7356 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
7357 203, 203, 204, 204, 205, 205, 206, 206, 206, 206,
7358 206, 206, 206, 206, 206, 206, 207, 207, 208, 208,
7359 209, 209, 210, 210, 210, 210, 210, 210, 210, 210,
7360 210, 211, 211, 211, 211, 211, 211, 211, 211, 211,
7361 212, 212, 213, 213, 213, 214, 214, 214, 214, 214,
7362 215, 215, 216, 217, 216, 218, 218, 218, 218, 218,
7363 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
7364 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
7365 218, 218, 218, 218, 218, 219, 219, 219, 219, 219,
7366 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
7367 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
7368 219, 219, 219, 219, 219, 219, 219, 219, 219, 219,
7369 219, 219, 219, 219, 219, 219, 220, 220, 220, 220,
7370 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
7371 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
7372 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
7373 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
7374 220, 221, 221, 221, 222, 222, 222, 222, 223, 223,
7375 224, 225, 226, 227, 228, 228, 228, 228, 229, 229,
7376 230, 230, 230, 231, 231, 232, 232, 232, 232, 232,
7377 233, 233, 233, 233, 233, 234, 235, 236, 236, 237,
7378 237, 238, 238, 238, 238, 239, 239, 240, 240, 241,
7379 241, 241, 242, 242, 242, 242, 242, 242, 242, 242,
7380 242, 242, 242, 243, 242, 244, 242, 242, 242, 242,
7381 242, 242, 242, 242, 242, 242, 242, 242, 242, 242,
7382 242, 242, 242, 242, 242, 242, 242, 245, 242, 246,
7383 242, 242, 242, 247, 242, 248, 242, 249, 242, 250,
7384 242, 251, 242, 242, 242, 242, 242, 252, 253, 254,
7385 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
7386 265, 266, 267, 268, 269, 270, 270, 271, 272, 273,
7387 273, 273, 274, 274, 275, 275, 276, 276, 277, 277,
7388 278, 278, 279, 279, 280, 280, 280, 280, 280, 281,
7389 281, 282, 282, 283, 284, 285, 285, 286, 286, 286,
7390 286, 287, 288, 289, 289, 290, 290, 291, 291, 291,
7391 291, 291, 291, 291, 291, 291, 291, 291, 291, 291,
7392 291, 291, 292, 292, 293, 293, 294, 294, 295, 295,
7393 296, 296, 297, 298, 299, 300, 301, 302, 303, 303,
7394 304, 305, 304, 306, 307, 307, 307, 307, 308, 308,
7395 308, 308, 308, 308, 308, 308, 308, 309, 309, 310,
7396 311, 312, 313, 314, 314, 314, 314, 315, 316, 316,
7397 317, 318, 319, 320, 321, 322, 322, 323, 323, 323,
7398 324, 324, 324, 324, 324, 324, 325, 326, 326, 327,
7399 327, 328, 329, 330, 330, 330, 330, 330, 330, 330,
7400 330, 330, 330, 330, 330, 330, 331, 330, 330, 330,
7401 332, 332, 332, 332, 332, 332, 333, 333, 334, 334,
7402 335, 336, 336, 337, 337, 338, 339, 339, 339, 339,
7403 340, 340, 341, 341, 342, 342, 343, 343, 344, 345,
7404 345, 346, 346, 346, 346, 346, 346, 346, 346, 346,
7405 346, 347, 347, 347, 347, 347, 347, 347, 347, 347,
7406 347, 348, 349, 349, 350, 351, 351, 351, 352, 352,
7407 353, 353, 353, 354, 354, 355, 355, 356, 356, 357,
7408 358, 358, 358, 359, 360, 361, 362, 362, 363, 364,
7409 365, 365, 366, 366, 367, 368, 369, 369, 370, 371,
7410 372, 373, 374, 374, 375, 375, 376, 376, 377, 377,
7411 378, 378, 379, 380, 379, 381, 382, 383, 379, 384,
7412 384, 385, 385, 386, 386, 387, 388, 388, 389, 390,
7413 390, 391, 391, 391, 391, 392, 392, 392, 393, 393,
7414 393, 394, 394, 394, 394, 394, 394, 394, 395, 395,
7415 396, 396, 397, 397, 398, 399, 399, 400, 400, 401,
7416 402, 403, 402, 404, 404, 405, 405, 405, 405, 405,
7417 406, 407, 407, 408, 408, 409, 409, 409, 409, 409,
7418 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
7419 410, 411, 411, 411, 411, 412, 412, 413, 414, 414,
7420 415, 415, 416, 417, 417, 418, 418, 419, 419, 420,
7421 421, 421, 422, 422, 423, 423, 424, 424, 425, 425,
7422 426, 426, 427, 428, 427, 429, 429, 430, 430, 431,
7423 431, 431, 431, 431, 431, 432, 432, 432, 433, 433,
7424 434, 434, 434, 435, 435, 436, 436, 437, 437, 438,
7425 439, 440, 441, 441, 442, 442, 443, 443, 444
7429static const yytype_int8 yyr2[] =
7431 0, 2, 0, 2, 0, 1, 2, 1, 1, 3,
7432 1, 2, 1, 3, 0, 0, 8, 0, 5, 2,
7433 1, 1, 3, 1, 0, 3, 0, 2, 0, 4,
7434 3, 3, 3, 2, 3, 3, 3, 3, 4, 5,
7435 1, 4, 4, 7, 4, 1, 1, 4, 4, 7,
7436 6, 6, 6, 6, 4, 4, 4, 1, 4, 0,
7437 1, 3, 1, 4, 1, 1, 3, 3, 3, 2,
7438 0, 7, 0, 7, 1, 1, 2, 0, 5, 1,
7439 1, 0, 0, 4, 1, 1, 1, 4, 3, 1,
7440 2, 3, 4, 5, 4, 5, 6, 2, 2, 2,
7441 2, 2, 1, 3, 1, 3, 1, 2, 3, 5,
7442 2, 4, 2, 4, 1, 3, 1, 3, 2, 3,
7443 1, 3, 1, 1, 4, 3, 3, 3, 3, 2,
7444 1, 1, 1, 4, 3, 3, 3, 3, 2, 1,
7445 1, 1, 2, 1, 3, 1, 1, 1, 1, 1,
7446 1, 1, 1, 0, 4, 1, 1, 1, 1, 1,
7447 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7448 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7449 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7450 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7451 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7452 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7453 1, 1, 1, 1, 1, 1, 4, 4, 7, 6,
7454 6, 6, 6, 5, 4, 3, 3, 2, 2, 2,
7455 2, 3, 3, 3, 3, 3, 3, 4, 2, 2,
7456 3, 3, 3, 3, 1, 3, 3, 3, 3, 3,
7457 2, 2, 3, 3, 3, 3, 4, 6, 4, 4,
7458 1, 1, 4, 3, 1, 1, 1, 1, 3, 3,
7459 1, 1, 1, 1, 1, 2, 4, 2, 1, 4,
7460 3, 5, 3, 1, 1, 1, 1, 2, 4, 2,
7461 1, 2, 2, 4, 1, 0, 2, 2, 1, 2,
7462 1, 1, 1, 3, 3, 2, 1, 1, 1, 3,
7463 4, 2, 1, 1, 1, 1, 1, 1, 1, 1,
7464 1, 1, 1, 0, 4, 0, 4, 3, 3, 2,
7465 3, 3, 1, 4, 3, 1, 6, 4, 3, 2,
7466 1, 2, 1, 6, 6, 4, 4, 0, 6, 0,
7467 5, 5, 6, 0, 6, 0, 7, 0, 5, 0,
7468 5, 0, 5, 1, 1, 1, 1, 1, 1, 1,
7469 1, 2, 2, 1, 2, 1, 1, 1, 1, 1,
7470 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7471 1, 2, 1, 1, 1, 5, 1, 2, 1, 1,
7472 1, 3, 1, 3, 1, 3, 5, 1, 3, 2,
7473 1, 1, 1, 0, 2, 1, 3, 4, 2, 2,
7474 1, 1, 3, 1, 3, 2, 0, 6, 8, 4,
7475 6, 4, 2, 6, 2, 4, 6, 2, 4, 2,
7476 4, 1, 1, 1, 3, 4, 1, 4, 1, 3,
7477 1, 1, 0, 0, 0, 0, 0, 9, 4, 1,
7478 3, 0, 4, 3, 2, 4, 5, 5, 2, 4,
7479 4, 3, 3, 3, 2, 1, 4, 3, 3, 0,
7480 7, 0, 7, 1, 2, 3, 4, 5, 1, 1,
7481 0, 0, 0, 0, 9, 1, 1, 1, 3, 3,
7482 1, 2, 3, 1, 1, 1, 1, 3, 1, 3,
7483 1, 2, 2, 1, 1, 4, 4, 4, 3, 4,
7484 4, 4, 3, 3, 3, 2, 0, 6, 2, 4,
7485 1, 1, 2, 2, 4, 1, 2, 3, 1, 3,
7486 5, 2, 1, 1, 3, 1, 3, 1, 2, 1,
7487 1, 3, 2, 1, 1, 3, 2, 1, 2, 1,
7488 1, 1, 3, 3, 2, 2, 1, 1, 1, 2,
7489 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7490 1, 1, 2, 2, 4, 2, 3, 1, 6, 1,
7491 1, 1, 1, 2, 1, 3, 1, 1, 1, 1,
7492 1, 1, 2, 3, 3, 3, 1, 2, 4, 1,
7493 0, 3, 1, 2, 4, 1, 0, 3, 4, 1,
7494 4, 1, 0, 3, 0, 3, 0, 2, 0, 2,
7495 0, 2, 1, 0, 3, 0, 0, 0, 6, 1,
7496 1, 1, 1, 1, 1, 2, 1, 1, 3, 1,
7497 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7498 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
7499 1, 1, 1, 1, 0, 4, 0, 1, 1, 3,
7500 1, 0, 3, 1, 3, 4, 2, 2, 1, 1,
7501 3, 1, 3, 2, 0, 6, 8, 4, 6, 4,
7502 6, 2, 4, 6, 2, 4, 2, 4, 1, 0,
7503 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
7504 1, 3, 1, 2, 1, 2, 1, 1, 1, 1,
7505 2, 1, 1, 1, 2, 1, 1, 1, 2, 1,
7506 2, 1, 1, 0, 4, 1, 2, 1, 3, 3,
7507 2, 1, 4, 2, 1, 1, 1, 1, 1, 1,
7508 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
7509 2, 2, 1, 1, 1, 1, 1, 2, 0
7513enum { YYENOMEM = -2 };
7515#define yyerrok (yyerrstatus = 0)
7516#define yyclearin (yychar = YYEMPTY)
7518#define YYACCEPT goto yyacceptlab
7519#define YYABORT goto yyabortlab
7520#define YYERROR goto yyerrorlab
7521#define YYNOMEM goto yyexhaustedlab
7524#define YYRECOVERING() (!!yyerrstatus)
7526#define YYBACKUP(Token, Value) \
7528 if (yychar == YYEMPTY) \
7532 YYPOPSTACK (yylen); \
7538 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
7545#define YYERRCODE YYUNDEF
7551#ifndef YYLLOC_DEFAULT
7552# define YYLLOC_DEFAULT(Current, Rhs, N) \
7556 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
7557 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
7558 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
7559 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
7563 (Current).first_line = (Current).last_line = \
7564 YYRHSLOC (Rhs, 0).last_line; \
7565 (Current).first_column = (Current).last_column = \
7566 YYRHSLOC (Rhs, 0).last_column; \
7571#define YYRHSLOC(Rhs, K) ((Rhs)[K])
7579# define YYFPRINTF fprintf
7582# define YYDPRINTF(Args) \
7593# ifndef YYLOCATION_PRINT
7595# if defined YY_LOCATION_PRINT
7599# define YYLOCATION_PRINT(File, Loc, p) YY_LOCATION_PRINT(File, *(Loc), p)
7601# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
7607yy_location_print_ (FILE *yyo, YYLTYPE
const *
const yylocp)
7610 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
7611 if (0 <= yylocp->first_line)
7613 res += YYFPRINTF (yyo,
"%d", yylocp->first_line);
7614 if (0 <= yylocp->first_column)
7615 res += YYFPRINTF (yyo,
".%d", yylocp->first_column);
7617 if (0 <= yylocp->last_line)
7619 if (yylocp->first_line < yylocp->last_line)
7621 res += YYFPRINTF (yyo,
"-%d", yylocp->last_line);
7623 res += YYFPRINTF (yyo,
".%d", end_col);
7625 else if (0 <= end_col && yylocp->first_column < end_col)
7626 res += YYFPRINTF (yyo,
"-%d", end_col);
7631# define YYLOCATION_PRINT yy_location_print_
7635# define YY_LOCATION_PRINT(File, Loc, p) YYLOCATION_PRINT(File, &(Loc), p)
7639# define YYLOCATION_PRINT(File, Loc, p) ((void) 0)
7642# define YY_LOCATION_PRINT YYLOCATION_PRINT
7648# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p) \
7652 YYFPRINTF (stderr, "%s ", Title); \
7653 yy_symbol_print (stderr, \
7654 Kind, Value, Location, p); \
7655 YYFPRINTF (stderr, "\n"); \
7665yy_symbol_value_print (FILE *yyo,
7666 yysymbol_kind_t yykind,
YYSTYPE const *
const yyvaluep, YYLTYPE
const *
const yylocationp,
struct parser_params *p)
7668 FILE *yyoutput = yyo;
7670 YY_USE (yylocationp);
7674 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
7677 case YYSYMBOL_keyword_class:
7680 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7685 case YYSYMBOL_keyword_module:
7688 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7693 case YYSYMBOL_keyword_def:
7696 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7701 case YYSYMBOL_keyword_undef:
7704 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7709 case YYSYMBOL_keyword_begin:
7712 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7717 case YYSYMBOL_keyword_rescue:
7720 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7725 case YYSYMBOL_keyword_ensure:
7728 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7733 case YYSYMBOL_keyword_end:
7736 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7741 case YYSYMBOL_keyword_if:
7744 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7749 case YYSYMBOL_keyword_unless:
7752 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7757 case YYSYMBOL_keyword_then:
7760 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7765 case YYSYMBOL_keyword_elsif:
7768 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7773 case YYSYMBOL_keyword_else:
7776 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7781 case YYSYMBOL_keyword_case:
7784 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7789 case YYSYMBOL_keyword_when:
7792 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7797 case YYSYMBOL_keyword_while:
7800 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7805 case YYSYMBOL_keyword_until:
7808 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7813 case YYSYMBOL_keyword_for:
7816 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7821 case YYSYMBOL_keyword_break:
7824 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7829 case YYSYMBOL_keyword_next:
7832 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7837 case YYSYMBOL_keyword_redo:
7840 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7845 case YYSYMBOL_keyword_retry:
7848 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7853 case YYSYMBOL_keyword_in:
7856 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7861 case YYSYMBOL_keyword_do:
7864 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7869 case YYSYMBOL_keyword_do_cond:
7872 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7877 case YYSYMBOL_keyword_do_block:
7880 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7885 case YYSYMBOL_keyword_do_LAMBDA:
7888 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7893 case YYSYMBOL_keyword_return:
7896 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7901 case YYSYMBOL_keyword_yield:
7904 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7909 case YYSYMBOL_keyword_super:
7912 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7917 case YYSYMBOL_keyword_self:
7920 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7925 case YYSYMBOL_keyword_nil:
7928 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7933 case YYSYMBOL_keyword_true:
7936 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7941 case YYSYMBOL_keyword_false:
7944 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7949 case YYSYMBOL_keyword_and:
7952 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7957 case YYSYMBOL_keyword_or:
7960 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7965 case YYSYMBOL_keyword_not:
7968 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7973 case YYSYMBOL_modifier_if:
7976 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7981 case YYSYMBOL_modifier_unless:
7984 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7989 case YYSYMBOL_modifier_while:
7992 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7997 case YYSYMBOL_modifier_until:
8000 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8005 case YYSYMBOL_modifier_rescue:
8008 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8013 case YYSYMBOL_keyword_alias:
8016 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8021 case YYSYMBOL_keyword_defined:
8024 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8029 case YYSYMBOL_keyword_BEGIN:
8032 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8037 case YYSYMBOL_keyword_END:
8040 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8045 case YYSYMBOL_keyword__LINE__:
8048 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8053 case YYSYMBOL_keyword__FILE__:
8056 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8061 case YYSYMBOL_keyword__ENCODING__:
8064 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8069 case YYSYMBOL_tIDENTIFIER:
8072 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8080 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8085 case YYSYMBOL_tGVAR:
8088 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8093 case YYSYMBOL_tIVAR:
8096 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8101 case YYSYMBOL_tCONSTANT:
8104 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8109 case YYSYMBOL_tCVAR:
8112 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8117 case YYSYMBOL_tLABEL:
8120 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8125 case YYSYMBOL_tINTEGER:
8128 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8130 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8133 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8136 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8138 case NODE_IMAGINARY:
8139 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8148 case YYSYMBOL_tFLOAT:
8151 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8153 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8156 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8159 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8161 case NODE_IMAGINARY:
8162 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8171 case YYSYMBOL_tRATIONAL:
8174 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8176 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8179 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8182 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8184 case NODE_IMAGINARY:
8185 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8194 case YYSYMBOL_tIMAGINARY:
8197 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8199 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8202 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8205 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8207 case NODE_IMAGINARY:
8208 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8217 case YYSYMBOL_tCHAR:
8220 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8222 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8225 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8228 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8230 case NODE_IMAGINARY:
8231 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8240 case YYSYMBOL_tNTH_REF:
8243 rb_parser_printf(p,
"$%ld", RNODE_NTH_REF(((*yyvaluep).node))->nd_nth);
8248 case YYSYMBOL_tBACK_REF:
8251 rb_parser_printf(p,
"$%c", (
int)RNODE_BACK_REF(((*yyvaluep).node))->nd_nth);
8256 case YYSYMBOL_tSTRING_CONTENT:
8259 switch (nd_type(RNODE(((*yyvaluep).node)))) {
8261 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_integer_literal_val(((*yyvaluep).node)));
8264 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_float_literal_val(((*yyvaluep).node)));
8267 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_rational_literal_val(((*yyvaluep).node)));
8269 case NODE_IMAGINARY:
8270 rb_parser_printf(p,
"%+"PRIsVALUE, rb_node_imaginary_literal_val(((*yyvaluep).node)));
8282 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8287 case YYSYMBOL_70_backslash_:
8290 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8295 case YYSYMBOL_72_escaped_horizontal_tab_:
8298 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8303 case YYSYMBOL_73_escaped_form_feed_:
8306 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8311 case YYSYMBOL_74_escaped_carriage_return_:
8314 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8319 case YYSYMBOL_75_escaped_vertical_tab_:
8322 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8327 case YYSYMBOL_tANDDOT:
8330 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8335 case YYSYMBOL_tCOLON2:
8338 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8343 case YYSYMBOL_tOP_ASGN:
8346 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8351 case YYSYMBOL_top_compstmt:
8354 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8355 rb_parser_printf(p,
"NODE_SPECIAL");
8357 else if (((*yyvaluep).node)) {
8358 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8364 case YYSYMBOL_top_stmts:
8367 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8368 rb_parser_printf(p,
"NODE_SPECIAL");
8370 else if (((*yyvaluep).node)) {
8371 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8377 case YYSYMBOL_top_stmt:
8380 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8381 rb_parser_printf(p,
"NODE_SPECIAL");
8383 else if (((*yyvaluep).node)) {
8384 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8390 case YYSYMBOL_block_open:
8393 if ((NODE *)((*yyvaluep).node_exits) == (NODE *)-1) {
8394 rb_parser_printf(p,
"NODE_SPECIAL");
8396 else if (((*yyvaluep).node_exits)) {
8397 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8403 case YYSYMBOL_begin_block:
8406 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8407 rb_parser_printf(p,
"NODE_SPECIAL");
8409 else if (((*yyvaluep).node)) {
8410 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8416 case YYSYMBOL_bodystmt:
8419 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8420 rb_parser_printf(p,
"NODE_SPECIAL");
8422 else if (((*yyvaluep).node)) {
8423 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8429 case YYSYMBOL_compstmt:
8432 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8433 rb_parser_printf(p,
"NODE_SPECIAL");
8435 else if (((*yyvaluep).node)) {
8436 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8442 case YYSYMBOL_stmts:
8445 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8446 rb_parser_printf(p,
"NODE_SPECIAL");
8448 else if (((*yyvaluep).node)) {
8449 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8455 case YYSYMBOL_stmt_or_begin:
8458 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8459 rb_parser_printf(p,
"NODE_SPECIAL");
8461 else if (((*yyvaluep).node)) {
8462 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8468 case YYSYMBOL_allow_exits:
8471 if ((NODE *)((*yyvaluep).node_exits) == (NODE *)-1) {
8472 rb_parser_printf(p,
"NODE_SPECIAL");
8474 else if (((*yyvaluep).node_exits)) {
8475 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
8484 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8485 rb_parser_printf(p,
"NODE_SPECIAL");
8487 else if (((*yyvaluep).node)) {
8488 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8494 case YYSYMBOL_command_asgn:
8497 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8498 rb_parser_printf(p,
"NODE_SPECIAL");
8500 else if (((*yyvaluep).node)) {
8501 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8507 case YYSYMBOL_endless_command:
8510 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8511 rb_parser_printf(p,
"NODE_SPECIAL");
8513 else if (((*yyvaluep).node)) {
8514 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8520 case YYSYMBOL_command_rhs:
8523 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8524 rb_parser_printf(p,
"NODE_SPECIAL");
8526 else if (((*yyvaluep).node)) {
8527 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8536 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8537 rb_parser_printf(p,
"NODE_SPECIAL");
8539 else if (((*yyvaluep).node)) {
8540 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8546 case YYSYMBOL_def_name:
8549 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8554 case YYSYMBOL_defn_head:
8557 if ((NODE *)((*yyvaluep).node_def_temp) == (NODE *)-1) {
8558 rb_parser_printf(p,
"NODE_SPECIAL");
8560 else if (((*yyvaluep).node_def_temp)) {
8561 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8567 case YYSYMBOL_defs_head:
8570 if ((NODE *)((*yyvaluep).node_def_temp) == (NODE *)-1) {
8571 rb_parser_printf(p,
"NODE_SPECIAL");
8573 else if (((*yyvaluep).node_def_temp)) {
8574 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
8580 case YYSYMBOL_expr_value:
8583 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8584 rb_parser_printf(p,
"NODE_SPECIAL");
8586 else if (((*yyvaluep).node)) {
8587 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8593 case YYSYMBOL_expr_value_do:
8596 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8597 rb_parser_printf(p,
"NODE_SPECIAL");
8599 else if (((*yyvaluep).node)) {
8600 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8606 case YYSYMBOL_command_call:
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_block_command:
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_cmd_brace_block:
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_fcall:
8648 if ((NODE *)((*yyvaluep).node_fcall) == (NODE *)-1) {
8649 rb_parser_printf(p,
"NODE_SPECIAL");
8651 else if (((*yyvaluep).node_fcall)) {
8652 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_fcall)))));
8658 case YYSYMBOL_command:
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)))));
8674 if ((NODE *)((*yyvaluep).node_masgn) == (NODE *)-1) {
8675 rb_parser_printf(p,
"NODE_SPECIAL");
8677 else if (((*yyvaluep).node_masgn)) {
8678 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
8684 case YYSYMBOL_mlhs_inner:
8687 if ((NODE *)((*yyvaluep).node_masgn) == (NODE *)-1) {
8688 rb_parser_printf(p,
"NODE_SPECIAL");
8690 else if (((*yyvaluep).node_masgn)) {
8691 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
8697 case YYSYMBOL_mlhs_basic:
8700 if ((NODE *)((*yyvaluep).node_masgn) == (NODE *)-1) {
8701 rb_parser_printf(p,
"NODE_SPECIAL");
8703 else if (((*yyvaluep).node_masgn)) {
8704 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
8710 case YYSYMBOL_mlhs_item:
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_mlhs_head:
8726 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8727 rb_parser_printf(p,
"NODE_SPECIAL");
8729 else if (((*yyvaluep).node)) {
8730 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8736 case YYSYMBOL_mlhs_post:
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_mlhs_node:
8752 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8753 rb_parser_printf(p,
"NODE_SPECIAL");
8755 else if (((*yyvaluep).node)) {
8756 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8765 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8766 rb_parser_printf(p,
"NODE_SPECIAL");
8768 else if (((*yyvaluep).node)) {
8769 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8775 case YYSYMBOL_cname:
8778 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8783 case YYSYMBOL_cpath:
8786 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8787 rb_parser_printf(p,
"NODE_SPECIAL");
8789 else if (((*yyvaluep).node)) {
8790 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8796 case YYSYMBOL_fname:
8799 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8804 case YYSYMBOL_fitem:
8807 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8808 rb_parser_printf(p,
"NODE_SPECIAL");
8810 else if (((*yyvaluep).node)) {
8811 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8817 case YYSYMBOL_undef_list:
8820 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8821 rb_parser_printf(p,
"NODE_SPECIAL");
8823 else if (((*yyvaluep).node)) {
8824 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8833 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8838 case YYSYMBOL_reswords:
8841 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8849 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8850 rb_parser_printf(p,
"NODE_SPECIAL");
8852 else if (((*yyvaluep).node)) {
8853 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8859 case YYSYMBOL_endless_arg:
8862 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8863 rb_parser_printf(p,
"NODE_SPECIAL");
8865 else if (((*yyvaluep).node)) {
8866 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8872 case YYSYMBOL_relop:
8875 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
8880 case YYSYMBOL_rel_expr:
8883 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8884 rb_parser_printf(p,
"NODE_SPECIAL");
8886 else if (((*yyvaluep).node)) {
8887 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8893 case YYSYMBOL_arg_value:
8896 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8897 rb_parser_printf(p,
"NODE_SPECIAL");
8899 else if (((*yyvaluep).node)) {
8900 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8906 case YYSYMBOL_aref_args:
8909 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8910 rb_parser_printf(p,
"NODE_SPECIAL");
8912 else if (((*yyvaluep).node)) {
8913 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8919 case YYSYMBOL_arg_rhs:
8922 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8923 rb_parser_printf(p,
"NODE_SPECIAL");
8925 else if (((*yyvaluep).node)) {
8926 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8932 case YYSYMBOL_paren_args:
8935 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8936 rb_parser_printf(p,
"NODE_SPECIAL");
8938 else if (((*yyvaluep).node)) {
8939 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8945 case YYSYMBOL_opt_paren_args:
8948 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8949 rb_parser_printf(p,
"NODE_SPECIAL");
8951 else if (((*yyvaluep).node)) {
8952 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8958 case YYSYMBOL_opt_call_args:
8961 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8962 rb_parser_printf(p,
"NODE_SPECIAL");
8964 else if (((*yyvaluep).node)) {
8965 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8971 case YYSYMBOL_call_args:
8974 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8975 rb_parser_printf(p,
"NODE_SPECIAL");
8977 else if (((*yyvaluep).node)) {
8978 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8984 case YYSYMBOL_command_args:
8987 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
8988 rb_parser_printf(p,
"NODE_SPECIAL");
8990 else if (((*yyvaluep).node)) {
8991 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8997 case YYSYMBOL_block_arg:
9000 if ((NODE *)((*yyvaluep).node_block_pass) == (NODE *)-1) {
9001 rb_parser_printf(p,
"NODE_SPECIAL");
9003 else if (((*yyvaluep).node_block_pass)) {
9004 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9010 case YYSYMBOL_opt_block_arg:
9013 if ((NODE *)((*yyvaluep).node_block_pass) == (NODE *)-1) {
9014 rb_parser_printf(p,
"NODE_SPECIAL");
9016 else if (((*yyvaluep).node_block_pass)) {
9017 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
9026 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9027 rb_parser_printf(p,
"NODE_SPECIAL");
9029 else if (((*yyvaluep).node)) {
9030 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9036 case YYSYMBOL_arg_splat:
9039 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9040 rb_parser_printf(p,
"NODE_SPECIAL");
9042 else if (((*yyvaluep).node)) {
9043 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9049 case YYSYMBOL_mrhs_arg:
9052 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9053 rb_parser_printf(p,
"NODE_SPECIAL");
9055 else if (((*yyvaluep).node)) {
9056 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9065 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9066 rb_parser_printf(p,
"NODE_SPECIAL");
9068 else if (((*yyvaluep).node)) {
9069 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9075 case YYSYMBOL_primary:
9078 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9079 rb_parser_printf(p,
"NODE_SPECIAL");
9081 else if (((*yyvaluep).node)) {
9082 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9088 case YYSYMBOL_primary_value:
9091 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9092 rb_parser_printf(p,
"NODE_SPECIAL");
9094 else if (((*yyvaluep).node)) {
9095 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9101 case YYSYMBOL_k_while:
9104 if ((NODE *)((*yyvaluep).node_exits) == (NODE *)-1) {
9105 rb_parser_printf(p,
"NODE_SPECIAL");
9107 else if (((*yyvaluep).node_exits)) {
9108 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9114 case YYSYMBOL_k_until:
9117 if ((NODE *)((*yyvaluep).node_exits) == (NODE *)-1) {
9118 rb_parser_printf(p,
"NODE_SPECIAL");
9120 else if (((*yyvaluep).node_exits)) {
9121 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9127 case YYSYMBOL_k_for:
9130 if ((NODE *)((*yyvaluep).node_exits) == (NODE *)-1) {
9131 rb_parser_printf(p,
"NODE_SPECIAL");
9133 else if (((*yyvaluep).node_exits)) {
9134 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_exits)))));
9140 case YYSYMBOL_k_def:
9143 if ((NODE *)((*yyvaluep).node_def_temp) == (NODE *)-1) {
9144 rb_parser_printf(p,
"NODE_SPECIAL");
9146 else if (((*yyvaluep).node_def_temp)) {
9147 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_def_temp)))));
9153 case YYSYMBOL_if_tail:
9156 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9157 rb_parser_printf(p,
"NODE_SPECIAL");
9159 else if (((*yyvaluep).node)) {
9160 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9166 case YYSYMBOL_opt_else:
9169 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9170 rb_parser_printf(p,
"NODE_SPECIAL");
9172 else if (((*yyvaluep).node)) {
9173 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9179 case YYSYMBOL_for_var:
9182 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9183 rb_parser_printf(p,
"NODE_SPECIAL");
9185 else if (((*yyvaluep).node)) {
9186 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9192 case YYSYMBOL_f_marg:
9195 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9196 rb_parser_printf(p,
"NODE_SPECIAL");
9198 else if (((*yyvaluep).node)) {
9199 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9205 case YYSYMBOL_f_marg_list:
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_f_margs:
9221 if ((NODE *)((*yyvaluep).node_masgn) == (NODE *)-1) {
9222 rb_parser_printf(p,
"NODE_SPECIAL");
9224 else if (((*yyvaluep).node_masgn)) {
9225 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_masgn)))));
9231 case YYSYMBOL_f_rest_marg:
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_f_any_kwrest:
9247 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9252 case YYSYMBOL_f_kwarg_f_block_kw:
9255 if ((NODE *)((*yyvaluep).node_kw_arg) == (NODE *)-1) {
9256 rb_parser_printf(p,
"NODE_SPECIAL");
9258 else if (((*yyvaluep).node_kw_arg)) {
9259 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9265 case YYSYMBOL_block_args_tail:
9268 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
9269 rb_parser_printf(p,
"NODE_SPECIAL");
9271 else if (((*yyvaluep).node_args)) {
9272 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9278 case YYSYMBOL_excessed_comma:
9281 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9286 case YYSYMBOL_f_opt_primary_value:
9289 if ((NODE *)((*yyvaluep).node_opt_arg) == (NODE *)-1) {
9290 rb_parser_printf(p,
"NODE_SPECIAL");
9292 else if (((*yyvaluep).node_opt_arg)) {
9293 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9299 case YYSYMBOL_f_optarg_primary_value:
9302 if ((NODE *)((*yyvaluep).node_opt_arg) == (NODE *)-1) {
9303 rb_parser_printf(p,
"NODE_SPECIAL");
9305 else if (((*yyvaluep).node_opt_arg)) {
9306 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9312 case YYSYMBOL_opt_args_tail_block_args_tail:
9315 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
9316 rb_parser_printf(p,
"NODE_SPECIAL");
9318 else if (((*yyvaluep).node_args)) {
9319 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9325 case YYSYMBOL_block_param:
9328 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
9329 rb_parser_printf(p,
"NODE_SPECIAL");
9331 else if (((*yyvaluep).node_args)) {
9332 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9338 case YYSYMBOL_opt_block_param:
9341 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
9342 rb_parser_printf(p,
"NODE_SPECIAL");
9344 else if (((*yyvaluep).node_args)) {
9345 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9351 case YYSYMBOL_block_param_def:
9354 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
9355 rb_parser_printf(p,
"NODE_SPECIAL");
9357 else if (((*yyvaluep).node_args)) {
9358 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9364 case YYSYMBOL_opt_bv_decl:
9367 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9372 case YYSYMBOL_bv_decls:
9375 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9383 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9388 case YYSYMBOL_numparam:
9391 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9392 rb_parser_printf(p,
"NODE_SPECIAL");
9394 else if (((*yyvaluep).node)) {
9395 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9401 case YYSYMBOL_it_id:
9404 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9409 case YYSYMBOL_lambda:
9412 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9413 rb_parser_printf(p,
"NODE_SPECIAL");
9415 else if (((*yyvaluep).node)) {
9416 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9422 case YYSYMBOL_f_larglist:
9425 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
9426 rb_parser_printf(p,
"NODE_SPECIAL");
9428 else if (((*yyvaluep).node_args)) {
9429 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9435 case YYSYMBOL_lambda_body:
9438 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9439 rb_parser_printf(p,
"NODE_SPECIAL");
9441 else if (((*yyvaluep).node)) {
9442 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9448 case YYSYMBOL_do_block:
9451 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9452 rb_parser_printf(p,
"NODE_SPECIAL");
9454 else if (((*yyvaluep).node)) {
9455 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9461 case YYSYMBOL_block_call:
9464 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9465 rb_parser_printf(p,
"NODE_SPECIAL");
9467 else if (((*yyvaluep).node)) {
9468 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9474 case YYSYMBOL_method_call:
9477 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9478 rb_parser_printf(p,
"NODE_SPECIAL");
9480 else if (((*yyvaluep).node)) {
9481 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9487 case YYSYMBOL_brace_block:
9490 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9491 rb_parser_printf(p,
"NODE_SPECIAL");
9493 else if (((*yyvaluep).node)) {
9494 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9500 case YYSYMBOL_brace_body:
9503 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9504 rb_parser_printf(p,
"NODE_SPECIAL");
9506 else if (((*yyvaluep).node)) {
9507 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9513 case YYSYMBOL_do_body:
9516 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9517 rb_parser_printf(p,
"NODE_SPECIAL");
9519 else if (((*yyvaluep).node)) {
9520 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9526 case YYSYMBOL_case_args:
9529 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9530 rb_parser_printf(p,
"NODE_SPECIAL");
9532 else if (((*yyvaluep).node)) {
9533 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9539 case YYSYMBOL_case_body:
9542 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9543 rb_parser_printf(p,
"NODE_SPECIAL");
9545 else if (((*yyvaluep).node)) {
9546 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9552 case YYSYMBOL_cases:
9555 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9556 rb_parser_printf(p,
"NODE_SPECIAL");
9558 else if (((*yyvaluep).node)) {
9559 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9565 case YYSYMBOL_p_case_body:
9568 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9569 rb_parser_printf(p,
"NODE_SPECIAL");
9571 else if (((*yyvaluep).node)) {
9572 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9578 case YYSYMBOL_p_cases:
9581 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9582 rb_parser_printf(p,
"NODE_SPECIAL");
9584 else if (((*yyvaluep).node)) {
9585 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9591 case YYSYMBOL_p_top_expr:
9594 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9595 rb_parser_printf(p,
"NODE_SPECIAL");
9597 else if (((*yyvaluep).node)) {
9598 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9604 case YYSYMBOL_p_top_expr_body:
9607 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9608 rb_parser_printf(p,
"NODE_SPECIAL");
9610 else if (((*yyvaluep).node)) {
9611 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9617 case YYSYMBOL_p_expr:
9620 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9621 rb_parser_printf(p,
"NODE_SPECIAL");
9623 else if (((*yyvaluep).node)) {
9624 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9633 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9634 rb_parser_printf(p,
"NODE_SPECIAL");
9636 else if (((*yyvaluep).node)) {
9637 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9643 case YYSYMBOL_p_alt:
9646 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9647 rb_parser_printf(p,
"NODE_SPECIAL");
9649 else if (((*yyvaluep).node)) {
9650 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9656 case YYSYMBOL_p_expr_basic:
9659 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9660 rb_parser_printf(p,
"NODE_SPECIAL");
9662 else if (((*yyvaluep).node)) {
9663 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9669 case YYSYMBOL_p_args:
9672 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9673 rb_parser_printf(p,
"NODE_SPECIAL");
9675 else if (((*yyvaluep).node)) {
9676 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9682 case YYSYMBOL_p_args_head:
9685 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9686 rb_parser_printf(p,
"NODE_SPECIAL");
9688 else if (((*yyvaluep).node)) {
9689 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9695 case YYSYMBOL_p_args_tail:
9698 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9699 rb_parser_printf(p,
"NODE_SPECIAL");
9701 else if (((*yyvaluep).node)) {
9702 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9708 case YYSYMBOL_p_find:
9711 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9712 rb_parser_printf(p,
"NODE_SPECIAL");
9714 else if (((*yyvaluep).node)) {
9715 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9721 case YYSYMBOL_p_rest:
9724 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9725 rb_parser_printf(p,
"NODE_SPECIAL");
9727 else if (((*yyvaluep).node)) {
9728 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9734 case YYSYMBOL_p_args_post:
9737 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9738 rb_parser_printf(p,
"NODE_SPECIAL");
9740 else if (((*yyvaluep).node)) {
9741 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9747 case YYSYMBOL_p_arg:
9750 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9751 rb_parser_printf(p,
"NODE_SPECIAL");
9753 else if (((*yyvaluep).node)) {
9754 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9760 case YYSYMBOL_p_kwargs:
9763 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9764 rb_parser_printf(p,
"NODE_SPECIAL");
9766 else if (((*yyvaluep).node)) {
9767 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9773 case YYSYMBOL_p_kwarg:
9776 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9777 rb_parser_printf(p,
"NODE_SPECIAL");
9779 else if (((*yyvaluep).node)) {
9780 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9789 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9790 rb_parser_printf(p,
"NODE_SPECIAL");
9792 else if (((*yyvaluep).node)) {
9793 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9799 case YYSYMBOL_p_kw_label:
9802 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9807 case YYSYMBOL_p_kwrest:
9810 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9815 case YYSYMBOL_p_kwnorest:
9818 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9823 case YYSYMBOL_p_any_kwrest:
9826 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
9831 case YYSYMBOL_p_value:
9834 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9835 rb_parser_printf(p,
"NODE_SPECIAL");
9837 else if (((*yyvaluep).node)) {
9838 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9844 case YYSYMBOL_p_primitive:
9847 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9848 rb_parser_printf(p,
"NODE_SPECIAL");
9850 else if (((*yyvaluep).node)) {
9851 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9857 case YYSYMBOL_p_variable:
9860 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9861 rb_parser_printf(p,
"NODE_SPECIAL");
9863 else if (((*yyvaluep).node)) {
9864 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9870 case YYSYMBOL_p_var_ref:
9873 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9874 rb_parser_printf(p,
"NODE_SPECIAL");
9876 else if (((*yyvaluep).node)) {
9877 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9883 case YYSYMBOL_p_expr_ref:
9886 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9887 rb_parser_printf(p,
"NODE_SPECIAL");
9889 else if (((*yyvaluep).node)) {
9890 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9896 case YYSYMBOL_p_const:
9899 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9900 rb_parser_printf(p,
"NODE_SPECIAL");
9902 else if (((*yyvaluep).node)) {
9903 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9909 case YYSYMBOL_opt_rescue:
9912 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9913 rb_parser_printf(p,
"NODE_SPECIAL");
9915 else if (((*yyvaluep).node)) {
9916 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9922 case YYSYMBOL_exc_list:
9925 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9926 rb_parser_printf(p,
"NODE_SPECIAL");
9928 else if (((*yyvaluep).node)) {
9929 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9935 case YYSYMBOL_exc_var:
9938 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9939 rb_parser_printf(p,
"NODE_SPECIAL");
9941 else if (((*yyvaluep).node)) {
9942 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9948 case YYSYMBOL_opt_ensure:
9951 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9952 rb_parser_printf(p,
"NODE_SPECIAL");
9954 else if (((*yyvaluep).node)) {
9955 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9961 case YYSYMBOL_literal:
9964 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9965 rb_parser_printf(p,
"NODE_SPECIAL");
9967 else if (((*yyvaluep).node)) {
9968 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9974 case YYSYMBOL_strings:
9977 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9978 rb_parser_printf(p,
"NODE_SPECIAL");
9980 else if (((*yyvaluep).node)) {
9981 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9987 case YYSYMBOL_string:
9990 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
9991 rb_parser_printf(p,
"NODE_SPECIAL");
9993 else if (((*yyvaluep).node)) {
9994 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10000 case YYSYMBOL_string1:
10001#line 2611 "parse.y"
10003 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10004 rb_parser_printf(p,
"NODE_SPECIAL");
10006 else if (((*yyvaluep).node)) {
10007 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10010#line 10011 "parse.c"
10013 case YYSYMBOL_xstring:
10014#line 2611 "parse.y"
10016 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10017 rb_parser_printf(p,
"NODE_SPECIAL");
10019 else if (((*yyvaluep).node)) {
10020 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10023#line 10024 "parse.c"
10026 case YYSYMBOL_regexp:
10027#line 2611 "parse.y"
10029 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10030 rb_parser_printf(p,
"NODE_SPECIAL");
10032 else if (((*yyvaluep).node)) {
10033 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10036#line 10037 "parse.c"
10039 case YYSYMBOL_words_tWORDS_BEG_word_list:
10040#line 2611 "parse.y"
10042 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10043 rb_parser_printf(p,
"NODE_SPECIAL");
10045 else if (((*yyvaluep).node)) {
10046 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10049#line 10050 "parse.c"
10052 case YYSYMBOL_words:
10053#line 2611 "parse.y"
10055 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10056 rb_parser_printf(p,
"NODE_SPECIAL");
10058 else if (((*yyvaluep).node)) {
10059 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10062#line 10063 "parse.c"
10065 case YYSYMBOL_word_list:
10066#line 2611 "parse.y"
10068 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10069 rb_parser_printf(p,
"NODE_SPECIAL");
10071 else if (((*yyvaluep).node)) {
10072 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10075#line 10076 "parse.c"
10078 case YYSYMBOL_word:
10079#line 2611 "parse.y"
10081 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10082 rb_parser_printf(p,
"NODE_SPECIAL");
10084 else if (((*yyvaluep).node)) {
10085 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10088#line 10089 "parse.c"
10091 case YYSYMBOL_words_tSYMBOLS_BEG_symbol_list:
10092#line 2611 "parse.y"
10094 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10095 rb_parser_printf(p,
"NODE_SPECIAL");
10097 else if (((*yyvaluep).node)) {
10098 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10101#line 10102 "parse.c"
10104 case YYSYMBOL_symbols:
10105#line 2611 "parse.y"
10107 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10108 rb_parser_printf(p,
"NODE_SPECIAL");
10110 else if (((*yyvaluep).node)) {
10111 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10114#line 10115 "parse.c"
10117 case YYSYMBOL_symbol_list:
10118#line 2611 "parse.y"
10120 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10121 rb_parser_printf(p,
"NODE_SPECIAL");
10123 else if (((*yyvaluep).node)) {
10124 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10127#line 10128 "parse.c"
10130 case YYSYMBOL_words_tQWORDS_BEG_qword_list:
10131#line 2611 "parse.y"
10133 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10134 rb_parser_printf(p,
"NODE_SPECIAL");
10136 else if (((*yyvaluep).node)) {
10137 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10140#line 10141 "parse.c"
10143 case YYSYMBOL_qwords:
10144#line 2611 "parse.y"
10146 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10147 rb_parser_printf(p,
"NODE_SPECIAL");
10149 else if (((*yyvaluep).node)) {
10150 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10153#line 10154 "parse.c"
10156 case YYSYMBOL_words_tQSYMBOLS_BEG_qsym_list:
10157#line 2611 "parse.y"
10159 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10160 rb_parser_printf(p,
"NODE_SPECIAL");
10162 else if (((*yyvaluep).node)) {
10163 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10166#line 10167 "parse.c"
10169 case YYSYMBOL_qsymbols:
10170#line 2611 "parse.y"
10172 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10173 rb_parser_printf(p,
"NODE_SPECIAL");
10175 else if (((*yyvaluep).node)) {
10176 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10179#line 10180 "parse.c"
10182 case YYSYMBOL_qword_list:
10183#line 2611 "parse.y"
10185 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10186 rb_parser_printf(p,
"NODE_SPECIAL");
10188 else if (((*yyvaluep).node)) {
10189 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10192#line 10193 "parse.c"
10195 case YYSYMBOL_qsym_list:
10196#line 2611 "parse.y"
10198 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10199 rb_parser_printf(p,
"NODE_SPECIAL");
10201 else if (((*yyvaluep).node)) {
10202 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10205#line 10206 "parse.c"
10208 case YYSYMBOL_string_contents:
10209#line 2611 "parse.y"
10211 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10212 rb_parser_printf(p,
"NODE_SPECIAL");
10214 else if (((*yyvaluep).node)) {
10215 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10218#line 10219 "parse.c"
10221 case YYSYMBOL_xstring_contents:
10222#line 2611 "parse.y"
10224 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10225 rb_parser_printf(p,
"NODE_SPECIAL");
10227 else if (((*yyvaluep).node)) {
10228 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10231#line 10232 "parse.c"
10234 case YYSYMBOL_regexp_contents:
10235#line 2611 "parse.y"
10237 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10238 rb_parser_printf(p,
"NODE_SPECIAL");
10240 else if (((*yyvaluep).node)) {
10241 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10244#line 10245 "parse.c"
10247 case YYSYMBOL_string_content:
10248#line 2611 "parse.y"
10250 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10251 rb_parser_printf(p,
"NODE_SPECIAL");
10253 else if (((*yyvaluep).node)) {
10254 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10257#line 10258 "parse.c"
10260 case YYSYMBOL_string_dvar:
10261#line 2611 "parse.y"
10263 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10264 rb_parser_printf(p,
"NODE_SPECIAL");
10266 else if (((*yyvaluep).node)) {
10267 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10270#line 10271 "parse.c"
10273 case YYSYMBOL_symbol:
10274#line 2611 "parse.y"
10276 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10277 rb_parser_printf(p,
"NODE_SPECIAL");
10279 else if (((*yyvaluep).node)) {
10280 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10283#line 10284 "parse.c"
10286 case YYSYMBOL_ssym:
10287#line 2611 "parse.y"
10289 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10290 rb_parser_printf(p,
"NODE_SPECIAL");
10292 else if (((*yyvaluep).node)) {
10293 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10296#line 10297 "parse.c"
10300#line 2620 "parse.y"
10302 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10304#line 10305 "parse.c"
10307 case YYSYMBOL_dsym:
10308#line 2611 "parse.y"
10310 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10311 rb_parser_printf(p,
"NODE_SPECIAL");
10313 else if (((*yyvaluep).node)) {
10314 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10317#line 10318 "parse.c"
10320 case YYSYMBOL_numeric:
10321#line 2611 "parse.y"
10323 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10324 rb_parser_printf(p,
"NODE_SPECIAL");
10326 else if (((*yyvaluep).node)) {
10327 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10330#line 10331 "parse.c"
10333 case YYSYMBOL_simple_numeric:
10334#line 2611 "parse.y"
10336 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10337 rb_parser_printf(p,
"NODE_SPECIAL");
10339 else if (((*yyvaluep).node)) {
10340 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10343#line 10344 "parse.c"
10346 case YYSYMBOL_nonlocal_var:
10347#line 2620 "parse.y"
10349 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10351#line 10352 "parse.c"
10354 case YYSYMBOL_user_variable:
10355#line 2620 "parse.y"
10357 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10359#line 10360 "parse.c"
10362 case YYSYMBOL_keyword_variable:
10363#line 2620 "parse.y"
10365 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10367#line 10368 "parse.c"
10370 case YYSYMBOL_var_ref:
10371#line 2611 "parse.y"
10373 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10374 rb_parser_printf(p,
"NODE_SPECIAL");
10376 else if (((*yyvaluep).node)) {
10377 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10380#line 10381 "parse.c"
10383 case YYSYMBOL_var_lhs:
10384#line 2611 "parse.y"
10386 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10387 rb_parser_printf(p,
"NODE_SPECIAL");
10389 else if (((*yyvaluep).node)) {
10390 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10393#line 10394 "parse.c"
10396 case YYSYMBOL_backref:
10397#line 2611 "parse.y"
10399 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10400 rb_parser_printf(p,
"NODE_SPECIAL");
10402 else if (((*yyvaluep).node)) {
10403 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10406#line 10407 "parse.c"
10409 case YYSYMBOL_superclass:
10410#line 2611 "parse.y"
10412 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10413 rb_parser_printf(p,
"NODE_SPECIAL");
10415 else if (((*yyvaluep).node)) {
10416 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10419#line 10420 "parse.c"
10422 case YYSYMBOL_f_opt_paren_args:
10423#line 2611 "parse.y"
10425 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
10426 rb_parser_printf(p,
"NODE_SPECIAL");
10428 else if (((*yyvaluep).node_args)) {
10429 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10432#line 10433 "parse.c"
10435 case YYSYMBOL_f_paren_args:
10436#line 2611 "parse.y"
10438 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
10439 rb_parser_printf(p,
"NODE_SPECIAL");
10441 else if (((*yyvaluep).node_args)) {
10442 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10445#line 10446 "parse.c"
10448 case YYSYMBOL_f_arglist:
10449#line 2611 "parse.y"
10451 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
10452 rb_parser_printf(p,
"NODE_SPECIAL");
10454 else if (((*yyvaluep).node_args)) {
10455 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10458#line 10459 "parse.c"
10461 case YYSYMBOL_f_kwarg_f_kw:
10462#line 2611 "parse.y"
10464 if ((NODE *)((*yyvaluep).node_kw_arg) == (NODE *)-1) {
10465 rb_parser_printf(p,
"NODE_SPECIAL");
10467 else if (((*yyvaluep).node_kw_arg)) {
10468 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
10471#line 10472 "parse.c"
10474 case YYSYMBOL_args_tail:
10475#line 2611 "parse.y"
10477 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
10478 rb_parser_printf(p,
"NODE_SPECIAL");
10480 else if (((*yyvaluep).node_args)) {
10481 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10484#line 10485 "parse.c"
10487 case YYSYMBOL_f_opt_arg_value:
10488#line 2611 "parse.y"
10490 if ((NODE *)((*yyvaluep).node_opt_arg) == (NODE *)-1) {
10491 rb_parser_printf(p,
"NODE_SPECIAL");
10493 else if (((*yyvaluep).node_opt_arg)) {
10494 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
10497#line 10498 "parse.c"
10500 case YYSYMBOL_f_optarg_arg_value:
10501#line 2611 "parse.y"
10503 if ((NODE *)((*yyvaluep).node_opt_arg) == (NODE *)-1) {
10504 rb_parser_printf(p,
"NODE_SPECIAL");
10506 else if (((*yyvaluep).node_opt_arg)) {
10507 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
10510#line 10511 "parse.c"
10513 case YYSYMBOL_opt_args_tail_args_tail:
10514#line 2611 "parse.y"
10516 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
10517 rb_parser_printf(p,
"NODE_SPECIAL");
10519 else if (((*yyvaluep).node_args)) {
10520 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10523#line 10524 "parse.c"
10526 case YYSYMBOL_f_args:
10527#line 2611 "parse.y"
10529 if ((NODE *)((*yyvaluep).node_args) == (NODE *)-1) {
10530 rb_parser_printf(p,
"NODE_SPECIAL");
10532 else if (((*yyvaluep).node_args)) {
10533 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
10536#line 10537 "parse.c"
10539 case YYSYMBOL_args_forward:
10540#line 2620 "parse.y"
10542 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10544#line 10545 "parse.c"
10547 case YYSYMBOL_f_bad_arg:
10548#line 2620 "parse.y"
10550 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10552#line 10553 "parse.c"
10555 case YYSYMBOL_f_norm_arg:
10556#line 2620 "parse.y"
10558 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10560#line 10561 "parse.c"
10563 case YYSYMBOL_f_arg_asgn:
10564#line 2620 "parse.y"
10566 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10568#line 10569 "parse.c"
10571 case YYSYMBOL_f_arg_item:
10572#line 2611 "parse.y"
10574 if ((NODE *)((*yyvaluep).node_args_aux) == (NODE *)-1) {
10575 rb_parser_printf(p,
"NODE_SPECIAL");
10577 else if (((*yyvaluep).node_args_aux)) {
10578 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
10581#line 10582 "parse.c"
10584 case YYSYMBOL_f_arg:
10585#line 2611 "parse.y"
10587 if ((NODE *)((*yyvaluep).node_args_aux) == (NODE *)-1) {
10588 rb_parser_printf(p,
"NODE_SPECIAL");
10590 else if (((*yyvaluep).node_args_aux)) {
10591 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
10594#line 10595 "parse.c"
10597 case YYSYMBOL_f_label:
10598#line 2620 "parse.y"
10600 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10602#line 10603 "parse.c"
10605 case YYSYMBOL_f_kw:
10606#line 2611 "parse.y"
10608 if ((NODE *)((*yyvaluep).node_kw_arg) == (NODE *)-1) {
10609 rb_parser_printf(p,
"NODE_SPECIAL");
10611 else if (((*yyvaluep).node_kw_arg)) {
10612 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
10615#line 10616 "parse.c"
10618 case YYSYMBOL_f_block_kw:
10619#line 2611 "parse.y"
10621 if ((NODE *)((*yyvaluep).node_kw_arg) == (NODE *)-1) {
10622 rb_parser_printf(p,
"NODE_SPECIAL");
10624 else if (((*yyvaluep).node_kw_arg)) {
10625 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
10628#line 10629 "parse.c"
10631 case YYSYMBOL_f_no_kwarg:
10632#line 2620 "parse.y"
10634 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10636#line 10637 "parse.c"
10639 case YYSYMBOL_f_kwrest:
10640#line 2620 "parse.y"
10642 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10644#line 10645 "parse.c"
10647 case YYSYMBOL_f_rest_arg:
10648#line 2620 "parse.y"
10650 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10652#line 10653 "parse.c"
10655 case YYSYMBOL_f_block_arg:
10656#line 2620 "parse.y"
10658 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10660#line 10661 "parse.c"
10663 case YYSYMBOL_opt_f_block_arg:
10664#line 2620 "parse.y"
10666 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10668#line 10669 "parse.c"
10671 case YYSYMBOL_singleton:
10672#line 2611 "parse.y"
10674 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10675 rb_parser_printf(p,
"NODE_SPECIAL");
10677 else if (((*yyvaluep).node)) {
10678 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10681#line 10682 "parse.c"
10684 case YYSYMBOL_assoc_list:
10685#line 2611 "parse.y"
10687 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10688 rb_parser_printf(p,
"NODE_SPECIAL");
10690 else if (((*yyvaluep).node)) {
10691 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10694#line 10695 "parse.c"
10697 case YYSYMBOL_assocs:
10698#line 2611 "parse.y"
10700 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10701 rb_parser_printf(p,
"NODE_SPECIAL");
10703 else if (((*yyvaluep).node)) {
10704 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10707#line 10708 "parse.c"
10710 case YYSYMBOL_assoc:
10711#line 2611 "parse.y"
10713 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10714 rb_parser_printf(p,
"NODE_SPECIAL");
10716 else if (((*yyvaluep).node)) {
10717 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10720#line 10721 "parse.c"
10723 case YYSYMBOL_operation:
10724#line 2620 "parse.y"
10726 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10728#line 10729 "parse.c"
10731 case YYSYMBOL_operation2:
10732#line 2620 "parse.y"
10734 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10736#line 10737 "parse.c"
10739 case YYSYMBOL_operation3:
10740#line 2620 "parse.y"
10742 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10744#line 10745 "parse.c"
10747 case YYSYMBOL_dot_or_colon:
10748#line 2620 "parse.y"
10750 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10752#line 10753 "parse.c"
10755 case YYSYMBOL_call_op:
10756#line 2620 "parse.y"
10758 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10760#line 10761 "parse.c"
10763 case YYSYMBOL_call_op2:
10764#line 2620 "parse.y"
10766 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
10768#line 10769 "parse.c"
10771 case YYSYMBOL_none:
10772#line 2611 "parse.y"
10774 if ((NODE *)((*yyvaluep).node) == (NODE *)-1) {
10775 rb_parser_printf(p,
"NODE_SPECIAL");
10777 else if (((*yyvaluep).node)) {
10778 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
10781#line 10782 "parse.c"
10787 YY_IGNORE_MAYBE_UNINITIALIZED_END
10796yy_symbol_print (FILE *yyo,
10797 yysymbol_kind_t yykind,
YYSTYPE const *
const yyvaluep, YYLTYPE
const *
const yylocationp,
struct parser_params *p)
10799 YYFPRINTF (yyo,
"%s %s (",
10800 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
10802 YYLOCATION_PRINT (yyo, yylocationp, p);
10803 YYFPRINTF (yyo,
": ");
10804 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
10805 YYFPRINTF (yyo,
")");
10814yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop,
struct parser_params *p)
10816 YYFPRINTF (stderr,
"Stack now");
10817 for (; yybottom <= yytop; yybottom++)
10819 int yybot = *yybottom;
10820 YYFPRINTF (stderr,
" %d", yybot);
10822 YYFPRINTF (stderr,
"\n");
10825# define YY_STACK_PRINT(Bottom, Top, p) \
10828 yy_stack_print ((Bottom), (Top), p); \
10837yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp, YYLTYPE *yylsp,
10840 int yylno = yyrline[yyrule];
10841 int yynrhs = yyr2[yyrule];
10843 YYFPRINTF (stderr,
"Reducing stack by rule %d (line %d):\n",
10844 yyrule - 1, yylno);
10846 for (yyi = 0; yyi < yynrhs; yyi++)
10848 YYFPRINTF (stderr,
" $%d = ", yyi + 1);
10849 yy_symbol_print (stderr,
10850 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
10851 &yyvsp[(yyi + 1) - (yynrhs)],
10852 &(yylsp[(yyi + 1) - (yynrhs)]), p);
10853 YYFPRINTF (stderr,
"\n");
10857# define YY_REDUCE_PRINT(Rule, p) \
10860 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
10869# define YYDPRINTF(Args) ((void) 0)
10870# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p)
10871# define YY_STACK_PRINT(Bottom, Top, p)
10872# define YY_REDUCE_PRINT(Rule, p)
10878# define YYINITDEPTH 200
10889# define YYMAXDEPTH 10000
10897 yysymbol_kind_t yytoken;
10909 yysymbol_kind_t yyarg[],
int yyargn)
10913 int yyn = yypact[+*yyctx->yyssp];
10914 if (!yypact_value_is_default (yyn))
10919 int yyxbegin = yyn < 0 ? -yyn : 0;
10921 int yychecklim = YYLAST - yyn + 1;
10922 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
10924 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
10925 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
10926 && !yytable_value_is_error (yytable[yyx + yyn]))
10930 else if (yycount == yyargn)
10933 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
10936 if (yyarg && yycount == 0 && 0 < yyargn)
10937 yyarg[0] = YYSYMBOL_YYEMPTY;
10945# if defined __GLIBC__ && defined _STRING_H
10946# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
10950yystrlen (
const char *yystr)
10953 for (yylen = 0; yystr[yylen]; yylen++)
10961# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
10962# define yystpcpy stpcpy
10967yystpcpy (
char *yydest,
const char *yysrc)
10969 char *yyd = yydest;
10970 const char *yys = yysrc;
10972 while ((*yyd++ = *yys++) !=
'\0')
10989yytnamerr (
char *yyres,
const char *yystr)
10993 YYPTRDIFF_T yyn = 0;
10994 char const *yyp = yystr;
11000 goto do_not_strip_quotes;
11003 if (*++yyp !=
'\\')
11004 goto do_not_strip_quotes;
11020 do_not_strip_quotes: ;
11024 return yystpcpy (yyres, yystr) - yyres;
11026 return yystrlen (yystr);
11033 yysymbol_kind_t yyarg[],
int yyargn)
11060 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
11064 yyarg[yycount] = yyctx->yytoken;
11066 yyn = yypcontext_expected_tokens (yyctx,
11067 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
11068 if (yyn == YYENOMEM)
11085yysyntax_error (YYPTRDIFF_T *yymsg_alloc,
char **yymsg,
11088 enum { YYARGS_MAX = 5 };
11090 const char *yyformat = YY_NULLPTR;
11093 yysymbol_kind_t yyarg[YYARGS_MAX];
11095 YYPTRDIFF_T yysize = 0;
11098 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
11099 if (yycount == YYENOMEM)
11104#define YYCASE_(N, S) \
11109 YYCASE_(0, YY_(
"syntax error"));
11110 YYCASE_(1, YY_(
"syntax error, unexpected %s"));
11111 YYCASE_(2, YY_(
"syntax error, unexpected %s, expecting %s"));
11112 YYCASE_(3, YY_(
"syntax error, unexpected %s, expecting %s or %s"));
11113 YYCASE_(4, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
11114 YYCASE_(5, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
11120 yysize = yystrlen (yyformat) - 2 * yycount + 1;
11123 for (yyi = 0; yyi < yycount; ++yyi)
11125 YYPTRDIFF_T yysize1
11126 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
11127 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
11134 if (*yymsg_alloc < yysize)
11136 *yymsg_alloc = 2 * yysize;
11137 if (! (yysize <= *yymsg_alloc
11138 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
11139 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
11147 char *yyp = *yymsg;
11149 while ((*yyp = *yyformat) !=
'\0')
11150 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
11152 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
11170yydestruct (
const char *yymsg,
11174 YY_USE (yylocationp);
11177 yymsg =
"Deleting";
11178 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp, p);
11180 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
11183 case YYSYMBOL_245_16:
11184#line 2648 "parse.y"
11186 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11188#line 11189 "parse.c"
11191 case YYSYMBOL_246_17:
11192#line 2648 "parse.y"
11194 if (CASE_LABELS_ENABLED_P(((*yyvaluep).labels))) st_free_table(((*yyvaluep).labels));
11196#line 11197 "parse.c"
11202 YY_IGNORE_MAYBE_UNINITIALIZED_END
11225static const YYSTYPE yyval_default = {};
11226(void) yyval_default;
11228YY_INITIAL_VALUE (
static const YYSTYPE yyval_default;)
11230YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
11233static const YYLTYPE yyloc_default
11234# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
11238YYLTYPE yylloc = yyloc_default;
11244 yy_state_fast_t yystate = 0;
11246 int yyerrstatus = 0;
11252 YYPTRDIFF_T yystacksize = YYINITDEPTH;
11255 yy_state_t yyssa[YYINITDEPTH];
11256 yy_state_t *yyss = yyssa;
11257 yy_state_t *yyssp = yyss;
11265 YYLTYPE yylsa[YYINITDEPTH];
11266 YYLTYPE *yyls = yylsa;
11267 YYLTYPE *yylsp = yyls;
11273 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
11280 YYLTYPE yyerror_range[3];
11283 char yymsgbuf[128];
11284 char *yymsg = yymsgbuf;
11285 YYPTRDIFF_T yymsg_alloc =
sizeof yymsgbuf;
11287#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
11293 YYDPRINTF ((stderr,
"Starting parse\n"));
11299#line 2655 "parse.y"
11301 RUBY_SET_YYLLOC_OF_NONE(yylloc);
11304#line 11305 "parse.c"
11323 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
11324 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
11325 YY_IGNORE_USELESS_CAST_BEGIN
11326 *yyssp = YY_CAST (yy_state_t, yystate);
11327 YY_IGNORE_USELESS_CAST_END
11328 YY_STACK_PRINT (yyss, yyssp, p);
11330 if (yyss + yystacksize - 1 <= yyssp)
11331#if !defined yyoverflow && !defined YYSTACK_RELOCATE
11336 YYPTRDIFF_T yysize = yyssp - yyss + 1;
11338# if defined yyoverflow
11343 yy_state_t *yyss1 = yyss;
11345 YYLTYPE *yyls1 = yyls;
11351 yyoverflow (YY_(
"memory exhausted"),
11352 &yyss1, yysize * YYSIZEOF (*yyssp),
11353 &yyvs1, yysize * YYSIZEOF (*yyvsp),
11354 &yyls1, yysize * YYSIZEOF (*yylsp),
11362 if (YYMAXDEPTH <= yystacksize)
11365 if (YYMAXDEPTH < yystacksize)
11366 yystacksize = YYMAXDEPTH;
11369 yy_state_t *yyss1 = yyss;
11370 union yyalloc *yyptr =
11371 YY_CAST (
union yyalloc *,
11372 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
11375 YYSTACK_RELOCATE (yyss_alloc, yyss);
11376 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
11377 YYSTACK_RELOCATE (yyls_alloc, yyls);
11378# undef YYSTACK_RELOCATE
11379 if (yyss1 != yyssa)
11380 YYSTACK_FREE (yyss1);
11384 yyssp = yyss + yysize - 1;
11385 yyvsp = yyvs + yysize - 1;
11386 yylsp = yyls + yysize - 1;
11388 YY_IGNORE_USELESS_CAST_BEGIN
11389 YYDPRINTF ((stderr,
"Stack size increased to %ld\n",
11390 YY_CAST (
long, yystacksize)));
11391 YY_IGNORE_USELESS_CAST_END
11393 if (yyss + yystacksize - 1 <= yyssp)
11399 if (yystate == YYFINAL)
11413 yyn = yypact[yystate];
11414 if (yypact_value_is_default (yyn))
11420 if (yychar == YYEMPTY)
11422 YYDPRINTF ((stderr,
"Reading a token\n"));
11423 yychar = yylex (&yylval, &yylloc, p);
11426 if (yychar <= END_OF_INPUT)
11428 yychar = END_OF_INPUT;
11429 yytoken = YYSYMBOL_YYEOF;
11430 YYDPRINTF ((stderr,
"Now at end of input.\n"));
11432 else if (yychar == YYerror)
11439 yytoken = YYSYMBOL_YYerror;
11440 yyerror_range[1] = yylloc;
11445 yytoken = YYTRANSLATE (yychar);
11446 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc, p);
11452 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
11454 yyn = yytable[yyn];
11457 if (yytable_value_is_error (yyn))
11469 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc, p);
11471 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
11473 YY_IGNORE_MAYBE_UNINITIALIZED_END
11476#line 2658 "parse.y"
11478#line 11479 "parse.c"
11490 yyn = yydefact[yystate];
11511 yyval = yyvsp[1-yylen];
11513#line 2659 "parse.y"
11514 {before_reduce(yylen, p);}
11515#line 11516 "parse.c"
11519 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
11520 yyerror_range[1] = yyloc;
11521 YY_REDUCE_PRINT (yyn, p);
11525#line 2967 "parse.y"
11527 SET_LEX_STATE(EXPR_BEG);
11528 local_push(p, ifndef_ripper(1)+0);
11530 if (!ifndef_ripper(p->do_loop) + 0) init_block_exit(p);
11532#line 11533 "parse.c"
11536#line 2974 "parse.y"
11538 if ((yyvsp[0].node) && !compile_for_eval) {
11539 NODE *node = (yyvsp[0].node);
11541 if (nd_type_p(node, NODE_BLOCK)) {
11542 while (RNODE_BLOCK(node)->nd_next) {
11543 node = RNODE_BLOCK(node)->nd_next;
11545 node = RNODE_BLOCK(node)->nd_head;
11547 node = remove_begin(node);
11548 void_expr(p, node);
11550 p->eval_tree = NEW_SCOPE(0, block_append(p, p->eval_tree, (yyvsp[0].node)), &(yyloc));
11554#line 11555 "parse.c"
11558#line 2994 "parse.y"
11560 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
11562#line 11563 "parse.c"
11566#line 3000 "parse.y"
11568 (yyval.node) = NEW_BEGIN(0, &(yyloc));
11571#line 11572 "parse.c"
11575#line 3005 "parse.y"
11577 (yyval.node) = newline_node((yyvsp[0].node));
11580#line 11581 "parse.c"
11584#line 3010 "parse.y"
11586 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
11589#line 11590 "parse.c"
11593#line 3017 "parse.y"
11595 clear_block_exit(p,
true);
11596 (yyval.node) = (yyvsp[0].node);
11598#line 11599 "parse.c"
11602#line 3022 "parse.y"
11604 (yyval.node) = (yyvsp[0].node);
11607#line 11608 "parse.c"
11611#line 3028 "parse.y"
11612 {(yyval.node_exits) = init_block_exit(p);}
11613#line 11614 "parse.c"
11617#line 3031 "parse.y"
11619 restore_block_exit(p, (yyvsp[-2].node_exits));
11620 p->eval_tree_begin = block_append(p, p->eval_tree_begin,
11621 NEW_BEGIN((yyvsp[-1].node), &(yyloc)));
11622 (yyval.node) = NEW_BEGIN(0, &(yyloc));
11625#line 11626 "parse.c"
11629#line 3044 "parse.y"
11631 if (!(yyvsp[-1].node)) yyerror1(&(yylsp[0]),
"else without rescue is useless");
11632 next_rescue_context(&p->ctxt, &(yyvsp[-2].ctxt), after_else);
11634#line 11635 "parse.c"
11638#line 3049 "parse.y"
11640 next_rescue_context(&p->ctxt, &(yyvsp[-4].ctxt), after_ensure);
11642#line 11643 "parse.c"
11646#line 3053 "parse.y"
11648 (yyval.node) = new_bodystmt(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11651#line 11652 "parse.c"
11655#line 3060 "parse.y"
11657 next_rescue_context(&p->ctxt, &(yyvsp[-1].ctxt), after_ensure);
11659#line 11660 "parse.c"
11663#line 3064 "parse.y"
11665 (yyval.node) = new_bodystmt(p, (yyvsp[-4].node), (yyvsp[-2].node), 0, (yyvsp[0].node), &(yyloc));
11668#line 11669 "parse.c"
11672#line 3071 "parse.y"
11674 void_stmts(p, (yyval.node) = (yyvsp[-1].node));
11676#line 11677 "parse.c"
11680#line 3077 "parse.y"
11682 (yyval.node) = NEW_BEGIN(0, &(yyloc));
11685#line 11686 "parse.c"
11689#line 3082 "parse.y"
11691 (yyval.node) = newline_node((yyvsp[0].node));
11694#line 11695 "parse.c"
11698#line 3087 "parse.y"
11700 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
11703#line 11704 "parse.c"
11707#line 3094 "parse.y"
11709 (yyval.node) = (yyvsp[0].node);
11711#line 11712 "parse.c"
11715#line 3098 "parse.y"
11717 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
11719#line 11720 "parse.c"
11723#line 3102 "parse.y"
11725 (yyval.node) = (yyvsp[0].node);
11727#line 11728 "parse.c"
11731#line 3107 "parse.y"
11732 {(yyval.node_exits) = allow_block_exit(p);}
11733#line 11734 "parse.c"
11737#line 3110 "parse.y"
11739 (yyval.ctxt) = (yyvsp[0].ctxt);
11740 p->ctxt.in_rescue = before_rescue;
11743#line 11744 "parse.c"
11747#line 3116 "parse.y"
11748 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
11749#line 11750 "parse.c"
11753#line 3117 "parse.y"
11755 (yyval.node) = NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-3]));
11758#line 11759 "parse.c"
11762#line 3122 "parse.y"
11764 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc), &(yylsp[-2]));
11767#line 11768 "parse.c"
11771#line 3127 "parse.y"
11775 buf[1] = (char)RNODE_BACK_REF((yyvsp[0].node))->nd_nth;
11776 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), rb_intern2(buf, 2), &(yyloc), &(yylsp[-2]));
11779#line 11780 "parse.c"
11783#line 3135 "parse.y"
11785 static const char mesg[] =
"can't make alias for the number variables";
11787 yyerror1(&(yylsp[0]), mesg);
11789 (yyval.node) = NEW_ERROR(&(yyloc));
11792#line 11793 "parse.c"
11796#line 3144 "parse.y"
11798 nd_set_first_loc((yyvsp[0].node), (yylsp[-1]).beg_pos);
11799 RNODE_UNDEF((yyvsp[0].node))->keyword_loc = (yylsp[-1]);
11800 (yyval.node) = (yyvsp[0].node);
11803#line 11804 "parse.c"
11807#line 3151 "parse.y"
11809 (yyval.node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
11810 fixpos((yyval.node), (yyvsp[0].node));
11813#line 11814 "parse.c"
11817#line 3157 "parse.y"
11819 (yyval.node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
11820 fixpos((yyval.node), (yyvsp[0].node));
11823#line 11824 "parse.c"
11827#line 3163 "parse.y"
11829 clear_block_exit(p,
false);
11830 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
11831 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
11834 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
11838#line 11839 "parse.c"
11842#line 3174 "parse.y"
11844 clear_block_exit(p,
false);
11845 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
11846 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc), &(yylsp[-1]), &NULL_LOC);
11849 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc), &(yylsp[-1]), &NULL_LOC);
11853#line 11854 "parse.c"
11857#line 3185 "parse.y"
11859 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
11861 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
11862 resq = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
11863 (yyval.node) = NEW_RESCUE(remove_begin((yyvsp[-3].node)), resq, 0, &(yyloc));
11866#line 11867 "parse.c"
11870#line 3194 "parse.y"
11872 if (p->ctxt.in_def) {
11873 rb_warn0(
"END in method; use at_exit");
11875 restore_block_exit(p, (yyvsp[-3].node_exits));
11876 p->ctxt = (yyvsp[-4].ctxt);
11878 NODE *scope = NEW_SCOPE2(0 , 0 , (yyvsp[-1].node) , &(yyloc));
11879 (yyval.node) = NEW_POSTEXE(scope, &(yyloc));
11883#line 11884 "parse.c"
11887#line 3208 "parse.y"
11889 value_expr((yyvsp[0].node));
11890 (yyval.node) = node_assign(p, (NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11893#line 11894 "parse.c"
11897#line 3214 "parse.y"
11899 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11902#line 11903 "parse.c"
11906#line 3220 "parse.y"
11908 p->ctxt.in_rescue = (yyvsp[-4].ctxt).in_rescue;
11909 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
11910 (yyvsp[0].node) = NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc);
11911 loc.beg_pos = (yylsp[-3]).beg_pos;
11912 (yyvsp[-3].node) = NEW_RESCUE((yyvsp[-3].node), (yyvsp[0].node), 0, &loc);
11913 (yyval.node) = node_assign(p, (NODE *)(yyvsp[-6].node_masgn), (yyvsp[-3].node), (yyvsp[-4].ctxt), &(yyloc));
11916#line 11917 "parse.c"
11920#line 3230 "parse.y"
11922 (yyval.node) = node_assign(p, (NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11925#line 11926 "parse.c"
11929#line 3236 "parse.y"
11932 (yyval.node) = NEW_ERROR(&(yyloc));
11934#line 11935 "parse.c"
11938#line 3243 "parse.y"
11940 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11943#line 11944 "parse.c"
11947#line 3248 "parse.y"
11949 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11952#line 11953 "parse.c"
11956#line 3253 "parse.y"
11958 (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]));
11962#line 11963 "parse.c"
11966#line 3259 "parse.y"
11968 (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]));
11971#line 11972 "parse.c"
11975#line 3259 "parse.y"
11977 (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]));
11980#line 11981 "parse.c"
11984#line 3264 "parse.y"
11986 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
11987 (yyval.node) = new_const_op_assign(p, NEW_COLON2((yyvsp[-5].node), (yyvsp[-3].
id), &loc), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11990#line 11991 "parse.c"
11994#line 3270 "parse.y"
11996 (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]));
11999#line 12000 "parse.c"
12003#line 3275 "parse.y"
12005 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12006 restore_defun(p, (yyvsp[-3].node_def_temp));
12007 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
12008 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12009 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
12014#line 12015 "parse.c"
12018#line 3286 "parse.y"
12020 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
12021 restore_defun(p, (yyvsp[-3].node_def_temp));
12022 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
12023 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12024 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
12029#line 12030 "parse.c"
12033#line 3297 "parse.y"
12035 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
12036 (yyval.node) = NEW_ERROR(&(yyloc));
12039#line 12040 "parse.c"
12043#line 3306 "parse.y"
12045 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12046 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12049#line 12050 "parse.c"
12053#line 3312 "parse.y"
12055 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12058#line 12059 "parse.c"
12062#line 3319 "parse.y"
12064 value_expr((yyvsp[0].node));
12065 (yyval.node) = (yyvsp[0].node);
12067#line 12068 "parse.c"
12071#line 3324 "parse.y"
12073 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12074 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
12075 value_expr((yyvsp[-3].node));
12076 (yyval.node) = NEW_RESCUE((yyvsp[-3].node), NEW_RESBODY(0, 0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc));
12079#line 12080 "parse.c"
12083#line 3336 "parse.y"
12085 (yyval.node) = logop(p, idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12088#line 12089 "parse.c"
12092#line 3341 "parse.y"
12094 (yyval.node) = logop(p, idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12097#line 12098 "parse.c"
12101#line 3346 "parse.y"
12103 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12106#line 12107 "parse.c"
12110#line 3351 "parse.y"
12112 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
12115#line 12116 "parse.c"
12119#line 3356 "parse.y"
12121 value_expr((yyvsp[-1].node));
12123#line 12124 "parse.c"
12127#line 3361 "parse.y"
12129 pop_pktbl(p, (yyvsp[-1].tbl));
12130 pop_pvtbl(p, (yyvsp[-2].tbl));
12131 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12132 (yyval.node) = NEW_CASE3((yyvsp[-6].node), NEW_IN((yyvsp[0].node), 0, 0, &(yylsp[0])), &(yyloc), &NULL_LOC, &NULL_LOC);
12135#line 12136 "parse.c"
12139#line 3369 "parse.y"
12141 value_expr((yyvsp[-1].node));
12143#line 12144 "parse.c"
12147#line 3374 "parse.y"
12149 pop_pktbl(p, (yyvsp[-1].tbl));
12150 pop_pvtbl(p, (yyvsp[-2].tbl));
12151 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
12152 (yyval.node) = NEW_CASE3((yyvsp[-6].node), NEW_IN((yyvsp[0].node), NEW_TRUE(&(yylsp[0])), NEW_FALSE(&(yylsp[0])), &(yylsp[0])), &(yyloc), &NULL_LOC, &NULL_LOC);
12155#line 12156 "parse.c"
12159#line 3385 "parse.y"
12161 ID fname = (yyvsp[0].id);
12162 numparam_name(p, fname);
12164 p->ctxt.in_def = 1;
12165 p->ctxt.in_rescue = before_rescue;
12166 p->ctxt.cant_return = 0;
12167 (yyval.id) = (yyvsp[0].
id);
12169#line 12170 "parse.c"
12173#line 3397 "parse.y"
12175 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-1].node_def_temp));
12176 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12177 (yyval.node_def_temp)->nd_def = NEW_DEFN((yyvsp[0].
id), 0, &(yyloc));
12180#line 12181 "parse.c"
12184#line 3406 "parse.y"
12186 SET_LEX_STATE(EXPR_FNAME);
12188#line 12189 "parse.c"
12192#line 3410 "parse.y"
12194 SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL);
12195 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-4].node_def_temp));
12196 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
12197 (yyval.node_def_temp)->nd_def = NEW_DEFS((yyvsp[-3].node), (yyvsp[0].
id), 0, &(yyloc));
12200#line 12201 "parse.c"
12204#line 3420 "parse.y"
12206 value_expr((yyvsp[0].node));
12207 (yyval.node) = (yyvsp[0].node);
12209#line 12210 "parse.c"
12213#line 3425 "parse.y"
12215 (yyval.node) = NEW_ERROR(&(yyloc));
12217#line 12218 "parse.c"
12221#line 3430 "parse.y"
12223#line 12224 "parse.c"
12227#line 3430 "parse.y"
12229#line 12230 "parse.c"
12233#line 3431 "parse.y"
12235 (yyval.node) = (yyvsp[-2].node);
12238#line 12239 "parse.c"
12242#line 3443 "parse.y"
12244 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12247#line 12248 "parse.c"
12251#line 3450 "parse.y"
12253 (yyval.node) = (yyvsp[-1].node);
12254 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
12257#line 12258 "parse.c"
12261#line 3458 "parse.y"
12263 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
12266#line 12267 "parse.c"
12270#line 3465 "parse.y"
12272 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
12273 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
12274 (yyval.node) = (NODE *)(yyvsp[-1].node_fcall);
12277#line 12278 "parse.c"
12281#line 3472 "parse.y"
12283 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
12284 (yyvsp[-2].node_fcall)->nd_args = (yyvsp[-1].node);
12285 (yyval.node) = method_add_block(p, (NODE *)(yyvsp[-2].node_fcall), (yyvsp[0].node), &(yyloc));
12286 fixpos((yyval.node), RNODE((yyvsp[-2].node_fcall)));
12287 nd_set_last_loc((yyvsp[-2].node_fcall), (yylsp[-1]).end_pos);
12290#line 12291 "parse.c"
12294#line 3481 "parse.y"
12296 (yyval.node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
12299#line 12300 "parse.c"
12303#line 3486 "parse.y"
12305 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
12308#line 12309 "parse.c"
12312#line 3491 "parse.y"
12314 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), 0, &(yylsp[-1]), &(yyloc));
12317#line 12318 "parse.c"
12321#line 3496 "parse.y"
12323 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
12326#line 12327 "parse.c"
12330#line 3501 "parse.y"
12332 set_embraced_location((yyvsp[-1].node), &(yylsp[-2]), &(yylsp[0]));
12333 (yyval.node) = new_command_qcall(p, idCOLON2, (yyvsp[-5].node), (yyvsp[-3].
id), 0, (yyvsp[-1].node), &(yylsp[-3]), &(yyloc));
12336#line 12337 "parse.c"
12340#line 3507 "parse.y"
12342 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc));
12343 fixpos((yyval.node), (yyvsp[0].node));
12346#line 12347 "parse.c"
12350#line 3513 "parse.y"
12352 (yyval.node) = new_yield(p, (yyvsp[0].node), &(yyloc));
12353 fixpos((yyval.node), (yyvsp[0].node));
12356#line 12357 "parse.c"
12360#line 3519 "parse.y"
12362 (yyval.node) = NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc), &(yylsp[-1]));
12365#line 12366 "parse.c"
12369#line 3524 "parse.y"
12372 args = ret_args(p, (yyvsp[0].node));
12373 (yyval.node) = add_block_exit(p, NEW_BREAK(args, &(yyloc), &(yylsp[-1])));
12376#line 12377 "parse.c"
12380#line 3531 "parse.y"
12383 args = ret_args(p, (yyvsp[0].node));
12384 (yyval.node) = add_block_exit(p, NEW_NEXT(args, &(yyloc), &(yylsp[-1])));
12387#line 12388 "parse.c"
12391#line 3541 "parse.y"
12393 (yyval.node_masgn) = (yyvsp[-1].node_masgn);
12396#line 12397 "parse.c"
12400#line 3549 "parse.y"
12402 (yyval.node_masgn) = NEW_MASGN(NEW_LIST((NODE *)(yyvsp[-1].node_masgn), &(yyloc)), 0, &(yyloc));
12405#line 12406 "parse.c"
12409#line 3556 "parse.y"
12411 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
12414#line 12415 "parse.c"
12418#line 3561 "parse.y"
12420 (yyval.node_masgn) = NEW_MASGN(list_append(p, (yyvsp[-1].node), (yyvsp[0].node)), 0, &(yyloc));
12423#line 12424 "parse.c"
12427#line 3566 "parse.y"
12429 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12432#line 12433 "parse.c"
12436#line 3571 "parse.y"
12438 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
12441#line 12442 "parse.c"
12445#line 3576 "parse.y"
12447 (yyval.node_masgn) = NEW_MASGN((yyvsp[-1].node), NODE_SPECIAL_NO_NAME_REST, &(yyloc));
12450#line 12451 "parse.c"
12454#line 3581 "parse.y"
12456 (yyval.node_masgn) = NEW_MASGN((yyvsp[-3].node), NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
12459#line 12460 "parse.c"
12463#line 3586 "parse.y"
12465 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
12468#line 12469 "parse.c"
12472#line 3591 "parse.y"
12474 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
12477#line 12478 "parse.c"
12481#line 3596 "parse.y"
12483 (yyval.node_masgn) = NEW_MASGN(0, NODE_SPECIAL_NO_NAME_REST, &(yyloc));
12486#line 12487 "parse.c"
12490#line 3601 "parse.y"
12492 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
12495#line 12496 "parse.c"
12499#line 3609 "parse.y"
12501 (yyval.node) = (NODE *)(yyvsp[-1].node_masgn);
12504#line 12505 "parse.c"
12508#line 3616 "parse.y"
12510 (yyval.node) = NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
12513#line 12514 "parse.c"
12517#line 3621 "parse.y"
12519 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
12522#line 12523 "parse.c"
12526#line 3628 "parse.y"
12528 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
12531#line 12532 "parse.c"
12535#line 3633 "parse.y"
12537 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
12540#line 12541 "parse.c"
12544#line 3640 "parse.y"
12547 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
12549#line 12550 "parse.c"
12553#line 3640 "parse.y"
12556 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
12558#line 12559 "parse.c"
12562#line 3645 "parse.y"
12564 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
12567#line 12568 "parse.c"
12571#line 3650 "parse.y"
12573 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
12574 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
12577#line 12578 "parse.c"
12581#line 3656 "parse.y"
12583 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].
id), &(yyloc));
12586#line 12587 "parse.c"
12590#line 3661 "parse.y"
12592 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
12593 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
12596#line 12597 "parse.c"
12600#line 3667 "parse.y"
12603 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc)), &(yyloc));
12605#line 12606 "parse.c"
12609#line 3672 "parse.y"
12612 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
12614#line 12615 "parse.c"
12618#line 3677 "parse.y"
12620 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
12621 (yyval.node) = NEW_ERROR(&(yyloc));
12624#line 12625 "parse.c"
12628#line 3685 "parse.y"
12631 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
12633#line 12634 "parse.c"
12637#line 3685 "parse.y"
12640 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
12642#line 12643 "parse.c"
12646#line 3690 "parse.y"
12648 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
12651#line 12652 "parse.c"
12655#line 3695 "parse.y"
12657 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
12660#line 12661 "parse.c"
12664#line 3700 "parse.y"
12666 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].
id), &(yyloc));
12669#line 12670 "parse.c"
12673#line 3705 "parse.y"
12675 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].
id), &(yyloc));
12678#line 12679 "parse.c"
12682#line 3710 "parse.y"
12685 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc)), &(yyloc));
12687#line 12688 "parse.c"
12691#line 3715 "parse.y"
12694 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
12696#line 12697 "parse.c"
12700#line 3720 "parse.y"
12702 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[0].node));
12703 (yyval.node) = NEW_ERROR(&(yyloc));
12706#line 12707 "parse.c"
12710#line 3728 "parse.y"
12712 static const char mesg[] =
"class/module name must be CONSTANT";
12714 yyerror1(&(yylsp[0]), mesg);
12718#line 12719 "parse.c"
12722#line 3739 "parse.y"
12724 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
12727#line 12728 "parse.c"
12731#line 3744 "parse.y"
12733 (yyval.node) = NEW_COLON2(0, (yyvsp[0].
id), &(yyloc));
12736#line 12737 "parse.c"
12740#line 3749 "parse.y"
12742 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc));
12745#line 12746 "parse.c"
12749#line 3758 "parse.y"
12751 SET_LEX_STATE(EXPR_ENDFN);
12752 (yyval.id) = (yyvsp[0].
id);
12754#line 12755 "parse.c"
12758#line 3766 "parse.y"
12760 (yyval.node) = NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc));
12763#line 12764 "parse.c"
12767#line 3774 "parse.y"
12769 (yyval.node) = NEW_UNDEF((yyvsp[0].node), &(yyloc));
12772#line 12773 "parse.c"
12776#line 3778 "parse.y"
12777 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
12778#line 12779 "parse.c"
12782#line 3779 "parse.y"
12784 nd_set_last_loc((yyvsp[-3].node), (yylsp[0]).end_pos);
12785 rb_parser_ary_push_node(p, RNODE_UNDEF((yyvsp[-3].node))->nd_undefs, (yyvsp[0].node));
12788#line 12789 "parse.c"
12792#line 3786 "parse.y"
12793 { (yyval.id) =
'|'; }
12794#line 12795 "parse.c"
12798#line 3787 "parse.y"
12799 { (yyval.id) =
'^'; }
12800#line 12801 "parse.c"
12804#line 3788 "parse.y"
12805 { (yyval.id) =
'&'; }
12806#line 12807 "parse.c"
12810#line 3789 "parse.y"
12811 { (yyval.id) = tCMP; }
12812#line 12813 "parse.c"
12816#line 3790 "parse.y"
12817 { (yyval.id) = tEQ; }
12818#line 12819 "parse.c"
12822#line 3791 "parse.y"
12823 { (yyval.id) = tEQQ; }
12824#line 12825 "parse.c"
12828#line 3792 "parse.y"
12829 { (yyval.id) = tMATCH; }
12830#line 12831 "parse.c"
12834#line 3793 "parse.y"
12835 { (yyval.id) = tNMATCH; }
12836#line 12837 "parse.c"
12840#line 3794 "parse.y"
12841 { (yyval.id) =
'>'; }
12842#line 12843 "parse.c"
12846#line 3795 "parse.y"
12847 { (yyval.id) = tGEQ; }
12848#line 12849 "parse.c"
12852#line 3796 "parse.y"
12853 { (yyval.id) =
'<'; }
12854#line 12855 "parse.c"
12858#line 3797 "parse.y"
12859 { (yyval.id) = tLEQ; }
12860#line 12861 "parse.c"
12864#line 3798 "parse.y"
12865 { (yyval.id) = tNEQ; }
12866#line 12867 "parse.c"
12870#line 3799 "parse.y"
12871 { (yyval.id) = tLSHFT; }
12872#line 12873 "parse.c"
12876#line 3800 "parse.y"
12877 { (yyval.id) = tRSHFT; }
12878#line 12879 "parse.c"
12882#line 3801 "parse.y"
12883 { (yyval.id) =
'+'; }
12884#line 12885 "parse.c"
12888#line 3802 "parse.y"
12889 { (yyval.id) =
'-'; }
12890#line 12891 "parse.c"
12894#line 3803 "parse.y"
12895 { (yyval.id) =
'*'; }
12896#line 12897 "parse.c"
12900#line 3804 "parse.y"
12901 { (yyval.id) =
'*'; }
12902#line 12903 "parse.c"
12906#line 3805 "parse.y"
12907 { (yyval.id) =
'/'; }
12908#line 12909 "parse.c"
12912#line 3806 "parse.y"
12913 { (yyval.id) =
'%'; }
12914#line 12915 "parse.c"
12918#line 3807 "parse.y"
12919 { (yyval.id) = tPOW; }
12920#line 12921 "parse.c"
12924#line 3808 "parse.y"
12925 { (yyval.id) = tDSTAR; }
12926#line 12927 "parse.c"
12930#line 3809 "parse.y"
12931 { (yyval.id) =
'!'; }
12932#line 12933 "parse.c"
12936#line 3810 "parse.y"
12937 { (yyval.id) =
'~'; }
12938#line 12939 "parse.c"
12942#line 3811 "parse.y"
12943 { (yyval.id) = tUPLUS; }
12944#line 12945 "parse.c"
12948#line 3812 "parse.y"
12949 { (yyval.id) = tUMINUS; }
12950#line 12951 "parse.c"
12954#line 3813 "parse.y"
12955 { (yyval.id) = tAREF; }
12956#line 12957 "parse.c"
12960#line 3814 "parse.y"
12961 { (yyval.id) = tASET; }
12962#line 12963 "parse.c"
12966#line 3815 "parse.y"
12967 { (yyval.id) =
'`'; }
12968#line 12969 "parse.c"
12972#line 3833 "parse.y"
12974 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12977#line 12978 "parse.c"
12981#line 3838 "parse.y"
12983 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12986#line 12987 "parse.c"
12990#line 3843 "parse.y"
12992 (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]));
12995#line 12996 "parse.c"
12999#line 3848 "parse.y"
13001 (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]));
13004#line 13005 "parse.c"
13008#line 3853 "parse.y"
13010 (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]));
13013#line 13014 "parse.c"
13017#line 3858 "parse.y"
13019 (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]));
13022#line 13023 "parse.c"
13026#line 3863 "parse.y"
13028 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
13029 (yyval.node) = new_const_op_assign(p, NEW_COLON2((yyvsp[-5].node), (yyvsp[-3].
id), &loc), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13032#line 13033 "parse.c"
13036#line 3869 "parse.y"
13038 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
13039 (yyval.node) = new_const_op_assign(p, NEW_COLON3((yyvsp[-3].
id), &loc), (yyvsp[-2].
id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
13042#line 13043 "parse.c"
13046#line 3875 "parse.y"
13048 VALUE MAYBE_UNUSED(e) = rb_backref_error(p, (yyvsp[-3].node));
13049 (yyval.node) = NEW_ERROR(&(yyloc));
13052#line 13053 "parse.c"
13056#line 3881 "parse.y"
13058 value_expr((yyvsp[-2].node));
13059 value_expr((yyvsp[0].node));
13060 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
13063#line 13064 "parse.c"
13067#line 3888 "parse.y"
13069 value_expr((yyvsp[-2].node));
13070 value_expr((yyvsp[0].node));
13071 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
13074#line 13075 "parse.c"
13078#line 3895 "parse.y"
13080 value_expr((yyvsp[-1].node));
13081 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
13084#line 13085 "parse.c"
13088#line 3901 "parse.y"
13090 value_expr((yyvsp[-1].node));
13091 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
13094#line 13095 "parse.c"
13098#line 3907 "parse.y"
13100 value_expr((yyvsp[0].node));
13101 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
13104#line 13105 "parse.c"
13108#line 3913 "parse.y"
13110 value_expr((yyvsp[0].node));
13111 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
13114#line 13115 "parse.c"
13118#line 3919 "parse.y"
13120 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13123#line 13124 "parse.c"
13127#line 3924 "parse.y"
13129 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13132#line 13133 "parse.c"
13136#line 3929 "parse.y"
13138 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13141#line 13142 "parse.c"
13145#line 3934 "parse.y"
13147 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13150#line 13151 "parse.c"
13154#line 3939 "parse.y"
13156 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13159#line 13160 "parse.c"
13163#line 3944 "parse.y"
13165 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13168#line 13169 "parse.c"
13172#line 3949 "parse.y"
13174 (yyval.node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)), idUMinus, &(yylsp[-3]), &(yyloc));
13177#line 13178 "parse.c"
13181#line 3954 "parse.y"
13183 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUPlus, &(yylsp[-1]), &(yyloc));
13186#line 13187 "parse.c"
13190#line 3959 "parse.y"
13192 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUMinus, &(yylsp[-1]), &(yyloc));
13195#line 13196 "parse.c"
13199#line 3964 "parse.y"
13201 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13204#line 13205 "parse.c"
13208#line 3969 "parse.y"
13210 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13213#line 13214 "parse.c"
13217#line 3974 "parse.y"
13219 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13222#line 13223 "parse.c"
13226#line 3979 "parse.y"
13228 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13231#line 13232 "parse.c"
13235#line 3985 "parse.y"
13237 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13240#line 13241 "parse.c"
13244#line 3990 "parse.y"
13246 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13249#line 13250 "parse.c"
13253#line 3995 "parse.y"
13255 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13258#line 13259 "parse.c"
13262#line 4000 "parse.y"
13264 (yyval.node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13267#line 13268 "parse.c"
13271#line 4005 "parse.y"
13273 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13276#line 13277 "parse.c"
13280#line 4010 "parse.y"
13282 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
13285#line 13286 "parse.c"
13289#line 4015 "parse.y"
13291 (yyval.node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
13294#line 13295 "parse.c"
13298#line 4020 "parse.y"
13300 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13303#line 13304 "parse.c"
13307#line 4025 "parse.y"
13309 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13312#line 13313 "parse.c"
13316#line 4030 "parse.y"
13318 (yyval.node) = logop(p, idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13321#line 13322 "parse.c"
13325#line 4035 "parse.y"
13327 (yyval.node) = logop(p, idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13330#line 13331 "parse.c"
13334#line 4040 "parse.y"
13336 p->ctxt.in_defined = (yyvsp[-1].ctxt).in_defined;
13337 (yyval.node) = new_defined(p, (yyvsp[0].node), &(yyloc));
13340#line 13341 "parse.c"
13344#line 4046 "parse.y"
13346 value_expr((yyvsp[-5].node));
13347 (yyval.node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
13348 fixpos((yyval.node), (yyvsp[-5].node));
13351#line 13352 "parse.c"
13355#line 4053 "parse.y"
13357 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
13358 restore_defun(p, (yyvsp[-3].node_def_temp));
13359 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
13360 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
13361 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
13366#line 13367 "parse.c"
13370#line 4064 "parse.y"
13372 endless_method_name(p, (yyvsp[-3].node_def_temp)->nd_mid, &(yylsp[-3]));
13373 restore_defun(p, (yyvsp[-3].node_def_temp));
13374 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
13375 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
13376 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
13381#line 13382 "parse.c"
13385#line 4075 "parse.y"
13387 (yyval.node) = (yyvsp[0].node);
13389#line 13390 "parse.c"
13393#line 4082 "parse.y"
13395 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
13396 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
13399#line 13400 "parse.c"
13403#line 4088 "parse.y"
13405 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
13408#line 13409 "parse.c"
13412#line 4094 "parse.y"
13413 {(yyval.id) =
'>';}
13414#line 13415 "parse.c"
13418#line 4095 "parse.y"
13419 {(yyval.id) =
'<';}
13420#line 13421 "parse.c"
13424#line 4096 "parse.y"
13425 {(yyval.id) = idGE;}
13426#line 13427 "parse.c"
13430#line 4097 "parse.y"
13431 {(yyval.id) = idLE;}
13432#line 13433 "parse.c"
13436#line 4101 "parse.y"
13438 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13441#line 13442 "parse.c"
13445#line 4106 "parse.y"
13447 rb_warning1(
"comparison '%s' after comparison", WARN_ID((yyvsp[-1].
id)));
13448 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
13451#line 13452 "parse.c"
13455#line 4114 "parse.y"
13457 (yyval.ctxt) = p->ctxt;
13459#line 13460 "parse.c"
13463#line 4120 "parse.y"
13465 p->ctxt.in_defined = 1;
13466 (yyval.ctxt) = (yyvsp[0].ctxt);
13468#line 13469 "parse.c"
13472#line 4127 "parse.y"
13474 p->ctxt.in_rescue = after_rescue;
13475 (yyval.ctxt) = (yyvsp[0].ctxt);
13477#line 13478 "parse.c"
13481#line 4134 "parse.y"
13483 value_expr((yyvsp[0].node));
13484 (yyval.node) = (yyvsp[0].node);
13486#line 13487 "parse.c"
13490#line 4142 "parse.y"
13492 (yyval.node) = (yyvsp[-1].node);
13494#line 13495 "parse.c"
13498#line 4146 "parse.y"
13500 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
13503#line 13504 "parse.c"
13507#line 4151 "parse.y"
13509 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
13512#line 13513 "parse.c"
13516#line 4158 "parse.y"
13518 value_expr((yyvsp[0].node));
13519 (yyval.node) = (yyvsp[0].node);
13521#line 13522 "parse.c"
13525#line 4163 "parse.y"
13527 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
13528 value_expr((yyvsp[-3].node));
13529 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
13532#line 13533 "parse.c"
13536#line 4172 "parse.y"
13538 (yyval.node) = (yyvsp[-1].node);
13541#line 13542 "parse.c"
13545#line 4177 "parse.y"
13547 if (!check_forwarding_args(p)) {
13551 (yyval.node) = new_args_forward_call(p, (yyvsp[-3].node), &(yylsp[-1]), &(yyloc));
13555#line 13556 "parse.c"
13559#line 4187 "parse.y"
13561 if (!check_forwarding_args(p)) {
13565 (yyval.node) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
13569#line 13570 "parse.c"
13573#line 4200 "parse.y"
13575 (yyval.node) = (yyvsp[0].node) ? (yyvsp[0].node) : NODE_SPECIAL_EMPTY_ARGS;
13577#line 13578 "parse.c"
13581#line 4208 "parse.y"
13583 (yyval.node) = (yyvsp[-1].node);
13585#line 13586 "parse.c"
13589#line 4212 "parse.y"
13591 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
13594#line 13595 "parse.c"
13598#line 4217 "parse.y"
13600 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
13603#line 13604 "parse.c"
13607#line 4224 "parse.y"
13609 value_expr((yyvsp[0].node));
13610 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
13613#line 13614 "parse.c"
13617#line 4230 "parse.y"
13619 (yyval.node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node_block_pass));
13622#line 13623 "parse.c"
13626#line 4235 "parse.y"
13628 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
13629 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
13632#line 13633 "parse.c"
13636#line 4241 "parse.y"
13638 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
13639 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
13642#line 13643 "parse.c"
13646#line 4250 "parse.y"
13657 case '(':
case tLPAREN:
case tLPAREN_ARG:
case '[':
case tLBRACK:
13660 if (lookahead) CMDARG_POP();
13662 if (lookahead) CMDARG_PUSH(0);
13664#line 13665 "parse.c"
13668#line 4268 "parse.y"
13681 if (lookahead) CMDARG_POP();
13683 if (lookahead) CMDARG_PUSH(0);
13684 (yyval.node) = (yyvsp[0].node);
13687#line 13688 "parse.c"
13691#line 4289 "parse.y"
13693 (yyval.node_block_pass) = NEW_BLOCK_PASS((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13696#line 13697 "parse.c"
13700#line 4294 "parse.y"
13702 forwarding_arg_check(p, idFWD_BLOCK, idFWD_ALL,
"block");
13703 (yyval.node_block_pass) = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, &(yylsp[0])), &(yyloc), &(yylsp[0]));
13706#line 13707 "parse.c"
13710#line 4302 "parse.y"
13712 (yyval.node_block_pass) = (yyvsp[0].node_block_pass);
13715#line 13716 "parse.c"
13719#line 4307 "parse.y"
13721 (yyval.node_block_pass) = 0;
13724#line 13725 "parse.c"
13728#line 4315 "parse.y"
13730 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
13733#line 13734 "parse.c"
13737#line 4320 "parse.y"
13739 (yyval.node) = (yyvsp[0].node);
13742#line 13743 "parse.c"
13746#line 4325 "parse.y"
13748 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
13751#line 13752 "parse.c"
13755#line 4330 "parse.y"
13757 (yyval.node) = rest_arg_append(p, (yyvsp[-2].node), RNODE_SPLAT((yyvsp[0].node))->nd_head, &(yyloc));
13760#line 13761 "parse.c"
13764#line 4338 "parse.y"
13766 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13769#line 13770 "parse.c"
13773#line 4343 "parse.y"
13775 forwarding_arg_check(p, idFWD_REST, idFWD_ALL,
"rest");
13776 (yyval.node) = NEW_SPLAT(NEW_LVAR(idFWD_REST, &(yylsp[0])), &(yyloc), &(yylsp[0]));
13779#line 13780 "parse.c"
13783#line 4357 "parse.y"
13785 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
13788#line 13789 "parse.c"
13792#line 4362 "parse.y"
13794 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
13797#line 13798 "parse.c"
13801#line 4367 "parse.y"
13803 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
13806#line 13807 "parse.c"
13810#line 4388 "parse.y"
13812 (yyval.node) = (NODE *)NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
13815#line 13816 "parse.c"
13819#line 4393 "parse.y"
13823#line 13824 "parse.c"
13827#line 4398 "parse.y"
13830 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
13831 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
13832 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
13835#line 13836 "parse.c"
13839#line 4405 "parse.y"
13840 {SET_LEX_STATE(EXPR_ENDARG);}
13841#line 13842 "parse.c"
13845#line 4406 "parse.y"
13847 if (nd_type_p((yyvsp[-2].node), NODE_SELF)) RNODE_SELF((yyvsp[-2].node))->nd_state = 0;
13848 (yyval.node) = (yyvsp[-2].node);
13851#line 13852 "parse.c"
13855#line 4412 "parse.y"
13857 if (nd_type_p((yyvsp[-1].node), NODE_SELF)) RNODE_SELF((yyvsp[-1].node))->nd_state = 0;
13858 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
13861#line 13862 "parse.c"
13865#line 4418 "parse.y"
13867 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc));
13870#line 13871 "parse.c"
13874#line 4423 "parse.y"
13876 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
13879#line 13880 "parse.c"
13883#line 4428 "parse.y"
13885 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
13888#line 13889 "parse.c"
13892#line 4433 "parse.y"
13894 (yyval.node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
13895 RNODE_HASH((yyval.node))->nd_brace = TRUE;
13898#line 13899 "parse.c"
13902#line 4439 "parse.y"
13904 (yyval.node) = NEW_RETURN(0, &(yyloc), &(yylsp[0]));
13907#line 13908 "parse.c"
13911#line 4444 "parse.y"
13913 (yyval.node) = new_yield(p, (yyvsp[-1].node), &(yyloc));
13916#line 13917 "parse.c"
13920#line 4449 "parse.y"
13922 (yyval.node) = NEW_YIELD(0, &(yyloc));
13925#line 13926 "parse.c"
13929#line 4454 "parse.y"
13931 (yyval.node) = NEW_YIELD(0, &(yyloc));
13934#line 13935 "parse.c"
13938#line 4459 "parse.y"
13940 p->ctxt.in_defined = (yyvsp[-2].ctxt).in_defined;
13941 (yyval.node) = new_defined(p, (yyvsp[-1].node), &(yyloc));
13944#line 13945 "parse.c"
13948#line 4465 "parse.y"
13950 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])), METHOD_NOT, &(yylsp[-3]), &(yyloc));
13953#line 13954 "parse.c"
13957#line 4470 "parse.y"
13959 (yyval.node) = call_uni_op(p, method_cond(p, new_nil(&(yylsp[-1])), &(yylsp[-1])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
13962#line 13963 "parse.c"
13966#line 4475 "parse.y"
13968 (yyval.node) = method_add_block(p, (NODE *)(yyvsp[-1].node_fcall), (yyvsp[0].node), &(yyloc));
13971#line 13972 "parse.c"
13975#line 4481 "parse.y"
13977 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
13978 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13981#line 13982 "parse.c"
13985#line 4491 "parse.y"
13987 (yyval.node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
13988 fixpos((yyval.node), (yyvsp[-4].node));
13991#line 13992 "parse.c"
13995#line 4500 "parse.y"
13997 (yyval.node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[-3]), &(yylsp[0]));
13998 fixpos((yyval.node), (yyvsp[-4].node));
14001#line 14002 "parse.c"
14005#line 4508 "parse.y"
14007 restore_block_exit(p, (yyvsp[-3].node_exits));
14008 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14009 fixpos((yyval.node), (yyvsp[-2].node));
14012#line 14013 "parse.c"
14016#line 4517 "parse.y"
14018 restore_block_exit(p, (yyvsp[-3].node_exits));
14019 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc), &(yylsp[-3]), &(yylsp[0]));
14020 fixpos((yyval.node), (yyvsp[-2].node));
14023#line 14024 "parse.c"
14027#line 4524 "parse.y"
14029 (yyval.labels) = p->case_labels;
14030 p->case_labels = CHECK_LITERAL_WHEN;
14032#line 14033 "parse.c"
14036#line 4530 "parse.y"
14038 if (CASE_LABELS_ENABLED_P(p->case_labels)) st_free_table(p->case_labels);
14039 p->case_labels = (yyvsp[-2].labels);
14040 (yyval.node) = NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-5]), &(yylsp[0]));
14041 fixpos((yyval.node), (yyvsp[-4].node));
14044#line 14045 "parse.c"
14048#line 4538 "parse.y"
14050 (yyval.labels) = p->case_labels;
14051 p->case_labels = 0;
14053#line 14054 "parse.c"
14057#line 4544 "parse.y"
14059 if (p->case_labels) st_free_table(p->case_labels);
14060 p->case_labels = (yyvsp[-2].labels);
14061 (yyval.node) = NEW_CASE2((yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14064#line 14065 "parse.c"
14068#line 4553 "parse.y"
14070 (yyval.node) = NEW_CASE3((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc), &(yylsp[-4]), &(yylsp[0]));
14073#line 14074 "parse.c"
14077#line 4560 "parse.y"
14079 restore_block_exit(p, (yyvsp[-5].node_exits));
14089 ID id = internal_id(p);
14090 rb_node_args_aux_t *m = NEW_ARGS_AUX(0, 0, &NULL_LOC);
14091 rb_node_args_t *args;
14092 NODE *scope, *internal_var = NEW_DVAR(
id, &(yylsp[-4]));
14093 rb_ast_id_table_t *tbl = rb_ast_new_local_table(p->ast, 1);
14096 switch (nd_type((yyvsp[-4].node))) {
14099 set_nd_value(p, (yyvsp[-4].node), internal_var);
14102 m->nd_next = (yyvsp[-4].node);
14105 m->nd_next = node_assign(p, (yyvsp[-4].node), NEW_FOR_MASGN(internal_var, &(yylsp[-4])), NO_LEX_CTXT, &(yylsp[-4]));
14108 m->nd_next = node_assign(p, (NODE *)NEW_MASGN(NEW_LIST((yyvsp[-4].node), &(yylsp[-4])), 0, &(yylsp[-4])), internal_var, NO_LEX_CTXT, &(yylsp[-4]));
14111 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
14112 scope = NEW_SCOPE2(tbl, args, (yyvsp[-1].node), &(yyloc));
14113 (yyval.node) = NEW_FOR((yyvsp[-2].node), scope, &(yyloc));
14114 fixpos((yyval.node), (yyvsp[-4].node));
14117#line 14118 "parse.c"
14121#line 4600 "parse.y"
14123 begin_definition(
"class", &(yylsp[-2]), &(yylsp[-1]));
14125#line 14126 "parse.c"
14129#line 4605 "parse.y"
14131 (yyval.node) = NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc));
14132 nd_set_line(RNODE_CLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14133 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14134 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14137 p->ctxt.in_class = (yyvsp[-5].ctxt).in_class;
14138 p->ctxt.cant_return = (yyvsp[-5].ctxt).cant_return;
14139 p->ctxt.shareable_constant_value = (yyvsp[-5].ctxt).shareable_constant_value;
14141#line 14142 "parse.c"
14145#line 4617 "parse.y"
14147 begin_definition(
"", &(yylsp[-2]), &(yylsp[-1]));
14149#line 14150 "parse.c"
14153#line 4623 "parse.y"
14155 (yyval.node) = NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
14156 nd_set_line(RNODE_SCLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14157 set_line_body((yyvsp[-1].node), nd_line((yyvsp[-4].node)));
14158 fixpos((yyval.node), (yyvsp[-4].node));
14161 p->ctxt.in_def = (yyvsp[-6].ctxt).in_def;
14162 p->ctxt.in_class = (yyvsp[-6].ctxt).in_class;
14163 p->ctxt.cant_return = (yyvsp[-6].ctxt).cant_return;
14164 p->ctxt.shareable_constant_value = (yyvsp[-6].ctxt).shareable_constant_value;
14166#line 14167 "parse.c"
14170#line 4636 "parse.y"
14172 begin_definition(
"module", &(yylsp[-1]), &(yylsp[0]));
14174#line 14175 "parse.c"
14178#line 4641 "parse.y"
14180 (yyval.node) = NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
14181 nd_set_line(RNODE_MODULE((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14182 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
14183 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
14186 p->ctxt.in_class = (yyvsp[-4].ctxt).in_class;
14187 p->ctxt.cant_return = (yyvsp[-4].ctxt).cant_return;
14188 p->ctxt.shareable_constant_value = (yyvsp[-4].ctxt).shareable_constant_value;
14190#line 14191 "parse.c"
14194#line 4654 "parse.y"
14196 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14198#line 14199 "parse.c"
14202#line 4659 "parse.y"
14204 restore_defun(p, (yyvsp[-4].node_def_temp));
14205 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), &(yyloc));
14206 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
14207 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[-1].node);
14211#line 14212 "parse.c"
14215#line 4669 "parse.y"
14217 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14219#line 14220 "parse.c"
14223#line 4674 "parse.y"
14225 restore_defun(p, (yyvsp[-4].node_def_temp));
14226 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), &(yyloc));
14227 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
14228 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[-1].node);
14232#line 14233 "parse.c"
14236#line 4683 "parse.y"
14238 (yyval.node) = add_block_exit(p, NEW_BREAK(0, &(yyloc), &(yylsp[0])));
14241#line 14242 "parse.c"
14245#line 4688 "parse.y"
14247 (yyval.node) = add_block_exit(p, NEW_NEXT(0, &(yyloc), &(yylsp[0])));
14250#line 14251 "parse.c"
14254#line 4693 "parse.y"
14256 (yyval.node) = add_block_exit(p, NEW_REDO(&(yyloc), &(yylsp[0])));
14259#line 14260 "parse.c"
14263#line 4698 "parse.y"
14265 if (!p->ctxt.in_defined) {
14266 switch (p->ctxt.in_rescue) {
14267 case before_rescue: yyerror1(&(yylsp[0]),
"Invalid retry without rescue");
break;
14268 case after_rescue:
break;
14269 case after_else: yyerror1(&(yylsp[0]),
"Invalid retry after else");
break;
14270 case after_ensure: yyerror1(&(yylsp[0]),
"Invalid retry after ensure");
break;
14273 (yyval.node) = NEW_RETRY(&(yyloc));
14276#line 14277 "parse.c"
14280#line 4713 "parse.y"
14282 value_expr((yyvsp[0].node));
14283 (yyval.node) = (yyvsp[0].node);
14285#line 14286 "parse.c"
14289#line 4720 "parse.y"
14291 token_info_push(p,
"begin", &(yyloc));
14292 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14294#line 14295 "parse.c"
14298#line 4727 "parse.y"
14301 token_info_push(p,
"if", &(yyloc));
14302 if (p->token_info && p->token_info->nonspc &&
14303 p->token_info->next && !strcmp(p->token_info->next->token,
"else")) {
14305 const char *beg = p->lex.pbeg + p->token_info->next->beg.column;
14307 while (beg < tok &&
ISSPACE(*beg)) beg++;
14309 p->token_info->nonspc = 0;
14312 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14314#line 14315 "parse.c"
14318#line 4745 "parse.y"
14320 token_info_push(p,
"unless", &(yyloc));
14321 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14323#line 14324 "parse.c"
14327#line 4752 "parse.y"
14329 (yyval.node_exits) = (yyvsp[0].node_exits);
14330 token_info_push(p,
"while", &(yyloc));
14331 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14333#line 14334 "parse.c"
14337#line 4760 "parse.y"
14339 (yyval.node_exits) = (yyvsp[0].node_exits);
14340 token_info_push(p,
"until", &(yyloc));
14341 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14343#line 14344 "parse.c"
14347#line 4768 "parse.y"
14349 token_info_push(p,
"case", &(yyloc));
14350 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14352#line 14353 "parse.c"
14356#line 4775 "parse.y"
14358 (yyval.node_exits) = (yyvsp[0].node_exits);
14359 token_info_push(p,
"for", &(yyloc));
14360 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
14362#line 14363 "parse.c"
14366#line 4783 "parse.y"
14368 token_info_push(p,
"class", &(yyloc));
14369 (yyval.ctxt) = p->ctxt;
14370 p->ctxt.in_rescue = before_rescue;
14371 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14373#line 14374 "parse.c"
14377#line 4792 "parse.y"
14379 token_info_push(p,
"module", &(yyloc));
14380 (yyval.ctxt) = p->ctxt;
14381 p->ctxt.in_rescue = before_rescue;
14382 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14384#line 14385 "parse.c"
14388#line 4801 "parse.y"
14390 token_info_push(p,
"def", &(yyloc));
14391 (yyval.node_def_temp) = NEW_DEF_TEMP(&(yyloc));
14392 p->ctxt.in_argdef = 1;
14394#line 14395 "parse.c"
14398#line 4809 "parse.y"
14400 token_info_push(p,
"do", &(yyloc));
14401 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14403#line 14404 "parse.c"
14407#line 4816 "parse.y"
14409 token_info_push(p,
"do", &(yyloc));
14410 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14412#line 14413 "parse.c"
14416#line 4823 "parse.y"
14418 token_info_warn(p,
"rescue", p->token_info, 1, &(yyloc));
14419 (yyval.ctxt) = p->ctxt;
14420 p->ctxt.in_rescue = after_rescue;
14422#line 14423 "parse.c"
14426#line 4831 "parse.y"
14428 token_info_warn(p,
"ensure", p->token_info, 1, &(yyloc));
14429 (yyval.ctxt) = p->ctxt;
14431#line 14432 "parse.c"
14435#line 4838 "parse.y"
14437 token_info_warn(p,
"when", p->token_info, 0, &(yyloc));
14439#line 14440 "parse.c"
14443#line 4844 "parse.y"
14446 int same = ptinfo_beg && strcmp(ptinfo_beg->token,
"case") != 0;
14447 token_info_warn(p,
"else", p->token_info, same, &(yyloc));
14450 e.next = ptinfo_beg->next;
14452 token_info_setup(&e, p->lex.pbeg, &(yyloc));
14453 if (!e.nonspc) *ptinfo_beg = e;
14456#line 14457 "parse.c"
14460#line 4859 "parse.y"
14463 token_info_warn(p,
"elsif", p->token_info, 1, &(yyloc));
14465#line 14466 "parse.c"
14469#line 4866 "parse.y"
14471 token_info_pop(p,
"end", &(yyloc));
14472 pop_end_expect_token_locations(p);
14474#line 14475 "parse.c"
14478#line 4871 "parse.y"
14480 compile_error(p,
"syntax error, unexpected end-of-input");
14482#line 14483 "parse.c"
14486#line 4877 "parse.y"
14488 if (p->ctxt.cant_return && !dyna_in_block(p))
14489 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
14491#line 14492 "parse.c"
14495#line 4884 "parse.y"
14497 if (!p->ctxt.in_defined && !p->ctxt.in_def && !compile_for_eval)
14498 yyerror1(&(yylsp[0]),
"Invalid yield");
14500#line 14501 "parse.c"
14504#line 4903 "parse.y"
14506 (yyval.node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14507 fixpos((yyval.node), (yyvsp[-3].node));
14510#line 14511 "parse.c"
14514#line 4912 "parse.y"
14516 (yyval.node) = (yyvsp[0].node);
14519#line 14520 "parse.c"
14523#line 4923 "parse.y"
14525 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
14526 mark_lvar_used(p, (yyval.node));
14528#line 14529 "parse.c"
14532#line 4928 "parse.y"
14534 (yyval.node) = (NODE *)(yyvsp[-1].node_masgn);
14537#line 14538 "parse.c"
14541#line 4935 "parse.y"
14543 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14546#line 14547 "parse.c"
14550#line 4940 "parse.y"
14552 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
14555#line 14556 "parse.c"
14559#line 4947 "parse.y"
14561 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
14564#line 14565 "parse.c"
14568#line 4952 "parse.y"
14570 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14573#line 14574 "parse.c"
14577#line 4957 "parse.y"
14579 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
14582#line 14583 "parse.c"
14586#line 4962 "parse.y"
14588 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
14591#line 14592 "parse.c"
14595#line 4967 "parse.y"
14597 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
14600#line 14601 "parse.c"
14604#line 4974 "parse.y"
14607 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
14608 mark_lvar_used(p, (yyval.node));
14610#line 14611 "parse.c"
14614#line 4980 "parse.y"
14616 (yyval.node) = NODE_SPECIAL_NO_NAME_REST;
14619#line 14620 "parse.c"
14623#line 4988 "parse.y"
14625 (yyval.id) = idNil;
14628#line 14629 "parse.c"
14632#line 4994 "parse.y"
14633 {p->ctxt.in_argdef = 0;}
14634#line 14635 "parse.c"
14638#line 2934 "parse.y"
14640 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
14643#line 14644 "parse.c"
14647#line 2939 "parse.y"
14649 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
14652#line 14653 "parse.c"
14656#line 4997 "parse.y"
14658 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
14661#line 14662 "parse.c"
14665#line 5002 "parse.y"
14667 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].
id), &(yylsp[-1]));
14670#line 14671 "parse.c"
14674#line 5007 "parse.y"
14676 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
14679#line 14680 "parse.c"
14683#line 5012 "parse.y"
14685 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
14688#line 14689 "parse.c"
14692#line 5019 "parse.y"
14695 (yyval.id) = NODE_SPECIAL_EXCESSIVE_COMMA;
14698#line 14699 "parse.c"
14702#line 2912 "parse.y"
14704 p->ctxt.in_argdef = 1;
14705 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
14708#line 14709 "parse.c"
14712#line 2921 "parse.y"
14714 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
14717#line 14718 "parse.c"
14721#line 2926 "parse.y"
14723 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
14726#line 14727 "parse.c"
14730#line 2947 "parse.y"
14732 (yyval.node_args) = (yyvsp[0].node_args);
14735#line 14736 "parse.c"
14739#line 2952 "parse.y"
14741 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
14744#line 14745 "parse.c"
14748#line 5027 "parse.y"
14750 (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));
14753#line 14754 "parse.c"
14757#line 5032 "parse.y"
14759 (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));
14762#line 14763 "parse.c"
14766#line 5037 "parse.y"
14768 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
14771#line 14772 "parse.c"
14775#line 5042 "parse.y"
14777 (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));
14780#line 14781 "parse.c"
14784#line 5047 "parse.y"
14786 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
14789#line 14790 "parse.c"
14793#line 5052 "parse.y"
14795 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
14796 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, (yyvsp[0].
id), 0, (yyval.node_args), &(yyloc));
14799#line 14800 "parse.c"
14803#line 5058 "parse.y"
14805 (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));
14808#line 14809 "parse.c"
14812#line 5063 "parse.y"
14814 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
14817#line 14818 "parse.c"
14821#line 5068 "parse.y"
14823 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
14826#line 14827 "parse.c"
14830#line 5073 "parse.y"
14832 (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));
14835#line 14836 "parse.c"
14839#line 5078 "parse.y"
14841 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
14844#line 14845 "parse.c"
14848#line 5083 "parse.y"
14850 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
14853#line 14854 "parse.c"
14857#line 5088 "parse.y"
14859 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
14862#line 14863 "parse.c"
14866#line 5093 "parse.y"
14868 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
14871#line 14872 "parse.c"
14875#line 5098 "parse.y"
14877 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
14880#line 14881 "parse.c"
14884#line 5106 "parse.y"
14886 p->command_start = TRUE;
14888#line 14889 "parse.c"
14892#line 5112 "parse.y"
14894 p->max_numparam = ORDINAL_PARAM;
14895 p->ctxt.in_argdef = 0;
14896 (yyval.node_args) = 0;
14899#line 14900 "parse.c"
14903#line 5119 "parse.y"
14905 p->max_numparam = ORDINAL_PARAM;
14906 p->ctxt.in_argdef = 0;
14907 (yyval.node_args) = (yyvsp[-2].node_args);
14910#line 14911 "parse.c"
14914#line 5129 "parse.y"
14919#line 14920 "parse.c"
14923#line 5134 "parse.y"
14928#line 14929 "parse.c"
14932#line 5147 "parse.y"
14934 new_bv(p, (yyvsp[0].
id));
14937#line 14938 "parse.c"
14941#line 5152 "parse.y"
14945#line 14946 "parse.c"
14949#line 5157 "parse.y"
14951 (yyval.num) = p->max_numparam;
14952 p->max_numparam = 0;
14954#line 14955 "parse.c"
14958#line 5163 "parse.y"
14960 (yyval.node) = numparam_push(p);
14962#line 14963 "parse.c"
14966#line 5168 "parse.y"
14968 (yyval.id) = p->it_id;
14971#line 14972 "parse.c"
14975#line 5175 "parse.y"
14977 token_info_push(p,
"->", &(yylsp[0]));
14978 (yyval.vars) = dyna_push(p);
14980#line 14981 "parse.c"
14984#line 5181 "parse.y"
14988#line 14989 "parse.c"
14992#line 5185 "parse.y"
14994 int max_numparam = p->max_numparam;
14995 ID it_id = p->it_id;
14996 p->lex.lpar_beg = (yyvsp[-8].num);
14997 p->max_numparam = (yyvsp[-6].num);
14998 p->it_id = (yyvsp[-4].id);
14999 restore_block_exit(p, (yyvsp[-3].node_exits));
15001 (yyvsp[-2].node_args) = args_with_numbered(p, (yyvsp[-2].node_args), max_numparam, it_id);
15003 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
15004 (yyval.node) = NEW_LAMBDA((yyvsp[-2].node_args), (yyvsp[0].node), &loc);
15005 nd_set_line(RNODE_LAMBDA((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
15006 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
15007 nd_set_first_loc((yyval.node), (yylsp[-8]).beg_pos);
15010 numparam_pop(p, (yyvsp[-5].node));
15011 dyna_pop(p, (yyvsp[-7].vars));
15013#line 15014 "parse.c"
15017#line 5208 "parse.y"
15019 p->ctxt.in_argdef = 0;
15020 (yyval.node_args) = (yyvsp[-2].node_args);
15021 p->max_numparam = ORDINAL_PARAM;
15024#line 15025 "parse.c"
15028#line 5215 "parse.y"
15030 p->ctxt.in_argdef = 0;
15031 if (!args_info_empty_p(&(yyvsp[0].node_args)->nd_ainfo))
15032 p->max_numparam = ORDINAL_PARAM;
15033 (yyval.node_args) = (yyvsp[0].node_args);
15035#line 15036 "parse.c"
15039#line 5224 "parse.y"
15041 token_info_pop(p,
"}", &(yylsp[0]));
15042 (yyval.node) = (yyvsp[-1].node);
15045#line 15046 "parse.c"
15049#line 5230 "parse.y"
15051 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
15053#line 15054 "parse.c"
15057#line 5234 "parse.y"
15059 (yyval.node) = (yyvsp[-1].node);
15062#line 15063 "parse.c"
15066#line 5241 "parse.y"
15068 (yyval.node) = (yyvsp[-1].node);
15069 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15072#line 15073 "parse.c"
15076#line 5249 "parse.y"
15078 if (nd_type_p((yyvsp[-1].node), NODE_YIELD)) {
15079 compile_error(p,
"block given to yield");
15082 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
15084 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15085 fixpos((yyval.node), (yyvsp[-1].node));
15088#line 15089 "parse.c"
15092#line 5261 "parse.y"
15094 bool has_args = (yyvsp[0].node) != 0;
15095 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15096 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15102#line 15103 "parse.c"
15106#line 5271 "parse.y"
15108 if (NODE_EMPTY_ARGS_P((yyvsp[-1].node))) (yyvsp[-1].node) = 0;
15109 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15111 if ((yyvsp[0].node)) {
15115#line 15116 "parse.c"
15119#line 5280 "parse.y"
15121 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
15124#line 15125 "parse.c"
15128#line 5287 "parse.y"
15130 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
15131 (yyval.node) = (NODE *)(yyvsp[-1].node_fcall);
15132 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
15135#line 15136 "parse.c"
15139#line 5294 "parse.y"
15141 bool has_args = (yyvsp[0].node) != 0;
15142 if (NODE_EMPTY_ARGS_P((yyvsp[0].node))) (yyvsp[0].node) = 0;
15143 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15144 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15150#line 15151 "parse.c"
15154#line 5305 "parse.y"
15156 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15157 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15160#line 15161 "parse.c"
15164#line 5311 "parse.y"
15166 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-2].node), (yyvsp[0].
id), 0, &(yylsp[0]), &(yyloc));
15169#line 15170 "parse.c"
15173#line 5316 "parse.y"
15175 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15176 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15179#line 15180 "parse.c"
15183#line 5322 "parse.y"
15185 (yyval.node) = new_qcall(p, idCOLON2, (yyvsp[-2].node), idCall, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
15186 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
15189#line 15190 "parse.c"
15193#line 5328 "parse.y"
15195 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc));
15198#line 15199 "parse.c"
15202#line 5333 "parse.y"
15204 (yyval.node) = NEW_ZSUPER(&(yyloc));
15207#line 15208 "parse.c"
15211#line 5338 "parse.y"
15213 (yyval.node) = NEW_CALL((yyvsp[-3].node), tAREF, (yyvsp[-1].node), &(yyloc));
15214 fixpos((yyval.node), (yyvsp[-3].node));
15217#line 15218 "parse.c"
15221#line 5346 "parse.y"
15223 (yyval.node) = (yyvsp[-1].node);
15224 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15227#line 15228 "parse.c"
15231#line 5352 "parse.y"
15233 (yyval.node) = (yyvsp[-1].node);
15234 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
15237#line 15238 "parse.c"
15241#line 5359 "parse.y"
15242 {(yyval.vars) = dyna_push(p);}
15243#line 15244 "parse.c"
15247#line 5362 "parse.y"
15249 int max_numparam = p->max_numparam;
15250 ID it_id = p->it_id;
15251 p->max_numparam = (yyvsp[-5].num);
15252 p->it_id = (yyvsp[-3].id);
15253 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
15254 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
15256 restore_block_exit(p, (yyvsp[-2].node_exits));
15257 numparam_pop(p, (yyvsp[-4].node));
15258 dyna_pop(p, (yyvsp[-6].vars));
15260#line 15261 "parse.c"
15264#line 5376 "parse.y"
15266 (yyval.vars) = dyna_push(p);
15269#line 15270 "parse.c"
15273#line 5382 "parse.y"
15275 int max_numparam = p->max_numparam;
15276 ID it_id = p->it_id;
15277 p->max_numparam = (yyvsp[-5].num);
15278 p->it_id = (yyvsp[-3].id);
15279 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam, it_id);
15280 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
15283 restore_block_exit(p, (yyvsp[-2].node_exits));
15284 numparam_pop(p, (yyvsp[-4].node));
15285 dyna_pop(p, (yyvsp[-6].vars));
15287#line 15288 "parse.c"
15291#line 5398 "parse.y"
15293 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
15294 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15297#line 15298 "parse.c"
15301#line 5404 "parse.y"
15303 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc), &(yylsp[-1]));
15306#line 15307 "parse.c"
15310#line 5409 "parse.y"
15312 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
15313 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15316#line 15317 "parse.c"
15320#line 5415 "parse.y"
15322 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
15325#line 15326 "parse.c"
15329#line 5424 "parse.y"
15331 (yyval.node) = NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc), &(yylsp[-4]), &(yylsp[-2]));
15332 fixpos((yyval.node), (yyvsp[-3].node));
15335#line 15336 "parse.c"
15339#line 5435 "parse.y"
15340 {(yyval.tbl) = p->pvtbl; p->pvtbl = st_init_numtable();}
15341#line 15342 "parse.c"
15345#line 5436 "parse.y"
15346 {(yyval.tbl) = p->pktbl; p->pktbl = 0;}
15347#line 15348 "parse.c"
15351#line 5438 "parse.y"
15353 (yyval.ctxt) = p->ctxt;
15354 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
15355 p->command_start = FALSE;
15356 p->ctxt.in_kwarg = 1;
15358#line 15359 "parse.c"
15362#line 5449 "parse.y"
15364 pop_pktbl(p, (yyvsp[-2].tbl));
15365 pop_pvtbl(p, (yyvsp[-3].tbl));
15366 p->ctxt.in_kwarg = (yyvsp[-4].ctxt).in_kwarg;
15368#line 15369 "parse.c"
15372#line 5456 "parse.y"
15374 (yyval.node) = NEW_IN((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15377#line 15378 "parse.c"
15381#line 5468 "parse.y"
15383 (yyval.node) = new_if(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc));
15384 fixpos((yyval.node), (yyvsp[0].node));
15387#line 15388 "parse.c"
15391#line 5474 "parse.y"
15393 (yyval.node) = new_unless(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc), &(yylsp[-1]), &NULL_LOC, &NULL_LOC);
15394 fixpos((yyval.node), (yyvsp[0].node));
15397#line 15398 "parse.c"
15401#line 5483 "parse.y"
15403 (yyval.node) = new_array_pattern_tail(p, 0, 1, 0, 0, &(yyloc));
15404 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-1].node), (yyval.node), &(yyloc));
15407#line 15408 "parse.c"
15411#line 5489 "parse.y"
15413 (yyval.node) = new_array_pattern(p, 0, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15414 nd_set_first_loc((yyval.node), (yylsp[-2]).beg_pos);
15417#line 15418 "parse.c"
15421#line 5495 "parse.y"
15423 (yyval.node) = new_find_pattern(p, 0, (yyvsp[0].node), &(yyloc));
15426#line 15427 "parse.c"
15430#line 5500 "parse.y"
15432 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[0].node), &(yyloc));
15435#line 15436 "parse.c"
15439#line 5505 "parse.y"
15441 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[0].node), &(yyloc));
15444#line 15445 "parse.c"
15448#line 5515 "parse.y"
15450 NODE *n = NEW_LIST((yyvsp[-2].node), &(yyloc));
15451 n = list_append(p, n, (yyvsp[0].node));
15452 (yyval.node) = new_hash(p, n, &(yyloc));
15455#line 15456 "parse.c"
15459#line 5525 "parse.y"
15461 (yyval.node) = NEW_OR((yyvsp[-2].node), (yyvsp[0].node), &(yyloc), &(yylsp[-1]));
15464#line 15465 "parse.c"
15468#line 5533 "parse.y"
15470 (yyval.tbl) = (yyvsp[0].tbl);
15473#line 15474 "parse.c"
15477#line 5540 "parse.y"
15479 (yyval.tbl) = (yyvsp[0].tbl);
15482#line 15483 "parse.c"
15486#line 5549 "parse.y"
15488 pop_pktbl(p, (yyvsp[-2].tbl));
15489 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
15490 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
15493#line 15494 "parse.c"
15497#line 5556 "parse.y"
15499 pop_pktbl(p, (yyvsp[-2].tbl));
15500 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
15501 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
15504#line 15505 "parse.c"
15508#line 5563 "parse.y"
15510 pop_pktbl(p, (yyvsp[-2].tbl));
15511 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
15512 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
15515#line 15516 "parse.c"
15519#line 5570 "parse.y"
15521 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
15522 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
15525#line 15526 "parse.c"
15529#line 5576 "parse.y"
15531 pop_pktbl(p, (yyvsp[-2].tbl));
15532 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), 0, (yyvsp[-1].node), &(yyloc));
15533 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
15536#line 15537 "parse.c"
15540#line 5583 "parse.y"
15542 pop_pktbl(p, (yyvsp[-2].tbl));
15543 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
15544 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
15547#line 15548 "parse.c"
15551#line 5590 "parse.y"
15553 pop_pktbl(p, (yyvsp[-2].tbl));
15554 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
15555 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
15558#line 15559 "parse.c"
15562#line 5597 "parse.y"
15564 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
15565 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), 0, (yyval.node), &(yyloc));
15568#line 15569 "parse.c"
15572#line 5603 "parse.y"
15574 (yyval.node) = new_array_pattern(p, 0, 0, (yyvsp[-1].node), &(yyloc));
15577#line 15578 "parse.c"
15581#line 5608 "parse.y"
15583 (yyval.node) = new_find_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
15586#line 15587 "parse.c"
15590#line 5613 "parse.y"
15592 (yyval.node) = new_array_pattern_tail(p, 0, 0, 0, 0, &(yyloc));
15593 (yyval.node) = new_array_pattern(p, 0, 0, (yyval.node), &(yyloc));
15596#line 15597 "parse.c"
15600#line 5619 "parse.y"
15602 p->ctxt.in_kwarg = 0;
15604#line 15605 "parse.c"
15608#line 5623 "parse.y"
15610 pop_pktbl(p, (yyvsp[-4].tbl));
15611 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
15612 (yyval.node) = new_hash_pattern(p, 0, (yyvsp[-1].node), &(yyloc));
15615#line 15616 "parse.c"
15619#line 5630 "parse.y"
15621 (yyval.node) = new_hash_pattern_tail(p, 0, 0, &(yyloc));
15622 (yyval.node) = new_hash_pattern(p, 0, (yyval.node), &(yyloc));
15625#line 15626 "parse.c"
15629#line 5636 "parse.y"
15631 pop_pktbl(p, (yyvsp[-2].tbl));
15632 (yyval.node) = (yyvsp[-1].node);
15635#line 15636 "parse.c"
15639#line 5644 "parse.y"
15641 NODE *pre_args = NEW_LIST((yyvsp[0].node), &(yyloc));
15642 (yyval.node) = new_array_pattern_tail(p, pre_args, 0, 0, 0, &(yyloc));
15645#line 15646 "parse.c"
15649#line 5650 "parse.y"
15651 (yyval.node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, 0, 0, &(yyloc));
15654#line 15655 "parse.c"
15658#line 5655 "parse.y"
15660 (yyval.node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, 0, 0, &(yyloc));
15663#line 15664 "parse.c"
15667#line 5660 "parse.y"
15669 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, (yyvsp[0].node), 0, &(yyloc));
15672#line 15673 "parse.c"
15676#line 5665 "parse.y"
15678 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15681#line 15682 "parse.c"
15685#line 5673 "parse.y"
15687 (yyval.node) = (yyvsp[-1].node);
15689#line 15690 "parse.c"
15693#line 5677 "parse.y"
15695 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
15698#line 15699 "parse.c"
15702#line 5684 "parse.y"
15704 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[0].node), 0, &(yyloc));
15707#line 15708 "parse.c"
15711#line 5689 "parse.y"
15713 (yyval.node) = new_array_pattern_tail(p, 0, 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15716#line 15717 "parse.c"
15720#line 5696 "parse.y"
15722 (yyval.node) = new_find_pattern_tail(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15725#line 15726 "parse.c"
15729#line 5704 "parse.y"
15731 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
15733 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15735#line 15736 "parse.c"
15739#line 5710 "parse.y"
15744#line 15745 "parse.c"
15748#line 5718 "parse.y"
15750 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
15753#line 15754 "parse.c"
15757#line 5725 "parse.y"
15759 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15762#line 15763 "parse.c"
15766#line 5732 "parse.y"
15768 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].
id), &(yyloc));
15771#line 15772 "parse.c"
15775#line 5737 "parse.y"
15777 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
15780#line 15781 "parse.c"
15784#line 5742 "parse.y"
15786 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
15789#line 15790 "parse.c"
15793#line 5747 "parse.y"
15795 (yyval.node) = new_hash_pattern_tail(p, new_hash(p, 0, &(yyloc)), (yyvsp[0].
id), &(yyloc));
15798#line 15799 "parse.c"
15802#line 5756 "parse.y"
15804 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
15807#line 15808 "parse.c"
15811#line 5763 "parse.y"
15813 error_duplicate_pattern_key(p, (yyvsp[-1].
id), &(yylsp[-1]));
15814 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
15817#line 15818 "parse.c"
15821#line 5769 "parse.y"
15823 error_duplicate_pattern_key(p, (yyvsp[0].
id), &(yylsp[0]));
15824 if ((yyvsp[0].
id) && !is_local_id((yyvsp[0].
id))) {
15825 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
15827 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
15828 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
15831#line 15832 "parse.c"
15835#line 5782 "parse.y"
15837 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
15838 if (!(yyvsp[-1].node) || nd_type_p((yyvsp[-1].node), NODE_STR)) {
15839 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
15840 (yyval.id) =
rb_sym2id(rb_node_sym_string_val(node));
15843 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
15844 (yyval.id) = rb_intern_str(STR_NEW0());
15848#line 15849 "parse.c"
15852#line 5797 "parse.y"
15854 (yyval.id) = (yyvsp[0].
id);
15857#line 15858 "parse.c"
15861#line 5802 "parse.y"
15866#line 15867 "parse.c"
15870#line 5809 "parse.y"
15874#line 15875 "parse.c"
15878#line 5816 "parse.y"
15880 (yyval.id) = idNil;
15883#line 15884 "parse.c"
15887#line 5824 "parse.y"
15889 value_expr((yyvsp[-2].node));
15890 value_expr((yyvsp[0].node));
15891 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15894#line 15895 "parse.c"
15898#line 5831 "parse.y"
15900 value_expr((yyvsp[-2].node));
15901 value_expr((yyvsp[0].node));
15902 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
15905#line 15906 "parse.c"
15909#line 5838 "parse.y"
15911 value_expr((yyvsp[-1].node));
15912 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
15915#line 15916 "parse.c"
15919#line 5844 "parse.y"
15921 value_expr((yyvsp[-1].node));
15922 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
15925#line 15926 "parse.c"
15929#line 5853 "parse.y"
15931 value_expr((yyvsp[0].node));
15932 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
15935#line 15936 "parse.c"
15939#line 5859 "parse.y"
15941 value_expr((yyvsp[0].node));
15942 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
15945#line 15946 "parse.c"
15949#line 5868 "parse.y"
15951 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
15954#line 15955 "parse.c"
15958#line 5876 "parse.y"
15960 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
15962 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15964#line 15965 "parse.c"
15968#line 5884 "parse.y"
15970 NODE *n = gettable(p, (yyvsp[0].
id), &(yyloc));
15972 n = NEW_ERROR(&(yyloc));
15974 else if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
15975 compile_error(p,
"%"PRIsVALUE
": no such local variable", rb_id2str((yyvsp[0].
id)));
15980#line 15981 "parse.c"
15984#line 5896 "parse.y"
15986 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
15989#line 15990 "parse.c"
15993#line 5903 "parse.y"
15995 (yyval.node) = NEW_BLOCK((yyvsp[-1].node), &(yyloc));
15998#line 15999 "parse.c"
16002#line 5910 "parse.y"
16004 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
16007#line 16008 "parse.c"
16011#line 5915 "parse.y"
16013 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].
id), &(yyloc));
16016#line 16017 "parse.c"
16020#line 5920 "parse.y"
16022 (yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc));
16025#line 16026 "parse.c"
16029#line 5929 "parse.y"
16031 NODE *err = (yyvsp[-3].node);
16032 if ((yyvsp[-3].node)) {
16033 err = NEW_ERRINFO(&(yylsp[-3]));
16034 err = node_assign(p, (yyvsp[-3].node), err, NO_LEX_CTXT, &(yylsp[-3]));
16036 (yyval.node) = NEW_RESBODY((yyvsp[-4].node), (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16037 if ((yyvsp[-4].node)) {
16038 fixpos((yyval.node), (yyvsp[-4].node));
16040 else if ((yyvsp[-3].node)) {
16041 fixpos((yyval.node), (yyvsp[-3].node));
16044 fixpos((yyval.node), (yyvsp[-1].node));
16048#line 16049 "parse.c"
16052#line 5951 "parse.y"
16054 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
16057#line 16058 "parse.c"
16061#line 5956 "parse.y"
16063 if (!((yyval.node) = splat_array((yyvsp[0].node)))) (yyval.node) = (yyvsp[0].node);
16065#line 16066 "parse.c"
16069#line 5963 "parse.y"
16071 (yyval.node) = (yyvsp[0].node);
16074#line 16075 "parse.c"
16078#line 5971 "parse.y"
16080 p->ctxt.in_rescue = (yyvsp[-2].ctxt).in_rescue;
16081 (yyval.node) = (yyvsp[-1].node);
16082 void_expr(p, void_stmts(p, (yyval.node)));
16085#line 16086 "parse.c"
16089#line 5985 "parse.y"
16091 NODE *node = (yyvsp[0].node);
16093 node = NEW_STR(STRING_NEW0(), &(yyloc));
16096 node = evstr2dstr(p, node);
16098 (yyval.node) = node;
16101#line 16102 "parse.c"
16105#line 6001 "parse.y"
16107 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16110#line 16111 "parse.c"
16114#line 6008 "parse.y"
16116 (yyval.node) = heredoc_dedent(p, (yyvsp[-1].node));
16117 if ((yyval.node)) nd_set_loc((yyval.node), &(yyloc));
16119 if (p->heredoc_indent > 0) {
16121 p->heredoc_indent = 0;
16125#line 16126 "parse.c"
16129#line 6021 "parse.y"
16131 (yyval.node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
16133 if (p->heredoc_indent > 0) {
16135 p->heredoc_indent = 0;
16139#line 16140 "parse.c"
16143#line 6033 "parse.y"
16145 (yyval.node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc));
16148#line 16149 "parse.c"
16152#line 2960 "parse.y"
16154 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16157#line 16158 "parse.c"
16161#line 6043 "parse.y"
16166#line 16167 "parse.c"
16170#line 6048 "parse.y"
16172 (yyval.node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
16175#line 16176 "parse.c"
16179#line 6057 "parse.y"
16181 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16184#line 16185 "parse.c"
16188#line 2960 "parse.y"
16190 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16193#line 16194 "parse.c"
16197#line 6067 "parse.y"
16202#line 16203 "parse.c"
16206#line 6072 "parse.y"
16208 (yyval.node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
16211#line 16212 "parse.c"
16215#line 2960 "parse.y"
16217 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16220#line 16221 "parse.c"
16224#line 2960 "parse.y"
16226 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
16229#line 16230 "parse.c"
16233#line 6085 "parse.y"
16238#line 16239 "parse.c"
16242#line 6090 "parse.y"
16244 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
16247#line 16248 "parse.c"
16251#line 6097 "parse.y"
16256#line 16257 "parse.c"
16260#line 6102 "parse.y"
16262 (yyval.node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
16265#line 16266 "parse.c"
16269#line 6109 "parse.y"
16274#line 16275 "parse.c"
16278#line 6114 "parse.y"
16280 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16283#line 16284 "parse.c"
16287#line 6121 "parse.y"
16292#line 16293 "parse.c"
16296#line 6126 "parse.y"
16298 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
16301#line 16302 "parse.c"
16305#line 6133 "parse.y"
16310#line 16311 "parse.c"
16314#line 6138 "parse.y"
16316 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
16318 (yyval.node) = tail;
16321 (yyval.node) = head;
16324 switch (nd_type(head)) {
16326 head = str2dstr(p, head);
16331 head = list_append(p, NEW_DSTR(0, &(yyloc)), head);
16334 (yyval.node) = list_append(p, head, tail);
16338#line 16339 "parse.c"
16342#line 6166 "parse.y"
16345 (yyval.strterm) = p->lex.strterm;
16346 p->lex.strterm = 0;
16347 SET_LEX_STATE(EXPR_BEG);
16349#line 16350 "parse.c"
16353#line 6173 "parse.y"
16355 p->lex.strterm = (yyvsp[-1].strterm);
16356 (yyval.node) = NEW_EVSTR((yyvsp[0].node), &(yyloc));
16357 nd_set_line((yyval.node), (yylsp[0]).end_pos.lineno);
16360#line 16361 "parse.c"
16364#line 6180 "parse.y"
16369 (yyval.strterm) = p->lex.strterm;
16370 p->lex.strterm = 0;
16371 SET_LEX_STATE(EXPR_BEG);
16373#line 16374 "parse.c"
16377#line 6188 "parse.y"
16379 (yyval.num) = p->lex.brace_nest;
16380 p->lex.brace_nest = 0;
16382#line 16383 "parse.c"
16386#line 6192 "parse.y"
16388 (yyval.num) = p->heredoc_indent;
16389 p->heredoc_indent = 0;
16391#line 16392 "parse.c"
16395#line 6197 "parse.y"
16399 p->lex.strterm = (yyvsp[-4].strterm);
16400 SET_LEX_STATE((yyvsp[-5].state));
16401 p->lex.brace_nest = (yyvsp[-3].num);
16402 p->heredoc_indent = (yyvsp[-2].num);
16403 p->heredoc_line_indent = -1;
16404 if ((yyvsp[-1].node)) nd_unset_fl_newline((yyvsp[-1].node));
16405 (yyval.node) = new_evstr(p, (yyvsp[-1].node), &(yyloc));
16408#line 16409 "parse.c"
16412#line 6216 "parse.y"
16414 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16417#line 16418 "parse.c"
16421#line 6228 "parse.y"
16423 SET_LEX_STATE(EXPR_END);
16424 VALUE str = rb_id2str((yyvsp[0].
id));
16431 if (!str) str = STR_NEW0();
16432 (yyval.node) = NEW_SYM(str, &(yyloc));
16435#line 16436 "parse.c"
16439#line 6248 "parse.y"
16441 SET_LEX_STATE(EXPR_END);
16442 (yyval.node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
16445#line 16446 "parse.c"
16449#line 6257 "parse.y"
16451 (yyval.node) = (yyvsp[0].node);
16452 negate_lit(p, (yyval.node));
16455#line 16456 "parse.c"
16459#line 6279 "parse.y"
16460 {(yyval.id) = KWD2EID(nil, (yyvsp[0].
id));}
16461#line 16462 "parse.c"
16465#line 6280 "parse.y"
16466 {(yyval.id) = KWD2EID(self, (yyvsp[0].
id));}
16467#line 16468 "parse.c"
16471#line 6281 "parse.y"
16472 {(yyval.id) = KWD2EID(
true, (yyvsp[0].
id));}
16473#line 16474 "parse.c"
16477#line 6282 "parse.y"
16478 {(yyval.id) = KWD2EID(
false, (yyvsp[0].
id));}
16479#line 16480 "parse.c"
16483#line 6283 "parse.y"
16484 {(yyval.id) = KWD2EID(_FILE__, (yyvsp[0].
id));}
16485#line 16486 "parse.c"
16489#line 6284 "parse.y"
16490 {(yyval.id) = KWD2EID(_LINE__, (yyvsp[0].
id));}
16491#line 16492 "parse.c"
16495#line 6285 "parse.y"
16496 {(yyval.id) = KWD2EID(_ENCODING__, (yyvsp[0].
id));}
16497#line 16498 "parse.c"
16501#line 6289 "parse.y"
16503 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16504 if (ifdef_ripper(id_is_var(p, (yyvsp[0].
id)),
false)) {
16511#line 16512 "parse.c"
16515#line 6299 "parse.y"
16517 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_ERROR(&(yyloc));
16520#line 16521 "parse.c"
16524#line 6306 "parse.y"
16527 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16529#line 16530 "parse.c"
16533#line 6306 "parse.y"
16536 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
16538#line 16539 "parse.c"
16542#line 6317 "parse.y"
16544 SET_LEX_STATE(EXPR_BEG);
16545 p->command_start = TRUE;
16547#line 16548 "parse.c"
16551#line 6322 "parse.y"
16553 (yyval.node) = (yyvsp[-1].node);
16556#line 16557 "parse.c"
16560#line 6327 "parse.y"
16565#line 16566 "parse.c"
16569#line 6335 "parse.y"
16571 p->ctxt.in_argdef = 0;
16572 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[-1]));
16573 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyval.node_args), &(yylsp[-1]));
16576#line 16577 "parse.c"
16580#line 6344 "parse.y"
16582 (yyval.node_args) = (yyvsp[-1].node_args);
16584 SET_LEX_STATE(EXPR_BEG);
16585 p->command_start = TRUE;
16586 p->ctxt.in_argdef = 0;
16588#line 16589 "parse.c"
16592#line 6354 "parse.y"
16594 (yyval.ctxt) = p->ctxt;
16595 p->ctxt.in_kwarg = 1;
16596 p->ctxt.in_argdef = 1;
16597 SET_LEX_STATE(p->lex.state|EXPR_LABEL);
16599#line 16600 "parse.c"
16603#line 6361 "parse.y"
16605 p->ctxt.in_kwarg = (yyvsp[-2].ctxt).in_kwarg;
16606 p->ctxt.in_argdef = 0;
16607 (yyval.node_args) = (yyvsp[-1].node_args);
16608 SET_LEX_STATE(EXPR_BEG);
16609 p->command_start = TRUE;
16612#line 16613 "parse.c"
16616#line 2934 "parse.y"
16618 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
16621#line 16622 "parse.c"
16625#line 2939 "parse.y"
16627 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
16630#line 16631 "parse.c"
16634#line 6372 "parse.y"
16636 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
16639#line 16640 "parse.c"
16643#line 6377 "parse.y"
16645 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), 0, (yyvsp[0].
id), &(yylsp[-1]));
16648#line 16649 "parse.c"
16652#line 6382 "parse.y"
16654 (yyval.node_args) = new_args_tail(p, 0, (yyvsp[-1].
id), (yyvsp[0].
id), &(yylsp[-1]));
16657#line 16658 "parse.c"
16661#line 6387 "parse.y"
16663 (yyval.node_args) = new_args_tail(p, 0, 0, (yyvsp[0].
id), &(yylsp[0]));
16666#line 16667 "parse.c"
16670#line 6392 "parse.y"
16672 ID fwd = (yyvsp[0].id);
16673 if (lambda_beginning_p() ||
16674 (p->lex.lpar_beg >= 0 && p->lex.lpar_beg+1 == p->lex.paren_nest)) {
16675 yyerror0(
"unexpected ... in lambda argument");
16679 add_forwarding_args(p);
16681 (yyval.node_args) = new_args_tail(p, 0, fwd, arg_FWD_BLOCK, &(yylsp[0]));
16682 (yyval.node_args)->nd_ainfo.forwarding = 1;
16685#line 16686 "parse.c"
16689#line 2912 "parse.y"
16691 p->ctxt.in_argdef = 1;
16692 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
16695#line 16696 "parse.c"
16699#line 2921 "parse.y"
16701 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
16704#line 16705 "parse.c"
16708#line 2926 "parse.y"
16710 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
16713#line 16714 "parse.c"
16717#line 2947 "parse.y"
16719 (yyval.node_args) = (yyvsp[0].node_args);
16722#line 16723 "parse.c"
16726#line 2952 "parse.y"
16728 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
16731#line 16732 "parse.c"
16735#line 6409 "parse.y"
16737 (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));
16740#line 16741 "parse.c"
16744#line 6414 "parse.y"
16746 (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));
16749#line 16750 "parse.c"
16753#line 6419 "parse.y"
16755 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
16758#line 16759 "parse.c"
16762#line 6424 "parse.y"
16764 (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));
16767#line 16768 "parse.c"
16771#line 6429 "parse.y"
16773 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
16776#line 16777 "parse.c"
16780#line 6434 "parse.y"
16782 (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));
16785#line 16786 "parse.c"
16789#line 6439 "parse.y"
16791 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
16794#line 16795 "parse.c"
16798#line 6444 "parse.y"
16800 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
16803#line 16804 "parse.c"
16807#line 6449 "parse.y"
16809 (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));
16812#line 16813 "parse.c"
16816#line 6454 "parse.y"
16818 (yyval.node_args) = new_args(p, 0, (yyvsp[-1].node_opt_arg), 0, 0, (yyvsp[0].node_args), &(yyloc));
16821#line 16822 "parse.c"
16825#line 6459 "parse.y"
16827 (yyval.node_args) = new_args(p, 0, (yyvsp[-3].node_opt_arg), 0, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
16830#line 16831 "parse.c"
16834#line 6464 "parse.y"
16836 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-1].
id), 0, (yyvsp[0].node_args), &(yyloc));
16839#line 16840 "parse.c"
16843#line 6469 "parse.y"
16845 (yyval.node_args) = new_args(p, 0, 0, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
16848#line 16849 "parse.c"
16852#line 6474 "parse.y"
16854 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyvsp[0].node_args), &(yyloc));
16857#line 16858 "parse.c"
16861#line 6479 "parse.y"
16863 (yyval.node_args) = new_args_tail(p, 0, 0, 0, &(yylsp[0]));
16864 (yyval.node_args) = new_args(p, 0, 0, 0, 0, (yyval.node_args), &(yylsp[0]));
16867#line 16868 "parse.c"
16871#line 6487 "parse.y"
16873#ifdef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
16876 (yyval.id) = idFWD_KWREST;
16880#line 16881 "parse.c"
16884#line 6498 "parse.y"
16886 static const char mesg[] =
"formal argument cannot be a constant";
16888 yyerror1(&(yylsp[0]), mesg);
16893#line 16894 "parse.c"
16897#line 6507 "parse.y"
16899 static const char mesg[] =
"formal argument cannot be an instance variable";
16901 yyerror1(&(yylsp[0]), mesg);
16906#line 16907 "parse.c"
16910#line 6516 "parse.y"
16912 static const char mesg[] =
"formal argument cannot be a global variable";
16914 yyerror1(&(yylsp[0]), mesg);
16919#line 16920 "parse.c"
16923#line 6525 "parse.y"
16925 static const char mesg[] =
"formal argument cannot be a class variable";
16927 yyerror1(&(yylsp[0]), mesg);
16932#line 16933 "parse.c"
16936#line 6537 "parse.y"
16938 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
16942 p->max_numparam = ORDINAL_PARAM;
16944#line 16945 "parse.c"
16948#line 6547 "parse.y"
16950 ID id = (yyvsp[0].id);
16952 (yyval.id) = (yyvsp[0].
id);
16954#line 16955 "parse.c"
16958#line 6555 "parse.y"
16960 (yyval.node_args_aux) = NEW_ARGS_AUX((yyvsp[0].
id), 1, &NULL_LOC);
16963#line 16964 "parse.c"
16967#line 6560 "parse.y"
16969 ID tid = internal_id(p);
16971 loc.beg_pos = (yylsp[-1]).beg_pos;
16972 loc.end_pos = (yylsp[-1]).beg_pos;
16974 if (dyna_in_block(p)) {
16975 (yyvsp[-1].node_masgn)->nd_value = NEW_DVAR(tid, &loc);
16978 (yyvsp[-1].node_masgn)->nd_value = NEW_LVAR(tid, &loc);
16980 (yyval.node_args_aux) = NEW_ARGS_AUX(tid, 1, &NULL_LOC);
16981 (yyval.node_args_aux)->nd_next = (NODE *)(yyvsp[-1].node_masgn);
16984#line 16985 "parse.c"
16988#line 6581 "parse.y"
16990 (yyval.node_args_aux) = (yyvsp[-2].node_args_aux);
16991 (yyval.node_args_aux)->nd_plen++;
16992 (yyval.node_args_aux)->nd_next = block_append(p, (yyval.node_args_aux)->nd_next, (yyvsp[0].node_args_aux)->nd_next);
16993 rb_discard_node(p, (NODE *)(yyvsp[0].node_args_aux));
16996#line 16997 "parse.c"
17000#line 6592 "parse.y"
17002 VALUE e = formal_argument_error(p, (yyval.id) = (yyvsp[0].id));
17013 arg_var(p, ifdef_ripper(0, (yyvsp[0].
id)));
17015 p->max_numparam = ORDINAL_PARAM;
17016 p->ctxt.in_argdef = 0;
17018#line 17019 "parse.c"
17022#line 6612 "parse.y"
17024 p->ctxt.in_argdef = 1;
17025 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17028#line 17029 "parse.c"
17032#line 6618 "parse.y"
17034 p->ctxt.in_argdef = 1;
17035 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
17038#line 17039 "parse.c"
17042#line 6626 "parse.y"
17044 p->ctxt.in_argdef = 1;
17045 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
17048#line 17049 "parse.c"
17052#line 6632 "parse.y"
17054 p->ctxt.in_argdef = 1;
17055 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
17058#line 17059 "parse.c"
17062#line 6644 "parse.y"
17066#line 17067 "parse.c"
17070#line 6650 "parse.y"
17072 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
17073 (yyval.id) = (yyvsp[0].
id);
17076#line 17077 "parse.c"
17080#line 6656 "parse.y"
17082 arg_var(p, idFWD_KWREST);
17083 (yyval.id) = idFWD_KWREST;
17086#line 17087 "parse.c"
17090#line 6668 "parse.y"
17092 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
17093 (yyval.id) = (yyvsp[0].
id);
17096#line 17097 "parse.c"
17100#line 6674 "parse.y"
17102 arg_var(p, idFWD_REST);
17103 (yyval.id) = idFWD_REST;
17106#line 17107 "parse.c"
17110#line 6686 "parse.y"
17112 arg_var(p, shadowing_lvar(p, (yyvsp[0].
id)));
17113 (yyval.id) = (yyvsp[0].
id);
17116#line 17117 "parse.c"
17120#line 6692 "parse.y"
17122 arg_var(p, idFWD_BLOCK);
17123 (yyval.id) = idFWD_BLOCK;
17126#line 17127 "parse.c"
17130#line 6700 "parse.y"
17132 (yyval.id) = (yyvsp[0].
id);
17135#line 17136 "parse.c"
17139#line 6705 "parse.y"
17144#line 17145 "parse.c"
17148#line 6712 "parse.y"
17150 value_expr((yyvsp[0].node));
17151 (yyval.node) = (yyvsp[0].node);
17153#line 17154 "parse.c"
17157#line 6717 "parse.y"
17159 SET_LEX_STATE(EXPR_BEG);
17160 p->ctxt.in_argdef = 0;
17162#line 17163 "parse.c"
17166#line 6722 "parse.y"
17168 p->ctxt.in_argdef = 1;
17169 NODE *expr = last_expr_node((yyvsp[-1].node));
17170 switch (nd_type(expr)) {
17180 case NODE_ENCODING:
17183 case NODE_RATIONAL:
17184 case NODE_IMAGINARY:
17188 yyerror1(&expr->nd_loc,
"can't define singleton method for literals");
17191 value_expr((yyvsp[-1].node));
17194 (yyval.node) = (yyvsp[-1].node);
17197#line 17198 "parse.c"
17201#line 6756 "parse.y"
17203 (yyval.node) = (yyvsp[-1].node);
17206#line 17207 "parse.c"
17210#line 6765 "parse.y"
17212 NODE *assocs = (yyvsp[-2].node);
17213 NODE *tail = (yyvsp[0].node);
17218 if (RNODE_LIST(assocs)->nd_head) {
17219 NODE *n = RNODE_LIST(tail)->nd_next;
17220 if (!RNODE_LIST(tail)->nd_head && nd_type_p(n, NODE_LIST) &&
17221 nd_type_p((n = RNODE_LIST(n)->nd_head), NODE_HASH)) {
17223 tail = RNODE_HASH(n)->nd_head;
17227 assocs = list_concat(assocs, tail);
17230 (yyval.node) = assocs;
17233#line 17234 "parse.c"
17237#line 6790 "parse.y"
17239 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
17242#line 17243 "parse.c"
17246#line 6795 "parse.y"
17248 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
17251#line 17252 "parse.c"
17255#line 6800 "parse.y"
17257 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
17258 if (!val) val = NEW_ERROR(&(yyloc));
17259 (yyval.node) = list_append(p, NEW_LIST(NEW_SYM(rb_id2str((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
17262#line 17263 "parse.c"
17266#line 6807 "parse.y"
17268 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
17269 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
17272#line 17273 "parse.c"
17276#line 6813 "parse.y"
17278 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
17281#line 17282 "parse.c"
17285#line 6818 "parse.y"
17287 forwarding_arg_check(p, idFWD_KWREST, idFWD_ALL,
"keyword rest");
17288 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)),
17289 NEW_LVAR(idFWD_KWREST, &(yyloc)));
17292#line 17293 "parse.c"
17296#line 6864 "parse.y"
17297 {yyerrok;token_flush(p);}
17298#line 17299 "parse.c"
17302#line 6866 "parse.y"
17304 (yyloc).end_pos = (yyloc).beg_pos;
17307#line 17308 "parse.c"
17311#line 6873 "parse.y"
17313#line 17314 "parse.c"
17317#line 6877 "parse.y"
17321#line 17322 "parse.c"
17325#line 17326 "parse.c"
17340 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc, p);
17342 YYPOPSTACK (yylen);
17344#line 2660 "parse.y"
17345 {after_reduce(yylen, p);}
17346#line 17347 "parse.c"
17357 const int yylhs = yyr1[yyn] - YYNTOKENS;
17358 const int yyi = yypgoto[yylhs] + *yyssp;
17359 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
17361 : yydefgoto[yylhs]);
17373 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
17380 = {yyssp, yytoken, &yylloc};
17381 char const *yymsgp = YY_(
"syntax error");
17382 int yysyntax_error_status;
17383 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
17384 if (yysyntax_error_status == 0)
17386 else if (yysyntax_error_status == -1)
17388 if (yymsg != yymsgbuf)
17389 YYSTACK_FREE (yymsg);
17390 yymsg = YY_CAST (
char *,
17391 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
17394 yysyntax_error_status
17395 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
17401 yymsg_alloc =
sizeof yymsgbuf;
17402 yysyntax_error_status = YYENOMEM;
17405 yyerror (&yylloc, p, yymsgp);
17406 if (yysyntax_error_status == YYENOMEM)
17411 yyerror_range[1] = yylloc;
17412 if (yyerrstatus == 3)
17417 if (yychar <= END_OF_INPUT)
17420 if (yychar == END_OF_INPUT)
17425 yydestruct (
"Error: discarding",
17426 yytoken, &yylval, &yylloc, p);
17448 YYPOPSTACK (yylen);
17450#line 2662 "parse.y"
17451 {after_pop_stack(yylen, p);}
17452#line 17453 "parse.c"
17455 YY_STACK_PRINT (yyss, yyssp, p);
17469 yyn = yypact[yystate];
17470 if (!yypact_value_is_default (yyn))
17472 yyn += YYSYMBOL_YYerror;
17473 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
17475 yyn = yytable[yyn];
17485 yyerror_range[1] = *yylsp;
17486 yydestruct (
"Error: popping",
17487 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
17490#line 2662 "parse.y"
17491 {after_pop_stack(1, p);}
17492#line 17493 "parse.c"
17495 YY_STACK_PRINT (yyss, yyssp, p);
17498 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
17500 YY_IGNORE_MAYBE_UNINITIALIZED_END
17502 yyerror_range[2] = yylloc;
17504 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
17507 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp, p);
17509#line 2661 "parse.y"
17510 {after_shift_error_token(p);}
17511#line 17512 "parse.c"
17538 yyerror (&yylloc, p, YY_(
"memory exhausted"));
17547 if (yychar != YYEMPTY)
17551 yytoken = YYTRANSLATE (yychar);
17552 yydestruct (
"Cleanup: discarding lookahead",
17553 yytoken, &yylval, &yylloc, p);
17557 YYPOPSTACK (yylen);
17558 YY_STACK_PRINT (yyss, yyssp, p);
17559 while (yyssp != yyss)
17561 yydestruct (
"Cleanup: popping",
17562 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
17567 YYSTACK_FREE (yyss);
17569 if (yymsg != yymsgbuf)
17570 YYSTACK_FREE (yymsg);
17574#line 6881 "parse.y"
17579# define yylval (*p->lval)
17582static int tokadd_string(
struct parser_params*,
int,
int,
int,
long*,rb_encoding**,rb_encoding**);
17583static void tokaddmbc(
struct parser_params *p,
int c, rb_encoding *enc);
17584static enum yytokentype parse_string(
struct parser_params*,rb_strterm_literal_t*);
17585static enum yytokentype here_document(
struct parser_params*,rb_strterm_heredoc_t*);
17587#define set_parser_s_value(x) (ifdef_ripper(p->s_value = (x), (void)0))
17589# define set_yylval_node(x) { \
17590 YYLTYPE _cur_loc; \
17591 rb_parser_set_location(p, &_cur_loc); \
17592 yylval.node = (x); \
17593 set_parser_s_value(STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)); \
17595# define set_yylval_str(x) \
17597 set_yylval_node(NEW_STR(x, &_cur_loc)); \
17598 set_parser_s_value(rb_str_new_mutable_parser_string(x)); \
17600# define set_yylval_num(x) { \
17601 yylval.num = (x); \
17602 set_parser_s_value(x); \
17604# define set_yylval_id(x) (yylval.id = (x))
17605# define set_yylval_name(x) { \
17606 (yylval.id = (x)); \
17607 set_parser_s_value(ID2SYM(x)); \
17609# define yylval_id() (yylval.id)
17611#define set_yylval_noname() set_yylval_id(keyword_nil)
17612#define has_delayed_token(p) (p->delayed.token != NULL)
17615#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
17616#define dispatch_scan_event(p, t) parser_dispatch_scan_event(p, t, __LINE__)
17621 const char *
const pcur = p->lex.pcur;
17622 const char *
const ptok = p->lex.ptok;
17623 if (p->keep_tokens && (pcur < ptok)) {
17624 rb_bug(
"lex.pcur < lex.ptok. (line: %d) %"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"",
17625 p->ruby_sourceline, ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur);
17627 return pcur > ptok;
17634 case '"':
return "\\\"";
17635 case '\\':
return "\\\\";
17636 case '\0':
return "\\0";
17637 case '\n':
return "\\n";
17638 case '\r':
return "\\r";
17639 case '\t':
return "\\t";
17640 case '\f':
return "\\f";
17641 case '\013':
return "\\v";
17642 case '\010':
return "\\b";
17643 case '\007':
return "\\a";
17644 case '\033':
return "\\e";
17645 case '\x7f':
return "\\c?";
17650static rb_parser_string_t *
17651rb_parser_str_escape(
struct parser_params *p, rb_parser_string_t *str)
17653 rb_encoding *enc = p->enc;
17654 const char *ptr = str->ptr;
17655 const char *pend = ptr + str->len;
17656 const char *prev = ptr;
17657 char charbuf[5] = {
'\\',
'x', 0, 0, 0};
17658 rb_parser_string_t * result = rb_parser_string_new(p, 0, 0);
17660 while (ptr < pend) {
17663 int n = rb_enc_precise_mbclen(ptr, pend, enc);
17665 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
17666 n = rb_enc_mbminlen(enc);
17667 if (pend < ptr + n)
17668 n = (int)(pend - ptr);
17670 c = *ptr & 0xf0 >> 4;
17671 charbuf[2] = (c < 10) ?
'0' + c :
'A' + c - 10;
17673 charbuf[3] = (c < 10) ?
'0' + c :
'A' + c - 10;
17674 parser_str_cat(result, charbuf, 4);
17680 c = rb_enc_mbc_to_codepoint(ptr, pend, enc);
17682 cc = escaped_char(c);
17684 if (ptr - n > prev) parser_str_cat(result, prev, ptr - n - prev);
17685 parser_str_cat_cstr(result, cc);
17688 else if (rb_enc_isascii(c, enc) &&
ISPRINT(c)) {
17691 if (ptr - n > prev) {
17692 parser_str_cat(result, prev, ptr - n - prev);
17695 parser_str_cat(result, prev, ptr - prev);
17699 if (ptr > prev) parser_str_cat(result, prev, ptr - prev);
17705parser_append_tokens(
struct parser_params *p, rb_parser_string_t *str,
enum yytokentype t,
int line)
17707 rb_parser_ast_token_t *token =
xcalloc(1,
sizeof(rb_parser_ast_token_t));
17708 token->id = p->token_id;
17709 token->type_name = parser_token2char(p, t);
17711 token->loc.beg_pos = p->yylloc->beg_pos;
17712 token->loc.end_pos = p->yylloc->end_pos;
17713 rb_parser_ary_push_ast_token(p, p->tokens, token);
17717 rb_parser_string_t *str_escaped = rb_parser_str_escape(p, str);
17718 rb_parser_printf(p,
"Append tokens (line: %d) [%d, :%s, \"%s\", [%d, %d, %d, %d]]\n",
17719 line, token->id, token->type_name, str_escaped->ptr,
17720 token->loc.beg_pos.lineno, token->loc.beg_pos.column,
17721 token->loc.end_pos.lineno, token->loc.end_pos.column);
17722 rb_parser_string_free(p, str_escaped);
17727parser_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t,
int line)
17729 debug_token_line(p,
"parser_dispatch_scan_event", line);
17731 if (!parser_has_token(p))
return;
17733 RUBY_SET_YYLLOC(*p->yylloc);
17735 if (p->keep_tokens) {
17736 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pcur - p->lex.ptok, p->enc);
17737 parser_append_tokens(p, str, t, line);
17743#define dispatch_delayed_token(p, t) parser_dispatch_delayed_token(p, t, __LINE__)
17745parser_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t,
int line)
17747 debug_token_line(p,
"parser_dispatch_delayed_token", line);
17749 if (!has_delayed_token(p))
return;
17751 RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(*p->yylloc);
17753 if (p->keep_tokens) {
17755 parser_append_tokens(p, p->delayed.token, t, line);
17757 rb_parser_string_free(p, p->delayed.token);
17760 p->delayed.token = NULL;
17763#define literal_flush(p, ptr) ((void)(ptr))
17768 if (p->lex.pcur < p->lex.ptok) rb_raise(
rb_eRuntimeError,
"lex.pcur < lex.ptok");
17769 return p->lex.pcur > p->lex.ptok;
17773ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
17775 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
17776 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
17777 RUBY_SET_YYLLOC(*p->yylloc);
17783ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
17785 if (!ripper_has_scan_event(p))
return;
17787 set_parser_s_value(ripper_scan_event_val(p, t));
17789#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
17792ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
17795 int saved_line = p->ruby_sourceline;
17796 const char *saved_tokp = p->lex.ptok;
17797 VALUE s_value, str;
17799 if (!has_delayed_token(p))
return;
17800 p->ruby_sourceline = p->delayed.beg_line;
17801 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
17802 str = rb_str_new_mutable_parser_string(p->delayed.token);
17803 rb_parser_string_free(p, p->delayed.token);
17804 s_value = ripper_dispatch1(p, ripper_token2eventid(t), str);
17805 set_parser_s_value(s_value);
17806 p->delayed.token = NULL;
17807 p->ruby_sourceline = saved_line;
17808 p->lex.ptok = saved_tokp;
17810#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
17814is_identchar(
struct parser_params *p,
const char *ptr,
const char *MAYBE_UNUSED(ptr_end), rb_encoding *enc)
17816 return rb_enc_isalnum((
unsigned char)*ptr, enc) || *ptr ==
'_' || !
ISASCII(*ptr);
17822 return !(p)->eofp && is_identchar(p, p->lex.pcur-1, p->lex.pend, p->enc);
17828 return ISASCII(*(p->lex.pcur-1));
17832token_info_setup(
token_info *ptinfo,
const char *ptr,
const rb_code_location_t *loc)
17834 int column = 1, nonspc = 0, i;
17835 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
17836 if (*ptr ==
'\t') {
17837 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
17840 if (*ptr !=
' ' && *ptr !=
'\t') {
17845 ptinfo->beg = loc->beg_pos;
17846 ptinfo->indent = column;
17847 ptinfo->nonspc = nonspc;
17851token_info_push(
struct parser_params *p,
const char *token,
const rb_code_location_t *loc)
17855 if (!p->token_info_enabled)
return;
17857 ptinfo->token = token;
17858 ptinfo->next = p->token_info;
17859 token_info_setup(ptinfo, p->lex.pbeg, loc);
17861 p->token_info = ptinfo;
17865token_info_pop(
struct parser_params *p,
const char *token,
const rb_code_location_t *loc)
17869 if (!ptinfo_beg)
return;
17872 token_info_warn(p, token, ptinfo_beg, 1, loc);
17874 p->token_info = ptinfo_beg->next;
17875 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
17879token_info_drop(
struct parser_params *p,
const char *token, rb_code_position_t beg_pos)
17883 if (!ptinfo_beg)
return;
17884 p->token_info = ptinfo_beg->next;
17886 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
17887 ptinfo_beg->beg.column != beg_pos.column ||
17888 strcmp(ptinfo_beg->token, token)) {
17889 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
17890 beg_pos.lineno, beg_pos.column, token,
17891 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
17892 ptinfo_beg->token);
17895 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
17899token_info_warn(
struct parser_params *p,
const char *token,
token_info *ptinfo_beg,
int same,
const rb_code_location_t *loc)
17901 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
17902 if (!p->token_info_enabled)
return;
17903 if (!ptinfo_beg)
return;
17904 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
17905 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
17906 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
17907 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
17908 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
17909 rb_warn3L(ptinfo_end->beg.lineno,
17910 "mismatched indentations at '%s' with '%s' at %d",
17911 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
17915parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
17917 int len = rb_enc_precise_mbclen(ptr, p->lex.pend, p->enc);
17919 compile_error(p,
"invalid multibyte char (%s)", rb_enc_name(p->enc));
17927parser_show_error_line(
struct parser_params *p,
const YYLTYPE *yylloc)
17929 rb_parser_string_t *str;
17930 int lineno = p->ruby_sourceline;
17934 else if (yylloc->beg_pos.lineno == lineno) {
17935 str = p->lex.lastline;
17940 ruby_show_error_line(p, p->error_buffer, yylloc, lineno, str);
17944parser_yyerror(
struct parser_params *p,
const rb_code_location_t *yylloc,
const char *msg)
17950 yylloc = RUBY_SET_YYLLOC(current);
17952 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
17953 p->ruby_sourceline != yylloc->end_pos.lineno)) {
17957 parser_compile_error(p, yylloc,
"%s", msg);
17958 parser_show_error_line(p, yylloc);
17966 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
17970ruby_show_error_line(
struct parser_params *p,
VALUE errbuf,
const YYLTYPE *yylloc,
int lineno, rb_parser_string_t *str)
17973 const int max_line_margin = 30;
17974 const char *ptr, *ptr_end, *pt, *pb;
17975 const char *pre =
"", *post =
"", *pend;
17976 const char *code =
"", *caret =
"";
17978 const char *
const pbeg = PARSER_STRING_PTR(str);
17983 if (!yylloc)
return;
17984 pend = rb_parser_string_end(str);
17985 if (pend > pbeg && pend[-1] ==
'\n') {
17986 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
17990 if (lineno == yylloc->end_pos.lineno &&
17991 (pend - pbeg) > yylloc->end_pos.column) {
17992 pt = pbeg + yylloc->end_pos.column;
17995 ptr = ptr_end = pt;
17996 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
17997 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
17999 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
18000 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
18002 len = ptr_end - ptr;
18005 ptr = rb_enc_prev_char(pbeg, ptr, pt, rb_parser_str_get_encoding(str));
18006 if (ptr > pbeg) pre =
"...";
18008 if (ptr_end < pend) {
18009 ptr_end = rb_enc_prev_char(pt, ptr_end, pend, rb_parser_str_get_encoding(str));
18010 if (ptr_end < pend) post =
"...";
18014 if (lineno == yylloc->beg_pos.lineno) {
18015 pb += yylloc->beg_pos.column;
18016 if (pb > pt) pb = pt;
18018 if (pb < ptr) pb = ptr;
18022 if (
RTEST(errbuf)) {
18023 mesg = rb_attr_get(errbuf, idMesg);
18024 if (char_at_end(p, mesg,
'\n') !=
'\n')
18028 mesg = rb_enc_str_new(0, 0, rb_parser_str_get_encoding(str));
18030 if (!errbuf && rb_stderr_tty_p()) {
18031#define CSI_BEGIN "\033["
18034 CSI_BEGIN
""CSI_SGR
"%s"
18035 CSI_BEGIN
"1"CSI_SGR
"%.*s"
18036 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
18037 CSI_BEGIN
";1"CSI_SGR
"%.*s"
18038 CSI_BEGIN
""CSI_SGR
"%s"
18041 (
int)(pb - ptr), ptr,
18042 (
int)(pt - pb), pb,
18043 (
int)(ptr_end - pt), pt,
18049 len = ptr_end - ptr;
18050 lim = pt < pend ? pt : pend;
18051 i = (int)(lim - ptr);
18057 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
18063 memset(p2,
'~', (lim - ptr));
18067 rb_str_catf(mesg,
"%s%.*s%s\n""%s%s\n",
18068 pre, (
int)
len, code, post,
18071 if (!errbuf) rb_write_error_str(mesg);
18076parser_yyerror(
struct parser_params *p,
const YYLTYPE *yylloc,
const char *msg)
18078 const char *pcur = 0, *ptok = 0;
18079 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
18080 p->ruby_sourceline == yylloc->end_pos.lineno) {
18081 pcur = p->lex.pcur;
18082 ptok = p->lex.ptok;
18083 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
18084 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
18086 parser_yyerror0(p, msg);
18088 p->lex.ptok = ptok;
18089 p->lex.pcur = pcur;
18097 dispatch1(parse_error, STR_NEW2(msg));
18103parser_show_error_line(
struct parser_params *p,
const YYLTYPE *yylloc)
18109vtable_size(
const struct vtable *tbl)
18111 if (!DVARS_TERMINAL_P(tbl)) {
18129 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
18134#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
18137vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
18142 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
18145 if (!DVARS_TERMINAL_P(tbl)) {
18147 ruby_sized_xfree(tbl->tbl, tbl->capa *
sizeof(
ID));
18149 ruby_sized_xfree(tbl,
sizeof(*tbl));
18152#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
18155vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
18160 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
18161 line, name, (
void *)tbl, rb_id2name(
id));
18164 if (DVARS_TERMINAL_P(tbl)) {
18165 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
18168 if (tbl->pos == tbl->capa) {
18169 tbl->capa = tbl->capa * 2;
18170 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
18172 tbl->tbl[tbl->pos++] = id;
18174#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
18177vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
18178 struct vtable *tbl,
int n)
18181 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
18182 line, name, (
void *)tbl, n);
18184 if (tbl->pos < n) {
18185 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
18190#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
18193vtable_included(
const struct vtable * tbl,
ID id)
18197 if (!DVARS_TERMINAL_P(tbl)) {
18198 for (i = 0; i < tbl->pos; i++) {
18199 if (tbl->tbl[i] ==
id) {
18212 return strcmp(p->ruby_sourcefile,
"-e") == 0;
18216static NODE *parser_append_options(
struct parser_params *p, NODE *node);
18219yycompile0(
VALUE arg)
18226 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string) && !e_option_supplied(p)) {
18230 if (p->debug_lines) {
18231 p->ast->body.script_lines = p->debug_lines;
18235#define RUBY_DTRACE_PARSE_HOOK(name) \
18236 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
18237 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
18239 RUBY_DTRACE_PARSE_HOOK(BEGIN);
18241 RUBY_DTRACE_PARSE_HOOK(END);
18243 p->debug_lines = 0;
18245 xfree(p->lex.strterm);
18246 p->lex.strterm = 0;
18247 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
18248 if (n || p->error_p) {
18249 VALUE mesg = p->error_buffer;
18251 mesg = syntax_error_new();
18253 if (!p->error_tolerant) {
18254 rb_set_errinfo(mesg);
18258 tree = p->eval_tree;
18260 tree = NEW_NIL(&NULL_LOC);
18263 rb_parser_ary_t *tokens = p->tokens;
18265 NODE *body = parser_append_options(p, RNODE_SCOPE(tree)->nd_body);
18266 prelude = block_append(p, p->eval_tree_begin, body);
18267 RNODE_SCOPE(tree)->nd_body = prelude;
18268 p->ast->body.frozen_string_literal = p->frozen_string_literal;
18269 p->ast->body.coverage_enabled = cov;
18270 if (p->keep_tokens) {
18271 p->ast->node_buffer->tokens = tokens;
18275 p->ast->body.root = tree;
18276 p->ast->body.line_count = p->line_count;
18284 if (
NIL_P(fname)) {
18285 p->ruby_sourcefile_string =
Qnil;
18286 p->ruby_sourcefile =
"(none)";
18289 p->ruby_sourcefile_string = rb_str_to_interned_str(fname);
18292 p->ruby_sourceline = line - 1;
18296 p->ast = ast = rb_ast_new();
18297 compile_callback(yycompile0, (
VALUE)p);
18308static rb_encoding *
18309must_be_ascii_compatible(
struct parser_params *p, rb_parser_string_t *s)
18311 rb_encoding *enc = rb_parser_str_get_encoding(s);
18312 if (!rb_enc_asciicompat(enc)) {
18313 rb_raise(rb_eArgError,
"invalid source encoding");
18318static rb_parser_string_t *
18321 rb_parser_string_t *line = (*p->lex.gets)(p, p->lex.input, p->line_count);
18322 if (!line)
return 0;
18324 string_buffer_append(p, line);
18325 must_be_ascii_compatible(p, line);
18331rb_parser_compile(rb_parser_t *p, rb_parser_lex_gets_func *gets,
VALUE fname, rb_parser_input_data input,
int line)
18333 p->lex.gets = gets;
18334 p->lex.input = input;
18335 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
18337 return yycompile(p, fname, line);
18341#define STR_FUNC_ESCAPE 0x01
18342#define STR_FUNC_EXPAND 0x02
18343#define STR_FUNC_REGEXP 0x04
18344#define STR_FUNC_QWORDS 0x08
18345#define STR_FUNC_SYMBOL 0x10
18346#define STR_FUNC_INDENT 0x20
18347#define STR_FUNC_LABEL 0x40
18348#define STR_FUNC_LIST 0x4000
18349#define STR_FUNC_TERM 0x8000
18352 str_label = STR_FUNC_LABEL,
18354 str_dquote = (STR_FUNC_EXPAND),
18355 str_xquote = (STR_FUNC_EXPAND),
18356 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
18357 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
18358 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
18359 str_ssym = (STR_FUNC_SYMBOL),
18360 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
18363static rb_parser_string_t *
18364parser_str_new(
struct parser_params *p,
const char *ptr,
long len, rb_encoding *enc,
int func, rb_encoding *enc0)
18366 rb_parser_string_t *pstr;
18368 pstr = rb_parser_encoding_string_new(p, ptr,
len, enc);
18370 if (!(func & STR_FUNC_REGEXP)) {
18371 if (rb_parser_is_ascii_string(p, pstr)) {
18373 else if (rb_is_usascii_enc((
void *)enc0) && enc != rb_utf8_encoding()) {
18375 enc = rb_ascii8bit_encoding();
18376 PARSER_ENCODING_CODERANGE_SET(pstr, enc, RB_PARSER_ENC_CODERANGE_VALID);
18384strterm_is_heredoc(rb_strterm_t *strterm)
18386 return strterm->heredoc;
18389static rb_strterm_t *
18390new_strterm(
struct parser_params *p,
int func,
int term,
int paren)
18392 rb_strterm_t *strterm =
ZALLOC(rb_strterm_t);
18393 strterm->u.literal.func = func;
18394 strterm->u.literal.term = term;
18395 strterm->u.literal.paren = paren;
18399static rb_strterm_t *
18402 rb_strterm_t *strterm =
ZALLOC(rb_strterm_t);
18403 strterm->heredoc =
true;
18407#define peek(p,c) peek_n(p, (c), 0)
18408#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
18409#define peekc(p) peekc_n(p, 0)
18410#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
18412#define add_delayed_token(p, tok, end) parser_add_delayed_token(p, tok, end, __LINE__)
18414parser_add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end,
int line)
18416 debug_token_line(p,
"add_delayed_token", line);
18419 if (has_delayed_token(p)) {
18420 bool next_line = parser_string_char_at_end(p, p->delayed.token, 0) ==
'\n';
18421 int end_line = (next_line ? 1 : 0) + p->delayed.end_line;
18422 int end_col = (next_line ? 0 : p->delayed.end_col);
18423 if (end_line != p->ruby_sourceline || end_col != tok - p->lex.pbeg) {
18424 dispatch_delayed_token(p, tSTRING_CONTENT);
18427 if (!has_delayed_token(p)) {
18428 p->delayed.token = rb_parser_string_new(p, 0, 0);
18429 rb_parser_enc_associate(p, p->delayed.token, p->enc);
18430 p->delayed.beg_line = p->ruby_sourceline;
18431 p->delayed.beg_col =
rb_long2int(tok - p->lex.pbeg);
18433 parser_str_cat(p->delayed.token, tok, end - tok);
18434 p->delayed.end_line = p->ruby_sourceline;
18435 p->delayed.end_col =
rb_long2int(end - p->lex.pbeg);
18441set_lastline(
struct parser_params *p, rb_parser_string_t *str)
18443 p->lex.pbeg = p->lex.pcur = PARSER_STRING_PTR(str);
18444 p->lex.pend = p->lex.pcur + PARSER_STRING_LEN(str);
18445 p->lex.lastline = str;
18451 rb_parser_string_t *str = p->lex.nextline;
18452 p->lex.nextline = 0;
18457 if (!lex_eol_ptr_p(p, p->lex.pbeg) && *(p->lex.pend-1) !=
'\n') {
18461 if (!p->lex.input || !(str = lex_getline(p))) {
18468 if (p->debug_lines) {
18469 if (set_encoding) rb_parser_enc_associate(p, str, p->enc);
18470 rb_parser_string_t *copy = rb_parser_string_deep_copy(p, str);
18471 rb_parser_ary_push_script_line(p, p->debug_lines, copy);
18474 p->cr_seen = FALSE;
18476 else if (str == AFTER_HEREDOC_WITHOUT_TERMINTOR) {
18480 add_delayed_token(p, p->lex.ptok, p->lex.pend);
18481 if (p->heredoc_end > 0) {
18482 p->ruby_sourceline = p->heredoc_end;
18483 p->heredoc_end = 0;
18485 p->ruby_sourceline++;
18486 set_lastline(p, str);
18494 if (peek(p,
'\n')) {
18506 if (UNLIKELY(lex_eol_p(p) || p->eofp || p->lex.nextline > AFTER_HEREDOC_WITHOUT_TERMINTOR)) {
18507 if (nextline(p, set_encoding))
return -1;
18509 c = (
unsigned char)*p->lex.pcur++;
18510 if (UNLIKELY(c ==
'\r')) {
18511 c = parser_cr(p, c);
18516#define nextc(p) nextc0(p, TRUE)
18521 if (c == -1)
return;
18524 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
18529#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
18531#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
18532#define tok(p) (p)->tokenbuf
18533#define toklen(p) (p)->tokidx
18538 const char *ptr = p->lex.pcur;
18539 while (!lex_eol_ptr_p(p, ptr)) {
18540 int c = (
unsigned char)*ptr++;
18541 int eol = (c ==
'\n' || c ==
'#');
18553 if (!p->tokenbuf) {
18555 p->tokenbuf =
ALLOC_N(
char, 60);
18557 if (p->toksiz > 4096) {
18561 return p->tokenbuf;
18569 if (p->tokidx >= p->toksiz) {
18570 do {p->toksiz *= 2;}
while (p->toksiz < p->tokidx);
18571 REALLOC_N(p->tokenbuf,
char, p->toksiz);
18573 return &p->tokenbuf[p->tokidx-n];
18579 p->tokenbuf[p->tokidx++] = (char)c;
18580 if (p->tokidx >= p->toksiz) {
18582 REALLOC_N(p->tokenbuf,
char, p->toksiz);
18591 c = (int)ruby_scan_hex(p->lex.pcur, 2, numlen);
18594 yyerror0(
"invalid hex escape");
18595 dispatch_scan_event(p, tSTRING_CONTENT);
18598 p->lex.pcur += *numlen;
18602#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
18605escaped_control_code(
int c)
18631#define WARN_SPACE_CHAR(c, prefix) \
18632 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c))
18635tokadd_codepoint(
struct parser_params *p, rb_encoding **encp,
18636 int regexp_literal,
const char *begin)
18638 const int wide = !begin;
18640 int codepoint = (int)ruby_scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
18642 p->lex.pcur += numlen;
18643 if (p->lex.strterm == NULL ||
18644 strterm_is_heredoc(p->lex.strterm) ||
18645 (p->lex.strterm->u.literal.func != str_regexp)) {
18646 if (!begin) begin = p->lex.pcur;
18647 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
18648 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
18649 yyerror0(
"invalid Unicode escape");
18650 dispatch_scan_event(p, tSTRING_CONTENT);
18651 return wide && numlen > 0;
18653 if (codepoint > 0x10ffff) {
18654 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
18655 yyerror0(
"invalid Unicode codepoint (too large)");
18656 dispatch_scan_event(p, tSTRING_CONTENT);
18659 if ((codepoint & 0xfffff800) == 0xd800) {
18660 flush_string_content(p, rb_utf8_encoding(), p->lex.pcur - begin);
18661 yyerror0(
"invalid Unicode codepoint");
18662 dispatch_scan_event(p, tSTRING_CONTENT);
18666 if (regexp_literal) {
18667 tokcopy(p, (
int)numlen);
18669 else if (codepoint >= 0x80) {
18670 rb_encoding *utf8 = rb_utf8_encoding();
18671 if (*encp && utf8 != *encp) {
18672 YYLTYPE loc = RUBY_INIT_YYLLOC();
18673 compile_error(p,
"UTF-8 mixed within %s source", rb_enc_name(*encp));
18674 parser_show_error_line(p, &loc);
18678 tokaddmbc(p, codepoint, *encp);
18681 tokadd(p, codepoint);
18691 int len = parser_precise_mbclen(p, p->lex.pcur-1);
18693 p->lex.pcur +=
len - 1;
18701 int term,
int symbol_literal,
int regexp_literal)
18708 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
18710 const int open_brace =
'{', close_brace =
'}';
18712 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
18714 if (peek(p, open_brace)) {
18715 if (regexp_literal && p->lex.strterm->u.literal.func == str_regexp) {
18722 tokadd(p, open_brace);
18723 while (!lex_eol_ptr_p(p, ++p->lex.pcur)) {
18725 if (c == close_brace) {
18730 else if (c == term) {
18733 if (c ==
'\\' && !lex_eol_n_p(p, 1)) {
18735 c = *++p->lex.pcur;
18737 tokadd_mbchar(p, c);
18741 const char *second = NULL;
18742 int c, last = nextc(p);
18743 if (lex_eol_p(p))
goto unterminated;
18744 while (
ISSPACE(c = peekc(p)) && !lex_eol_ptr_p(p, ++p->lex.pcur));
18745 while (c != close_brace) {
18746 if (c == term)
goto unterminated;
18747 if (second == multiple_codepoints)
18748 second = p->lex.pcur;
18749 if (regexp_literal) tokadd(p, last);
18750 if (!tokadd_codepoint(p, encp, regexp_literal, NULL)) {
18753 while (
ISSPACE(c = peekc(p))) {
18754 if (lex_eol_ptr_p(p, ++p->lex.pcur))
goto unterminated;
18757 if (term == -1 && !second)
18758 second = multiple_codepoints;
18761 if (c != close_brace) {
18763 flush_string_content(p, rb_utf8_encoding(), 0);
18764 yyerror0(
"unterminated Unicode escape");
18765 dispatch_scan_event(p, tSTRING_CONTENT);
18768 if (second && second != multiple_codepoints) {
18769 const char *pcur = p->lex.pcur;
18770 p->lex.pcur = second;
18771 dispatch_scan_event(p, tSTRING_CONTENT);
18773 p->lex.pcur = pcur;
18774 yyerror0(multiple_codepoints);
18778 if (regexp_literal) tokadd(p, close_brace);
18783 if (!tokadd_codepoint(p, encp, regexp_literal, p->lex.pcur -
rb_strlen_lit(
"\\u"))) {
18790#define ESCAPE_CONTROL 1
18791#define ESCAPE_META 2
18794read_escape(
struct parser_params *p,
int flags,
const char *begin)
18799 switch (c = nextc(p)) {
18824 case '0':
case '1':
case '2':
case '3':
18825 case '4':
case '5':
case '6':
case '7':
18827 c = (int)ruby_scan_oct(p->lex.pcur, 3, &numlen);
18828 p->lex.pcur += numlen;
18832 c = tok_hex(p, &numlen);
18833 if (numlen == 0)
return 0;
18843 if (flags & ESCAPE_META)
goto eof;
18844 if ((c = nextc(p)) !=
'-') {
18847 if ((c = nextc(p)) ==
'\\') {
18848 switch (peekc(p)) {
18849 case 'u':
case 'U':
18853 return read_escape(p, flags|ESCAPE_META, begin) | 0x80;
18855 else if (c == -1)
goto eof;
18861 int c2 = escaped_control_code(c);
18863 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
18864 WARN_SPACE_CHAR(c2,
"\\M-");
18867 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
18870 else if (
ISCNTRL(c))
goto eof;
18871 return ((c & 0xff) | 0x80);
18875 if ((c = nextc(p)) !=
'-') {
18879 if (flags & ESCAPE_CONTROL)
goto eof;
18880 if ((c = nextc(p))==
'\\') {
18881 switch (peekc(p)) {
18882 case 'u':
case 'U':
18886 c = read_escape(p, flags|ESCAPE_CONTROL, begin);
18890 else if (c == -1)
goto eof;
18896 int c2 = escaped_control_code(c);
18899 if (flags & ESCAPE_META) {
18900 WARN_SPACE_CHAR(c2,
"\\M-");
18903 WARN_SPACE_CHAR(c2,
"");
18907 if (flags & ESCAPE_META) {
18908 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
18911 WARN_SPACE_CHAR(c2,
"\\C-");
18915 else if (
ISCNTRL(c))
goto eof;
18921 flush_string_content(p, p->enc, p->lex.pcur - begin);
18922 yyerror0(
"Invalid escape character syntax");
18923 dispatch_scan_event(p, tSTRING_CONTENT);
18934 int len = rb_enc_codelen(c, enc);
18935 rb_enc_mbcput(c, tokspace(p,
len), enc);
18943 const char *begin = p->lex.pcur;
18945 switch (c = nextc(p)) {
18949 case '0':
case '1':
case '2':
case '3':
18950 case '4':
case '5':
case '6':
case '7':
18952 ruby_scan_oct(--p->lex.pcur, 3, &numlen);
18953 if (numlen == 0)
goto eof;
18954 p->lex.pcur += numlen;
18955 tokcopy(p, (
int)numlen + 1);
18961 tok_hex(p, &numlen);
18962 if (numlen == 0)
return -1;
18963 tokcopy(p, (
int)numlen + 2);
18969 flush_string_content(p, p->enc, p->lex.pcur - begin);
18970 yyerror0(
"Invalid escape character syntax");
18982char_to_option(
int c)
18988 val = RE_ONIG_OPTION_IGNORECASE;
18991 val = RE_ONIG_OPTION_EXTEND;
18994 val = RE_ONIG_OPTION_MULTILINE;
19003#define ARG_ENCODING_FIXED 16
19004#define ARG_ENCODING_NONE 32
19005#define ENC_ASCII8BIT 1
19006#define ENC_EUC_JP 2
19007#define ENC_Windows_31J 3
19011char_to_option_kcode(
int c,
int *option,
int *kcode)
19017 *kcode = ENC_ASCII8BIT;
19018 return (*option = ARG_ENCODING_NONE);
19020 *kcode = ENC_EUC_JP;
19023 *kcode = ENC_Windows_31J;
19030 return (*option = char_to_option(c));
19032 *option = ARG_ENCODING_FIXED;
19045 while (c = nextc(p),
ISALPHA(c)) {
19047 options |= RE_OPTION_ONCE;
19049 else if (char_to_option_kcode(c, &opt, &kc)) {
19051 if (kc != ENC_ASCII8BIT) kcode = c;
19065 YYLTYPE loc = RUBY_INIT_YYLLOC();
19067 compile_error(p,
"unknown regexp option%s - %*s",
19068 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
19069 parser_show_error_line(p, &loc);
19071 return options | RE_OPTION_ENCODING(kcode);
19077 int len = parser_precise_mbclen(p, p->lex.pcur-1);
19078 if (
len < 0)
return -1;
19080 p->lex.pcur += --
len;
19081 if (
len > 0) tokcopy(p,
len);
19086simple_re_meta(
int c)
19089 case '$':
case '*':
case '+':
case '.':
19090 case '?':
case '^':
case '|':
19091 case ')':
case ']':
case '}':
case '>':
19099parser_update_heredoc_indent(
struct parser_params *p,
int c)
19101 if (p->heredoc_line_indent == -1) {
19102 if (c ==
'\n') p->heredoc_line_indent = 0;
19106 p->heredoc_line_indent++;
19109 else if (c ==
'\t') {
19110 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
19111 p->heredoc_line_indent = w * TAB_WIDTH;
19114 else if (c !=
'\n') {
19115 if (p->heredoc_indent > p->heredoc_line_indent) {
19116 p->heredoc_indent = p->heredoc_line_indent;
19118 p->heredoc_line_indent = -1;
19122 p->heredoc_line_indent = 0;
19129parser_mixed_error(
struct parser_params *p, rb_encoding *enc1, rb_encoding *enc2)
19131 YYLTYPE loc = RUBY_INIT_YYLLOC();
19132 const char *n1 = rb_enc_name(enc1), *n2 = rb_enc_name(enc2);
19133 compile_error(p,
"%s mixed within %s source", n1, n2);
19134 parser_show_error_line(p, &loc);
19138parser_mixed_escape(
struct parser_params *p,
const char *beg, rb_encoding *enc1, rb_encoding *enc2)
19140 const char *pos = p->lex.pcur;
19142 parser_mixed_error(p, enc1, enc2);
19147nibble_char_upper(
unsigned int c)
19150 return c + (c < 10 ?
'0' :
'A' - 10);
19155 int func,
int term,
int paren,
long *nest,
19156 rb_encoding **encp, rb_encoding **enc)
19159 bool erred =
false;
19161 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
19162 int top_of_line = FALSE;
19165#define mixed_error(enc1, enc2) \
19166 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
19167#define mixed_escape(beg, enc1, enc2) \
19168 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
19170 while ((c = nextc(p)) != -1) {
19171 if (p->heredoc_indent > 0) {
19172 parser_update_heredoc_indent(p, c);
19175 if (top_of_line && heredoc_end == p->ruby_sourceline) {
19181 if (paren && c == paren) {
19184 else if (c == term) {
19185 if (!nest || !*nest) {
19191 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && !lex_eol_p(p)) {
19192 unsigned char c2 = *p->lex.pcur;
19193 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
19198 else if (c ==
'\\') {
19202 if (func & STR_FUNC_QWORDS)
break;
19203 if (func & STR_FUNC_EXPAND) {
19204 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
19215 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
19219 if ((func & STR_FUNC_EXPAND) == 0) {
19223 tokadd_utf8(p, enc, term,
19224 func & STR_FUNC_SYMBOL,
19225 func & STR_FUNC_REGEXP);
19229 if (c == -1)
return -1;
19231 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
19234 if (func & STR_FUNC_REGEXP) {
19240 c = read_escape(p, 0, p->lex.pcur - 1);
19245 *t++ = nibble_char_upper(c >> 4);
19246 *t++ = nibble_char_upper(c);
19251 if (c == term && !simple_re_meta(c)) {
19256 if ((c = tokadd_escape(p)) < 0)
19258 if (*enc && *enc != *encp) {
19259 mixed_escape(p->lex.ptok+2, *enc, *encp);
19263 else if (func & STR_FUNC_EXPAND) {
19265 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
19266 c = read_escape(p, 0, p->lex.pcur - 1);
19268 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
19271 else if (c != term && !(paren && c == paren)) {
19278 else if (!parser_isascii(p)) {
19283 else if (*enc != *encp) {
19284 mixed_error(*enc, *encp);
19287 if (tokadd_mbchar(p, c) == -1)
return -1;
19290 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
19298 else if (*enc != *encp) {
19299 mixed_error(*enc, *encp);
19305 top_of_line = (c ==
'\n');
19309 if (*enc) *encp = *enc;
19313#define NEW_STRTERM(func, term, paren) new_strterm(p, func, term, paren)
19316flush_string_content(
struct parser_params *p, rb_encoding *enc,
size_t back)
19318 p->lex.pcur -= back;
19319 if (has_delayed_token(p)) {
19320 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
19322 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
19323 p->delayed.end_line = p->ruby_sourceline;
19324 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
19326 dispatch_delayed_token(p, tSTRING_CONTENT);
19327 p->lex.ptok = p->lex.pcur;
19329 dispatch_scan_event(p, tSTRING_CONTENT);
19330 p->lex.pcur += back;
19336#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
19337#define SPECIAL_PUNCT(idx) ( \
19338 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
19339 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
19340 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
19341 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
19342 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
19344const uint_least32_t ruby_global_name_punct_bits[] = {
19350#undef SPECIAL_PUNCT
19353static enum yytokentype
19354parser_peek_variable_name(struct parser_params *p)
19357 const char *ptr = p->lex.pcur;
19359 if (lex_eol_ptr_n_p(p, ptr, 1)) return 0;
19363 if ((c = *ptr) == '-') {
19364 if (lex_eol_ptr_p(p, ++ptr)) return 0;
19367 else if (is_global_name_punct(c) || ISDIGIT(c)) {
19368 return tSTRING_DVAR;
19372 if ((c = *ptr) == '@') {
19373 if (lex_eol_ptr_p(p, ++ptr)) return 0;
19379 p->command_start = TRUE;
19380 yylval.state = p->lex.state;
19381 return tSTRING_DBEG;
19385 if (!ISASCII(c) || c == '_' || ISALPHA(c))
19386 return tSTRING_DVAR;
19390#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
19391#define IS_END() IS_lex_state(EXPR_END_ANY)
19392#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
19393#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
19394#define IS_LABEL_POSSIBLE() (\
19395 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
19397#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
19398#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
19400static inline enum yytokentype
19401parser_string_term(struct parser_params *p, int func)
19403 xfree(p->lex.strterm);
19404 p->lex.strterm = 0;
19405 if (func & STR_FUNC_REGEXP) {
19406 set_yylval_num(regx_options(p));
19407 dispatch_scan_event(p, tREGEXP_END);
19408 SET_LEX_STATE(EXPR_END);
19409 return tREGEXP_END;
19411 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
19413 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
19416 SET_LEX_STATE(EXPR_END);
19417 return tSTRING_END;
19420static enum yytokentype
19421parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
19423 int func = quote->func;
19424 int term = quote->term;
19425 int paren = quote->paren;
19427 rb_encoding *enc = p->enc;
19428 rb_encoding *base_enc = 0;
19429 rb_parser_string_t *lit;
19431 if (func & STR_FUNC_TERM) {
19432 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
19433 SET_LEX_STATE(EXPR_END);
19434 xfree(p->lex.strterm);
19435 p->lex.strterm = 0;
19436 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
19439 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
19440 while (c != '\n' && ISSPACE(c = nextc(p)));
19443 if (func & STR_FUNC_LIST) {
19444 quote->func &= ~STR_FUNC_LIST;
19447 if (c == term && !quote->nest) {
19448 if (func & STR_FUNC_QWORDS) {
19449 quote->func |= STR_FUNC_TERM;
19450 pushback(p, c); /* dispatch the term at tSTRING_END */
19451 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
19454 return parser_string_term(p, func);
19457 if (!ISSPACE(c)) pushback(p, c);
19458 add_delayed_token(p, p->lex.ptok, p->lex.pcur);
19462 if ((func & STR_FUNC_EXPAND) && c == '#') {
19463 enum yytokentype t = parser_peek_variable_name(p);
19469 if (tokadd_string(p, func, term, paren, "e->nest,
19470 &enc, &base_enc) == -1) {
19473# define unterminated_literal(mesg) yyerror0(mesg)
19475# define unterminated_literal(mesg) compile_error(p, mesg)
19477 literal_flush(p, p->lex.pcur);
19478 if (func & STR_FUNC_QWORDS) {
19479 /* no content to add, bailing out here */
19480 unterminated_literal("unterminated list meets end of file");
19481 xfree(p->lex.strterm);
19482 p->lex.strterm = 0;
19483 return tSTRING_END;
19485 if (func & STR_FUNC_REGEXP) {
19486 unterminated_literal("unterminated regexp meets end of file");
19489 unterminated_literal("unterminated string meets end of file");
19491 quote->func |= STR_FUNC_TERM;
19496 lit = STR_NEW3(tok(p), toklen(p), enc, func);
19497 set_yylval_str(lit);
19498 flush_string_content(p, enc, 0);
19500 return tSTRING_CONTENT;
19503static enum yytokentype
19504heredoc_identifier(struct parser_params *p)
19507 * term_len is length of `<<"END"` except `END`,
19508 * in this case term_len is 4 (<, <, " and ").
19510 long len, offset = p->lex.pcur - p->lex.pbeg;
19511 int c = nextc(p), term, func = 0, quote = 0;
19512 enum yytokentype token = tSTRING_BEG;
19517 func = STR_FUNC_INDENT;
19520 else if (c == '~') {
19522 func = STR_FUNC_INDENT;
19528 func |= str_squote; goto quoted;
19530 func |= str_dquote;
goto quoted;
19532 token = tXSTRING_BEG;
19533 func |= str_xquote;
goto quoted;
19540 while ((c = nextc(p)) != term) {
19541 if (c == -1 || c ==
'\r' || c ==
'\n') {
19542 yyerror0(
"unterminated here document identifier");
19549 if (!parser_is_identchar(p)) {
19551 if (func & STR_FUNC_INDENT) {
19552 pushback(p, indent > 0 ?
'~' :
'-');
19556 func |= str_dquote;
19558 int n = parser_precise_mbclen(p, p->lex.pcur-1);
19559 if (n < 0)
return 0;
19560 p->lex.pcur += --n;
19561 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
19566 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
19567 if ((
unsigned long)
len >= HERETERM_LENGTH_MAX)
19568 yyerror0(
"too long here document identifier");
19569 dispatch_scan_event(p, tHEREDOC_BEG);
19572 p->lex.strterm = new_heredoc(p);
19573 rb_strterm_heredoc_t *here = &p->lex.strterm->u.heredoc;
19574 here->offset = offset;
19575 here->sourceline = p->ruby_sourceline;
19576 here->length = (unsigned)
len;
19577 here->quote = quote;
19579 here->lastline = p->lex.lastline;
19582 p->heredoc_indent = indent;
19583 p->heredoc_line_indent = 0;
19588heredoc_restore(
struct parser_params *p, rb_strterm_heredoc_t *here)
19590 rb_parser_string_t *line;
19591 rb_strterm_t *term = p->lex.strterm;
19593 p->lex.strterm = 0;
19594 line = here->lastline;
19595 p->lex.lastline = line;
19596 p->lex.pbeg = PARSER_STRING_PTR(line);
19597 p->lex.pend = p->lex.pbeg + PARSER_STRING_LEN(line);
19598 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
19599 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
19600 p->heredoc_end = p->ruby_sourceline;
19601 p->ruby_sourceline = (int)here->sourceline;
19602 if (p->eofp) p->lex.nextline = AFTER_HEREDOC_WITHOUT_TERMINTOR;
19608dedent_string_column(
const char *str,
long len,
int width)
19612 for (i = 0; i <
len && col < width; i++) {
19613 if (str[i] ==
' ') {
19616 else if (str[i] ==
'\t') {
19617 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
19618 if (n > width)
break;
19630dedent_string(
struct parser_params *p, rb_parser_string_t *
string,
int width)
19636 len = PARSER_STRING_LEN(
string);
19637 str = PARSER_STRING_PTR(
string);
19639 i = dedent_string_column(str,
len, width);
19642 rb_parser_str_modify(
string);
19643 str = PARSER_STRING_PTR(
string);
19644 if (PARSER_STRING_LEN(
string) !=
len)
19645 rb_fatal(
"literal string changed: %s", PARSER_STRING_PTR(
string));
19647 rb_parser_str_set_len(p,
string,
len - i);
19654 NODE *node, *str_node, *prev_node;
19655 int indent = p->heredoc_indent;
19656 rb_parser_string_t *prev_lit = 0;
19658 if (indent <= 0)
return root;
19659 if (!root)
return root;
19661 prev_node = node = str_node = root;
19662 if (nd_type_p(root, NODE_LIST)) str_node = RNODE_LIST(root)->nd_head;
19665 rb_parser_string_t *lit = RNODE_STR(str_node)->string;
19666 if (nd_fl_newline(str_node)) {
19667 dedent_string(p, lit, indent);
19672 else if (!literal_concat0(p, prev_lit, lit)) {
19676 NODE *end = RNODE_LIST(node)->as.nd_end;
19677 node = RNODE_LIST(prev_node)->nd_next = RNODE_LIST(node)->nd_next;
19679 if (nd_type_p(prev_node, NODE_DSTR))
19680 nd_set_type(prev_node, NODE_STR);
19683 RNODE_LIST(node)->as.nd_end = end;
19688 while ((nd_type_p(node, NODE_LIST) || nd_type_p(node, NODE_DSTR)) && (node = RNODE_LIST(prev_node = node)->nd_next) != 0) {
19690 if (!nd_type_p(node, NODE_LIST))
break;
19691 if ((str_node = RNODE_LIST(node)->nd_head) != 0) {
19692 enum node_type
type = nd_type(str_node);
19693 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
19703whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
19705 const char *beg = p->lex.pbeg;
19706 const char *ptr = p->lex.pend;
19708 if (ptr - beg <
len)
return FALSE;
19709 if (ptr > beg && ptr[-1] ==
'\n') {
19710 if (--ptr > beg && ptr[-1] ==
'\r') --ptr;
19711 if (ptr - beg <
len)
return FALSE;
19713 if (strncmp(eos, ptr -=
len,
len))
return FALSE;
19715 while (beg < ptr &&
ISSPACE(*beg)) beg++;
19723 if (strncmp(p->lex.pcur, word,
len))
return 0;
19724 if (lex_eol_n_p(p,
len))
return 1;
19725 int c = (
unsigned char)p->lex.pcur[
len];
19728 case '\0':
case '\004':
case '\032':
return 1;
19733#define NUM_SUFFIX_R (1<<0)
19734#define NUM_SUFFIX_I (1<<1)
19735#define NUM_SUFFIX_ALL 3
19741 const char *lastp = p->lex.pcur;
19743 while ((c = nextc(p)) != -1) {
19744 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
19745 result |= (mask & NUM_SUFFIX_I);
19746 mask &= ~NUM_SUFFIX_I;
19748 mask &= ~NUM_SUFFIX_R;
19751 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
19752 result |= (mask & NUM_SUFFIX_R);
19753 mask &= ~NUM_SUFFIX_R;
19757 p->lex.pcur = lastp;
19758 literal_flush(p, p->lex.pcur);
19767static enum yytokentype
19768set_number_literal(
struct parser_params *p,
enum yytokentype
type,
int suffix,
int base,
int seen_point)
19770 enum rb_numeric_type numeric_type = integer_literal;
19772 if (
type == tFLOAT) {
19773 numeric_type = float_literal;
19776 if (suffix & NUM_SUFFIX_R) {
19778 numeric_type = rational_literal;
19780 if (suffix & NUM_SUFFIX_I) {
19786 set_yylval_node(NEW_INTEGER(
strdup(tok(p)), base, &_cur_loc));
19789 set_yylval_node(NEW_FLOAT(
strdup(tok(p)), &_cur_loc));
19792 set_yylval_node(NEW_RATIONAL(
strdup(tok(p)), base, seen_point, &_cur_loc));
19795 set_yylval_node(NEW_IMAGINARY(
strdup(tok(p)), base, seen_point, numeric_type, &_cur_loc));
19796 (void)numeric_type;
19799 rb_bug(
"unexpected token: %d",
type);
19801 SET_LEX_STATE(EXPR_END);
19805#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
19807parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
19809 if (has_delayed_token(p))
19810 dispatch_delayed_token(p, tSTRING_CONTENT);
19813 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
19814 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
19816 if (p->keep_tokens) {
19817 rb_parser_string_t *str = rb_parser_encoding_string_new(p, p->lex.ptok, p->lex.pend - p->lex.ptok, p->enc);
19818 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
19819 parser_append_tokens(p, str, tHEREDOC_END, line);
19823 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
19828static enum yytokentype
19829here_document(
struct parser_params *p, rb_strterm_heredoc_t *here)
19831 int c, func, indent = 0;
19832 const char *eos, *ptr, *ptr_end;
19834 rb_parser_string_t *str = 0;
19835 rb_encoding *enc = p->enc;
19836 rb_encoding *base_enc = 0;
19842 eos = PARSER_STRING_PTR(here->lastline) + here->offset;
19843 len = here->length;
19844 indent = (func = here->func) & STR_FUNC_INDENT;
19846 if ((c = nextc(p)) == -1) {
19849 if (!has_delayed_token(p)) {
19850 dispatch_scan_event(p, tSTRING_CONTENT);
19853 if ((
len = p->lex.pcur - p->lex.ptok) > 0) {
19854 if (!(func & STR_FUNC_REGEXP)) {
19858 rb_is_usascii_enc(p->enc) &&
19859 enc != rb_utf8_encoding()) {
19860 enc = rb_ascii8bit_encoding();
19863 rb_parser_enc_str_buf_cat(p, p->delayed.token, p->lex.ptok,
len, enc);
19865 dispatch_delayed_token(p, tSTRING_CONTENT);
19869 heredoc_restore(p, &p->lex.strterm->u.heredoc);
19870 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
19873 SET_LEX_STATE(EXPR_END);
19874 return tSTRING_END;
19880 else if (p->heredoc_line_indent == -1) {
19885 p->heredoc_line_indent = 0;
19887 else if (whole_match_p(p, eos,
len, indent)) {
19888 dispatch_heredoc_end(p);
19890 heredoc_restore(p, &p->lex.strterm->u.heredoc);
19892 SET_LEX_STATE(EXPR_END);
19893 return tSTRING_END;
19896 if (!(func & STR_FUNC_EXPAND)) {
19898 ptr = PARSER_STRING_PTR(p->lex.lastline);
19899 ptr_end = p->lex.pend;
19900 if (ptr_end > ptr) {
19901 switch (ptr_end[-1]) {
19903 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
19912 if (p->heredoc_indent > 0) {
19914 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
19916 p->heredoc_line_indent = 0;
19920 parser_str_cat(str, ptr, ptr_end - ptr);
19922 str = rb_parser_encoding_string_new(p, ptr, ptr_end - ptr, enc);
19923 if (!lex_eol_ptr_p(p, ptr_end)) parser_str_cat_cstr(str,
"\n");
19925 if (p->heredoc_indent > 0) {
19928 if (nextc(p) == -1) {
19930 rb_parser_string_free(p, str);
19935 }
while (!whole_match_p(p, eos,
len, indent));
19941 enum yytokentype t = parser_peek_variable_name(p);
19942 if (p->heredoc_line_indent != -1) {
19943 if (p->heredoc_indent > p->heredoc_line_indent) {
19944 p->heredoc_indent = p->heredoc_line_indent;
19946 p->heredoc_line_indent = -1;
19955 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
19956 if (p->eofp)
goto error;
19960 if (c ==
'\\') p->heredoc_line_indent = -1;
19962 str = STR_NEW3(tok(p), toklen(p), enc, func);
19964 set_yylval_str(str);
19966 if (bol) nd_set_fl_newline(yylval.node);
19968 flush_string_content(p, enc, 0);
19969 return tSTRING_CONTENT;
19971 tokadd(p, nextc(p));
19972 if (p->heredoc_indent > 0) {
19977 if ((c = nextc(p)) == -1)
goto error;
19978 }
while (!whole_match_p(p, eos,
len, indent));
19979 str = STR_NEW3(tok(p), toklen(p), enc, func);
19981 dispatch_heredoc_end(p);
19982 heredoc_restore(p, &p->lex.strterm->u.heredoc);
19984 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
19987 s_value = p->s_value;
19989 set_yylval_str(str);
19991 set_parser_s_value(s_value);
19995 if (bol) nd_set_fl_newline(yylval.node);
19997 return tSTRING_CONTENT;
20007 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after '%c' operator", WARN_I(c));
20010 rb_warning1(
"ambiguous first argument; put parentheses or a space even after '%c' operator", WARN_I(c));
20023 switch (id_type(
id)) {
20027# define ERR(mesg) (yyerror0(mesg), Qtrue)
20029# define ERR(mesg) WARN_S(mesg)
20032 return ERR(
"formal argument cannot be a constant");
20034 return ERR(
"formal argument cannot be an instance variable");
20036 return ERR(
"formal argument cannot be a global variable");
20038 return ERR(
"formal argument cannot be a class variable");
20040 return ERR(
"formal argument must be local variable");
20043 shadowing_lvar(p,
id);
20051 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
20060 if (
len > 5 && name[nlen =
len - 5] ==
'-') {
20061 if (rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
20064 if (
len > 4 && name[nlen =
len - 4] ==
'-') {
20065 if (rb_memcicmp(name + nlen + 1,
"dos", 3) == 0)
20067 if (rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
20068 !(
len == 8 && rb_memcicmp(name,
"utf8-mac",
len) == 0))
20076parser_set_encode(
struct parser_params *p,
const char *name)
20082 const char *wrong = 0;
20084 case 'e':
case 'E': wrong =
"external";
break;
20085 case 'i':
case 'I': wrong =
"internal";
break;
20086 case 'f':
case 'F': wrong =
"filesystem";
break;
20087 case 'l':
case 'L': wrong =
"locale";
break;
20089 if (wrong &&
STRCASECMP(name, wrong) == 0)
goto unknown;
20090 idx = rb_enc_find_index(name);
20093 excargs[1] = rb_sprintf(
"unknown encoding name: %s", name);
20095 excargs[0] = rb_eArgError;
20096 excargs[2] = rb_make_backtrace();
20097 rb_ary_unshift(excargs[2], rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
20098 VALUE exc = rb_make_exception(3, excargs);
20099 ruby_show_error_line(p, exc, &(YYLTYPE)RUBY_INIT_YYLLOC(), p->ruby_sourceline, p->lex.lastline);
20101 rb_ast_free(p->ast);
20106 enc = rb_enc_from_index(idx);
20107 if (!rb_enc_asciicompat(enc)) {
20108 excargs[1] = rb_sprintf(
"%s is not ASCII compatible", rb_enc_name(enc));
20113 if (p->debug_lines) {
20115 for (i = 0; i < p->debug_lines->len; i++) {
20116 rb_parser_enc_associate(p, p->debug_lines->data[i], enc);
20125 if (p->token_seen)
return false;
20126 return (p->line_count == (p->has_shebang ? 2 : 1));
20129typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
20130typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
20132static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
20135magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
20137 if (!comment_at_top(p)) {
20140 parser_set_encode(p, val);
20144parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
20147 case 't':
case 'T':
20152 case 'f':
case 'F':
20158 return parser_invalid_pragma_value(p, name, val);
20162parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
20164 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
20169parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
20171 int b = parser_get_bool(p, name, val);
20172 if (b >= 0) p->token_info_enabled = b;
20176parser_set_frozen_string_literal(
struct parser_params *p,
const char *name,
const char *val)
20180 if (p->token_seen) {
20181 rb_warning1(
"'%s' is ignored after any tokens", WARN_S(name));
20185 b = parser_get_bool(p, name, val);
20188 p->frozen_string_literal = b;
20192parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
20194 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
20195 if (*s ==
' ' || *s ==
'\t')
continue;
20196 if (*s ==
'#')
break;
20197 rb_warning1(
"'%s' is ignored unless in comment-only line", WARN_S(name));
20202 case 'n':
case 'N':
20204 p->ctxt.shareable_constant_value = rb_parser_shareable_none;
20208 case 'l':
case 'L':
20210 p->ctxt.shareable_constant_value = rb_parser_shareable_literal;
20214 case 'e':
case 'E':
20215 if (
STRCASECMP(val,
"experimental_copy") == 0) {
20216 p->ctxt.shareable_constant_value = rb_parser_shareable_copy;
20219 if (
STRCASECMP(val,
"experimental_everything") == 0) {
20220 p->ctxt.shareable_constant_value = rb_parser_shareable_everything;
20225 parser_invalid_pragma_value(p, name, val);
20228# if WARN_PAST_SCOPE
20230parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
20232 int b = parser_get_bool(p, name, val);
20233 if (b >= 0) p->past_scope_enabled = b;
20239 rb_magic_comment_setter_t func;
20240 rb_magic_comment_length_t length;
20244 {
"coding", magic_comment_encoding, parser_encode_length},
20245 {
"encoding", magic_comment_encoding, parser_encode_length},
20246 {
"frozen_string_literal", parser_set_frozen_string_literal},
20247 {
"shareable_constant_value", parser_set_shareable_constant_value},
20248 {
"warn_indent", parser_set_token_info},
20249# if WARN_PAST_SCOPE
20250 {
"warn_past_scope", parser_set_past_scope},
20255magic_comment_marker(
const char *str,
long len)
20262 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
20263 return str + i + 1;
20268 if (i + 1 >=
len)
return 0;
20269 if (str[i+1] !=
'-') {
20272 else if (str[i-1] !=
'-') {
20276 return str + i + 2;
20291 VALUE name = 0, val = 0;
20292 const char *beg, *end, *vbeg, *vend;
20293#define str_copy(_s, _p, _n) ((_s) \
20294 ? (void)(rb_str_resize((_s), (_n)), \
20295 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
20296 : (void)((_s) = STR_NEW((_p), (_n))))
20298 if (
len <= 7)
return FALSE;
20299 if (!!(beg = magic_comment_marker(str,
len))) {
20300 if (!(end = magic_comment_marker(beg, str +
len - beg)))
20304 len = end - beg - 3;
20314 for (;
len > 0 && *str; str++, --
len) {
20316 case '\'':
case '"':
case ':':
case ';':
20321 for (beg = str;
len > 0; str++, --
len) {
20323 case '\'':
case '"':
case ':':
case ';':
20334 if (!indicator)
return FALSE;
20338 do str++;
while (--
len > 0 &&
ISSPACE(*str));
20340 const char *tok_beg = str;
20342 for (vbeg = ++str; --
len > 0 && *str !=
'"'; str++) {
20343 if (*str ==
'\\') {
20355 for (vbeg = str;
len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --
len, str++);
20358 const char *tok_end = str;
20360 while (
len > 0 && (*str ==
';' ||
ISSPACE(*str))) --
len, str++;
20364 if (
len)
return FALSE;
20368 str_copy(name, beg, n);
20369 s = RSTRING_PTR(name);
20370 for (i = 0; i < n; ++i) {
20371 if (s[i] ==
'-') s[i] =
'_';
20374 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
20377 n = (*mc->length)(p, vbeg, n);
20379 str_copy(val, vbeg, n);
20380 p->lex.ptok = tok_beg;
20381 p->lex.pcur = tok_end;
20382 (*mc->func)(p, mc->name, RSTRING_PTR(val));
20385 }
while (++mc < magic_comments + numberof(magic_comments));
20387 str_copy(val, vbeg, vend - vbeg);
20396set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
20399 const char *beg = str;
20403 if (send - str <= 6)
return;
20405 case 'C':
case 'c': str += 6;
continue;
20406 case 'O':
case 'o': str += 5;
continue;
20407 case 'D':
case 'd': str += 4;
continue;
20408 case 'I':
case 'i': str += 3;
continue;
20409 case 'N':
case 'n': str += 2;
continue;
20410 case 'G':
case 'g': str += 1;
continue;
20411 case '=':
case ':':
20425 if (++str >= send)
return;
20428 if (*str !=
'=' && *str !=
':')
return;
20433 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
20434 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
20437 parser_set_encode(p, RSTRING_PTR(s));
20438 rb_str_resize(s, 0);
20444 int c = nextc0(p, FALSE);
20448 if (peek(p,
'!')) p->has_shebang = 1;
20451 if (!lex_eol_n_p(p, 2) &&
20452 (
unsigned char)p->lex.pcur[0] == 0xbb &&
20453 (
unsigned char)p->lex.pcur[1] == 0xbf) {
20454 p->enc = rb_utf8_encoding();
20457 if (p->debug_lines) {
20458 rb_parser_string_set_encoding(p->lex.lastline, p->enc);
20461 p->lex.pbeg = p->lex.pcur;
20470 p->enc = rb_parser_str_get_encoding(p->lex.lastline);
20474#define ambiguous_operator(tok, op, syn) ( \
20475 rb_warning0("'"op"' after local variable or literal is interpreted as binary operator"), \
20476 rb_warning0("even though it seems like "syn""))
20478#define ambiguous_operator(tok, op, syn) \
20479 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
20481#define warn_balanced(tok, op, syn) ((void) \
20482 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
20483 space_seen && !ISSPACE(c) && \
20484 (ambiguous_operator(tok, op, syn), 0)), \
20485 (enum yytokentype)(tok))
20487static enum yytokentype
20490 yyerror0(
"numeric literal without digits");
20491 if (peek(p,
'_')) nextc(p);
20493 return set_number_literal(p, tINTEGER, 0, 10, 0);
20496static enum yytokentype
20499 int is_float, seen_point, seen_e, nondigit;
20502 is_float = seen_point = seen_e = nondigit = 0;
20503 SET_LEX_STATE(EXPR_END);
20505 if (c ==
'-' || c ==
'+') {
20510 int start = toklen(p);
20512 if (c ==
'x' || c ==
'X') {
20518 if (nondigit)
break;
20525 }
while ((c = nextc(p)) != -1);
20529 if (toklen(p) == start) {
20530 return no_digits(p);
20532 else if (nondigit)
goto trailing_uc;
20533 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
20534 return set_number_literal(p, tINTEGER, suffix, 16, 0);
20536 if (c ==
'b' || c ==
'B') {
20539 if (c ==
'0' || c ==
'1') {
20542 if (nondigit)
break;
20546 if (c !=
'0' && c !=
'1')
break;
20549 }
while ((c = nextc(p)) != -1);
20553 if (toklen(p) == start) {
20554 return no_digits(p);
20556 else if (nondigit)
goto trailing_uc;
20557 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
20558 return set_number_literal(p, tINTEGER, suffix, 2, 0);
20560 if (c ==
'd' || c ==
'D') {
20566 if (nondigit)
break;
20573 }
while ((c = nextc(p)) != -1);
20577 if (toklen(p) == start) {
20578 return no_digits(p);
20580 else if (nondigit)
goto trailing_uc;
20581 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
20582 return set_number_literal(p, tINTEGER, suffix, 10, 0);
20588 if (c ==
'o' || c ==
'O') {
20591 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
20593 return no_digits(p);
20596 if (c >=
'0' && c <=
'7') {
20601 if (nondigit)
break;
20605 if (c <
'0' || c >
'9')
break;
20606 if (c >
'7')
goto invalid_octal;
20609 }
while ((c = nextc(p)) != -1);
20610 if (toklen(p) > start) {
20613 if (nondigit)
goto trailing_uc;
20614 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
20615 return set_number_literal(p, tINTEGER, suffix, 8, 0);
20622 if (c >
'7' && c <=
'9') {
20624 yyerror0(
"Invalid octal digit");
20626 else if (c ==
'.' || c ==
'e' || c ==
'E') {
20632 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
20633 return set_number_literal(p, tINTEGER, suffix, 10, 0);
20639 case '0':
case '1':
case '2':
case '3':
case '4':
20640 case '5':
case '6':
case '7':
case '8':
case '9':
20646 if (nondigit)
goto trailing_uc;
20647 if (seen_point || seen_e) {
20652 if (c0 == -1 || !
ISDIGIT(c0)) {
20658 seen_point = toklen(p);
20677 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
20683 tokadd(p, nondigit);
20687 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
20691 if (nondigit)
goto decode_num;
20705 literal_flush(p, p->lex.pcur - 1);
20706 YYLTYPE loc = RUBY_INIT_YYLLOC();
20707 compile_error(p,
"trailing '%c' in number", nondigit);
20708 parser_show_error_line(p, &loc);
20712 enum yytokentype
type = tFLOAT;
20714 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
20715 if (suffix & NUM_SUFFIX_R) {
20720 if (
errno == ERANGE) {
20721 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
20725 return set_number_literal(p,
type, suffix, 0, seen_point);
20727 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
20728 return set_number_literal(p, tINTEGER, suffix, 10, 0);
20731static enum yytokentype
20736 rb_parser_string_t *lit;
20739 SET_LEX_STATE(EXPR_VALUE);
20744 compile_error(p,
"incomplete character syntax");
20747 if (rb_enc_isspace(c, p->enc)) {
20749 int c2 = escaped_control_code(c);
20751 WARN_SPACE_CHAR(c2,
"?");
20756 SET_LEX_STATE(EXPR_VALUE);
20761 if (!parser_isascii(p)) {
20762 if (tokadd_mbchar(p, c) == -1)
return 0;
20764 else if ((rb_enc_isalnum(c, p->enc) || c ==
'_') &&
20765 !lex_eol_p(p) && is_identchar(p, p->lex.pcur, p->lex.pend, p->enc)) {
20767 const char *start = p->lex.pcur - 1, *ptr = start;
20769 int n = parser_precise_mbclen(p, ptr);
20770 if (n < 0)
return -1;
20772 }
while (!lex_eol_ptr_p(p, ptr) && is_identchar(p, ptr, p->lex.pend, p->enc));
20773 rb_warn2(
"'?' just followed by '%.*s' is interpreted as" \
20774 " a conditional operator, put a space after '?'",
20775 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
20779 else if (c ==
'\\') {
20780 if (peek(p,
'u')) {
20782 enc = rb_utf8_encoding();
20783 tokadd_utf8(p, &enc, -1, 0, 0);
20785 else if (!
ISASCII(c = peekc(p)) && c != -1) {
20787 if (tokadd_mbchar(p, c) == -1)
return 0;
20798 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
20799 set_yylval_str(lit);
20800 SET_LEX_STATE(EXPR_END);
20804static enum yytokentype
20805parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
20808 const char *ptok = p->lex.pcur;
20816 if (c == -1)
goto unterminated;
20819 if (!
ISASCII(c))
goto unknown;
20824 if (rb_enc_isalnum(term, p->enc) || !parser_isascii(p)) {
20827 c = parser_precise_mbclen(p, p->lex.pcur);
20828 if (c < 0)
return 0;
20830 yyerror0(
"unknown type of %string");
20836 compile_error(p,
"unterminated quoted string meets end of file");
20840 if (term ==
'(') term =
')';
20841 else if (term ==
'[') term =
']';
20842 else if (term ==
'{') term =
'}';
20843 else if (term ==
'<') term =
'>';
20846 p->lex.ptok = ptok-1;
20849 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
20850 return tSTRING_BEG;
20853 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
20854 return tSTRING_BEG;
20857 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
20861 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
20862 return tQWORDS_BEG;
20865 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
20866 return tSYMBOLS_BEG;
20869 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
20870 return tQSYMBOLS_BEG;
20873 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
20874 return tXSTRING_BEG;
20877 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
20878 return tREGEXP_BEG;
20881 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
20882 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
20886 yyerror0(
"unknown type of %string");
20890 if ((c = nextc(p)) ==
'=') {
20891 set_yylval_id(
'%');
20892 SET_LEX_STATE(EXPR_BEG);
20895 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
20898 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20900 return warn_balanced(
'%',
"%%",
"string literal");
20907 if (tokadd_mbchar(p, c) == -1)
return -1;
20909 }
while (parser_is_identchar(p));
20917 ID ident = TOK_INTERN();
20919 set_yylval_name(ident);
20929 unsigned long n = ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &
len, &overflow);
20930 const unsigned long nth_ref_max =
20935 if (overflow || n > nth_ref_max) {
20937 rb_warn1(
"'%s' is too big for a number variable, always nil", WARN_S(tok(p)));
20945static enum yytokentype
20946parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
20948 const char *ptr = p->lex.pcur;
20951 SET_LEX_STATE(EXPR_END);
20952 p->lex.ptok = ptr - 1;
20958 if (parser_is_identchar(p)) {
20990 if (parser_is_identchar(p)) {
20991 if (tokadd_mbchar(p, c) == -1)
return 0;
21006 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
21011 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
21014 case '1':
case '2':
case '3':
21015 case '4':
case '5':
case '6':
21016 case '7':
case '8':
case '9':
21021 }
while (c != -1 &&
ISDIGIT(c));
21023 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
21025 c = parse_numvar(p);
21026 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
21030 if (!parser_is_identchar(p)) {
21031 YYLTYPE loc = RUBY_INIT_YYLLOC();
21033 compile_error(p,
"'$' without identifiers is not allowed as a global variable name");
21037 compile_error(p,
"'$%c' is not allowed as a global variable name", c);
21039 parser_show_error_line(p, &loc);
21040 set_yylval_noname();
21048 if (tokadd_ident(p, c))
return 0;
21049 SET_LEX_STATE(EXPR_END);
21050 if (VALID_SYMNAME_P(tok(p), toklen(p), p->enc, ID_GLOBAL)) {
21054 compile_error(p,
"'%.*s' is not allowed as a global variable name", toklen(p), tok(p));
21055 set_yylval_noname();
21063 if (n < 0)
return false;
21065 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
21068 if (p->max_numparam == ORDINAL_PARAM) {
21069 compile_error(p,
"ordinary parameter is defined");
21072 struct vtable *args = p->lvtbl->args;
21073 if (p->max_numparam < n) {
21074 p->max_numparam = n;
21076 while (n > args->pos) {
21077 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
21082static enum yytokentype
21083parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
21085 const char *ptr = p->lex.pcur;
21086 enum yytokentype result = tIVAR;
21087 register int c = nextc(p);
21090 p->lex.ptok = ptr - 1;
21098 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
21099 if (c == -1 || !parser_is_identchar(p)) {
21101 RUBY_SET_YYLLOC(loc);
21102 if (result == tIVAR) {
21103 compile_error(p,
"'@' without identifiers is not allowed as an instance variable name");
21106 compile_error(p,
"'@@' without identifiers is not allowed as a class variable name");
21108 parser_show_error_line(p, &loc);
21109 set_yylval_noname();
21110 SET_LEX_STATE(EXPR_END);
21115 RUBY_SET_YYLLOC(loc);
21116 if (result == tIVAR) {
21117 compile_error(p,
"'@%c' is not allowed as an instance variable name", c);
21120 compile_error(p,
"'@@%c' is not allowed as a class variable name", c);
21122 parser_show_error_line(p, &loc);
21123 set_yylval_noname();
21124 SET_LEX_STATE(EXPR_END);
21128 if (tokadd_ident(p, c))
return 0;
21133static enum yytokentype
21136 enum yytokentype result;
21137 bool is_ascii =
true;
21138 const enum lex_state_e last_state = p->lex.state;
21140 int enforce_keyword_end = 0;
21143 if (!
ISASCII(c)) is_ascii =
false;
21144 if (tokadd_mbchar(p, c) == -1)
return 0;
21146 }
while (parser_is_identchar(p));
21147 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
21151 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
21152 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
21153 result = tIDENTIFIER;
21157 result = tCONSTANT;
21162 if (IS_LABEL_POSSIBLE()) {
21163 if (IS_LABEL_SUFFIX(0)) {
21164 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
21172 if (peek_end_expect_token_locations(p)) {
21173 const rb_code_position_t *end_pos;
21174 int lineno, column;
21175 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
21177 end_pos = peek_end_expect_token_locations(p)->pos;
21178 lineno = end_pos->lineno;
21179 column = end_pos->column;
21182 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
21183 p->ruby_sourceline, beg_pos, lineno, column);
21186 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
21189 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
21190 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
21191 enforce_keyword_end = 1;
21197 if (is_ascii && (!IS_lex_state(EXPR_DOT) || enforce_keyword_end)) {
21201 kw = rb_reserved_word(tok(p), toklen(p));
21203 enum lex_state_e state = p->lex.state;
21204 if (IS_lex_state_for(state, EXPR_FNAME)) {
21205 SET_LEX_STATE(EXPR_ENDFN);
21206 set_yylval_name(rb_intern2(tok(p), toklen(p)));
21209 SET_LEX_STATE(kw->state);
21210 if (IS_lex_state(EXPR_BEG)) {
21211 p->command_start = TRUE;
21213 if (kw->id[0] == keyword_do) {
21214 if (lambda_beginning_p()) {
21215 p->lex.lpar_beg = -1;
21216 return keyword_do_LAMBDA;
21218 if (COND_P())
return keyword_do_cond;
21219 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
21220 return keyword_do_block;
21223 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
21226 if (kw->id[0] != kw->id[1])
21227 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
21233 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
21235 SET_LEX_STATE(EXPR_CMDARG);
21238 SET_LEX_STATE(EXPR_ARG);
21241 else if (p->lex.state == EXPR_FNAME) {
21242 SET_LEX_STATE(EXPR_ENDFN);
21245 SET_LEX_STATE(EXPR_END);
21248 ident = tokenize_ident(p);
21249 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
21250 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
21251 (result == tIDENTIFIER) &&
21252 (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
21253 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
21264 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
21268static enum yytokentype
21272 int space_seen = 0;
21275 enum lex_state_e last_state;
21276 int fallthru = FALSE;
21277 int token_seen = p->token_seen;
21279 if (p->lex.strterm) {
21280 if (strterm_is_heredoc(p->lex.strterm)) {
21282 return here_document(p, &p->lex.strterm->u.heredoc);
21286 return parse_string(p, &p->lex.strterm->u.literal);
21289 cmd_state = p->command_start;
21290 p->command_start = FALSE;
21291 p->token_seen = TRUE;
21296 last_state = p->lex.state;
21297 switch (c = nextc(p)) {
21304 if (p->end_expect_token_locations) {
21305 pop_end_expect_token_locations(p);
21306 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
21311 RUBY_SET_YYLLOC(*p->yylloc);
21312 return END_OF_INPUT;
21318 case ' ':
case '\t':
case '\f':
21321 while ((c = nextc(p))) {
21326 case ' ':
case '\t':
case '\f':
21335 dispatch_scan_event(p, tSP);
21342 p->token_seen = token_seen;
21343 const char *
const pcur = p->lex.pcur, *
const ptok = p->lex.ptok;
21345 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
21346 if (comment_at_top(p)) {
21347 set_file_encoding(p, p->lex.pcur, p->lex.pend);
21350 p->lex.pcur = pcur, p->lex.ptok = ptok;
21352 dispatch_scan_event(p, tCOMMENT);
21356 p->token_seen = token_seen;
21357 rb_parser_string_t *prevline = p->lex.lastline;
21358 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
21359 !IS_lex_state(EXPR_LABELED));
21360 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
21362 dispatch_scan_event(p, tIGNORED_NL);
21365 if (!c && p->ctxt.in_kwarg) {
21366 goto normal_newline;
21371 switch (c = nextc(p)) {
21372 case ' ':
case '\t':
case '\f':
case '\r':
21379 dispatch_scan_event(p, tSP);
21385 dispatch_delayed_token(p, tIGNORED_NL);
21386 if (peek(p,
'.') == (c ==
'&')) {
21388 dispatch_scan_event(p, tSP);
21393 p->ruby_sourceline--;
21394 p->lex.nextline = p->lex.lastline;
21395 set_lastline(p, prevline);
21397 if (c == -1 && space_seen) {
21398 dispatch_scan_event(p, tSP);
21403 RUBY_SET_YYLLOC(*p->yylloc);
21405 goto normal_newline;
21409 p->command_start = TRUE;
21410 SET_LEX_STATE(EXPR_BEG);
21414 if ((c = nextc(p)) ==
'*') {
21415 if ((c = nextc(p)) ==
'=') {
21416 set_yylval_id(idPow);
21417 SET_LEX_STATE(EXPR_BEG);
21421 if (IS_SPCARG(c)) {
21422 rb_warning0(
"'**' interpreted as argument prefix");
21425 else if (IS_BEG()) {
21429 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
21434 set_yylval_id(
'*');
21435 SET_LEX_STATE(EXPR_BEG);
21439 if (IS_SPCARG(c)) {
21440 rb_warning0(
"'*' interpreted as argument prefix");
21443 else if (IS_BEG()) {
21447 c = warn_balanced(
'*',
"*",
"argument prefix");
21450 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21455 if (IS_AFTER_OPERATOR()) {
21456 SET_LEX_STATE(EXPR_ARG);
21462 SET_LEX_STATE(EXPR_BEG);
21476 if (word_match_p(p,
"begin", 5)) {
21477 int first_p = TRUE;
21480 dispatch_scan_event(p, tEMBDOC_BEG);
21484 dispatch_scan_event(p, tEMBDOC);
21489 compile_error(p,
"embedded document meets end of file");
21490 return END_OF_INPUT;
21492 if (c ==
'=' && word_match_p(p,
"end", 3)) {
21498 dispatch_scan_event(p, tEMBDOC_END);
21503 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21504 if ((c = nextc(p)) ==
'=') {
21505 if ((c = nextc(p)) ==
'=') {
21514 else if (c ==
'>') {
21523 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
21525 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
21526 enum yytokentype token = heredoc_identifier(p);
21527 if (token)
return token < 0 ? 0 : token;
21529 if (IS_AFTER_OPERATOR()) {
21530 SET_LEX_STATE(EXPR_ARG);
21533 if (IS_lex_state(EXPR_CLASS))
21534 p->command_start = TRUE;
21535 SET_LEX_STATE(EXPR_BEG);
21538 if ((c = nextc(p)) ==
'>') {
21545 if ((c = nextc(p)) ==
'=') {
21546 set_yylval_id(idLTLT);
21547 SET_LEX_STATE(EXPR_BEG);
21551 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
21557 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21558 if ((c = nextc(p)) ==
'=') {
21562 if ((c = nextc(p)) ==
'=') {
21563 set_yylval_id(idGTGT);
21564 SET_LEX_STATE(EXPR_BEG);
21574 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
21575 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
21576 p->lex.ptok = p->lex.pcur-1;
21577 return tSTRING_BEG;
21580 if (IS_lex_state(EXPR_FNAME)) {
21581 SET_LEX_STATE(EXPR_ENDFN);
21584 if (IS_lex_state(EXPR_DOT)) {
21586 SET_LEX_STATE(EXPR_CMDARG);
21588 SET_LEX_STATE(EXPR_ARG);
21591 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
21592 return tXSTRING_BEG;
21595 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
21596 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
21597 p->lex.ptok = p->lex.pcur-1;
21598 return tSTRING_BEG;
21601 return parse_qmark(p, space_seen);
21604 if ((c = nextc(p)) ==
'&') {
21605 SET_LEX_STATE(EXPR_BEG);
21606 if ((c = nextc(p)) ==
'=') {
21607 set_yylval_id(idANDOP);
21608 SET_LEX_STATE(EXPR_BEG);
21614 else if (c ==
'=') {
21615 set_yylval_id(
'&');
21616 SET_LEX_STATE(EXPR_BEG);
21619 else if (c ==
'.') {
21620 set_yylval_id(idANDDOT);
21621 SET_LEX_STATE(EXPR_DOT);
21625 if (IS_SPCARG(c)) {
21627 (c = peekc_n(p, 1)) == -1 ||
21628 !(c ==
'\'' || c ==
'"' ||
21629 is_identchar(p, (p->lex.pcur+1), p->lex.pend, p->enc))) {
21630 rb_warning0(
"'&' interpreted as argument prefix");
21634 else if (IS_BEG()) {
21638 c = warn_balanced(
'&',
"&",
"argument prefix");
21640 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21644 if ((c = nextc(p)) ==
'|') {
21645 SET_LEX_STATE(EXPR_BEG);
21646 if ((c = nextc(p)) ==
'=') {
21647 set_yylval_id(idOROP);
21648 SET_LEX_STATE(EXPR_BEG);
21652 if (IS_lex_state_for(last_state, EXPR_BEG)) {
21660 set_yylval_id(
'|');
21661 SET_LEX_STATE(EXPR_BEG);
21664 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
21670 if (IS_AFTER_OPERATOR()) {
21671 SET_LEX_STATE(EXPR_ARG);
21679 set_yylval_id(
'+');
21680 SET_LEX_STATE(EXPR_BEG);
21683 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
21684 SET_LEX_STATE(EXPR_BEG);
21687 return parse_numeric(p,
'+');
21691 SET_LEX_STATE(EXPR_BEG);
21693 return warn_balanced(
'+',
"+",
"unary operator");
21697 if (IS_AFTER_OPERATOR()) {
21698 SET_LEX_STATE(EXPR_ARG);
21706 set_yylval_id(
'-');
21707 SET_LEX_STATE(EXPR_BEG);
21711 SET_LEX_STATE(EXPR_ENDFN);
21712 yylval.num = p->lex.lpar_beg;
21713 p->lex.lpar_beg = p->lex.paren_nest;
21716 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
21717 SET_LEX_STATE(EXPR_BEG);
21720 return tUMINUS_NUM;
21724 SET_LEX_STATE(EXPR_BEG);
21726 return warn_balanced(
'-',
"-",
"unary operator");
21729 int is_beg = IS_BEG();
21730 SET_LEX_STATE(EXPR_BEG);
21731 if ((c = nextc(p)) ==
'.') {
21732 if ((c = nextc(p)) ==
'.') {
21733 if (p->ctxt.in_argdef || IS_LABEL_POSSIBLE()) {
21734 SET_LEX_STATE(EXPR_ENDARG);
21737 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
21738 rb_warn0(
"... at EOL, should be parenthesized?");
21740 return is_beg ? tBDOT3 : tDOT3;
21743 return is_beg ? tBDOT2 : tDOT2;
21747 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
21748 parse_numeric(p,
'.');
21750 yyerror0(
"unexpected fraction part after numeric literal");
21753 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
21755 SET_LEX_STATE(EXPR_END);
21756 p->lex.ptok = p->lex.pcur;
21759 set_yylval_id(
'.');
21760 SET_LEX_STATE(EXPR_DOT);
21764 case '0':
case '1':
case '2':
case '3':
case '4':
21765 case '5':
case '6':
case '7':
case '8':
case '9':
21766 return parse_numeric(p, c);
21771 SET_LEX_STATE(EXPR_ENDFN);
21772 p->lex.paren_nest--;
21778 SET_LEX_STATE(EXPR_END);
21779 p->lex.paren_nest--;
21784 if (!p->lex.brace_nest--)
return tSTRING_DEND;
21787 SET_LEX_STATE(EXPR_END);
21788 p->lex.paren_nest--;
21794 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
21795 SET_LEX_STATE(EXPR_BEG);
21798 set_yylval_id(idCOLON2);
21799 SET_LEX_STATE(EXPR_DOT);
21802 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
21804 c = warn_balanced(
':',
":",
"symbol literal");
21805 SET_LEX_STATE(EXPR_BEG);
21810 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
21813 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
21819 SET_LEX_STATE(EXPR_FNAME);
21824 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
21825 return tREGEXP_BEG;
21827 if ((c = nextc(p)) ==
'=') {
21828 set_yylval_id(
'/');
21829 SET_LEX_STATE(EXPR_BEG);
21833 if (IS_SPCARG(c)) {
21834 arg_ambiguous(p,
'/');
21835 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
21836 return tREGEXP_BEG;
21838 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21839 return warn_balanced(
'/',
"/",
"regexp literal");
21842 if ((c = nextc(p)) ==
'=') {
21843 set_yylval_id(
'^');
21844 SET_LEX_STATE(EXPR_BEG);
21847 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21852 SET_LEX_STATE(EXPR_BEG);
21853 p->command_start = TRUE;
21857 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21861 if (IS_AFTER_OPERATOR()) {
21862 if ((c = nextc(p)) !=
'@') {
21865 SET_LEX_STATE(EXPR_ARG);
21868 SET_LEX_STATE(EXPR_BEG);
21876 else if (!space_seen) {
21879 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
21882 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
21883 rb_warning0(
"parentheses after method name is interpreted as "
21884 "an argument list, not a decomposed argument");
21886 p->lex.paren_nest++;
21889 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21893 p->lex.paren_nest++;
21894 if (IS_AFTER_OPERATOR()) {
21895 if ((c = nextc(p)) ==
']') {
21896 p->lex.paren_nest--;
21897 SET_LEX_STATE(EXPR_ARG);
21898 if ((c = nextc(p)) ==
'=') {
21905 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
21908 else if (IS_BEG()) {
21911 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
21914 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21920 ++p->lex.brace_nest;
21921 if (lambda_beginning_p())
21923 else if (IS_lex_state(EXPR_LABELED))
21925 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
21927 else if (IS_lex_state(EXPR_ENDARG))
21931 if (c != tLBRACE) {
21932 p->command_start = TRUE;
21933 SET_LEX_STATE(EXPR_BEG);
21936 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21938 ++p->lex.paren_nest;
21947 dispatch_scan_event(p, tSP);
21950 if (c ==
' ')
return tSP;
21956 return parse_percent(p, space_seen, last_state);
21959 return parse_gvar(p, last_state);
21962 return parse_atmark(p, last_state);
21965 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
21966 p->ruby__end__seen = 1;
21970 dispatch_scan_event(p, k__END__);
21972 return END_OF_INPUT;
21978 if (!parser_is_identchar(p)) {
21979 compile_error(p,
"Invalid char '\\x%02X' in expression", c);
21988 return parse_ident(p, c, cmd_state);
21991static enum yytokentype
21994 enum yytokentype t;
21998 p->yylloc = yylloc;
22000 t = parser_yylex(p);
22002 if (has_delayed_token(p))
22003 dispatch_delayed_token(p, t);
22004 else if (t != END_OF_INPUT)
22005 dispatch_scan_event(p, t);
22010#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
22013node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment)
22015 NODE *n = rb_ast_newnode(p->ast,
type, size, alignment);
22017 rb_node_init(n,
type);
22022nd_set_loc(NODE *nd,
const YYLTYPE *loc)
22025 nd_set_line(nd, loc->beg_pos.lineno);
22030node_newnode(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment,
const rb_code_location_t *loc)
22032 NODE *n = node_new_internal(p,
type, size, alignment);
22034 nd_set_loc(n, loc);
22035 nd_set_node_id(n, parser_get_node_id(p));
22039#define NODE_NEWNODE(node_type, type, loc) (type *)(node_newnode(p, node_type, sizeof(type), RUBY_ALIGNOF(type), loc))
22041static rb_node_scope_t *
22042rb_node_scope_new(
struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body,
const YYLTYPE *loc)
22044 rb_ast_id_table_t *nd_tbl;
22045 nd_tbl = local_tbl(p);
22046 rb_node_scope_t *n = NODE_NEWNODE(NODE_SCOPE, rb_node_scope_t, loc);
22047 n->nd_tbl = nd_tbl;
22048 n->nd_body = nd_body;
22049 n->nd_args = nd_args;
22054static rb_node_scope_t *
22055rb_node_scope_new2(
struct parser_params *p, rb_ast_id_table_t *nd_tbl, rb_node_args_t *nd_args, NODE *nd_body,
const YYLTYPE *loc)
22057 rb_node_scope_t *n = NODE_NEWNODE(NODE_SCOPE, rb_node_scope_t, loc);
22058 n->nd_tbl = nd_tbl;
22059 n->nd_body = nd_body;
22060 n->nd_args = nd_args;
22065static rb_node_defn_t *
22066rb_node_defn_new(
struct parser_params *p,
ID nd_mid, NODE *nd_defn,
const YYLTYPE *loc)
22068 rb_node_defn_t *n = NODE_NEWNODE(NODE_DEFN, rb_node_defn_t, loc);
22069 n->nd_mid = nd_mid;
22070 n->nd_defn = nd_defn;
22075static rb_node_defs_t *
22076rb_node_defs_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_defn,
const YYLTYPE *loc)
22078 rb_node_defs_t *n = NODE_NEWNODE(NODE_DEFS, rb_node_defs_t, loc);
22079 n->nd_recv = nd_recv;
22080 n->nd_mid = nd_mid;
22081 n->nd_defn = nd_defn;
22086static rb_node_block_t *
22087rb_node_block_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc)
22089 rb_node_block_t *n = NODE_NEWNODE(NODE_BLOCK, rb_node_block_t, loc);
22090 n->nd_head = nd_head;
22091 n->nd_end = (NODE *)n;
22097static rb_node_for_t *
22098rb_node_for_new(
struct parser_params *p, NODE *nd_iter, NODE *nd_body,
const YYLTYPE *loc)
22100 rb_node_for_t *n = NODE_NEWNODE(NODE_FOR, rb_node_for_t, loc);
22101 n->nd_body = nd_body;
22102 n->nd_iter = nd_iter;
22107static rb_node_for_masgn_t *
22108rb_node_for_masgn_new(
struct parser_params *p, NODE *nd_var,
const YYLTYPE *loc)
22110 rb_node_for_masgn_t *n = NODE_NEWNODE(NODE_FOR_MASGN, rb_node_for_masgn_t, loc);
22111 n->nd_var = nd_var;
22116static rb_node_retry_t *
22117rb_node_retry_new(
struct parser_params *p,
const YYLTYPE *loc)
22119 rb_node_retry_t *n = NODE_NEWNODE(NODE_RETRY, rb_node_retry_t, loc);
22124static rb_node_begin_t *
22125rb_node_begin_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc)
22127 rb_node_begin_t *n = NODE_NEWNODE(NODE_BEGIN, rb_node_begin_t, loc);
22128 n->nd_body = nd_body;
22133static rb_node_rescue_t *
22134rb_node_rescue_new(
struct parser_params *p, NODE *nd_head, NODE *nd_resq, NODE *nd_else,
const YYLTYPE *loc)
22136 rb_node_rescue_t *n = NODE_NEWNODE(NODE_RESCUE, rb_node_rescue_t, loc);
22137 n->nd_head = nd_head;
22138 n->nd_resq = nd_resq;
22139 n->nd_else = nd_else;
22144static rb_node_resbody_t *
22145rb_node_resbody_new(
struct parser_params *p, NODE *nd_args, NODE *nd_exc_var, NODE *nd_body, NODE *nd_next,
const YYLTYPE *loc)
22147 rb_node_resbody_t *n = NODE_NEWNODE(NODE_RESBODY, rb_node_resbody_t, loc);
22148 n->nd_args = nd_args;
22149 n->nd_exc_var = nd_exc_var;
22150 n->nd_body = nd_body;
22151 n->nd_next = nd_next;
22156static rb_node_ensure_t *
22157rb_node_ensure_new(
struct parser_params *p, NODE *nd_head, NODE *nd_ensr,
const YYLTYPE *loc)
22159 rb_node_ensure_t *n = NODE_NEWNODE(NODE_ENSURE, rb_node_ensure_t, loc);
22160 n->nd_head = nd_head;
22161 n->nd_ensr = nd_ensr;
22167rb_node_and_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
22170 n->nd_1st = nd_1st;
22171 n->nd_2nd = nd_2nd;
22172 n->operator_loc = *operator_loc;
22177static rb_node_or_t *
22178rb_node_or_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
22180 rb_node_or_t *n = NODE_NEWNODE(NODE_OR, rb_node_or_t, loc);
22181 n->nd_1st = nd_1st;
22182 n->nd_2nd = nd_2nd;
22183 n->operator_loc = *operator_loc;
22188static rb_node_return_t *
22189rb_node_return_new(
struct parser_params *p, NODE *nd_stts,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
22191 rb_node_return_t *n = NODE_NEWNODE(NODE_RETURN, rb_node_return_t, loc);
22192 n->nd_stts = nd_stts;
22193 n->keyword_loc = *keyword_loc;
22197static rb_node_yield_t *
22198rb_node_yield_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc)
22200 rb_node_yield_t *n = NODE_NEWNODE(NODE_YIELD, rb_node_yield_t, loc);
22201 n->nd_head = nd_head;
22206static rb_node_if_t *
22207rb_node_if_new(
struct parser_params *p, NODE *nd_cond, NODE *nd_body, NODE *nd_else,
const YYLTYPE *loc)
22209 rb_node_if_t *n = NODE_NEWNODE(NODE_IF, rb_node_if_t, loc);
22210 n->nd_cond = nd_cond;
22211 n->nd_body = nd_body;
22212 n->nd_else = nd_else;
22217static rb_node_unless_t *
22218rb_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)
22220 rb_node_unless_t *n = NODE_NEWNODE(NODE_UNLESS, rb_node_unless_t, loc);
22221 n->nd_cond = nd_cond;
22222 n->nd_body = nd_body;
22223 n->nd_else = nd_else;
22224 n->keyword_loc = *keyword_loc;
22225 n->then_keyword_loc = *then_keyword_loc;
22226 n->end_keyword_loc = *end_keyword_loc;
22231static rb_node_class_t *
22232rb_node_class_new(
struct parser_params *p, NODE *nd_cpath, NODE *nd_body, NODE *nd_super,
const YYLTYPE *loc)
22235 NODE *scope = NEW_SCOPE(0, nd_body, loc);
22236 rb_node_class_t *n = NODE_NEWNODE(NODE_CLASS, rb_node_class_t, loc);
22237 n->nd_cpath = nd_cpath;
22238 n->nd_body = scope;
22239 n->nd_super = nd_super;
22244static rb_node_sclass_t *
22245rb_node_sclass_new(
struct parser_params *p, NODE *nd_recv, NODE *nd_body,
const YYLTYPE *loc)
22248 NODE *scope = NEW_SCOPE(0, nd_body, loc);
22249 rb_node_sclass_t *n = NODE_NEWNODE(NODE_SCLASS, rb_node_sclass_t, loc);
22250 n->nd_recv = nd_recv;
22251 n->nd_body = scope;
22256static rb_node_module_t *
22257rb_node_module_new(
struct parser_params *p, NODE *nd_cpath, NODE *nd_body,
const YYLTYPE *loc)
22260 NODE *scope = NEW_SCOPE(0, nd_body, loc);
22261 rb_node_module_t *n = NODE_NEWNODE(NODE_MODULE, rb_node_module_t, loc);
22262 n->nd_cpath = nd_cpath;
22263 n->nd_body = scope;
22268static rb_node_iter_t *
22269rb_node_iter_new(
struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body,
const YYLTYPE *loc)
22272 NODE *scope = NEW_SCOPE(nd_args, nd_body, loc);
22273 rb_node_iter_t *n = NODE_NEWNODE(NODE_ITER, rb_node_iter_t, loc);
22274 n->nd_body = scope;
22280static rb_node_lambda_t *
22281rb_node_lambda_new(
struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body,
const YYLTYPE *loc)
22284 NODE *scope = NEW_SCOPE(nd_args, nd_body, loc);
22285 rb_node_lambda_t *n = NODE_NEWNODE(NODE_LAMBDA, rb_node_lambda_t, loc);
22286 n->nd_body = scope;
22291static rb_node_case_t *
22292rb_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)
22294 rb_node_case_t *n = NODE_NEWNODE(NODE_CASE, rb_node_case_t, loc);
22295 n->nd_head = nd_head;
22296 n->nd_body = nd_body;
22297 n->case_keyword_loc = *case_keyword_loc;
22298 n->end_keyword_loc = *end_keyword_loc;
22303static rb_node_case2_t *
22304rb_node_case2_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *case_keyword_loc,
const YYLTYPE *end_keyword_loc)
22306 rb_node_case2_t *n = NODE_NEWNODE(NODE_CASE2, rb_node_case2_t, loc);
22308 n->nd_body = nd_body;
22309 n->case_keyword_loc = *case_keyword_loc;
22310 n->end_keyword_loc = *end_keyword_loc;
22315static rb_node_case3_t *
22316rb_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)
22318 rb_node_case3_t *n = NODE_NEWNODE(NODE_CASE3, rb_node_case3_t, loc);
22319 n->nd_head = nd_head;
22320 n->nd_body = nd_body;
22321 n->case_keyword_loc = *case_keyword_loc;
22322 n->end_keyword_loc = *end_keyword_loc;
22327static rb_node_when_t *
22328rb_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)
22330 rb_node_when_t *n = NODE_NEWNODE(NODE_WHEN, rb_node_when_t, loc);
22331 n->nd_head = nd_head;
22332 n->nd_body = nd_body;
22333 n->nd_next = nd_next;
22334 n->keyword_loc = *keyword_loc;
22335 n->then_keyword_loc = *then_keyword_loc;
22340static rb_node_in_t *
22341rb_node_in_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body, NODE *nd_next,
const YYLTYPE *loc)
22343 rb_node_in_t *n = NODE_NEWNODE(NODE_IN, rb_node_in_t, loc);
22344 n->nd_head = nd_head;
22345 n->nd_body = nd_body;
22346 n->nd_next = nd_next;
22351static rb_node_while_t *
22352rb_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)
22354 rb_node_while_t *n = NODE_NEWNODE(NODE_WHILE, rb_node_while_t, loc);
22355 n->nd_cond = nd_cond;
22356 n->nd_body = nd_body;
22357 n->nd_state = nd_state;
22358 n->keyword_loc = *keyword_loc;
22359 n->closing_loc = *closing_loc;
22364static rb_node_until_t *
22365rb_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)
22367 rb_node_until_t *n = NODE_NEWNODE(NODE_UNTIL, rb_node_until_t, loc);
22368 n->nd_cond = nd_cond;
22369 n->nd_body = nd_body;
22370 n->nd_state = nd_state;
22371 n->keyword_loc = *keyword_loc;
22372 n->closing_loc = *closing_loc;
22377static rb_node_colon2_t *
22378rb_node_colon2_new(
struct parser_params *p, NODE *nd_head,
ID nd_mid,
const YYLTYPE *loc)
22380 rb_node_colon2_t *n = NODE_NEWNODE(NODE_COLON2, rb_node_colon2_t, loc);
22381 n->nd_head = nd_head;
22382 n->nd_mid = nd_mid;
22387static rb_node_colon3_t *
22388rb_node_colon3_new(
struct parser_params *p,
ID nd_mid,
const YYLTYPE *loc)
22390 rb_node_colon3_t *n = NODE_NEWNODE(NODE_COLON3, rb_node_colon3_t, loc);
22391 n->nd_mid = nd_mid;
22396static rb_node_dot2_t *
22397rb_node_dot2_new(
struct parser_params *p, NODE *nd_beg, NODE *nd_end,
const YYLTYPE *loc)
22399 rb_node_dot2_t *n = NODE_NEWNODE(NODE_DOT2, rb_node_dot2_t, loc);
22400 n->nd_beg = nd_beg;
22401 n->nd_end = nd_end;
22406static rb_node_dot3_t *
22407rb_node_dot3_new(
struct parser_params *p, NODE *nd_beg, NODE *nd_end,
const YYLTYPE *loc)
22409 rb_node_dot3_t *n = NODE_NEWNODE(NODE_DOT3, rb_node_dot3_t, loc);
22410 n->nd_beg = nd_beg;
22411 n->nd_end = nd_end;
22416static rb_node_self_t *
22417rb_node_self_new(
struct parser_params *p,
const YYLTYPE *loc)
22419 rb_node_self_t *n = NODE_NEWNODE(NODE_SELF, rb_node_self_t, loc);
22425static rb_node_nil_t *
22426rb_node_nil_new(
struct parser_params *p,
const YYLTYPE *loc)
22428 rb_node_nil_t *n = NODE_NEWNODE(NODE_NIL, rb_node_nil_t, loc);
22433static rb_node_true_t *
22434rb_node_true_new(
struct parser_params *p,
const YYLTYPE *loc)
22436 rb_node_true_t *n = NODE_NEWNODE(NODE_TRUE, rb_node_true_t, loc);
22441static rb_node_false_t *
22442rb_node_false_new(
struct parser_params *p,
const YYLTYPE *loc)
22444 rb_node_false_t *n = NODE_NEWNODE(NODE_FALSE, rb_node_false_t, loc);
22449static rb_node_super_t *
22450rb_node_super_new(
struct parser_params *p, NODE *nd_args,
const YYLTYPE *loc)
22452 rb_node_super_t *n = NODE_NEWNODE(NODE_SUPER, rb_node_super_t, loc);
22453 n->nd_args = nd_args;
22458static rb_node_zsuper_t *
22459rb_node_zsuper_new(
struct parser_params *p,
const YYLTYPE *loc)
22461 rb_node_zsuper_t *n = NODE_NEWNODE(NODE_ZSUPER, rb_node_zsuper_t, loc);
22466static rb_node_match2_t *
22467rb_node_match2_new(
struct parser_params *p, NODE *nd_recv, NODE *nd_value,
const YYLTYPE *loc)
22469 rb_node_match2_t *n = NODE_NEWNODE(NODE_MATCH2, rb_node_match2_t, loc);
22470 n->nd_recv = nd_recv;
22471 n->nd_value = nd_value;
22477static rb_node_match3_t *
22478rb_node_match3_new(
struct parser_params *p, NODE *nd_recv, NODE *nd_value,
const YYLTYPE *loc)
22480 rb_node_match3_t *n = NODE_NEWNODE(NODE_MATCH3, rb_node_match3_t, loc);
22481 n->nd_recv = nd_recv;
22482 n->nd_value = nd_value;
22488static rb_node_list_t *
22489rb_node_list_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc)
22491 rb_node_list_t *n = NODE_NEWNODE(NODE_LIST, rb_node_list_t, loc);
22492 n->nd_head = nd_head;
22499static rb_node_list_t *
22500rb_node_list_new2(
struct parser_params *p, NODE *nd_head,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc)
22502 rb_node_list_t *n = NODE_NEWNODE(NODE_LIST, rb_node_list_t, loc);
22503 n->nd_head = nd_head;
22504 n->as.nd_alen = nd_alen;
22505 n->nd_next = nd_next;
22510static rb_node_zlist_t *
22511rb_node_zlist_new(
struct parser_params *p,
const YYLTYPE *loc)
22513 rb_node_zlist_t *n = NODE_NEWNODE(NODE_ZLIST, rb_node_zlist_t, loc);
22518static rb_node_hash_t *
22519rb_node_hash_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc)
22521 rb_node_hash_t *n = NODE_NEWNODE(NODE_HASH, rb_node_hash_t, loc);
22522 n->nd_head = nd_head;
22528static rb_node_masgn_t *
22529rb_node_masgn_new(
struct parser_params *p, NODE *nd_head, NODE *nd_args,
const YYLTYPE *loc)
22531 rb_node_masgn_t *n = NODE_NEWNODE(NODE_MASGN, rb_node_masgn_t, loc);
22532 n->nd_head = nd_head;
22534 n->nd_args = nd_args;
22539static rb_node_gasgn_t *
22540rb_node_gasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc)
22542 rb_node_gasgn_t *n = NODE_NEWNODE(NODE_GASGN, rb_node_gasgn_t, loc);
22543 n->nd_vid = nd_vid;
22544 n->nd_value = nd_value;
22549static rb_node_lasgn_t *
22550rb_node_lasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc)
22552 rb_node_lasgn_t *n = NODE_NEWNODE(NODE_LASGN, rb_node_lasgn_t, loc);
22553 n->nd_vid = nd_vid;
22554 n->nd_value = nd_value;
22559static rb_node_dasgn_t *
22560rb_node_dasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc)
22562 rb_node_dasgn_t *n = NODE_NEWNODE(NODE_DASGN, rb_node_dasgn_t, loc);
22563 n->nd_vid = nd_vid;
22564 n->nd_value = nd_value;
22569static rb_node_iasgn_t *
22570rb_node_iasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc)
22572 rb_node_iasgn_t *n = NODE_NEWNODE(NODE_IASGN, rb_node_iasgn_t, loc);
22573 n->nd_vid = nd_vid;
22574 n->nd_value = nd_value;
22579static rb_node_cvasgn_t *
22580rb_node_cvasgn_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value,
const YYLTYPE *loc)
22582 rb_node_cvasgn_t *n = NODE_NEWNODE(NODE_CVASGN, rb_node_cvasgn_t, loc);
22583 n->nd_vid = nd_vid;
22584 n->nd_value = nd_value;
22589static rb_node_op_asgn1_t *
22590rb_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)
22592 rb_node_op_asgn1_t *n = NODE_NEWNODE(NODE_OP_ASGN1, rb_node_op_asgn1_t, loc);
22593 n->nd_recv = nd_recv;
22594 n->nd_mid = nd_mid;
22595 n->nd_index = index;
22596 n->nd_rvalue = rvalue;
22597 n->call_operator_loc = *call_operator_loc;
22598 n->opening_loc = *opening_loc;
22599 n->closing_loc = *closing_loc;
22600 n->binary_operator_loc = *binary_operator_loc;
22605static rb_node_op_asgn2_t *
22606rb_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)
22608 rb_node_op_asgn2_t *n = NODE_NEWNODE(NODE_OP_ASGN2, rb_node_op_asgn2_t, loc);
22609 n->nd_recv = nd_recv;
22610 n->nd_value = nd_value;
22611 n->nd_vid = nd_vid;
22612 n->nd_mid = nd_mid;
22613 n->nd_aid = nd_aid;
22614 n->call_operator_loc = *call_operator_loc;
22615 n->message_loc = *message_loc;
22616 n->binary_operator_loc = *binary_operator_loc;
22621static rb_node_op_asgn_or_t *
22622rb_node_op_asgn_or_new(
struct parser_params *p, NODE *nd_head, NODE *nd_value,
const YYLTYPE *loc)
22624 rb_node_op_asgn_or_t *n = NODE_NEWNODE(NODE_OP_ASGN_OR, rb_node_op_asgn_or_t, loc);
22625 n->nd_head = nd_head;
22626 n->nd_value = nd_value;
22631static rb_node_op_asgn_and_t *
22632rb_node_op_asgn_and_new(
struct parser_params *p, NODE *nd_head, NODE *nd_value,
const YYLTYPE *loc)
22634 rb_node_op_asgn_and_t *n = NODE_NEWNODE(NODE_OP_ASGN_AND, rb_node_op_asgn_and_t, loc);
22635 n->nd_head = nd_head;
22636 n->nd_value = nd_value;
22641static rb_node_gvar_t *
22642rb_node_gvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
22644 rb_node_gvar_t *n = NODE_NEWNODE(NODE_GVAR, rb_node_gvar_t, loc);
22645 n->nd_vid = nd_vid;
22650static rb_node_lvar_t *
22651rb_node_lvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
22653 rb_node_lvar_t *n = NODE_NEWNODE(NODE_LVAR, rb_node_lvar_t, loc);
22654 n->nd_vid = nd_vid;
22659static rb_node_dvar_t *
22660rb_node_dvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
22662 rb_node_dvar_t *n = NODE_NEWNODE(NODE_DVAR, rb_node_dvar_t, loc);
22663 n->nd_vid = nd_vid;
22668static rb_node_ivar_t *
22669rb_node_ivar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
22671 rb_node_ivar_t *n = NODE_NEWNODE(NODE_IVAR, rb_node_ivar_t, loc);
22672 n->nd_vid = nd_vid;
22677static rb_node_const_t *
22678rb_node_const_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
22680 rb_node_const_t *n = NODE_NEWNODE(NODE_CONST, rb_node_const_t, loc);
22681 n->nd_vid = nd_vid;
22686static rb_node_cvar_t *
22687rb_node_cvar_new(
struct parser_params *p,
ID nd_vid,
const YYLTYPE *loc)
22689 rb_node_cvar_t *n = NODE_NEWNODE(NODE_CVAR, rb_node_cvar_t, loc);
22690 n->nd_vid = nd_vid;
22695static rb_node_nth_ref_t *
22696rb_node_nth_ref_new(
struct parser_params *p,
long nd_nth,
const YYLTYPE *loc)
22698 rb_node_nth_ref_t *n = NODE_NEWNODE(NODE_NTH_REF, rb_node_nth_ref_t, loc);
22699 n->nd_nth = nd_nth;
22704static rb_node_back_ref_t *
22705rb_node_back_ref_new(
struct parser_params *p,
long nd_nth,
const YYLTYPE *loc)
22707 rb_node_back_ref_t *n = NODE_NEWNODE(NODE_BACK_REF, rb_node_back_ref_t, loc);
22708 n->nd_nth = nd_nth;
22713static rb_node_integer_t *
22714rb_node_integer_new(
struct parser_params *p,
char* val,
int base,
const YYLTYPE *loc)
22716 rb_node_integer_t *n = NODE_NEWNODE(NODE_INTEGER, rb_node_integer_t, loc);
22724static rb_node_float_t *
22725rb_node_float_new(
struct parser_params *p,
char* val,
const YYLTYPE *loc)
22727 rb_node_float_t *n = NODE_NEWNODE(NODE_FLOAT, rb_node_float_t, loc);
22734static rb_node_rational_t *
22735rb_node_rational_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
const YYLTYPE *loc)
22737 rb_node_rational_t *n = NODE_NEWNODE(NODE_RATIONAL, rb_node_rational_t, loc);
22741 n->seen_point = seen_point;
22746static rb_node_imaginary_t *
22747rb_node_imaginary_new(
struct parser_params *p,
char* val,
int base,
int seen_point,
enum rb_numeric_type numeric_type,
const YYLTYPE *loc)
22749 rb_node_imaginary_t *n = NODE_NEWNODE(NODE_IMAGINARY, rb_node_imaginary_t, loc);
22753 n->seen_point = seen_point;
22754 n->type = numeric_type;
22759static rb_node_str_t *
22760rb_node_str_new(
struct parser_params *p, rb_parser_string_t *
string,
const YYLTYPE *loc)
22762 rb_node_str_t *n = NODE_NEWNODE(NODE_STR, rb_node_str_t, loc);
22763 n->string = string;
22769static rb_node_dstr_t *
22770rb_node_dstr_new0(
struct parser_params *p, rb_parser_string_t *
string,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc)
22772 rb_node_dstr_t *n = NODE_NEWNODE(NODE_DSTR, rb_node_dstr_t, loc);
22773 n->string = string;
22774 n->as.nd_alen = nd_alen;
22775 n->nd_next = (rb_node_list_t *)nd_next;
22780static rb_node_dstr_t *
22781rb_node_dstr_new(
struct parser_params *p, rb_parser_string_t *
string,
const YYLTYPE *loc)
22783 return rb_node_dstr_new0(p,
string, 1, 0, loc);
22786static rb_node_xstr_t *
22787rb_node_xstr_new(
struct parser_params *p, rb_parser_string_t *
string,
const YYLTYPE *loc)
22789 rb_node_xstr_t *n = NODE_NEWNODE(NODE_XSTR, rb_node_xstr_t, loc);
22790 n->string = string;
22795static rb_node_dxstr_t *
22796rb_node_dxstr_new(
struct parser_params *p, rb_parser_string_t *
string,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc)
22798 rb_node_dxstr_t *n = NODE_NEWNODE(NODE_DXSTR, rb_node_dxstr_t, loc);
22799 n->string = string;
22800 n->as.nd_alen = nd_alen;
22801 n->nd_next = (rb_node_list_t *)nd_next;
22806static rb_node_sym_t *
22809 rb_node_sym_t *n = NODE_NEWNODE(NODE_SYM, rb_node_sym_t, loc);
22810 n->string = rb_str_to_parser_string(p, str);
22815static rb_node_dsym_t *
22816rb_node_dsym_new(
struct parser_params *p, rb_parser_string_t *
string,
long nd_alen, NODE *nd_next,
const YYLTYPE *loc)
22818 rb_node_dsym_t *n = NODE_NEWNODE(NODE_DSYM, rb_node_dsym_t, loc);
22819 n->string = string;
22820 n->as.nd_alen = nd_alen;
22821 n->nd_next = (rb_node_list_t *)nd_next;
22826static rb_node_evstr_t *
22827rb_node_evstr_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc)
22829 rb_node_evstr_t *n = NODE_NEWNODE(NODE_EVSTR, rb_node_evstr_t, loc);
22830 n->nd_body = nd_body;
22835static rb_node_regx_t *
22836rb_node_regx_new(
struct parser_params *p, rb_parser_string_t *
string,
int options,
const YYLTYPE *loc)
22838 rb_node_regx_t *n = NODE_NEWNODE(NODE_REGX, rb_node_regx_t, loc);
22839 n->string = string;
22840 n->options = options & RE_OPTION_MASK;
22845static rb_node_call_t *
22846rb_node_call_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc)
22848 rb_node_call_t *n = NODE_NEWNODE(NODE_CALL, rb_node_call_t, loc);
22849 n->nd_recv = nd_recv;
22850 n->nd_mid = nd_mid;
22851 n->nd_args = nd_args;
22856static rb_node_opcall_t *
22857rb_node_opcall_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc)
22859 rb_node_opcall_t *n = NODE_NEWNODE(NODE_OPCALL, rb_node_opcall_t, loc);
22860 n->nd_recv = nd_recv;
22861 n->nd_mid = nd_mid;
22862 n->nd_args = nd_args;
22867static rb_node_fcall_t *
22868rb_node_fcall_new(
struct parser_params *p,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc)
22870 rb_node_fcall_t *n = NODE_NEWNODE(NODE_FCALL, rb_node_fcall_t, loc);
22871 n->nd_mid = nd_mid;
22872 n->nd_args = nd_args;
22877static rb_node_qcall_t *
22878rb_node_qcall_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc)
22880 rb_node_qcall_t *n = NODE_NEWNODE(NODE_QCALL, rb_node_qcall_t, loc);
22881 n->nd_recv = nd_recv;
22882 n->nd_mid = nd_mid;
22883 n->nd_args = nd_args;
22888static rb_node_vcall_t *
22889rb_node_vcall_new(
struct parser_params *p,
ID nd_mid,
const YYLTYPE *loc)
22891 rb_node_vcall_t *n = NODE_NEWNODE(NODE_VCALL, rb_node_vcall_t, loc);
22892 n->nd_mid = nd_mid;
22897static rb_node_once_t *
22898rb_node_once_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc)
22900 rb_node_once_t *n = NODE_NEWNODE(NODE_ONCE, rb_node_once_t, loc);
22901 n->nd_body = nd_body;
22906static rb_node_args_t *
22907rb_node_args_new(
struct parser_params *p,
const YYLTYPE *loc)
22909 rb_node_args_t *n = NODE_NEWNODE(NODE_ARGS, rb_node_args_t, loc);
22915static rb_node_args_aux_t *
22916rb_node_args_aux_new(
struct parser_params *p,
ID nd_pid,
int nd_plen,
const YYLTYPE *loc)
22918 rb_node_args_aux_t *n = NODE_NEWNODE(NODE_ARGS_AUX, rb_node_args_aux_t, loc);
22919 n->nd_pid = nd_pid;
22920 n->nd_plen = nd_plen;
22926static rb_node_opt_arg_t *
22927rb_node_opt_arg_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc)
22929 rb_node_opt_arg_t *n = NODE_NEWNODE(NODE_OPT_ARG, rb_node_opt_arg_t, loc);
22930 n->nd_body = nd_body;
22936static rb_node_kw_arg_t *
22937rb_node_kw_arg_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc)
22939 rb_node_kw_arg_t *n = NODE_NEWNODE(NODE_KW_ARG, rb_node_kw_arg_t, loc);
22940 n->nd_body = nd_body;
22946static rb_node_postarg_t *
22947rb_node_postarg_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc)
22949 rb_node_postarg_t *n = NODE_NEWNODE(NODE_POSTARG, rb_node_postarg_t, loc);
22950 n->nd_1st = nd_1st;
22951 n->nd_2nd = nd_2nd;
22956static rb_node_argscat_t *
22957rb_node_argscat_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body,
const YYLTYPE *loc)
22959 rb_node_argscat_t *n = NODE_NEWNODE(NODE_ARGSCAT, rb_node_argscat_t, loc);
22960 n->nd_head = nd_head;
22961 n->nd_body = nd_body;
22966static rb_node_argspush_t *
22967rb_node_argspush_new(
struct parser_params *p, NODE *nd_head, NODE *nd_body,
const YYLTYPE *loc)
22969 rb_node_argspush_t *n = NODE_NEWNODE(NODE_ARGSPUSH, rb_node_argspush_t, loc);
22970 n->nd_head = nd_head;
22971 n->nd_body = nd_body;
22976static rb_node_splat_t *
22977rb_node_splat_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
22979 rb_node_splat_t *n = NODE_NEWNODE(NODE_SPLAT, rb_node_splat_t, loc);
22980 n->nd_head = nd_head;
22981 n->operator_loc = *operator_loc;
22986static rb_node_block_pass_t *
22987rb_node_block_pass_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc,
const YYLTYPE *operator_loc)
22989 rb_node_block_pass_t *n = NODE_NEWNODE(NODE_BLOCK_PASS, rb_node_block_pass_t, loc);
22992 n->nd_body = nd_body;
22993 n->operator_loc = *operator_loc;
22998static rb_node_alias_t *
22999rb_node_alias_new(
struct parser_params *p, NODE *nd_1st, NODE *nd_2nd,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23001 rb_node_alias_t *n = NODE_NEWNODE(NODE_ALIAS, rb_node_alias_t, loc);
23002 n->nd_1st = nd_1st;
23003 n->nd_2nd = nd_2nd;
23004 n->keyword_loc = *keyword_loc;
23009static rb_node_valias_t *
23010rb_node_valias_new(
struct parser_params *p,
ID nd_alias,
ID nd_orig,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23012 rb_node_valias_t *n = NODE_NEWNODE(NODE_VALIAS, rb_node_valias_t, loc);
23013 n->nd_alias = nd_alias;
23014 n->nd_orig = nd_orig;
23015 n->keyword_loc = *keyword_loc;
23020static rb_node_undef_t *
23021rb_node_undef_new(
struct parser_params *p, NODE *nd_undef,
const YYLTYPE *loc)
23023 rb_node_undef_t *n = NODE_NEWNODE(NODE_UNDEF, rb_node_undef_t, loc);
23024 n->nd_undefs = rb_parser_ary_new_capa_for_node(p, 1);
23025 n->keyword_loc = NULL_LOC;
23026 rb_parser_ary_push_node(p, n->nd_undefs, nd_undef);
23031static rb_node_errinfo_t *
23032rb_node_errinfo_new(
struct parser_params *p,
const YYLTYPE *loc)
23034 rb_node_errinfo_t *n = NODE_NEWNODE(NODE_ERRINFO, rb_node_errinfo_t, loc);
23039static rb_node_defined_t *
23040rb_node_defined_new(
struct parser_params *p, NODE *nd_head,
const YYLTYPE *loc)
23042 rb_node_defined_t *n = NODE_NEWNODE(NODE_DEFINED, rb_node_defined_t, loc);
23043 n->nd_head = nd_head;
23048static rb_node_postexe_t *
23049rb_node_postexe_new(
struct parser_params *p, NODE *nd_body,
const YYLTYPE *loc)
23051 rb_node_postexe_t *n = NODE_NEWNODE(NODE_POSTEXE, rb_node_postexe_t, loc);
23052 n->nd_body = nd_body;
23057static rb_node_attrasgn_t *
23058rb_node_attrasgn_new(
struct parser_params *p, NODE *nd_recv,
ID nd_mid, NODE *nd_args,
const YYLTYPE *loc)
23060 rb_node_attrasgn_t *n = NODE_NEWNODE(NODE_ATTRASGN, rb_node_attrasgn_t, loc);
23061 n->nd_recv = nd_recv;
23062 n->nd_mid = nd_mid;
23063 n->nd_args = nd_args;
23068static rb_node_aryptn_t *
23069rb_node_aryptn_new(
struct parser_params *p, NODE *pre_args, NODE *rest_arg, NODE *post_args,
const YYLTYPE *loc)
23071 rb_node_aryptn_t *n = NODE_NEWNODE(NODE_ARYPTN, rb_node_aryptn_t, loc);
23073 n->pre_args = pre_args;
23074 n->rest_arg = rest_arg;
23075 n->post_args = post_args;
23080static rb_node_hshptn_t *
23081rb_node_hshptn_new(
struct parser_params *p, NODE *nd_pconst, NODE *nd_pkwargs, NODE *nd_pkwrestarg,
const YYLTYPE *loc)
23083 rb_node_hshptn_t *n = NODE_NEWNODE(NODE_HSHPTN, rb_node_hshptn_t, loc);
23084 n->nd_pconst = nd_pconst;
23085 n->nd_pkwargs = nd_pkwargs;
23086 n->nd_pkwrestarg = nd_pkwrestarg;
23091static rb_node_fndptn_t *
23092rb_node_fndptn_new(
struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg,
const YYLTYPE *loc)
23094 rb_node_fndptn_t *n = NODE_NEWNODE(NODE_FNDPTN, rb_node_fndptn_t, loc);
23096 n->pre_rest_arg = pre_rest_arg;
23098 n->post_rest_arg = post_rest_arg;
23103static rb_node_line_t *
23104rb_node_line_new(
struct parser_params *p,
const YYLTYPE *loc)
23106 rb_node_line_t *n = NODE_NEWNODE(NODE_LINE, rb_node_line_t, loc);
23111static rb_node_file_t *
23114 rb_node_file_t *n = NODE_NEWNODE(NODE_FILE, rb_node_file_t, loc);
23115 n->path = rb_str_to_parser_string(p, str);
23120static rb_node_encoding_t *
23121rb_node_encoding_new(
struct parser_params *p,
const YYLTYPE *loc)
23123 rb_node_encoding_t *n = NODE_NEWNODE(NODE_ENCODING, rb_node_encoding_t, loc);
23129static rb_node_cdecl_t *
23130rb_node_cdecl_new(
struct parser_params *p,
ID nd_vid, NODE *nd_value, NODE *nd_else,
enum rb_parser_shareability shareability,
const YYLTYPE *loc)
23132 rb_node_cdecl_t *n = NODE_NEWNODE(NODE_CDECL, rb_node_cdecl_t, loc);
23133 n->nd_vid = nd_vid;
23134 n->nd_value = nd_value;
23135 n->nd_else = nd_else;
23136 n->shareability = shareability;
23141static rb_node_op_cdecl_t *
23142rb_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)
23144 rb_node_op_cdecl_t *n = NODE_NEWNODE(NODE_OP_CDECL, rb_node_op_cdecl_t, loc);
23145 n->nd_head = nd_head;
23146 n->nd_value = nd_value;
23147 n->nd_aid = nd_aid;
23148 n->shareability = shareability;
23153static rb_node_error_t *
23154rb_node_error_new(
struct parser_params *p,
const YYLTYPE *loc)
23156 rb_node_error_t *n = NODE_NEWNODE(NODE_ERROR, rb_node_error_t, loc);
23161static rb_node_break_t *
23162rb_node_break_new(
struct parser_params *p, NODE *nd_stts,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23164 rb_node_break_t *n = NODE_NEWNODE(NODE_BREAK, rb_node_break_t, loc);
23165 n->nd_stts = nd_stts;
23167 n->keyword_loc = *keyword_loc;
23172static rb_node_next_t *
23173rb_node_next_new(
struct parser_params *p, NODE *nd_stts,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23175 rb_node_next_t *n = NODE_NEWNODE(NODE_NEXT, rb_node_next_t, loc);
23176 n->nd_stts = nd_stts;
23178 n->keyword_loc = *keyword_loc;
23183static rb_node_redo_t *
23184rb_node_redo_new(
struct parser_params *p,
const YYLTYPE *loc,
const YYLTYPE *keyword_loc)
23186 rb_node_redo_t *n = NODE_NEWNODE(NODE_REDO, rb_node_redo_t, loc);
23188 n->keyword_loc = *keyword_loc;
23193static rb_node_def_temp_t *
23194rb_node_def_temp_new(
struct parser_params *p,
const YYLTYPE *loc)
23196 rb_node_def_temp_t *n = NODE_NEWNODE((
enum node_type)NODE_DEF_TEMP, rb_node_def_temp_t, loc);
23197 n->save.numparam_save = 0;
23198 n->save.max_numparam = 0;
23199 n->save.ctxt = p->ctxt;
23206static rb_node_def_temp_t *
23207def_head_save(
struct parser_params *p, rb_node_def_temp_t *n)
23209 n->save.numparam_save = numparam_push(p);
23210 n->save.max_numparam = p->max_numparam;
23215static enum node_type
23216nodetype(NODE *node)
23218 return (
enum node_type)nd_type(node);
23222nodeline(NODE *node)
23224 return nd_line(node);
23229newline_node(NODE *node)
23232 node = remove_begin(node);
23233 nd_set_fl_newline(node);
23239fixpos(NODE *node, NODE *orig)
23243 nd_set_line(node, nd_line(orig));
23247block_append(
struct parser_params *p, NODE *head, NODE *tail)
23249 NODE *end, *h = head, *nd;
23251 if (tail == 0)
return head;
23253 if (h == 0)
return tail;
23254 switch (nd_type(h)) {
23256 h = end = NEW_BLOCK(head, &head->nd_loc);
23260 end = RNODE_BLOCK(h)->nd_end;
23264 nd = RNODE_BLOCK(end)->nd_head;
23265 switch (nd_type(nd)) {
23271 rb_warning0L(nd_line(tail),
"statement not reached");
23278 if (!nd_type_p(tail, NODE_BLOCK)) {
23279 tail = NEW_BLOCK(tail, &tail->nd_loc);
23281 RNODE_BLOCK(end)->nd_next = tail;
23282 RNODE_BLOCK(h)->nd_end = RNODE_BLOCK(tail)->nd_end;
23283 nd_set_last_loc(head, nd_last_loc(tail));
23289list_append(
struct parser_params *p, NODE *list, NODE *item)
23293 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
23294 if (RNODE_LIST(list)->nd_next) {
23295 last = RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end;
23301 RNODE_LIST(list)->as.nd_alen += 1;
23302 RNODE_LIST(last)->nd_next = NEW_LIST(item, &item->nd_loc);
23303 RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end = RNODE_LIST(last)->nd_next;
23305 nd_set_last_loc(list, nd_last_loc(item));
23312list_concat(NODE *head, NODE *tail)
23316 if (RNODE_LIST(head)->nd_next) {
23317 last = RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end;
23323 RNODE_LIST(head)->as.nd_alen += RNODE_LIST(tail)->as.nd_alen;
23324 RNODE_LIST(last)->nd_next = tail;
23325 if (RNODE_LIST(tail)->nd_next) {
23326 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = RNODE_LIST(RNODE_LIST(tail)->nd_next)->as.nd_end;
23329 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = tail;
23332 nd_set_last_loc(head, nd_last_loc(tail));
23338literal_concat0(
struct parser_params *p, rb_parser_string_t *head, rb_parser_string_t *tail)
23340 if (!tail)
return 1;
23341 if (!rb_parser_enc_compatible(p, head, tail)) {
23342 compile_error(p,
"string literal encodings differ (%s / %s)",
23343 rb_enc_name(rb_parser_str_get_encoding(head)),
23344 rb_enc_name(rb_parser_str_get_encoding(tail)));
23345 rb_parser_str_resize(p, head, 0);
23346 rb_parser_str_resize(p, tail, 0);
23349 rb_parser_str_buf_append(p, head, tail);
23353static rb_parser_string_t *
23354string_literal_head(
struct parser_params *p,
enum node_type htype, NODE *head)
23356 if (htype != NODE_DSTR)
return NULL;
23357 if (RNODE_DSTR(head)->nd_next) {
23358 head = RNODE_LIST(RNODE_LIST(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_head;
23359 if (!head || !nd_type_p(head, NODE_STR))
return NULL;
23361 rb_parser_string_t *lit = RNODE_DSTR(head)->string;
23367static rb_parser_string_t *
23368rb_parser_string_deep_copy(
struct parser_params *p,
const rb_parser_string_t *orig)
23370 rb_parser_string_t *copy;
23371 if (!orig)
return NULL;
23372 copy = rb_parser_string_new(p, PARSER_STRING_PTR(orig), PARSER_STRING_LEN(orig));
23373 copy->coderange = orig->coderange;
23374 copy->enc = orig->enc;
23381literal_concat(
struct parser_params *p, NODE *head, NODE *tail,
const YYLTYPE *loc)
23383 enum node_type htype;
23384 rb_parser_string_t *lit;
23386 if (!head)
return tail;
23387 if (!tail)
return head;
23389 htype = nd_type(head);
23390 if (htype == NODE_EVSTR) {
23391 head = new_dstr(p, head, loc);
23394 if (p->heredoc_indent > 0) {
23397 head = str2dstr(p, head);
23399 return list_append(p, head, tail);
23404 switch (nd_type(tail)) {
23406 if ((lit = string_literal_head(p, htype, head)) !=
false) {
23410 lit = RNODE_DSTR(head)->string;
23412 if (htype == NODE_STR) {
23413 if (!literal_concat0(p, lit, RNODE_STR(tail)->
string)) {
23415 rb_discard_node(p, head);
23416 rb_discard_node(p, tail);
23419 rb_discard_node(p, tail);
23422 list_append(p, head, tail);
23427 if (htype == NODE_STR) {
23428 if (!literal_concat0(p, RNODE_STR(head)->
string, RNODE_DSTR(tail)->
string))
23430 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
23431 RNODE_DSTR(tail)->string = RNODE_STR(head)->string;
23432 RNODE_STR(head)->string = NULL;
23433 rb_discard_node(p, head);
23436 else if (!RNODE_DSTR(tail)->
string) {
23438 RNODE_DSTR(head)->as.nd_alen += RNODE_DSTR(tail)->as.nd_alen - 1;
23439 if (!RNODE_DSTR(head)->nd_next) {
23440 RNODE_DSTR(head)->nd_next = RNODE_DSTR(tail)->nd_next;
23442 else if (RNODE_DSTR(tail)->nd_next) {
23443 RNODE_DSTR(RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_next = RNODE_DSTR(tail)->nd_next;
23444 RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end = RNODE_DSTR(RNODE_DSTR(tail)->nd_next)->as.nd_end;
23446 rb_discard_node(p, tail);
23448 else if ((lit = string_literal_head(p, htype, head)) !=
false) {
23449 if (!literal_concat0(p, lit, RNODE_DSTR(tail)->
string))
23451 rb_parser_string_free(p, RNODE_DSTR(tail)->
string);
23452 RNODE_DSTR(tail)->string = 0;
23456 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));
23457 RNODE_DSTR(tail)->string = 0;
23462 if (htype == NODE_STR) {
23463 head = str2dstr(p, head);
23464 RNODE_DSTR(head)->as.nd_alen = 1;
23466 list_append(p, head, tail);
23473nd_copy_flag(NODE *new_node, NODE *old_node)
23475 if (nd_fl_newline(old_node)) nd_set_fl_newline(new_node);
23476 nd_set_line(new_node, nd_line(old_node));
23477 new_node->nd_loc = old_node->nd_loc;
23478 new_node->node_id = old_node->node_id;
23484 NODE *new_node = (NODE *)NODE_NEW_INTERNAL(NODE_DSTR, rb_node_dstr_t);
23485 nd_copy_flag(new_node, node);
23486 RNODE_DSTR(new_node)->string = RNODE_STR(node)->string;
23487 RNODE_DSTR(new_node)->as.nd_alen = 0;
23488 RNODE_DSTR(new_node)->nd_next = 0;
23489 RNODE_STR(node)->string = 0;
23497 NODE *new_node = (NODE *)NODE_NEW_INTERNAL(NODE_REGX, rb_node_regx_t);
23498 nd_copy_flag(new_node, node);
23499 RNODE_REGX(new_node)->string = RNODE_STR(node)->string;
23500 RNODE_REGX(new_node)->options = options;
23501 RNODE_STR(node)->string = 0;
23509 if (nd_type_p(node, NODE_EVSTR)) {
23510 node = new_dstr(p, node, &node->nd_loc);
23516new_evstr(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
23521 switch (nd_type(node)) {
23523 return str2dstr(p, node);
23530 return NEW_EVSTR(head, loc);
23534new_dstr(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
23536 NODE *dstr = NEW_DSTR(STRING_NEW0(), loc);
23537 return list_append(p, dstr, node);
23542 const YYLTYPE *op_loc,
const YYLTYPE *loc)
23547 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
23548 nd_set_line(expr, op_loc->beg_pos.lineno);
23553call_uni_op(
struct parser_params *p, NODE *recv,
ID id,
const YYLTYPE *op_loc,
const YYLTYPE *loc)
23557 opcall = NEW_OPCALL(recv,
id, 0, loc);
23558 nd_set_line(opcall, op_loc->beg_pos.lineno);
23563new_qcall(
struct parser_params* p,
ID atype, NODE *recv,
ID mid, NODE *args,
const YYLTYPE *op_loc,
const YYLTYPE *loc)
23565 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
23566 nd_set_line(qcall, op_loc->beg_pos.lineno);
23571new_command_qcall(
struct parser_params* p,
ID atype, NODE *recv,
ID mid, NODE *args, NODE *block,
const YYLTYPE *op_loc,
const YYLTYPE *loc)
23574 if (block) block_dup_check(p, args, block);
23575 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
23576 if (block) ret = method_add_block(p, ret, block, loc);
23581#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? RNODE_ONCE(node)->nd_body : node)
23584last_expr_once_body(NODE *node)
23586 if (!node)
return 0;
23587 return nd_once_body(node);
23591match_op(
struct parser_params *p, NODE *node1, NODE *node2,
const YYLTYPE *op_loc,
const YYLTYPE *loc)
23594 int line = op_loc->beg_pos.lineno;
23599 if ((n = last_expr_once_body(node1)) != 0) {
23600 switch (nd_type(n)) {
23603 NODE *match = NEW_MATCH2(node1, node2, loc);
23604 nd_set_line(match, line);
23610 const VALUE lit = rb_node_regx_string_val(n);
23612 NODE *match = NEW_MATCH2(node1, node2, loc);
23613 RNODE_MATCH2(match)->nd_args = reg_named_capture_assign(p, lit, loc, assignable);
23614 nd_set_line(match, line);
23621 if ((n = last_expr_once_body(node2)) != 0) {
23624 switch (nd_type(n)) {
23626 match3 = NEW_MATCH3(node2, node1, loc);
23631 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
23632 nd_set_line(n, line);
23636# if WARN_PAST_SCOPE
23640 struct vtable *past = p->lvtbl->past;
23642 if (vtable_included(past,
id))
return 1;
23653 NODE *outer = local->numparam.outer;
23654 NODE *inner = local->numparam.inner;
23655 if (outer || inner) {
23656 NODE *used = outer ? outer : inner;
23657 compile_error(p,
"numbered parameter is already used in\n"
23658 "%s:%d: %s block here",
23659 p->ruby_sourcefile, nd_line(used),
23660 outer ?
"outer" :
"inner");
23661 parser_show_error_line(p, &used->nd_loc);
23670 NODE *numparam = p->lvtbl->numparam.current;
23672 compile_error(p,
"numbered parameter is already used in\n"
23673 "%s:%d: current block here",
23674 p->ruby_sourcefile, nd_line(numparam));
23675 parser_show_error_line(p, &numparam->nd_loc);
23684 NODE *it = p->lvtbl->it;
23686 compile_error(p,
"'it' is already used in\n"
23687 "%s:%d: current block here",
23688 p->ruby_sourcefile, nd_line(it));
23689 parser_show_error_line(p, &it->nd_loc);
23702 return NEW_SELF(loc);
23704 return NEW_NIL(loc);
23706 return NEW_TRUE(loc);
23707 case keyword_false:
23708 return NEW_FALSE(loc);
23709 case keyword__FILE__:
23711 VALUE file = p->ruby_sourcefile_string;
23714 node = NEW_FILE(file, loc);
23717 case keyword__LINE__:
23718 return NEW_LINE(loc);
23719 case keyword__ENCODING__:
23720 return NEW_ENCODING(loc);
23723 switch (id_type(
id)) {
23725 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
23726 if (NUMPARAM_ID_P(
id) && (numparam_nested_p(p) || it_used_p(p)))
return 0;
23727 if (vidp) *vidp |= LVAR_USED;
23728 node = NEW_DVAR(
id, loc);
23731 if (local_id_ref(p,
id, &vidp)) {
23732 if (vidp) *vidp |= LVAR_USED;
23733 node = NEW_LVAR(
id, loc);
23736 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
23737 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
23738 if (numparam_nested_p(p) || it_used_p(p))
return 0;
23739 node = NEW_DVAR(
id, loc);
23741 if (!local->numparam.current) local->numparam.current = node;
23744# if WARN_PAST_SCOPE
23746 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
23750 if (dyna_in_block(p) &&
id == rb_intern(
"it") && !(DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev))) {
23751 if (numparam_used_p(p))
return 0;
23752 if (p->max_numparam == ORDINAL_PARAM) {
23753 compile_error(p,
"ordinary parameter is defined");
23757 p->it_id = internal_id(p);
23758 vtable_add(p->lvtbl->args, p->it_id);
23760 NODE *node = NEW_DVAR(p->it_id, loc);
23761 if (!p->lvtbl->it) p->lvtbl->it = node;
23764 return NEW_VCALL(
id, loc);
23766 return NEW_GVAR(
id, loc);
23768 return NEW_IVAR(
id, loc);
23770 return NEW_CONST(
id, loc);
23772 return NEW_CVAR(
id, loc);
23774 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
23778static rb_node_opt_arg_t *
23779opt_arg_append(rb_node_opt_arg_t *opt_list, rb_node_opt_arg_t *opt)
23781 rb_node_opt_arg_t *opts = opt_list;
23782 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
23784 while (opts->nd_next) {
23785 opts = opts->nd_next;
23786 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
23788 opts->nd_next = opt;
23793static rb_node_kw_arg_t *
23794kwd_append(rb_node_kw_arg_t *kwlist, rb_node_kw_arg_t *kw)
23798 opt_arg_append(RNODE_OPT_ARG(kwlist), RNODE_OPT_ARG(kw));
23804new_defined(
struct parser_params *p, NODE *expr,
const YYLTYPE *loc)
23808 if (nd_type_p(n, NODE_BEGIN)) {
23809 n = RNODE_BEGIN(n)->nd_body;
23811 else if (nd_type_p(n, NODE_BLOCK) && RNODE_BLOCK(n)->nd_end == n) {
23812 n = RNODE_BLOCK(n)->nd_head;
23818 return NEW_DEFINED(n, loc);
23822str_to_sym_node(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
23825 rb_parser_string_t *str = RNODE_STR(node)->string;
23826 if (rb_parser_enc_str_coderange(p, str) == RB_PARSER_ENC_CODERANGE_BROKEN) {
23827 yyerror1(loc,
"invalid symbol");
23831 lit = rb_str_new_parser_string(str);
23833 return NEW_SYM(lit, loc);
23837symbol_append(
struct parser_params *p, NODE *symbols, NODE *symbol)
23839 enum node_type
type = nd_type(symbol);
23842 nd_set_type(symbol, NODE_DSYM);
23845 symbol = str_to_sym_node(p, symbol, &RNODE(symbol)->nd_loc);
23848 compile_error(p,
"unexpected node as symbol: %s", parser_node_name(
type));
23850 return list_append(p, symbols, symbol);
23854new_regexp(
struct parser_params *p, NODE *node,
int options,
const YYLTYPE *loc)
23861 rb_parser_string_t *str = STRING_NEW0();
23862 reg_compile(p, str, options);
23863 node = NEW_REGX(str, options, loc);
23866 switch (nd_type(node)) {
23870 reg_compile(p, RNODE_STR(node)->
string, options);
23871 node = str2regx(p, node, options);
23875 node = NEW_DSTR0(STRING_NEW0(), 1, NEW_LIST(node, loc), loc);
23878 nd_set_type(node, NODE_DREGX);
23879 nd_set_loc(node, loc);
23880 rb_node_dregx_t *
const dreg = RNODE_DREGX(node);
23881 dreg->as.nd_cflag = options & RE_OPTION_MASK;
23882 if (dreg->string) reg_fragment_check(p, dreg->string, options);
23884 for (list = dreg->nd_next; list; list = RNODE_LIST(list->nd_next)) {
23885 NODE *frag = list->nd_head;
23886 enum node_type
type = nd_type(frag);
23887 if (
type == NODE_STR || (
type == NODE_DSTR && !RNODE_DSTR(frag)->nd_next)) {
23888 rb_parser_string_t *tail = RNODE_STR(frag)->string;
23889 if (reg_fragment_check(p, tail, options) && prev && RNODE_DREGX(prev)->
string) {
23890 rb_parser_string_t *lit = prev == node ? dreg->string : RNODE_STR(RNODE_LIST(prev)->nd_head)->string;
23891 if (!literal_concat0(p, lit, tail)) {
23892 return NEW_NIL(loc);
23894 rb_parser_str_resize(p, tail, 0);
23895 RNODE_LIST(prev)->nd_next = list->nd_next;
23896 rb_discard_node(p, list->nd_head);
23897 rb_discard_node(p, (NODE *)list);
23898 list = RNODE_LIST(prev);
23901 prev = (NODE *)list;
23908 if (!dreg->nd_next) {
23910 reg_compile(p, dreg->string, options);
23912 if (options & RE_OPTION_ONCE) {
23913 node = NEW_ONCE(node, loc);
23920static rb_node_kw_arg_t *
23921new_kw_arg(
struct parser_params *p, NODE *k,
const YYLTYPE *loc)
23924 return NEW_KW_ARG((k), loc);
23928new_xstring(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
23931 NODE *xstr = NEW_XSTR(STRING_NEW0(), loc);
23934 switch (nd_type(node)) {
23936 nd_set_type(node, NODE_XSTR);
23937 nd_set_loc(node, loc);
23940 nd_set_type(node, NODE_DXSTR);
23941 nd_set_loc(node, loc);
23944 node = NEW_DXSTR(0, 1, NEW_LIST(node, loc), loc);
23951struct st_hash_type literal_type = {
23956static int nd_type_st_key_enable_p(NODE *node);
23959check_literal_when(
struct parser_params *p, NODE *arg,
const YYLTYPE *loc)
23962 if (!arg || !p->case_labels)
return;
23963 if (!nd_type_st_key_enable_p(arg))
return;
23965 if (p->case_labels == CHECK_LITERAL_WHEN) {
23966 p->case_labels = st_init_table(&literal_type);
23970 if (st_lookup(p->case_labels, (st_data_t)arg, &line)) {
23971 rb_warning2(
"'when' clause on line %d duplicates 'when' clause on line %d and is ignored",
23972 WARN_I((
int)nd_line(arg)), WARN_I((
int)line));
23976 st_insert(p->case_labels, (st_data_t)arg, (st_data_t)p->ruby_sourceline);
23983 if (is_notop_id(
id)) {
23984 switch (
id & ID_SCOPE_MASK) {
23985 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
23988 if (dyna_in_block(p)) {
23989 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
23991 if (local_id(p,
id))
return 1;
23996 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
24001static inline enum lex_state_e
24002parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
24005 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
24007 return p->lex.state = ls;
24014 VALUE mesg = p->debug_buffer;
24016 if (!
NIL_P(mesg) && RSTRING_LEN(mesg)) {
24017 p->debug_buffer =
Qnil;
24018 rb_io_puts(1, &mesg, out);
24020 if (!
NIL_P(str) && RSTRING_LEN(str)) {
24021 rb_io_write(p->debug_output, str);
24025static const char rb_parser_lex_state_names[][8] = {
24026 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
24027 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
24028 "LABEL",
"LABELED",
"FITEM",
24035 unsigned int mask = 1;
24036 static const char none[] =
"NONE";
24038 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
24039 if ((
unsigned)state & mask) {
24054rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
24055 enum lex_state_e to,
int line)
24059 append_lex_state_name(p, from, mesg);
24061 append_lex_state_name(p, to, mesg);
24062 rb_str_catf(mesg,
" at line %d\n", line);
24063 flush_debug_buffer(p, p->debug_output, mesg);
24068rb_parser_lex_state_name(
struct parser_params *p,
enum lex_state_e state)
24070 return rb_str_to_interned_str(append_lex_state_name(p, state,
rb_str_new(0, 0)));
24080 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
24081 for (; mask && !(stack & mask); mask >>= 1)
continue;
24082 for (; mask; mask >>= 1)
rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
24087rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
24088 const char *name,
int line)
24090 VALUE mesg = rb_sprintf(
"%s: ", name);
24091 append_bitstack_value(p, stack, mesg);
24092 rb_str_catf(mesg,
" at line %d\n", line);
24093 flush_debug_buffer(p, p->debug_output, mesg);
24097rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
24103 rb_str_vcatf(mesg, fmt, ap);
24105 yyerror0(RSTRING_PTR(mesg));
24109 append_lex_state_name(p, p->lex.state, mesg);
24110 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
24111 rb_str_resize(mesg, 0);
24112 append_bitstack_value(p, p->cond_stack, mesg);
24113 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
24114 rb_str_resize(mesg, 0);
24115 append_bitstack_value(p, p->cmdarg_stack, mesg);
24116 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
24117 if (p->debug_output == rb_ractor_stdout())
24118 p->debug_output = rb_ractor_stderr();
24123rb_parser_set_pos(YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
24125 yylloc->beg_pos.lineno = sourceline;
24126 yylloc->beg_pos.column = beg_pos;
24127 yylloc->end_pos.lineno = sourceline;
24128 yylloc->end_pos.column = end_pos;
24133rb_parser_set_location_from_strterm_heredoc(
struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc)
24135 int sourceline = here->sourceline;
24136 int beg_pos = (int)here->offset - here->quote
24137 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
24138 int end_pos = (int)here->offset + here->length + here->quote;
24140 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24144rb_parser_set_location_of_delayed_token(
struct parser_params *p, YYLTYPE *yylloc)
24146 yylloc->beg_pos.lineno = p->delayed.beg_line;
24147 yylloc->beg_pos.column = p->delayed.beg_col;
24148 yylloc->end_pos.lineno = p->delayed.end_line;
24149 yylloc->end_pos.column = p->delayed.end_col;
24155rb_parser_set_location_of_heredoc_end(
struct parser_params *p, YYLTYPE *yylloc)
24157 int sourceline = p->ruby_sourceline;
24158 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24159 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
24160 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24164rb_parser_set_location_of_dummy_end(
struct parser_params *p, YYLTYPE *yylloc)
24166 yylloc->end_pos = yylloc->beg_pos;
24172rb_parser_set_location_of_none(
struct parser_params *p, YYLTYPE *yylloc)
24174 int sourceline = p->ruby_sourceline;
24175 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24176 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
24177 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24181rb_parser_set_location(
struct parser_params *p, YYLTYPE *yylloc)
24183 int sourceline = p->ruby_sourceline;
24184 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
24185 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
24186 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
24193 if (!
id)
return -1;
24196 *err =
"Can't change the value of self";
24199 *err =
"Can't assign to nil";
24202 *err =
"Can't assign to true";
24204 case keyword_false:
24205 *err =
"Can't assign to false";
24207 case keyword__FILE__:
24208 *err =
"Can't assign to __FILE__";
24210 case keyword__LINE__:
24211 *err =
"Can't assign to __LINE__";
24213 case keyword__ENCODING__:
24214 *err =
"Can't assign to __ENCODING__";
24217 switch (id_type(
id)) {
24219 if (dyna_in_block(p)) {
24220 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
24221 compile_error(p,
"Can't assign to numbered parameter _%d",
24222 NUMPARAM_ID_TO_IDX(
id));
24225 if (dvar_curr(p,
id))
return NODE_DASGN;
24226 if (dvar_defined(p,
id))
return NODE_DASGN;
24227 if (local_id(p,
id))
return NODE_LASGN;
24232 if (!local_id(p,
id)) local_var(p,
id);
24236 case ID_GLOBAL:
return NODE_GASGN;
24237 case ID_INSTANCE:
return NODE_IASGN;
24239 if (!p->ctxt.in_def)
return NODE_CDECL;
24240 *err =
"dynamic constant assignment";
24242 case ID_CLASS:
return NODE_CVASGN;
24244 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
24250assignable(
struct parser_params *p,
ID id, NODE *val,
const YYLTYPE *loc)
24252 const char *err = 0;
24253 int node_type = assignable0(p,
id, &err);
24254 switch (node_type) {
24255 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
24256 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
24257 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
24258 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
24259 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, p->ctxt.shareable_constant_value, loc);
24260 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
24264 if (err) yyerror1(loc, err);
24266 if (err) set_value(assign_error(p, err, p->s_lvalue));
24268 return NEW_ERROR(loc);
24275 if (name == idUScore)
return 1;
24276 if (!is_local_id(name))
return 0;
24277 s = rb_id2str(name);
24279 return RSTRING_PTR(s)[0] ==
'_';
24285 if (dyna_in_block(p)) {
24286 if (dvar_curr(p, name)) {
24287 if (is_private_local_id(p, name))
return 1;
24288 yyerror0(
"duplicated argument name");
24290 else if (dvar_defined(p, name) || local_id(p, name)) {
24291 vtable_add(p->lvtbl->vars, name);
24292 if (p->lvtbl->used) {
24293 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
24299 if (local_id(p, name)) {
24300 if (is_private_local_id(p, name))
return 1;
24301 yyerror0(
"duplicated argument name");
24310 shadowing_lvar_0(p, name);
24318 if (!is_local_id(name)) {
24319 compile_error(p,
"invalid local variable - %"PRIsVALUE,
24323 if (!shadowing_lvar_0(p, name))
return;
24326 if (dvar_defined_ref(p, name, &vidp)) {
24327 if (vidp) *vidp |= LVAR_USED;
24334 NODE *block = 0, *kwds = 0;
24335 if (args && nd_type_p(args, NODE_BLOCK_PASS)) {
24336 block = RNODE_BLOCK_PASS(args)->nd_body;
24337 args = RNODE_BLOCK_PASS(args)->nd_head;
24339 if (args && nd_type_p(args, NODE_ARGSCAT)) {
24340 args = RNODE_ARGSCAT(args)->nd_body;
24342 if (args && nd_type_p(args, NODE_ARGSPUSH)) {
24343 kwds = RNODE_ARGSPUSH(args)->nd_body;
24346 for (NODE *next = args; next && nd_type_p(next, NODE_LIST);
24347 next = RNODE_LIST(next)->nd_next) {
24348 kwds = RNODE_LIST(next)->nd_head;
24351 if (kwds && nd_type_p(kwds, NODE_HASH) && !RNODE_HASH(kwds)->nd_brace) {
24352 yyerror1(&kwds->nd_loc,
"keyword arg given in index assignment");
24355 yyerror1(&block->nd_loc,
"block arg given in index assignment");
24360aryset(
struct parser_params *p, NODE *recv, NODE *idx,
const YYLTYPE *loc)
24362 aryset_check(p, idx);
24363 return NEW_ATTRASGN(recv, tASET, idx, loc);
24367block_dup_check(
struct parser_params *p, NODE *node1, NODE *node2)
24369 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
24370 compile_error(p,
"both block arg and actual block given");
24375attrset(
struct parser_params *p, NODE *recv,
ID atype,
ID id,
const YYLTYPE *loc)
24377 if (!CALL_Q_P(atype))
id = rb_id_attrset(
id);
24378 return NEW_ATTRASGN(recv,
id, 0, loc);
24385# define ERR(...) (compile_error(p, __VA_ARGS__), Qtrue)
24387# define ERR(...) rb_sprintf(__VA_ARGS__)
24389 switch (nd_type(node)) {
24391 return ERR(
"Can't set variable $%ld", RNODE_NTH_REF(node)->nd_nth);
24392 case NODE_BACK_REF:
24393 return ERR(
"Can't set variable $%c", (
int)RNODE_BACK_REF(node)->nd_nth);
24400arg_append(
struct parser_params *p, NODE *node1, NODE *node2,
const YYLTYPE *loc)
24402 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
24403 switch (nd_type(node1)) {
24405 return list_append(p, node1, node2);
24406 case NODE_BLOCK_PASS:
24407 RNODE_BLOCK_PASS(node1)->nd_head = arg_append(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
24408 node1->nd_loc.end_pos = RNODE_BLOCK_PASS(node1)->nd_head->nd_loc.end_pos;
24410 case NODE_ARGSPUSH:
24411 RNODE_ARGSPUSH(node1)->nd_body = list_append(p, NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, &RNODE_ARGSPUSH(node1)->nd_body->nd_loc), node2);
24412 node1->nd_loc.end_pos = RNODE_ARGSPUSH(node1)->nd_body->nd_loc.end_pos;
24413 nd_set_type(node1, NODE_ARGSCAT);
24416 if (!nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
24417 RNODE_ARGSCAT(node1)->nd_body = list_append(p, RNODE_ARGSCAT(node1)->nd_body, node2);
24418 node1->nd_loc.end_pos = RNODE_ARGSCAT(node1)->nd_body->nd_loc.end_pos;
24421 return NEW_ARGSPUSH(node1, node2, loc);
24425arg_concat(
struct parser_params *p, NODE *node1, NODE *node2,
const YYLTYPE *loc)
24427 if (!node2)
return node1;
24428 switch (nd_type(node1)) {
24429 case NODE_BLOCK_PASS:
24430 if (RNODE_BLOCK_PASS(node1)->nd_head)
24431 RNODE_BLOCK_PASS(node1)->nd_head = arg_concat(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
24433 RNODE_LIST(node1)->nd_head = NEW_LIST(node2, loc);
24435 case NODE_ARGSPUSH:
24436 if (!nd_type_p(node2, NODE_LIST))
break;
24437 RNODE_ARGSPUSH(node1)->nd_body = list_concat(NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, loc), node2);
24438 nd_set_type(node1, NODE_ARGSCAT);
24441 if (!nd_type_p(node2, NODE_LIST) ||
24442 !nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
24443 RNODE_ARGSCAT(node1)->nd_body = list_concat(RNODE_ARGSCAT(node1)->nd_body, node2);
24446 return NEW_ARGSCAT(node1, node2, loc);
24450last_arg_append(
struct parser_params *p, NODE *args, NODE *last_arg,
const YYLTYPE *loc)
24453 if ((n1 = splat_array(args)) != 0) {
24454 return list_append(p, n1, last_arg);
24456 return arg_append(p, args, last_arg, loc);
24460rest_arg_append(
struct parser_params *p, NODE *args, NODE *rest_arg,
const YYLTYPE *loc)
24463 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
24464 return list_concat(n1, rest_arg);
24466 return arg_concat(p, args, rest_arg, loc);
24470splat_array(NODE* node)
24472 if (nd_type_p(node, NODE_SPLAT)) node = RNODE_SPLAT(node)->nd_head;
24473 if (nd_type_p(node, NODE_LIST))
return node;
24482 switch (nd_type(rhs)) {
24484 if (local_id_ref(p, RNODE_LASGN(rhs)->nd_vid, &vidp)) {
24485 if (vidp) *vidp |= LVAR_USED;
24489 if (dvar_defined_ref(p, RNODE_DASGN(rhs)->nd_vid, &vidp)) {
24490 if (vidp) *vidp |= LVAR_USED;
24495 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
24496 mark_lvar_used(p, rhs->nd_head);
24503static int is_static_content(NODE *node);
24508 if (!lhs)
return 0;
24510 switch (nd_type(lhs)) {
24518 set_nd_value(p, lhs, rhs);
24519 nd_set_loc(lhs, loc);
24522 case NODE_ATTRASGN:
24523 RNODE_ATTRASGN(lhs)->nd_args = arg_append(p, RNODE_ATTRASGN(lhs)->nd_args, rhs, loc);
24524 nd_set_loc(lhs, loc);
24538 NODE *void_node = 0, *vn;
24541 rb_warning0(
"empty expression");
24544 switch (nd_type(node)) {
24546 vn = RNODE_ENSURE(node)->nd_head;
24547 node = RNODE_ENSURE(node)->nd_ensr;
24549 if (vn && (vn = value_expr_check(p, vn))) {
24556 vn = RNODE_RESCUE(node)->nd_head;
24557 if (!vn || !(vn = value_expr_check(p, vn)))
return NULL;
24558 if (!void_node) void_node = vn;
24559 for (NODE *r = RNODE_RESCUE(node)->nd_resq; r; r = RNODE_RESBODY(r)->nd_next) {
24560 if (!nd_type_p(r, NODE_RESBODY)) {
24561 compile_error(p,
"unexpected node");
24564 if (!(vn = value_expr_check(p, RNODE_RESBODY(r)->nd_body))) {
24568 if (!void_node) void_node = vn;
24570 node = RNODE_RESCUE(node)->nd_else;
24571 if (!node)
return void_node;
24582 if (!RNODE_CASE3(node)->nd_body || !nd_type_p(RNODE_CASE3(node)->nd_body, NODE_IN)) {
24583 compile_error(p,
"unexpected node");
24586 if (RNODE_IN(RNODE_CASE3(node)->nd_body)->nd_body) {
24593 while (RNODE_BLOCK(node)->nd_next) {
24594 node = RNODE_BLOCK(node)->nd_next;
24596 node = RNODE_BLOCK(node)->nd_head;
24600 node = RNODE_BEGIN(node)->nd_body;
24605 if (!RNODE_IF(node)->nd_body) {
24608 else if (!RNODE_IF(node)->nd_else) {
24611 vn = value_expr_check(p, RNODE_IF(node)->nd_body);
24612 if (!vn)
return NULL;
24613 if (!void_node) void_node = vn;
24614 node = RNODE_IF(node)->nd_else;
24619 node = RNODE_AND(node)->nd_1st;
24625 mark_lvar_used(p, node);
24637 return void_node ? void_node : node;
24643 NODE *void_node = value_expr_check(p, node);
24645 yyerror1(&void_node->nd_loc,
"void value expression");
24655 const char *useless = 0;
24659 if (!node || !(node = nd_once_body(node)))
return;
24660 switch (nd_type(node)) {
24662 switch (RNODE_OPCALL(node)->nd_mid) {
24681 useless = rb_id2name(RNODE_OPCALL(node)->nd_mid);
24692 case NODE_BACK_REF:
24693 useless =
"a variable";
24696 useless =
"a constant";
24701 case NODE_ENCODING:
24704 case NODE_RATIONAL:
24705 case NODE_IMAGINARY:
24710 useless =
"a literal";
24735 useless =
"defined?";
24740 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
24748 NODE *
const n = node;
24750 if (!node)
return n;
24751 if (!nd_type_p(node, NODE_BLOCK))
return n;
24753 while (RNODE_BLOCK(node)->nd_next) {
24754 void_expr(p, RNODE_BLOCK(node)->nd_head);
24755 node = RNODE_BLOCK(node)->nd_next;
24757 return RNODE_BLOCK(node)->nd_head;
24761remove_begin(NODE *node)
24763 NODE **n = &node, *n1 = node;
24764 while (n1 && nd_type_p(n1, NODE_BEGIN) && RNODE_BEGIN(n1)->nd_body) {
24765 *n = n1 = RNODE_BEGIN(n1)->nd_body;
24773 NODE *node = *body;
24776 *body = NEW_NIL(&NULL_LOC);
24779#define subnodes(type, n1, n2) \
24780 ((!type(node)->n1) ? (type(node)->n2 ? (body = &type(node)->n2, 1) : 0) : \
24781 (!type(node)->n2) ? (body = &type(node)->n1, 1) : \
24782 (reduce_nodes(p, &type(node)->n1), body = &type(node)->n2, 1))
24785 int newline = (int)nd_fl_newline(node);
24786 switch (nd_type(node)) {
24792 *body = node = RNODE_BEGIN(node)->nd_body;
24793 if (newline && node) nd_set_fl_newline(node);
24796 body = &RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head;
24800 if (subnodes(RNODE_IF, nd_body, nd_else))
break;
24803 body = &RNODE_CASE(node)->nd_body;
24806 if (!subnodes(RNODE_WHEN, nd_body, nd_next))
goto end;
24809 body = &RNODE_ENSURE(node)->nd_head;
24813 if (RNODE_RESCUE(node)->nd_else) {
24814 body = &RNODE_RESCUE(node)->nd_resq;
24817 if (!subnodes(RNODE_RESCUE, nd_head, nd_resq))
goto end;
24823 if (newline && node) nd_set_fl_newline(node);
24830is_static_content(NODE *node)
24832 if (!node)
return 1;
24833 switch (nd_type(node)) {
24835 if (!(node = RNODE_HASH(node)->nd_head))
break;
24838 if (!is_static_content(RNODE_LIST(node)->nd_head))
return 0;
24839 }
while ((node = RNODE_LIST(node)->nd_next) != 0);
24844 case NODE_ENCODING:
24847 case NODE_RATIONAL:
24848 case NODE_IMAGINARY:
24864 switch (nd_type(node)) {
24878 if (!get_nd_value(p, node))
return 1;
24879 if (is_static_content(get_nd_value(p, node))) {
24881 rb_warn0L(nd_line(get_nd_value(p, node)),
"found '= literal' in conditional, should be ==");
24892#define SWITCH_BY_COND_TYPE(t, w, arg) do { \
24894 case COND_IN_OP: break; \
24895 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
24896 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
24900static NODE *cond0(
struct parser_params*,NODE*,
enum cond_type,
const YYLTYPE*,
bool);
24903range_op(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
24905 enum node_type
type;
24907 if (node == 0)
return 0;
24909 type = nd_type(node);
24911 if (
type == NODE_INTEGER) {
24912 if (!e_option_supplied(p)) rb_warn0L(nd_line(node),
"integer literal in flip-flop");
24913 ID lineno = rb_intern(
"$.");
24914 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
24916 return cond0(p, node, COND_IN_FF, loc,
true);
24920cond0(
struct parser_params *p, NODE *node,
enum cond_type
type,
const YYLTYPE *loc,
bool top)
24922 if (node == 0)
return 0;
24923 if (!(node = nd_once_body(node)))
return 0;
24924 assign_in_cond(p, node);
24926 switch (nd_type(node)) {
24928 RNODE_BEGIN(node)->nd_body = cond0(p, RNODE_BEGIN(node)->nd_body,
type, loc, top);
24935 SWITCH_BY_COND_TYPE(
type, warn,
"string ");
24939 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ");
24940 nd_set_type(node, NODE_MATCH);
24944 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning,
"regex ");
24946 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
24950 NODE *end = RNODE_BLOCK(node)->nd_end;
24951 NODE **expr = &RNODE_BLOCK(end)->nd_head;
24952 if (top) top = node == end;
24953 *expr = cond0(p, *expr,
type, loc, top);
24959 RNODE_AND(node)->nd_1st = cond0(p, RNODE_AND(node)->nd_1st, COND_IN_COND, loc,
true);
24960 RNODE_AND(node)->nd_2nd = cond0(p, RNODE_AND(node)->nd_2nd, COND_IN_COND, loc,
true);
24966 RNODE_DOT2(node)->nd_beg = range_op(p, RNODE_DOT2(node)->nd_beg, loc);
24967 RNODE_DOT2(node)->nd_end = range_op(p, RNODE_DOT2(node)->nd_end, loc);
24968 switch (nd_type(node)) {
24970 nd_set_type(node,NODE_FLIP2);
24971 rb_node_flip2_t *flip2 = RNODE_FLIP2(node);
24975 nd_set_type(node, NODE_FLIP3);
24976 rb_node_flip3_t *flip3 = RNODE_FLIP3(node);
24984 SWITCH_BY_COND_TYPE(
type, warning,
"symbol ");
24988 SWITCH_BY_COND_TYPE(
type, warning,
"");
24991 case NODE_ENCODING:
24992 SWITCH_BY_COND_TYPE(
type, warning,
"");
24997 case NODE_RATIONAL:
24998 case NODE_IMAGINARY:
24999 SWITCH_BY_COND_TYPE(
type, warning,
"");
25009cond(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
25011 if (node == 0)
return 0;
25012 return cond0(p, node, COND_IN_COND, loc,
true);
25016method_cond(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
25018 if (node == 0)
return 0;
25019 return cond0(p, node, COND_IN_OP, loc,
true);
25023new_nil_at(
struct parser_params *p,
const rb_code_position_t *pos)
25025 YYLTYPE loc = {*pos, *pos};
25026 return NEW_NIL(&loc);
25030new_if(
struct parser_params *p, NODE *cc, NODE *left, NODE *right,
const YYLTYPE *loc)
25032 if (!cc)
return right;
25033 cc = cond0(p, cc, COND_IN_COND, loc,
true);
25034 return newline_node(NEW_IF(cc, left, right, loc));
25038new_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)
25040 if (!cc)
return right;
25041 cc = cond0(p, cc, COND_IN_COND, loc,
true);
25042 return newline_node(NEW_UNLESS(cc, left, right, loc, keyword_loc, then_keyword_loc, end_keyword_loc));
25045#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))
25049 const YYLTYPE *op_loc,
const YYLTYPE *loc)
25051 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
25054 if (left && nd_type_p(left,
type)) {
25055 NODE *node = left, *second;
25056 while ((second = RNODE_AND(node)->nd_2nd) != 0 && nd_type_p(second,
type)) {
25059 RNODE_AND(node)->nd_2nd = NEW_AND_OR(
type, second, right, loc, op_loc);
25060 nd_set_line(RNODE_AND(node)->nd_2nd, op_loc->beg_pos.lineno);
25061 left->nd_loc.end_pos = loc->end_pos;
25064 op = NEW_AND_OR(
type, left, right, loc, op_loc);
25065 nd_set_line(op, op_loc->beg_pos.lineno);
25074 if (nd_type_p(node, NODE_BLOCK_PASS)) {
25075 compile_error(p,
"block argument should not be given");
25083 no_blockarg(p, node);
25084 if (nd_type_p(node, NODE_LIST) && !RNODE_LIST(node)->nd_next) {
25085 node = RNODE_LIST(node)->nd_head;
25092new_yield(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
25094 if (node) no_blockarg(p, node);
25096 return NEW_YIELD(node, loc);
25102 switch (nd_type(node)) {
25104 RNODE_INTEGER(node)->minus = TRUE;
25107 RNODE_FLOAT(node)->minus = TRUE;
25109 case NODE_RATIONAL:
25110 RNODE_RATIONAL(node)->minus = TRUE;
25112 case NODE_IMAGINARY:
25113 RNODE_IMAGINARY(node)->minus = TRUE;
25120arg_blk_pass(NODE *node1, rb_node_block_pass_t *node2)
25123 if (!node1)
return (NODE *)node2;
25124 node2->nd_head = node1;
25125 nd_set_first_lineno(node2, nd_first_lineno(node1));
25126 nd_set_first_column(node2, nd_first_column(node1));
25127 return (NODE *)node2;
25135 if (args->pre_args_num)
return false;
25136 if (args->post_args_num)
return false;
25137 if (args->rest_arg)
return false;
25138 if (args->opt_args)
return false;
25139 if (args->block_arg)
return false;
25140 if (args->kw_args)
return false;
25141 if (args->kw_rest_arg)
return false;
25145static rb_node_args_t *
25146new_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)
25150 if (args->forwarding) {
25152 yyerror1(&RNODE(tail)->nd_loc,
"... after rest argument");
25155 rest_arg = idFWD_REST;
25158 args->pre_args_num = pre_args ? pre_args->nd_plen : 0;
25159 args->pre_init = pre_args ? pre_args->nd_next : 0;
25161 args->post_args_num = post_args ? post_args->nd_plen : 0;
25162 args->post_init = post_args ? post_args->nd_next : 0;
25163 args->first_post_arg = post_args ? post_args->nd_pid : 0;
25165 args->rest_arg = rest_arg;
25167 args->opt_args = opt_args;
25169#ifdef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
25170 args->ruby2_keywords = args->forwarding;
25172 args->ruby2_keywords = 0;
25175 nd_set_loc(RNODE(tail), loc);
25180static rb_node_args_t *
25181new_args_tail(
struct parser_params *p, rb_node_kw_arg_t *kw_args,
ID kw_rest_arg,
ID block,
const YYLTYPE *kw_rest_loc)
25183 rb_node_args_t *node = NEW_ARGS(&NULL_LOC);
25185 if (p->error_p)
return node;
25187 args->block_arg = block;
25188 args->kw_args = kw_args;
25197 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
25198 struct vtable *vtargs = p->lvtbl->args;
25199 rb_node_kw_arg_t *kwn = kw_args;
25201 if (block) block = vtargs->tbl[vtargs->pos-1];
25202 vtable_pop(vtargs, !!block + !!kw_rest_arg);
25203 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
25205 if (!NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body)))
25207 --required_kw_vars;
25208 kwn = kwn->nd_next;
25211 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
25212 ID vid = get_nd_vid(p, kwn->nd_body);
25213 if (NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body))) {
25214 *required_kw_vars++ = vid;
25221 arg_var(p, kw_bits);
25222 if (kw_rest_arg) arg_var(p, kw_rest_arg);
25223 if (block) arg_var(p, block);
25225 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
25227 else if (kw_rest_arg == idNil) {
25228 args->no_kwarg = 1;
25230 else if (kw_rest_arg) {
25231 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
25237static rb_node_args_t *
25238args_with_numbered(
struct parser_params *p, rb_node_args_t *args,
int max_numparam,
ID it_id)
25240 if (max_numparam > NO_PARAM || it_id) {
25242 YYLTYPE loc = RUBY_INIT_YYLLOC();
25243 args = new_args_tail(p, 0, 0, 0, 0);
25244 nd_set_loc(RNODE(args), &loc);
25246 args->nd_ainfo.pre_args_num = it_id ? 1 : max_numparam;
25252new_array_pattern(
struct parser_params *p, NODE *constant, NODE *pre_arg, NODE *aryptn,
const YYLTYPE *loc)
25254 RNODE_ARYPTN(aryptn)->nd_pconst = constant;
25257 NODE *pre_args = NEW_LIST(pre_arg, loc);
25258 if (RNODE_ARYPTN(aryptn)->pre_args) {
25259 RNODE_ARYPTN(aryptn)->pre_args = list_concat(pre_args, RNODE_ARYPTN(aryptn)->pre_args);
25262 RNODE_ARYPTN(aryptn)->pre_args = pre_args;
25269new_array_pattern_tail(
struct parser_params *p, NODE *pre_args,
int has_rest, NODE *rest_arg, NODE *post_args,
const YYLTYPE *loc)
25272 rest_arg = rest_arg ? rest_arg : NODE_SPECIAL_NO_NAME_REST;
25277 NODE *node = NEW_ARYPTN(pre_args, rest_arg, post_args, loc);
25283new_find_pattern(
struct parser_params *p, NODE *constant, NODE *fndptn,
const YYLTYPE *loc)
25285 RNODE_FNDPTN(fndptn)->nd_pconst = constant;
25291new_find_pattern_tail(
struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg,
const YYLTYPE *loc)
25293 pre_rest_arg = pre_rest_arg ? pre_rest_arg : NODE_SPECIAL_NO_NAME_REST;
25294 post_rest_arg = post_rest_arg ? post_rest_arg : NODE_SPECIAL_NO_NAME_REST;
25295 NODE *node = NEW_FNDPTN(pre_rest_arg, args, post_rest_arg, loc);
25301new_hash_pattern(
struct parser_params *p, NODE *constant, NODE *hshptn,
const YYLTYPE *loc)
25303 RNODE_HSHPTN(hshptn)->nd_pconst = constant;
25308new_hash_pattern_tail(
struct parser_params *p, NODE *kw_args,
ID kw_rest_arg,
const YYLTYPE *loc)
25310 NODE *node, *kw_rest_arg_node;
25312 if (kw_rest_arg == idNil) {
25313 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
25315 else if (kw_rest_arg) {
25316 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
25319 kw_rest_arg_node = NULL;
25322 node = NEW_HSHPTN(0, kw_args, kw_rest_arg_node, loc);
25328dsym_node(
struct parser_params *p, NODE *node,
const YYLTYPE *loc)
25331 return NEW_SYM(STR_NEW0(), loc);
25334 switch (nd_type(node)) {
25336 nd_set_type(node, NODE_DSYM);
25337 nd_set_loc(node, loc);
25340 node = str_to_sym_node(p, node, loc);
25343 node = NEW_DSYM(0, 1, NEW_LIST(node, loc), loc);
25350nd_type_st_key_enable_p(NODE *node)
25352 switch (nd_type(node)) {
25355 case NODE_RATIONAL:
25356 case NODE_IMAGINARY:
25362 case NODE_ENCODING:
25372 switch (nd_type(node)) {
25374 return rb_node_str_string_val(node);
25376 return rb_node_integer_literal_val(node);
25378 return rb_node_float_literal_val(node);
25379 case NODE_RATIONAL:
25380 return rb_node_rational_literal_val(node);
25381 case NODE_IMAGINARY:
25382 return rb_node_imaginary_literal_val(node);
25384 return rb_node_sym_string_val(node);
25386 return rb_node_regx_string_val(node);
25388 return rb_node_line_lineno_val(node);
25389 case NODE_ENCODING:
25390 return rb_node_encoding_val(node);
25392 return rb_node_file_path_val(node);
25394 rb_bug(
"unexpected node: %s", ruby_node_name(nd_type(node)));
25403 p->warn_duplicate_keys_table = st_init_table_with_size(&literal_type, RNODE_LIST(hash)->as.nd_alen / 2);
25404 while (hash && RNODE_LIST(hash)->nd_next) {
25405 NODE *head = RNODE_LIST(hash)->nd_head;
25406 NODE *value = RNODE_LIST(hash)->nd_next;
25407 NODE *next = RNODE_LIST(value)->nd_next;
25416 if (nd_type_st_key_enable_p(head)) {
25417 key = (st_data_t)head;
25419 if (st_delete(p->warn_duplicate_keys_table, &key, &data)) {
25420 rb_warn2L(nd_line((NODE *)data),
25421 "key %+"PRIsWARN
" is duplicated and overwritten on line %d",
25422 nd_value(p, head), WARN_I(nd_line(head)));
25424 st_insert(p->warn_duplicate_keys_table, (st_data_t)key, (st_data_t)hash);
25428 st_free_table(p->warn_duplicate_keys_table);
25429 p->warn_duplicate_keys_table = NULL;
25433new_hash(
struct parser_params *p, NODE *hash,
const YYLTYPE *loc)
25435 if (hash) warn_duplicate_keys(p, hash);
25436 return NEW_HASH(hash, loc);
25440error_duplicate_pattern_variable(
struct parser_params *p,
ID id,
const YYLTYPE *loc)
25442 if (is_private_local_id(p,
id)) {
25445 if (st_is_member(p->pvtbl,
id)) {
25446 yyerror1(loc,
"duplicated variable name");
25449 st_insert(p->pvtbl, (st_data_t)
id, 0);
25457 p->pktbl = st_init_numtable();
25459 else if (st_is_member(p->pktbl, key)) {
25460 yyerror1(loc,
"duplicated key name");
25463 st_insert(p->pktbl, (st_data_t)key, 0);
25467new_unique_key_hash(
struct parser_params *p, NODE *hash,
const YYLTYPE *loc)
25469 return NEW_HASH(hash, loc);
25478 ID vid = get_nd_vid(p, lhs);
25479 YYLTYPE lhs_loc = lhs->nd_loc;
25481 set_nd_value(p, lhs, rhs);
25482 nd_set_loc(lhs, loc);
25483 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
25485 else if (op == tANDOP) {
25486 set_nd_value(p, lhs, rhs);
25487 nd_set_loc(lhs, loc);
25488 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
25492 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
25493 set_nd_value(p, asgn, rhs);
25494 nd_set_loc(asgn, loc);
25498 asgn = NEW_ERROR(loc);
25505 NODE *args,
ID op, NODE *rhs,
const YYLTYPE *args_loc,
const YYLTYPE *loc,
25506 const YYLTYPE *call_operator_loc,
const YYLTYPE *opening_loc,
const YYLTYPE *closing_loc,
const YYLTYPE *binary_operator_loc)
25510 aryset_check(p, args);
25511 args = make_list(args, args_loc);
25512 asgn = NEW_OP_ASGN1(ary, op, args, rhs, loc, call_operator_loc, opening_loc, closing_loc, binary_operator_loc);
25519 ID atype,
ID attr,
ID op, NODE *rhs,
const YYLTYPE *loc,
25520 const YYLTYPE *call_operator_loc,
const YYLTYPE *message_loc,
const YYLTYPE *binary_operator_loc)
25524 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc, call_operator_loc, message_loc, binary_operator_loc);
25535 asgn = NEW_OP_CDECL(lhs, op, rhs, ctxt.shareable_constant_value, loc);
25538 asgn = NEW_ERROR(loc);
25545const_decl(
struct parser_params *p, NODE *path,
const YYLTYPE *loc)
25547 if (p->ctxt.in_def) {
25549 yyerror1(loc,
"dynamic constant assignment");
25551 set_value(assign_error(p,
"dynamic constant assignment", p->s_lvalue));
25554 return NEW_CDECL(0, 0, (path), p->ctxt.shareable_constant_value, loc);
25561 a = dispatch2(assign_error, ERR_MESG(), a);
25568new_bodystmt(
struct parser_params *p, NODE *head, NODE *rescue, NODE *rescue_else, NODE *ensure,
const YYLTYPE *loc)
25570 NODE *result = head;
25572 NODE *tmp = rescue_else ? rescue_else : rescue;
25573 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
25575 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
25576 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
25579 result = NEW_ENSURE(result, ensure, loc);
25581 fixpos(result, head);
25590 if (!local->used)
return;
25591 cnt = local->used->pos;
25592 if (cnt != local->vars->pos) {
25593 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
25596 ID *v = local->vars->tbl;
25597 ID *u = local->used->tbl;
25598 for (
int i = 0; i < cnt; ++i) {
25599 if (!v[i] || (u[i] & LVAR_USED))
continue;
25600 if (is_private_local_id(p, v[i]))
continue;
25601 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
25610 int inherits_dvars = toplevel_scope && compile_for_eval;
25614 local->prev = p->lvtbl;
25615 local->args = vtable_alloc(0);
25616 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
25618 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
25619 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
25621 local->numparam.outer = 0;
25622 local->numparam.inner = 0;
25623 local->numparam.current = 0;
25625 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
25627# if WARN_PAST_SCOPE
25638 while (!DVARS_TERMINAL_P(table)) {
25639 struct vtable *cur_table = table;
25640 table = cur_table->prev;
25641 vtable_free(cur_table);
25648 vtable_chain_free(p, local->used);
25650# if WARN_PAST_SCOPE
25651 vtable_chain_free(p, local->past);
25654 vtable_chain_free(p, local->args);
25655 vtable_chain_free(p, local->vars);
25657 ruby_sized_xfree(local,
sizeof(
struct local_vars));
25664 if (p->lvtbl->used) {
25665 warn_unused_var(p, p->lvtbl);
25668 local_free(p, p->lvtbl);
25675static rb_ast_id_table_t *
25678 int cnt_args = vtable_size(p->lvtbl->args);
25679 int cnt_vars = vtable_size(p->lvtbl->vars);
25680 int cnt = cnt_args + cnt_vars;
25682 rb_ast_id_table_t *tbl;
25684 if (cnt <= 0)
return 0;
25685 tbl = rb_ast_new_local_table(p->ast, cnt);
25686 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
25688 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
25689 ID id = p->lvtbl->vars->tbl[i];
25690 if (!vtable_included(p->lvtbl->args,
id)) {
25691 tbl->ids[j++] = id;
25695 tbl = rb_ast_resize_latest_local_table(p->ast, j);
25704 if (!NUMPARAM_ID_P(
id))
return;
25705 compile_error(p,
"_%d is reserved for numbered parameter",
25706 NUMPARAM_ID_TO_IDX(
id));
25712 numparam_name(p,
id);
25713 vtable_add(p->lvtbl->args,
id);
25719 numparam_name(p,
id);
25720 vtable_add(p->lvtbl->vars,
id);
25721 if (p->lvtbl->used) {
25722 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
25730 return rb_local_defined(
id, iseq);
25737 struct vtable *vars, *args, *used;
25739 vars = p->lvtbl->vars;
25740 args = p->lvtbl->args;
25741 used = p->lvtbl->used;
25743 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
25746 if (used) used = used->prev;
25749 if (vars && vars->prev == DVARS_INHERIT) {
25750 return rb_parser_local_defined(p,
id, p->parent_iseq);
25752 else if (vtable_included(args,
id)) {
25756 int i = vtable_included(vars,
id);
25757 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
25765 return local_id_ref(p,
id, NULL);
25771 if (local_id(p, idFWD_ALL))
return TRUE;
25772 compile_error(p,
"unexpected ...");
25779 arg_var(p, idFWD_REST);
25780#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
25781 arg_var(p, idFWD_KWREST);
25783 arg_var(p, idFWD_BLOCK);
25784 arg_var(p, idFWD_ALL);
25790 bool conflict =
false;
25792 struct vtable *vars, *args;
25794 vars = p->lvtbl->vars;
25795 args = p->lvtbl->args;
25797 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
25798 conflict |= (vtable_included(args, arg) && !(all && vtable_included(args, all)));
25803 bool found =
false;
25804 if (vars && vars->prev == DVARS_INHERIT && !found) {
25805 found = (rb_parser_local_defined(p, arg, p->parent_iseq) &&
25806 !(all && rb_parser_local_defined(p, all, p->parent_iseq)));
25809 found = (vtable_included(args, arg) &&
25810 !(all && vtable_included(args, all)));
25814 compile_error(p,
"no anonymous %s parameter", var);
25816 else if (conflict) {
25817 compile_error(p,
"anonymous %s parameter is also used within block", var);
25822new_args_forward_call(
struct parser_params *p, NODE *leading,
const YYLTYPE *loc,
const YYLTYPE *argsloc)
25824 NODE *rest = NEW_LVAR(idFWD_REST, loc);
25825#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
25826 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
25828 rb_node_block_pass_t *block = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, loc), argsloc, &NULL_LOC);
25829 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc, &NULL_LOC);
25830 block->forwarding = TRUE;
25831#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
25832 args = arg_append(p, args, new_hash(p, kwrest, loc), argsloc);
25834 return arg_blk_pass(args, block);
25841 NODE *inner = local->numparam.inner;
25842 if (!local->numparam.outer) {
25843 local->numparam.outer = local->numparam.current;
25845 local->numparam.inner = 0;
25846 local->numparam.current = 0;
25857 local->numparam.inner = prev_inner;
25859 else if (local->numparam.current) {
25861 local->numparam.inner = local->numparam.current;
25863 if (p->max_numparam > NO_PARAM) {
25865 local->numparam.current = local->numparam.outer;
25866 local->numparam.outer = 0;
25870 local->numparam.current = 0;
25875static const struct vtable *
25878 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
25879 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
25880 if (p->lvtbl->used) {
25881 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
25883 return p->lvtbl->args;
25889 struct vtable *tmp = *vtblp;
25890 *vtblp = tmp->prev;
25891# if WARN_PAST_SCOPE
25892 if (p->past_scope_enabled) {
25893 tmp->prev = p->lvtbl->past;
25894 p->lvtbl->past = tmp;
25906 if ((tmp = p->lvtbl->used) != 0) {
25907 warn_unused_var(p, p->lvtbl);
25908 p->lvtbl->used = p->lvtbl->used->prev;
25911 dyna_pop_vtable(p, &p->lvtbl->args);
25912 dyna_pop_vtable(p, &p->lvtbl->vars);
25918 while (p->lvtbl->args != lvargs) {
25920 if (!p->lvtbl->args) {
25922 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
25932 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
25939 struct vtable *vars, *args, *used;
25942 args = p->lvtbl->args;
25943 vars = p->lvtbl->vars;
25944 used = p->lvtbl->used;
25946 while (!DVARS_TERMINAL_P(vars)) {
25947 if (vtable_included(args,
id)) {
25950 if ((i = vtable_included(vars,
id)) != 0) {
25951 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
25956 if (!vidrefp) used = 0;
25957 if (used) used = used->prev;
25960 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
25961 return rb_dvar_defined(
id, p->parent_iseq);
25971 return dvar_defined_ref(p,
id, NULL);
25977 return (vtable_included(p->lvtbl->args,
id) ||
25978 vtable_included(p->lvtbl->vars,
id));
25982reg_fragment_enc_error(
struct parser_params* p, rb_parser_string_t *str,
int c)
25985 "regexp encoding option '%c' differs from source encoding '%s'",
25986 c, rb_enc_name(rb_parser_str_get_encoding(str)));
25990static rb_encoding *
25993 int idx = rb_enc_find_index(name);
25995 rb_bug(
"unknown encoding name: %s", name);
25998 return rb_enc_from_index(idx);
26001static rb_encoding *
26007 case ENC_ASCII8BIT:
26008 enc = rb_ascii8bit_encoding();
26011 enc = find_enc(p,
"EUC-JP");
26013 case ENC_Windows_31J:
26014 enc = find_enc(p,
"Windows-31J");
26017 enc = rb_utf8_encoding();
26028rb_reg_fragment_setenc(
struct parser_params* p, rb_parser_string_t *str,
int options)
26030 int c = RE_OPTION_ENCODING_IDX(options);
26036 char_to_option_kcode(c, &opt, &idx);
26037 enc = kcode_to_enc(p, idx);
26038 if (enc != rb_parser_str_get_encoding(str) &&
26039 !rb_parser_is_ascii_string(p, str)) {
26042 rb_parser_string_set_encoding(str, enc);
26044 else if (RE_OPTION_ENCODING_NONE(options)) {
26045 if (!PARSER_ENCODING_IS_ASCII8BIT(p, str) &&
26046 !rb_parser_is_ascii_string(p, str)) {
26050 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
26052 else if (rb_is_usascii_enc(p->enc)) {
26053 if (!rb_parser_is_ascii_string(p, str)) {
26055 rb_parser_enc_associate(p, str, rb_usascii_encoding());
26058 rb_parser_enc_associate(p, str, rb_ascii8bit_encoding());
26069reg_fragment_setenc(
struct parser_params* p, rb_parser_string_t *str,
int options)
26071 int c = rb_reg_fragment_setenc(p, str, options);
26072 if (c) reg_fragment_enc_error(p, str, c);
26077reg_fragment_check(
struct parser_params* p, rb_parser_string_t *str,
int options)
26080 reg_fragment_setenc(p, str, options);
26082 str2 = rb_str_new_parser_string(str);
26083 err = rb_reg_check_preprocess(str2);
26085 err = rb_obj_as_string(err);
26086 compile_error(p,
"%"PRIsVALUE, err);
26093#ifndef UNIVERSAL_PARSER
26099 rb_parser_assignable_func assignable;
26103reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
26104 int back_num,
int *back_refs, OnigRegex regex,
void *arg0)
26108 rb_encoding *enc = arg->enc;
26109 long len = name_end - name;
26110 const char *s = (
const char *)name;
26112 return rb_reg_named_capture_assign_iter_impl(p, s,
len, enc, &arg->succ_block, arg->loc, arg->assignable);
26116reg_named_capture_assign(
struct parser_params* p,
VALUE regexp,
const YYLTYPE *loc, rb_parser_assignable_func assignable)
26121 arg.enc = rb_enc_get(regexp);
26122 arg.succ_block = 0;
26124 arg.assignable = assignable;
26125 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
26127 if (!arg.succ_block)
return 0;
26128 return RNODE_BLOCK(arg.succ_block)->nd_next;
26134rb_parser_assignable(
struct parser_params *p,
ID id, NODE *val,
const YYLTYPE *loc)
26136 return assignable(p,
id, val, loc);
26140rb_reg_named_capture_assign_iter_impl(
struct parser_params *p,
const char *s,
long len,
26141 rb_encoding *enc, NODE **succ_block,
const rb_code_location_t *loc, rb_parser_assignable_func assignable)
26146 if (!
len)
return ST_CONTINUE;
26147 if (!VALID_SYMNAME_P(s,
len, enc, ID_LOCAL))
26148 return ST_CONTINUE;
26150 var = intern_cstr(s,
len, enc);
26151 if (
len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)
len)) {
26152 if (!lvar_defined(p, var))
return ST_CONTINUE;
26154 node = node_assign(p, assignable(p, var, 0, loc), NEW_SYM(rb_id2str(var), loc), NO_LEX_CTXT, loc);
26155 succ = *succ_block;
26156 if (!succ) succ = NEW_ERROR(loc);
26157 succ = block_append(p, succ, node);
26158 *succ_block = succ;
26159 return ST_CONTINUE;
26164parser_reg_compile(
struct parser_params* p, rb_parser_string_t *str,
int options)
26167 reg_fragment_setenc(p, str, options);
26168 str2 = rb_str_new_parser_string(str);
26169 return rb_parser_reg_compile(p, str2, options);
26176 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
26181reg_compile(
struct parser_params* p, rb_parser_string_t *str,
int options)
26186 err = rb_errinfo();
26187 re = parser_reg_compile(p, str, options);
26189 VALUE m = rb_attr_get(rb_errinfo(), idMesg);
26190 rb_set_errinfo(err);
26191 compile_error(p,
"%"PRIsVALUE, m);
26199rb_ruby_parser_set_options(
struct parser_params *p,
int print,
int loop,
int chomp,
int split)
26201 p->do_print = print;
26203 p->do_chomp = chomp;
26204 p->do_split = split;
26210 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
26211 const YYLTYPE *
const LOC = &default_location;
26214 NODE *print = (NODE *)NEW_FCALL(rb_intern(
"print"),
26215 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
26217 node = block_append(p, node, print);
26221 NODE *irs = NEW_LIST(NEW_GVAR(rb_intern(
"$/"), LOC), LOC);
26224 ID ifs = rb_intern(
"$;");
26225 ID fields = rb_intern(
"$F");
26226 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
26227 NODE *split = NEW_GASGN(fields,
26228 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
26229 rb_intern(
"split"), args, LOC),
26231 node = block_append(p, split, node);
26235 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
26236 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
26239 node = NEW_WHILE((NODE *)NEW_FCALL(idGets, irs, LOC), node, 1, LOC, &NULL_LOC, &NULL_LOC);
26256 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
26264 p->command_start = TRUE;
26265 p->ruby_sourcefile_string =
Qnil;
26266 p->lex.lpar_beg = -1;
26267 string_buffer_init(p);
26269 p->delayed.token = NULL;
26270 p->frozen_string_literal = -1;
26272 p->error_buffer =
Qfalse;
26273 p->end_expect_token_locations = NULL;
26278 p->parsing_thread =
Qnil;
26280 p->s_lvalue =
Qnil;
26281 p->s_value_stack = rb_ary_new();
26283 p->debug_buffer =
Qnil;
26284 p->debug_output = rb_ractor_stdout();
26285 p->enc = rb_utf8_encoding();
26290#define rb_ruby_parser_mark ripper_parser_mark
26291#define rb_ruby_parser_free ripper_parser_free
26292#define rb_ruby_parser_memsize ripper_parser_memsize
26296rb_ruby_parser_mark(
void *ptr)
26300 rb_gc_mark(p->ruby_sourcefile_string);
26302 rb_gc_mark(p->error_buffer);
26304 rb_gc_mark(p->value);
26305 rb_gc_mark(p->result);
26306 rb_gc_mark(p->parsing_thread);
26307 rb_gc_mark(p->s_value);
26308 rb_gc_mark(p->s_lvalue);
26309 rb_gc_mark(p->s_value_stack);
26311 rb_gc_mark(p->debug_buffer);
26312 rb_gc_mark(p->debug_output);
26316rb_ruby_parser_free(
void *ptr)
26322 rb_ast_free(p->ast);
26325 if (p->warn_duplicate_keys_table) {
26326 st_free_table(p->warn_duplicate_keys_table);
26331 rb_parser_ary_free(p, p->tokens);
26336 ruby_sized_xfree(p->tokenbuf, p->toksiz);
26339 for (local = p->lvtbl; local; local = prev) {
26340 prev = local->prev;
26341 local_free(p, local);
26346 while ((ptinfo = p->token_info) != 0) {
26347 p->token_info = ptinfo->next;
26351 string_buffer_free(p);
26354 st_free_table(p->pvtbl);
26357 if (CASE_LABELS_ENABLED_P(p->case_labels)) {
26358 st_free_table(p->case_labels);
26361 xfree(p->lex.strterm);
26362 p->lex.strterm = 0;
26368rb_ruby_parser_memsize(
const void *ptr)
26372 size_t size =
sizeof(*p);
26375 for (local = p->lvtbl; local; local = local->prev) {
26376 size +=
sizeof(*local);
26377 if (local->vars) size += local->vars->capa *
sizeof(
ID);
26383#undef rb_reserved_word
26386rb_reserved_word(
const char *str,
unsigned int len)
26388 return reserved_word(str,
len);
26391#ifdef UNIVERSAL_PARSER
26393rb_ruby_parser_allocate(
const rb_parser_config_t *config)
26396 rb_parser_t *p = (rb_parser_t *)config->calloc(1,
sizeof(rb_parser_t));
26397 p->config = config;
26402rb_ruby_parser_new(
const rb_parser_config_t *config)
26405 rb_parser_t *p = rb_ruby_parser_allocate(config);
26406 parser_initialize(p);
26411rb_ruby_parser_allocate(
void)
26414 rb_parser_t *p = (rb_parser_t *)ruby_xcalloc(1,
sizeof(rb_parser_t));
26419rb_ruby_parser_new(
void)
26422 rb_parser_t *p = rb_ruby_parser_allocate();
26423 parser_initialize(p);
26429rb_ruby_parser_set_context(rb_parser_t *p,
const struct rb_iseq_struct *base,
int main)
26432 p->parent_iseq = base;
26437rb_ruby_parser_set_script_lines(rb_parser_t *p)
26439 p->debug_lines = rb_parser_ary_new_capa_for_script_line(p, 10);
26443rb_ruby_parser_error_tolerant(rb_parser_t *p)
26445 p->error_tolerant = 1;
26449rb_ruby_parser_keep_tokens(rb_parser_t *p)
26451 p->keep_tokens = 1;
26452 p->tokens = rb_parser_ary_new_capa_for_ast_token(p, 10);
26456rb_ruby_parser_encoding(rb_parser_t *p)
26462rb_ruby_parser_end_seen_p(rb_parser_t *p)
26464 return p->ruby__end__seen;
26468rb_ruby_parser_set_yydebug(rb_parser_t *p,
int flag)
26477rb_ruby_parser_get_yydebug(rb_parser_t *p)
26483rb_ruby_parser_set_value(rb_parser_t *p,
VALUE value)
26489rb_ruby_parser_error_p(rb_parser_t *p)
26495rb_ruby_parser_debug_output(rb_parser_t *p)
26497 return p->debug_output;
26501rb_ruby_parser_set_debug_output(rb_parser_t *p,
VALUE output)
26503 p->debug_output = output;
26507rb_ruby_parser_parsing_thread(rb_parser_t *p)
26509 return p->parsing_thread;
26513rb_ruby_parser_set_parsing_thread(rb_parser_t *p,
VALUE parsing_thread)
26515 p->parsing_thread = parsing_thread;
26519rb_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)
26521 p->lex.gets = gets;
26522 p->lex.input = input;
26524 p->ruby_sourcefile_string = sourcefile_string;
26525 p->ruby_sourcefile = sourcefile;
26526 p->ruby_sourceline = sourceline;
26530rb_ruby_parser_result(rb_parser_t *p)
26536rb_ruby_parser_enc(rb_parser_t *p)
26542rb_ruby_parser_ruby_sourcefile_string(rb_parser_t *p)
26544 return p->ruby_sourcefile_string;
26548rb_ruby_parser_ruby_sourceline(rb_parser_t *p)
26550 return p->ruby_sourceline;
26554rb_ruby_parser_lex_state(rb_parser_t *p)
26556 return p->lex.state;
26560rb_ruby_ripper_parse0(rb_parser_t *p)
26563 p->ast = rb_ast_new();
26564 ripper_yyparse((
void*)p);
26565 rb_ast_free(p->ast);
26568 p->eval_tree_begin = 0;
26572rb_ruby_ripper_dedent_string(rb_parser_t *p, rb_parser_string_t *
string,
int width)
26574 return dedent_string(p,
string, width);
26578rb_ruby_ripper_initialized_p(rb_parser_t *p)
26580 return p->lex.input != 0;
26584rb_ruby_ripper_parser_initialize(rb_parser_t *p)
26586 parser_initialize(p);
26590rb_ruby_ripper_column(rb_parser_t *p)
26592 return p->lex.ptok - p->lex.pbeg;
26596rb_ruby_ripper_token_len(rb_parser_t *p)
26598 return p->lex.pcur - p->lex.ptok;
26601rb_parser_string_t *
26602rb_ruby_ripper_lex_lastline(rb_parser_t *p)
26604 return p->lex.lastline;
26608rb_ruby_ripper_lex_state_name(
struct parser_params *p,
int state)
26610 return rb_parser_lex_state_name(p, (
enum lex_state_e)state);
26613#ifdef UNIVERSAL_PARSER
26615rb_ripper_parser_params_allocate(
const rb_parser_config_t *config)
26617 rb_parser_t *p = (rb_parser_t *)config->calloc(1,
sizeof(rb_parser_t));
26618 p->config = config;
26624rb_ruby_ripper_parser_allocate(
void)
26632rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
26635 VALUE mesg = p->debug_buffer;
26639 rb_str_vcatf(mesg, fmt, ap);
26641 if (char_at_end(p, mesg, 0) ==
'\n') {
26642 rb_io_write(p->debug_output, mesg);
26643 p->debug_buffer =
Qnil;
26648parser_compile_error(
struct parser_params *p,
const rb_code_location_t *loc,
const char *fmt, ...)
26651 int lineno, column;
26654 lineno = loc->end_pos.lineno;
26655 column = loc->end_pos.column;
26658 lineno = p->ruby_sourceline;
26662 rb_io_flush(p->debug_output);
26666 rb_syntax_error_append(p->error_buffer,
26667 p->ruby_sourcefile_string,
26674count_char(
const char *str,
int c)
26677 while (str[n] == c) ++n;
26688rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
26690 if (*yystr ==
'"') {
26691 size_t yyn = 0, bquote = 0;
26692 const char *yyp = yystr;
26698 bquote = count_char(yyp+1,
'\'') + 1;
26699 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
26705 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
26706 if (yyres) memcpy(yyres + yyn, yyp, bquote);
26712 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
26713 if (yyres) memcpy(yyres + yyn, yyp, 3);
26718 goto do_not_strip_quotes;
26722 goto do_not_strip_quotes;
26725 if (*++yyp !=
'\\')
26726 goto do_not_strip_quotes;
26741 do_not_strip_quotes: ;
26744 if (!yyres)
return strlen(yystr);
26746 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
26751#define validate(x) (void)(x)
26780 return rb_funcall(p->value, mid, 3, a, b, c);
26790 return rb_funcall(p->value, mid, 4, a, b, c, d);
26801 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
26814 return rb_funcall(p->value, mid, 7, a, b, c, d, e, f, g);
#define ENC_CODERANGE_7BIT
Old name of RUBY_ENC_CODERANGE_7BIT.
#define REALLOC_N
Old name of RB_REALLOC_N.
#define ISSPACE
Old name of rb_isspace.
#define ALLOC
Old name of RB_ALLOC.
#define xfree
Old name of ruby_xfree.
#define 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 ISDIGIT
Old name of rb_isdigit.
#define ASSUME
Old name of RBIMPL_ASSUME.
#define ALLOC_N
Old name of RB_ALLOC_N.
#define MBCLEN_CHARFOUND_LEN(ret)
Old name of ONIGENC_MBCLEN_CHARFOUND_LEN.
#define STRCASECMP
Old name of st_locale_insensitive_strcasecmp.
#define ISALPHA
Old name of rb_isalpha.
#define STRNCASECMP
Old name of st_locale_insensitive_strncasecmp.
#define ISASCII
Old name of rb_isascii.
#define 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 ISPRINT
Old name of rb_isprint.
#define xcalloc
Old name of ruby_xcalloc.
#define ISXDIGIT
Old name of rb_isxdigit.
#define ISCNTRL
Old name of rb_iscntrl.
#define ISALNUM
Old name of rb_isalnum.
#define ruby_verbose
This variable controls whether the interpreter is in debug mode.
VALUE rb_eRuntimeError
RuntimeError exception.
VALUE rb_eSyntaxError
SyntaxError exception.
VALUE rb_class_new_instance(int argc, const VALUE *argv, VALUE klass)
Allocates, then initialises an instance of the given class.
long rb_str_coderange_scan_restartable(const char *str, const char *end, rb_encoding *enc, int *cr)
Scans the passed string until it finds something odd.
VALUE rb_funcall(VALUE recv, ID mid, int n,...)
Calls a method.
#define rb_str_new(str, len)
Allocates an instance of rb_cString.
#define rb_usascii_str_new(str, len)
Identical to rb_str_new, except it generates a string of "US ASCII" encoding.
VALUE rb_str_cat(VALUE dst, const char *src, long srclen)
Destructively appends the passed contents to the string.
#define rb_strlen_lit(str)
Length of a string literal.
#define rb_str_cat_cstr(buf, str)
Identical to rb_str_cat(), except it assumes the passed pointer is a pointer to a C string.
#define rb_str_new_cstr(str)
Identical to rb_str_new, except it assumes the passed pointer is a pointer to a C string.
ID rb_sym2id(VALUE obj)
Converts an instance of rb_cSymbol into an ID.
int capa
Designed capacity of the buffer.
int off
Offset inside of ptr.
int len
Length of the buffer.
#define strtod(s, e)
Just another name of ruby_strtod.
#define strdup(s)
Just another name of ruby_strdup.
#define rb_long2int
Just another name of rb_long2int_inline.
#define MEMCPY(p1, p2, type, n)
Handy macro to call memcpy.
#define ALLOCA_N(type, n)
#define MEMZERO(p, type, n)
Handy macro to erase a region of memory.
#define RB_GC_GUARD(v)
Prevents premature destruction of local objects.
#define MEMMOVE(p1, p2, type, n)
Handy macro to call memmove.
VALUE type(ANYARGS)
ANYARGS-ed function type.
#define RBIMPL_ATTR_NONNULL(list)
Wraps (or simulates) __attribute__((nonnull))
#define RREGEXP_PTR(obj)
Convenient accessor macro.
#define StringValueCStr(v)
Identical to StringValuePtr, except it additionally checks for the contents for viability as a C stri...
#define errno
Ractor-aware version of errno.
#define RTEST
This is an old name of RB_TEST.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
uintptr_t VALUE
Type that represents a Ruby object.
#define RBIMPL_WARNING_IGNORED(flag)
Suppresses a warning.
#define RBIMPL_WARNING_PUSH()
Pushes compiler warning state.
#define RBIMPL_WARNING_POP()
Pops compiler warning state.