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
77#define YYLTYPE rb_code_location_t
78#define YYLTYPE_IS_DECLARED 1
82# include RUBY_EXTCONF_H
85#include "ruby/internal/config.h"
89#ifdef UNIVERSAL_PARSER
91#include "internal/ruby_parser.h"
92#include "parser_node.h"
93#include "universal_parser.c"
98#define STATIC_ID2SYM p->config->static_id2sym
99#define rb_str_coderange_scan_restartable p->config->str_coderange_scan_restartable
105#include "internal/compile.h"
106#include "internal/compilers.h"
107#include "internal/complex.h"
108#include "internal/encoding.h"
109#include "internal/error.h"
110#include "internal/hash.h"
111#include "internal/imemo.h"
112#include "internal/io.h"
113#include "internal/numeric.h"
114#include "internal/parse.h"
115#include "internal/rational.h"
116#include "internal/re.h"
117#include "internal/ruby_parser.h"
118#include "internal/symbol.h"
119#include "internal/thread.h"
120#include "internal/variable.h"
122#include "parser_node.h"
126#include "ruby/regex.h"
135bignum_negate(
VALUE b)
143 RATIONAL_SET_NUM(r, n);
147rational_get_num(
VALUE obj)
149 return RRATIONAL(obj)->num;
155 RCOMPLEX_SET_REAL(cmp, r);
159rcomplex_get_real(
VALUE obj)
161 return RCOMPLEX(obj)->real;
167 RCOMPLEX_SET_IMAG(cmp, i);
171rcomplex_get_imag(
VALUE obj)
173 return RCOMPLEX(obj)->imag;
177hash_literal_key_p(
VALUE k)
179 switch (OBJ_BUILTIN_TYPE(k)) {
190 if (val == lit)
return 0;
191 if (!hash_literal_key_p(val) || !hash_literal_key_p(lit))
return -1;
192 return rb_iseq_cdhash_cmp(val, lit);
198 if (!hash_literal_key_p(a))
return (st_index_t)a;
199 return rb_iseq_cdhash_hash(a);
203syntax_error_new(
void)
211#define compile_callback rb_suppress_tracing
214VALUE rb_node_case_when_optimizable_literal(
const NODE *
const node);
220 return '\0' <= c && c <=
'\x7f';
224#define ISASCII parse_isascii
229 return c ==
' ' || (
'\t' <= c && c <=
'\r');
233#define ISSPACE parse_isspace
238 return (
'\0' <= c && c <
' ') || c ==
'\x7f';
242#define ISCNTRL(c) parse_iscntrl(c)
247 return 'A' <= c && c <=
'Z';
253 return 'a' <= c && c <=
'z';
259 return parse_isupper(c) || parse_islower(c);
263#define ISALPHA(c) parse_isalpha(c)
268 return '0' <= c && c <=
'9';
272#define ISDIGIT(c) parse_isdigit(c)
277 return parse_isalpha(c) || parse_isdigit(c);
281#define ISALNUM(c) parse_isalnum(c)
286 return parse_isdigit(c) || (
'A' <= c && c <=
'F') || (
'a' <= c && c <=
'f');
290#define ISXDIGIT(c) parse_isxdigit(c)
292#include "parser_st.h"
295#define STRCASECMP rb_parser_st_locale_insensitive_strcasecmp
298#define STRNCASECMP rb_parser_st_locale_insensitive_strncasecmp
301#include "ripper_init.h"
308 shareable_everything,
319 unsigned int in_defined: 1;
320 unsigned int in_kwarg: 1;
321 unsigned int in_argdef: 1;
322 unsigned int in_def: 1;
323 unsigned int in_class: 1;
324 BITFIELD(
enum shareability, shareable_constant_value, 2);
325 BITFIELD(
enum rescue_context, in_rescue, 2);
331#if defined(__GNUC__) && !defined(__clang__)
343#define NO_LEX_CTXT (struct lex_context){0}
345#define AREF(ary, i) RARRAY_AREF(ary, i)
347#ifndef WARN_PAST_SCOPE
348# define WARN_PAST_SCOPE 0
353#define yydebug (p->debug)
355#define YYMALLOC(size) rb_parser_malloc(p, (size))
356#define YYREALLOC(ptr, size) rb_parser_realloc(p, (ptr), (size))
357#define YYCALLOC(nelem, size) rb_parser_calloc(p, (nelem), (size))
358#define YYFREE(ptr) rb_parser_free(p, (ptr))
359#define YYFPRINTF(out, ...) rb_parser_printf(p, __VA_ARGS__)
360#define YY_LOCATION_PRINT(File, loc, p) \
361 rb_parser_printf(p, "%d.%d-%d.%d", \
362 (loc).beg_pos.lineno, (loc).beg_pos.column,\
363 (loc).end_pos.lineno, (loc).end_pos.column)
364#define YYLLOC_DEFAULT(Current, Rhs, N) \
368 (Current).beg_pos = YYRHSLOC(Rhs, 1).beg_pos; \
369 (Current).end_pos = YYRHSLOC(Rhs, N).end_pos; \
373 (Current).beg_pos = YYRHSLOC(Rhs, 0).end_pos; \
374 (Current).end_pos = YYRHSLOC(Rhs, 0).end_pos; \
378 (((Msgid)[0] == 'm') && (strcmp((Msgid), "memory exhausted") == 0) ? \
379 "nesting too deep" : (Msgid))
381#define RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(Current) \
382 rb_parser_set_location_from_strterm_heredoc(p, &p->lex.strterm->u.heredoc, &(Current))
383#define RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(Current) \
384 rb_parser_set_location_of_delayed_token(p, &(Current))
385#define RUBY_SET_YYLLOC_OF_HEREDOC_END(Current) \
386 rb_parser_set_location_of_heredoc_end(p, &(Current))
387#define RUBY_SET_YYLLOC_OF_DUMMY_END(Current) \
388 rb_parser_set_location_of_dummy_end(p, &(Current))
389#define RUBY_SET_YYLLOC_OF_NONE(Current) \
390 rb_parser_set_location_of_none(p, &(Current))
391#define RUBY_SET_YYLLOC(Current) \
392 rb_parser_set_location(p, &(Current))
393#define RUBY_INIT_YYLLOC() \
395 {p->ruby_sourceline, (int)(p->lex.ptok - p->lex.pbeg)}, \
396 {p->ruby_sourceline, (int)(p->lex.pcur - p->lex.pbeg)}, \
399#define IS_lex_state_for(x, ls) ((x) & (ls))
400#define IS_lex_state_all_for(x, ls) (((x) & (ls)) == (ls))
401#define IS_lex_state(ls) IS_lex_state_for(p->lex.state, (ls))
402#define IS_lex_state_all(ls) IS_lex_state_all_for(p->lex.state, (ls))
404# define SET_LEX_STATE(ls) \
405 parser_set_lex_state(p, ls, __LINE__)
406static inline enum lex_state_e parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line);
408typedef VALUE stack_type;
412# define SHOW_BITSTACK(stack, name) (p->debug ? rb_parser_show_bitstack(p, stack, name, __LINE__) : (void)0)
413# define BITSTACK_PUSH(stack, n) (((p->stack) = ((p->stack)<<1)|((n)&1)), SHOW_BITSTACK(p->stack, #stack"(push)"))
414# define BITSTACK_POP(stack) (((p->stack) = (p->stack) >> 1), SHOW_BITSTACK(p->stack, #stack"(pop)"))
415# define BITSTACK_SET_P(stack) (SHOW_BITSTACK(p->stack, #stack), (p->stack)&1)
416# define BITSTACK_SET(stack, n) ((p->stack)=(n), SHOW_BITSTACK(p->stack, #stack"(set)"))
420#define COND_PUSH(n) BITSTACK_PUSH(cond_stack, (n))
421#define COND_POP() BITSTACK_POP(cond_stack)
422#define COND_P() BITSTACK_SET_P(cond_stack)
423#define COND_SET(n) BITSTACK_SET(cond_stack, (n))
427#define CMDARG_PUSH(n) BITSTACK_PUSH(cmdarg_stack, (n))
428#define CMDARG_POP() BITSTACK_POP(cmdarg_stack)
429#define CMDARG_P() BITSTACK_SET_P(cmdarg_stack)
430#define CMDARG_SET(n) BITSTACK_SET(cmdarg_stack, (n))
449 NODE *outer, *inner, *current;
460#define DVARS_INHERIT ((void*)1)
461#define DVARS_TOPSCOPE NULL
462#define DVARS_TERMINAL_P(tbl) ((tbl) == DVARS_INHERIT || (tbl) == DVARS_TOPSCOPE)
501 enum lex_state_e state;
509 stack_type cond_stack;
510 stack_type cmdarg_stack;
515 int heredoc_line_indent;
522 const char *ruby_sourcefile;
523 VALUE ruby_sourcefile_string;
549#ifdef UNIVERSAL_PARSER
550 rb_parser_config_t *config;
553 signed int frozen_string_literal:2;
555 unsigned int command_start:1;
556 unsigned int eofp: 1;
557 unsigned int ruby__end__seen: 1;
558 unsigned int debug: 1;
559 unsigned int has_shebang: 1;
560 unsigned int token_seen: 1;
561 unsigned int token_info_enabled: 1;
563 unsigned int past_scope_enabled: 1;
565 unsigned int error_p: 1;
566 unsigned int cr_seen: 1;
571 unsigned int do_print: 1;
572 unsigned int do_loop: 1;
573 unsigned int do_chomp: 1;
574 unsigned int do_split: 1;
575 unsigned int error_tolerant: 1;
576 unsigned int keep_tokens: 1;
578 NODE *eval_tree_begin;
584 VALUE end_expect_token_locations;
594 VALUE parsing_thread;
598#define NUMPARAM_ID_P(id) numparam_id_p(p, id)
599#define NUMPARAM_ID_TO_IDX(id) (unsigned int)(((id) >> ID_SCOPE_SHIFT) - (tNUMPARAM_1 - 1))
600#define NUMPARAM_IDX_TO_ID(idx) TOKEN2LOCALID((tNUMPARAM_1 - 1 + (idx)))
604 if (!is_local_id(
id) ||
id < (tNUMPARAM_1 << ID_SCOPE_SHIFT))
return 0;
605 unsigned int idx = NUMPARAM_ID_TO_IDX(
id);
606 return idx > 0 && idx <= NUMPARAM_MAX;
611#define intern_cstr(n,l,en) rb_intern3(n,l,en)
613#define STR_NEW(ptr,len) rb_enc_str_new((ptr),(len),p->enc)
614#define STR_NEW0() rb_enc_str_new(0,0,p->enc)
615#define STR_NEW2(ptr) rb_enc_str_new((ptr),strlen(ptr),p->enc)
616#define STR_NEW3(ptr,len,e,func) parser_str_new(p, (ptr),(len),(e),(func),p->enc)
617#define TOK_INTERN() intern_cstr(tok(p), toklen(p), p->enc)
618#define VALID_SYMNAME_P(s, l, enc, type) (rb_enc_symname_type(s, l, enc, (1U<<(type))) == (int)(type))
623 return RSTRING_LEN(str) > 0 && RSTRING_END(str)[-1] ==
'\n';
629 st_free_table(p->pvtbl);
636 if (p->pktbl) st_free_table(p->pktbl);
644debug_end_expect_token_locations(
struct parser_params *p,
const char *name)
647 VALUE mesg = rb_sprintf(
"%s: ", name);
648 rb_str_catf(mesg,
" %"PRIsVALUE
"\n", p->end_expect_token_locations);
649 flush_debug_buffer(p, p->debug_output, mesg);
656 if(
NIL_P(p->end_expect_token_locations))
return;
657 rb_ary_push(p->end_expect_token_locations, rb_ary_new_from_args(2,
INT2NUM(pos->lineno),
INT2NUM(pos->column)));
658 debug_end_expect_token_locations(p,
"push_end_expect_token_locations");
664 if(
NIL_P(p->end_expect_token_locations))
return;
665 rb_ary_pop(p->end_expect_token_locations);
666 debug_end_expect_token_locations(p,
"pop_end_expect_token_locations");
672 if(
NIL_P(p->end_expect_token_locations))
return Qnil;
673 return rb_ary_last(0, 0, p->end_expect_token_locations);
677parser_token2id(
struct parser_params *p,
enum yytokentype tok)
680#define TOKEN2ID(tok) case tok: return rb_intern(#tok);
681#define TOKEN2ID2(tok, name) case tok: return rb_intern(name);
682 TOKEN2ID2(
' ',
"words_sep")
702 TOKEN2ID2('\n', "nl");
709 TOKEN2ID2('\\
', "backslash");
710 TOKEN2ID(keyword_class);
711 TOKEN2ID(keyword_module);
712 TOKEN2ID(keyword_def);
713 TOKEN2ID(keyword_undef);
714 TOKEN2ID(keyword_begin);
715 TOKEN2ID(keyword_rescue);
716 TOKEN2ID(keyword_ensure);
717 TOKEN2ID(keyword_end);
718 TOKEN2ID(keyword_if);
719 TOKEN2ID(keyword_unless);
720 TOKEN2ID(keyword_then);
721 TOKEN2ID(keyword_elsif);
722 TOKEN2ID(keyword_else);
723 TOKEN2ID(keyword_case);
724 TOKEN2ID(keyword_when);
725 TOKEN2ID(keyword_while);
726 TOKEN2ID(keyword_until);
727 TOKEN2ID(keyword_for);
728 TOKEN2ID(keyword_break);
729 TOKEN2ID(keyword_next);
730 TOKEN2ID(keyword_redo);
731 TOKEN2ID(keyword_retry);
732 TOKEN2ID(keyword_in);
733 TOKEN2ID(keyword_do);
734 TOKEN2ID(keyword_do_cond);
735 TOKEN2ID(keyword_do_block);
736 TOKEN2ID(keyword_do_LAMBDA);
737 TOKEN2ID(keyword_return);
738 TOKEN2ID(keyword_yield);
739 TOKEN2ID(keyword_super);
740 TOKEN2ID(keyword_self);
741 TOKEN2ID(keyword_nil);
742 TOKEN2ID(keyword_true);
743 TOKEN2ID(keyword_false);
744 TOKEN2ID(keyword_and);
745 TOKEN2ID(keyword_or);
746 TOKEN2ID(keyword_not);
747 TOKEN2ID(modifier_if);
748 TOKEN2ID(modifier_unless);
749 TOKEN2ID(modifier_while);
750 TOKEN2ID(modifier_until);
751 TOKEN2ID(modifier_rescue);
752 TOKEN2ID(keyword_alias);
753 TOKEN2ID(keyword_defined);
754 TOKEN2ID(keyword_BEGIN);
755 TOKEN2ID(keyword_END);
756 TOKEN2ID(keyword__LINE__);
757 TOKEN2ID(keyword__FILE__);
758 TOKEN2ID(keyword__ENCODING__);
759 TOKEN2ID(tIDENTIFIER);
769 TOKEN2ID(tIMAGINARY);
773 TOKEN2ID(tSTRING_CONTENT);
774 TOKEN2ID(tREGEXP_END);
775 TOKEN2ID(tDUMNY_END);
804 TOKEN2ID(tLPAREN_ARG);
808 TOKEN2ID(tLBRACE_ARG);
814 TOKEN2ID(tSTRING_BEG);
815 TOKEN2ID(tXSTRING_BEG);
816 TOKEN2ID(tREGEXP_BEG);
817 TOKEN2ID(tWORDS_BEG);
818 TOKEN2ID(tQWORDS_BEG);
819 TOKEN2ID(tSYMBOLS_BEG);
820 TOKEN2ID(tQSYMBOLS_BEG);
821 TOKEN2ID(tSTRING_END);
822 TOKEN2ID(tSTRING_DEND);
823 TOKEN2ID(tSTRING_DBEG);
824 TOKEN2ID(tSTRING_DVAR);
826 TOKEN2ID(tLABEL_END);
827 TOKEN2ID(tIGNORED_NL);
829 TOKEN2ID(tEMBDOC_BEG);
831 TOKEN2ID(tEMBDOC_END);
832 TOKEN2ID(tHEREDOC_BEG);
833 TOKEN2ID(tHEREDOC_END);
836 TOKEN2ID(tUMINUS_NUM);
837 TOKEN2ID(tLAST_TOKEN);
842 rb_bug("parser_token2id: unknown token %d", tok);
844 UNREACHABLE_RETURN(0);
849RBIMPL_ATTR_NONNULL((1, 2, 3))
850static int parser_yyerror(struct parser_params*, const YYLTYPE *yylloc, const char*);
851RBIMPL_ATTR_NONNULL((1, 2))
852static int parser_yyerror0(struct parser_params*, const char*);
853#define yyerror0(msg) parser_yyerror0(p, (msg))
854#define yyerror1(loc, msg) parser_yyerror(p, (loc), (msg))
855#define yyerror(yylloc, p, msg) parser_yyerror(p, yylloc, msg)
856#define token_flush(ptr) ((ptr)->lex.ptok = (ptr)->lex.pcur)
857#define lex_goto_eol(p) ((p)->lex.pcur = (p)->lex.pend)
858#define lex_eol_p(p) lex_eol_n_p(p, 0)
859#define lex_eol_n_p(p,n) lex_eol_ptr_n_p(p, (p)->lex.pcur, n)
860#define lex_eol_ptr_p(p,ptr) lex_eol_ptr_n_p(p,ptr,0)
861#define lex_eol_ptr_n_p(p,ptr,n) ((ptr)+(n) >= (p)->lex.pend)
863static void token_info_setup(token_info *ptinfo, const char *ptr, const rb_code_location_t *loc);
864static void token_info_push(struct parser_params*, const char *token, const rb_code_location_t *loc);
865static void token_info_pop(struct parser_params*, const char *token, const rb_code_location_t *loc);
866static void token_info_warn(struct parser_params *p, const char *token, token_info *ptinfo_beg, int same, const rb_code_location_t *loc);
867static void token_info_drop(struct parser_params *p, const char *token, rb_code_position_t beg_pos);
870#define compile_for_eval (0)
872#define compile_for_eval (p->parent_iseq != 0)
875#define token_column ((int)(p->lex.ptok - p->lex.pbeg))
877#define CALL_Q_P(q) ((q) == TOKEN2VAL(tANDDOT))
878#define NEW_QCALL(q,r,m,a,loc) (CALL_Q_P(q) ? NEW_QCALL0(r,m,a,loc) : NEW_CALL(r,m,a,loc))
880#define lambda_beginning_p() (p->lex.lpar_beg == p->lex.paren_nest)
882static enum yytokentype yylex(YYSTYPE*, YYLTYPE*, struct parser_params*);
886rb_discard_node(struct parser_params *p, NODE *n)
888 rb_ast_delete_node(p->ast, n);
894add_mark_object(struct parser_params *p, VALUE obj)
896 if (!SPECIAL_CONST_P(obj)
897 && !RB_TYPE_P(obj, T_NODE) /* Ripper jumbles NODE objects and other objects... */
899 rb_ast_add_mark_object(p->ast, obj);
904static rb_node_ripper_t *rb_node_ripper_new(struct parser_params *p, ID a, VALUE b, VALUE c, const YYLTYPE *loc);
905static rb_node_ripper_values_t *rb_node_ripper_values_new(struct parser_params *p, VALUE a, VALUE b, VALUE c, const YYLTYPE *loc);
906#define NEW_RIPPER(a,b,c,loc) (VALUE)rb_node_ripper_new(p,a,b,c,loc)
907#define NEW_RIPPER_VALUES(a,b,c,loc) (VALUE)rb_node_ripper_values_new(p,a,b,c,loc)
910static rb_node_scope_t *rb_node_scope_new(struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body, const YYLTYPE *loc);
911static 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);
912static rb_node_block_t *rb_node_block_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
913static rb_node_if_t *rb_node_if_new(struct parser_params *p, NODE *nd_cond, NODE *nd_body, NODE *nd_else, const YYLTYPE *loc);
914static rb_node_unless_t *rb_node_unless_new(struct parser_params *p, NODE *nd_cond, NODE *nd_body, NODE *nd_else, const YYLTYPE *loc);
915static rb_node_case_t *rb_node_case_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, const YYLTYPE *loc);
916static rb_node_case2_t *rb_node_case2_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
917static rb_node_case3_t *rb_node_case3_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, const YYLTYPE *loc);
918static rb_node_when_t *rb_node_when_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, NODE *nd_next, const YYLTYPE *loc);
919static rb_node_in_t *rb_node_in_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, NODE *nd_next, const YYLTYPE *loc);
920static rb_node_while_t *rb_node_while_new(struct parser_params *p, NODE *nd_cond, NODE *nd_body, long nd_state, const YYLTYPE *loc);
921static rb_node_until_t *rb_node_until_new(struct parser_params *p, NODE *nd_cond, NODE *nd_body, long nd_state, const YYLTYPE *loc);
922static rb_node_iter_t *rb_node_iter_new(struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body, const YYLTYPE *loc);
923static rb_node_for_t *rb_node_for_new(struct parser_params *p, NODE *nd_iter, NODE *nd_body, const YYLTYPE *loc);
924static rb_node_for_masgn_t *rb_node_for_masgn_new(struct parser_params *p, NODE *nd_var, const YYLTYPE *loc);
925static rb_node_retry_t *rb_node_retry_new(struct parser_params *p, const YYLTYPE *loc);
926static rb_node_begin_t *rb_node_begin_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
927static rb_node_rescue_t *rb_node_rescue_new(struct parser_params *p, NODE *nd_head, NODE *nd_resq, NODE *nd_else, const YYLTYPE *loc);
928static rb_node_resbody_t *rb_node_resbody_new(struct parser_params *p, NODE *nd_args, NODE *nd_body, NODE *nd_head, const YYLTYPE *loc);
929static rb_node_ensure_t *rb_node_ensure_new(struct parser_params *p, NODE *nd_head, NODE *nd_ensr, const YYLTYPE *loc);
930static rb_node_and_t *rb_node_and_new(struct parser_params *p, NODE *nd_1st, NODE *nd_2nd, const YYLTYPE *loc);
931static rb_node_or_t *rb_node_or_new(struct parser_params *p, NODE *nd_1st, NODE *nd_2nd, const YYLTYPE *loc);
932static rb_node_masgn_t *rb_node_masgn_new(struct parser_params *p, NODE *nd_head, NODE *nd_args, const YYLTYPE *loc);
933static rb_node_lasgn_t *rb_node_lasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
934static rb_node_dasgn_t *rb_node_dasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
935static rb_node_gasgn_t *rb_node_gasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
936static rb_node_iasgn_t *rb_node_iasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
937static rb_node_cdecl_t *rb_node_cdecl_new(struct parser_params *p, ID nd_vid, NODE *nd_value, NODE *nd_else, const YYLTYPE *loc);
938static rb_node_cvasgn_t *rb_node_cvasgn_new(struct parser_params *p, ID nd_vid, NODE *nd_value, const YYLTYPE *loc);
939static 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);
940static 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);
941static 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);
942static 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);
943static rb_node_op_cdecl_t *rb_node_op_cdecl_new(struct parser_params *p, NODE *nd_head, NODE *nd_value, ID nd_aid, const YYLTYPE *loc);
944static rb_node_call_t *rb_node_call_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
945static rb_node_opcall_t *rb_node_opcall_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
946static rb_node_fcall_t *rb_node_fcall_new(struct parser_params *p, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
947static rb_node_vcall_t *rb_node_vcall_new(struct parser_params *p, ID nd_mid, const YYLTYPE *loc);
948static rb_node_qcall_t *rb_node_qcall_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
949static rb_node_super_t *rb_node_super_new(struct parser_params *p, NODE *nd_args, const YYLTYPE *loc);
950static rb_node_zsuper_t * rb_node_zsuper_new(struct parser_params *p, const YYLTYPE *loc);
951static rb_node_list_t *rb_node_list_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
952static rb_node_list_t *rb_node_list_new2(struct parser_params *p, NODE *nd_head, long nd_alen, NODE *nd_next, const YYLTYPE *loc);
953static rb_node_zlist_t *rb_node_zlist_new(struct parser_params *p, const YYLTYPE *loc);
954static rb_node_hash_t *rb_node_hash_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
955static rb_node_return_t *rb_node_return_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc);
956static rb_node_yield_t *rb_node_yield_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
957static rb_node_lvar_t *rb_node_lvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
958static rb_node_dvar_t *rb_node_dvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
959static rb_node_gvar_t *rb_node_gvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
960static rb_node_ivar_t *rb_node_ivar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
961static rb_node_const_t *rb_node_const_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
962static rb_node_cvar_t *rb_node_cvar_new(struct parser_params *p, ID nd_vid, const YYLTYPE *loc);
963static rb_node_nth_ref_t *rb_node_nth_ref_new(struct parser_params *p, long nd_nth, const YYLTYPE *loc);
964static rb_node_back_ref_t *rb_node_back_ref_new(struct parser_params *p, long nd_nth, const YYLTYPE *loc);
965static rb_node_match2_t *rb_node_match2_new(struct parser_params *p, NODE *nd_recv, NODE *nd_value, const YYLTYPE *loc);
966static rb_node_match3_t *rb_node_match3_new(struct parser_params *p, NODE *nd_recv, NODE *nd_value, const YYLTYPE *loc);
967static rb_node_lit_t *rb_node_lit_new(struct parser_params *p, VALUE nd_lit, const YYLTYPE *loc);
968static rb_node_str_t *rb_node_str_new(struct parser_params *p, VALUE nd_lit, const YYLTYPE *loc);
969static rb_node_dstr_t *rb_node_dstr_new0(struct parser_params *p, VALUE nd_lit, long nd_alen, NODE *nd_next, const YYLTYPE *loc);
970static rb_node_dstr_t *rb_node_dstr_new(struct parser_params *p, VALUE nd_lit, const YYLTYPE *loc);
971static rb_node_xstr_t *rb_node_xstr_new(struct parser_params *p, VALUE nd_lit, const YYLTYPE *loc);
972static rb_node_dxstr_t *rb_node_dxstr_new(struct parser_params *p, VALUE nd_lit, long nd_alen, NODE *nd_next, const YYLTYPE *loc);
973static rb_node_evstr_t *rb_node_evstr_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
974static rb_node_once_t *rb_node_once_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
975static rb_node_args_t *rb_node_args_new(struct parser_params *p, const YYLTYPE *loc);
976static rb_node_args_aux_t *rb_node_args_aux_new(struct parser_params *p, ID nd_pid, long nd_plen, const YYLTYPE *loc);
977static rb_node_opt_arg_t *rb_node_opt_arg_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
978static rb_node_kw_arg_t *rb_node_kw_arg_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
979static rb_node_postarg_t *rb_node_postarg_new(struct parser_params *p, NODE *nd_1st, NODE *nd_2nd, const YYLTYPE *loc);
980static rb_node_argscat_t *rb_node_argscat_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, const YYLTYPE *loc);
981static rb_node_argspush_t *rb_node_argspush_new(struct parser_params *p, NODE *nd_head, NODE *nd_body, const YYLTYPE *loc);
982static rb_node_splat_t *rb_node_splat_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
983static rb_node_block_pass_t *rb_node_block_pass_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
984static rb_node_defn_t *rb_node_defn_new(struct parser_params *p, ID nd_mid, NODE *nd_defn, const YYLTYPE *loc);
985static rb_node_defs_t *rb_node_defs_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_defn, const YYLTYPE *loc);
986static rb_node_alias_t *rb_node_alias_new(struct parser_params *p, NODE *nd_1st, NODE *nd_2nd, const YYLTYPE *loc);
987static rb_node_valias_t *rb_node_valias_new(struct parser_params *p, ID nd_alias, ID nd_orig, const YYLTYPE *loc);
988static rb_node_undef_t *rb_node_undef_new(struct parser_params *p, NODE *nd_undef, const YYLTYPE *loc);
989static rb_node_class_t *rb_node_class_new(struct parser_params *p, NODE *nd_cpath, NODE *nd_body, NODE *nd_super, const YYLTYPE *loc);
990static rb_node_module_t *rb_node_module_new(struct parser_params *p, NODE *nd_cpath, NODE *nd_body, const YYLTYPE *loc);
991static rb_node_sclass_t *rb_node_sclass_new(struct parser_params *p, NODE *nd_recv, NODE *nd_body, const YYLTYPE *loc);
992static rb_node_colon2_t *rb_node_colon2_new(struct parser_params *p, NODE *nd_head, ID nd_mid, const YYLTYPE *loc);
993static rb_node_colon3_t *rb_node_colon3_new(struct parser_params *p, ID nd_mid, const YYLTYPE *loc);
994static rb_node_dot2_t *rb_node_dot2_new(struct parser_params *p, NODE *nd_beg, NODE *nd_end, const YYLTYPE *loc);
995static rb_node_dot3_t *rb_node_dot3_new(struct parser_params *p, NODE *nd_beg, NODE *nd_end, const YYLTYPE *loc);
996static rb_node_self_t *rb_node_self_new(struct parser_params *p, const YYLTYPE *loc);
997static rb_node_nil_t *rb_node_nil_new(struct parser_params *p, const YYLTYPE *loc);
998static rb_node_true_t *rb_node_true_new(struct parser_params *p, const YYLTYPE *loc);
999static rb_node_false_t *rb_node_false_new(struct parser_params *p, const YYLTYPE *loc);
1000static rb_node_errinfo_t *rb_node_errinfo_new(struct parser_params *p, const YYLTYPE *loc);
1001static rb_node_defined_t *rb_node_defined_new(struct parser_params *p, NODE *nd_head, const YYLTYPE *loc);
1002static rb_node_postexe_t *rb_node_postexe_new(struct parser_params *p, NODE *nd_body, const YYLTYPE *loc);
1003static rb_node_dsym_t *rb_node_dsym_new(struct parser_params *p, VALUE nd_lit, long nd_alen, NODE *nd_next, const YYLTYPE *loc);
1004static rb_node_attrasgn_t *rb_node_attrasgn_new(struct parser_params *p, NODE *nd_recv, ID nd_mid, NODE *nd_args, const YYLTYPE *loc);
1005static rb_node_lambda_t *rb_node_lambda_new(struct parser_params *p, rb_node_args_t *nd_args, NODE *nd_body, const YYLTYPE *loc);
1006static rb_node_aryptn_t *rb_node_aryptn_new(struct parser_params *p, NODE *pre_args, NODE *rest_arg, NODE *post_args, const YYLTYPE *loc);
1007static rb_node_hshptn_t *rb_node_hshptn_new(struct parser_params *p, NODE *nd_pconst, NODE *nd_pkwargs, NODE *nd_pkwrestarg, const YYLTYPE *loc);
1008static 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);
1009static rb_node_error_t *rb_node_error_new(struct parser_params *p, const YYLTYPE *loc);
1011#define NEW_SCOPE(a,b,loc) (NODE *)rb_node_scope_new(p,a,b,loc)
1012#define NEW_SCOPE2(t,a,b,loc) (NODE *)rb_node_scope_new2(p,t,a,b,loc)
1013#define NEW_BLOCK(a,loc) (NODE *)rb_node_block_new(p,a,loc)
1014#define NEW_IF(c,t,e,loc) (NODE *)rb_node_if_new(p,c,t,e,loc)
1015#define NEW_UNLESS(c,t,e,loc) (NODE *)rb_node_unless_new(p,c,t,e,loc)
1016#define NEW_CASE(h,b,loc) (NODE *)rb_node_case_new(p,h,b,loc)
1017#define NEW_CASE2(b,loc) (NODE *)rb_node_case2_new(p,b,loc)
1018#define NEW_CASE3(h,b,loc) (NODE *)rb_node_case3_new(p,h,b,loc)
1019#define NEW_WHEN(c,t,e,loc) (NODE *)rb_node_when_new(p,c,t,e,loc)
1020#define NEW_IN(c,t,e,loc) (NODE *)rb_node_in_new(p,c,t,e,loc)
1021#define NEW_WHILE(c,b,n,loc) (NODE *)rb_node_while_new(p,c,b,n,loc)
1022#define NEW_UNTIL(c,b,n,loc) (NODE *)rb_node_until_new(p,c,b,n,loc)
1023#define NEW_ITER(a,b,loc) (NODE *)rb_node_iter_new(p,a,b,loc)
1024#define NEW_FOR(i,b,loc) (NODE *)rb_node_for_new(p,i,b,loc)
1025#define NEW_FOR_MASGN(v,loc) (NODE *)rb_node_for_masgn_new(p,v,loc)
1026#define NEW_RETRY(loc) (NODE *)rb_node_retry_new(p,loc)
1027#define NEW_BEGIN(b,loc) (NODE *)rb_node_begin_new(p,b,loc)
1028#define NEW_RESCUE(b,res,e,loc) (NODE *)rb_node_rescue_new(p,b,res,e,loc)
1029#define NEW_RESBODY(a,ex,n,loc) (NODE *)rb_node_resbody_new(p,a,ex,n,loc)
1030#define NEW_ENSURE(b,en,loc) (NODE *)rb_node_ensure_new(p,b,en,loc)
1031#define NEW_AND(f,s,loc) (NODE *)rb_node_and_new(p,f,s,loc)
1032#define NEW_OR(f,s,loc) (NODE *)rb_node_or_new(p,f,s,loc)
1033#define NEW_MASGN(l,r,loc) rb_node_masgn_new(p,l,r,loc)
1034#define NEW_LASGN(v,val,loc) (NODE *)rb_node_lasgn_new(p,v,val,loc)
1035#define NEW_DASGN(v,val,loc) (NODE *)rb_node_dasgn_new(p,v,val,loc)
1036#define NEW_GASGN(v,val,loc) (NODE *)rb_node_gasgn_new(p,v,val,loc)
1037#define NEW_IASGN(v,val,loc) (NODE *)rb_node_iasgn_new(p,v,val,loc)
1038#define NEW_CDECL(v,val,path,loc) (NODE *)rb_node_cdecl_new(p,v,val,path,loc)
1039#define NEW_CVASGN(v,val,loc) (NODE *)rb_node_cvasgn_new(p,v,val,loc)
1040#define NEW_OP_ASGN1(r,id,idx,rval,loc) (NODE *)rb_node_op_asgn1_new(p,r,id,idx,rval,loc)
1041#define NEW_OP_ASGN2(r,t,i,o,val,loc) (NODE *)rb_node_op_asgn2_new(p,r,val,i,o,t,loc)
1042#define NEW_OP_ASGN_OR(i,val,loc) (NODE *)rb_node_op_asgn_or_new(p,i,val,loc)
1043#define NEW_OP_ASGN_AND(i,val,loc) (NODE *)rb_node_op_asgn_and_new(p,i,val,loc)
1044#define NEW_OP_CDECL(v,op,val,loc) (NODE *)rb_node_op_cdecl_new(p,v,val,op,loc)
1045#define NEW_CALL(r,m,a,loc) (NODE *)rb_node_call_new(p,r,m,a,loc)
1046#define NEW_OPCALL(r,m,a,loc) (NODE *)rb_node_opcall_new(p,r,m,a,loc)
1047#define NEW_FCALL(m,a,loc) rb_node_fcall_new(p,m,a,loc)
1048#define NEW_VCALL(m,loc) (NODE *)rb_node_vcall_new(p,m,loc)
1049#define NEW_QCALL0(r,m,a,loc) (NODE *)rb_node_qcall_new(p,r,m,a,loc)
1050#define NEW_SUPER(a,loc) (NODE *)rb_node_super_new(p,a,loc)
1051#define NEW_ZSUPER(loc) (NODE *)rb_node_zsuper_new(p,loc)
1052#define NEW_LIST(a,loc) (NODE *)rb_node_list_new(p,a,loc)
1053#define NEW_LIST2(h,l,n,loc) (NODE *)rb_node_list_new2(p,h,l,n,loc)
1054#define NEW_ZLIST(loc) (NODE *)rb_node_zlist_new(p,loc)
1055#define NEW_HASH(a,loc) (NODE *)rb_node_hash_new(p,a,loc)
1056#define NEW_RETURN(s,loc) (NODE *)rb_node_return_new(p,s,loc)
1057#define NEW_YIELD(a,loc) (NODE *)rb_node_yield_new(p,a,loc)
1058#define NEW_LVAR(v,loc) (NODE *)rb_node_lvar_new(p,v,loc)
1059#define NEW_DVAR(v,loc) (NODE *)rb_node_dvar_new(p,v,loc)
1060#define NEW_GVAR(v,loc) (NODE *)rb_node_gvar_new(p,v,loc)
1061#define NEW_IVAR(v,loc) (NODE *)rb_node_ivar_new(p,v,loc)
1062#define NEW_CONST(v,loc) (NODE *)rb_node_const_new(p,v,loc)
1063#define NEW_CVAR(v,loc) (NODE *)rb_node_cvar_new(p,v,loc)
1064#define NEW_NTH_REF(n,loc) (NODE *)rb_node_nth_ref_new(p,n,loc)
1065#define NEW_BACK_REF(n,loc) (NODE *)rb_node_back_ref_new(p,n,loc)
1066#define NEW_MATCH2(n1,n2,loc) (NODE *)rb_node_match2_new(p,n1,n2,loc)
1067#define NEW_MATCH3(r,n2,loc) (NODE *)rb_node_match3_new(p,r,n2,loc)
1068#define NEW_LIT(l,loc) (NODE *)rb_node_lit_new(p,l,loc)
1069#define NEW_STR(s,loc) (NODE *)rb_node_str_new(p,s,loc)
1070#define NEW_DSTR0(s,l,n,loc) (NODE *)rb_node_dstr_new0(p,s,l,n,loc)
1071#define NEW_DSTR(s,loc) (NODE *)rb_node_dstr_new(p,s,loc)
1072#define NEW_XSTR(s,loc) (NODE *)rb_node_xstr_new(p,s,loc)
1073#define NEW_DXSTR(s,l,n,loc) (NODE *)rb_node_dxstr_new(p,s,l,n,loc)
1074#define NEW_EVSTR(n,loc) (NODE *)rb_node_evstr_new(p,n,loc)
1075#define NEW_ONCE(b,loc) (NODE *)rb_node_once_new(p,b,loc)
1076#define NEW_ARGS(loc) rb_node_args_new(p,loc)
1077#define NEW_ARGS_AUX(r,b,loc) rb_node_args_aux_new(p,r,b,loc)
1078#define NEW_OPT_ARG(v,loc) rb_node_opt_arg_new(p,v,loc)
1079#define NEW_KW_ARG(v,loc) rb_node_kw_arg_new(p,v,loc)
1080#define NEW_POSTARG(i,v,loc) (NODE *)rb_node_postarg_new(p,i,v,loc)
1081#define NEW_ARGSCAT(a,b,loc) (NODE *)rb_node_argscat_new(p,a,b,loc)
1082#define NEW_ARGSPUSH(a,b,loc) (NODE *)rb_node_argspush_new(p,a,b,loc)
1083#define NEW_SPLAT(a,loc) (NODE *)rb_node_splat_new(p,a,loc)
1084#define NEW_BLOCK_PASS(b,loc) rb_node_block_pass_new(p,b,loc)
1085#define NEW_DEFN(i,s,loc) (NODE *)rb_node_defn_new(p,i,s,loc)
1086#define NEW_DEFS(r,i,s,loc) (NODE *)rb_node_defs_new(p,r,i,s,loc)
1087#define NEW_ALIAS(n,o,loc) (NODE *)rb_node_alias_new(p,n,o,loc)
1088#define NEW_VALIAS(n,o,loc) (NODE *)rb_node_valias_new(p,n,o,loc)
1089#define NEW_UNDEF(i,loc) (NODE *)rb_node_undef_new(p,i,loc)
1090#define NEW_CLASS(n,b,s,loc) (NODE *)rb_node_class_new(p,n,b,s,loc)
1091#define NEW_MODULE(n,b,loc) (NODE *)rb_node_module_new(p,n,b,loc)
1092#define NEW_SCLASS(r,b,loc) (NODE *)rb_node_sclass_new(p,r,b,loc)
1093#define NEW_COLON2(c,i,loc) (NODE *)rb_node_colon2_new(p,c,i,loc)
1094#define NEW_COLON3(i,loc) (NODE *)rb_node_colon3_new(p,i,loc)
1095#define NEW_DOT2(b,e,loc) (NODE *)rb_node_dot2_new(p,b,e,loc)
1096#define NEW_DOT3(b,e,loc) (NODE *)rb_node_dot3_new(p,b,e,loc)
1097#define NEW_SELF(loc) (NODE *)rb_node_self_new(p,loc)
1098#define NEW_NIL(loc) (NODE *)rb_node_nil_new(p,loc)
1099#define NEW_TRUE(loc) (NODE *)rb_node_true_new(p,loc)
1100#define NEW_FALSE(loc) (NODE *)rb_node_false_new(p,loc)
1101#define NEW_ERRINFO(loc) (NODE *)rb_node_errinfo_new(p,loc)
1102#define NEW_DEFINED(e,loc) (NODE *)rb_node_defined_new(p,e,loc)
1103#define NEW_POSTEXE(b,loc) (NODE *)rb_node_postexe_new(p,b,loc)
1104#define NEW_DSYM(s,l,n,loc) (NODE *)rb_node_dsym_new(p,s,l,n,loc)
1105#define NEW_ATTRASGN(r,m,a,loc) (NODE *)rb_node_attrasgn_new(p,r,m,a,loc)
1106#define NEW_LAMBDA(a,b,loc) (NODE *)rb_node_lambda_new(p,a,b,loc)
1107#define NEW_ARYPTN(pre,r,post,loc) (NODE *)rb_node_aryptn_new(p,pre,r,post,loc)
1108#define NEW_HSHPTN(c,kw,kwrest,loc) (NODE *)rb_node_hshptn_new(p,c,kw,kwrest,loc)
1109#define NEW_FNDPTN(pre,a,post,loc) (NODE *)rb_node_fndptn_new(p,pre,a,post,loc)
1110#define NEW_ERROR(loc) (NODE *)rb_node_error_new(p,loc)
1114enum internal_node_type {
1115 NODE_INTERNAL_ONLY = NODE_LAST,
1122parser_node_name(int node)
1126 return "NODE_DEF_TEMP";
1128 return "NODE_EXITS";
1130 return ruby_node_name(node);
1134/* This node is parse.y internal */
1135struct RNode_DEF_TEMP {
1138 /* for NODE_DEFN/NODE_DEFS */
1140 struct RNode *nd_def;
1151 NODE *numparam_save;
1152 struct lex_context ctxt;
1156#define RNODE_DEF_TEMP(node) ((struct RNode_DEF_TEMP *)(node))
1158static rb_node_break_t *rb_node_break_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc);
1159static rb_node_next_t *rb_node_next_new(struct parser_params *p, NODE *nd_stts, const YYLTYPE *loc);
1160static rb_node_redo_t *rb_node_redo_new(struct parser_params *p, const YYLTYPE *loc);
1161static rb_node_def_temp_t *rb_node_def_temp_new(struct parser_params *p, const YYLTYPE *loc);
1162static rb_node_def_temp_t *def_head_save(struct parser_params *p, rb_node_def_temp_t *n);
1164#define NEW_BREAK(s,loc) (NODE *)rb_node_break_new(p,s,loc)
1165#define NEW_NEXT(s,loc) (NODE *)rb_node_next_new(p,s,loc)
1166#define NEW_REDO(loc) (NODE *)rb_node_redo_new(p,loc)
1167#define NEW_DEF_TEMP(loc) rb_node_def_temp_new(p,loc)
1169/* Make a new internal node, which should not be appeared in the
1170 * result AST and does not have node_id and location. */
1171static NODE* node_new_internal(struct parser_params *p, enum node_type type, size_t size, size_t alignment);
1172#define NODE_NEW_INTERNAL(ndtype, type) (type *)node_new_internal(p, (enum node_type)(ndtype), sizeof(type), RUBY_ALIGNOF(type))
1174static NODE *nd_set_loc(NODE *nd, const YYLTYPE *loc);
1177parser_get_node_id(struct parser_params *p)
1179 int node_id = p->node_id;
1185anddot_multiple_assignment_check(struct parser_params* p, const YYLTYPE *loc, ID id)
1187 if (id == tANDDOT) {
1188 yyerror1(loc, "&. inside multiple assignment destination");
1194set_line_body(NODE *body, int line)
1197 switch (nd_type(body)) {
1200 nd_set_line(body, line);
1205set_embraced_location(NODE *node, const rb_code_location_t *beg, const rb_code_location_t *end)
1207 RNODE_ITER(node)->nd_body->nd_loc = code_loc_gen(beg, end);
1208 nd_set_line(node, beg->end_pos.lineno);
1212last_expr_node(NODE *expr)
1215 if (nd_type_p(expr, NODE_BLOCK)) {
1216 expr = RNODE_BLOCK(RNODE_BLOCK(expr)->nd_end)->nd_head;
1218 else if (nd_type_p(expr, NODE_BEGIN)) {
1219 expr = RNODE_BEGIN(expr)->nd_body;
1228#define yyparse ruby_yyparse
1230static NODE* cond(struct parser_params *p, NODE *node, const YYLTYPE *loc);
1231static NODE* method_cond(struct parser_params *p, NODE *node, const YYLTYPE *loc);
1232#define new_nil(loc) NEW_NIL(loc)
1233static NODE *new_nil_at(struct parser_params *p, const rb_code_position_t *pos);
1234static NODE *new_if(struct parser_params*,NODE*,NODE*,NODE*,const YYLTYPE*);
1235static NODE *new_unless(struct parser_params*,NODE*,NODE*,NODE*,const YYLTYPE*);
1236static NODE *logop(struct parser_params*,ID,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
1238static NODE *newline_node(NODE*);
1239static void fixpos(NODE*,NODE*);
1241static int value_expr_gen(struct parser_params*,NODE*);
1242static void void_expr(struct parser_params*,NODE*);
1243static NODE *remove_begin(NODE*);
1244static NODE *remove_begin_all(NODE*);
1245#define value_expr(node) value_expr_gen(p, (node))
1246static NODE *void_stmts(struct parser_params*,NODE*);
1247static void reduce_nodes(struct parser_params*,NODE**);
1248static void block_dup_check(struct parser_params*,NODE*,NODE*);
1250static NODE *block_append(struct parser_params*,NODE*,NODE*);
1251static NODE *list_append(struct parser_params*,NODE*,NODE*);
1252static NODE *list_concat(NODE*,NODE*);
1253static NODE *arg_append(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1254static NODE *last_arg_append(struct parser_params *p, NODE *args, NODE *last_arg, const YYLTYPE *loc);
1255static NODE *rest_arg_append(struct parser_params *p, NODE *args, NODE *rest_arg, const YYLTYPE *loc);
1256static NODE *literal_concat(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1257static NODE *new_evstr(struct parser_params*,NODE*,const YYLTYPE*);
1258static NODE *new_dstr(struct parser_params*,NODE*,const YYLTYPE*);
1259static NODE *str2dstr(struct parser_params*,NODE*);
1260static NODE *evstr2dstr(struct parser_params*,NODE*);
1261static NODE *splat_array(NODE*);
1262static void mark_lvar_used(struct parser_params *p, NODE *rhs);
1264static NODE *call_bin_op(struct parser_params*,NODE*,ID,NODE*,const YYLTYPE*,const YYLTYPE*);
1265static NODE *call_uni_op(struct parser_params*,NODE*,ID,const YYLTYPE*,const YYLTYPE*);
1266static NODE *new_qcall(struct parser_params* p, ID atype, NODE *recv, ID mid, NODE *args, const YYLTYPE *op_loc, const YYLTYPE *loc);
1267static 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);
1268static 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;}
1270static bool args_info_empty_p(struct rb_args_info *args);
1271static 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*);
1272static rb_node_args_t *new_args_tail(struct parser_params*,rb_node_kw_arg_t*,ID,ID,const YYLTYPE*);
1273static NODE *new_array_pattern(struct parser_params *p, NODE *constant, NODE *pre_arg, NODE *aryptn, const YYLTYPE *loc);
1274static NODE *new_array_pattern_tail(struct parser_params *p, NODE *pre_args, int has_rest, NODE *rest_arg, NODE *post_args, const YYLTYPE *loc);
1275static NODE *new_find_pattern(struct parser_params *p, NODE *constant, NODE *fndptn, const YYLTYPE *loc);
1276static NODE *new_find_pattern_tail(struct parser_params *p, NODE *pre_rest_arg, NODE *args, NODE *post_rest_arg, const YYLTYPE *loc);
1277static NODE *new_hash_pattern(struct parser_params *p, NODE *constant, NODE *hshptn, const YYLTYPE *loc);
1278static NODE *new_hash_pattern_tail(struct parser_params *p, NODE *kw_args, ID kw_rest_arg, const YYLTYPE *loc);
1280static rb_node_kw_arg_t *new_kw_arg(struct parser_params *p, NODE *k, const YYLTYPE *loc);
1281static rb_node_args_t *args_with_numbered(struct parser_params*,rb_node_args_t*,int);
1283static VALUE negate_lit(struct parser_params*, VALUE);
1284static NODE *ret_args(struct parser_params*,NODE*);
1285static NODE *arg_blk_pass(NODE*,rb_node_block_pass_t*);
1286static NODE *new_yield(struct parser_params*,NODE*,const YYLTYPE*);
1287static NODE *dsym_node(struct parser_params*,NODE*,const YYLTYPE*);
1289static NODE *gettable(struct parser_params*,ID,const YYLTYPE*);
1290static NODE *assignable(struct parser_params*,ID,NODE*,const YYLTYPE*);
1292static NODE *aryset(struct parser_params*,NODE*,NODE*,const YYLTYPE*);
1293static NODE *attrset(struct parser_params*,NODE*,ID,ID,const YYLTYPE*);
1295static void rb_backref_error(struct parser_params*,NODE*);
1296static NODE *node_assign(struct parser_params*,NODE*,NODE*,struct lex_context,const YYLTYPE*);
1298static NODE *new_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1299static NODE *new_ary_op_assign(struct parser_params *p, NODE *ary, NODE *args, ID op, NODE *rhs, const YYLTYPE *args_loc, const YYLTYPE *loc);
1300static NODE *new_attr_op_assign(struct parser_params *p, NODE *lhs, ID atype, ID attr, ID op, NODE *rhs, const YYLTYPE *loc);
1301static NODE *new_const_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE *rhs, struct lex_context, const YYLTYPE *loc);
1302static NODE *new_bodystmt(struct parser_params *p, NODE *head, NODE *rescue, NODE *rescue_else, NODE *ensure, const YYLTYPE *loc);
1304static NODE *const_decl(struct parser_params *p, NODE* path, const YYLTYPE *loc);
1306static rb_node_opt_arg_t *opt_arg_append(rb_node_opt_arg_t*, rb_node_opt_arg_t*);
1307static rb_node_kw_arg_t *kwd_append(rb_node_kw_arg_t*, rb_node_kw_arg_t*);
1309static NODE *new_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1310static NODE *new_unique_key_hash(struct parser_params *p, NODE *hash, const YYLTYPE *loc);
1312static NODE *new_defined(struct parser_params *p, NODE *expr, const YYLTYPE *loc);
1314static NODE *new_regexp(struct parser_params *, NODE *, int, const YYLTYPE *);
1316#define make_list(list, loc) ((list) ? (nd_set_loc(list, loc), list) : NEW_ZLIST(loc))
1318static NODE *new_xstring(struct parser_params *, NODE *, const YYLTYPE *loc);
1320static NODE *symbol_append(struct parser_params *p, NODE *symbols, NODE *symbol);
1322static NODE *match_op(struct parser_params*,NODE*,NODE*,const YYLTYPE*,const YYLTYPE*);
1324static rb_ast_id_table_t *local_tbl(struct parser_params*);
1326static VALUE reg_compile(struct parser_params*, VALUE, int);
1327static void reg_fragment_setenc(struct parser_params*, VALUE, int);
1328static int reg_fragment_check(struct parser_params*, VALUE, int);
1330static int literal_concat0(struct parser_params *p, VALUE head, VALUE tail);
1331static NODE *heredoc_dedent(struct parser_params*,NODE*);
1333static void check_literal_when(struct parser_params *p, NODE *args, const YYLTYPE *loc);
1335#define get_id(id) (id)
1336#define get_value(val) (val)
1337#define get_num(num) (num)
1340static inline int ripper_is_node_yylval(struct parser_params *p, VALUE n);
1343ripper_new_yylval(struct parser_params *p, ID a, VALUE b, VALUE c)
1345 if (ripper_is_node_yylval(p, c)) c = RNODE_RIPPER(c)->nd_cval;
1346 add_mark_object(p, b);
1347 add_mark_object(p, c);
1348 return NEW_RIPPER(a, b, c, &NULL_LOC);
1352ripper_new_yylval2(struct parser_params *p, VALUE a, VALUE b, VALUE c)
1354 add_mark_object(p, a);
1355 add_mark_object(p, b);
1356 add_mark_object(p, c);
1357 return NEW_RIPPER_VALUES(a, b, c, &NULL_LOC);
1361ripper_is_node_yylval(struct parser_params *p, VALUE n)
1363 return RB_TYPE_P(n, T_NODE) && nd_type_p(RNODE(n), NODE_RIPPER);
1366#define value_expr(node) ((void)(node))
1367#define remove_begin(node) (node)
1368#define void_stmts(p,x) (x)
1369#undef rb_dvar_defined
1370#define rb_dvar_defined(id, base) 0
1371#undef rb_local_defined
1372#define rb_local_defined(id, base) 0
1373#define get_id(id) ripper_get_id(id)
1374#define get_value(val) ripper_get_value(val)
1375#define get_num(num) (int)get_id(num)
1376static VALUE assignable(struct parser_params*,VALUE);
1377static int id_is_var(struct parser_params *p, ID id);
1379#define method_cond(p,node,loc) (node)
1380#define call_bin_op(p, recv,id,arg1,op_loc,loc) dispatch3(binary, (recv), STATIC_ID2SYM(id), (arg1))
1381#define match_op(p,node1,node2,op_loc,loc) call_bin_op(0, (node1), idEqTilde, (node2), op_loc, loc)
1382#define call_uni_op(p, recv,id,op_loc,loc) dispatch2(unary, STATIC_ID2SYM(id), (recv))
1383#define logop(p,id,node1,node2,op_loc,loc) call_bin_op(0, (node1), (id), (node2), op_loc, loc)
1385#define new_nil(loc) Qnil
1387static VALUE new_regexp(struct parser_params *, VALUE, VALUE, const YYLTYPE *);
1389static VALUE const_decl(struct parser_params *p, VALUE path);
1391static VALUE var_field(struct parser_params *p, VALUE a);
1392static VALUE assign_error(struct parser_params *p, const char *mesg, VALUE a);
1394static VALUE parser_reg_compile(struct parser_params*, VALUE, int, VALUE *);
1396static VALUE backref_error(struct parser_params*, NODE *, VALUE);
1399RUBY_SYMBOL_EXPORT_BEGIN
1400VALUE rb_parser_reg_compile(struct parser_params* p, VALUE str, int options);
1401int rb_reg_fragment_setenc(struct parser_params*, VALUE, int);
1402enum lex_state_e rb_parser_trace_lex_state(struct parser_params *, enum lex_state_e, enum lex_state_e, int);
1403VALUE rb_parser_lex_state_name(struct parser_params *p, enum lex_state_e state);
1404void rb_parser_show_bitstack(struct parser_params *, stack_type, const char *, int);
1405PRINTF_ARGS(void rb_parser_fatal(struct parser_params *p, const char *fmt, ...), 2, 3);
1406YYLTYPE *rb_parser_set_location_from_strterm_heredoc(struct parser_params *p, rb_strterm_heredoc_t *here, YYLTYPE *yylloc);
1407YYLTYPE *rb_parser_set_location_of_delayed_token(struct parser_params *p, YYLTYPE *yylloc);
1408YYLTYPE *rb_parser_set_location_of_heredoc_end(struct parser_params *p, YYLTYPE *yylloc);
1409YYLTYPE *rb_parser_set_location_of_dummy_end(struct parser_params *p, YYLTYPE *yylloc);
1410YYLTYPE *rb_parser_set_location_of_none(struct parser_params *p, YYLTYPE *yylloc);
1411YYLTYPE *rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc);
1412RUBY_SYMBOL_EXPORT_END
1414static void error_duplicate_pattern_variable(struct parser_params *p, ID id, const YYLTYPE *loc);
1415static void error_duplicate_pattern_key(struct parser_params *p, ID id, const YYLTYPE *loc);
1417static ID formal_argument(struct parser_params*, ID);
1419static ID formal_argument(struct parser_params*, VALUE);
1421static ID shadowing_lvar(struct parser_params*,ID);
1422static void new_bv(struct parser_params*,ID);
1424static void local_push(struct parser_params*,int);
1425static void local_pop(struct parser_params*);
1426static void local_var(struct parser_params*, ID);
1427static void arg_var(struct parser_params*, ID);
1428static int local_id(struct parser_params *p, ID id);
1429static int local_id_ref(struct parser_params*, ID, ID **);
1431static ID internal_id(struct parser_params*);
1432static NODE *new_args_forward_call(struct parser_params*, NODE*, const YYLTYPE*, const YYLTYPE*);
1434static int check_forwarding_args(struct parser_params*);
1435static void add_forwarding_args(struct parser_params *p);
1436static void forwarding_arg_check(struct parser_params *p, ID arg, ID all, const char *var);
1438static const struct vtable *dyna_push(struct parser_params *);
1439static void dyna_pop(struct parser_params*, const struct vtable *);
1440static int dyna_in_block(struct parser_params*);
1441#define dyna_var(p, id) local_var(p, id)
1442static int dvar_defined(struct parser_params*, ID);
1443static int dvar_defined_ref(struct parser_params*, ID, ID**);
1444static int dvar_curr(struct parser_params*,ID);
1446static int lvar_defined(struct parser_params*, ID);
1448static NODE *numparam_push(struct parser_params *p);
1449static void numparam_pop(struct parser_params *p, NODE *prev_inner);
1452# define METHOD_NOT idNOT
1454# define METHOD_NOT '!
'
1457#define idFWD_REST '*
'
1458#define idFWD_KWREST idPow /* Use simple "**", as tDSTAR is "**arg" */
1459#define idFWD_BLOCK '&
'
1460#define idFWD_ALL idDot3
1462#define arg_FWD_BLOCK Qnone
1464#define arg_FWD_BLOCK idFWD_BLOCK
1466#define FORWARD_ARGS_WITH_RUBY2_KEYWORDS
1468#define RE_OPTION_ONCE (1<<16)
1469#define RE_OPTION_ENCODING_SHIFT 8
1470#define RE_OPTION_ENCODING(e) (((e)&0xff)<<RE_OPTION_ENCODING_SHIFT)
1471#define RE_OPTION_ENCODING_IDX(o) (((o)>>RE_OPTION_ENCODING_SHIFT)&0xff)
1472#define RE_OPTION_ENCODING_NONE(o) ((o)&RE_OPTION_ARG_ENCODING_NONE)
1473#define RE_OPTION_MASK 0xff
1474#define RE_OPTION_ARG_ENCODING_NONE 32
1476#define yytnamerr(yyres, yystr) (YYSIZE_T)rb_yytnamerr(p, yyres, yystr)
1477size_t rb_yytnamerr(struct parser_params *p, char *yyres, const char *yystr);
1479#define TOKEN2ID(tok) ( \
1480 tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
1481 tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
1482 tTOKEN_GLOBAL_BEGIN<(tok)&&(tok)<tTOKEN_GLOBAL_END ? TOKEN2GLOBALID(tok) : \
1483 tTOKEN_CONST_BEGIN<(tok)&&(tok)<tTOKEN_CONST_END ? TOKEN2CONSTID(tok) : \
1484 tTOKEN_CLASS_BEGIN<(tok)&&(tok)<tTOKEN_CLASS_END ? TOKEN2CLASSID(tok) : \
1485 tTOKEN_ATTRSET_BEGIN<(tok)&&(tok)<tTOKEN_ATTRSET_END ? TOKEN2ATTRSETID(tok) : \
1486 ((tok) / ((tok)<tPRESERVED_ID_END && ((tok)>=128 || rb_ispunct(tok)))))
1488/****** Ripper *******/
1492#include "eventids1.h"
1493#include "eventids2.h"
1495extern const struct ripper_parser_ids ripper_parser_ids;
1497static VALUE ripper_dispatch0(struct parser_params*,ID);
1498static VALUE ripper_dispatch1(struct parser_params*,ID,VALUE);
1499static VALUE ripper_dispatch2(struct parser_params*,ID,VALUE,VALUE);
1500static VALUE ripper_dispatch3(struct parser_params*,ID,VALUE,VALUE,VALUE);
1501static VALUE ripper_dispatch4(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE);
1502static VALUE ripper_dispatch5(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE);
1503static VALUE ripper_dispatch7(struct parser_params*,ID,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE);
1504void ripper_error(struct parser_params *p);
1506#define dispatch0(n) ripper_dispatch0(p, TOKEN_PASTE(ripper_id_, n))
1507#define dispatch1(n,a) ripper_dispatch1(p, TOKEN_PASTE(ripper_id_, n), (a))
1508#define dispatch2(n,a,b) ripper_dispatch2(p, TOKEN_PASTE(ripper_id_, n), (a), (b))
1509#define dispatch3(n,a,b,c) ripper_dispatch3(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c))
1510#define dispatch4(n,a,b,c,d) ripper_dispatch4(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d))
1511#define dispatch5(n,a,b,c,d,e) ripper_dispatch5(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e))
1512#define dispatch7(n,a,b,c,d,e,f,g) ripper_dispatch7(p, TOKEN_PASTE(ripper_id_, n), (a), (b), (c), (d), (e), (f), (g))
1514#define yyparse ripper_yyparse
1516#define ID2VAL(id) STATIC_ID2SYM(id)
1517#define TOKEN2VAL(t) ID2VAL(TOKEN2ID(t))
1518#define KWD2EID(t, v) ripper_new_yylval(p, keyword_##t, get_value(v), 0)
1520#define params_new(pars, opts, rest, pars2, kws, kwrest, blk) \
1521 dispatch7(params, (pars), (opts), (rest), (pars2), (kws), (kwrest), (blk))
1524new_args(struct parser_params *p, VALUE pre_args, VALUE opt_args, VALUE rest_arg, VALUE post_args, VALUE tail, YYLTYPE *loc)
1526 struct RNode_RIPPER_VALUES *t = RNODE_RIPPER_VALUES(tail);
1527 VALUE kw_args = t->nd_val1, kw_rest_arg = t->nd_val2, block = t->nd_val3;
1528 return params_new(pre_args, opt_args, rest_arg, post_args, kw_args, kw_rest_arg, block);
1532new_args_tail(struct parser_params *p, VALUE kw_args, VALUE kw_rest_arg, VALUE block, YYLTYPE *loc)
1534 return ripper_new_yylval2(p, kw_args, kw_rest_arg, block);
1538args_with_numbered(struct parser_params *p, VALUE args, int max_numparam)
1544new_array_pattern(struct parser_params *p, VALUE constant, VALUE pre_arg, VALUE aryptn, const YYLTYPE *loc)
1546 struct RNode_RIPPER_VALUES *t = RNODE_RIPPER_VALUES(aryptn);
1547 VALUE pre_args = t->nd_val1, rest_arg = t->nd_val2, post_args = t->nd_val3;
1549 if (!NIL_P(pre_arg)) {
1550 if (!NIL_P(pre_args)) {
1551 rb_ary_unshift(pre_args, pre_arg);
1554 pre_args = rb_ary_new_from_args(1, pre_arg);
1557 return dispatch4(aryptn, constant, pre_args, rest_arg, post_args);
1561new_array_pattern_tail(struct parser_params *p, VALUE pre_args, VALUE has_rest, VALUE rest_arg, VALUE post_args, const YYLTYPE *loc)
1563 return ripper_new_yylval2(p, pre_args, rest_arg, post_args);
1567new_find_pattern(struct parser_params *p, VALUE constant, VALUE fndptn, const YYLTYPE *loc)
1569 struct RNode_RIPPER_VALUES *t = RNODE_RIPPER_VALUES(fndptn);
1570 VALUE pre_rest_arg = t->nd_val1, args = t->nd_val2, post_rest_arg = t->nd_val3;
1572 return dispatch4(fndptn, constant, pre_rest_arg, args, post_rest_arg);
1576new_find_pattern_tail(struct parser_params *p, VALUE pre_rest_arg, VALUE args, VALUE post_rest_arg, const YYLTYPE *loc)
1578 return ripper_new_yylval2(p, pre_rest_arg, args, post_rest_arg);
1581#define new_hash(p,h,l) rb_ary_new_from_args(0)
1584new_unique_key_hash(struct parser_params *p, VALUE ary, const YYLTYPE *loc)
1590new_hash_pattern(struct parser_params *p, VALUE constant, VALUE hshptn, const YYLTYPE *loc)
1592 struct RNode_RIPPER_VALUES *t = RNODE_RIPPER_VALUES(hshptn);
1593 VALUE kw_args = t->nd_val1, kw_rest_arg = t->nd_val2;
1594 return dispatch3(hshptn, constant, kw_args, kw_rest_arg);
1598new_hash_pattern_tail(struct parser_params *p, VALUE kw_args, VALUE kw_rest_arg, const YYLTYPE *loc)
1601 kw_rest_arg = dispatch1(var_field, kw_rest_arg);
1606 return ripper_new_yylval2(p, kw_args, kw_rest_arg, Qnil);
1609#define new_defined(p,expr,loc) dispatch1(defined, (expr))
1611static VALUE heredoc_dedent(struct parser_params*,VALUE);
1614#define ID2VAL(id) (id)
1615#define TOKEN2VAL(t) ID2VAL(t)
1616#define KWD2EID(t, v) keyword_##t
1619new_scope_body(struct parser_params *p, rb_node_args_t *args, NODE *body, const YYLTYPE *loc)
1621 body = remove_begin(body);
1622 reduce_nodes(p, &body);
1623 NODE *n = NEW_SCOPE(args, body, loc);
1624 nd_set_line(n, loc->end_pos.lineno);
1625 set_line_body(body, loc->beg_pos.lineno);
1630rescued_expr(struct parser_params *p, NODE *arg, NODE *rescue,
1631 const YYLTYPE *arg_loc, const YYLTYPE *mod_loc, const YYLTYPE *res_loc)
1633 YYLTYPE loc = code_loc_gen(mod_loc, res_loc);
1634 rescue = NEW_RESBODY(0, remove_begin(rescue), 0, &loc);
1635 loc.beg_pos = arg_loc->beg_pos;
1636 return NEW_RESCUE(arg, rescue, 0, &loc);
1641static NODE *add_block_exit(struct parser_params *p, NODE *node);
1642static rb_node_exits_t *init_block_exit(struct parser_params *p);
1643static rb_node_exits_t *allow_block_exit(struct parser_params *p);
1644static void restore_block_exit(struct parser_params *p, rb_node_exits_t *exits);
1645static void clear_block_exit(struct parser_params *p, bool error);
1648next_rescue_context(struct lex_context *next, const struct lex_context *outer, enum rescue_context def)
1650 next->in_rescue = outer->in_rescue == after_rescue ? after_rescue : def;
1654restore_defun(struct parser_params *p, rb_node_def_temp_t *temp)
1656 /* See: def_name action */
1657 struct lex_context ctxt = temp->save.ctxt;
1658 p->cur_arg = temp->save.cur_arg;
1659 p->ctxt.in_def = ctxt.in_def;
1660 p->ctxt.shareable_constant_value = ctxt.shareable_constant_value;
1661 p->ctxt.in_rescue = ctxt.in_rescue;
1662 p->max_numparam = temp->save.max_numparam;
1663 numparam_pop(p, temp->save.numparam_save);
1664 clear_block_exit(p, true);
1668endless_method_name(struct parser_params *p, ID mid, const YYLTYPE *loc)
1670 if (is_attrset_id(mid)) {
1671 yyerror1(loc, "setter method cannot be defined in an endless method definition");
1673 token_info_drop(p, "def", loc->beg_pos);
1676#define debug_token_line(p, name, line) do { \
1678 const char *const pcur = p->lex.pcur; \
1679 const char *const ptok = p->lex.ptok; \
1680 rb_parser_printf(p, name ":%d (%d: %"PRIdPTRDIFF"|%"PRIdPTRDIFF"|%"PRIdPTRDIFF")\n", \
1681 line, p->ruby_sourceline, \
1682 ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur); \
1686#define begin_definition(k, loc_beg, loc_end) \
1688 if (!(p->ctxt.in_class = (k)[0] != 0)) { \
1689 p->ctxt.in_def = 0; \
1691 else if (p->ctxt.in_def) { \
1692 YYLTYPE loc = code_loc_gen(loc_beg, loc_end); \
1693 yyerror1(&loc, k " definition in method body"); \
1701# define ifndef_ripper(x) (x)
1704# define Qnull Qundef
1705# define ifndef_ripper(x)
1708# define rb_warn0(fmt) WARN_CALL(WARN_ARGS(fmt, 1))
1709# define rb_warn1(fmt,a) WARN_CALL(WARN_ARGS(fmt, 2), (a))
1710# define rb_warn2(fmt,a,b) WARN_CALL(WARN_ARGS(fmt, 3), (a), (b))
1711# define rb_warn3(fmt,a,b,c) WARN_CALL(WARN_ARGS(fmt, 4), (a), (b), (c))
1712# define rb_warn4(fmt,a,b,c,d) WARN_CALL(WARN_ARGS(fmt, 5), (a), (b), (c), (d))
1713# define rb_warning0(fmt) WARNING_CALL(WARNING_ARGS(fmt, 1))
1714# define rb_warning1(fmt,a) WARNING_CALL(WARNING_ARGS(fmt, 2), (a))
1715# define rb_warning2(fmt,a,b) WARNING_CALL(WARNING_ARGS(fmt, 3), (a), (b))
1716# define rb_warning3(fmt,a,b,c) WARNING_CALL(WARNING_ARGS(fmt, 4), (a), (b), (c))
1717# define rb_warning4(fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS(fmt, 5), (a), (b), (c), (d))
1718# define rb_warn0L(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1719# define rb_warn1L(l,fmt,a) WARN_CALL(WARN_ARGS_L(l, fmt, 2), (a))
1720# define rb_warn2L(l,fmt,a,b) WARN_CALL(WARN_ARGS_L(l, fmt, 3), (a), (b))
1721# define rb_warn3L(l,fmt,a,b,c) WARN_CALL(WARN_ARGS_L(l, fmt, 4), (a), (b), (c))
1722# define rb_warn4L(l,fmt,a,b,c,d) WARN_CALL(WARN_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1723# define rb_warning0L(l,fmt) WARNING_CALL(WARNING_ARGS_L(l, fmt, 1))
1724# define rb_warning1L(l,fmt,a) WARNING_CALL(WARNING_ARGS_L(l, fmt, 2), (a))
1725# define rb_warning2L(l,fmt,a,b) WARNING_CALL(WARNING_ARGS_L(l, fmt, 3), (a), (b))
1726# define rb_warning3L(l,fmt,a,b,c) WARNING_CALL(WARNING_ARGS_L(l, fmt, 4), (a), (b), (c))
1727# define rb_warning4L(l,fmt,a,b,c,d) WARNING_CALL(WARNING_ARGS_L(l, fmt, 5), (a), (b), (c), (d))
1729extern const ID id_warn, id_warning, id_gets, id_assoc;
1730# define ERR_MESG() STR_NEW2(mesg) /* to bypass Ripper DSL */
1731# define WARN_S_L(s,l) STR_NEW(s,l)
1732# define WARN_S(s) STR_NEW2(s)
1733# define WARN_I(i) INT2NUM(i)
1734# define WARN_ID(i) rb_id2str(i)
1735# define WARN_IVAL(i) i
1736# define PRIsWARN "s"
1737# define rb_warn0L_experimental(l,fmt) WARN_CALL(WARN_ARGS_L(l, fmt, 1))
1738# define WARN_ARGS(fmt,n) p->value, id_warn, n, rb_usascii_str_new_lit(fmt)
1739# define WARN_ARGS_L(l,fmt,n) WARN_ARGS(fmt,n)
1740# ifdef HAVE_VA_ARGS_MACRO
1741# define WARN_CALL(...) rb_funcall(__VA_ARGS__)
1743# define WARN_CALL rb_funcall
1745# define WARNING_ARGS(fmt,n) p->value, id_warning, n, rb_usascii_str_new_lit(fmt)
1746# define WARNING_ARGS_L(l, fmt,n) WARNING_ARGS(fmt,n)
1747# ifdef HAVE_VA_ARGS_MACRO
1748# define WARNING_CALL(...) rb_funcall(__VA_ARGS__)
1750# define WARNING_CALL rb_funcall
1752# define compile_error ripper_compile_error
1754# define WARN_S_L(s,l) s
1757# define WARN_ID(i) rb_id2name(i)
1758# define WARN_IVAL(i) NUM2INT(i)
1759# define PRIsWARN PRIsVALUE
1760# define WARN_ARGS(fmt,n) WARN_ARGS_L(p->ruby_sourceline,fmt,n)
1761# define WARN_ARGS_L(l,fmt,n) p->ruby_sourcefile, (l), (fmt)
1762# define WARN_CALL rb_compile_warn
1763# define rb_warn0L_experimental(l,fmt) rb_category_compile_warn(RB_WARN_CATEGORY_EXPERIMENTAL, WARN_ARGS_L(l, fmt, 1))
1764# define WARNING_ARGS(fmt,n) WARN_ARGS(fmt,n)
1765# define WARNING_ARGS_L(l,fmt,n) WARN_ARGS_L(l,fmt,n)
1766# define WARNING_CALL rb_compile_warning
1767PRINTF_ARGS(static void parser_compile_error(struct parser_params*, const rb_code_location_t *loc, const char *fmt, ...), 3, 4);
1768# define compile_error(p, ...) parser_compile_error(p, NULL, __VA_ARGS__)
1774 NODE *nd_chain; /* Assume NODE_BREAK, NODE_NEXT, NODE_REDO have nd_chain here */
1778#define RNODE_EXITS(node) ((rb_node_exits_t*)(node))
1781add_block_exit(struct parser_params *p, NODE *node)
1784 compile_error(p, "unexpected null node");
1787 switch (nd_type(node)) {
1788 case NODE_BREAK: case NODE_NEXT: case NODE_REDO: break;
1790 compile_error(p, "unexpected node: %s", parser_node_name(nd_type(node)));
1793 if (!p->ctxt.in_defined) {
1794 rb_node_exits_t *exits = p->exits;
1796 RNODE_EXITS(exits->nd_end)->nd_chain = node;
1797 exits->nd_end = node;
1803static rb_node_exits_t *
1804init_block_exit(struct parser_params *p)
1806 rb_node_exits_t *old = p->exits;
1807 rb_node_exits_t *exits = NODE_NEW_INTERNAL(NODE_EXITS, rb_node_exits_t);
1808 exits->nd_chain = 0;
1809 exits->nd_end = RNODE(exits);
1814static rb_node_exits_t *
1815allow_block_exit(struct parser_params *p)
1817 rb_node_exits_t *exits = p->exits;
1823restore_block_exit(struct parser_params *p, rb_node_exits_t *exits)
1829clear_block_exit(struct parser_params *p, bool error)
1831 rb_node_exits_t *exits = p->exits;
1833 if (error && !compile_for_eval) {
1834 for (NODE *e = RNODE(exits); (e = RNODE_EXITS(e)->nd_chain) != 0; ) {
1835 switch (nd_type(e)) {
1837 yyerror1(&e->nd_loc, "Invalid break");
1840 yyerror1(&e->nd_loc, "Invalid next");
1843 yyerror1(&e->nd_loc, "Invalid redo");
1846 yyerror1(&e->nd_loc, "unexpected node");
1847 goto end_checks; /* no nd_chain */
1852 exits->nd_end = RNODE(exits);
1853 exits->nd_chain = 0;
1856#define WARN_EOL(tok) \
1857 (looking_at_eol_p(p) ? \
1858 (void)rb_warning0("`" tok "' at the end of line without an expression
") : \
1860static int looking_at_eol_p(struct parser_params *p);
1864get_nd_value(struct parser_params *p, NODE *node)
1866 switch (nd_type(node)) {
1868 return RNODE_GASGN(node)->nd_value;
1870 return RNODE_IASGN(node)->nd_value;
1872 return RNODE_LASGN(node)->nd_value;
1874 return RNODE_DASGN(node)->nd_value;
1876 return RNODE_MASGN(node)->nd_value;
1878 return RNODE_CVASGN(node)->nd_value;
1880 return RNODE_CDECL(node)->nd_value;
1882 compile_error(p, "unexpected node: %s
", parser_node_name(nd_type(node)));
1888set_nd_value(struct parser_params *p, NODE *node, NODE *rhs)
1890 switch (nd_type(node)) {
1892 RNODE_CDECL(node)->nd_value = rhs;
1895 RNODE_GASGN(node)->nd_value = rhs;
1898 RNODE_IASGN(node)->nd_value = rhs;
1901 RNODE_LASGN(node)->nd_value = rhs;
1904 RNODE_DASGN(node)->nd_value = rhs;
1907 RNODE_MASGN(node)->nd_value = rhs;
1910 RNODE_CVASGN(node)->nd_value = rhs;
1913 compile_error(p, "unexpected node: %s
", parser_node_name(nd_type(node)));
1919get_nd_vid(struct parser_params *p, NODE *node)
1921 switch (nd_type(node)) {
1923 return RNODE_CDECL(node)->nd_vid;
1925 return RNODE_GASGN(node)->nd_vid;
1927 return RNODE_IASGN(node)->nd_vid;
1929 return RNODE_LASGN(node)->nd_vid;
1931 return RNODE_DASGN(node)->nd_vid;
1933 return RNODE_CVASGN(node)->nd_vid;
1935 compile_error(p, "unexpected node: %s
", parser_node_name(nd_type(node)));
1941get_nd_args(struct parser_params *p, NODE *node)
1943 switch (nd_type(node)) {
1945 return RNODE_CALL(node)->nd_args;
1947 return RNODE_OPCALL(node)->nd_args;
1949 return RNODE_FCALL(node)->nd_args;
1951 return RNODE_QCALL(node)->nd_args;
1961 compile_error(p, "unexpected node: %s
", parser_node_name(nd_type(node)));
1971# define YY_CAST(Type, Val) static_cast<Type> (Val)
1972# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
1974# define YY_CAST(Type, Val) ((Type) (Val))
1975# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
1979# if defined __cplusplus
1980# if 201103L <= __cplusplus
1981# define YY_NULLPTR nullptr
1983# define YY_NULLPTR 0
1986# define YY_NULLPTR ((void*)0)
1994 YYSYMBOL_YYEMPTY = -2,
1995 YYSYMBOL_YYEOF = 0, /* "end-of-input
" */
1996 YYSYMBOL_YYerror = 1, /* error */
1997 YYSYMBOL_YYUNDEF = 2, /* "invalid token
" */
1998 YYSYMBOL_keyword_class = 3, /* "`class
'" */
1999 YYSYMBOL_keyword_module = 4, /* "`module'" */
2000 YYSYMBOL_keyword_def = 5, /* "`def
'" */
2001 YYSYMBOL_keyword_undef = 6, /* "`undef'" */
2002 YYSYMBOL_keyword_begin = 7, /* "`begin
'" */
2003 YYSYMBOL_keyword_rescue = 8, /* "`rescue'" */
2004 YYSYMBOL_keyword_ensure = 9, /* "`ensure
'" */
2005 YYSYMBOL_keyword_end = 10, /* "`end'" */
2006 YYSYMBOL_keyword_if = 11, /* "`if
'" */
2007 YYSYMBOL_keyword_unless = 12, /* "`unless'" */
2008 YYSYMBOL_keyword_then = 13, /* "`then
'" */
2009 YYSYMBOL_keyword_elsif = 14, /* "`elsif'" */
2010 YYSYMBOL_keyword_else = 15, /* "`else
'" */
2011 YYSYMBOL_keyword_case = 16, /* "`case'" */
2012 YYSYMBOL_keyword_when = 17, /* "`when
'" */
2013 YYSYMBOL_keyword_while = 18, /* "`while'" */
2014 YYSYMBOL_keyword_until = 19, /* "`until
'" */
2015 YYSYMBOL_keyword_for = 20, /* "`for'" */
2016 YYSYMBOL_keyword_break = 21, /* "`break
'" */
2017 YYSYMBOL_keyword_next = 22, /* "`next'" */
2018 YYSYMBOL_keyword_redo = 23, /* "`redo
'" */
2019 YYSYMBOL_keyword_retry = 24, /* "`retry'" */
2020 YYSYMBOL_keyword_in = 25, /* "`in
'" */
2021 YYSYMBOL_keyword_do = 26, /* "`do'" */
2022 YYSYMBOL_keyword_do_cond = 27, /* "`do
' for condition" */
2023 YYSYMBOL_keyword_do_block = 28, /* "`do' for block
" */
2024 YYSYMBOL_keyword_do_LAMBDA = 29, /* "`do
' for lambda" */
2025 YYSYMBOL_keyword_return = 30, /* "`return'" */
2026 YYSYMBOL_keyword_yield = 31, /* "`yield
'" */
2027 YYSYMBOL_keyword_super = 32, /* "`super'" */
2028 YYSYMBOL_keyword_self = 33, /* "`self
'" */
2029 YYSYMBOL_keyword_nil = 34, /* "`nil'" */
2030 YYSYMBOL_keyword_true = 35, /* "`true
'" */
2031 YYSYMBOL_keyword_false = 36, /* "`false'" */
2032 YYSYMBOL_keyword_and = 37, /* "`and
'" */
2033 YYSYMBOL_keyword_or = 38, /* "`or'" */
2034 YYSYMBOL_keyword_not = 39, /* "`not
'" */
2035 YYSYMBOL_modifier_if = 40, /* "`if' modifier
" */
2036 YYSYMBOL_modifier_unless = 41, /* "`unless
' modifier" */
2037 YYSYMBOL_modifier_while = 42, /* "`while' modifier
" */
2038 YYSYMBOL_modifier_until = 43, /* "`until
' modifier" */
2039 YYSYMBOL_modifier_rescue = 44, /* "`rescue' modifier
" */
2040 YYSYMBOL_keyword_alias = 45, /* "`alias
'" */
2041 YYSYMBOL_keyword_defined = 46, /* "`defined?'" */
2042 YYSYMBOL_keyword_BEGIN = 47, /* "`BEGIN
'" */
2043 YYSYMBOL_keyword_END = 48, /* "`END'" */
2044 YYSYMBOL_keyword__LINE__ = 49, /* "`__LINE__
'" */
2045 YYSYMBOL_keyword__FILE__ = 50, /* "`__FILE__'" */
2046 YYSYMBOL_keyword__ENCODING__ = 51, /* "`__ENCODING__
'" */
2047 YYSYMBOL_tIDENTIFIER = 52, /* "local variable or method" */
2048 YYSYMBOL_tFID = 53, /* "method" */
2049 YYSYMBOL_tGVAR = 54, /* "global variable" */
2050 YYSYMBOL_tIVAR = 55, /* "instance variable" */
2051 YYSYMBOL_tCONSTANT = 56, /* "constant" */
2052 YYSYMBOL_tCVAR = 57, /* "class variable" */
2053 YYSYMBOL_tLABEL = 58, /* "label" */
2054 YYSYMBOL_tINTEGER = 59, /* "integer literal" */
2055 YYSYMBOL_tFLOAT = 60, /* "float literal" */
2056 YYSYMBOL_tRATIONAL = 61, /* "rational literal" */
2057 YYSYMBOL_tIMAGINARY = 62, /* "imaginary literal" */
2058 YYSYMBOL_tCHAR = 63, /* "char literal" */
2059 YYSYMBOL_tNTH_REF = 64, /* "numbered reference" */
2060 YYSYMBOL_tBACK_REF = 65, /* "back reference" */
2061 YYSYMBOL_tSTRING_CONTENT = 66, /* "literal content" */
2062 YYSYMBOL_tREGEXP_END = 67, /* tREGEXP_END */
2063 YYSYMBOL_tDUMNY_END = 68, /* "dummy end" */
2064 YYSYMBOL_69_ = 69, /* '.
' */
2065 YYSYMBOL_70_backslash_ = 70, /* "backslash" */
2066 YYSYMBOL_tSP = 71, /* "escaped space" */
2067 YYSYMBOL_72_escaped_horizontal_tab_ = 72, /* "escaped horizontal tab" */
2068 YYSYMBOL_73_escaped_form_feed_ = 73, /* "escaped form feed" */
2069 YYSYMBOL_74_escaped_carriage_return_ = 74, /* "escaped carriage return" */
2070 YYSYMBOL_75_escaped_vertical_tab_ = 75, /* "escaped vertical tab" */
2071 YYSYMBOL_tUPLUS = 76, /* "unary+" */
2072 YYSYMBOL_tUMINUS = 77, /* "unary-" */
2073 YYSYMBOL_tPOW = 78, /* "**" */
2074 YYSYMBOL_tCMP = 79, /* "<=>" */
2075 YYSYMBOL_tEQ = 80, /* "==" */
2076 YYSYMBOL_tEQQ = 81, /* "===" */
2077 YYSYMBOL_tNEQ = 82, /* "!=" */
2078 YYSYMBOL_tGEQ = 83, /* ">=" */
2079 YYSYMBOL_tLEQ = 84, /* "<=" */
2080 YYSYMBOL_tANDOP = 85, /* "&&" */
2081 YYSYMBOL_tOROP = 86, /* "||" */
2082 YYSYMBOL_tMATCH = 87, /* "=~" */
2083 YYSYMBOL_tNMATCH = 88, /* "!~" */
2084 YYSYMBOL_tDOT2 = 89, /* ".." */
2085 YYSYMBOL_tDOT3 = 90, /* "..." */
2086 YYSYMBOL_tBDOT2 = 91, /* "(.." */
2087 YYSYMBOL_tBDOT3 = 92, /* "(..." */
2088 YYSYMBOL_tAREF = 93, /* "[]" */
2089 YYSYMBOL_tASET = 94, /* "[]=" */
2090 YYSYMBOL_tLSHFT = 95, /* "<<" */
2091 YYSYMBOL_tRSHFT = 96, /* ">>" */
2092 YYSYMBOL_tANDDOT = 97, /* "&." */
2093 YYSYMBOL_tCOLON2 = 98, /* "::" */
2094 YYSYMBOL_tCOLON3 = 99, /* ":: at EXPR_BEG" */
2095 YYSYMBOL_tOP_ASGN = 100, /* "operator-assignment" */
2096 YYSYMBOL_tASSOC = 101, /* "=>" */
2097 YYSYMBOL_tLPAREN = 102, /* "(" */
2098 YYSYMBOL_tLPAREN_ARG = 103, /* "( arg" */
2099 YYSYMBOL_tRPAREN = 104, /* ")" */
2100 YYSYMBOL_tLBRACK = 105, /* "[" */
2101 YYSYMBOL_tLBRACE = 106, /* "{" */
2102 YYSYMBOL_tLBRACE_ARG = 107, /* "{ arg" */
2103 YYSYMBOL_tSTAR = 108, /* "*" */
2104 YYSYMBOL_tDSTAR = 109, /* "**arg" */
2105 YYSYMBOL_tAMPER = 110, /* "&" */
2106 YYSYMBOL_tLAMBDA = 111, /* "->" */
2107 YYSYMBOL_tSYMBEG = 112, /* "symbol literal" */
2108 YYSYMBOL_tSTRING_BEG = 113, /* "string literal" */
2109 YYSYMBOL_tXSTRING_BEG = 114, /* "backtick literal" */
2110 YYSYMBOL_tREGEXP_BEG = 115, /* "regexp literal" */
2111 YYSYMBOL_tWORDS_BEG = 116, /* "word list" */
2112 YYSYMBOL_tQWORDS_BEG = 117, /* "verbatim word list" */
2113 YYSYMBOL_tSYMBOLS_BEG = 118, /* "symbol list" */
2114 YYSYMBOL_tQSYMBOLS_BEG = 119, /* "verbatim symbol list" */
2115 YYSYMBOL_tSTRING_END = 120, /* "terminator" */
2116 YYSYMBOL_tSTRING_DEND = 121, /* "'}
'" */
2117 YYSYMBOL_tSTRING_DBEG = 122, /* tSTRING_DBEG */
2118 YYSYMBOL_tSTRING_DVAR = 123, /* tSTRING_DVAR */
2119 YYSYMBOL_tLAMBEG = 124, /* tLAMBEG */
2120 YYSYMBOL_tLABEL_END = 125, /* tLABEL_END */
2121 YYSYMBOL_tIGNORED_NL = 126, /* tIGNORED_NL */
2122 YYSYMBOL_tCOMMENT = 127, /* tCOMMENT */
2123 YYSYMBOL_tEMBDOC_BEG = 128, /* tEMBDOC_BEG */
2124 YYSYMBOL_tEMBDOC = 129, /* tEMBDOC */
2125 YYSYMBOL_tEMBDOC_END = 130, /* tEMBDOC_END */
2126 YYSYMBOL_tHEREDOC_BEG = 131, /* tHEREDOC_BEG */
2127 YYSYMBOL_tHEREDOC_END = 132, /* tHEREDOC_END */
2128 YYSYMBOL_k__END__ = 133, /* k__END__ */
2129 YYSYMBOL_tLOWEST = 134, /* tLOWEST */
2130 YYSYMBOL_135_ = 135, /* '=
' */
2131 YYSYMBOL_136_ = 136, /* '?
' */
2132 YYSYMBOL_137_ = 137, /* ':
' */
2133 YYSYMBOL_138_ = 138, /* '>
' */
2134 YYSYMBOL_139_ = 139, /* '<
' */
2135 YYSYMBOL_140_ = 140, /* '|
' */
2136 YYSYMBOL_141_ = 141, /* '^
' */
2137 YYSYMBOL_142_ = 142, /* '&
' */
2138 YYSYMBOL_143_ = 143, /* '+
' */
2139 YYSYMBOL_144_ = 144, /* '-
' */
2140 YYSYMBOL_145_ = 145, /* '*
' */
2141 YYSYMBOL_146_ = 146, /* '/
' */
2142 YYSYMBOL_147_ = 147, /* '%
' */
2143 YYSYMBOL_tUMINUS_NUM = 148, /* tUMINUS_NUM */
2144 YYSYMBOL_149_ = 149, /* '!
' */
2145 YYSYMBOL_150_ = 150, /* '~
' */
2146 YYSYMBOL_tLAST_TOKEN = 151, /* tLAST_TOKEN */
2147 YYSYMBOL_152_ = 152, /* '{
' */
2148 YYSYMBOL_153_ = 153, /* '}
' */
2149 YYSYMBOL_154_ = 154, /* '[
' */
2150 YYSYMBOL_155_ = 155, /* ',
' */
2151 YYSYMBOL_156_ = 156, /* '`
' */
2152 YYSYMBOL_157_ = 157, /* '(
' */
2153 YYSYMBOL_158_ = 158, /* ')
' */
2154 YYSYMBOL_159_ = 159, /* ']
' */
2155 YYSYMBOL_160_ = 160, /* ';
' */
2156 YYSYMBOL_161_ = 161, /* ' ' */
2157 YYSYMBOL_162_n_ = 162, /* '\n
' */
2158 YYSYMBOL_YYACCEPT = 163, /* $accept */
2159 YYSYMBOL_program = 164, /* program */
2160 YYSYMBOL_165_1 = 165, /* $@1 */
2161 YYSYMBOL_top_compstmt = 166, /* top_compstmt */
2162 YYSYMBOL_top_stmts = 167, /* top_stmts */
2163 YYSYMBOL_top_stmt = 168, /* top_stmt */
2164 YYSYMBOL_block_open = 169, /* block_open */
2165 YYSYMBOL_begin_block = 170, /* begin_block */
2166 YYSYMBOL_bodystmt = 171, /* bodystmt */
2167 YYSYMBOL_172_2 = 172, /* $@2 */
2168 YYSYMBOL_173_3 = 173, /* $@3 */
2169 YYSYMBOL_174_4 = 174, /* $@4 */
2170 YYSYMBOL_compstmt = 175, /* compstmt */
2171 YYSYMBOL_stmts = 176, /* stmts */
2172 YYSYMBOL_stmt_or_begin = 177, /* stmt_or_begin */
2173 YYSYMBOL_178_5 = 178, /* $@5 */
2174 YYSYMBOL_allow_exits = 179, /* allow_exits */
2175 YYSYMBOL_k_END = 180, /* k_END */
2176 YYSYMBOL_stmt = 181, /* stmt */
2177 YYSYMBOL_182_6 = 182, /* $@6 */
2178 YYSYMBOL_command_asgn = 183, /* command_asgn */
2179 YYSYMBOL_endless_command = 184, /* endless_command */
2180 YYSYMBOL_command_rhs = 185, /* command_rhs */
2181 YYSYMBOL_expr = 186, /* expr */
2182 YYSYMBOL_187_7 = 187, /* $@7 */
2183 YYSYMBOL_188_8 = 188, /* $@8 */
2184 YYSYMBOL_def_name = 189, /* def_name */
2185 YYSYMBOL_defn_head = 190, /* defn_head */
2186 YYSYMBOL_defs_head = 191, /* defs_head */
2187 YYSYMBOL_192_9 = 192, /* $@9 */
2188 YYSYMBOL_expr_value = 193, /* expr_value */
2189 YYSYMBOL_expr_value_do = 194, /* expr_value_do */
2190 YYSYMBOL_195_10 = 195, /* $@10 */
2191 YYSYMBOL_196_11 = 196, /* $@11 */
2192 YYSYMBOL_command_call = 197, /* command_call */
2193 YYSYMBOL_block_command = 198, /* block_command */
2194 YYSYMBOL_cmd_brace_block = 199, /* cmd_brace_block */
2195 YYSYMBOL_fcall = 200, /* fcall */
2196 YYSYMBOL_command = 201, /* command */
2197 YYSYMBOL_mlhs = 202, /* mlhs */
2198 YYSYMBOL_mlhs_inner = 203, /* mlhs_inner */
2199 YYSYMBOL_mlhs_basic = 204, /* mlhs_basic */
2200 YYSYMBOL_mlhs_item = 205, /* mlhs_item */
2201 YYSYMBOL_mlhs_head = 206, /* mlhs_head */
2202 YYSYMBOL_mlhs_post = 207, /* mlhs_post */
2203 YYSYMBOL_mlhs_node = 208, /* mlhs_node */
2204 YYSYMBOL_lhs = 209, /* lhs */
2205 YYSYMBOL_cname = 210, /* cname */
2206 YYSYMBOL_cpath = 211, /* cpath */
2207 YYSYMBOL_fname = 212, /* fname */
2208 YYSYMBOL_fitem = 213, /* fitem */
2209 YYSYMBOL_undef_list = 214, /* undef_list */
2210 YYSYMBOL_215_12 = 215, /* $@12 */
2211 YYSYMBOL_op = 216, /* op */
2212 YYSYMBOL_reswords = 217, /* reswords */
2213 YYSYMBOL_arg = 218, /* arg */
2214 YYSYMBOL_endless_arg = 219, /* endless_arg */
2215 YYSYMBOL_relop = 220, /* relop */
2216 YYSYMBOL_rel_expr = 221, /* rel_expr */
2217 YYSYMBOL_lex_ctxt = 222, /* lex_ctxt */
2218 YYSYMBOL_begin_defined = 223, /* begin_defined */
2219 YYSYMBOL_after_rescue = 224, /* after_rescue */
2220 YYSYMBOL_arg_value = 225, /* arg_value */
2221 YYSYMBOL_aref_args = 226, /* aref_args */
2222 YYSYMBOL_arg_rhs = 227, /* arg_rhs */
2223 YYSYMBOL_paren_args = 228, /* paren_args */
2224 YYSYMBOL_opt_paren_args = 229, /* opt_paren_args */
2225 YYSYMBOL_opt_call_args = 230, /* opt_call_args */
2226 YYSYMBOL_call_args = 231, /* call_args */
2227 YYSYMBOL_command_args = 232, /* command_args */
2228 YYSYMBOL_233_13 = 233, /* $@13 */
2229 YYSYMBOL_block_arg = 234, /* block_arg */
2230 YYSYMBOL_opt_block_arg = 235, /* opt_block_arg */
2231 YYSYMBOL_args = 236, /* args */
2232 YYSYMBOL_arg_splat = 237, /* arg_splat */
2233 YYSYMBOL_mrhs_arg = 238, /* mrhs_arg */
2234 YYSYMBOL_mrhs = 239, /* mrhs */
2235 YYSYMBOL_primary = 240, /* primary */
2236 YYSYMBOL_241_14 = 241, /* $@14 */
2237 YYSYMBOL_242_15 = 242, /* $@15 */
2238 YYSYMBOL_243_16 = 243, /* @16 */
2239 YYSYMBOL_244_17 = 244, /* @17 */
2240 YYSYMBOL_245_18 = 245, /* $@18 */
2241 YYSYMBOL_246_19 = 246, /* $@19 */
2242 YYSYMBOL_247_20 = 247, /* $@20 */
2243 YYSYMBOL_248_21 = 248, /* $@21 */
2244 YYSYMBOL_249_22 = 249, /* $@22 */
2245 YYSYMBOL_primary_value = 250, /* primary_value */
2246 YYSYMBOL_k_begin = 251, /* k_begin */
2247 YYSYMBOL_k_if = 252, /* k_if */
2248 YYSYMBOL_k_unless = 253, /* k_unless */
2249 YYSYMBOL_k_while = 254, /* k_while */
2250 YYSYMBOL_k_until = 255, /* k_until */
2251 YYSYMBOL_k_case = 256, /* k_case */
2252 YYSYMBOL_k_for = 257, /* k_for */
2253 YYSYMBOL_k_class = 258, /* k_class */
2254 YYSYMBOL_k_module = 259, /* k_module */
2255 YYSYMBOL_k_def = 260, /* k_def */
2256 YYSYMBOL_k_do = 261, /* k_do */
2257 YYSYMBOL_k_do_block = 262, /* k_do_block */
2258 YYSYMBOL_k_rescue = 263, /* k_rescue */
2259 YYSYMBOL_k_ensure = 264, /* k_ensure */
2260 YYSYMBOL_k_when = 265, /* k_when */
2261 YYSYMBOL_k_else = 266, /* k_else */
2262 YYSYMBOL_k_elsif = 267, /* k_elsif */
2263 YYSYMBOL_k_end = 268, /* k_end */
2264 YYSYMBOL_k_return = 269, /* k_return */
2265 YYSYMBOL_k_yield = 270, /* k_yield */
2266 YYSYMBOL_then = 271, /* then */
2267 YYSYMBOL_do = 272, /* do */
2268 YYSYMBOL_if_tail = 273, /* if_tail */
2269 YYSYMBOL_opt_else = 274, /* opt_else */
2270 YYSYMBOL_for_var = 275, /* for_var */
2271 YYSYMBOL_f_marg = 276, /* f_marg */
2272 YYSYMBOL_f_marg_list = 277, /* f_marg_list */
2273 YYSYMBOL_f_margs = 278, /* f_margs */
2274 YYSYMBOL_f_rest_marg = 279, /* f_rest_marg */
2275 YYSYMBOL_f_any_kwrest = 280, /* f_any_kwrest */
2276 YYSYMBOL_f_eq = 281, /* f_eq */
2277 YYSYMBOL_282_23 = 282, /* $@23 */
2278 YYSYMBOL_block_args_tail = 283, /* block_args_tail */
2279 YYSYMBOL_opt_block_args_tail = 284, /* opt_block_args_tail */
2280 YYSYMBOL_excessed_comma = 285, /* excessed_comma */
2281 YYSYMBOL_block_param = 286, /* block_param */
2282 YYSYMBOL_opt_block_param = 287, /* opt_block_param */
2283 YYSYMBOL_block_param_def = 288, /* block_param_def */
2284 YYSYMBOL_opt_bv_decl = 289, /* opt_bv_decl */
2285 YYSYMBOL_bv_decls = 290, /* bv_decls */
2286 YYSYMBOL_bvar = 291, /* bvar */
2287 YYSYMBOL_max_numparam = 292, /* max_numparam */
2288 YYSYMBOL_numparam = 293, /* numparam */
2289 YYSYMBOL_lambda = 294, /* lambda */
2290 YYSYMBOL_295_24 = 295, /* @24 */
2291 YYSYMBOL_296_25 = 296, /* $@25 */
2292 YYSYMBOL_f_larglist = 297, /* f_larglist */
2293 YYSYMBOL_lambda_body = 298, /* lambda_body */
2294 YYSYMBOL_299_26 = 299, /* $@26 */
2295 YYSYMBOL_do_block = 300, /* do_block */
2296 YYSYMBOL_block_call = 301, /* block_call */
2297 YYSYMBOL_method_call = 302, /* method_call */
2298 YYSYMBOL_brace_block = 303, /* brace_block */
2299 YYSYMBOL_brace_body = 304, /* brace_body */
2300 YYSYMBOL_305_27 = 305, /* @27 */
2301 YYSYMBOL_do_body = 306, /* do_body */
2302 YYSYMBOL_307_28 = 307, /* @28 */
2303 YYSYMBOL_case_args = 308, /* case_args */
2304 YYSYMBOL_case_body = 309, /* case_body */
2305 YYSYMBOL_cases = 310, /* cases */
2306 YYSYMBOL_p_pvtbl = 311, /* p_pvtbl */
2307 YYSYMBOL_p_pktbl = 312, /* p_pktbl */
2308 YYSYMBOL_p_in_kwarg = 313, /* p_in_kwarg */
2309 YYSYMBOL_p_case_body = 314, /* p_case_body */
2310 YYSYMBOL_315_29 = 315, /* $@29 */
2311 YYSYMBOL_p_cases = 316, /* p_cases */
2312 YYSYMBOL_p_top_expr = 317, /* p_top_expr */
2313 YYSYMBOL_p_top_expr_body = 318, /* p_top_expr_body */
2314 YYSYMBOL_p_expr = 319, /* p_expr */
2315 YYSYMBOL_p_as = 320, /* p_as */
2316 YYSYMBOL_p_alt = 321, /* p_alt */
2317 YYSYMBOL_p_lparen = 322, /* p_lparen */
2318 YYSYMBOL_p_lbracket = 323, /* p_lbracket */
2319 YYSYMBOL_p_expr_basic = 324, /* p_expr_basic */
2320 YYSYMBOL_325_30 = 325, /* $@30 */
2321 YYSYMBOL_p_args = 326, /* p_args */
2322 YYSYMBOL_p_args_head = 327, /* p_args_head */
2323 YYSYMBOL_p_args_tail = 328, /* p_args_tail */
2324 YYSYMBOL_p_find = 329, /* p_find */
2325 YYSYMBOL_p_rest = 330, /* p_rest */
2326 YYSYMBOL_p_args_post = 331, /* p_args_post */
2327 YYSYMBOL_p_arg = 332, /* p_arg */
2328 YYSYMBOL_p_kwargs = 333, /* p_kwargs */
2329 YYSYMBOL_p_kwarg = 334, /* p_kwarg */
2330 YYSYMBOL_p_kw = 335, /* p_kw */
2331 YYSYMBOL_p_kw_label = 336, /* p_kw_label */
2332 YYSYMBOL_p_kwrest = 337, /* p_kwrest */
2333 YYSYMBOL_p_kwnorest = 338, /* p_kwnorest */
2334 YYSYMBOL_p_any_kwrest = 339, /* p_any_kwrest */
2335 YYSYMBOL_p_value = 340, /* p_value */
2336 YYSYMBOL_p_primitive = 341, /* p_primitive */
2337 YYSYMBOL_p_variable = 342, /* p_variable */
2338 YYSYMBOL_p_var_ref = 343, /* p_var_ref */
2339 YYSYMBOL_p_expr_ref = 344, /* p_expr_ref */
2340 YYSYMBOL_p_const = 345, /* p_const */
2341 YYSYMBOL_opt_rescue = 346, /* opt_rescue */
2342 YYSYMBOL_exc_list = 347, /* exc_list */
2343 YYSYMBOL_exc_var = 348, /* exc_var */
2344 YYSYMBOL_opt_ensure = 349, /* opt_ensure */
2345 YYSYMBOL_literal = 350, /* literal */
2346 YYSYMBOL_strings = 351, /* strings */
2347 YYSYMBOL_string = 352, /* string */
2348 YYSYMBOL_string1 = 353, /* string1 */
2349 YYSYMBOL_xstring = 354, /* xstring */
2350 YYSYMBOL_regexp = 355, /* regexp */
2351 YYSYMBOL_words_sep = 356, /* words_sep */
2352 YYSYMBOL_words = 357, /* words */
2353 YYSYMBOL_word_list = 358, /* word_list */
2354 YYSYMBOL_word = 359, /* word */
2355 YYSYMBOL_symbols = 360, /* symbols */
2356 YYSYMBOL_symbol_list = 361, /* symbol_list */
2357 YYSYMBOL_qwords = 362, /* qwords */
2358 YYSYMBOL_qsymbols = 363, /* qsymbols */
2359 YYSYMBOL_qword_list = 364, /* qword_list */
2360 YYSYMBOL_qsym_list = 365, /* qsym_list */
2361 YYSYMBOL_string_contents = 366, /* string_contents */
2362 YYSYMBOL_xstring_contents = 367, /* xstring_contents */
2363 YYSYMBOL_regexp_contents = 368, /* regexp_contents */
2364 YYSYMBOL_string_content = 369, /* string_content */
2365 YYSYMBOL_370_31 = 370, /* @31 */
2366 YYSYMBOL_371_32 = 371, /* @32 */
2367 YYSYMBOL_372_33 = 372, /* @33 */
2368 YYSYMBOL_373_34 = 373, /* @34 */
2369 YYSYMBOL_string_dend = 374, /* string_dend */
2370 YYSYMBOL_string_dvar = 375, /* string_dvar */
2371 YYSYMBOL_symbol = 376, /* symbol */
2372 YYSYMBOL_ssym = 377, /* ssym */
2373 YYSYMBOL_sym = 378, /* sym */
2374 YYSYMBOL_dsym = 379, /* dsym */
2375 YYSYMBOL_numeric = 380, /* numeric */
2376 YYSYMBOL_simple_numeric = 381, /* simple_numeric */
2377 YYSYMBOL_nonlocal_var = 382, /* nonlocal_var */
2378 YYSYMBOL_user_variable = 383, /* user_variable */
2379 YYSYMBOL_keyword_variable = 384, /* keyword_variable */
2380 YYSYMBOL_var_ref = 385, /* var_ref */
2381 YYSYMBOL_var_lhs = 386, /* var_lhs */
2382 YYSYMBOL_backref = 387, /* backref */
2383 YYSYMBOL_superclass = 388, /* superclass */
2384 YYSYMBOL_389_35 = 389, /* $@35 */
2385 YYSYMBOL_f_opt_paren_args = 390, /* f_opt_paren_args */
2386 YYSYMBOL_f_paren_args = 391, /* f_paren_args */
2387 YYSYMBOL_f_arglist = 392, /* f_arglist */
2388 YYSYMBOL_393_36 = 393, /* @36 */
2389 YYSYMBOL_args_tail = 394, /* args_tail */
2390 YYSYMBOL_opt_args_tail = 395, /* opt_args_tail */
2391 YYSYMBOL_f_args = 396, /* f_args */
2392 YYSYMBOL_args_forward = 397, /* args_forward */
2393 YYSYMBOL_f_bad_arg = 398, /* f_bad_arg */
2394 YYSYMBOL_f_norm_arg = 399, /* f_norm_arg */
2395 YYSYMBOL_f_arg_asgn = 400, /* f_arg_asgn */
2396 YYSYMBOL_f_arg_item = 401, /* f_arg_item */
2397 YYSYMBOL_f_arg = 402, /* f_arg */
2398 YYSYMBOL_f_label = 403, /* f_label */
2399 YYSYMBOL_f_kw = 404, /* f_kw */
2400 YYSYMBOL_f_block_kw = 405, /* f_block_kw */
2401 YYSYMBOL_f_block_kwarg = 406, /* f_block_kwarg */
2402 YYSYMBOL_f_kwarg = 407, /* f_kwarg */
2403 YYSYMBOL_kwrest_mark = 408, /* kwrest_mark */
2404 YYSYMBOL_f_no_kwarg = 409, /* f_no_kwarg */
2405 YYSYMBOL_f_kwrest = 410, /* f_kwrest */
2406 YYSYMBOL_f_opt = 411, /* f_opt */
2407 YYSYMBOL_f_block_opt = 412, /* f_block_opt */
2408 YYSYMBOL_f_block_optarg = 413, /* f_block_optarg */
2409 YYSYMBOL_f_optarg = 414, /* f_optarg */
2410 YYSYMBOL_restarg_mark = 415, /* restarg_mark */
2411 YYSYMBOL_f_rest_arg = 416, /* f_rest_arg */
2412 YYSYMBOL_blkarg_mark = 417, /* blkarg_mark */
2413 YYSYMBOL_f_block_arg = 418, /* f_block_arg */
2414 YYSYMBOL_opt_f_block_arg = 419, /* opt_f_block_arg */
2415 YYSYMBOL_singleton = 420, /* singleton */
2416 YYSYMBOL_421_37 = 421, /* $@37 */
2417 YYSYMBOL_assoc_list = 422, /* assoc_list */
2418 YYSYMBOL_assocs = 423, /* assocs */
2419 YYSYMBOL_assoc = 424, /* assoc */
2420 YYSYMBOL_operation = 425, /* operation */
2421 YYSYMBOL_operation2 = 426, /* operation2 */
2422 YYSYMBOL_operation3 = 427, /* operation3 */
2423 YYSYMBOL_dot_or_colon = 428, /* dot_or_colon */
2424 YYSYMBOL_call_op = 429, /* call_op */
2425 YYSYMBOL_call_op2 = 430, /* call_op2 */
2426 YYSYMBOL_opt_terms = 431, /* opt_terms */
2427 YYSYMBOL_opt_nl = 432, /* opt_nl */
2428 YYSYMBOL_rparen = 433, /* rparen */
2429 YYSYMBOL_rbracket = 434, /* rbracket */
2430 YYSYMBOL_rbrace = 435, /* rbrace */
2431 YYSYMBOL_trailer = 436, /* trailer */
2432 YYSYMBOL_term = 437, /* term */
2433 YYSYMBOL_terms = 438, /* terms */
2434 YYSYMBOL_none = 439 /* none */
2436typedef enum yysymbol_kind_t yysymbol_kind_t;
2445/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
2446 <limits.h> and (if available) <stdint.h> are included
2447 so that the code can choose integer types of a good width. */
2449#ifndef __PTRDIFF_MAX__
2450# include <limits.h> /* INFRINGES ON USER NAME SPACE */
2451# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
2452# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
2457/* Narrow types that promote to a signed type and that can represent a
2458 signed or unsigned integer of at least N bits. In tables they can
2459 save space and decrease cache pressure. Promoting to a signed type
2460 helps avoid bugs in integer arithmetic. */
2462#ifdef __INT_LEAST8_MAX__
2463typedef __INT_LEAST8_TYPE__ yytype_int8;
2464#elif defined YY_STDINT_H
2465typedef int_least8_t yytype_int8;
2467typedef signed char yytype_int8;
2470#ifdef __INT_LEAST16_MAX__
2471typedef __INT_LEAST16_TYPE__ yytype_int16;
2472#elif defined YY_STDINT_H
2473typedef int_least16_t yytype_int16;
2475typedef short yytype_int16;
2478/* Work around bug in HP-UX 11.23, which defines these macros
2479 incorrectly for preprocessor constants. This workaround can likely
2480 be removed in 2023, as HPE has promised support for HP-UX 11.23
2481 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
2482 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
2484# undef UINT_LEAST8_MAX
2485# undef UINT_LEAST16_MAX
2486# define UINT_LEAST8_MAX 255
2487# define UINT_LEAST16_MAX 65535
2490#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
2491typedef __UINT_LEAST8_TYPE__ yytype_uint8;
2492#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
2493 && UINT_LEAST8_MAX <= INT_MAX)
2494typedef uint_least8_t yytype_uint8;
2495#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
2496typedef unsigned char yytype_uint8;
2498typedef short yytype_uint8;
2501#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
2502typedef __UINT_LEAST16_TYPE__ yytype_uint16;
2503#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
2504 && UINT_LEAST16_MAX <= INT_MAX)
2505typedef uint_least16_t yytype_uint16;
2506#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
2507typedef unsigned short yytype_uint16;
2509typedef int yytype_uint16;
2513# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
2514# define YYPTRDIFF_T __PTRDIFF_TYPE__
2515# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
2516# elif defined PTRDIFF_MAX
2518# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
2520# define YYPTRDIFF_T ptrdiff_t
2521# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
2523# define YYPTRDIFF_T long
2524# define YYPTRDIFF_MAXIMUM LONG_MAX
2529# ifdef __SIZE_TYPE__
2530# define YYSIZE_T __SIZE_TYPE__
2531# elif defined size_t
2532# define YYSIZE_T size_t
2533# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
2534# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
2535# define YYSIZE_T size_t
2537# define YYSIZE_T unsigned
2541#define YYSIZE_MAXIMUM \
2542 YY_CAST (YYPTRDIFF_T, \
2543 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
2544 ? YYPTRDIFF_MAXIMUM \
2545 : YY_CAST (YYSIZE_T, -1)))
2547#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
2550/* Stored state numbers (used for stacks). */
2551typedef yytype_int16 yy_state_t;
2553/* State numbers in computations. */
2554typedef int yy_state_fast_t;
2557# if defined YYENABLE_NLS && YYENABLE_NLS
2559# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
2560# define YY_(Msgid) dgettext ("bison-runtime", Msgid)
2564# define YY_(Msgid) Msgid
2569#ifndef YY_ATTRIBUTE_PURE
2570# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
2571# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
2573# define YY_ATTRIBUTE_PURE
2577#ifndef YY_ATTRIBUTE_UNUSED
2578# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
2579# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
2581# define YY_ATTRIBUTE_UNUSED
2585/* Suppress unused-variable warnings by "using" E. */
2586#if ! defined lint || defined __GNUC__
2587# define YY_USE(E) ((void) (E))
2589# define YY_USE(E) /* empty */
2592/* Suppress an incorrect diagnostic about yylval being uninitialized. */
2593#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
2594# if __GNUC__ * 100 + __GNUC_MINOR__ < 407
2595# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
2596 _Pragma ("GCC diagnostic push") \
2597 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
2599# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
2600 _Pragma ("GCC diagnostic push") \
2601 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
2602 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
2604# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
2605 _Pragma ("GCC diagnostic pop")
2607# define YY_INITIAL_VALUE(Value) Value
2609#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2610# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2611# define YY_IGNORE_MAYBE_UNINITIALIZED_END
2613#ifndef YY_INITIAL_VALUE
2614# define YY_INITIAL_VALUE(Value) /* Nothing. */
2617#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
2618# define YY_IGNORE_USELESS_CAST_BEGIN \
2619 _Pragma ("GCC diagnostic push") \
2620 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
2621# define YY_IGNORE_USELESS_CAST_END \
2622 _Pragma ("GCC diagnostic pop")
2624#ifndef YY_IGNORE_USELESS_CAST_BEGIN
2625# define YY_IGNORE_USELESS_CAST_BEGIN
2626# define YY_IGNORE_USELESS_CAST_END
2630#define YY_ASSERT(E) ((void) (0 && (E)))
2634/* The parser invokes alloca or malloc; define the necessary symbols. */
2636# ifdef YYSTACK_USE_ALLOCA
2637# if YYSTACK_USE_ALLOCA
2639# define YYSTACK_ALLOC __builtin_alloca
2640# elif defined __BUILTIN_VA_ARG_INCR
2641# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
2643# define YYSTACK_ALLOC __alloca
2644# elif defined _MSC_VER
2645# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
2646# define alloca _alloca
2648# define YYSTACK_ALLOC alloca
2649# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
2650# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
2651 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
2652# ifndef EXIT_SUCCESS
2653# define EXIT_SUCCESS 0
2660# ifdef YYSTACK_ALLOC
2661 /* Pacify GCC's
'empty if-body' warning. */
2662# define YYSTACK_FREE(Ptr) do { ; } while (0)
2663# ifndef YYSTACK_ALLOC_MAXIMUM
2668# define YYSTACK_ALLOC_MAXIMUM 4032
2671# define YYSTACK_ALLOC YYMALLOC
2672# define YYSTACK_FREE YYFREE
2673# ifndef YYSTACK_ALLOC_MAXIMUM
2674# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
2676# if (defined __cplusplus && ! defined EXIT_SUCCESS \
2677 && ! ((defined YYMALLOC || defined malloc) \
2678 && (defined YYFREE || defined free)))
2680# ifndef EXIT_SUCCESS
2681# define EXIT_SUCCESS 0
2685# define YYMALLOC malloc
2686# if ! defined malloc && ! defined EXIT_SUCCESS
2687void *malloc (YYSIZE_T);
2692# if ! defined free && ! defined EXIT_SUCCESS
2699#if (! defined yyoverflow \
2700 && (! defined __cplusplus \
2701 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
2702 && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
2707 yy_state_t yyss_alloc;
2713# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
2717# define YYSTACK_BYTES(N) \
2718 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE) \
2719 + YYSIZEOF (YYLTYPE)) \
2720 + 2 * YYSTACK_GAP_MAXIMUM)
2722# define YYCOPY_NEEDED 1
2729# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
2732 YYPTRDIFF_T yynewbytes; \
2733 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
2734 Stack = &yyptr->Stack_alloc; \
2735 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
2736 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
2742#if defined YYCOPY_NEEDED && YYCOPY_NEEDED
2746# if defined __GNUC__ && 1 < __GNUC__
2747# define YYCOPY(Dst, Src, Count) \
2748 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
2750# define YYCOPY(Dst, Src, Count) \
2754 for (yyi = 0; yyi < (Count); yyi++) \
2755 (Dst)[yyi] = (Src)[yyi]; \
2768#define YYNTOKENS 163
2774#define YYNSTATES 1341
2777#define YYMAXUTOK 362
2782#define YYTRANSLATE(YYX) \
2783 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
2784 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
2789static const yytype_uint8 yytranslate[] =
2791 0, 2, 2, 2, 2, 2, 2, 2, 2, 72,
2792 162, 75, 73, 74, 2, 2, 2, 2, 2, 2,
2793 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2794 2, 2, 161, 149, 2, 2, 2, 147, 142, 2,
2795 157, 158, 145, 143, 155, 144, 69, 146, 2, 2,
2796 2, 2, 2, 2, 2, 2, 2, 2, 137, 160,
2797 139, 135, 138, 136, 2, 2, 2, 2, 2, 2,
2798 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2799 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2800 2, 154, 70, 159, 141, 2, 156, 2, 2, 2,
2801 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2802 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2803 2, 2, 2, 152, 140, 153, 150, 2, 89, 90,
2804 91, 92, 76, 77, 78, 79, 95, 96, 84, 83,
2805 80, 81, 82, 87, 88, 93, 94, 98, 85, 86,
2806 97, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2807 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2808 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2809 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2810 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2811 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2812 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2813 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2814 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2815 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2816 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
2817 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
2818 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
2819 25, 26, 27, 28, 29, 30, 31, 32, 33, 34,
2820 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
2821 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
2822 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
2823 65, 66, 67, 68, 71, 99, 100, 101, 102, 103,
2824 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
2825 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
2826 124, 125, 126, 127, 128, 129, 130, 131, 132, 133,
2832static const yytype_int16 yyrline[] =
2834 0, 2194, 2194, 2194, 2222, 2228, 2235, 2242, 2251, 2256,
2835 2262, 2264, 2280, 2285, 2276, 2298, 2295, 2310, 2316, 2323,
2836 2330, 2339, 2344, 2343, 2353, 2355, 2361, 2361, 2368, 2375,
2837 2385, 2394, 2401, 2409, 2417, 2430, 2443, 2454, 2469, 2470,
2838 2478, 2485, 2498, 2505, 2506, 2515, 2522, 2529, 2537, 2544,
2839 2551, 2559, 2566, 2579, 2592, 2602, 2603, 2611, 2617, 2622,
2840 2632, 2635, 2636, 2640, 2644, 2648, 2653, 2652, 2668, 2667,
2841 2682, 2685, 2697, 2710, 2709, 2729, 2734, 2742, 2742, 2742,
2842 2748, 2749, 2752, 2753, 2762, 2771, 2780, 2789, 2800, 2807,
2843 2814, 2821, 2828, 2836, 2844, 2852, 2859, 2868, 2879, 2880,
2844 2889, 2890, 2899, 2906, 2913, 2920, 2927, 2934, 2941, 2948,
2845 2955, 2962, 2971, 2972, 2981, 2988, 2997, 3004, 3013, 3020,
2846 3027, 3034, 3042, 3049, 3057, 3064, 3071, 3081, 3088, 3095,
2847 3102, 3109, 3116, 3123, 3130, 3137, 3147, 3155, 3158, 3165,
2848 3172, 3181, 3182, 3183, 3184, 3189, 3192, 3199, 3202, 3209,
2849 3209, 3219, 3220, 3221, 3222, 3223, 3224, 3225, 3226, 3227,
2850 3228, 3229, 3230, 3231, 3232, 3233, 3234, 3235, 3236, 3237,
2851 3238, 3239, 3240, 3241, 3242, 3243, 3244, 3245, 3246, 3247,
2852 3248, 3251, 3251, 3251, 3252, 3252, 3253, 3253, 3253, 3254,
2853 3254, 3254, 3254, 3255, 3255, 3255, 3255, 3256, 3256, 3256,
2854 3257, 3257, 3257, 3257, 3258, 3258, 3258, 3258, 3259, 3259,
2855 3259, 3259, 3260, 3260, 3260, 3260, 3261, 3261, 3261, 3261,
2856 3262, 3262, 3265, 3272, 3279, 3286, 3293, 3300, 3307, 3315,
2857 3323, 3331, 3340, 3349, 3357, 3365, 3373, 3381, 3385, 3389,
2858 3393, 3397, 3401, 3405, 3409, 3413, 3417, 3421, 3425, 3429,
2859 3433, 3434, 3438, 3442, 3446, 3450, 3454, 3458, 3462, 3466,
2860 3470, 3474, 3478, 3483, 3492, 3505, 3518, 3524, 3525, 3533,
2861 3539, 3540, 3541, 3542, 3545, 3549, 3556, 3562, 3569, 3576,
2862 3583, 3584, 3588, 3595, 3604, 3609, 3620, 3627, 3639, 3653,
2863 3654, 3657, 3658, 3659, 3663, 3670, 3679, 3687, 3694, 3702,
2864 3710, 3714, 3714, 3751, 3758, 3768, 3772, 3779, 3786, 3793,
2865 3800, 3810, 3814, 3825, 3826, 3830, 3837, 3844, 3853, 3854,
2866 3855, 3856, 3857, 3858, 3859, 3860, 3861, 3862, 3863, 3871,
2867 3870, 3885, 3885, 3893, 3901, 3908, 3915, 3922, 3930, 3937,
2868 3944, 3951, 3958, 3963, 3967, 3971, 3978, 3979, 3987, 3988,
2869 3999, 4010, 4021, 4033, 4032, 4049, 4048, 4063, 4072, 4117,
2870 4116, 4135, 4134, 4155, 4154, 4174, 4172, 4193, 4191, 4210,
2871 4215, 4220, 4225, 4242, 4249, 4258, 4278, 4287, 4297, 4307,
2872 4316, 4326, 4337, 4348, 4356, 4365, 4374, 4382, 4389, 4395,
2873 4410, 4417, 4424, 4430, 4437, 4444, 4445, 4446, 4449, 4450,
2874 4453, 4454, 4466, 4467, 4476, 4477, 4480, 4488, 4497, 4504,
2875 4513, 4520, 4527, 4534, 4541, 4550, 4558, 4567, 4568, 4571,
2876 4571, 4573, 4577, 4581, 4585, 4591, 4596, 4601, 4611, 4615,
2877 4619, 4623, 4627, 4631, 4636, 4640, 4644, 4648, 4652, 4656,
2878 4660, 4664, 4668, 4674, 4675, 4681, 4692, 4705, 4709, 4718,
2879 4720, 4724, 4729, 4735, 4741, 4747, 4755, 4746, 4781, 4790,
2880 4801, 4807, 4806, 4818, 4827, 4841, 4848, 4855, 4864, 4873,
2881 4881, 4889, 4896, 4904, 4912, 4919, 4926, 4936, 4943, 4952,
2882 4952, 4969, 4969, 4990, 4998, 5005, 5013, 5022, 5034, 5035,
2883 5038, 5039, 5041, 5052, 5049, 5067, 5068, 5071, 5072, 5080,
2884 5090, 5091, 5096, 5104, 5108, 5112, 5118, 5121, 5130, 5133,
2885 5140, 5143, 5144, 5146, 5147, 5148, 5157, 5166, 5175, 5180,
2886 5189, 5198, 5207, 5212, 5216, 5220, 5226, 5225, 5235, 5240,
2887 5247, 5256, 5260, 5269, 5273, 5277, 5280, 5284, 5293, 5297,
2888 5303, 5310, 5318, 5327, 5328, 5337, 5346, 5350, 5354, 5358,
2889 5364, 5366, 5375, 5383, 5397, 5398, 5421, 5425, 5431, 5437,
2890 5438, 5441, 5442, 5451, 5460, 5468, 5476, 5477, 5478, 5479,
2891 5487, 5497, 5498, 5499, 5500, 5501, 5502, 5503, 5504, 5505,
2892 5512, 5515, 5525, 5536, 5545, 5554, 5561, 5568, 5577, 5601,
2893 5604, 5611, 5618, 5621, 5625, 5628, 5636, 5639, 5640, 5643,
2894 5660, 5661, 5662, 5671, 5681, 5690, 5696, 5697, 5700, 5710,
2895 5716, 5725, 5727, 5736, 5746, 5752, 5761, 5770, 5780, 5786,
2896 5796, 5802, 5812, 5822, 5841, 5847, 5857, 5867, 5908, 5911,
2897 5910, 5927, 5936, 5940, 5926, 5961, 5962, 5965, 5972, 5975,
2898 5976, 5979, 5989, 5990, 5993, 6003, 6004, 6014, 6015, 6016,
2899 6017, 6020, 6021, 6022, 6025, 6026, 6027, 6030, 6031, 6032,
2900 6033, 6034, 6035, 6036, 6039, 6052, 6061, 6068, 6077, 6078,
2901 6082, 6081, 6091, 6099, 6100, 6108, 6120, 6121, 6121, 6137,
2902 6141, 6145, 6149, 6153, 6163, 6168, 6173, 6177, 6181, 6185,
2903 6189, 6193, 6197, 6201, 6205, 6209, 6213, 6217, 6221, 6225,
2904 6230, 6236, 6249, 6258, 6267, 6276, 6287, 6288, 6296, 6305,
2905 6313, 6334, 6336, 6349, 6359, 6368, 6379, 6387, 6397, 6404,
2906 6414, 6421, 6430, 6431, 6434, 6442, 6450, 6460, 6471, 6482,
2907 6489, 6498, 6505, 6514, 6515, 6518, 6526, 6536, 6537, 6540,
2908 6548, 6558, 6562, 6568, 6573, 6573, 6599, 6600, 6609, 6611,
2909 6634, 6645, 6652, 6661, 6669, 6686, 6697, 6698, 6699, 6702,
2910 6703, 6706, 6707, 6708, 6711, 6712, 6715, 6716, 6719, 6720,
2911 6723, 6724, 6727, 6728, 6731, 6734, 6737, 6740, 6741, 6744,
2912 6745, 6752, 6753, 6757
2917#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
2922static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
2926static const char *
const yytname[] =
2928 "\"end-of-input\"",
"error",
"\"invalid token\"",
"\"`class'\"",
2929 "\"`module'\"",
"\"`def'\"",
"\"`undef'\"",
"\"`begin'\"",
2930 "\"`rescue'\"",
"\"`ensure'\"",
"\"`end'\"",
"\"`if'\"",
"\"`unless'\"",
2931 "\"`then'\"",
"\"`elsif'\"",
"\"`else'\"",
"\"`case'\"",
"\"`when'\"",
2932 "\"`while'\"",
"\"`until'\"",
"\"`for'\"",
"\"`break'\"",
"\"`next'\"",
2933 "\"`redo'\"",
"\"`retry'\"",
"\"`in'\"",
"\"`do'\"",
2934 "\"`do' for condition\"",
"\"`do' for block\"",
"\"`do' for lambda\"",
2935 "\"`return'\"",
"\"`yield'\"",
"\"`super'\"",
"\"`self'\"",
"\"`nil'\"",
2936 "\"`true'\"",
"\"`false'\"",
"\"`and'\"",
"\"`or'\"",
"\"`not'\"",
2937 "\"`if' modifier\"",
"\"`unless' modifier\"",
"\"`while' modifier\"",
2938 "\"`until' modifier\"",
"\"`rescue' modifier\"",
"\"`alias'\"",
2939 "\"`defined?'\"",
"\"`BEGIN'\"",
"\"`END'\"",
"\"`__LINE__'\"",
2940 "\"`__FILE__'\"",
"\"`__ENCODING__'\"",
"\"local variable or method\"",
2941 "\"method\"",
"\"global variable\"",
"\"instance variable\"",
2942 "\"constant\"",
"\"class variable\"",
"\"label\"",
"\"integer literal\"",
2943 "\"float literal\"",
"\"rational literal\"",
"\"imaginary literal\"",
2944 "\"char literal\"",
"\"numbered reference\"",
"\"back reference\"",
2945 "\"literal content\"",
"tREGEXP_END",
"\"dummy end\"",
"'.'",
2946 "\"backslash\"",
"\"escaped space\"",
"\"escaped horizontal tab\"",
2947 "\"escaped form feed\"",
"\"escaped carriage return\"",
2948 "\"escaped vertical tab\"",
"\"unary+\"",
"\"unary-\"",
"\"**\"",
2949 "\"<=>\"",
"\"==\"",
"\"===\"",
"\"!=\"",
"\">=\"",
"\"<=\"",
"\"&&\"",
2950 "\"||\"",
"\"=~\"",
"\"!~\"",
"\"..\"",
"\"...\"",
"\"(..\"",
"\"(...\"",
2951 "\"[]\"",
"\"[]=\"",
"\"<<\"",
"\">>\"",
"\"&.\"",
"\"::\"",
2952 "\":: at EXPR_BEG\"",
"\"operator-assignment\"",
"\"=>\"",
"\"(\"",
2953 "\"( arg\"",
"\")\"",
"\"[\"",
"\"{\"",
"\"{ arg\"",
"\"*\"",
2954 "\"**arg\"",
"\"&\"",
"\"->\"",
"\"symbol literal\"",
2955 "\"string literal\"",
"\"backtick literal\"",
"\"regexp literal\"",
2956 "\"word list\"",
"\"verbatim word list\"",
"\"symbol list\"",
2957 "\"verbatim symbol list\"",
"\"terminator\"",
"\"'}'\"",
"tSTRING_DBEG",
2958 "tSTRING_DVAR",
"tLAMBEG",
"tLABEL_END",
"tIGNORED_NL",
"tCOMMENT",
2959 "tEMBDOC_BEG",
"tEMBDOC",
"tEMBDOC_END",
"tHEREDOC_BEG",
"tHEREDOC_END",
2960 "k__END__",
"tLOWEST",
"'='",
"'?'",
"':'",
"'>'",
"'<'",
"'|'",
"'^'",
2961 "'&'",
"'+'",
"'-'",
"'*'",
"'/'",
"'%'",
"tUMINUS_NUM",
"'!'",
"'~'",
2962 "tLAST_TOKEN",
"'{'",
"'}'",
"'['",
"','",
"'`'",
"'('",
"')'",
"']'",
2963 "';'",
"' '",
"'\\n'",
"$accept",
"program",
"$@1",
"top_compstmt",
2964 "top_stmts",
"top_stmt",
"block_open",
"begin_block",
"bodystmt",
"$@2",
2965 "$@3",
"$@4",
"compstmt",
"stmts",
"stmt_or_begin",
"$@5",
"allow_exits",
2966 "k_END",
"stmt",
"$@6",
"command_asgn",
"endless_command",
"command_rhs",
2967 "expr",
"$@7",
"$@8",
"def_name",
"defn_head",
"defs_head",
"$@9",
2968 "expr_value",
"expr_value_do",
"$@10",
"$@11",
"command_call",
2969 "block_command",
"cmd_brace_block",
"fcall",
"command",
"mlhs",
2970 "mlhs_inner",
"mlhs_basic",
"mlhs_item",
"mlhs_head",
"mlhs_post",
2971 "mlhs_node",
"lhs",
"cname",
"cpath",
"fname",
"fitem",
"undef_list",
2972 "$@12",
"op",
"reswords",
"arg",
"endless_arg",
"relop",
"rel_expr",
2973 "lex_ctxt",
"begin_defined",
"after_rescue",
"arg_value",
"aref_args",
2974 "arg_rhs",
"paren_args",
"opt_paren_args",
"opt_call_args",
"call_args",
2975 "command_args",
"$@13",
"block_arg",
"opt_block_arg",
"args",
2976 "arg_splat",
"mrhs_arg",
"mrhs",
"primary",
"$@14",
"$@15",
"@16",
"@17",
2977 "$@18",
"$@19",
"$@20",
"$@21",
"$@22",
"primary_value",
"k_begin",
2978 "k_if",
"k_unless",
"k_while",
"k_until",
"k_case",
"k_for",
"k_class",
2979 "k_module",
"k_def",
"k_do",
"k_do_block",
"k_rescue",
"k_ensure",
2980 "k_when",
"k_else",
"k_elsif",
"k_end",
"k_return",
"k_yield",
"then",
2981 "do",
"if_tail",
"opt_else",
"for_var",
"f_marg",
"f_marg_list",
2982 "f_margs",
"f_rest_marg",
"f_any_kwrest",
"f_eq",
"$@23",
2983 "block_args_tail",
"opt_block_args_tail",
"excessed_comma",
2984 "block_param",
"opt_block_param",
"block_param_def",
"opt_bv_decl",
2985 "bv_decls",
"bvar",
"max_numparam",
"numparam",
"lambda",
"@24",
"$@25",
2986 "f_larglist",
"lambda_body",
"$@26",
"do_block",
"block_call",
2987 "method_call",
"brace_block",
"brace_body",
"@27",
"do_body",
"@28",
2988 "case_args",
"case_body",
"cases",
"p_pvtbl",
"p_pktbl",
"p_in_kwarg",
2989 "p_case_body",
"$@29",
"p_cases",
"p_top_expr",
"p_top_expr_body",
2990 "p_expr",
"p_as",
"p_alt",
"p_lparen",
"p_lbracket",
"p_expr_basic",
2991 "$@30",
"p_args",
"p_args_head",
"p_args_tail",
"p_find",
"p_rest",
2992 "p_args_post",
"p_arg",
"p_kwargs",
"p_kwarg",
"p_kw",
"p_kw_label",
2993 "p_kwrest",
"p_kwnorest",
"p_any_kwrest",
"p_value",
"p_primitive",
2994 "p_variable",
"p_var_ref",
"p_expr_ref",
"p_const",
"opt_rescue",
2995 "exc_list",
"exc_var",
"opt_ensure",
"literal",
"strings",
"string",
2996 "string1",
"xstring",
"regexp",
"words_sep",
"words",
"word_list",
2997 "word",
"symbols",
"symbol_list",
"qwords",
"qsymbols",
"qword_list",
2998 "qsym_list",
"string_contents",
"xstring_contents",
"regexp_contents",
2999 "string_content",
"@31",
"@32",
"@33",
"@34",
"string_dend",
3000 "string_dvar",
"symbol",
"ssym",
"sym",
"dsym",
"numeric",
3001 "simple_numeric",
"nonlocal_var",
"user_variable",
"keyword_variable",
3002 "var_ref",
"var_lhs",
"backref",
"superclass",
"$@35",
3003 "f_opt_paren_args",
"f_paren_args",
"f_arglist",
"@36",
"args_tail",
3004 "opt_args_tail",
"f_args",
"args_forward",
"f_bad_arg",
"f_norm_arg",
3005 "f_arg_asgn",
"f_arg_item",
"f_arg",
"f_label",
"f_kw",
"f_block_kw",
3006 "f_block_kwarg",
"f_kwarg",
"kwrest_mark",
"f_no_kwarg",
"f_kwrest",
3007 "f_opt",
"f_block_opt",
"f_block_optarg",
"f_optarg",
"restarg_mark",
3008 "f_rest_arg",
"blkarg_mark",
"f_block_arg",
"opt_f_block_arg",
3009 "singleton",
"$@37",
"assoc_list",
"assocs",
"assoc",
"operation",
3010 "operation2",
"operation3",
"dot_or_colon",
"call_op",
"call_op2",
3011 "opt_terms",
"opt_nl",
"rparen",
"rbracket",
"rbrace",
"trailer",
"term",
3012 "terms",
"none", YY_NULLPTR
3016yysymbol_name (yysymbol_kind_t yysymbol)
3018 return yytname[yysymbol];
3022#define YYPACT_NINF (-1088)
3024#define yypact_value_is_default(Yyn) \
3025 ((Yyn) == YYPACT_NINF)
3027#define YYTABLE_NINF (-784)
3029#define yytable_value_is_error(Yyn) \
3030 ((Yyn) == YYTABLE_NINF)
3034static const yytype_int16 yypact[] =
3036 -1088, 141, 4978, -1088, -1088, -1088, -1088, -1088, 10235, -1088,
3037 -1088, -1088, -1088, -1088, -1088, -1088, 11055, 11055, -1088, -1088,
3038 -1088, -1088, 6200, -1088, -1088, -1088, -1088, 527, 10081, 50,
3039 222, -1088, -1088, -1088, -1088, 5576, 6356, -1088, -1088, 5732,
3040 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, 12507, 12507,
3041 12507, 12507, 427, 8462, 8622, 11539, 11781, 10537, -1088, 9927,
3042 -1088, -1088, -1088, 336, 336, 336, 336, 1285, 12628, 12507,
3043 -1088, 299, -1088, -1088, 1317, -1088, 485, 37, 37, -1088,
3044 -1088, 142, 480, 398, -1088, 406, 13112, -1088, 444, 1944,
3045 957, 57, 659, -1088, 10934, 10934, -1088, -1088, 9096, 13231,
3046 13350, 13469, 9772, 11055, 6824, -1088, 593, 97, -1088, -1088,
3047 476, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088,
3048 -1088, -1088, -1088, -1088, 85, 561, -1088, 495, 645, -1088,
3049 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088,
3050 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088,
3051 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088,
3052 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088,
3053 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088,
3054 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088,
3055 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088,
3056 -1088, -1088, -1088, -1088, -1088, -1088, -1088, 446, -1088, -1088,
3057 -1088, -1088, -1088, -1088, 496, 12507, 581, 8622, 12507, 12507,
3058 12507, -1088, 12507, 37, 37, -1088, 562, 5702, 599, -1088,
3059 -1088, 556, -1088, 763, 69, 71, 632, 108, 610, -1088,
3060 -1088, 11176, -1088, -1088, 11055, 9651, -1088, 12749, 823, -1088,
3061 606, -1088, 8782, -1088, -1088, -1088, -1088, -1088, 616, 142,
3062 -1088, 769, -1088, 626, 762, 5390, 5390, 667, -1088, 8462,
3063 661, 299, -1088, 1317, 50, 710, -1088, -1088, 688, 240,
3064 369, -1088, 599, 699, 369, -1088, 50, 794, 1285, 13588,
3065 702, 702, 718, -1088, 793, 830, 843, 853, -1088, -1088,
3066 73, -1088, -1088, 687, 858, 852, -1088, 724, 724, 724,
3067 724, 801, -1088, -1088, -1088, -1088, -1088, -1088, -1088, 9379,
3068 786, 10934, 10934, 10934, 10934, -1088, 12749, 12749, 2194, 819,
3069 835, -1088, 2194, -1088, 836, -1088, -1088, -1088, -1088, 866,
3070 -1088, -1088, -1088, -1088, -1088, -1088, -1088, 8462, 10675, 834,
3071 -1088, -1088, 12507, 12507, 12507, 12507, 12507, -1088, -1088, 12507,
3072 12507, 12507, 12507, 12507, 12507, 12507, 12507, -1088, 12507, -1088,
3073 -1088, 12507, 12507, 12507, 12507, 12507, 12507, 12507, 12507, 12507,
3074 12507, -1088, -1088, 4666, 11055, 5066, 7608, -1088, 485, 169,
3075 169, 8340, 10934, 8340, 299, -1088, 832, 942, -1088, -1088,
3076 879, 979, 91, 113, 127, 697, 732, 10934, 493, -1088,
3077 871, 888, -1088, -1088, -1088, -1088, 119, 347, 371, 378,
3078 466, 569, 576, 693, 700, -1088, -1088, -1088, -1088, 767,
3079 -1088, 9530, -1088, -1088, -1088, 15330, -1088, -1088, -1088, -1088,
3080 -1088, -1088, 318, -1088, -1088, -1088, 698, 870, 878, -1088,
3081 12507, 11297, -1088, -1088, 13944, 11055, 14043, -1088, -1088, 11660,
3082 -1088, 12507, 50, -1088, 863, 50, 868, -1088, -1088, 83,
3083 896, -1088, -1088, -1088, -1088, -1088, 10235, -1088, -1088, 12507,
3084 875, 14142, 14043, -1088, 222, 50, -1088, -1088, 9218, 882,
3085 897, -1088, 11539, -1088, -1088, 11781, -1088, -1088, -1088, 606,
3086 914, -1088, -1088, 906, -1088, 13588, 14241, 11055, 14340, -1088,
3087 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088,
3088 -1088, 930, 117, 953, 331, 12507, -1088, -1088, 8942, -1088,
3089 -1088, -1088, -1088, -1088, 10813, -1088, -1088, -1088, -1088, -1088,
3090 -1088, -1088, -1088, -1088, -1088, 1150, -1088, -1088, -1088, -1088,
3091 -1088, 908, -1088, -1088, 50, -1088, -1088, -1088, 945, -1088,
3092 910, 12507, -1088, 927, 158, -1088, -1088, -1088, 931, 1033,
3093 932, 1041, -1088, 12870, 7608, 299, 12870, 7608, 941, -1088,
3094 -1088, -1088, 156, -1088, 156, 11902, 50, 13588, 944, -1088,
3095 11902, -1088, 762, 4760, 4760, 4760, 4760, 5858, 4273, 4760,
3096 4760, 5390, 5390, 631, 631, -1088, 5546, 642, 642, 1120,
3097 326, 326, 762, 762, 762, 1458, 1458, 6980, 5888, 7292,
3098 6044, -1088, -1088, 616, -1088, 50, 955, 808, -1088, 929,
3099 -1088, -1088, 6512, 156, -1088, -1088, 7730, 1084, 8096, 156,
3100 320, 156, 1081, 1094, 136, 14439, 11055, 14538, -1088, -1088,
3101 -1088, 914, -1088, -1088, -1088, 14637, 11055, 14736, 7608, 12749,
3102 -1088, -1088, -1088, 50, -1088, -1088, -1088, 1852, 12628, 12628,
3103 10235, 12507, 12991, 12991, 12507, -1088, 599, -1088, -1088, 610,
3104 5420, 6668, 50, 363, 412, 12507, 12507, -1088, -1088, 11418,
3105 -1088, 11660, -1088, -1088, -1088, 12749, 5702, -1088, 416, 616,
3106 616, 12507, -1088, 595, -1088, -1088, 369, 13588, 906, 486,
3107 657, 50, 264, 552, -1088, -1088, 1132, -1088, 67, -1088,
3108 336, -1088, -1088, 67, 336, -1088, 762, 959, -1088, 1150,
3109 1274, -1088, 961, 50, 963, -1088, 36, -1088, -1088, -1088,
3110 12507, 989, 2194, -1088, -1088, 461, -1088, -1088, -1088, 2194,
3111 -1088, -1088, 2479, -1088, -1088, 527, 1070, -1088, 5702, 1082,
3112 156, -1088, 1070, 1082, 156, -1088, -1088, 972, -1088, -1088,
3113 -1088, -1088, -1088, 12507, -1088, 973, 974, 1092, -1088, -1088,
3114 906, 13588, -1088, -1088, 1096, 1008, 2581, -1088, -1088, -1088,
3115 934, 428, -1088, -1088, 1009, -1088, -1088, -1088, -1088, 866,
3116 992, 943, 11297, -1088, -1088, -1088, -1088, 866, -1088, -1088,
3117 1140, 671, -1088, 1141, -1088, -1088, -1088, -1088, -1088, -1088,
3118 1094, 156, -1088, 12023, 156, 233, 254, 50, 166, 175,
3119 8340, 299, 10934, 7608, 807, 657, -1088, 50, 156, 83,
3120 10389, -1088, 97, 480, -1088, 6947, -1088, -1088, -1088, -1088,
3121 -1088, 527, -1088, -1088, -1088, 492, -1088, -1088, 50, 1002,
3122 83, -1088, -1088, -1088, 563, 1615, -1088, -1088, -1088, -1088,
3123 724, -1088, 724, 724, 724, -1088, 50, -1088, 1150, -1088,
3124 1188, -1088, -1088, -1088, -1088, -1088, 1004, 1006, -1088, 1111,
3125 908, 1016, -1088, 1017, -1088, 1016, 12870, -1088, -1088, -1088,
3126 -1088, -1088, -1088, -1088, 1018, 12144, -1088, 906, -1088, -1088,
3127 -1088, 14835, 11055, 14934, -1088, -1088, 12507, 12628, 12628, 1024,
3128 -1088, -1088, -1088, 12628, 12628, -1088, -1088, 12265, 1141, -1088,
3129 -1088, -1088, 8340, 10934, 156, -1088, -1088, 156, -1088, -1088,
3130 156, -1088, 12507, -1088, 109, -1088, 214, 156, 7608, 299,
3131 156, -1088, -1088, -1088, -1088, -1088, -1088, 12991, 12507, 12507,
3132 -1088, 12507, 12507, -1088, 11660, -1088, 2194, -1088, -1088, 5294,
3133 -1088, -1088, 1026, 1029, 2194, -1088, 2479, -1088, -1088, 2479,
3134 -1088, 2479, -1088, -1088, 1070, 1082, 12507, 12507, 1045, 1045,
3135 12507, 1036, 10813, 10813, 12628, 12507, 7136, 7448, 50, 500,
3136 504, 4476, 4476, 5702, -1088, -1088, -1088, -1088, -1088, 12628,
3137 -1088, -1088, -1088, -1088, 973, -1088, 1091, -1088, 1185, -1088,
3138 -1088, 169, -1088, -1088, -1088, -1088, -1088, 12386, 7852, -1088,
3139 156, -1088, -1088, 12507, 50, 98, 95, 1188, 1188, 1016,
3140 1044, 1016, 1016, 5702, 5702, 1874, 8942, -1088, -1088, 7608,
3141 1018, -1088, -1088, 5702, 511, -1088, -1088, -1088, 2448, 2448,
3142 741, -1088, 4166, 14, 1148, -1088, 1078, -1088, -1088, 309,
3143 -1088, 1063, -1088, -1088, -1088, 1053, -1088, 1055, -1088, 1686,
3144 -1088, -1088, -1088, -1088, 682, -1088, -1088, -1088, 45, -1088,
3145 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, 447, -1088,
3146 -1088, -1088, 13707, 169, -1088, -1088, 8340, -1088, -1088, 8218,
3147 7730, 4476, 12507, -1088, 608, -1088, 1056, 1058, -1088, 8942,
3148 -1088, -1088, -1088, -1088, 1029, -1088, 2479, -1088, -1088, -1088,
3149 908, -1088, 50, 1087, 945, 1074, 13826, -1088, 1077, -1088,
3150 1080, 1099, -1088, -1088, -1088, -1088, -1088, -1088, -1088, 1686,
3151 324, 50, 13900, -1088, 50, 1100, -1088, -1088, 1086, -1088,
3152 -1088, 902, -1088, 10934, -1088, 1197, 13900, 1686, 1686, 958,
3153 1156, 2448, 2448, 741, 274, 739, 4476, 4476, -1088, 1195,
3154 -1088, 948, 188, 192, 200, 7608, -1088, -1088, 671, 169,
3155 831, -1088, -1088, -1088, -1088, -1088, 1280, 7608, 1115, 1016,
3156 -1088, 1129, -1088, 13826, 1539, -1088, -1088, 1217, 951, 461,
3157 -1088, 1539, -1088, 1472, -1088, 35, -1088, 1156, 1121, 1123,
3158 -1088, -1088, -1088, -1088, -1088, 50, -1088, -1088, 1124, -1088,
3159 1128, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088,
3160 -1088, -1088, 50, 50, 50, 50, 50, 50, 218, 15033,
3161 11055, 15132, 1140, 1185, -1088, -1088, 10934, 10934, -1088, 467,
3162 -1088, -1088, 156, -1088, -1088, -1088, 951, -1088, 1134, 1137,
3163 -1088, 15231, -1088, 908, 1138, -1088, 1146, 1138, -1088, 1686,
3164 -1088, 958, -1088, 1686, 13900, 758, -1088, -1088, -1088, -1088,
3165 -1088, -1088, 121, 201, 50, 223, 238, -1088, -1088, 7974,
3166 -1088, -1088, 1280, -1088, -1088, 1539, -1088, 1472, -1088, 1118,
3167 1130, -1088, 1472, -1088, 1472, -1088, -1088, 1149, 50, 1149,
3168 -1088, -1088, 253, 417, -1088, 1138, 1155, 1138, 1138, 1686,
3169 -1088, -1088, -1088, -1088, -1088, 1472, -1088, -1088, -1088, 1138,
3176static const yytype_int16 yydefact[] =
3178 2, 0, 0, 1, 44, 381, 382, 383, 0, 374,
3179 375, 376, 379, 24, 24, 24, 369, 370, 371, 372,
3180 393, 394, 301, 658, 657, 659, 660, 772, 0, 772,
3181 0, 783, 662, 661, 663, 756, 758, 652, 651, 757,
3182 653, 647, 648, 649, 650, 600, 668, 669, 0, 0,
3183 0, 0, 0, 0, 0, 783, 783, 110, 455, 622,
3184 622, 624, 626, 0, 0, 0, 0, 0, 0, 0,
3185 3, 770, 6, 24, 8, 38, 43, 677, 677, 61,
3186 81, 301, 80, 0, 98, 0, 102, 112, 0, 70,
3187 250, 266, 0, 329, 0, 0, 77, 77, 0, 0,
3188 0, 0, 0, 338, 301, 348, 82, 346, 318, 319,
3189 599, 601, 320, 321, 322, 324, 323, 325, 598, 639,
3190 640, 597, 645, 656, 664, 665, 326, 0, 327, 85,
3191 5, 191, 202, 192, 215, 188, 208, 198, 197, 218,
3192 219, 213, 196, 195, 190, 216, 220, 221, 200, 189,
3193 203, 207, 209, 201, 194, 210, 217, 212, 211, 204,
3194 214, 199, 187, 206, 205, 186, 193, 184, 185, 181,
3195 182, 183, 141, 143, 142, 176, 177, 172, 154, 155,
3196 156, 163, 160, 162, 157, 158, 178, 179, 164, 165,
3197 169, 173, 159, 161, 151, 152, 153, 166, 167, 168,
3198 170, 171, 174, 175, 180, 146, 148, 31, 144, 145,
3199 147, 377, 378, 380, 0, 752, 0, 0, 312, 755,
3200 304, 622, 0, 677, 677, 296, 0, 279, 307, 96,
3201 300, 783, 308, 0, 664, 665, 0, 327, 783, 748,
3202 97, 783, 474, 93, 0, 772, 773, 0, 0, 26,
3203 783, 10, 0, 9, 25, 276, 369, 370, 475, 0,
3204 244, 0, 338, 341, 245, 235, 236, 335, 22, 0,
3205 0, 770, 19, 21, 772, 100, 18, 331, 0, 772,
3206 772, 280, 0, 0, 772, 746, 772, 0, 0, 0,
3207 677, 677, 108, 373, 0, 118, 119, 126, 453, 642,
3208 0, 641, 643, 0, 0, 0, 606, 609, 618, 614,
3209 620, 646, 65, 256, 257, 779, 780, 4, 781, 0,
3210 0, 0, 0, 0, 0, 783, 0, 0, 700, 0,
3211 676, 365, 700, 674, 0, 367, 384, 479, 468, 86,
3212 481, 345, 385, 481, 464, 783, 114, 0, 106, 103,
3213 783, 68, 0, 0, 0, 0, 0, 272, 273, 0,
3214 0, 0, 0, 233, 234, 0, 0, 66, 0, 270,
3215 271, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3216 0, 766, 767, 0, 783, 0, 0, 76, 75, 0,
3217 0, 0, 0, 0, 770, 355, 771, 0, 405, 404,
3218 0, 0, 664, 665, 327, 136, 137, 0, 0, 139,
3219 672, 0, 664, 665, 327, 363, 211, 204, 214, 199,
3220 181, 182, 183, 141, 142, 744, 72, 71, 743, 0,
3221 95, 772, 94, 769, 768, 0, 347, 602, 783, 783,
3222 149, 751, 335, 311, 754, 303, 0, 0, 0, 783,
3223 0, 0, 297, 306, 0, 783, 0, 783, 783, 0,
3224 298, 701, 772, 292, 783, 772, 783, 291, 302, 772,
3225 0, 344, 64, 28, 30, 29, 0, 783, 277, 0,
3226 0, 0, 0, 783, 0, 772, 333, 17, 0, 99,
3227 0, 336, 778, 777, 281, 778, 283, 337, 747, 0,
3228 125, 646, 116, 111, 676, 0, 0, 783, 0, 454,
3229 628, 644, 631, 629, 623, 603, 604, 625, 605, 627,
3230 607, 0, 0, 0, 0, 0, 782, 7, 0, 32,
3231 33, 34, 35, 278, 0, 62, 63, 707, 704, 703,
3232 702, 705, 713, 722, 701, 0, 734, 723, 738, 737,
3233 733, 783, 724, 699, 772, 683, 706, 708, 709, 711,
3234 685, 715, 720, 783, 726, 418, 417, 731, 685, 736,
3235 685, 740, 682, 0, 0, 0, 0, 0, 0, 453,
3236 479, 87, 0, 453, 0, 0, 772, 0, 104, 115,
3237 0, 492, 242, 249, 251, 252, 253, 260, 261, 254,
3238 255, 231, 232, 258, 259, 492, 772, 246, 247, 248,
3239 237, 238, 239, 240, 241, 274, 275, 756, 758, 757,
3240 760, 473, 759, 301, 471, 772, 783, 756, 758, 757,
3241 760, 472, 301, 0, 783, 396, 0, 395, 0, 0,
3242 0, 0, 353, 0, 335, 0, 783, 0, 77, 361,
3243 136, 137, 138, 670, 359, 0, 783, 0, 0, 0,
3244 764, 765, 73, 772, 340, 756, 757, 301, 0, 0,
3245 0, 0, 0, 0, 0, 750, 309, 305, 310, 783,
3246 756, 757, 772, 756, 757, 0, 0, 749, 286, 293,
3247 288, 295, 343, 774, 27, 0, 262, 11, 334, 0,
3248 783, 0, 23, 101, 20, 332, 772, 0, 109, 761,
3249 124, 772, 756, 757, 24, 632, 0, 608, 0, 611,
3250 0, 616, 613, 0, 0, 617, 243, 0, 36, 0,
3251 416, 408, 410, 772, 413, 406, 0, 681, 742, 675,
3252 0, 0, 0, 692, 714, 0, 680, 558, 725, 0,
3253 695, 735, 0, 697, 739, 772, 52, 55, 267, 264,
3254 0, 678, 53, 265, 0, 477, 454, 0, 391, 392,
3255 478, 454, 463, 312, 39, 314, 0, 42, 313, 113,
3256 107, 0, 60, 45, 58, 0, 284, 307, 222, 40,
3257 0, 327, 490, 490, 0, 783, 783, 479, 470, 90,
3258 0, 476, 293, 783, 783, 290, 469, 88, 289, 330,
3259 783, 783, 397, 783, 351, 399, 78, 398, 352, 492,
3260 0, 0, 388, 0, 0, 761, 334, 772, 756, 757,
3261 0, 0, 0, 0, 136, 137, 140, 772, 0, 772,
3262 0, 339, 465, 83, 46, 284, 223, 54, 230, 150,
3263 753, 772, 299, 783, 783, 476, 783, 783, 772, 783,
3264 772, 229, 282, 117, 476, 700, 633, 630, 637, 638,
3265 610, 612, 619, 615, 621, 37, 772, 415, 0, 710,
3266 0, 741, 727, 420, 684, 712, 685, 685, 721, 726,
3267 783, 685, 732, 685, 709, 685, 0, 783, 783, 366,
3268 368, 24, 84, 24, 317, 0, 783, 105, 783, 783,
3269 783, 0, 783, 0, 491, 491, 0, 0, 0, 0,
3270 91, 775, 783, 0, 0, 89, 386, 783, 15, 589,
3271 390, 389, 0, 0, 0, 400, 402, 0, 79, 490,
3272 0, 357, 0, 483, 0, 356, 476, 0, 0, 0,
3273 0, 476, 364, 745, 74, 466, 467, 0, 0, 0,
3274 783, 0, 0, 287, 294, 342, 700, 456, 459, 0,
3275 407, 409, 411, 414, 0, 688, 0, 690, 679, 0,
3276 696, 0, 693, 698, 57, 269, 0, 0, 783, 783,
3277 312, 315, 0, 0, 0, 0, 756, 757, 772, 756,
3278 757, 0, 0, 263, 51, 227, 50, 228, 92, 0,
3279 48, 225, 49, 226, 590, 591, 783, 592, 783, 12,
3280 403, 0, 349, 350, 491, 354, 484, 0, 0, 358,
3281 0, 671, 360, 0, 772, 0, 0, 0, 0, 685,
3282 685, 685, 685, 56, 268, 772, 0, 444, 443, 0,
3283 316, 41, 59, 285, 476, 581, 587, 554, 0, 0,
3284 0, 491, 772, 491, 542, 622, 0, 580, 69, 500,
3285 506, 508, 510, 504, 503, 538, 505, 547, 550, 553,
3286 559, 560, 549, 513, 561, 514, 566, 567, 568, 571,
3287 572, 573, 574, 575, 577, 576, 578, 579, 557, 67,
3288 47, 224, 0, 0, 594, 387, 0, 16, 596, 0,
3289 0, 0, 0, 485, 783, 362, 0, 447, 461, 0,
3290 457, 636, 635, 634, 412, 689, 0, 686, 691, 694,
3291 783, 442, 772, 0, 709, 426, 717, 718, 783, 729,
3292 426, 426, 424, 480, 482, 569, 570, 137, 585, 0,
3293 530, 772, 531, 535, 772, 0, 525, 783, 0, 528,
3294 541, 0, 582, 0, 583, 0, 501, 0, 0, 548,
3295 552, 564, 565, 0, 491, 491, 0, 0, 556, 0,
3296 593, 0, 664, 665, 327, 0, 595, 13, 783, 0,
3297 497, 486, 488, 489, 487, 458, 0, 0, 0, 685,
3298 423, 0, 445, 0, 427, 435, 433, 0, 716, 0,
3299 422, 0, 438, 0, 440, 772, 523, 545, 533, 532,
3300 524, 536, 526, 776, 555, 772, 507, 502, 538, 509,
3301 539, 543, 622, 551, 546, 562, 563, 586, 512, 522,
3302 511, 518, 772, 772, 772, 772, 772, 772, 335, 0,
3303 783, 0, 783, 783, 401, 493, 0, 0, 451, 772,
3304 449, 452, 0, 460, 687, 446, 728, 425, 426, 426,
3305 335, 0, 719, 783, 426, 730, 426, 426, 529, 0,
3306 537, 0, 584, 0, 0, 0, 515, 516, 517, 519,
3307 520, 521, 761, 334, 772, 756, 757, 588, 14, 0,
3308 498, 499, 0, 448, 462, 0, 430, 0, 432, 761,
3309 334, 421, 0, 439, 0, 436, 441, 534, 772, 539,
3310 540, 544, 476, 783, 450, 426, 426, 426, 426, 0,
3311 527, 495, 496, 494, 431, 0, 428, 434, 437, 426,
3316static const yytype_int16 yypgoto[] =
3318 -1088, -1088, -1088, 1028, -1088, 976, -1088, 812, -540, -1088,
3319 -1088, -1088, -40, -1088, 817, -1088, 8, -1088, 9, -1088,
3320 -49, -510, -494, -26, -1088, -1088, 471, 2739, 3102, -1088,
3321 -89, -62, -1088, -1088, -60, -1088, -620, 1245, -14, 1213,
3322 -140, -7, -37, -1088, -425, 44, 3555, -392, 1214, -28,
3323 -10, -1088, -1088, 2, -1088, 4276, -500, 1226, -1088, 99,
3324 840, 340, 1165, -1088, 617, -17, 653, -372, 46, -39,
3325 -1088, -381, -212, 12, -401, -1088, -551, -13, -1088, -1088,
3326 -1088, -1088, -1088, -1088, -1088, -1088, -1088, 1125, -1088, -1088,
3327 -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088, -1088,
3328 -1088, -1088, -1088, 394, -1088, 32, 1883, 2367, -363, -1088,
3329 137, -789, -1088, -766, -767, 604, 463, -900, 190, -1088,
3330 304, 131, -1088, -1088, 361, -1088, -894, -1088, 49, -419,
3331 33, 1221, -1088, -1088, -1088, -1088, -1088, 509, -1088, -1088,
3332 -82, -478, -1088, 1011, -1088, -1088, -741, -1088, -662, -838,
3333 -495, 39, -1088, -1088, -1088, -885, -659, -1088, -1088, -1088,
3334 -1088, 196, -1088, -256, -1088, -637, -656, -968, -245, -1024,
3335 -721, -1088, 195, -1088, -1088, -854, 198, -1088, -468, 203,
3336 -1088, -1088, -1088, 122, -1088, -1088, 112, 1427, 1787, -1088,
3337 1261, 1866, 2213, 28, 2585, -1088, 850, 2724, -1088, 2820,
3338 2902, -1088, -1088, -56, -1088, -1088, -248, -1088, -1088, -1088,
3339 -1088, -1088, -1088, 25, -1088, -1088, -1088, -1088, 18, -52,
3340 3202, -2, 1273, 3772, 2516, -1088, -1088, 62, 641, 41,
3341 -1088, -287, 267, -285, -187, -817, -336, -311, -699, -599,
3342 -370, 633, 172, -1088, -1088, -663, -1088, -709, -641, -1087,
3343 178, 637, -1088, -617, -1088, 110, -531, -1088, -1088, -1088,
3344 3, -399, 170, -345, -1088, -1088, -91, -1088, -27, 433,
3345 262, 276, 68, -177, -23, 43, 103
3349static const yytype_int16 yydefgoto[] =
3351 0, 1, 2, 70, 71, 72, 252, 253, 633, 1109,
3352 1253, 1018, 634, 271, 272, 484, 211, 73, 273, 476,
3353 75, 756, 783, 76, 605, 591, 426, 223, 224, 840,
3354 389, 391, 392, 938, 79, 80, 581, 259, 82, 83,
3355 274, 84, 85, 86, 503, 87, 226, 409, 410, 205,
3356 206, 207, 670, 620, 209, 89, 759, 379, 90, 533,
3357 479, 534, 228, 278, 788, 621, 806, 462, 463, 243,
3358 244, 230, 452, 626, 232, 777, 778, 91, 386, 490,
3359 820, 643, 833, 831, 658, 574, 577, 261, 93, 94,
3360 95, 96, 97, 98, 99, 100, 101, 102, 340, 343,
3361 927, 1106, 823, 932, 933, 770, 262, 263, 636, 816,
3362 934, 935, 401, 731, 732, 733, 734, 551, 740, 741,
3363 1267, 1205, 1206, 1132, 1046, 1047, 1116, 1259, 1260, 509,
3364 714, 105, 298, 1035, 967, 1120, 1197, 344, 106, 107,
3365 341, 578, 579, 582, 583, 944, 824, 1194, 914, 1001,
3366 792, 821, 1299, 1333, 1189, 1068, 1217, 1070, 1071, 1176,
3367 1177, 1072, 1281, 1151, 1152, 1153, 1074, 1075, 1230, 1155,
3368 1076, 1077, 1078, 1079, 1080, 552, 1082, 1083, 1084, 1085,
3369 1086, 1087, 1088, 928, 1016, 1103, 1107, 108, 109, 110,
3370 111, 112, 113, 307, 114, 521, 718, 115, 523, 116,
3371 117, 522, 524, 300, 304, 305, 514, 716, 715, 866,
3372 969, 1123, 867, 118, 119, 301, 120, 121, 122, 123,
3373 234, 235, 126, 236, 237, 654, 832, 329, 330, 331,
3374 332, 884, 743, 554, 555, 556, 557, 894, 559, 560,
3375 561, 562, 1137, 1138, 563, 564, 565, 566, 567, 1139,
3376 1140, 568, 569, 570, 571, 572, 737, 429, 659, 283,
3377 466, 239, 129, 699, 624, 662, 657, 435, 317, 470,
3378 471, 801, 1159, 494, 637, 396, 255
3384static const yytype_int16 yytable[] =
3386 125, 385, 225, 225, 303, 242, 390, 302, 312, 394,
3387 208, 74, 625, 270, 277, 434, 652, 558, 249, 238,
3388 238, 558, 212, 213, 937, 436, 460, 638, 231, 231,
3389 208, 299, 746, 210, 760, 393, 890, 764, 623, 789,
3390 632, 553, 339, 885, 293, 553, 275, 575, 318, 349,
3391 678, 125, 125, 210, 465, 296, 517, 519, 280, 284,
3392 687, 208, 229, 240, 338, 432, 762, 279, 388, 388,
3393 677, 395, 388, 293, 427, 318, 763, 1002, 677, 940,
3394 708, 320, 889, 682, 296, 311, 293, 293, 293, 225,
3395 667, 678, 308, 309, 310, 1121, 687, 403, 413, 413,
3396 413, 292, 767, 496, 208, 130, 238, 498, 892, 623,
3397 793, 632, 971, 973, 319, 231, -127, 1099, 838, 335,
3398 326, 327, 635, 336, 1275, 887, -373, 1118, 1219, 485,
3399 254, 915, 893, 510, -131, 711, 1165, 700, -128, 510,
3400 334, 3, 456, 1173, 1231, 1130, 548, 1081, 1081, 430,
3401 891, 1133, -135, 895, -373, -373, 276, 276, 281, 285,
3402 766, -134, 780, 700, 771, 446, 768, -772, 336, -666,
3403 482, -667, -783, 763, 844, 847, 246, 270, 549, 920,
3404 333, 333, 635, 720, 1218, -666, 1111, 925, -658, 512,
3405 513, -130, 747, 511, 328, 512, 513, 246, 1228, 1174,
3406 -132, -127, 1175, 508, -127, -128, -128, 586, 458, 735,
3407 748, -373, 246, -135, -133, 125, 1122, -658, 1275, 469,
3408 -127, 472, 1119, 1149, 769, 1157, 1190, 225, 306, 270,
3409 225, -134, 529, 530, 531, 532, -130, 721, 1201, -129,
3410 -118, 242, 338, -135, 487, 246, -118, 238, 318, 337,
3411 125, -132, 502, 464, 460, 1231, 231, 1081, -131, 1231,
3412 1321, 74, 275, 836, 1027, 335, -129, 125, -119, 315,
3413 1124, 316, 971, 719, 827, 719, 293, 1024, -756, -133,
3414 885, -131, -126, -131, 837, 447, 448, 296, 678, -121,
3415 468, -125, 687, 950, 337, 388, 388, 388, 388, 241,
3416 535, 536, 700, 640, 1130, 1321, 501, 270, 677, 647,
3417 677, 1130, 700, 1130, 488, 1081, 1320, 125, 649, 919,
3418 276, -121, 1081, 1081, 939, 1192, 333, 333, 74, 315,
3419 -123, 316, 335, 892, 453, 293, 1238, 1240, 1098, 1098,
3420 275, 453, 1069, 1069, 467, 125, 296, 815, -127, 478,
3421 -127, 639, -128, 641, -128, 130, 907, 1040, -757, 978,
3422 -135, -133, -135, -133, 1073, 1073, 388, 642, 631, -120,
3423 225, 318, 276, 1193, 251, 1039, 1015, 1041, -134, 1261,
3424 -134, 388, 1042, -130, 125, -130, 984, 630, -122, 125,
3425 -756, 125, 588, 735, 877, 492, 985, 724, -132, -121,
3426 -132, 678, 246, 1150, 352, 1130, 1154, 1130, 1030, -124,
3427 1165, -757, 1130, -129, 1130, -129, -657, 225, 483, -121,
3428 1170, 677, -121, 1004, 1006, 1165, -121, 1081, 1141, 1010,
3429 1012, 558, 931, -772, 238, 1130, 246, 630, 558, 631,
3430 -659, 225, 819, 231, 585, -657, 1135, -660, 1098, 590,
3431 276, 725, 1069, -134, 679, 1244, 1247, 985, 630, 315,
3432 247, 316, 250, 856, 1166, 631, 694, 852, 502, -659,
3433 871, 376, 377, 378, 1073, 871, -660, 663, 208, -545,
3434 315, 747, 316, 267, 630, 1261, 125, 467, 727, 276,
3435 1215, 631, 293, 225, 276, 706, 276, 306, -130, 1178,
3436 1273, 210, 858, 296, 678, 885, 1098, 1150, 342, 1144,
3437 630, -122, 857, 1098, 1098, 1100, 854, 1150, 1150, 542,
3438 1243, 1246, 326, 327, 495, 774, 125, 1199, 439, 862,
3439 784, 246, 125, 345, 1331, -662, 489, 668, 669, 543,
3440 998, 782, 735, 728, 735, 650, 889, -132, 674, 651,
3441 502, -133, 761, 622, 558, 622, 685, 686, 467, 757,
3442 1318, 346, 757, -135, -662, 687, 623, 453, 632, 453,
3443 547, 548, 125, -757, 293, 125, 478, -123, 553, 350,
3444 968, 1028, 701, 677, 799, 296, 830, 1269, -120, 60,
3445 1145, 1146, 960, 807, 1276, 438, 811, 776, 813, 1200,
3446 803, 440, 776, 549, 804, 622, 798, 1210, 784, 784,
3447 467, 922, 1274, 885, 1277, 805, 772, 817, 1098, 782,
3448 782, -122, 1302, 931, 622, 822, 622, -129, 843, 246,
3449 631, 276, 225, 839, 125, -130, 125, 442, -661, -132,
3450 631, -122, 225, -756, -122, -663, -129, 852, -122, 630,
3451 805, 622, 622, 245, 738, 558, 125, 1262, 1110, 630,
3452 849, -667, 381, 558, 868, 809, 738, -661, 1148, 860,
3453 863, 814, 208, 818, -663, 1136, 622, 276, 622, 553,
3454 276, 1034, 798, 805, 245, 930, 931, -123, 1326, 246,
3455 382, 433, 859, 664, 293, 210, -128, 449, -120, 913,
3456 450, 735, 735, 1235, 1236, 296, 1325, -123, 1327, 352,
3457 -123, 451, 493, 493, -123, 1328, -119, 493, -120, 499,
3458 352, -120, 865, -756, 688, -120, -334, 690, 381, 453,
3459 -99, 692, 457, 810, 1134, 808, 1339, 365, 366, 276,
3460 1185, 276, 1311, 949, 502, 439, 870, 703, 872, 467,
3461 -113, 873, 874, 510, -334, -334, 382, 383, -757, 467,
3462 955, 276, -654, 477, 510, 459, -654, 483, 293, -655,
3463 808, 1171, 1172, 241, 374, 375, 376, 377, 378, 296,
3464 -135, 1237, 453, 431, 373, 374, 375, 376, 377, 378,
3465 947, -654, 899, 650, -654, -654, 900, 1147, -655, 901,
3466 -126, -655, -134, 808, 903, 859, 388, 515, 948, 512,
3467 513, -334, 427, 384, -757, 622, 739, 622, 515, 486,
3468 512, 513, -125, 671, 510, 622, 1255, 622, 125, -655,
3469 -655, 125, 381, -761, 1136, 750, 660, 753, 381, 1136,
3470 352, 1136, 208, 1136, 1021, -98, 881, 491, 779, -756,
3471 500, -654, 497, 941, -756, 881, 945, 784, 784, 328,
3472 382, 454, 381, 784, 784, 661, 382, 481, 782, 782,
3473 952, 1256, 1257, 505, 782, 782, -761, 473, 1294, 525,
3474 512, 513, 757, 1224, -757, 520, -655, 474, 475, -757,
3475 382, 506, 1020, 1134, 917, 918, 631, -772, 225, -664,
3476 1134, 246, 923, 924, -761, -761, 700, 388, 803, 988,
3477 1227, 989, -665, 929, 936, 630, 936, 455, 510, 518,
3478 1242, 1245, -327, 455, 510, 841, 1031, -664, -664, 1036,
3479 125, 504, 504, 276, 784, 1136, 276, 1136, 528, 776,
3480 -665, -665, 1136, -130, 1136, 782, 125, 507, 381, 784,
3481 -327, -327, 958, 959, 573, 961, 962, 381, 855, -761,
3482 782, -761, 453, -121, -756, 1136, 1022, 125, 510, 1023,
3483 -673, 576, 1025, 580, 512, 513, 382, 645, 516, 1029,
3484 512, 513, 1032, -335, -664, 382, 655, 864, 1114, 589,
3485 125, 125, 526, 738, 1134, 879, 510, -665, 644, 1097,
3486 1097, 1051, 1052, 381, 648, 672, 1143, -327, 994, 1161,
3487 653, -335, -335, 673, 1164, 467, 1057, 381, 689, 510,
3488 381, 1009, 515, 691, 512, 513, 125, 1224, 697, 804,
3489 1017, 382, 911, 646, 1317, 276, 543, -113, 1319, 794,
3490 357, 358, 656, 922, 125, 382, 1249, 125, 382, 1271,
3491 717, 276, 512, 513, 693, 705, 1097, 1097, 800, 1033,
3492 1097, 707, 1115, 736, -132, 742, 1186, 547, -335, 1187,
3493 1188, 1232, 276, 722, 1225, 512, 513, 1097, -129, 1198,
3494 -419, 622, 745, 622, -123, 751, 749, 752, 912, 293,
3495 1251, 1048, 1048, 754, 765, 369, 370, 812, -120, 781,
3496 1183, 953, 1250, 946, 125, 656, 819, 125, 125, 1097,
3497 802, 822, 875, 951, 897, 800, 878, 125, 880, 1104,
3498 963, 1108, 965, 293, 883, 902, 898, 92, -307, 905,
3499 1162, 276, 37, 38, 413, 40, 906, 388, 970, 493,
3500 908, 233, 233, 909, 800, 1252, 916, 1097, 926, 276,
3501 1097, 921, 276, 975, 977, 1142, 931, 964, 980, 974,
3502 982, 976, 983, 748, 1097, 1097, 1097, 1300, 1301, 1097,
3503 1097, 979, 981, -311, 1097, 1097, 1285, 1008, 92, 92,
3504 1163, 1037, 294, 125, 1038, 1045, 37, 38, 896, 40,
3505 293, -309, 1102, 233, 1105, 125, 46, 47, 352, 1126,
3506 1160, 413, 537, 1167, 538, 539, 540, 541, 1168, 276,
3507 1169, 294, 276, 276, 1195, 365, 366, 936, 1196, 233,
3508 233, 282, 276, 233, 400, 411, 411, 1202, 233, 1204,
3509 388, 388, 1209, 738, 631, 1211, 225, 986, 987, 1223,
3510 537, 738, 538, 539, 540, 541, 992, 81, 993, 1055,
3511 995, 1248, 729, 630, 1213, 1221, 1222, 1165, 730, 1323,
3512 800, 81, 81, 374, 375, 376, 377, 378, 1263, 1265,
3513 800, 1212, 1214, 1270, 1054, -756, 1279, 1097, 1280, 1283,
3514 480, 1097, 1097, 1284, 957, 846, 848, -757, 276, 1305,
3515 729, 936, 1307, 1312, 1304, 527, 702, 125, 81, 81,
3516 276, 1314, 846, 848, 1329, 704, 1125, 1127, 1128, 1129,
3517 1335, 954, 398, 81, 1142, 415, 380, 695, 861, 881,
3518 842, 1142, 1019, 1142, 1203, 1254, 537, 1097, 538, 539,
3519 540, 541, 1258, 876, 538, 539, 540, 541, 1156, 81,
3520 81, 972, 92, 81, 41, 42, 43, 44, 81, 1131,
3521 1049, 1324, 956, 467, 584, 929, 1108, 321, 322, 323,
3522 324, 325, 1332, 1229, 1233, 1298, 233, 1234, 1226, 233,
3523 233, 437, 233, 723, 1297, 428, 738, 92, 888, 886,
3524 441, 1272, 1268, 443, 444, 445, 1330, 0, 0, 0,
3525 0, 0, 0, 0, 92, 0, 0, 0, 0, 1306,
3526 1308, 0, 276, 0, 0, 1313, 0, 1315, 1316, 0,
3527 0, 0, 0, 0, 294, 1142, 0, 1142, 0, 622,
3528 0, 622, 1142, 0, 1142, 0, 936, 1216, 0, 0,
3529 1220, 800, 0, 0, 0, 0, 0, 1241, 0, 0,
3530 0, 622, 0, 0, 92, 1142, 233, 233, 233, 233,
3531 1239, 233, 233, 0, 0, 0, 1334, 1336, 1337, 1338,
3532 0, 0, 81, 0, 0, 0, 1264, 1117, 0, 0,
3533 1340, 0, 92, 294, 0, 0, 0, 1278, 1117, 0,
3534 0, 0, 0, 0, 0, 0, 81, 1282, 0, 81,
3535 81, 0, 81, 0, 0, 800, 1158, 81, 0, 0,
3536 0, 0, 0, 0, 1286, 1287, 1288, 0, 0, 233,
3537 0, 92, 0, 0, 81, 0, 92, 233, 92, 0,
3538 0, 1289, 1290, 1291, 537, 0, 538, 539, 540, 541,
3539 542, 0, 233, 0, 1005, 1007, 352, 0, 0, 0,
3540 1011, 1013, 0, 0, 0, 0, 0, 0, 0, 0,
3541 543, 0, 0, 365, 366, 0, 233, 0, 0, 0,
3542 0, 0, 0, 0, 81, 1117, 81, 81, 81, 81,
3543 1322, 81, 81, 0, 545, 1005, 1007, 0, 1011, 1013,
3544 233, 547, 548, 0, 800, 0, 0, 800, 0, 0,
3545 0, 537, 81, 538, 539, 540, 541, 542, 371, 372,
3546 373, 374, 375, 376, 377, 378, 0, 800, 0, 0,
3547 0, 0, 0, 92, 549, 675, 676, 543, 0, 0,
3548 0, 0, 0, 0, 282, 0, 1101, 0, 0, 81,
3549 294, 81, 233, 0, 0, 0, 81, 81, 81, 0,
3550 0, 545, 0, 0, 0, 0, 0, 546, 547, 548,
3551 1101, 0, 81, 92, 0, 0, 0, 676, 0, 92,
3552 282, 0, 0, 0, 0, 0, 0, 537, 0, 538,
3553 539, 540, 541, 542, 0, 0, 81, 0, 800, 800,
3554 800, 549, 0, 0, 550, 0, 0, 0, 0, 0,
3555 0, 0, 1303, 543, 0, 0, 0, 0, 233, 92,
3556 81, 233, 92, 0, 0, 0, 0, 544, 0, 0,
3557 233, 0, 294, 0, 0, 790, 0, 545, 0, 23,
3558 24, 25, 26, 546, 547, 548, 744, 800, 0, 0,
3559 0, 0, 0, 81, 0, 32, 33, 34, 1055, 0,
3560 0, 0, 1056, 0, 0, 41, 42, 43, 44, 45,
3561 775, 1158, 81, 0, 0, 787, 0, 549, 0, 0,
3562 550, 92, 0, 92, 0, 0, 0, 0, 0, 0,
3563 0, 233, 966, 81, 0, 0, 0, 1058, 1059, 81,
3564 0, 233, 0, 92, 233, 1060, 0, 0, 1061, 0,
3565 0, 1062, 1063, 790, 790, 0, 0, 58, 59, 60,
3566 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3567 0, 0, 0, 0, 0, 0, 0, 0, 81, 81,
3568 233, 81, 81, 0, 0, 0, 0, 1066, 0, 0,
3569 81, 0, 294, 0, 288, 81, 850, 0, 0, 0,
3570 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3571 0, 0, -783, 0, 676, 0, 282, 0, 0, 0,
3572 -783, -783, -783, 0, 0, -783, -783, -783, 0, -783,
3573 0, 0, 0, 0, 0, 0, 0, -783, -783, -783,
3574 0, 81, 0, 81, 0, 103, 0, 0, 0, -783,
3575 -783, 81, -783, -783, -783, -783, -783, 0, 0, 103,
3576 103, 81, 0, 81, 81, 882, 294, 0, 0, 0,
3577 0, 0, 0, 81, 81, 0, 0, 0, 0, 0,
3578 -783, -783, 0, 0, 0, 0, 537, 0, 538, 539,
3579 540, 541, 542, 0, 0, 0, 103, 103, 904, 0,
3580 81, 0, 0, 0, 0, 0, 0, 0, 0, -783,
3581 -783, 103, 543, 0, 0, 92, 0, 233, 92, 0,
3582 0, 0, 0, 0, 0, 0, 0, 676, 0, 351,
3583 0, 0, 0, -783, 0, 0, 545, 103, 103, 0,
3584 0, 103, 546, 547, 548, 0, 103, 0, 943, 0,
3585 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3586 0, 0, 0, 0, -783, -783, 0, 0, 0, 241,
3587 -783, 0, -783, 0, -783, 0, 549, 0, 0, 550,
3588 0, 233, 352, 353, 354, 355, 356, 357, 358, 359,
3589 360, 361, 362, 363, 364, 0, 246, 233, 0, 365,
3590 366, 0, 790, 790, 0, 367, 0, 0, 790, 790,
3591 0, 0, 0, 0, 0, 0, 0, 92, 233, 0,
3592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3593 991, 0, 0, 92, 0, 81, 0, 81, 81, 0,
3594 368, 0, 369, 370, 371, 372, 373, 374, 375, 376,
3595 377, 378, 1014, 0, 92, 0, 0, 0, 0, 0,
3596 103, 0, 0, 0, 0, 0, 0, 1026, 0, 0,
3597 0, 0, 0, 0, 0, 0, 0, 92, 92, 790,
3598 0, 0, 0, 0, 103, 0, 0, 103, 103, 282,
3599 103, 0, 0, 0, 790, 103, 0, 0, 0, 0,
3600 0, 81, 0, 0, 0, 0, 0, 0, 0, 0,
3601 0, 0, 103, 92, 0, 1050, 0, 81, 0, 0,
3602 0, 0, 81, 81, 0, 0, 0, 0, 81, 81,
3603 0, 92, 0, 0, 92, 0, 0, 81, 81, 0,
3604 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3605 0, 0, 1113, 81, 0, 0, 0, 0, 0, 0,
3606 0, 0, 103, 0, 103, 103, 103, 103, 0, 103,
3607 103, 0, 0, 0, 81, 0, 0, 0, 0, 0,
3608 0, 0, 1067, 1067, 0, 0, 0, 1181, 0, 0,
3609 103, 92, 0, 0, 92, 92, 0, 81, 81, 81,
3610 0, 0, 0, 0, 92, 0, 537, 0, 538, 539,
3611 540, 541, 542, 0, 81, 0, 0, 0, 0, 0,
3612 0, 1208, 0, 0, 0, 0, 0, 103, 0, 103,
3613 0, 0, 543, 81, 103, 103, 103, 1191, 0, 1067,
3614 1067, 0, 0, 1067, 0, 0, 544, 0, 233, 0,
3615 103, 81, 0, 0, 81, 0, 545, 0, 0, 0,
3616 1067, 0, 546, 547, 548, 0, 0, 0, 0, 0,
3617 92, 0, 0, 0, 103, 0, 0, 0, 0, 0,
3618 0, 0, 92, 0, 0, 0, 0, 0, 1266, 0,
3619 0, 0, 1067, 0, 0, 0, 549, 0, 103, 550,
3620 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3621 0, 81, 0, 0, 81, 81, 0, 0, 0, 0,
3622 0, 0, 0, 0, 81, 0, 0, 0, 0, 104,
3623 1067, 103, 0, 1067, 0, 233, 0, 0, 0, 0,
3624 0, 233, 233, 104, 104, 0, 0, 1067, 1067, 1067,
3625 103, 0, 1067, 1067, 0, 0, 0, 1067, 1067, 0,
3626 0, 0, 0, 0, 0, 0, 0, 0, 81, 0,
3627 0, 103, 0, 0, 0, 0, 0, 103, 0, 0,
3628 104, 104, 0, 0, 92, 0, 0, 0, 1089, 1089,
3629 81, 0, 0, 0, 0, 104, 0, 0, 0, 0,
3630 0, 0, 81, 0, 0, 0, 0, 0, 0, 0,
3631 0, 0, 0, 0, 0, 0, 103, 103, 0, 103,
3632 103, 104, 104, 0, 0, 104, 0, 0, 103, 0,
3633 104, 0, 0, 103, 0, 0, 0, 0, 0, 0,
3634 0, 23, 24, 25, 26, 1089, 1089, 0, 0, 1089,
3635 0, 0, 0, 0, 0, 81, 0, 32, 33, 34,
3636 1067, 81, 81, 0, 1067, 1067, 1089, 41, 42, 43,
3637 44, 45, 0, 0, 0, 0, 0, 0, 128, 103,
3638 0, 103, 0, 0, 0, 0, 0, 0, 0, 103,
3639 0, 537, 0, 538, 539, 540, 541, 542, 1089, 103,
3640 0, 103, 103, 0, 81, 0, 0, 0, 0, 0,
3641 1067, 103, 103, 0, 0, 0, 0, 543, 0, 58,
3642 59, 60, 61, 62, 63, 64, 65, 66, 0, 128,
3643 128, 544, 0, 297, 0, 0, 1089, 0, 103, 1089,
3644 0, 545, 0, 0, 104, 0, 0, 0, 547, 548,
3645 0, 0, 0, 1089, 1089, 1089, 288, 0, 1089, 1089,
3646 0, 0, 297, 1089, 1089, 0, 0, 0, 104, 0,
3647 0, 104, 104, 0, 104, 404, 414, 414, 0, 104,
3648 0, 549, 0, 0, 0, 910, 0, 0, 0, 0,
3649 0, 0, 0, 0, 0, 0, 104, 0, 0, 0,
3650 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3651 0, 0, 0, 0, 0, 0, 0, 0, 0, 352,
3652 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
3653 363, 364, 0, 0, 0, 0, 365, 366, 0, 0,
3654 0, 0, 0, 0, 0, 0, 104, 0, 104, 104,
3655 104, 104, 0, 104, 104, 0, 0, 0, 0, 0,
3656 0, 0, 0, 0, 0, 0, 1089, 0, 0, 0,
3657 1089, 1089, 0, 103, 104, 103, 103, 368, 0, 369,
3658 370, 371, 372, 373, 374, 375, 376, 377, 378, 0,
3659 0, 0, 0, 128, 0, 0, -279, 0, 0, 0,
3660 0, 77, 0, 0, 0, 0, 0, 0, 0, 0,
3661 0, 104, 0, 104, 0, 0, 1089, 0, 104, 104,
3662 104, 0, 0, 0, 0, 0, 0, 0, 128, 0,
3663 0, 0, 0, 0, 104, 0, 0, 0, 0, 103,
3664 0, 0, 0, 0, 0, 128, 0, 0, 1090, 1090,
3665 0, 0, 77, 77, 0, 103, 290, 0, 104, 0,
3666 103, 103, 0, 0, 0, 297, 103, 103, 0, 0,
3667 0, 0, 0, 0, 0, 103, 103, 0, 0, 0,
3668 0, 0, 104, 0, 0, 290, 0, 0, 0, 0,
3669 0, 103, 0, 0, 0, 128, 0, 0, 290, 290,
3670 290, 0, 0, 0, 0, 1090, 1090, 0, 0, 1090,
3671 0, 0, 103, 0, 0, 104, 0, 0, 0, 0,
3672 0, 0, 0, 128, 297, 0, 1090, 1091, 1091, 0,
3673 0, 0, 0, 0, 104, 103, 103, 103, 0, 0,
3674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3675 0, 0, 103, 0, 0, 104, 0, 0, 1090, 0,
3676 0, 104, 128, 0, 0, 0, 0, 128, 0, 128,
3677 0, 103, 0, 0, 0, 0, 0, 0, 0, 0,
3678 0, 0, 0, 0, 1091, 1091, 0, 0, 1091, 103,
3679 0, 0, 103, 0, 0, 0, 1090, 0, 0, 1090,
3680 104, 104, 0, 104, 104, 1091, 0, 0, 0, 0,
3681 0, 0, 104, 1090, 1090, 1090, 77, 104, 1090, 1090,
3682 0, 0, 0, 1090, 1090, 0, 0, 0, 0, 0,
3683 0, 0, 0, 0, 0, 0, 0, 1091, 0, 0,
3684 0, 0, 0, 0, 0, 0, 0, 0, 0, 103,
3685 0, 77, 103, 103, 0, 0, 0, 0, 0, 0,
3686 0, 0, 103, 104, 128, 104, 0, 0, 77, 0,
3687 0, 0, 0, 104, 0, 1091, 0, 0, 1091, 0,
3688 0, 297, 0, 104, 0, 104, 104, 0, 290, 0,
3689 0, 0, 1091, 1091, 1091, 104, 104, 1091, 1091, 0,
3690 0, 0, 1091, 1091, 128, 0, 103, 0, 0, 0,
3691 128, 0, 0, 0, 0, 0, 0, 0, 77, 0,
3692 0, 0, 104, 0, 0, 0, 1090, 0, 103, 0,
3693 1090, 1090, 0, 0, 0, 0, 0, 0, 0, 0,
3694 103, 0, 0, 0, 0, 0, 77, 290, 0, 0,
3695 128, 0, 0, 128, 0, 0, 0, 0, 0, 0,
3696 0, 0, 0, 297, 78, 0, 791, 0, 0, 0,
3697 0, 0, 0, 0, 0, 0, 1090, 0, 0, 0,
3698 0, 0, 0, 0, 0, 77, 0, 0, 0, 0,
3699 77, 0, 77, 103, 0, 0, 0, 0, 0, 103,
3700 103, 0, 0, 0, 0, 1091, 0, 0, 0, 1091,
3701 1091, 0, 128, 0, 128, 78, 78, 0, 0, 291,
3702 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3703 0, 0, 0, 0, 128, 0, 0, 0, 0, 0,
3704 0, 0, 103, 0, 791, 791, 0, 0, 291, 0,
3705 0, 0, 0, 0, 0, 1091, 0, 104, 0, 104,
3706 104, 291, 291, 291, 124, 0, 0, 0, 0, 0,
3707 0, 0, 0, 0, 1092, 1092, 0, 0, 0, 0,
3708 0, 0, 0, 297, 0, 0, 0, 77, 0, 0,
3709 0, 0, 869, 0, 0, 0, 0, 0, 0, 0,
3710 0, 0, 0, 0, 290, 0, 0, 0, 0, 0,
3711 0, 0, 0, 0, 0, 124, 124, 0, 0, 295,
3712 0, 0, 0, 104, 0, 0, 0, 77, 0, 0,
3713 0, 1092, 1092, 77, 0, 1092, 0, 0, 0, 104,
3714 0, 0, 0, 0, 104, 104, 0, 0, 295, 0,
3715 104, 104, 1092, 0, 0, 0, 0, 297, 0, 104,
3716 104, 402, 412, 412, 412, 0, 0, 0, 0, 0,
3717 0, 0, 0, 77, 0, 104, 77, 0, 0, 78,
3718 0, 0, 0, 0, 1092, 0, 290, 0, 0, 77,
3719 0, 0, 0, 0, 0, 0, 104, 0, 0, 0,
3720 0, 0, 0, 0, 0, 0, 128, 0, 0, 128,
3721 0, 0, 0, 0, 78, 0, 0, 0, 0, 104,
3722 104, 104, 1092, 0, 0, 1092, 0, 0, 0, 0,
3723 0, 78, 0, 0, 0, 77, 104, 77, 0, 1092,
3724 1092, 1092, 0, 0, 1092, 1092, 0, 0, 0, 1092,
3725 1092, 291, 0, 0, 0, 104, 0, 77, 0, 0,
3726 0, 0, 0, 0, 0, 0, 0, 77, 77, 0,
3727 0, 0, 0, 104, 0, 0, 104, 0, 0, 124,
3728 0, 78, 0, 0, 0, 0, 0, 0, 0, 0,
3729 0, 0, 0, 791, 791, 0, 0, 0, 0, 791,
3730 791, 0, 0, 0, 0, 0, 290, 0, 128, 78,
3731 291, 0, 0, 0, 124, 0, 0, 0, 0, 0,
3732 0, 0, 0, 0, 128, 0, 0, 0, 0, 0,
3733 0, 124, 0, 104, 0, 0, 104, 104, 0, 0,
3734 0, 0, 0, 0, 0, 128, 104, 0, 78, 0,
3735 0, 295, 1092, 78, 0, 78, 1092, 1092, 0, 0,
3736 0, 0, 0, 0, 0, 0, 0, 0, 128, 128,
3737 791, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3738 290, 124, 0, 0, 0, 791, 0, 0, 0, 0,
3739 104, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3740 0, 0, 1092, 0, 128, 0, 0, 0, 0, 124,
3741 295, 0, 104, 0, 0, 0, 0, 88, 0, 0,
3742 0, 0, 128, 0, 104, 128, 0, 0, 0, 77,
3743 0, 0, 77, 0, 0, 0, 0, 0, 0, 0,
3744 0, 0, 0, 0, 0, 0, 1093, 1093, 124, 0,
3745 78, 0, 0, 124, 0, 124, 0, 0, 0, 0,
3746 0, 0, 0, 0, 0, 0, 0, 291, 88, 88,
3747 0, 0, 0, 0, 0, 0, 0, 104, 1184, 0,
3748 0, 0, 128, 104, 104, 128, 128, 0, 0, 0,
3749 78, 0, 0, 0, 0, 128, 78, 0, 0, 0,
3750 0, 0, 0, 1093, 1093, 0, 0, 1093, 0, 0,
3751 0, 0, 414, 0, 399, 0, 77, 77, 0, 0,
3752 0, 0, 77, 77, 1093, 0, 104, 0, 0, 0,
3753 0, 77, 0, 0, 0, 0, 78, 0, 0, 78,
3754 0, 0, 0, 0, 0, 0, 0, 77, 0, 291,
3755 124, 0, 78, 0, 0, 0, 1093, 0, 0, 0,
3756 0, 128, 0, 0, 0, 0, 0, 295, 77, 0,
3757 0, 0, 0, 128, 0, 0, 0, 0, 0, 414,
3758 0, 0, 0, 0, 0, 1094, 1094, 0, 0, 0,
3759 124, 77, 77, 77, 1093, 0, 124, 1093, 78, 0,
3760 78, 0, 0, 0, 0, 0, 0, 0, 77, 0,
3761 0, 1093, 1093, 1093, 0, 0, 1093, 1093, 0, 0,
3762 78, 1093, 1093, 0, 0, 0, 0, 77, 0, 0,
3763 78, 78, 88, 0, 127, 0, 124, 0, 0, 124,
3764 0, 0, 1094, 1094, 0, 77, 1094, 0, 77, 295,
3765 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3766 0, 0, 0, 1094, 0, 0, 0, 88, 0, 291,
3767 0, 0, 0, 0, 0, 128, 0, 0, 0, 0,
3768 0, 1095, 1095, 0, 88, 127, 127, 0, 0, 0,
3769 0, 0, 0, 0, 0, 1094, 0, 0, 124, 0,
3770 124, 290, 0, 0, 0, 77, 0, 0, 77, 77,
3771 0, 0, 0, 0, 0, 0, 0, 0, 77, 0,
3772 124, 0, 0, 0, 1093, 0, 0, 0, 1093, 1093,
3773 0, 0, 0, 1094, 88, 290, 1094, 0, 1095, 1095,
3774 0, 0, 1095, 291, 0, 0, 0, 0, 0, 0,
3775 1094, 1094, 1094, 0, 0, 1094, 1094, 0, 0, 1095,
3776 1094, 1094, 88, 1096, 1096, 0, 0, 0, 0, 295,
3777 0, 0, 0, 0, 1093, 0, 0, 0, 0, 0,
3778 0, 0, 0, 0, 77, 0, 0, 0, 0, 0,
3779 0, 1095, 78, 0, 0, 78, 77, 0, 0, 0,
3780 0, 88, 290, 0, 0, 0, 88, 0, 88, 0,
3781 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3782 1096, 1096, 0, 0, 1096, 0, 0, 0, 0, 1095,
3783 0, 0, 1095, 0, 0, 0, 0, 0, 0, 0,
3784 0, 1096, 0, 295, 0, 0, 1095, 1095, 1095, 127,
3785 0, 1095, 1095, 0, 0, 0, 1095, 1095, 0, 0,
3786 0, 0, 0, 1094, 0, 0, 0, 1094, 1094, 0,
3787 0, 0, 0, 1096, 0, 0, 0, 0, 0, 78,
3788 78, 0, 0, 0, 127, 78, 78, 0, 0, 0,
3789 0, 0, 124, 0, 78, 124, 0, 0, 77, 0,
3790 0, 127, 0, 88, 0, 0, 0, 0, 0, 0,
3791 78, 1096, 0, 1094, 1096, 0, 0, 0, 0, 0,
3792 0, 0, 0, 0, 0, 0, 0, 0, 1096, 1096,
3793 1096, 78, 0, 1096, 1096, 0, 0, 0, 1096, 1096,
3794 0, 0, 0, 88, 0, 0, 0, 0, 0, 88,
3795 0, 127, 0, 0, 78, 78, 78, 0, 0, 1095,
3796 0, 0, 0, 1095, 1095, 0, 0, 0, 0, 0,
3797 0, 78, 0, 0, 0, 0, 0, 0, 0, 127,
3798 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,
3799 78, 0, 88, 0, 124, 0, 0, 0, 0, 0,
3800 0, 0, 0, 0, 0, 785, 0, 0, 78, 1095,
3801 124, 78, 0, 0, 0, 0, 0, 0, 127, 0,
3802 0, 0, 0, 127, 0, 127, 0, 0, 0, 0,
3803 0, 124, 0, 0, 0, 0, 0, 0, 0, 0,
3804 0, 1096, 0, 0, 0, 1096, 1096, 0, 0, 0,
3805 0, 88, 0, 88, 124, 124, 0, 0, 0, 23,
3806 24, 25, 26, 0, 291, 0, 0, 0, 78, 0,
3807 0, 78, 78, 88, 0, 32, 33, 34, 1055, 0,
3808 0, 78, 1056, 785, 785, 41, 42, 43, 44, 45,
3809 124, 1096, 0, 0, 0, 0, 0, 0, 291, 0,
3810 0, 0, 0, 0, 0, 0, 0, 0, 124, 0,
3811 0, 124, 0, 0, 0, 0, 0, 1058, 1059, 0,
3812 127, 0, 0, 0, 0, 1060, 0, 0, 1061, 0,
3813 0, 1062, 1063, 0, 1064, 0, 0, 58, 59, 60,
3814 61, 62, 63, 64, 65, 66, 0, 78, 0, 0,
3815 0, 0, 227, 227, 0, 0, 0, 0, 0, 78,
3816 127, 0, 0, 0, 1182, 291, 127, 1066, 124, 0,
3817 0, 124, 124, 0, 288, 0, 0, 0, 0, 0,
3818 0, 124, 0, 0, 260, 264, 265, 266, 246, 0,
3819 0, 227, 227, 0, 0, 0, 0, 0, 412, 0,
3820 0, 0, 0, 0, 313, 314, 127, 0, 0, 127,
3821 0, 352, 353, 354, 355, 356, 357, 358, 359, 0,
3822 361, 362, 127, 0, 0, 0, 0, 0, 365, 366,
3823 0, 0, 0, 0, 0, 0, 0, 0, 0, 227,
3824 0, 0, 0, 0, 0, 88, 0, 124, 88, 0,
3825 0, 0, 0, 0, 0, 0, 0, 0, 0, 124,
3826 0, 78, 0, 0, 0, 412, 0, 0, 127, 0,
3827 127, 369, 370, 371, 372, 373, 374, 375, 376, 377,
3828 378, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3829 127, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3830 127, 127, 0, 0, 0, 0, 0, 0, 0, 0,
3831 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3832 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3833 0, 0, 785, 785, 0, 0, 0, 0, 785, 785,
3834 0, 0, 0, 0, 0, 0, 0, 88, 0, 0,
3835 0, 227, 0, 0, 227, 227, 227, 0, 313, 0,
3836 0, 124, 0, 88, 0, 0, 0, 0, 0, 23,
3837 24, 25, 26, 0, 0, 0, 0, 227, 0, 0,
3838 227, 0, 0, 0, 88, 32, 33, 34, 1055, 0,
3839 0, 0, 1056, 0, 1057, 41, 42, 43, 44, 45,
3840 0, 0, 0, 0, 0, 0, 0, 88, 88, 785,
3841 0, 0, 0, 0, 543, 0, 0, 0, 0, 0,
3842 0, 0, 0, 0, 785, 0, 0, 1058, 1059, 0,
3843 0, 0, 0, 0, 0, 1060, 0, 0, 1061, 0,
3844 0, 1062, 1063, 88, 1064, 547, 0, 58, 59, 1065,
3845 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
3846 0, 88, 127, 0, 88, 127, 0, 0, 0, 0,
3847 0, 0, 0, 0, 0, 0, 0, 1066, 0, 0,
3848 0, 0, 0, 0, 288, 0, 0, 0, 592, 593,
3849 594, 595, 596, 0, 0, 597, 598, 599, 600, 601,
3850 602, 603, 604, 0, 606, 0, 0, 607, 608, 609,
3851 610, 611, 612, 613, 614, 615, 616, 1180, 0, 0,
3852 227, 88, 0, 0, 88, 88, 0, 0, 0, 0,
3853 0, 0, 0, 0, 88, 0, 0, 0, 0, 0,
3854 0, 0, 0, 0, 0, 0, 0, 0, 0, 127,
3855 127, 0, 0, 0, 0, 127, 127, 0, 0, 0,
3856 0, 0, 0, 0, 127, 0, 0, 227, 0, 0,
3857 0, 0, 0, 0, 0, 0, 0, 0, 617, 618,
3858 127, 0, 619, 0, 0, 0, 227, 227, 0, 0,
3859 0, 227, 0, 0, 0, 227, 0, 266, 0, 0,
3860 88, 127, 175, 176, 177, 178, 179, 180, 181, 182,
3861 183, 0, 88, 184, 185, 696, 0, 0, 0, 186,
3862 187, 188, 189, 0, 127, 127, 127, 0, 227, 0,
3863 0, 227, 0, 0, 190, 191, 0, 0, 0, 0,
3864 0, 127, 0, 227, 0, 0, 0, 0, 0, 0,
3865 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3866 127, 726, 0, 0, 192, 193, 194, 195, 196, 197,
3867 198, 199, 200, 201, 0, 202, 203, 0, 127, 0,
3868 0, 127, 204, 241, 0, 0, 0, 0, 0, 0,
3869 0, 0, 0, 0, 0, 0, 0, 227, 352, -784,
3870 -784, -784, -784, 357, 358, 0, 0, -784, -784, 758,
3871 0, 0, 758, 0, 88, 365, 366, 0, 0, 0,
3872 0, 227, 0, 0, 0, 0, 786, 0, 0, 0,
3873 0, 0, 0, 0, 0, 0, 0, 0, 127, 0,
3874 0, 127, 127, 0, 0, 0, 0, 0, 0, 0,
3875 0, 127, 0, 0, 0, 0, 0, 0, 369, 370,
3876 371, 372, 373, 374, 375, 376, 377, 378, 0, 0,
3877 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3878 0, 0, 227, 0, 0, 0, 0, 0, 0, 0,
3879 0, 0, 227, 0, 0, 0, 0, 0, 0, 0,
3880 0, 0, 0, 0, 845, 845, 0, 227, 758, 758,
3881 845, 0, 0, 0, 0, 0, 0, 127, 0, 0,
3882 0, 845, 845, 0, 0, 227, 0, 227, 0, 127,
3883 0, 0, 0, 0, 0, 0, 0, 845, -783, 4,
3884 0, 5, 6, 7, 8, 9, 0, 0, 0, 10,
3885 11, 0, 0, 0, 12, 0, 13, 14, 15, 16,
3886 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
3887 22, 23, 24, 25, 26, 0, 227, 27, 0, 0,
3888 0, 0, 0, 28, 29, 30, 31, 32, 33, 34,
3889 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
3890 44, 45, 46, 47, 0, 0, 0, 0, 0, 227,
3891 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
3892 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
3893 51, 127, 0, 0, 0, 0, 0, 52, 227, 0,
3894 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
3895 59, 60, 61, 62, 63, 64, 65, 66, 0, 227,
3896 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3897 0, 0, 0, 0, 0, 0, 0, 0, 627, 628,
3898 0, 0, 629, 0, 0, 0, 67, 68, 69, 0,
3899 0, 0, 0, 0, 0, 0, 0, 0, -783, 0,
3900 -783, 0, 175, 176, 177, 178, 179, 180, 181, 182,
3901 183, 0, 0, 184, 185, 0, 0, 0, 0, 186,
3902 187, 188, 189, 0, 0, 0, 0, 0, 0, 0,
3903 0, 0, 758, 0, 190, 191, 0, 0, 0, 0,
3904 0, 227, 0, 0, 0, 0, 0, 0, 227, 0,
3905 0, 0, 1003, 845, 845, 0, 0, 0, 0, 845,
3906 845, 0, 0, 227, 192, 193, 194, 195, 196, 197,
3907 198, 199, 200, 201, 0, 202, 203, 0, 227, 0,
3908 0, 0, 204, 241, 0, 0, 0, 0, 0, 0,
3909 0, 0, 0, 758, 845, 845, 0, 845, 845, 0,
3910 227, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3912 0, 0, 1043, 1044, 0, 0, 227, 0, 0, 0,
3913 845, 1053, 0, 0, 0, 0, 0, 0, 0, 0,
3914 0, 0, 0, 0, 0, 845, 0, 0, 0, 0,
3915 0, 0, 0, 0, -783, 4, 0, 5, 6, 7,
3916 8, 9, 0, 227, 0, 10, 11, 0, 0, 845,
3917 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
3918 0, 0, 0, 0, 20, 21, 22, 23, 24, 25,
3919 26, 0, 0, 27, 0, 0, 0, 0, 0, 28,
3920 29, 268, 31, 32, 33, 34, 35, 36, 37, 38,
3921 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
3922 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3923 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
3924 0, 0, 0, 0, 0, 50, 51, 0, 227, 0,
3925 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
3926 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
3927 63, 64, 65, 66, 0, -783, 0, 0, 0, 0,
3928 -761, 0, 0, 0, 0, 0, 0, 0, -761, -761,
3929 -761, 0, 0, -761, -761, -761, 0, -761, 0, 0,
3930 0, 0, 67, 68, 69, -761, -761, -761, -761, -761,
3931 0, 0, 0, 0, -783, 0, -783, -761, -761, 0,
3932 -761, -761, -761, -761, -761, 0, 0, 0, 352, 353,
3933 354, 355, 356, 357, 358, 359, 360, 361, 362, -784,
3934 -784, 0, 0, 0, 0, 365, 366, 0, -761, -761,
3935 0, 0, 0, 0, 0, 0, 0, 0, -761, -761,
3936 -761, -761, -761, -761, -761, -761, -761, -761, -761, -761,
3937 -761, 0, 0, 0, 0, -761, -761, -761, -761, 0,
3938 853, -761, 0, 0, 0, 0, 227, -761, 369, 370,
3939 371, 372, 373, 374, 375, 376, 377, 378, 0, 0,
3940 0, -761, 0, 0, -761, 0, 0, 0, 0, 0,
3941 0, 0, 0, 0, 0, -131, -761, -761, -761, -761,
3942 -761, -761, -761, -761, -761, -761, -761, -761, 0, 0,
3943 0, 0, -761, -761, -761, -761, -654, 0, -761, -761,
3944 -761, 0, -761, 0, -654, -654, -654, 0, 0, -654,
3945 -654, -654, 0, -654, 0, 0, 0, 0, 0, 0,
3946 0, -654, 0, -654, -654, -654, 0, 0, 0, 0,
3947 0, 0, 0, -654, -654, 0, -654, -654, -654, -654,
3948 -654, 0, 0, 0, 352, 353, 354, 355, 356, 357,
3949 358, 359, 360, 361, 362, 363, 364, 0, 0, 0,
3950 0, 365, 366, 0, -654, -654, 0, 0, 0, 0,
3951 0, 0, 0, 0, -654, -654, -654, -654, -654, -654,
3952 -654, -654, -654, -654, -654, -654, -654, 0, 0, 0,
3953 0, -654, -654, -654, -654, 0, -654, -654, 0, 0,
3954 0, 0, 368, -654, 369, 370, 371, 372, 373, 374,
3955 375, 376, 377, 378, 0, 0, 0, -654, 0, 0,
3956 -654, 0, 0, 0, 0, 0, 0, 0, 246, 0,
3957 0, -654, -654, -654, -654, -654, -654, -654, -654, -654,
3958 -654, -654, -654, -654, 0, 0, 0, 0, 0, -654,
3959 -654, -654, -655, 0, -654, -654, -654, 0, -654, 0,
3960 -655, -655, -655, 0, 0, -655, -655, -655, 0, -655,
3961 0, 0, 0, 0, 0, 0, 0, -655, 0, -655,
3962 -655, -655, 0, 0, 0, 0, 0, 0, 0, -655,
3963 -655, 0, -655, -655, -655, -655, -655, 0, 0, 0,
3964 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
3965 362, 363, 364, 0, 0, 0, 0, 365, 366, 0,
3966 -655, -655, 0, 0, 0, 0, 0, 0, 0, 0,
3967 -655, -655, -655, -655, -655, -655, -655, -655, -655, -655,
3968 -655, -655, -655, 0, 0, 0, 0, -655, -655, -655,
3969 -655, 0, -655, -655, 0, 0, 0, 0, 368, -655,
3970 369, 370, 371, 372, 373, 374, 375, 376, 377, 378,
3971 0, 0, 0, -655, 0, 0, -655, 0, 0, 0,
3972 0, 0, 0, 0, 0, 0, 0, -655, -655, -655,
3973 -655, -655, -655, -655, -655, -655, -655, -655, -655, -655,
3974 0, 0, 0, 0, 0, -655, -655, -655, -762, 0,
3975 -655, -655, -655, 0, -655, 0, -762, -762, -762, 0,
3976 0, -762, -762, -762, 0, -762, 0, 0, 0, 0,
3977 0, 0, 0, -762, -762, -762, -762, -762, 0, 0,
3978 0, 0, 0, 0, 0, -762, -762, 0, -762, -762,
3979 -762, -762, -762, 0, 0, 0, 352, 353, 354, 355,
3980 356, 357, 358, 0, 0, 361, 362, 0, 0, 0,
3981 0, 0, 0, 365, 366, 0, -762, -762, 0, 0,
3982 0, 0, 0, 0, 0, 0, -762, -762, -762, -762,
3983 -762, -762, -762, -762, -762, -762, -762, -762, -762, 0,
3984 0, 0, 0, -762, -762, -762, -762, 0, 0, -762,
3985 0, 0, 0, 0, 0, -762, 369, 370, 371, 372,
3986 373, 374, 375, 376, 377, 378, 0, 0, 0, -762,
3987 0, 0, -762, 0, 0, 0, 0, 0, 0, 0,
3988 0, 0, 0, 0, -762, -762, -762, -762, -762, -762,
3989 -762, -762, -762, -762, -762, -762, 0, 0, 0, 0,
3990 -762, -762, -762, -762, -763, 0, -762, -762, -762, 0,
3991 -762, 0, -763, -763, -763, 0, 0, -763, -763, -763,
3992 0, -763, 0, 0, 0, 0, 0, 0, 0, -763,
3993 -763, -763, -763, -763, 0, 0, 0, 0, 0, 0,
3994 0, -763, -763, 0, -763, -763, -763, -763, -763, 0,
3995 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3996 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3997 0, 0, -763, -763, 0, 0, 0, 0, 0, 0,
3998 0, 0, -763, -763, -763, -763, -763, -763, -763, -763,
3999 -763, -763, -763, -763, -763, 0, 0, 0, 0, -763,
4000 -763, -763, -763, 0, 0, -763, 0, 0, 0, 0,
4001 0, -763, 0, 0, 0, 0, 0, 0, 0, 0,
4002 0, 0, 0, 0, 0, -763, 0, 0, -763, 0,
4003 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4004 -763, -763, -763, -763, -763, -763, -763, -763, -763, -763,
4005 -763, -763, 0, 0, 0, 0, -763, -763, -763, -763,
4006 -475, 0, -763, -763, -763, 0, -763, 0, -475, -475,
4007 -475, 0, 0, -475, -475, -475, 0, -475, 0, 0,
4008 0, 0, 0, 0, 0, -475, -475, -475, -475, 0,
4009 0, 0, 0, 0, 0, 0, 0, -475, -475, 0,
4010 -475, -475, -475, -475, -475, 0, 0, 0, 0, 0,
4011 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4012 0, 0, 0, 0, 0, 0, 0, 0, -475, -475,
4013 0, 0, 0, 0, 0, 0, 0, 0, -475, -475,
4014 -475, -475, -475, -475, -475, -475, -475, -475, -475, -475,
4015 -475, 0, 0, 0, 0, -475, -475, -475, -475, 0,
4016 0, -475, 0, 0, 0, 0, 0, -475, 0, 0,
4017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4018 0, -475, 0, 0, 0, 0, 0, 0, 0, 0,
4019 0, 0, 0, 0, 0, 0, -475, 0, -475, -475,
4020 -475, -475, -475, -475, -475, -475, -475, -475, 0, 0,
4021 0, 0, -475, -475, -475, -475, -328, 241, -475, -475,
4022 -475, 0, -475, 0, -328, -328, -328, 0, 0, -328,
4023 -328, -328, 0, -328, 0, 0, 0, 0, 0, 0,
4024 0, -328, 0, -328, -328, -328, 0, 0, 0, 0,
4025 0, 0, 0, -328, -328, 0, -328, -328, -328, -328,
4026 -328, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4027 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4028 0, 0, 0, 0, -328, -328, 0, 0, 0, 0,
4029 0, 0, 0, 0, -328, -328, -328, -328, -328, -328,
4030 -328, -328, -328, -328, -328, -328, -328, 0, 0, 0,
4031 0, -328, -328, -328, -328, 0, 0, -328, 0, 0,
4032 0, 0, 0, -328, 0, 0, 0, 0, 0, 0,
4033 0, 0, 0, 0, 0, 0, 0, -328, 0, 0,
4034 -328, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4035 0, 0, -328, -328, -328, -328, -328, -328, -328, -328,
4036 -328, -328, -328, -328, 0, 0, 0, 0, 0, -328,
4037 -328, -328, -783, 0, -328, -328, -328, 0, -328, 0,
4038 -783, -783, -783, 0, 0, -783, -783, -783, 0, -783,
4039 0, 0, 0, 0, 0, 0, 0, -783, -783, -783,
4040 -783, 0, 0, 0, 0, 0, 0, 0, 0, -783,
4041 -783, 0, -783, -783, -783, -783, -783, 0, 0, 0,
4042 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4043 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4044 -783, -783, 0, 0, 0, 0, 0, 0, 0, 0,
4045 -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
4046 -783, -783, -783, 0, 0, 0, 0, -783, -783, -783,
4047 -783, 0, 0, -783, 0, 0, 0, 0, 0, -783,
4048 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4049 0, 0, 0, -783, 0, 0, 0, 0, 0, 0,
4050 0, 0, 0, 0, 0, 0, 0, 0, -783, 0,
4051 -783, -783, -783, -783, -783, -783, -783, -783, -783, -783,
4052 0, 0, 0, 0, -783, -783, -783, -783, -334, 241,
4053 -783, -783, -783, 0, -783, 0, -334, -334, -334, 0,
4054 0, -334, -334, -334, 0, -334, 0, 0, 0, 0,
4055 0, 0, 0, -334, 0, -334, -334, 0, 0, 0,
4056 0, 0, 0, 0, 0, -334, -334, 0, -334, -334,
4057 -334, -334, -334, 0, 0, 0, 0, 0, 0, 0,
4058 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4059 0, 0, 0, 0, 0, 0, -334, -334, 0, 0,
4060 0, 0, 0, 0, 0, 0, -334, -334, -334, -334,
4061 -334, -334, -334, -334, -334, -334, -334, -334, -334, 0,
4062 0, 0, 0, -334, -334, -334, -334, 0, 854, -334,
4063 0, 0, 0, 0, 0, -334, 0, 0, 0, 0,
4064 0, 0, 0, 0, 0, 0, 0, 0, 0, -334,
4065 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4066 0, 0, 0, -133, -334, 0, -334, -334, -334, -334,
4067 -334, -334, -334, -334, -334, -334, 0, 0, 0, 0,
4068 797, -334, -334, -334, -341, 0, -334, -334, -334, 0,
4069 -334, 0, -341, -341, -341, 0, 0, -341, -341, -341,
4070 0, -341, 0, 0, 0, 0, 0, 0, 0, -341,
4071 0, -341, -341, 0, 0, 0, 0, 0, 0, 0,
4072 0, -341, -341, 0, -341, -341, -341, -341, -341, 0,
4073 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4074 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4075 0, 0, -341, -341, 0, 0, 0, 0, 0, 0,
4076 0, 0, -341, -341, -341, -341, -341, -341, -341, -341,
4077 -341, -341, -341, -341, -341, 0, 0, 0, 0, -341,
4078 -341, -341, -341, 0, 0, -341, 0, 0, 0, 0,
4079 0, -341, 0, 0, 0, 0, 0, 0, 0, 0,
4080 0, 0, 0, 0, 0, -341, 0, 0, 0, 0,
4081 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4082 -341, 0, -341, -341, -341, -341, -341, -341, -341, -341,
4083 -341, -341, 0, 0, 0, 0, 0, -341, -341, -341,
4084 -761, 431, -341, -341, -341, 0, -341, 0, -761, -761,
4085 -761, 910, 0, 0, -761, -761, 0, -761, 0, 0,
4086 0, 0, 0, 0, 0, -761, -761, 0, 0, 0,
4087 0, 0, 0, 0, 0, 0, 0, -761, -761, 0,
4088 -761, -761, -761, -761, -761, 352, 353, 354, 355, 356,
4089 357, 358, 359, 360, 361, 362, 363, 364, 0, 0,
4090 0, 0, 365, 366, 0, 0, 0, 0, -761, -761,
4091 0, 0, 0, 0, 0, 0, 0, 0, -761, -761,
4092 -761, -761, -761, -761, -761, -761, -761, -761, -761, -761,
4093 -761, 0, 0, 0, 0, -761, -761, -761, -761, 0,
4094 795, -761, 0, 368, 0, 369, 370, 371, 372, 373,
4095 374, 375, 376, 377, 378, 0, 0, 0, 0, 0,
4096 0, -761, 0, 0, 0, 0, 0, 0, 0, 0,
4097 0, 0, 0, 0, 0, -131, -761, 0, -761, -761,
4098 -761, -761, -761, -761, -761, -761, -761, -761, 0, 0,
4099 0, 0, -761, -761, -761, -122, -761, 0, -761, 0,
4100 -761, 0, -761, 0, -761, -761, -761, 0, 0, 0,
4101 -761, -761, 0, -761, 0, 0, 0, 0, 0, 0,
4102 0, -761, -761, 0, 0, 0, 0, 0, 0, 0,
4103 0, 0, 0, -761, -761, 0, -761, -761, -761, -761,
4104 -761, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4106 0, 0, 0, 0, -761, -761, 0, 0, 0, 0,
4107 0, 0, 0, 0, -761, -761, -761, -761, -761, -761,
4108 -761, -761, -761, -761, -761, -761, -761, 0, 0, 0,
4109 0, -761, -761, -761, -761, 0, 795, -761, 0, 0,
4110 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4111 0, 0, 0, 0, 0, 0, 0, -761, 0, 0,
4112 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4113 0, -131, -761, 0, -761, -761, -761, -761, -761, -761,
4114 -761, -761, -761, -761, 0, 0, 0, 0, -761, -761,
4115 -761, -761, -334, 0, -761, 0, -761, 0, -761, 0,
4116 -334, -334, -334, 0, 0, 0, -334, -334, 0, -334,
4117 0, 0, 0, 0, 0, 0, 0, -334, 0, 0,
4118 0, 0, 0, 0, 0, 0, 0, 0, 0, -334,
4119 -334, 0, -334, -334, -334, -334, -334, 0, 0, 0,
4120 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4121 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4122 -334, -334, 0, 0, 0, 0, 0, 0, 0, 0,
4123 -334, -334, -334, -334, -334, -334, -334, -334, -334, -334,
4124 -334, -334, -334, 0, 0, 0, 0, -334, -334, -334,
4125 -334, 0, 796, -334, 0, 0, 0, 0, 0, 0,
4126 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4127 0, 0, 0, -334, 0, 0, 0, 0, 0, 0,
4128 0, 0, 0, 0, 0, 0, 0, -133, -334, 0,
4129 -334, -334, -334, -334, -334, -334, -334, -334, -334, -334,
4130 0, 0, 0, 0, 797, -334, -334, -124, -334, 0,
4131 -334, 0, -334, 0, -334, 0, -334, -334, -334, 0,
4132 0, 0, -334, -334, 0, -334, 0, 0, 0, 0,
4133 0, 0, 0, -334, 0, 0, 0, 0, 0, 0,
4134 0, 0, 0, 0, 0, -334, -334, 0, -334, -334,
4135 -334, -334, -334, 0, 0, 0, 0, 0, 0, 0,
4136 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4137 0, 0, 0, 0, 0, 0, -334, -334, 0, 0,
4138 0, 0, 0, 0, 0, 0, -334, -334, -334, -334,
4139 -334, -334, -334, -334, -334, -334, -334, -334, -334, 0,
4140 0, 0, 0, -334, -334, -334, -334, 0, 796, -334,
4141 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4142 0, 0, 0, 0, 0, 0, 0, 0, 0, -334,
4143 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4144 0, 0, 0, -133, -334, 0, -334, -334, -334, -334,
4145 -334, -334, -334, -334, -334, -334, 0, 0, 0, 0,
4146 797, -334, -334, -334, 0, 0, -334, 0, -334, 4,
4147 -334, 5, 6, 7, 8, 9, -783, -783, -783, 10,
4148 11, 0, 0, -783, 12, 0, 13, 14, 15, 16,
4149 17, 18, 19, 0, 0, 0, 0, 0, 20, 21,
4150 22, 23, 24, 25, 26, 0, 0, 27, 0, 0,
4151 0, 0, 0, 28, 29, 268, 31, 32, 33, 34,
4152 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
4153 44, 45, 46, 47, 0, 0, -783, 0, 0, 0,
4154 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
4155 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
4156 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
4157 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
4158 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
4159 0, 4, 0, 5, 6, 7, 8, 9, 0, 0,
4160 -783, 10, 11, 0, -783, -783, 12, 0, 13, 14,
4161 15, 16, 17, 18, 19, 0, 67, 68, 69, 0,
4162 20, 21, 22, 23, 24, 25, 26, 0, -783, 27,
4163 -783, 0, 0, 0, 0, 28, 29, 268, 31, 32,
4164 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
4165 42, 43, 44, 45, 46, 47, 0, 0, -783, 0,
4166 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
4167 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4168 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
4169 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
4170 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4171 0, 0, 0, 4, 0, 5, 6, 7, 8, 9,
4172 0, 0, -783, 10, 11, 0, 0, -783, 12, -783,
4173 13, 14, 15, 16, 17, 18, 19, 0, 67, 68,
4174 69, 0, 20, 21, 22, 23, 24, 25, 26, 0,
4175 -783, 27, -783, 0, 0, 0, 0, 28, 29, 268,
4176 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4177 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4178 -783, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4179 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4180 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4181 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
4182 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4183 65, 66, 0, 0, 0, 4, 0, 5, 6, 7,
4184 8, 9, 0, 0, -783, 10, 11, 0, 0, -783,
4185 12, 0, 13, 14, 15, 16, 17, 18, 19, -783,
4186 67, 68, 69, 0, 20, 21, 22, 23, 24, 25,
4187 26, 0, -783, 27, -783, 0, 0, 0, 0, 28,
4188 29, 268, 31, 32, 33, 34, 35, 36, 37, 38,
4189 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
4190 0, 0, -783, 0, 0, 0, 0, 0, 0, 0,
4191 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
4192 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
4193 0, 0, 0, 52, 0, 0, 53, 54, 0, 55,
4194 56, 0, 57, 0, 0, 58, 59, 60, 61, 62,
4195 63, 64, 65, 66, 0, 0, 0, 4, 0, 5,
4196 6, 7, 8, 9, 0, 0, -783, 10, 11, 0,
4197 0, -783, 12, 0, 13, 14, 15, 16, 17, 18,
4198 19, 0, 67, 68, 69, 0, 20, 21, 22, 23,
4199 24, 25, 26, 0, -783, 27, -783, 0, 0, 0,
4200 0, 28, 29, 268, 31, 32, 33, 34, 35, 36,
4201 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
4202 46, 47, 0, 0, -783, 0, 0, 0, 0, 0,
4203 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
4204 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
4205 0, 0, 0, 0, 0, 52, 0, 0, 53, 54,
4206 0, 55, 56, 0, 57, 0, 0, 58, 59, 60,
4207 61, 62, 63, 64, 65, 66, 0, 0, 0, 4,
4208 0, 5, 6, 7, 8, 9, 0, -783, -783, 10,
4209 11, 0, 0, 0, 12, 0, 13, 14, 15, 16,
4210 17, 18, 19, 0, 67, 68, 69, 0, 20, 21,
4211 22, 23, 24, 25, 26, 0, -783, 27, -783, 0,
4212 0, 0, 0, 28, 29, 268, 31, 32, 33, 34,
4213 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
4214 44, 45, 46, 47, 0, 0, -783, 0, 0, 0,
4215 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
4216 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
4217 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
4218 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
4219 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
4220 0, 4, 0, 5, 6, 7, 8, 9, 0, 0,
4221 -783, 10, 11, 0, 0, 0, 12, 0, 13, 14,
4222 15, 16, 17, 18, 19, 0, 67, 68, 69, 0,
4223 20, 21, 22, 23, 24, 25, 26, 0, -783, 27,
4224 -783, 0, 0, 0, 0, 28, 29, 268, 31, 32,
4225 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
4226 42, 43, 44, 45, 46, 47, 0, 0, -783, 0,
4227 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
4228 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4229 0, 50, 51, 0, 0, 0, 0, 0, 0, 52,
4230 0, 0, 53, 54, 0, 55, 56, 0, 57, 0,
4231 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4232 0, 0, 0, 4, 0, 5, 6, 7, 8, 9,
4233 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4234 13, 14, 15, 16, 17, 18, 19, 0, 67, 68,
4235 69, 0, 20, 21, 22, 23, 24, 25, 26, 0,
4236 -783, 27, -783, 0, 0, 0, 0, 28, 29, 268,
4237 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4238 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4239 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4241 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4242 0, 52, 0, 0, 269, 54, 0, 55, 56, 0,
4243 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4244 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
4245 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4246 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4247 67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
4248 -783, 0, -783, 4, -783, 5, 6, 7, 8, 9,
4249 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4250 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
4251 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
4252 0, 27, 0, 0, 0, 0, 0, 28, 29, 268,
4253 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4254 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4255 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4256 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4257 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4258 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
4259 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4260 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
4261 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4262 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4263 67, 68, 69, 0, 0, 0, 0, 0, 0, 0,
4264 -783, 0, -783, 4, -783, 5, 6, 7, 8, 9,
4265 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4266 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
4267 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
4268 0, 27, 0, 0, 0, 0, 0, 28, 29, 30,
4269 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4270 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4271 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4272 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4273 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4274 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
4275 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4276 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
4277 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4278 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4279 67, 68, 69, 0, 0, -783, 0, 0, 0, 0,
4280 0, 0, -783, 4, -783, 5, 6, 7, 8, 9,
4281 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4282 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
4283 0, 0, 20, 21, 22, 23, 24, 25, 26, 0,
4284 0, 27, 0, 0, 0, 0, 0, 28, 29, 268,
4285 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4286 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4287 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4288 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4289 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4290 0, 52, 0, 0, 53, 54, 0, 55, 56, 0,
4291 57, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4292 65, 66, 0, 0, 0, 0, 0, 0, 0, 0,
4293 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4294 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4295 67, 68, 69, 0, 0, -783, 0, 387, 0, 5,
4296 6, 7, -783, 9, -783, 0, 0, 10, 11, 0,
4297 0, 0, 12, -770, 13, 14, 15, 16, 17, 18,
4298 19, 0, 0, 0, 0, 0, 20, 21, 22, 23,
4299 24, 25, 26, 0, 0, 27, 0, 0, 0, 0,
4300 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
4301 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
4302 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
4303 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
4304 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
4305 0, 0, 0, 0, 0, 216, 0, 0, 217, 54,
4306 0, 55, 56, 0, 0, 0, 0, 58, 59, 60,
4307 61, 62, 63, 64, 65, 66, 0, 0, -771, 4,
4308 0, 5, 6, 7, 8, 9, -771, -771, -771, 10,
4309 11, 0, -771, -771, 12, -771, 13, 14, 15, 16,
4310 17, 18, 19, -771, 67, 68, 69, 0, 20, 21,
4311 22, 23, 24, 25, 26, 0, 315, 27, 316, 0,
4312 0, 0, 0, 28, 29, 268, 31, 32, 33, 34,
4313 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
4314 44, 45, 46, 47, 0, 0, -771, 0, 0, 0,
4315 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
4316 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
4317 51, 0, 0, 0, 0, 0, 0, 52, 0, 0,
4318 53, 54, 0, 55, 56, 0, 57, 0, 0, 58,
4319 59, 60, 61, 62, 63, 64, 65, 66, 0, -771,
4320 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4321 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4322 0, 0, 0, 0, 0, 0, 67, 68, 69, 0,
4323 0, -771, 0, 0, 0, 0, -771, 0, 526, -771,
4324 4, 0, 5, 6, 7, 8, 9, 0, 0, 0,
4325 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
4326 16, 17, 18, 19, 0, 0, 0, 0, 0, 20,
4327 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
4328 0, 0, 0, 0, 28, 29, 30, 31, 32, 33,
4329 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
4330 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
4331 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
4332 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4333 50, 51, 0, 0, 0, 0, 0, 0, 52, 0,
4334 0, 53, 54, 0, 55, 56, 0, 57, 0, 0,
4335 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
4336 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4337 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4338 0, 0, 0, 0, 0, 0, 0, 67, 68, 69,
4339 0, 0, -771, 5, 6, 7, 0, 9, 0, 526,
4340 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
4341 15, 16, 17, 18, 19, 0, 0, 0, 0, 0,
4342 20, 21, 22, 23, 24, 25, 26, 0, 0, 214,
4343 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
4344 33, 34, 35, 36, 37, 38, 39, 40, 215, 41,
4345 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
4346 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
4347 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4348 0, 50, 51, 0, 0, 0, 0, 0, 0, 216,
4349 0, 0, 217, 54, 0, 55, 56, 0, 218, 219,
4350 220, 58, 59, 221, 61, 62, 63, 64, 65, 66,
4351 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
4352 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
4353 14, 15, 16, 17, 18, 19, 0, 0, 67, 222,
4354 69, 20, 21, 22, 23, 24, 25, 26, 0, 0,
4355 27, 0, 246, 0, 0, 0, 0, 29, 0, 0,
4356 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
4357 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
4358 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
4359 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4360 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
4361 216, 0, 0, 217, 54, 0, 55, 56, 0, 0,
4362 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
4363 66, 0, 0, 0, 0, 131, 132, 133, 134, 135,
4364 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
4365 146, 147, 148, 149, 150, 151, 152, 153, 154, 67,
4366 68, 69, 155, 156, 157, 416, 417, 418, 419, 162,
4367 163, 164, 0, 246, 0, 0, 0, 165, 166, 167,
4368 168, 420, 421, 422, 423, 173, 37, 38, 424, 40,
4369 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4370 0, 0, 0, 0, 0, 0, 0, 0, 175, 176,
4371 177, 178, 179, 180, 181, 182, 183, 0, 0, 184,
4372 185, 0, 0, 0, 0, 186, 187, 188, 189, 0,
4373 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4374 190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
4375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4376 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4377 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
4378 0, 202, 203, 0, 0, 0, 0, 0, 204, 425,
4379 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
4380 141, 142, 143, 144, 145, 146, 147, 148, 149, 150,
4381 151, 152, 153, 154, 0, 0, 0, 155, 156, 157,
4382 158, 159, 160, 161, 162, 163, 164, 0, 0, 0,
4383 0, 0, 165, 166, 167, 168, 169, 170, 171, 172,
4384 173, 37, 38, 174, 40, 0, 0, 0, 0, 0,
4385 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4386 0, 0, 0, 175, 176, 177, 178, 179, 180, 181,
4387 182, 183, 0, 0, 184, 185, 0, 0, 0, 0,
4388 186, 187, 188, 189, 0, 0, 0, 0, 0, 0,
4389 0, 0, 0, 0, 0, 190, 191, 0, 0, 0,
4390 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4391 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4392 0, 0, 0, 0, 0, 192, 193, 194, 195, 196,
4393 197, 198, 199, 200, 201, 0, 202, 203, 0, 0,
4394 0, 0, 0, 204, 131, 132, 133, 134, 135, 136,
4395 137, 138, 139, 140, 141, 142, 143, 144, 145, 146,
4396 147, 148, 149, 150, 151, 152, 153, 154, 0, 0,
4397 0, 155, 156, 157, 158, 159, 160, 161, 162, 163,
4398 164, 0, 0, 0, 0, 0, 165, 166, 167, 168,
4399 169, 170, 171, 172, 173, 248, 0, 174, 0, 0,
4400 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4401 0, 0, 0, 0, 0, 0, 0, 175, 176, 177,
4402 178, 179, 180, 181, 182, 183, 0, 0, 184, 185,
4403 0, 0, 0, 0, 186, 187, 188, 189, 0, 0,
4404 0, 0, 0, 0, 0, 0, 0, 0, 0, 190,
4405 191, 0, 0, 59, 0, 0, 0, 0, 0, 0,
4406 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4407 0, 0, 0, 0, 0, 0, 0, 0, 0, 192,
4408 193, 194, 195, 196, 197, 198, 199, 200, 201, 0,
4409 202, 203, 0, 0, 0, 0, 0, 204, 131, 132,
4410 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
4411 143, 144, 145, 146, 147, 148, 149, 150, 151, 152,
4412 153, 154, 0, 0, 0, 155, 156, 157, 158, 159,
4413 160, 161, 162, 163, 164, 0, 0, 0, 0, 0,
4414 165, 166, 167, 168, 169, 170, 171, 172, 173, 0,
4415 0, 174, 0, 0, 0, 0, 0, 0, 0, 0,
4416 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4417 0, 175, 176, 177, 178, 179, 180, 181, 182, 183,
4418 0, 0, 184, 185, 0, 0, 0, 0, 186, 187,
4419 188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
4420 0, 0, 0, 190, 191, 0, 0, 59, 0, 0,
4421 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4422 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4423 0, 0, 0, 192, 193, 194, 195, 196, 197, 198,
4424 199, 200, 201, 0, 202, 203, 0, 0, 0, 0,
4425 0, 204, 131, 132, 133, 134, 135, 136, 137, 138,
4426 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,
4427 149, 150, 151, 152, 153, 154, 0, 0, 0, 155,
4428 156, 157, 158, 159, 160, 161, 162, 163, 164, 0,
4429 0, 0, 0, 0, 165, 166, 167, 168, 169, 170,
4430 171, 172, 173, 0, 0, 174, 0, 0, 0, 0,
4431 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4432 0, 0, 0, 0, 0, 175, 176, 177, 178, 179,
4433 180, 181, 182, 183, 0, 0, 184, 185, 0, 0,
4434 0, 0, 186, 187, 188, 189, 0, 0, 0, 0,
4435 0, 0, 0, 0, 0, 0, 0, 190, 191, 0,
4436 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4438 0, 0, 0, 0, 0, 0, 0, 192, 193, 194,
4439 195, 196, 197, 198, 199, 200, 201, 0, 202, 203,
4440 5, 6, 7, 0, 9, 204, 0, 0, 10, 11,
4441 0, 0, 0, 12, 0, 13, 14, 15, 256, 257,
4442 18, 19, 0, 0, 0, 0, 0, 20, 21, 258,
4443 23, 24, 25, 26, 0, 0, 214, 0, 0, 0,
4444 0, 0, 0, 286, 0, 0, 32, 33, 34, 35,
4445 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
4446 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4448 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4449 0, 0, 0, 0, 0, 0, 287, 0, 0, 217,
4450 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
4451 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
4452 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4453 0, 0, 0, 0, 0, 0, 0, 0, 5, 6,
4454 7, 0, 9, 0, 0, 288, 10, 11, 0, 0,
4455 0, 12, 289, 13, 14, 15, 256, 257, 18, 19,
4456 0, 0, 0, 0, 0, 20, 21, 258, 23, 24,
4457 25, 26, 0, 0, 214, 0, 0, 0, 0, 0,
4458 0, 286, 0, 0, 32, 33, 34, 35, 36, 37,
4459 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
4460 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4461 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4463 0, 0, 0, 0, 287, 0, 0, 217, 54, 0,
4464 55, 56, 0, 0, 0, 0, 58, 59, 60, 61,
4465 62, 63, 64, 65, 66, 0, 0, 0, 0, 0,
4466 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4467 0, 0, 0, 0, 4, 0, 5, 6, 7, 8,
4468 9, 0, 0, 288, 10, 11, 0, 0, 0, 12,
4469 587, 13, 14, 15, 16, 17, 18, 19, 0, 0,
4470 0, 0, 0, 20, 21, 22, 23, 24, 25, 26,
4471 0, 0, 27, 0, 0, 0, 0, 0, 28, 29,
4472 0, 31, 32, 33, 34, 35, 36, 37, 38, 39,
4473 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
4474 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
4475 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4476 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
4477 0, 0, 52, 0, 0, 53, 54, 0, 55, 56,
4478 0, 57, 0, 0, 58, 59, 60, 61, 62, 63,
4479 64, 65, 66, 0, 0, 387, 0, 5, 6, 7,
4480 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
4481 12, 0, 13, 14, 15, 16, 17, 18, 19, 0,
4482 0, 67, 68, 69, 20, 21, 22, 23, 24, 25,
4483 26, 0, 0, 27, 0, 0, 0, 0, 0, 0,
4484 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
4485 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
4486 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4487 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
4488 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
4489 0, 0, 0, 216, 0, 0, 217, 54, 0, 55,
4490 56, 0, 0, 0, 0, 58, 59, 60, 61, 62,
4491 63, 64, 65, 66, 0, 0, 0, 0, 5, 6,
4492 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
4493 0, 12, 0, 13, 14, 15, 16, 17, 18, 19,
4494 0, 0, 67, 68, 69, 20, 21, 22, 23, 24,
4495 25, 26, 0, 0, 214, 0, 0, 0, 0, 0,
4496 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
4497 38, 39, 40, 215, 41, 42, 43, 44, 45, 46,
4498 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4499 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
4500 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
4501 0, 0, 0, 0, 216, 0, 0, 217, 54, 0,
4502 55, 56, 0, 218, 219, 220, 58, 59, 221, 61,
4503 62, 63, 64, 65, 66, 0, 0, 0, 0, 5,
4504 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
4505 0, 0, 12, 0, 13, 14, 15, 16, 17, 18,
4506 19, 0, 0, 67, 222, 69, 20, 21, 22, 23,
4507 24, 25, 26, 0, 0, 214, 0, 0, 0, 0,
4508 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
4509 37, 38, 39, 40, 215, 41, 42, 43, 44, 45,
4510 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
4511 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
4512 0, 0, 0, 0, 0, 0, 0, 50, 461, 0,
4513 0, 0, 0, 0, 0, 216, 0, 0, 217, 54,
4514 0, 55, 56, 0, 218, 219, 220, 58, 59, 221,
4515 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
4516 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4517 0, 0, 0, 12, 0, 13, 14, 15, 256, 257,
4518 18, 19, 0, 0, 67, 222, 69, 20, 21, 258,
4519 23, 24, 25, 26, 0, 0, 214, 0, 0, 0,
4520 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
4521 36, 37, 38, 39, 40, 215, 41, 42, 43, 44,
4522 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4523 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
4524 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
4525 0, 0, 0, 0, 0, 0, 216, 0, 0, 217,
4526 54, 0, 55, 56, 0, 218, 219, 220, 58, 59,
4527 221, 61, 62, 63, 64, 65, 66, 0, 0, 0,
4528 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
4529 11, 0, 0, 0, 12, 0, 13, 14, 15, 256,
4530 257, 18, 19, 0, 0, 67, 222, 69, 20, 21,
4531 258, 23, 24, 25, 26, 0, 0, 214, 0, 0,
4532 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
4533 35, 36, 37, 38, 39, 40, 215, 41, 42, 43,
4534 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
4535 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
4536 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
4537 461, 0, 0, 0, 0, 0, 0, 216, 0, 0,
4538 217, 54, 0, 55, 56, 0, 218, 219, 220, 58,
4539 59, 221, 61, 62, 63, 64, 65, 66, 0, 0,
4540 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
4541 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
4542 256, 257, 18, 19, 0, 0, 67, 222, 69, 20,
4543 21, 258, 23, 24, 25, 26, 0, 0, 214, 0,
4544 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
4545 34, 35, 36, 37, 38, 39, 40, 215, 41, 42,
4546 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
4547 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
4548 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4549 50, 51, 0, 0, 0, 0, 0, 0, 216, 0,
4550 0, 217, 54, 0, 55, 56, 0, 218, 219, 0,
4551 58, 59, 221, 61, 62, 63, 64, 65, 66, 0,
4552 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
4553 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
4554 15, 256, 257, 18, 19, 0, 0, 67, 222, 69,
4555 20, 21, 258, 23, 24, 25, 26, 0, 0, 214,
4556 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
4557 33, 34, 35, 36, 37, 38, 39, 40, 215, 41,
4558 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
4559 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
4560 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4561 0, 50, 51, 0, 0, 0, 0, 0, 0, 216,
4562 0, 0, 217, 54, 0, 55, 56, 0, 0, 219,
4563 220, 58, 59, 221, 61, 62, 63, 64, 65, 66,
4564 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
4565 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
4566 14, 15, 256, 257, 18, 19, 0, 0, 67, 222,
4567 69, 20, 21, 258, 23, 24, 25, 26, 0, 0,
4568 214, 0, 0, 0, 0, 0, 0, 29, 0, 0,
4569 32, 33, 34, 35, 36, 37, 38, 39, 40, 215,
4570 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
4571 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
4572 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4573 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
4574 216, 0, 0, 217, 54, 0, 55, 56, 0, 0,
4575 219, 0, 58, 59, 221, 61, 62, 63, 64, 65,
4576 66, 0, 0, 0, 0, 5, 6, 7, 0, 9,
4577 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4578 13, 14, 15, 16, 17, 18, 19, 0, 0, 67,
4579 222, 69, 20, 21, 22, 23, 24, 25, 26, 0,
4580 0, 214, 0, 0, 0, 0, 0, 0, 29, 0,
4581 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4582 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4583 0, 0, 0, 0, 0, 0, 0, 0, 48, 49,
4584 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4585 0, 0, 0, 50, 51, 0, 0, 0, 0, 0,
4586 0, 216, 0, 0, 217, 54, 0, 55, 56, 0,
4587 773, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4588 65, 66, 0, 0, 0, 0, 5, 6, 7, 0,
4589 9, 0, 0, 0, 10, 11, 0, 0, 0, 12,
4590 0, 13, 14, 15, 256, 257, 18, 19, 0, 0,
4591 67, 222, 69, 20, 21, 258, 23, 24, 25, 26,
4592 0, 0, 214, 0, 0, 0, 0, 0, 0, 29,
4593 0, 0, 32, 33, 34, 35, 36, 37, 38, 39,
4594 40, 0, 41, 42, 43, 44, 45, 46, 47, 0,
4595 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
4596 49, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4597 0, 0, 0, 0, 50, 51, 0, 0, 0, 0,
4598 0, 0, 216, 0, 0, 217, 54, 0, 55, 56,
4599 0, 942, 0, 0, 58, 59, 60, 61, 62, 63,
4600 64, 65, 66, 0, 0, 0, 0, 5, 6, 7,
4601 0, 9, 0, 0, 0, 10, 11, 0, 0, 0,
4602 12, 0, 13, 14, 15, 256, 257, 18, 19, 0,
4603 0, 67, 222, 69, 20, 21, 258, 23, 24, 25,
4604 26, 0, 0, 214, 0, 0, 0, 0, 0, 0,
4605 29, 0, 0, 32, 33, 34, 35, 36, 37, 38,
4606 39, 40, 0, 41, 42, 43, 44, 45, 46, 47,
4607 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4608 48, 49, 0, 0, 0, 0, 0, 0, 0, 0,
4609 0, 0, 0, 0, 0, 50, 51, 0, 0, 0,
4610 0, 0, 0, 216, 0, 0, 217, 54, 0, 55,
4611 56, 0, 990, 0, 0, 58, 59, 60, 61, 62,
4612 63, 64, 65, 66, 0, 0, 0, 0, 5, 6,
4613 7, 0, 9, 0, 0, 0, 10, 11, 0, 0,
4614 0, 12, 0, 13, 14, 15, 256, 257, 18, 19,
4615 0, 0, 67, 222, 69, 20, 21, 258, 23, 24,
4616 25, 26, 0, 0, 214, 0, 0, 0, 0, 0,
4617 0, 29, 0, 0, 32, 33, 34, 35, 36, 37,
4618 38, 39, 40, 0, 41, 42, 43, 44, 45, 46,
4619 47, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4620 0, 48, 49, 0, 0, 0, 0, 0, 0, 0,
4621 0, 0, 0, 0, 0, 0, 50, 51, 0, 0,
4622 0, 0, 0, 0, 216, 0, 0, 217, 54, 0,
4623 55, 56, 0, 773, 0, 0, 58, 59, 60, 61,
4624 62, 63, 64, 65, 66, 0, 0, 0, 0, 5,
4625 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
4626 0, 0, 12, 0, 13, 14, 15, 256, 257, 18,
4627 19, 0, 0, 67, 222, 69, 20, 21, 258, 23,
4628 24, 25, 26, 0, 0, 214, 0, 0, 0, 0,
4629 0, 0, 29, 0, 0, 32, 33, 34, 35, 36,
4630 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
4631 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
4632 0, 0, 48, 49, 0, 0, 0, 0, 0, 0,
4633 0, 0, 0, 0, 0, 0, 0, 50, 51, 0,
4634 0, 0, 0, 0, 0, 216, 0, 0, 217, 54,
4635 0, 55, 56, 0, 1112, 0, 0, 58, 59, 60,
4636 61, 62, 63, 64, 65, 66, 0, 0, 0, 0,
4637 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4638 0, 0, 0, 12, 0, 13, 14, 15, 256, 257,
4639 18, 19, 0, 0, 67, 222, 69, 20, 21, 258,
4640 23, 24, 25, 26, 0, 0, 214, 0, 0, 0,
4641 0, 0, 0, 29, 0, 0, 32, 33, 34, 35,
4642 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
4643 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4644 0, 0, 0, 48, 49, 0, 0, 0, 0, 0,
4645 0, 0, 0, 0, 0, 0, 0, 0, 50, 51,
4646 0, 0, 0, 0, 0, 0, 216, 0, 0, 217,
4647 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
4648 60, 61, 62, 63, 64, 65, 66, 0, 0, 0,
4649 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
4650 11, 0, 0, 0, 12, 0, 13, 14, 15, 16,
4651 17, 18, 19, 0, 0, 67, 222, 69, 20, 21,
4652 22, 23, 24, 25, 26, 0, 0, 214, 0, 0,
4653 0, 0, 0, 0, 29, 0, 0, 32, 33, 34,
4654 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
4655 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
4656 0, 0, 0, 0, 48, 49, 0, 0, 0, 0,
4657 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,
4658 51, 0, 0, 0, 0, 0, 0, 216, 0, 0,
4659 217, 54, 0, 55, 56, 0, 0, 0, 0, 58,
4660 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
4661 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
4662 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
4663 16, 17, 18, 19, 0, 0, 67, 222, 69, 20,
4664 21, 22, 23, 24, 25, 26, 0, 0, 27, 0,
4665 0, 0, 0, 0, 0, 29, 0, 0, 32, 33,
4666 34, 35, 36, 37, 38, 39, 40, 0, 41, 42,
4667 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
4668 0, 0, 0, 0, 0, 48, 49, 0, 0, 0,
4669 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4670 50, 51, 0, 0, 0, 0, 0, 0, 216, 0,
4671 0, 217, 54, 0, 55, 56, 0, 0, 0, 0,
4672 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
4673 0, 0, 0, 5, 6, 7, 0, 9, 0, 0,
4674 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
4675 15, 16, 17, 18, 19, 0, 0, 67, 68, 69,
4676 20, 21, 22, 23, 24, 25, 26, 0, 0, 755,
4677 0, 0, 0, 0, 0, 0, 29, 0, 0, 32,
4678 33, 34, 35, 36, 37, 38, 39, 40, 0, 41,
4679 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
4680 0, 0, 0, 0, 0, 0, 48, 49, 0, 0,
4681 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4682 0, 50, 51, 0, 0, 0, 0, 0, 0, 216,
4683 0, 0, 217, 54, 0, 55, 56, 0, 0, 0,
4684 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4685 0, 0, 0, 0, 5, 6, 7, 0, 9, 0,
4686 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
4687 14, 15, 256, 257, 18, 19, 0, 0, 67, 222,
4688 69, 20, 21, 258, 23, 24, 25, 26, 0, 0,
4689 851, 0, 0, 0, 0, 0, 0, 29, 0, 0,
4690 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
4691 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
4692 0, 0, 0, 0, 0, 0, 0, 48, 49, 0,
4693 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4694 0, 0, 50, 51, 0, 0, 0, 0, 0, 0,
4695 216, 0, 0, 217, 54, 0, 55, 56, 0, 0,
4696 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
4697 66, 0, 0, 0, 0, 5, 6, 7, 0, 9,
4698 0, 0, 0, 10, 11, 0, 0, 0, 12, 0,
4699 13, 14, 15, 256, 257, 18, 19, 0, 0, 67,
4700 222, 69, 20, 21, 258, 23, 24, 25, 26, 0,
4701 0, 214, 0, 0, 0, 0, 0, 0, 286, 0,
4702 0, 32, 33, 34, 35, 36, 37, 38, 39, 40,
4703 0, 41, 42, 43, 44, 45, 46, 47, 0, 0,
4704 0, 0, 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, 0, 0, 0, 0, 0,
4707 0, 287, 0, 0, 347, 54, 0, 55, 56, 0,
4708 348, 0, 0, 58, 59, 60, 61, 62, 63, 64,
4709 65, 66, 0, 0, 5, 6, 7, 0, 9, 0,
4710 0, 0, 10, 11, 0, 0, 0, 12, 0, 13,
4711 14, 15, 256, 257, 18, 19, 0, 0, 0, 0,
4712 288, 20, 21, 258, 23, 24, 25, 26, 0, 0,
4713 214, 0, 0, 0, 0, 0, 0, 286, 0, 0,
4714 32, 33, 34, 35, 36, 37, 38, 39, 40, 0,
4715 41, 42, 43, 44, 45, 46, 47, 0, 0, 0,
4716 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4717 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4718 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4719 397, 0, 0, 53, 54, 0, 55, 56, 0, 57,
4720 0, 0, 58, 59, 60, 61, 62, 63, 64, 65,
4721 66, 0, 0, 5, 6, 7, 0, 9, 0, 0,
4722 0, 10, 11, 0, 0, 0, 12, 0, 13, 14,
4723 15, 256, 257, 18, 19, 0, 0, 0, 0, 288,
4724 20, 21, 258, 23, 24, 25, 26, 0, 0, 214,
4725 0, 0, 0, 0, 0, 0, 286, 0, 0, 32,
4726 33, 34, 405, 36, 37, 38, 406, 40, 0, 41,
4727 42, 43, 44, 45, 46, 47, 0, 0, 0, 0,
4728 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4729 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4730 0, 0, 0, 0, 0, 407, 0, 0, 0, 408,
4731 0, 0, 217, 54, 0, 55, 56, 0, 0, 0,
4732 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4733 0, 0, 5, 6, 7, 0, 9, 0, 0, 0,
4734 10, 11, 0, 0, 0, 12, 0, 13, 14, 15,
4735 256, 257, 18, 19, 0, 0, 0, 0, 288, 20,
4736 21, 258, 23, 24, 25, 26, 0, 0, 214, 0,
4737 0, 0, 0, 0, 0, 286, 0, 0, 32, 33,
4738 34, 405, 36, 37, 38, 406, 40, 0, 41, 42,
4739 43, 44, 45, 46, 47, 0, 0, 0, 0, 0,
4740 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4741 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4742 0, 0, 0, 0, 0, 0, 0, 0, 408, 0,
4743 0, 217, 54, 0, 55, 56, 0, 0, 0, 0,
4744 58, 59, 60, 61, 62, 63, 64, 65, 66, 0,
4745 0, 5, 6, 7, 0, 9, 0, 0, 0, 10,
4746 11, 0, 0, 0, 12, 0, 13, 14, 15, 256,
4747 257, 18, 19, 0, 0, 0, 0, 288, 20, 21,
4748 258, 23, 24, 25, 26, 0, 0, 214, 0, 0,
4749 0, 0, 0, 0, 286, 0, 0, 32, 33, 34,
4750 35, 36, 37, 38, 39, 40, 0, 41, 42, 43,
4751 44, 45, 46, 47, 0, 0, 0, 0, 0, 0,
4752 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4753 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4754 0, 0, 0, 0, 0, 0, 0, 287, 0, 0,
4755 347, 54, 0, 55, 56, 0, 0, 0, 0, 58,
4756 59, 60, 61, 62, 63, 64, 65, 66, 0, 0,
4757 5, 6, 7, 0, 9, 0, 0, 0, 10, 11,
4758 0, 0, 0, 12, 0, 13, 14, 15, 256, 257,
4759 18, 19, 0, 0, 0, 0, 288, 20, 21, 258,
4760 23, 24, 25, 26, 0, 0, 214, 0, 0, 0,
4761 0, 0, 0, 286, 0, 0, 32, 33, 34, 35,
4762 36, 37, 38, 39, 40, 0, 41, 42, 43, 44,
4763 45, 46, 47, 0, 0, 0, 0, 0, 0, 0,
4764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4765 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4766 0, 0, 0, 0, 0, 0, 1179, 0, 0, 217,
4767 54, 0, 55, 56, 0, 0, 0, 0, 58, 59,
4768 60, 61, 62, 63, 64, 65, 66, 0, 0, 5,
4769 6, 7, 0, 9, 0, 0, 0, 10, 11, 0,
4770 0, 0, 12, 0, 13, 14, 15, 256, 257, 18,
4771 19, 0, 0, 0, 0, 288, 20, 21, 258, 23,
4772 24, 25, 26, 0, 0, 214, 0, 0, 0, 0,
4773 0, 0, 286, 0, 0, 32, 33, 34, 35, 36,
4774 37, 38, 39, 40, 0, 41, 42, 43, 44, 45,
4775 46, 47, 0, 0, 0, 0, 0, 0, 0, 0,
4776 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4777 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4778 0, 0, 0, 0, 0, 1207, 0, 0, 217, 54,
4779 0, 55, 56, 23, 24, 25, 26, 58, 59, 60,
4780 61, 62, 63, 64, 65, 66, 0, 0, 0, 32,
4781 33, 34, 1055, 0, 0, 0, 1056, 0, 0, 41,
4782 42, 43, 44, 45, 0, 0, 0, 0, 0, 0,
4783 0, 0, 0, 0, 288, 0, 0, 0, 0, 0,
4784 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4785 0, 1058, 1059, 0, 0, 0, 680, 618, 0, 1060,
4786 681, 0, 1061, 0, 0, 1062, 1063, 0, 1064, 0,
4787 0, 58, 59, 60, 61, 62, 63, 64, 65, 66,
4788 175, 176, 177, 178, 179, 180, 181, 182, 183, 0,
4789 0, 184, 185, 0, 0, 0, 0, 186, 187, 188,
4790 189, 1066, 0, 0, 0, 0, 0, 0, 288, 0,
4791 0, 0, 190, 191, 0, 0, 0, 0, 0, 0,
4792 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4793 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4794 0, 0, 192, 193, 194, 195, 196, 197, 198, 199,
4795 200, 201, 0, 202, 203, 683, 628, 0, 0, 684,
4796 204, 241, 0, 0, 0, 0, 0, 0, 0, 0,
4797 0, 0, 0, 0, 0, 0, 0, 0, 0, 175,
4798 176, 177, 178, 179, 180, 181, 182, 183, 0, 0,
4799 184, 185, 0, 0, 0, 0, 186, 187, 188, 189,
4800 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4801 0, 190, 191, 0, 0, 0, 0, 0, 0, 0,
4802 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4803 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4804 0, 192, 193, 194, 195, 196, 197, 198, 199, 200,
4805 201, 0, 202, 203, 680, 618, 0, 0, 698, 204,
4806 241, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4807 0, 0, 0, 0, 0, 0, 0, 0, 175, 176,
4808 177, 178, 179, 180, 181, 182, 183, 0, 0, 184,
4809 185, 0, 0, 0, 0, 186, 187, 188, 189, 0,
4810 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4811 190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
4812 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4813 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4814 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
4815 0, 202, 203, 709, 618, 0, 0, 710, 204, 241,
4816 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4817 0, 0, 0, 0, 0, 0, 0, 175, 176, 177,
4818 178, 179, 180, 181, 182, 183, 0, 0, 184, 185,
4819 0, 0, 0, 0, 186, 187, 188, 189, 0, 0,
4820 0, 0, 0, 0, 0, 0, 0, 0, 0, 190,
4821 191, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4822 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4823 0, 0, 0, 0, 0, 0, 0, 0, 0, 192,
4824 193, 194, 195, 196, 197, 198, 199, 200, 201, 0,
4825 202, 203, 712, 628, 0, 0, 713, 204, 241, 0,
4826 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4827 0, 0, 0, 0, 0, 0, 175, 176, 177, 178,
4828 179, 180, 181, 182, 183, 0, 0, 184, 185, 0,
4829 0, 0, 0, 186, 187, 188, 189, 0, 0, 0,
4830 0, 0, 0, 0, 0, 0, 0, 0, 190, 191,
4831 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4832 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4833 0, 0, 0, 0, 0, 0, 0, 0, 192, 193,
4834 194, 195, 196, 197, 198, 199, 200, 201, 0, 202,
4835 203, 825, 618, 0, 0, 826, 204, 241, 0, 0,
4836 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4837 0, 0, 0, 0, 0, 175, 176, 177, 178, 179,
4838 180, 181, 182, 183, 0, 0, 184, 185, 0, 0,
4839 0, 0, 186, 187, 188, 189, 0, 0, 0, 0,
4840 0, 0, 0, 0, 0, 0, 0, 190, 191, 0,
4841 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4842 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4843 0, 0, 0, 0, 0, 0, 0, 192, 193, 194,
4844 195, 196, 197, 198, 199, 200, 201, 0, 202, 203,
4845 828, 628, 0, 0, 829, 204, 241, 0, 0, 0,
4846 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4847 0, 0, 0, 0, 175, 176, 177, 178, 179, 180,
4848 181, 182, 183, 0, 0, 184, 185, 0, 0, 0,
4849 0, 186, 187, 188, 189, 0, 0, 0, 0, 0,
4850 0, 0, 0, 0, 0, 0, 190, 191, 0, 0,
4851 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4853 0, 0, 0, 0, 0, 0, 192, 193, 194, 195,
4854 196, 197, 198, 199, 200, 201, 0, 202, 203, 834,
4855 618, 0, 0, 835, 204, 241, 0, 0, 0, 0,
4856 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4857 0, 0, 0, 175, 176, 177, 178, 179, 180, 181,
4858 182, 183, 0, 0, 184, 185, 0, 0, 0, 0,
4859 186, 187, 188, 189, 0, 0, 0, 0, 0, 0,
4860 0, 0, 0, 0, 0, 190, 191, 0, 0, 0,
4861 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4862 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4863 0, 0, 0, 0, 0, 192, 193, 194, 195, 196,
4864 197, 198, 199, 200, 201, 0, 202, 203, 665, 628,
4865 0, 0, 666, 204, 241, 0, 0, 0, 0, 0,
4866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4867 0, 0, 175, 176, 177, 178, 179, 180, 181, 182,
4868 183, 0, 0, 184, 185, 0, 0, 0, 0, 186,
4869 187, 188, 189, 0, 0, 0, 0, 0, 0, 0,
4870 0, 0, 0, 0, 190, 191, 0, 0, 0, 0,
4871 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4872 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4873 0, 0, 0, 0, 192, 193, 194, 195, 196, 197,
4874 198, 199, 200, 201, 0, 202, 203, 996, 618, 0,
4875 0, 997, 204, 241, 0, 0, 0, 0, 0, 0,
4876 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4877 0, 175, 176, 177, 178, 179, 180, 181, 182, 183,
4878 0, 0, 184, 185, 0, 0, 0, 0, 186, 187,
4879 188, 189, 0, 0, 0, 0, 0, 0, 0, 0,
4880 0, 0, 0, 190, 191, 0, 0, 0, 0, 0,
4881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4882 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4883 0, 0, 0, 192, 193, 194, 195, 196, 197, 198,
4884 199, 200, 201, 0, 202, 203, 999, 628, 0, 0,
4885 1000, 204, 241, 0, 0, 0, 0, 0, 0, 0,
4886 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4887 175, 176, 177, 178, 179, 180, 181, 182, 183, 0,
4888 0, 184, 185, 0, 0, 0, 0, 186, 187, 188,
4889 189, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4890 0, 0, 190, 191, 0, 0, 0, 0, 0, 0,
4891 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4892 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4893 0, 0, 192, 193, 194, 195, 196, 197, 198, 199,
4894 200, 201, 0, 202, 203, 1292, 618, 0, 0, 1293,
4895 204, 241, 0, 0, 0, 0, 0, 0, 0, 0,
4896 0, 0, 0, 0, 0, 0, 0, 0, 0, 175,
4897 176, 177, 178, 179, 180, 181, 182, 183, 0, 0,
4898 184, 185, 0, 0, 0, 0, 186, 187, 188, 189,
4899 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4900 0, 190, 191, 0, 0, 0, 0, 0, 0, 0,
4901 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4902 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4903 0, 192, 193, 194, 195, 196, 197, 198, 199, 200,
4904 201, 0, 202, 203, 1295, 628, 0, 0, 1296, 204,
4905 241, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4906 0, 0, 0, 0, 0, 0, 0, 0, 175, 176,
4907 177, 178, 179, 180, 181, 182, 183, 0, 0, 184,
4908 185, 0, 0, 0, 0, 186, 187, 188, 189, 0,
4909 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4910 190, 191, 0, 0, 0, 0, 0, 0, 0, 0,
4911 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4912 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4913 192, 193, 194, 195, 196, 197, 198, 199, 200, 201,
4914 0, 202, 203, 1309, 618, 0, 0, 1310, 204, 241,
4915 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4916 0, 0, 0, 0, 0, 0, 0, 175, 176, 177,
4917 178, 179, 180, 181, 182, 183, 0, 0, 184, 185,
4918 0, 0, 0, 0, 186, 187, 188, 189, 0, 0,
4919 0, 0, 0, 0, 0, 0, 0, 0, 0, 190,
4920 191, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4921 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4922 0, 0, 0, 0, 0, 0, 0, 0, 0, 192,
4923 193, 194, 195, 196, 197, 198, 199, 200, 201, 0,
4924 202, 203, 665, 628, 0, 0, 666, 204, 241, 0,
4925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
4926 0, 0, 0, 0, 0, 0, 175, 176, 177, 178,
4927 179, 180, 181, 182, 183, 0, 0, 184, 185, 0,
4928 0, 0, 0, 186, 187, 188, 189, 0, 0, 0,
4929 0, 0, 0, 0, 0, 0, 0, 0, 190, 191,
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, 0, 0, 0, 192, 193,
4933 194, 195, 196, 197, 198, 199, 200, 201, 0, 202,
4934 203, 0, 0, 0, 0, 0, 204
4937static const yytype_int16 yycheck[] =
4939 2, 92, 16, 17, 60, 22, 95, 59, 68, 98,
4940 8, 2, 384, 53, 54, 106, 408, 328, 28, 16,
4941 17, 332, 14, 15, 813, 107, 238, 390, 16, 17,
4942 28, 59, 563, 8, 574, 97, 745, 577, 383, 590,
4943 385, 328, 81, 742, 57, 332, 53, 332, 71, 86,
4944 451, 53, 54, 28, 241, 57, 304, 305, 55, 56,
4945 459, 59, 16, 17, 81, 104, 576, 55, 94, 95,
4946 451, 98, 98, 86, 102, 98, 576, 915, 459, 820,
4947 505, 73, 745, 455, 86, 67, 99, 100, 101, 103,
4948 435, 492, 64, 65, 66, 0, 495, 99, 100, 101,
4949 102, 57, 580, 280, 102, 2, 103, 284, 749, 454,
4950 605, 456, 878, 880, 71, 103, 25, 1002, 658, 78,
4951 37, 38, 13, 26, 1211, 742, 69, 29, 1152, 269,
4952 31, 793, 749, 66, 13, 507, 101, 482, 25, 66,
4953 78, 0, 233, 98, 1168, 1045, 110, 1001, 1002, 103,
4954 749, 1045, 25, 752, 97, 98, 53, 54, 55, 56,
4955 579, 25, 587, 508, 583, 221, 10, 153, 26, 100,
4956 261, 100, 135, 673, 668, 669, 162, 217, 142, 799,
4957 77, 78, 13, 66, 1152, 100, 1024, 807, 69, 122,
4958 123, 25, 34, 120, 157, 122, 123, 162, 1166, 154,
4959 25, 13, 157, 294, 135, 13, 135, 347, 100, 545,
4960 52, 154, 162, 13, 13, 217, 121, 98, 1305, 245,
4961 135, 247, 124, 1061, 68, 1063, 1111, 241, 161, 269,
4962 244, 13, 321, 322, 323, 324, 13, 120, 1132, 25,
4963 155, 258, 259, 135, 271, 162, 155, 244, 271, 152,
4964 252, 13, 289, 241, 466, 1279, 244, 1111, 25, 1283,
4965 1284, 252, 269, 655, 155, 224, 13, 269, 155, 160,
4966 1037, 162, 1038, 521, 646, 523, 289, 939, 157, 25,
4967 979, 160, 155, 162, 656, 223, 224, 289, 689, 25,
4968 244, 155, 691, 833, 152, 321, 322, 323, 324, 157,
4969 326, 327, 647, 392, 1204, 1329, 288, 347, 689, 400,
4970 691, 1211, 657, 1213, 271, 1169, 1284, 319, 407, 797,
4971 217, 155, 1176, 1177, 819, 1114, 223, 224, 319, 160,
4972 155, 162, 291, 974, 231, 348, 1174, 1175, 1001, 1002,
4973 347, 238, 1001, 1002, 241, 347, 348, 27, 160, 250,
4974 162, 391, 160, 393, 162, 252, 781, 974, 157, 890,
4975 160, 160, 162, 162, 1001, 1002, 392, 394, 385, 155,
4976 384, 394, 269, 1114, 152, 974, 927, 976, 160, 1196,
4977 162, 407, 981, 160, 386, 162, 896, 385, 155, 391,
4978 157, 393, 348, 729, 730, 155, 896, 66, 160, 135,
4979 162, 802, 162, 1062, 78, 1305, 1062, 1307, 948, 155,
4980 101, 157, 1312, 160, 1314, 162, 69, 431, 100, 155,
4981 1079, 802, 158, 917, 918, 101, 162, 1281, 1045, 923,
4982 924, 742, 15, 159, 431, 1335, 162, 435, 749, 456,
4983 69, 455, 25, 431, 345, 98, 1045, 69, 1111, 350,
4984 347, 120, 1111, 135, 451, 1176, 1177, 957, 456, 160,
4985 27, 162, 29, 100, 155, 482, 476, 679, 505, 98,
4986 718, 145, 146, 147, 1111, 723, 98, 431, 476, 155,
4987 160, 34, 162, 56, 482, 1302, 488, 384, 528, 386,
4988 1149, 508, 505, 507, 391, 492, 393, 161, 135, 52,
4989 1209, 476, 689, 505, 905, 1204, 1169, 1166, 28, 1049,
4990 508, 25, 100, 1176, 1177, 1009, 100, 1176, 1177, 58,
4991 1176, 1177, 37, 38, 155, 585, 528, 1126, 100, 706,
4992 590, 162, 534, 135, 1323, 69, 274, 438, 439, 78,
4993 912, 590, 878, 534, 880, 52, 1209, 135, 449, 56,
4994 587, 135, 575, 383, 865, 385, 457, 458, 455, 573,
4995 1281, 155, 576, 135, 98, 964, 911, 464, 913, 466,
4996 109, 110, 574, 157, 587, 577, 477, 25, 865, 135,
4997 865, 944, 483, 964, 623, 587, 648, 1204, 25, 113,
4998 1058, 1059, 100, 632, 1211, 100, 636, 585, 638, 1130,
4999 100, 155, 590, 142, 100, 435, 623, 1138, 668, 669,
5000 507, 100, 1211, 1312, 1213, 632, 584, 640, 1281, 668,
5001 669, 135, 155, 15, 454, 17, 456, 135, 667, 162,
5002 647, 528, 646, 659, 636, 135, 638, 56, 69, 135,
5003 657, 155, 656, 157, 158, 69, 135, 859, 162, 647,
5004 667, 481, 482, 157, 551, 966, 658, 1197, 1021, 657,
5005 670, 100, 69, 974, 716, 633, 563, 98, 1060, 695,
5006 707, 639, 670, 641, 98, 1045, 506, 574, 508, 966,
5007 577, 966, 699, 700, 157, 14, 15, 135, 1305, 162,
5008 97, 98, 689, 431, 707, 670, 135, 135, 135, 790,
5009 101, 1037, 1038, 1171, 1172, 707, 1305, 155, 1307, 78,
5010 158, 155, 279, 280, 162, 1314, 155, 284, 155, 286,
5011 78, 158, 714, 26, 462, 162, 69, 465, 69, 626,
5012 135, 469, 100, 634, 1045, 632, 1335, 95, 96, 636,
5013 1103, 638, 1273, 832, 781, 100, 718, 485, 720, 646,
5014 155, 723, 724, 66, 97, 98, 97, 98, 26, 656,
5015 842, 658, 69, 157, 66, 155, 69, 100, 781, 69,
5016 667, 89, 90, 157, 143, 144, 145, 146, 147, 781,
5017 135, 1173, 679, 157, 142, 143, 144, 145, 146, 147,
5018 830, 98, 760, 52, 97, 98, 764, 56, 98, 766,
5019 155, 69, 135, 700, 771, 802, 832, 120, 831, 122,
5020 123, 154, 840, 154, 157, 645, 554, 647, 120, 158,
5021 122, 123, 155, 125, 66, 655, 1189, 657, 830, 97,
5022 98, 833, 69, 26, 1204, 568, 69, 570, 69, 1209,
5023 78, 1211, 840, 1213, 933, 135, 736, 159, 586, 152,
5024 56, 154, 153, 821, 157, 745, 824, 917, 918, 157,
5025 97, 98, 69, 923, 924, 98, 97, 98, 917, 918,
5026 838, 40, 41, 155, 923, 924, 69, 54, 1250, 78,
5027 122, 123, 896, 125, 152, 161, 154, 64, 65, 157,
5028 97, 98, 932, 1204, 795, 796, 913, 158, 912, 69,
5029 1211, 162, 803, 804, 97, 98, 1251, 933, 100, 901,
5030 1166, 903, 69, 810, 811, 913, 813, 154, 66, 67,
5031 1176, 1177, 69, 154, 66, 663, 949, 97, 98, 969,
5032 932, 290, 291, 830, 994, 1305, 833, 1307, 152, 927,
5033 97, 98, 1312, 135, 1314, 994, 948, 154, 69, 1009,
5034 97, 98, 853, 854, 135, 856, 857, 69, 682, 152,
5035 1009, 154, 859, 155, 157, 1335, 934, 969, 66, 937,
5036 135, 135, 940, 107, 122, 123, 97, 98, 120, 947,
5037 122, 123, 950, 69, 154, 97, 98, 711, 1028, 155,
5038 992, 993, 160, 890, 1305, 733, 66, 154, 56, 1001,
5039 1002, 992, 993, 69, 25, 135, 1046, 154, 909, 1065,
5040 139, 97, 98, 135, 1066, 912, 58, 69, 155, 66,
5041 69, 922, 120, 155, 122, 123, 1028, 125, 153, 100,
5042 927, 97, 98, 154, 1279, 932, 78, 155, 1283, 606,
5043 83, 84, 154, 100, 1046, 97, 98, 1049, 97, 98,
5044 120, 948, 122, 123, 158, 158, 1058, 1059, 625, 960,
5045 1062, 155, 1030, 155, 135, 155, 1106, 109, 154, 1109,
5046 1110, 113, 969, 120, 1163, 122, 123, 1079, 135, 1119,
5047 135, 911, 155, 913, 155, 52, 155, 155, 154, 1102,
5048 1181, 988, 989, 52, 153, 138, 139, 13, 155, 155,
5049 1102, 839, 154, 827, 1106, 154, 25, 1109, 1110, 1111,
5050 155, 17, 153, 837, 44, 682, 155, 1119, 155, 1016,
5051 858, 1018, 860, 1136, 135, 153, 44, 2, 155, 155,
5052 52, 1028, 54, 55, 1136, 57, 44, 1163, 876, 706,
5053 44, 16, 17, 135, 711, 1185, 137, 1149, 8, 1046,
5054 1152, 159, 1049, 886, 887, 1045, 15, 155, 891, 155,
5055 893, 155, 895, 52, 1166, 1167, 1168, 1256, 1257, 1171,
5056 1172, 155, 155, 155, 1176, 1177, 1232, 153, 53, 54,
5057 102, 155, 57, 1185, 155, 140, 54, 55, 755, 57,
5058 1203, 155, 101, 68, 9, 1197, 64, 65, 78, 155,
5059 52, 1203, 52, 140, 54, 55, 56, 57, 155, 1106,
5060 155, 86, 1109, 1110, 158, 95, 96, 1114, 160, 94,
5061 95, 56, 1119, 98, 99, 100, 101, 140, 103, 155,
5062 1256, 1257, 155, 1130, 1251, 155, 1250, 897, 898, 153,
5063 52, 1138, 54, 55, 56, 57, 906, 2, 908, 52,
5064 910, 56, 102, 1251, 155, 155, 1157, 101, 108, 1299,
5065 827, 16, 17, 143, 144, 145, 146, 147, 153, 140,
5066 837, 1140, 1141, 56, 998, 157, 155, 1279, 155, 155,
5067 252, 1283, 1284, 155, 851, 668, 669, 157, 1185, 155,
5068 102, 1188, 155, 155, 1262, 319, 484, 1299, 53, 54,
5069 1197, 155, 685, 686, 155, 488, 1039, 1040, 1041, 1042,
5070 155, 840, 99, 68, 1204, 101, 90, 477, 701, 1209,
5071 667, 1211, 928, 1213, 1134, 1188, 52, 1329, 54, 55,
5072 56, 57, 52, 729, 54, 55, 56, 57, 1062, 94,
5073 95, 878, 217, 98, 59, 60, 61, 62, 103, 1045,
5074 989, 1302, 843, 1250, 343, 1252, 1253, 40, 41, 42,
5075 43, 44, 1323, 1167, 1169, 1253, 241, 1169, 1165, 244,
5076 245, 110, 247, 523, 1252, 102, 1273, 252, 745, 742,
5077 215, 1209, 1204, 218, 219, 220, 1318, -1, -1, -1,
5078 -1, -1, -1, -1, 269, -1, -1, -1, -1, 1268,
5079 1269, -1, 1299, -1, -1, 1274, -1, 1276, 1277, -1,
5080 -1, -1, -1, -1, 289, 1305, -1, 1307, -1, 1249,
5081 -1, 1251, 1312, -1, 1314, -1, 1323, 1151, -1, -1,
5082 1154, 998, -1, -1, -1, -1, -1, 1175, -1, -1,
5083 -1, 1271, -1, -1, 319, 1335, 321, 322, 323, 324,
5084 1174, 326, 327, -1, -1, -1, 1325, 1326, 1327, 1328,
5085 -1, -1, 217, -1, -1, -1, 1199, 1034, -1, -1,
5086 1339, -1, 347, 348, -1, -1, -1, 1215, 1045, -1,
5087 -1, -1, -1, -1, -1, -1, 241, 1225, -1, 244,
5088 245, -1, 247, -1, -1, 1062, 1063, 252, -1, -1,
5089 -1, -1, -1, -1, 1242, 1243, 1244, -1, -1, 384,
5090 -1, 386, -1, -1, 269, -1, 391, 392, 393, -1,
5091 -1, 1245, 1246, 1247, 52, -1, 54, 55, 56, 57,
5092 58, -1, 407, -1, 917, 918, 78, -1, -1, -1,
5093 923, 924, -1, -1, -1, -1, -1, -1, -1, -1,
5094 78, -1, -1, 95, 96, -1, 431, -1, -1, -1,
5095 -1, -1, -1, -1, 319, 1132, 321, 322, 323, 324,
5096 1294, 326, 327, -1, 102, 958, 959, -1, 961, 962,
5097 455, 109, 110, -1, 1151, -1, -1, 1154, -1, -1,
5098 -1, 52, 347, 54, 55, 56, 57, 58, 140, 141,
5099 142, 143, 144, 145, 146, 147, -1, 1174, -1, -1,
5100 -1, -1, -1, 488, 142, 450, 451, 78, -1, -1,
5101 -1, -1, -1, -1, 459, -1, 1009, -1, -1, 384,
5102 505, 386, 507, -1, -1, -1, 391, 392, 393, -1,
5103 -1, 102, -1, -1, -1, -1, -1, 108, 109, 110,
5104 1033, -1, 407, 528, -1, -1, -1, 492, -1, 534,
5105 495, -1, -1, -1, -1, -1, -1, 52, -1, 54,
5106 55, 56, 57, 58, -1, -1, 431, -1, 1245, 1246,
5107 1247, 142, -1, -1, 145, -1, -1, -1, -1, -1,
5108 -1, -1, 1259, 78, -1, -1, -1, -1, 573, 574,
5109 455, 576, 577, -1, -1, -1, -1, 92, -1, -1,
5110 585, -1, 587, -1, -1, 590, -1, 102, -1, 33,
5111 34, 35, 36, 108, 109, 110, 561, 1294, -1, -1,
5112 -1, -1, -1, 488, -1, 49, 50, 51, 52, -1,
5113 -1, -1, 56, -1, -1, 59, 60, 61, 62, 63,
5114 585, 1318, 507, -1, -1, 590, -1, 142, -1, -1,
5115 145, 636, -1, 638, -1, -1, -1, -1, -1, -1,
5116 -1, 646, 157, 528, -1, -1, -1, 91, 92, 534,
5117 -1, 656, -1, 658, 659, 99, -1, -1, 102, -1,
5118 -1, 105, 106, 668, 669, -1, -1, 111, 112, 113,
5119 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
5120 -1, -1, -1, -1, -1, -1, -1, -1, 573, 574,
5121 695, 576, 577, -1, -1, -1, -1, 141, -1, -1,
5122 585, -1, 707, -1, 148, 590, 671, -1, -1, -1,
5123 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5124 -1, -1, 0, -1, 689, -1, 691, -1, -1, -1,
5125 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
5126 -1, -1, -1, -1, -1, -1, -1, 25, 26, 27,
5127 -1, 636, -1, 638, -1, 2, -1, -1, -1, 37,
5128 38, 646, 40, 41, 42, 43, 44, -1, -1, 16,
5129 17, 656, -1, 658, 659, 740, 781, -1, -1, -1,
5130 -1, -1, -1, 668, 669, -1, -1, -1, -1, -1,
5131 68, 69, -1, -1, -1, -1, 52, -1, 54, 55,
5132 56, 57, 58, -1, -1, -1, 53, 54, 773, -1,
5133 695, -1, -1, -1, -1, -1, -1, -1, -1, 97,
5134 98, 68, 78, -1, -1, 830, -1, 832, 833, -1,
5135 -1, -1, -1, -1, -1, -1, -1, 802, -1, 25,
5136 -1, -1, -1, 121, -1, -1, 102, 94, 95, -1,
5137 -1, 98, 108, 109, 110, -1, 103, -1, 823, -1,
5138 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5139 -1, -1, -1, -1, 152, 153, -1, -1, -1, 157,
5140 158, -1, 160, -1, 162, -1, 142, -1, -1, 145,
5141 -1, 896, 78, 79, 80, 81, 82, 83, 84, 85,
5142 86, 87, 88, 89, 90, -1, 162, 912, -1, 95,
5143 96, -1, 917, 918, -1, 101, -1, -1, 923, 924,
5144 -1, -1, -1, -1, -1, -1, -1, 932, 933, -1,
5145 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5146 905, -1, -1, 948, -1, 830, -1, 832, 833, -1,
5147 136, -1, 138, 139, 140, 141, 142, 143, 144, 145,
5148 146, 147, 927, -1, 969, -1, -1, -1, -1, -1,
5149 217, -1, -1, -1, -1, -1, -1, 942, -1, -1,
5150 -1, -1, -1, -1, -1, -1, -1, 992, 993, 994,
5151 -1, -1, -1, -1, 241, -1, -1, 244, 245, 964,
5152 247, -1, -1, -1, 1009, 252, -1, -1, -1, -1,
5153 -1, 896, -1, -1, -1, -1, -1, -1, -1, -1,
5154 -1, -1, 269, 1028, -1, 990, -1, 912, -1, -1,
5155 -1, -1, 917, 918, -1, -1, -1, -1, 923, 924,
5156 -1, 1046, -1, -1, 1049, -1, -1, 932, 933, -1,
5157 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5158 -1, -1, 1027, 948, -1, -1, -1, -1, -1, -1,
5159 -1, -1, 319, -1, 321, 322, 323, 324, -1, 326,
5160 327, -1, -1, -1, 969, -1, -1, -1, -1, -1,
5161 -1, -1, 1001, 1002, -1, -1, -1, 1102, -1, -1,
5162 347, 1106, -1, -1, 1109, 1110, -1, 992, 993, 994,
5163 -1, -1, -1, -1, 1119, -1, 52, -1, 54, 55,
5164 56, 57, 58, -1, 1009, -1, -1, -1, -1, -1,
5165 -1, 1136, -1, -1, -1, -1, -1, 384, -1, 386,
5166 -1, -1, 78, 1028, 391, 392, 393, 1112, -1, 1058,
5167 1059, -1, -1, 1062, -1, -1, 92, -1, 1163, -1,
5168 407, 1046, -1, -1, 1049, -1, 102, -1, -1, -1,
5169 1079, -1, 108, 109, 110, -1, -1, -1, -1, -1,
5170 1185, -1, -1, -1, 431, -1, -1, -1, -1, -1,
5171 -1, -1, 1197, -1, -1, -1, -1, -1, 1203, -1,
5172 -1, -1, 1111, -1, -1, -1, 142, -1, 455, 145,
5173 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5174 -1, 1106, -1, -1, 1109, 1110, -1, -1, -1, -1,
5175 -1, -1, -1, -1, 1119, -1, -1, -1, -1, 2,
5176 1149, 488, -1, 1152, -1, 1250, -1, -1, -1, -1,
5177 -1, 1256, 1257, 16, 17, -1, -1, 1166, 1167, 1168,
5178 507, -1, 1171, 1172, -1, -1, -1, 1176, 1177, -1,
5179 -1, -1, -1, -1, -1, -1, -1, -1, 1163, -1,
5180 -1, 528, -1, -1, -1, -1, -1, 534, -1, -1,
5181 53, 54, -1, -1, 1299, -1, -1, -1, 1001, 1002,
5182 1185, -1, -1, -1, -1, 68, -1, -1, -1, -1,
5183 -1, -1, 1197, -1, -1, -1, -1, -1, -1, -1,
5184 -1, -1, -1, -1, -1, -1, 573, 574, -1, 576,
5185 577, 94, 95, -1, -1, 98, -1, -1, 585, -1,
5186 103, -1, -1, 590, -1, -1, -1, -1, -1, -1,
5187 -1, 33, 34, 35, 36, 1058, 1059, -1, -1, 1062,
5188 -1, -1, -1, -1, -1, 1250, -1, 49, 50, 51,
5189 1279, 1256, 1257, -1, 1283, 1284, 1079, 59, 60, 61,
5190 62, 63, -1, -1, -1, -1, -1, -1, 2, 636,
5191 -1, 638, -1, -1, -1, -1, -1, -1, -1, 646,
5192 -1, 52, -1, 54, 55, 56, 57, 58, 1111, 656,
5193 -1, 658, 659, -1, 1299, -1, -1, -1, -1, -1,
5194 1329, 668, 669, -1, -1, -1, -1, 78, -1, 111,
5195 112, 113, 114, 115, 116, 117, 118, 119, -1, 53,
5196 54, 92, -1, 57, -1, -1, 1149, -1, 695, 1152,
5197 -1, 102, -1, -1, 217, -1, -1, -1, 109, 110,
5198 -1, -1, -1, 1166, 1167, 1168, 148, -1, 1171, 1172,
5199 -1, -1, 86, 1176, 1177, -1, -1, -1, 241, -1,
5200 -1, 244, 245, -1, 247, 99, 100, 101, -1, 252,
5201 -1, 142, -1, -1, -1, 44, -1, -1, -1, -1,
5202 -1, -1, -1, -1, -1, -1, 269, -1, -1, -1,
5203 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5204 -1, -1, -1, -1, -1, -1, -1, -1, -1, 78,
5205 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,
5206 89, 90, -1, -1, -1, -1, 95, 96, -1, -1,
5207 -1, -1, -1, -1, -1, -1, 319, -1, 321, 322,
5208 323, 324, -1, 326, 327, -1, -1, -1, -1, -1,
5209 -1, -1, -1, -1, -1, -1, 1279, -1, -1, -1,
5210 1283, 1284, -1, 830, 347, 832, 833, 136, -1, 138,
5211 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
5212 -1, -1, -1, 217, -1, -1, 155, -1, -1, -1,
5213 -1, 2, -1, -1, -1, -1, -1, -1, -1, -1,
5214 -1, 384, -1, 386, -1, -1, 1329, -1, 391, 392,
5215 393, -1, -1, -1, -1, -1, -1, -1, 252, -1,
5216 -1, -1, -1, -1, 407, -1, -1, -1, -1, 896,
5217 -1, -1, -1, -1, -1, 269, -1, -1, 1001, 1002,
5218 -1, -1, 53, 54, -1, 912, 57, -1, 431, -1,
5219 917, 918, -1, -1, -1, 289, 923, 924, -1, -1,
5220 -1, -1, -1, -1, -1, 932, 933, -1, -1, -1,
5221 -1, -1, 455, -1, -1, 86, -1, -1, -1, -1,
5222 -1, 948, -1, -1, -1, 319, -1, -1, 99, 100,
5223 101, -1, -1, -1, -1, 1058, 1059, -1, -1, 1062,
5224 -1, -1, 969, -1, -1, 488, -1, -1, -1, -1,
5225 -1, -1, -1, 347, 348, -1, 1079, 1001, 1002, -1,
5226 -1, -1, -1, -1, 507, 992, 993, 994, -1, -1,
5227 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5228 -1, -1, 1009, -1, -1, 528, -1, -1, 1111, -1,
5229 -1, 534, 386, -1, -1, -1, -1, 391, -1, 393,
5230 -1, 1028, -1, -1, -1, -1, -1, -1, -1, -1,
5231 -1, -1, -1, -1, 1058, 1059, -1, -1, 1062, 1046,
5232 -1, -1, 1049, -1, -1, -1, 1149, -1, -1, 1152,
5233 573, 574, -1, 576, 577, 1079, -1, -1, -1, -1,
5234 -1, -1, 585, 1166, 1167, 1168, 217, 590, 1171, 1172,
5235 -1, -1, -1, 1176, 1177, -1, -1, -1, -1, -1,
5236 -1, -1, -1, -1, -1, -1, -1, 1111, -1, -1,
5237 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1106,
5238 -1, 252, 1109, 1110, -1, -1, -1, -1, -1, -1,
5239 -1, -1, 1119, 636, 488, 638, -1, -1, 269, -1,
5240 -1, -1, -1, 646, -1, 1149, -1, -1, 1152, -1,
5241 -1, 505, -1, 656, -1, 658, 659, -1, 289, -1,
5242 -1, -1, 1166, 1167, 1168, 668, 669, 1171, 1172, -1,
5243 -1, -1, 1176, 1177, 528, -1, 1163, -1, -1, -1,
5244 534, -1, -1, -1, -1, -1, -1, -1, 319, -1,
5245 -1, -1, 695, -1, -1, -1, 1279, -1, 1185, -1,
5246 1283, 1284, -1, -1, -1, -1, -1, -1, -1, -1,
5247 1197, -1, -1, -1, -1, -1, 347, 348, -1, -1,
5248 574, -1, -1, 577, -1, -1, -1, -1, -1, -1,
5249 -1, -1, -1, 587, 2, -1, 590, -1, -1, -1,
5250 -1, -1, -1, -1, -1, -1, 1329, -1, -1, -1,
5251 -1, -1, -1, -1, -1, 386, -1, -1, -1, -1,
5252 391, -1, 393, 1250, -1, -1, -1, -1, -1, 1256,
5253 1257, -1, -1, -1, -1, 1279, -1, -1, -1, 1283,
5254 1284, -1, 636, -1, 638, 53, 54, -1, -1, 57,
5255 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5256 -1, -1, -1, -1, 658, -1, -1, -1, -1, -1,
5257 -1, -1, 1299, -1, 668, 669, -1, -1, 86, -1,
5258 -1, -1, -1, -1, -1, 1329, -1, 830, -1, 832,
5259 833, 99, 100, 101, 2, -1, -1, -1, -1, -1,
5260 -1, -1, -1, -1, 1001, 1002, -1, -1, -1, -1,
5261 -1, -1, -1, 707, -1, -1, -1, 488, -1, -1,
5262 -1, -1, 716, -1, -1, -1, -1, -1, -1, -1,
5263 -1, -1, -1, -1, 505, -1, -1, -1, -1, -1,
5264 -1, -1, -1, -1, -1, 53, 54, -1, -1, 57,
5265 -1, -1, -1, 896, -1, -1, -1, 528, -1, -1,
5266 -1, 1058, 1059, 534, -1, 1062, -1, -1, -1, 912,
5267 -1, -1, -1, -1, 917, 918, -1, -1, 86, -1,
5268 923, 924, 1079, -1, -1, -1, -1, 781, -1, 932,
5269 933, 99, 100, 101, 102, -1, -1, -1, -1, -1,
5270 -1, -1, -1, 574, -1, 948, 577, -1, -1, 217,
5271 -1, -1, -1, -1, 1111, -1, 587, -1, -1, 590,
5272 -1, -1, -1, -1, -1, -1, 969, -1, -1, -1,
5273 -1, -1, -1, -1, -1, -1, 830, -1, -1, 833,
5274 -1, -1, -1, -1, 252, -1, -1, -1, -1, 992,
5275 993, 994, 1149, -1, -1, 1152, -1, -1, -1, -1,
5276 -1, 269, -1, -1, -1, 636, 1009, 638, -1, 1166,
5277 1167, 1168, -1, -1, 1171, 1172, -1, -1, -1, 1176,
5278 1177, 289, -1, -1, -1, 1028, -1, 658, -1, -1,
5279 -1, -1, -1, -1, -1, -1, -1, 668, 669, -1,
5280 -1, -1, -1, 1046, -1, -1, 1049, -1, -1, 217,
5281 -1, 319, -1, -1, -1, -1, -1, -1, -1, -1,
5282 -1, -1, -1, 917, 918, -1, -1, -1, -1, 923,
5283 924, -1, -1, -1, -1, -1, 707, -1, 932, 347,
5284 348, -1, -1, -1, 252, -1, -1, -1, -1, -1,
5285 -1, -1, -1, -1, 948, -1, -1, -1, -1, -1,
5286 -1, 269, -1, 1106, -1, -1, 1109, 1110, -1, -1,
5287 -1, -1, -1, -1, -1, 969, 1119, -1, 386, -1,
5288 -1, 289, 1279, 391, -1, 393, 1283, 1284, -1, -1,
5289 -1, -1, -1, -1, -1, -1, -1, -1, 992, 993,
5290 994, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5291 781, 319, -1, -1, -1, 1009, -1, -1, -1, -1,
5292 1163, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5293 -1, -1, 1329, -1, 1028, -1, -1, -1, -1, 347,
5294 348, -1, 1185, -1, -1, -1, -1, 2, -1, -1,
5295 -1, -1, 1046, -1, 1197, 1049, -1, -1, -1, 830,
5296 -1, -1, 833, -1, -1, -1, -1, -1, -1, -1,
5297 -1, -1, -1, -1, -1, -1, 1001, 1002, 386, -1,
5298 488, -1, -1, 391, -1, 393, -1, -1, -1, -1,
5299 -1, -1, -1, -1, -1, -1, -1, 505, 53, 54,
5300 -1, -1, -1, -1, -1, -1, -1, 1250, 1102, -1,
5301 -1, -1, 1106, 1256, 1257, 1109, 1110, -1, -1, -1,
5302 528, -1, -1, -1, -1, 1119, 534, -1, -1, -1,
5303 -1, -1, -1, 1058, 1059, -1, -1, 1062, -1, -1,
5304 -1, -1, 1136, -1, 99, -1, 917, 918, -1, -1,
5305 -1, -1, 923, 924, 1079, -1, 1299, -1, -1, -1,
5306 -1, 932, -1, -1, -1, -1, 574, -1, -1, 577,
5307 -1, -1, -1, -1, -1, -1, -1, 948, -1, 587,
5308 488, -1, 590, -1, -1, -1, 1111, -1, -1, -1,
5309 -1, 1185, -1, -1, -1, -1, -1, 505, 969, -1,
5310 -1, -1, -1, 1197, -1, -1, -1, -1, -1, 1203,
5311 -1, -1, -1, -1, -1, 1001, 1002, -1, -1, -1,
5312 528, 992, 993, 994, 1149, -1, 534, 1152, 636, -1,
5313 638, -1, -1, -1, -1, -1, -1, -1, 1009, -1,
5314 -1, 1166, 1167, 1168, -1, -1, 1171, 1172, -1, -1,
5315 658, 1176, 1177, -1, -1, -1, -1, 1028, -1, -1,
5316 668, 669, 217, -1, 2, -1, 574, -1, -1, 577,
5317 -1, -1, 1058, 1059, -1, 1046, 1062, -1, 1049, 587,
5318 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5319 -1, -1, -1, 1079, -1, -1, -1, 252, -1, 707,
5320 -1, -1, -1, -1, -1, 1299, -1, -1, -1, -1,
5321 -1, 1001, 1002, -1, 269, 53, 54, -1, -1, -1,
5322 -1, -1, -1, -1, -1, 1111, -1, -1, 636, -1,
5323 638, 1102, -1, -1, -1, 1106, -1, -1, 1109, 1110,
5324 -1, -1, -1, -1, -1, -1, -1, -1, 1119, -1,
5325 658, -1, -1, -1, 1279, -1, -1, -1, 1283, 1284,
5326 -1, -1, -1, 1149, 319, 1136, 1152, -1, 1058, 1059,
5327 -1, -1, 1062, 781, -1, -1, -1, -1, -1, -1,
5328 1166, 1167, 1168, -1, -1, 1171, 1172, -1, -1, 1079,
5329 1176, 1177, 347, 1001, 1002, -1, -1, -1, -1, 707,
5330 -1, -1, -1, -1, 1329, -1, -1, -1, -1, -1,
5331 -1, -1, -1, -1, 1185, -1, -1, -1, -1, -1,
5332 -1, 1111, 830, -1, -1, 833, 1197, -1, -1, -1,
5333 -1, 386, 1203, -1, -1, -1, 391, -1, 393, -1,
5334 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5335 1058, 1059, -1, -1, 1062, -1, -1, -1, -1, 1149,
5336 -1, -1, 1152, -1, -1, -1, -1, -1, -1, -1,
5337 -1, 1079, -1, 781, -1, -1, 1166, 1167, 1168, 217,
5338 -1, 1171, 1172, -1, -1, -1, 1176, 1177, -1, -1,
5339 -1, -1, -1, 1279, -1, -1, -1, 1283, 1284, -1,
5340 -1, -1, -1, 1111, -1, -1, -1, -1, -1, 917,
5341 918, -1, -1, -1, 252, 923, 924, -1, -1, -1,
5342 -1, -1, 830, -1, 932, 833, -1, -1, 1299, -1,
5343 -1, 269, -1, 488, -1, -1, -1, -1, -1, -1,
5344 948, 1149, -1, 1329, 1152, -1, -1, -1, -1, -1,
5345 -1, -1, -1, -1, -1, -1, -1, -1, 1166, 1167,
5346 1168, 969, -1, 1171, 1172, -1, -1, -1, 1176, 1177,
5347 -1, -1, -1, 528, -1, -1, -1, -1, -1, 534,
5348 -1, 319, -1, -1, 992, 993, 994, -1, -1, 1279,
5349 -1, -1, -1, 1283, 1284, -1, -1, -1, -1, -1,
5350 -1, 1009, -1, -1, -1, -1, -1, -1, -1, 347,
5351 -1, -1, -1, -1, -1, -1, -1, -1, -1, 574,
5352 1028, -1, 577, -1, 932, -1, -1, -1, -1, -1,
5353 -1, -1, -1, -1, -1, 590, -1, -1, 1046, 1329,
5354 948, 1049, -1, -1, -1, -1, -1, -1, 386, -1,
5355 -1, -1, -1, 391, -1, 393, -1, -1, -1, -1,
5356 -1, 969, -1, -1, -1, -1, -1, -1, -1, -1,
5357 -1, 1279, -1, -1, -1, 1283, 1284, -1, -1, -1,
5358 -1, 636, -1, 638, 992, 993, -1, -1, -1, 33,
5359 34, 35, 36, -1, 1102, -1, -1, -1, 1106, -1,
5360 -1, 1109, 1110, 658, -1, 49, 50, 51, 52, -1,
5361 -1, 1119, 56, 668, 669, 59, 60, 61, 62, 63,
5362 1028, 1329, -1, -1, -1, -1, -1, -1, 1136, -1,
5363 -1, -1, -1, -1, -1, -1, -1, -1, 1046, -1,
5364 -1, 1049, -1, -1, -1, -1, -1, 91, 92, -1,
5365 488, -1, -1, -1, -1, 99, -1, -1, 102, -1,
5366 -1, 105, 106, -1, 108, -1, -1, 111, 112, 113,
5367 114, 115, 116, 117, 118, 119, -1, 1185, -1, -1,
5368 -1, -1, 16, 17, -1, -1, -1, -1, -1, 1197,
5369 528, -1, -1, -1, 1102, 1203, 534, 141, 1106, -1,
5370 -1, 1109, 1110, -1, 148, -1, -1, -1, -1, -1,
5371 -1, 1119, -1, -1, 48, 49, 50, 51, 162, -1,
5372 -1, 55, 56, -1, -1, -1, -1, -1, 1136, -1,
5373 -1, -1, -1, -1, 68, 69, 574, -1, -1, 577,
5374 -1, 78, 79, 80, 81, 82, 83, 84, 85, -1,
5375 87, 88, 590, -1, -1, -1, -1, -1, 95, 96,
5376 -1, -1, -1, -1, -1, -1, -1, -1, -1, 103,
5377 -1, -1, -1, -1, -1, 830, -1, 1185, 833, -1,
5378 -1, -1, -1, -1, -1, -1, -1, -1, -1, 1197,
5379 -1, 1299, -1, -1, -1, 1203, -1, -1, 636, -1,
5380 638, 138, 139, 140, 141, 142, 143, 144, 145, 146,
5381 147, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5382 658, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5383 668, 669, -1, -1, -1, -1, -1, -1, -1, -1,
5384 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5385 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5386 -1, -1, 917, 918, -1, -1, -1, -1, 923, 924,
5387 -1, -1, -1, -1, -1, -1, -1, 932, -1, -1,
5388 -1, 215, -1, -1, 218, 219, 220, -1, 222, -1,
5389 -1, 1299, -1, 948, -1, -1, -1, -1, -1, 33,
5390 34, 35, 36, -1, -1, -1, -1, 241, -1, -1,
5391 244, -1, -1, -1, 969, 49, 50, 51, 52, -1,
5392 -1, -1, 56, -1, 58, 59, 60, 61, 62, 63,
5393 -1, -1, -1, -1, -1, -1, -1, 992, 993, 994,
5394 -1, -1, -1, -1, 78, -1, -1, -1, -1, -1,
5395 -1, -1, -1, -1, 1009, -1, -1, 91, 92, -1,
5396 -1, -1, -1, -1, -1, 99, -1, -1, 102, -1,
5397 -1, 105, 106, 1028, 108, 109, -1, 111, 112, 113,
5398 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
5399 -1, 1046, 830, -1, 1049, 833, -1, -1, -1, -1,
5400 -1, -1, -1, -1, -1, -1, -1, 141, -1, -1,
5401 -1, -1, -1, -1, 148, -1, -1, -1, 352, 353,
5402 354, 355, 356, -1, -1, 359, 360, 361, 362, 363,
5403 364, 365, 366, -1, 368, -1, -1, 371, 372, 373,
5404 374, 375, 376, 377, 378, 379, 380, 1102, -1, -1,
5405 384, 1106, -1, -1, 1109, 1110, -1, -1, -1, -1,
5406 -1, -1, -1, -1, 1119, -1, -1, -1, -1, -1,
5407 -1, -1, -1, -1, -1, -1, -1, -1, -1, 917,
5408 918, -1, -1, -1, -1, 923, 924, -1, -1, -1,
5409 -1, -1, -1, -1, 932, -1, -1, 431, -1, -1,
5410 -1, -1, -1, -1, -1, -1, -1, -1, 52, 53,
5411 948, -1, 56, -1, -1, -1, 450, 451, -1, -1,
5412 -1, 455, -1, -1, -1, 459, -1, 461, -1, -1,
5413 1185, 969, 76, 77, 78, 79, 80, 81, 82, 83,
5414 84, -1, 1197, 87, 88, 479, -1, -1, -1, 93,
5415 94, 95, 96, -1, 992, 993, 994, -1, 492, -1,
5416 -1, 495, -1, -1, 108, 109, -1, -1, -1, -1,
5417 -1, 1009, -1, 507, -1, -1, -1, -1, -1, -1,
5418 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5419 1028, 525, -1, -1, 138, 139, 140, 141, 142, 143,
5420 144, 145, 146, 147, -1, 149, 150, -1, 1046, -1,
5421 -1, 1049, 156, 157, -1, -1, -1, -1, -1, -1,
5422 -1, -1, -1, -1, -1, -1, -1, 561, 78, 79,
5423 80, 81, 82, 83, 84, -1, -1, 87, 88, 573,
5424 -1, -1, 576, -1, 1299, 95, 96, -1, -1, -1,
5425 -1, 585, -1, -1, -1, -1, 590, -1, -1, -1,
5426 -1, -1, -1, -1, -1, -1, -1, -1, 1106, -1,
5427 -1, 1109, 1110, -1, -1, -1, -1, -1, -1, -1,
5428 -1, 1119, -1, -1, -1, -1, -1, -1, 138, 139,
5429 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
5430 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5431 -1, -1, 646, -1, -1, -1, -1, -1, -1, -1,
5432 -1, -1, 656, -1, -1, -1, -1, -1, -1, -1,
5433 -1, -1, -1, -1, 668, 669, -1, 671, 672, 673,
5434 674, -1, -1, -1, -1, -1, -1, 1185, -1, -1,
5435 -1, 685, 686, -1, -1, 689, -1, 691, -1, 1197,
5436 -1, -1, -1, -1, -1, -1, -1, 701, 0, 1,
5437 -1, 3, 4, 5, 6, 7, -1, -1, -1, 11,
5438 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
5439 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
5440 32, 33, 34, 35, 36, -1, 740, 39, -1, -1,
5441 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5442 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5443 62, 63, 64, 65, -1, -1, -1, -1, -1, 773,
5444 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5445 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5446 92, 1299, -1, -1, -1, -1, -1, 99, 802, -1,
5447 102, 103, -1, 105, 106, -1, 108, -1, -1, 111,
5448 112, 113, 114, 115, 116, 117, 118, 119, -1, 823,
5449 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5450 -1, -1, -1, -1, -1, -1, -1, -1, 52, 53,
5451 -1, -1, 56, -1, -1, -1, 148, 149, 150, -1,
5452 -1, -1, -1, -1, -1, -1, -1, -1, 160, -1,
5453 162, -1, 76, 77, 78, 79, 80, 81, 82, 83,
5454 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
5455 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
5456 -1, -1, 896, -1, 108, 109, -1, -1, -1, -1,
5457 -1, 905, -1, -1, -1, -1, -1, -1, 912, -1,
5458 -1, -1, 916, 917, 918, -1, -1, -1, -1, 923,
5459 924, -1, -1, 927, 138, 139, 140, 141, 142, 143,
5460 144, 145, 146, 147, -1, 149, 150, -1, 942, -1,
5461 -1, -1, 156, 157, -1, -1, -1, -1, -1, -1,
5462 -1, -1, -1, 957, 958, 959, -1, 961, 962, -1,
5463 964, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5464 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5465 -1, -1, 986, 987, -1, -1, 990, -1, -1, -1,
5466 994, 995, -1, -1, -1, -1, -1, -1, -1, -1,
5467 -1, -1, -1, -1, -1, 1009, -1, -1, -1, -1,
5468 -1, -1, -1, -1, 0, 1, -1, 3, 4, 5,
5469 6, 7, -1, 1027, -1, 11, 12, -1, -1, 1033,
5470 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
5471 -1, -1, -1, -1, 30, 31, 32, 33, 34, 35,
5472 36, -1, -1, 39, -1, -1, -1, -1, -1, 45,
5473 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
5474 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
5475 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5476 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
5477 -1, -1, -1, -1, -1, 91, 92, -1, 1112, -1,
5478 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5479 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
5480 116, 117, 118, 119, -1, 121, -1, -1, -1, -1,
5481 0, -1, -1, -1, -1, -1, -1, -1, 8, 9,
5482 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
5483 -1, -1, 148, 149, 150, 25, 26, 27, 28, 29,
5484 -1, -1, -1, -1, 160, -1, 162, 37, 38, -1,
5485 40, 41, 42, 43, 44, -1, -1, -1, 78, 79,
5486 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
5487 90, -1, -1, -1, -1, 95, 96, -1, 68, 69,
5488 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
5489 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
5490 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
5491 100, 101, -1, -1, -1, -1, 1250, 107, 138, 139,
5492 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
5493 -1, 121, -1, -1, 124, -1, -1, -1, -1, -1,
5494 -1, -1, -1, -1, -1, 135, 136, 137, 138, 139,
5495 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
5496 -1, -1, 152, 153, 154, 155, 0, -1, 158, 159,
5497 160, -1, 162, -1, 8, 9, 10, -1, -1, 13,
5498 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
5499 -1, 25, -1, 27, 28, 29, -1, -1, -1, -1,
5500 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
5501 44, -1, -1, -1, 78, 79, 80, 81, 82, 83,
5502 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
5503 -1, 95, 96, -1, 68, 69, -1, -1, -1, -1,
5504 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
5505 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
5506 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
5507 -1, -1, 136, 107, 138, 139, 140, 141, 142, 143,
5508 144, 145, 146, 147, -1, -1, -1, 121, -1, -1,
5509 124, -1, -1, -1, -1, -1, -1, -1, 162, -1,
5510 -1, 135, 136, 137, 138, 139, 140, 141, 142, 143,
5511 144, 145, 146, 147, -1, -1, -1, -1, -1, 153,
5512 154, 155, 0, -1, 158, 159, 160, -1, 162, -1,
5513 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
5514 -1, -1, -1, -1, -1, -1, -1, 25, -1, 27,
5515 28, 29, -1, -1, -1, -1, -1, -1, -1, 37,
5516 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
5517 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5518 88, 89, 90, -1, -1, -1, -1, 95, 96, -1,
5519 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
5520 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5521 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
5522 98, -1, 100, 101, -1, -1, -1, -1, 136, 107,
5523 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5524 -1, -1, -1, 121, -1, -1, 124, -1, -1, -1,
5525 -1, -1, -1, -1, -1, -1, -1, 135, 136, 137,
5526 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5527 -1, -1, -1, -1, -1, 153, 154, 155, 0, -1,
5528 158, 159, 160, -1, 162, -1, 8, 9, 10, -1,
5529 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
5530 -1, -1, -1, 25, 26, 27, 28, 29, -1, -1,
5531 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
5532 42, 43, 44, -1, -1, -1, 78, 79, 80, 81,
5533 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
5534 -1, -1, -1, 95, 96, -1, 68, 69, -1, -1,
5535 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
5536 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
5537 -1, -1, -1, 95, 96, 97, 98, -1, -1, 101,
5538 -1, -1, -1, -1, -1, 107, 138, 139, 140, 141,
5539 142, 143, 144, 145, 146, 147, -1, -1, -1, 121,
5540 -1, -1, 124, -1, -1, -1, -1, -1, -1, -1,
5541 -1, -1, -1, -1, 136, 137, 138, 139, 140, 141,
5542 142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
5543 152, 153, 154, 155, 0, -1, 158, 159, 160, -1,
5544 162, -1, 8, 9, 10, -1, -1, 13, 14, 15,
5545 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
5546 26, 27, 28, 29, -1, -1, -1, -1, -1, -1,
5547 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
5548 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5549 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5550 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
5551 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
5552 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
5553 96, 97, 98, -1, -1, 101, -1, -1, -1, -1,
5554 -1, 107, -1, -1, -1, -1, -1, -1, -1, -1,
5555 -1, -1, -1, -1, -1, 121, -1, -1, 124, -1,
5556 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5557 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
5558 146, 147, -1, -1, -1, -1, 152, 153, 154, 155,
5559 0, -1, 158, 159, 160, -1, 162, -1, 8, 9,
5560 10, -1, -1, 13, 14, 15, -1, 17, -1, -1,
5561 -1, -1, -1, -1, -1, 25, 26, 27, 28, -1,
5562 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
5563 40, 41, 42, 43, 44, -1, -1, -1, -1, -1,
5564 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5565 -1, -1, -1, -1, -1, -1, -1, -1, 68, 69,
5566 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
5567 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
5568 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
5569 -1, 101, -1, -1, -1, -1, -1, 107, -1, -1,
5570 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5571 -1, 121, -1, -1, -1, -1, -1, -1, -1, -1,
5572 -1, -1, -1, -1, -1, -1, 136, -1, 138, 139,
5573 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
5574 -1, -1, 152, 153, 154, 155, 0, 157, 158, 159,
5575 160, -1, 162, -1, 8, 9, 10, -1, -1, 13,
5576 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
5577 -1, 25, -1, 27, 28, 29, -1, -1, -1, -1,
5578 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
5579 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5580 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5581 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
5582 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
5583 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
5584 -1, 95, 96, 97, 98, -1, -1, 101, -1, -1,
5585 -1, -1, -1, 107, -1, -1, -1, -1, -1, -1,
5586 -1, -1, -1, -1, -1, -1, -1, 121, -1, -1,
5587 124, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5588 -1, -1, 136, 137, 138, 139, 140, 141, 142, 143,
5589 144, 145, 146, 147, -1, -1, -1, -1, -1, 153,
5590 154, 155, 0, -1, 158, 159, 160, -1, 162, -1,
5591 8, 9, 10, -1, -1, 13, 14, 15, -1, 17,
5592 -1, -1, -1, -1, -1, -1, -1, 25, 26, 27,
5593 28, -1, -1, -1, -1, -1, -1, -1, -1, 37,
5594 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
5595 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5596 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5597 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
5598 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5599 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
5600 98, -1, -1, 101, -1, -1, -1, -1, -1, 107,
5601 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5602 -1, -1, -1, 121, -1, -1, -1, -1, -1, -1,
5603 -1, -1, -1, -1, -1, -1, -1, -1, 136, -1,
5604 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5605 -1, -1, -1, -1, 152, 153, 154, 155, 0, 157,
5606 158, 159, 160, -1, 162, -1, 8, 9, 10, -1,
5607 -1, 13, 14, 15, -1, 17, -1, -1, -1, -1,
5608 -1, -1, -1, 25, -1, 27, 28, -1, -1, -1,
5609 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
5610 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
5611 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5612 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
5613 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
5614 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
5615 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
5616 -1, -1, -1, -1, -1, 107, -1, -1, -1, -1,
5617 -1, -1, -1, -1, -1, -1, -1, -1, -1, 121,
5618 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5619 -1, -1, -1, 135, 136, -1, 138, 139, 140, 141,
5620 142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
5621 152, 153, 154, 155, 0, -1, 158, 159, 160, -1,
5622 162, -1, 8, 9, 10, -1, -1, 13, 14, 15,
5623 -1, 17, -1, -1, -1, -1, -1, -1, -1, 25,
5624 -1, 27, 28, -1, -1, -1, -1, -1, -1, -1,
5625 -1, 37, 38, -1, 40, 41, 42, 43, 44, -1,
5626 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5627 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5628 -1, -1, 68, 69, -1, -1, -1, -1, -1, -1,
5629 -1, -1, 78, 79, 80, 81, 82, 83, 84, 85,
5630 86, 87, 88, 89, 90, -1, -1, -1, -1, 95,
5631 96, 97, 98, -1, -1, 101, -1, -1, -1, -1,
5632 -1, 107, -1, -1, -1, -1, -1, -1, -1, -1,
5633 -1, -1, -1, -1, -1, 121, -1, -1, -1, -1,
5634 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5635 136, -1, 138, 139, 140, 141, 142, 143, 144, 145,
5636 146, 147, -1, -1, -1, -1, -1, 153, 154, 155,
5637 0, 157, 158, 159, 160, -1, 162, -1, 8, 9,
5638 10, 44, -1, -1, 14, 15, -1, 17, -1, -1,
5639 -1, -1, -1, -1, -1, 25, 26, -1, -1, -1,
5640 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
5641 40, 41, 42, 43, 44, 78, 79, 80, 81, 82,
5642 83, 84, 85, 86, 87, 88, 89, 90, -1, -1,
5643 -1, -1, 95, 96, -1, -1, -1, -1, 68, 69,
5644 -1, -1, -1, -1, -1, -1, -1, -1, 78, 79,
5645 80, 81, 82, 83, 84, 85, 86, 87, 88, 89,
5646 90, -1, -1, -1, -1, 95, 96, 97, 98, -1,
5647 100, 101, -1, 136, -1, 138, 139, 140, 141, 142,
5648 143, 144, 145, 146, 147, -1, -1, -1, -1, -1,
5649 -1, 121, -1, -1, -1, -1, -1, -1, -1, -1,
5650 -1, -1, -1, -1, -1, 135, 136, -1, 138, 139,
5651 140, 141, 142, 143, 144, 145, 146, 147, -1, -1,
5652 -1, -1, 152, 153, 154, 155, 0, -1, 158, -1,
5653 160, -1, 162, -1, 8, 9, 10, -1, -1, -1,
5654 14, 15, -1, 17, -1, -1, -1, -1, -1, -1,
5655 -1, 25, 26, -1, -1, -1, -1, -1, -1, -1,
5656 -1, -1, -1, 37, 38, -1, 40, 41, 42, 43,
5657 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5658 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5659 -1, -1, -1, -1, 68, 69, -1, -1, -1, -1,
5660 -1, -1, -1, -1, 78, 79, 80, 81, 82, 83,
5661 84, 85, 86, 87, 88, 89, 90, -1, -1, -1,
5662 -1, 95, 96, 97, 98, -1, 100, 101, -1, -1,
5663 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5664 -1, -1, -1, -1, -1, -1, -1, 121, -1, -1,
5665 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5666 -1, 135, 136, -1, 138, 139, 140, 141, 142, 143,
5667 144, 145, 146, 147, -1, -1, -1, -1, 152, 153,
5668 154, 155, 0, -1, 158, -1, 160, -1, 162, -1,
5669 8, 9, 10, -1, -1, -1, 14, 15, -1, 17,
5670 -1, -1, -1, -1, -1, -1, -1, 25, -1, -1,
5671 -1, -1, -1, -1, -1, -1, -1, -1, -1, 37,
5672 38, -1, 40, 41, 42, 43, 44, -1, -1, -1,
5673 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5674 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5675 68, 69, -1, -1, -1, -1, -1, -1, -1, -1,
5676 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
5677 88, 89, 90, -1, -1, -1, -1, 95, 96, 97,
5678 98, -1, 100, 101, -1, -1, -1, -1, -1, -1,
5679 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5680 -1, -1, -1, 121, -1, -1, -1, -1, -1, -1,
5681 -1, -1, -1, -1, -1, -1, -1, 135, 136, -1,
5682 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5683 -1, -1, -1, -1, 152, 153, 154, 155, 0, -1,
5684 158, -1, 160, -1, 162, -1, 8, 9, 10, -1,
5685 -1, -1, 14, 15, -1, 17, -1, -1, -1, -1,
5686 -1, -1, -1, 25, -1, -1, -1, -1, -1, -1,
5687 -1, -1, -1, -1, -1, 37, 38, -1, 40, 41,
5688 42, 43, 44, -1, -1, -1, -1, -1, -1, -1,
5689 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5690 -1, -1, -1, -1, -1, -1, 68, 69, -1, -1,
5691 -1, -1, -1, -1, -1, -1, 78, 79, 80, 81,
5692 82, 83, 84, 85, 86, 87, 88, 89, 90, -1,
5693 -1, -1, -1, 95, 96, 97, 98, -1, 100, 101,
5694 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5695 -1, -1, -1, -1, -1, -1, -1, -1, -1, 121,
5696 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5697 -1, -1, -1, 135, 136, -1, 138, 139, 140, 141,
5698 142, 143, 144, 145, 146, 147, -1, -1, -1, -1,
5699 152, 153, 154, 155, -1, -1, 158, -1, 160, 1,
5700 162, 3, 4, 5, 6, 7, 8, 9, 10, 11,
5701 12, -1, -1, 15, 16, -1, 18, 19, 20, 21,
5702 22, 23, 24, -1, -1, -1, -1, -1, 30, 31,
5703 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
5704 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5705 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5706 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
5707 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5708 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5709 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5710 102, 103, -1, 105, 106, -1, 108, -1, -1, 111,
5711 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
5712 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
5713 10, 11, 12, -1, 14, 15, 16, -1, 18, 19,
5714 20, 21, 22, 23, 24, -1, 148, 149, 150, -1,
5715 30, 31, 32, 33, 34, 35, 36, -1, 160, 39,
5716 162, -1, -1, -1, -1, 45, 46, 47, 48, 49,
5717 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5718 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
5719 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
5720 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5721 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
5722 -1, -1, 102, 103, -1, 105, 106, -1, 108, -1,
5723 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
5724 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
5725 -1, -1, 10, 11, 12, -1, -1, 15, 16, 17,
5726 18, 19, 20, 21, 22, 23, 24, -1, 148, 149,
5727 150, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5728 160, 39, 162, -1, -1, -1, -1, 45, 46, 47,
5729 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5730 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5731 68, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5732 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5733 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5734 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5735 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5736 118, 119, -1, -1, -1, 1, -1, 3, 4, 5,
5737 6, 7, -1, -1, 10, 11, 12, -1, -1, 15,
5738 16, -1, 18, 19, 20, 21, 22, 23, 24, 25,
5739 148, 149, 150, -1, 30, 31, 32, 33, 34, 35,
5740 36, -1, 160, 39, 162, -1, -1, -1, -1, 45,
5741 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
5742 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
5743 -1, -1, 68, -1, -1, -1, -1, -1, -1, -1,
5744 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
5745 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
5746 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
5747 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
5748 116, 117, 118, 119, -1, -1, -1, 1, -1, 3,
5749 4, 5, 6, 7, -1, -1, 10, 11, 12, -1,
5750 -1, 15, 16, -1, 18, 19, 20, 21, 22, 23,
5751 24, -1, 148, 149, 150, -1, 30, 31, 32, 33,
5752 34, 35, 36, -1, 160, 39, 162, -1, -1, -1,
5753 -1, 45, 46, 47, 48, 49, 50, 51, 52, 53,
5754 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5755 64, 65, -1, -1, 68, -1, -1, -1, -1, -1,
5756 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
5757 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
5758 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
5759 -1, 105, 106, -1, 108, -1, -1, 111, 112, 113,
5760 114, 115, 116, 117, 118, 119, -1, -1, -1, 1,
5761 -1, 3, 4, 5, 6, 7, -1, 9, 10, 11,
5762 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
5763 22, 23, 24, -1, 148, 149, 150, -1, 30, 31,
5764 32, 33, 34, 35, 36, -1, 160, 39, 162, -1,
5765 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5766 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5767 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
5768 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5769 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5770 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5771 102, 103, -1, 105, 106, -1, 108, -1, -1, 111,
5772 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
5773 -1, 1, -1, 3, 4, 5, 6, 7, -1, -1,
5774 10, 11, 12, -1, -1, -1, 16, -1, 18, 19,
5775 20, 21, 22, 23, 24, -1, 148, 149, 150, -1,
5776 30, 31, 32, 33, 34, 35, 36, -1, 160, 39,
5777 162, -1, -1, -1, -1, 45, 46, 47, 48, 49,
5778 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
5779 60, 61, 62, 63, 64, 65, -1, -1, 68, -1,
5780 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
5781 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5782 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
5783 -1, -1, 102, 103, -1, 105, 106, -1, 108, -1,
5784 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
5785 -1, -1, -1, 1, -1, 3, 4, 5, 6, 7,
5786 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5787 18, 19, 20, 21, 22, 23, 24, -1, 148, 149,
5788 150, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5789 160, 39, 162, -1, -1, -1, -1, 45, 46, 47,
5790 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5791 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5792 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5793 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5794 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5795 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5796 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5797 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5798 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5799 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5800 148, 149, 150, -1, -1, -1, -1, -1, -1, -1,
5801 158, -1, 160, 1, 162, 3, 4, 5, 6, 7,
5802 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5803 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5804 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5805 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5806 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5807 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5808 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5809 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5810 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5811 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5812 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5813 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5814 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5815 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5816 148, 149, 150, -1, -1, -1, -1, -1, -1, -1,
5817 158, -1, 160, 1, 162, 3, 4, 5, 6, 7,
5818 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5819 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5820 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5821 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5822 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5823 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5824 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5825 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5826 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5827 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5828 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5829 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5830 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5831 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5832 148, 149, 150, -1, -1, 153, -1, -1, -1, -1,
5833 -1, -1, 160, 1, 162, 3, 4, 5, 6, 7,
5834 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
5835 18, 19, 20, 21, 22, 23, 24, -1, -1, -1,
5836 -1, -1, 30, 31, 32, 33, 34, 35, 36, -1,
5837 -1, 39, -1, -1, -1, -1, -1, 45, 46, 47,
5838 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5839 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
5840 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5841 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5842 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
5843 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
5844 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
5845 118, 119, -1, -1, -1, -1, -1, -1, -1, -1,
5846 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5847 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5848 148, 149, 150, -1, -1, 153, -1, 1, -1, 3,
5849 4, 5, 160, 7, 162, -1, -1, 11, 12, -1,
5850 -1, -1, 16, 17, 18, 19, 20, 21, 22, 23,
5851 24, -1, -1, -1, -1, -1, 30, 31, 32, 33,
5852 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
5853 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
5854 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
5855 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
5856 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
5857 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
5858 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
5859 -1, 105, 106, -1, -1, -1, -1, 111, 112, 113,
5860 114, 115, 116, 117, 118, 119, -1, -1, 0, 1,
5861 -1, 3, 4, 5, 6, 7, 8, 9, 10, 11,
5862 12, -1, 14, 15, 16, 17, 18, 19, 20, 21,
5863 22, 23, 24, 25, 148, 149, 150, -1, 30, 31,
5864 32, 33, 34, 35, 36, -1, 160, 39, 162, -1,
5865 -1, -1, -1, 45, 46, 47, 48, 49, 50, 51,
5866 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
5867 62, 63, 64, 65, -1, -1, 68, -1, -1, -1,
5868 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
5869 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
5870 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
5871 102, 103, -1, 105, 106, -1, 108, -1, -1, 111,
5872 112, 113, 114, 115, 116, 117, 118, 119, -1, 121,
5873 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5874 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5875 -1, -1, -1, -1, -1, -1, 148, 149, 150, -1,
5876 -1, 153, -1, -1, -1, -1, 158, -1, 160, 0,
5877 1, -1, 3, 4, 5, 6, 7, -1, -1, -1,
5878 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
5879 21, 22, 23, 24, -1, -1, -1, -1, -1, 30,
5880 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
5881 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
5882 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
5883 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
5884 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
5885 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5886 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
5887 -1, 102, 103, -1, 105, 106, -1, 108, -1, -1,
5888 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
5889 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5890 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5891 -1, -1, -1, -1, -1, -1, -1, 148, 149, 150,
5892 -1, -1, 153, 3, 4, 5, -1, 7, -1, 160,
5893 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
5894 20, 21, 22, 23, 24, -1, -1, -1, -1, -1,
5895 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
5896 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
5897 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
5898 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
5899 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
5900 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5901 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
5902 -1, -1, 102, 103, -1, 105, 106, -1, 108, 109,
5903 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
5904 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
5905 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
5906 19, 20, 21, 22, 23, 24, -1, -1, 148, 149,
5907 150, 30, 31, 32, 33, 34, 35, 36, -1, -1,
5908 39, -1, 162, -1, -1, -1, -1, 46, -1, -1,
5909 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
5910 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
5911 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
5912 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5913 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
5914 99, -1, -1, 102, 103, -1, 105, 106, -1, -1,
5915 -1, -1, 111, 112, 113, 114, 115, 116, 117, 118,
5916 119, -1, -1, -1, -1, 3, 4, 5, 6, 7,
5917 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
5918 18, 19, 20, 21, 22, 23, 24, 25, 26, 148,
5919 149, 150, 30, 31, 32, 33, 34, 35, 36, 37,
5920 38, 39, -1, 162, -1, -1, -1, 45, 46, 47,
5921 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
5922 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5923 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
5924 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
5925 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
5926 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5927 108, 109, -1, -1, -1, -1, -1, -1, -1, -1,
5928 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5929 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5930 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
5931 -1, 149, 150, -1, -1, -1, -1, -1, 156, 157,
5932 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
5933 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
5934 23, 24, 25, 26, -1, -1, -1, 30, 31, 32,
5935 33, 34, 35, 36, 37, 38, 39, -1, -1, -1,
5936 -1, -1, 45, 46, 47, 48, 49, 50, 51, 52,
5937 53, 54, 55, 56, 57, -1, -1, -1, -1, -1,
5938 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5939 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
5940 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
5941 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
5942 -1, -1, -1, -1, -1, 108, 109, -1, -1, -1,
5943 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5944 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5945 -1, -1, -1, -1, -1, 138, 139, 140, 141, 142,
5946 143, 144, 145, 146, 147, -1, 149, 150, -1, -1,
5947 -1, -1, -1, 156, 3, 4, 5, 6, 7, 8,
5948 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
5949 19, 20, 21, 22, 23, 24, 25, 26, -1, -1,
5950 -1, 30, 31, 32, 33, 34, 35, 36, 37, 38,
5951 39, -1, -1, -1, -1, -1, 45, 46, 47, 48,
5952 49, 50, 51, 52, 53, 54, -1, 56, -1, -1,
5953 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5954 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
5955 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
5956 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
5957 -1, -1, -1, -1, -1, -1, -1, -1, -1, 108,
5958 109, -1, -1, 112, -1, -1, -1, -1, -1, -1,
5959 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5960 -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
5961 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
5962 149, 150, -1, -1, -1, -1, -1, 156, 3, 4,
5963 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
5964 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
5965 25, 26, -1, -1, -1, 30, 31, 32, 33, 34,
5966 35, 36, 37, 38, 39, -1, -1, -1, -1, -1,
5967 45, 46, 47, 48, 49, 50, 51, 52, 53, -1,
5968 -1, 56, -1, -1, -1, -1, -1, -1, -1, -1,
5969 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5970 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
5971 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
5972 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
5973 -1, -1, -1, 108, 109, -1, -1, 112, -1, -1,
5974 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5975 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5976 -1, -1, -1, 138, 139, 140, 141, 142, 143, 144,
5977 145, 146, 147, -1, 149, 150, -1, -1, -1, -1,
5978 -1, 156, 3, 4, 5, 6, 7, 8, 9, 10,
5979 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
5980 21, 22, 23, 24, 25, 26, -1, -1, -1, 30,
5981 31, 32, 33, 34, 35, 36, 37, 38, 39, -1,
5982 -1, -1, -1, -1, 45, 46, 47, 48, 49, 50,
5983 51, 52, 53, -1, -1, 56, -1, -1, -1, -1,
5984 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5985 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
5986 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
5987 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
5988 -1, -1, -1, -1, -1, -1, -1, 108, 109, -1,
5989 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5990 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
5991 -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
5992 141, 142, 143, 144, 145, 146, 147, -1, 149, 150,
5993 3, 4, 5, -1, 7, 156, -1, -1, 11, 12,
5994 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
5995 23, 24, -1, -1, -1, -1, -1, 30, 31, 32,
5996 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
5997 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
5998 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
5999 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
6000 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6001 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6002 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6003 103, -1, 105, 106, -1, -1, -1, -1, 111, 112,
6004 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
6005 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6006 -1, -1, -1, -1, -1, -1, -1, -1, 3, 4,
6007 5, -1, 7, -1, -1, 148, 11, 12, -1, -1,
6008 -1, 16, 155, 18, 19, 20, 21, 22, 23, 24,
6009 -1, -1, -1, -1, -1, 30, 31, 32, 33, 34,
6010 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6011 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6012 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6013 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6014 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6015 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6016 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
6017 105, 106, -1, -1, -1, -1, 111, 112, 113, 114,
6018 115, 116, 117, 118, 119, -1, -1, -1, -1, -1,
6019 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6020 -1, -1, -1, -1, 1, -1, 3, 4, 5, 6,
6021 7, -1, -1, 148, 11, 12, -1, -1, -1, 16,
6022 155, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6023 -1, -1, -1, 30, 31, 32, 33, 34, 35, 36,
6024 -1, -1, 39, -1, -1, -1, -1, -1, 45, 46,
6025 -1, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6026 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6027 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6028 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6029 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6030 -1, -1, 99, -1, -1, 102, 103, -1, 105, 106,
6031 -1, 108, -1, -1, 111, 112, 113, 114, 115, 116,
6032 117, 118, 119, -1, -1, 1, -1, 3, 4, 5,
6033 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6034 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6035 -1, 148, 149, 150, 30, 31, 32, 33, 34, 35,
6036 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
6037 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6038 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6039 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6040 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6041 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6042 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
6043 106, -1, -1, -1, -1, 111, 112, 113, 114, 115,
6044 116, 117, 118, 119, -1, -1, -1, -1, 3, 4,
6045 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
6046 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6047 -1, -1, 148, 149, 150, 30, 31, 32, 33, 34,
6048 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6049 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6050 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
6051 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6052 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6053 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6054 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
6055 105, 106, -1, 108, 109, 110, 111, 112, 113, 114,
6056 115, 116, 117, 118, 119, -1, -1, -1, -1, 3,
6057 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6058 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6059 24, -1, -1, 148, 149, 150, 30, 31, 32, 33,
6060 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6061 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6062 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
6063 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6064 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6065 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6066 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6067 -1, 105, 106, -1, 108, 109, 110, 111, 112, 113,
6068 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
6069 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
6070 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
6071 23, 24, -1, -1, 148, 149, 150, 30, 31, 32,
6072 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6073 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
6074 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
6075 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
6076 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
6077 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
6078 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6079 103, -1, 105, 106, -1, 108, 109, 110, 111, 112,
6080 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
6081 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
6082 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6083 22, 23, 24, -1, -1, 148, 149, 150, 30, 31,
6084 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6085 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6086 52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
6087 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6088 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6089 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6090 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6091 102, 103, -1, 105, 106, -1, 108, 109, 110, 111,
6092 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
6093 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6094 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6095 21, 22, 23, 24, -1, -1, 148, 149, 150, 30,
6096 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6097 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6098 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
6099 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6100 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6101 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6102 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6103 -1, 102, 103, -1, 105, 106, -1, 108, 109, -1,
6104 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
6105 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
6106 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
6107 20, 21, 22, 23, 24, -1, -1, 148, 149, 150,
6108 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6109 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
6110 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,
6111 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
6112 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
6113 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6114 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6115 -1, -1, 102, 103, -1, 105, 106, -1, -1, 109,
6116 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
6117 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
6118 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6119 19, 20, 21, 22, 23, 24, -1, -1, 148, 149,
6120 150, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6121 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
6122 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
6123 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6124 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6125 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6126 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6127 99, -1, -1, 102, 103, -1, 105, 106, -1, -1,
6128 109, -1, 111, 112, 113, 114, 115, 116, 117, 118,
6129 119, -1, -1, -1, -1, 3, 4, 5, -1, 7,
6130 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
6131 18, 19, 20, 21, 22, 23, 24, -1, -1, 148,
6132 149, 150, 30, 31, 32, 33, 34, 35, 36, -1,
6133 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
6134 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6135 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6136 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6137 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6138 -1, -1, -1, 91, 92, -1, -1, -1, -1, -1,
6139 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
6140 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
6141 118, 119, -1, -1, -1, -1, 3, 4, 5, -1,
6142 7, -1, -1, -1, 11, 12, -1, -1, -1, 16,
6143 -1, 18, 19, 20, 21, 22, 23, 24, -1, -1,
6144 148, 149, 150, 30, 31, 32, 33, 34, 35, 36,
6145 -1, -1, 39, -1, -1, -1, -1, -1, -1, 46,
6146 -1, -1, 49, 50, 51, 52, 53, 54, 55, 56,
6147 57, -1, 59, 60, 61, 62, 63, 64, 65, -1,
6148 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6149 77, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6150 -1, -1, -1, -1, 91, 92, -1, -1, -1, -1,
6151 -1, -1, 99, -1, -1, 102, 103, -1, 105, 106,
6152 -1, 108, -1, -1, 111, 112, 113, 114, 115, 116,
6153 117, 118, 119, -1, -1, -1, -1, 3, 4, 5,
6154 -1, 7, -1, -1, -1, 11, 12, -1, -1, -1,
6155 16, -1, 18, 19, 20, 21, 22, 23, 24, -1,
6156 -1, 148, 149, 150, 30, 31, 32, 33, 34, 35,
6157 36, -1, -1, 39, -1, -1, -1, -1, -1, -1,
6158 46, -1, -1, 49, 50, 51, 52, 53, 54, 55,
6159 56, 57, -1, 59, 60, 61, 62, 63, 64, 65,
6160 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6161 76, 77, -1, -1, -1, -1, -1, -1, -1, -1,
6162 -1, -1, -1, -1, -1, 91, 92, -1, -1, -1,
6163 -1, -1, -1, 99, -1, -1, 102, 103, -1, 105,
6164 106, -1, 108, -1, -1, 111, 112, 113, 114, 115,
6165 116, 117, 118, 119, -1, -1, -1, -1, 3, 4,
6166 5, -1, 7, -1, -1, -1, 11, 12, -1, -1,
6167 -1, 16, -1, 18, 19, 20, 21, 22, 23, 24,
6168 -1, -1, 148, 149, 150, 30, 31, 32, 33, 34,
6169 35, 36, -1, -1, 39, -1, -1, -1, -1, -1,
6170 -1, 46, -1, -1, 49, 50, 51, 52, 53, 54,
6171 55, 56, 57, -1, 59, 60, 61, 62, 63, 64,
6172 65, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6173 -1, 76, 77, -1, -1, -1, -1, -1, -1, -1,
6174 -1, -1, -1, -1, -1, -1, 91, 92, -1, -1,
6175 -1, -1, -1, -1, 99, -1, -1, 102, 103, -1,
6176 105, 106, -1, 108, -1, -1, 111, 112, 113, 114,
6177 115, 116, 117, 118, 119, -1, -1, -1, -1, 3,
6178 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6179 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6180 24, -1, -1, 148, 149, 150, 30, 31, 32, 33,
6181 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6182 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6183 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6184 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6185 -1, -1, 76, 77, -1, -1, -1, -1, -1, -1,
6186 -1, -1, -1, -1, -1, -1, -1, 91, 92, -1,
6187 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6188 -1, 105, 106, -1, 108, -1, -1, 111, 112, 113,
6189 114, 115, 116, 117, 118, 119, -1, -1, -1, -1,
6190 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
6191 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
6192 23, 24, -1, -1, 148, 149, 150, 30, 31, 32,
6193 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6194 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
6195 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
6196 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
6197 -1, -1, -1, 76, 77, -1, -1, -1, -1, -1,
6198 -1, -1, -1, -1, -1, -1, -1, -1, 91, 92,
6199 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6200 103, -1, 105, 106, -1, -1, -1, -1, 111, 112,
6201 113, 114, 115, 116, 117, 118, 119, -1, -1, -1,
6202 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
6203 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6204 22, 23, 24, -1, -1, 148, 149, 150, 30, 31,
6205 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6206 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6207 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6208 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6209 -1, -1, -1, -1, 76, 77, -1, -1, -1, -1,
6210 -1, -1, -1, -1, -1, -1, -1, -1, -1, 91,
6211 92, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6212 102, 103, -1, 105, 106, -1, -1, -1, -1, 111,
6213 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
6214 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6215 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6216 21, 22, 23, 24, -1, -1, 148, 149, 150, 30,
6217 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6218 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6219 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
6220 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6221 -1, -1, -1, -1, -1, 76, 77, -1, -1, -1,
6222 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6223 91, 92, -1, -1, -1, -1, -1, -1, 99, -1,
6224 -1, 102, 103, -1, 105, 106, -1, -1, -1, -1,
6225 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
6226 -1, -1, -1, 3, 4, 5, -1, 7, -1, -1,
6227 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
6228 20, 21, 22, 23, 24, -1, -1, 148, 149, 150,
6229 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6230 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
6231 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6232 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
6233 -1, -1, -1, -1, -1, -1, 76, 77, -1, -1,
6234 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6235 -1, 91, 92, -1, -1, -1, -1, -1, -1, 99,
6236 -1, -1, 102, 103, -1, 105, 106, -1, -1, -1,
6237 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
6238 -1, -1, -1, -1, 3, 4, 5, -1, 7, -1,
6239 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6240 19, 20, 21, 22, 23, 24, -1, -1, 148, 149,
6241 150, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6242 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
6243 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6244 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6245 -1, -1, -1, -1, -1, -1, -1, 76, 77, -1,
6246 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6247 -1, -1, 91, 92, -1, -1, -1, -1, -1, -1,
6248 99, -1, -1, 102, 103, -1, 105, 106, -1, -1,
6249 -1, -1, 111, 112, 113, 114, 115, 116, 117, 118,
6250 119, -1, -1, -1, -1, 3, 4, 5, -1, 7,
6251 -1, -1, -1, 11, 12, -1, -1, -1, 16, -1,
6252 18, 19, 20, 21, 22, 23, 24, -1, -1, 148,
6253 149, 150, 30, 31, 32, 33, 34, 35, 36, -1,
6254 -1, 39, -1, -1, -1, -1, -1, -1, 46, -1,
6255 -1, 49, 50, 51, 52, 53, 54, 55, 56, 57,
6256 -1, 59, 60, 61, 62, 63, 64, 65, -1, -1,
6257 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6258 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6259 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6260 -1, 99, -1, -1, 102, 103, -1, 105, 106, -1,
6261 108, -1, -1, 111, 112, 113, 114, 115, 116, 117,
6262 118, 119, -1, -1, 3, 4, 5, -1, 7, -1,
6263 -1, -1, 11, 12, -1, -1, -1, 16, -1, 18,
6264 19, 20, 21, 22, 23, 24, -1, -1, -1, -1,
6265 148, 30, 31, 32, 33, 34, 35, 36, -1, -1,
6266 39, -1, -1, -1, -1, -1, -1, 46, -1, -1,
6267 49, 50, 51, 52, 53, 54, 55, 56, 57, -1,
6268 59, 60, 61, 62, 63, 64, 65, -1, -1, -1,
6269 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6270 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6271 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6272 99, -1, -1, 102, 103, -1, 105, 106, -1, 108,
6273 -1, -1, 111, 112, 113, 114, 115, 116, 117, 118,
6274 119, -1, -1, 3, 4, 5, -1, 7, -1, -1,
6275 -1, 11, 12, -1, -1, -1, 16, -1, 18, 19,
6276 20, 21, 22, 23, 24, -1, -1, -1, -1, 148,
6277 30, 31, 32, 33, 34, 35, 36, -1, -1, 39,
6278 -1, -1, -1, -1, -1, -1, 46, -1, -1, 49,
6279 50, 51, 52, 53, 54, 55, 56, 57, -1, 59,
6280 60, 61, 62, 63, 64, 65, -1, -1, -1, -1,
6281 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6282 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6283 -1, -1, -1, -1, -1, 95, -1, -1, -1, 99,
6284 -1, -1, 102, 103, -1, 105, 106, -1, -1, -1,
6285 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
6286 -1, -1, 3, 4, 5, -1, 7, -1, -1, -1,
6287 11, 12, -1, -1, -1, 16, -1, 18, 19, 20,
6288 21, 22, 23, 24, -1, -1, -1, -1, 148, 30,
6289 31, 32, 33, 34, 35, 36, -1, -1, 39, -1,
6290 -1, -1, -1, -1, -1, 46, -1, -1, 49, 50,
6291 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,
6292 61, 62, 63, 64, 65, -1, -1, -1, -1, -1,
6293 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6294 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6295 -1, -1, -1, -1, -1, -1, -1, -1, 99, -1,
6296 -1, 102, 103, -1, 105, 106, -1, -1, -1, -1,
6297 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
6298 -1, 3, 4, 5, -1, 7, -1, -1, -1, 11,
6299 12, -1, -1, -1, 16, -1, 18, 19, 20, 21,
6300 22, 23, 24, -1, -1, -1, -1, 148, 30, 31,
6301 32, 33, 34, 35, 36, -1, -1, 39, -1, -1,
6302 -1, -1, -1, -1, 46, -1, -1, 49, 50, 51,
6303 52, 53, 54, 55, 56, 57, -1, 59, 60, 61,
6304 62, 63, 64, 65, -1, -1, -1, -1, -1, -1,
6305 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6306 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6307 -1, -1, -1, -1, -1, -1, -1, 99, -1, -1,
6308 102, 103, -1, 105, 106, -1, -1, -1, -1, 111,
6309 112, 113, 114, 115, 116, 117, 118, 119, -1, -1,
6310 3, 4, 5, -1, 7, -1, -1, -1, 11, 12,
6311 -1, -1, -1, 16, -1, 18, 19, 20, 21, 22,
6312 23, 24, -1, -1, -1, -1, 148, 30, 31, 32,
6313 33, 34, 35, 36, -1, -1, 39, -1, -1, -1,
6314 -1, -1, -1, 46, -1, -1, 49, 50, 51, 52,
6315 53, 54, 55, 56, 57, -1, 59, 60, 61, 62,
6316 63, 64, 65, -1, -1, -1, -1, -1, -1, -1,
6317 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6318 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6319 -1, -1, -1, -1, -1, -1, 99, -1, -1, 102,
6320 103, -1, 105, 106, -1, -1, -1, -1, 111, 112,
6321 113, 114, 115, 116, 117, 118, 119, -1, -1, 3,
6322 4, 5, -1, 7, -1, -1, -1, 11, 12, -1,
6323 -1, -1, 16, -1, 18, 19, 20, 21, 22, 23,
6324 24, -1, -1, -1, -1, 148, 30, 31, 32, 33,
6325 34, 35, 36, -1, -1, 39, -1, -1, -1, -1,
6326 -1, -1, 46, -1, -1, 49, 50, 51, 52, 53,
6327 54, 55, 56, 57, -1, 59, 60, 61, 62, 63,
6328 64, 65, -1, -1, -1, -1, -1, -1, -1, -1,
6329 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6330 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6331 -1, -1, -1, -1, -1, 99, -1, -1, 102, 103,
6332 -1, 105, 106, 33, 34, 35, 36, 111, 112, 113,
6333 114, 115, 116, 117, 118, 119, -1, -1, -1, 49,
6334 50, 51, 52, -1, -1, -1, 56, -1, -1, 59,
6335 60, 61, 62, 63, -1, -1, -1, -1, -1, -1,
6336 -1, -1, -1, -1, 148, -1, -1, -1, -1, -1,
6337 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6338 -1, 91, 92, -1, -1, -1, 52, 53, -1, 99,
6339 56, -1, 102, -1, -1, 105, 106, -1, 108, -1,
6340 -1, 111, 112, 113, 114, 115, 116, 117, 118, 119,
6341 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
6342 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
6343 96, 141, -1, -1, -1, -1, -1, -1, 148, -1,
6344 -1, -1, 108, 109, -1, -1, -1, -1, -1, -1,
6345 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6346 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6347 -1, -1, 138, 139, 140, 141, 142, 143, 144, 145,
6348 146, 147, -1, 149, 150, 52, 53, -1, -1, 56,
6349 156, 157, -1, -1, -1, -1, -1, -1, -1, -1,
6350 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6351 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
6352 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
6353 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6354 -1, 108, 109, -1, -1, -1, -1, -1, -1, -1,
6355 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6356 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6357 -1, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6358 147, -1, 149, 150, 52, 53, -1, -1, 56, 156,
6359 157, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6360 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6361 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
6362 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
6363 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6364 108, 109, -1, -1, -1, -1, -1, -1, -1, -1,
6365 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6366 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6367 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
6368 -1, 149, 150, 52, 53, -1, -1, 56, 156, 157,
6369 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6370 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
6371 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
6372 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
6373 -1, -1, -1, -1, -1, -1, -1, -1, -1, 108,
6374 109, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6375 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6376 -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
6377 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
6378 149, 150, 52, 53, -1, -1, 56, 156, 157, -1,
6379 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6380 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
6381 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
6382 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
6383 -1, -1, -1, -1, -1, -1, -1, -1, 108, 109,
6384 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6385 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6386 -1, -1, -1, -1, -1, -1, -1, -1, 138, 139,
6387 140, 141, 142, 143, 144, 145, 146, 147, -1, 149,
6388 150, 52, 53, -1, -1, 56, 156, 157, -1, -1,
6389 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6390 -1, -1, -1, -1, -1, 76, 77, 78, 79, 80,
6391 81, 82, 83, 84, -1, -1, 87, 88, -1, -1,
6392 -1, -1, 93, 94, 95, 96, -1, -1, -1, -1,
6393 -1, -1, -1, -1, -1, -1, -1, 108, 109, -1,
6394 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6395 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6396 -1, -1, -1, -1, -1, -1, -1, 138, 139, 140,
6397 141, 142, 143, 144, 145, 146, 147, -1, 149, 150,
6398 52, 53, -1, -1, 56, 156, 157, -1, -1, -1,
6399 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6400 -1, -1, -1, -1, 76, 77, 78, 79, 80, 81,
6401 82, 83, 84, -1, -1, 87, 88, -1, -1, -1,
6402 -1, 93, 94, 95, 96, -1, -1, -1, -1, -1,
6403 -1, -1, -1, -1, -1, -1, 108, 109, -1, -1,
6404 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6405 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6406 -1, -1, -1, -1, -1, -1, 138, 139, 140, 141,
6407 142, 143, 144, 145, 146, 147, -1, 149, 150, 52,
6408 53, -1, -1, 56, 156, 157, -1, -1, -1, -1,
6409 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6410 -1, -1, -1, 76, 77, 78, 79, 80, 81, 82,
6411 83, 84, -1, -1, 87, 88, -1, -1, -1, -1,
6412 93, 94, 95, 96, -1, -1, -1, -1, -1, -1,
6413 -1, -1, -1, -1, -1, 108, 109, -1, -1, -1,
6414 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6415 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6416 -1, -1, -1, -1, -1, 138, 139, 140, 141, 142,
6417 143, 144, 145, 146, 147, -1, 149, 150, 52, 53,
6418 -1, -1, 56, 156, 157, -1, -1, -1, -1, -1,
6419 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6420 -1, -1, 76, 77, 78, 79, 80, 81, 82, 83,
6421 84, -1, -1, 87, 88, -1, -1, -1, -1, 93,
6422 94, 95, 96, -1, -1, -1, -1, -1, -1, -1,
6423 -1, -1, -1, -1, 108, 109, -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, -1, 138, 139, 140, 141, 142, 143,
6427 144, 145, 146, 147, -1, 149, 150, 52, 53, -1,
6428 -1, 56, 156, 157, -1, -1, -1, -1, -1, -1,
6429 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6430 -1, 76, 77, 78, 79, 80, 81, 82, 83, 84,
6431 -1, -1, 87, 88, -1, -1, -1, -1, 93, 94,
6432 95, 96, -1, -1, -1, -1, -1, -1, -1, -1,
6433 -1, -1, -1, 108, 109, -1, -1, -1, -1, -1,
6434 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6435 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6436 -1, -1, -1, 138, 139, 140, 141, 142, 143, 144,
6437 145, 146, 147, -1, 149, 150, 52, 53, -1, -1,
6438 56, 156, 157, -1, -1, -1, -1, -1, -1, -1,
6439 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6440 76, 77, 78, 79, 80, 81, 82, 83, 84, -1,
6441 -1, 87, 88, -1, -1, -1, -1, 93, 94, 95,
6442 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6443 -1, -1, 108, 109, -1, -1, -1, -1, -1, -1,
6444 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6445 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6446 -1, -1, 138, 139, 140, 141, 142, 143, 144, 145,
6447 146, 147, -1, 149, 150, 52, 53, -1, -1, 56,
6448 156, 157, -1, -1, -1, -1, -1, -1, -1, -1,
6449 -1, -1, -1, -1, -1, -1, -1, -1, -1, 76,
6450 77, 78, 79, 80, 81, 82, 83, 84, -1, -1,
6451 87, 88, -1, -1, -1, -1, 93, 94, 95, 96,
6452 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6453 -1, 108, 109, -1, -1, -1, -1, -1, -1, -1,
6454 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6455 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6456 -1, 138, 139, 140, 141, 142, 143, 144, 145, 146,
6457 147, -1, 149, 150, 52, 53, -1, -1, 56, 156,
6458 157, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6459 -1, -1, -1, -1, -1, -1, -1, -1, 76, 77,
6460 78, 79, 80, 81, 82, 83, 84, -1, -1, 87,
6461 88, -1, -1, -1, -1, 93, 94, 95, 96, -1,
6462 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6463 108, 109, -1, -1, -1, -1, -1, -1, -1, -1,
6464 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6465 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6466 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
6467 -1, 149, 150, 52, 53, -1, -1, 56, 156, 157,
6468 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6469 -1, -1, -1, -1, -1, -1, -1, 76, 77, 78,
6470 79, 80, 81, 82, 83, 84, -1, -1, 87, 88,
6471 -1, -1, -1, -1, 93, 94, 95, 96, -1, -1,
6472 -1, -1, -1, -1, -1, -1, -1, -1, -1, 108,
6473 109, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6474 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6475 -1, -1, -1, -1, -1, -1, -1, -1, -1, 138,
6476 139, 140, 141, 142, 143, 144, 145, 146, 147, -1,
6477 149, 150, 52, 53, -1, -1, 56, 156, 157, -1,
6478 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6479 -1, -1, -1, -1, -1, -1, 76, 77, 78, 79,
6480 80, 81, 82, 83, 84, -1, -1, 87, 88, -1,
6481 -1, -1, -1, 93, 94, 95, 96, -1, -1, -1,
6482 -1, -1, -1, -1, -1, -1, -1, -1, 108, 109,
6483 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6484 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
6485 -1, -1, -1, -1, -1, -1, -1, -1, 138, 139,
6486 140, 141, 142, 143, 144, 145, 146, 147, -1, 149,
6487 150, -1, -1, -1, -1, -1, 156
6492static const yytype_int16 yystos[] =
6494 0, 164, 165, 0, 1, 3, 4, 5, 6, 7,
6495 11, 12, 16, 18, 19, 20, 21, 22, 23, 24,
6496 30, 31, 32, 33, 34, 35, 36, 39, 45, 46,
6497 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
6498 57, 59, 60, 61, 62, 63, 64, 65, 76, 77,
6499 91, 92, 99, 102, 103, 105, 106, 108, 111, 112,
6500 113, 114, 115, 116, 117, 118, 119, 148, 149, 150,
6501 166, 167, 168, 180, 181, 183, 186, 190, 191, 197,
6502 198, 200, 201, 202, 204, 205, 206, 208, 209, 218,
6503 221, 240, 250, 251, 252, 253, 254, 255, 256, 257,
6504 258, 259, 260, 269, 270, 294, 301, 302, 350, 351,
6505 352, 353, 354, 355, 357, 360, 362, 363, 376, 377,
6506 379, 380, 381, 382, 383, 384, 385, 386, 387, 425,
6507 439, 3, 4, 5, 6, 7, 8, 9, 10, 11,
6508 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
6509 22, 23, 24, 25, 26, 30, 31, 32, 33, 34,
6510 35, 36, 37, 38, 39, 45, 46, 47, 48, 49,
6511 50, 51, 52, 53, 56, 76, 77, 78, 79, 80,
6512 81, 82, 83, 84, 87, 88, 93, 94, 95, 96,
6513 108, 109, 138, 139, 140, 141, 142, 143, 144, 145,
6514 146, 147, 149, 150, 156, 212, 213, 214, 216, 217,
6515 376, 179, 179, 179, 39, 58, 99, 102, 108, 109,
6516 110, 113, 149, 190, 191, 201, 209, 218, 225, 231,
6517 234, 236, 237, 250, 383, 384, 386, 387, 423, 424,
6518 231, 157, 228, 232, 233, 157, 162, 432, 54, 213,
6519 432, 152, 169, 170, 222, 439, 21, 22, 32, 200,
6520 218, 250, 269, 270, 218, 218, 218, 56, 47, 102,
6521 175, 176, 177, 181, 203, 204, 439, 175, 226, 236,
6522 423, 439, 225, 422, 423, 439, 46, 99, 148, 155,
6523 190, 191, 208, 240, 250, 383, 384, 387, 295, 212,
6524 366, 378, 382, 366, 367, 368, 161, 356, 356, 356,
6525 356, 381, 197, 218, 218, 160, 162, 431, 437, 438,
6526 179, 40, 41, 42, 43, 44, 37, 38, 157, 390,
6527 391, 392, 393, 439, 390, 392, 26, 152, 228, 232,
6528 261, 303, 28, 262, 300, 135, 155, 102, 108, 205,
6529 135, 25, 78, 79, 80, 81, 82, 83, 84, 85,
6530 86, 87, 88, 89, 90, 95, 96, 101, 136, 138,
6531 139, 140, 141, 142, 143, 144, 145, 146, 147, 220,
6532 220, 69, 97, 98, 154, 429, 241, 1, 186, 193,
6533 193, 194, 195, 194, 193, 431, 438, 99, 202, 209,
6534 250, 275, 383, 384, 387, 52, 56, 95, 99, 210,
6535 211, 250, 383, 384, 387, 211, 33, 34, 35, 36,
6536 49, 50, 51, 52, 56, 157, 189, 212, 385, 420,
6537 231, 157, 232, 98, 429, 430, 303, 353, 100, 100,
6538 155, 225, 56, 225, 225, 225, 366, 390, 390, 135,
6539 101, 155, 235, 439, 98, 154, 429, 100, 100, 155,
6540 235, 92, 230, 231, 236, 397, 423, 439, 231, 186,
6541 432, 433, 186, 54, 64, 65, 182, 157, 222, 223,
6542 166, 98, 429, 100, 178, 203, 158, 431, 438, 433,
6543 242, 159, 155, 432, 436, 155, 436, 153, 436, 432,
6544 56, 381, 205, 207, 391, 155, 98, 154, 429, 292,
6545 66, 120, 122, 123, 369, 120, 120, 369, 67, 369,
6546 161, 358, 364, 361, 365, 78, 160, 168, 152, 193,
6547 193, 193, 193, 222, 224, 186, 186, 52, 54, 55,
6548 56, 57, 58, 78, 92, 102, 108, 109, 110, 142,
6549 145, 280, 338, 394, 396, 397, 398, 399, 400, 401,
6550 402, 403, 404, 407, 408, 409, 410, 411, 414, 415,
6551 416, 417, 418, 135, 248, 396, 135, 249, 304, 305,
6552 107, 199, 306, 307, 306, 222, 203, 155, 208, 155,
6553 222, 188, 218, 218, 218, 218, 218, 218, 218, 218,
6554 218, 218, 218, 218, 218, 187, 218, 218, 218, 218,
6555 218, 218, 218, 218, 218, 218, 218, 52, 53, 56,
6556 216, 228, 425, 426, 427, 230, 236, 52, 53, 56,
6557 216, 228, 426, 171, 175, 13, 271, 437, 271, 175,
6558 193, 175, 431, 244, 56, 98, 154, 429, 25, 193,
6559 52, 56, 210, 139, 388, 98, 154, 429, 247, 421,
6560 69, 98, 428, 231, 433, 52, 56, 426, 222, 222,
6561 215, 125, 135, 135, 222, 225, 225, 234, 237, 423,
6562 52, 56, 230, 52, 56, 222, 222, 424, 433, 155,
6563 433, 155, 433, 158, 213, 223, 218, 153, 56, 426,
6564 426, 222, 170, 433, 177, 158, 423, 155, 207, 52,
6565 56, 230, 52, 56, 293, 371, 370, 120, 359, 369,
6566 66, 120, 120, 359, 66, 120, 218, 175, 181, 102,
6567 108, 276, 277, 278, 279, 399, 155, 419, 439, 433,
6568 281, 282, 155, 395, 225, 155, 419, 34, 52, 155,
6569 395, 52, 155, 395, 52, 39, 184, 201, 218, 219,
6570 171, 437, 184, 219, 171, 153, 292, 304, 10, 68,
6571 268, 292, 268, 108, 197, 225, 236, 238, 239, 433,
6572 207, 155, 183, 185, 197, 209, 218, 225, 227, 239,
6573 250, 387, 313, 313, 432, 100, 100, 152, 228, 232,
6574 432, 434, 155, 100, 100, 228, 229, 232, 439, 268,
6575 222, 175, 13, 175, 268, 27, 272, 437, 268, 25,
6576 243, 314, 17, 265, 309, 52, 56, 230, 52, 56,
6577 194, 246, 389, 245, 52, 56, 210, 230, 171, 186,
6578 192, 433, 229, 232, 185, 218, 227, 185, 227, 213,
6579 225, 39, 235, 100, 100, 434, 100, 100, 397, 423,
6580 186, 227, 436, 205, 434, 179, 372, 375, 382, 387,
6581 356, 369, 356, 356, 356, 153, 278, 399, 155, 433,
6582 155, 418, 225, 135, 394, 401, 414, 416, 404, 408,
6583 410, 402, 411, 416, 400, 402, 432, 44, 44, 268,
6584 268, 293, 153, 293, 225, 155, 44, 207, 44, 135,
6585 44, 98, 154, 429, 311, 311, 137, 222, 222, 304,
6586 199, 159, 100, 222, 222, 199, 8, 263, 346, 439,
6587 14, 15, 266, 267, 273, 274, 439, 274, 196, 313,
6588 309, 268, 108, 225, 308, 268, 434, 175, 437, 193,
6589 171, 434, 268, 433, 189, 303, 300, 432, 222, 222,
6590 100, 222, 222, 433, 155, 433, 157, 297, 396, 373,
6591 433, 276, 279, 277, 155, 395, 155, 395, 419, 155,
6592 395, 155, 395, 395, 184, 219, 224, 224, 179, 179,
6593 108, 225, 224, 224, 222, 224, 52, 56, 230, 52,
6594 56, 312, 312, 218, 185, 227, 185, 227, 153, 222,
6595 185, 227, 185, 227, 225, 239, 347, 439, 174, 266,
6596 175, 193, 268, 268, 311, 268, 225, 155, 271, 268,
6597 171, 437, 268, 222, 396, 296, 175, 155, 155, 402,
6598 416, 402, 402, 218, 218, 140, 287, 288, 439, 287,
6599 225, 181, 181, 218, 434, 52, 56, 58, 91, 92,
6600 99, 102, 105, 106, 108, 113, 141, 294, 318, 319,
6601 320, 321, 324, 328, 329, 330, 333, 334, 335, 336,
6602 337, 338, 339, 340, 341, 342, 343, 344, 345, 350,
6603 351, 354, 355, 357, 360, 362, 363, 384, 408, 318,
6604 185, 227, 101, 348, 439, 9, 264, 349, 439, 172,
6605 271, 312, 108, 225, 175, 268, 289, 432, 29, 124,
6606 298, 0, 121, 374, 277, 395, 155, 395, 395, 395,
6607 280, 283, 286, 289, 400, 402, 403, 405, 406, 412,
6608 413, 416, 418, 175, 171, 341, 341, 56, 210, 312,
6609 319, 326, 327, 328, 329, 332, 434, 312, 432, 435,
6610 52, 366, 52, 102, 382, 101, 155, 140, 155, 155,
6611 319, 89, 90, 98, 154, 157, 322, 323, 52, 99,
6612 209, 250, 383, 384, 387, 271, 175, 175, 175, 317,
6613 318, 225, 274, 309, 310, 158, 160, 299, 175, 402,
6614 419, 289, 140, 281, 155, 284, 285, 99, 250, 155,
6615 419, 155, 284, 155, 284, 319, 434, 319, 330, 332,
6616 434, 155, 222, 153, 125, 193, 342, 326, 330, 324,
6617 331, 332, 113, 335, 339, 341, 341, 210, 312, 434,
6618 312, 433, 326, 329, 333, 326, 329, 333, 56, 98,
6619 154, 429, 175, 173, 273, 271, 40, 41, 52, 290,
6620 291, 398, 171, 153, 395, 140, 250, 283, 413, 416,
6621 56, 98, 405, 410, 402, 412, 416, 402, 433, 155,
6622 155, 325, 433, 155, 155, 366, 433, 433, 433, 434,
6623 434, 434, 52, 56, 230, 52, 56, 346, 349, 315,
6624 193, 193, 155, 432, 268, 155, 284, 155, 284, 52,
6625 56, 419, 155, 284, 155, 284, 284, 331, 333, 331,
6626 330, 332, 434, 175, 291, 402, 416, 402, 402, 155,
6627 435, 274, 314, 316, 284, 155, 284, 284, 284, 402,
6632static const yytype_int16 yyr1[] =
6634 0, 163, 165, 164, 166, 167, 167, 167, 168, 168,
6635 169, 170, 172, 173, 171, 174, 171, 175, 176, 176,
6636 176, 177, 178, 177, 179, 180, 182, 181, 181, 181,
6637 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
6638 181, 181, 181, 181, 181, 183, 183, 183, 183, 183,
6639 183, 183, 183, 183, 183, 184, 184, 184, 185, 185,
6640 185, 186, 186, 186, 186, 186, 187, 186, 188, 186,
6641 186, 189, 190, 192, 191, 193, 193, 195, 196, 194,
6642 197, 197, 198, 198, 199, 200, 201, 201, 201, 201,
6643 201, 201, 201, 201, 201, 201, 201, 201, 202, 202,
6644 203, 203, 204, 204, 204, 204, 204, 204, 204, 204,
6645 204, 204, 205, 205, 206, 206, 207, 207, 208, 208,
6646 208, 208, 208, 208, 208, 208, 208, 209, 209, 209,
6647 209, 209, 209, 209, 209, 209, 210, 210, 211, 211,
6648 211, 212, 212, 212, 212, 212, 213, 213, 214, 215,
6649 214, 216, 216, 216, 216, 216, 216, 216, 216, 216,
6650 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
6651 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
6652 216, 217, 217, 217, 217, 217, 217, 217, 217, 217,
6653 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
6654 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
6655 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
6656 217, 217, 218, 218, 218, 218, 218, 218, 218, 218,
6657 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
6658 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
6659 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
6660 218, 218, 218, 218, 218, 218, 218, 219, 219, 219,
6661 220, 220, 220, 220, 221, 221, 222, 223, 224, 225,
6662 226, 226, 226, 226, 227, 227, 228, 228, 228, 229,
6663 229, 230, 230, 230, 230, 230, 231, 231, 231, 231,
6664 231, 233, 232, 234, 234, 235, 235, 236, 236, 236,
6665 236, 237, 237, 238, 238, 239, 239, 239, 240, 240,
6666 240, 240, 240, 240, 240, 240, 240, 240, 240, 241,
6667 240, 242, 240, 240, 240, 240, 240, 240, 240, 240,
6668 240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
6669 240, 240, 240, 243, 240, 244, 240, 240, 240, 245,
6670 240, 246, 240, 247, 240, 248, 240, 249, 240, 240,
6671 240, 240, 240, 250, 251, 252, 253, 254, 255, 256,
6672 257, 258, 259, 260, 261, 262, 263, 264, 265, 266,
6673 267, 268, 268, 269, 270, 271, 271, 271, 272, 272,
6674 273, 273, 274, 274, 275, 275, 276, 276, 277, 277,
6675 278, 278, 278, 278, 278, 279, 279, 280, 280, 282,
6676 281, 283, 283, 283, 283, 284, 284, 285, 286, 286,
6677 286, 286, 286, 286, 286, 286, 286, 286, 286, 286,
6678 286, 286, 286, 287, 287, 288, 288, 289, 289, 290,
6679 290, 291, 291, 292, 293, 295, 296, 294, 297, 297,
6680 298, 299, 298, 300, 301, 301, 301, 301, 302, 302,
6681 302, 302, 302, 302, 302, 302, 302, 303, 303, 305,
6682 304, 307, 306, 308, 308, 308, 308, 309, 310, 310,
6683 311, 312, 313, 315, 314, 316, 316, 317, 317, 317,
6684 318, 318, 318, 318, 318, 318, 319, 320, 320, 321,
6685 321, 322, 323, 324, 324, 324, 324, 324, 324, 324,
6686 324, 324, 324, 324, 324, 324, 325, 324, 324, 324,
6687 326, 326, 326, 326, 326, 326, 327, 327, 328, 328,
6688 329, 330, 330, 331, 331, 332, 333, 333, 333, 333,
6689 334, 334, 335, 335, 336, 336, 337, 337, 338, 339,
6690 339, 340, 340, 340, 340, 340, 340, 340, 340, 340,
6691 340, 341, 341, 341, 341, 341, 341, 341, 341, 341,
6692 341, 342, 343, 343, 344, 345, 345, 345, 346, 346,
6693 347, 347, 347, 348, 348, 349, 349, 350, 350, 351,
6694 352, 352, 352, 353, 354, 355, 356, 356, 357, 358,
6695 358, 359, 359, 360, 361, 361, 362, 363, 364, 364,
6696 365, 365, 366, 366, 367, 367, 368, 368, 369, 370,
6697 369, 371, 372, 373, 369, 374, 374, 375, 375, 376,
6698 376, 377, 378, 378, 379, 380, 380, 381, 381, 381,
6699 381, 382, 382, 382, 383, 383, 383, 384, 384, 384,
6700 384, 384, 384, 384, 385, 385, 386, 386, 387, 387,
6701 389, 388, 388, 390, 390, 391, 392, 393, 392, 394,
6702 394, 394, 394, 394, 395, 395, 396, 396, 396, 396,
6703 396, 396, 396, 396, 396, 396, 396, 396, 396, 396,
6704 396, 397, 398, 398, 398, 398, 399, 399, 400, 401,
6705 401, 402, 402, 403, 404, 404, 405, 405, 406, 406,
6706 407, 407, 408, 408, 409, 410, 410, 411, 412, 413,
6707 413, 414, 414, 415, 415, 416, 416, 417, 417, 418,
6708 418, 419, 419, 420, 421, 420, 422, 422, 423, 423,
6709 424, 424, 424, 424, 424, 424, 425, 425, 425, 426,
6710 426, 427, 427, 427, 428, 428, 429, 429, 430, 430,
6711 431, 431, 432, 432, 433, 434, 435, 436, 436, 437,
6716static const yytype_int8 yyr2[] =
6718 0, 2, 0, 2, 2, 1, 1, 3, 1, 2,
6719 1, 3, 0, 0, 8, 0, 5, 2, 1, 1,
6720 3, 1, 0, 3, 0, 2, 0, 4, 3, 3,
6721 3, 2, 3, 3, 3, 3, 4, 5, 1, 4,
6722 4, 7, 4, 1, 1, 4, 4, 7, 6, 6,
6723 6, 6, 4, 4, 4, 1, 4, 3, 1, 4,
6724 1, 1, 3, 3, 3, 2, 0, 7, 0, 7,
6725 1, 1, 2, 0, 5, 1, 1, 0, 0, 4,
6726 1, 1, 1, 4, 3, 1, 2, 3, 4, 5,
6727 4, 5, 6, 2, 2, 2, 2, 2, 1, 3,
6728 1, 3, 1, 2, 3, 5, 2, 4, 2, 4,
6729 1, 3, 1, 3, 2, 3, 1, 3, 1, 1,
6730 4, 3, 3, 3, 3, 2, 1, 1, 1, 4,
6731 3, 3, 3, 3, 2, 1, 1, 1, 2, 1,
6732 3, 1, 1, 1, 1, 1, 1, 1, 1, 0,
6733 4, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6734 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6735 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6736 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6737 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6738 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6739 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6740 1, 1, 4, 4, 7, 6, 6, 6, 6, 5,
6741 4, 3, 3, 2, 2, 2, 2, 3, 3, 3,
6742 3, 3, 3, 4, 2, 2, 3, 3, 3, 3,
6743 1, 3, 3, 3, 3, 3, 2, 2, 3, 3,
6744 3, 3, 4, 6, 4, 4, 1, 1, 4, 3,
6745 1, 1, 1, 1, 3, 3, 1, 1, 1, 1,
6746 1, 2, 4, 2, 1, 4, 3, 5, 3, 1,
6747 1, 1, 1, 2, 4, 2, 1, 2, 2, 4,
6748 1, 0, 2, 2, 1, 2, 1, 1, 1, 3,
6749 3, 2, 1, 1, 1, 3, 4, 2, 1, 1,
6750 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
6751 4, 0, 4, 3, 3, 2, 3, 3, 1, 4,
6752 3, 1, 6, 4, 3, 2, 1, 2, 1, 6,
6753 6, 4, 4, 0, 6, 0, 5, 5, 6, 0,
6754 6, 0, 7, 0, 5, 0, 5, 0, 5, 1,
6755 1, 1, 1, 1, 1, 1, 1, 2, 2, 1,
6756 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6757 1, 1, 1, 1, 1, 1, 1, 2, 1, 1,
6758 1, 5, 1, 2, 1, 1, 1, 3, 1, 3,
6759 1, 3, 5, 1, 3, 2, 1, 1, 1, 0,
6760 2, 4, 2, 2, 1, 2, 0, 1, 6, 8,
6761 4, 6, 4, 2, 6, 2, 4, 6, 2, 4,
6762 2, 4, 1, 1, 1, 3, 4, 1, 4, 1,
6763 3, 1, 1, 0, 0, 0, 0, 8, 4, 1,
6764 3, 0, 4, 3, 2, 4, 5, 5, 2, 4,
6765 4, 3, 3, 3, 2, 1, 4, 3, 3, 0,
6766 6, 0, 6, 1, 2, 3, 4, 5, 1, 1,
6767 0, 0, 0, 0, 9, 1, 1, 1, 3, 3,
6768 1, 2, 3, 1, 1, 1, 1, 3, 1, 3,
6769 1, 2, 2, 1, 1, 4, 4, 4, 3, 4,
6770 4, 4, 3, 3, 3, 2, 0, 6, 2, 4,
6771 1, 1, 2, 2, 4, 1, 2, 3, 1, 3,
6772 5, 2, 1, 1, 3, 1, 3, 1, 2, 1,
6773 1, 3, 2, 1, 1, 3, 2, 1, 2, 1,
6774 1, 1, 3, 3, 2, 2, 1, 1, 1, 2,
6775 2, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6776 1, 1, 2, 2, 4, 2, 3, 1, 6, 1,
6777 1, 1, 1, 2, 1, 2, 1, 1, 1, 1,
6778 1, 1, 2, 3, 3, 3, 1, 2, 4, 0,
6779 3, 1, 2, 4, 0, 3, 4, 4, 0, 3,
6780 0, 3, 0, 2, 0, 2, 0, 2, 1, 0,
6781 3, 0, 0, 0, 6, 1, 1, 1, 1, 1,
6782 1, 2, 1, 1, 3, 1, 2, 1, 1, 1,
6783 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6784 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6785 0, 4, 0, 1, 1, 3, 1, 0, 3, 4,
6786 2, 2, 1, 1, 2, 0, 6, 8, 4, 6,
6787 4, 6, 2, 4, 6, 2, 4, 2, 4, 1,
6788 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6789 3, 1, 3, 1, 2, 1, 2, 1, 1, 3,
6790 1, 3, 1, 1, 1, 2, 1, 3, 3, 1,
6791 3, 1, 3, 1, 1, 2, 1, 1, 1, 2,
6792 1, 2, 1, 1, 0, 4, 1, 2, 1, 3,
6793 3, 2, 1, 4, 2, 1, 1, 1, 1, 1,
6794 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6795 0, 1, 0, 1, 2, 2, 2, 1, 1, 1,
6800enum { YYENOMEM = -2 };
6802#define yyerrok (yyerrstatus = 0)
6803#define yyclearin (yychar = YYEMPTY)
6805#define YYACCEPT goto yyacceptlab
6806#define YYABORT goto yyabortlab
6807#define YYERROR goto yyerrorlab
6808#define YYNOMEM goto yyexhaustedlab
6811#define YYRECOVERING() (!!yyerrstatus)
6813#define YYBACKUP(Token, Value) \
6815 if (yychar == YYEMPTY) \
6819 YYPOPSTACK (yylen); \
6825 yyerror (&yylloc, p, YY_("syntax error: cannot back up")); \
6832#define YYERRCODE YYUNDEF
6838#ifndef YYLLOC_DEFAULT
6839# define YYLLOC_DEFAULT(Current, Rhs, N) \
6843 (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
6844 (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
6845 (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
6846 (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
6850 (Current).first_line = (Current).last_line = \
6851 YYRHSLOC (Rhs, 0).last_line; \
6852 (Current).first_column = (Current).last_column = \
6853 YYRHSLOC (Rhs, 0).last_column; \
6858#define YYRHSLOC(Rhs, K) ((Rhs)[K])
6866# define YYFPRINTF fprintf
6869# define YYDPRINTF(Args) \
6880# ifndef YYLOCATION_PRINT
6882# if defined YY_LOCATION_PRINT
6886# define YYLOCATION_PRINT(File, Loc, p) YY_LOCATION_PRINT(File, *(Loc), p)
6888# elif defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
6894yy_location_print_ (
FILE *yyo,
YYLTYPE const *
const yylocp)
6897 int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
6898 if (0 <= yylocp->first_line)
6900 res += YYFPRINTF (yyo,
"%d", yylocp->first_line);
6901 if (0 <= yylocp->first_column)
6902 res += YYFPRINTF (yyo,
".%d", yylocp->first_column);
6904 if (0 <= yylocp->last_line)
6906 if (yylocp->first_line < yylocp->last_line)
6908 res += YYFPRINTF (yyo,
"-%d", yylocp->last_line);
6910 res += YYFPRINTF (yyo,
".%d", end_col);
6912 else if (0 <= end_col && yylocp->first_column < end_col)
6913 res += YYFPRINTF (yyo,
"-%d", end_col);
6918# define YYLOCATION_PRINT yy_location_print_
6922# define YY_LOCATION_PRINT(File, Loc, p) YYLOCATION_PRINT(File, &(Loc), p)
6926# define YYLOCATION_PRINT(File, Loc, p) ((void) 0)
6929# define YY_LOCATION_PRINT YYLOCATION_PRINT
6935# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p) \
6939 YYFPRINTF (stderr, "%s ", Title); \
6940 yy_symbol_print (stderr, \
6941 Kind, Value, Location, p); \
6942 YYFPRINTF (stderr, "\n"); \
6952yy_symbol_value_print (
FILE *yyo,
6955 FILE *yyoutput = yyo;
6957 YY_USE (yylocationp);
6961 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
6964 case YYSYMBOL_tIDENTIFIER:
6968 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6970 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
6980 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6982 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
6988 case YYSYMBOL_tGVAR:
6992 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
6994 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
7000 case YYSYMBOL_tIVAR:
7004 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7006 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
7012 case YYSYMBOL_tCONSTANT:
7016 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7018 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
7024 case YYSYMBOL_tCVAR:
7028 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7030 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
7036 case YYSYMBOL_tLABEL:
7040 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7042 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
7048 case YYSYMBOL_tINTEGER:
7052 rb_parser_printf(p,
"%+"PRIsVALUE, RNODE_LIT(((*yyvaluep).node))->nd_lit);
7054 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
7060 case YYSYMBOL_tFLOAT:
7064 rb_parser_printf(p,
"%+"PRIsVALUE, RNODE_LIT(((*yyvaluep).node))->nd_lit);
7066 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
7072 case YYSYMBOL_tRATIONAL:
7076 rb_parser_printf(p,
"%+"PRIsVALUE, RNODE_LIT(((*yyvaluep).node))->nd_lit);
7078 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
7084 case YYSYMBOL_tIMAGINARY:
7088 rb_parser_printf(p,
"%+"PRIsVALUE, RNODE_LIT(((*yyvaluep).node))->nd_lit);
7090 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
7096 case YYSYMBOL_tCHAR:
7100 rb_parser_printf(p,
"%+"PRIsVALUE, RNODE_LIT(((*yyvaluep).node))->nd_lit);
7102 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
7108 case YYSYMBOL_tNTH_REF:
7112 rb_parser_printf(p,
"$%ld", RNODE_NTH_REF(((*yyvaluep).node))->nd_nth);
7114 rb_parser_printf(p,
"%"PRIsVALUE, ((*yyvaluep).node));
7120 case YYSYMBOL_tBACK_REF:
7124 rb_parser_printf(p,
"$%c", (
int)RNODE_BACK_REF(((*yyvaluep).node))->nd_nth);
7126 rb_parser_printf(p,
"%"PRIsVALUE, ((*yyvaluep).node));
7132 case YYSYMBOL_tSTRING_CONTENT:
7136 rb_parser_printf(p,
"%+"PRIsVALUE, RNODE_LIT(((*yyvaluep).node))->nd_lit);
7138 rb_parser_printf(p,
"%+"PRIsVALUE, get_value(((*yyvaluep).node)));
7144 case YYSYMBOL_tOP_ASGN:
7148 rb_parser_printf(p,
"%"PRIsVALUE, rb_id2str(((*yyvaluep).id)));
7150 rb_parser_printf(p,
"%"PRIsVALUE, RNODE_RIPPER(((*yyvaluep).id))->nd_rval);
7156 case YYSYMBOL_top_compstmt:
7160 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7161 rb_parser_printf(p,
"NODE_SPECIAL");
7163 else if (((*yyvaluep).node)) {
7164 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7172 case YYSYMBOL_top_stmts:
7176 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7177 rb_parser_printf(p,
"NODE_SPECIAL");
7179 else if (((*yyvaluep).node)) {
7180 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7188 case YYSYMBOL_top_stmt:
7192 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7193 rb_parser_printf(p,
"NODE_SPECIAL");
7195 else if (((*yyvaluep).node)) {
7196 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7204 case YYSYMBOL_begin_block:
7208 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7209 rb_parser_printf(p,
"NODE_SPECIAL");
7211 else if (((*yyvaluep).node)) {
7212 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7220 case YYSYMBOL_bodystmt:
7224 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7225 rb_parser_printf(p,
"NODE_SPECIAL");
7227 else if (((*yyvaluep).node)) {
7228 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7236 case YYSYMBOL_compstmt:
7240 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7241 rb_parser_printf(p,
"NODE_SPECIAL");
7243 else if (((*yyvaluep).node)) {
7244 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7252 case YYSYMBOL_stmts:
7256 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7257 rb_parser_printf(p,
"NODE_SPECIAL");
7259 else if (((*yyvaluep).node)) {
7260 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7268 case YYSYMBOL_stmt_or_begin:
7272 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7273 rb_parser_printf(p,
"NODE_SPECIAL");
7275 else if (((*yyvaluep).node)) {
7276 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7288 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7289 rb_parser_printf(p,
"NODE_SPECIAL");
7291 else if (((*yyvaluep).node)) {
7292 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7300 case YYSYMBOL_command_asgn:
7304 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7305 rb_parser_printf(p,
"NODE_SPECIAL");
7307 else if (((*yyvaluep).node)) {
7308 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7316 case YYSYMBOL_endless_command:
7320 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7321 rb_parser_printf(p,
"NODE_SPECIAL");
7323 else if (((*yyvaluep).node)) {
7324 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7332 case YYSYMBOL_command_rhs:
7336 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7337 rb_parser_printf(p,
"NODE_SPECIAL");
7339 else if (((*yyvaluep).node)) {
7340 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7352 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7353 rb_parser_printf(p,
"NODE_SPECIAL");
7355 else if (((*yyvaluep).node)) {
7356 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7364 case YYSYMBOL_expr_value:
7368 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7369 rb_parser_printf(p,
"NODE_SPECIAL");
7371 else if (((*yyvaluep).node)) {
7372 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7380 case YYSYMBOL_expr_value_do:
7384 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7385 rb_parser_printf(p,
"NODE_SPECIAL");
7387 else if (((*yyvaluep).node)) {
7388 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7396 case YYSYMBOL_command_call:
7400 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7401 rb_parser_printf(p,
"NODE_SPECIAL");
7403 else if (((*yyvaluep).node)) {
7404 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7412 case YYSYMBOL_block_command:
7416 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7417 rb_parser_printf(p,
"NODE_SPECIAL");
7419 else if (((*yyvaluep).node)) {
7420 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7428 case YYSYMBOL_cmd_brace_block:
7432 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7433 rb_parser_printf(p,
"NODE_SPECIAL");
7435 else if (((*yyvaluep).node)) {
7436 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7444 case YYSYMBOL_fcall:
7448 if ((
NODE *)((*yyvaluep).node_fcall) == (
NODE *)-1) {
7449 rb_parser_printf(p,
"NODE_SPECIAL");
7451 else if (((*yyvaluep).node_fcall)) {
7452 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_fcall)))));
7460 case YYSYMBOL_command:
7464 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7465 rb_parser_printf(p,
"NODE_SPECIAL");
7467 else if (((*yyvaluep).node)) {
7468 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7476 case YYSYMBOL_mlhs_item:
7480 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7481 rb_parser_printf(p,
"NODE_SPECIAL");
7483 else if (((*yyvaluep).node)) {
7484 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7492 case YYSYMBOL_mlhs_head:
7496 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7497 rb_parser_printf(p,
"NODE_SPECIAL");
7499 else if (((*yyvaluep).node)) {
7500 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7508 case YYSYMBOL_mlhs_post:
7512 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7513 rb_parser_printf(p,
"NODE_SPECIAL");
7515 else if (((*yyvaluep).node)) {
7516 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7524 case YYSYMBOL_mlhs_node:
7528 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7529 rb_parser_printf(p,
"NODE_SPECIAL");
7531 else if (((*yyvaluep).node)) {
7532 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7544 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7545 rb_parser_printf(p,
"NODE_SPECIAL");
7547 else if (((*yyvaluep).node)) {
7548 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7556 case YYSYMBOL_cpath:
7560 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7561 rb_parser_printf(p,
"NODE_SPECIAL");
7563 else if (((*yyvaluep).node)) {
7564 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7572 case YYSYMBOL_fitem:
7576 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7577 rb_parser_printf(p,
"NODE_SPECIAL");
7579 else if (((*yyvaluep).node)) {
7580 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7588 case YYSYMBOL_undef_list:
7592 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7593 rb_parser_printf(p,
"NODE_SPECIAL");
7595 else if (((*yyvaluep).node)) {
7596 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7608 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7609 rb_parser_printf(p,
"NODE_SPECIAL");
7611 else if (((*yyvaluep).node)) {
7612 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7620 case YYSYMBOL_endless_arg:
7624 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7625 rb_parser_printf(p,
"NODE_SPECIAL");
7627 else if (((*yyvaluep).node)) {
7628 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7636 case YYSYMBOL_rel_expr:
7640 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7641 rb_parser_printf(p,
"NODE_SPECIAL");
7643 else if (((*yyvaluep).node)) {
7644 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7652 case YYSYMBOL_arg_value:
7656 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7657 rb_parser_printf(p,
"NODE_SPECIAL");
7659 else if (((*yyvaluep).node)) {
7660 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7668 case YYSYMBOL_aref_args:
7672 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7673 rb_parser_printf(p,
"NODE_SPECIAL");
7675 else if (((*yyvaluep).node)) {
7676 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7684 case YYSYMBOL_arg_rhs:
7688 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7689 rb_parser_printf(p,
"NODE_SPECIAL");
7691 else if (((*yyvaluep).node)) {
7692 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7700 case YYSYMBOL_paren_args:
7704 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7705 rb_parser_printf(p,
"NODE_SPECIAL");
7707 else if (((*yyvaluep).node)) {
7708 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7716 case YYSYMBOL_opt_paren_args:
7720 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7721 rb_parser_printf(p,
"NODE_SPECIAL");
7723 else if (((*yyvaluep).node)) {
7724 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7732 case YYSYMBOL_opt_call_args:
7736 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7737 rb_parser_printf(p,
"NODE_SPECIAL");
7739 else if (((*yyvaluep).node)) {
7740 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7748 case YYSYMBOL_call_args:
7752 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7753 rb_parser_printf(p,
"NODE_SPECIAL");
7755 else if (((*yyvaluep).node)) {
7756 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7764 case YYSYMBOL_command_args:
7768 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7769 rb_parser_printf(p,
"NODE_SPECIAL");
7771 else if (((*yyvaluep).node)) {
7772 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7780 case YYSYMBOL_block_arg:
7784 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
7785 rb_parser_printf(p,
"NODE_SPECIAL");
7787 else if (((*yyvaluep).node_block_pass)) {
7788 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
7796 case YYSYMBOL_opt_block_arg:
7800 if ((
NODE *)((*yyvaluep).node_block_pass) == (
NODE *)-1) {
7801 rb_parser_printf(p,
"NODE_SPECIAL");
7803 else if (((*yyvaluep).node_block_pass)) {
7804 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_block_pass)))));
7816 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7817 rb_parser_printf(p,
"NODE_SPECIAL");
7819 else if (((*yyvaluep).node)) {
7820 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7828 case YYSYMBOL_arg_splat:
7832 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7833 rb_parser_printf(p,
"NODE_SPECIAL");
7835 else if (((*yyvaluep).node)) {
7836 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7844 case YYSYMBOL_mrhs_arg:
7848 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7849 rb_parser_printf(p,
"NODE_SPECIAL");
7851 else if (((*yyvaluep).node)) {
7852 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7864 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7865 rb_parser_printf(p,
"NODE_SPECIAL");
7867 else if (((*yyvaluep).node)) {
7868 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7876 case YYSYMBOL_primary:
7880 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7881 rb_parser_printf(p,
"NODE_SPECIAL");
7883 else if (((*yyvaluep).node)) {
7884 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7892 case YYSYMBOL_primary_value:
7896 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7897 rb_parser_printf(p,
"NODE_SPECIAL");
7899 else if (((*yyvaluep).node)) {
7900 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7908 case YYSYMBOL_if_tail:
7912 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7913 rb_parser_printf(p,
"NODE_SPECIAL");
7915 else if (((*yyvaluep).node)) {
7916 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7924 case YYSYMBOL_opt_else:
7928 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7929 rb_parser_printf(p,
"NODE_SPECIAL");
7931 else if (((*yyvaluep).node)) {
7932 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7940 case YYSYMBOL_for_var:
7944 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7945 rb_parser_printf(p,
"NODE_SPECIAL");
7947 else if (((*yyvaluep).node)) {
7948 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7956 case YYSYMBOL_f_marg:
7960 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7961 rb_parser_printf(p,
"NODE_SPECIAL");
7963 else if (((*yyvaluep).node)) {
7964 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7972 case YYSYMBOL_f_marg_list:
7976 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7977 rb_parser_printf(p,
"NODE_SPECIAL");
7979 else if (((*yyvaluep).node)) {
7980 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
7988 case YYSYMBOL_f_rest_marg:
7992 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
7993 rb_parser_printf(p,
"NODE_SPECIAL");
7995 else if (((*yyvaluep).node)) {
7996 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8004 case YYSYMBOL_block_args_tail:
8008 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
8009 rb_parser_printf(p,
"NODE_SPECIAL");
8011 else if (((*yyvaluep).node_args)) {
8012 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
8020 case YYSYMBOL_opt_block_args_tail:
8024 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
8025 rb_parser_printf(p,
"NODE_SPECIAL");
8027 else if (((*yyvaluep).node_args)) {
8028 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
8036 case YYSYMBOL_block_param:
8040 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
8041 rb_parser_printf(p,
"NODE_SPECIAL");
8043 else if (((*yyvaluep).node_args)) {
8044 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
8052 case YYSYMBOL_opt_block_param:
8056 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
8057 rb_parser_printf(p,
"NODE_SPECIAL");
8059 else if (((*yyvaluep).node_args)) {
8060 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
8068 case YYSYMBOL_block_param_def:
8072 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
8073 rb_parser_printf(p,
"NODE_SPECIAL");
8075 else if (((*yyvaluep).node_args)) {
8076 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
8084 case YYSYMBOL_opt_bv_decl:
8088 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8089 rb_parser_printf(p,
"NODE_SPECIAL");
8091 else if (((*yyvaluep).node)) {
8092 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8100 case YYSYMBOL_bv_decls:
8104 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8105 rb_parser_printf(p,
"NODE_SPECIAL");
8107 else if (((*yyvaluep).node)) {
8108 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8120 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8121 rb_parser_printf(p,
"NODE_SPECIAL");
8123 else if (((*yyvaluep).node)) {
8124 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8132 case YYSYMBOL_numparam:
8136 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8137 rb_parser_printf(p,
"NODE_SPECIAL");
8139 else if (((*yyvaluep).node)) {
8140 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8148 case YYSYMBOL_lambda:
8152 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8153 rb_parser_printf(p,
"NODE_SPECIAL");
8155 else if (((*yyvaluep).node)) {
8156 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8164 case YYSYMBOL_f_larglist:
8168 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
8169 rb_parser_printf(p,
"NODE_SPECIAL");
8171 else if (((*yyvaluep).node_args)) {
8172 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
8180 case YYSYMBOL_lambda_body:
8184 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8185 rb_parser_printf(p,
"NODE_SPECIAL");
8187 else if (((*yyvaluep).node)) {
8188 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8196 case YYSYMBOL_do_block:
8200 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8201 rb_parser_printf(p,
"NODE_SPECIAL");
8203 else if (((*yyvaluep).node)) {
8204 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8212 case YYSYMBOL_block_call:
8216 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8217 rb_parser_printf(p,
"NODE_SPECIAL");
8219 else if (((*yyvaluep).node)) {
8220 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8228 case YYSYMBOL_method_call:
8232 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8233 rb_parser_printf(p,
"NODE_SPECIAL");
8235 else if (((*yyvaluep).node)) {
8236 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8244 case YYSYMBOL_brace_block:
8248 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8249 rb_parser_printf(p,
"NODE_SPECIAL");
8251 else if (((*yyvaluep).node)) {
8252 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8260 case YYSYMBOL_brace_body:
8264 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8265 rb_parser_printf(p,
"NODE_SPECIAL");
8267 else if (((*yyvaluep).node)) {
8268 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8276 case YYSYMBOL_do_body:
8280 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8281 rb_parser_printf(p,
"NODE_SPECIAL");
8283 else if (((*yyvaluep).node)) {
8284 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8292 case YYSYMBOL_case_args:
8296 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8297 rb_parser_printf(p,
"NODE_SPECIAL");
8299 else if (((*yyvaluep).node)) {
8300 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8308 case YYSYMBOL_case_body:
8312 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8313 rb_parser_printf(p,
"NODE_SPECIAL");
8315 else if (((*yyvaluep).node)) {
8316 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8324 case YYSYMBOL_cases:
8328 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8329 rb_parser_printf(p,
"NODE_SPECIAL");
8331 else if (((*yyvaluep).node)) {
8332 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8340 case YYSYMBOL_p_case_body:
8344 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8345 rb_parser_printf(p,
"NODE_SPECIAL");
8347 else if (((*yyvaluep).node)) {
8348 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8356 case YYSYMBOL_p_cases:
8360 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8361 rb_parser_printf(p,
"NODE_SPECIAL");
8363 else if (((*yyvaluep).node)) {
8364 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8372 case YYSYMBOL_p_top_expr:
8376 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8377 rb_parser_printf(p,
"NODE_SPECIAL");
8379 else if (((*yyvaluep).node)) {
8380 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8388 case YYSYMBOL_p_top_expr_body:
8392 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8393 rb_parser_printf(p,
"NODE_SPECIAL");
8395 else if (((*yyvaluep).node)) {
8396 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8404 case YYSYMBOL_p_expr:
8408 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8409 rb_parser_printf(p,
"NODE_SPECIAL");
8411 else if (((*yyvaluep).node)) {
8412 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8424 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8425 rb_parser_printf(p,
"NODE_SPECIAL");
8427 else if (((*yyvaluep).node)) {
8428 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8436 case YYSYMBOL_p_alt:
8440 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8441 rb_parser_printf(p,
"NODE_SPECIAL");
8443 else if (((*yyvaluep).node)) {
8444 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8452 case YYSYMBOL_p_expr_basic:
8456 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8457 rb_parser_printf(p,
"NODE_SPECIAL");
8459 else if (((*yyvaluep).node)) {
8460 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8468 case YYSYMBOL_p_args:
8472 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8473 rb_parser_printf(p,
"NODE_SPECIAL");
8475 else if (((*yyvaluep).node)) {
8476 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8484 case YYSYMBOL_p_args_head:
8488 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8489 rb_parser_printf(p,
"NODE_SPECIAL");
8491 else if (((*yyvaluep).node)) {
8492 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8500 case YYSYMBOL_p_args_tail:
8504 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8505 rb_parser_printf(p,
"NODE_SPECIAL");
8507 else if (((*yyvaluep).node)) {
8508 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8516 case YYSYMBOL_p_find:
8520 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8521 rb_parser_printf(p,
"NODE_SPECIAL");
8523 else if (((*yyvaluep).node)) {
8524 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8532 case YYSYMBOL_p_rest:
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)))));
8548 case YYSYMBOL_p_args_post:
8552 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8553 rb_parser_printf(p,
"NODE_SPECIAL");
8555 else if (((*yyvaluep).node)) {
8556 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8564 case YYSYMBOL_p_arg:
8568 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8569 rb_parser_printf(p,
"NODE_SPECIAL");
8571 else if (((*yyvaluep).node)) {
8572 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8580 case YYSYMBOL_p_kwargs:
8584 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8585 rb_parser_printf(p,
"NODE_SPECIAL");
8587 else if (((*yyvaluep).node)) {
8588 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8596 case YYSYMBOL_p_kwarg:
8600 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8601 rb_parser_printf(p,
"NODE_SPECIAL");
8603 else if (((*yyvaluep).node)) {
8604 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8616 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8617 rb_parser_printf(p,
"NODE_SPECIAL");
8619 else if (((*yyvaluep).node)) {
8620 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8628 case YYSYMBOL_p_value:
8632 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8633 rb_parser_printf(p,
"NODE_SPECIAL");
8635 else if (((*yyvaluep).node)) {
8636 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8644 case YYSYMBOL_p_primitive:
8648 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8649 rb_parser_printf(p,
"NODE_SPECIAL");
8651 else if (((*yyvaluep).node)) {
8652 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8660 case YYSYMBOL_p_variable:
8664 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8665 rb_parser_printf(p,
"NODE_SPECIAL");
8667 else if (((*yyvaluep).node)) {
8668 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8676 case YYSYMBOL_p_var_ref:
8680 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8681 rb_parser_printf(p,
"NODE_SPECIAL");
8683 else if (((*yyvaluep).node)) {
8684 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8692 case YYSYMBOL_p_expr_ref:
8696 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8697 rb_parser_printf(p,
"NODE_SPECIAL");
8699 else if (((*yyvaluep).node)) {
8700 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8708 case YYSYMBOL_p_const:
8712 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8713 rb_parser_printf(p,
"NODE_SPECIAL");
8715 else if (((*yyvaluep).node)) {
8716 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8724 case YYSYMBOL_opt_rescue:
8728 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8729 rb_parser_printf(p,
"NODE_SPECIAL");
8731 else if (((*yyvaluep).node)) {
8732 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8740 case YYSYMBOL_exc_list:
8744 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8745 rb_parser_printf(p,
"NODE_SPECIAL");
8747 else if (((*yyvaluep).node)) {
8748 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8756 case YYSYMBOL_exc_var:
8760 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8761 rb_parser_printf(p,
"NODE_SPECIAL");
8763 else if (((*yyvaluep).node)) {
8764 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8772 case YYSYMBOL_opt_ensure:
8776 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8777 rb_parser_printf(p,
"NODE_SPECIAL");
8779 else if (((*yyvaluep).node)) {
8780 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8788 case YYSYMBOL_literal:
8792 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8793 rb_parser_printf(p,
"NODE_SPECIAL");
8795 else if (((*yyvaluep).node)) {
8796 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8804 case YYSYMBOL_strings:
8808 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8809 rb_parser_printf(p,
"NODE_SPECIAL");
8811 else if (((*yyvaluep).node)) {
8812 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8820 case YYSYMBOL_string:
8824 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8825 rb_parser_printf(p,
"NODE_SPECIAL");
8827 else if (((*yyvaluep).node)) {
8828 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8836 case YYSYMBOL_string1:
8840 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8841 rb_parser_printf(p,
"NODE_SPECIAL");
8843 else if (((*yyvaluep).node)) {
8844 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8852 case YYSYMBOL_xstring:
8856 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8857 rb_parser_printf(p,
"NODE_SPECIAL");
8859 else if (((*yyvaluep).node)) {
8860 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8868 case YYSYMBOL_regexp:
8872 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8873 rb_parser_printf(p,
"NODE_SPECIAL");
8875 else if (((*yyvaluep).node)) {
8876 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8884 case YYSYMBOL_words:
8888 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8889 rb_parser_printf(p,
"NODE_SPECIAL");
8891 else if (((*yyvaluep).node)) {
8892 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8900 case YYSYMBOL_word_list:
8904 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8905 rb_parser_printf(p,
"NODE_SPECIAL");
8907 else if (((*yyvaluep).node)) {
8908 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8920 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8921 rb_parser_printf(p,
"NODE_SPECIAL");
8923 else if (((*yyvaluep).node)) {
8924 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8932 case YYSYMBOL_symbols:
8936 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8937 rb_parser_printf(p,
"NODE_SPECIAL");
8939 else if (((*yyvaluep).node)) {
8940 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8948 case YYSYMBOL_symbol_list:
8952 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8953 rb_parser_printf(p,
"NODE_SPECIAL");
8955 else if (((*yyvaluep).node)) {
8956 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8964 case YYSYMBOL_qwords:
8968 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8969 rb_parser_printf(p,
"NODE_SPECIAL");
8971 else if (((*yyvaluep).node)) {
8972 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8980 case YYSYMBOL_qsymbols:
8984 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
8985 rb_parser_printf(p,
"NODE_SPECIAL");
8987 else if (((*yyvaluep).node)) {
8988 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
8996 case YYSYMBOL_qword_list:
9000 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9001 rb_parser_printf(p,
"NODE_SPECIAL");
9003 else if (((*yyvaluep).node)) {
9004 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9012 case YYSYMBOL_qsym_list:
9016 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9017 rb_parser_printf(p,
"NODE_SPECIAL");
9019 else if (((*yyvaluep).node)) {
9020 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9028 case YYSYMBOL_string_contents:
9032 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9033 rb_parser_printf(p,
"NODE_SPECIAL");
9035 else if (((*yyvaluep).node)) {
9036 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9044 case YYSYMBOL_xstring_contents:
9048 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9049 rb_parser_printf(p,
"NODE_SPECIAL");
9051 else if (((*yyvaluep).node)) {
9052 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9060 case YYSYMBOL_regexp_contents:
9064 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9065 rb_parser_printf(p,
"NODE_SPECIAL");
9067 else if (((*yyvaluep).node)) {
9068 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9076 case YYSYMBOL_string_content:
9080 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9081 rb_parser_printf(p,
"NODE_SPECIAL");
9083 else if (((*yyvaluep).node)) {
9084 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9092 case YYSYMBOL_string_dvar:
9096 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9097 rb_parser_printf(p,
"NODE_SPECIAL");
9099 else if (((*yyvaluep).node)) {
9100 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9108 case YYSYMBOL_symbol:
9112 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9113 rb_parser_printf(p,
"NODE_SPECIAL");
9115 else if (((*yyvaluep).node)) {
9116 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9128 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9129 rb_parser_printf(p,
"NODE_SPECIAL");
9131 else if (((*yyvaluep).node)) {
9132 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9144 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9145 rb_parser_printf(p,
"NODE_SPECIAL");
9147 else if (((*yyvaluep).node)) {
9148 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9156 case YYSYMBOL_numeric:
9160 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9161 rb_parser_printf(p,
"NODE_SPECIAL");
9163 else if (((*yyvaluep).node)) {
9164 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9172 case YYSYMBOL_simple_numeric:
9176 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9177 rb_parser_printf(p,
"NODE_SPECIAL");
9179 else if (((*yyvaluep).node)) {
9180 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9188 case YYSYMBOL_var_ref:
9192 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9193 rb_parser_printf(p,
"NODE_SPECIAL");
9195 else if (((*yyvaluep).node)) {
9196 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9204 case YYSYMBOL_var_lhs:
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)))));
9220 case YYSYMBOL_backref:
9224 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9225 rb_parser_printf(p,
"NODE_SPECIAL");
9227 else if (((*yyvaluep).node)) {
9228 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9236 case YYSYMBOL_superclass:
9240 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9241 rb_parser_printf(p,
"NODE_SPECIAL");
9243 else if (((*yyvaluep).node)) {
9244 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9252 case YYSYMBOL_f_opt_paren_args:
9256 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9257 rb_parser_printf(p,
"NODE_SPECIAL");
9259 else if (((*yyvaluep).node_args)) {
9260 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9268 case YYSYMBOL_f_paren_args:
9272 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9273 rb_parser_printf(p,
"NODE_SPECIAL");
9275 else if (((*yyvaluep).node_args)) {
9276 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9284 case YYSYMBOL_f_arglist:
9288 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9289 rb_parser_printf(p,
"NODE_SPECIAL");
9291 else if (((*yyvaluep).node_args)) {
9292 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9300 case YYSYMBOL_args_tail:
9304 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9305 rb_parser_printf(p,
"NODE_SPECIAL");
9307 else if (((*yyvaluep).node_args)) {
9308 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9316 case YYSYMBOL_opt_args_tail:
9320 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9321 rb_parser_printf(p,
"NODE_SPECIAL");
9323 else if (((*yyvaluep).node_args)) {
9324 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9332 case YYSYMBOL_f_args:
9336 if ((
NODE *)((*yyvaluep).node_args) == (
NODE *)-1) {
9337 rb_parser_printf(p,
"NODE_SPECIAL");
9339 else if (((*yyvaluep).node_args)) {
9340 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args)))));
9348 case YYSYMBOL_f_arg_item:
9352 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
9353 rb_parser_printf(p,
"NODE_SPECIAL");
9355 else if (((*yyvaluep).node_args_aux)) {
9356 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
9364 case YYSYMBOL_f_arg:
9368 if ((
NODE *)((*yyvaluep).node_args_aux) == (
NODE *)-1) {
9369 rb_parser_printf(p,
"NODE_SPECIAL");
9371 else if (((*yyvaluep).node_args_aux)) {
9372 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_args_aux)))));
9384 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9385 rb_parser_printf(p,
"NODE_SPECIAL");
9387 else if (((*yyvaluep).node_kw_arg)) {
9388 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9396 case YYSYMBOL_f_block_kw:
9400 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9401 rb_parser_printf(p,
"NODE_SPECIAL");
9403 else if (((*yyvaluep).node_kw_arg)) {
9404 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9412 case YYSYMBOL_f_block_kwarg:
9416 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9417 rb_parser_printf(p,
"NODE_SPECIAL");
9419 else if (((*yyvaluep).node_kw_arg)) {
9420 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9428 case YYSYMBOL_f_kwarg:
9432 if ((
NODE *)((*yyvaluep).node_kw_arg) == (
NODE *)-1) {
9433 rb_parser_printf(p,
"NODE_SPECIAL");
9435 else if (((*yyvaluep).node_kw_arg)) {
9436 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_kw_arg)))));
9444 case YYSYMBOL_f_opt:
9448 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9449 rb_parser_printf(p,
"NODE_SPECIAL");
9451 else if (((*yyvaluep).node_opt_arg)) {
9452 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9460 case YYSYMBOL_f_block_opt:
9464 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9465 rb_parser_printf(p,
"NODE_SPECIAL");
9467 else if (((*yyvaluep).node_opt_arg)) {
9468 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9476 case YYSYMBOL_f_block_optarg:
9480 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9481 rb_parser_printf(p,
"NODE_SPECIAL");
9483 else if (((*yyvaluep).node_opt_arg)) {
9484 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9492 case YYSYMBOL_f_optarg:
9496 if ((
NODE *)((*yyvaluep).node_opt_arg) == (
NODE *)-1) {
9497 rb_parser_printf(p,
"NODE_SPECIAL");
9499 else if (((*yyvaluep).node_opt_arg)) {
9500 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node_opt_arg)))));
9508 case YYSYMBOL_singleton:
9512 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9513 rb_parser_printf(p,
"NODE_SPECIAL");
9515 else if (((*yyvaluep).node)) {
9516 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9524 case YYSYMBOL_assoc_list:
9528 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9529 rb_parser_printf(p,
"NODE_SPECIAL");
9531 else if (((*yyvaluep).node)) {
9532 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9540 case YYSYMBOL_assocs:
9544 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9545 rb_parser_printf(p,
"NODE_SPECIAL");
9547 else if (((*yyvaluep).node)) {
9548 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9556 case YYSYMBOL_assoc:
9560 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9561 rb_parser_printf(p,
"NODE_SPECIAL");
9563 else if (((*yyvaluep).node)) {
9564 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9576 if ((
NODE *)((*yyvaluep).node) == (
NODE *)-1) {
9577 rb_parser_printf(p,
"NODE_SPECIAL");
9579 else if (((*yyvaluep).node)) {
9580 rb_parser_printf(p,
"%s", parser_node_name(nd_type(RNODE(((*yyvaluep).node)))));
9591 YY_IGNORE_MAYBE_UNINITIALIZED_END
9600yy_symbol_print (
FILE *yyo,
9603 YYFPRINTF (yyo,
"%s %s (",
9604 yykind < YYNTOKENS ?
"token" :
"nterm", yysymbol_name (yykind));
9606 YYLOCATION_PRINT (yyo, yylocationp, p);
9607 YYFPRINTF (yyo,
": ");
9608 yy_symbol_value_print (yyo, yykind, yyvaluep, yylocationp, p);
9609 YYFPRINTF (yyo,
")");
9618yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop,
struct parser_params *p)
9620 YYFPRINTF (stderr,
"Stack now");
9621 for (; yybottom <= yytop; yybottom++)
9623 int yybot = *yybottom;
9624 YYFPRINTF (stderr,
" %d", yybot);
9626 YYFPRINTF (stderr,
"\n");
9629# define YY_STACK_PRINT(Bottom, Top, p) \
9632 yy_stack_print ((Bottom), (Top), p); \
9641yy_reduce_print (yy_state_t *yyssp,
YYSTYPE *yyvsp,
YYLTYPE *yylsp,
9644 int yylno = yyrline[yyrule];
9645 int yynrhs = yyr2[yyrule];
9647 YYFPRINTF (stderr,
"Reducing stack by rule %d (line %d):\n",
9650 for (yyi = 0; yyi < yynrhs; yyi++)
9652 YYFPRINTF (stderr,
" $%d = ", yyi + 1);
9653 yy_symbol_print (stderr,
9654 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
9655 &yyvsp[(yyi + 1) - (yynrhs)],
9656 &(yylsp[(yyi + 1) - (yynrhs)]), p);
9657 YYFPRINTF (stderr,
"\n");
9661# define YY_REDUCE_PRINT(Rule, p) \
9664 yy_reduce_print (yyssp, yyvsp, yylsp, Rule, p); \
9673# define YYDPRINTF(Args) ((void) 0)
9674# define YY_SYMBOL_PRINT(Title, Kind, Value, Location, p)
9675# define YY_STACK_PRINT(Bottom, Top, p)
9676# define YY_REDUCE_PRINT(Rule, p)
9682# define YYINITDEPTH 200
9693# define YYMAXDEPTH 10000
9701 yysymbol_kind_t yytoken;
9713 yysymbol_kind_t yyarg[],
int yyargn)
9717 int yyn = yypact[+*yyctx->yyssp];
9718 if (!yypact_value_is_default (yyn))
9723 int yyxbegin = yyn < 0 ? -yyn : 0;
9725 int yychecklim = YYLAST - yyn + 1;
9726 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
9728 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
9729 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
9730 && !yytable_value_is_error (yytable[yyx + yyn]))
9734 else if (yycount == yyargn)
9737 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
9740 if (yyarg && yycount == 0 && 0 < yyargn)
9741 yyarg[0] = YYSYMBOL_YYEMPTY;
9749# if defined __GLIBC__ && defined _STRING_H
9750# define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
9754yystrlen (
const char *yystr)
9757 for (yylen = 0; yystr[yylen]; yylen++)
9765# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
9766# define yystpcpy stpcpy
9771yystpcpy (
char *yydest,
const char *yysrc)
9774 const char *yys = yysrc;
9776 while ((*yyd++ = *yys++) !=
'\0')
9793yytnamerr (
char *yyres,
const char *yystr)
9797 YYPTRDIFF_T yyn = 0;
9798 char const *yyp = yystr;
9804 goto do_not_strip_quotes;
9808 goto do_not_strip_quotes;
9824 do_not_strip_quotes: ;
9828 return yystpcpy (yyres, yystr) - yyres;
9830 return yystrlen (yystr);
9837 yysymbol_kind_t yyarg[],
int yyargn)
9864 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
9868 yyarg[yycount] = yyctx->yytoken;
9870 yyn = yypcontext_expected_tokens (yyctx,
9871 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
9872 if (yyn == YYENOMEM)
9889yysyntax_error (YYPTRDIFF_T *yymsg_alloc,
char **yymsg,
9892 enum { YYARGS_MAX = 5 };
9894 const char *yyformat = YY_NULLPTR;
9897 yysymbol_kind_t yyarg[YYARGS_MAX];
9899 YYPTRDIFF_T yysize = 0;
9902 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
9903 if (yycount == YYENOMEM)
9908#define YYCASE_(N, S) \
9913 YYCASE_(0, YY_(
"syntax error"));
9914 YYCASE_(1, YY_(
"syntax error, unexpected %s"));
9915 YYCASE_(2, YY_(
"syntax error, unexpected %s, expecting %s"));
9916 YYCASE_(3, YY_(
"syntax error, unexpected %s, expecting %s or %s"));
9917 YYCASE_(4, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s"));
9918 YYCASE_(5, YY_(
"syntax error, unexpected %s, expecting %s or %s or %s or %s"));
9924 yysize = yystrlen (yyformat) - 2 * yycount + 1;
9927 for (yyi = 0; yyi < yycount; ++yyi)
9930 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
9931 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
9938 if (*yymsg_alloc < yysize)
9940 *yymsg_alloc = 2 * yysize;
9941 if (! (yysize <= *yymsg_alloc
9942 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
9943 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
9953 while ((*yyp = *yyformat) !=
'\0')
9954 if (*yyp ==
'%' && yyformat[1] ==
's' && yyi < yycount)
9956 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
9974yydestruct (
const char *yymsg,
9978 YY_USE (yylocationp);
9982 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp, p);
9984 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
9986 YY_IGNORE_MAYBE_UNINITIALIZED_END
10008YY_INITIAL_VALUE (
static const YYSTYPE yyval_default;)
10009YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
10012static const YYLTYPE yyloc_default
10013# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
10017YYLTYPE yylloc = yyloc_default;
10023 yy_state_fast_t yystate = 0;
10025 int yyerrstatus = 0;
10031 YYPTRDIFF_T yystacksize = YYINITDEPTH;
10034 yy_state_t yyssa[YYINITDEPTH];
10035 yy_state_t *yyss = yyssa;
10036 yy_state_t *yyssp = yyss;
10052 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
10062 char yymsgbuf[128];
10063 char *yymsg = yymsgbuf;
10064 YYPTRDIFF_T yymsg_alloc =
sizeof yymsgbuf;
10066#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
10072 YYDPRINTF ((stderr,
"Starting parse\n"));
10078#line 1959 "parse.y"
10080 RUBY_SET_YYLLOC_OF_NONE(yylloc);
10083#line 10084 "parse.c"
10102 YYDPRINTF ((stderr,
"Entering state %d\n", yystate));
10103 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
10104 YY_IGNORE_USELESS_CAST_BEGIN
10105 *yyssp = YY_CAST (yy_state_t, yystate);
10106 YY_IGNORE_USELESS_CAST_END
10107 YY_STACK_PRINT (yyss, yyssp, p);
10109 if (yyss + yystacksize - 1 <= yyssp)
10110#if !defined yyoverflow && !defined YYSTACK_RELOCATE
10115 YYPTRDIFF_T yysize = yyssp - yyss + 1;
10117# if defined yyoverflow
10122 yy_state_t *yyss1 = yyss;
10130 yyoverflow (YY_(
"memory exhausted"),
10131 &yyss1, yysize * YYSIZEOF (*yyssp),
10132 &yyvs1, yysize * YYSIZEOF (*yyvsp),
10133 &yyls1, yysize * YYSIZEOF (*yylsp),
10141 if (YYMAXDEPTH <= yystacksize)
10144 if (YYMAXDEPTH < yystacksize)
10145 yystacksize = YYMAXDEPTH;
10148 yy_state_t *yyss1 = yyss;
10149 union yyalloc *yyptr =
10150 YY_CAST (
union yyalloc *,
10151 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
10154 YYSTACK_RELOCATE (yyss_alloc, yyss);
10155 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
10156 YYSTACK_RELOCATE (yyls_alloc, yyls);
10157# undef YYSTACK_RELOCATE
10158 if (yyss1 != yyssa)
10159 YYSTACK_FREE (yyss1);
10163 yyssp = yyss + yysize - 1;
10164 yyvsp = yyvs + yysize - 1;
10165 yylsp = yyls + yysize - 1;
10167 YY_IGNORE_USELESS_CAST_BEGIN
10168 YYDPRINTF ((stderr,
"Stack size increased to %ld\n",
10169 YY_CAST (
long, yystacksize)));
10170 YY_IGNORE_USELESS_CAST_END
10172 if (yyss + yystacksize - 1 <= yyssp)
10178 if (yystate == YYFINAL)
10192 yyn = yypact[yystate];
10193 if (yypact_value_is_default (yyn))
10199 if (yychar == YYEMPTY)
10201 YYDPRINTF ((stderr,
"Reading a token\n"));
10202 yychar = yylex (&yylval, &yylloc, p);
10205 if (yychar <= END_OF_INPUT)
10207 yychar = END_OF_INPUT;
10208 yytoken = YYSYMBOL_YYEOF;
10209 YYDPRINTF ((stderr,
"Now at end of input.\n"));
10211 else if (yychar == YYerror)
10218 yytoken = YYSYMBOL_YYerror;
10219 yyerror_range[1] = yylloc;
10224 yytoken = YYTRANSLATE (yychar);
10225 YY_SYMBOL_PRINT (
"Next token is", yytoken, &yylval, &yylloc, p);
10231 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
10233 yyn = yytable[yyn];
10236 if (yytable_value_is_error (yyn))
10248 YY_SYMBOL_PRINT (
"Shifting", yytoken, &yylval, &yylloc, p);
10250 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
10252 YY_IGNORE_MAYBE_UNINITIALIZED_END
10264 yyn = yydefact[yystate];
10285 yyval = yyvsp[1-yylen];
10288 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
10289 yyerror_range[1] = yyloc;
10290 YY_REDUCE_PRINT (yyn, p);
10294#line 2194 "parse.y"
10296 SET_LEX_STATE(EXPR_BEG);
10297 local_push(p, ifndef_ripper(1)+0);
10299 if (!ifndef_ripper(p->do_loop) + 0) init_block_exit(p);
10301#line 10302 "parse.c"
10305#line 2201 "parse.y"
10308 if ((yyvsp[0].node) && !compile_for_eval) {
10309 NODE *node = (yyvsp[0].node);
10311 if (nd_type_p(node, NODE_BLOCK)) {
10312 while (RNODE_BLOCK(node)->nd_next) {
10313 node = RNODE_BLOCK(node)->nd_next;
10315 node = RNODE_BLOCK(node)->nd_head;
10317 node = remove_begin(node);
10318 void_expr(p, node);
10320 p->eval_tree = NEW_SCOPE(0, block_append(p, p->eval_tree, (yyvsp[0].node)), &(yyloc));
10325#line 10326 "parse.c"
10329#line 2223 "parse.y"
10331 (yyval.node) = void_stmts(p, (yyvsp[-1].node));
10333#line 10334 "parse.c"
10337#line 2229 "parse.y"
10340 (yyval.node) = NEW_BEGIN(0, &(yyloc));
10344#line 10345 "parse.c"
10348#line 2236 "parse.y"
10351 (yyval.node) = newline_node((yyvsp[0].node));
10355#line 10356 "parse.c"
10359#line 2243 "parse.y"
10362 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
10366#line 10367 "parse.c"
10370#line 2252 "parse.y"
10372 clear_block_exit(p,
true);
10373 (yyval.node) = (yyvsp[0].node);
10375#line 10376 "parse.c"
10379#line 2257 "parse.y"
10381 (yyval.node) = (yyvsp[0].node);
10383#line 10384 "parse.c"
10387#line 2262 "parse.y"
10388 {(yyval.node_exits) = init_block_exit(p);}
10389#line 10390 "parse.c"
10393#line 2265 "parse.y"
10395 restore_block_exit(p, (yyvsp[-2].node_exits));
10397 p->eval_tree_begin = block_append(p, p->eval_tree_begin,
10398 NEW_BEGIN((yyvsp[-1].node), &(yyloc)));
10399 (yyval.node) = NEW_BEGIN(0, &(yyloc));
10403#line 10404 "parse.c"
10407#line 2280 "parse.y"
10409 if (!(yyvsp[-1].node)) yyerror1(&(yylsp[0]),
"else without rescue is useless");
10410 next_rescue_context(&p->ctxt, &(yyvsp[-2].ctxt), after_else);
10412#line 10413 "parse.c"
10416#line 2285 "parse.y"
10418 next_rescue_context(&p->ctxt, &(yyvsp[-4].ctxt), after_ensure);
10420#line 10421 "parse.c"
10424#line 2289 "parse.y"
10427 (yyval.node) = new_bodystmt(p, (yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
10431#line 10432 "parse.c"
10435#line 2298 "parse.y"
10437 next_rescue_context(&p->ctxt, &(yyvsp[-1].ctxt), after_ensure);
10439#line 10440 "parse.c"
10443#line 2302 "parse.y"
10446 (yyval.node) = new_bodystmt(p, (yyvsp[-4].node), (yyvsp[-2].node), 0, (yyvsp[0].node), &(yyloc));
10450#line 10451 "parse.c"
10454#line 2311 "parse.y"
10456 (yyval.node) = void_stmts(p, (yyvsp[-1].node));
10458#line 10459 "parse.c"
10462#line 2317 "parse.y"
10465 (yyval.node) = NEW_BEGIN(0, &(yyloc));
10469#line 10470 "parse.c"
10473#line 2324 "parse.y"
10476 (yyval.node) = newline_node((yyvsp[0].node));
10480#line 10481 "parse.c"
10484#line 2331 "parse.y"
10487 (yyval.node) = block_append(p, (yyvsp[-2].node), newline_node((yyvsp[0].node)));
10491#line 10492 "parse.c"
10495#line 2340 "parse.y"
10497 (yyval.node) = (yyvsp[0].node);
10499#line 10500 "parse.c"
10503#line 2344 "parse.y"
10505 yyerror1(&(yylsp[0]),
"BEGIN is permitted only at toplevel");
10507#line 10508 "parse.c"
10511#line 2348 "parse.y"
10513 (yyval.node) = (yyvsp[0].node);
10515#line 10516 "parse.c"
10519#line 2353 "parse.y"
10520 {(yyval.node_exits) = allow_block_exit(p);}
10521#line 10522 "parse.c"
10525#line 2356 "parse.y"
10527 (yyval.ctxt) = (yyvsp[0].ctxt);
10528 p->ctxt.in_rescue = before_rescue;
10530#line 10531 "parse.c"
10534#line 2361 "parse.y"
10535 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
10536#line 10537 "parse.c"
10540#line 2362 "parse.y"
10543 (yyval.node) = NEW_ALIAS((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
10547#line 10548 "parse.c"
10551#line 2369 "parse.y"
10554 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), (yyvsp[0].id), &(yyloc));
10558#line 10559 "parse.c"
10562#line 2376 "parse.y"
10567 buf[1] = (char)RNODE_BACK_REF((yyvsp[0].node))->nd_nth;
10568 (yyval.node) = NEW_VALIAS((yyvsp[-1].
id), rb_intern2(buf, 2), &(yyloc));
10572#line 10573 "parse.c"
10576#line 2386 "parse.y"
10578 static const char mesg[] =
"can't make alias for the number variables";
10580 yyerror1(&(yylsp[0]), mesg);
10581 (yyval.node) = NEW_BEGIN(0, &(yyloc));
10585#line 10586 "parse.c"
10589#line 2395 "parse.y"
10592 (yyval.node) = (yyvsp[0].node);
10596#line 10597 "parse.c"
10600#line 2402 "parse.y"
10603 (yyval.node) = new_if(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
10604 fixpos((yyval.node), (yyvsp[0].node));
10608#line 10609 "parse.c"
10612#line 2410 "parse.y"
10615 (yyval.node) = new_unless(p, (yyvsp[0].node), remove_begin((yyvsp[-2].node)), 0, &(yyloc));
10616 fixpos((yyval.node), (yyvsp[0].node));
10620#line 10621 "parse.c"
10624#line 2418 "parse.y"
10626 clear_block_exit(p,
false);
10628 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
10629 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc));
10632 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
10637#line 10638 "parse.c"
10641#line 2431 "parse.y"
10643 clear_block_exit(p,
false);
10645 if ((yyvsp[-2].node) && nd_type_p((yyvsp[-2].node), NODE_BEGIN)) {
10646 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), RNODE_BEGIN((yyvsp[-2].node))->nd_body, 0, &(yyloc));
10649 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[0].node), &(yylsp[0])), (yyvsp[-2].node), 1, &(yyloc));
10654#line 10655 "parse.c"
10658#line 2444 "parse.y"
10660 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
10663 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10664 resq = NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc);
10665 (yyval.node) = NEW_RESCUE(remove_begin((yyvsp[-3].node)), resq, 0, &(yyloc));
10669#line 10670 "parse.c"
10673#line 2455 "parse.y"
10675 if (p->ctxt.in_def) {
10676 rb_warn0(
"END in method; use at_exit");
10678 restore_block_exit(p, (yyvsp[-3].node_exits));
10679 p->ctxt = (yyvsp[-4].ctxt);
10682 NODE *scope = NEW_SCOPE2(0 , 0 , (yyvsp[-1].node) , &(yyloc));
10683 (yyval.node) = NEW_POSTEXE(scope, &(yyloc));
10688#line 10689 "parse.c"
10692#line 2471 "parse.y"
10695 value_expr((yyvsp[0].node));
10696 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
10700#line 10701 "parse.c"
10704#line 2479 "parse.y"
10707 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
10711#line 10712 "parse.c"
10715#line 2487 "parse.y"
10717 p->ctxt.in_rescue = (yyvsp[-4].ctxt).in_rescue;
10719 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10720 (yyvsp[0].node) = NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc);
10721 loc.beg_pos = (yylsp[-3]).beg_pos;
10722 (yyvsp[-3].node) = NEW_RESCUE((yyvsp[-3].node), (yyvsp[0].node), 0, &loc);
10723 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-6].node_masgn), (yyvsp[-3].node), (yyvsp[-4].ctxt), &(yyloc));
10727#line 10728 "parse.c"
10731#line 2499 "parse.y"
10734 (yyval.node) = node_assign(p, (
NODE *)(yyvsp[-3].node_masgn), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
10738#line 10739 "parse.c"
10742#line 2507 "parse.y"
10746 (yyval.node) = NEW_ERROR(&(yyloc));
10749#line 10750 "parse.c"
10753#line 2516 "parse.y"
10756 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
10760#line 10761 "parse.c"
10764#line 2523 "parse.y"
10767 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
10771#line 10772 "parse.c"
10775#line 2530 "parse.y"
10778 (yyval.node) = new_ary_op_assign(p, (yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[0].node), &(yylsp[-4]), &(yyloc));
10783#line 10784 "parse.c"
10787#line 2538 "parse.y"
10790 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
10794#line 10795 "parse.c"
10798#line 2545 "parse.y"
10801 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
10805#line 10806 "parse.c"
10809#line 2552 "parse.y"
10812 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
10813 (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));
10817#line 10818 "parse.c"
10821#line 2560 "parse.y"
10824 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), ID2VAL(idCOLON2), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
10828#line 10829 "parse.c"
10832#line 2567 "parse.y"
10834 endless_method_name(p, get_id((yyvsp[-3].node_def_temp)->nd_mid), &(yylsp[-3]));
10835 restore_defun(p, (yyvsp[-3].node_def_temp));
10837 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
10838 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
10839 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
10845#line 10846 "parse.c"
10849#line 2580 "parse.y"
10851 endless_method_name(p, get_id((yyvsp[-3].node_def_temp)->nd_mid), &(yylsp[-3]));
10852 restore_defun(p, (yyvsp[-3].node_def_temp));
10854 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
10855 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
10856 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
10862#line 10863 "parse.c"
10866#line 2593 "parse.y"
10869 rb_backref_error(p, (yyvsp[-3].node));
10870 (yyval.node) = NEW_BEGIN(0, &(yyloc));
10874#line 10875 "parse.c"
10878#line 2604 "parse.y"
10880 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
10882 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
10886#line 10887 "parse.c"
10890#line 2612 "parse.y"
10892 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
10894#line 10895 "parse.c"
10898#line 2618 "parse.y"
10900 value_expr((yyvsp[0].node));
10901 (yyval.node) = (yyvsp[0].node);
10903#line 10904 "parse.c"
10907#line 2623 "parse.y"
10909 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
10911 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
10912 value_expr((yyvsp[-3].node));
10913 (yyval.node) = NEW_RESCUE((yyvsp[-3].node), NEW_RESBODY(0, remove_begin((yyvsp[0].node)), 0, &loc), 0, &(yyloc));
10917#line 10918 "parse.c"
10921#line 2637 "parse.y"
10923 (yyval.node) = logop(p, idAND, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
10925#line 10926 "parse.c"
10929#line 2641 "parse.y"
10931 (yyval.node) = logop(p, idOR, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
10933#line 10934 "parse.c"
10937#line 2645 "parse.y"
10939 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
10941#line 10942 "parse.c"
10945#line 2649 "parse.y"
10947 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
10949#line 10950 "parse.c"
10953#line 2653 "parse.y"
10955 value_expr((yyvsp[-1].node));
10957#line 10958 "parse.c"
10961#line 2658 "parse.y"
10963 pop_pktbl(p, (yyvsp[-1].tbl));
10964 pop_pvtbl(p, (yyvsp[-2].tbl));
10965 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
10967 (yyval.node) = NEW_CASE3((yyvsp[-6].node), NEW_IN((yyvsp[0].node), 0, 0, &(yylsp[0])), &(yyloc));
10971#line 10972 "parse.c"
10975#line 2668 "parse.y"
10977 value_expr((yyvsp[-1].node));
10979#line 10980 "parse.c"
10983#line 2673 "parse.y"
10985 pop_pktbl(p, (yyvsp[-1].tbl));
10986 pop_pvtbl(p, (yyvsp[-2].tbl));
10987 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
10989 (yyval.node) = NEW_CASE3((yyvsp[-6].node), NEW_IN((yyvsp[0].node), NEW_TRUE(&(yylsp[0])), NEW_FALSE(&(yylsp[0])), &(yylsp[0])), &(yyloc));
10993#line 10994 "parse.c"
10997#line 2686 "parse.y"
10999 ID fname = get_id((yyvsp[0].
id));
11000 numparam_name(p, fname);
11003 p->ctxt.in_def = 1;
11004 p->ctxt.in_rescue = before_rescue;
11005 (yyval.id) = (yyvsp[0].
id);
11007#line 11008 "parse.c"
11011#line 2698 "parse.y"
11013 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-1].node_def_temp));
11014 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
11016 (yyval.node_def_temp)->nd_def = NEW_DEFN((yyvsp[0].
id), 0, &(yyloc));
11021#line 11022 "parse.c"
11025#line 2710 "parse.y"
11027 SET_LEX_STATE(EXPR_FNAME);
11028 p->ctxt.in_argdef = 1;
11030#line 11031 "parse.c"
11034#line 2715 "parse.y"
11036 SET_LEX_STATE(EXPR_ENDFN|EXPR_LABEL);
11037 (yyval.node_def_temp) = def_head_save(p, (yyvsp[-4].node_def_temp));
11038 (yyval.node_def_temp)->nd_mid = (yyvsp[0].
id);
11040 (yyval.node_def_temp)->nd_def = NEW_DEFS((yyvsp[-3].node), (yyvsp[0].id), 0, &(yyloc));
11047#line 11048 "parse.c"
11051#line 2730 "parse.y"
11053 value_expr((yyvsp[0].node));
11054 (yyval.node) = (yyvsp[0].node);
11056#line 11057 "parse.c"
11060#line 2735 "parse.y"
11063 (yyval.node) = NEW_ERROR(&(yyloc));
11066#line 11067 "parse.c"
11070#line 2742 "parse.y"
11072#line 11073 "parse.c"
11076#line 2742 "parse.y"
11078#line 11079 "parse.c"
11082#line 2743 "parse.y"
11084 (yyval.node) = (yyvsp[-2].node);
11086#line 11087 "parse.c"
11090#line 2754 "parse.y"
11093 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
11097#line 11098 "parse.c"
11101#line 2763 "parse.y"
11103 (yyval.node) = (yyvsp[-1].node);
11105 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
11108#line 11109 "parse.c"
11112#line 2772 "parse.y"
11115 (yyval.node_fcall) = NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
11119#line 11120 "parse.c"
11123#line 2781 "parse.y"
11126 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
11127 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
11128 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
11132#line 11133 "parse.c"
11136#line 2790 "parse.y"
11139 block_dup_check(p, (yyvsp[-1].node), (yyvsp[0].node));
11140 (yyvsp[-2].node_fcall)->nd_args = (yyvsp[-1].node);
11141 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-2].node_fcall), (yyvsp[0].node), &(yyloc));
11142 fixpos((yyval.node), RNODE((yyvsp[-2].node_fcall)));
11143 nd_set_last_loc((yyvsp[-2].node_fcall), (yylsp[-1]).end_pos);
11147#line 11148 "parse.c"
11151#line 2801 "parse.y"
11154 (yyval.node) = new_command_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), Qnull, &(yylsp[-1]), &(yyloc));
11158#line 11159 "parse.c"
11162#line 2808 "parse.y"
11165 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
11169#line 11170 "parse.c"
11173#line 2815 "parse.y"
11176 (yyval.node) = new_command_qcall(p, ID2VAL(idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), Qnull, &(yylsp[-1]), &(yyloc));
11180#line 11181 "parse.c"
11184#line 2822 "parse.y"
11187 (yyval.node) = new_command_qcall(p, ID2VAL(idCOLON2), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
11191#line 11192 "parse.c"
11195#line 2829 "parse.y"
11198 set_embraced_location((yyvsp[-1].node), &(yylsp[-2]), &(yylsp[0]));
11199 (yyval.node) = new_command_qcall(p, ID2VAL(idCOLON2), (yyvsp[-5].node), (yyvsp[-3].
id), Qnull, (yyvsp[-1].node), &(yylsp[-3]), &(yyloc));
11203#line 11204 "parse.c"
11207#line 2837 "parse.y"
11210 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc));
11211 fixpos((yyval.node), (yyvsp[0].node));
11215#line 11216 "parse.c"
11219#line 2845 "parse.y"
11222 (yyval.node) = new_yield(p, (yyvsp[0].node), &(yyloc));
11223 fixpos((yyval.node), (yyvsp[0].node));
11227#line 11228 "parse.c"
11231#line 2853 "parse.y"
11234 (yyval.node) = NEW_RETURN(ret_args(p, (yyvsp[0].node)), &(yyloc));
11238#line 11239 "parse.c"
11242#line 2860 "parse.y"
11246 args = ret_args(p, (yyvsp[0].node));
11248 (yyval.node) = add_block_exit(p, NEW_BREAK(args, &(yyloc)));
11251#line 11252 "parse.c"
11255#line 2869 "parse.y"
11259 args = ret_args(p, (yyvsp[0].node));
11261 (yyval.node) = add_block_exit(p, NEW_NEXT(args, &(yyloc)));
11264#line 11265 "parse.c"
11268#line 2881 "parse.y"
11271 (yyval.node_masgn) = (yyvsp[-1].node_masgn);
11275#line 11276 "parse.c"
11279#line 2891 "parse.y"
11282 (yyval.node_masgn) = NEW_MASGN(NEW_LIST((
NODE *)(yyvsp[-1].node_masgn), &(yyloc)), 0, &(yyloc));
11286#line 11287 "parse.c"
11290#line 2900 "parse.y"
11293 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
11297#line 11298 "parse.c"
11301#line 2907 "parse.y"
11304 (yyval.node_masgn) = NEW_MASGN(list_append(p, (yyvsp[-1].node), (yyvsp[0].node)), 0, &(yyloc));
11308#line 11309 "parse.c"
11312#line 2914 "parse.y"
11315 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
11319#line 11320 "parse.c"
11323#line 2921 "parse.y"
11326 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
11330#line 11331 "parse.c"
11334#line 2928 "parse.y"
11337 (yyval.node_masgn) = NEW_MASGN((yyvsp[-1].node), NODE_SPECIAL_NO_NAME_REST, &(yyloc));
11341#line 11342 "parse.c"
11345#line 2935 "parse.y"
11348 (yyval.node_masgn) = NEW_MASGN((yyvsp[-3].node), NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
11352#line 11353 "parse.c"
11356#line 2942 "parse.y"
11359 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
11363#line 11364 "parse.c"
11367#line 2949 "parse.y"
11370 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node),(yyvsp[0].node),&(yyloc)), &(yyloc));
11374#line 11375 "parse.c"
11378#line 2956 "parse.y"
11381 (yyval.node_masgn) = NEW_MASGN(0, NODE_SPECIAL_NO_NAME_REST, &(yyloc));
11385#line 11386 "parse.c"
11389#line 2963 "parse.y"
11392 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG(NODE_SPECIAL_NO_NAME_REST, (yyvsp[0].node), &(yyloc)), &(yyloc));
11396#line 11397 "parse.c"
11400#line 2973 "parse.y"
11403 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
11407#line 11408 "parse.c"
11411#line 2982 "parse.y"
11414 (yyval.node) = NEW_LIST((yyvsp[-1].node), &(yylsp[-1]));
11418#line 11419 "parse.c"
11422#line 2989 "parse.y"
11425 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
11429#line 11430 "parse.c"
11433#line 2998 "parse.y"
11436 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
11440#line 11441 "parse.c"
11444#line 3005 "parse.y"
11447 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
11451#line 11452 "parse.c"
11455#line 3014 "parse.y"
11458 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11462#line 11463 "parse.c"
11466#line 3021 "parse.y"
11469 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11473#line 11474 "parse.c"
11477#line 3028 "parse.y"
11480 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
11484#line 11485 "parse.c"
11488#line 3035 "parse.y"
11490 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
11492 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
11496#line 11497 "parse.c"
11500#line 3043 "parse.y"
11503 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
11507#line 11508 "parse.c"
11511#line 3050 "parse.y"
11513 anddot_multiple_assignment_check(p, &(yylsp[-1]), (yyvsp[-1].
id));
11515 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
11519#line 11520 "parse.c"
11523#line 3058 "parse.y"
11526 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
11530#line 11531 "parse.c"
11534#line 3065 "parse.y"
11537 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
11541#line 11542 "parse.c"
11545#line 3072 "parse.y"
11548 rb_backref_error(p, (yyvsp[0].node));
11549 (yyval.node) = NEW_BEGIN(0, &(yyloc));
11553#line 11554 "parse.c"
11557#line 3082 "parse.y"
11560 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11564#line 11565 "parse.c"
11568#line 3089 "parse.y"
11571 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
11575#line 11576 "parse.c"
11579#line 3096 "parse.y"
11582 (yyval.node) = aryset(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
11586#line 11587 "parse.c"
11590#line 3103 "parse.y"
11593 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
11597#line 11598 "parse.c"
11601#line 3110 "parse.y"
11604 (yyval.node) = attrset(p, (yyvsp[-2].node), idCOLON2, (yyvsp[0].id), &(yyloc));
11608#line 11609 "parse.c"
11612#line 3117 "parse.y"
11615 (yyval.node) = attrset(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].
id), &(yyloc));
11619#line 11620 "parse.c"
11623#line 3124 "parse.y"
11626 (yyval.node) = const_decl(p, NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc)), &(yyloc));
11630#line 11631 "parse.c"
11634#line 3131 "parse.y"
11637 (yyval.node) = const_decl(p, NEW_COLON3((yyvsp[0].
id), &(yyloc)), &(yyloc));
11641#line 11642 "parse.c"
11645#line 3138 "parse.y"
11648 rb_backref_error(p, (yyvsp[0].node));
11649 (yyval.node) = NEW_BEGIN(0, &(yyloc));
11653#line 11654 "parse.c"
11657#line 3148 "parse.y"
11659 static const char mesg[] =
"class/module name must be CONSTANT";
11661 yyerror1(&(yylsp[0]), mesg);
11665#line 11666 "parse.c"
11669#line 3159 "parse.y"
11672 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
11676#line 11677 "parse.c"
11680#line 3166 "parse.y"
11683 (yyval.node) = NEW_COLON2(0, (yyvsp[0].
id), &(yyloc));
11687#line 11688 "parse.c"
11691#line 3173 "parse.y"
11694 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
11698#line 11699 "parse.c"
11702#line 3185 "parse.y"
11704 SET_LEX_STATE(EXPR_ENDFN);
11705 (yyval.id) = (yyvsp[0].
id);
11707#line 11708 "parse.c"
11711#line 3193 "parse.y"
11714 (yyval.node) = NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc));
11718#line 11719 "parse.c"
11722#line 3203 "parse.y"
11725 (yyval.node) = NEW_UNDEF((yyvsp[0].node), &(yyloc));
11729#line 11730 "parse.c"
11733#line 3209 "parse.y"
11734 {SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);}
11735#line 11736 "parse.c"
11739#line 3210 "parse.y"
11742 NODE *undef = NEW_UNDEF((yyvsp[0].node), &(yylsp[0]));
11743 (yyval.node) = block_append(p, (yyvsp[-3].node), undef);
11747#line 11748 "parse.c"
11751#line 3219 "parse.y"
11752 { ifndef_ripper((yyval.id) =
'|'); }
11753#line 11754 "parse.c"
11757#line 3220 "parse.y"
11758 { ifndef_ripper((yyval.id) =
'^'); }
11759#line 11760 "parse.c"
11763#line 3221 "parse.y"
11764 { ifndef_ripper((yyval.id) =
'&'); }
11765#line 11766 "parse.c"
11769#line 3222 "parse.y"
11770 { ifndef_ripper((yyval.id) = tCMP); }
11771#line 11772 "parse.c"
11775#line 3223 "parse.y"
11776 { ifndef_ripper((yyval.id) = tEQ); }
11777#line 11778 "parse.c"
11781#line 3224 "parse.y"
11782 { ifndef_ripper((yyval.id) = tEQQ); }
11783#line 11784 "parse.c"
11787#line 3225 "parse.y"
11788 { ifndef_ripper((yyval.id) = tMATCH); }
11789#line 11790 "parse.c"
11793#line 3226 "parse.y"
11794 { ifndef_ripper((yyval.id) = tNMATCH); }
11795#line 11796 "parse.c"
11799#line 3227 "parse.y"
11800 { ifndef_ripper((yyval.id) =
'>'); }
11801#line 11802 "parse.c"
11805#line 3228 "parse.y"
11806 { ifndef_ripper((yyval.id) = tGEQ); }
11807#line 11808 "parse.c"
11811#line 3229 "parse.y"
11812 { ifndef_ripper((yyval.id) =
'<'); }
11813#line 11814 "parse.c"
11817#line 3230 "parse.y"
11818 { ifndef_ripper((yyval.id) = tLEQ); }
11819#line 11820 "parse.c"
11823#line 3231 "parse.y"
11824 { ifndef_ripper((yyval.id) = tNEQ); }
11825#line 11826 "parse.c"
11829#line 3232 "parse.y"
11830 { ifndef_ripper((yyval.id) = tLSHFT); }
11831#line 11832 "parse.c"
11835#line 3233 "parse.y"
11836 { ifndef_ripper((yyval.id) = tRSHFT); }
11837#line 11838 "parse.c"
11841#line 3234 "parse.y"
11842 { ifndef_ripper((yyval.id) =
'+'); }
11843#line 11844 "parse.c"
11847#line 3235 "parse.y"
11848 { ifndef_ripper((yyval.id) =
'-'); }
11849#line 11850 "parse.c"
11853#line 3236 "parse.y"
11854 { ifndef_ripper((yyval.id) =
'*'); }
11855#line 11856 "parse.c"
11859#line 3237 "parse.y"
11860 { ifndef_ripper((yyval.id) =
'*'); }
11861#line 11862 "parse.c"
11865#line 3238 "parse.y"
11866 { ifndef_ripper((yyval.id) =
'/'); }
11867#line 11868 "parse.c"
11871#line 3239 "parse.y"
11872 { ifndef_ripper((yyval.id) =
'%'); }
11873#line 11874 "parse.c"
11877#line 3240 "parse.y"
11878 { ifndef_ripper((yyval.id) = tPOW); }
11879#line 11880 "parse.c"
11883#line 3241 "parse.y"
11884 { ifndef_ripper((yyval.id) = tDSTAR); }
11885#line 11886 "parse.c"
11889#line 3242 "parse.y"
11890 { ifndef_ripper((yyval.id) =
'!'); }
11891#line 11892 "parse.c"
11895#line 3243 "parse.y"
11896 { ifndef_ripper((yyval.id) =
'~'); }
11897#line 11898 "parse.c"
11901#line 3244 "parse.y"
11902 { ifndef_ripper((yyval.id) = tUPLUS); }
11903#line 11904 "parse.c"
11907#line 3245 "parse.y"
11908 { ifndef_ripper((yyval.id) = tUMINUS); }
11909#line 11910 "parse.c"
11913#line 3246 "parse.y"
11914 { ifndef_ripper((yyval.id) = tAREF); }
11915#line 11916 "parse.c"
11919#line 3247 "parse.y"
11920 { ifndef_ripper((yyval.id) = tASET); }
11921#line 11922 "parse.c"
11925#line 3248 "parse.y"
11926 { ifndef_ripper((yyval.id) =
'`'); }
11927#line 11928 "parse.c"
11931#line 3266 "parse.y"
11934 (yyval.node) = node_assign(p, (yyvsp[-3].node), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11938#line 11939 "parse.c"
11942#line 3273 "parse.y"
11945 (yyval.node) = new_op_assign(p, (yyvsp[-3].node), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
11949#line 11950 "parse.c"
11953#line 3280 "parse.y"
11956 (yyval.node) = new_ary_op_assign(p, (yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[0].node), &(yylsp[-4]), &(yyloc));
11960#line 11961 "parse.c"
11964#line 3287 "parse.y"
11967 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
11971#line 11972 "parse.c"
11975#line 3294 "parse.y"
11978 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), (yyvsp[-4].id), (yyvsp[-3].
id), (yyvsp[-2].id), (yyvsp[0].node), &(yyloc));
11982#line 11983 "parse.c"
11986#line 3301 "parse.y"
11989 (yyval.node) = new_attr_op_assign(p, (yyvsp[-5].node), ID2VAL(idCOLON2), (yyvsp[-3].id), (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc));
11993#line 11994 "parse.c"
11997#line 3308 "parse.y"
12000 YYLTYPE loc = code_loc_gen(&(yylsp[-5]), &(yylsp[-3]));
12001 (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));
12005#line 12006 "parse.c"
12009#line 3316 "parse.y"
12012 YYLTYPE loc = code_loc_gen(&(yylsp[-4]), &(yylsp[-3]));
12013 (yyval.node) = new_const_op_assign(p, NEW_COLON3((yyvsp[-3].
id), &loc), (yyvsp[-2].id), (yyvsp[0].node), (yyvsp[-1].ctxt), &(yyloc));
12017#line 12018 "parse.c"
12021#line 3324 "parse.y"
12024 rb_backref_error(p, (yyvsp[-3].node));
12025 (yyval.node) = NEW_BEGIN(0, &(yyloc));
12029#line 12030 "parse.c"
12033#line 3332 "parse.y"
12036 value_expr((yyvsp[-2].node));
12037 value_expr((yyvsp[0].node));
12038 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12042#line 12043 "parse.c"
12046#line 3341 "parse.y"
12049 value_expr((yyvsp[-2].node));
12050 value_expr((yyvsp[0].node));
12051 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12055#line 12056 "parse.c"
12059#line 3350 "parse.y"
12062 value_expr((yyvsp[-1].node));
12063 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
12067#line 12068 "parse.c"
12071#line 3358 "parse.y"
12074 value_expr((yyvsp[-1].node));
12075 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
12079#line 12080 "parse.c"
12083#line 3366 "parse.y"
12086 value_expr((yyvsp[0].node));
12087 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
12091#line 12092 "parse.c"
12095#line 3374 "parse.y"
12098 value_expr((yyvsp[0].node));
12099 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
12103#line 12104 "parse.c"
12107#line 3382 "parse.y"
12109 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'+', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12111#line 12112 "parse.c"
12115#line 3386 "parse.y"
12117 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'-', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12119#line 12120 "parse.c"
12123#line 3390 "parse.y"
12125 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'*', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12127#line 12128 "parse.c"
12131#line 3394 "parse.y"
12133 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'/', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12135#line 12136 "parse.c"
12139#line 3398 "parse.y"
12141 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'%', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12143#line 12144 "parse.c"
12147#line 3402 "parse.y"
12149 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12151#line 12152 "parse.c"
12155#line 3406 "parse.y"
12157 (yyval.node) = call_uni_op(p, call_bin_op(p, (yyvsp[-2].node), idPow, (yyvsp[0].node), &(yylsp[-2]), &(yyloc)), idUMinus, &(yylsp[-3]), &(yyloc));
12159#line 12160 "parse.c"
12163#line 3410 "parse.y"
12165 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUPlus, &(yylsp[-1]), &(yyloc));
12167#line 12168 "parse.c"
12171#line 3414 "parse.y"
12173 (yyval.node) = call_uni_op(p, (yyvsp[0].node), idUMinus, &(yylsp[-1]), &(yyloc));
12175#line 12176 "parse.c"
12179#line 3418 "parse.y"
12181 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'|', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12183#line 12184 "parse.c"
12187#line 3422 "parse.y"
12189 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'^', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12191#line 12192 "parse.c"
12195#line 3426 "parse.y"
12197 (yyval.node) = call_bin_op(p, (yyvsp[-2].node),
'&', (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12199#line 12200 "parse.c"
12203#line 3430 "parse.y"
12205 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idCmp, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12207#line 12208 "parse.c"
12211#line 3435 "parse.y"
12213 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12215#line 12216 "parse.c"
12219#line 3439 "parse.y"
12221 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idEqq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12223#line 12224 "parse.c"
12227#line 3443 "parse.y"
12229 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeq, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12231#line 12232 "parse.c"
12235#line 3447 "parse.y"
12237 (yyval.node) = match_op(p, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12239#line 12240 "parse.c"
12243#line 3451 "parse.y"
12245 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idNeqTilde, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12247#line 12248 "parse.c"
12251#line 3455 "parse.y"
12253 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])),
'!', &(yylsp[-1]), &(yyloc));
12255#line 12256 "parse.c"
12259#line 3459 "parse.y"
12261 (yyval.node) = call_uni_op(p, (yyvsp[0].node),
'~', &(yylsp[-1]), &(yyloc));
12263#line 12264 "parse.c"
12267#line 3463 "parse.y"
12269 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idLTLT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12271#line 12272 "parse.c"
12275#line 3467 "parse.y"
12277 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), idGTGT, (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12279#line 12280 "parse.c"
12283#line 3471 "parse.y"
12285 (yyval.node) = logop(p, idANDOP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12287#line 12288 "parse.c"
12291#line 3475 "parse.y"
12293 (yyval.node) = logop(p, idOROP, (yyvsp[-2].node), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12295#line 12296 "parse.c"
12299#line 3479 "parse.y"
12301 p->ctxt.in_defined = (yyvsp[-1].ctxt).in_defined;
12302 (yyval.node) = new_defined(p, (yyvsp[0].node), &(yyloc));
12304#line 12305 "parse.c"
12308#line 3484 "parse.y"
12311 value_expr((yyvsp[-5].node));
12312 (yyval.node) = new_if(p, (yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
12313 fixpos((yyval.node), (yyvsp[-5].node));
12317#line 12318 "parse.c"
12321#line 3493 "parse.y"
12323 endless_method_name(p, get_id((yyvsp[-3].node_def_temp)->nd_mid), &(yylsp[-3]));
12324 restore_defun(p, (yyvsp[-3].node_def_temp));
12326 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
12327 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12328 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[0].node);
12334#line 12335 "parse.c"
12338#line 3506 "parse.y"
12340 endless_method_name(p, get_id((yyvsp[-3].node_def_temp)->nd_mid), &(yylsp[-3]));
12341 restore_defun(p, (yyvsp[-3].node_def_temp));
12343 (yyvsp[0].node) = new_scope_body(p, (yyvsp[-2].node_args), (yyvsp[0].node), &(yyloc));
12344 ((yyval.node) = (yyvsp[-3].node_def_temp)->nd_def)->nd_loc = (yyloc);
12345 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[0].node);
12351#line 12352 "parse.c"
12355#line 3519 "parse.y"
12357 (yyval.node) = (yyvsp[0].node);
12359#line 12360 "parse.c"
12363#line 3526 "parse.y"
12365 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12367 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12371#line 12372 "parse.c"
12375#line 3534 "parse.y"
12377 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[0].node), &(yylsp[0])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12379#line 12380 "parse.c"
12383#line 3539 "parse.y"
12384 {(yyval.id) =
'>';}
12385#line 12386 "parse.c"
12389#line 3540 "parse.y"
12390 {(yyval.id) =
'<';}
12391#line 12392 "parse.c"
12395#line 3541 "parse.y"
12396 {(yyval.id) = idGE;}
12397#line 12398 "parse.c"
12401#line 3542 "parse.y"
12402 {(yyval.id) = idLE;}
12403#line 12404 "parse.c"
12407#line 3546 "parse.y"
12409 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12411#line 12412 "parse.c"
12415#line 3550 "parse.y"
12417 rb_warning1(
"comparison '%s' after comparison", WARN_ID((yyvsp[-1].
id)));
12418 (yyval.node) = call_bin_op(p, (yyvsp[-2].node), (yyvsp[-1].id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
12420#line 12421 "parse.c"
12424#line 3557 "parse.y"
12426 (yyval.ctxt) = p->ctxt;
12428#line 12429 "parse.c"
12432#line 3563 "parse.y"
12434 p->ctxt.in_defined = 1;
12435 (yyval.ctxt) = (yyvsp[0].ctxt);
12437#line 12438 "parse.c"
12441#line 3570 "parse.y"
12443 p->ctxt.in_rescue = after_rescue;
12444 (yyval.ctxt) = (yyvsp[0].ctxt);
12446#line 12447 "parse.c"
12450#line 3577 "parse.y"
12452 value_expr((yyvsp[0].node));
12453 (yyval.node) = (yyvsp[0].node);
12455#line 12456 "parse.c"
12459#line 3585 "parse.y"
12461 (yyval.node) = (yyvsp[-1].node);
12463#line 12464 "parse.c"
12467#line 3589 "parse.y"
12470 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
12474#line 12475 "parse.c"
12478#line 3596 "parse.y"
12481 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : 0;
12485#line 12486 "parse.c"
12489#line 3605 "parse.y"
12491 value_expr((yyvsp[0].node));
12492 (yyval.node) = (yyvsp[0].node);
12494#line 12495 "parse.c"
12498#line 3610 "parse.y"
12500 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
12502 value_expr((yyvsp[-3].node));
12503 (yyval.node) = rescued_expr(p, (yyvsp[-3].node), (yyvsp[0].node), &(yylsp[-3]), &(yylsp[-2]), &(yylsp[0]));
12507#line 12508 "parse.c"
12511#line 3621 "parse.y"
12514 (yyval.node) = (yyvsp[-1].node);
12518#line 12519 "parse.c"
12522#line 3628 "parse.y"
12524 if (!check_forwarding_args(p)) {
12525 (yyval.node) = Qnone;
12529 (yyval.node) = new_args_forward_call(p, (yyvsp[-3].node), &(yylsp[-1]), &(yyloc));
12534#line 12535 "parse.c"
12538#line 3640 "parse.y"
12540 if (!check_forwarding_args(p)) {
12541 (yyval.node) = Qnone;
12545 (yyval.node) = new_args_forward_call(p, 0, &(yylsp[-1]), &(yyloc));
12550#line 12551 "parse.c"
12554#line 3660 "parse.y"
12556 (yyval.node) = (yyvsp[-1].node);
12558#line 12559 "parse.c"
12562#line 3664 "parse.y"
12565 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
12569#line 12570 "parse.c"
12573#line 3671 "parse.y"
12576 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
12580#line 12581 "parse.c"
12584#line 3680 "parse.y"
12587 value_expr((yyvsp[0].node));
12588 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
12592#line 12593 "parse.c"
12596#line 3688 "parse.y"
12599 (yyval.node) = arg_blk_pass((yyvsp[-1].node), (yyvsp[0].node_block_pass));
12603#line 12604 "parse.c"
12607#line 3695 "parse.y"
12610 (yyval.node) = (yyvsp[-1].node) ? NEW_LIST(new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yylsp[-1])) : 0;
12611 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
12615#line 12616 "parse.c"
12619#line 3703 "parse.y"
12622 (yyval.node) = (yyvsp[-1].node) ? arg_append(p, (yyvsp[-3].node), new_hash(p, (yyvsp[-1].node), &(yylsp[-1])), &(yyloc)) : (yyvsp[-3].node);
12623 (yyval.node) = arg_blk_pass((yyval.node), (yyvsp[0].node_block_pass));
12627#line 12628 "parse.c"
12631#line 3714 "parse.y"
12642 case '(':
case tLPAREN:
case tLPAREN_ARG:
case '[':
case tLBRACK:
12645 if (lookahead) CMDARG_POP();
12647 if (lookahead) CMDARG_PUSH(0);
12649#line 12650 "parse.c"
12653#line 3732 "parse.y"
12666 if (lookahead) CMDARG_POP();
12668 if (lookahead) CMDARG_PUSH(0);
12669 (yyval.node) = (yyvsp[0].node);
12671#line 12672 "parse.c"
12675#line 3752 "parse.y"
12678 (yyval.node_block_pass) = NEW_BLOCK_PASS((yyvsp[0].node), &(yyloc));
12682#line 12683 "parse.c"
12686#line 3759 "parse.y"
12688 forwarding_arg_check(p, idFWD_BLOCK, 0,
"block");
12690 (yyval.node_block_pass) = NEW_BLOCK_PASS(NEW_LVAR(idFWD_BLOCK, &(yylsp[0])), &(yyloc));
12694#line 12695 "parse.c"
12698#line 3769 "parse.y"
12700 (yyval.node_block_pass) = (yyvsp[0].node_block_pass);
12702#line 12703 "parse.c"
12706#line 3773 "parse.y"
12708 (yyval.node_block_pass) = 0;
12710#line 12711 "parse.c"
12714#line 3780 "parse.y"
12717 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
12721#line 12722 "parse.c"
12725#line 3787 "parse.y"
12728 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc));
12732#line 12733 "parse.c"
12736#line 3794 "parse.y"
12739 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12743#line 12744 "parse.c"
12747#line 3801 "parse.y"
12750 (yyval.node) = rest_arg_append(p, (yyval.node), (yyvsp[0].node), &(yyloc));
12754#line 12755 "parse.c"
12758#line 3811 "parse.y"
12760 (yyval.node) = (yyvsp[0].node);
12762#line 12763 "parse.c"
12766#line 3815 "parse.y"
12768 forwarding_arg_check(p, idFWD_REST, idFWD_ALL,
"rest");
12770 (yyval.node) = NEW_LVAR(idFWD_REST, &(yylsp[0]));
12774#line 12775 "parse.c"
12778#line 3831 "parse.y"
12781 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
12785#line 12786 "parse.c"
12789#line 3838 "parse.y"
12792 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
12796#line 12797 "parse.c"
12800#line 3845 "parse.y"
12803 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc));
12807#line 12808 "parse.c"
12811#line 3864 "parse.y"
12814 (yyval.node) = (
NODE *)NEW_FCALL((yyvsp[0].
id), 0, &(yyloc));
12818#line 12819 "parse.c"
12822#line 3871 "parse.y"
12826#line 12827 "parse.c"
12830#line 3876 "parse.y"
12834 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
12835 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
12836 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
12840#line 12841 "parse.c"
12844#line 3885 "parse.y"
12845 {SET_LEX_STATE(EXPR_ENDARG);}
12846#line 12847 "parse.c"
12850#line 3886 "parse.y"
12853 if (nd_type_p((yyvsp[-2].node), NODE_SELF)) RNODE_SELF((yyvsp[-2].node))->nd_state = 0;
12854 (yyval.node) = (yyvsp[-2].node);
12858#line 12859 "parse.c"
12862#line 3894 "parse.y"
12865 if (nd_type_p((yyvsp[-1].node), NODE_SELF)) RNODE_SELF((yyvsp[-1].node))->nd_state = 0;
12866 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
12870#line 12871 "parse.c"
12874#line 3902 "parse.y"
12877 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
12881#line 12882 "parse.c"
12885#line 3909 "parse.y"
12888 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
12892#line 12893 "parse.c"
12896#line 3916 "parse.y"
12899 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
12903#line 12904 "parse.c"
12907#line 3923 "parse.y"
12910 (yyval.node) = new_hash(p, (yyvsp[-1].node), &(yyloc));
12911 RNODE_HASH((yyval.node))->nd_brace = TRUE;
12915#line 12916 "parse.c"
12919#line 3931 "parse.y"
12922 (yyval.node) = NEW_RETURN(0, &(yyloc));
12926#line 12927 "parse.c"
12930#line 3938 "parse.y"
12933 (yyval.node) = new_yield(p, (yyvsp[-1].node), &(yyloc));
12937#line 12938 "parse.c"
12941#line 3945 "parse.y"
12944 (yyval.node) = NEW_YIELD(0, &(yyloc));
12948#line 12949 "parse.c"
12952#line 3952 "parse.y"
12955 (yyval.node) = NEW_YIELD(0, &(yyloc));
12959#line 12960 "parse.c"
12963#line 3959 "parse.y"
12965 p->ctxt.in_defined = (yyvsp[-2].ctxt).in_defined;
12966 (yyval.node) = new_defined(p, (yyvsp[-1].node), &(yyloc));
12968#line 12969 "parse.c"
12972#line 3964 "parse.y"
12974 (yyval.node) = call_uni_op(p, method_cond(p, (yyvsp[-1].node), &(yylsp[-1])), METHOD_NOT, &(yylsp[-3]), &(yyloc));
12976#line 12977 "parse.c"
12980#line 3968 "parse.y"
12982 (yyval.node) = call_uni_op(p, method_cond(p, new_nil(&(yylsp[-1])), &(yylsp[-1])), METHOD_NOT, &(yylsp[-2]), &(yyloc));
12984#line 12985 "parse.c"
12988#line 3972 "parse.y"
12991 (yyval.node) = method_add_block(p, (
NODE *)(yyvsp[-1].node_fcall), (yyvsp[0].node), &(yyloc));
12995#line 12996 "parse.c"
12999#line 3980 "parse.y"
13002 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
13003 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13007#line 13008 "parse.c"
13011#line 3992 "parse.y"
13014 (yyval.node) = new_if(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
13015 fixpos((yyval.node), (yyvsp[-4].node));
13019#line 13020 "parse.c"
13023#line 4003 "parse.y"
13026 (yyval.node) = new_unless(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[-1].node), &(yyloc));
13027 fixpos((yyval.node), (yyvsp[-4].node));
13031#line 13032 "parse.c"
13035#line 4013 "parse.y"
13037 restore_block_exit(p, (yyvsp[-3].node_exits));
13039 (yyval.node) = NEW_WHILE(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
13040 fixpos((yyval.node), (yyvsp[-2].node));
13044#line 13045 "parse.c"
13048#line 4024 "parse.y"
13050 restore_block_exit(p, (yyvsp[-3].node_exits));
13052 (yyval.node) = NEW_UNTIL(cond(p, (yyvsp[-2].node), &(yylsp[-2])), (yyvsp[-1].node), 1, &(yyloc));
13053 fixpos((yyval.node), (yyvsp[-2].node));
13057#line 13058 "parse.c"
13061#line 4033 "parse.y"
13063 (yyval.val) = p->case_labels;
13064 p->case_labels =
Qnil;
13066#line 13067 "parse.c"
13070#line 4039 "parse.y"
13072 if (
RTEST(p->case_labels)) rb_hash_clear(p->case_labels);
13073 p->case_labels = (yyvsp[-2].val);
13075 (yyval.node) = NEW_CASE((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
13076 fixpos((yyval.node), (yyvsp[-4].node));
13080#line 13081 "parse.c"
13084#line 4049 "parse.y"
13086 (yyval.val) = p->case_labels;
13087 p->case_labels = 0;
13089#line 13090 "parse.c"
13093#line 4055 "parse.y"
13095 if (
RTEST(p->case_labels)) rb_hash_clear(p->case_labels);
13096 p->case_labels = (yyvsp[-2].val);
13098 (yyval.node) = NEW_CASE2((yyvsp[-1].node), &(yyloc));
13102#line 13103 "parse.c"
13106#line 4066 "parse.y"
13109 (yyval.node) = NEW_CASE3((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13113#line 13114 "parse.c"
13117#line 4075 "parse.y"
13119 restore_block_exit(p, (yyvsp[-5].node_exits));
13130 ID id = internal_id(p);
13133 NODE *scope, *internal_var = NEW_DVAR(
id, &(yylsp[-4]));
13137 switch (nd_type((yyvsp[-4].node))) {
13140 set_nd_value(p, (yyvsp[-4].node), internal_var);
13143 m->nd_next = (yyvsp[-4].node);
13146 m->nd_next = node_assign(p, (yyvsp[-4].node), NEW_FOR_MASGN(internal_var, &(yylsp[-4])), NO_LEX_CTXT, &(yylsp[-4]));
13149 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]));
13152 args = new_args(p, m, 0,
id, 0, new_args_tail(p, 0, 0, 0, &(yylsp[-4])), &(yylsp[-4]));
13153 scope = NEW_SCOPE2(tbl, args, (yyvsp[-1].node), &(yyloc));
13154 (yyval.node) = NEW_FOR((yyvsp[-2].node), scope, &(yyloc));
13155 fixpos((yyval.node), (yyvsp[-4].node));
13159#line 13160 "parse.c"
13163#line 4117 "parse.y"
13165 begin_definition(
"class", &(yylsp[-2]), &(yylsp[-1]));
13167#line 13168 "parse.c"
13171#line 4122 "parse.y"
13174 (yyval.node) = NEW_CLASS((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[-3].node), &(yyloc));
13175 nd_set_line(RNODE_CLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
13176 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
13177 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
13181 p->ctxt.in_class = (yyvsp[-5].ctxt).in_class;
13182 p->ctxt.shareable_constant_value = (yyvsp[-5].ctxt).shareable_constant_value;
13184#line 13185 "parse.c"
13188#line 4135 "parse.y"
13190 begin_definition(
"", &(yylsp[-2]), &(yylsp[-1]));
13192#line 13193 "parse.c"
13196#line 4141 "parse.y"
13199 (yyval.node) = NEW_SCLASS((yyvsp[-4].node), (yyvsp[-1].node), &(yyloc));
13200 nd_set_line(RNODE_SCLASS((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
13201 set_line_body((yyvsp[-1].node), nd_line((yyvsp[-4].node)));
13202 fixpos((yyval.node), (yyvsp[-4].node));
13206 p->ctxt.in_def = (yyvsp[-6].ctxt).in_def;
13207 p->ctxt.in_class = (yyvsp[-6].ctxt).in_class;
13208 p->ctxt.shareable_constant_value = (yyvsp[-6].ctxt).shareable_constant_value;
13210#line 13211 "parse.c"
13214#line 4155 "parse.y"
13216 begin_definition(
"module", &(yylsp[-1]), &(yylsp[0]));
13218#line 13219 "parse.c"
13222#line 4160 "parse.y"
13225 (yyval.node) = NEW_MODULE((yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
13226 nd_set_line(RNODE_MODULE((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
13227 set_line_body((yyvsp[-1].node), (yylsp[-3]).end_pos.lineno);
13228 nd_set_line((yyval.node), (yylsp[-3]).end_pos.lineno);
13232 p->ctxt.in_class = (yyvsp[-4].ctxt).in_class;
13233 p->ctxt.shareable_constant_value = (yyvsp[-4].ctxt).shareable_constant_value;
13235#line 13236 "parse.c"
13239#line 4174 "parse.y"
13242 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
13245#line 13246 "parse.c"
13249#line 4181 "parse.y"
13251 restore_defun(p, (yyvsp[-4].node_def_temp));
13253 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), &(yyloc));
13254 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
13255 RNODE_DEFN((yyval.node))->nd_defn = (yyvsp[-1].node);
13260#line 13261 "parse.c"
13264#line 4193 "parse.y"
13267 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
13270#line 13271 "parse.c"
13274#line 4200 "parse.y"
13276 restore_defun(p, (yyvsp[-4].node_def_temp));
13278 (yyvsp[-1].node) = new_scope_body(p, (yyvsp[-3].node_args), (yyvsp[-1].node), &(yyloc));
13279 ((yyval.node) = (yyvsp[-4].node_def_temp)->nd_def)->nd_loc = (yyloc);
13280 RNODE_DEFS((yyval.node))->nd_defn = (yyvsp[-1].node);
13285#line 13286 "parse.c"
13289#line 4211 "parse.y"
13291 (yyval.node) = add_block_exit(p, NEW_BREAK(0, &(yyloc)));
13294#line 13295 "parse.c"
13298#line 4216 "parse.y"
13300 (yyval.node) = add_block_exit(p, NEW_NEXT(0, &(yyloc)));
13303#line 13304 "parse.c"
13307#line 4221 "parse.y"
13309 (yyval.node) = add_block_exit(p, NEW_REDO(&(yyloc)));
13312#line 13313 "parse.c"
13316#line 4226 "parse.y"
13318 if (!p->ctxt.in_defined) {
13319 switch (p->ctxt.in_rescue) {
13320 case before_rescue: yyerror1(&(yylsp[0]),
"Invalid retry without rescue");
break;
13321 case after_rescue:
break;
13322 case after_else: yyerror1(&(yylsp[0]),
"Invalid retry after else");
break;
13323 case after_ensure: yyerror1(&(yylsp[0]),
"Invalid retry after ensure");
break;
13327 (yyval.node) = NEW_RETRY(&(yyloc));
13331#line 13332 "parse.c"
13335#line 4243 "parse.y"
13337 value_expr((yyvsp[0].node));
13338 (yyval.node) = (yyvsp[0].node);
13340#line 13341 "parse.c"
13344#line 4250 "parse.y"
13346 token_info_push(p,
"begin", &(yyloc));
13348 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13351#line 13352 "parse.c"
13355#line 4259 "parse.y"
13358 token_info_push(p,
"if", &(yyloc));
13359 if (p->token_info && p->token_info->nonspc &&
13360 p->token_info->next && !strcmp(p->token_info->next->token,
"else")) {
13362 const char *beg = p->lex.pbeg + p->token_info->next->beg.column;
13364 while (beg < tok &&
ISSPACE(*beg)) beg++;
13366 p->token_info->nonspc = 0;
13370 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13373#line 13374 "parse.c"
13377#line 4279 "parse.y"
13379 token_info_push(p,
"unless", &(yyloc));
13381 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13384#line 13385 "parse.c"
13388#line 4288 "parse.y"
13390 (yyval.node_exits) = (yyvsp[0].node_exits);
13391 token_info_push(p,
"while", &(yyloc));
13393 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
13396#line 13397 "parse.c"
13400#line 4298 "parse.y"
13402 (yyval.node_exits) = (yyvsp[0].node_exits);
13403 token_info_push(p,
"until", &(yyloc));
13405 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
13408#line 13409 "parse.c"
13412#line 4308 "parse.y"
13414 token_info_push(p,
"case", &(yyloc));
13416 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13419#line 13420 "parse.c"
13423#line 4317 "parse.y"
13425 (yyval.node_exits) = (yyvsp[0].node_exits);
13426 token_info_push(p,
"for", &(yyloc));
13428 push_end_expect_token_locations(p, &(yylsp[-1]).beg_pos);
13431#line 13432 "parse.c"
13435#line 4327 "parse.y"
13437 token_info_push(p,
"class", &(yyloc));
13438 (yyval.ctxt) = p->ctxt;
13439 p->ctxt.in_rescue = before_rescue;
13441 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13444#line 13445 "parse.c"
13448#line 4338 "parse.y"
13450 token_info_push(p,
"module", &(yyloc));
13451 (yyval.ctxt) = p->ctxt;
13452 p->ctxt.in_rescue = before_rescue;
13454 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13457#line 13458 "parse.c"
13461#line 4349 "parse.y"
13463 token_info_push(p,
"def", &(yyloc));
13464 (yyval.node_def_temp) = NEW_DEF_TEMP(&(yyloc));
13465 p->ctxt.in_argdef = 1;
13467#line 13468 "parse.c"
13471#line 4357 "parse.y"
13473 token_info_push(p,
"do", &(yyloc));
13475 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13478#line 13479 "parse.c"
13482#line 4366 "parse.y"
13484 token_info_push(p,
"do", &(yyloc));
13486 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
13489#line 13490 "parse.c"
13493#line 4375 "parse.y"
13495 token_info_warn(p,
"rescue", p->token_info, 1, &(yyloc));
13496 (yyval.ctxt) = p->ctxt;
13497 p->ctxt.in_rescue = after_rescue;
13499#line 13500 "parse.c"
13503#line 4383 "parse.y"
13505 token_info_warn(p,
"ensure", p->token_info, 1, &(yyloc));
13506 (yyval.ctxt) = p->ctxt;
13508#line 13509 "parse.c"
13512#line 4390 "parse.y"
13514 token_info_warn(p,
"when", p->token_info, 0, &(yyloc));
13516#line 13517 "parse.c"
13520#line 4396 "parse.y"
13523 int same = ptinfo_beg && strcmp(ptinfo_beg->token,
"case") != 0;
13524 token_info_warn(p,
"else", p->token_info, same, &(yyloc));
13527 e.next = ptinfo_beg->next;
13529 token_info_setup(&e, p->lex.pbeg, &(yyloc));
13530 if (!e.nonspc) *ptinfo_beg = e;
13533#line 13534 "parse.c"
13537#line 4411 "parse.y"
13540 token_info_warn(p,
"elsif", p->token_info, 1, &(yyloc));
13542#line 13543 "parse.c"
13546#line 4418 "parse.y"
13548 token_info_pop(p,
"end", &(yyloc));
13550 pop_end_expect_token_locations(p);
13553#line 13554 "parse.c"
13557#line 4425 "parse.y"
13559 compile_error(p,
"syntax error, unexpected end-of-input");
13561#line 13562 "parse.c"
13565#line 4431 "parse.y"
13567 if (p->ctxt.in_class && !p->ctxt.in_def && !dyna_in_block(p))
13568 yyerror1(&(yylsp[0]),
"Invalid return in class/module body");
13570#line 13571 "parse.c"
13574#line 4438 "parse.y"
13576 if (!p->ctxt.in_defined && !p->ctxt.in_def && !compile_for_eval)
13577 yyerror1(&(yylsp[0]),
"Invalid yield");
13579#line 13580 "parse.c"
13583#line 4457 "parse.y"
13586 (yyval.node) = new_if(p, (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
13587 fixpos((yyval.node), (yyvsp[-3].node));
13591#line 13592 "parse.c"
13595#line 4468 "parse.y"
13598 (yyval.node) = (yyvsp[0].node);
13602#line 13603 "parse.c"
13606#line 4481 "parse.y"
13609 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13610 mark_lvar_used(p, (yyval.node));
13614#line 13615 "parse.c"
13618#line 4489 "parse.y"
13621 (yyval.node) = (
NODE *)(yyvsp[-1].node_masgn);
13625#line 13626 "parse.c"
13629#line 4498 "parse.y"
13632 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
13636#line 13637 "parse.c"
13640#line 4505 "parse.y"
13643 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[0].node));
13647#line 13648 "parse.c"
13651#line 4514 "parse.y"
13654 (yyval.node_masgn) = NEW_MASGN((yyvsp[0].node), 0, &(yyloc));
13658#line 13659 "parse.c"
13662#line 4521 "parse.y"
13665 (yyval.node_masgn) = NEW_MASGN((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
13669#line 13670 "parse.c"
13673#line 4528 "parse.y"
13676 (yyval.node_masgn) = NEW_MASGN((yyvsp[-4].node), NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
13680#line 13681 "parse.c"
13684#line 4535 "parse.y"
13687 (yyval.node_masgn) = NEW_MASGN(0, (yyvsp[0].node), &(yyloc));
13691#line 13692 "parse.c"
13695#line 4542 "parse.y"
13698 (yyval.node_masgn) = NEW_MASGN(0, NEW_POSTARG((yyvsp[-2].node), (yyvsp[0].node), &(yyloc)), &(yyloc));
13702#line 13703 "parse.c"
13706#line 4551 "parse.y"
13709 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
13710 mark_lvar_used(p, (yyval.node));
13714#line 13715 "parse.c"
13718#line 4559 "parse.y"
13721 (yyval.node) = NODE_SPECIAL_NO_NAME_REST;
13725#line 13726 "parse.c"
13729#line 4568 "parse.y"
13730 {(yyval.id) = ID2VAL(idNil);}
13731#line 13732 "parse.c"
13735#line 4571 "parse.y"
13736 {p->ctxt.in_argdef = 0;}
13737#line 13738 "parse.c"
13741#line 4574 "parse.y"
13743 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
13745#line 13746 "parse.c"
13749#line 4578 "parse.y"
13751 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), Qnone, (yyvsp[0].id), &(yylsp[-1]));
13753#line 13754 "parse.c"
13757#line 4582 "parse.y"
13759 (yyval.node_args) = new_args_tail(p, Qnone, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
13761#line 13762 "parse.c"
13765#line 4586 "parse.y"
13767 (yyval.node_args) = new_args_tail(p, Qnone, Qnone, (yyvsp[0].
id), &(yylsp[0]));
13769#line 13770 "parse.c"
13773#line 4592 "parse.y"
13775 (yyval.node_args) = (yyvsp[0].node_args);
13777#line 13778 "parse.c"
13781#line 4596 "parse.y"
13783 (yyval.node_args) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
13785#line 13786 "parse.c"
13789#line 4602 "parse.y"
13793 (yyval.id) = NODE_SPECIAL_EXCESSIVE_COMMA;
13797#line 13798 "parse.c"
13801#line 4612 "parse.y"
13803 (yyval.node_args) = new_args(p, (yyvsp[-5].node_args_aux), (yyvsp[-3].node_opt_arg), (yyvsp[-1].
id), Qnone, (yyvsp[0].node_args), &(yyloc));
13805#line 13806 "parse.c"
13809#line 4616 "parse.y"
13811 (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));
13813#line 13814 "parse.c"
13817#line 4620 "parse.y"
13819 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
13821#line 13822 "parse.c"
13825#line 4624 "parse.y"
13827 (yyval.node_args) = new_args(p, (yyvsp[-5].node_args_aux), (yyvsp[-3].node_opt_arg), Qnone, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
13829#line 13830 "parse.c"
13833#line 4628 "parse.y"
13835 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), Qnone, (yyvsp[-1].id), Qnone, (yyvsp[0].node_args), &(yyloc));
13837#line 13838 "parse.c"
13841#line 4632 "parse.y"
13843 (yyval.node_args) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
13844 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), Qnone, (yyvsp[0].id), Qnone, (yyval.node_args), &(yyloc));
13846#line 13847 "parse.c"
13850#line 4637 "parse.y"
13852 (yyval.node_args) = new_args(p, (yyvsp[-5].node_args_aux), Qnone, (yyvsp[-3].id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
13854#line 13855 "parse.c"
13858#line 4641 "parse.y"
13860 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), Qnone, Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
13862#line 13863 "parse.c"
13866#line 4645 "parse.y"
13868 (yyval.node_args) = new_args(p, Qnone, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), Qnone, (yyvsp[0].node_args), &(yyloc));
13870#line 13871 "parse.c"
13874#line 4649 "parse.y"
13876 (yyval.node_args) = new_args(p, Qnone, (yyvsp[-5].node_opt_arg), (yyvsp[-3].id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
13878#line 13879 "parse.c"
13882#line 4653 "parse.y"
13884 (yyval.node_args) = new_args(p, Qnone, (yyvsp[-1].node_opt_arg), Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
13886#line 13887 "parse.c"
13890#line 4657 "parse.y"
13892 (yyval.node_args) = new_args(p, Qnone, (yyvsp[-3].node_opt_arg), Qnone, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
13894#line 13895 "parse.c"
13898#line 4661 "parse.y"
13900 (yyval.node_args) = new_args(p, Qnone, Qnone, (yyvsp[-1].
id), Qnone, (yyvsp[0].node_args), &(yyloc));
13902#line 13903 "parse.c"
13906#line 4665 "parse.y"
13908 (yyval.node_args) = new_args(p, Qnone, Qnone, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
13910#line 13911 "parse.c"
13914#line 4669 "parse.y"
13916 (yyval.node_args) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
13918#line 13919 "parse.c"
13922#line 4676 "parse.y"
13924 p->command_start = TRUE;
13926#line 13927 "parse.c"
13930#line 4682 "parse.y"
13933 p->max_numparam = ORDINAL_PARAM;
13934 p->ctxt.in_argdef = 0;
13936 (yyval.node_args) = 0;
13941#line 13942 "parse.c"
13945#line 4693 "parse.y"
13948 p->max_numparam = ORDINAL_PARAM;
13949 p->ctxt.in_argdef = 0;
13951 (yyval.node_args) = (yyvsp[-2].node_args);
13955#line 13956 "parse.c"
13959#line 4706 "parse.y"
13963#line 13964 "parse.c"
13967#line 4710 "parse.y"
13974#line 13975 "parse.c"
13978#line 4725 "parse.y"
13980 new_bv(p, get_id((yyvsp[0].
id)));
13983#line 13984 "parse.c"
13987#line 4730 "parse.y"
13991#line 13992 "parse.c"
13995#line 4735 "parse.y"
13997 (yyval.num) = p->max_numparam;
13998 p->max_numparam = 0;
14000#line 14001 "parse.c"
14004#line 4741 "parse.y"
14006 (yyval.node) = numparam_push(p);
14008#line 14009 "parse.c"
14012#line 4747 "parse.y"
14014 token_info_push(p,
"->", &(yylsp[0]));
14015 (yyvsp[0].vars) = dyna_push(p);
14016 (yyval.num) = p->lex.lpar_beg;
14017 p->lex.lpar_beg = p->lex.paren_nest;
14019#line 14020 "parse.c"
14023#line 4755 "parse.y"
14027#line 14028 "parse.c"
14031#line 4759 "parse.y"
14033 int max_numparam = p->max_numparam;
14034 p->lex.lpar_beg = (yyvsp[-6].num);
14035 p->max_numparam = (yyvsp[-5].num);
14036 restore_block_exit(p, (yyvsp[-3].node_exits));
14038 (yyvsp[-2].node_args) = args_with_numbered(p, (yyvsp[-2].node_args), max_numparam);
14041 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
14042 (yyval.node) = NEW_LAMBDA((yyvsp[-2].node_args), (yyvsp[0].node), &loc);
14043 nd_set_line(RNODE_LAMBDA((yyval.node))->nd_body, (yylsp[0]).end_pos.lineno);
14044 nd_set_line((yyval.node), (yylsp[-2]).end_pos.lineno);
14045 nd_set_first_loc((yyval.node), (yylsp[-7]).beg_pos);
14049 numparam_pop(p, (yyvsp[-4].node));
14050 dyna_pop(p, (yyvsp[-7].vars));
14052#line 14053 "parse.c"
14056#line 4782 "parse.y"
14058 p->ctxt.in_argdef = 0;
14060 (yyval.node_args) = (yyvsp[-2].node_args);
14061 p->max_numparam = ORDINAL_PARAM;
14065#line 14066 "parse.c"
14069#line 4791 "parse.y"
14071 p->ctxt.in_argdef = 0;
14073 if (!args_info_empty_p(&(yyvsp[0].node_args)->nd_ainfo))
14074 p->max_numparam = ORDINAL_PARAM;
14076 (yyval.node_args) = (yyvsp[0].node_args);
14078#line 14079 "parse.c"
14082#line 4802 "parse.y"
14084 token_info_pop(p,
"}", &(yylsp[0]));
14085 (yyval.node) = (yyvsp[-1].node);
14087#line 14088 "parse.c"
14091#line 4807 "parse.y"
14094 push_end_expect_token_locations(p, &(yylsp[0]).beg_pos);
14097#line 14098 "parse.c"
14101#line 4813 "parse.y"
14103 (yyval.node) = (yyvsp[-1].node);
14105#line 14106 "parse.c"
14109#line 4819 "parse.y"
14111 (yyval.node) = (yyvsp[-1].node);
14113 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
14116#line 14117 "parse.c"
14120#line 4828 "parse.y"
14123 if (nd_type_p((yyvsp[-1].node), NODE_YIELD)) {
14124 compile_error(p,
"block given to yield");
14127 block_dup_check(p, get_nd_args(p, (yyvsp[-1].node)), (yyvsp[0].node));
14129 (yyval.node) = method_add_block(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14130 fixpos((yyval.node), (yyvsp[-1].node));
14134#line 14135 "parse.c"
14138#line 4842 "parse.y"
14141 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14145#line 14146 "parse.c"
14149#line 4849 "parse.y"
14152 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
14156#line 14157 "parse.c"
14160#line 4856 "parse.y"
14163 (yyval.node) = new_command_qcall(p, (yyvsp[-3].
id), (yyvsp[-4].node), (yyvsp[-2].
id), (yyvsp[-1].node), (yyvsp[0].node), &(yylsp[-2]), &(yyloc));
14167#line 14168 "parse.c"
14171#line 4865 "parse.y"
14174 (yyvsp[-1].node_fcall)->nd_args = (yyvsp[0].node);
14175 (yyval.node) = (
NODE *)(yyvsp[-1].node_fcall);
14176 nd_set_last_loc((yyvsp[-1].node_fcall), (yylsp[0]).end_pos);
14180#line 14181 "parse.c"
14184#line 4874 "parse.y"
14187 (yyval.node) = new_qcall(p, (yyvsp[-2].
id), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14188 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
14192#line 14193 "parse.c"
14196#line 4882 "parse.y"
14199 (yyval.node) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-3].node), (yyvsp[-1].
id), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14200 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
14204#line 14205 "parse.c"
14208#line 4890 "parse.y"
14211 (yyval.node) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-2].node), (yyvsp[0].
id), Qnull, &(yylsp[0]), &(yyloc));
14215#line 14216 "parse.c"
14219#line 4897 "parse.y"
14222 (yyval.node) = new_qcall(p, (yyvsp[-1].
id), (yyvsp[-2].node), ID2VAL(idCall), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14223 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
14227#line 14228 "parse.c"
14231#line 4905 "parse.y"
14234 (yyval.node) = new_qcall(p, ID2VAL(idCOLON2), (yyvsp[-2].node), ID2VAL(idCall), (yyvsp[0].node), &(yylsp[-1]), &(yyloc));
14235 nd_set_line((yyval.node), (yylsp[-1]).end_pos.lineno);
14239#line 14240 "parse.c"
14243#line 4913 "parse.y"
14246 (yyval.node) = NEW_SUPER((yyvsp[0].node), &(yyloc));
14250#line 14251 "parse.c"
14254#line 4920 "parse.y"
14257 (yyval.node) = NEW_ZSUPER(&(yyloc));
14261#line 14262 "parse.c"
14265#line 4927 "parse.y"
14268 (yyval.node) = NEW_CALL((yyvsp[-3].node), tAREF, (yyvsp[-1].node), &(yyloc));
14269 fixpos((yyval.node), (yyvsp[-3].node));
14273#line 14274 "parse.c"
14277#line 4937 "parse.y"
14279 (yyval.node) = (yyvsp[-1].node);
14281 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
14284#line 14285 "parse.c"
14288#line 4944 "parse.y"
14290 (yyval.node) = (yyvsp[-1].node);
14292 set_embraced_location((yyval.node), &(yylsp[-2]), &(yylsp[0]));
14295#line 14296 "parse.c"
14299#line 4952 "parse.y"
14300 {(yyval.vars) = dyna_push(p);}
14301#line 14302 "parse.c"
14305#line 4955 "parse.y"
14307 int max_numparam = p->max_numparam;
14308 p->max_numparam = (yyvsp[-4].num);
14309 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam);
14311 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
14314 restore_block_exit(p, (yyvsp[-2].node_exits));
14315 numparam_pop(p, (yyvsp[-3].node));
14316 dyna_pop(p, (yyvsp[-5].vars));
14318#line 14319 "parse.c"
14322#line 4969 "parse.y"
14324 (yyval.vars) = dyna_push(p);
14327#line 14328 "parse.c"
14331#line 4975 "parse.y"
14333 int max_numparam = p->max_numparam;
14334 p->max_numparam = (yyvsp[-4].num);
14335 (yyvsp[-1].node_args) = args_with_numbered(p, (yyvsp[-1].node_args), max_numparam);
14337 (yyval.node) = NEW_ITER((yyvsp[-1].node_args), (yyvsp[0].node), &(yyloc));
14341 restore_block_exit(p, (yyvsp[-2].node_exits));
14342 numparam_pop(p, (yyvsp[-3].node));
14343 dyna_pop(p, (yyvsp[-5].vars));
14345#line 14346 "parse.c"
14349#line 4991 "parse.y"
14352 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
14353 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14357#line 14358 "parse.c"
14361#line 4999 "parse.y"
14364 (yyval.node) = NEW_SPLAT((yyvsp[0].node), &(yyloc));
14368#line 14369 "parse.c"
14372#line 5006 "parse.y"
14375 check_literal_when(p, (yyvsp[0].node), &(yylsp[0]));
14376 (yyval.node) = last_arg_append(p, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14380#line 14381 "parse.c"
14384#line 5014 "parse.y"
14387 (yyval.node) = rest_arg_append(p, (yyvsp[-3].node), (yyvsp[0].node), &(yyloc));
14391#line 14392 "parse.c"
14395#line 5025 "parse.y"
14398 (yyval.node) = NEW_WHEN((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14399 fixpos((yyval.node), (yyvsp[-3].node));
14403#line 14404 "parse.c"
14407#line 5038 "parse.y"
14408 {(yyval.tbl) = p->pvtbl; p->pvtbl = st_init_numtable();}
14409#line 14410 "parse.c"
14413#line 5039 "parse.y"
14414 {(yyval.tbl) = p->pktbl; p->pktbl = 0;}
14415#line 14416 "parse.c"
14419#line 5041 "parse.y"
14421 (yyval.ctxt) = p->ctxt;
14422 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
14423 p->command_start = FALSE;
14424 p->ctxt.in_kwarg = 1;
14426#line 14427 "parse.c"
14430#line 5052 "parse.y"
14432 pop_pktbl(p, (yyvsp[-2].tbl));
14433 pop_pvtbl(p, (yyvsp[-3].tbl));
14434 p->ctxt.in_kwarg = (yyvsp[-4].ctxt).in_kwarg;
14436#line 14437 "parse.c"
14440#line 5059 "parse.y"
14443 (yyval.node) = NEW_IN((yyvsp[-4].node), (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
14447#line 14448 "parse.c"
14451#line 5073 "parse.y"
14454 (yyval.node) = new_if(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc));
14455 fixpos((yyval.node), (yyvsp[0].node));
14459#line 14460 "parse.c"
14463#line 5081 "parse.y"
14466 (yyval.node) = new_unless(p, (yyvsp[0].node), (yyvsp[-2].node), 0, &(yyloc));
14467 fixpos((yyval.node), (yyvsp[0].node));
14471#line 14472 "parse.c"
14475#line 5092 "parse.y"
14477 (yyval.node) = new_array_pattern_tail(p, Qnone, 1, Qnone, Qnone, &(yyloc));
14478 (yyval.node) = new_array_pattern(p, Qnone, get_value((yyvsp[-1].node)), (yyval.node), &(yyloc));
14480#line 14481 "parse.c"
14484#line 5097 "parse.y"
14486 (yyval.node) = new_array_pattern(p, Qnone, get_value((yyvsp[-2].node)), (yyvsp[0].node), &(yyloc));
14488 nd_set_first_loc((yyval.node), (yylsp[-2]).beg_pos);
14492#line 14493 "parse.c"
14496#line 5105 "parse.y"
14498 (yyval.node) = new_find_pattern(p, Qnone, (yyvsp[0].node), &(yyloc));
14500#line 14501 "parse.c"
14504#line 5109 "parse.y"
14506 (yyval.node) = new_array_pattern(p, Qnone, Qnone, (yyvsp[0].node), &(yyloc));
14508#line 14509 "parse.c"
14512#line 5113 "parse.y"
14514 (yyval.node) = new_hash_pattern(p, Qnone, (yyvsp[0].node), &(yyloc));
14516#line 14517 "parse.c"
14520#line 5122 "parse.y"
14523 NODE *n = NEW_LIST((yyvsp[-2].node), &(yyloc));
14524 n = list_append(p, n, (yyvsp[0].node));
14525 (yyval.node) = new_hash(p, n, &(yyloc));
14529#line 14530 "parse.c"
14533#line 5134 "parse.y"
14536 (yyval.node) = NEW_OR((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14540#line 14541 "parse.c"
14544#line 5143 "parse.y"
14545 { (yyval.tbl) = (yyvsp[0].tbl);}
14546#line 14547 "parse.c"
14550#line 5144 "parse.y"
14551 { (yyval.tbl) = (yyvsp[0].tbl);}
14552#line 14553 "parse.c"
14556#line 5149 "parse.y"
14558 pop_pktbl(p, (yyvsp[-2].tbl));
14559 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), &(yyloc));
14561 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
14565#line 14566 "parse.c"
14569#line 5158 "parse.y"
14571 pop_pktbl(p, (yyvsp[-2].tbl));
14572 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
14574 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
14578#line 14579 "parse.c"
14582#line 5167 "parse.y"
14584 pop_pktbl(p, (yyvsp[-2].tbl));
14585 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
14587 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
14591#line 14592 "parse.c"
14595#line 5176 "parse.y"
14597 (yyval.node) = new_array_pattern_tail(p, Qnone, 0, Qnone, Qnone, &(yyloc));
14598 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), Qnone, (yyval.node), &(yyloc));
14600#line 14601 "parse.c"
14604#line 5181 "parse.y"
14606 pop_pktbl(p, (yyvsp[-2].tbl));
14607 (yyval.node) = new_array_pattern(p, (yyvsp[-3].node), Qnone, (yyvsp[-1].node), &(yyloc));
14609 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
14613#line 14614 "parse.c"
14617#line 5190 "parse.y"
14619 pop_pktbl(p, (yyvsp[-2].tbl));
14620 (yyval.node) = new_find_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
14622 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
14626#line 14627 "parse.c"
14630#line 5199 "parse.y"
14632 pop_pktbl(p, (yyvsp[-2].tbl));
14633 (yyval.node) = new_hash_pattern(p, (yyvsp[-3].node), (yyvsp[-1].node), &(yyloc));
14635 nd_set_first_loc((yyval.node), (yylsp[-3]).beg_pos);
14639#line 14640 "parse.c"
14643#line 5208 "parse.y"
14645 (yyval.node) = new_array_pattern_tail(p, Qnone, 0, Qnone, Qnone, &(yyloc));
14646 (yyval.node) = new_array_pattern(p, (yyvsp[-2].node), Qnone, (yyval.node), &(yyloc));
14648#line 14649 "parse.c"
14652#line 5213 "parse.y"
14654 (yyval.node) = new_array_pattern(p, Qnone, Qnone, (yyvsp[-1].node), &(yyloc));
14656#line 14657 "parse.c"
14660#line 5217 "parse.y"
14662 (yyval.node) = new_find_pattern(p, Qnone, (yyvsp[-1].node), &(yyloc));
14664#line 14665 "parse.c"
14668#line 5221 "parse.y"
14670 (yyval.node) = new_array_pattern_tail(p, Qnone, 0, Qnone, Qnone, &(yyloc));
14671 (yyval.node) = new_array_pattern(p, Qnone, Qnone, (yyval.node), &(yyloc));
14673#line 14674 "parse.c"
14677#line 5226 "parse.y"
14679 p->ctxt.in_kwarg = 0;
14681#line 14682 "parse.c"
14685#line 5230 "parse.y"
14687 pop_pktbl(p, (yyvsp[-4].tbl));
14688 p->ctxt.in_kwarg = (yyvsp[-3].ctxt).in_kwarg;
14689 (yyval.node) = new_hash_pattern(p, Qnone, (yyvsp[-1].node), &(yyloc));
14691#line 14692 "parse.c"
14695#line 5236 "parse.y"
14697 (yyval.node) = new_hash_pattern_tail(p, Qnone, 0, &(yyloc));
14698 (yyval.node) = new_hash_pattern(p, Qnone, (yyval.node), &(yyloc));
14700#line 14701 "parse.c"
14704#line 5241 "parse.y"
14706 pop_pktbl(p, (yyvsp[-2].tbl));
14707 (yyval.node) = (yyvsp[-1].node);
14709#line 14710 "parse.c"
14713#line 5248 "parse.y"
14716 NODE *pre_args = NEW_LIST((yyvsp[0].node), &(yyloc));
14717 (yyval.node) = new_array_pattern_tail(p, pre_args, 0, Qnone, Qnone, &(yyloc));
14722#line 14723 "parse.c"
14726#line 5257 "parse.y"
14728 (yyval.node) = new_array_pattern_tail(p, (yyvsp[0].node), 1, Qnone, Qnone, &(yyloc));
14730#line 14731 "parse.c"
14734#line 5261 "parse.y"
14737 (yyval.node) = new_array_pattern_tail(p, list_concat((yyvsp[-1].node), (yyvsp[0].node)), 0, Qnone, Qnone, &(yyloc));
14743#line 14744 "parse.c"
14747#line 5270 "parse.y"
14749 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-1].node), 1, (yyvsp[0].node), Qnone, &(yyloc));
14751#line 14752 "parse.c"
14755#line 5274 "parse.y"
14757 (yyval.node) = new_array_pattern_tail(p, (yyvsp[-3].node), 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14759#line 14760 "parse.c"
14763#line 5281 "parse.y"
14765 (yyval.node) = (yyvsp[-1].node);
14767#line 14768 "parse.c"
14771#line 5285 "parse.y"
14774 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[-1].node));
14778#line 14779 "parse.c"
14782#line 5294 "parse.y"
14784 (yyval.node) = new_array_pattern_tail(p, Qnone, 1, (yyvsp[0].node), Qnone, &(yyloc));
14786#line 14787 "parse.c"
14790#line 5298 "parse.y"
14792 (yyval.node) = new_array_pattern_tail(p, Qnone, 1, (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14794#line 14795 "parse.c"
14798#line 5304 "parse.y"
14800 (yyval.node) = new_find_pattern_tail(p, (yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14802#line 14803 "parse.c"
14806#line 5311 "parse.y"
14809 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
14810 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
14814#line 14815 "parse.c"
14818#line 5319 "parse.y"
14825#line 14826 "parse.c"
14829#line 5329 "parse.y"
14832 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
14836#line 14837 "parse.c"
14840#line 5338 "parse.y"
14843 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
14847#line 14848 "parse.c"
14851#line 5347 "parse.y"
14853 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-2].node), &(yyloc)), (yyvsp[0].id), &(yyloc));
14855#line 14856 "parse.c"
14859#line 5351 "parse.y"
14861 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[0].node), &(yyloc)), 0, &(yyloc));
14863#line 14864 "parse.c"
14867#line 5355 "parse.y"
14869 (yyval.node) = new_hash_pattern_tail(p, new_unique_key_hash(p, (yyvsp[-1].node), &(yyloc)), 0, &(yyloc));
14871#line 14872 "parse.c"
14875#line 5359 "parse.y"
14877 (yyval.node) = new_hash_pattern_tail(p, new_hash(p, Qnone, &(yyloc)), (yyvsp[0].
id), &(yyloc));
14879#line 14880 "parse.c"
14883#line 5367 "parse.y"
14886 (yyval.node) = list_concat((yyvsp[-2].node), (yyvsp[0].node));
14890#line 14891 "parse.c"
14894#line 5376 "parse.y"
14896 error_duplicate_pattern_key(p, get_id((yyvsp[-1].
id)), &(yylsp[-1]));
14898 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
14902#line 14903 "parse.c"
14906#line 5384 "parse.y"
14908 error_duplicate_pattern_key(p, get_id((yyvsp[0].
id)), &(yylsp[0]));
14909 if ((yyvsp[0].
id) && !is_local_id(get_id((yyvsp[0].
id)))) {
14910 yyerror1(&(yylsp[0]),
"key must be valid as local variables");
14912 error_duplicate_pattern_variable(p, get_id((yyvsp[0].
id)), &(yylsp[0]));
14914 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc)), &(yyloc)), assignable(p, (yyvsp[0].
id), 0, &(yyloc)));
14918#line 14919 "parse.c"
14922#line 5399 "parse.y"
14924 YYLTYPE loc = code_loc_gen(&(yylsp[-2]), &(yylsp[0]));
14926 if (!(yyvsp[-1].node) || nd_type_p((yyvsp[-1].node), NODE_STR)) {
14927 NODE *node = dsym_node(p, (yyvsp[-1].node), &loc);
14928 (yyval.id) =
SYM2ID(RNODE_LIT(node)->nd_lit);
14939 yyerror1(&loc,
"symbol literal with interpolation is not allowed");
14943#line 14944 "parse.c"
14947#line 5422 "parse.y"
14949 (yyval.id) = (yyvsp[0].
id);
14951#line 14952 "parse.c"
14955#line 5426 "parse.y"
14959#line 14960 "parse.c"
14963#line 5432 "parse.y"
14967#line 14968 "parse.c"
14971#line 5438 "parse.y"
14972 {(yyval.id) = ID2VAL(idNil);}
14973#line 14974 "parse.c"
14977#line 5443 "parse.y"
14980 value_expr((yyvsp[-2].node));
14981 value_expr((yyvsp[0].node));
14982 (yyval.node) = NEW_DOT2((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14986#line 14987 "parse.c"
14990#line 5452 "parse.y"
14993 value_expr((yyvsp[-2].node));
14994 value_expr((yyvsp[0].node));
14995 (yyval.node) = NEW_DOT3((yyvsp[-2].node), (yyvsp[0].node), &(yyloc));
14999#line 15000 "parse.c"
15003#line 5461 "parse.y"
15006 value_expr((yyvsp[-1].node));
15007 (yyval.node) = NEW_DOT2((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
15011#line 15012 "parse.c"
15015#line 5469 "parse.y"
15018 value_expr((yyvsp[-1].node));
15019 (yyval.node) = NEW_DOT3((yyvsp[-1].node), new_nil_at(p, &(yylsp[0]).end_pos), &(yyloc));
15023#line 15024 "parse.c"
15027#line 5480 "parse.y"
15030 value_expr((yyvsp[0].node));
15031 (yyval.node) = NEW_DOT2(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
15035#line 15036 "parse.c"
15039#line 5488 "parse.y"
15042 value_expr((yyvsp[0].node));
15043 (yyval.node) = NEW_DOT3(new_nil_at(p, &(yylsp[-1]).beg_pos), (yyvsp[0].node), &(yyloc));
15047#line 15048 "parse.c"
15051#line 5506 "parse.y"
15054 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
15058#line 15059 "parse.c"
15062#line 5516 "parse.y"
15065 error_duplicate_pattern_variable(p, (yyvsp[0].
id), &(yylsp[0]));
15066 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15070#line 15071 "parse.c"
15074#line 5526 "parse.y"
15077 NODE *n = gettable(p, (yyvsp[0].
id), &(yyloc));
15078 if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
15079 compile_error(p,
"%"PRIsVALUE
": no such local variable", rb_id2str((yyvsp[0].
id)));
15085#line 15086 "parse.c"
15089#line 5537 "parse.y"
15092 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
15096#line 15097 "parse.c"
15100#line 5546 "parse.y"
15103 (yyval.node) = NEW_BEGIN((yyvsp[-1].node), &(yyloc));
15107#line 15108 "parse.c"
15111#line 5555 "parse.y"
15114 (yyval.node) = NEW_COLON3((yyvsp[0].
id), &(yyloc));
15118#line 15119 "parse.c"
15122#line 5562 "parse.y"
15125 (yyval.node) = NEW_COLON2((yyvsp[-2].node), (yyvsp[0].id), &(yyloc));
15129#line 15130 "parse.c"
15133#line 5569 "parse.y"
15136 (yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc));
15140#line 15141 "parse.c"
15144#line 5580 "parse.y"
15147 NODE *body = (yyvsp[-1].node);
15148 if ((yyvsp[-3].node)) {
15149 NODE *err = NEW_ERRINFO(&(yylsp[-3]));
15150 err = node_assign(p, (yyvsp[-3].node), err, NO_LEX_CTXT, &(yylsp[-3]));
15151 body = block_append(p, err, body);
15153 (yyval.node) = NEW_RESBODY((yyvsp[-4].node), body, (yyvsp[0].node), &(yyloc));
15154 if ((yyvsp[-4].node)) {
15155 fixpos((yyval.node), (yyvsp[-4].node));
15157 else if ((yyvsp[-3].node)) {
15158 fixpos((yyval.node), (yyvsp[-3].node));
15161 fixpos((yyval.node), (yyvsp[-1].node));
15166#line 15167 "parse.c"
15170#line 5605 "parse.y"
15173 (yyval.node) = NEW_LIST((yyvsp[0].node), &(yyloc));
15177#line 15178 "parse.c"
15181#line 5612 "parse.y"
15184 if (!((yyval.node) = splat_array((yyvsp[0].node)))) (yyval.node) = (yyvsp[0].node);
15188#line 15189 "parse.c"
15192#line 5622 "parse.y"
15194 (yyval.node) = (yyvsp[0].node);
15196#line 15197 "parse.c"
15200#line 5629 "parse.y"
15202 p->ctxt.in_rescue = (yyvsp[-1].ctxt).in_rescue;
15204 (yyval.node) = (yyvsp[0].node);
15208#line 15209 "parse.c"
15212#line 5644 "parse.y"
15215 NODE *node = (yyvsp[0].node);
15217 node = NEW_STR(STR_NEW0(), &(yyloc));
15221 node = evstr2dstr(p, node);
15223 (yyval.node) = node;
15227#line 15228 "parse.c"
15231#line 5663 "parse.y"
15234 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15238#line 15239 "parse.c"
15242#line 5672 "parse.y"
15245 (yyval.node) = heredoc_dedent(p, (yyvsp[-1].node));
15246 if ((yyval.node)) nd_set_loc((yyval.node), &(yyloc));
15250#line 15251 "parse.c"
15254#line 5682 "parse.y"
15257 (yyval.node) = new_xstring(p, heredoc_dedent(p, (yyvsp[-1].node)), &(yyloc));
15261#line 15262 "parse.c"
15265#line 5691 "parse.y"
15267 (yyval.node) = new_regexp(p, (yyvsp[-1].node), (yyvsp[0].num), &(yyloc));
15269#line 15270 "parse.c"
15273#line 5696 "parse.y"
15275#line 15276 "parse.c"
15279#line 5701 "parse.y"
15282 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
15286#line 15287 "parse.c"
15290#line 5710 "parse.y"
15297#line 15298 "parse.c"
15301#line 5717 "parse.y"
15304 (yyval.node) = list_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
15308#line 15309 "parse.c"
15312#line 5728 "parse.y"
15315 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15319#line 15320 "parse.c"
15323#line 5737 "parse.y"
15326 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
15330#line 15331 "parse.c"
15334#line 5746 "parse.y"
15341#line 15342 "parse.c"
15345#line 5753 "parse.y"
15348 (yyval.node) = symbol_append(p, (yyvsp[-2].node), evstr2dstr(p, (yyvsp[-1].node)));
15352#line 15353 "parse.c"
15356#line 5762 "parse.y"
15359 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
15363#line 15364 "parse.c"
15367#line 5771 "parse.y"
15370 (yyval.node) = make_list((yyvsp[-1].node), &(yyloc));
15374#line 15375 "parse.c"
15378#line 5780 "parse.y"
15385#line 15386 "parse.c"
15389#line 5787 "parse.y"
15392 (yyval.node) = list_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
15396#line 15397 "parse.c"
15400#line 5796 "parse.y"
15407#line 15408 "parse.c"
15411#line 5803 "parse.y"
15414 (yyval.node) = symbol_append(p, (yyvsp[-2].node), (yyvsp[-1].node));
15418#line 15419 "parse.c"
15422#line 5812 "parse.y"
15433#line 15434 "parse.c"
15437#line 5823 "parse.y"
15440 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15453#line 15454 "parse.c"
15457#line 5841 "parse.y"
15464#line 15465 "parse.c"
15468#line 5848 "parse.y"
15471 (yyval.node) = literal_concat(p, (yyvsp[-1].node), (yyvsp[0].node), &(yyloc));
15475#line 15476 "parse.c"
15479#line 5857 "parse.y"
15490#line 15491 "parse.c"
15494#line 5868 "parse.y"
15497 NODE *head = (yyvsp[-1].node), *tail = (yyvsp[0].node);
15499 (yyval.node) = tail;
15502 (yyval.node) = head;
15505 switch (nd_type(head)) {
15507 head = str2dstr(p, head);
15512 head = list_append(p, NEW_DSTR(
Qnil, &(yyloc)), head);
15515 (yyval.node) = list_append(p, head, tail);
15533#line 15534 "parse.c"
15537#line 5911 "parse.y"
15540 (yyval.strterm) = p->lex.strterm;
15541 p->lex.strterm = 0;
15542 SET_LEX_STATE(EXPR_BEG);
15544#line 15545 "parse.c"
15548#line 5918 "parse.y"
15550 p->lex.strterm = (yyvsp[-1].strterm);
15552 (yyval.node) = NEW_EVSTR((yyvsp[0].node), &(yyloc));
15553 nd_set_line((yyval.node), (yylsp[0]).end_pos.lineno);
15557#line 15558 "parse.c"
15561#line 5927 "parse.y"
15566 (yyvsp[0].strterm) = p->lex.strterm;
15567 p->lex.strterm = 0;
15568 (yyval.num) = p->lex.state;
15569 SET_LEX_STATE(EXPR_BEG);
15571#line 15572 "parse.c"
15575#line 5936 "parse.y"
15577 (yyval.num) = p->lex.brace_nest;
15578 p->lex.brace_nest = 0;
15580#line 15581 "parse.c"
15584#line 5940 "parse.y"
15586 (yyval.num) = p->heredoc_indent;
15587 p->heredoc_indent = 0;
15589#line 15590 "parse.c"
15593#line 5945 "parse.y"
15597 p->lex.strterm = (yyvsp[-5].strterm);
15598 SET_LEX_STATE((yyvsp[-4].num));
15599 p->lex.brace_nest = (yyvsp[-3].num);
15600 p->heredoc_indent = (yyvsp[-2].num);
15601 p->heredoc_line_indent = -1;
15603 if ((yyvsp[-1].node)) nd_unset_fl_newline((yyvsp[-1].node));
15604 (yyval.node) = new_evstr(p, (yyvsp[-1].node), &(yyloc));
15608#line 15609 "parse.c"
15612#line 5966 "parse.y"
15615 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
15619#line 15620 "parse.c"
15623#line 5980 "parse.y"
15625 SET_LEX_STATE(EXPR_END);
15627 (yyval.node) = NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yyloc));
15631#line 15632 "parse.c"
15635#line 5994 "parse.y"
15637 SET_LEX_STATE(EXPR_END);
15639 (yyval.node) = dsym_node(p, (yyvsp[-1].node), &(yyloc));
15643#line 15644 "parse.c"
15647#line 6005 "parse.y"
15650 (yyval.node) = (yyvsp[0].node);
15651 RB_OBJ_WRITE(p->ast, &RNODE_LIT((yyval.node))->nd_lit, negate_lit(p, RNODE_LIT((yyval.node))->nd_lit));
15655#line 15656 "parse.c"
15659#line 6030 "parse.y"
15660 {(yyval.id) = KWD2EID(nil, (yyvsp[0].
id));}
15661#line 15662 "parse.c"
15665#line 6031 "parse.y"
15666 {(yyval.id) = KWD2EID(self, (yyvsp[0].
id));}
15667#line 15668 "parse.c"
15671#line 6032 "parse.y"
15672 {(yyval.id) = KWD2EID(
true, (yyvsp[0].
id));}
15673#line 15674 "parse.c"
15677#line 6033 "parse.y"
15678 {(yyval.id) = KWD2EID(
false, (yyvsp[0].
id));}
15679#line 15680 "parse.c"
15683#line 6034 "parse.y"
15684 {(yyval.id) = KWD2EID(_FILE__, (yyvsp[0].
id));}
15685#line 15686 "parse.c"
15689#line 6035 "parse.y"
15690 {(yyval.id) = KWD2EID(_LINE__, (yyvsp[0].
id));}
15691#line 15692 "parse.c"
15695#line 6036 "parse.y"
15696 {(yyval.id) = KWD2EID(_ENCODING__, (yyvsp[0].
id));}
15697#line 15698 "parse.c"
15701#line 6040 "parse.y"
15704 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
15714#line 15715 "parse.c"
15718#line 6053 "parse.y"
15721 if (!((yyval.node) = gettable(p, (yyvsp[0].
id), &(yyloc)))) (yyval.node) = NEW_BEGIN(0, &(yyloc));
15725#line 15726 "parse.c"
15729#line 6062 "parse.y"
15732 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15736#line 15737 "parse.c"
15740#line 6069 "parse.y"
15743 (yyval.node) = assignable(p, (yyvsp[0].
id), 0, &(yyloc));
15747#line 15748 "parse.c"
15751#line 6082 "parse.y"
15753 SET_LEX_STATE(EXPR_BEG);
15754 p->command_start = TRUE;
15756#line 15757 "parse.c"
15760#line 6087 "parse.y"
15762 (yyval.node) = (yyvsp[-1].node);
15764#line 15765 "parse.c"
15768#line 6091 "parse.y"
15775#line 15776 "parse.c"
15779#line 6101 "parse.y"
15781 p->ctxt.in_argdef = 0;
15782 (yyval.node_args) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[-1]));
15783 (yyval.node_args) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyval.node_args), &(yylsp[-1]));
15785#line 15786 "parse.c"
15789#line 6109 "parse.y"
15792 (yyval.node_args) = (yyvsp[-1].node_args);
15795 SET_LEX_STATE(EXPR_BEG);
15796 p->command_start = TRUE;
15797 p->ctxt.in_argdef = 0;
15799#line 15800 "parse.c"
15803#line 6121 "parse.y"
15805 (yyval.ctxt) = p->ctxt;
15806 p->ctxt.in_kwarg = 1;
15807 p->ctxt.in_argdef = 1;
15808 SET_LEX_STATE(p->lex.state|EXPR_LABEL);
15810#line 15811 "parse.c"
15814#line 6128 "parse.y"
15816 p->ctxt.in_kwarg = (yyvsp[-2].ctxt).in_kwarg;
15817 p->ctxt.in_argdef = 0;
15818 (yyval.node_args) = (yyvsp[-1].node_args);
15819 SET_LEX_STATE(EXPR_BEG);
15820 p->command_start = TRUE;
15822#line 15823 "parse.c"
15826#line 6138 "parse.y"
15828 (yyval.node_args) = new_args_tail(p, (yyvsp[-3].node_kw_arg), (yyvsp[-1].id), (yyvsp[0].
id), &(yylsp[-1]));
15830#line 15831 "parse.c"
15834#line 6142 "parse.y"
15836 (yyval.node_args) = new_args_tail(p, (yyvsp[-1].node_kw_arg), Qnone, (yyvsp[0].id), &(yylsp[-1]));
15838#line 15839 "parse.c"
15842#line 6146 "parse.y"
15844 (yyval.node_args) = new_args_tail(p, Qnone, (yyvsp[-1].
id), (yyvsp[0].id), &(yylsp[-1]));
15846#line 15847 "parse.c"
15850#line 6150 "parse.y"
15852 (yyval.node_args) = new_args_tail(p, Qnone, Qnone, (yyvsp[0].
id), &(yylsp[0]));
15854#line 15855 "parse.c"
15858#line 6154 "parse.y"
15860 add_forwarding_args(p);
15861 (yyval.node_args) = new_args_tail(p, Qnone, (yyvsp[0].
id), arg_FWD_BLOCK, &(yylsp[0]));
15863 (yyval.node_args)->nd_ainfo.forwarding = 1;
15866#line 15867 "parse.c"
15870#line 6164 "parse.y"
15872 (yyval.node_args) = (yyvsp[0].node_args);
15874#line 15875 "parse.c"
15878#line 6168 "parse.y"
15880 (yyval.node_args) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
15882#line 15883 "parse.c"
15886#line 6174 "parse.y"
15888 (yyval.node_args) = new_args(p, (yyvsp[-5].node_args_aux), (yyvsp[-3].node_opt_arg), (yyvsp[-1].
id), Qnone, (yyvsp[0].node_args), &(yyloc));
15890#line 15891 "parse.c"
15894#line 6178 "parse.y"
15896 (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));
15898#line 15899 "parse.c"
15902#line 6182 "parse.y"
15904 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), (yyvsp[-1].node_opt_arg), Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
15906#line 15907 "parse.c"
15910#line 6186 "parse.y"
15912 (yyval.node_args) = new_args(p, (yyvsp[-5].node_args_aux), (yyvsp[-3].node_opt_arg), Qnone, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15914#line 15915 "parse.c"
15918#line 6190 "parse.y"
15920 (yyval.node_args) = new_args(p, (yyvsp[-3].node_args_aux), Qnone, (yyvsp[-1].id), Qnone, (yyvsp[0].node_args), &(yyloc));
15922#line 15923 "parse.c"
15926#line 6194 "parse.y"
15928 (yyval.node_args) = new_args(p, (yyvsp[-5].node_args_aux), Qnone, (yyvsp[-3].id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15930#line 15931 "parse.c"
15934#line 6198 "parse.y"
15936 (yyval.node_args) = new_args(p, (yyvsp[-1].node_args_aux), Qnone, Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
15938#line 15939 "parse.c"
15942#line 6202 "parse.y"
15944 (yyval.node_args) = new_args(p, Qnone, (yyvsp[-3].node_opt_arg), (yyvsp[-1].id), Qnone, (yyvsp[0].node_args), &(yyloc));
15946#line 15947 "parse.c"
15950#line 6206 "parse.y"
15952 (yyval.node_args) = new_args(p, Qnone, (yyvsp[-5].node_opt_arg), (yyvsp[-3].id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15954#line 15955 "parse.c"
15958#line 6210 "parse.y"
15960 (yyval.node_args) = new_args(p, Qnone, (yyvsp[-1].node_opt_arg), Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
15962#line 15963 "parse.c"
15966#line 6214 "parse.y"
15968 (yyval.node_args) = new_args(p, Qnone, (yyvsp[-3].node_opt_arg), Qnone, (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15970#line 15971 "parse.c"
15974#line 6218 "parse.y"
15976 (yyval.node_args) = new_args(p, Qnone, Qnone, (yyvsp[-1].
id), Qnone, (yyvsp[0].node_args), &(yyloc));
15978#line 15979 "parse.c"
15982#line 6222 "parse.y"
15984 (yyval.node_args) = new_args(p, Qnone, Qnone, (yyvsp[-3].
id), (yyvsp[-1].node_args_aux), (yyvsp[0].node_args), &(yyloc));
15986#line 15987 "parse.c"
15990#line 6226 "parse.y"
15992 (yyval.node_args) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyvsp[0].node_args), &(yyloc));
15994#line 15995 "parse.c"
15998#line 6230 "parse.y"
16000 (yyval.node_args) = new_args_tail(p, Qnone, Qnone, Qnone, &(yylsp[0]));
16001 (yyval.node_args) = new_args(p, Qnone, Qnone, Qnone, Qnone, (yyval.node_args), &(yylsp[0]));
16003#line 16004 "parse.c"
16007#line 6237 "parse.y"
16010#ifdef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
16013 (yyval.id) = idFWD_KWREST;
16018#line 16019 "parse.c"
16022#line 6250 "parse.y"
16024 static const char mesg[] =
"formal argument cannot be a constant";
16026 yyerror1(&(yylsp[0]), mesg);
16031#line 16032 "parse.c"
16035#line 6259 "parse.y"
16037 static const char mesg[] =
"formal argument cannot be an instance variable";
16039 yyerror1(&(yylsp[0]), mesg);
16044#line 16045 "parse.c"
16048#line 6268 "parse.y"
16050 static const char mesg[] =
"formal argument cannot be a global variable";
16052 yyerror1(&(yylsp[0]), mesg);
16057#line 16058 "parse.c"
16061#line 6277 "parse.y"
16063 static const char mesg[] =
"formal argument cannot be a class variable";
16065 yyerror1(&(yylsp[0]), mesg);
16070#line 16071 "parse.c"
16074#line 6289 "parse.y"
16076 formal_argument(p, (yyvsp[0].
id));
16077 p->max_numparam = ORDINAL_PARAM;
16078 (yyval.id) = (yyvsp[0].
id);
16080#line 16081 "parse.c"
16084#line 6297 "parse.y"
16086 ID id = get_id((yyvsp[0].
id));
16089 (yyval.id) = (yyvsp[0].
id);
16091#line 16092 "parse.c"
16095#line 6306 "parse.y"
16099 (yyval.node_args_aux) = NEW_ARGS_AUX((yyvsp[0].
id), 1, &NULL_LOC);
16103#line 16104 "parse.c"
16107#line 6314 "parse.y"
16110 ID tid = internal_id(p);
16112 loc.beg_pos = (yylsp[-1]).beg_pos;
16113 loc.end_pos = (yylsp[-1]).beg_pos;
16115 if (dyna_in_block(p)) {
16116 (yyvsp[-1].node_masgn)->nd_value = NEW_DVAR(tid, &loc);
16119 (yyvsp[-1].node_masgn)->nd_value = NEW_LVAR(tid, &loc);
16121 (yyval.node_args_aux) = NEW_ARGS_AUX(tid, 1, &NULL_LOC);
16122 (yyval.node_args_aux)->nd_next = (
NODE *)(yyvsp[-1].node_masgn);
16126#line 16127 "parse.c"
16130#line 6337 "parse.y"
16133 (yyval.node_args_aux) = (yyvsp[-2].node_args_aux);
16134 (yyval.node_args_aux)->nd_plen++;
16135 (yyval.node_args_aux)->nd_next = block_append(p, (yyval.node_args_aux)->nd_next, (yyvsp[0].node_args_aux)->nd_next);
16136 rb_discard_node(p, (
NODE *)(yyvsp[0].node_args_aux));
16140#line 16141 "parse.c"
16144#line 6350 "parse.y"
16146 arg_var(p, formal_argument(p, (yyvsp[0].
id)));
16147 p->cur_arg = get_id((yyvsp[0].
id));
16148 p->max_numparam = ORDINAL_PARAM;
16149 p->ctxt.in_argdef = 0;
16150 (yyval.id) = (yyvsp[0].
id);
16152#line 16153 "parse.c"
16156#line 6360 "parse.y"
16159 p->ctxt.in_argdef = 1;
16161 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
16165#line 16166 "parse.c"
16169#line 6369 "parse.y"
16172 p->ctxt.in_argdef = 1;
16174 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
16178#line 16179 "parse.c"
16182#line 6380 "parse.y"
16184 p->ctxt.in_argdef = 1;
16186 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[-1].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
16190#line 16191 "parse.c"
16194#line 6388 "parse.y"
16196 p->ctxt.in_argdef = 1;
16198 (yyval.node_kw_arg) = new_kw_arg(p, assignable(p, (yyvsp[0].
id), NODE_SPECIAL_REQUIRED_KEYWORD, &(yyloc)), &(yyloc));
16202#line 16203 "parse.c"
16206#line 6398 "parse.y"
16209 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
16213#line 16214 "parse.c"
16217#line 6405 "parse.y"
16220 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
16224#line 16225 "parse.c"
16228#line 6415 "parse.y"
16231 (yyval.node_kw_arg) = (yyvsp[0].node_kw_arg);
16235#line 16236 "parse.c"
16239#line 6422 "parse.y"
16242 (yyval.node_kw_arg) = kwd_append((yyvsp[-2].node_kw_arg), (yyvsp[0].node_kw_arg));
16246#line 16247 "parse.c"
16250#line 6435 "parse.y"
16256#line 16257 "parse.c"
16260#line 6443 "parse.y"
16262 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].
id))));
16264 (yyval.id) = (yyvsp[0].
id);
16268#line 16269 "parse.c"
16272#line 6451 "parse.y"
16274 arg_var(p, idFWD_KWREST);
16276 (yyval.id) = idFWD_KWREST;
16280#line 16281 "parse.c"
16284#line 6461 "parse.y"
16287 p->ctxt.in_argdef = 1;
16289 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
16293#line 16294 "parse.c"
16297#line 6472 "parse.y"
16300 p->ctxt.in_argdef = 1;
16302 (yyval.node_opt_arg) = NEW_OPT_ARG(assignable(p, (yyvsp[-2].
id), (yyvsp[0].node), &(yyloc)), &(yyloc));
16306#line 16307 "parse.c"
16310#line 6483 "parse.y"
16313 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
16317#line 16318 "parse.c"
16321#line 6490 "parse.y"
16324 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
16328#line 16329 "parse.c"
16332#line 6499 "parse.y"
16335 (yyval.node_opt_arg) = (yyvsp[0].node_opt_arg);
16339#line 16340 "parse.c"
16343#line 6506 "parse.y"
16346 (yyval.node_opt_arg) = opt_arg_append((yyvsp[-2].node_opt_arg), (yyvsp[0].node_opt_arg));
16350#line 16351 "parse.c"
16354#line 6519 "parse.y"
16356 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].
id))));
16358 (yyval.id) = (yyvsp[0].
id);
16362#line 16363 "parse.c"
16366#line 6527 "parse.y"
16368 arg_var(p, idFWD_REST);
16370 (yyval.id) = idFWD_REST;
16374#line 16375 "parse.c"
16378#line 6541 "parse.y"
16380 arg_var(p, shadowing_lvar(p, get_id((yyvsp[0].
id))));
16382 (yyval.id) = (yyvsp[0].
id);
16386#line 16387 "parse.c"
16390#line 6549 "parse.y"
16392 arg_var(p, idFWD_BLOCK);
16394 (yyval.id) = idFWD_BLOCK;
16398#line 16399 "parse.c"
16402#line 6559 "parse.y"
16404 (yyval.id) = (yyvsp[0].
id);
16406#line 16407 "parse.c"
16410#line 6563 "parse.y"
16412 (yyval.id) = Qnull;
16414#line 16415 "parse.c"
16418#line 6569 "parse.y"
16420 value_expr((yyvsp[0].node));
16421 (yyval.node) = (yyvsp[0].node);
16423#line 16424 "parse.c"
16427#line 6573 "parse.y"
16428 {SET_LEX_STATE(EXPR_BEG);}
16429#line 16430 "parse.c"
16433#line 6574 "parse.y"
16436 NODE *expr = last_expr_node((yyvsp[-1].node));
16437 switch (nd_type(expr)) {
16447 yyerror1(&expr->nd_loc,
"can't define singleton method for literals");
16450 value_expr((yyvsp[-1].node));
16453 (yyval.node) = (yyvsp[-1].node);
16457#line 16458 "parse.c"
16461#line 6601 "parse.y"
16464 (yyval.node) = (yyvsp[-1].node);
16468#line 16469 "parse.c"
16472#line 6612 "parse.y"
16475 NODE *assocs = (yyvsp[-2].node);
16476 NODE *tail = (yyvsp[0].node);
16481 if (RNODE_LIST(assocs)->nd_head &&
16482 !RNODE_LIST(tail)->nd_head && nd_type_p(RNODE_LIST(tail)->nd_next, NODE_LIST) &&
16483 nd_type_p(RNODE_LIST(RNODE_LIST(tail)->nd_next)->nd_head, NODE_HASH)) {
16485 tail = RNODE_HASH(RNODE_LIST(RNODE_LIST(tail)->nd_next)->nd_head)->nd_head;
16487 assocs = list_concat(assocs, tail);
16489 (yyval.node) = assocs;
16493#line 16494 "parse.c"
16497#line 6635 "parse.y"
16500 if (nd_type_p((yyvsp[-2].node), NODE_STR)) {
16501 nd_set_type((yyvsp[-2].node), NODE_LIT);
16502 RB_OBJ_WRITE(p->ast, &RNODE_LIT((yyvsp[-2].node))->nd_lit, rb_fstring(RNODE_LIT((yyvsp[-2].node))->nd_lit));
16504 (yyval.node) = list_append(p, NEW_LIST((yyvsp[-2].node), &(yyloc)), (yyvsp[0].node));
16508#line 16509 "parse.c"
16512#line 6646 "parse.y"
16515 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[-1].
id)), &(yylsp[-1])), &(yyloc)), (yyvsp[0].node));
16519#line 16520 "parse.c"
16523#line 6653 "parse.y"
16526 NODE *val = gettable(p, (yyvsp[0].
id), &(yyloc));
16527 if (!val) val = NEW_BEGIN(0, &(yyloc));
16528 (yyval.node) = list_append(p, NEW_LIST(NEW_LIT(
ID2SYM((yyvsp[0].
id)), &(yylsp[0])), &(yyloc)), val);
16532#line 16533 "parse.c"
16536#line 6662 "parse.y"
16539 YYLTYPE loc = code_loc_gen(&(yylsp[-3]), &(yylsp[-1]));
16540 (yyval.node) = list_append(p, NEW_LIST(dsym_node(p, (yyvsp[-2].node), &loc), &loc), (yyvsp[0].node));
16544#line 16545 "parse.c"
16548#line 6670 "parse.y"
16551 if (nd_type_p((yyvsp[0].node), NODE_HASH) &&
16552 !(RNODE_HASH((yyvsp[0].node))->nd_head && RNODE_LIST(RNODE_HASH((yyvsp[0].node))->nd_head)->as.nd_alen)) {
16553 static VALUE empty_hash;
16555 empty_hash = rb_obj_freeze(rb_hash_new());
16556 rb_gc_register_mark_object(empty_hash);
16558 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), NEW_LIT(empty_hash, &(yyloc)));
16561 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)), (yyvsp[0].node));
16565#line 16566 "parse.c"
16569#line 6687 "parse.y"
16571 forwarding_arg_check(p, idFWD_KWREST, idFWD_ALL,
"keyword rest");
16573 (yyval.node) = list_append(p, NEW_LIST(0, &(yyloc)),
16574 NEW_LVAR(idFWD_KWREST, &(yyloc)));
16578#line 16579 "parse.c"
16582#line 6744 "parse.y"
16583 {yyerrok;token_flush(p);}
16584#line 16585 "parse.c"
16588#line 6746 "parse.y"
16590 (yyloc).end_pos = (yyloc).beg_pos;
16593#line 16594 "parse.c"
16597#line 6753 "parse.y"
16599#line 16600 "parse.c"
16603#line 6757 "parse.y"
16605 (yyval.node) = Qnull;
16607#line 16608 "parse.c"
16611#line 16612 "parse.c"
16626 YY_SYMBOL_PRINT (
"-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc, p);
16628 YYPOPSTACK (yylen);
16638 const int yylhs = yyr1[yyn] - YYNTOKENS;
16639 const int yyi = yypgoto[yylhs] + *yyssp;
16640 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
16642 : yydefgoto[yylhs]);
16654 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
16661 = {yyssp, yytoken, &yylloc};
16662 char const *yymsgp = YY_(
"syntax error");
16663 int yysyntax_error_status;
16664 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
16665 if (yysyntax_error_status == 0)
16667 else if (yysyntax_error_status == -1)
16669 if (yymsg != yymsgbuf)
16670 YYSTACK_FREE (yymsg);
16671 yymsg = YY_CAST (
char *,
16672 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
16675 yysyntax_error_status
16676 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx, p);
16682 yymsg_alloc =
sizeof yymsgbuf;
16683 yysyntax_error_status = YYENOMEM;
16686 yyerror (&yylloc, p, yymsgp);
16687 if (yysyntax_error_status == YYENOMEM)
16692 yyerror_range[1] = yylloc;
16693 if (yyerrstatus == 3)
16698 if (yychar <= END_OF_INPUT)
16701 if (yychar == END_OF_INPUT)
16706 yydestruct (
"Error: discarding",
16707 yytoken, &yylval, &yylloc, p);
16729 YYPOPSTACK (yylen);
16731 YY_STACK_PRINT (yyss, yyssp, p);
16745 yyn = yypact[yystate];
16746 if (!yypact_value_is_default (yyn))
16748 yyn += YYSYMBOL_YYerror;
16749 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
16751 yyn = yytable[yyn];
16761 yyerror_range[1] = *yylsp;
16762 yydestruct (
"Error: popping",
16763 YY_ACCESSING_SYMBOL (yystate), yyvsp, yylsp, p);
16766 YY_STACK_PRINT (yyss, yyssp, p);
16769 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
16771 YY_IGNORE_MAYBE_UNINITIALIZED_END
16773 yyerror_range[2] = yylloc;
16775 YYLLOC_DEFAULT (*yylsp, yyerror_range, 2);
16778 YY_SYMBOL_PRINT (
"Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp, p);
16804 yyerror (&yylloc, p, YY_(
"memory exhausted"));
16813 if (yychar != YYEMPTY)
16817 yytoken = YYTRANSLATE (yychar);
16818 yydestruct (
"Cleanup: discarding lookahead",
16819 yytoken, &yylval, &yylloc, p);
16823 YYPOPSTACK (yylen);
16824 YY_STACK_PRINT (yyss, yyssp, p);
16825 while (yyssp != yyss)
16827 yydestruct (
"Cleanup: popping",
16828 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, yylsp, p);
16833 YYSTACK_FREE (yyss);
16835 if (yymsg != yymsgbuf)
16836 YYSTACK_FREE (yymsg);
16840#line 6761 "parse.y"
16845# define yylval (*p->lval)
16854# define set_yylval_node(x) { \
16855 YYLTYPE _cur_loc; \
16856 rb_parser_set_location(p, &_cur_loc); \
16857 yylval.node = (x); \
16859# define set_yylval_str(x) \
16861 set_yylval_node(NEW_STR(x, &_cur_loc)); \
16862 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
16864# define set_yylval_literal(x) \
16866 set_yylval_node(NEW_LIT(x, &_cur_loc)); \
16867 RB_OBJ_WRITTEN(p->ast, Qnil, x); \
16869# define set_yylval_num(x) (yylval.num = (x))
16870# define set_yylval_id(x) (yylval.id = (x))
16871# define set_yylval_name(x) (yylval.id = (x))
16872# define yylval_id() (yylval.id)
16877 return ripper_new_yylval(p, x,
ID2SYM(x), 0);
16879# define set_yylval_str(x) (yylval.val = add_mark_object(p, (x)))
16880# define set_yylval_num(x) (yylval.val = ripper_new_yylval(p, (x), 0, 0))
16881# define set_yylval_id(x) (void)(x)
16882# define set_yylval_name(x) (void)(yylval.val = ripper_yylval_id(p, x))
16883# define set_yylval_literal(x) add_mark_object(p, (x))
16884# define set_yylval_node(x) (yylval.val = ripper_new_yylval(p, 0, 0, STR_NEW(p->lex.ptok, p->lex.pcur-p->lex.ptok)))
16885# define yylval_id() yylval.id
16886# define _cur_loc NULL_LOC
16889#define set_yylval_noname() set_yylval_id(keyword_nil)
16890#define has_delayed_token(p) (!NIL_P(p->delayed.token))
16893#define literal_flush(p, ptr) ((p)->lex.ptok = (ptr))
16894#define dispatch_scan_event(p, t) parser_dispatch_scan_event(p, t, __LINE__)
16899 const char *
const pcur = p->lex.pcur;
16900 const char *
const ptok = p->lex.ptok;
16901 if (p->keep_tokens && (pcur < ptok)) {
16902 rb_bug(
"lex.pcur < lex.ptok. (line: %d) %"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"|%"PRIdPTRDIFF
"",
16903 p->ruby_sourceline, ptok - p->lex.pbeg, pcur - ptok, p->lex.pend - pcur);
16905 return pcur > ptok;
16911 VALUE ary = rb_ary_new_from_args(4,
16914 rb_obj_freeze(ary);
16920parser_append_tokens(
struct parser_params *p,
VALUE str,
enum yytokentype t,
int line)
16926 token_id = p->token_id;
16927 rb_ary_push(ary,
INT2FIX(token_id));
16928 rb_ary_push(ary,
ID2SYM(parser_token2id(p, t)));
16929 rb_ary_push(ary, str);
16930 rb_ary_push(ary, code_loc_to_ary(p, p->yylloc));
16931 rb_obj_freeze(ary);
16932 rb_ary_push(p->tokens, ary);
16936 rb_parser_printf(p,
"Append tokens (line: %d) %"PRIsVALUE
"\n", line, ary);
16941parser_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t,
int line)
16943 debug_token_line(p,
"parser_dispatch_scan_event", line);
16945 if (!parser_has_token(p))
return;
16947 RUBY_SET_YYLLOC(*p->yylloc);
16949 if (p->keep_tokens) {
16950 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
16951 parser_append_tokens(p, str, t, line);
16957#define dispatch_delayed_token(p, t) parser_dispatch_delayed_token(p, t, __LINE__)
16959parser_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t,
int line)
16961 debug_token_line(p,
"parser_dispatch_delayed_token", line);
16963 if (!has_delayed_token(p))
return;
16965 RUBY_SET_YYLLOC_OF_DELAYED_TOKEN(*p->yylloc);
16967 if (p->keep_tokens) {
16968 parser_append_tokens(p, p->delayed.token, t, line);
16971 p->delayed.token =
Qnil;
16974#define literal_flush(p, ptr) ((void)(ptr))
16976#define yylval_rval (*(RB_TYPE_P(yylval.val, T_NODE) ? &RNODE_RIPPER(yylval.node)->nd_rval : &yylval.val))
16981 if (p->lex.pcur < p->lex.ptok) rb_raise(
rb_eRuntimeError,
"lex.pcur < lex.ptok");
16982 return p->lex.pcur > p->lex.ptok;
16986ripper_scan_event_val(
struct parser_params *p,
enum yytokentype t)
16988 VALUE str = STR_NEW(p->lex.ptok, p->lex.pcur - p->lex.ptok);
16989 VALUE rval = ripper_dispatch1(p, ripper_token2eventid(t), str);
16990 RUBY_SET_YYLLOC(*p->yylloc);
16996ripper_dispatch_scan_event(
struct parser_params *p,
enum yytokentype t)
16998 if (!ripper_has_scan_event(p))
return;
16999 add_mark_object(p, yylval_rval = ripper_scan_event_val(p, t));
17001#define dispatch_scan_event(p, t) ripper_dispatch_scan_event(p, t)
17004ripper_dispatch_delayed_token(
struct parser_params *p,
enum yytokentype t)
17007 int saved_line = p->ruby_sourceline;
17008 const char *saved_tokp = p->lex.ptok;
17010 if (!has_delayed_token(p))
return;
17011 p->ruby_sourceline = p->delayed.beg_line;
17012 p->lex.ptok = p->lex.pbeg + p->delayed.beg_col;
17013 add_mark_object(p, yylval_rval = ripper_dispatch1(p, ripper_token2eventid(t), p->delayed.token));
17014 p->delayed.token =
Qnil;
17015 p->ruby_sourceline = saved_line;
17016 p->lex.ptok = saved_tokp;
17018#define dispatch_delayed_token(p, t) ripper_dispatch_delayed_token(p, t)
17024 return rb_enc_isalnum((
unsigned char)*ptr, enc) || *ptr ==
'_' || !
ISASCII(*ptr);
17030 return !(p)->eofp && is_identchar(p, p->lex.pcur-1, p->lex.pend, p->enc);
17036 return ISASCII(*(p->lex.pcur-1));
17042 int column = 1, nonspc = 0, i;
17043 for (i = 0; i < loc->beg_pos.column; i++, ptr++) {
17044 if (*ptr ==
'\t') {
17045 column = (((column - 1) / TAB_WIDTH) + 1) * TAB_WIDTH;
17048 if (*ptr !=
' ' && *ptr !=
'\t') {
17053 ptinfo->beg = loc->beg_pos;
17054 ptinfo->indent = column;
17055 ptinfo->nonspc = nonspc;
17063 if (!p->token_info_enabled)
return;
17065 ptinfo->token = token;
17066 ptinfo->next = p->token_info;
17067 token_info_setup(ptinfo, p->lex.pbeg, loc);
17069 p->token_info = ptinfo;
17077 if (!ptinfo_beg)
return;
17078 p->token_info = ptinfo_beg->next;
17081 token_info_warn(p, token, ptinfo_beg, 1, loc);
17082 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
17090 if (!ptinfo_beg)
return;
17091 p->token_info = ptinfo_beg->next;
17093 if (ptinfo_beg->beg.lineno != beg_pos.lineno ||
17094 ptinfo_beg->beg.column != beg_pos.column ||
17095 strcmp(ptinfo_beg->token, token)) {
17096 compile_error(p,
"token position mismatch: %d:%d:%s expected but %d:%d:%s",
17097 beg_pos.lineno, beg_pos.column, token,
17098 ptinfo_beg->beg.lineno, ptinfo_beg->beg.column,
17099 ptinfo_beg->token);
17102 ruby_sized_xfree(ptinfo_beg,
sizeof(*ptinfo_beg));
17108 token_info ptinfo_end_body, *ptinfo_end = &ptinfo_end_body;
17109 if (!p->token_info_enabled)
return;
17110 if (!ptinfo_beg)
return;
17111 token_info_setup(ptinfo_end, p->lex.pbeg, loc);
17112 if (ptinfo_beg->beg.lineno == ptinfo_end->beg.lineno)
return;
17113 if (ptinfo_beg->nonspc || ptinfo_end->nonspc)
return;
17114 if (ptinfo_beg->indent == ptinfo_end->indent)
return;
17115 if (!same && ptinfo_beg->indent < ptinfo_end->indent)
return;
17116 rb_warn3L(ptinfo_end->beg.lineno,
17117 "mismatched indentations at '%s' with '%s' at %d",
17118 WARN_S(token), WARN_S(ptinfo_beg->token), WARN_I(ptinfo_beg->beg.lineno));
17122parser_precise_mbclen(
struct parser_params *p,
const char *ptr)
17124 int len = rb_enc_precise_mbclen(ptr, p->lex.pend, p->enc);
17126 compile_error(p,
"invalid multibyte char (%s)", rb_enc_name(p->enc));
17139 int lineno = p->ruby_sourceline;
17143 else if (yylloc->beg_pos.lineno == lineno) {
17144 str = p->lex.lastline;
17149 ruby_show_error_line(p, p->error_buffer, yylloc, lineno, str);
17159 yylloc = RUBY_SET_YYLLOC(current);
17161 else if ((p->ruby_sourceline != yylloc->beg_pos.lineno &&
17162 p->ruby_sourceline != yylloc->end_pos.lineno)) {
17166 parser_compile_error(p, yylloc,
"%s", msg);
17167 parser_show_error_line(p, yylloc);
17175 return parser_yyerror(p, RUBY_SET_YYLLOC(current), msg);
17182 const int max_line_margin = 30;
17183 const char *ptr, *ptr_end, *pt, *pb;
17184 const char *pre =
"", *post =
"", *pend;
17185 const char *code =
"", *caret =
"";
17187 const char *
const pbeg = RSTRING_PTR(str);
17192 if (!yylloc)
return;
17193 pend = RSTRING_END(str);
17194 if (pend > pbeg && pend[-1] ==
'\n') {
17195 if (--pend > pbeg && pend[-1] ==
'\r') --pend;
17199 if (lineno == yylloc->end_pos.lineno &&
17200 (pend - pbeg) > yylloc->end_pos.column) {
17201 pt = pbeg + yylloc->end_pos.column;
17204 ptr = ptr_end = pt;
17205 lim = ptr - pbeg > max_line_margin ? ptr - max_line_margin : pbeg;
17206 while ((lim < ptr) && (*(ptr-1) !=
'\n')) ptr--;
17208 lim = pend - ptr_end > max_line_margin ? ptr_end + max_line_margin : pend;
17209 while ((ptr_end < lim) && (*ptr_end !=
'\n') && (*ptr_end !=
'\r')) ptr_end++;
17211 len = ptr_end - ptr;
17214 ptr = rb_enc_prev_char(pbeg, ptr, pt, rb_enc_get(str));
17215 if (ptr > pbeg) pre =
"...";
17217 if (ptr_end < pend) {
17218 ptr_end = rb_enc_prev_char(pt, ptr_end, pend, rb_enc_get(str));
17219 if (ptr_end < pend) post =
"...";
17223 if (lineno == yylloc->beg_pos.lineno) {
17224 pb += yylloc->beg_pos.column;
17225 if (pb > pt) pb = pt;
17227 if (pb < ptr) pb = ptr;
17228 if (len <= 4 && yylloc->beg_pos.lineno == yylloc->end_pos.lineno) {
17231 if (
RTEST(errbuf)) {
17232 mesg = rb_attr_get(errbuf, idMesg);
17233 if (RSTRING_LEN(mesg) > 0 && *(RSTRING_END(mesg)-1) !=
'\n')
17237 mesg = rb_enc_str_new(0, 0, rb_enc_get(str));
17239 if (!errbuf && rb_stderr_tty_p()) {
17240#define CSI_BEGIN "\033["
17243 CSI_BEGIN
""CSI_SGR
"%s"
17244 CSI_BEGIN
"1"CSI_SGR
"%.*s"
17245 CSI_BEGIN
"1;4"CSI_SGR
"%.*s"
17246 CSI_BEGIN
";1"CSI_SGR
"%.*s"
17247 CSI_BEGIN
""CSI_SGR
"%s"
17250 (
int)(pb - ptr), ptr,
17251 (
int)(pt - pb), pb,
17252 (
int)(ptr_end - pt), pt,
17258 len = ptr_end - ptr;
17259 lim = pt < pend ? pt : pend;
17260 i = (int)(lim - ptr);
17266 *p2++ = *ptr++ ==
'\t' ?
'\t' :
' ';
17272 memset(p2,
'~', (lim - ptr));
17276 rb_str_catf(mesg,
"%s%.*s%s\n""%s%s\n",
17277 pre, (
int)
len, code, post,
17280 if (!errbuf) rb_write_error_str(mesg);
17286 const char *pcur = 0, *ptok = 0;
17287 if (p->ruby_sourceline == yylloc->beg_pos.lineno &&
17288 p->ruby_sourceline == yylloc->end_pos.lineno) {
17289 pcur = p->lex.pcur;
17290 ptok = p->lex.ptok;
17291 p->lex.ptok = p->lex.pbeg + yylloc->beg_pos.column;
17292 p->lex.pcur = p->lex.pbeg + yylloc->end_pos.column;
17294 parser_yyerror0(p, msg);
17296 p->lex.ptok = ptok;
17297 p->lex.pcur = pcur;
17305 dispatch1(parse_error, STR_NEW2(msg));
17318vtable_size(
const struct vtable *tbl)
17320 if (!DVARS_TERMINAL_P(tbl)) {
17339 rb_parser_printf(p,
"vtable_alloc:%d: %p\n", line, (
void *)tbl);
17344#define vtable_alloc(prev) vtable_alloc_gen(p, __LINE__, prev)
17347vtable_free_gen(
struct parser_params *p,
int line,
const char *name,
17352 rb_parser_printf(p,
"vtable_free:%d: %s(%p)\n", line, name, (
void *)tbl);
17355 if (!DVARS_TERMINAL_P(tbl)) {
17357 ruby_sized_xfree(tbl->tbl, tbl->capa *
sizeof(
ID));
17359 ruby_sized_xfree(tbl,
sizeof(*tbl));
17362#define vtable_free(tbl) vtable_free_gen(p, __LINE__, #tbl, tbl)
17365vtable_add_gen(
struct parser_params *p,
int line,
const char *name,
17370 rb_parser_printf(p,
"vtable_add:%d: %s(%p), %s\n",
17371 line, name, (
void *)tbl, rb_id2name(
id));
17374 if (DVARS_TERMINAL_P(tbl)) {
17375 rb_parser_fatal(p,
"vtable_add: vtable is not allocated (%p)", (
void *)tbl);
17378 if (tbl->pos == tbl->capa) {
17379 tbl->capa = tbl->capa * 2;
17380 SIZED_REALLOC_N(tbl->tbl,
ID, tbl->capa, tbl->pos);
17382 tbl->tbl[tbl->pos++] = id;
17384#define vtable_add(tbl, id) vtable_add_gen(p, __LINE__, #tbl, tbl, id)
17388vtable_pop_gen(
struct parser_params *p,
int line,
const char *name,
17389 struct vtable *tbl,
int n)
17392 rb_parser_printf(p,
"vtable_pop:%d: %s(%p), %d\n",
17393 line, name, (
void *)tbl, n);
17395 if (tbl->pos < n) {
17396 rb_parser_fatal(p,
"vtable_pop: unreachable (%d < %d)", tbl->pos, n);
17401#define vtable_pop(tbl, n) vtable_pop_gen(p, __LINE__, #tbl, tbl, n)
17405vtable_included(
const struct vtable * tbl,
ID id)
17409 if (!DVARS_TERMINAL_P(tbl)) {
17410 for (i = 0; i < tbl->pos; i++) {
17411 if (tbl->tbl[i] ==
id) {
17427 return strcmp(p->ruby_sourcefile,
"-e") == 0;
17431yycompile0(
VALUE arg)
17438 if (!compile_for_eval && !
NIL_P(p->ruby_sourcefile_string)) {
17439 if (p->debug_lines && p->ruby_sourceline > 0) {
17440 VALUE str = rb_default_rs;
17441 n = p->ruby_sourceline;
17443 rb_ary_push(p->debug_lines, str);
17447 if (!e_option_supplied(p)) {
17452 if (p->debug_lines) {
17453 RB_OBJ_WRITE(p->ast, &p->ast->body.script_lines, p->debug_lines);
17457#define RUBY_DTRACE_PARSE_HOOK(name) \
17458 if (RUBY_DTRACE_PARSE_##name##_ENABLED()) { \
17459 RUBY_DTRACE_PARSE_##name(p->ruby_sourcefile, p->ruby_sourceline); \
17461 RUBY_DTRACE_PARSE_HOOK(BEGIN);
17463 RUBY_DTRACE_PARSE_HOOK(END);
17464 p->debug_lines = 0;
17466 p->lex.strterm = 0;
17467 p->lex.pcur = p->lex.pbeg = p->lex.pend = 0;
17468 if (n || p->error_p) {
17469 VALUE mesg = p->error_buffer;
17471 mesg = syntax_error_new();
17473 if (!p->error_tolerant) {
17474 rb_set_errinfo(mesg);
17478 tree = p->eval_tree;
17480 tree = NEW_NIL(&NULL_LOC);
17483 VALUE tokens = p->tokens;
17485 NODE *body = parser_append_options(p, RNODE_SCOPE(tree)->nd_body);
17486 prelude = block_append(p, p->eval_tree_begin, body);
17487 RNODE_SCOPE(tree)->nd_body = prelude;
17488 p->ast->body.frozen_string_literal = p->frozen_string_literal;
17489 p->ast->body.coverage_enabled = cov;
17490 if (p->keep_tokens) {
17491 rb_obj_freeze(tokens);
17492 rb_ast_set_tokens(p->ast, tokens);
17495 p->ast->body.root = tree;
17496 if (!p->ast->body.script_lines) p->ast->body.script_lines =
INT2FIX(p->line_count);
17504 if (
NIL_P(fname)) {
17505 p->ruby_sourcefile_string =
Qnil;
17506 p->ruby_sourcefile =
"(none)";
17509 p->ruby_sourcefile_string = rb_fstring(fname);
17512 p->ruby_sourceline = line - 1;
17516 p->ast = ast = rb_ast_new();
17517 compile_callback(yycompile0, (
VALUE)p);
17532 if (!rb_enc_asciicompat(enc)) {
17533 rb_raise(rb_eArgError,
"invalid source encoding");
17541 char *beg, *end, *start;
17544 beg = RSTRING_PTR(s);
17545 len = RSTRING_LEN(s);
17547 if (p->lex.gets_.ptr) {
17548 if (
len == p->lex.gets_.ptr)
return Qnil;
17549 beg += p->lex.gets_.ptr;
17550 len -= p->lex.gets_.ptr;
17552 end = memchr(beg,
'\n',
len);
17553 if (end)
len = ++end - beg;
17554 p->lex.gets_.ptr +=
len;
17555 return rb_str_subseq(s, beg - start,
len);
17561 VALUE line = (*p->lex.gets)(p, p->lex.input);
17562 if (
NIL_P(line))
return line;
17563 must_be_ascii_compatible(p, line);
17564 if (RB_OBJ_FROZEN(line)) line = rb_str_dup(line);
17573 p->lex.gets = lex_get_str;
17574 p->lex.gets_.ptr = 0;
17575 p->lex.input = rb_str_new_frozen(s);
17576 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
17578 return yycompile(p, fname, line);
17584 must_be_ascii_compatible(p, s);
17585 return parser_compile_string(p, f, s, line);
17589rb_ruby_parser_compile_string(
rb_parser_t *p,
const char *f,
VALUE s,
int line)
17591 return rb_ruby_parser_compile_string_path(p, rb_filesystem_str_new_cstr(f), s, line);
17597 return rb_io_gets_internal(io);
17603 p->lex.gets = lex_io_gets;
17604 p->lex.input = file;
17605 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
17607 return yycompile(p, fname, start);
17613 return (*p->lex.gets_.call)(input, p->line_count);
17619 p->lex.gets = lex_generic_gets;
17620 p->lex.gets_.call = lex_gets;
17621 p->lex.input = input;
17622 p->lex.pbeg = p->lex.pcur = p->lex.pend = 0;
17624 return yycompile(p, fname, start);
17628#define STR_FUNC_ESCAPE 0x01
17629#define STR_FUNC_EXPAND 0x02
17630#define STR_FUNC_REGEXP 0x04
17631#define STR_FUNC_QWORDS 0x08
17632#define STR_FUNC_SYMBOL 0x10
17633#define STR_FUNC_INDENT 0x20
17634#define STR_FUNC_LABEL 0x40
17635#define STR_FUNC_LIST 0x4000
17636#define STR_FUNC_TERM 0x8000
17639 str_label = STR_FUNC_LABEL,
17641 str_dquote = (STR_FUNC_EXPAND),
17642 str_xquote = (STR_FUNC_EXPAND),
17643 str_regexp = (STR_FUNC_REGEXP|STR_FUNC_ESCAPE|STR_FUNC_EXPAND),
17644 str_sword = (STR_FUNC_QWORDS|STR_FUNC_LIST),
17645 str_dword = (STR_FUNC_QWORDS|STR_FUNC_EXPAND|STR_FUNC_LIST),
17646 str_ssym = (STR_FUNC_SYMBOL),
17647 str_dsym = (STR_FUNC_SYMBOL|STR_FUNC_EXPAND)
17655 str = rb_enc_str_new(ptr,
len, enc);
17656 if (!(func & STR_FUNC_REGEXP) && rb_enc_asciicompat(enc)) {
17657 if (is_ascii_string(str)) {
17659 else if (rb_is_usascii_enc((
void *)enc0) && enc != rb_utf8_encoding()) {
17660 rb_enc_associate(str, rb_ascii8bit_encoding());
17670 return strterm->flags & STRTERM_HEREDOC;
17674new_strterm(
struct parser_params *p,
int func,
int term,
int paren)
17677 strterm->u.literal.func = func;
17678 strterm->u.literal.term = term;
17679 strterm->u.literal.paren = paren;
17687 strterm->flags |= STRTERM_HEREDOC;
17691#define peek(p,c) peek_n(p, (c), 0)
17692#define peek_n(p,c,n) (!lex_eol_n_p(p, n) && (c) == (unsigned char)(p)->lex.pcur[n])
17693#define peekc(p) peekc_n(p, 0)
17694#define peekc_n(p,n) (lex_eol_n_p(p, n) ? -1 : (unsigned char)(p)->lex.pcur[n])
17697add_delayed_token(
struct parser_params *p,
const char *tok,
const char *end,
int line)
17700 debug_token_line(p,
"add_delayed_token", line);
17704 if (has_delayed_token(p)) {
17705 bool next_line = end_with_newline_p(p, p->delayed.token);
17706 int end_line = (next_line ? 1 : 0) + p->delayed.end_line;
17707 int end_col = (next_line ? 0 : p->delayed.end_col);
17708 if (end_line != p->ruby_sourceline || end_col != tok - p->lex.pbeg) {
17709 dispatch_delayed_token(p, tSTRING_CONTENT);
17712 if (!has_delayed_token(p)) {
17713 p->delayed.token = rb_str_buf_new(end - tok);
17714 rb_enc_associate(p->delayed.token, p->enc);
17715 p->delayed.beg_line = p->ruby_sourceline;
17716 p->delayed.beg_col =
rb_long2int(tok - p->lex.pbeg);
17719 p->delayed.end_line = p->ruby_sourceline;
17720 p->delayed.end_col =
rb_long2int(end - p->lex.pbeg);
17728 p->lex.pbeg = p->lex.pcur = RSTRING_PTR(v);
17729 p->lex.pend = p->lex.pcur + RSTRING_LEN(v);
17730 p->lex.lastline = v;
17736 VALUE v = p->lex.nextline;
17737 p->lex.nextline = 0;
17742 if (!lex_eol_ptr_p(p, p->lex.pbeg) && *(p->lex.pend-1) !=
'\n') {
17746 if (!p->lex.input ||
NIL_P(v = lex_getline(p))) {
17753 if (p->debug_lines) {
17754 if (set_encoding) rb_enc_associate(v, p->enc);
17755 rb_ary_push(p->debug_lines, v);
17758 p->cr_seen = FALSE;
17760 else if (
NIL_P(v)) {
17764 add_delayed_token(p, p->lex.ptok, p->lex.pend, __LINE__);
17765 if (p->heredoc_end > 0) {
17766 p->ruby_sourceline = p->heredoc_end;
17767 p->heredoc_end = 0;
17769 p->ruby_sourceline++;
17770 set_lastline(p, v);
17778 if (peek(p,
'\n')) {
17790 if (UNLIKELY(lex_eol_p(p) || p->eofp ||
RTEST(p->lex.nextline))) {
17791 if (nextline(p, set_encoding))
return -1;
17793 c = (
unsigned char)*p->lex.pcur++;
17794 if (UNLIKELY(c ==
'\r')) {
17795 c = parser_cr(p, c);
17800#define nextc(p) nextc0(p, TRUE)
17805 if (c == -1)
return;
17808 if (p->lex.pcur > p->lex.pbeg && p->lex.pcur[0] ==
'\n' && p->lex.pcur[-1] ==
'\r') {
17813#define was_bol(p) ((p)->lex.pcur == (p)->lex.pbeg + 1)
17815#define tokfix(p) ((p)->tokenbuf[(p)->tokidx]='\0')
17816#define tok(p) (p)->tokenbuf
17817#define toklen(p) (p)->tokidx
17822 const char *ptr = p->lex.pcur;
17823 while (!lex_eol_ptr_p(p, ptr)) {
17824 int c = (
unsigned char)*ptr++;
17825 int eol = (c ==
'\n' || c ==
'#');
17837 if (!p->tokenbuf) {
17839 p->tokenbuf =
ALLOC_N(
char, 60);
17841 if (p->toksiz > 4096) {
17845 return p->tokenbuf;
17853 if (p->tokidx >= p->toksiz) {
17854 do {p->toksiz *= 2;}
while (p->toksiz < p->tokidx);
17855 REALLOC_N(p->tokenbuf,
char, p->toksiz);
17857 return &p->tokenbuf[p->tokidx-n];
17863 p->tokenbuf[p->tokidx++] = (char)c;
17864 if (p->tokidx >= p->toksiz) {
17866 REALLOC_N(p->tokenbuf,
char, p->toksiz);
17875 c = (int)ruby_scan_hex(p->lex.pcur, 2, numlen);
17877 yyerror0(
"invalid hex escape");
17878 dispatch_scan_event(p, tSTRING_CONTENT);
17881 p->lex.pcur += *numlen;
17885#define tokcopy(p, n) memcpy(tokspace(p, n), (p)->lex.pcur - (n), (n))
17888escaped_control_code(
int c)
17914#define WARN_SPACE_CHAR(c, prefix) \
17915 rb_warn1("invalid character syntax; use "prefix"\\%c", WARN_I(c2))
17919 int regexp_literal,
int wide)
17922 int codepoint = (int)ruby_scan_hex(p->lex.pcur, wide ? p->lex.pend - p->lex.pcur : 4, &numlen);
17923 p->lex.pcur += numlen;
17924 if (p->lex.strterm == NULL ||
17925 strterm_is_heredoc(p->lex.strterm) ||
17926 (p->lex.strterm->u.literal.func != str_regexp)) {
17927 if (wide ? (numlen == 0 || numlen > 6) : (numlen < 4)) {
17928 literal_flush(p, p->lex.pcur);
17929 yyerror0(
"invalid Unicode escape");
17930 return wide && numlen > 0;
17932 if (codepoint > 0x10ffff) {
17933 literal_flush(p, p->lex.pcur);
17934 yyerror0(
"invalid Unicode codepoint (too large)");
17937 if ((codepoint & 0xfffff800) == 0xd800) {
17938 literal_flush(p, p->lex.pcur);
17939 yyerror0(
"invalid Unicode codepoint");
17943 if (regexp_literal) {
17944 tokcopy(p, (
int)numlen);
17946 else if (codepoint >= 0x80) {
17948 if (*encp && utf8 != *encp) {
17949 YYLTYPE loc = RUBY_INIT_YYLLOC();
17950 compile_error(p,
"UTF-8 mixed within %s source", rb_enc_name(*encp));
17951 parser_show_error_line(p, &loc);
17955 tokaddmbc(p, codepoint, *encp);
17958 tokadd(p, codepoint);
17968 int len = parser_precise_mbclen(p, p->lex.pcur-1);
17970 p->lex.pcur +=
len - 1;
17978 int term,
int symbol_literal,
int regexp_literal)
17985 static const char multiple_codepoints[] =
"Multiple codepoints at single character literal";
17987 const int open_brace =
'{', close_brace =
'}';
17989 if (regexp_literal) { tokadd(p,
'\\'); tokadd(p,
'u'); }
17991 if (peek(p, open_brace)) {
17992 if (regexp_literal && p->lex.strterm->u.literal.func == str_regexp) {
17999 tokadd(p, open_brace);
18000 while (!lex_eol_ptr_p(p, ++p->lex.pcur)) {
18002 if (c == close_brace) {
18007 else if (c == term) {
18010 if (c ==
'\\' && !lex_eol_n_p(p, 1)) {
18012 c = *++p->lex.pcur;
18014 tokadd_mbchar(p, c);
18018 const char *second = NULL;
18019 int c, last = nextc(p);
18020 if (lex_eol_p(p))
goto unterminated;
18021 while (
ISSPACE(c = peekc(p)) && !lex_eol_ptr_p(p, ++p->lex.pcur));
18022 while (c != close_brace) {
18023 if (c == term)
goto unterminated;
18024 if (second == multiple_codepoints)
18025 second = p->lex.pcur;
18026 if (regexp_literal) tokadd(p, last);
18027 if (!tokadd_codepoint(p, encp, regexp_literal, TRUE)) {
18030 while (
ISSPACE(c = peekc(p))) {
18031 if (lex_eol_ptr_p(p, ++p->lex.pcur))
goto unterminated;
18034 if (term == -1 && !second)
18035 second = multiple_codepoints;
18038 if (c != close_brace) {
18041 yyerror0(
"unterminated Unicode escape");
18044 if (second && second != multiple_codepoints) {
18045 const char *pcur = p->lex.pcur;
18046 p->lex.pcur = second;
18047 dispatch_scan_event(p, tSTRING_CONTENT);
18049 p->lex.pcur = pcur;
18050 yyerror0(multiple_codepoints);
18054 if (regexp_literal) tokadd(p, close_brace);
18059 if (!tokadd_codepoint(p, encp, regexp_literal, FALSE)) {
18066#define ESCAPE_CONTROL 1
18067#define ESCAPE_META 2
18075 switch (c = nextc(p)) {
18100 case '0':
case '1':
case '2':
case '3':
18101 case '4':
case '5':
case '6':
case '7':
18103 c = (int)ruby_scan_oct(p->lex.pcur, 3, &numlen);
18104 p->lex.pcur += numlen;
18108 c = tok_hex(p, &numlen);
18109 if (numlen == 0)
return 0;
18119 if (flags & ESCAPE_META)
goto eof;
18120 if ((c = nextc(p)) !=
'-') {
18123 if ((c = nextc(p)) ==
'\\') {
18124 switch (peekc(p)) {
18125 case 'u':
case 'U':
18129 return read_escape(p, flags|ESCAPE_META) | 0x80;
18131 else if (c == -1 || !
ISASCII(c))
goto eof;
18133 int c2 = escaped_control_code(c);
18135 if (
ISCNTRL(c) || !(flags & ESCAPE_CONTROL)) {
18136 WARN_SPACE_CHAR(c2,
"\\M-");
18139 WARN_SPACE_CHAR(c2,
"\\C-\\M-");
18142 else if (
ISCNTRL(c))
goto eof;
18143 return ((c & 0xff) | 0x80);
18147 if ((c = nextc(p)) !=
'-') {
18151 if (flags & ESCAPE_CONTROL)
goto eof;
18152 if ((c = nextc(p))==
'\\') {
18153 switch (peekc(p)) {
18154 case 'u':
case 'U':
18158 c = read_escape(p, flags|ESCAPE_CONTROL);
18162 else if (c == -1)
goto eof;
18168 int c2 = escaped_control_code(c);
18171 if (flags & ESCAPE_META) {
18172 WARN_SPACE_CHAR(c2,
"\\M-");
18175 WARN_SPACE_CHAR(c2,
"");
18179 if (flags & ESCAPE_META) {
18180 WARN_SPACE_CHAR(c2,
"\\M-\\C-");
18183 WARN_SPACE_CHAR(c2,
"\\C-");
18187 else if (
ISCNTRL(c))
goto eof;
18193 yyerror0(
"Invalid escape character syntax");
18194 dispatch_scan_event(p, tSTRING_CONTENT);
18205 int len = rb_enc_codelen(c, enc);
18206 rb_enc_mbcput(c, tokspace(p,
len), enc);
18215 switch (c = nextc(p)) {
18219 case '0':
case '1':
case '2':
case '3':
18220 case '4':
case '5':
case '6':
case '7':
18222 ruby_scan_oct(--p->lex.pcur, 3, &numlen);
18223 if (numlen == 0)
goto eof;
18224 p->lex.pcur += numlen;
18225 tokcopy(p, (
int)numlen + 1);
18231 tok_hex(p, &numlen);
18232 if (numlen == 0)
return -1;
18233 tokcopy(p, (
int)numlen + 2);
18239 yyerror0(
"Invalid escape character syntax");
18259 while (c = nextc(p),
ISALPHA(c)) {
18261 options |= RE_OPTION_ONCE;
18263 else if (rb_char_to_option_kcode(c, &opt, &kc)) {
18265 if (kc != rb_ascii8bit_encindex()) kcode = c;
18279 YYLTYPE loc = RUBY_INIT_YYLLOC();
18281 compile_error(p,
"unknown regexp option%s - %*s",
18282 toklen(p) > 1 ?
"s" :
"", toklen(p), tok(p));
18283 parser_show_error_line(p, &loc);
18285 return options | RE_OPTION_ENCODING(kcode);
18291 int len = parser_precise_mbclen(p, p->lex.pcur-1);
18292 if (
len < 0)
return -1;
18294 p->lex.pcur += --
len;
18295 if (
len > 0) tokcopy(p,
len);
18300simple_re_meta(
int c)
18303 case '$':
case '*':
case '+':
case '.':
18304 case '?':
case '^':
case '|':
18305 case ')':
case ']':
case '}':
case '>':
18313parser_update_heredoc_indent(
struct parser_params *p,
int c)
18315 if (p->heredoc_line_indent == -1) {
18316 if (c ==
'\n') p->heredoc_line_indent = 0;
18320 p->heredoc_line_indent++;
18323 else if (c ==
'\t') {
18324 int w = (p->heredoc_line_indent / TAB_WIDTH) + 1;
18325 p->heredoc_line_indent = w * TAB_WIDTH;
18328 else if (c !=
'\n') {
18329 if (p->heredoc_indent > p->heredoc_line_indent) {
18330 p->heredoc_indent = p->heredoc_line_indent;
18332 p->heredoc_line_indent = -1;
18341 YYLTYPE loc = RUBY_INIT_YYLLOC();
18342 const char *n1 = rb_enc_name(enc1), *n2 = rb_enc_name(enc2);
18343 compile_error(p,
"%s mixed within %s source", n1, n2);
18344 parser_show_error_line(p, &loc);
18350 const char *pos = p->lex.pcur;
18352 parser_mixed_error(p, enc1, enc2);
18357nibble_char_upper(
unsigned int c)
18360 return c + (c < 10 ?
'0' :
'A' - 10);
18365 int func,
int term,
int paren,
long *nest,
18369 bool erred =
false;
18371 const int heredoc_end = (p->heredoc_end ? p->heredoc_end + 1 : 0);
18372 int top_of_line = FALSE;
18375#define mixed_error(enc1, enc2) \
18376 (void)(erred || (parser_mixed_error(p, enc1, enc2), erred = true))
18377#define mixed_escape(beg, enc1, enc2) \
18378 (void)(erred || (parser_mixed_escape(p, beg, enc1, enc2), erred = true))
18380 while ((c = nextc(p)) != -1) {
18381 if (p->heredoc_indent > 0) {
18382 parser_update_heredoc_indent(p, c);
18385 if (top_of_line && heredoc_end == p->ruby_sourceline) {
18391 if (paren && c == paren) {
18394 else if (c == term) {
18395 if (!nest || !*nest) {
18401 else if ((func & STR_FUNC_EXPAND) && c ==
'#' && !lex_eol_p(p)) {
18402 unsigned char c2 = *p->lex.pcur;
18403 if (c2 ==
'$' || c2 ==
'@' || c2 ==
'{') {
18408 else if (c ==
'\\') {
18412 if (func & STR_FUNC_QWORDS)
break;
18413 if (func & STR_FUNC_EXPAND) {
18414 if (!(func & STR_FUNC_INDENT) || (p->heredoc_indent < 0))
18425 if (func & STR_FUNC_ESCAPE) tokadd(p, c);
18429 if ((func & STR_FUNC_EXPAND) == 0) {
18433 tokadd_utf8(p, enc, term,
18434 func & STR_FUNC_SYMBOL,
18435 func & STR_FUNC_REGEXP);
18439 if (c == -1)
return -1;
18441 if ((func & STR_FUNC_EXPAND) == 0) tokadd(p,
'\\');
18444 if (func & STR_FUNC_REGEXP) {
18450 c = read_escape(p, 0);
18455 *t++ = nibble_char_upper(c >> 4);
18456 *t++ = nibble_char_upper(c);
18461 if (c == term && !simple_re_meta(c)) {
18466 if ((c = tokadd_escape(p)) < 0)
18468 if (*enc && *enc != *encp) {
18469 mixed_escape(p->lex.ptok+2, *enc, *encp);
18473 else if (func & STR_FUNC_EXPAND) {
18475 if (func & STR_FUNC_ESCAPE) tokadd(p,
'\\');
18476 c = read_escape(p, 0);
18478 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
18481 else if (c != term && !(paren && c == paren)) {
18488 else if (!parser_isascii(p)) {
18493 else if (*enc != *encp) {
18494 mixed_error(*enc, *encp);
18497 if (tokadd_mbchar(p, c) == -1)
return -1;
18500 else if ((func & STR_FUNC_QWORDS) &&
ISSPACE(c)) {
18508 else if (*enc != *encp) {
18509 mixed_error(*enc, *encp);
18515 top_of_line = (c ==
'\n');
18519 if (*enc) *encp = *enc;
18523#define NEW_STRTERM(func, term, paren) new_strterm(p, func, term, paren)
18529 VALUE content = yylval.val;
18530 if (!ripper_is_node_yylval(p, content))
18531 content = ripper_new_yylval(p, 0, 0, content);
18532 if (has_delayed_token(p)) {
18533 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
18535 rb_enc_str_buf_cat(p->delayed.token, p->lex.ptok,
len, enc);
18537 dispatch_delayed_token(p, tSTRING_CONTENT);
18538 p->lex.ptok = p->lex.pcur;
18539 RNODE_RIPPER(content)->nd_rval = yylval.val;
18541 dispatch_scan_event(p, tSTRING_CONTENT);
18542 if (yylval.val != content)
18543 RNODE_RIPPER(content)->nd_rval = yylval.val;
18544 yylval.val = content;
18550 if (has_delayed_token(p)) {
18551 ptrdiff_t
len = p->lex.pcur - p->lex.ptok;
18553 rb_enc_str_buf_cat(p->delayed.token, p->lex.ptok,
len, enc);
18554 p->delayed.end_line = p->ruby_sourceline;
18555 p->delayed.end_col =
rb_long2int(p->lex.pcur - p->lex.pbeg);
18557 dispatch_delayed_token(p, tSTRING_CONTENT);
18558 p->lex.ptok = p->lex.pcur;
18560 dispatch_scan_event(p, tSTRING_CONTENT);
18564RUBY_FUNC_EXPORTED
const uint_least32_t ruby_global_name_punct_bits[(0x7e - 0x20 + 31) / 32];
18568#define BIT(c, idx) (((c) / 32 - 1 == idx) ? (1U << ((c) % 32)) : 0)
18569#define SPECIAL_PUNCT(idx) ( \
18570 BIT('~', idx) | BIT('*', idx) | BIT('$', idx) | BIT('?', idx) | \
18571 BIT('!', idx) | BIT('@', idx) | BIT('/', idx) | BIT('\\', idx) | \
18572 BIT(';', idx) | BIT(',', idx) | BIT('.', idx) | BIT('=', idx) | \
18573 BIT(':', idx) | BIT('<', idx) | BIT('>', idx) | BIT('\"', idx) | \
18574 BIT('&', idx) | BIT('`', idx) | BIT('\'', idx) | BIT('+', idx) | \
18576const uint_least32_t ruby_global_name_punct_bits[] = {
18582#undef SPECIAL_PUNCT
18585static enum yytokentype
18586parser_peek_variable_name(struct parser_params *p)
18589 const char *ptr = p->lex.pcur;
18591 if (lex_eol_ptr_n_p(p, ptr, 1)) return 0;
18595 if ((c = *ptr) == '-') {
18596 if (lex_eol_ptr_p(p, ++ptr)) return 0;
18599 else if (is_global_name_punct(c) || ISDIGIT(c)) {
18600 return tSTRING_DVAR;
18604 if ((c = *ptr) == '@') {
18605 if (lex_eol_ptr_p(p, ++ptr)) return 0;
18611 p->command_start = TRUE;
18612 return tSTRING_DBEG;
18616 if (!ISASCII(c) || c == '_' || ISALPHA(c))
18617 return tSTRING_DVAR;
18621#define IS_ARG() IS_lex_state(EXPR_ARG_ANY)
18622#define IS_END() IS_lex_state(EXPR_END_ANY)
18623#define IS_BEG() (IS_lex_state(EXPR_BEG_ANY) || IS_lex_state_all(EXPR_ARG|EXPR_LABELED))
18624#define IS_SPCARG(c) (IS_ARG() && space_seen && !ISSPACE(c))
18625#define IS_LABEL_POSSIBLE() (\
18626 (IS_lex_state(EXPR_LABEL|EXPR_ENDFN) && !cmd_state) || \
18628#define IS_LABEL_SUFFIX(n) (peek_n(p, ':',(n)) && !peek_n(p, ':', (n)+1))
18629#define IS_AFTER_OPERATOR() IS_lex_state(EXPR_FNAME | EXPR_DOT)
18631static inline enum yytokentype
18632parser_string_term(struct parser_params *p, int func)
18634 xfree(p->lex.strterm);
18635 p->lex.strterm = 0;
18636 if (func & STR_FUNC_REGEXP) {
18637 set_yylval_num(regx_options(p));
18638 dispatch_scan_event(p, tREGEXP_END);
18639 SET_LEX_STATE(EXPR_END);
18640 return tREGEXP_END;
18642 if ((func & STR_FUNC_LABEL) && IS_LABEL_SUFFIX(0)) {
18644 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
18647 SET_LEX_STATE(EXPR_END);
18648 return tSTRING_END;
18651static enum yytokentype
18652parse_string(struct parser_params *p, rb_strterm_literal_t *quote)
18654 int func = quote->func;
18655 int term = quote->term;
18656 int paren = quote->paren;
18658 rb_encoding *enc = p->enc;
18659 rb_encoding *base_enc = 0;
18662 if (func & STR_FUNC_TERM) {
18663 if (func & STR_FUNC_QWORDS) nextc(p); /* delayed term */
18664 SET_LEX_STATE(EXPR_END);
18665 xfree(p->lex.strterm);
18666 p->lex.strterm = 0;
18667 return func & STR_FUNC_REGEXP ? tREGEXP_END : tSTRING_END;
18670 if ((func & STR_FUNC_QWORDS) && ISSPACE(c)) {
18671 while (c != '\n' && ISSPACE(c = nextc(p)));
18674 if (func & STR_FUNC_LIST) {
18675 quote->func &= ~STR_FUNC_LIST;
18678 if (c == term && !quote->nest) {
18679 if (func & STR_FUNC_QWORDS) {
18680 quote->func |= STR_FUNC_TERM;
18681 pushback(p, c); /* dispatch the term at tSTRING_END */
18682 add_delayed_token(p, p->lex.ptok, p->lex.pcur, __LINE__);
18685 return parser_string_term(p, func);
18688 if (!ISSPACE(c)) pushback(p, c);
18689 add_delayed_token(p, p->lex.ptok, p->lex.pcur, __LINE__);
18693 if ((func & STR_FUNC_EXPAND) && c == '#') {
18694 enum yytokentype t = parser_peek_variable_name(p);
18700 if (tokadd_string(p, func, term, paren, "e->nest,
18701 &enc, &base_enc) == -1) {
18704# define unterminated_literal(mesg) yyerror0(mesg)
18706# define unterminated_literal(mesg) compile_error(p, mesg)
18708 literal_flush(p, p->lex.pcur);
18709 if (func & STR_FUNC_QWORDS) {
18710 /* no content to add, bailing out here */
18711 unterminated_literal("unterminated list meets end of file");
18712 xfree(p->lex.strterm);
18713 p->lex.strterm = 0;
18714 return tSTRING_END;
18716 if (func & STR_FUNC_REGEXP) {
18717 unterminated_literal("unterminated regexp meets end of file");
18720 unterminated_literal("unterminated string meets end of file");
18722 quote->func |= STR_FUNC_TERM;
18727 lit = STR_NEW3(tok(p), toklen(p), enc, func);
18728 set_yylval_str(lit);
18729 flush_string_content(p, enc);
18731 return tSTRING_CONTENT;
18734static enum yytokentype
18735heredoc_identifier(struct parser_params *p)
18738 * term_len is length of `<<"END"` except `END`,
18739 * in this case term_len is 4 (<, <, " and ").
18741 long len, offset = p->lex.pcur - p->lex.pbeg;
18742 int c = nextc(p), term, func = 0, quote = 0;
18743 enum yytokentype token = tSTRING_BEG;
18748 func = STR_FUNC_INDENT;
18751 else if (c == '~') {
18753 func = STR_FUNC_INDENT;
18759 func |= str_squote; goto quoted;
18761 func |= str_dquote;
goto quoted;
18763 token = tXSTRING_BEG;
18764 func |= str_xquote;
goto quoted;
18771 while ((c = nextc(p)) != term) {
18772 if (c == -1 || c ==
'\r' || c ==
'\n') {
18773 yyerror0(
"unterminated here document identifier");
18780 if (!parser_is_identchar(p)) {
18782 if (func & STR_FUNC_INDENT) {
18783 pushback(p, indent > 0 ?
'~' :
'-');
18787 func |= str_dquote;
18789 int n = parser_precise_mbclen(p, p->lex.pcur-1);
18790 if (n < 0)
return 0;
18791 p->lex.pcur += --n;
18792 }
while ((c = nextc(p)) != -1 && parser_is_identchar(p));
18797 len = p->lex.pcur - (p->lex.pbeg + offset) - quote;
18798 if ((
unsigned long)
len >= HERETERM_LENGTH_MAX)
18799 yyerror0(
"too long here document identifier");
18800 dispatch_scan_event(p, tHEREDOC_BEG);
18803 p->lex.strterm = new_heredoc(p);
18805 here->offset = offset;
18806 here->sourceline = p->ruby_sourceline;
18807 here->length = (unsigned)
len;
18808 here->quote = quote;
18810 here->lastline = p->lex.lastline;
18811 rb_ast_add_mark_object(p->ast, p->lex.lastline);
18814 p->heredoc_indent = indent;
18815 p->heredoc_line_indent = 0;
18825 p->lex.strterm = 0;
18826 line = here->lastline;
18827 p->lex.lastline = line;
18828 p->lex.pbeg = RSTRING_PTR(line);
18829 p->lex.pend = p->lex.pbeg + RSTRING_LEN(line);
18830 p->lex.pcur = p->lex.pbeg + here->offset + here->length + here->quote;
18831 p->lex.ptok = p->lex.pbeg + here->offset - here->quote;
18832 p->heredoc_end = p->ruby_sourceline;
18833 p->ruby_sourceline = (int)here->sourceline;
18834 if (p->eofp) p->lex.nextline =
Qnil;
18837 rb_ast_delete_mark_object(p->ast, line);
18848 for (i = 0; i <
len && col < width; i++) {
18849 if (str[i] ==
' ') {
18852 else if (str[i] ==
'\t') {
18853 int n = TAB_WIDTH * (col / TAB_WIDTH + 1);
18854 if (n > width)
break;
18862 rb_str_modify(
string);
18863 str = RSTRING_PTR(
string);
18864 if (RSTRING_LEN(
string) !=
len)
18865 rb_fatal(
"literal string changed: %+"PRIsVALUE,
string);
18867 rb_str_set_len(
string,
len - i);
18875 NODE *node, *str_node, *prev_node;
18876 int indent = p->heredoc_indent;
18877 VALUE prev_lit = 0;
18879 if (indent <= 0)
return root;
18880 p->heredoc_indent = 0;
18881 if (!root)
return root;
18883 prev_node = node = str_node = root;
18884 if (nd_type_p(root, NODE_LIST)) str_node = RNODE_LIST(root)->nd_head;
18887 VALUE lit = RNODE_LIT(str_node)->nd_lit;
18888 if (nd_fl_newline(str_node)) {
18889 dedent_string(p, lit, indent);
18894 else if (!literal_concat0(p, prev_lit, lit)) {
18898 NODE *end = RNODE_LIST(node)->as.nd_end;
18899 node = RNODE_LIST(prev_node)->nd_next = RNODE_LIST(node)->nd_next;
18901 if (nd_type_p(prev_node, NODE_DSTR))
18902 nd_set_type(prev_node, NODE_STR);
18905 RNODE_LIST(node)->as.nd_end = end;
18910 while ((nd_type_p(node, NODE_LIST) || nd_type_p(node, NODE_DSTR)) && (node = RNODE_LIST(prev_node = node)->nd_next) != 0) {
18912 if (!nd_type_p(node, NODE_LIST))
break;
18913 if ((str_node = RNODE_LIST(node)->nd_head) != 0) {
18914 enum node_type
type = nd_type(str_node);
18915 if (
type == NODE_STR ||
type == NODE_DSTR)
break;
18927 int indent = p->heredoc_indent;
18929 if (indent <= 0)
return array;
18930 p->heredoc_indent = 0;
18931 dispatch2(heredoc_dedent, array,
INT2NUM(indent));
18937whole_match_p(
struct parser_params *p,
const char *eos,
long len,
int indent)
18939 const char *beg = p->lex.pbeg;
18940 const char *ptr = p->lex.pend;
18942 if (ptr - beg <
len)
return FALSE;
18943 if (ptr > beg && ptr[-1] ==
'\n') {
18944 if (--ptr > beg && ptr[-1] ==
'\r') --ptr;
18945 if (ptr - beg <
len)
return FALSE;
18947 if (strncmp(eos, ptr -=
len,
len))
return FALSE;
18949 while (beg < ptr &&
ISSPACE(*beg)) beg++;
18957 if (strncmp(p->lex.pcur, word,
len))
return 0;
18958 if (lex_eol_n_p(p,
len))
return 1;
18959 int c = (
unsigned char)p->lex.pcur[
len];
18962 case '\0':
case '\004':
case '\032':
return 1;
18967#define NUM_SUFFIX_R (1<<0)
18968#define NUM_SUFFIX_I (1<<1)
18969#define NUM_SUFFIX_ALL 3
18975 const char *lastp = p->lex.pcur;
18977 while ((c = nextc(p)) != -1) {
18978 if ((mask & NUM_SUFFIX_I) && c ==
'i') {
18979 result |= (mask & NUM_SUFFIX_I);
18980 mask &= ~NUM_SUFFIX_I;
18982 mask &= ~NUM_SUFFIX_R;
18985 if ((mask & NUM_SUFFIX_R) && c ==
'r') {
18986 result |= (mask & NUM_SUFFIX_R);
18987 mask &= ~NUM_SUFFIX_R;
18991 p->lex.pcur = lastp;
18992 literal_flush(p, p->lex.pcur);
19001static enum yytokentype
19003 enum yytokentype
type,
int suffix)
19005 if (suffix & NUM_SUFFIX_I) {
19006 v = rb_complex_raw(
INT2FIX(0), v);
19009 set_yylval_literal(v);
19010 SET_LEX_STATE(EXPR_END);
19014static enum yytokentype
19017 enum yytokentype
type = tINTEGER;
19018 if (suffix & NUM_SUFFIX_R) {
19022 return set_number_literal(p, v,
type, suffix);
19030 if (has_delayed_token(p))
19031 dispatch_delayed_token(p, tSTRING_CONTENT);
19032 str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
19033 ripper_dispatch1(p, ripper_token2eventid(tHEREDOC_END), str);
19034 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
19040#define dispatch_heredoc_end(p) parser_dispatch_heredoc_end(p, __LINE__)
19042parser_dispatch_heredoc_end(
struct parser_params *p,
int line)
19044 if (has_delayed_token(p))
19045 dispatch_delayed_token(p, tSTRING_CONTENT);
19047 if (p->keep_tokens) {
19048 VALUE str = STR_NEW(p->lex.ptok, p->lex.pend - p->lex.ptok);
19049 RUBY_SET_YYLLOC_OF_HEREDOC_END(*p->yylloc);
19050 parser_append_tokens(p, str, tHEREDOC_END, line);
19053 RUBY_SET_YYLLOC_FROM_STRTERM_HEREDOC(*p->yylloc);
19059static enum yytokentype
19062 int c, func, indent = 0;
19063 const char *eos, *ptr, *ptr_end;
19070 eos = RSTRING_PTR(here->lastline) + here->offset;
19071 len = here->length;
19072 indent = (func = here->func) & STR_FUNC_INDENT;
19074 if ((c = nextc(p)) == -1) {
19077 if (!has_delayed_token(p)) {
19078 dispatch_scan_event(p, tSTRING_CONTENT);
19081 if ((
len = p->lex.pcur - p->lex.ptok) > 0) {
19082 if (!(func & STR_FUNC_REGEXP) && rb_enc_asciicompat(enc)) {
19086 rb_is_usascii_enc(p->enc) &&
19087 enc != rb_utf8_encoding()) {
19088 enc = rb_ascii8bit_encoding();
19091 rb_enc_str_buf_cat(p->delayed.token, p->lex.ptok,
len, enc);
19093 dispatch_delayed_token(p, tSTRING_CONTENT);
19097 heredoc_restore(p, &p->lex.strterm->u.heredoc);
19098 compile_error(p,
"can't find string \"%.*s\" anywhere before EOF",
19101 SET_LEX_STATE(EXPR_END);
19102 return tSTRING_END;
19108 else if (p->heredoc_line_indent == -1) {
19113 p->heredoc_line_indent = 0;
19115 else if (whole_match_p(p, eos,
len, indent)) {
19116 dispatch_heredoc_end(p);
19118 heredoc_restore(p, &p->lex.strterm->u.heredoc);
19120 SET_LEX_STATE(EXPR_END);
19121 return tSTRING_END;
19124 if (!(func & STR_FUNC_EXPAND)) {
19126 ptr = RSTRING_PTR(p->lex.lastline);
19127 ptr_end = p->lex.pend;
19128 if (ptr_end > ptr) {
19129 switch (ptr_end[-1]) {
19131 if (--ptr_end == ptr || ptr_end[-1] !=
'\r') {
19140 if (p->heredoc_indent > 0) {
19142 while (ptr + i < ptr_end && parser_update_heredoc_indent(p, ptr[i]))
19144 p->heredoc_line_indent = 0;
19148 rb_str_cat(str, ptr, ptr_end - ptr);
19150 str = STR_NEW(ptr, ptr_end - ptr);
19151 if (!lex_eol_ptr_p(p, ptr_end)) rb_str_cat(str,
"\n", 1);
19153 if (p->heredoc_indent > 0) {
19156 if (nextc(p) == -1) {
19162 }
while (!whole_match_p(p, eos,
len, indent));
19168 enum yytokentype t = parser_peek_variable_name(p);
19169 if (p->heredoc_line_indent != -1) {
19170 if (p->heredoc_indent > p->heredoc_line_indent) {
19171 p->heredoc_indent = p->heredoc_line_indent;
19173 p->heredoc_line_indent = -1;
19182 if ((c = tokadd_string(p, func,
'\n', 0, NULL, &enc, &base_enc)) == -1) {
19183 if (p->eofp)
goto error;
19187 if (c ==
'\\') p->heredoc_line_indent = -1;
19189 str = STR_NEW3(tok(p), toklen(p), enc, func);
19191 set_yylval_str(str);
19193 if (bol) nd_set_fl_newline(yylval.node);
19195 flush_string_content(p, enc);
19196 return tSTRING_CONTENT;
19198 tokadd(p, nextc(p));
19199 if (p->heredoc_indent > 0) {
19204 if ((c = nextc(p)) == -1)
goto error;
19205 }
while (!whole_match_p(p, eos,
len, indent));
19206 str = STR_NEW3(tok(p), toklen(p), enc, func);
19208 dispatch_heredoc_end(p);
19210 str = ripper_new_yylval(p, ripper_token2eventid(tSTRING_CONTENT),
19213 heredoc_restore(p, &p->lex.strterm->u.heredoc);
19215 p->lex.strterm = NEW_STRTERM(func | STR_FUNC_TERM, 0, 0);
19216 set_yylval_str(str);
19218 if (bol) nd_set_fl_newline(yylval.node);
19220 return tSTRING_CONTENT;
19230 rb_warning1(
"ambiguity between regexp and two divisions: wrap regexp in parentheses or add a space after `%c' operator", WARN_I(c));
19233 rb_warning1(
"ambiguous first argument; put parentheses or a space even after `%c' operator", WARN_I(c));
19248 ID id = get_id(lhs);
19250 switch (id_type(
id)) {
19254# define ERR(mesg) yyerror0(mesg)
19256# define ERR(mesg) (dispatch2(param_error, WARN_S(mesg), lhs), ripper_error(p))
19259 ERR(
"formal argument cannot be a constant");
19262 ERR(
"formal argument cannot be an instance variable");
19265 ERR(
"formal argument cannot be a global variable");
19268 ERR(
"formal argument cannot be a class variable");
19271 ERR(
"formal argument must be local variable");
19275 shadowing_lvar(p,
id);
19282 return (dyna_in_block(p) && dvar_defined(p,
id)) || local_id(p,
id);
19291 if (
len > 5 && name[nlen =
len - 5] ==
'-') {
19292 if (rb_memcicmp(name + nlen + 1,
"unix", 4) == 0)
19295 if (
len > 4 && name[nlen =
len - 4] ==
'-') {
19296 if (rb_memcicmp(name + nlen + 1,
"dos", 3) == 0)
19298 if (rb_memcicmp(name + nlen + 1,
"mac", 3) == 0 &&
19299 !(
len == 8 && rb_memcicmp(name,
"utf8-mac",
len) == 0))
19307parser_set_encode(
struct parser_params *p,
const char *name)
19309 int idx = rb_enc_find_index(name);
19314 excargs[1] = rb_sprintf(
"unknown encoding name: %s", name);
19316 excargs[0] = rb_eArgError;
19317 excargs[2] = rb_make_backtrace();
19318 rb_ary_unshift(excargs[2], rb_sprintf(
"%"PRIsVALUE
":%d", p->ruby_sourcefile_string, p->ruby_sourceline));
19319 rb_exc_raise(rb_make_exception(3, excargs));
19321 enc = rb_enc_from_index(idx);
19322 if (!rb_enc_asciicompat(enc)) {
19323 excargs[1] = rb_sprintf(
"%s is not ASCII compatible", rb_enc_name(enc));
19328 if (p->debug_lines) {
19329 VALUE lines = p->debug_lines;
19331 for (i = 0; i < n; ++i) {
19332 rb_enc_associate_index(
RARRAY_AREF(lines, i), idx);
19341 const char *ptr = p->lex.pbeg, *ptr_end = p->lex.pcur - 1;
19342 if (p->line_count != (p->has_shebang ? 2 : 1)) return 0;
19343 while (ptr < ptr_end) {
19344 if (!
ISSPACE(*ptr))
return 0;
19350typedef long (*rb_magic_comment_length_t)(
struct parser_params *p,
const char *name,
long len);
19351typedef void (*rb_magic_comment_setter_t)(
struct parser_params *p,
const char *name,
const char *val);
19353static int parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val);
19356magic_comment_encoding(
struct parser_params *p,
const char *name,
const char *val)
19358 if (!comment_at_top(p)) {
19361 parser_set_encode(p, val);
19365parser_get_bool(
struct parser_params *p,
const char *name,
const char *val)
19368 case 't':
case 'T':
19373 case 'f':
case 'F':
19379 return parser_invalid_pragma_value(p, name, val);
19383parser_invalid_pragma_value(
struct parser_params *p,
const char *name,
const char *val)
19385 rb_warning2(
"invalid value for %s: %s", WARN_S(name), WARN_S(val));
19390parser_set_token_info(
struct parser_params *p,
const char *name,
const char *val)
19392 int b = parser_get_bool(p, name, val);
19393 if (b >= 0) p->token_info_enabled = b;
19397parser_set_frozen_string_literal(
struct parser_params *p,
const char *name,
const char *val)
19401 if (p->token_seen) {
19402 rb_warning1(
"`%s' is ignored after any tokens", WARN_S(name));
19406 b = parser_get_bool(p, name, val);
19409 p->frozen_string_literal = b;
19413parser_set_shareable_constant_value(
struct parser_params *p,
const char *name,
const char *val)
19415 for (
const char *s = p->lex.pbeg, *e = p->lex.pcur; s < e; ++s) {
19416 if (*s ==
' ' || *s ==
'\t')
continue;
19417 if (*s ==
'#')
break;
19418 rb_warning1(
"`%s' is ignored unless in comment-only line", WARN_S(name));
19423 case 'n':
case 'N':
19425 p->ctxt.shareable_constant_value = shareable_none;
19429 case 'l':
case 'L':
19431 p->ctxt.shareable_constant_value = shareable_literal;
19435 case 'e':
case 'E':
19436 if (
STRCASECMP(val,
"experimental_copy") == 0) {
19437 p->ctxt.shareable_constant_value = shareable_copy;
19440 if (
STRCASECMP(val,
"experimental_everything") == 0) {
19441 p->ctxt.shareable_constant_value = shareable_everything;
19446 parser_invalid_pragma_value(p, name, val);
19449# if WARN_PAST_SCOPE
19451parser_set_past_scope(
struct parser_params *p,
const char *name,
const char *val)
19453 int b = parser_get_bool(p, name, val);
19454 if (b >= 0) p->past_scope_enabled = b;
19460 rb_magic_comment_setter_t func;
19461 rb_magic_comment_length_t length;
19465 {
"coding", magic_comment_encoding, parser_encode_length},
19466 {
"encoding", magic_comment_encoding, parser_encode_length},
19467 {
"frozen_string_literal", parser_set_frozen_string_literal},
19468 {
"shareable_constant_value", parser_set_shareable_constant_value},
19469 {
"warn_indent", parser_set_token_info},
19470# if WARN_PAST_SCOPE
19471 {
"warn_past_scope", parser_set_past_scope},
19476magic_comment_marker(
const char *str,
long len)
19483 if (str[i-1] ==
'*' && str[i-2] ==
'-') {
19484 return str + i + 1;
19489 if (i + 1 >=
len)
return 0;
19490 if (str[i+1] !=
'-') {
19493 else if (str[i-1] !=
'-') {
19497 return str + i + 2;
19512 VALUE name = 0, val = 0;
19513 const char *beg, *end, *vbeg, *vend;
19514#define str_copy(_s, _p, _n) ((_s) \
19515 ? (void)(rb_str_resize((_s), (_n)), \
19516 MEMCPY(RSTRING_PTR(_s), (_p), char, (_n)), (_s)) \
19517 : (void)((_s) = STR_NEW((_p), (_n))))
19519 if (
len <= 7)
return FALSE;
19520 if (!!(beg = magic_comment_marker(str,
len))) {
19521 if (!(end = magic_comment_marker(beg, str +
len - beg)))
19525 len = end - beg - 3;
19535 for (;
len > 0 && *str; str++, --
len) {
19537 case '\'':
case '"':
case ':':
case ';':
19542 for (beg = str;
len > 0; str++, --
len) {
19544 case '\'':
case '"':
case ':':
case ';':
19555 if (!indicator)
return FALSE;
19559 do str++;
while (--
len > 0 &&
ISSPACE(*str));
19562 for (vbeg = ++str; --
len > 0 && *str !=
'"'; str++) {
19563 if (*str ==
'\\') {
19575 for (vbeg = str;
len > 0 && *str !=
'"' && *str !=
';' && !
ISSPACE(*str); --
len, str++);
19579 while (
len > 0 && (*str ==
';' ||
ISSPACE(*str))) --
len, str++;
19583 if (
len)
return FALSE;
19587 str_copy(name, beg, n);
19588 s = RSTRING_PTR(name);
19589 for (i = 0; i < n; ++i) {
19590 if (s[i] ==
'-') s[i] =
'_';
19593 if (
STRNCASECMP(mc->name, s, n) == 0 && !mc->name[n]) {
19596 n = (*mc->length)(p, vbeg, n);
19598 str_copy(val, vbeg, n);
19599 (*mc->func)(p, mc->name, RSTRING_PTR(val));
19602 }
while (++mc < magic_comments + numberof(magic_comments));
19604 str_copy(val, vbeg, vend - vbeg);
19613set_file_encoding(
struct parser_params *p,
const char *str,
const char *send)
19616 const char *beg = str;
19620 if (send - str <= 6)
return;
19622 case 'C':
case 'c': str += 6;
continue;
19623 case 'O':
case 'o': str += 5;
continue;
19624 case 'D':
case 'd': str += 4;
continue;
19625 case 'I':
case 'i': str += 3;
continue;
19626 case 'N':
case 'n': str += 2;
continue;
19627 case 'G':
case 'g': str += 1;
continue;
19628 case '=':
case ':':
19642 if (++str >= send)
return;
19645 if (*str !=
'=' && *str !=
':')
return;
19650 while ((*str ==
'-' || *str ==
'_' ||
ISALNUM(*str)) && ++str < send);
19651 s =
rb_str_new(beg, parser_encode_length(p, beg, str - beg));
19652 parser_set_encode(p, RSTRING_PTR(s));
19653 rb_str_resize(s, 0);
19659 int c = nextc0(p, FALSE);
19663 if (peek(p,
'!')) p->has_shebang = 1;
19666 if (!lex_eol_n_p(p, 2) &&
19667 (
unsigned char)p->lex.pcur[0] == 0xbb &&
19668 (
unsigned char)p->lex.pcur[1] == 0xbf) {
19669 p->enc = rb_utf8_encoding();
19672 if (p->debug_lines) {
19673 rb_enc_associate(p->lex.lastline, p->enc);
19676 p->lex.pbeg = p->lex.pcur;
19685 p->enc = rb_enc_get(p->lex.lastline);
19689#define ambiguous_operator(tok, op, syn) ( \
19690 rb_warning0("`"op"' after local variable or literal is interpreted as binary operator"), \
19691 rb_warning0("even though it seems like "syn""))
19693#define ambiguous_operator(tok, op, syn) \
19694 dispatch2(operator_ambiguous, TOKEN2VAL(tok), rb_str_new_cstr(syn))
19696#define warn_balanced(tok, op, syn) ((void) \
19697 (!IS_lex_state_for(last_state, EXPR_CLASS|EXPR_DOT|EXPR_FNAME|EXPR_ENDFN) && \
19698 space_seen && !ISSPACE(c) && \
19699 (ambiguous_operator(tok, op, syn), 0)), \
19700 (enum yytokentype)(tok))
19703parse_rational(
struct parser_params *p,
char *str,
int len,
int seen_point)
19706 char *point = &str[seen_point];
19707 size_t fraclen =
len-seen_point-1;
19708 memmove(point, point+1, fraclen+1);
19709 v = rb_cstr_to_inum(str, 10, FALSE);
19710 return rb_rational_new(v, rb_int_positive_pow(10, fraclen));
19713static enum yytokentype
19716 yyerror0(
"numeric literal without digits");
19717 if (peek(p,
'_')) nextc(p);
19719 return set_integer_literal(p,
INT2FIX(0), 0);
19722static enum yytokentype
19725 int is_float, seen_point, seen_e, nondigit;
19728 is_float = seen_point = seen_e = nondigit = 0;
19729 SET_LEX_STATE(EXPR_END);
19731 if (c ==
'-' || c ==
'+') {
19736 int start = toklen(p);
19738 if (c ==
'x' || c ==
'X') {
19744 if (nondigit)
break;
19751 }
while ((c = nextc(p)) != -1);
19755 if (toklen(p) == start) {
19756 return no_digits(p);
19758 else if (nondigit)
goto trailing_uc;
19759 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19760 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 16, FALSE), suffix);
19762 if (c ==
'b' || c ==
'B') {
19765 if (c ==
'0' || c ==
'1') {
19768 if (nondigit)
break;
19772 if (c !=
'0' && c !=
'1')
break;
19775 }
while ((c = nextc(p)) != -1);
19779 if (toklen(p) == start) {
19780 return no_digits(p);
19782 else if (nondigit)
goto trailing_uc;
19783 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19784 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 2, FALSE), suffix);
19786 if (c ==
'd' || c ==
'D') {
19792 if (nondigit)
break;
19799 }
while ((c = nextc(p)) != -1);
19803 if (toklen(p) == start) {
19804 return no_digits(p);
19806 else if (nondigit)
goto trailing_uc;
19807 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19808 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 10, FALSE), suffix);
19814 if (c ==
'o' || c ==
'O') {
19817 if (c == -1 || c ==
'_' || !
ISDIGIT(c)) {
19818 return no_digits(p);
19821 if (c >=
'0' && c <=
'7') {
19826 if (nondigit)
break;
19830 if (c <
'0' || c >
'9')
break;
19831 if (c >
'7')
goto invalid_octal;
19834 }
while ((c = nextc(p)) != -1);
19835 if (toklen(p) > start) {
19838 if (nondigit)
goto trailing_uc;
19839 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19840 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 8, FALSE), suffix);
19847 if (c >
'7' && c <=
'9') {
19849 yyerror0(
"Invalid octal digit");
19851 else if (c ==
'.' || c ==
'e' || c ==
'E') {
19856 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19857 return set_integer_literal(p,
INT2FIX(0), suffix);
19863 case '0':
case '1':
case '2':
case '3':
case '4':
19864 case '5':
case '6':
case '7':
case '8':
case '9':
19870 if (nondigit)
goto trailing_uc;
19871 if (seen_point || seen_e) {
19876 if (c0 == -1 || !
ISDIGIT(c0)) {
19882 seen_point = toklen(p);
19901 if (c !=
'-' && c !=
'+' && !
ISDIGIT(c)) {
19907 tokadd(p, nondigit);
19911 nondigit = (c ==
'-' || c ==
'+') ? c : 0;
19915 if (nondigit)
goto decode_num;
19929 literal_flush(p, p->lex.pcur - 1);
19930 YYLTYPE loc = RUBY_INIT_YYLLOC();
19931 compile_error(p,
"trailing `%c' in number", nondigit);
19932 parser_show_error_line(p, &loc);
19936 enum yytokentype
type = tFLOAT;
19939 suffix = number_literal_suffix(p, seen_e ? NUM_SUFFIX_I : NUM_SUFFIX_ALL);
19940 if (suffix & NUM_SUFFIX_R) {
19942 v = parse_rational(p, tok(p), toklen(p), seen_point);
19945 double d =
strtod(tok(p), 0);
19946 if (
errno == ERANGE) {
19947 rb_warning1(
"Float %s out of range", WARN_S(tok(p)));
19952 return set_number_literal(p, v,
type, suffix);
19954 suffix = number_literal_suffix(p, NUM_SUFFIX_ALL);
19955 return set_integer_literal(p, rb_cstr_to_inum(tok(p), 10, FALSE), suffix);
19958static enum yytokentype
19966 SET_LEX_STATE(EXPR_VALUE);
19971 compile_error(p,
"incomplete character syntax");
19974 if (rb_enc_isspace(c, p->enc)) {
19976 int c2 = escaped_control_code(c);
19978 WARN_SPACE_CHAR(c2,
"?");
19983 SET_LEX_STATE(EXPR_VALUE);
19988 if (!parser_isascii(p)) {
19989 if (tokadd_mbchar(p, c) == -1)
return 0;
19991 else if ((rb_enc_isalnum(c, p->enc) || c ==
'_') &&
19992 !lex_eol_p(p) && is_identchar(p, p->lex.pcur, p->lex.pend, p->enc)) {
19994 const char *start = p->lex.pcur - 1, *ptr = start;
19996 int n = parser_precise_mbclen(p, ptr);
19997 if (n < 0)
return -1;
19999 }
while (!lex_eol_ptr_p(p, ptr) && is_identchar(p, ptr, p->lex.pend, p->enc));
20000 rb_warn2(
"`?' just followed by `%.*s' is interpreted as" \
20001 " a conditional operator, put a space after `?'",
20002 WARN_I((
int)(ptr - start)), WARN_S_L(start, (ptr - start)));
20006 else if (c ==
'\\') {
20007 if (peek(p,
'u')) {
20009 enc = rb_utf8_encoding();
20010 tokadd_utf8(p, &enc, -1, 0, 0);
20012 else if (!
ISASCII(c = peekc(p))) {
20014 if (tokadd_mbchar(p, c) == -1)
return 0;
20017 c = read_escape(p, 0);
20025 lit = STR_NEW3(tok(p), toklen(p), enc, 0);
20026 set_yylval_str(lit);
20027 SET_LEX_STATE(EXPR_END);
20031static enum yytokentype
20032parse_percent(
struct parser_params *p,
const int space_seen,
const enum lex_state_e last_state)
20035 const char *ptok = p->lex.pcur;
20043 if (c == -1)
goto unterminated;
20046 if (!
ISASCII(c))
goto unknown;
20051 if (rb_enc_isalnum(term, p->enc) || !parser_isascii(p)) {
20054 c = parser_precise_mbclen(p, p->lex.pcur);
20055 if (c < 0)
return 0;
20057 yyerror0(
"unknown type of %string");
20063 compile_error(p,
"unterminated quoted string meets end of file");
20067 if (term ==
'(') term =
')';
20068 else if (term ==
'[') term =
']';
20069 else if (term ==
'{') term =
'}';
20070 else if (term ==
'<') term =
'>';
20073 p->lex.ptok = ptok-1;
20076 p->lex.strterm = NEW_STRTERM(str_dquote, term, paren);
20077 return tSTRING_BEG;
20080 p->lex.strterm = NEW_STRTERM(str_squote, term, paren);
20081 return tSTRING_BEG;
20084 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
20088 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
20089 return tQWORDS_BEG;
20092 p->lex.strterm = NEW_STRTERM(str_dword, term, paren);
20093 return tSYMBOLS_BEG;
20096 p->lex.strterm = NEW_STRTERM(str_sword, term, paren);
20097 return tQSYMBOLS_BEG;
20100 p->lex.strterm = NEW_STRTERM(str_xquote, term, paren);
20101 return tXSTRING_BEG;
20104 p->lex.strterm = NEW_STRTERM(str_regexp, term, paren);
20105 return tREGEXP_BEG;
20108 p->lex.strterm = NEW_STRTERM(str_ssym, term, paren);
20109 SET_LEX_STATE(EXPR_FNAME|EXPR_FITEM);
20113 yyerror0(
"unknown type of %string");
20117 if ((c = nextc(p)) ==
'=') {
20118 set_yylval_id(
'%');
20119 SET_LEX_STATE(EXPR_BEG);
20122 if (IS_SPCARG(c) || (IS_lex_state(EXPR_FITEM) && c ==
's')) {
20125 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20127 return warn_balanced(
'%',
"%%",
"string literal");
20134 if (tokadd_mbchar(p, c) == -1)
return -1;
20136 }
while (parser_is_identchar(p));
20144 ID ident = TOK_INTERN();
20146 set_yylval_name(ident);
20156 unsigned long n = ruby_scan_digits(tok(p)+1, toklen(p)-1, 10, &
len, &overflow);
20157 const unsigned long nth_ref_max =
20158 ((FIXNUM_MAX < INT_MAX) ? FIXNUM_MAX : INT_MAX) >> 1;
20162 if (overflow || n > nth_ref_max) {
20164 rb_warn1(
"`%s' is too big for a number variable, always nil", WARN_S(tok(p)));
20172static enum yytokentype
20173parse_gvar(
struct parser_params *p,
const enum lex_state_e last_state)
20175 const char *ptr = p->lex.pcur;
20178 SET_LEX_STATE(EXPR_END);
20179 p->lex.ptok = ptr - 1;
20185 if (parser_is_identchar(p)) {
20217 if (parser_is_identchar(p)) {
20218 if (tokadd_mbchar(p, c) == -1)
return 0;
20226 set_yylval_name(TOK_INTERN());
20233 if (IS_lex_state_for(last_state, EXPR_FNAME)) {
20238 set_yylval_node(NEW_BACK_REF(c, &_cur_loc));
20241 case '1':
case '2':
case '3':
20242 case '4':
case '5':
case '6':
20243 case '7':
case '8':
case '9':
20248 }
while (c != -1 &&
ISDIGIT(c));
20250 if (IS_lex_state_for(last_state, EXPR_FNAME))
goto gvar;
20252 c = parse_numvar(p);
20253 set_yylval_node(NEW_NTH_REF(c, &_cur_loc));
20257 if (!parser_is_identchar(p)) {
20258 YYLTYPE loc = RUBY_INIT_YYLLOC();
20260 compile_error(p,
"`$' without identifiers is not allowed as a global variable name");
20264 compile_error(p,
"`$%c' is not allowed as a global variable name", c);
20266 parser_show_error_line(p, &loc);
20267 set_yylval_noname();
20275 if (tokadd_ident(p, c))
return 0;
20276 SET_LEX_STATE(EXPR_END);
20277 if (VALID_SYMNAME_P(tok(p), toklen(p), p->enc, ID_GLOBAL)) {
20281 compile_error(p,
"`%.*s' is not allowed as a global variable name", toklen(p), tok(p));
20282 set_yylval_noname();
20291 if (n < 0)
return false;
20293 if (DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev)) {
20296 if (p->max_numparam == ORDINAL_PARAM) {
20297 compile_error(p,
"ordinary parameter is defined");
20300 struct vtable *args = p->lvtbl->args;
20301 if (p->max_numparam < n) {
20302 p->max_numparam = n;
20304 while (n > args->pos) {
20305 vtable_add(args, NUMPARAM_IDX_TO_ID(args->pos+1));
20311static enum yytokentype
20312parse_atmark(
struct parser_params *p,
const enum lex_state_e last_state)
20314 const char *ptr = p->lex.pcur;
20315 enum yytokentype result = tIVAR;
20316 register int c = nextc(p);
20319 p->lex.ptok = ptr - 1;
20327 SET_LEX_STATE(IS_lex_state_for(last_state, EXPR_FNAME) ? EXPR_ENDFN : EXPR_END);
20328 if (c == -1 || !parser_is_identchar(p)) {
20330 RUBY_SET_YYLLOC(loc);
20331 if (result == tIVAR) {
20332 compile_error(p,
"`@' without identifiers is not allowed as an instance variable name");
20335 compile_error(p,
"`@@' without identifiers is not allowed as a class variable name");
20337 parser_show_error_line(p, &loc);
20338 set_yylval_noname();
20339 SET_LEX_STATE(EXPR_END);
20344 RUBY_SET_YYLLOC(loc);
20345 if (result == tIVAR) {
20346 compile_error(p,
"`@%c' is not allowed as an instance variable name", c);
20349 compile_error(p,
"`@@%c' is not allowed as a class variable name", c);
20351 parser_show_error_line(p, &loc);
20352 set_yylval_noname();
20353 SET_LEX_STATE(EXPR_END);
20357 if (tokadd_ident(p, c))
return 0;
20362static enum yytokentype
20365 enum yytokentype result;
20367 const enum lex_state_e last_state = p->lex.state;
20369 int enforce_keyword_end = 0;
20373 if (tokadd_mbchar(p, c) == -1)
return 0;
20375 }
while (parser_is_identchar(p));
20376 if ((c ==
'!' || c ==
'?') && !peek(p,
'=')) {
20380 else if (c ==
'=' && IS_lex_state(EXPR_FNAME) &&
20381 (!peek(p,
'~') && !peek(p,
'>') && (!peek(p,
'=') || (peek_n(p,
'>', 1))))) {
20382 result = tIDENTIFIER;
20386 result = tCONSTANT;
20391 if (IS_LABEL_POSSIBLE()) {
20392 if (IS_LABEL_SUFFIX(0)) {
20393 SET_LEX_STATE(EXPR_ARG|EXPR_LABELED);
20395 set_yylval_name(TOK_INTERN());
20401 if (!
NIL_P(peek_end_expect_token_locations(p))) {
20403 int lineno, column;
20404 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
20406 end_loc = peek_end_expect_token_locations(p);
20407 lineno =
NUM2INT(rb_ary_entry(end_loc, 0));
20408 column =
NUM2INT(rb_ary_entry(end_loc, 1));
20411 rb_parser_printf(p,
"enforce_keyword_end check. current: (%d, %d), peek: (%d, %d)\n",
20412 p->ruby_sourceline, beg_pos, lineno, column);
20415 if ((p->ruby_sourceline > lineno) && (beg_pos <= column)) {
20418 if ((IS_lex_state(EXPR_DOT)) && (kw = rb_reserved_word(tok(p), toklen(p))) && (kw && kw->id[0] == keyword_end)) {
20419 if (p->debug) rb_parser_printf(p,
"enforce_keyword_end is enabled\n");
20420 enforce_keyword_end = 1;
20430 kw = rb_reserved_word(tok(p), toklen(p));
20432 enum lex_state_e state = p->lex.state;
20433 if (IS_lex_state_for(state, EXPR_FNAME)) {
20434 SET_LEX_STATE(EXPR_ENDFN);
20435 set_yylval_name(rb_intern2(tok(p), toklen(p)));
20438 SET_LEX_STATE(kw->state);
20439 if (IS_lex_state(EXPR_BEG)) {
20440 p->command_start = TRUE;
20442 if (kw->id[0] == keyword_do) {
20443 if (lambda_beginning_p()) {
20444 p->lex.lpar_beg = -1;
20445 return keyword_do_LAMBDA;
20447 if (COND_P())
return keyword_do_cond;
20448 if (CMDARG_P() && !IS_lex_state_for(state, EXPR_CMDARG))
20449 return keyword_do_block;
20452 if (IS_lex_state_for(state, (EXPR_BEG | EXPR_LABELED | EXPR_CLASS)))
20455 if (kw->id[0] != kw->id[1])
20456 SET_LEX_STATE(EXPR_BEG | EXPR_LABEL);
20462 if (IS_lex_state(EXPR_BEG_ANY | EXPR_ARG_ANY | EXPR_DOT)) {
20464 SET_LEX_STATE(EXPR_CMDARG);
20467 SET_LEX_STATE(EXPR_ARG);
20470 else if (p->lex.state == EXPR_FNAME) {
20471 SET_LEX_STATE(EXPR_ENDFN);
20474 SET_LEX_STATE(EXPR_END);
20477 ident = tokenize_ident(p);
20478 if (result == tCONSTANT && is_local_id(ident)) result = tIDENTIFIER;
20479 if (!IS_lex_state_for(last_state, EXPR_DOT|EXPR_FNAME) &&
20480 (result == tIDENTIFIER) &&
20481 (lvar_defined(p, ident) || NUMPARAM_ID_P(ident))) {
20482 SET_LEX_STATE(EXPR_END|EXPR_LABEL);
20493 rb_warn0(
"encountered \\r in middle of line, treated as a mere space");
20497static enum yytokentype
20501 int space_seen = 0;
20504 enum lex_state_e last_state;
20505 int fallthru = FALSE;
20506 int token_seen = p->token_seen;
20508 if (p->lex.strterm) {
20509 if (strterm_is_heredoc(p->lex.strterm)) {
20511 return here_document(p, &p->lex.strterm->u.heredoc);
20515 return parse_string(p, &p->lex.strterm->u.literal);
20518 cmd_state = p->command_start;
20519 p->command_start = FALSE;
20520 p->token_seen = TRUE;
20525 last_state = p->lex.state;
20526 switch (c = nextc(p)) {
20533 if (!
NIL_P(p->end_expect_token_locations) &&
RARRAY_LEN(p->end_expect_token_locations) > 0) {
20534 pop_end_expect_token_locations(p);
20535 RUBY_SET_YYLLOC_OF_DUMMY_END(*p->yylloc);
20540 RUBY_SET_YYLLOC(*p->yylloc);
20541 return END_OF_INPUT;
20547 case ' ':
case '\t':
case '\f':
20550 while ((c = nextc(p))) {
20555 case ' ':
case '\t':
case '\f':
20564 dispatch_scan_event(p, tSP);
20571 p->token_seen = token_seen;
20573 if (!parser_magic_comment(p, p->lex.pcur, p->lex.pend - p->lex.pcur)) {
20574 if (comment_at_top(p)) {
20575 set_file_encoding(p, p->lex.pcur, p->lex.pend);
20579 dispatch_scan_event(p, tCOMMENT);
20583 p->token_seen = token_seen;
20584 VALUE prevline = p->lex.lastline;
20585 c = (IS_lex_state(EXPR_BEG|EXPR_CLASS|EXPR_FNAME|EXPR_DOT) &&
20586 !IS_lex_state(EXPR_LABELED));
20587 if (c || IS_lex_state_all(EXPR_ARG|EXPR_LABELED)) {
20589 dispatch_scan_event(p, tIGNORED_NL);
20592 if (!c && p->ctxt.in_kwarg) {
20593 goto normal_newline;
20598 switch (c = nextc(p)) {
20599 case ' ':
case '\t':
case '\f':
case '\r':
20606 dispatch_scan_event(p, tSP);
20612 dispatch_delayed_token(p, tIGNORED_NL);
20613 if (peek(p,
'.') == (c ==
'&')) {
20615 dispatch_scan_event(p, tSP);
20620 p->ruby_sourceline--;
20621 p->lex.nextline = p->lex.lastline;
20622 set_lastline(p, prevline);
20627 RUBY_SET_YYLLOC(*p->yylloc);
20629 goto normal_newline;
20633 p->command_start = TRUE;
20634 SET_LEX_STATE(EXPR_BEG);
20638 if ((c = nextc(p)) ==
'*') {
20639 if ((c = nextc(p)) ==
'=') {
20640 set_yylval_id(idPow);
20641 SET_LEX_STATE(EXPR_BEG);
20645 if (IS_SPCARG(c)) {
20646 rb_warning0(
"`**' interpreted as argument prefix");
20649 else if (IS_BEG()) {
20653 c = warn_balanced((
enum ruby_method_ids)tPOW,
"**",
"argument prefix");
20658 set_yylval_id(
'*');
20659 SET_LEX_STATE(EXPR_BEG);
20663 if (IS_SPCARG(c)) {
20664 rb_warning0(
"`*' interpreted as argument prefix");
20667 else if (IS_BEG()) {
20671 c = warn_balanced(
'*',
"*",
"argument prefix");
20674 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20679 if (IS_AFTER_OPERATOR()) {
20680 SET_LEX_STATE(EXPR_ARG);
20686 SET_LEX_STATE(EXPR_BEG);
20700 if (word_match_p(p,
"begin", 5)) {
20701 int first_p = TRUE;
20704 dispatch_scan_event(p, tEMBDOC_BEG);
20708 dispatch_scan_event(p, tEMBDOC);
20713 compile_error(p,
"embedded document meets end of file");
20714 return END_OF_INPUT;
20716 if (c ==
'=' && word_match_p(p,
"end", 3)) {
20722 dispatch_scan_event(p, tEMBDOC_END);
20727 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20728 if ((c = nextc(p)) ==
'=') {
20729 if ((c = nextc(p)) ==
'=') {
20738 else if (c ==
'>') {
20747 !IS_lex_state(EXPR_DOT | EXPR_CLASS) &&
20749 (!IS_ARG() || IS_lex_state(EXPR_LABELED) || space_seen)) {
20750 enum yytokentype token = heredoc_identifier(p);
20751 if (token)
return token < 0 ? 0 : token;
20753 if (IS_AFTER_OPERATOR()) {
20754 SET_LEX_STATE(EXPR_ARG);
20757 if (IS_lex_state(EXPR_CLASS))
20758 p->command_start = TRUE;
20759 SET_LEX_STATE(EXPR_BEG);
20762 if ((c = nextc(p)) ==
'>') {
20769 if ((c = nextc(p)) ==
'=') {
20770 set_yylval_id(idLTLT);
20771 SET_LEX_STATE(EXPR_BEG);
20775 return warn_balanced((
enum ruby_method_ids)tLSHFT,
"<<",
"here document");
20781 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20782 if ((c = nextc(p)) ==
'=') {
20786 if ((c = nextc(p)) ==
'=') {
20787 set_yylval_id(idGTGT);
20788 SET_LEX_STATE(EXPR_BEG);
20798 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
20799 p->lex.strterm = NEW_STRTERM(str_dquote | label,
'"', 0);
20800 p->lex.ptok = p->lex.pcur-1;
20801 return tSTRING_BEG;
20804 if (IS_lex_state(EXPR_FNAME)) {
20805 SET_LEX_STATE(EXPR_ENDFN);
20808 if (IS_lex_state(EXPR_DOT)) {
20810 SET_LEX_STATE(EXPR_CMDARG);
20812 SET_LEX_STATE(EXPR_ARG);
20815 p->lex.strterm = NEW_STRTERM(str_xquote,
'`', 0);
20816 return tXSTRING_BEG;
20819 label = (IS_LABEL_POSSIBLE() ? str_label : 0);
20820 p->lex.strterm = NEW_STRTERM(str_squote | label,
'\'', 0);
20821 p->lex.ptok = p->lex.pcur-1;
20822 return tSTRING_BEG;
20825 return parse_qmark(p, space_seen);
20828 if ((c = nextc(p)) ==
'&') {
20829 SET_LEX_STATE(EXPR_BEG);
20830 if ((c = nextc(p)) ==
'=') {
20831 set_yylval_id(idANDOP);
20832 SET_LEX_STATE(EXPR_BEG);
20838 else if (c ==
'=') {
20839 set_yylval_id(
'&');
20840 SET_LEX_STATE(EXPR_BEG);
20843 else if (c ==
'.') {
20844 set_yylval_id(idANDDOT);
20845 SET_LEX_STATE(EXPR_DOT);
20849 if (IS_SPCARG(c)) {
20851 (c = peekc_n(p, 1)) == -1 ||
20852 !(c ==
'\'' || c ==
'"' ||
20853 is_identchar(p, (p->lex.pcur+1), p->lex.pend, p->enc))) {
20854 rb_warning0(
"`&' interpreted as argument prefix");
20858 else if (IS_BEG()) {
20862 c = warn_balanced(
'&',
"&",
"argument prefix");
20864 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
20868 if ((c = nextc(p)) ==
'|') {
20869 SET_LEX_STATE(EXPR_BEG);
20870 if ((c = nextc(p)) ==
'=') {
20871 set_yylval_id(idOROP);
20872 SET_LEX_STATE(EXPR_BEG);
20876 if (IS_lex_state_for(last_state, EXPR_BEG)) {
20884 set_yylval_id(
'|');
20885 SET_LEX_STATE(EXPR_BEG);
20888 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG|EXPR_LABEL);
20894 if (IS_AFTER_OPERATOR()) {
20895 SET_LEX_STATE(EXPR_ARG);
20903 set_yylval_id(
'+');
20904 SET_LEX_STATE(EXPR_BEG);
20907 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'+'))) {
20908 SET_LEX_STATE(EXPR_BEG);
20911 return parse_numeric(p,
'+');
20915 SET_LEX_STATE(EXPR_BEG);
20917 return warn_balanced(
'+',
"+",
"unary operator");
20921 if (IS_AFTER_OPERATOR()) {
20922 SET_LEX_STATE(EXPR_ARG);
20930 set_yylval_id(
'-');
20931 SET_LEX_STATE(EXPR_BEG);
20935 SET_LEX_STATE(EXPR_ENDFN);
20938 if (IS_BEG() || (IS_SPCARG(c) && arg_ambiguous(p,
'-'))) {
20939 SET_LEX_STATE(EXPR_BEG);
20942 return tUMINUS_NUM;
20946 SET_LEX_STATE(EXPR_BEG);
20948 return warn_balanced(
'-',
"-",
"unary operator");
20951 int is_beg = IS_BEG();
20952 SET_LEX_STATE(EXPR_BEG);
20953 if ((c = nextc(p)) ==
'.') {
20954 if ((c = nextc(p)) ==
'.') {
20955 if (p->ctxt.in_argdef) {
20956 SET_LEX_STATE(EXPR_ENDARG);
20959 if (p->lex.paren_nest == 0 && looking_at_eol_p(p)) {
20960 rb_warn0(
"... at EOL, should be parenthesized?");
20962 else if (p->lex.lpar_beg >= 0 && p->lex.lpar_beg+1 == p->lex.paren_nest) {
20963 if (IS_lex_state_for(last_state, EXPR_LABEL))
20966 return is_beg ? tBDOT3 : tDOT3;
20969 return is_beg ? tBDOT2 : tDOT2;
20973 char prev = p->lex.pcur-1 > p->lex.pbeg ? *(p->lex.pcur-2) : 0;
20974 parse_numeric(p,
'.');
20976 yyerror0(
"unexpected fraction part after numeric literal");
20979 yyerror0(
"no .<digit> floating literal anymore; put 0 before dot");
20981 SET_LEX_STATE(EXPR_END);
20982 p->lex.ptok = p->lex.pcur;
20985 set_yylval_id(
'.');
20986 SET_LEX_STATE(EXPR_DOT);
20990 case '0':
case '1':
case '2':
case '3':
case '4':
20991 case '5':
case '6':
case '7':
case '8':
case '9':
20992 return parse_numeric(p, c);
20997 SET_LEX_STATE(EXPR_ENDFN);
20998 p->lex.paren_nest--;
21004 SET_LEX_STATE(EXPR_END);
21005 p->lex.paren_nest--;
21010 if (!p->lex.brace_nest--)
return tSTRING_DEND;
21013 SET_LEX_STATE(EXPR_END);
21014 p->lex.paren_nest--;
21020 if (IS_BEG() || IS_lex_state(EXPR_CLASS) || IS_SPCARG(-1)) {
21021 SET_LEX_STATE(EXPR_BEG);
21024 set_yylval_id(idCOLON2);
21025 SET_LEX_STATE(EXPR_DOT);
21028 if (IS_END() ||
ISSPACE(c) || c ==
'#') {
21030 c = warn_balanced(
':',
":",
"symbol literal");
21031 SET_LEX_STATE(EXPR_BEG);
21036 p->lex.strterm = NEW_STRTERM(str_ssym, c, 0);
21039 p->lex.strterm = NEW_STRTERM(str_dsym, c, 0);
21045 SET_LEX_STATE(EXPR_FNAME);
21050 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
21051 return tREGEXP_BEG;
21053 if ((c = nextc(p)) ==
'=') {
21054 set_yylval_id(
'/');
21055 SET_LEX_STATE(EXPR_BEG);
21059 if (IS_SPCARG(c)) {
21060 arg_ambiguous(p,
'/');
21061 p->lex.strterm = NEW_STRTERM(str_regexp,
'/', 0);
21062 return tREGEXP_BEG;
21064 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21065 return warn_balanced(
'/',
"/",
"regexp literal");
21068 if ((c = nextc(p)) ==
'=') {
21069 set_yylval_id(
'^');
21070 SET_LEX_STATE(EXPR_BEG);
21073 SET_LEX_STATE(IS_AFTER_OPERATOR() ? EXPR_ARG : EXPR_BEG);
21078 SET_LEX_STATE(EXPR_BEG);
21079 p->command_start = TRUE;
21083 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21087 if (IS_AFTER_OPERATOR()) {
21088 if ((c = nextc(p)) !=
'@') {
21091 SET_LEX_STATE(EXPR_ARG);
21094 SET_LEX_STATE(EXPR_BEG);
21102 else if (!space_seen) {
21105 else if (IS_ARG() || IS_lex_state_all(EXPR_END|EXPR_LABEL)) {
21108 else if (IS_lex_state(EXPR_ENDFN) && !lambda_beginning_p()) {
21109 rb_warning0(
"parentheses after method name is interpreted as "
21110 "an argument list, not a decomposed argument");
21112 p->lex.paren_nest++;
21115 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21119 p->lex.paren_nest++;
21120 if (IS_AFTER_OPERATOR()) {
21121 if ((c = nextc(p)) ==
']') {
21122 p->lex.paren_nest--;
21123 SET_LEX_STATE(EXPR_ARG);
21124 if ((c = nextc(p)) ==
'=') {
21131 SET_LEX_STATE(EXPR_ARG|EXPR_LABEL);
21134 else if (IS_BEG()) {
21137 else if (IS_ARG() && (space_seen || IS_lex_state(EXPR_LABELED))) {
21140 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21146 ++p->lex.brace_nest;
21147 if (lambda_beginning_p())
21149 else if (IS_lex_state(EXPR_LABELED))
21151 else if (IS_lex_state(EXPR_ARG_ANY | EXPR_END | EXPR_ENDFN))
21153 else if (IS_lex_state(EXPR_ENDARG))
21157 if (c != tLBRACE) {
21158 p->command_start = TRUE;
21159 SET_LEX_STATE(EXPR_BEG);
21162 SET_LEX_STATE(EXPR_BEG|EXPR_LABEL);
21164 ++p->lex.paren_nest;
21173 dispatch_scan_event(p, tSP);
21176 if (c ==
' ')
return tSP;
21182 return parse_percent(p, space_seen, last_state);
21185 return parse_gvar(p, last_state);
21188 return parse_atmark(p, last_state);
21191 if (was_bol(p) && whole_match_p(p,
"__END__", 7, 0)) {
21192 p->ruby__end__seen = 1;
21196 dispatch_scan_event(p, k__END__);
21198 return END_OF_INPUT;
21204 if (!parser_is_identchar(p)) {
21205 compile_error(p,
"Invalid char `\\x%02X' in expression", c);
21214 return parse_ident(p, c, cmd_state);
21217static enum yytokentype
21220 enum yytokentype t;
21224 p->yylloc = yylloc;
21226 t = parser_yylex(p);
21228 if (has_delayed_token(p))
21229 dispatch_delayed_token(p, t);
21230 else if (t != END_OF_INPUT)
21231 dispatch_scan_event(p, t);
21236#define LVAR_USED ((ID)1 << (sizeof(ID) * CHAR_BIT - 1))
21239node_new_internal(
struct parser_params *p,
enum node_type
type,
size_t size,
size_t alignment)
21241 NODE *n = rb_ast_newnode(p->ast,
type, size, alignment);
21243 rb_node_init(n,
type);
21251 nd_set_line(nd, loc->beg_pos.lineno);
21258 NODE *n = node_new_internal(p,
type, size, alignment);
21260 nd_set_loc(n, loc);
21261 nd_set_node_id(n, parser_get_node_id(p));
21265#define NODE_NEWNODE(node_type, type, loc) (type *)(node_newnode(p, node_type, sizeof(type), RUBY_ALIGNOF(type), loc))
21273 nd_tbl = local_tbl(p);
21275 n->nd_tbl = nd_tbl;
21276 n->nd_body = nd_body;
21277 n->nd_args = nd_args;
21286 n->nd_tbl = nd_tbl;
21287 n->nd_body = nd_body;
21288 n->nd_args = nd_args;
21297 n->nd_mid = nd_mid;
21298 n->nd_defn = nd_defn;
21307 n->nd_recv = nd_recv;
21308 n->nd_mid = nd_mid;
21309 n->nd_defn = nd_defn;
21318 n->nd_head = nd_head;
21329 n->nd_body = nd_body;
21330 n->nd_iter = nd_iter;
21339 n->nd_var = nd_var;
21356 n->nd_body = nd_body;
21365 n->nd_head = nd_head;
21366 n->nd_resq = nd_resq;
21367 n->nd_else = nd_else;
21376 n->nd_head = nd_head;
21377 n->nd_body = nd_body;
21378 n->nd_args = nd_args;
21387 n->nd_head = nd_head;
21389 n->nd_ensr = nd_ensr;
21398 n->nd_1st = nd_1st;
21399 n->nd_2nd = nd_2nd;
21408 n->nd_1st = nd_1st;
21409 n->nd_2nd = nd_2nd;
21418 n->nd_stts = nd_stts;
21426 n->nd_head = nd_head;
21435 n->nd_cond = nd_cond;
21436 n->nd_body = nd_body;
21437 n->nd_else = nd_else;
21446 n->nd_cond = nd_cond;
21447 n->nd_body = nd_body;
21448 n->nd_else = nd_else;
21457 NODE *scope = NEW_SCOPE(0, nd_body, loc);
21459 n->nd_cpath = nd_cpath;
21460 n->nd_body = scope;
21461 n->nd_super = nd_super;
21470 NODE *scope = NEW_SCOPE(0, nd_body, loc);
21472 n->nd_recv = nd_recv;
21473 n->nd_body = scope;
21482 NODE *scope = NEW_SCOPE(0, nd_body, loc);
21484 n->nd_cpath = nd_cpath;
21485 n->nd_body = scope;
21494 NODE *scope = NEW_SCOPE(nd_args, nd_body, loc);
21496 n->nd_body = scope;
21506 NODE *scope = NEW_SCOPE(nd_args, nd_body, loc);
21508 n->nd_body = scope;
21517 n->nd_head = nd_head;
21518 n->nd_body = nd_body;
21528 n->nd_body = nd_body;
21537 n->nd_head = nd_head;
21538 n->nd_body = nd_body;
21547 n->nd_head = nd_head;
21548 n->nd_body = nd_body;
21549 n->nd_next = nd_next;
21558 n->nd_head = nd_head;
21559 n->nd_body = nd_body;
21560 n->nd_next = nd_next;
21569 n->nd_cond = nd_cond;
21570 n->nd_body = nd_body;
21571 n->nd_state = nd_state;
21580 n->nd_cond = nd_cond;
21581 n->nd_body = nd_body;
21582 n->nd_state = nd_state;
21591 n->nd_head = nd_head;
21592 n->nd_mid = nd_mid;
21601 n->nd_mid = nd_mid;
21610 n->nd_beg = nd_beg;
21611 n->nd_end = nd_end;
21620 n->nd_beg = nd_beg;
21621 n->nd_end = nd_end;
21663 n->nd_args = nd_args;
21680 n->nd_recv = nd_recv;
21681 n->nd_value = nd_value;
21691 n->nd_recv = nd_recv;
21692 n->nd_value = nd_value;
21702 n->nd_head = nd_head;
21713 n->nd_head = nd_head;
21714 n->as.nd_alen = nd_alen;
21715 n->nd_next = nd_next;
21732 n->nd_head = nd_head;
21742 n->nd_head = nd_head;
21744 n->nd_args = nd_args;
21753 n->nd_vid = nd_vid;
21754 n->nd_value = nd_value;
21763 n->nd_vid = nd_vid;
21764 n->nd_value = nd_value;
21773 n->nd_vid = nd_vid;
21774 n->nd_value = nd_value;
21783 n->nd_vid = nd_vid;
21784 n->nd_value = nd_value;
21793 n->nd_vid = nd_vid;
21794 n->nd_value = nd_value;
21803 n->nd_recv = nd_recv;
21804 n->nd_mid = nd_mid;
21805 n->nd_index = index;
21806 n->nd_rvalue = rvalue;
21815 n->nd_recv = nd_recv;
21816 n->nd_value = nd_value;
21817 n->nd_vid = nd_vid;
21818 n->nd_mid = nd_mid;
21819 n->nd_aid = nd_aid;
21828 n->nd_head = nd_head;
21829 n->nd_value = nd_value;
21838 n->nd_head = nd_head;
21839 n->nd_value = nd_value;
21848 n->nd_vid = nd_vid;
21857 n->nd_vid = nd_vid;
21866 n->nd_vid = nd_vid;
21875 n->nd_vid = nd_vid;
21884 n->nd_vid = nd_vid;
21893 n->nd_vid = nd_vid;
21902 n->nd_nth = nd_nth;
21911 n->nd_nth = nd_nth;
21920 n->nd_lit = nd_lit;
21929 n->nd_lit = nd_lit;
21939 n->nd_lit = nd_lit;
21940 n->as.nd_alen = nd_alen;
21949 return rb_node_dstr_new0(p, nd_lit, 1, 0, loc);
21956 n->nd_lit = nd_lit;
21965 n->nd_lit = nd_lit;
21966 n->nd_alen = nd_alen;
21976 n->nd_lit = nd_lit;
21977 n->nd_alen = nd_alen;
21987 n->nd_body = nd_body;
21996 n->nd_recv = nd_recv;
21997 n->nd_mid = nd_mid;
21998 n->nd_args = nd_args;
22007 n->nd_recv = nd_recv;
22008 n->nd_mid = nd_mid;
22009 n->nd_args = nd_args;
22018 n->nd_mid = nd_mid;
22019 n->nd_args = nd_args;
22028 n->nd_recv = nd_recv;
22029 n->nd_mid = nd_mid;
22030 n->nd_args = nd_args;
22039 n->nd_mid = nd_mid;
22048 n->nd_body = nd_body;
22066 n->nd_pid = nd_pid;
22067 n->nd_plen = nd_plen;
22077 n->nd_body = nd_body;
22087 n->nd_body = nd_body;
22097 n->nd_1st = nd_1st;
22098 n->nd_2nd = nd_2nd;
22107 n->nd_head = nd_head;
22108 n->nd_body = nd_body;
22117 n->nd_head = nd_head;
22118 n->nd_body = nd_body;
22127 n->nd_head = nd_head;
22137 n->nd_body = nd_body;
22146 n->nd_1st = nd_1st;
22147 n->nd_2nd = nd_2nd;
22156 n->nd_alias = nd_alias;
22157 n->nd_orig = nd_orig;
22166 n->nd_undef = nd_undef;
22183 n->nd_head = nd_head;
22192 n->nd_body = nd_body;
22201 n->nd_recv = nd_recv;
22202 n->nd_mid = nd_mid;
22203 n->nd_args = nd_args;
22213 n->pre_args = pre_args;
22214 n->rest_arg = rest_arg;
22215 n->post_args = post_args;
22224 n->nd_pconst = nd_pconst;
22225 n->nd_pkwargs = nd_pkwargs;
22226 n->nd_pkwrestarg = nd_pkwrestarg;
22236 n->pre_rest_arg = pre_rest_arg;
22238 n->post_rest_arg = post_rest_arg;
22247 n->nd_vid = nd_vid;
22248 n->nd_value = nd_value;
22249 n->nd_else = nd_else;
22258 n->nd_head = nd_head;
22259 n->nd_value = nd_value;
22260 n->nd_aid = nd_aid;
22275static rb_node_ripper_t *
22278 rb_node_ripper_t *n = NODE_NEWNODE(NODE_RIPPER, rb_node_ripper_t, loc);
22279 n->nd_vid = nd_vid;
22280 n->nd_rval = nd_rval;
22281 n->nd_cval = nd_cval;
22286static rb_node_ripper_values_t *
22289 rb_node_ripper_values_t *n = NODE_NEWNODE(NODE_RIPPER_VALUES, rb_node_ripper_values_t, loc);
22290 n->nd_val1 = nd_val1;
22291 n->nd_val2 = nd_val2;
22292 n->nd_val3 = nd_val3;
22303 n->nd_stts = nd_stts;
22313 n->nd_stts = nd_stts;
22332 n->save.cur_arg = p->cur_arg;
22333 n->save.numparam_save = 0;
22334 n->save.max_numparam = 0;
22335 n->save.ctxt = p->ctxt;
22339 n->dot_or_colon =
Qnil;
22351 n->save.numparam_save = numparam_push(p);
22352 n->save.max_numparam = p->max_numparam;
22357static enum node_type
22358nodetype(
NODE *node)
22360 return (
enum node_type)nd_type(node);
22364nodeline(
NODE *node)
22366 return nd_line(node);
22370newline_node(
NODE *node)
22373 node = remove_begin(node);
22374 nd_set_fl_newline(node);
22384 nd_set_line(node, nd_line(orig));
22390 rb_compile_warning(p->ruby_sourcefile, nd_line(node),
"%s", mesg);
22396 rb_compile_warn(p->ruby_sourcefile, nd_line(node),
"%s", mesg);
22402 NODE *end, *h = head, *nd;
22404 if (tail == 0)
return head;
22406 if (h == 0)
return tail;
22407 switch (nd_type(h)) {
22409 h = end = NEW_BLOCK(head, &head->nd_loc);
22410 RNODE_BLOCK(end)->nd_end = end;
22414 end = RNODE_BLOCK(h)->nd_end;
22418 nd = RNODE_BLOCK(end)->nd_head;
22419 switch (nd_type(nd)) {
22426 parser_warning(p, tail,
"statement not reached");
22434 if (!nd_type_p(tail, NODE_BLOCK)) {
22435 tail = NEW_BLOCK(tail, &tail->nd_loc);
22436 RNODE_BLOCK(tail)->nd_end = tail;
22438 RNODE_BLOCK(end)->nd_next = tail;
22439 RNODE_BLOCK(h)->nd_end = RNODE_BLOCK(tail)->nd_end;
22440 nd_set_last_loc(head, nd_last_loc(tail));
22450 if (list == 0)
return NEW_LIST(item, &item->nd_loc);
22451 if (RNODE_LIST(list)->nd_next) {
22452 last = RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end;
22458 RNODE_LIST(list)->as.nd_alen += 1;
22459 RNODE_LIST(last)->nd_next = NEW_LIST(item, &item->nd_loc);
22460 RNODE_LIST(RNODE_LIST(list)->nd_next)->as.nd_end = RNODE_LIST(last)->nd_next;
22462 nd_set_last_loc(list, nd_last_loc(item));
22469list_concat(
NODE *head,
NODE *tail)
22473 if (RNODE_LIST(head)->nd_next) {
22474 last = RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end;
22480 RNODE_LIST(head)->as.nd_alen += RNODE_LIST(tail)->as.nd_alen;
22481 RNODE_LIST(last)->nd_next = tail;
22482 if (RNODE_LIST(tail)->nd_next) {
22483 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = RNODE_LIST(RNODE_LIST(tail)->nd_next)->as.nd_end;
22486 RNODE_LIST(RNODE_LIST(head)->nd_next)->as.nd_end = tail;
22489 nd_set_last_loc(head, nd_last_loc(tail));
22497 if (
NIL_P(tail))
return 1;
22498 if (!rb_enc_compatible(head, tail)) {
22499 compile_error(p,
"string literal encodings differ (%s / %s)",
22500 rb_enc_name(rb_enc_get(head)),
22501 rb_enc_name(rb_enc_get(tail)));
22502 rb_str_resize(head, 0);
22503 rb_str_resize(tail, 0);
22506 rb_str_buf_append(head, tail);
22513 if (htype != NODE_DSTR)
return Qfalse;
22514 if (RNODE_DSTR(head)->nd_next) {
22515 head = RNODE_LIST(RNODE_LIST(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_head;
22516 if (!head || !nd_type_p(head, NODE_STR))
return Qfalse;
22518 const VALUE lit = RNODE_DSTR(head)->nd_lit;
22527 enum node_type htype;
22530 if (!head)
return tail;
22531 if (!tail)
return head;
22533 htype = nd_type(head);
22534 if (htype == NODE_EVSTR) {
22535 head = new_dstr(p, head, loc);
22538 if (p->heredoc_indent > 0) {
22541 head = str2dstr(p, head);
22543 return list_append(p, head, tail);
22548 switch (nd_type(tail)) {
22550 if ((lit = string_literal_head(p, htype, head)) !=
Qfalse) {
22554 lit = RNODE_DSTR(head)->nd_lit;
22556 if (htype == NODE_STR) {
22557 if (!literal_concat0(p, lit, RNODE_STR(tail)->nd_lit)) {
22559 rb_discard_node(p, head);
22560 rb_discard_node(p, tail);
22563 rb_discard_node(p, tail);
22566 list_append(p, head, tail);
22571 if (htype == NODE_STR) {
22572 if (!literal_concat0(p, RNODE_STR(head)->nd_lit, RNODE_DSTR(tail)->nd_lit))
22574 RNODE_DSTR(tail)->nd_lit = RNODE_STR(head)->nd_lit;
22575 rb_discard_node(p, head);
22578 else if (
NIL_P(RNODE_DSTR(tail)->nd_lit)) {
22580 RNODE_DSTR(head)->as.nd_alen += RNODE_DSTR(tail)->as.nd_alen - 1;
22581 if (!RNODE_DSTR(head)->nd_next) {
22582 RNODE_DSTR(head)->nd_next = RNODE_DSTR(tail)->nd_next;
22584 else if (RNODE_DSTR(tail)->nd_next) {
22585 RNODE_DSTR(RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end)->nd_next = RNODE_DSTR(tail)->nd_next;
22586 RNODE_DSTR(RNODE_DSTR(head)->nd_next)->as.nd_end = RNODE_DSTR(RNODE_DSTR(tail)->nd_next)->as.nd_end;
22588 rb_discard_node(p, tail);
22590 else if ((lit = string_literal_head(p, htype, head)) !=
Qfalse) {
22591 if (!literal_concat0(p, lit, RNODE_DSTR(tail)->nd_lit))
22593 RNODE_DSTR(tail)->nd_lit =
Qnil;
22597 list_concat(head, NEW_LIST2(NEW_STR(RNODE_DSTR(tail)->nd_lit, loc), RNODE_DSTR(tail)->as.nd_alen, (
NODE *)RNODE_DSTR(tail)->nd_next, loc));
22602 if (htype == NODE_STR) {
22603 head = str2dstr(p, head);
22604 RNODE_DSTR(head)->as.nd_alen = 1;
22606 list_append(p, head, tail);
22613nd_copy_flag(
NODE *new_node,
NODE *old_node)
22615 if (nd_fl_newline(old_node)) nd_set_fl_newline(new_node);
22616 nd_set_line(new_node, nd_line(old_node));
22617 new_node->nd_loc = old_node->nd_loc;
22618 new_node->node_id = old_node->node_id;
22625 nd_copy_flag(new_node, node);
22626 RNODE_DSTR(new_node)->nd_lit = RNODE_STR(node)->nd_lit;
22627 RNODE_DSTR(new_node)->as.nd_alen = 0;
22628 RNODE_DSTR(new_node)->nd_next = 0;
22629 RNODE_STR(node)->nd_lit = 0;
22637 if (nd_type_p(node, NODE_EVSTR)) {
22638 node = new_dstr(p, node, &node->nd_loc);
22649 switch (nd_type(node)) {
22651 return str2dstr(p, node);
22658 return NEW_EVSTR(head, loc);
22664 VALUE lit = STR_NEW0();
22665 NODE *dstr = NEW_DSTR(lit, loc);
22667 return list_append(p, dstr, node);
22677 expr = NEW_OPCALL(recv,
id, NEW_LIST(arg1, &arg1->nd_loc), loc);
22678 nd_set_line(expr, op_loc->beg_pos.lineno);
22687 opcall = NEW_OPCALL(recv,
id, 0, loc);
22688 nd_set_line(opcall, op_loc->beg_pos.lineno);
22695 NODE *qcall = NEW_QCALL(atype, recv, mid, args, loc);
22696 nd_set_line(qcall, op_loc->beg_pos.lineno);
22704 if (block) block_dup_check(p, args, block);
22705 ret = new_qcall(p, atype, recv, mid, args, op_loc, loc);
22706 if (block) ret = method_add_block(p, ret, block, loc);
22711#define nd_once_body(node) (nd_type_p((node), NODE_ONCE) ? RNODE_ONCE(node)->nd_body : node)
22714last_expr_once_body(
NODE *node)
22716 if (!node)
return 0;
22717 return nd_once_body(node);
22724 int line = op_loc->beg_pos.lineno;
22729 if ((n = last_expr_once_body(node1)) != 0) {
22730 switch (nd_type(n)) {
22733 NODE *match = NEW_MATCH2(node1, node2, loc);
22734 nd_set_line(match, line);
22739 if (RB_TYPE_P(RNODE_LIT(n)->nd_lit,
T_REGEXP)) {
22740 const VALUE lit = RNODE_LIT(n)->nd_lit;
22741 NODE *match = NEW_MATCH2(node1, node2, loc);
22742 RNODE_MATCH2(match)->nd_args = reg_named_capture_assign(p, lit, loc);
22743 nd_set_line(match, line);
22749 if ((n = last_expr_once_body(node2)) != 0) {
22752 switch (nd_type(n)) {
22754 if (!RB_TYPE_P(RNODE_LIT(n)->nd_lit,
T_REGEXP))
break;
22757 match3 = NEW_MATCH3(node2, node1, loc);
22762 n = NEW_CALL(node1, tMATCH, NEW_LIST(node2, &node2->nd_loc), loc);
22763 nd_set_line(n, line);
22767# if WARN_PAST_SCOPE
22771 struct vtable *past = p->lvtbl->past;
22773 if (vtable_included(past,
id))
return 1;
22784 NODE *outer = local->numparam.outer;
22785 NODE *inner = local->numparam.inner;
22786 if (outer || inner) {
22787 NODE *used = outer ? outer : inner;
22788 compile_error(p,
"numbered parameter is already used in\n"
22789 "%s:%d: %s block here",
22790 p->ruby_sourcefile, nd_line(used),
22791 outer ?
"outer" :
"inner");
22792 parser_show_error_line(p, &used->nd_loc);
22805 return NEW_SELF(loc);
22807 return NEW_NIL(loc);
22809 return NEW_TRUE(loc);
22810 case keyword_false:
22811 return NEW_FALSE(loc);
22812 case keyword__FILE__:
22814 VALUE file = p->ruby_sourcefile_string;
22818 file = rb_str_dup(file);
22819 node = NEW_STR(file, loc);
22823 case keyword__LINE__:
22824 return NEW_LIT(
INT2FIX(loc->beg_pos.lineno), loc);
22825 case keyword__ENCODING__:
22826 node = NEW_LIT(rb_enc_from_encoding(p->enc), loc);
22831 switch (id_type(
id)) {
22833 if (dyna_in_block(p) && dvar_defined_ref(p,
id, &vidp)) {
22834 if (NUMPARAM_ID_P(
id) && numparam_nested_p(p))
return 0;
22835 if (
id == p->cur_arg) {
22836 compile_error(p,
"circular argument reference - %"PRIsWARN, rb_id2str(
id));
22839 if (vidp) *vidp |= LVAR_USED;
22840 node = NEW_DVAR(
id, loc);
22843 if (local_id_ref(p,
id, &vidp)) {
22844 if (
id == p->cur_arg) {
22845 compile_error(p,
"circular argument reference - %"PRIsWARN, rb_id2str(
id));
22848 if (vidp) *vidp |= LVAR_USED;
22849 node = NEW_LVAR(
id, loc);
22852 if (dyna_in_block(p) && NUMPARAM_ID_P(
id) &&
22853 parser_numbered_param(p, NUMPARAM_ID_TO_IDX(
id))) {
22854 if (numparam_nested_p(p))
return 0;
22855 node = NEW_DVAR(
id, loc);
22857 if (!local->numparam.current) local->numparam.current = node;
22860# if WARN_PAST_SCOPE
22862 rb_warning1(
"possible reference to past scope - %"PRIsWARN, rb_id2str(
id));
22866 if (dyna_in_block(p) &&
id == rb_intern(
"it")
22867 && !(DVARS_TERMINAL_P(p->lvtbl->args) || DVARS_TERMINAL_P(p->lvtbl->args->prev))
22868 && p->max_numparam != ORDINAL_PARAM) {
22869 rb_warn0(
"`it` calls without arguments will refer to the first block param in Ruby 3.4; use it() or self.it");
22871 return NEW_VCALL(
id, loc);
22873 return NEW_GVAR(
id, loc);
22875 return NEW_IVAR(
id, loc);
22877 return NEW_CONST(
id, loc);
22879 return NEW_CVAR(
id, loc);
22881 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
22889 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
22891 while (opts->nd_next) {
22892 opts = opts->nd_next;
22893 RNODE(opts)->nd_loc.end_pos = RNODE(opt)->nd_loc.end_pos;
22895 opts->nd_next = opt;
22905 opt_arg_append(RNODE_OPT_ARG(kwlist), RNODE_OPT_ARG(kw));
22913 return NEW_DEFINED(remove_begin_all(expr), loc);
22919 enum node_type
type = nd_type(symbol);
22922 nd_set_type(symbol, NODE_DSYM);
22925 nd_set_type(symbol, NODE_LIT);
22926 RB_OBJ_WRITTEN(p->ast,
Qnil, RNODE_LIT(symbol)->nd_lit = rb_str_intern(RNODE_LIT(symbol)->nd_lit));
22929 compile_error(p,
"unexpected node as symbol: %s", parser_node_name(
type));
22931 return list_append(p, symbols, symbol);
22942 node = NEW_LIT(reg_compile(p, STR_NEW0(), options), loc);
22946 switch (nd_type(node)) {
22949 VALUE src = RNODE_STR(node)->nd_lit;
22950 nd_set_type(node, NODE_LIT);
22951 nd_set_loc(node, loc);
22952 RB_OBJ_WRITTEN(p->ast,
Qnil, RNODE_LIT(node)->nd_lit = reg_compile(p, src, options));
22957 node = NEW_DSTR0(lit, 1, NEW_LIST(node, loc), loc);
22961 nd_set_type(node, NODE_DREGX);
22962 nd_set_loc(node, loc);
22963 RNODE_DREGX(node)->nd_cflag = options & RE_OPTION_MASK;
22964 if (!
NIL_P(RNODE_DREGX(node)->nd_lit)) reg_fragment_check(p, RNODE_DREGX(node)->nd_lit, options);
22965 for (list = RNODE_DREGX(prev = node)->nd_next; list; list = RNODE_LIST(list->nd_next)) {
22966 NODE *frag = list->nd_head;
22967 enum node_type
type = nd_type(frag);
22968 if (
type == NODE_STR || (
type == NODE_DSTR && !RNODE_DSTR(frag)->nd_next)) {
22969 VALUE tail = RNODE_STR(frag)->nd_lit;
22970 if (reg_fragment_check(p, tail, options) && prev && !
NIL_P(RNODE_DREGX(prev)->nd_lit)) {
22971 VALUE lit = prev == node ? RNODE_DREGX(prev)->nd_lit : RNODE_LIT(RNODE_LIST(prev)->nd_head)->nd_lit;
22972 if (!literal_concat0(p, lit, tail)) {
22973 return NEW_NIL(loc);
22975 rb_str_resize(tail, 0);
22976 RNODE_LIST(prev)->nd_next = list->nd_next;
22977 rb_discard_node(p, list->nd_head);
22978 rb_discard_node(p, (
NODE *)list);
22979 list = RNODE_LIST(prev);
22982 prev = (
NODE *)list;
22989 if (!RNODE_DREGX(node)->nd_next) {
22990 VALUE src = RNODE_DREGX(node)->nd_lit;
22991 VALUE re = reg_compile(p, src, options);
22994 if (options & RE_OPTION_ONCE) {
22995 node = NEW_ONCE(node, loc);
23006 return NEW_KW_ARG((k), loc);
23013 VALUE lit = STR_NEW0();
23014 NODE *xstr = NEW_XSTR(lit, loc);
23018 switch (nd_type(node)) {
23020 nd_set_type(node, NODE_XSTR);
23021 nd_set_loc(node, loc);
23024 nd_set_type(node, NODE_DXSTR);
23025 nd_set_loc(node, loc);
23028 node = NEW_DXSTR(
Qnil, 1, NEW_LIST(node, loc), loc);
23039 if (!arg || !p->case_labels)
return;
23041 lit = rb_node_case_when_optimizable_literal(arg);
23042 if (UNDEF_P(lit))
return;
23043 if (nd_type_p(arg, NODE_STR)) {
23047 if (
NIL_P(p->case_labels)) {
23048 p->case_labels = rb_obj_hide(rb_hash_new());
23051 VALUE line = rb_hash_lookup(p->case_labels, lit);
23052 if (!
NIL_P(line)) {
23053 rb_warning1(
"duplicated `when' clause with line %d is ignored",
23058 rb_hash_aset(p->case_labels, lit,
INT2NUM(p->ruby_sourceline));
23065 if (is_notop_id(
id)) {
23066 switch (
id & ID_SCOPE_MASK) {
23067 case ID_GLOBAL:
case ID_INSTANCE:
case ID_CONST:
case ID_CLASS:
23070 if (dyna_in_block(p)) {
23071 if (NUMPARAM_ID_P(
id) || dvar_defined(p,
id))
return 1;
23073 if (local_id(p,
id))
return 1;
23078 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to get", rb_id2str(
id));
23085 VALUE src = 0, err = 0;
23087 if (ripper_is_node_yylval(p, re)) {
23088 src = RNODE_RIPPER(re)->nd_cval;
23089 re = RNODE_RIPPER(re)->nd_rval;
23091 if (ripper_is_node_yylval(p, opt)) {
23092 options = (int)RNODE_RIPPER(opt)->nd_vid;
23093 opt = RNODE_RIPPER(opt)->nd_rval;
23095 if (src &&
NIL_P(parser_reg_compile(p, src, options, &err))) {
23096 compile_error(p,
"%"PRIsVALUE, err);
23098 return dispatch2(regexp_literal, re, opt);
23102static inline enum lex_state_e
23103parser_set_lex_state(
struct parser_params *p,
enum lex_state_e ls,
int line)
23106 ls = rb_parser_trace_lex_state(p, p->lex.state, ls, line);
23108 return p->lex.state = ls;
23112static const char rb_parser_lex_state_names[][8] = {
23113 "BEG",
"END",
"ENDARG",
"ENDFN",
"ARG",
23114 "CMDARG",
"MID",
"FNAME",
"DOT",
"CLASS",
23115 "LABEL",
"LABELED",
"FITEM",
23122 unsigned int mask = 1;
23123 static const char none[] =
"NONE";
23125 for (i = 0; i < EXPR_MAX_STATE; ++i, mask <<= 1) {
23126 if ((
unsigned)state & mask) {
23128 rb_str_cat(buf,
"|", 1);
23135 rb_str_cat(buf, none,
sizeof(none)-1);
23143 VALUE mesg = p->debug_buffer;
23145 if (!
NIL_P(mesg) && RSTRING_LEN(mesg)) {
23146 p->debug_buffer =
Qnil;
23147 rb_io_puts(1, &mesg, out);
23149 if (!
NIL_P(str) && RSTRING_LEN(str)) {
23150 rb_io_write(p->debug_output, str);
23155rb_parser_trace_lex_state(
struct parser_params *p,
enum lex_state_e from,
23156 enum lex_state_e to,
int line)
23160 append_lex_state_name(p, from, mesg);
23162 append_lex_state_name(p, to, mesg);
23163 rb_str_catf(mesg,
" at line %d\n", line);
23164 flush_debug_buffer(p, p->debug_output, mesg);
23169rb_parser_lex_state_name(
struct parser_params *p,
enum lex_state_e state)
23171 return rb_fstring(append_lex_state_name(p, state,
rb_str_new(0, 0)));
23181 stack_type mask = (stack_type)1U << (CHAR_BIT *
sizeof(stack_type) - 1);
23182 for (; mask && !(stack & mask); mask >>= 1)
continue;
23183 for (; mask; mask >>= 1) rb_str_cat(mesg, stack & mask ?
"1" :
"0", 1);
23188rb_parser_show_bitstack(
struct parser_params *p, stack_type stack,
23189 const char *name,
int line)
23191 VALUE mesg = rb_sprintf(
"%s: ", name);
23192 append_bitstack_value(p, stack, mesg);
23193 rb_str_catf(mesg,
" at line %d\n", line);
23194 flush_debug_buffer(p, p->debug_output, mesg);
23198rb_parser_fatal(
struct parser_params *p,
const char *fmt, ...)
23204 rb_str_vcatf(mesg, fmt, ap);
23206 yyerror0(RSTRING_PTR(mesg));
23210 append_lex_state_name(p, p->lex.state, mesg);
23211 compile_error(p,
"lex.state: %"PRIsVALUE, mesg);
23212 rb_str_resize(mesg, 0);
23213 append_bitstack_value(p, p->cond_stack, mesg);
23214 compile_error(p,
"cond_stack: %"PRIsVALUE, mesg);
23215 rb_str_resize(mesg, 0);
23216 append_bitstack_value(p, p->cmdarg_stack, mesg);
23217 compile_error(p,
"cmdarg_stack: %"PRIsVALUE, mesg);
23218 if (p->debug_output == rb_ractor_stdout())
23219 p->debug_output = rb_ractor_stderr();
23224rb_parser_set_pos(
YYLTYPE *yylloc,
int sourceline,
int beg_pos,
int end_pos)
23226 yylloc->beg_pos.lineno = sourceline;
23227 yylloc->beg_pos.column = beg_pos;
23228 yylloc->end_pos.lineno = sourceline;
23229 yylloc->end_pos.column = end_pos;
23236 int sourceline = here->sourceline;
23237 int beg_pos = (int)here->offset - here->quote
23238 - (
rb_strlen_lit(
"<<-") - !(here->func & STR_FUNC_INDENT));
23239 int end_pos = (int)here->offset + here->length + here->quote;
23241 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
23247 yylloc->beg_pos.lineno = p->delayed.beg_line;
23248 yylloc->beg_pos.column = p->delayed.beg_col;
23249 yylloc->end_pos.lineno = p->delayed.end_line;
23250 yylloc->end_pos.column = p->delayed.end_col;
23258 int sourceline = p->ruby_sourceline;
23259 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
23260 int end_pos = (int)(p->lex.pend - p->lex.pbeg);
23261 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
23267 yylloc->end_pos = yylloc->beg_pos;
23275 int sourceline = p->ruby_sourceline;
23276 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
23277 int end_pos = (int)(p->lex.ptok - p->lex.pbeg);
23278 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
23284 int sourceline = p->ruby_sourceline;
23285 int beg_pos = (int)(p->lex.ptok - p->lex.pbeg);
23286 int end_pos = (int)(p->lex.pcur - p->lex.pbeg);
23287 return rb_parser_set_pos(yylloc, sourceline, beg_pos, end_pos);
23294 if (!
id)
return -1;
23297 *err =
"Can't change the value of self";
23300 *err =
"Can't assign to nil";
23303 *err =
"Can't assign to true";
23305 case keyword_false:
23306 *err =
"Can't assign to false";
23308 case keyword__FILE__:
23309 *err =
"Can't assign to __FILE__";
23311 case keyword__LINE__:
23312 *err =
"Can't assign to __LINE__";
23314 case keyword__ENCODING__:
23315 *err =
"Can't assign to __ENCODING__";
23318 switch (id_type(
id)) {
23320 if (dyna_in_block(p)) {
23321 if (p->max_numparam > NO_PARAM && NUMPARAM_ID_P(
id)) {
23322 compile_error(p,
"Can't assign to numbered parameter _%d",
23323 NUMPARAM_ID_TO_IDX(
id));
23326 if (dvar_curr(p,
id))
return NODE_DASGN;
23327 if (dvar_defined(p,
id))
return NODE_DASGN;
23328 if (local_id(p,
id))
return NODE_LASGN;
23333 if (!local_id(p,
id)) local_var(p,
id);
23337 case ID_GLOBAL:
return NODE_GASGN;
23338 case ID_INSTANCE:
return NODE_IASGN;
23340 if (!p->ctxt.in_def)
return NODE_CDECL;
23341 *err =
"dynamic constant assignment";
23343 case ID_CLASS:
return NODE_CVASGN;
23345 compile_error(p,
"identifier %"PRIsVALUE
" is not valid to set", rb_id2str(
id));
23354 const char *err = 0;
23355 int node_type = assignable0(p,
id, &err);
23356 switch (node_type) {
23357 case NODE_DASGN:
return NEW_DASGN(
id, val, loc);
23358 case NODE_LASGN:
return NEW_LASGN(
id, val, loc);
23359 case NODE_GASGN:
return NEW_GASGN(
id, val, loc);
23360 case NODE_IASGN:
return NEW_IASGN(
id, val, loc);
23361 case NODE_CDECL:
return NEW_CDECL(
id, val, 0, loc);
23362 case NODE_CVASGN:
return NEW_CVASGN(
id, val, loc);
23364 if (err) yyerror1(loc, err);
23365 return NEW_BEGIN(0, loc);
23371 const char *err = 0;
23372 assignable0(p, get_id(lhs), &err);
23373 if (err) lhs = assign_error(p, err, lhs);
23382 if (name == idUScore)
return 1;
23383 if (!is_local_id(name))
return 0;
23384 s = rb_id2str(name);
23386 return RSTRING_PTR(s)[0] ==
'_';
23392 if (dyna_in_block(p)) {
23393 if (dvar_curr(p, name)) {
23394 if (is_private_local_id(p, name))
return 1;
23395 yyerror0(
"duplicated argument name");
23397 else if (dvar_defined(p, name) || local_id(p, name)) {
23398 vtable_add(p->lvtbl->vars, name);
23399 if (p->lvtbl->used) {
23400 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline | LVAR_USED);
23406 if (local_id(p, name)) {
23407 if (is_private_local_id(p, name))
return 1;
23408 yyerror0(
"duplicated argument name");
23417 shadowing_lvar_0(p, name);
23425 if (!is_local_id(name)) {
23426 compile_error(p,
"invalid local variable - %"PRIsVALUE,
23430 if (!shadowing_lvar_0(p, name))
return;
23438 return NEW_ATTRASGN(recv, tASET, idx, loc);
23444 if (node2 && node1 && nd_type_p(node1, NODE_BLOCK_PASS)) {
23445 compile_error(p,
"both block arg and actual block given");
23452 if (!CALL_Q_P(atype))
id = rb_id_attrset(
id);
23453 return NEW_ATTRASGN(recv,
id, 0, loc);
23459 switch (nd_type(node)) {
23461 compile_error(p,
"Can't set variable $%ld", RNODE_NTH_REF(node)->nd_nth);
23463 case NODE_BACK_REF:
23464 compile_error(p,
"Can't set variable $%c", (
int)RNODE_BACK_REF(node)->nd_nth);
23474 return dispatch2(assign_error, mesg, expr);
23482 if (!node1)
return NEW_LIST(node2, &node2->nd_loc);
23483 switch (nd_type(node1)) {
23485 return list_append(p, node1, node2);
23486 case NODE_BLOCK_PASS:
23487 RNODE_BLOCK_PASS(node1)->nd_head = arg_append(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
23488 node1->nd_loc.end_pos = RNODE_BLOCK_PASS(node1)->nd_head->nd_loc.end_pos;
23490 case NODE_ARGSPUSH:
23491 RNODE_ARGSPUSH(node1)->nd_body = list_append(p, NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, &RNODE_ARGSPUSH(node1)->nd_body->nd_loc), node2);
23492 node1->nd_loc.end_pos = RNODE_ARGSPUSH(node1)->nd_body->nd_loc.end_pos;
23493 nd_set_type(node1, NODE_ARGSCAT);
23496 if (!nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
23497 RNODE_ARGSCAT(node1)->nd_body = list_append(p, RNODE_ARGSCAT(node1)->nd_body, node2);
23498 node1->nd_loc.end_pos = RNODE_ARGSCAT(node1)->nd_body->nd_loc.end_pos;
23501 return NEW_ARGSPUSH(node1, node2, loc);
23507 if (!node2)
return node1;
23508 switch (nd_type(node1)) {
23509 case NODE_BLOCK_PASS:
23510 if (RNODE_BLOCK_PASS(node1)->nd_head)
23511 RNODE_BLOCK_PASS(node1)->nd_head = arg_concat(p, RNODE_BLOCK_PASS(node1)->nd_head, node2, loc);
23513 RNODE_LIST(node1)->nd_head = NEW_LIST(node2, loc);
23515 case NODE_ARGSPUSH:
23516 if (!nd_type_p(node2, NODE_LIST))
break;
23517 RNODE_ARGSPUSH(node1)->nd_body = list_concat(NEW_LIST(RNODE_ARGSPUSH(node1)->nd_body, loc), node2);
23518 nd_set_type(node1, NODE_ARGSCAT);
23521 if (!nd_type_p(node2, NODE_LIST) ||
23522 !nd_type_p(RNODE_ARGSCAT(node1)->nd_body, NODE_LIST))
break;
23523 RNODE_ARGSCAT(node1)->nd_body = list_concat(RNODE_ARGSCAT(node1)->nd_body, node2);
23526 return NEW_ARGSCAT(node1, node2, loc);
23533 if ((n1 = splat_array(args)) != 0) {
23534 return list_append(p, n1, last_arg);
23536 return arg_append(p, args, last_arg, loc);
23543 if ((nd_type_p(rest_arg, NODE_LIST)) && (n1 = splat_array(args)) != 0) {
23544 return list_concat(n1, rest_arg);
23546 return arg_concat(p, args, rest_arg, loc);
23550splat_array(
NODE* node)
23552 if (nd_type_p(node, NODE_SPLAT)) node = RNODE_SPLAT(node)->nd_head;
23553 if (nd_type_p(node, NODE_LIST))
return node;
23562 switch (nd_type(rhs)) {
23564 if (local_id_ref(p, RNODE_LASGN(rhs)->nd_vid, &vidp)) {
23565 if (vidp) *vidp |= LVAR_USED;
23569 if (dvar_defined_ref(p, RNODE_DASGN(rhs)->nd_vid, &vidp)) {
23570 if (vidp) *vidp |= LVAR_USED;
23575 for (rhs = rhs->nd_head; rhs; rhs = rhs->nd_next) {
23576 mark_lvar_used(p, rhs->nd_head);
23587 if (!nd_type_p(n, NODE_CALL)) {
23588 const YYLTYPE *loc = &n->nd_loc;
23590 if (RNODE_CDECL(n)->nd_vid) {
23591 path = rb_id2str(RNODE_CDECL(n)->nd_vid);
23594 n = RNODE_CDECL(n)->nd_else;
23595 path = rb_ary_new();
23596 for (; n && nd_type_p(n, NODE_COLON2); n = RNODE_COLON2(n)->nd_head) {
23597 rb_ary_push(path, rb_id2str(RNODE_COLON2(n)->nd_mid));
23599 if (n && nd_type_p(n, NODE_CONST)) {
23601 rb_ary_push(path, rb_id2str(RNODE_CONST(n)->nd_vid));
23603 else if (n && nd_type_p(n, NODE_COLON3)) {
23612 path = rb_fstring(path);
23614 *dest = n = NEW_LIT(path, loc);
23623 NODE *fcore = NEW_LIT(rb_mRubyVMFrozenCore, loc);
23626 return NEW_CALL(fcore, rb_intern(
"make_shareable_copy"),
23627 NEW_LIST(value, loc), loc);
23630 return NEW_CALL(fcore, rb_intern(
"make_shareable"),
23631 NEW_LIST(value, loc), loc);
23638 NODE *fcore = NEW_LIT(rb_mRubyVMFrozenCore, loc);
23639 NODE *args = NEW_LIST(value, loc);
23640 args = list_append(p, args, const_decl_path(p, dest));
23641 return NEW_CALL(fcore, rb_intern(
"ensure_shareable"), args, loc);
23644static int is_static_content(
NODE *node);
23649 if (!node)
return Qnil;
23650 enum node_type
type = nd_type(node);
23659 return RNODE_LIT(node)->nd_lit;
23665#ifndef SHAREABLE_BARE_EXPRESSION
23666#define SHAREABLE_BARE_EXPRESSION 1
23670shareable_literal_constant(
struct parser_params *p,
enum shareability shareable,
23673# define shareable_literal_constant_next(n) \
23674 shareable_literal_constant(p, shareable, dest, (n), &(n)->nd_loc, level+1)
23677 if (!value)
return 0;
23678 enum node_type
type = nd_type(value);
23687 if (shareable == shareable_literal) {
23688 value = NEW_CALL(value, idUMinus, 0, loc);
23693 lit = rb_fstring(RNODE_STR(value)->nd_lit);
23694 nd_set_type(value, NODE_LIT);
23699 lit = rb_ary_new();
23701 NODE *n = NEW_LIT(lit, loc);
23706 lit = rb_ary_new();
23707 for (
NODE *n = value; n; n = RNODE_LIST(n)->nd_next) {
23708 NODE *elt = RNODE_LIST(n)->nd_head;
23710 elt = shareable_literal_constant_next(elt);
23712 RNODE_LIST(n)->nd_head = elt;
23714 else if (
RTEST(lit)) {
23720 VALUE e = shareable_literal_value(p, elt);
23722 rb_ary_push(lit, e);
23733 if (!RNODE_HASH(value)->nd_brace)
return 0;
23734 lit = rb_hash_new();
23735 for (
NODE *n = RNODE_HASH(value)->nd_head; n; n = RNODE_LIST(RNODE_LIST(n)->nd_next)->nd_next) {
23736 NODE *key = RNODE_LIST(n)->nd_head;
23737 NODE *val = RNODE_LIST(RNODE_LIST(n)->nd_next)->nd_head;
23739 key = shareable_literal_constant_next(key);
23741 RNODE_LIST(n)->nd_head = key;
23743 else if (
RTEST(lit)) {
23744 rb_hash_clear(lit);
23749 val = shareable_literal_constant_next(val);
23751 RNODE_LIST(RNODE_LIST(n)->nd_next)->nd_head = val;
23753 else if (
RTEST(lit)) {
23754 rb_hash_clear(lit);
23759 VALUE k = shareable_literal_value(p, key);
23760 VALUE v = shareable_literal_value(p, val);
23761 if (!UNDEF_P(k) && !UNDEF_P(v)) {
23762 rb_hash_aset(lit, k, v);
23765 rb_hash_clear(lit);
23773 if (shareable == shareable_literal &&
23774 (SHAREABLE_BARE_EXPRESSION || level > 0)) {
23775 return ensure_shareable_node(p, dest, value, loc);
23781 if (!lit)
return 0;
23785 value = make_shareable_node(p, value,
false, loc);
23788 value = NEW_LIT(rb_ractor_make_shareable(lit), loc);
23793# undef shareable_literal_constant_next
23797shareable_constant_value(
struct parser_params *p,
enum shareability shareable,
23800 if (!value)
return 0;
23801 switch (shareable) {
23802 case shareable_none:
23805 case shareable_literal:
23807 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
23808 if (lit)
return lit;
23813 case shareable_copy:
23814 case shareable_everything:
23816 NODE *lit = shareable_literal_constant(p, shareable, &lhs, value, loc, 0);
23817 if (lit)
return lit;
23818 return make_shareable_node(p, value, shareable == shareable_copy, loc);
23830 if (!lhs)
return 0;
23832 switch (nd_type(lhs)) {
23834 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
23843 set_nd_value(p, lhs, rhs);
23844 nd_set_loc(lhs, loc);
23847 case NODE_ATTRASGN:
23848 RNODE_ATTRASGN(lhs)->nd_args = arg_append(p, RNODE_ATTRASGN(lhs)->nd_args, rhs, loc);
23849 nd_set_loc(lhs, loc);
23863 NODE *void_node = 0, *vn;
23866 rb_warning0(
"empty expression");
23869 switch (nd_type(node)) {
23875 return void_node ? void_node : node;
23878 if (!RNODE_CASE3(node)->nd_body || !nd_type_p(RNODE_CASE3(node)->nd_body, NODE_IN)) {
23879 compile_error(p,
"unexpected node");
23882 if (RNODE_IN(RNODE_CASE3(node)->nd_body)->nd_body) {
23886 return void_node ? void_node : node;
23889 while (RNODE_BLOCK(node)->nd_next) {
23890 node = RNODE_BLOCK(node)->nd_next;
23892 node = RNODE_BLOCK(node)->nd_head;
23896 node = RNODE_BEGIN(node)->nd_body;
23901 if (!RNODE_IF(node)->nd_body) {
23904 else if (!RNODE_IF(node)->nd_else) {
23907 vn = value_expr_check(p, RNODE_IF(node)->nd_body);
23908 if (!vn)
return NULL;
23909 if (!void_node) void_node = vn;
23910 node = RNODE_IF(node)->nd_else;
23915 node = RNODE_AND(node)->nd_1st;
23921 mark_lvar_used(p, node);
23935 NODE *void_node = value_expr_check(p, node);
23937 yyerror1(&void_node->nd_loc,
"void value expression");
23947 const char *useless = 0;
23951 if (!node || !(node = nd_once_body(node)))
return;
23952 switch (nd_type(node)) {
23954 switch (RNODE_OPCALL(node)->nd_mid) {
23973 useless = rb_id2name(RNODE_OPCALL(node)->nd_mid);
23984 case NODE_BACK_REF:
23985 useless =
"a variable";
23988 useless =
"a constant";
23994 useless =
"a literal";
24019 useless =
"defined?";
24024 rb_warn1L(nd_line(node),
"possibly useless use of %s in void context", WARN_S(useless));
24031 NODE *
const n = node;
24033 if (!node)
return n;
24034 if (!nd_type_p(node, NODE_BLOCK))
return n;
24036 while (RNODE_BLOCK(node)->nd_next) {
24037 void_expr(p, RNODE_BLOCK(node)->nd_head);
24038 node = RNODE_BLOCK(node)->nd_next;
24044remove_begin(
NODE *node)
24046 NODE **n = &node, *n1 = node;
24047 while (n1 && nd_type_p(n1, NODE_BEGIN) && RNODE_BEGIN(n1)->nd_body) {
24048 *n = n1 = RNODE_BEGIN(n1)->nd_body;
24054remove_begin_all(
NODE *node)
24056 NODE **n = &node, *n1 = node;
24057 while (n1 && nd_type_p(n1, NODE_BEGIN)) {
24058 *n = n1 = RNODE_BEGIN(n1)->nd_body;
24066 NODE *node = *body;
24069 *body = NEW_NIL(&NULL_LOC);
24072#define subnodes(type, n1, n2) \
24073 ((!type(node)->n1) ? (type(node)->n2 ? (body = &type(node)->n2, 1) : 0) : \
24074 (!type(node)->n2) ? (body = &type(node)->n1, 1) : \
24075 (reduce_nodes(p, &type(node)->n1), body = &type(node)->n2, 1))
24078 int newline = (int)(nd_fl_newline(node));
24079 switch (nd_type(node)) {
24085 *body = node = RNODE_RETURN(node)->nd_stts;
24086 if (newline && node) nd_set_fl_newline(node);
24089 *body = node = RNODE_BEGIN(node)->nd_body;
24090 if (newline && node) nd_set_fl_newline(node);
24093 body = &RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head;
24097 if (subnodes(RNODE_IF, nd_body, nd_else))
break;
24100 body = &RNODE_CASE(node)->nd_body;
24103 if (!subnodes(RNODE_WHEN, nd_body, nd_next))
goto end;
24106 if (!subnodes(RNODE_ENSURE, nd_head, nd_resq))
goto end;
24110 if (RNODE_RESCUE(node)->nd_else) {
24111 body = &RNODE_RESCUE(node)->nd_resq;
24114 if (!subnodes(RNODE_RESCUE, nd_head, nd_resq))
goto end;
24120 if (newline && node) nd_set_fl_newline(node);
24127is_static_content(
NODE *node)
24129 if (!node)
return 1;
24130 switch (nd_type(node)) {
24132 if (!(node = RNODE_HASH(node)->nd_head))
break;
24135 if (!is_static_content(RNODE_LIST(node)->nd_head))
return 0;
24136 }
while ((node = RNODE_LIST(node)->nd_next) != 0);
24153 switch (nd_type(node)) {
24167 if (!get_nd_value(p, node))
return 1;
24168 if (is_static_content(get_nd_value(p, node))) {
24170 parser_warn(p, get_nd_value(p, node),
"found `= literal' in conditional, should be ==");
24181#define SWITCH_BY_COND_TYPE(t, w, arg) do { \
24183 case COND_IN_OP: break; \
24184 case COND_IN_COND: rb_##w##0(arg "literal in condition"); break; \
24185 case COND_IN_FF: rb_##w##0(arg "literal in flip-flop"); break; \
24194 enum node_type
type;
24196 if (node == 0)
return 0;
24198 type = nd_type(node);
24200 if (
type == NODE_LIT &&
FIXNUM_P(RNODE_LIT(node)->nd_lit)) {
24201 if (!e_option_supplied(p)) parser_warn(p, node,
"integer literal in flip-flop");
24202 ID lineno = rb_intern(
"$.");
24203 return NEW_CALL(node, tEQ, NEW_LIST(NEW_GVAR(lineno, loc), loc), loc);
24205 return cond0(p, node, COND_IN_FF, loc,
true);
24211 if (node == 0)
return 0;
24212 if (!(node = nd_once_body(node)))
return 0;
24213 assign_in_cond(p, node);
24215 switch (nd_type(node)) {
24217 RNODE_BEGIN(node)->nd_body = cond0(p, RNODE_BEGIN(node)->nd_body,
type, loc, top);
24223 SWITCH_BY_COND_TYPE(
type, warn,
"string ");
24227 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warning,
"regex ");
24229 return NEW_MATCH2(node, NEW_GVAR(idLASTLINE, loc), loc);
24232 RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head = cond0(p, RNODE_BLOCK(RNODE_BLOCK(node)->nd_end)->nd_head,
type, loc,
false);
24237 RNODE_AND(node)->nd_1st = cond0(p, RNODE_AND(node)->nd_1st, COND_IN_COND, loc,
true);
24238 RNODE_AND(node)->nd_2nd = cond0(p, RNODE_AND(node)->nd_2nd, COND_IN_COND, loc,
true);
24244 RNODE_DOT2(node)->nd_beg = range_op(p, RNODE_DOT2(node)->nd_beg, loc);
24245 RNODE_DOT2(node)->nd_end = range_op(p, RNODE_DOT2(node)->nd_end, loc);
24246 if (nd_type_p(node, NODE_DOT2)) nd_set_type(node,NODE_FLIP2);
24247 else if (nd_type_p(node, NODE_DOT3)) nd_set_type(node, NODE_FLIP3);
24252 SWITCH_BY_COND_TYPE(
type, warning,
"symbol ");
24256 if (RB_TYPE_P(RNODE_LIT(node)->nd_lit,
T_REGEXP)) {
24257 if (!e_option_supplied(p)) SWITCH_BY_COND_TYPE(
type, warn,
"regex ");
24258 nd_set_type(node, NODE_MATCH);
24260 else if (RNODE_LIT(node)->nd_lit ==
Qtrue ||
24261 RNODE_LIT(node)->nd_lit ==
Qfalse) {
24264 else if (
SYMBOL_P(RNODE_LIT(node)->nd_lit)) {
24268 SWITCH_BY_COND_TYPE(
type, warning,
"");
24279 if (node == 0)
return 0;
24280 return cond0(p, node, COND_IN_COND, loc,
true);
24286 if (node == 0)
return 0;
24287 return cond0(p, node, COND_IN_OP, loc,
true);
24294 return NEW_NIL(&loc);
24300 if (!cc)
return right;
24301 cc = cond0(p, cc, COND_IN_COND, loc,
true);
24302 return newline_node(NEW_IF(cc, left, right, loc));
24308 if (!cc)
return right;
24309 cc = cond0(p, cc, COND_IN_COND, loc,
true);
24310 return newline_node(NEW_UNLESS(cc, left, right, loc));
24313#define NEW_AND_OR(type, f, s, loc) (type == NODE_AND ? NEW_AND(f,s,loc) : NEW_OR(f,s,loc))
24319 enum node_type
type =
id == idAND ||
id == idANDOP ? NODE_AND : NODE_OR;
24322 if (left && nd_type_p(left,
type)) {
24323 NODE *node = left, *second;
24324 while ((second = RNODE_AND(node)->nd_2nd) != 0 && nd_type_p(second,
type)) {
24327 RNODE_AND(node)->nd_2nd = NEW_AND_OR(
type, second, right, loc);
24328 nd_set_line(RNODE_AND(node)->nd_2nd, op_loc->beg_pos.lineno);
24329 left->nd_loc.end_pos = loc->end_pos;
24332 op = NEW_AND_OR(
type, left, right, loc);
24333 nd_set_line(op, op_loc->beg_pos.lineno);
24342 if (nd_type_p(node, NODE_BLOCK_PASS)) {
24343 compile_error(p,
"block argument should not be given");
24351 no_blockarg(p, node);
24352 if (nd_type_p(node, NODE_LIST) && !RNODE_LIST(node)->nd_next) {
24353 node = RNODE_LIST(node)->nd_head;
24362 if (node) no_blockarg(p, node);
24364 return NEW_YIELD(node, loc);
24383 bignum_negate(lit);
24384 lit = rb_big_norm(lit);
24387 rational_set_num(lit, negate_lit(p, rational_get_num(lit)));
24390 rcomplex_set_real(lit, negate_lit(p, rcomplex_get_real(lit)));
24391 rcomplex_set_imag(lit, negate_lit(p, rcomplex_get_imag(lit)));
24398 rb_parser_fatal(p,
"unknown literal type (%s) passed to negate_lit",
24399 rb_builtin_class_name(lit));
24409 if (!node1)
return (
NODE *)node2;
24410 node2->nd_head = node1;
24411 nd_set_first_lineno(node2, nd_first_lineno(node1));
24412 nd_set_first_column(node2, nd_first_column(node1));
24413 return (
NODE *)node2;
24421 if (args->pre_args_num)
return false;
24422 if (args->post_args_num)
return false;
24423 if (args->rest_arg)
return false;
24424 if (args->opt_args)
return false;
24425 if (args->block_arg)
return false;
24426 if (args->kw_args)
return false;
24427 if (args->kw_rest_arg)
return false;
24436 if (args->forwarding) {
24438 yyerror1(&RNODE(tail)->nd_loc,
"... after rest argument");
24441 rest_arg = idFWD_REST;
24444 args->pre_args_num = pre_args ?
rb_long2int(pre_args->nd_plen) : 0;
24445 args->pre_init = pre_args ? pre_args->nd_next : 0;
24447 args->post_args_num = post_args ?
rb_long2int(post_args->nd_plen) : 0;
24448 args->post_init = post_args ? post_args->nd_next : 0;
24449 args->first_post_arg = post_args ? post_args->nd_pid : 0;
24451 args->rest_arg = rest_arg;
24453 args->opt_args = opt_args;
24455#ifdef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
24456 args->ruby2_keywords = args->forwarding;
24458 args->ruby2_keywords = 0;
24461 nd_set_loc(RNODE(tail), loc);
24471 if (p->error_p)
return node;
24473 args->block_arg = block;
24474 args->kw_args = kw_args;
24483 ID kw_bits = internal_id(p), *required_kw_vars, *kw_vars;
24484 struct vtable *vtargs = p->lvtbl->args;
24487 if (block) block = vtargs->tbl[vtargs->pos-1];
24488 vtable_pop(vtargs, !!block + !!kw_rest_arg);
24489 required_kw_vars = kw_vars = &vtargs->tbl[vtargs->pos];
24491 if (!NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body)))
24493 --required_kw_vars;
24494 kwn = kwn->nd_next;
24497 for (kwn = kw_args; kwn; kwn = kwn->nd_next) {
24498 ID vid = get_nd_vid(p, kwn->nd_body);
24499 if (NODE_REQUIRED_KEYWORD_P(get_nd_value(p, kwn->nd_body))) {
24500 *required_kw_vars++ = vid;
24507 arg_var(p, kw_bits);
24508 if (kw_rest_arg) arg_var(p, kw_rest_arg);
24509 if (block) arg_var(p, block);
24511 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
24513 else if (kw_rest_arg == idNil) {
24514 args->no_kwarg = 1;
24516 else if (kw_rest_arg) {
24517 args->kw_rest_arg = NEW_DVAR(kw_rest_arg, kw_rest_loc);
24526 if (max_numparam > NO_PARAM) {
24528 YYLTYPE loc = RUBY_INIT_YYLLOC();
24529 args = new_args_tail(p, 0, 0, 0, 0);
24530 nd_set_loc(RNODE(args), &loc);
24532 args->nd_ainfo.pre_args_num = max_numparam;
24540 RNODE_ARYPTN(aryptn)->nd_pconst = constant;
24543 NODE *pre_args = NEW_LIST(pre_arg, loc);
24544 if (RNODE_ARYPTN(aryptn)->pre_args) {
24545 RNODE_ARYPTN(aryptn)->pre_args = list_concat(pre_args, RNODE_ARYPTN(aryptn)->pre_args);
24548 RNODE_ARYPTN(aryptn)->pre_args = pre_args;
24558 rest_arg = rest_arg ? rest_arg : NODE_SPECIAL_NO_NAME_REST;
24563 NODE *node = NEW_ARYPTN(pre_args, rest_arg, post_args, loc);
24571 RNODE_FNDPTN(fndptn)->nd_pconst = constant;
24579 pre_rest_arg = pre_rest_arg ? pre_rest_arg : NODE_SPECIAL_NO_NAME_REST;
24580 post_rest_arg = post_rest_arg ? post_rest_arg : NODE_SPECIAL_NO_NAME_REST;
24581 NODE *node = NEW_FNDPTN(pre_rest_arg, args, post_rest_arg, loc);
24589 RNODE_HSHPTN(hshptn)->nd_pconst = constant;
24596 NODE *node, *kw_rest_arg_node;
24598 if (kw_rest_arg == idNil) {
24599 kw_rest_arg_node = NODE_SPECIAL_NO_REST_KEYWORD;
24601 else if (kw_rest_arg) {
24602 kw_rest_arg_node = assignable(p, kw_rest_arg, 0, loc);
24605 kw_rest_arg_node = NULL;
24608 node = NEW_HSHPTN(0, kw_args, kw_rest_arg_node, loc);
24619 return NEW_LIT(
ID2SYM(idNULL), loc);
24622 switch (nd_type(node)) {
24624 nd_set_type(node, NODE_DSYM);
24625 nd_set_loc(node, loc);
24628 lit = RNODE_STR(node)->nd_lit;
24630 nd_set_type(node, NODE_LIT);
24631 nd_set_loc(node, loc);
24634 node = NEW_DSYM(
Qnil, 1, NEW_LIST(node, loc), loc);
24641append_literal_keys(st_data_t k, st_data_t v, st_data_t h)
24645 RNODE_LIST(node)->as.nd_alen = 2;
24646 RNODE_LIST(RNODE_LIST(node)->nd_next)->as.nd_end = RNODE_LIST(node)->nd_next;
24647 RNODE_LIST(RNODE_LIST(node)->nd_next)->nd_next = 0;
24649 list_concat(*result, node);
24652 return ST_CONTINUE;
24663 st_table *literal_keys = st_init_table_with_size(&literal_type, RNODE_LIST(hash)->as.nd_alen / 2);
24665 NODE *last_expr = 0;
24667 while (hash && RNODE_LIST(hash)->nd_next) {
24668 NODE *head = RNODE_LIST(hash)->nd_head;
24669 NODE *value = RNODE_LIST(hash)->nd_next;
24670 NODE *next = RNODE_LIST(value)->nd_next;
24671 st_data_t key = (st_data_t)head;
24673 RNODE_LIST(value)->nd_next = 0;
24675 key = (st_data_t)value;
24677 else if (nd_type_p(head, NODE_LIT) &&
24678 st_delete(literal_keys, (key = (st_data_t)RNODE_LIT(head)->nd_lit, &key), &data)) {
24679 NODE *dup_value = (RNODE_LIST((
NODE *)data))->nd_next;
24680 rb_compile_warn(p->ruby_sourcefile, nd_line((
NODE *)data),
24681 "key %+"PRIsVALUE
" is duplicated and overwritten on line %d",
24682 RNODE_LIT(head)->nd_lit, nd_line(head));
24683 if (dup_value == last_expr) {
24684 RNODE_LIST(value)->nd_head = block_append(p, RNODE_LIST(dup_value)->nd_head, RNODE_LIST(value)->nd_head);
24687 RNODE_LIST(last_expr)->nd_head = block_append(p, RNODE_LIST(dup_value)->nd_head, RNODE_LIST(last_expr)->nd_head);
24690 st_insert(literal_keys, (st_data_t)key, (st_data_t)hash);
24691 last_expr = !head || nd_type_p(head, NODE_LIT) ? value : head;
24694 st_foreach(literal_keys, append_literal_keys, (st_data_t)&result);
24695 st_free_table(literal_keys);
24697 if (!result) result = hash;
24698 else list_concat(result, hash);
24700 result->nd_loc = loc;
24707 if (hash) hash = remove_duplicate_keys(p, hash);
24708 return NEW_HASH(hash, loc);
24715 if (is_private_local_id(p,
id)) {
24718 if (st_is_member(p->pvtbl,
id)) {
24719 yyerror1(loc,
"duplicated variable name");
24722 st_insert(p->pvtbl, (st_data_t)
id, 0);
24730 p->pktbl = st_init_numtable();
24732 else if (st_is_member(p->pktbl, key)) {
24733 yyerror1(loc,
"duplicated key name");
24736 st_insert(p->pktbl, (st_data_t)key, 0);
24743 return NEW_HASH(hash, loc);
24754 ID vid = get_nd_vid(p, lhs);
24755 YYLTYPE lhs_loc = lhs->nd_loc;
24756 int shareable = ctxt.shareable_constant_value;
24758 switch (nd_type(lhs)) {
24769 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
24770 set_nd_value(p, lhs, rhs);
24771 nd_set_loc(lhs, loc);
24772 asgn = NEW_OP_ASGN_OR(gettable(p, vid, &lhs_loc), lhs, loc);
24774 else if (op == tANDOP) {
24776 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
24778 set_nd_value(p, lhs, rhs);
24779 nd_set_loc(lhs, loc);
24780 asgn = NEW_OP_ASGN_AND(gettable(p, vid, &lhs_loc), lhs, loc);
24784 rhs = NEW_CALL(gettable(p, vid, &lhs_loc), op, NEW_LIST(rhs, &rhs->nd_loc), loc);
24786 rhs = shareable_constant_value(p, shareable, lhs, rhs, &rhs->nd_loc);
24788 set_nd_value(p, asgn, rhs);
24789 nd_set_loc(asgn, loc);
24793 asgn = NEW_BEGIN(0, loc);
24804 args = make_list(args, args_loc);
24805 asgn = NEW_OP_ASGN1(ary, op, args, rhs, loc);
24816 asgn = NEW_OP_ASGN2(lhs, CALL_Q_P(atype), attr, op, rhs, loc);
24827 rhs = shareable_constant_value(p, ctxt.shareable_constant_value, lhs, rhs, loc);
24828 asgn = NEW_OP_CDECL(lhs, op, rhs, loc);
24831 asgn = NEW_BEGIN(0, loc);
24840 if (p->ctxt.in_def) {
24841 yyerror1(loc,
"dynamic constant assignment");
24843 return NEW_CDECL(0, 0, (path), loc);
24849 if (p->ctxt.in_def) {
24850 path = assign_error(p,
"dynamic constant assignment", path);
24858 a = dispatch2(assign_error, ERR_MESG(), a);
24866 return ripper_new_yylval(p, get_id(a), dispatch1(var_field, a), 0);
24874 NODE *result = head;
24876 NODE *tmp = rescue_else ? rescue_else : rescue;
24877 YYLTYPE rescue_loc = code_loc_gen(&head->nd_loc, &tmp->nd_loc);
24879 result = NEW_RESCUE(head, rescue, rescue_else, &rescue_loc);
24880 nd_set_line(result, rescue->nd_loc.beg_pos.lineno);
24882 else if (rescue_else) {
24883 result = block_append(p, result, rescue_else);
24886 result = NEW_ENSURE(result, ensure, loc);
24888 fixpos(result, head);
24898 if (!local->used)
return;
24899 cnt = local->used->pos;
24900 if (cnt != local->vars->pos) {
24901 rb_parser_fatal(p,
"local->used->pos != local->vars->pos");
24904 ID *v = local->vars->tbl;
24905 ID *u = local->used->tbl;
24906 for (
int i = 0; i < cnt; ++i) {
24907 if (!v[i] || (u[i] & LVAR_USED))
continue;
24908 if (is_private_local_id(p, v[i]))
continue;
24909 rb_warn1L((
int)u[i],
"assigned but unused variable - %"PRIsWARN, rb_id2str(v[i]));
24918 int inherits_dvars = toplevel_scope && compile_for_eval;
24922 local->prev = p->lvtbl;
24923 local->args = vtable_alloc(0);
24924 local->vars = vtable_alloc(inherits_dvars ? DVARS_INHERIT : DVARS_TOPSCOPE);
24926 if (toplevel_scope && compile_for_eval) warn_unused_vars = 0;
24927 if (toplevel_scope && e_option_supplied(p)) warn_unused_vars = 0;
24928 local->numparam.outer = 0;
24929 local->numparam.inner = 0;
24930 local->numparam.current = 0;
24932 local->used = warn_unused_vars ? vtable_alloc(0) : 0;
24934# if WARN_PAST_SCOPE
24945 while (!DVARS_TERMINAL_P(table)) {
24946 struct vtable *cur_table = table;
24947 table = cur_table->prev;
24948 vtable_free(cur_table);
24955 vtable_chain_free(p, local->used);
24957# if WARN_PAST_SCOPE
24958 vtable_chain_free(p, local->past);
24961 vtable_chain_free(p, local->args);
24962 vtable_chain_free(p, local->vars);
24964 ruby_sized_xfree(local,
sizeof(
struct local_vars));
24971 if (p->lvtbl->used) {
24972 warn_unused_var(p, p->lvtbl);
24975 local_free(p, p->lvtbl);
24986 int cnt_args = vtable_size(p->lvtbl->args);
24987 int cnt_vars = vtable_size(p->lvtbl->vars);
24988 int cnt = cnt_args + cnt_vars;
24992 if (cnt <= 0)
return 0;
24993 tbl = rb_ast_new_local_table(p->ast, cnt);
24994 MEMCPY(tbl->ids, p->lvtbl->args->tbl,
ID, cnt_args);
24996 for (i = 0, j = cnt_args; i < cnt_vars; ++i) {
24997 ID id = p->lvtbl->vars->tbl[i];
24998 if (!vtable_included(p->lvtbl->args,
id)) {
24999 tbl->ids[j++] = id;
25003 tbl = rb_ast_resize_latest_local_table(p->ast, j);
25014 if (!NUMPARAM_ID_P(
id))
return;
25015 compile_error(p,
"_%d is reserved for numbered parameter",
25016 NUMPARAM_ID_TO_IDX(
id));
25022 numparam_name(p,
id);
25023 vtable_add(p->lvtbl->args,
id);
25029 numparam_name(p,
id);
25030 vtable_add(p->lvtbl->vars,
id);
25031 if (p->lvtbl->used) {
25032 vtable_add(p->lvtbl->used, (
ID)p->ruby_sourceline);
25039 struct vtable *vars, *args, *used;
25041 vars = p->lvtbl->vars;
25042 args = p->lvtbl->args;
25043 used = p->lvtbl->used;
25045 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
25048 if (used) used = used->prev;
25051 if (vars && vars->prev == DVARS_INHERIT) {
25052 return rb_local_defined(
id, p->parent_iseq);
25054 else if (vtable_included(args,
id)) {
25058 int i = vtable_included(vars,
id);
25059 if (i && used && vidrefp) *vidrefp = &used->tbl[i-1];
25067 return local_id_ref(p,
id, NULL);
25073 if (local_id(p, idFWD_ALL))
return TRUE;
25074 compile_error(p,
"unexpected ...");
25081 arg_var(p, idFWD_REST);
25082#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
25083 arg_var(p, idFWD_KWREST);
25085 arg_var(p, idFWD_BLOCK);
25086 arg_var(p, idFWD_ALL);
25092 bool conflict =
false;
25094 struct vtable *vars, *args;
25096 vars = p->lvtbl->vars;
25097 args = p->lvtbl->args;
25099 while (vars && !DVARS_TERMINAL_P(vars->prev)) {
25102 conflict |= (vtable_included(args, arg) && !(all && vtable_included(args, all)));
25105 bool found =
false;
25106 if (vars && vars->prev == DVARS_INHERIT) {
25107 found = (rb_local_defined(arg, p->parent_iseq) &&
25108 !(all && rb_local_defined(all, p->parent_iseq)));
25111 found = (vtable_included(args, arg) &&
25112 !(all && vtable_included(args, all)));
25116 compile_error(p,
"no anonymous %s parameter", var);
25118 else if (conflict) {
25119 compile_error(p,
"anonymous %s parameter is also used within block", var);
25127 NODE *rest = NEW_LVAR(idFWD_REST, loc);
25128#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
25129 NODE *kwrest = list_append(p, NEW_LIST(0, loc), NEW_LVAR(idFWD_KWREST, loc));
25132 NODE *args = leading ? rest_arg_append(p, leading, rest, argsloc) : NEW_SPLAT(rest, loc);
25133#ifndef FORWARD_ARGS_WITH_RUBY2_KEYWORDS
25134 args = arg_append(p, args, new_hash(p, kwrest, loc), loc);
25136 return arg_blk_pass(args, block);
25145 NODE *inner = local->numparam.inner;
25146 if (!local->numparam.outer) {
25147 local->numparam.outer = local->numparam.current;
25149 local->numparam.inner = 0;
25150 local->numparam.current = 0;
25164 local->numparam.inner = prev_inner;
25166 else if (local->numparam.current) {
25168 local->numparam.inner = local->numparam.current;
25170 if (p->max_numparam > NO_PARAM) {
25172 local->numparam.current = local->numparam.outer;
25173 local->numparam.outer = 0;
25177 local->numparam.current = 0;
25182static const struct vtable *
25185 p->lvtbl->args = vtable_alloc(p->lvtbl->args);
25186 p->lvtbl->vars = vtable_alloc(p->lvtbl->vars);
25187 if (p->lvtbl->used) {
25188 p->lvtbl->used = vtable_alloc(p->lvtbl->used);
25190 return p->lvtbl->args;
25196 struct vtable *tmp = *vtblp;
25197 *vtblp = tmp->prev;
25198# if WARN_PAST_SCOPE
25199 if (p->past_scope_enabled) {
25200 tmp->prev = p->lvtbl->past;
25201 p->lvtbl->past = tmp;
25213 if ((tmp = p->lvtbl->used) != 0) {
25214 warn_unused_var(p, p->lvtbl);
25215 p->lvtbl->used = p->lvtbl->used->prev;
25218 dyna_pop_vtable(p, &p->lvtbl->args);
25219 dyna_pop_vtable(p, &p->lvtbl->vars);
25225 while (p->lvtbl->args != lvargs) {
25227 if (!p->lvtbl->args) {
25229 ruby_sized_xfree(p->lvtbl,
sizeof(*p->lvtbl));
25239 return !DVARS_TERMINAL_P(p->lvtbl->vars) && p->lvtbl->vars->prev != DVARS_TOPSCOPE;
25245 struct vtable *vars, *args, *used;
25248 args = p->lvtbl->args;
25249 vars = p->lvtbl->vars;
25250 used = p->lvtbl->used;
25252 while (!DVARS_TERMINAL_P(vars)) {
25253 if (vtable_included(args,
id)) {
25256 if ((i = vtable_included(vars,
id)) != 0) {
25257 if (used && vidrefp) *vidrefp = &used->tbl[i-1];
25262 if (!vidrefp) used = 0;
25263 if (used) used = used->prev;
25266 if (vars == DVARS_INHERIT && !NUMPARAM_ID_P(
id)) {
25267 return rb_dvar_defined(
id, p->parent_iseq);
25276 return dvar_defined_ref(p,
id, NULL);
25282 return (vtable_included(p->lvtbl->args,
id) ||
25283 vtable_included(p->lvtbl->vars,
id));
25290 "regexp encoding option '%c' differs from source encoding '%s'",
25291 c, rb_enc_name(rb_enc_get(str)));
25298 int c = RE_OPTION_ENCODING_IDX(options);
25302 rb_char_to_option_kcode(c, &opt, &idx);
25304 !is_ascii_string(str)) {
25309 else if (RE_OPTION_ENCODING_NONE(options)) {
25311 !is_ascii_string(str)) {
25315 rb_enc_associate(str, rb_ascii8bit_encoding());
25317 else if (rb_is_usascii_enc(p->enc)) {
25318 if (!is_ascii_string(str)) {
25320 rb_enc_associate(str, rb_usascii_encoding());
25323 rb_enc_associate(str, rb_ascii8bit_encoding());
25335 int c = rb_reg_fragment_setenc(p, str, options);
25336 if (c) reg_fragment_enc_error(p, str, c);
25343 reg_fragment_setenc(p, str, options);
25344 err = rb_reg_check_preprocess(str);
25346 err = rb_obj_as_string(err);
25347 compile_error(p,
"%"PRIsVALUE, err);
25353#ifndef UNIVERSAL_PARSER
25362reg_named_capture_assign_iter(
const OnigUChar *name,
const OnigUChar *name_end,
25363 int back_num,
int *back_refs,
OnigRegex regex,
void *arg0)
25368 long len = name_end - name;
25369 const char *s = (
const char *)name;
25371 return rb_reg_named_capture_assign_iter_impl(p, s,
len, enc, &arg->succ_block, arg->loc);
25380 arg.enc = rb_enc_get(regexp);
25381 arg.succ_block = 0;
25383 onig_foreach_name(
RREGEXP_PTR(regexp), reg_named_capture_assign_iter, &arg);
25385 if (!arg.succ_block)
return 0;
25386 return RNODE_BLOCK(arg.succ_block)->nd_next;
25391rb_reg_named_capture_assign_iter_impl(
struct parser_params *p,
const char *s,
long len,
25397 if (!
len)
return ST_CONTINUE;
25398 if (!VALID_SYMNAME_P(s,
len, enc, ID_LOCAL))
25399 return ST_CONTINUE;
25401 var = intern_cstr(s,
len, enc);
25402 if (
len < MAX_WORD_LENGTH && rb_reserved_word(s, (
int)
len)) {
25403 if (!lvar_defined(p, var))
return ST_CONTINUE;
25405 node = node_assign(p, assignable(p, var, 0, loc), NEW_LIT(
ID2SYM(var), loc), NO_LEX_CTXT, loc);
25406 succ = *succ_block;
25407 if (!succ) succ = NEW_BEGIN(0, loc);
25408 succ = block_append(p, succ, node);
25409 *succ_block = succ;
25410 return ST_CONTINUE;
25416 reg_fragment_setenc(p, str, options);
25417 return rb_parser_reg_compile(p, str, options);
25423 return rb_reg_compile(str, options & RE_OPTION_MASK, p->ruby_sourcefile, p->ruby_sourceline);
25432 err = rb_errinfo();
25433 re = parser_reg_compile(p, str, options);
25435 VALUE m = rb_attr_get(rb_errinfo(), idMesg);
25436 rb_set_errinfo(err);
25437 compile_error(p,
"%"PRIsVALUE, m);
25446 VALUE err = rb_errinfo();
25448 str = ripper_is_node_yylval(p, str) ? RNODE_RIPPER(str)->nd_cval : str;
25449 int c = rb_reg_fragment_setenc(p, str, options);
25450 if (c) reg_fragment_enc_error(p, str, c);
25451 re = rb_parser_reg_compile(p, str, options);
25453 *errmsg = rb_attr_get(rb_errinfo(), idMesg);
25454 rb_set_errinfo(err);
25462rb_ruby_parser_set_options(
struct parser_params *p,
int print,
int loop,
int chomp,
int split)
25464 p->do_print = print;
25466 p->do_chomp = chomp;
25467 p->do_split = split;
25473 static const YYLTYPE default_location = {{1, 0}, {1, 0}};
25474 const YYLTYPE *
const LOC = &default_location;
25477 NODE *print = (
NODE *)NEW_FCALL(rb_intern(
"print"),
25478 NEW_LIST(NEW_GVAR(idLASTLINE, LOC), LOC),
25480 node = block_append(p, node, print);
25484 NODE *irs = NEW_LIST(NEW_GVAR(rb_intern(
"$/"), LOC), LOC);
25487 ID ifs = rb_intern(
"$;");
25488 ID fields = rb_intern(
"$F");
25489 NODE *args = NEW_LIST(NEW_GVAR(ifs, LOC), LOC);
25490 NODE *split = NEW_GASGN(fields,
25491 NEW_CALL(NEW_GVAR(idLASTLINE, LOC),
25492 rb_intern(
"split"), args, LOC),
25494 node = block_append(p, split, node);
25497 NODE *chomp = NEW_LIT(
ID2SYM(rb_intern(
"chomp")), LOC);
25498 chomp = list_append(p, NEW_LIST(chomp, LOC), NEW_TRUE(LOC));
25499 irs = list_append(p, irs, NEW_HASH(chomp, LOC));
25502 node = NEW_WHILE((
NODE *)NEW_FCALL(idGets, irs, LOC), node, 1, LOC);
25519 return rb_make_temporary_id(vtable_size(p->lvtbl->args) + vtable_size(p->lvtbl->vars));
25527 p->command_start = TRUE;
25528 p->ruby_sourcefile_string =
Qnil;
25529 p->lex.lpar_beg = -1;
25531 p->delayed.token =
Qnil;
25532 p->frozen_string_literal = -1;
25535 p->parsing_thread =
Qnil;
25537 p->error_buffer =
Qfalse;
25538 p->end_expect_token_locations =
Qnil;
25542 p->debug_buffer =
Qnil;
25543 p->debug_output = rb_ractor_stdout();
25544 p->enc = rb_utf8_encoding();
25549#define rb_ruby_parser_mark ripper_parser_mark
25550#define rb_ruby_parser_free ripper_parser_free
25551#define rb_ruby_parser_memsize ripper_parser_memsize
25555rb_ruby_parser_mark(
void *ptr)
25559 rb_gc_mark(p->lex.input);
25560 rb_gc_mark(p->lex.lastline);
25561 rb_gc_mark(p->lex.nextline);
25562 rb_gc_mark(p->ruby_sourcefile_string);
25563 rb_gc_mark((
VALUE)p->ast);
25564 rb_gc_mark(p->case_labels);
25565 rb_gc_mark(p->delayed.token);
25567 rb_gc_mark(p->debug_lines);
25568 rb_gc_mark(p->error_buffer);
25569 rb_gc_mark(p->end_expect_token_locations);
25570 rb_gc_mark(p->tokens);
25572 rb_gc_mark(p->value);
25573 rb_gc_mark(p->result);
25574 rb_gc_mark(p->parsing_thread);
25576 rb_gc_mark(p->debug_buffer);
25577 rb_gc_mark(p->debug_output);
25579 rb_gc_mark((
VALUE)p->heap);
25584rb_ruby_parser_free(
void *ptr)
25588#ifdef UNIVERSAL_PARSER
25589 rb_parser_config_t *config = p->config;
25593 ruby_sized_xfree(p->tokenbuf, p->toksiz);
25596 for (local = p->lvtbl; local; local = prev) {
25597 prev = local->prev;
25598 local_free(p, local);
25603 while ((ptinfo = p->token_info) != 0) {
25604 p->token_info = ptinfo->next;
25610#ifdef UNIVERSAL_PARSER
25612 if (config->counter <= 0) {
25613 rb_ruby_parser_config_free(config);
25619rb_ruby_parser_memsize(
const void *ptr)
25623 size_t size =
sizeof(*p);
25626 for (local = p->lvtbl; local; local = local->prev) {
25627 size +=
sizeof(*local);
25628 if (local->vars) size += local->vars->capa *
sizeof(
ID);
25633#ifdef UNIVERSAL_PARSER
25634rb_parser_config_t *
25635rb_ruby_parser_config_new(
void *(*malloc)(
size_t size))
25637 return (rb_parser_config_t *)malloc(
sizeof(rb_parser_config_t));
25641rb_ruby_parser_config_free(rb_parser_config_t *config)
25643 config->free(config);
25647#ifndef UNIVERSAL_PARSER
25652 rb_ruby_parser_mark,
25653 rb_ruby_parser_free,
25654 rb_ruby_parser_memsize,
25656 0, 0, RUBY_TYPED_FREE_IMMEDIATELY
25662#undef rb_reserved_word
25665rb_reserved_word(
const char *str,
unsigned int len)
25667 return reserved_word(str,
len);
25670#ifdef UNIVERSAL_PARSER
25672rb_ruby_parser_allocate(rb_parser_config_t *config)
25676 p->config = config;
25677 p->config->counter++;
25682rb_ruby_parser_new(rb_parser_config_t *config)
25685 rb_parser_t *p = rb_ruby_parser_allocate(config);
25686 parser_initialize(p);
25695 p->parent_iseq = base;
25702 if (!
RTEST(lines)) {
25705 else if (lines ==
Qtrue) {
25706 lines = rb_ary_new();
25710 rb_ary_modify(lines);
25712 p->debug_lines = lines;
25718 p->error_tolerant = 1;
25720 p->end_expect_token_locations = rb_ary_new();
25726 p->keep_tokens = 1;
25728 p->tokens = rb_ary_new();
25731#ifndef UNIVERSAL_PARSER
25733rb_parser_compile_file_path(
VALUE vparser,
VALUE fname,
VALUE file,
int start)
25739 return rb_ruby_parser_compile_file_path(p, fname, file, start);
25749 return rb_ruby_parser_compile_generic(p, lex_gets, fname, input, start);
25753rb_parser_compile_string(
VALUE vparser,
const char *f,
VALUE s,
int line)
25759 return rb_ruby_parser_compile_string(p, f, s, line);
25763rb_parser_compile_string_path(
VALUE vparser,
VALUE f,
VALUE s,
int line)
25769 return rb_ruby_parser_compile_string_path(p, f, s, line);
25773rb_parser_encoding(
VALUE vparser)
25778 return rb_ruby_parser_encoding(p);
25782rb_parser_end_seen_p(
VALUE vparser)
25787 return RBOOL(rb_ruby_parser_end_seen_p(p));
25791rb_parser_error_tolerant(
VALUE vparser)
25796 rb_ruby_parser_error_tolerant(p);
25800rb_parser_set_script_lines(
VALUE vparser,
VALUE lines)
25805 rb_ruby_parser_set_script_lines(p, lines);
25809rb_parser_keep_tokens(
VALUE vparser)
25814 rb_ruby_parser_keep_tokens(p);
25822 &parser_data_type, p);
25823 parser_initialize(p);
25833 rb_ruby_parser_set_context(p, base, main);
25838rb_parser_set_options(
VALUE vparser,
int print,
int loop,
int chomp,
int split)
25843 rb_ruby_parser_set_options(p, print, loop, chomp, split);
25847rb_parser_set_yydebug(
VALUE self,
VALUE flag)
25852 rb_ruby_parser_set_yydebug(p,
RTEST(flag));
25860 return rb_enc_from_encoding(p->enc);
25866 return p->ruby__end__seen;
25870rb_ruby_parser_set_yydebug(
rb_parser_t *p,
int flag)
25899 return p->debug_output;
25905 p->debug_output = output;
25911 return p->parsing_thread;
25917 p->parsing_thread = parsing_thread;
25923 p->lex.gets = gets;
25924 p->lex.input = input;
25926 p->ruby_sourcefile_string = sourcefile_string;
25927 p->ruby_sourcefile = sourcefile;
25928 p->ruby_sourceline = sourceline;
25944rb_ruby_parser_ruby_sourcefile_string(
rb_parser_t *p)
25946 return p->ruby_sourcefile_string;
25952 return p->ruby_sourceline;
25958 return p->lex.state;
25965 p->ast = rb_ast_new();
25966 ripper_yyparse((
void*)p);
25967 rb_ast_dispose(p->ast);
25974 return dedent_string(p,
string, width);
25980 return lex_get_str(p, s);
25986 return p->lex.input != 0;
25992 parser_initialize(p);
25998 return p->lex.ptok - p->lex.pbeg;
26004 return p->lex.pcur - p->lex.ptok;
26010 return p->lex.lastline;
26014rb_ruby_ripper_lex_state_name(
struct parser_params *p,
int state)
26016 return rb_parser_lex_state_name(p, (
enum lex_state_e)state);
26020rb_ruby_ripper_parser_allocate(
void)
26028#define HEAPCNT(n, size) ((n) * (size) / sizeof(YYSTYPE))
26031#define NEWHEAP() rb_imemo_tmpbuf_parser_heap(0, p->heap, 0)
26032#define ADD2HEAP(new, cnt, ptr) ((p->heap = (new))->ptr = (ptr), \
26033 (new)->cnt = (cnt), (ptr))
26038 size_t cnt = HEAPCNT(1, size);
26042 return ADD2HEAP(n, cnt, ptr);
26046rb_parser_calloc(
struct parser_params *p,
size_t nelem,
size_t size)
26048 size_t cnt = HEAPCNT(nelem, size);
26050 void *ptr =
xcalloc(nelem, size);
26052 return ADD2HEAP(n, cnt, ptr);
26056rb_parser_realloc(
struct parser_params *p,
void *ptr,
size_t size)
26059 size_t cnt = HEAPCNT(1, size);
26061 if (ptr && (n = p->heap) != NULL) {
26063 if (n->ptr == ptr) {
26064 n->ptr = ptr =
xrealloc(ptr, size);
26065 if (n->cnt) n->cnt = cnt;
26068 }
while ((n = n->next) != NULL);
26072 return ADD2HEAP(n, cnt, ptr);
26080 while ((n = *prev) != NULL) {
26081 if (n->ptr == ptr) {
26091rb_parser_printf(
struct parser_params *p,
const char *fmt, ...)
26094 VALUE mesg = p->debug_buffer;
26098 rb_str_vcatf(mesg, fmt, ap);
26100 if (end_with_newline_p(p, mesg)) {
26101 rb_io_write(p->debug_output, mesg);
26102 p->debug_buffer =
Qnil;
26110 int lineno, column;
26113 lineno = loc->end_pos.lineno;
26114 column = loc->end_pos.column;
26117 lineno = p->ruby_sourceline;
26121 rb_io_flush(p->debug_output);
26125 rb_syntax_error_append(p->error_buffer,
26126 p->ruby_sourcefile_string,
26133count_char(
const char *str,
int c)
26136 while (str[n] == c) ++n;
26146RUBY_FUNC_EXPORTED
size_t
26147rb_yytnamerr(
struct parser_params *p,
char *yyres,
const char *yystr)
26149 if (*yystr ==
'"') {
26150 size_t yyn = 0, bquote = 0;
26151 const char *yyp = yystr;
26157 bquote = count_char(yyp+1,
'`') + 1;
26158 if (yyres) memcpy(&yyres[yyn], yyp, bquote);
26166 if (bquote && count_char(yyp+1,
'\'') + 1 == bquote) {
26167 if (yyres) memcpy(yyres + yyn, yyp, bquote);
26173 if (yyp[1] && yyp[1] !=
'\'' && yyp[2] ==
'\'') {
26174 if (yyres) memcpy(yyres + yyn, yyp, 3);
26179 goto do_not_strip_quotes;
26182 goto do_not_strip_quotes;
26185 if (*++yyp !=
'\\')
26186 goto do_not_strip_quotes;
26202 do_not_strip_quotes: ;
26205 if (!yyres)
return strlen(yystr);
26207 return (YYSIZE_T)(yystpcpy(yyres, yystr) - yyres);
26217 if (x ==
Qfalse)
return x;
26218 if (x ==
Qtrue)
return x;
26219 if (
NIL_P(x))
return x;
26221 rb_raise(rb_eArgError,
"Qundef given");
26234 if (!nd_type_p((
NODE *)x, NODE_RIPPER)) {
26235 rb_raise(rb_eArgError,
"NODE given: %p", (
void *)x);
26237 x = ((
NODE *)x)->nd_rval;
26240 rb_raise(rb_eArgError,
"wrong type of ruby object: %p (%s)",
26244 rb_raise(rb_eArgError,
"hidden ruby object: %p (%s)",
26245 (
void *)x, rb_builtin_type_name(
TYPE(x)));
26251#define validate(x) ((x) = get_value(x))
26280 return rb_funcall(p->value, mid, 3, a, b, c);
26290 return rb_funcall(p->value, mid, 4, a, b, c, d);
26301 return rb_funcall(p->value, mid, 5, a, b, c, d, e);
26314 return rb_funcall(p->value, mid, 7, a, b, c, d, e, f, g);
#define T_COMPLEX
Old name of RUBY_T_COMPLEX.
#define TYPE(_)
Old name of rb_type.
#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 RFLOAT_VALUE
Old name of rb_float_value.
#define T_STRING
Old name of RUBY_T_STRING.
#define xfree
Old name of ruby_xfree.
#define Qundef
Old name of RUBY_Qundef.
#define INT2FIX
Old name of RB_INT2FIX.
#define T_FLOAT
Old name of RUBY_T_FLOAT.
#define xrealloc
Old name of ruby_xrealloc.
#define ID2SYM
Old name of RB_ID2SYM.
#define T_BIGNUM
Old name of RUBY_T_BIGNUM.
#define SPECIAL_CONST_P
Old name of RB_SPECIAL_CONST_P.
#define OBJ_FREEZE_RAW
Old name of RB_OBJ_FREEZE_RAW.
#define UNREACHABLE_RETURN
Old name of RBIMPL_UNREACHABLE_RETURN.
#define SYM2ID
Old name of RB_SYM2ID.
#define ZALLOC
Old name of RB_ZALLOC.
#define T_NODE
Old name of RUBY_T_NODE.
#define ENC_CODERANGE_UNKNOWN
Old name of RUBY_ENC_CODERANGE_UNKNOWN.
#define xmalloc
Old name of ruby_xmalloc.
#define ENCODING_GET(obj)
Old name of RB_ENCODING_GET.
#define LONG2FIX
Old name of RB_INT2FIX.
#define ISDIGIT
Old name of rb_isdigit.
#define ASSUME
Old name of RBIMPL_ASSUME.
#define T_RATIONAL
Old name of RUBY_T_RATIONAL.
#define ALLOC_N
Old name of RB_ALLOC_N.
#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 FLONUM_P
Old name of RB_FLONUM_P.
#define Qtrue
Old name of RUBY_Qtrue.
#define NUM2INT
Old name of RB_NUM2INT.
#define INT2NUM
Old name of RB_INT2NUM.
#define Qnil
Old name of RUBY_Qnil.
#define Qfalse
Old name of RUBY_Qfalse.
#define FIX2LONG
Old name of RB_FIX2LONG.
#define T_ARRAY
Old name of RUBY_T_ARRAY.
#define T_OBJECT
Old name of RUBY_T_OBJECT.
#define NIL_P
Old name of RB_NIL_P.
#define MBCLEN_CHARFOUND_P(ret)
Old name of ONIGENC_MBCLEN_CHARFOUND_P.
#define DBL2NUM
Old name of rb_float_new.
#define BUILTIN_TYPE
Old name of RB_BUILTIN_TYPE.
#define xcalloc
Old name of ruby_xcalloc.
#define ENCODING_SET(obj, i)
Old name of RB_ENCODING_SET.
#define ENCODING_IS_ASCII8BIT(obj)
Old name of RB_ENCODING_IS_ASCII8BIT.
#define FIXNUM_P
Old name of RB_FIXNUM_P.
#define rb_ary_new2
Old name of rb_ary_new_capa.
#define ISXDIGIT
Old name of rb_isxdigit.
#define ISCNTRL
Old name of rb_iscntrl.
#define ISALNUM
Old name of rb_isalnum.
#define SYMBOL_P
Old name of RB_SYMBOL_P.
#define T_REGEXP
Old name of RUBY_T_REGEXP.
#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.
#define RB_OBJ_WRITTEN(old, oldv, young)
Identical to RB_OBJ_WRITE(), except it doesn't write any values, but only a WB declaration.
#define RB_OBJ_WRITE(old, slot, young)
Declaration of a "back" pointer.
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_rational_raw1(x)
Shorthand of (x/1)r.
VALUE rb_str_append(VALUE dst, VALUE src)
Identical to rb_str_buf_append(), except it converts the right hand side before concatenating.
#define rb_str_new(str, len)
Allocates an instance of rb_cString.
#define rb_str_buf_cat
Just another name of rb_str_cat.
#define rb_usascii_str_new(str, len)
Identical to rb_str_new, except it generates a string of "US ASCII" encoding.
#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.
int len
Length of the buffer.
#define strtod(s, e)
Just another name of ruby_strtod.
#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 RARRAY_LEN
Just another name of rb_array_len.
#define RARRAY_AREF(a, i)
static VALUE RBASIC_CLASS(VALUE obj)
Queries the class of an object.
#define RREGEXP_PTR(obj)
Convenient accessor macro.
#define RSTRING_GETMEM(str, ptrvar, lenvar)
Convenient macro to obtain the contents and length at once.
#define StringValueCStr(v)
Identical to StringValuePtr, except it additionally checks for the contents for viability as a C stri...
#define TypedData_Get_Struct(obj, type, data_type, sval)
Obtains a C struct from inside of a wrapper Ruby object.
#define TypedData_Make_Struct(klass, type, data_type, sval)
Identical to TypedData_Wrap_Struct, except it allocates a new data region internally instead of takin...
const char * rb_obj_classname(VALUE obj)
Queries the name of the class of the passed object.
#define errno
Ractor-aware version of errno.
#define RTEST
This is an old name of RB_TEST.
This is the struct that holds necessary info for a struct.
uintptr_t ID
Type that represents a Ruby identifier such as a variable name.
uintptr_t VALUE
Type that represents a Ruby object.
static void Check_Type(VALUE v, enum ruby_value_type t)
Identical to RB_TYPE_P(), except it raises exceptions on predication failure.
#define RBIMPL_WARNING_IGNORED(flag)
Suppresses a warning.
#define RBIMPL_WARNING_PUSH()
Pushes compiler warning state.
#define RBIMPL_WARNING_POP()
Pops compiler warning state.